From fc87c009806dcc98867f6b58efe29b042aa01dee Mon Sep 17 00:00:00 2001 From: littleblack111 Date: Mon, 18 May 2026 23:10:59 +0800 Subject: node: update --- .../dist/htmlminifier.esm.bundle.js | 57509 ------------------- 1 file changed, 57509 deletions(-) delete mode 100644 node_modules/html-minifier-terser/dist/htmlminifier.esm.bundle.js (limited to 'node_modules/html-minifier-terser/dist/htmlminifier.esm.bundle.js') diff --git a/node_modules/html-minifier-terser/dist/htmlminifier.esm.bundle.js b/node_modules/html-minifier-terser/dist/htmlminifier.esm.bundle.js deleted file mode 100644 index df6bee13..00000000 --- a/node_modules/html-minifier-terser/dist/htmlminifier.esm.bundle.js +++ /dev/null @@ -1,57509 +0,0 @@ -var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; - -function getDefaultExportFromCjs (x) { - return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x; -} - -function getAugmentedNamespace(n) { - if (n.__esModule) return n; - var f = n.default; - if (typeof f == "function") { - var a = function a () { - if (this instanceof a) { - var args = [null]; - args.push.apply(args, arguments); - var Ctor = Function.bind.apply(f, args); - return new Ctor(); - } - return f.apply(this, arguments); - }; - a.prototype = f.prototype; - } else a = {}; - Object.defineProperty(a, '__esModule', {value: true}); - Object.keys(n).forEach(function (k) { - var d = Object.getOwnPropertyDescriptor(n, k); - Object.defineProperty(a, k, d.get ? d : { - enumerable: true, - get: function () { - return n[k]; - } - }); - }); - return a; -} - -var cleanCssExports = {}; -var cleanCss = { - get exports(){ return cleanCssExports; }, - set exports(v){ cleanCssExports = v; }, -}; - -var global$1 = (typeof global !== "undefined" ? global : - typeof self !== "undefined" ? self : - typeof window !== "undefined" ? window : {}); - -// shim for using process in browser -// based off https://github.com/defunctzombie/node-process/blob/master/browser.js - -function defaultSetTimout() { - throw new Error('setTimeout has not been defined'); -} -function defaultClearTimeout () { - throw new Error('clearTimeout has not been defined'); -} -var cachedSetTimeout = defaultSetTimout; -var cachedClearTimeout = defaultClearTimeout; -if (typeof global$1.setTimeout === 'function') { - cachedSetTimeout = setTimeout; -} -if (typeof global$1.clearTimeout === 'function') { - cachedClearTimeout = clearTimeout; -} - -function runTimeout(fun) { - if (cachedSetTimeout === setTimeout) { - //normal enviroments in sane situations - return setTimeout(fun, 0); - } - // if setTimeout wasn't available but was latter defined - if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) { - cachedSetTimeout = setTimeout; - return setTimeout(fun, 0); - } - try { - // when when somebody has screwed with setTimeout but no I.E. maddness - return cachedSetTimeout(fun, 0); - } catch(e){ - try { - // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally - return cachedSetTimeout.call(null, fun, 0); - } catch(e){ - // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error - return cachedSetTimeout.call(this, fun, 0); - } - } - - -} -function runClearTimeout(marker) { - if (cachedClearTimeout === clearTimeout) { - //normal enviroments in sane situations - return clearTimeout(marker); - } - // if clearTimeout wasn't available but was latter defined - if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) { - cachedClearTimeout = clearTimeout; - return clearTimeout(marker); - } - try { - // when when somebody has screwed with setTimeout but no I.E. maddness - return cachedClearTimeout(marker); - } catch (e){ - try { - // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally - return cachedClearTimeout.call(null, marker); - } catch (e){ - // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error. - // Some versions of I.E. have different rules for clearTimeout vs setTimeout - return cachedClearTimeout.call(this, marker); - } - } - - - -} -var queue = []; -var draining = false; -var currentQueue; -var queueIndex = -1; - -function cleanUpNextTick() { - if (!draining || !currentQueue) { - return; - } - draining = false; - if (currentQueue.length) { - queue = currentQueue.concat(queue); - } else { - queueIndex = -1; - } - if (queue.length) { - drainQueue(); - } -} - -function drainQueue() { - if (draining) { - return; - } - var timeout = runTimeout(cleanUpNextTick); - draining = true; - - var len = queue.length; - while(len) { - currentQueue = queue; - queue = []; - while (++queueIndex < len) { - if (currentQueue) { - currentQueue[queueIndex].run(); - } - } - queueIndex = -1; - len = queue.length; - } - currentQueue = null; - draining = false; - runClearTimeout(timeout); -} -function nextTick(fun) { - var args = new Array(arguments.length - 1); - if (arguments.length > 1) { - for (var i = 1; i < arguments.length; i++) { - args[i - 1] = arguments[i]; - } - } - queue.push(new Item(fun, args)); - if (queue.length === 1 && !draining) { - runTimeout(drainQueue); - } -} -// v8 likes predictible objects -function Item(fun, array) { - this.fun = fun; - this.array = array; -} -Item.prototype.run = function () { - this.fun.apply(null, this.array); -}; -var title = 'browser'; -var platform$1 = 'browser'; -var browser = true; -var env = {}; -var argv = []; -var version = ''; // empty string to avoid regexp issues -var versions = {}; -var release$1 = {}; -var config = {}; - -function noop$2() {} - -var on = noop$2; -var addListener = noop$2; -var once = noop$2; -var off = noop$2; -var removeListener = noop$2; -var removeAllListeners = noop$2; -var emit = noop$2; - -function binding(name) { - throw new Error('process.binding is not supported'); -} - -function cwd () { return '/' } -function chdir (dir) { - throw new Error('process.chdir is not supported'); -}function umask() { return 0; } - -// from https://github.com/kumavis/browser-process-hrtime/blob/master/index.js -var performance = global$1.performance || {}; -var performanceNow = - performance.now || - performance.mozNow || - performance.msNow || - performance.oNow || - performance.webkitNow || - function(){ return (new Date()).getTime() }; - -// generate timestamp or delta -// see http://nodejs.org/api/process.html#process_process_hrtime -function hrtime(previousTimestamp){ - var clocktime = performanceNow.call(performance)*1e-3; - var seconds = Math.floor(clocktime); - var nanoseconds = Math.floor((clocktime%1)*1e9); - if (previousTimestamp) { - seconds = seconds - previousTimestamp[0]; - nanoseconds = nanoseconds - previousTimestamp[1]; - if (nanoseconds<0) { - seconds--; - nanoseconds += 1e9; - } - } - return [seconds,nanoseconds] -} - -var startTime = new Date(); -function uptime$1() { - var currentTime = new Date(); - var dif = currentTime - startTime; - return dif / 1000; -} - -var browser$1 = { - nextTick: nextTick, - title: title, - browser: browser, - env: env, - argv: argv, - version: version, - versions: versions, - on: on, - addListener: addListener, - once: once, - off: off, - removeListener: removeListener, - removeAllListeners: removeAllListeners, - emit: emit, - binding: binding, - cwd: cwd, - chdir: chdir, - umask: umask, - hrtime: hrtime, - platform: platform$1, - release: release$1, - config: config, - uptime: uptime$1 -}; - -var cleanExports = {}; -var clean$1 = { - get exports(){ return cleanExports; }, - set exports(v){ cleanExports = v; }, -}; - -function level0Optimize$1(tokens) { - // noop as level 0 means no optimizations! - return tokens; -} - -var optimize$4 = level0Optimize$1; - -// adapted from http://nedbatchelder.com/blog/200712.html#e20071211T054956 - -var NUMBER_PATTERN = /([0-9]+)/; - -function naturalCompare$1(value1, value2) { - var keys1 = ('' + value1).split(NUMBER_PATTERN).map(tryParseInt); - var keys2 = ('' + value2).split(NUMBER_PATTERN).map(tryParseInt); - var key1; - var key2; - var compareFirst = Math.min(keys1.length, keys2.length); - var i, l; - - for (i = 0, l = compareFirst; i < l; i++) { - key1 = keys1[i]; - key2 = keys2[i]; - - if (key1 != key2) { - return key1 > key2 ? 1 : -1; - } - } - - return keys1.length > keys2.length ? 1 : (keys1.length == keys2.length ? 0 : -1); -} - -function tryParseInt(value) { - return ('' + parseInt(value)) == value - ? parseInt(value) - : value; -} - -var naturalCompare_1 = naturalCompare$1; - -var naturalCompare = naturalCompare_1; - -function naturalSorter$1(scope1, scope2) { - return naturalCompare(scope1[1], scope2[1]); -} - -function standardSorter(scope1, scope2) { - return scope1[1] > scope2[1] ? 1 : -1; -} - -function sortSelectors$3(selectors, method) { - switch (method) { - case 'natural': - return selectors.sort(naturalSorter$1); - case 'standard': - return selectors.sort(standardSorter); - case 'none': - case false: - return selectors; - } -} - -var sortSelectors_1 = sortSelectors$3; - -/* -The MIT License (MIT) - -Copyright (c) 2016 CoderPuppy - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - -*/ -var _endianness; -function endianness() { - if (typeof _endianness === 'undefined') { - var a = new ArrayBuffer(2); - var b = new Uint8Array(a); - var c = new Uint16Array(a); - b[0] = 1; - b[1] = 2; - if (c[0] === 258) { - _endianness = 'BE'; - } else if (c[0] === 513){ - _endianness = 'LE'; - } else { - throw new Error('unable to figure out endianess'); - } - } - return _endianness; -} - -function hostname() { - if (typeof global$1.location !== 'undefined') { - return global$1.location.hostname - } else return ''; -} - -function loadavg() { - return []; -} - -function uptime() { - return 0; -} - -function freemem() { - return Number.MAX_VALUE; -} - -function totalmem() { - return Number.MAX_VALUE; -} - -function cpus() { - return []; -} - -function type() { - return 'Browser'; -} - -function release () { - if (typeof global$1.navigator !== 'undefined') { - return global$1.navigator.appVersion; - } - return ''; -} - -function networkInterfaces () { - return {}; -} - -function getNetworkInterfaces () { - return {}; -} - -function arch() { - return 'javascript'; -} - -function platform() { - return 'browser'; -} - -function tmpDir() { - return '/tmp'; -} -var tmpdir = tmpDir; - -var EOL = '\n'; - -function homedir(){ - return '$HOME' -} - -var _polyfillNode_os = { - homedir: homedir, - EOL: EOL, - arch: arch, - platform: platform, - tmpdir: tmpdir, - tmpDir: tmpDir, - networkInterfaces:networkInterfaces, - getNetworkInterfaces: getNetworkInterfaces, - release: release, - type: type, - cpus: cpus, - totalmem: totalmem, - freemem: freemem, - uptime: uptime, - loadavg: loadavg, - hostname: hostname, - endianness: endianness, -}; - -var _polyfillNode_os$1 = /*#__PURE__*/Object.freeze({ - __proto__: null, - EOL: EOL, - arch: arch, - cpus: cpus, - default: _polyfillNode_os, - endianness: endianness, - freemem: freemem, - getNetworkInterfaces: getNetworkInterfaces, - homedir: homedir, - hostname: hostname, - loadavg: loadavg, - networkInterfaces: networkInterfaces, - platform: platform, - release: release, - tmpDir: tmpDir, - tmpdir: tmpdir, - totalmem: totalmem, - type: type, - uptime: uptime -}); - -var require$$0$3 = /*@__PURE__*/getAugmentedNamespace(_polyfillNode_os$1); - -function override$7(source1, source2) { - var target = {}; - var key1; - var key2; - var item; - - for (key1 in source1) { - item = source1[key1]; - - if (Array.isArray(item)) { - target[key1] = item.slice(0); - } else if (typeof item == 'object' && item !== null) { - target[key1] = override$7(item, {}); - } else { - target[key1] = item; - } - } - - for (key2 in source2) { - item = source2[key2]; - - if (key2 in target && Array.isArray(item)) { - target[key2] = item.slice(0); - } else if (key2 in target && typeof item == 'object' && item !== null) { - target[key2] = override$7(target[key2], item); - } else { - target[key2] = item; - } - } - - return target; -} - -var override_1 = override$7; - -var systemLineBreak = require$$0$3.EOL; - -var override$6 = override_1; - -var Breaks$1 = { - AfterAtRule: 'afterAtRule', - AfterBlockBegins: 'afterBlockBegins', - AfterBlockEnds: 'afterBlockEnds', - AfterComment: 'afterComment', - AfterProperty: 'afterProperty', - AfterRuleBegins: 'afterRuleBegins', - AfterRuleEnds: 'afterRuleEnds', - BeforeBlockEnds: 'beforeBlockEnds', - BetweenSelectors: 'betweenSelectors' -}; - -var BreakWith = { - CarriageReturnLineFeed: '\r\n', - LineFeed: '\n', - System: systemLineBreak -}; - -var IndentWith = { - Space: ' ', - Tab: '\t' -}; - -var Spaces$2 = { - AroundSelectorRelation: 'aroundSelectorRelation', - BeforeBlockBegins: 'beforeBlockBegins', - BeforeValue: 'beforeValue' -}; - -var DEFAULTS$2 = { - breaks: breaks(false), - breakWith: BreakWith.System, - indentBy: 0, - indentWith: IndentWith.Space, - spaces: spaces(false), - wrapAt: false, - semicolonAfterLastProperty: false -}; - -var BEAUTIFY_ALIAS = 'beautify'; -var KEEP_BREAKS_ALIAS = 'keep-breaks'; - -var OPTION_SEPARATOR$1 = ';'; -var OPTION_NAME_VALUE_SEPARATOR = ':'; -var HASH_VALUES_OPTION_SEPARATOR = ','; -var HASH_VALUES_NAME_VALUE_SEPARATOR = '='; - -var FALSE_KEYWORD_1$1 = 'false'; -var FALSE_KEYWORD_2$1 = 'off'; -var TRUE_KEYWORD_1$1 = 'true'; -var TRUE_KEYWORD_2$1 = 'on'; - -function breaks(value) { - var breakOptions = {}; - - breakOptions[Breaks$1.AfterAtRule] = value; - breakOptions[Breaks$1.AfterBlockBegins] = value; - breakOptions[Breaks$1.AfterBlockEnds] = value; - breakOptions[Breaks$1.AfterComment] = value; - breakOptions[Breaks$1.AfterProperty] = value; - breakOptions[Breaks$1.AfterRuleBegins] = value; - breakOptions[Breaks$1.AfterRuleEnds] = value; - breakOptions[Breaks$1.BeforeBlockEnds] = value; - breakOptions[Breaks$1.BetweenSelectors] = value; - - return breakOptions; -} - -function spaces(value) { - var spaceOptions = {}; - - spaceOptions[Spaces$2.AroundSelectorRelation] = value; - spaceOptions[Spaces$2.BeforeBlockBegins] = value; - spaceOptions[Spaces$2.BeforeValue] = value; - - return spaceOptions; -} - -function formatFrom$1(source) { - if (source === undefined || source === false) { - return false; - } - - if (typeof source == 'object' && 'breakWith' in source) { - source = override$6(source, { breakWith: mapBreakWith(source.breakWith) }); - } - - if (typeof source == 'object' && 'indentBy' in source) { - source = override$6(source, { indentBy: parseInt(source.indentBy) }); - } - - if (typeof source == 'object' && 'indentWith' in source) { - source = override$6(source, { indentWith: mapIndentWith(source.indentWith) }); - } - - if (typeof source == 'object') { - return remapBreaks(override$6(DEFAULTS$2, source)); - } - - if (typeof source == 'string' && source == BEAUTIFY_ALIAS) { - return remapBreaks( - override$6(DEFAULTS$2, { - breaks: breaks(true), - indentBy: 2, - spaces: spaces(true) - }) - ); - } - - if (typeof source == 'string' && source == KEEP_BREAKS_ALIAS) { - return remapBreaks( - override$6(DEFAULTS$2, { - breaks: { - afterAtRule: true, - afterBlockBegins: true, - afterBlockEnds: true, - afterComment: true, - afterRuleEnds: true, - beforeBlockEnds: true - } - }) - ); - } - - if (typeof source == 'string') { - return remapBreaks(override$6(DEFAULTS$2, toHash(source))); - } - - return DEFAULTS$2; -} - -function toHash(string) { - return string - .split(OPTION_SEPARATOR$1) - .reduce(function(accumulator, directive) { - var parts = directive.split(OPTION_NAME_VALUE_SEPARATOR); - var name = parts[0]; - var value = parts[1]; - - if (name == 'breaks' || name == 'spaces') { - accumulator[name] = hashValuesToHash(value); - } else if (name == 'indentBy' || name == 'wrapAt') { - accumulator[name] = parseInt(value); - } else if (name == 'indentWith') { - accumulator[name] = mapIndentWith(value); - } else if (name == 'breakWith') { - accumulator[name] = mapBreakWith(value); - } - - return accumulator; - }, {}); -} - -function hashValuesToHash(string) { - return string - .split(HASH_VALUES_OPTION_SEPARATOR) - .reduce(function(accumulator, directive) { - var parts = directive.split(HASH_VALUES_NAME_VALUE_SEPARATOR); - var name = parts[0]; - var value = parts[1]; - - accumulator[name] = normalizeValue$1(value); - - return accumulator; - }, {}); -} - -function normalizeValue$1(value) { - switch (value) { - case FALSE_KEYWORD_1$1: - case FALSE_KEYWORD_2$1: - return false; - case TRUE_KEYWORD_1$1: - case TRUE_KEYWORD_2$1: - return true; - default: - return value; - } -} - -function mapBreakWith(value) { - switch (value) { - case 'windows': - case 'crlf': - case BreakWith.CarriageReturnLineFeed: - return BreakWith.CarriageReturnLineFeed; - case 'unix': - case 'lf': - case BreakWith.LineFeed: - return BreakWith.LineFeed; - default: - return systemLineBreak; - } -} - -function mapIndentWith(value) { - switch (value) { - case 'space': - return IndentWith.Space; - case 'tab': - return IndentWith.Tab; - default: - return value; - } -} - -function remapBreaks(source) { - for (var key in Breaks$1) { - var breakName = Breaks$1[key]; - var breakValue = source.breaks[breakName]; - - if (breakValue === true) { - source.breaks[breakName] = source.breakWith; - } else if (breakValue === false) { - source.breaks[breakName] = ''; - } else { - source.breaks[breakName] = source.breakWith.repeat(parseInt(breakValue)); - } - } - - return source; -} - -var format$3 = { - Breaks: Breaks$1, - Spaces: Spaces$2, - formatFrom: formatFrom$1 -}; - -var Marker$g = { - ASTERISK: '*', - AT: '@', - BACK_SLASH: '\\', - CARRIAGE_RETURN: '\r', - CLOSE_CURLY_BRACKET: '}', - CLOSE_ROUND_BRACKET: ')', - CLOSE_SQUARE_BRACKET: ']', - COLON: ':', - COMMA: ',', - DOUBLE_QUOTE: '"', - EXCLAMATION: '!', - FORWARD_SLASH: '/', - INTERNAL: '-clean-css-', - NEW_LINE_NIX: '\n', - OPEN_CURLY_BRACKET: '{', - OPEN_ROUND_BRACKET: '(', - OPEN_SQUARE_BRACKET: '[', - SEMICOLON: ';', - SINGLE_QUOTE: '\'', - SPACE: ' ', - TAB: '\t', - UNDERSCORE: '_' -}; - -var marker = Marker$g; - -function formatPosition$4(metadata) { - var line = metadata[0]; - var column = metadata[1]; - var source = metadata[2]; - - return source - ? source + ':' + line + ':' + column - : line + ':' + column; -} - -var formatPosition_1 = formatPosition$4; - -var Spaces$1 = format$3.Spaces; -var Marker$f = marker; -var formatPosition$3 = formatPosition_1; - -var CASE_ATTRIBUTE_PATTERN = /[\s"'][iI]\s*\]/; -var CASE_RESTORE_PATTERN = /([\d\w])([iI])\]/g; -var DOUBLE_QUOTE_CASE_PATTERN = /="([a-zA-Z][a-zA-Z\d\-_]+)"([iI])/g; -var DOUBLE_QUOTE_PATTERN = /="([a-zA-Z][a-zA-Z\d\-_]+)"(\s|\])/g; -var HTML_COMMENT_PATTERN = /^(?:(?:)\s*)+/; -var SINGLE_QUOTE_CASE_PATTERN = /='([a-zA-Z][a-zA-Z\d\-_]+)'([iI])/g; -var SINGLE_QUOTE_PATTERN = /='([a-zA-Z][a-zA-Z\d\-_]+)'(\s|\])/g; -var RELATION_PATTERN$1 = /[>+~]/; -var WHITESPACE_PATTERN$2 = /\s/; - -var ASTERISK_PLUS_HTML_HACK = '*+html '; -var ASTERISK_FIRST_CHILD_PLUS_HTML_HACK = '*:first-child+html '; -var LESS_THAN = '<'; - -var PSEUDO_CLASSES_WITH_SELECTORS = [ - ':current', - ':future', - ':has', - ':host', - ':host-context', - ':is', - ':not', - ':past', - ':where' -]; - -function hasInvalidCharacters(value) { - var isEscaped; - var isInvalid = false; - var character; - var isQuote = false; - var i, l; - - for (i = 0, l = value.length; i < l; i++) { - character = value[i]; - - if (isEscaped) ; else if (character == Marker$f.SINGLE_QUOTE || character == Marker$f.DOUBLE_QUOTE) { - isQuote = !isQuote; - } else if (!isQuote - && (character == Marker$f.CLOSE_CURLY_BRACKET - || character == Marker$f.EXCLAMATION - || character == LESS_THAN - || character == Marker$f.SEMICOLON) - ) { - isInvalid = true; - break; - } else if (!isQuote && i === 0 && RELATION_PATTERN$1.test(character)) { - isInvalid = true; - break; - } - - isEscaped = character == Marker$f.BACK_SLASH; - } - - return isInvalid; -} - -function removeWhitespace(value, format) { - var stripped = []; - var character; - var isNewLineNix; - var isNewLineWin; - var isEscaped; - var wasEscaped; - var isQuoted; - var isSingleQuoted; - var isDoubleQuoted; - var isAttribute; - var isRelation; - var isWhitespace; - var isSpaceAwarePseudoClass; - var roundBracketLevel = 0; - var wasComma = false; - var wasRelation = false; - var wasWhitespace = false; - var withCaseAttribute = CASE_ATTRIBUTE_PATTERN.test(value); - var spaceAroundRelation = format && format.spaces[Spaces$1.AroundSelectorRelation]; - var i, l; - - for (i = 0, l = value.length; i < l; i++) { - character = value[i]; - - isNewLineNix = character == Marker$f.NEW_LINE_NIX; - isNewLineWin = character == Marker$f.NEW_LINE_NIX && value[i - 1] == Marker$f.CARRIAGE_RETURN; - isQuoted = isSingleQuoted || isDoubleQuoted; - isRelation = !isAttribute && !isEscaped && roundBracketLevel === 0 && RELATION_PATTERN$1.test(character); - isWhitespace = WHITESPACE_PATTERN$2.test(character); - isSpaceAwarePseudoClass = roundBracketLevel == 1 && character == Marker$f.CLOSE_ROUND_BRACKET - ? false - : isSpaceAwarePseudoClass - || (roundBracketLevel === 0 && character == Marker$f.COLON && isPseudoClassWithSelectors(value, i)); - - if (wasEscaped && isQuoted && isNewLineWin) { - // swallow escaped new windows lines in comments - stripped.pop(); - stripped.pop(); - } else if (isEscaped && isQuoted && isNewLineNix) { - // swallow escaped new *nix lines in comments - stripped.pop(); - } else if (isEscaped) { - stripped.push(character); - } else if (character == Marker$f.OPEN_SQUARE_BRACKET && !isQuoted) { - stripped.push(character); - isAttribute = true; - } else if (character == Marker$f.CLOSE_SQUARE_BRACKET && !isQuoted) { - stripped.push(character); - isAttribute = false; - } else if (character == Marker$f.OPEN_ROUND_BRACKET && !isQuoted) { - stripped.push(character); - roundBracketLevel++; - } else if (character == Marker$f.CLOSE_ROUND_BRACKET && !isQuoted) { - stripped.push(character); - roundBracketLevel--; - } else if (character == Marker$f.SINGLE_QUOTE && !isQuoted) { - stripped.push(character); - isSingleQuoted = true; - } else if (character == Marker$f.DOUBLE_QUOTE && !isQuoted) { - stripped.push(character); - isDoubleQuoted = true; - } else if (character == Marker$f.SINGLE_QUOTE && isQuoted) { - stripped.push(character); - isSingleQuoted = false; - } else if (character == Marker$f.DOUBLE_QUOTE && isQuoted) { - stripped.push(character); - isDoubleQuoted = false; - } else if (isWhitespace && wasRelation && !spaceAroundRelation) { - continue; - } else if (!isWhitespace && wasRelation && spaceAroundRelation) { - stripped.push(Marker$f.SPACE); - stripped.push(character); - } else if (isWhitespace && !wasWhitespace && wasComma && roundBracketLevel > 0 && isSpaceAwarePseudoClass) ; else if (isWhitespace && !wasWhitespace && roundBracketLevel > 0 && isSpaceAwarePseudoClass) { - stripped.push(character); - } else if (isWhitespace && (isAttribute || roundBracketLevel > 0) && !isQuoted) ; else if (isWhitespace && wasWhitespace && !isQuoted) ; else if ((isNewLineWin || isNewLineNix) && (isAttribute || roundBracketLevel > 0) && isQuoted) ; else if (isRelation && wasWhitespace && !spaceAroundRelation) { - stripped.pop(); - stripped.push(character); - } else if (isRelation && !wasWhitespace && spaceAroundRelation) { - stripped.push(Marker$f.SPACE); - stripped.push(character); - } else if (isWhitespace) { - stripped.push(Marker$f.SPACE); - } else { - stripped.push(character); - } - - wasEscaped = isEscaped; - isEscaped = character == Marker$f.BACK_SLASH; - wasRelation = isRelation; - wasWhitespace = isWhitespace; - wasComma = character == Marker$f.COMMA; - } - - return withCaseAttribute - ? stripped.join('').replace(CASE_RESTORE_PATTERN, '$1 $2]') - : stripped.join(''); -} - -function isPseudoClassWithSelectors(value, colonPosition) { - var pseudoClass = value.substring(colonPosition, value.indexOf(Marker$f.OPEN_ROUND_BRACKET, colonPosition)); - - return PSEUDO_CLASSES_WITH_SELECTORS.indexOf(pseudoClass) > -1; -} - -function removeQuotes(value) { - if (value.indexOf('\'') == -1 && value.indexOf('"') == -1) { - return value; - } - - return value - .replace(SINGLE_QUOTE_CASE_PATTERN, '=$1 $2') - .replace(SINGLE_QUOTE_PATTERN, '=$1$2') - .replace(DOUBLE_QUOTE_CASE_PATTERN, '=$1 $2') - .replace(DOUBLE_QUOTE_PATTERN, '=$1$2'); -} - -function replacePseudoClasses(value) { - return value - .replace('nth-child(1)', 'first-child') - .replace('nth-of-type(1)', 'first-of-type') - .replace('nth-of-type(even)', 'nth-of-type(2n)') - .replace('nth-child(even)', 'nth-child(2n)') - .replace('nth-of-type(2n+1)', 'nth-of-type(odd)') - .replace('nth-child(2n+1)', 'nth-child(odd)') - .replace('nth-last-child(1)', 'last-child') - .replace('nth-last-of-type(1)', 'last-of-type') - .replace('nth-last-of-type(even)', 'nth-last-of-type(2n)') - .replace('nth-last-child(even)', 'nth-last-child(2n)') - .replace('nth-last-of-type(2n+1)', 'nth-last-of-type(odd)') - .replace('nth-last-child(2n+1)', 'nth-last-child(odd)'); -} - -function tidyRules$3(rules, removeUnsupported, adjacentSpace, format, warnings) { - var list = []; - var repeated = []; - - function removeHTMLComment(rule, match) { - warnings.push('HTML comment \'' + match + '\' at ' + formatPosition$3(rule[2][0]) + '. Removing.'); - return ''; - } - - for (var i = 0, l = rules.length; i < l; i++) { - var rule = rules[i]; - var reduced = rule[1]; - - reduced = reduced.replace(HTML_COMMENT_PATTERN, removeHTMLComment.bind(null, rule)); - - if (hasInvalidCharacters(reduced)) { - warnings.push('Invalid selector \'' + rule[1] + '\' at ' + formatPosition$3(rule[2][0]) + '. Ignoring.'); - continue; - } - - reduced = removeWhitespace(reduced, format); - reduced = removeQuotes(reduced); - - if (adjacentSpace && reduced.indexOf('nav') > 0) { - reduced = reduced.replace(/\+nav(\S|$)/, '+ nav$1'); - } - - if (removeUnsupported && reduced.indexOf(ASTERISK_PLUS_HTML_HACK) > -1) { - continue; - } - - if (removeUnsupported && reduced.indexOf(ASTERISK_FIRST_CHILD_PLUS_HTML_HACK) > -1) { - continue; - } - - if (reduced.indexOf('*') > -1) { - reduced = reduced - .replace(/\*([:#.[])/g, '$1') - .replace(/^(:first-child)?\+html/, '*$1+html'); - } - - if (repeated.indexOf(reduced) > -1) { - continue; - } - - reduced = replacePseudoClasses(reduced); - - rule[1] = reduced; - repeated.push(reduced); - list.push(rule); - } - - if (list.length == 1 && list[0][1].length === 0) { - warnings.push('Empty selector \'' + list[0][1] + '\' at ' + formatPosition$3(list[0][2][0]) + '. Ignoring.'); - list = []; - } - - return list; -} - -var tidyRules_1 = tidyRules$3; - -var SUPPORTED_COMPACT_BLOCK_MATCHER = /^@media\W/; -var SUPPORTED_QUOTE_REMOVAL_MATCHER = /^@(?:keyframes|-moz-keyframes|-o-keyframes|-webkit-keyframes)\W/; - -function tidyBlock$1(values, spaceAfterClosingBrace) { - var withoutSpaceAfterClosingBrace; - var withoutQuotes; - var i; - - for (i = values.length - 1; i >= 0; i--) { - withoutSpaceAfterClosingBrace = !spaceAfterClosingBrace && SUPPORTED_COMPACT_BLOCK_MATCHER.test(values[i][1]); - withoutQuotes = SUPPORTED_QUOTE_REMOVAL_MATCHER.test(values[i][1]); - - values[i][1] = values[i][1] - .replace(/\n|\r\n/g, ' ') - .replace(/\s+/g, ' ') - .replace(/(,|:|\() /g, '$1') - .replace(/ \)/g, ')'); - - if (withoutQuotes) { - values[i][1] = values[i][1] - .replace(/'([a-zA-Z][a-zA-Z\d\-_]+)'/, '$1') - .replace(/"([a-zA-Z][a-zA-Z\d\-_]+)"/, '$1'); - } - - if (withoutSpaceAfterClosingBrace) { - values[i][1] = values[i][1] - .replace(/\) /g, ')'); - } - } - - return values; -} - -var tidyBlock_1 = tidyBlock$1; - -function tidyAtRule$1(value) { - return value - .replace(/\s+/g, ' ') - .replace(/url\(\s+/g, 'url(') - .replace(/\s+\)/g, ')') - .trim(); -} - -var tidyAtRule_1 = tidyAtRule$1; - -var Hack$3 = { - ASTERISK: 'asterisk', - BANG: 'bang', - BACKSLASH: 'backslash', - UNDERSCORE: 'underscore' -}; - -var hack = Hack$3; - -function removeUnused$2(properties) { - for (var i = properties.length - 1; i >= 0; i--) { - var property = properties[i]; - - if (property.unused) { - property.all.splice(property.position, 1); - } - } -} - -var removeUnused_1 = removeUnused$2; - -var Hack$2 = hack; - -var Marker$e = marker; - -var ASTERISK_HACK = '*'; -var BACKSLASH_HACK = '\\'; -var IMPORTANT_TOKEN = '!important'; -var UNDERSCORE_HACK = '_'; -var BANG_HACK = '!ie'; - -function restoreFromOptimizing$5(properties, restoreCallback) { - var property; - var restored; - var current; - var i; - - for (i = properties.length - 1; i >= 0; i--) { - property = properties[i]; - - if (property.dynamic && property.important) { - restoreImportant(property); - continue; - } - - if (property.dynamic) { - continue; - } - - if (property.unused) { - continue; - } - - if (!property.dirty && !property.important && !property.hack) { - continue; - } - - if (property.optimizable && restoreCallback) { - restored = restoreCallback(property); - property.value = restored; - } else { - restored = property.value; - } - - if (property.important) { - restoreImportant(property); - } - - if (property.hack) { - restoreHack(property); - } - - if ('all' in property) { - current = property.all[property.position]; - current[1][1] = property.name; - - current.splice(2, current.length - 1); - Array.prototype.push.apply(current, restored); - } - } -} - -function restoreImportant(property) { - property.value[property.value.length - 1][1] += IMPORTANT_TOKEN; -} - -function restoreHack(property) { - if (property.hack[0] == Hack$2.UNDERSCORE) { - property.name = UNDERSCORE_HACK + property.name; - } else if (property.hack[0] == Hack$2.ASTERISK) { - property.name = ASTERISK_HACK + property.name; - } else if (property.hack[0] == Hack$2.BACKSLASH) { - property.value[property.value.length - 1][1] += BACKSLASH_HACK + property.hack[1]; - } else if (property.hack[0] == Hack$2.BANG) { - property.value[property.value.length - 1][1] += Marker$e.SPACE + BANG_HACK; - } -} - -var restoreFromOptimizing_1 = restoreFromOptimizing$5; - -var Token$o = { - AT_RULE: 'at-rule', // e.g. `@import`, `@charset` - AT_RULE_BLOCK: 'at-rule-block', // e.g. `@font-face{...}` - AT_RULE_BLOCK_SCOPE: 'at-rule-block-scope', // e.g. `@font-face` - COMMENT: 'comment', // e.g. `/* comment */` - NESTED_BLOCK: 'nested-block', // e.g. `@media screen{...}`, `@keyframes animation {...}` - NESTED_BLOCK_SCOPE: 'nested-block-scope', // e.g. `@media`, `@keyframes` - PROPERTY: 'property', // e.g. `color:red` - PROPERTY_BLOCK: 'property-block', // e.g. `--var:{color:red}` - PROPERTY_NAME: 'property-name', // e.g. `color` - PROPERTY_VALUE: 'property-value', // e.g. `red` - RAW: 'raw', // e.g. anything between /* clean-css ignore:start */ and /* clean-css ignore:end */ comments - RULE: 'rule', // e.g `div > a{...}` - RULE_SCOPE: 'rule-scope' // e.g `div > a` -}; - -var token = Token$o; - -var Hack$1 = hack; - -var Marker$d = marker; -var Token$n = token; - -var Match = { - ASTERISK: '*', - BACKSLASH: '\\', - BANG: '!', - BANG_SUFFIX_PATTERN: /!\w+$/, - IMPORTANT_TOKEN: '!important', - IMPORTANT_TOKEN_PATTERN: new RegExp('!important$', 'i'), - IMPORTANT_WORD: 'important', - IMPORTANT_WORD_PATTERN: new RegExp('important$', 'i'), - SUFFIX_BANG_PATTERN: /!$/, - UNDERSCORE: '_', - VARIABLE_REFERENCE_PATTERN: /var\(--.+\)$/ -}; - -function wrapAll(properties, skipProperties) { - var wrapped = []; - var single; - var property; - var i; - - for (i = properties.length - 1; i >= 0; i--) { - property = properties[i]; - - if (property[0] != Token$n.PROPERTY) { - continue; - } - - if (skipProperties && skipProperties.indexOf(property[1][1]) > -1) { - continue; - } - - single = wrapSingle$3(property); - single.all = properties; - single.position = i; - wrapped.unshift(single); - } - - return wrapped; -} - -function someVariableReferences(property) { - var i, l; - var value; - - // skipping `property` and property name tokens - for (i = 2, l = property.length; i < l; i++) { - value = property[i]; - - if (value[0] != Token$n.PROPERTY_VALUE) { - continue; - } - - if (isVariableReference(value[1])) { - return true; - } - } - - return false; -} - -function isVariableReference(value) { - return Match.VARIABLE_REFERENCE_PATTERN.test(value); -} - -function isMultiplex(property) { - var value; - var i, l; - - for (i = 3, l = property.length; i < l; i++) { - value = property[i]; - - if (value[0] == Token$n.PROPERTY_VALUE && (value[1] == Marker$d.COMMA || value[1] == Marker$d.FORWARD_SLASH)) { - return true; - } - } - - return false; -} - -function hackFrom(property) { - var match = false; - var name = property[1][1]; - var lastValue = property[property.length - 1]; - - if (name[0] == Match.UNDERSCORE) { - match = [Hack$1.UNDERSCORE]; - } else if (name[0] == Match.ASTERISK) { - match = [Hack$1.ASTERISK]; - } else if (lastValue[1][0] == Match.BANG && !lastValue[1].match(Match.IMPORTANT_WORD_PATTERN)) { - match = [Hack$1.BANG]; - } else if (lastValue[1].indexOf(Match.BANG) > 0 - && !lastValue[1].match(Match.IMPORTANT_WORD_PATTERN) - && Match.BANG_SUFFIX_PATTERN.test(lastValue[1])) { - match = [Hack$1.BANG]; - } else if (lastValue[1].indexOf(Match.BACKSLASH) > 0 - && lastValue[1].indexOf(Match.BACKSLASH) == lastValue[1].length - Match.BACKSLASH.length - 1) { - match = [Hack$1.BACKSLASH, lastValue[1].substring(lastValue[1].indexOf(Match.BACKSLASH) + 1)]; - } else if (lastValue[1].indexOf(Match.BACKSLASH) === 0 && lastValue[1].length == 2) { - match = [Hack$1.BACKSLASH, lastValue[1].substring(1)]; - } - - return match; -} - -function isImportant(property) { - if (property.length < 3) { return false; } - - var lastValue = property[property.length - 1]; - if (Match.IMPORTANT_TOKEN_PATTERN.test(lastValue[1])) { - return true; - } if (Match.IMPORTANT_WORD_PATTERN.test(lastValue[1]) - && Match.SUFFIX_BANG_PATTERN.test(property[property.length - 2][1])) { - return true; - } - - return false; -} - -function stripImportant(property) { - var lastValue = property[property.length - 1]; - var oneButLastValue = property[property.length - 2]; - - if (Match.IMPORTANT_TOKEN_PATTERN.test(lastValue[1])) { - lastValue[1] = lastValue[1].replace(Match.IMPORTANT_TOKEN_PATTERN, ''); - } else { - lastValue[1] = lastValue[1].replace(Match.IMPORTANT_WORD_PATTERN, ''); - oneButLastValue[1] = oneButLastValue[1].replace(Match.SUFFIX_BANG_PATTERN, ''); - } - - if (lastValue[1].length === 0) { - property.pop(); - } - - if (oneButLastValue[1].length === 0) { - property.pop(); - } -} - -function stripPrefixHack(property) { - property[1][1] = property[1][1].substring(1); -} - -function stripSuffixHack(property, hackFrom) { - var lastValue = property[property.length - 1]; - lastValue[1] = lastValue[1] - .substring(0, lastValue[1].indexOf(hackFrom[0] == Hack$1.BACKSLASH ? Match.BACKSLASH : Match.BANG)) - .trim(); - - if (lastValue[1].length === 0) { - property.pop(); - } -} - -function wrapSingle$3(property) { - var importantProperty = isImportant(property); - if (importantProperty) { - stripImportant(property); - } - - var whichHack = hackFrom(property); - if (whichHack[0] == Hack$1.ASTERISK || whichHack[0] == Hack$1.UNDERSCORE) { - stripPrefixHack(property); - } else if (whichHack[0] == Hack$1.BACKSLASH || whichHack[0] == Hack$1.BANG) { - stripSuffixHack(property, whichHack); - } - - return { - block: property[2] && property[2][0] == Token$n.PROPERTY_BLOCK, - components: [], - dirty: false, - dynamic: someVariableReferences(property), - hack: whichHack, - important: importantProperty, - name: property[1][1], - multiplex: property.length > 3 ? isMultiplex(property) : false, - optimizable: true, - position: 0, - shorthand: false, - unused: false, - value: property.slice(2) - }; -} - -var wrapForOptimizing$3 = { - all: wrapAll, - single: wrapSingle$3 -}; - -function InvalidPropertyError$2(message) { - this.name = 'InvalidPropertyError'; - this.message = message; - this.stack = (new Error()).stack; -} - -InvalidPropertyError$2.prototype = Object.create(Error.prototype); -InvalidPropertyError$2.prototype.constructor = InvalidPropertyError$2; - -var invalidPropertyError = InvalidPropertyError$2; - -var InvalidPropertyError$1 = invalidPropertyError; - -var wrapSingle$2 = wrapForOptimizing$3.single; - -var Token$m = token; -var Marker$c = marker; - -var formatPosition$2 = formatPosition_1; - -function _anyIsInherit(values) { - var i, l; - - for (i = 0, l = values.length; i < l; i++) { - if (values[i][1] == 'inherit') { - return true; - } - } - - return false; -} - -function _colorFilter(validator) { - return function(value) { - return value[1] == 'invert' || validator.isColor(value[1]) || validator.isPrefixed(value[1]); - }; -} - -function _styleFilter(validator) { - return function(value) { - return value[1] != 'inherit' && validator.isStyleKeyword(value[1]) && !validator.isColorFunction(value[1]); - }; -} - -function _wrapDefault(name, property, configuration) { - var descriptor = configuration[name]; - if (descriptor.doubleValues && descriptor.defaultValue.length == 2) { - return wrapSingle$2([ - Token$m.PROPERTY, - [Token$m.PROPERTY_NAME, name], - [Token$m.PROPERTY_VALUE, descriptor.defaultValue[0]], - [Token$m.PROPERTY_VALUE, descriptor.defaultValue[1]] - ]); - } if (descriptor.doubleValues && descriptor.defaultValue.length == 1) { - return wrapSingle$2([ - Token$m.PROPERTY, - [Token$m.PROPERTY_NAME, name], - [Token$m.PROPERTY_VALUE, descriptor.defaultValue[0]] - ]); - } - return wrapSingle$2([ - Token$m.PROPERTY, - [Token$m.PROPERTY_NAME, name], - [Token$m.PROPERTY_VALUE, descriptor.defaultValue] - ]); -} - -function _widthFilter(validator) { - return function(value) { - return value[1] != 'inherit' - && (validator.isWidth(value[1]) || validator.isUnit(value[1]) || validator.isDynamicUnit(value[1])) - && !validator.isStyleKeyword(value[1]) - && !validator.isColorFunction(value[1]); - }; -} - -function animation(property, configuration, validator) { - var duration = _wrapDefault(property.name + '-duration', property, configuration); - var timing = _wrapDefault(property.name + '-timing-function', property, configuration); - var delay = _wrapDefault(property.name + '-delay', property, configuration); - var iteration = _wrapDefault(property.name + '-iteration-count', property, configuration); - var direction = _wrapDefault(property.name + '-direction', property, configuration); - var fill = _wrapDefault(property.name + '-fill-mode', property, configuration); - var play = _wrapDefault(property.name + '-play-state', property, configuration); - var name = _wrapDefault(property.name + '-name', property, configuration); - var components = [duration, timing, delay, iteration, direction, fill, play, name]; - var values = property.value; - var value; - var durationSet = false; - var timingSet = false; - var delaySet = false; - var iterationSet = false; - var directionSet = false; - var fillSet = false; - var playSet = false; - var nameSet = false; - var i; - var l; - - if (property.value.length == 1 && property.value[0][1] == 'inherit') { - // eslint-disable-next-line max-len - duration.value = timing.value = delay.value = iteration.value = direction.value = fill.value = play.value = name.value = property.value; - return components; - } - - if (values.length > 1 && _anyIsInherit(values)) { - throw new InvalidPropertyError$1('Invalid animation values at ' + formatPosition$2(values[0][2][0]) + '. Ignoring.'); - } - - for (i = 0, l = values.length; i < l; i++) { - value = values[i]; - - if (validator.isTime(value[1]) && !durationSet) { - duration.value = [value]; - durationSet = true; - } else if (validator.isTime(value[1]) && !delaySet) { - delay.value = [value]; - delaySet = true; - } else if ((validator.isGlobal(value[1]) || validator.isTimingFunction(value[1])) && !timingSet) { - timing.value = [value]; - timingSet = true; - } else if ((validator.isAnimationIterationCountKeyword(value[1]) - || validator.isPositiveNumber(value[1])) - && !iterationSet) { - iteration.value = [value]; - iterationSet = true; - } else if (validator.isAnimationDirectionKeyword(value[1]) && !directionSet) { - direction.value = [value]; - directionSet = true; - } else if (validator.isAnimationFillModeKeyword(value[1]) && !fillSet) { - fill.value = [value]; - fillSet = true; - } else if (validator.isAnimationPlayStateKeyword(value[1]) && !playSet) { - play.value = [value]; - playSet = true; - } else if ((validator.isAnimationNameKeyword(value[1]) || validator.isIdentifier(value[1])) && !nameSet) { - name.value = [value]; - nameSet = true; - } else { - throw new InvalidPropertyError$1('Invalid animation value at ' + formatPosition$2(value[2][0]) + '. Ignoring.'); - } - } - - return components; -} - -function background$2(property, configuration, validator) { - var image = _wrapDefault('background-image', property, configuration); - var position = _wrapDefault('background-position', property, configuration); - var size = _wrapDefault('background-size', property, configuration); - var repeat = _wrapDefault('background-repeat', property, configuration); - var attachment = _wrapDefault('background-attachment', property, configuration); - var origin = _wrapDefault('background-origin', property, configuration); - var clip = _wrapDefault('background-clip', property, configuration); - var color = _wrapDefault('background-color', property, configuration); - var components = [image, position, size, repeat, attachment, origin, clip, color]; - var values = property.value; - - var positionSet = false; - var clipSet = false; - var originSet = false; - var repeatSet = false; - - var anyValueSet = false; - - if (property.value.length == 1 && property.value[0][1] == 'inherit') { - // NOTE: 'inherit' is not a valid value for background-attachment - color.value = image.value = repeat.value = position.value = size.value = origin.value = clip.value = property.value; - return components; - } - - if (property.value.length == 1 && property.value[0][1] == '0 0') { - return components; - } - - for (var i = values.length - 1; i >= 0; i--) { - var value = values[i]; - - if (validator.isBackgroundAttachmentKeyword(value[1])) { - attachment.value = [value]; - anyValueSet = true; - } else if (validator.isBackgroundClipKeyword(value[1]) || validator.isBackgroundOriginKeyword(value[1])) { - if (clipSet) { - origin.value = [value]; - originSet = true; - } else { - clip.value = [value]; - clipSet = true; - } - anyValueSet = true; - } else if (validator.isBackgroundRepeatKeyword(value[1])) { - if (repeatSet) { - repeat.value.unshift(value); - } else { - repeat.value = [value]; - repeatSet = true; - } - anyValueSet = true; - } else if (validator.isBackgroundPositionKeyword(value[1]) - || validator.isBackgroundSizeKeyword(value[1]) - || validator.isUnit(value[1]) - || validator.isDynamicUnit(value[1])) { - if (i > 0) { - var previousValue = values[i - 1]; - - if (previousValue[1] == Marker$c.FORWARD_SLASH) { - size.value = [value]; - } else if (i > 1 && values[i - 2][1] == Marker$c.FORWARD_SLASH) { - size.value = [previousValue, value]; - i -= 2; - } else { - if (!positionSet) { position.value = []; } - - position.value.unshift(value); - positionSet = true; - } - } else { - if (!positionSet) { position.value = []; } - - position.value.unshift(value); - positionSet = true; - } - anyValueSet = true; - } else if ((color.value[0][1] == configuration[color.name].defaultValue || color.value[0][1] == 'none') && (validator.isColor(value[1]) || validator.isPrefixed(value[1]))) { - color.value = [value]; - anyValueSet = true; - } else if (validator.isUrl(value[1]) || validator.isFunction(value[1])) { - image.value = [value]; - anyValueSet = true; - } - } - - if (clipSet && !originSet) { origin.value = clip.value.slice(0); } - - if (!anyValueSet) { - throw new InvalidPropertyError$1('Invalid background value at ' + formatPosition$2(values[0][2][0]) + '. Ignoring.'); - } - - return components; -} - -function borderRadius$2(property, configuration) { - var values = property.value; - var splitAt = -1; - - for (var i = 0, l = values.length; i < l; i++) { - if (values[i][1] == Marker$c.FORWARD_SLASH) { - splitAt = i; - break; - } - } - - if (splitAt === 0 || splitAt === values.length - 1) { - throw new InvalidPropertyError$1('Invalid border-radius value at ' + formatPosition$2(values[0][2][0]) + '. Ignoring.'); - } - - var target = _wrapDefault(property.name, property, configuration); - target.value = splitAt > -1 - ? values.slice(0, splitAt) - : values.slice(0); - target.components = fourValues$1(target, configuration); - - var remainder = _wrapDefault(property.name, property, configuration); - remainder.value = splitAt > -1 - ? values.slice(splitAt + 1) - : values.slice(0); - remainder.components = fourValues$1(remainder, configuration); - - for (var j = 0; j < 4; j++) { - target.components[j].multiplex = true; - target.components[j].value = target.components[j].value.concat(remainder.components[j].value); - } - - return target.components; -} - -function font$1(property, configuration, validator) { - var style = _wrapDefault('font-style', property, configuration); - var variant = _wrapDefault('font-variant', property, configuration); - var weight = _wrapDefault('font-weight', property, configuration); - var stretch = _wrapDefault('font-stretch', property, configuration); - var size = _wrapDefault('font-size', property, configuration); - var height = _wrapDefault('line-height', property, configuration); - var family = _wrapDefault('font-family', property, configuration); - var components = [style, variant, weight, stretch, size, height, family]; - var values = property.value; - var fuzzyMatched = 4; // style, variant, weight, and stretch - var index = 0; - var isStretchSet = false; - var isStretchValid; - var isStyleSet = false; - var isStyleValid; - var isVariantSet = false; - var isVariantValid; - var isWeightSet = false; - var isWeightValid; - var appendableFamilyName = false; - - if (!values[index]) { - throw new InvalidPropertyError$1('Missing font values at ' + formatPosition$2(property.all[property.position][1][2][0]) + '. Ignoring.'); - } - - if (values.length == 1 && values[0][1] == 'inherit') { - style.value = variant.value = weight.value = stretch.value = size.value = height.value = family.value = values; - return components; - } - - if (values.length == 1 - && (validator.isFontKeyword(values[0][1]) - || validator.isGlobal(values[0][1]) - || validator.isPrefixed(values[0][1])) - ) { - values[0][1] = Marker$c.INTERNAL + values[0][1]; - style.value = variant.value = weight.value = stretch.value = size.value = height.value = family.value = values; - return components; - } - - if (values.length < 2 || !_anyIsFontSize(values, validator) || !_anyIsFontFamily(values, validator)) { - throw new InvalidPropertyError$1('Invalid font values at ' + formatPosition$2(property.all[property.position][1][2][0]) + '. Ignoring.'); - } - - if (values.length > 1 && _anyIsInherit(values)) { - throw new InvalidPropertyError$1('Invalid font values at ' + formatPosition$2(values[0][2][0]) + '. Ignoring.'); - } - - // fuzzy match style, variant, weight, and stretch on first elements - while (index < fuzzyMatched) { - isStretchValid = validator.isFontStretchKeyword(values[index][1]) || validator.isGlobal(values[index][1]); - isStyleValid = validator.isFontStyleKeyword(values[index][1]) || validator.isGlobal(values[index][1]); - isVariantValid = validator.isFontVariantKeyword(values[index][1]) || validator.isGlobal(values[index][1]); - isWeightValid = validator.isFontWeightKeyword(values[index][1]) || validator.isGlobal(values[index][1]); - - if (isStyleValid && !isStyleSet) { - style.value = [values[index]]; - isStyleSet = true; - } else if (isVariantValid && !isVariantSet) { - variant.value = [values[index]]; - isVariantSet = true; - } else if (isWeightValid && !isWeightSet) { - weight.value = [values[index]]; - isWeightSet = true; - } else if (isStretchValid && !isStretchSet) { - stretch.value = [values[index]]; - isStretchSet = true; - } else if (isStyleValid - && isStyleSet - || isVariantValid - && isVariantSet - || isWeightValid - && isWeightSet - || isStretchValid - && isStretchSet) { - throw new InvalidPropertyError$1('Invalid font style / variant / weight / stretch value at ' + formatPosition$2(values[0][2][0]) + '. Ignoring.'); - } else { - break; - } - - index++; - } - - // now comes font-size ... - if (validator.isFontSizeKeyword(values[index][1]) - || validator.isUnit(values[index][1]) - && !validator.isDynamicUnit(values[index][1])) { - size.value = [values[index]]; - index++; - } else { - throw new InvalidPropertyError$1('Missing font size at ' + formatPosition$2(values[0][2][0]) + '. Ignoring.'); - } - - if (!values[index]) { - throw new InvalidPropertyError$1('Missing font family at ' + formatPosition$2(values[0][2][0]) + '. Ignoring.'); - } - - // ... and perhaps line-height - if (values[index] - && values[index][1] == Marker$c.FORWARD_SLASH - && values[index + 1] - && (validator.isLineHeightKeyword(values[index + 1][1]) - || validator.isUnit(values[index + 1][1]) - || validator.isNumber(values[index + 1][1]))) { - height.value = [values[index + 1]]; - index++; - index++; - } - - // ... and whatever comes next is font-family - family.value = []; - - while (values[index]) { - if (values[index][1] == Marker$c.COMMA) { - appendableFamilyName = false; - } else { - if (appendableFamilyName) { - family.value[family.value.length - 1][1] += Marker$c.SPACE + values[index][1]; - } else { - family.value.push(values[index]); - } - - appendableFamilyName = true; - } - - index++; - } - - if (family.value.length === 0) { - throw new InvalidPropertyError$1('Missing font family at ' + formatPosition$2(values[0][2][0]) + '. Ignoring.'); - } - - return components; -} - -function _anyIsFontSize(values, validator) { - var value; - var i, l; - - for (i = 0, l = values.length; i < l; i++) { - value = values[i]; - - if (validator.isFontSizeKeyword(value[1]) - || validator.isUnit(value[1]) - && !validator.isDynamicUnit(value[1]) - || validator.isFunction(value[1])) { - return true; - } - } - - return false; -} - -function _anyIsFontFamily(values, validator) { - var value; - var i, l; - - for (i = 0, l = values.length; i < l; i++) { - value = values[i]; - - if (validator.isIdentifier(value[1]) || validator.isQuotedText(value[1])) { - return true; - } - } - - return false; -} - -function fourValues$1(property, configuration) { - var componentNames = configuration[property.name].components; - var components = []; - var value = property.value; - - if (value.length < 1) { return []; } - - if (value.length < 2) { value[1] = value[0].slice(0); } - if (value.length < 3) { value[2] = value[0].slice(0); } - if (value.length < 4) { value[3] = value[1].slice(0); } - - for (var i = componentNames.length - 1; i >= 0; i--) { - var component = wrapSingle$2([ - Token$m.PROPERTY, - [Token$m.PROPERTY_NAME, componentNames[i]] - ]); - component.value = [value[i]]; - components.unshift(component); - } - - return components; -} - -function multiplex$1(splitWith) { - return function(property, configuration, validator) { - var splitsAt = []; - var values = property.value; - var i, j, l, m; - - // find split commas - for (i = 0, l = values.length; i < l; i++) { - if (values[i][1] == ',') { splitsAt.push(i); } - } - - if (splitsAt.length === 0) { return splitWith(property, configuration, validator); } - - var splitComponents = []; - - // split over commas, and into components - for (i = 0, l = splitsAt.length; i <= l; i++) { - var from = i === 0 ? 0 : splitsAt[i - 1] + 1; - var to = i < l ? splitsAt[i] : values.length; - - var _property = _wrapDefault(property.name, property, configuration); - _property.value = values.slice(from, to); - - if (_property.value.length > 0) { - splitComponents.push(splitWith(_property, configuration, validator)); - } - } - - var components = splitComponents[0]; - - // group component values from each split - for (i = 0, l = components.length; i < l; i++) { - components[i].multiplex = true; - - for (j = 1, m = splitComponents.length; j < m; j++) { - components[i].value.push([Token$m.PROPERTY_VALUE, Marker$c.COMMA]); - Array.prototype.push.apply(components[i].value, splitComponents[j][i].value); - } - } - - return components; - }; -} - -function listStyle(property, configuration, validator) { - var type = _wrapDefault('list-style-type', property, configuration); - var position = _wrapDefault('list-style-position', property, configuration); - var image = _wrapDefault('list-style-image', property, configuration); - var components = [type, position, image]; - - if (property.value.length == 1 && property.value[0][1] == 'inherit') { - type.value = position.value = image.value = [property.value[0]]; - return components; - } - - var values = property.value.slice(0); - var total = values.length; - var index = 0; - - // `image` first... - for (index = 0, total = values.length; index < total; index++) { - if (validator.isUrl(values[index][1]) || values[index][1] == '0') { - image.value = [values[index]]; - values.splice(index, 1); - break; - } - } - - // ... then `position` - for (index = 0, total = values.length; index < total; index++) { - if (validator.isListStylePositionKeyword(values[index][1])) { - position.value = [values[index]]; - values.splice(index, 1); - break; - } - } - - // ... and what's left is a `type` - if (values.length > 0 && (validator.isListStyleTypeKeyword(values[0][1]) || validator.isIdentifier(values[0][1]))) { - type.value = [values[0]]; - } - - return components; -} - -function transition(property, configuration, validator) { - var prop = _wrapDefault(property.name + '-property', property, configuration); - var duration = _wrapDefault(property.name + '-duration', property, configuration); - var timing = _wrapDefault(property.name + '-timing-function', property, configuration); - var delay = _wrapDefault(property.name + '-delay', property, configuration); - var components = [prop, duration, timing, delay]; - var values = property.value; - var value; - var durationSet = false; - var delaySet = false; - var propSet = false; - var timingSet = false; - var i; - var l; - - if (property.value.length == 1 && property.value[0][1] == 'inherit') { - prop.value = duration.value = timing.value = delay.value = property.value; - return components; - } - - if (values.length > 1 && _anyIsInherit(values)) { - throw new InvalidPropertyError$1('Invalid animation values at ' + formatPosition$2(values[0][2][0]) + '. Ignoring.'); - } - - for (i = 0, l = values.length; i < l; i++) { - value = values[i]; - - if (validator.isTime(value[1]) && !durationSet) { - duration.value = [value]; - durationSet = true; - } else if (validator.isTime(value[1]) && !delaySet) { - delay.value = [value]; - delaySet = true; - } else if ((validator.isGlobal(value[1]) || validator.isTimingFunction(value[1])) && !timingSet) { - timing.value = [value]; - timingSet = true; - } else if (validator.isIdentifier(value[1]) && !propSet) { - prop.value = [value]; - propSet = true; - } else { - throw new InvalidPropertyError$1('Invalid animation value at ' + formatPosition$2(value[2][0]) + '. Ignoring.'); - } - } - - return components; -} - -function widthStyleColor(property, configuration, validator) { - var descriptor = configuration[property.name]; - var components = [ - _wrapDefault(descriptor.components[0], property, configuration), - _wrapDefault(descriptor.components[1], property, configuration), - _wrapDefault(descriptor.components[2], property, configuration) - ]; - var color, style, width; - - for (var i = 0; i < 3; i++) { - var component = components[i]; - - if (component.name.indexOf('color') > 0) { color = component; } else if (component.name.indexOf('style') > 0) { style = component; } else { width = component; } - } - - if ((property.value.length == 1 && property.value[0][1] == 'inherit') - || (property.value.length == 3 && property.value[0][1] == 'inherit' && property.value[1][1] == 'inherit' && property.value[2][1] == 'inherit')) { - color.value = style.value = width.value = [property.value[0]]; - return components; - } - - var values = property.value.slice(0); - var match, matches; - - // NOTE: usually users don't follow the required order of parts in this shorthand, - // so we'll try to parse it caring as little about order as possible - - if (values.length > 0) { - matches = values.filter(_widthFilter(validator)); - match = matches.length > 1 && (matches[0][1] == 'none' || matches[0][1] == 'auto') ? matches[1] : matches[0]; - if (match) { - width.value = [match]; - values.splice(values.indexOf(match), 1); - } - } - - if (values.length > 0) { - match = values.filter(_styleFilter(validator))[0]; - if (match) { - style.value = [match]; - values.splice(values.indexOf(match), 1); - } - } - - if (values.length > 0) { - match = values.filter(_colorFilter(validator))[0]; - if (match) { - color.value = [match]; - values.splice(values.indexOf(match), 1); - } - } - - return components; -} - -var breakUp$1 = { - animation: animation, - background: background$2, - border: widthStyleColor, - borderRadius: borderRadius$2, - font: font$1, - fourValues: fourValues$1, - listStyle: listStyle, - multiplex: multiplex$1, - outline: widthStyleColor, - transition: transition -}; - -var VENDOR_PREFIX_PATTERN = /(?:^|\W)(-\w+-)/g; - -function unique(value) { - var prefixes = []; - var match; - - // eslint-disable-next-line no-cond-assign - while ((match = VENDOR_PREFIX_PATTERN.exec(value)) !== null) { - if (prefixes.indexOf(match[0]) == -1) { - prefixes.push(match[0]); - } - } - - return prefixes; -} - -function same(value1, value2) { - return unique(value1).sort().join(',') == unique(value2).sort().join(','); -} - -var vendorPrefixes = { - unique: unique, - same: same -}; - -var sameVendorPrefixes = vendorPrefixes.same; - -function understandable$1(validator, value1, value2, _position, isPaired) { - if (!sameVendorPrefixes(value1, value2)) { - return false; - } - - if (isPaired && validator.isVariable(value1) !== validator.isVariable(value2)) { - return false; - } - - return true; -} - -var understandable_1 = understandable$1; - -var understandable = understandable_1; - -function animationIterationCount(validator, value1, value2) { - if (!understandable(validator, value1, value2, 0, true) - && !(validator.isAnimationIterationCountKeyword(value2) || validator.isPositiveNumber(value2))) { - return false; - } if (validator.isVariable(value1) && validator.isVariable(value2)) { - return true; - } - - return validator.isAnimationIterationCountKeyword(value2) || validator.isPositiveNumber(value2); -} - -function animationName(validator, value1, value2) { - if (!understandable(validator, value1, value2, 0, true) - && !(validator.isAnimationNameKeyword(value2) || validator.isIdentifier(value2))) { - return false; - } if (validator.isVariable(value1) && validator.isVariable(value2)) { - return true; - } - - return validator.isAnimationNameKeyword(value2) || validator.isIdentifier(value2); -} - -function areSameFunction(validator, value1, value2) { - if (!validator.isFunction(value1) || !validator.isFunction(value2)) { - return false; - } - - var function1Name = value1.substring(0, value1.indexOf('(')); - var function2Name = value2.substring(0, value2.indexOf('(')); - - var function1Value = value1.substring(function1Name.length + 1, value1.length - 1); - var function2Value = value2.substring(function2Name.length + 1, value2.length - 1); - - if (validator.isFunction(function1Value) || validator.isFunction(function2Value)) { - return function1Name === function2Name && areSameFunction(validator, function1Value, function2Value); - } - return function1Name === function2Name; -} - -function backgroundPosition(validator, value1, value2) { - if (!understandable(validator, value1, value2, 0, true) - && !(validator.isBackgroundPositionKeyword(value2) || validator.isGlobal(value2))) { - return false; - } if (validator.isVariable(value1) && validator.isVariable(value2)) { - return true; - } if (validator.isBackgroundPositionKeyword(value2) || validator.isGlobal(value2)) { - return true; - } - - return unit$1(validator, value1, value2); -} - -function backgroundSize(validator, value1, value2) { - if (!understandable(validator, value1, value2, 0, true) - && !(validator.isBackgroundSizeKeyword(value2) || validator.isGlobal(value2))) { - return false; - } if (validator.isVariable(value1) && validator.isVariable(value2)) { - return true; - } if (validator.isBackgroundSizeKeyword(value2) || validator.isGlobal(value2)) { - return true; - } - - return unit$1(validator, value1, value2); -} - -function color$1(validator, value1, value2) { - if (!understandable(validator, value1, value2, 0, true) && !validator.isColor(value2)) { - return false; - } if (validator.isVariable(value1) && validator.isVariable(value2)) { - return true; - } if (!validator.colorOpacity && (validator.isRgbColor(value1) || validator.isHslColor(value1))) { - return false; - } if (!validator.colorOpacity && (validator.isRgbColor(value2) || validator.isHslColor(value2))) { - return false; - } if (!validator.colorHexAlpha && (validator.isHexAlphaColor(value1) || validator.isHexAlphaColor(value2))) { - return false; - } if (validator.isColor(value1) && validator.isColor(value2)) { - return true; - } - - return sameFunctionOrValue(validator, value1, value2); -} - -function components(overrideCheckers) { - return function(validator, value1, value2, position) { - return overrideCheckers[position](validator, value1, value2); - }; -} - -function fontFamily(validator, value1, value2) { - return understandable(validator, value1, value2, 0, true); -} - -function image(validator, value1, value2) { - if (!understandable(validator, value1, value2, 0, true) && !validator.isImage(value2)) { - return false; - } if (validator.isVariable(value1) && validator.isVariable(value2)) { - return true; - } if (validator.isImage(value2)) { - return true; - } if (validator.isImage(value1)) { - return false; - } - - return sameFunctionOrValue(validator, value1, value2); -} - -function keyword(propertyName) { - return function(validator, value1, value2) { - if (!understandable(validator, value1, value2, 0, true) && !validator.isKeyword(propertyName)(value2)) { - return false; - } if (validator.isVariable(value1) && validator.isVariable(value2)) { - return true; - } - - return validator.isKeyword(propertyName)(value2); - }; -} - -function keywordWithGlobal(propertyName) { - return function(validator, value1, value2) { - if (!understandable(validator, value1, value2, 0, true) - && !(validator.isKeyword(propertyName)(value2) || validator.isGlobal(value2))) { - return false; - } if (validator.isVariable(value1) && validator.isVariable(value2)) { - return true; - } - - return validator.isKeyword(propertyName)(value2) || validator.isGlobal(value2); - }; -} - -function propertyName$1(validator, value1, value2) { - if (!understandable(validator, value1, value2, 0, true) && !validator.isIdentifier(value2)) { - return false; - } if (validator.isVariable(value1) && validator.isVariable(value2)) { - return true; - } - - return validator.isIdentifier(value2); -} - -function sameFunctionOrValue(validator, value1, value2) { - return areSameFunction(validator, value1, value2) - ? true - : value1 === value2; -} - -function textShadow(validator, value1, value2) { - if (!understandable(validator, value1, value2, 0, true) - && !(validator.isUnit(value2) - || validator.isColor(value2) - || validator.isGlobal(value2))) { - return false; - } if (validator.isVariable(value1) && validator.isVariable(value2)) { - return true; - } - - return validator.isUnit(value2) || validator.isColor(value2) || validator.isGlobal(value2); -} - -function time$1(validator, value1, value2) { - if (!understandable(validator, value1, value2, 0, true) && !validator.isTime(value2)) { - return false; - } if (validator.isVariable(value1) && validator.isVariable(value2)) { - return true; - } if (validator.isTime(value1) && !validator.isTime(value2)) { - return false; - } if (validator.isTime(value2)) { - return true; - } if (validator.isTime(value1)) { - return false; - } if (validator.isFunction(value1) - && !validator.isPrefixed(value1) - && validator.isFunction(value2) - && !validator.isPrefixed(value2)) { - return true; - } - - return sameFunctionOrValue(validator, value1, value2); -} - -function timingFunction(validator, value1, value2) { - if (!understandable(validator, value1, value2, 0, true) - && !(validator.isTimingFunction(value2) || validator.isGlobal(value2))) { - return false; - } if (validator.isVariable(value1) && validator.isVariable(value2)) { - return true; - } - - return validator.isTimingFunction(value2) || validator.isGlobal(value2); -} - -function unit$1(validator, value1, value2) { - if (!understandable(validator, value1, value2, 0, true) && !validator.isUnit(value2)) { - return false; - } if (validator.isVariable(value1) && validator.isVariable(value2)) { - return true; - } if (validator.isUnit(value1) && !validator.isUnit(value2)) { - return false; - } if (validator.isUnit(value2)) { - return true; - } if (validator.isUnit(value1)) { - return false; - } if (validator.isFunction(value1) - && !validator.isPrefixed(value1) - && validator.isFunction(value2) - && !validator.isPrefixed(value2)) { - return true; - } - - return sameFunctionOrValue(validator, value1, value2); -} - -function unitOrKeywordWithGlobal(propertyName) { - var byKeyword = keywordWithGlobal(propertyName); - - return function(validator, value1, value2) { - return unit$1(validator, value1, value2) || byKeyword(validator, value1, value2); - }; -} - -function unitOrNumber(validator, value1, value2) { - if (!understandable(validator, value1, value2, 0, true) - && !(validator.isUnit(value2) - || validator.isNumber(value2))) { - return false; - } if (validator.isVariable(value1) && validator.isVariable(value2)) { - return true; - } if ((validator.isUnit(value1) - || validator.isNumber(value1)) - && !(validator.isUnit(value2) - || validator.isNumber(value2))) { - return false; - } if (validator.isUnit(value2) || validator.isNumber(value2)) { - return true; - } if (validator.isUnit(value1) || validator.isNumber(value1)) { - return false; - } if (validator.isFunction(value1) - && !validator.isPrefixed(value1) - && validator.isFunction(value2) - && !validator.isPrefixed(value2)) { - return true; - } - - return sameFunctionOrValue(validator, value1, value2); -} - -function zIndex(validator, value1, value2) { - if (!understandable(validator, value1, value2, 0, true) && !validator.isZIndex(value2)) { - return false; - } if (validator.isVariable(value1) && validator.isVariable(value2)) { - return true; - } - - return validator.isZIndex(value2); -} - -var canOverride$1 = { - generic: { - color: color$1, - components: components, - image: image, - propertyName: propertyName$1, - time: time$1, - timingFunction: timingFunction, - unit: unit$1, - unitOrNumber: unitOrNumber - }, - property: { - animationDirection: keywordWithGlobal('animation-direction'), - animationFillMode: keyword('animation-fill-mode'), - animationIterationCount: animationIterationCount, - animationName: animationName, - animationPlayState: keywordWithGlobal('animation-play-state'), - backgroundAttachment: keyword('background-attachment'), - backgroundClip: keywordWithGlobal('background-clip'), - backgroundOrigin: keyword('background-origin'), - backgroundPosition: backgroundPosition, - backgroundRepeat: keyword('background-repeat'), - backgroundSize: backgroundSize, - bottom: unitOrKeywordWithGlobal('bottom'), - borderCollapse: keyword('border-collapse'), - borderStyle: keywordWithGlobal('*-style'), - clear: keywordWithGlobal('clear'), - cursor: keywordWithGlobal('cursor'), - display: keywordWithGlobal('display'), - float: keywordWithGlobal('float'), - left: unitOrKeywordWithGlobal('left'), - fontFamily: fontFamily, - fontStretch: keywordWithGlobal('font-stretch'), - fontStyle: keywordWithGlobal('font-style'), - fontVariant: keywordWithGlobal('font-variant'), - fontWeight: keywordWithGlobal('font-weight'), - listStyleType: keywordWithGlobal('list-style-type'), - listStylePosition: keywordWithGlobal('list-style-position'), - outlineStyle: keywordWithGlobal('*-style'), - overflow: keywordWithGlobal('overflow'), - position: keywordWithGlobal('position'), - right: unitOrKeywordWithGlobal('right'), - textAlign: keywordWithGlobal('text-align'), - textDecoration: keywordWithGlobal('text-decoration'), - textOverflow: keywordWithGlobal('text-overflow'), - textShadow: textShadow, - top: unitOrKeywordWithGlobal('top'), - transform: sameFunctionOrValue, - verticalAlign: unitOrKeywordWithGlobal('vertical-align'), - visibility: keywordWithGlobal('visibility'), - whiteSpace: keywordWithGlobal('white-space'), - zIndex: zIndex - } -}; - -var wrapSingle$1 = wrapForOptimizing$3.single; - -var Token$l = token; - -function deep(property) { - var cloned = shallow(property); - for (var i = property.components.length - 1; i >= 0; i--) { - var component = shallow(property.components[i]); - component.value = property.components[i].value.slice(0); - cloned.components.unshift(component); - } - - cloned.dirty = true; - cloned.value = property.value.slice(0); - - return cloned; -} - -function shallow(property) { - var cloned = wrapSingle$1([ - Token$l.PROPERTY, - [Token$l.PROPERTY_NAME, property.name] - ]); - cloned.important = property.important; - cloned.hack = property.hack; - cloned.unused = false; - return cloned; -} - -var clone$1 = { - deep: deep, - shallow: shallow -}; - -var shallowClone$1 = clone$1.shallow; - -var Token$k = token; -var Marker$b = marker; - -function isInheritOnly(values) { - for (var i = 0, l = values.length; i < l; i++) { - var value = values[i][1]; - - if (value != 'inherit' && value != Marker$b.COMMA && value != Marker$b.FORWARD_SLASH) { return false; } - } - - return true; -} - -function background$1(property, configuration, lastInMultiplex) { - var components = property.components; - var restored = []; - var needsOne, needsBoth; - - function restoreValue(component) { - Array.prototype.unshift.apply(restored, component.value); - } - - function isDefaultValue(component) { - var descriptor = configuration[component.name]; - - if (descriptor.doubleValues && descriptor.defaultValue.length == 1) { - return component.value[0][1] == descriptor.defaultValue[0] - && (component.value[1] - ? component.value[1][1] == descriptor.defaultValue[0] - : true); - } if (descriptor.doubleValues && descriptor.defaultValue.length != 1) { - return component.value[0][1] == descriptor.defaultValue[0] - && ((component.value[1] ? component.value[1][1] : component.value[0][1]) - == descriptor.defaultValue[1]); - } - return component.value[0][1] == descriptor.defaultValue; - } - - for (var i = components.length - 1; i >= 0; i--) { - var component = components[i]; - var isDefault = isDefaultValue(component); - - if (component.name == 'background-clip') { - var originComponent = components[i - 1]; - var isOriginDefault = isDefaultValue(originComponent); - - needsOne = component.value[0][1] == originComponent.value[0][1]; - - needsBoth = !needsOne && ( - (isOriginDefault && !isDefault) - || (!isOriginDefault && !isDefault) - || (!isOriginDefault && isDefault && component.value[0][1] != originComponent.value[0][1])); - - if (needsOne) { - restoreValue(originComponent); - } else if (needsBoth) { - restoreValue(component); - restoreValue(originComponent); - } - - i--; - } else if (component.name == 'background-size') { - var positionComponent = components[i - 1]; - var isPositionDefault = isDefaultValue(positionComponent); - - needsOne = !isPositionDefault && isDefault; - - needsBoth = !needsOne - && (isPositionDefault && !isDefault || !isPositionDefault && !isDefault); - - if (needsOne) { - restoreValue(positionComponent); - } else if (needsBoth) { - restoreValue(component); - restored.unshift([Token$k.PROPERTY_VALUE, Marker$b.FORWARD_SLASH]); - restoreValue(positionComponent); - } else if (positionComponent.value.length == 1) { - restoreValue(positionComponent); - } - - i--; - } else { - if (isDefault || configuration[component.name].multiplexLastOnly && !lastInMultiplex) { continue; } - - restoreValue(component); - } - } - - if (restored.length === 0 && property.value.length == 1 && property.value[0][1] == '0') { restored.push(property.value[0]); } - - if (restored.length === 0) { restored.push([Token$k.PROPERTY_VALUE, configuration[property.name].defaultValue]); } - - if (isInheritOnly(restored)) { return [restored[0]]; } - - return restored; -} - -function borderRadius$1(property) { - if (property.multiplex) { - var horizontal = shallowClone$1(property); - var vertical = shallowClone$1(property); - - for (var i = 0; i < 4; i++) { - var component = property.components[i]; - - var horizontalComponent = shallowClone$1(property); - horizontalComponent.value = [component.value[0]]; - horizontal.components.push(horizontalComponent); - - var verticalComponent = shallowClone$1(property); - // FIXME: only shorthand compactor (see breakup#borderRadius) knows that border radius - // longhands have two values, whereas tokenizer does not care about populating 2nd value - // if it's missing, hence this fallback - verticalComponent.value = [component.value[1] || component.value[0]]; - vertical.components.push(verticalComponent); - } - - var horizontalValues = fourValues(horizontal); - var verticalValues = fourValues(vertical); - - if (horizontalValues.length == verticalValues.length - && horizontalValues[0][1] == verticalValues[0][1] - && (horizontalValues.length > 1 ? horizontalValues[1][1] == verticalValues[1][1] : true) - && (horizontalValues.length > 2 ? horizontalValues[2][1] == verticalValues[2][1] : true) - && (horizontalValues.length > 3 ? horizontalValues[3][1] == verticalValues[3][1] : true)) { - return horizontalValues; - } - return horizontalValues.concat([[Token$k.PROPERTY_VALUE, Marker$b.FORWARD_SLASH]]).concat(verticalValues); - } - return fourValues(property); -} - -function font(property, configuration) { - var components = property.components; - var restored = []; - var component; - var componentIndex = 0; - var fontFamilyIndex = 0; - - if (property.value[0][1].indexOf(Marker$b.INTERNAL) === 0) { - property.value[0][1] = property.value[0][1].substring(Marker$b.INTERNAL.length); - return property.value; - } - - // first four components are optional - while (componentIndex < 4) { - component = components[componentIndex]; - - if (component.value[0][1] != configuration[component.name].defaultValue) { - Array.prototype.push.apply(restored, component.value); - } - - componentIndex++; - } - - // then comes font-size - Array.prototype.push.apply(restored, components[componentIndex].value); - componentIndex++; - - // then may come line-height - if (components[componentIndex].value[0][1] != configuration[components[componentIndex].name].defaultValue) { - Array.prototype.push.apply(restored, [[Token$k.PROPERTY_VALUE, Marker$b.FORWARD_SLASH]]); - Array.prototype.push.apply(restored, components[componentIndex].value); - } - - componentIndex++; - - // then comes font-family - while (components[componentIndex].value[fontFamilyIndex]) { - restored.push(components[componentIndex].value[fontFamilyIndex]); - - if (components[componentIndex].value[fontFamilyIndex + 1]) { - restored.push([Token$k.PROPERTY_VALUE, Marker$b.COMMA]); - } - - fontFamilyIndex++; - } - - if (isInheritOnly(restored)) { - return [restored[0]]; - } - - return restored; -} - -function fourValues(property) { - var components = property.components; - var value1 = components[0].value[0]; - var value2 = components[1].value[0]; - var value3 = components[2].value[0]; - var value4 = components[3].value[0]; - - if (value1[1] == value2[1] && value1[1] == value3[1] && value1[1] == value4[1]) { - return [value1]; - } if (value1[1] == value3[1] && value2[1] == value4[1]) { - return [value1, value2]; - } if (value2[1] == value4[1]) { - return [value1, value2, value3]; - } - return [value1, value2, value3, value4]; -} - -function multiplex(restoreWith) { - return function(property, configuration) { - if (!property.multiplex) { return restoreWith(property, configuration, true); } - - var multiplexSize = 0; - var restored = []; - var componentMultiplexSoFar = {}; - var i, l; - - // At this point we don't know what's the multiplex size, e.g. how many background layers are there - for (i = 0, l = property.components[0].value.length; i < l; i++) { - if (property.components[0].value[i][1] == Marker$b.COMMA) { multiplexSize++; } - } - - for (i = 0; i <= multiplexSize; i++) { - var _property = shallowClone$1(property); - - // We split multiplex into parts and restore them one by one - for (var j = 0, m = property.components.length; j < m; j++) { - var componentToClone = property.components[j]; - var _component = shallowClone$1(componentToClone); - _property.components.push(_component); - - // The trick is some properties has more than one value, so we iterate over values looking for - // a multiplex separator - a comma - for (var k = componentMultiplexSoFar[_component.name] || 0, n = componentToClone.value.length; k < n; k++) { - if (componentToClone.value[k][1] == Marker$b.COMMA) { - componentMultiplexSoFar[_component.name] = k + 1; - break; - } - - _component.value.push(componentToClone.value[k]); - } - } - - // No we can restore shorthand value - var lastInMultiplex = i == multiplexSize; - var _restored = restoreWith(_property, configuration, lastInMultiplex); - Array.prototype.push.apply(restored, _restored); - - if (i < multiplexSize) { restored.push([Token$k.PROPERTY_VALUE, Marker$b.COMMA]); } - } - - return restored; - }; -} - -function withoutDefaults(property, configuration) { - var components = property.components; - var restored = []; - - for (var i = components.length - 1; i >= 0; i--) { - var component = components[i]; - var descriptor = configuration[component.name]; - - if (component.value[0][1] != descriptor.defaultValue || ('keepUnlessDefault' in descriptor) && !isDefault(components, configuration, descriptor.keepUnlessDefault)) { - restored.unshift(component.value[0]); - } - } - - if (restored.length === 0) { restored.push([Token$k.PROPERTY_VALUE, configuration[property.name].defaultValue]); } - - if (isInheritOnly(restored)) { return [restored[0]]; } - - return restored; -} - -function isDefault(components, configuration, propertyName) { - var component; - var i, l; - - for (i = 0, l = components.length; i < l; i++) { - component = components[i]; - - if (component.name == propertyName && component.value[0][1] == configuration[propertyName].defaultValue) { - return true; - } - } - - return false; -} - -var restore$1 = { - background: background$1, - borderRadius: borderRadius$1, - font: font, - fourValues: fourValues, - multiplex: multiplex, - withoutDefaults: withoutDefaults -}; - -var override$5 = override_1; - -var INTEGER_PATTERN = /^\d+$/; - -var ALL_UNITS = ['*', 'all']; -var DEFAULT_PRECISION = 'off'; // all precision changes are disabled -var DIRECTIVES_SEPARATOR = ','; // e.g. *=5,px=3 -var DIRECTIVE_VALUE_SEPARATOR = '='; // e.g. *=5 - -function roundingPrecisionFrom$1(source) { - return override$5(defaults$2(DEFAULT_PRECISION), buildPrecisionFrom(source)); -} - -function defaults$2(value) { - return { - ch: value, - cm: value, - em: value, - ex: value, - in: value, - mm: value, - pc: value, - pt: value, - px: value, - q: value, - rem: value, - vh: value, - vmax: value, - vmin: value, - vw: value, - '%': value - }; -} - -function buildPrecisionFrom(source) { - if (source === null || source === undefined) { - return {}; - } - - if (typeof source == 'boolean') { - return {}; - } - - if (typeof source == 'number' && source == -1) { - return defaults$2(DEFAULT_PRECISION); - } - - if (typeof source == 'number') { - return defaults$2(source); - } - - if (typeof source == 'string' && INTEGER_PATTERN.test(source)) { - return defaults$2(parseInt(source)); - } - - if (typeof source == 'string' && source == DEFAULT_PRECISION) { - return defaults$2(DEFAULT_PRECISION); - } - - if (typeof source == 'object') { - return source; - } - - return source - .split(DIRECTIVES_SEPARATOR) - .reduce(function(accumulator, directive) { - var directiveParts = directive.split(DIRECTIVE_VALUE_SEPARATOR); - var name = directiveParts[0]; - var value = parseInt(directiveParts[1]); - - if (Number.isNaN(value) || value == -1) { - value = DEFAULT_PRECISION; - } - - if (ALL_UNITS.indexOf(name) > -1) { - accumulator = override$5(accumulator, defaults$2(value)); - } else { - accumulator[name] = value; - } - - return accumulator; - }, {}); -} - -var roundingPrecision = { - DEFAULT: DEFAULT_PRECISION, - roundingPrecisionFrom: roundingPrecisionFrom$1 -}; - -var roundingPrecisionFrom = roundingPrecision.roundingPrecisionFrom; - -var override$4 = override_1; - -var OptimizationLevel$j = { - Zero: '0', - One: '1', - Two: '2' -}; - -var DEFAULTS$1 = {}; - -DEFAULTS$1[OptimizationLevel$j.Zero] = {}; -DEFAULTS$1[OptimizationLevel$j.One] = { - cleanupCharsets: true, - normalizeUrls: true, - optimizeBackground: true, - optimizeBorderRadius: true, - optimizeFilter: true, - optimizeFontWeight: true, - optimizeOutline: true, - removeEmpty: true, - removeNegativePaddings: true, - removeQuotes: true, - removeWhitespace: true, - replaceMultipleZeros: true, - replaceTimeUnits: true, - replaceZeroUnits: true, - roundingPrecision: roundingPrecisionFrom(undefined), - selectorsSortingMethod: 'standard', - specialComments: 'all', - tidyAtRules: true, - tidyBlockScopes: true, - tidySelectors: true, - variableValueOptimizers: [] -}; -DEFAULTS$1[OptimizationLevel$j.Two] = { - mergeAdjacentRules: true, - mergeIntoShorthands: true, - mergeMedia: true, - mergeNonAdjacentRules: true, - mergeSemantically: false, - overrideProperties: true, - removeEmpty: true, - reduceNonAdjacentRules: true, - removeDuplicateFontRules: true, - removeDuplicateMediaBlocks: true, - removeDuplicateRules: true, - removeUnusedAtRules: false, - restructureRules: false, - skipProperties: [] -}; - -var ALL_KEYWORD_1 = '*'; -var ALL_KEYWORD_2 = 'all'; -var FALSE_KEYWORD_1 = 'false'; -var FALSE_KEYWORD_2 = 'off'; -var TRUE_KEYWORD_1 = 'true'; -var TRUE_KEYWORD_2 = 'on'; - -var LIST_VALUE_SEPARATOR = ','; -var OPTION_SEPARATOR = ';'; -var OPTION_VALUE_SEPARATOR = ':'; - -function optimizationLevelFrom$1(source) { - var level = override$4(DEFAULTS$1, {}); - var Zero = OptimizationLevel$j.Zero; - var One = OptimizationLevel$j.One; - var Two = OptimizationLevel$j.Two; - - if (undefined === source) { - delete level[Two]; - return level; - } - - if (typeof source == 'string') { - source = parseInt(source); - } - - if (typeof source == 'number' && source === parseInt(Two)) { - return level; - } - - if (typeof source == 'number' && source === parseInt(One)) { - delete level[Two]; - return level; - } - - if (typeof source == 'number' && source === parseInt(Zero)) { - delete level[Two]; - delete level[One]; - return level; - } - - if (typeof source == 'object') { - source = covertValuesToHashes(source); - } - - if (One in source && 'roundingPrecision' in source[One]) { - source[One].roundingPrecision = roundingPrecisionFrom(source[One].roundingPrecision); - } - - if (Two in source && 'skipProperties' in source[Two] && typeof (source[Two].skipProperties) == 'string') { - source[Two].skipProperties = source[Two].skipProperties.split(LIST_VALUE_SEPARATOR); - } - - if (Zero in source || One in source || Two in source) { - level[Zero] = override$4(level[Zero], source[Zero]); - } - - if (One in source && ALL_KEYWORD_1 in source[One]) { - level[One] = override$4(level[One], defaults$1(One, normalizeValue(source[One][ALL_KEYWORD_1]))); - delete source[One][ALL_KEYWORD_1]; - } - - if (One in source && ALL_KEYWORD_2 in source[One]) { - level[One] = override$4(level[One], defaults$1(One, normalizeValue(source[One][ALL_KEYWORD_2]))); - delete source[One][ALL_KEYWORD_2]; - } - - if (One in source || Two in source) { - level[One] = override$4(level[One], source[One]); - } else { - delete level[One]; - } - - if (Two in source && ALL_KEYWORD_1 in source[Two]) { - level[Two] = override$4(level[Two], defaults$1(Two, normalizeValue(source[Two][ALL_KEYWORD_1]))); - delete source[Two][ALL_KEYWORD_1]; - } - - if (Two in source && ALL_KEYWORD_2 in source[Two]) { - level[Two] = override$4(level[Two], defaults$1(Two, normalizeValue(source[Two][ALL_KEYWORD_2]))); - delete source[Two][ALL_KEYWORD_2]; - } - - if (Two in source) { - level[Two] = override$4(level[Two], source[Two]); - } else { - delete level[Two]; - } - - return level; -} - -function defaults$1(level, value) { - var options = override$4(DEFAULTS$1[level], {}); - var key; - - for (key in options) { - if (typeof options[key] == 'boolean') { - options[key] = value; - } - } - - return options; -} - -function normalizeValue(value) { - switch (value) { - case FALSE_KEYWORD_1: - case FALSE_KEYWORD_2: - return false; - case TRUE_KEYWORD_1: - case TRUE_KEYWORD_2: - return true; - default: - return value; - } -} - -function covertValuesToHashes(source) { - var clonedSource = override$4(source, {}); - var level; - var i; - - for (i = 0; i <= 2; i++) { - level = '' + i; - - if (level in clonedSource && (clonedSource[level] === undefined || clonedSource[level] === false)) { - delete clonedSource[level]; - } - - if (level in clonedSource && clonedSource[level] === true) { - clonedSource[level] = {}; - } - - if (level in clonedSource && typeof clonedSource[level] == 'string') { - clonedSource[level] = covertToHash(clonedSource[level], level); - } - } - - return clonedSource; -} - -function covertToHash(asString, level) { - return asString - .split(OPTION_SEPARATOR) - .reduce(function(accumulator, directive) { - var parts = directive.split(OPTION_VALUE_SEPARATOR); - var name = parts[0]; - var value = parts[1]; - var normalizedValue = normalizeValue(value); - - if (ALL_KEYWORD_1 == name || ALL_KEYWORD_2 == name) { - accumulator = override$4(accumulator, defaults$1(level, normalizedValue)); - } else { - accumulator[name] = normalizedValue; - } - - return accumulator; - }, {}); -} - -var optimizationLevel = { - OptimizationLevel: OptimizationLevel$j, - optimizationLevelFrom: optimizationLevelFrom$1 -}; - -var OptimizationLevel$i = optimizationLevel.OptimizationLevel; - -var plugin$j = { - level1: { - property: function background(_rule, property, options) { - var values = property.value; - - if (!options.level[OptimizationLevel$i.One].optimizeBackground) { - return; - } - - if (values.length == 1 && values[0][1] == 'none') { - values[0][1] = '0 0'; - } - - if (values.length == 1 && values[0][1] == 'transparent') { - values[0][1] = '0 0'; - } - } - } -}; - -var background = plugin$j; - -var plugin$i = { - level1: { - property: function boxShadow(_rule, property) { - var values = property.value; - - // remove multiple zeros - if (values.length == 4 && values[0][1] === '0' && values[1][1] === '0' && values[2][1] === '0' && values[3][1] === '0') { - property.value.splice(2); - property.dirty = true; - } - } - } -}; - -var boxShadow = plugin$i; - -var OptimizationLevel$h = optimizationLevel.OptimizationLevel; - -var plugin$h = { - level1: { - property: function borderRadius(_rule, property, options) { - var values = property.value; - - if (!options.level[OptimizationLevel$h.One].optimizeBorderRadius) { - return; - } - - if (values.length == 3 && values[1][1] == '/' && values[0][1] == values[2][1]) { - property.value.splice(1); - property.dirty = true; - } else if (values.length == 5 && values[2][1] == '/' && values[0][1] == values[3][1] && values[1][1] == values[4][1]) { - property.value.splice(2); - property.dirty = true; - } else if (values.length == 7 && values[3][1] == '/' && values[0][1] == values[4][1] && values[1][1] == values[5][1] && values[2][1] == values[6][1]) { - property.value.splice(3); - property.dirty = true; - } else if (values.length == 9 && values[4][1] == '/' && values[0][1] == values[5][1] && values[1][1] == values[6][1] && values[2][1] == values[7][1] && values[3][1] == values[8][1]) { - property.value.splice(4); - property.dirty = true; - } - } - } -}; - -var borderRadius = plugin$h; - -var OptimizationLevel$g = optimizationLevel.OptimizationLevel; - -var ALPHA_OR_CHROMA_FILTER_PATTERN = /progid:DXImageTransform\.Microsoft\.(Alpha|Chroma)(\W)/; -var NO_SPACE_AFTER_COMMA_PATTERN = /,(\S)/g; -var WHITESPACE_AROUND_EQUALS_PATTERN = / ?= ?/g; - -var plugin$g = { - level1: { - property: function filter(_rule, property, options) { - if (!options.compatibility.properties.ieFilters) { - return; - } - - if (!options.level[OptimizationLevel$g.One].optimizeFilter) { - return; - } - - if (property.value.length == 1) { - property.value[0][1] = property.value[0][1].replace( - ALPHA_OR_CHROMA_FILTER_PATTERN, - function(match, filter, suffix) { - return filter.toLowerCase() + suffix; - } - ); - } - - property.value[0][1] = property.value[0][1] - .replace(NO_SPACE_AFTER_COMMA_PATTERN, ', $1') - .replace(WHITESPACE_AROUND_EQUALS_PATTERN, '='); - } - } -}; - -var filter$1 = plugin$g; - -var OptimizationLevel$f = optimizationLevel.OptimizationLevel; - -var plugin$f = { - level1: { - property: function fontWeight(_rule, property, options) { - var value = property.value[0][1]; - - if (!options.level[OptimizationLevel$f.One].optimizeFontWeight) { - return; - } - - if (value == 'normal') { - value = '400'; - } else if (value == 'bold') { - value = '700'; - } - - property.value[0][1] = value; - } - } -}; - -var fontWeight = plugin$f; - -var OptimizationLevel$e = optimizationLevel.OptimizationLevel; - -var plugin$e = { - level1: { - property: function margin(_rule, property, options) { - var values = property.value; - - if (!options.level[OptimizationLevel$e.One].replaceMultipleZeros) { - return; - } - - // remove multiple zeros - if (values.length == 4 && values[0][1] === '0' && values[1][1] === '0' && values[2][1] === '0' && values[3][1] === '0') { - property.value.splice(1); - property.dirty = true; - } - } - } -}; - -var margin = plugin$e; - -var OptimizationLevel$d = optimizationLevel.OptimizationLevel; - -var plugin$d = { - level1: { - property: function outline(_rule, property, options) { - var values = property.value; - - if (!options.level[OptimizationLevel$d.One].optimizeOutline) { - return; - } - - if (values.length == 1 && values[0][1] == 'none') { - values[0][1] = '0'; - } - } - } -}; - -var outline = plugin$d; - -var OptimizationLevel$c = optimizationLevel.OptimizationLevel; - -function isNegative(value) { - return value && value[1][0] == '-' && parseFloat(value[1]) < 0; -} - -var plugin$c = { - level1: { - property: function padding(_rule, property, options) { - var values = property.value; - - // remove multiple zeros - if (values.length == 4 && values[0][1] === '0' && values[1][1] === '0' && values[2][1] === '0' && values[3][1] === '0') { - property.value.splice(1); - property.dirty = true; - } - - // remove negative paddings - if (options.level[OptimizationLevel$c.One].removeNegativePaddings - && ( - isNegative(property.value[0]) - || isNegative(property.value[1]) - || isNegative(property.value[2]) - || isNegative(property.value[3]) - )) { - property.unused = true; - } - } - } -}; - -var padding = plugin$c; - -var propertyOptimizers$1 = { - background: background.level1.property, - boxShadow: boxShadow.level1.property, - borderRadius: borderRadius.level1.property, - filter: filter$1.level1.property, - fontWeight: fontWeight.level1.property, - margin: margin.level1.property, - outline: outline.level1.property, - padding: padding.level1.property -}; - -var COLORS = { - aliceblue: '#f0f8ff', - antiquewhite: '#faebd7', - aqua: '#0ff', - aquamarine: '#7fffd4', - azure: '#f0ffff', - beige: '#f5f5dc', - bisque: '#ffe4c4', - black: '#000', - blanchedalmond: '#ffebcd', - blue: '#00f', - blueviolet: '#8a2be2', - brown: '#a52a2a', - burlywood: '#deb887', - cadetblue: '#5f9ea0', - chartreuse: '#7fff00', - chocolate: '#d2691e', - coral: '#ff7f50', - cornflowerblue: '#6495ed', - cornsilk: '#fff8dc', - crimson: '#dc143c', - cyan: '#0ff', - darkblue: '#00008b', - darkcyan: '#008b8b', - darkgoldenrod: '#b8860b', - darkgray: '#a9a9a9', - darkgreen: '#006400', - darkgrey: '#a9a9a9', - darkkhaki: '#bdb76b', - darkmagenta: '#8b008b', - darkolivegreen: '#556b2f', - darkorange: '#ff8c00', - darkorchid: '#9932cc', - darkred: '#8b0000', - darksalmon: '#e9967a', - darkseagreen: '#8fbc8f', - darkslateblue: '#483d8b', - darkslategray: '#2f4f4f', - darkslategrey: '#2f4f4f', - darkturquoise: '#00ced1', - darkviolet: '#9400d3', - deeppink: '#ff1493', - deepskyblue: '#00bfff', - dimgray: '#696969', - dimgrey: '#696969', - dodgerblue: '#1e90ff', - firebrick: '#b22222', - floralwhite: '#fffaf0', - forestgreen: '#228b22', - fuchsia: '#f0f', - gainsboro: '#dcdcdc', - ghostwhite: '#f8f8ff', - gold: '#ffd700', - goldenrod: '#daa520', - gray: '#808080', - green: '#008000', - greenyellow: '#adff2f', - grey: '#808080', - honeydew: '#f0fff0', - hotpink: '#ff69b4', - indianred: '#cd5c5c', - indigo: '#4b0082', - ivory: '#fffff0', - khaki: '#f0e68c', - lavender: '#e6e6fa', - lavenderblush: '#fff0f5', - lawngreen: '#7cfc00', - lemonchiffon: '#fffacd', - lightblue: '#add8e6', - lightcoral: '#f08080', - lightcyan: '#e0ffff', - lightgoldenrodyellow: '#fafad2', - lightgray: '#d3d3d3', - lightgreen: '#90ee90', - lightgrey: '#d3d3d3', - lightpink: '#ffb6c1', - lightsalmon: '#ffa07a', - lightseagreen: '#20b2aa', - lightskyblue: '#87cefa', - lightslategray: '#778899', - lightslategrey: '#778899', - lightsteelblue: '#b0c4de', - lightyellow: '#ffffe0', - lime: '#0f0', - limegreen: '#32cd32', - linen: '#faf0e6', - magenta: '#ff00ff', - maroon: '#800000', - mediumaquamarine: '#66cdaa', - mediumblue: '#0000cd', - mediumorchid: '#ba55d3', - mediumpurple: '#9370db', - mediumseagreen: '#3cb371', - mediumslateblue: '#7b68ee', - mediumspringgreen: '#00fa9a', - mediumturquoise: '#48d1cc', - mediumvioletred: '#c71585', - midnightblue: '#191970', - mintcream: '#f5fffa', - mistyrose: '#ffe4e1', - moccasin: '#ffe4b5', - navajowhite: '#ffdead', - navy: '#000080', - oldlace: '#fdf5e6', - olive: '#808000', - olivedrab: '#6b8e23', - orange: '#ffa500', - orangered: '#ff4500', - orchid: '#da70d6', - palegoldenrod: '#eee8aa', - palegreen: '#98fb98', - paleturquoise: '#afeeee', - palevioletred: '#db7093', - papayawhip: '#ffefd5', - peachpuff: '#ffdab9', - peru: '#cd853f', - pink: '#ffc0cb', - plum: '#dda0dd', - powderblue: '#b0e0e6', - purple: '#800080', - rebeccapurple: '#663399', - red: '#f00', - rosybrown: '#bc8f8f', - royalblue: '#4169e1', - saddlebrown: '#8b4513', - salmon: '#fa8072', - sandybrown: '#f4a460', - seagreen: '#2e8b57', - seashell: '#fff5ee', - sienna: '#a0522d', - silver: '#c0c0c0', - skyblue: '#87ceeb', - slateblue: '#6a5acd', - slategray: '#708090', - slategrey: '#708090', - snow: '#fffafa', - springgreen: '#00ff7f', - steelblue: '#4682b4', - tan: '#d2b48c', - teal: '#008080', - thistle: '#d8bfd8', - tomato: '#ff6347', - turquoise: '#40e0d0', - violet: '#ee82ee', - wheat: '#f5deb3', - white: '#fff', - whitesmoke: '#f5f5f5', - yellow: '#ff0', - yellowgreen: '#9acd32' -}; - -var toHex$1 = {}; -var toName = {}; - -for (var name in COLORS) { - var hex = COLORS[name]; - - if (name.length < hex.length) { - toName[hex] = name; - } else { - toHex$1[name] = hex; - } -} - -var toHexPattern = new RegExp('(^| |,|\\))(' + Object.keys(toHex$1).join('|') + ')( |,|\\)|$)', 'ig'); -var toNamePattern = new RegExp('(' + Object.keys(toName).join('|') + ')([^a-f0-9]|$)', 'ig'); - -function hexConverter(match, prefix, colorValue, suffix) { - return prefix + toHex$1[colorValue.toLowerCase()] + suffix; -} - -function nameConverter(match, colorValue, suffix) { - return toName[colorValue.toLowerCase()] + suffix; -} - -function shortenHex$1(value) { - var hasHex = value.indexOf('#') > -1; - var shortened = value.replace(toHexPattern, hexConverter); - - if (shortened != value) { - shortened = shortened.replace(toHexPattern, hexConverter); - } - - return hasHex - ? shortened.replace(toNamePattern, nameConverter) - : shortened; -} - -var shortenHex_1 = shortenHex$1; - -// HSL to RGB converter. Both methods adapted from: -// http://mjijackson.com/2008/02/rgb-to-hsl-and-rgb-to-hsv-color-model-conversion-algorithms-in-javascript - -function hslToRgb(h, s, l) { - var r, g, b; - - // normalize hue orientation b/w 0 and 360 degrees - h %= 360; - if (h < 0) { h += 360; } - h = ~~h / 360; - - if (s < 0) { s = 0; } else if (s > 100) { s = 100; } - s = ~~s / 100; - - if (l < 0) { l = 0; } else if (l > 100) { l = 100; } - l = ~~l / 100; - - if (s === 0) { - r = g = b = l; // achromatic - } else { - var q = l < 0.5 - ? l * (1 + s) - : l + s - l * s; - var p = 2 * l - q; - r = hueToRgb(p, q, h + 1 / 3); - g = hueToRgb(p, q, h); - b = hueToRgb(p, q, h - 1 / 3); - } - - return [~~(r * 255), ~~(g * 255), ~~(b * 255)]; -} - -function hueToRgb(p, q, t) { - if (t < 0) { t += 1; } - if (t > 1) { t -= 1; } - if (t < 1 / 6) { return p + (q - p) * 6 * t; } - if (t < 1 / 2) { return q; } - if (t < 2 / 3) { return p + (q - p) * (2 / 3 - t) * 6; } - return p; -} - -function shortenHsl$1(hue, saturation, lightness) { - var asRgb = hslToRgb(hue, saturation, lightness); - var redAsHex = asRgb[0].toString(16); - var greenAsHex = asRgb[1].toString(16); - var blueAsHex = asRgb[2].toString(16); - - return '#' - + ((redAsHex.length == 1 ? '0' : '') + redAsHex) - + ((greenAsHex.length == 1 ? '0' : '') + greenAsHex) - + ((blueAsHex.length == 1 ? '0' : '') + blueAsHex); -} - -var shortenHsl_1 = shortenHsl$1; - -function shortenRgb$1(red, green, blue) { - var normalizedRed = Math.max(0, Math.min(parseInt(red), 255)); - var normalizedGreen = Math.max(0, Math.min(parseInt(green), 255)); - var normalizedBlue = Math.max(0, Math.min(parseInt(blue), 255)); - - // Credit: Asen http://jsbin.com/UPUmaGOc/2/edit?js,console - return '#' + ('00000' + (normalizedRed << 16 | normalizedGreen << 8 | normalizedBlue).toString(16)).slice(-6); -} - -var shortenRgb_1 = shortenRgb$1; - -var Marker$a = marker; - -function is(value, separator, isSeparatorRegex) { - return isSeparatorRegex - ? separator.test(value) - : value === separator; -} - -function split$5(value, separator) { - var openLevel = Marker$a.OPEN_ROUND_BRACKET; - var closeLevel = Marker$a.CLOSE_ROUND_BRACKET; - var level = 0; - var cursor = 0; - var lastStart = 0; - var lastValue; - var lastCharacter; - var len = value.length; - var parts = []; - var isSeparatorRegex = typeof (separator) == 'object' && 'exec' in separator; - - if (!isSeparatorRegex && value.indexOf(separator) == -1) { - return [value]; - } - - if (value.indexOf(openLevel) == -1) { - return value.split(separator); - } - - while (cursor < len) { - if (value[cursor] == openLevel) { - level++; - } else if (value[cursor] == closeLevel) { - level--; - } - - if (level === 0 && cursor > 0 && cursor + 1 < len && is(value[cursor], separator, isSeparatorRegex)) { - parts.push(value.substring(lastStart, cursor)); - - if (isSeparatorRegex && separator.exec(value[cursor]).length > 1) { - parts.push(value[cursor]); - } - - lastStart = cursor + 1; - } - - cursor++; - } - - if (lastStart < cursor + 1) { - lastValue = value.substring(lastStart); - lastCharacter = lastValue[lastValue.length - 1]; - if (is(lastCharacter, separator, isSeparatorRegex)) { - lastValue = lastValue.substring(0, lastValue.length - 1); - } - - parts.push(lastValue); - } - - return parts; -} - -var split_1 = split$5; - -var shortenHex = shortenHex_1; -var shortenHsl = shortenHsl_1; -var shortenRgb = shortenRgb_1; - -var split$4 = split_1; - -var ANY_COLOR_FUNCTION_PATTERN = /(rgb|rgba|hsl|hsla)\(([^()]+)\)/gi; -var COLOR_PREFIX_PATTERN = /#|rgb|hsl/gi; -var HEX_LONG_PATTERN = /(^|[^='"])#([0-9a-f]{6})/gi; -var HEX_SHORT_PATTERN = /(^|[^='"])#([0-9a-f]{3})/gi; -var HEX_VALUE_PATTERN = /[0-9a-f]/i; -var HSL_PATTERN = /hsl\((-?\d+),(-?\d+)%?,(-?\d+)%?\)/gi; -var RGBA_HSLA_PATTERN = /(rgb|hsl)a?\((-?\d+),(-?\d+%?),(-?\d+%?),(0*[1-9]+[0-9]*(\.?\d*)?)\)/gi; -var RGB_PATTERN = /rgb\((-?\d+),(-?\d+),(-?\d+)\)/gi; -var TRANSPARENT_FUNCTION_PATTERN = /(?:rgba|hsla)\(0,0%?,0%?,0\)/g; - -var plugin$b = { - level1: { - value: function color(name, value, options) { - if (!options.compatibility.properties.colors) { - return value; - } - - if (!value.match(COLOR_PREFIX_PATTERN)) { - return shortenHex(value); - } - - value = value - .replace(RGBA_HSLA_PATTERN, function(match, colorFn, p1, p2, p3, alpha) { - return (parseInt(alpha) >= 1 ? colorFn + '(' + [p1, p2, p3].join(',') + ')' : match); - }) - .replace(RGB_PATTERN, function(match, red, green, blue) { - return shortenRgb(red, green, blue); - }) - .replace(HSL_PATTERN, function(match, hue, saturation, lightness) { - return shortenHsl(hue, saturation, lightness); - }) - .replace(HEX_LONG_PATTERN, function(match, prefix, color, at, inputValue) { - var suffix = inputValue[at + match.length]; - - if (suffix && HEX_VALUE_PATTERN.test(suffix)) { - return match; - } if (color[0] == color[1] && color[2] == color[3] && color[4] == color[5]) { - return (prefix + '#' + color[0] + color[2] + color[4]).toLowerCase(); - } - return (prefix + '#' + color).toLowerCase(); - }) - .replace(HEX_SHORT_PATTERN, function(match, prefix, color) { - return prefix + '#' + color.toLowerCase(); - }) - .replace(ANY_COLOR_FUNCTION_PATTERN, function(match, colorFunction, colorDef) { - var tokens = colorDef.split(','); - var colorFnLowercase = colorFunction && colorFunction.toLowerCase(); - var applies = (colorFnLowercase == 'hsl' && tokens.length == 3) - || (colorFnLowercase == 'hsla' && tokens.length == 4) - || (colorFnLowercase == 'rgb' && tokens.length === 3 && colorDef.indexOf('%') > 0) - || (colorFnLowercase == 'rgba' && tokens.length == 4 && tokens[0].indexOf('%') > 0); - - if (!applies) { - return match; - } - - if (tokens[1].indexOf('%') == -1) { - tokens[1] += '%'; - } - - if (tokens[2].indexOf('%') == -1) { - tokens[2] += '%'; - } - - return colorFunction + '(' + tokens.join(',') + ')'; - }); - - if (options.compatibility.colors.opacity && name.indexOf('background') == -1) { - value = value.replace(TRANSPARENT_FUNCTION_PATTERN, function(match) { - if (split$4(value, ',').pop().indexOf('gradient(') > -1) { - return match; - } - - return 'transparent'; - }); - } - - return shortenHex(value); - } - } -}; - -var color = plugin$b; - -var ZERO_DEG_PATTERN = /\(0deg\)/g; - -var plugin$a = { - level1: { - value: function degrees(_name, value, options) { - if (!options.compatibility.properties.zeroUnits) { - return value; - } - - if (value.indexOf('0deg') == -1) { - return value; - } - - return value.replace(ZERO_DEG_PATTERN, '(0)'); - } - } -}; - -var degrees = plugin$a; - -var URL_PREFIX_PATTERN$4 = /^url\(/i; - -function startsAsUrl$4(value) { - return URL_PREFIX_PATTERN$4.test(value); -} - -var startsAsUrl_1 = startsAsUrl$4; - -var split$3 = split_1; -var startsAsUrl$3 = startsAsUrl_1; - -var OptimizationLevel$b = optimizationLevel.OptimizationLevel; - -var EXPRESSION_PATTERN = /^expression\(.*\)$/; -var ANY_FUNCTION_PATTERN$1 = /^(-(?:moz|ms|o|webkit)-[a-z-]+|[a-z-]+)\((.+)\)$/; -var TOKEN_SEPARATOR_PATTERN$1 = /([\s,/])/; - -var DOT_ZERO_PATTERN = /(^|\D)\.0+(\D|$)/g; -var FRACTION_PATTERN = /\.([1-9]*)0+(\D|$)/g; -var LEADING_ZERO_FRACTION_PATTERN = /(^|\D)0\.(\d)/g; -var MINUS_ZERO_FRACTION_PATTERN = /([^\w\d-]|^)-0([^.]|$)/g; -var ZERO_PREFIXED_UNIT_PATTERN = /(^|\s)0+([1-9])/g; - -function optimizeRecursively(value) { - var functionTokens; - var tokens; - - if (startsAsUrl$3(value)) { - return value; - } - - if (EXPRESSION_PATTERN.test(value)) { - return value; - } - - functionTokens = ANY_FUNCTION_PATTERN$1.exec(value); - - if (!functionTokens) { - return optimizeFractions(value); - } - - tokens = split$3(functionTokens[2], TOKEN_SEPARATOR_PATTERN$1) - .map(function(token) { return optimizeRecursively(token); }); - - return functionTokens[1] + '(' + tokens.join('') + ')'; -} - -function optimizeFractions(value) { - if (value.indexOf('0') == -1) { - return value; - } - - if (value.indexOf('-') > -1) { - value = value - .replace(MINUS_ZERO_FRACTION_PATTERN, '$10$2') - .replace(MINUS_ZERO_FRACTION_PATTERN, '$10$2'); - } - - return value - .replace(ZERO_PREFIXED_UNIT_PATTERN, '$1$2') - .replace(DOT_ZERO_PATTERN, '$10$2') - .replace(FRACTION_PATTERN, function(match, nonZeroPart, suffix) { - return (nonZeroPart.length > 0 ? '.' : '') + nonZeroPart + suffix; - }) - .replace(LEADING_ZERO_FRACTION_PATTERN, '$1.$2'); -} - -var plugin$9 = { - level1: { - value: function fraction(name, value, options) { - if (!options.level[OptimizationLevel$b.One].replaceZeroUnits) { - return value; - } - - return optimizeRecursively(value); - } - } -}; - -var fraction = plugin$9; - -var plugin$8 = { - level1: { - value: function precision(_name, value, options) { - if (!options.precision.enabled || value.indexOf('.') === -1) { - return value; - } - - return value - .replace(options.precision.decimalPointMatcher, '$1$2$3') - .replace(options.precision.zeroMatcher, function(match, integerPart, fractionPart, unit) { - var multiplier = options.precision.units[unit].multiplier; - var parsedInteger = parseInt(integerPart); - var integer = Number.isNaN(parsedInteger) ? 0 : parsedInteger; - var fraction = parseFloat(fractionPart); - - return Math.round((integer + fraction) * multiplier) / multiplier + unit; - }); - } - } -}; - -var precision = plugin$8; - -var OptimizationLevel$a = optimizationLevel.OptimizationLevel; - -var LOCAL_PREFIX_PATTERN = /^local\(/i; -var QUOTED_PATTERN = /^('.*'|".*")$/; -var QUOTED_BUT_SAFE_PATTERN = /^['"][a-zA-Z][a-zA-Z\d\-_]+['"]$/; -// eslint-disable-next-line max-len -var GENERIC_FONT_FAMILY_PATTERN = /^['"](?:cursive|default|emoji|fangsong|fantasy|inherit|initial|math|monospace|revert|revert-layer|sans-serif|serif|system-ui|ui-monospace|ui-rounded|ui-sans-serif|ui-serif|unset)['"]$/; - -var plugin$7 = { - level1: { - value: function textQuotes(name, value, options) { - if ((name == 'font-family' || name == 'font') && GENERIC_FONT_FAMILY_PATTERN.test(value)) { - return value; - } - - if (!options.level[OptimizationLevel$a.One].removeQuotes) { - return value; - } - - if (!QUOTED_PATTERN.test(value) && !LOCAL_PREFIX_PATTERN.test(value)) { - return value; - } - - return QUOTED_BUT_SAFE_PATTERN.test(value) - ? value.substring(1, value.length - 1) - : value; - } - } -}; - -var textQuotes = plugin$7; - -var OptimizationLevel$9 = optimizationLevel.OptimizationLevel; - -var TIME_VALUE = /^(-?[\d.]+)(m?s)$/; - -var plugin$6 = { - level1: { - value: function time(name, value, options) { - if (!options.level[OptimizationLevel$9.One].replaceTimeUnits) { - return value; - } - - if (!TIME_VALUE.test(value)) { - return value; - } - - return value.replace(TIME_VALUE, function(match, val, unit) { - var newValue; - - if (unit == 'ms') { - newValue = parseInt(val) / 1000 + 's'; - } else if (unit == 's') { - newValue = parseFloat(val) * 1000 + 'ms'; - } - - return newValue.length < match.length ? newValue : match; - }); - } - } -}; - -var time = plugin$6; - -var WHOLE_PIXEL_VALUE = /(?:^|\s|\()(-?\d+)px/; - -var plugin$5 = { - level1: { - value: function unit(_name, value, options) { - if (!WHOLE_PIXEL_VALUE.test(value)) { - return value; - } - - return value.replace(WHOLE_PIXEL_VALUE, function(match, val) { - var newValue; - var intVal = parseInt(val); - - if (intVal === 0) { - return match; - } - - if (options.compatibility.properties.shorterLengthUnits - && options.compatibility.units.pt - && intVal * 3 % 4 === 0) { - newValue = intVal * 3 / 4 + 'pt'; - } - - if (options.compatibility.properties.shorterLengthUnits - && options.compatibility.units.pc - && intVal % 16 === 0) { - newValue = intVal / 16 + 'pc'; - } - - if (options.compatibility.properties.shorterLengthUnits - && options.compatibility.units.in - && intVal % 96 === 0) { - newValue = intVal / 96 + 'in'; - } - - if (newValue) { - newValue = match.substring(0, match.indexOf(val)) + newValue; - } - - return newValue && newValue.length < match.length ? newValue : match; - }); - } - } -}; - -var unit = plugin$5; - -var startsAsUrl$2 = startsAsUrl_1; - -var OptimizationLevel$8 = optimizationLevel.OptimizationLevel; - -var URL_PREFIX_PATTERN$3 = /^url\(/i; - -var plugin$4 = { - level1: { - value: function urlPrefix(_name, value, options) { - if (!options.level[OptimizationLevel$8.One].normalizeUrls) { - return value; - } - - if (!startsAsUrl$2(value)) { - return value; - } - - return value.replace(URL_PREFIX_PATTERN$3, 'url('); - } - } -}; - -var urlPrefix = plugin$4; - -var QUOTED_URL_PATTERN = /^url\(['"].+['"]\)$/; -var QUOTED_URL_WITH_WHITESPACE_PATTERN = /^url\(['"].*[*\s()'"].*['"]\)$/; -var QUOTES_PATTERN = /["']/g; -var URL_DATA_PATTERN = /^url\(['"]data:[^;]+;charset/; - -var plugin$3 = { - level1: { - value: function urlQuotes(_name, value, options) { - if (options.compatibility.properties.urlQuotes) { - return value; - } - - return QUOTED_URL_PATTERN.test(value) - && !QUOTED_URL_WITH_WHITESPACE_PATTERN.test(value) - && !URL_DATA_PATTERN.test(value) - ? value.replace(QUOTES_PATTERN, '') - : value; - } - } -}; - -var urlQuotes = plugin$3; - -var startsAsUrl$1 = startsAsUrl_1; - -var WHITESPACE_PATTERN$1 = /\\?\n|\\?\r\n/g; -var WHITESPACE_PREFIX_PATTERN = /(\()\s+/g; -var WHITESPACE_SUFFIX_PATTERN = /\s+(\))/g; - -var plugin$2 = { - level1: { - value: function urlWhitespace(_name, value) { - if (!startsAsUrl$1(value)) { - return value; - } - - return value - .replace(WHITESPACE_PATTERN$1, '') - .replace(WHITESPACE_PREFIX_PATTERN, '$1') - .replace(WHITESPACE_SUFFIX_PATTERN, '$1'); - } - } -}; - -var urlWhitespace = plugin$2; - -var OptimizationLevel$7 = optimizationLevel.OptimizationLevel; - -var Marker$9 = marker; - -var CALC_DIVISION_WHITESPACE_PATTERN = /\) ?\/ ?/g; -var COMMA_AND_SPACE_PATTERN = /, /g; -var LINE_BREAK_PATTERN = /\r?\n/g; -var MULTI_WHITESPACE_PATTERN = /\s+/g; -var FUNCTION_CLOSING_BRACE_WHITESPACE_PATTERN = /\s+(;?\))/g; -var FUNCTION_OPENING_BRACE_WHITESPACE_PATTERN = /(\(;?)\s+/g; -var VARIABLE_NAME_PATTERN = /^--\S+$/; -var VARIABLE_VALUE_PATTERN = /^var\(\s*--\S+\s*\)$/; - -var plugin$1 = { - level1: { - value: function whitespace(name, value, options) { - if (!options.level[OptimizationLevel$7.One].removeWhitespace) { - return value; - } - - if (VARIABLE_NAME_PATTERN.test(name) && !VARIABLE_VALUE_PATTERN.test(value)) { - return value; - } - - if ((value.indexOf(' ') == -1 && value.indexOf('\n') == -1) || value.indexOf('expression') === 0) { - return value; - } - - if (value.indexOf(Marker$9.SINGLE_QUOTE) > -1 || value.indexOf(Marker$9.DOUBLE_QUOTE) > -1) { - return value; - } - - value = value.replace(LINE_BREAK_PATTERN, ''); - value = value.replace(MULTI_WHITESPACE_PATTERN, ' '); - - if (value.indexOf('calc') > -1) { - value = value.replace(CALC_DIVISION_WHITESPACE_PATTERN, ')/ '); - } - - return value - .replace(FUNCTION_OPENING_BRACE_WHITESPACE_PATTERN, '$1') - .replace(FUNCTION_CLOSING_BRACE_WHITESPACE_PATTERN, '$1') - .replace(COMMA_AND_SPACE_PATTERN, ','); - } - } -}; - -var whitespace = plugin$1; - -var split$2 = split_1; - -var ANY_FUNCTION_PATTERN = /^(-(?:moz|ms|o|webkit)-[a-z-]+|[a-z-]+)\((.+)\)$/; -var SKIP_FUNCTION_PATTERN = /^(?:-moz-calc|-webkit-calc|calc|rgb|hsl|rgba|hsla|min|max|clamp|expression)\(/; -var TOKEN_SEPARATOR_PATTERN = /([\s,/])/; - -function removeRecursively(value, options) { - var functionTokens; - var tokens; - - if (SKIP_FUNCTION_PATTERN.test(value)) { - return value; - } - - functionTokens = ANY_FUNCTION_PATTERN.exec(value); - - if (!functionTokens) { - return removeZeros(value, options); - } - - tokens = split$2(functionTokens[2], TOKEN_SEPARATOR_PATTERN) - .map(function(token) { return removeRecursively(token, options); }); - - return functionTokens[1] + '(' + tokens.join('') + ')'; -} - -function removeZeros(value, options) { - return value - .replace(options.unitsRegexp, '$10$2') - .replace(options.unitsRegexp, '$10$2'); -} - -var plugin = { - level1: { - value: function zero(name, value, options) { - if (!options.compatibility.properties.zeroUnits) { - return value; - } - - if (value.indexOf('%') > 0 && (name == 'height' || name == 'max-height' || name == 'width' || name == 'max-width')) { - return value; - } - - return removeRecursively(value, options); - } - } -}; - -var zero = plugin; - -var valueOptimizers$1 = { - color: color.level1.value, - degrees: degrees.level1.value, - fraction: fraction.level1.value, - precision: precision.level1.value, - textQuotes: textQuotes.level1.value, - time: time.level1.value, - unit: unit.level1.value, - urlPrefix: urlPrefix.level1.value, - urlQuotes: urlQuotes.level1.value, - urlWhiteSpace: urlWhitespace.level1.value, - whiteSpace: whitespace.level1.value, - zero: zero.level1.value -}; - -// Contains the interpretation of CSS properties, as used by the property optimizer - -var breakUp = breakUp$1; -var canOverride = canOverride$1; -var restore = restore$1; - -var propertyOptimizers = propertyOptimizers$1; -var valueOptimizers = valueOptimizers$1; - -var override$3 = override_1; - -// 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$8 = { - 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
    - 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