astexplorer.app
Version:
https://astexplorer.net with ES Modules support and Hot Reloading
1 lines • 438 kB
JavaScript
(window.webpackJsonp=window.webpackJsonp||[]).push([[36],{"./node_modules/css-tree/cjs/convertor/create.cjs":function(module,exports,__webpack_require__){"use strict";eval('\n\nconst List = __webpack_require__("./node_modules/css-tree/cjs/utils/List.cjs");\n\nfunction createConvertor(walk) {\n return {\n fromPlainObject: function(ast) {\n walk(ast, {\n enter: function(node) {\n if (node.children && node.children instanceof List.List === false) {\n node.children = new List.List().fromArray(node.children);\n }\n }\n });\n\n return ast;\n },\n toPlainObject: function(ast) {\n walk(ast, {\n leave: function(node) {\n if (node.children && node.children instanceof List.List) {\n node.children = node.children.toArray();\n }\n }\n });\n\n return ast;\n }\n };\n}\n\nexports.createConvertor = createConvertor;\n\n\n//# sourceURL=webpack:///./node_modules/css-tree/cjs/convertor/create.cjs?')},"./node_modules/css-tree/cjs/definition-syntax/SyntaxError.cjs":function(module,exports,__webpack_require__){"use strict";eval("\n\nconst createCustomError = __webpack_require__(\"./node_modules/css-tree/cjs/utils/create-custom-error.cjs\");\n\nfunction SyntaxError(message, input, offset) {\n return Object.assign(createCustomError.createCustomError('SyntaxError', message), {\n input,\n offset,\n rawMessage: message,\n message: message + '\\n' +\n ' ' + input + '\\n' +\n '--' + new Array((offset || input.length) + 1).join('-') + '^'\n });\n}\n\nexports.SyntaxError = SyntaxError;\n\n\n//# sourceURL=webpack:///./node_modules/css-tree/cjs/definition-syntax/SyntaxError.cjs?")},"./node_modules/css-tree/cjs/definition-syntax/generate.cjs":function(module,exports,__webpack_require__){"use strict";eval("\n\nfunction noop(value) {\n return value;\n}\n\nfunction generateMultiplier(multiplier) {\n const { min, max, comma } = multiplier;\n\n if (min === 0 && max === 0) {\n return '*';\n }\n\n if (min === 0 && max === 1) {\n return '?';\n }\n\n if (min === 1 && max === 0) {\n return comma ? '#' : '+';\n }\n\n if (min === 1 && max === 1) {\n return '';\n }\n\n return (\n (comma ? '#' : '') +\n (min === max\n ? '{' + min + '}'\n : '{' + min + ',' + (max !== 0 ? max : '') + '}'\n )\n );\n}\n\nfunction generateTypeOpts(node) {\n switch (node.type) {\n case 'Range':\n return (\n ' [' +\n (node.min === null ? '-∞' : node.min) +\n ',' +\n (node.max === null ? '∞' : node.max) +\n ']'\n );\n\n default:\n throw new Error('Unknown node type `' + node.type + '`');\n }\n}\n\nfunction generateSequence(node, decorate, forceBraces, compact) {\n const combinator = node.combinator === ' ' || compact ? node.combinator : ' ' + node.combinator + ' ';\n const result = node.terms\n .map(term => internalGenerate(term, decorate, forceBraces, compact))\n .join(combinator);\n\n if (node.explicit || forceBraces) {\n return (compact || result[0] === ',' ? '[' : '[ ') + result + (compact ? ']' : ' ]');\n }\n\n return result;\n}\n\nfunction internalGenerate(node, decorate, forceBraces, compact) {\n let result;\n\n switch (node.type) {\n case 'Group':\n result =\n generateSequence(node, decorate, forceBraces, compact) +\n (node.disallowEmpty ? '!' : '');\n break;\n\n case 'Multiplier':\n // return since node is a composition\n return (\n internalGenerate(node.term, decorate, forceBraces, compact) +\n decorate(generateMultiplier(node), node)\n );\n\n case 'Type':\n result = '<' + node.name + (node.opts ? decorate(generateTypeOpts(node.opts), node.opts) : '') + '>';\n break;\n\n case 'Property':\n result = '<\\'' + node.name + '\\'>';\n break;\n\n case 'Keyword':\n result = node.name;\n break;\n\n case 'AtKeyword':\n result = '@' + node.name;\n break;\n\n case 'Function':\n result = node.name + '(';\n break;\n\n case 'String':\n case 'Token':\n result = node.value;\n break;\n\n case 'Comma':\n result = ',';\n break;\n\n default:\n throw new Error('Unknown node type `' + node.type + '`');\n }\n\n return decorate(result, node);\n}\n\nfunction generate(node, options) {\n let decorate = noop;\n let forceBraces = false;\n let compact = false;\n\n if (typeof options === 'function') {\n decorate = options;\n } else if (options) {\n forceBraces = Boolean(options.forceBraces);\n compact = Boolean(options.compact);\n if (typeof options.decorate === 'function') {\n decorate = options.decorate;\n }\n }\n\n return internalGenerate(node, decorate, forceBraces, compact);\n}\n\nexports.generate = generate;\n\n\n//# sourceURL=webpack:///./node_modules/css-tree/cjs/definition-syntax/generate.cjs?")},"./node_modules/css-tree/cjs/definition-syntax/index.cjs":function(module,exports,__webpack_require__){"use strict";eval('\n\nconst _SyntaxError = __webpack_require__("./node_modules/css-tree/cjs/definition-syntax/SyntaxError.cjs");\nconst generate = __webpack_require__("./node_modules/css-tree/cjs/definition-syntax/generate.cjs");\nconst parse = __webpack_require__("./node_modules/css-tree/cjs/definition-syntax/parse.cjs");\nconst walk = __webpack_require__("./node_modules/css-tree/cjs/definition-syntax/walk.cjs");\n\n\n\nexports.SyntaxError = _SyntaxError.SyntaxError;\nexports.generate = generate.generate;\nexports.parse = parse.parse;\nexports.walk = walk.walk;\n\n\n//# sourceURL=webpack:///./node_modules/css-tree/cjs/definition-syntax/index.cjs?')},"./node_modules/css-tree/cjs/definition-syntax/parse.cjs":function(module,exports,__webpack_require__){"use strict";eval("\n\nconst tokenizer = __webpack_require__(\"./node_modules/css-tree/cjs/definition-syntax/tokenizer.cjs\");\n\nconst TAB = 9;\nconst N = 10;\nconst F = 12;\nconst R = 13;\nconst SPACE = 32;\nconst EXCLAMATIONMARK = 33; // !\nconst NUMBERSIGN = 35; // #\nconst AMPERSAND = 38; // &\nconst APOSTROPHE = 39; // '\nconst LEFTPARENTHESIS = 40; // (\nconst RIGHTPARENTHESIS = 41; // )\nconst ASTERISK = 42; // *\nconst PLUSSIGN = 43; // +\nconst COMMA = 44; // ,\nconst HYPERMINUS = 45; // -\nconst LESSTHANSIGN = 60; // <\nconst GREATERTHANSIGN = 62; // >\nconst QUESTIONMARK = 63; // ?\nconst COMMERCIALAT = 64; // @\nconst LEFTSQUAREBRACKET = 91; // [\nconst RIGHTSQUAREBRACKET = 93; // ]\nconst LEFTCURLYBRACKET = 123; // {\nconst VERTICALLINE = 124; // |\nconst RIGHTCURLYBRACKET = 125; // }\nconst INFINITY = 8734; // ∞\nconst NAME_CHAR = new Uint8Array(128).map((_, idx) =>\n /[a-zA-Z0-9\\-]/.test(String.fromCharCode(idx)) ? 1 : 0\n);\nconst COMBINATOR_PRECEDENCE = {\n ' ': 1,\n '&&': 2,\n '||': 3,\n '|': 4\n};\n\nfunction scanSpaces(tokenizer) {\n return tokenizer.substringToPos(\n tokenizer.findWsEnd(tokenizer.pos)\n );\n}\n\nfunction scanWord(tokenizer) {\n let end = tokenizer.pos;\n\n for (; end < tokenizer.str.length; end++) {\n const code = tokenizer.str.charCodeAt(end);\n if (code >= 128 || NAME_CHAR[code] === 0) {\n break;\n }\n }\n\n if (tokenizer.pos === end) {\n tokenizer.error('Expect a keyword');\n }\n\n return tokenizer.substringToPos(end);\n}\n\nfunction scanNumber(tokenizer) {\n let end = tokenizer.pos;\n\n for (; end < tokenizer.str.length; end++) {\n const code = tokenizer.str.charCodeAt(end);\n if (code < 48 || code > 57) {\n break;\n }\n }\n\n if (tokenizer.pos === end) {\n tokenizer.error('Expect a number');\n }\n\n return tokenizer.substringToPos(end);\n}\n\nfunction scanString(tokenizer) {\n const end = tokenizer.str.indexOf('\\'', tokenizer.pos + 1);\n\n if (end === -1) {\n tokenizer.pos = tokenizer.str.length;\n tokenizer.error('Expect an apostrophe');\n }\n\n return tokenizer.substringToPos(end + 1);\n}\n\nfunction readMultiplierRange(tokenizer) {\n let min = null;\n let max = null;\n\n tokenizer.eat(LEFTCURLYBRACKET);\n\n min = scanNumber(tokenizer);\n\n if (tokenizer.charCode() === COMMA) {\n tokenizer.pos++;\n if (tokenizer.charCode() !== RIGHTCURLYBRACKET) {\n max = scanNumber(tokenizer);\n }\n } else {\n max = min;\n }\n\n tokenizer.eat(RIGHTCURLYBRACKET);\n\n return {\n min: Number(min),\n max: max ? Number(max) : 0\n };\n}\n\nfunction readMultiplier(tokenizer) {\n let range = null;\n let comma = false;\n\n switch (tokenizer.charCode()) {\n case ASTERISK:\n tokenizer.pos++;\n\n range = {\n min: 0,\n max: 0\n };\n\n break;\n\n case PLUSSIGN:\n tokenizer.pos++;\n\n range = {\n min: 1,\n max: 0\n };\n\n break;\n\n case QUESTIONMARK:\n tokenizer.pos++;\n\n range = {\n min: 0,\n max: 1\n };\n\n break;\n\n case NUMBERSIGN:\n tokenizer.pos++;\n\n comma = true;\n\n if (tokenizer.charCode() === LEFTCURLYBRACKET) {\n range = readMultiplierRange(tokenizer);\n } else {\n range = {\n min: 1,\n max: 0\n };\n }\n\n break;\n\n case LEFTCURLYBRACKET:\n range = readMultiplierRange(tokenizer);\n break;\n\n default:\n return null;\n }\n\n return {\n type: 'Multiplier',\n comma,\n min: range.min,\n max: range.max,\n term: null\n };\n}\n\nfunction maybeMultiplied(tokenizer, node) {\n const multiplier = readMultiplier(tokenizer);\n\n if (multiplier !== null) {\n multiplier.term = node;\n return multiplier;\n }\n\n return node;\n}\n\nfunction maybeToken(tokenizer) {\n const ch = tokenizer.peek();\n\n if (ch === '') {\n return null;\n }\n\n return {\n type: 'Token',\n value: ch\n };\n}\n\nfunction readProperty(tokenizer) {\n let name;\n\n tokenizer.eat(LESSTHANSIGN);\n tokenizer.eat(APOSTROPHE);\n\n name = scanWord(tokenizer);\n\n tokenizer.eat(APOSTROPHE);\n tokenizer.eat(GREATERTHANSIGN);\n\n return maybeMultiplied(tokenizer, {\n type: 'Property',\n name\n });\n}\n\n// https://drafts.csswg.org/css-values-3/#numeric-ranges\n// 4.1. Range Restrictions and Range Definition Notation\n//\n// Range restrictions can be annotated in the numeric type notation using CSS bracketed\n// range notation—[min,max]—within the angle brackets, after the identifying keyword,\n// indicating a closed range between (and including) min and max.\n// For example, <integer [0, 10]> indicates an integer between 0 and 10, inclusive.\nfunction readTypeRange(tokenizer) {\n // use null for Infinity to make AST format JSON serializable/deserializable\n let min = null; // -Infinity\n let max = null; // Infinity\n let sign = 1;\n\n tokenizer.eat(LEFTSQUAREBRACKET);\n\n if (tokenizer.charCode() === HYPERMINUS) {\n tokenizer.peek();\n sign = -1;\n }\n\n if (sign == -1 && tokenizer.charCode() === INFINITY) {\n tokenizer.peek();\n } else {\n min = sign * Number(scanNumber(tokenizer));\n }\n\n scanSpaces(tokenizer);\n tokenizer.eat(COMMA);\n scanSpaces(tokenizer);\n\n if (tokenizer.charCode() === INFINITY) {\n tokenizer.peek();\n } else {\n sign = 1;\n\n if (tokenizer.charCode() === HYPERMINUS) {\n tokenizer.peek();\n sign = -1;\n }\n\n max = sign * Number(scanNumber(tokenizer));\n }\n\n tokenizer.eat(RIGHTSQUAREBRACKET);\n\n // If no range is indicated, either by using the bracketed range notation\n // or in the property description, then [−∞,∞] is assumed.\n if (min === null && max === null) {\n return null;\n }\n\n return {\n type: 'Range',\n min,\n max\n };\n}\n\nfunction readType(tokenizer) {\n let name;\n let opts = null;\n\n tokenizer.eat(LESSTHANSIGN);\n name = scanWord(tokenizer);\n\n if (tokenizer.charCode() === LEFTPARENTHESIS &&\n tokenizer.nextCharCode() === RIGHTPARENTHESIS) {\n tokenizer.pos += 2;\n name += '()';\n }\n\n if (tokenizer.charCodeAt(tokenizer.findWsEnd(tokenizer.pos)) === LEFTSQUAREBRACKET) {\n scanSpaces(tokenizer);\n opts = readTypeRange(tokenizer);\n }\n\n tokenizer.eat(GREATERTHANSIGN);\n\n return maybeMultiplied(tokenizer, {\n type: 'Type',\n name,\n opts\n });\n}\n\nfunction readKeywordOrFunction(tokenizer) {\n const name = scanWord(tokenizer);\n\n if (tokenizer.charCode() === LEFTPARENTHESIS) {\n tokenizer.pos++;\n\n return {\n type: 'Function',\n name\n };\n }\n\n return maybeMultiplied(tokenizer, {\n type: 'Keyword',\n name\n });\n}\n\nfunction regroupTerms(terms, combinators) {\n function createGroup(terms, combinator) {\n return {\n type: 'Group',\n terms,\n combinator,\n disallowEmpty: false,\n explicit: false\n };\n }\n\n let combinator;\n\n combinators = Object.keys(combinators)\n .sort((a, b) => COMBINATOR_PRECEDENCE[a] - COMBINATOR_PRECEDENCE[b]);\n\n while (combinators.length > 0) {\n combinator = combinators.shift();\n\n let i = 0;\n let subgroupStart = 0;\n\n for (; i < terms.length; i++) {\n const term = terms[i];\n\n if (term.type === 'Combinator') {\n if (term.value === combinator) {\n if (subgroupStart === -1) {\n subgroupStart = i - 1;\n }\n terms.splice(i, 1);\n i--;\n } else {\n if (subgroupStart !== -1 && i - subgroupStart > 1) {\n terms.splice(\n subgroupStart,\n i - subgroupStart,\n createGroup(terms.slice(subgroupStart, i), combinator)\n );\n i = subgroupStart + 1;\n }\n subgroupStart = -1;\n }\n }\n }\n\n if (subgroupStart !== -1 && combinators.length) {\n terms.splice(\n subgroupStart,\n i - subgroupStart,\n createGroup(terms.slice(subgroupStart, i), combinator)\n );\n }\n }\n\n return combinator;\n}\n\nfunction readImplicitGroup(tokenizer) {\n const terms = [];\n const combinators = {};\n let token;\n let prevToken = null;\n let prevTokenPos = tokenizer.pos;\n\n while (token = peek(tokenizer)) {\n if (token.type !== 'Spaces') {\n if (token.type === 'Combinator') {\n // check for combinator in group beginning and double combinator sequence\n if (prevToken === null || prevToken.type === 'Combinator') {\n tokenizer.pos = prevTokenPos;\n tokenizer.error('Unexpected combinator');\n }\n\n combinators[token.value] = true;\n } else if (prevToken !== null && prevToken.type !== 'Combinator') {\n combinators[' '] = true; // a b\n terms.push({\n type: 'Combinator',\n value: ' '\n });\n }\n\n terms.push(token);\n prevToken = token;\n prevTokenPos = tokenizer.pos;\n }\n }\n\n // check for combinator in group ending\n if (prevToken !== null && prevToken.type === 'Combinator') {\n tokenizer.pos -= prevTokenPos;\n tokenizer.error('Unexpected combinator');\n }\n\n return {\n type: 'Group',\n terms,\n combinator: regroupTerms(terms, combinators) || ' ',\n disallowEmpty: false,\n explicit: false\n };\n}\n\nfunction readGroup(tokenizer) {\n let result;\n\n tokenizer.eat(LEFTSQUAREBRACKET);\n result = readImplicitGroup(tokenizer);\n tokenizer.eat(RIGHTSQUAREBRACKET);\n\n result.explicit = true;\n\n if (tokenizer.charCode() === EXCLAMATIONMARK) {\n tokenizer.pos++;\n result.disallowEmpty = true;\n }\n\n return result;\n}\n\nfunction peek(tokenizer) {\n let code = tokenizer.charCode();\n\n if (code < 128 && NAME_CHAR[code] === 1) {\n return readKeywordOrFunction(tokenizer);\n }\n\n switch (code) {\n case RIGHTSQUAREBRACKET:\n // don't eat, stop scan a group\n break;\n\n case LEFTSQUAREBRACKET:\n return maybeMultiplied(tokenizer, readGroup(tokenizer));\n\n case LESSTHANSIGN:\n return tokenizer.nextCharCode() === APOSTROPHE\n ? readProperty(tokenizer)\n : readType(tokenizer);\n\n case VERTICALLINE:\n return {\n type: 'Combinator',\n value: tokenizer.substringToPos(\n tokenizer.pos + (tokenizer.nextCharCode() === VERTICALLINE ? 2 : 1)\n )\n };\n\n case AMPERSAND:\n tokenizer.pos++;\n tokenizer.eat(AMPERSAND);\n\n return {\n type: 'Combinator',\n value: '&&'\n };\n\n case COMMA:\n tokenizer.pos++;\n return {\n type: 'Comma'\n };\n\n case APOSTROPHE:\n return maybeMultiplied(tokenizer, {\n type: 'String',\n value: scanString(tokenizer)\n });\n\n case SPACE:\n case TAB:\n case N:\n case R:\n case F:\n return {\n type: 'Spaces',\n value: scanSpaces(tokenizer)\n };\n\n case COMMERCIALAT:\n code = tokenizer.nextCharCode();\n\n if (code < 128 && NAME_CHAR[code] === 1) {\n tokenizer.pos++;\n return {\n type: 'AtKeyword',\n name: scanWord(tokenizer)\n };\n }\n\n return maybeToken(tokenizer);\n\n case ASTERISK:\n case PLUSSIGN:\n case QUESTIONMARK:\n case NUMBERSIGN:\n case EXCLAMATIONMARK:\n // prohibited tokens (used as a multiplier start)\n break;\n\n case LEFTCURLYBRACKET:\n // LEFTCURLYBRACKET is allowed since mdn/data uses it w/o quoting\n // check next char isn't a number, because it's likely a disjoined multiplier\n code = tokenizer.nextCharCode();\n\n if (code < 48 || code > 57) {\n return maybeToken(tokenizer);\n }\n\n break;\n\n default:\n return maybeToken(tokenizer);\n }\n}\n\nfunction parse(source) {\n const tokenizer$1 = new tokenizer.Tokenizer(source);\n const result = readImplicitGroup(tokenizer$1);\n\n if (tokenizer$1.pos !== source.length) {\n tokenizer$1.error('Unexpected input');\n }\n\n // reduce redundant groups with single group term\n if (result.terms.length === 1 && result.terms[0].type === 'Group') {\n return result.terms[0];\n }\n\n return result;\n}\n\nexports.parse = parse;\n\n\n//# sourceURL=webpack:///./node_modules/css-tree/cjs/definition-syntax/parse.cjs?")},"./node_modules/css-tree/cjs/definition-syntax/tokenizer.cjs":function(module,exports,__webpack_require__){"use strict";eval("\n\nconst _SyntaxError = __webpack_require__(\"./node_modules/css-tree/cjs/definition-syntax/SyntaxError.cjs\");\n\nconst TAB = 9;\nconst N = 10;\nconst F = 12;\nconst R = 13;\nconst SPACE = 32;\n\nclass Tokenizer {\n constructor(str) {\n this.str = str;\n this.pos = 0;\n }\n charCodeAt(pos) {\n return pos < this.str.length ? this.str.charCodeAt(pos) : 0;\n }\n charCode() {\n return this.charCodeAt(this.pos);\n }\n nextCharCode() {\n return this.charCodeAt(this.pos + 1);\n }\n nextNonWsCode(pos) {\n return this.charCodeAt(this.findWsEnd(pos));\n }\n findWsEnd(pos) {\n for (; pos < this.str.length; pos++) {\n const code = this.str.charCodeAt(pos);\n if (code !== R && code !== N && code !== F && code !== SPACE && code !== TAB) {\n break;\n }\n }\n\n return pos;\n }\n substringToPos(end) {\n return this.str.substring(this.pos, this.pos = end);\n }\n eat(code) {\n if (this.charCode() !== code) {\n this.error('Expect `' + String.fromCharCode(code) + '`');\n }\n\n this.pos++;\n }\n peek() {\n return this.pos < this.str.length ? this.str.charAt(this.pos++) : '';\n }\n error(message) {\n throw new _SyntaxError.SyntaxError(message, this.str, this.pos);\n }\n}\n\nexports.Tokenizer = Tokenizer;\n\n\n//# sourceURL=webpack:///./node_modules/css-tree/cjs/definition-syntax/tokenizer.cjs?")},"./node_modules/css-tree/cjs/definition-syntax/walk.cjs":function(module,exports,__webpack_require__){"use strict";eval("\n\nconst noop = function() {};\n\nfunction ensureFunction(value) {\n return typeof value === 'function' ? value : noop;\n}\n\nfunction walk(node, options, context) {\n function walk(node) {\n enter.call(context, node);\n\n switch (node.type) {\n case 'Group':\n node.terms.forEach(walk);\n break;\n\n case 'Multiplier':\n walk(node.term);\n break;\n\n case 'Type':\n case 'Property':\n case 'Keyword':\n case 'AtKeyword':\n case 'Function':\n case 'String':\n case 'Token':\n case 'Comma':\n break;\n\n default:\n throw new Error('Unknown type: ' + node.type);\n }\n\n leave.call(context, node);\n }\n\n let enter = noop;\n let leave = noop;\n\n if (typeof options === 'function') {\n enter = options;\n } else if (options) {\n enter = ensureFunction(options.enter);\n leave = ensureFunction(options.leave);\n }\n\n if (enter === noop && leave === noop) {\n throw new Error('Neither `enter` nor `leave` walker handler is set or both aren\\'t a function');\n }\n\n walk(node);\n}\n\nexports.walk = walk;\n\n\n//# sourceURL=webpack:///./node_modules/css-tree/cjs/definition-syntax/walk.cjs?")},"./node_modules/css-tree/cjs/generator/create.cjs":function(module,exports,__webpack_require__){"use strict";eval("\n\nconst index = __webpack_require__(\"./node_modules/css-tree/cjs/tokenizer/index.cjs\");\nconst sourceMap = __webpack_require__(\"./node_modules/css-tree/cjs/generator/sourceMap.cjs\");\nconst tokenBefore = __webpack_require__(\"./node_modules/css-tree/cjs/generator/token-before.cjs\");\nconst types = __webpack_require__(\"./node_modules/css-tree/cjs/tokenizer/types.cjs\");\n\nconst REVERSESOLIDUS = 0x005c; // U+005C REVERSE SOLIDUS (\\)\n\nfunction processChildren(node, delimeter) {\n if (typeof delimeter === 'function') {\n let prev = null;\n\n node.children.forEach(node => {\n if (prev !== null) {\n delimeter.call(this, prev);\n }\n\n this.node(node);\n prev = node;\n });\n\n return;\n }\n\n node.children.forEach(this.node, this);\n}\n\nfunction processChunk(chunk) {\n index.tokenize(chunk, (type, start, end) => {\n this.token(type, chunk.slice(start, end));\n });\n}\n\nfunction createGenerator(config) {\n const types$1 = new Map();\n\n for (let name in config.node) {\n types$1.set(name, config.node[name].generate);\n }\n\n return function(node, options) {\n let buffer = '';\n let prevCode = 0;\n let handlers = {\n node(node) {\n if (types$1.has(node.type)) {\n types$1.get(node.type).call(publicApi, node);\n } else {\n throw new Error('Unknown node type: ' + node.type);\n }\n },\n tokenBefore: tokenBefore.safe,\n token(type, value) {\n prevCode = this.tokenBefore(prevCode, type, value);\n\n this.emit(value, type, false);\n\n if (type === types.Delim && value.charCodeAt(0) === REVERSESOLIDUS) {\n this.emit('\\n', types.WhiteSpace, true);\n }\n },\n emit(value) {\n buffer += value;\n },\n result() {\n return buffer;\n }\n };\n\n if (options) {\n if (typeof options.decorator === 'function') {\n handlers = options.decorator(handlers);\n }\n\n if (options.sourceMap) {\n handlers = sourceMap.generateSourceMap(handlers);\n }\n\n if (options.mode in tokenBefore) {\n handlers.tokenBefore = tokenBefore[options.mode];\n }\n }\n\n const publicApi = {\n node: (node) => handlers.node(node),\n children: processChildren,\n token: (type, value) => handlers.token(type, value),\n tokenize: processChunk\n };\n\n handlers.node(node);\n\n return handlers.result();\n };\n}\n\nexports.createGenerator = createGenerator;\n\n\n//# sourceURL=webpack:///./node_modules/css-tree/cjs/generator/create.cjs?")},"./node_modules/css-tree/cjs/generator/sourceMap.cjs":function(module,exports,__webpack_require__){"use strict";eval("\n\nconst sourceMapGenerator_js = __webpack_require__(\"./node_modules/source-map/lib/source-map-generator.js\");\n\nconst trackNodes = new Set(['Atrule', 'Selector', 'Declaration']);\n\nfunction generateSourceMap(handlers) {\n const map = new sourceMapGenerator_js.SourceMapGenerator();\n const generated = {\n line: 1,\n column: 0\n };\n const original = {\n line: 0, // should be zero to add first mapping\n column: 0\n };\n const activatedGenerated = {\n line: 1,\n column: 0\n };\n const activatedMapping = {\n generated: activatedGenerated\n };\n let line = 1;\n let column = 0;\n let sourceMappingActive = false;\n\n const origHandlersNode = handlers.node;\n handlers.node = function(node) {\n if (node.loc && node.loc.start && trackNodes.has(node.type)) {\n const nodeLine = node.loc.start.line;\n const nodeColumn = node.loc.start.column - 1;\n\n if (original.line !== nodeLine ||\n original.column !== nodeColumn) {\n original.line = nodeLine;\n original.column = nodeColumn;\n\n generated.line = line;\n generated.column = column;\n\n if (sourceMappingActive) {\n sourceMappingActive = false;\n if (generated.line !== activatedGenerated.line ||\n generated.column !== activatedGenerated.column) {\n map.addMapping(activatedMapping);\n }\n }\n\n sourceMappingActive = true;\n map.addMapping({\n source: node.loc.source,\n original,\n generated\n });\n }\n }\n\n origHandlersNode.call(this, node);\n\n if (sourceMappingActive && trackNodes.has(node.type)) {\n activatedGenerated.line = line;\n activatedGenerated.column = column;\n }\n };\n\n const origHandlersEmit = handlers.emit;\n handlers.emit = function(value, type, auto) {\n for (let i = 0; i < value.length; i++) {\n if (value.charCodeAt(i) === 10) { // \\n\n line++;\n column = 0;\n } else {\n column++;\n }\n }\n\n origHandlersEmit(value, type, auto);\n };\n\n const origHandlersResult = handlers.result;\n handlers.result = function() {\n if (sourceMappingActive) {\n map.addMapping(activatedMapping);\n }\n\n return {\n css: origHandlersResult(),\n map\n };\n };\n\n return handlers;\n}\n\nexports.generateSourceMap = generateSourceMap;\n\n\n//# sourceURL=webpack:///./node_modules/css-tree/cjs/generator/sourceMap.cjs?")},"./node_modules/css-tree/cjs/generator/token-before.cjs":function(module,exports,__webpack_require__){"use strict";eval("\n\nconst types = __webpack_require__(\"./node_modules/css-tree/cjs/tokenizer/types.cjs\");\n__webpack_require__(\"./node_modules/css-tree/cjs/tokenizer/char-code-definitions.cjs\");\n\nconst PLUSSIGN = 0x002B; // U+002B PLUS SIGN (+)\nconst HYPHENMINUS = 0x002D; // U+002D HYPHEN-MINUS (-)\n\nconst code = (type, value) => {\n if (type === types.Delim) {\n type = value;\n }\n\n if (typeof type === 'string') {\n const charCode = type.charCodeAt(0);\n return charCode > 0x7F ? 0x8000 : charCode << 8;\n }\n\n return type;\n};\n\n// https://www.w3.org/TR/css-syntax-3/#serialization\n// The only requirement for serialization is that it must \"round-trip\" with parsing,\n// that is, parsing the stylesheet must produce the same data structures as parsing,\n// serializing, and parsing again, except for consecutive <whitespace-token>s,\n// which may be collapsed into a single token.\n\nconst specPairs = [\n [types.Ident, types.Ident],\n [types.Ident, types.Function],\n [types.Ident, types.Url],\n [types.Ident, types.BadUrl],\n [types.Ident, '-'],\n [types.Ident, types.Number],\n [types.Ident, types.Percentage],\n [types.Ident, types.Dimension],\n [types.Ident, types.CDC],\n [types.Ident, types.LeftParenthesis],\n\n [types.AtKeyword, types.Ident],\n [types.AtKeyword, types.Function],\n [types.AtKeyword, types.Url],\n [types.AtKeyword, types.BadUrl],\n [types.AtKeyword, '-'],\n [types.AtKeyword, types.Number],\n [types.AtKeyword, types.Percentage],\n [types.AtKeyword, types.Dimension],\n [types.AtKeyword, types.CDC],\n\n [types.Hash, types.Ident],\n [types.Hash, types.Function],\n [types.Hash, types.Url],\n [types.Hash, types.BadUrl],\n [types.Hash, '-'],\n [types.Hash, types.Number],\n [types.Hash, types.Percentage],\n [types.Hash, types.Dimension],\n [types.Hash, types.CDC],\n\n [types.Dimension, types.Ident],\n [types.Dimension, types.Function],\n [types.Dimension, types.Url],\n [types.Dimension, types.BadUrl],\n [types.Dimension, '-'],\n [types.Dimension, types.Number],\n [types.Dimension, types.Percentage],\n [types.Dimension, types.Dimension],\n [types.Dimension, types.CDC],\n\n ['#', types.Ident],\n ['#', types.Function],\n ['#', types.Url],\n ['#', types.BadUrl],\n ['#', '-'],\n ['#', types.Number],\n ['#', types.Percentage],\n ['#', types.Dimension],\n\n ['-', types.Ident],\n ['-', types.Function],\n ['-', types.Url],\n ['-', types.BadUrl],\n ['-', '-'],\n ['-', types.Number],\n ['-', types.Percentage],\n ['-', types.Dimension],\n\n [types.Number, types.Ident],\n [types.Number, types.Function],\n [types.Number, types.Url],\n [types.Number, types.BadUrl],\n [types.Number, types.Number],\n [types.Number, types.Percentage],\n [types.Number, types.Dimension],\n\n ['@', types.Ident],\n ['@', types.Function],\n ['@', types.Url],\n ['@', types.BadUrl],\n ['@', '-'],\n\n ['.', types.Number],\n ['.', types.Percentage],\n ['.', types.Dimension],\n\n ['+', types.Number],\n ['+', types.Percentage],\n ['+', types.Dimension],\n\n ['/', '*']\n];\nconst safePairs = specPairs.concat([\n [types.AtKeyword, types.LeftParenthesis],\n [types.AtKeyword, types.String],\n [types.AtKeyword, types.Colon],\n\n [types.RightParenthesis, types.Ident],\n [types.RightParenthesis, types.Function],\n [types.RightParenthesis, types.Url],\n\n [types.Url, types.Ident],\n [types.Url, types.Function],\n [types.Url, types.Url]\n]);\n\nfunction createMap(pairs) {\n const isWhiteSpaceRequired = new Set(\n pairs.map(([prev, next]) => (code(prev) << 16 | code(next)))\n );\n\n return function(prevCode, type, value) {\n const nextCode = code(type, value);\n const nextCharCode = value.charCodeAt(0);\n const emitWs = nextCharCode === HYPHENMINUS || nextCharCode === PLUSSIGN\n ? isWhiteSpaceRequired.has(prevCode << 16 | nextCharCode << 8)\n : isWhiteSpaceRequired.has(prevCode << 16 | nextCode);\n\n if (emitWs) {\n this.emit(' ', types.WhiteSpace, true);\n }\n\n return nextCode;\n };\n}\n\nconst spec = createMap(specPairs);\nconst safe = createMap(safePairs);\n\nexports.safe = safe;\nexports.spec = spec;\n\n\n//# sourceURL=webpack:///./node_modules/css-tree/cjs/generator/token-before.cjs?")},"./node_modules/css-tree/cjs/index.cjs":function(module,exports,__webpack_require__){"use strict";eval('\n\nconst index$1 = __webpack_require__("./node_modules/css-tree/cjs/syntax/index.cjs");\nconst version = __webpack_require__("./node_modules/css-tree/dist/version.js");\nconst create = __webpack_require__("./node_modules/css-tree/cjs/syntax/create.cjs");\nconst List = __webpack_require__("./node_modules/css-tree/cjs/utils/List.cjs");\nconst Lexer = __webpack_require__("./node_modules/css-tree/cjs/lexer/Lexer.cjs");\nconst types = __webpack_require__("./node_modules/css-tree/cjs/tokenizer/types.cjs");\n__webpack_require__("./node_modules/css-tree/cjs/tokenizer/char-code-definitions.cjs");\nconst names = __webpack_require__("./node_modules/css-tree/cjs/tokenizer/names.cjs");\nconst TokenStream = __webpack_require__("./node_modules/css-tree/cjs/tokenizer/TokenStream.cjs");\nconst index = __webpack_require__("./node_modules/css-tree/cjs/definition-syntax/index.cjs");\nconst clone = __webpack_require__("./node_modules/css-tree/cjs/utils/clone.cjs");\nconst names$1 = __webpack_require__("./node_modules/css-tree/cjs/utils/names.cjs");\nconst ident = __webpack_require__("./node_modules/css-tree/cjs/utils/ident.cjs");\nconst string = __webpack_require__("./node_modules/css-tree/cjs/utils/string.cjs");\nconst url = __webpack_require__("./node_modules/css-tree/cjs/utils/url.cjs");\n\nconst {\n tokenize,\n parse,\n generate,\n lexer,\n createLexer,\n\n walk,\n find,\n findLast,\n findAll,\n\n toPlainObject,\n fromPlainObject,\n\n fork\n} = index$1;\n\nexports.version = version.version;\nexports.createSyntax = create;\nexports.List = List.List;\nexports.Lexer = Lexer.Lexer;\nexports.tokenTypes = types;\nexports.tokenNames = names;\nexports.TokenStream = TokenStream.TokenStream;\nexports.definitionSyntax = index;\nexports.clone = clone.clone;\nexports.isCustomProperty = names$1.isCustomProperty;\nexports.keyword = names$1.keyword;\nexports.property = names$1.property;\nexports.vendorPrefix = names$1.vendorPrefix;\nexports.ident = ident;\nexports.string = string;\nexports.url = url;\nexports.createLexer = createLexer;\nexports.find = find;\nexports.findAll = findAll;\nexports.findLast = findLast;\nexports.fork = fork;\nexports.fromPlainObject = fromPlainObject;\nexports.generate = generate;\nexports.lexer = lexer;\nexports.parse = parse;\nexports.toPlainObject = toPlainObject;\nexports.tokenize = tokenize;\nexports.walk = walk;\n\n\n//# sourceURL=webpack:///./node_modules/css-tree/cjs/index.cjs?')},"./node_modules/css-tree/cjs/lexer/Lexer.cjs":function(module,exports,__webpack_require__){"use strict";eval("\n\nconst error = __webpack_require__(\"./node_modules/css-tree/cjs/lexer/error.cjs\");\nconst names = __webpack_require__(\"./node_modules/css-tree/cjs/utils/names.cjs\");\nconst generic = __webpack_require__(\"./node_modules/css-tree/cjs/lexer/generic.cjs\");\nconst generate = __webpack_require__(\"./node_modules/css-tree/cjs/definition-syntax/generate.cjs\");\nconst parse = __webpack_require__(\"./node_modules/css-tree/cjs/definition-syntax/parse.cjs\");\nconst walk = __webpack_require__(\"./node_modules/css-tree/cjs/definition-syntax/walk.cjs\");\nconst prepareTokens = __webpack_require__(\"./node_modules/css-tree/cjs/lexer/prepare-tokens.cjs\");\nconst matchGraph = __webpack_require__(\"./node_modules/css-tree/cjs/lexer/match-graph.cjs\");\nconst match = __webpack_require__(\"./node_modules/css-tree/cjs/lexer/match.cjs\");\nconst trace = __webpack_require__(\"./node_modules/css-tree/cjs/lexer/trace.cjs\");\nconst search = __webpack_require__(\"./node_modules/css-tree/cjs/lexer/search.cjs\");\nconst structure = __webpack_require__(\"./node_modules/css-tree/cjs/lexer/structure.cjs\");\n\nconst cssWideKeywords = matchGraph.buildMatchGraph('inherit | initial | unset');\nconst cssWideKeywordsWithExpression = matchGraph.buildMatchGraph('inherit | initial | unset | <-ms-legacy-expression>');\n\nfunction dumpMapSyntax(map, compact, syntaxAsAst) {\n const result = {};\n\n for (const name in map) {\n if (map[name].syntax) {\n result[name] = syntaxAsAst\n ? map[name].syntax\n : generate.generate(map[name].syntax, { compact });\n }\n }\n\n return result;\n}\n\nfunction dumpAtruleMapSyntax(map, compact, syntaxAsAst) {\n const result = {};\n\n for (const [name, atrule] of Object.entries(map)) {\n result[name] = {\n prelude: atrule.prelude && (\n syntaxAsAst\n ? atrule.prelude.syntax\n : generate.generate(atrule.prelude.syntax, { compact })\n ),\n descriptors: atrule.descriptors && dumpMapSyntax(atrule.descriptors, compact, syntaxAsAst)\n };\n }\n\n return result;\n}\n\nfunction valueHasVar(tokens) {\n for (let i = 0; i < tokens.length; i++) {\n if (tokens[i].value.toLowerCase() === 'var(') {\n return true;\n }\n }\n\n return false;\n}\n\nfunction buildMatchResult(matched, error, iterations) {\n return {\n matched,\n iterations,\n error,\n ...trace\n };\n}\n\nfunction matchSyntax(lexer, syntax, value, useCommon) {\n const tokens = prepareTokens(value, lexer.syntax);\n let result;\n\n if (valueHasVar(tokens)) {\n return buildMatchResult(null, new Error('Matching for a tree with var() is not supported'));\n }\n\n if (useCommon) {\n result = match.matchAsTree(tokens, lexer.valueCommonSyntax, lexer);\n }\n\n if (!useCommon || !result.match) {\n result = match.matchAsTree(tokens, syntax.match, lexer);\n if (!result.match) {\n return buildMatchResult(\n null,\n new error.SyntaxMatchError(result.reason, syntax.syntax, value, result),\n result.iterations\n );\n }\n }\n\n return buildMatchResult(result.match, null, result.iterations);\n}\n\nclass Lexer {\n constructor(config, syntax, structure$1) {\n this.valueCommonSyntax = cssWideKeywords;\n this.syntax = syntax;\n this.generic = false;\n this.atrules = Object.create(null);\n this.properties = Object.create(null);\n this.types = Object.create(null);\n this.structure = structure$1 || structure.getStructureFromConfig(config);\n\n if (config) {\n if (config.types) {\n for (const name in config.types) {\n this.addType_(name, config.types[name]);\n }\n }\n\n if (config.generic) {\n this.generic = true;\n for (const name in generic) {\n this.addType_(name, generic[name]);\n }\n }\n\n if (config.atrules) {\n for (const name in config.atrules) {\n this.addAtrule_(name, config.atrules[name]);\n }\n }\n\n if (config.properties) {\n for (const name in config.properties) {\n this.addProperty_(name, config.properties[name]);\n }\n }\n }\n }\n\n checkStructure(ast) {\n function collectWarning(node, message) {\n warns.push({ node, message });\n }\n\n const structure = this.structure;\n const warns = [];\n\n this.syntax.walk(ast, function(node) {\n if (structure.hasOwnProperty(node.type)) {\n structure[node.type].check(node, collectWarning);\n } else {\n collectWarning(node, 'Unknown node type `' + node.type + '`');\n }\n });\n\n return warns.length ? warns : false;\n }\n\n createDescriptor(syntax, type, name, parent = null) {\n const ref = {\n type,\n name\n };\n const descriptor = {\n type,\n name,\n parent,\n serializable: typeof syntax === 'string' || (syntax && typeof syntax.type === 'string'),\n syntax: null,\n match: null\n };\n\n if (typeof syntax === 'function') {\n descriptor.match = matchGraph.buildMatchGraph(syntax, ref);\n } else {\n if (typeof syntax === 'string') {\n // lazy parsing on first access\n Object.defineProperty(descriptor, 'syntax', {\n get() {\n Object.defineProperty(descriptor, 'syntax', {\n value: parse.parse(syntax)\n });\n\n return descriptor.syntax;\n }\n });\n } else {\n descriptor.syntax = syntax;\n }\n\n // lazy graph build on first access\n Object.defineProperty(descriptor, 'match', {\n get() {\n Object.defineProperty(descriptor, 'match', {\n value: matchGraph.buildMatchGraph(descriptor.syntax, ref)\n });\n\n return descriptor.match;\n }\n });\n }\n\n return descriptor;\n }\n addAtrule_(name, syntax) {\n if (!syntax) {\n return;\n }\n\n this.atrules[name] = {\n type: 'Atrule',\n name: name,\n prelude: syntax.prelude ? this.createDescriptor(syntax.prelude, 'AtrulePrelude', name) : null,\n descriptors: syntax.descriptors\n ? Object.keys(syntax.descriptors).reduce(\n (map, descName) => {\n map[descName] = this.createDescriptor(syntax.descriptors[descName], 'AtruleDescriptor', descName, name);\n return map;\n },\n Object.create(null)\n )\n : null\n };\n }\n addProperty_(name, syntax) {\n if (!syntax) {\n return;\n }\n\n this.properties[name] = this.createDescriptor(syntax, 'Property', name);\n }\n addType_(name, syntax) {\n if (!syntax) {\n return;\n }\n\n this.types[name] = this.createDescriptor(syntax, 'Type', name);\n\n if (syntax === generic['-ms-legacy-expression']) {\n this.valueCommonSyntax = cssWideKeywordsWithExpression;\n }\n }\n\n checkAtruleName(atruleName) {\n if (!this.getAtrule(atruleName)) {\n return new error.SyntaxReferenceError('Unknown at-rule', '@' + atruleName);\n }\n }\n checkAtrulePrelude(atruleName, prelude) {\n const error = this.checkAtruleName(atruleName);\n\n if (error) {\n return error;\n }\n\n const atrule = this.getAtrule(atruleName);\n\n if (!atrule.prelude && prelude) {\n return new SyntaxError('At-rule `@' + atruleName + '` should not contain a prelude');\n }\n\n if (atrule.prelude && !prelude) {\n return new SyntaxError('At-rule `@' + atruleName + '` should contain a prelude');\n }\n }\n checkAtruleDescriptorName(atruleName, descriptorName) {\n const error$1 = this.checkAtruleName(atruleName);\n\n if (error$1) {\n return error$1;\n }\n\n const atrule = this.getAtrule(atruleName);\n const descriptor = names.keyword(descriptorName);\n\n if (!atrule.descriptors) {\n return new SyntaxError('At-rule `@' + atruleName + '` has no known descriptors');\n }\n\n if (!atrule.descriptors[descriptor.name] &&\n !atrule.descriptors[descriptor.basename]) {\n return new error.SyntaxReferenceError('Unknown at-rule descriptor', descriptorName);\n }\n }\n checkPropertyName(propertyName) {\n if (!this.getProperty(propertyName)) {\n return new error.SyntaxReferenceError('Unknown property', propertyName);\n }\n }\n\n matchAtrulePrelude(atruleName, prelude) {\n const error = this.checkAtrulePrelude(atruleName, prelude);\n\n if (error) {\n return buildMatchResult(null, error);\n }\n\n if (!prelude) {\n return buildMatchResult(null, null);\n }\n\n return matchSyntax(this, this.getAtrule(atruleName).prelude, prelude, false);\n }\n matchAtruleDescriptor(atruleName, descriptorName, value) {\n const error = this.checkAtruleDescriptorName(atruleName, descriptorName);\n\n if (error) {\n return buildMatchResult(null, error);\n }\n\n const atrule = this.getAtrule(atruleName);\n const descriptor = names.keyword(descriptorName);\n\n return matchSyntax(this, atrule.descriptors[descriptor.name] || atrule.descriptors[descriptor.basename], value, false);\n }\n matchDeclaration(node) {\n if (node.type !== 'Declaration') {\n return buildMatchResult(null, new Error('Not a Declaration node'));\n }\n\n return this.matchProperty(node.property, node.value);\n }\n matchProperty(propertyName, value) {\n // don't match syntax for a custom property at the moment\n if (names.property(propertyName).custom) {\n return buildMatchResult(null, new Error('Lexer matching doesn\\'t applicable for custom properties'));\n }\n\n const error = this.checkPropertyName(propertyName);\n\n if (error) {\n return buildMatchResult(null, error);\n }\n\n return matchSyntax(this, this.getProperty(propertyName), value, true);\n }\n matchType(typeName, value) {\n const typeSyntax = this.getType(typeName);\n\n if (!typeSyntax) {\n return buildMatchResult(null, new error.SyntaxReferenceError('Unknown type', typeName));\n }\n\n return matchSyntax(this, typeSyntax, value, false);\n }\n match(syntax, value) {\n if (typeof syntax !== 'string' && (!syntax || !syntax.type)) {\n return buildMatchResult(null, new error.SyntaxReferenceError('Bad syntax'));\n }\n\n if (typeof syntax === 'string' || !syntax.match) {\n syntax = this.createDescriptor(syntax, 'Type', 'anonymous');\n }\n\n return matchSyntax(this, syntax, value, false);\n }\n\n findValueFragments(propertyName, value, type, name) {\n return search.matchFragments(this, value, this.matchProperty(propertyName, value), type, name);\n }\n findDeclarationValueFragments(declaration, type, name) {\n return search.matchFragments(this, declaration.value, this.matchDeclaration(declaration), type, name);\n }\n findAllFragments(ast, type, name) {\n const result = [];\n\n this.syntax.walk(ast, {\n visit: 'Declaration',\n enter: (declaration) => {\n result.push.apply(result, this.findDeclarationValueFragments(declaration, type, name));\n }\n });\n\n return result;\n }\n\n getAtrule(atruleName, fallbackBasename = true) {\n const atrule = names.keyword(atruleName);\n const atruleEntry = atrule.vendor && fallbackBasename\n ? this.atrules[atrule.name] || this.atrules[atrule.basename]\n : this.atrules[atrule.name];\n\n return atruleEntry || null;\n }\n getAtrulePrelude(atruleName, fa