39 lines
1.1 KiB
JavaScript
39 lines
1.1 KiB
JavaScript
|
'use strict';
|
||
|
|
||
|
var TYPES = require('../parsers').TYPES;
|
||
|
var valueType = require('../parsers').valueType;
|
||
|
var parseMeasurement = require('../parsers').parseMeasurement;
|
||
|
|
||
|
var absoluteSizes = ['xx-small', 'x-small', 'small', 'medium', 'large', 'x-large', 'xx-large'];
|
||
|
var relativeSizes = ['larger', 'smaller'];
|
||
|
|
||
|
module.exports.isValid = function(v) {
|
||
|
var type = valueType(v.toLowerCase());
|
||
|
return (
|
||
|
type === TYPES.LENGTH ||
|
||
|
type === TYPES.PERCENT ||
|
||
|
(type === TYPES.KEYWORD && absoluteSizes.indexOf(v.toLowerCase()) !== -1) ||
|
||
|
(type === TYPES.KEYWORD && relativeSizes.indexOf(v.toLowerCase()) !== -1)
|
||
|
);
|
||
|
};
|
||
|
|
||
|
function parse(v) {
|
||
|
const valueAsString = String(v).toLowerCase();
|
||
|
const optionalArguments = absoluteSizes.concat(relativeSizes);
|
||
|
const isOptionalArgument = optionalArguments.some(
|
||
|
stringValue => stringValue.toLowerCase() === valueAsString
|
||
|
);
|
||
|
return isOptionalArgument ? valueAsString : parseMeasurement(v);
|
||
|
}
|
||
|
|
||
|
module.exports.definition = {
|
||
|
set: function(v) {
|
||
|
this._setProperty('font-size', parse(v));
|
||
|
},
|
||
|
get: function() {
|
||
|
return this.getPropertyValue('font-size');
|
||
|
},
|
||
|
enumerable: true,
|
||
|
configurable: true,
|
||
|
};
|