diff options
| author | littleblack111 <littleblack11111@gmail.com> | 2026-05-18 23:10:59 +0800 |
|---|---|---|
| committer | littleblack111 <littleblack11111@gmail.com> | 2026-05-18 23:41:44 +0800 |
| commit | fc87c009806dcc98867f6b58efe29b042aa01dee (patch) | |
| tree | 8f59b3f4a5b66e9dfef2d40c8d318e258a521228 /node_modules/clean-css/lib/optimizer/configuration.js | |
| parent | 3336b2356ee6152d9c6ae59bd9b87ccbc0958407 (diff) | |
node: updatemain
Diffstat (limited to 'node_modules/clean-css/lib/optimizer/configuration.js')
| -rw-r--r-- | node_modules/clean-css/lib/optimizer/configuration.js | 1640 |
1 files changed, 0 insertions, 1640 deletions
diff --git a/node_modules/clean-css/lib/optimizer/configuration.js b/node_modules/clean-css/lib/optimizer/configuration.js deleted file mode 100644 index 9da654dd..00000000 --- a/node_modules/clean-css/lib/optimizer/configuration.js +++ /dev/null @@ -1,1640 +0,0 @@ -// Contains the interpretation of CSS properties, as used by the property optimizer - -var breakUp = require('./configuration/break-up'); -var canOverride = require('./configuration/can-override'); -var restore = require('./configuration/restore'); - -var propertyOptimizers = require('./level-1/property-optimizers'); -var valueOptimizers = require('./level-1/value-optimizers'); - -var override = require('../utils/override'); - -// Properties to process -// Extend this object in order to add support for more properties in the optimizer. -// -// Each key in this object represents a CSS property and should be an object. -// Such an object contains properties that describe how the represented CSS property should be handled. -// Possible options: -// -// * components: array (Only specify for shorthand properties.) -// Contains the names of the granular properties this shorthand compacts. -// -// * canOverride: function -// Returns whether two tokens of this property can be merged with each other. -// This property has no meaning for shorthands. -// -// * defaultValue: string -// Specifies the default value of the property according to the CSS standard. -// For shorthand, this is used when every component is set to its default value, therefore it should be the shortest possible default value of all the components. -// -// * shortestValue: string -// Specifies the shortest possible value the property can possibly have. -// (Falls back to defaultValue if unspecified.) -// -// * breakUp: function (Only specify for shorthand properties.) -// Breaks the shorthand up to its components. -// -// * restore: function (Only specify for shorthand properties.) -// Puts the shorthand together from its components. -// -var configuration = { - animation: { - canOverride: canOverride.generic.components([ - canOverride.generic.time, - canOverride.generic.timingFunction, - canOverride.generic.time, - canOverride.property.animationIterationCount, - canOverride.property.animationDirection, - canOverride.property.animationFillMode, - canOverride.property.animationPlayState, - canOverride.property.animationName - ]), - components: [ - 'animation-duration', - 'animation-timing-function', - 'animation-delay', - 'animation-iteration-count', - 'animation-direction', - 'animation-fill-mode', - 'animation-play-state', - 'animation-name' - ], - breakUp: breakUp.multiplex(breakUp.animation), - defaultValue: 'none', - restore: restore.multiplex(restore.withoutDefaults), - shorthand: true, - valueOptimizers: [ - valueOptimizers.whiteSpace, - valueOptimizers.textQuotes, - valueOptimizers.time, - valueOptimizers.fraction, - valueOptimizers.precision, - valueOptimizers.unit, - valueOptimizers.zero - ], - vendorPrefixes: [ - '-moz-', - '-o-', - '-webkit-' - ] - }, - 'animation-delay': { - canOverride: canOverride.generic.time, - componentOf: [ - 'animation' - ], - defaultValue: '0s', - intoMultiplexMode: 'real', - valueOptimizers: [ - valueOptimizers.time, - valueOptimizers.fraction, - valueOptimizers.precision, - valueOptimizers.unit, - valueOptimizers.zero - ], - vendorPrefixes: [ - '-moz-', - '-o-', - '-webkit-' - ] - }, - 'animation-direction': { - canOverride: canOverride.property.animationDirection, - componentOf: [ - 'animation' - ], - defaultValue: 'normal', - intoMultiplexMode: 'real', - vendorPrefixes: [ - '-moz-', - '-o-', - '-webkit-' - ] - }, - 'animation-duration': { - canOverride: canOverride.generic.time, - componentOf: [ - 'animation' - ], - defaultValue: '0s', - intoMultiplexMode: 'real', - keepUnlessDefault: 'animation-delay', - valueOptimizers: [ - valueOptimizers.time, - valueOptimizers.fraction, - valueOptimizers.precision, - valueOptimizers.unit, - valueOptimizers.zero - ], - vendorPrefixes: [ - '-moz-', - '-o-', - '-webkit-' - ] - }, - 'animation-fill-mode': { - canOverride: canOverride.property.animationFillMode, - componentOf: [ - 'animation' - ], - defaultValue: 'none', - intoMultiplexMode: 'real', - vendorPrefixes: [ - '-moz-', - '-o-', - '-webkit-' - ] - }, - 'animation-iteration-count': { - canOverride: canOverride.property.animationIterationCount, - componentOf: [ - 'animation' - ], - defaultValue: '1', - intoMultiplexMode: 'real', - vendorPrefixes: [ - '-moz-', - '-o-', - '-webkit-' - ] - }, - 'animation-name': { - canOverride: canOverride.property.animationName, - componentOf: [ - 'animation' - ], - defaultValue: 'none', - intoMultiplexMode: 'real', - valueOptimizers: [ - valueOptimizers.textQuotes - ], - vendorPrefixes: [ - '-moz-', - '-o-', - '-webkit-' - ] - }, - 'animation-play-state': { - canOverride: canOverride.property.animationPlayState, - componentOf: [ - 'animation' - ], - defaultValue: 'running', - intoMultiplexMode: 'real', - vendorPrefixes: [ - '-moz-', - '-o-', - '-webkit-' - ] - }, - 'animation-timing-function': { - canOverride: canOverride.generic.timingFunction, - componentOf: [ - 'animation' - ], - defaultValue: 'ease', - intoMultiplexMode: 'real', - vendorPrefixes: [ - '-moz-', - '-o-', - '-webkit-' - ] - }, - background: { - canOverride: canOverride.generic.components([ - canOverride.generic.image, - canOverride.property.backgroundPosition, - canOverride.property.backgroundSize, - canOverride.property.backgroundRepeat, - canOverride.property.backgroundAttachment, - canOverride.property.backgroundOrigin, - canOverride.property.backgroundClip, - canOverride.generic.color - ]), - components: [ - 'background-image', - 'background-position', - 'background-size', - 'background-repeat', - 'background-attachment', - 'background-origin', - 'background-clip', - 'background-color' - ], - breakUp: breakUp.multiplex(breakUp.background), - defaultValue: '0 0', - propertyOptimizer: propertyOptimizers.background, - restore: restore.multiplex(restore.background), - shortestValue: '0', - shorthand: true, - valueOptimizers: [ - valueOptimizers.whiteSpace, - valueOptimizers.urlWhiteSpace, - valueOptimizers.fraction, - valueOptimizers.zero, - valueOptimizers.color, - valueOptimizers.urlPrefix, - valueOptimizers.urlQuotes - ] - }, - 'background-attachment': { - canOverride: canOverride.property.backgroundAttachment, - componentOf: [ - 'background' - ], - defaultValue: 'scroll', - intoMultiplexMode: 'real' - }, - 'background-clip': { - canOverride: canOverride.property.backgroundClip, - componentOf: [ - 'background' - ], - defaultValue: 'border-box', - intoMultiplexMode: 'real', - shortestValue: 'border-box' - }, - 'background-color': { - canOverride: canOverride.generic.color, - componentOf: [ - 'background' - ], - defaultValue: 'transparent', - intoMultiplexMode: 'real', // otherwise real color will turn into default since color appears in last multiplex only - multiplexLastOnly: true, - nonMergeableValue: 'none', - shortestValue: 'red', - valueOptimizers: [ - valueOptimizers.whiteSpace, - valueOptimizers.fraction, - valueOptimizers.color - ] - }, - 'background-image': { - canOverride: canOverride.generic.image, - componentOf: [ - 'background' - ], - defaultValue: 'none', - intoMultiplexMode: 'default', - valueOptimizers: [ - valueOptimizers.urlWhiteSpace, - valueOptimizers.urlPrefix, - valueOptimizers.urlQuotes, - valueOptimizers.whiteSpace, - valueOptimizers.fraction, - valueOptimizers.precision, - valueOptimizers.unit, - valueOptimizers.zero, - valueOptimizers.color - ] - }, - 'background-origin': { - canOverride: canOverride.property.backgroundOrigin, - componentOf: [ - 'background' - ], - defaultValue: 'padding-box', - intoMultiplexMode: 'real', - shortestValue: 'border-box' - }, - 'background-position': { - canOverride: canOverride.property.backgroundPosition, - componentOf: [ - 'background' - ], - defaultValue: ['0', '0'], - doubleValues: true, - intoMultiplexMode: 'real', - shortestValue: '0', - valueOptimizers: [ - valueOptimizers.whiteSpace, - valueOptimizers.fraction, - valueOptimizers.precision, - valueOptimizers.unit, - valueOptimizers.zero - ] - }, - 'background-repeat': { - canOverride: canOverride.property.backgroundRepeat, - componentOf: [ - 'background' - ], - defaultValue: ['repeat'], - doubleValues: true, - intoMultiplexMode: 'real' - }, - 'background-size': { - canOverride: canOverride.property.backgroundSize, - componentOf: [ - 'background' - ], - defaultValue: ['auto'], - doubleValues: true, - intoMultiplexMode: 'real', - shortestValue: '0 0', - valueOptimizers: [ - valueOptimizers.whiteSpace, - valueOptimizers.fraction, - valueOptimizers.precision, - valueOptimizers.unit, - valueOptimizers.zero - ] - }, - bottom: { - canOverride: canOverride.property.bottom, - defaultValue: 'auto', - valueOptimizers: [ - valueOptimizers.whiteSpace, - valueOptimizers.fraction, - valueOptimizers.precision, - valueOptimizers.unit, - valueOptimizers.zero - ] - }, - border: { - breakUp: breakUp.border, - canOverride: canOverride.generic.components([ - canOverride.generic.unit, - canOverride.property.borderStyle, - canOverride.generic.color - ]), - components: [ - 'border-width', - 'border-style', - 'border-color' - ], - defaultValue: 'none', - overridesShorthands: [ - 'border-bottom', - 'border-left', - 'border-right', - 'border-top' - ], - restore: restore.withoutDefaults, - shorthand: true, - shorthandComponents: true, - valueOptimizers: [ - valueOptimizers.whiteSpace, - valueOptimizers.fraction, - valueOptimizers.zero, - valueOptimizers.color - ] - }, - 'border-bottom': { - breakUp: breakUp.border, - canOverride: canOverride.generic.components([ - canOverride.generic.unit, - canOverride.property.borderStyle, - canOverride.generic.color - ]), - components: [ - 'border-bottom-width', - 'border-bottom-style', - 'border-bottom-color' - ], - defaultValue: 'none', - restore: restore.withoutDefaults, - shorthand: true, - valueOptimizers: [ - valueOptimizers.whiteSpace, - valueOptimizers.fraction, - valueOptimizers.zero, - valueOptimizers.color - ] - }, - 'border-bottom-color': { - canOverride: canOverride.generic.color, - componentOf: [ - 'border-bottom', - 'border-color' - ], - defaultValue: 'none', - valueOptimizers: [ - valueOptimizers.whiteSpace, - valueOptimizers.fraction, - valueOptimizers.color - ] - }, - 'border-bottom-left-radius': { - canOverride: canOverride.generic.unit, - componentOf: [ - 'border-radius' - ], - defaultValue: '0', - propertyOptimizer: propertyOptimizers.borderRadius, - valueOptimizers: [ - valueOptimizers.whiteSpace, - valueOptimizers.fraction, - valueOptimizers.precision, - valueOptimizers.unit, - valueOptimizers.zero - ], - vendorPrefixes: [ - '-moz-', - '-o-' - ] - }, - 'border-bottom-right-radius': { - canOverride: canOverride.generic.unit, - componentOf: [ - 'border-radius' - ], - defaultValue: '0', - propertyOptimizer: propertyOptimizers.borderRadius, - valueOptimizers: [ - valueOptimizers.whiteSpace, - valueOptimizers.fraction, - valueOptimizers.precision, - valueOptimizers.unit, - valueOptimizers.zero - ], - vendorPrefixes: [ - '-moz-', - '-o-' - ] - }, - 'border-bottom-style': { - canOverride: canOverride.property.borderStyle, - componentOf: [ - 'border-bottom', - 'border-style' - ], - defaultValue: 'none' - }, - 'border-bottom-width': { - canOverride: canOverride.generic.unit, - componentOf: [ - 'border-bottom', - 'border-width' - ], - defaultValue: 'medium', - oppositeTo: 'border-top-width', - shortestValue: '0', - valueOptimizers: [ - valueOptimizers.whiteSpace, - valueOptimizers.fraction, - valueOptimizers.precision, - valueOptimizers.unit, - valueOptimizers.zero - ] - }, - 'border-collapse': { - canOverride: canOverride.property.borderCollapse, - defaultValue: 'separate' - }, - 'border-color': { - breakUp: breakUp.fourValues, - canOverride: canOverride.generic.components([ - canOverride.generic.color, - canOverride.generic.color, - canOverride.generic.color, - canOverride.generic.color - ]), - componentOf: [ - 'border' - ], - components: [ - 'border-top-color', - 'border-right-color', - 'border-bottom-color', - 'border-left-color' - ], - defaultValue: 'none', - restore: restore.fourValues, - shortestValue: 'red', - shorthand: true, - singleTypeComponents: true, - valueOptimizers: [ - valueOptimizers.whiteSpace, - valueOptimizers.fraction, - valueOptimizers.color - ] - }, - 'border-left': { - breakUp: breakUp.border, - canOverride: canOverride.generic.components([ - canOverride.generic.unit, - canOverride.property.borderStyle, - canOverride.generic.color - ]), - components: [ - 'border-left-width', - 'border-left-style', - 'border-left-color' - ], - defaultValue: 'none', - restore: restore.withoutDefaults, - shorthand: true, - valueOptimizers: [ - valueOptimizers.whiteSpace, - valueOptimizers.fraction, - valueOptimizers.zero, - valueOptimizers.color - ] - }, - 'border-left-color': { - canOverride: canOverride.generic.color, - componentOf: [ - 'border-color', - 'border-left' - ], - defaultValue: 'none', - valueOptimizers: [ - valueOptimizers.whiteSpace, - valueOptimizers.fraction, - valueOptimizers.color - ] - }, - 'border-left-style': { - canOverride: canOverride.property.borderStyle, - componentOf: [ - 'border-left', - 'border-style' - ], - defaultValue: 'none' - }, - 'border-left-width': { - canOverride: canOverride.generic.unit, - componentOf: [ - 'border-left', - 'border-width' - ], - defaultValue: 'medium', - oppositeTo: 'border-right-width', - shortestValue: '0', - valueOptimizers: [ - valueOptimizers.whiteSpace, - valueOptimizers.fraction, - valueOptimizers.precision, - valueOptimizers.unit, - valueOptimizers.zero - ] - }, - 'border-radius': { - breakUp: breakUp.borderRadius, - canOverride: canOverride.generic.components([ - canOverride.generic.unit, - canOverride.generic.unit, - canOverride.generic.unit, - canOverride.generic.unit - ]), - components: [ - 'border-top-left-radius', - 'border-top-right-radius', - 'border-bottom-right-radius', - 'border-bottom-left-radius' - ], - defaultValue: '0', - propertyOptimizer: propertyOptimizers.borderRadius, - restore: restore.borderRadius, - shorthand: true, - valueOptimizers: [ - valueOptimizers.whiteSpace, - valueOptimizers.fraction, - valueOptimizers.precision, - valueOptimizers.unit, - valueOptimizers.zero - ], - vendorPrefixes: [ - '-moz-', - '-o-' - ] - }, - 'border-right': { - breakUp: breakUp.border, - canOverride: canOverride.generic.components([ - canOverride.generic.unit, - canOverride.property.borderStyle, - canOverride.generic.color - ]), - components: [ - 'border-right-width', - 'border-right-style', - 'border-right-color' - ], - defaultValue: 'none', - restore: restore.withoutDefaults, - shorthand: true, - valueOptimizers: [ - valueOptimizers.whiteSpace, - valueOptimizers.fraction, - valueOptimizers.color - ] - }, - 'border-right-color': { - canOverride: canOverride.generic.color, - componentOf: [ - 'border-color', - 'border-right' - ], - defaultValue: 'none', - valueOptimizers: [ - valueOptimizers.whiteSpace, - valueOptimizers.fraction, - valueOptimizers.color - ] - }, - 'border-right-style': { - canOverride: canOverride.property.borderStyle, - componentOf: [ - 'border-right', - 'border-style' - ], - defaultValue: 'none' - }, - 'border-right-width': { - canOverride: canOverride.generic.unit, - componentOf: [ - 'border-right', - 'border-width' - ], - defaultValue: 'medium', - oppositeTo: 'border-left-width', - shortestValue: '0', - valueOptimizers: [ - valueOptimizers.whiteSpace, - valueOptimizers.fraction, - valueOptimizers.precision, - valueOptimizers.unit, - valueOptimizers.zero - ] - }, - 'border-style': { - breakUp: breakUp.fourValues, - canOverride: canOverride.generic.components([ - canOverride.property.borderStyle, - canOverride.property.borderStyle, - canOverride.property.borderStyle, - canOverride.property.borderStyle - ]), - componentOf: [ - 'border' - ], - components: [ - 'border-top-style', - 'border-right-style', - 'border-bottom-style', - 'border-left-style' - ], - defaultValue: 'none', - restore: restore.fourValues, - shorthand: true, - singleTypeComponents: true - }, - 'border-top': { - breakUp: breakUp.border, - canOverride: canOverride.generic.components([ - canOverride.generic.unit, - canOverride.property.borderStyle, - canOverride.generic.color - ]), - components: [ - 'border-top-width', - 'border-top-style', - 'border-top-color' - ], - defaultValue: 'none', - restore: restore.withoutDefaults, - shorthand: true, - valueOptimizers: [ - valueOptimizers.whiteSpace, - valueOptimizers.fraction, - valueOptimizers.precision, - valueOptimizers.zero, - valueOptimizers.color, - valueOptimizers.unit - ] - }, - 'border-top-color': { - canOverride: canOverride.generic.color, - componentOf: [ - 'border-color', - 'border-top' - ], - defaultValue: 'none', - valueOptimizers: [ - valueOptimizers.whiteSpace, - valueOptimizers.fraction, - valueOptimizers.color - ] - }, - 'border-top-left-radius': { - canOverride: canOverride.generic.unit, - componentOf: [ - 'border-radius' - ], - defaultValue: '0', - propertyOptimizer: propertyOptimizers.borderRadius, - valueOptimizers: [ - valueOptimizers.whiteSpace, - valueOptimizers.fraction, - valueOptimizers.precision, - valueOptimizers.unit, - valueOptimizers.zero - ], - vendorPrefixes: [ - '-moz-', - '-o-' - ] - }, - 'border-top-right-radius': { - canOverride: canOverride.generic.unit, - componentOf: [ - 'border-radius' - ], - defaultValue: '0', - propertyOptimizer: propertyOptimizers.borderRadius, - valueOptimizers: [ - valueOptimizers.whiteSpace, - valueOptimizers.fraction, - valueOptimizers.precision, - valueOptimizers.unit, - valueOptimizers.zero - ], - vendorPrefixes: [ - '-moz-', - '-o-' - ] - }, - 'border-top-style': { - canOverride: canOverride.property.borderStyle, - componentOf: [ - 'border-style', - 'border-top' - ], - defaultValue: 'none' - }, - 'border-top-width': { - canOverride: canOverride.generic.unit, - componentOf: [ - 'border-top', - 'border-width' - ], - defaultValue: 'medium', - oppositeTo: 'border-bottom-width', - shortestValue: '0', - valueOptimizers: [ - valueOptimizers.whiteSpace, - valueOptimizers.fraction, - valueOptimizers.precision, - valueOptimizers.unit, - valueOptimizers.zero - ] - }, - 'border-width': { - breakUp: breakUp.fourValues, - canOverride: canOverride.generic.components([ - canOverride.generic.unit, - canOverride.generic.unit, - canOverride.generic.unit, - canOverride.generic.unit - ]), - componentOf: [ - 'border' - ], - components: [ - 'border-top-width', - 'border-right-width', - 'border-bottom-width', - 'border-left-width' - ], - defaultValue: 'medium', - restore: restore.fourValues, - shortestValue: '0', - shorthand: true, - singleTypeComponents: true, - valueOptimizers: [ - valueOptimizers.whiteSpace, - valueOptimizers.fraction, - valueOptimizers.precision, - valueOptimizers.unit, - valueOptimizers.zero - ] - }, - 'box-shadow': { - propertyOptimizer: propertyOptimizers.boxShadow, - valueOptimizers: [ - valueOptimizers.whiteSpace, - valueOptimizers.fraction, - valueOptimizers.precision, - valueOptimizers.unit, - valueOptimizers.zero, - valueOptimizers.color - ], - vendorPrefixes: [ - '-moz-', - '-ms-', - '-o-', - '-webkit-' - ] - }, - clear: { - canOverride: canOverride.property.clear, - defaultValue: 'none' - }, - clip: { - valueOptimizers: [ - valueOptimizers.whiteSpace, - valueOptimizers.fraction, - valueOptimizers.precision, - valueOptimizers.unit, - valueOptimizers.zero - ] - }, - color: { - canOverride: canOverride.generic.color, - defaultValue: 'transparent', - shortestValue: 'red', - valueOptimizers: [ - valueOptimizers.whiteSpace, - valueOptimizers.fraction, - valueOptimizers.color - ] - }, - 'column-gap': { - valueOptimizers: [ - valueOptimizers.whiteSpace, - valueOptimizers.fraction, - valueOptimizers.precision, - valueOptimizers.unit, - valueOptimizers.zero - ] - }, - cursor: { - canOverride: canOverride.property.cursor, - defaultValue: 'auto' - }, - display: { canOverride: canOverride.property.display }, - filter: { - propertyOptimizer: propertyOptimizers.filter, - valueOptimizers: [ - valueOptimizers.fraction - ] - }, - float: { - canOverride: canOverride.property.float, - defaultValue: 'none' - }, - font: { - breakUp: breakUp.font, - canOverride: canOverride.generic.components([ - canOverride.property.fontStyle, - canOverride.property.fontVariant, - canOverride.property.fontWeight, - canOverride.property.fontStretch, - canOverride.generic.unit, - canOverride.generic.unit, - canOverride.property.fontFamily - ]), - components: [ - 'font-style', - 'font-variant', - 'font-weight', - 'font-stretch', - 'font-size', - 'line-height', - 'font-family' - ], - restore: restore.font, - shorthand: true, - valueOptimizers: [ - valueOptimizers.textQuotes - ] - }, - 'font-family': { - canOverride: canOverride.property.fontFamily, - defaultValue: 'user|agent|specific', - valueOptimizers: [ - valueOptimizers.textQuotes - ] - }, - 'font-size': { - canOverride: canOverride.generic.unit, - defaultValue: 'medium', - shortestValue: '0', - valueOptimizers: [ - valueOptimizers.fraction - ] - }, - 'font-stretch': { - canOverride: canOverride.property.fontStretch, - defaultValue: 'normal' - }, - 'font-style': { - canOverride: canOverride.property.fontStyle, - defaultValue: 'normal' - }, - 'font-variant': { - canOverride: canOverride.property.fontVariant, - defaultValue: 'normal' - }, - 'font-weight': { - canOverride: canOverride.property.fontWeight, - defaultValue: 'normal', - propertyOptimizer: propertyOptimizers.fontWeight, - shortestValue: '400' - }, - gap: { - valueOptimizers: [ - valueOptimizers.whiteSpace, - valueOptimizers.fraction, - valueOptimizers.precision, - valueOptimizers.unit, - valueOptimizers.zero - ] - }, - height: { - canOverride: canOverride.generic.unit, - defaultValue: 'auto', - shortestValue: '0', - valueOptimizers: [ - valueOptimizers.whiteSpace, - valueOptimizers.fraction, - valueOptimizers.precision, - valueOptimizers.unit, - valueOptimizers.zero - ] - }, - left: { - canOverride: canOverride.property.left, - defaultValue: 'auto', - valueOptimizers: [ - valueOptimizers.whiteSpace, - valueOptimizers.fraction, - valueOptimizers.precision, - valueOptimizers.unit, - valueOptimizers.zero - ] - }, - 'letter-spacing': { - valueOptimizers: [ - valueOptimizers.fraction, - valueOptimizers.zero - ] - }, - 'line-height': { - canOverride: canOverride.generic.unitOrNumber, - defaultValue: 'normal', - shortestValue: '0', - valueOptimizers: [ - valueOptimizers.fraction, - valueOptimizers.zero - ] - }, - 'list-style': { - canOverride: canOverride.generic.components([ - canOverride.property.listStyleType, - canOverride.property.listStylePosition, - canOverride.property.listStyleImage - ]), - components: [ - 'list-style-type', - 'list-style-position', - 'list-style-image' - ], - breakUp: breakUp.listStyle, - restore: restore.withoutDefaults, - defaultValue: 'outside', // can't use 'disc' because that'd override default 'decimal' for <ol> - shortestValue: 'none', - shorthand: true - }, - 'list-style-image': { - canOverride: canOverride.generic.image, - componentOf: [ - 'list-style' - ], - defaultValue: 'none' - }, - 'list-style-position': { - canOverride: canOverride.property.listStylePosition, - componentOf: [ - 'list-style' - ], - defaultValue: 'outside', - shortestValue: 'inside' - }, - 'list-style-type': { - canOverride: canOverride.property.listStyleType, - componentOf: [ - 'list-style' - ], - // NOTE: we can't tell the real default value here, it's 'disc' for <ul> and 'decimal' for <ol> - // this is a hack, but it doesn't matter because this value will be either overridden or - // it will disappear at the final step anyway - defaultValue: 'decimal|disc', - shortestValue: 'none' - }, - margin: { - breakUp: breakUp.fourValues, - canOverride: canOverride.generic.components([ - canOverride.generic.unit, - canOverride.generic.unit, - canOverride.generic.unit, - canOverride.generic.unit - ]), - components: [ - 'margin-top', - 'margin-right', - 'margin-bottom', - 'margin-left' - ], - defaultValue: '0', - propertyOptimizer: propertyOptimizers.margin, - restore: restore.fourValues, - shorthand: true, - valueOptimizers: [ - valueOptimizers.whiteSpace, - valueOptimizers.fraction, - valueOptimizers.precision, - valueOptimizers.unit, - valueOptimizers.zero - ] - }, - 'margin-bottom': { - canOverride: canOverride.generic.unit, - componentOf: [ - 'margin' - ], - defaultValue: '0', - oppositeTo: 'margin-top', - propertyOptimizer: propertyOptimizers.margin, - valueOptimizers: [ - valueOptimizers.whiteSpace, - valueOptimizers.fraction, - valueOptimizers.precision, - valueOptimizers.unit, - valueOptimizers.zero - ] - }, - 'margin-inline-end': { - valueOptimizers: [ - valueOptimizers.whiteSpace, - valueOptimizers.fraction, - valueOptimizers.precision, - valueOptimizers.unit, - valueOptimizers.zero - ] - }, - 'margin-inline-start': { - valueOptimizers: [ - valueOptimizers.whiteSpace, - valueOptimizers.fraction, - valueOptimizers.precision, - valueOptimizers.unit, - valueOptimizers.zero - ] - }, - 'margin-left': { - canOverride: canOverride.generic.unit, - componentOf: [ - 'margin' - ], - defaultValue: '0', - oppositeTo: 'margin-right', - propertyOptimizer: propertyOptimizers.margin, - valueOptimizers: [ - valueOptimizers.whiteSpace, - valueOptimizers.fraction, - valueOptimizers.precision, - valueOptimizers.unit, - valueOptimizers.zero - ] - }, - 'margin-right': { - canOverride: canOverride.generic.unit, - componentOf: [ - 'margin' - ], - defaultValue: '0', - oppositeTo: 'margin-left', - propertyOptimizer: propertyOptimizers.margin, - valueOptimizers: [ - valueOptimizers.whiteSpace, - valueOptimizers.fraction, - valueOptimizers.precision, - valueOptimizers.unit, - valueOptimizers.zero - ] - }, - 'margin-top': { - canOverride: canOverride.generic.unit, - componentOf: [ - 'margin' - ], - defaultValue: '0', - oppositeTo: 'margin-bottom', - propertyOptimizer: propertyOptimizers.margin, - valueOptimizers: [ - valueOptimizers.whiteSpace, - valueOptimizers.fraction, - valueOptimizers.precision, - valueOptimizers.unit, - valueOptimizers.zero - ] - }, - 'max-height': { - canOverride: canOverride.generic.unit, - defaultValue: 'none', - shortestValue: '0', - valueOptimizers: [ - valueOptimizers.whiteSpace, - valueOptimizers.fraction, - valueOptimizers.precision, - valueOptimizers.unit, - valueOptimizers.zero - ] - }, - 'max-width': { - canOverride: canOverride.generic.unit, - defaultValue: 'none', - shortestValue: '0', - valueOptimizers: [ - valueOptimizers.whiteSpace, - valueOptimizers.fraction, - valueOptimizers.precision, - valueOptimizers.unit, - valueOptimizers.zero - ] - }, - 'min-height': { - canOverride: canOverride.generic.unit, - defaultValue: '0', - shortestValue: '0', - valueOptimizers: [ - valueOptimizers.whiteSpace, - valueOptimizers.fraction, - valueOptimizers.precision, - valueOptimizers.unit, - valueOptimizers.zero - ] - }, - 'min-width': { - canOverride: canOverride.generic.unit, - defaultValue: '0', - shortestValue: '0', - valueOptimizers: [ - valueOptimizers.whiteSpace, - valueOptimizers.fraction, - valueOptimizers.precision, - valueOptimizers.unit, - valueOptimizers.zero - ] - }, - opacity: { - valueOptimizers: [ - valueOptimizers.fraction, - valueOptimizers.precision - ] - }, - outline: { - canOverride: canOverride.generic.components([ - canOverride.generic.color, - canOverride.property.outlineStyle, - canOverride.generic.unit - ]), - components: [ - 'outline-color', - 'outline-style', - 'outline-width' - ], - breakUp: breakUp.outline, - restore: restore.withoutDefaults, - defaultValue: '0', - propertyOptimizer: propertyOptimizers.outline, - shorthand: true, - valueOptimizers: [ - valueOptimizers.whiteSpace, - valueOptimizers.fraction, - valueOptimizers.precision, - valueOptimizers.unit, - valueOptimizers.zero - ] - }, - 'outline-color': { - canOverride: canOverride.generic.color, - componentOf: [ - 'outline' - ], - defaultValue: 'invert', - shortestValue: 'red', - valueOptimizers: [ - valueOptimizers.whiteSpace, - valueOptimizers.fraction, - valueOptimizers.color - ] - }, - 'outline-style': { - canOverride: canOverride.property.outlineStyle, - componentOf: [ - 'outline' - ], - defaultValue: 'none' - }, - 'outline-width': { - canOverride: canOverride.generic.unit, - componentOf: [ - 'outline' - ], - defaultValue: 'medium', - shortestValue: '0', - valueOptimizers: [ - valueOptimizers.whiteSpace, - valueOptimizers.fraction, - valueOptimizers.precision, - valueOptimizers.unit, - valueOptimizers.zero - ] - }, - overflow: { - canOverride: canOverride.property.overflow, - defaultValue: 'visible' - }, - 'overflow-x': { - canOverride: canOverride.property.overflow, - defaultValue: 'visible' - }, - 'overflow-y': { - canOverride: canOverride.property.overflow, - defaultValue: 'visible' - }, - padding: { - breakUp: breakUp.fourValues, - canOverride: canOverride.generic.components([ - canOverride.generic.unit, - canOverride.generic.unit, - canOverride.generic.unit, - canOverride.generic.unit - ]), - components: [ - 'padding-top', - 'padding-right', - 'padding-bottom', - 'padding-left' - ], - defaultValue: '0', - propertyOptimizer: propertyOptimizers.padding, - restore: restore.fourValues, - shorthand: true, - valueOptimizers: [ - valueOptimizers.whiteSpace, - valueOptimizers.fraction, - valueOptimizers.precision, - valueOptimizers.unit, - valueOptimizers.zero - ] - }, - 'padding-bottom': { - canOverride: canOverride.generic.unit, - componentOf: [ - 'padding' - ], - defaultValue: '0', - oppositeTo: 'padding-top', - propertyOptimizer: propertyOptimizers.padding, - valueOptimizers: [ - valueOptimizers.whiteSpace, - valueOptimizers.fraction, - valueOptimizers.precision, - valueOptimizers.unit, - valueOptimizers.zero - ] - }, - 'padding-left': { - canOverride: canOverride.generic.unit, - componentOf: [ - 'padding' - ], - defaultValue: '0', - oppositeTo: 'padding-right', - propertyOptimizer: propertyOptimizers.padding, - valueOptimizers: [ - valueOptimizers.whiteSpace, - valueOptimizers.fraction, - valueOptimizers.precision, - valueOptimizers.unit, - valueOptimizers.zero - ] - }, - 'padding-right': { - canOverride: canOverride.generic.unit, - componentOf: [ - 'padding' - ], - defaultValue: '0', - oppositeTo: 'padding-left', - propertyOptimizer: propertyOptimizers.padding, - valueOptimizers: [ - valueOptimizers.whiteSpace, - valueOptimizers.fraction, - valueOptimizers.precision, - valueOptimizers.unit, - valueOptimizers.zero - ] - }, - 'padding-top': { - canOverride: canOverride.generic.unit, - componentOf: [ - 'padding' - ], - defaultValue: '0', - oppositeTo: 'padding-bottom', - propertyOptimizer: propertyOptimizers.padding, - valueOptimizers: [ - valueOptimizers.whiteSpace, - valueOptimizers.fraction, - valueOptimizers.precision, - valueOptimizers.unit, - valueOptimizers.zero - ] - }, - position: { - canOverride: canOverride.property.position, - defaultValue: 'static' - }, - right: { - canOverride: canOverride.property.right, - defaultValue: 'auto', - valueOptimizers: [ - valueOptimizers.whiteSpace, - valueOptimizers.fraction, - valueOptimizers.precision, - valueOptimizers.unit, - valueOptimizers.zero - ] - }, - 'row-gap': { - valueOptimizers: [ - valueOptimizers.whiteSpace, - valueOptimizers.fraction, - valueOptimizers.precision, - valueOptimizers.unit, - valueOptimizers.zero - ] - }, - src: { - valueOptimizers: [ - valueOptimizers.urlWhiteSpace, - valueOptimizers.urlPrefix, - valueOptimizers.urlQuotes - ] - }, - 'stroke-width': { - valueOptimizers: [ - valueOptimizers.whiteSpace, - valueOptimizers.fraction, - valueOptimizers.precision, - valueOptimizers.unit, - valueOptimizers.zero - ] - }, - 'text-align': { - canOverride: canOverride.property.textAlign, - // NOTE: we can't tell the real default value here, as it depends on default text direction - // this is a hack, but it doesn't matter because this value will be either overridden or - // it will disappear anyway - defaultValue: 'left|right' - }, - 'text-decoration': { - canOverride: canOverride.property.textDecoration, - defaultValue: 'none' - }, - 'text-indent': { - canOverride: canOverride.property.textOverflow, - defaultValue: 'none', - valueOptimizers: [ - valueOptimizers.fraction, - valueOptimizers.zero - ] - }, - 'text-overflow': { - canOverride: canOverride.property.textOverflow, - defaultValue: 'none' - }, - 'text-shadow': { - canOverride: canOverride.property.textShadow, - defaultValue: 'none', - valueOptimizers: [ - valueOptimizers.whiteSpace, - valueOptimizers.fraction, - valueOptimizers.zero, - valueOptimizers.color - ] - }, - top: { - canOverride: canOverride.property.top, - defaultValue: 'auto', - valueOptimizers: [ - valueOptimizers.whiteSpace, - valueOptimizers.fraction, - valueOptimizers.precision, - valueOptimizers.unit, - valueOptimizers.zero - ] - }, - transform: { - canOverride: canOverride.property.transform, - valueOptimizers: [ - valueOptimizers.whiteSpace, - valueOptimizers.degrees, - valueOptimizers.fraction, - valueOptimizers.precision, - valueOptimizers.unit, - valueOptimizers.zero - ], - vendorPrefixes: [ - '-moz-', - '-ms-', - '-o-', - '-webkit-' - ] - }, - transition: { - breakUp: breakUp.multiplex(breakUp.transition), - canOverride: canOverride.generic.components([ - canOverride.property.transitionProperty, - canOverride.generic.time, - canOverride.generic.timingFunction, - canOverride.generic.time - ]), - components: [ - 'transition-property', - 'transition-duration', - 'transition-timing-function', - 'transition-delay' - ], - defaultValue: 'none', - restore: restore.multiplex(restore.withoutDefaults), - shorthand: true, - valueOptimizers: [ - valueOptimizers.time, - valueOptimizers.fraction - ], - vendorPrefixes: [ - '-moz-', - '-ms-', - '-o-', - '-webkit-' - ] - }, - 'transition-delay': { - canOverride: canOverride.generic.time, - componentOf: [ - 'transition' - ], - defaultValue: '0s', - intoMultiplexMode: 'real', - valueOptimizers: [ - valueOptimizers.time - ], - vendorPrefixes: [ - '-moz-', - '-ms-', - '-o-', - '-webkit-' - ] - }, - 'transition-duration': { - canOverride: canOverride.generic.time, - componentOf: [ - 'transition' - ], - defaultValue: '0s', - intoMultiplexMode: 'real', - keepUnlessDefault: 'transition-delay', - valueOptimizers: [ - valueOptimizers.time, - valueOptimizers.fraction - ], - vendorPrefixes: [ - '-moz-', - '-ms-', - '-o-', - '-webkit-' - ] - }, - 'transition-property': { - canOverride: canOverride.generic.propertyName, - componentOf: [ - 'transition' - ], - defaultValue: 'all', - intoMultiplexMode: 'placeholder', - placeholderValue: '_', // it's a short value that won't match any property and still be a valid `transition-property` - vendorPrefixes: [ - '-moz-', - '-ms-', - '-o-', - '-webkit-' - ] - }, - 'transition-timing-function': { - canOverride: canOverride.generic.timingFunction, - componentOf: [ - 'transition' - ], - defaultValue: 'ease', - intoMultiplexMode: 'real', - vendorPrefixes: [ - '-moz-', - '-ms-', - '-o-', - '-webkit-' - ] - }, - 'vertical-align': { - canOverride: canOverride.property.verticalAlign, - defaultValue: 'baseline', - valueOptimizers: [ - valueOptimizers.whiteSpace, - valueOptimizers.fraction, - valueOptimizers.precision, - valueOptimizers.unit, - valueOptimizers.zero - ] - }, - visibility: { - canOverride: canOverride.property.visibility, - defaultValue: 'visible' - }, - '-webkit-tap-highlight-color': { - valueOptimizers: [ - valueOptimizers.whiteSpace, - valueOptimizers.color - ] - }, - '-webkit-margin-end': { - valueOptimizers: [ - valueOptimizers.whiteSpace, - valueOptimizers.fraction, - valueOptimizers.precision, - valueOptimizers.unit, - valueOptimizers.zero - ] - }, - 'white-space': { - canOverride: canOverride.property.whiteSpace, - defaultValue: 'normal' - }, - width: { - canOverride: canOverride.generic.unit, - defaultValue: 'auto', - shortestValue: '0', - valueOptimizers: [ - valueOptimizers.whiteSpace, - valueOptimizers.fraction, - valueOptimizers.precision, - valueOptimizers.unit, - valueOptimizers.zero - ] - }, - 'z-index': { - canOverride: canOverride.property.zIndex, - defaultValue: 'auto' - } -}; - -// generate vendor-prefixed configuration -var vendorPrefixedConfiguration = {}; - -function cloneDescriptor(propertyName, prefix) { - var clonedDescriptor = override(configuration[propertyName], {}); - - if ('componentOf' in clonedDescriptor) { - clonedDescriptor.componentOf = clonedDescriptor.componentOf.map(function(shorthandName) { - return prefix + shorthandName; - }); - } - - if ('components' in clonedDescriptor) { - clonedDescriptor.components = clonedDescriptor.components.map(function(longhandName) { - return prefix + longhandName; - }); - } - - if ('keepUnlessDefault' in clonedDescriptor) { - clonedDescriptor.keepUnlessDefault = prefix + clonedDescriptor.keepUnlessDefault; - } - - return clonedDescriptor; -} - -for (var propertyName in configuration) { - var descriptor = configuration[propertyName]; - - if (!('vendorPrefixes' in descriptor)) { - continue; - } - - for (var i = 0; i < descriptor.vendorPrefixes.length; i++) { - var prefix = descriptor.vendorPrefixes[i]; - var clonedDescriptor = cloneDescriptor(propertyName, prefix); - delete clonedDescriptor.vendorPrefixes; - - vendorPrefixedConfiguration[prefix + propertyName] = clonedDescriptor; - } - - delete descriptor.vendorPrefixes; -} - -module.exports = override(configuration, vendorPrefixedConfiguration); |
