| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 |
- "use strict";
- const parsers = require("../parsers");
- const borderLeftWidth = require("./borderLeftWidth");
- const borderLeftStyle = require("./borderLeftStyle");
- const borderLeftColor = require("./borderLeftColor");
- const property = "border-left";
- const shorthand = "border";
- const subProps = {
- width: borderLeftWidth.property,
- style: borderLeftStyle.property,
- color: borderLeftColor.property
- };
- module.exports.initialValues = new Map([
- [borderLeftWidth.property, "medium"],
- [borderLeftStyle.property, "none"],
- [borderLeftColor.property, "currentcolor"]
- ]);
- module.exports.shorthandFor = new Map([
- [borderLeftWidth.property, borderLeftWidth],
- [borderLeftStyle.property, borderLeftStyle],
- [borderLeftColor.property, borderLeftColor]
- ]);
- module.exports.parse = (v, opt = {}) => {
- const { globalObject } = opt;
- if (v === "") {
- return v;
- }
- const values = parsers.splitValue(v);
- const parsedValues = new Map();
- for (const val of values) {
- const value = parsers.parsePropertyValue(property, val, {
- globalObject,
- inArray: true
- });
- if (Array.isArray(value) && value.length === 1) {
- const parsedValue = parsers.resolveBorderShorthandValue(value, subProps, parsedValues);
- if (typeof parsedValue === "string") {
- return parsedValue;
- } else if (Array.isArray(parsedValue)) {
- const [key, resolvedVal] = parsedValue;
- parsedValues.set(key, resolvedVal);
- } else {
- return;
- }
- } else {
- return;
- }
- }
- if (parsedValues.size) {
- const keys = module.exports.shorthandFor.keys();
- const obj = {
- [borderLeftWidth.property]: "medium"
- };
- for (const key of keys) {
- if (parsedValues.has(key)) {
- const parsedValue = parsedValues.get(key);
- if (parsedValue !== module.exports.initialValues.get(key)) {
- obj[key] = parsedValues.get(key);
- if (obj[borderLeftWidth.property] && obj[borderLeftWidth.property] === "medium") {
- delete obj[borderLeftWidth.property];
- }
- }
- }
- }
- return obj;
- }
- };
- module.exports.definition = {
- set(v) {
- v = parsers.prepareValue(v);
- if (parsers.hasVarFunc(v)) {
- this._borderSetter(property, v, "");
- } else {
- const val = module.exports.parse(v, {
- globalObject: this._global
- });
- if (val || typeof val === "string") {
- const priority =
- !this._priorities.get(shorthand) && this._priorities.has(property)
- ? this._priorities.get(property)
- : "";
- this._borderSetter(property, val, priority);
- }
- }
- },
- get() {
- return this.getPropertyValue(property);
- },
- enumerable: true,
- configurable: true
- };
- module.exports.property = property;
|