UNPKG

cssstyle

Version:

CSSStyleDeclaration Object Model implementation

74 lines (68 loc) 1.7 kB
"use strict"; const parsers = require("../parsers"); const flexGrow = require("./flexGrow"); const flexShrink = require("./flexShrink"); const flexBasis = require("./flexBasis"); const shorthandFor = new Map([ ["flex-grow", flexGrow], ["flex-shrink", flexShrink], ["flex-basis", flexBasis] ]); module.exports.parse = function parse(v) { const key = parsers.parseKeyword(v, ["auto", "none"]); if (key) { if (key === "auto") { return "1 1 auto"; } if (key === "none") { return "0 0 auto"; } if (key === "initial") { return "0 1 auto"; } return; } const obj = parsers.parseShorthand(v, shorthandFor); if (obj) { const flex = { "flex-grow": "1", "flex-shrink": "1", "flex-basis": "0%" }; const items = Object.entries(obj); for (const [property, value] of items) { flex[property] = value; } return [...Object.values(flex)].join(" "); } }; module.exports.isValid = function isValid(v) { if (v === "") { return true; } return typeof module.exports.parse(v) === "string"; }; module.exports.definition = { set(v) { v = parsers.prepareValue(v, this._global); if (parsers.hasVarFunc(v)) { this._shorthandSetter("flex", "", shorthandFor); this._setProperty("flex", v); } else { this._shorthandSetter("flex", module.exports.parse(v), shorthandFor); } }, get() { let val = this.getPropertyValue("flex"); if (parsers.hasVarFunc(val)) { return val; } val = this._shorthandGetter("flex", shorthandFor); if (parsers.hasVarFunc(val)) { return ""; } return val; }, enumerable: true, configurable: true };