{ "version": 3, "sources": ["../../src/transformers/scope.ts", "../../node_modules/.pnpm/stylis@4.1.2/node_modules/stylis/src/Enum.js", "../../node_modules/.pnpm/stylis@4.1.2/node_modules/stylis/src/Utility.js", "../../node_modules/.pnpm/stylis@4.1.2/node_modules/stylis/src/Tokenizer.js", "../../node_modules/.pnpm/stylis@4.1.2/node_modules/stylis/src/Parser.js", "../../node_modules/.pnpm/stylis@4.1.2/node_modules/stylis/src/Serializer.js", "../../node_modules/.pnpm/stylis@4.1.2/node_modules/stylis/src/Middleware.js", "../../node_modules/.pnpm/parsel-js@1.1.2/node_modules/parsel-js/dist/parsel.min.js"], "sourcesContent": ["import type { ElementNode } from '../index.js';\nimport { walkSync, ELEMENT_NODE, TEXT_NODE, Node, render } from \"../index.js\";\nimport { matches } from \"../selector.js\";\nimport { serialize, compile, middleware, stringify } from \"stylis\";\nimport { AST, parse } from 'parsel-js';\n\nexport interface ScopeOptions {\n hash?: string;\n attribute?: string;\n}\nexport default function scope(opts: ScopeOptions = {}) {\n return async (doc: Node): Promise => {\n const hash = opts.hash ?? shorthash(await render(doc));\n const actions: (() => void)[] = [];\n let hasStyle = false;\n const selectors = new Set();\n const nodes = new Set();\n walkSync(doc, (node: Node) => {\n if (node.type === ELEMENT_NODE && node.name === \"style\") {\n if (!opts.attribute || (hasAttribute(node, opts.attribute))) {\n hasStyle = true;\n if (opts.attribute) {\n delete node.attributes[opts.attribute];\n }\n for (const selector of getSelectors(node.children[0].value)) {\n selectors.add(selector);\n }\n }\n }\n if (node.type === ELEMENT_NODE) {\n nodes.add(node);\n }\n });\n if (hasStyle) {\n walkSync(doc, (node: Node) => {\n if (node.type === ELEMENT_NODE) {\n actions.push(() => scopeElement(node, hash, selectors))\n if (node.name === 'style') {\n actions.push(() => {\n node.children = node.children.map((c: Node) => {\n if (c.type !== TEXT_NODE) return c;\n c.value = scopeCSS(c.value, hash);\n if (c.value === '') {\n node.parent.children = node.parent.children.filter((s: Node) => s !== node);\n }\n return c;\n })\n });\n }\n }\n })\n }\n for (const action of actions) {\n action();\n }\n \n return doc;\n };\n}\n\nconst NEVER_SCOPED = new Set([\n \"base\",\n \"font\",\n \"frame\",\n \"frameset\",\n \"head\",\n \"link\",\n \"meta\",\n \"noframes\",\n \"noscript\",\n \"script\",\n \"style\",\n \"title\",\n])\n\nfunction hasAttribute(node: ElementNode, name: string) {\n if (name in node.attributes) {\n return node.attributes[name] !== 'false';\n }\n return false;\n}\n\nfunction scopeElement(node: ElementNode, hash: string, selectors: Set) {\n const { name } = node;\n if (!name) return;\n if (name.length < 1) return;\n if (NEVER_SCOPED.has(name)) return;\n if (node.attributes['data-scope']) return;\n for (const selector of selectors) {\n if (matches(node, selector)) {\n node.attributes['data-scope'] = hash;\n return; \n }\n }\n}\n\nfunction scopeSelector(selector: string, hash: string): string {\n const ast = parse(selector);\n const scope = (node: AST): string => {\n switch (node.type) {\n case 'pseudo-class': {\n if (node.name === 'root') return node.content;\n if (node.name === 'global') return node.argument!;\n return `${node.content}:where([data-scope=\"${hash}\"])`;\n }\n case 'compound': return `${selector}:where([data-scope=\"${hash}\"])`\n case 'complex': {\n const { left, right, combinator } = node;\n return `${scope(left)}${combinator}${scope(right)}`\n }\n case 'list': return node.list.map(s => scope(s)).join(' ');\n default: return `${node.content}:where([data-scope=\"${hash}\"])`\n }\n }\n return scope(ast!);\n}\n\nfunction scopeCSS(css: string, hash: string) {\n return serialize(compile(css), middleware([(element) => {\n if (element.type === 'rule') {\n if (Array.isArray(element.props)) {\n element.props = element.props.map(prop => scopeSelector(prop, hash))\n } else {\n element.props = scopeSelector(element.props, hash);\n }\n }\n }, stringify]));\n}\n\nfunction getSelectors(css: string) {\n const selectors = new Set();\n serialize(compile(css), middleware([(element) => {\n if (element.type === 'rule') {\n if (Array.isArray(element.props)) {\n for (const p of element.props) {\n selectors.add(p);\n }\n } else {\n selectors.add(element.props);\n }\n }\n }]));\n return Array.from(selectors);\n}\n\n/**\n * shorthash - https://github.com/bibig/node-shorthash\n *\n * @license\n *\n * (The MIT License)\n *\n * Copyright (c) 2013 Bibig \n *\n * Permission is hereby granted, free of charge, to any person\n * obtaining a copy of this software and associated documentation\n * files (the \"Software\"), to deal in the Software without\n * restriction, including without limitation the rights to use,\n * copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the\n * Software is furnished to do so, subject to the following\n * conditions:\n *\n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\n * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\n * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\n * OTHER DEALINGS IN THE SOFTWARE.\n */\n\nconst dictionary = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXY';\nconst binary = dictionary.length;\n\n// refer to: http://werxltd.com/wp/2010/05/13/javascript-implementation-of-javas-string-hashcode-method/\nfunction bitwise(str: string) {\n\tlet hash = 0;\n\tif (str.length === 0) return hash;\n\tfor (let i = 0; i < str.length; i++) {\n\t\tconst ch = str.charCodeAt(i);\n\t\thash = (hash << 5) - hash + ch;\n\t\thash = hash & hash; // Convert to 32bit integer\n\t}\n\treturn hash;\n}\n\nfunction shorthash(text: string) {\n\tlet num: number;\n\tlet result = '';\n\n\tlet integer = bitwise(text);\n\tconst sign = integer < 0 ? 'Z' : ''; // It it's negative, start with Z, which isn't in the dictionary\n\n\tinteger = Math.abs(integer);\n\n\twhile (integer >= binary) {\n\t\tnum = integer % binary;\n\t\tinteger = Math.floor(integer / binary);\n\t\tresult = dictionary[num] + result;\n\t}\n\n\tif (integer > 0) {\n\t\tresult = dictionary[integer] + result;\n\t}\n\n\treturn sign + result;\n}\n\n", "export var MS = '-ms-'\nexport var MOZ = '-moz-'\nexport var WEBKIT = '-webkit-'\n\nexport var COMMENT = 'comm'\nexport var RULESET = 'rule'\nexport var DECLARATION = 'decl'\n\nexport var PAGE = '@page'\nexport var MEDIA = '@media'\nexport var IMPORT = '@import'\nexport var CHARSET = '@charset'\nexport var VIEWPORT = '@viewport'\nexport var SUPPORTS = '@supports'\nexport var DOCUMENT = '@document'\nexport var NAMESPACE = '@namespace'\nexport var KEYFRAMES = '@keyframes'\nexport var FONT_FACE = '@font-face'\nexport var COUNTER_STYLE = '@counter-style'\nexport var FONT_FEATURE_VALUES = '@font-feature-values'\n", "/**\n * @param {number}\n * @return {number}\n */\nexport var abs = Math.abs\n\n/**\n * @param {number}\n * @return {string}\n */\nexport var from = String.fromCharCode\n\n/**\n * @param {object}\n * @return {object}\n */\nexport var assign = Object.assign\n\n/**\n * @param {string} value\n * @param {number} length\n * @return {number}\n */\nexport function hash (value, length) {\n\treturn charat(value, 0) ^ 45 ? (((((((length << 2) ^ charat(value, 0)) << 2) ^ charat(value, 1)) << 2) ^ charat(value, 2)) << 2) ^ charat(value, 3) : 0\n}\n\n/**\n * @param {string} value\n * @return {string}\n */\nexport function trim (value) {\n\treturn value.trim()\n}\n\n/**\n * @param {string} value\n * @param {RegExp} pattern\n * @return {string?}\n */\nexport function match (value, pattern) {\n\treturn (value = pattern.exec(value)) ? value[0] : value\n}\n\n/**\n * @param {string} value\n * @param {(string|RegExp)} pattern\n * @param {string} replacement\n * @return {string}\n */\nexport function replace (value, pattern, replacement) {\n\treturn value.replace(pattern, replacement)\n}\n\n/**\n * @param {string} value\n * @param {string} search\n * @return {number}\n */\nexport function indexof (value, search) {\n\treturn value.indexOf(search)\n}\n\n/**\n * @param {string} value\n * @param {number} index\n * @return {number}\n */\nexport function charat (value, index) {\n\treturn value.charCodeAt(index) | 0\n}\n\n/**\n * @param {string} value\n * @param {number} begin\n * @param {number} end\n * @return {string}\n */\nexport function substr (value, begin, end) {\n\treturn value.slice(begin, end)\n}\n\n/**\n * @param {string} value\n * @return {number}\n */\nexport function strlen (value) {\n\treturn value.length\n}\n\n/**\n * @param {any[]} value\n * @return {number}\n */\nexport function sizeof (value) {\n\treturn value.length\n}\n\n/**\n * @param {any} value\n * @param {any[]} array\n * @return {any}\n */\nexport function append (value, array) {\n\treturn array.push(value), value\n}\n\n/**\n * @param {string[]} array\n * @param {function} callback\n * @return {string}\n */\nexport function combine (array, callback) {\n\treturn array.map(callback).join('')\n}\n", "import {from, trim, charat, strlen, substr, append, assign} from './Utility.js'\n\nexport var line = 1\nexport var column = 1\nexport var length = 0\nexport var position = 0\nexport var character = 0\nexport var characters = ''\n\n/**\n * @param {string} value\n * @param {object | null} root\n * @param {object | null} parent\n * @param {string} type\n * @param {string[] | string} props\n * @param {object[] | string} children\n * @param {number} length\n */\nexport function node (value, root, parent, type, props, children, length) {\n\treturn {value: value, root: root, parent: parent, type: type, props: props, children: children, line: line, column: column, length: length, return: ''}\n}\n\n/**\n * @param {object} root\n * @param {object} props\n * @return {object}\n */\nexport function copy (root, props) {\n\treturn assign(node('', null, null, '', null, null, 0), root, {length: -root.length}, props)\n}\n\n/**\n * @return {number}\n */\nexport function char () {\n\treturn character\n}\n\n/**\n * @return {number}\n */\nexport function prev () {\n\tcharacter = position > 0 ? charat(characters, --position) : 0\n\n\tif (column--, character === 10)\n\t\tcolumn = 1, line--\n\n\treturn character\n}\n\n/**\n * @return {number}\n */\nexport function next () {\n\tcharacter = position < length ? charat(characters, position++) : 0\n\n\tif (column++, character === 10)\n\t\tcolumn = 1, line++\n\n\treturn character\n}\n\n/**\n * @return {number}\n */\nexport function peek () {\n\treturn charat(characters, position)\n}\n\n/**\n * @return {number}\n */\nexport function caret () {\n\treturn position\n}\n\n/**\n * @param {number} begin\n * @param {number} end\n * @return {string}\n */\nexport function slice (begin, end) {\n\treturn substr(characters, begin, end)\n}\n\n/**\n * @param {number} type\n * @return {number}\n */\nexport function token (type) {\n\tswitch (type) {\n\t\t// \\0 \\t \\n \\r \\s whitespace token\n\t\tcase 0: case 9: case 10: case 13: case 32:\n\t\t\treturn 5\n\t\t// ! + , / > @ ~ isolate token\n\t\tcase 33: case 43: case 44: case 47: case 62: case 64: case 126:\n\t\t// ; { } breakpoint token\n\t\tcase 59: case 123: case 125:\n\t\t\treturn 4\n\t\t// : accompanied token\n\t\tcase 58:\n\t\t\treturn 3\n\t\t// \" ' ( [ opening delimit token\n\t\tcase 34: case 39: case 40: case 91:\n\t\t\treturn 2\n\t\t// ) ] closing delimit token\n\t\tcase 41: case 93:\n\t\t\treturn 1\n\t}\n\n\treturn 0\n}\n\n/**\n * @param {string} value\n * @return {any[]}\n */\nexport function alloc (value) {\n\treturn line = column = 1, length = strlen(characters = value), position = 0, []\n}\n\n/**\n * @param {any} value\n * @return {any}\n */\nexport function dealloc (value) {\n\treturn characters = '', value\n}\n\n/**\n * @param {number} type\n * @return {string}\n */\nexport function delimit (type) {\n\treturn trim(slice(position - 1, delimiter(type === 91 ? type + 2 : type === 40 ? type + 1 : type)))\n}\n\n/**\n * @param {string} value\n * @return {string[]}\n */\nexport function tokenize (value) {\n\treturn dealloc(tokenizer(alloc(value)))\n}\n\n/**\n * @param {number} type\n * @return {string}\n */\nexport function whitespace (type) {\n\twhile (character = peek())\n\t\tif (character < 33)\n\t\t\tnext()\n\t\telse\n\t\t\tbreak\n\n\treturn token(type) > 2 || token(character) > 3 ? '' : ' '\n}\n\n/**\n * @param {string[]} children\n * @return {string[]}\n */\nexport function tokenizer (children) {\n\twhile (next())\n\t\tswitch (token(character)) {\n\t\t\tcase 0: append(identifier(position - 1), children)\n\t\t\t\tbreak\n\t\t\tcase 2: append(delimit(character), children)\n\t\t\t\tbreak\n\t\t\tdefault: append(from(character), children)\n\t\t}\n\n\treturn children\n}\n\n/**\n * @param {number} index\n * @param {number} count\n * @return {string}\n */\nexport function escaping (index, count) {\n\twhile (--count && next())\n\t\t// not 0-9 A-F a-f\n\t\tif (character < 48 || character > 102 || (character > 57 && character < 65) || (character > 70 && character < 97))\n\t\t\tbreak\n\n\treturn slice(index, caret() + (count < 6 && peek() == 32 && next() == 32))\n}\n\n/**\n * @param {number} type\n * @return {number}\n */\nexport function delimiter (type) {\n\twhile (next())\n\t\tswitch (character) {\n\t\t\t// ] ) \" '\n\t\t\tcase type:\n\t\t\t\treturn position\n\t\t\t// \" '\n\t\t\tcase 34: case 39:\n\t\t\t\tif (type !== 34 && type !== 39)\n\t\t\t\t\tdelimiter(character)\n\t\t\t\tbreak\n\t\t\t// (\n\t\t\tcase 40:\n\t\t\t\tif (type === 41)\n\t\t\t\t\tdelimiter(type)\n\t\t\t\tbreak\n\t\t\t// \\\n\t\t\tcase 92:\n\t\t\t\tnext()\n\t\t\t\tbreak\n\t\t}\n\n\treturn position\n}\n\n/**\n * @param {number} type\n * @param {number} index\n * @return {number}\n */\nexport function commenter (type, index) {\n\twhile (next())\n\t\t// //\n\t\tif (type + character === 47 + 10)\n\t\t\tbreak\n\t\t// /*\n\t\telse if (type + character === 42 + 42 && peek() === 47)\n\t\t\tbreak\n\n\treturn '/*' + slice(index, position - 1) + '*' + from(type === 47 ? type : next())\n}\n\n/**\n * @param {number} index\n * @return {string}\n */\nexport function identifier (index) {\n\twhile (!token(peek()))\n\t\tnext()\n\n\treturn slice(index, position)\n}\n", "import {COMMENT, RULESET, DECLARATION} from './Enum.js'\nimport {abs, charat, trim, from, sizeof, strlen, substr, append, replace, indexof} from './Utility.js'\nimport {node, char, prev, next, peek, caret, alloc, dealloc, delimit, whitespace, escaping, identifier, commenter} from './Tokenizer.js'\n\n/**\n * @param {string} value\n * @return {object[]}\n */\nexport function compile (value) {\n\treturn dealloc(parse('', null, null, null, [''], value = alloc(value), 0, [0], value))\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {string[]} rule\n * @param {string[]} rules\n * @param {string[]} rulesets\n * @param {number[]} pseudo\n * @param {number[]} points\n * @param {string[]} declarations\n * @return {object}\n */\nexport function parse (value, root, parent, rule, rules, rulesets, pseudo, points, declarations) {\n\tvar index = 0\n\tvar offset = 0\n\tvar length = pseudo\n\tvar atrule = 0\n\tvar property = 0\n\tvar previous = 0\n\tvar variable = 1\n\tvar scanning = 1\n\tvar ampersand = 1\n\tvar character = 0\n\tvar type = ''\n\tvar props = rules\n\tvar children = rulesets\n\tvar reference = rule\n\tvar characters = type\n\n\twhile (scanning)\n\t\tswitch (previous = character, character = next()) {\n\t\t\t// (\n\t\t\tcase 40:\n\t\t\t\tif (previous != 108 && charat(characters, length - 1) == 58) {\n\t\t\t\t\tif (indexof(characters += replace(delimit(character), '&', '&\\f'), '&\\f') != -1)\n\t\t\t\t\t\tampersand = -1\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t// \" ' [\n\t\t\tcase 34: case 39: case 91:\n\t\t\t\tcharacters += delimit(character)\n\t\t\t\tbreak\n\t\t\t// \\t \\n \\r \\s\n\t\t\tcase 9: case 10: case 13: case 32:\n\t\t\t\tcharacters += whitespace(previous)\n\t\t\t\tbreak\n\t\t\t// \\\n\t\t\tcase 92:\n\t\t\t\tcharacters += escaping(caret() - 1, 7)\n\t\t\t\tcontinue\n\t\t\t// /\n\t\t\tcase 47:\n\t\t\t\tswitch (peek()) {\n\t\t\t\t\tcase 42: case 47:\n\t\t\t\t\t\tappend(comment(commenter(next(), caret()), root, parent), declarations)\n\t\t\t\t\t\tbreak\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tcharacters += '/'\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\t// {\n\t\t\tcase 123 * variable:\n\t\t\t\tpoints[index++] = strlen(characters) * ampersand\n\t\t\t// } ; \\0\n\t\t\tcase 125 * variable: case 59: case 0:\n\t\t\t\tswitch (character) {\n\t\t\t\t\t// \\0 }\n\t\t\t\t\tcase 0: case 125: scanning = 0\n\t\t\t\t\t// ;\n\t\t\t\t\tcase 59 + offset:\n\t\t\t\t\t\tif (property > 0 && (strlen(characters) - length))\n\t\t\t\t\t\t\tappend(property > 32 ? declaration(characters + ';', rule, parent, length - 1) : declaration(replace(characters, ' ', '') + ';', rule, parent, length - 2), declarations)\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// @ ;\n\t\t\t\t\tcase 59: characters += ';'\n\t\t\t\t\t// { rule/at-rule\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tappend(reference = ruleset(characters, root, parent, index, offset, rules, points, type, props = [], children = [], length), rulesets)\n\n\t\t\t\t\t\tif (character === 123)\n\t\t\t\t\t\t\tif (offset === 0)\n\t\t\t\t\t\t\t\tparse(characters, root, reference, reference, props, rulesets, length, points, children)\n\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\tswitch (atrule) {\n\t\t\t\t\t\t\t\t\t// d m s\n\t\t\t\t\t\t\t\t\tcase 100: case 109: case 115:\n\t\t\t\t\t\t\t\t\t\tparse(value, reference, reference, rule && append(ruleset(value, reference, reference, 0, 0, rules, points, type, rules, props = [], length), children), rules, children, length, points, rule ? props : children)\n\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\t\tparse(characters, reference, reference, reference, [''], children, 0, points, children)\n\t\t\t\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tindex = offset = property = 0, variable = ampersand = 1, type = characters = '', length = pseudo\n\t\t\t\tbreak\n\t\t\t// :\n\t\t\tcase 58:\n\t\t\t\tlength = 1 + strlen(characters), property = previous\n\t\t\tdefault:\n\t\t\t\tif (variable < 1)\n\t\t\t\t\tif (character == 123)\n\t\t\t\t\t\t--variable\n\t\t\t\t\telse if (character == 125 && variable++ == 0 && prev() == 125)\n\t\t\t\t\t\tcontinue\n\n\t\t\t\tswitch (characters += from(character), character * variable) {\n\t\t\t\t\t// &\n\t\t\t\t\tcase 38:\n\t\t\t\t\t\tampersand = offset > 0 ? 1 : (characters += '\\f', -1)\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// ,\n\t\t\t\t\tcase 44:\n\t\t\t\t\t\tpoints[index++] = (strlen(characters) - 1) * ampersand, ampersand = 1\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// @\n\t\t\t\t\tcase 64:\n\t\t\t\t\t\t// -\n\t\t\t\t\t\tif (peek() === 45)\n\t\t\t\t\t\t\tcharacters += delimit(next())\n\n\t\t\t\t\t\tatrule = peek(), offset = length = strlen(type = characters += identifier(caret())), character++\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// -\n\t\t\t\t\tcase 45:\n\t\t\t\t\t\tif (previous === 45 && strlen(characters) == 2)\n\t\t\t\t\t\t\tvariable = 0\n\t\t\t\t}\n\t\t}\n\n\treturn rulesets\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {number} index\n * @param {number} offset\n * @param {string[]} rules\n * @param {number[]} points\n * @param {string} type\n * @param {string[]} props\n * @param {string[]} children\n * @param {number} length\n * @return {object}\n */\nexport function ruleset (value, root, parent, index, offset, rules, points, type, props, children, length) {\n\tvar post = offset - 1\n\tvar rule = offset === 0 ? rules : ['']\n\tvar size = sizeof(rule)\n\n\tfor (var i = 0, j = 0, k = 0; i < index; ++i)\n\t\tfor (var x = 0, y = substr(value, post + 1, post = abs(j = points[i])), z = value; x < size; ++x)\n\t\t\tif (z = trim(j > 0 ? rule[x] + ' ' + y : replace(y, /&\\f/g, rule[x])))\n\t\t\t\tprops[k++] = z\n\n\treturn node(value, root, parent, offset === 0 ? RULESET : type, props, children, length)\n}\n\n/**\n * @param {number} value\n * @param {object} root\n * @param {object?} parent\n * @return {object}\n */\nexport function comment (value, root, parent) {\n\treturn node(value, root, parent, COMMENT, from(char()), substr(value, 2, -2), 0)\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {number} length\n * @return {object}\n */\nexport function declaration (value, root, parent, length) {\n\treturn node(value, root, parent, DECLARATION, substr(value, 0, length), substr(value, length + 1, -1), length)\n}\n", "import {IMPORT, COMMENT, RULESET, DECLARATION, KEYFRAMES} from './Enum.js'\nimport {strlen, sizeof} from './Utility.js'\n\n/**\n * @param {object[]} children\n * @param {function} callback\n * @return {string}\n */\nexport function serialize (children, callback) {\n\tvar output = ''\n\tvar length = sizeof(children)\n\n\tfor (var i = 0; i < length; i++)\n\t\toutput += callback(children[i], i, children, callback) || ''\n\n\treturn output\n}\n\n/**\n * @param {object} element\n * @param {number} index\n * @param {object[]} children\n * @param {function} callback\n * @return {string}\n */\nexport function stringify (element, index, children, callback) {\n\tswitch (element.type) {\n\t\tcase IMPORT: case DECLARATION: return element.return = element.return || element.value\n\t\tcase COMMENT: return ''\n\t\tcase KEYFRAMES: return element.return = element.value + '{' + serialize(element.children, callback) + '}'\n\t\tcase RULESET: element.value = element.props.join(',')\n\t}\n\n\treturn strlen(children = serialize(element.children, callback)) ? element.return = element.value + '{' + children + '}' : ''\n}\n", "import {MS, MOZ, WEBKIT, RULESET, KEYFRAMES, DECLARATION} from './Enum.js'\nimport {match, charat, substr, strlen, sizeof, replace, combine} from './Utility.js'\nimport {copy, tokenize} from './Tokenizer.js'\nimport {serialize} from './Serializer.js'\nimport {prefix} from './Prefixer.js'\n\n/**\n * @param {function[]} collection\n * @return {function}\n */\nexport function middleware (collection) {\n\tvar length = sizeof(collection)\n\n\treturn function (element, index, children, callback) {\n\t\tvar output = ''\n\n\t\tfor (var i = 0; i < length; i++)\n\t\t\toutput += collection[i](element, index, children, callback) || ''\n\n\t\treturn output\n\t}\n}\n\n/**\n * @param {function} callback\n * @return {function}\n */\nexport function rulesheet (callback) {\n\treturn function (element) {\n\t\tif (!element.root)\n\t\t\tif (element = element.return)\n\t\t\t\tcallback(element)\n\t}\n}\n\n/**\n * @param {object} element\n * @param {number} index\n * @param {object[]} children\n * @param {function} callback\n */\nexport function prefixer (element, index, children, callback) {\n\tif (element.length > -1)\n\t\tif (!element.return)\n\t\t\tswitch (element.type) {\n\t\t\t\tcase DECLARATION: element.return = prefix(element.value, element.length, children)\n\t\t\t\t\treturn\n\t\t\t\tcase KEYFRAMES:\n\t\t\t\t\treturn serialize([copy(element, {value: replace(element.value, '@', '@' + WEBKIT)})], callback)\n\t\t\t\tcase RULESET:\n\t\t\t\t\tif (element.length)\n\t\t\t\t\t\treturn combine(element.props, function (value) {\n\t\t\t\t\t\t\tswitch (match(value, /(::plac\\w+|:read-\\w+)/)) {\n\t\t\t\t\t\t\t\t// :read-(only|write)\n\t\t\t\t\t\t\t\tcase ':read-only': case ':read-write':\n\t\t\t\t\t\t\t\t\treturn serialize([copy(element, {props: [replace(value, /:(read-\\w+)/, ':' + MOZ + '$1')]})], callback)\n\t\t\t\t\t\t\t\t// :placeholder\n\t\t\t\t\t\t\t\tcase '::placeholder':\n\t\t\t\t\t\t\t\t\treturn serialize([\n\t\t\t\t\t\t\t\t\t\tcopy(element, {props: [replace(value, /:(plac\\w+)/, ':' + WEBKIT + 'input-$1')]}),\n\t\t\t\t\t\t\t\t\t\tcopy(element, {props: [replace(value, /:(plac\\w+)/, ':' + MOZ + '$1')]}),\n\t\t\t\t\t\t\t\t\t\tcopy(element, {props: [replace(value, /:(plac\\w+)/, MS + 'input-$1')]})\n\t\t\t\t\t\t\t\t\t], callback)\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\treturn ''\n\t\t\t\t\t\t})\n\t\t\t}\n}\n\n/**\n * @param {object} element\n * @param {number} index\n * @param {object[]} children\n */\nexport function namespace (element) {\n\tswitch (element.type) {\n\t\tcase RULESET:\n\t\t\telement.props = element.props.map(function (value) {\n\t\t\t\treturn combine(tokenize(value), function (value, index, children) {\n\t\t\t\t\tswitch (charat(value, 0)) {\n\t\t\t\t\t\t// \\f\n\t\t\t\t\t\tcase 12:\n\t\t\t\t\t\t\treturn substr(value, 1, strlen(value))\n\t\t\t\t\t\t// \\0 ( + > ~\n\t\t\t\t\t\tcase 0: case 40: case 43: case 62: case 126:\n\t\t\t\t\t\t\treturn value\n\t\t\t\t\t\t// :\n\t\t\t\t\t\tcase 58:\n\t\t\t\t\t\t\tif (children[++index] === 'global')\n\t\t\t\t\t\t\t\tchildren[index] = '', children[++index] = '\\f' + substr(children[index], index = 1, -1)\n\t\t\t\t\t\t// \\s\n\t\t\t\t\t\tcase 32:\n\t\t\t\t\t\t\treturn index === 1 ? '' : value\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tswitch (index) {\n\t\t\t\t\t\t\t\tcase 0: element = value\n\t\t\t\t\t\t\t\t\treturn sizeof(children) > 1 ? '' : value\n\t\t\t\t\t\t\t\tcase index = sizeof(children) - 1: case 2:\n\t\t\t\t\t\t\t\t\treturn index === 2 ? value + element + element : value + element\n\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\treturn value\n\t\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t})\n\t}\n}\n", "const e={attribute:/\\[\\s*(?:(?\\*|[-\\w\\P{ASCII}]*)\\|)?(?[-\\w\\P{ASCII}]+)\\s*(?:(?\\W?=)\\s*(?.+?)\\s*(\\s(?[iIsS]))?\\s*)?\\]/gu,id:/#(?[-\\w\\P{ASCII}]+)/gu,class:/\\.(?[-\\w\\P{ASCII}]+)/gu,comma:/\\s*,\\s*/g,combinator:/\\s*[\\s>+~]\\s*/g,\"pseudo-element\":/::(?[-\\w\\P{ASCII}]+)(?:\\((?\u00B6*)\\))?/gu,\"pseudo-class\":/:(?[-\\w\\P{ASCII}]+)(?:\\((?\u00B6*)\\))?/gu,universal:/(?:(?\\*|[-\\w\\P{ASCII}]*)\\|)?\\*/gu,type:/(?:(?\\*|[-\\w\\P{ASCII}]*)\\|)?(?[-\\w\\P{ASCII}]+)/gu},t=new Set([\"combinator\",\"comma\"]),n=new Set([\"not\",\"is\",\"where\",\"has\",\"matches\",\"-moz-any\",\"-webkit-any\",\"nth-child\",\"nth-last-child\"]),s=/(?[\\dn+-]+)\\s+of\\s+(?.+)/,o={\"nth-child\":s,\"nth-last-child\":s},r=t=>{switch(t){case\"pseudo-element\":case\"pseudo-class\":return new RegExp(e[t].source.replace(\"(?\u00B6*)\",\"(?.*)\"),\"gu\");default:return e[t]}};function c(e,t){let n=0,s=\"\";for(;t(s.push({value:e,offset:t}),\"\uE000\".repeat(e.length))))).replace(a,((e,t,n,o)=>(s.push({value:e,offset:o}),`${t}${\"\uE001\".repeat(n.length)}${t}`)));{let e,n=0;for(;(e=t.indexOf(\"(\",n))>-1;){const o=c(t,e);s.push({value:o,offset:e}),t=`${t.substring(0,e)}(${\"\u00B6\".repeat(o.length-2)})${t.substring(e+o.length)}`,n=e+o.length}}const o=i(t,n),u=new Set;for(const e of s.reverse())for(const t of o){const{offset:n,value:s}=e;if(!(t.pos[0]<=n&&n+s.length<=t.pos[1]))continue;const{content:o}=t,r=n-t.pos[0];t.content=o.slice(0,r)+s+o.slice(r+s.length),t.content!==o&&u.add(t)}for(const e of u){const t=r(e.type);if(!t)throw new Error(`Unknown token type: ${e.type}`);t.lastIndex=0;const n=t.exec(e.content);if(!n)throw new Error(`Unable to parse content for ${e.type}: ${e.content}`);Object.assign(e,n.groups)}return o}function f(e,{list:t=!0}={}){if(t&&e.find((e=>\"comma\"===e.type))){const t=[],n=[];for(let s=0;s=0;t--){let n=e[t];if(\"combinator\"===n.type){let s=e.slice(0,t),o=e.slice(t+1);return{type:\"complex\",combinator:n.content,left:f(s),right:f(o)}}}switch(e.length){case 0:throw new Error(\"Could not build AST.\");case 1:return e[0];default:return{type:\"compound\",list:[...e]}}}function*p(e,t){switch(e.type){case\"list\":for(let t of e.list)yield*p(t,e);break;case\"complex\":yield*p(e.left,e),yield*p(e.right,e);break;case\"compound\":yield*e.list.map((t=>[t,e]));break;default:yield[e,t]}}function h(e,t,n){if(e)for(const[s,o]of p(e,n))t(s,o)}function m(e,{recursive:t=!0,list:s=!0}={}){const r=u(e);if(!r)return;const c=f(r,{list:s});if(!t)return c;for(const[e]of p(c)){if(\"pseudo-class\"!==e.type||!e.argument)continue;if(!n.has(e.name))continue;let t=e.argument;const s=o[e.name];if(s){const n=s.exec(t);if(!n)continue;Object.assign(e,n.groups),t=n.groups.subtree}t&&Object.assign(e,{subtree:m(t,{recursive:!0,list:!0})})}return c}function g(e){let t;return t=Array.isArray(e)?e:[...p(e)].map((([e])=>e)),t.map((e=>e.content)).join(\"\")}function d(e,t){return t=t||Math.max(...e)+1,e[0]*(t<<1)+e[1]*t+e[2]}function w(e){let t=e;if(\"string\"==typeof t&&(t=m(t,{recursive:!0})),!t)return[];if(\"list\"===t.type&&\"list\"in t){let e=10;const n=t.list.map((t=>{const n=w(t);return e=Math.max(e,...w(t)),n})),s=n.map((t=>d(t,e)));return n[s.indexOf(Math.max(...s))]}const s=[0,0,0];for(const[e]of p(t))switch(e.type){case\"id\":s[0]++;break;case\"class\":case\"attribute\":s[1]++;break;case\"pseudo-element\":case\"type\":s[2]++;break;case\"pseudo-class\":if(\"where\"===e.name)break;if(!n.has(e.name)||!e.subtree){s[1]++;break}w(e.subtree).forEach(((e,t)=>s[t]+=e)),\"nth-child\"!==e.name&&\"nth-last-child\"!==e.name||s[1]++}return s}export{n as RECURSIVE_PSEUDO_CLASSES,o as RECURSIVE_PSEUDO_CLASSES_ARGS,e as TOKENS,t as TRIM_TOKENS,p as flatten,c as gobbleParens,m as parse,w as specificity,d as specificityToNumber,g as stringify,u as tokenize,i as tokenizeBy,h as walk};\n"], "mappings": "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", "names": ["walkSync", "ELEMENT_NODE", "TEXT_NODE", "render", "matches", "COMMENT", "RULESET", "DECLARATION", "IMPORT", "KEYFRAMES", "abs", "from", "trim", "value", "replace", "value", "pattern", "replacement", "indexof", "search", "charat", "index", "substr", "begin", "end", "strlen", "sizeof", "append", "array", "line", "column", "length", "position", "character", "characters", "node", "value", "root", "parent", "type", "props", "children", "char", "character", "prev", "position", "charat", "characters", "column", "line", "next", "length", "peek", "caret", "slice", "begin", "end", "substr", "token", "type", "alloc", "value", "strlen", "dealloc", "delimit", "trim", "delimiter", "whitespace", "type", "character", "peek", "next", "token", "escaping", "index", "count", "next", "character", "slice", "caret", "peek", "delimiter", "type", "position", "commenter", "from", "identifier", "token", "compile", "value", "dealloc", "parse", "alloc", "root", "parent", "rule", "rules", "rulesets", "pseudo", "points", "declarations", "index", "offset", "length", "atrule", "property", "previous", "variable", "scanning", "ampersand", "character", "type", "props", "children", "reference", "characters", "next", "charat", "indexof", "replace", "delimit", "whitespace", "escaping", "caret", "peek", "append", "comment", "commenter", "strlen", "declaration", "ruleset", "prev", "from", "identifier", "post", "size", "sizeof", "i", "j", "k", "x", "y", "substr", "abs", "z", "trim", "node", "RULESET", "COMMENT", "char", "DECLARATION", "serialize", "children", "callback", "output", "length", "sizeof", "i", "stringify", "element", "index", "IMPORT", "DECLARATION", "COMMENT", "KEYFRAMES", "RULESET", "strlen", "middleware", "collection", "length", "sizeof", "element", "index", "children", "callback", "output", "i", "e", "t", "n", "s", "o", "r", "c", "i", "a", "l", "u", "f", "p", "m", "e", "t", "s", "r", "u", "c", "f", "p", "n", "o", "scope", "opts", "doc", "hash", "shorthash", "render", "actions", "hasStyle", "selectors", "nodes", "walkSync", "node", "ELEMENT_NODE", "hasAttribute", "selector", "getSelectors", "scopeElement", "c", "TEXT_NODE", "scopeCSS", "s", "action", "NEVER_SCOPED", "name", "matches", "scopeSelector", "ast", "m", "left", "right", "combinator", "css", "serialize", "compile", "middleware", "element", "prop", "stringify", "p", "dictionary", "binary", "bitwise", "str", "i", "ch", "text", "num", "result", "integer", "sign"] }