{"version":3,"sources":["webpack:///./node_modules/parseley/lib/parseley.mjs","webpack:///./node_modules/parseley/lib/parseley.cjs"],"names":["id","d","lexer","ws","match","lineBreaks","idn","hashToken","value","s","slice","str1","str2","asterisk","fullstop","comma","lbr","rbr","eq","gt","vbar","plus","tilde","caret","dollar","firstTokenValue","tokens","second","sumSpec","a0","a1","a2","b0","b1","b2","grammar","Lexer","ParserRules","next","type","list","has","acc","left","right","combinator","specificity","c","wqname","name","namespace","matcher","v","modifier","mod","ns","ParserStart","ast","Object","freeze","__proto__","compiledRulesNoList","parse","str","_parse","parse1","compiledRules1","parser","fromCompiled","feed","results","length","Error","serialize","selector","_serNs","_serStr","reduce","node","map","join","indexOf","replace","normalize","forEach","sort","a","b","_compareArrays","_getSelectorPriority","compareSelectors","compareSpecificity","Array","isArray","shorter","i","defineProperty","exports","nearley","moo","_interopNamespace","e","__esModule","n","create","keys","k","getOwnPropertyDescriptor","get","enumerable","moo__namespace","compile","Parser","Grammar","Ast"],"mappings":"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","file":"js/npm.parseley.2130a43d.js","sourcesContent":["import { Parser, Grammar } from 'nearley';\nimport * as moo from 'moo';\n\n// Generated automatically by nearley, version 2.20.1\r\n// http://github.com/Hardmath123/nearley\r\n// Bypasses TS6133. Allow declared but unused functions.\r\n// @ts-ignore\r\nfunction id(d) { return d[0]; }\r\nconst lexer = moo.compile({\r\n ws: { match: /[ \\t\\r\\n\\f]+/, lineBreaks: true },\r\n idn: { match: /[a-zA-Z_-][a-zA-Z0-9_-]*/ },\r\n hashToken: { match: /#[a-zA-Z0-9_-]+/, value: (s) => s.slice(1) },\r\n str1: { match: /'(?:\\\\['\\\\]|[^\\n'\\\\])*'/, value: (s) => s.slice(1, -1) },\r\n str2: { match: /\"(?:\\\\[\"\\\\]|[^\\n\"\\\\])*\"/, value: (s) => s.slice(1, -1) },\r\n asterisk: '*',\r\n fullstop: '.',\r\n comma: ',',\r\n lbr: '[',\r\n rbr: ']',\r\n eq: '=',\r\n gt: '>',\r\n vbar: '|',\r\n plus: '+',\r\n tilde: '~',\r\n caret: '^',\r\n dollar: '$',\r\n //colon: ':',\r\n //lpar: '(',\r\n //rpar: ')',\r\n});\r\nfunction firstTokenValue(tokens) {\r\n return tokens[0].value;\r\n}\r\nfunction second(tokens) {\r\n return tokens[1];\r\n}\r\nfunction sumSpec([a0, a1, a2], [b0, b1, b2]) {\r\n return [a0 + b0, a1 + b1, a2 + b2];\r\n}\r\nconst grammar = {\r\n Lexer: lexer,\r\n ParserRules: [\r\n { \"name\": \"main\", \"symbols\": [\"_\", \"listSelector\", \"_\"], \"postprocess\": second },\r\n { \"name\": \"mainNoList\", \"symbols\": [\"_\", \"complexSelector\", \"_\"], \"postprocess\": second },\r\n { \"name\": \"listSelector\", \"symbols\": [\"complexSelector\"], \"postprocess\": ([next]) => ({ type: 'list', list: [next] }) },\r\n { \"name\": \"listSelector\", \"symbols\": [\"listSelector\", \"_\", (lexer.has(\"comma\") ? { type: \"comma\" } : comma), \"_\", \"complexSelector\"], \"postprocess\": ([acc, , , , next]) => ({ type: 'list', list: [...acc.list, next] }) },\r\n { \"name\": \"complexSelector\", \"symbols\": [\"compoundSelector\"], \"postprocess\": id },\r\n { \"name\": \"complexSelector\", \"symbols\": [\"complexSelector\", \"__\", \"compoundSelector\"], \"postprocess\": ([left, , right]) => ({\r\n type: 'compound',\r\n list: [...right.list, { type: 'combinator', combinator: ' ', left: left, specificity: left.specificity }],\r\n specificity: sumSpec(left.specificity, right.specificity)\r\n }) },\r\n { \"name\": \"complexSelector\", \"symbols\": [\"complexSelector\", \"_\", \"combinator\", \"_\", \"compoundSelector\"], \"postprocess\": ([left, , c, , right]) => ({\r\n type: 'compound',\r\n list: [...right.list, { type: 'combinator', combinator: c, left: left, specificity: left.specificity }],\r\n specificity: sumSpec(left.specificity, right.specificity)\r\n }) },\r\n { \"name\": \"combinator\", \"symbols\": [(lexer.has(\"gt\") ? { type: \"gt\" } : gt)], \"postprocess\": () => '>' },\r\n { \"name\": \"combinator\", \"symbols\": [(lexer.has(\"plus\") ? { type: \"plus\" } : plus)], \"postprocess\": () => '+' },\r\n { \"name\": \"combinator\", \"symbols\": [(lexer.has(\"tilde\") ? { type: \"tilde\" } : tilde)], \"postprocess\": () => '~' },\r\n { \"name\": \"combinator\", \"symbols\": [(lexer.has(\"vbar\") ? { type: \"vbar\" } : vbar), (lexer.has(\"vbar\") ? { type: \"vbar\" } : vbar)], \"postprocess\": () => '||' },\r\n { \"name\": \"compoundSelector\", \"symbols\": [\"typeSelector\"], \"postprocess\": ([next]) => ({\r\n type: 'compound',\r\n list: [next],\r\n specificity: next.specificity\r\n }) },\r\n { \"name\": \"compoundSelector\", \"symbols\": [\"subclassSelector\"], \"postprocess\": ([next]) => ({\r\n type: 'compound',\r\n list: [next],\r\n specificity: next.specificity\r\n }) },\r\n { \"name\": \"compoundSelector\", \"symbols\": [\"compoundSelector\", \"subclassSelector\"], \"postprocess\": ([acc, next]) => ({\r\n type: 'compound',\r\n list: [...acc.list, next],\r\n specificity: sumSpec(acc.specificity, next.specificity)\r\n }) },\r\n { \"name\": \"subclassSelector\", \"symbols\": [\"idSelector\"], \"postprocess\": id },\r\n { \"name\": \"subclassSelector\", \"symbols\": [\"classSelector\"], \"postprocess\": id },\r\n { \"name\": \"subclassSelector\", \"symbols\": [\"attrSelector\"], \"postprocess\": id },\r\n { \"name\": \"attrSelector\", \"symbols\": [\"attrPresenceSelector\"], \"postprocess\": id },\r\n { \"name\": \"attrSelector\", \"symbols\": [\"attrValueSelector\"], \"postprocess\": id },\r\n { \"name\": \"typeSelector\", \"symbols\": [\"tagSelector\"], \"postprocess\": id },\r\n { \"name\": \"typeSelector\", \"symbols\": [\"uniSelector\"], \"postprocess\": id },\r\n { \"name\": \"attrPresenceSelector\", \"symbols\": [(lexer.has(\"lbr\") ? { type: \"lbr\" } : lbr), \"_\", \"wqname\", \"_\", (lexer.has(\"rbr\") ? { type: \"rbr\" } : rbr)], \"postprocess\": ([, , wqname]) => ({\r\n type: 'attrPresence',\r\n name: wqname.name,\r\n namespace: wqname.namespace,\r\n specificity: [0, 1, 0]\r\n })\r\n },\r\n { \"name\": \"attrValueSelector\", \"symbols\": [(lexer.has(\"lbr\") ? { type: \"lbr\" } : lbr), \"_\", \"wqname\", \"_\", \"attrMatcher\", \"_\", \"attrValue\", \"_\", (lexer.has(\"rbr\") ? { type: \"rbr\" } : rbr)], \"postprocess\": ([, , wqname, , matcher, , v]) => ({\r\n type: 'attrValue',\r\n name: wqname.name,\r\n namespace: wqname.namespace,\r\n matcher: matcher,\r\n value: v.value,\r\n modifier: v.modifier,\r\n specificity: [0, 1, 0]\r\n })\r\n },\r\n { \"name\": \"attrMatcher\", \"symbols\": [(lexer.has(\"eq\") ? { type: \"eq\" } : eq)], \"postprocess\": () => '=' },\r\n { \"name\": \"attrMatcher\", \"symbols\": [(lexer.has(\"tilde\") ? { type: \"tilde\" } : tilde), (lexer.has(\"eq\") ? { type: \"eq\" } : eq)], \"postprocess\": () => '~=' },\r\n { \"name\": \"attrMatcher\", \"symbols\": [(lexer.has(\"vbar\") ? { type: \"vbar\" } : vbar), (lexer.has(\"eq\") ? { type: \"eq\" } : eq)], \"postprocess\": () => '|=' },\r\n { \"name\": \"attrMatcher\", \"symbols\": [(lexer.has(\"caret\") ? { type: \"caret\" } : caret), (lexer.has(\"eq\") ? { type: \"eq\" } : eq)], \"postprocess\": () => '^=' },\r\n { \"name\": \"attrMatcher\", \"symbols\": [(lexer.has(\"dollar\") ? { type: \"dollar\" } : dollar), (lexer.has(\"eq\") ? { type: \"eq\" } : eq)], \"postprocess\": () => '$=' },\r\n { \"name\": \"attrMatcher\", \"symbols\": [(lexer.has(\"asterisk\") ? { type: \"asterisk\" } : asterisk), (lexer.has(\"eq\") ? { type: \"eq\" } : eq)], \"postprocess\": () => '*=' },\r\n { \"name\": \"attrValue\", \"symbols\": [\"str\"], \"postprocess\": ([v]) => ({ value: v, modifier: null }) },\r\n { \"name\": \"attrValue\", \"symbols\": [\"idn\"], \"postprocess\": ([v]) => ({ value: v, modifier: null }) },\r\n { \"name\": \"attrValue\", \"symbols\": [\"str\", \"_\", \"attrModifier\"], \"postprocess\": ([v, , mod]) => ({ value: v, modifier: mod }) },\r\n { \"name\": \"attrValue\", \"symbols\": [\"idn\", \"__\", \"attrModifier\"], \"postprocess\": ([v, , mod]) => ({ value: v, modifier: mod }) },\r\n { \"name\": \"attrModifier\", \"symbols\": [{ \"literal\": \"i\" }], \"postprocess\": () => 'i' },\r\n { \"name\": \"attrModifier\", \"symbols\": [{ \"literal\": \"I\" }], \"postprocess\": () => 'i' },\r\n { \"name\": \"attrModifier\", \"symbols\": [{ \"literal\": \"s\" }], \"postprocess\": () => 's' },\r\n { \"name\": \"attrModifier\", \"symbols\": [{ \"literal\": \"S\" }], \"postprocess\": () => 's' },\r\n { \"name\": \"idSelector\", \"symbols\": [(lexer.has(\"hashToken\") ? { type: \"hashToken\" } : hashToken)], \"postprocess\": ([{ value: name }]) => ({ type: 'id', name: name, specificity: [1, 0, 0] }) },\r\n { \"name\": \"classSelector\", \"symbols\": [(lexer.has(\"fullstop\") ? { type: \"fullstop\" } : fullstop), \"idn\"], \"postprocess\": ([, name]) => ({ type: 'class', name: name, specificity: [0, 1, 0] }) },\r\n { \"name\": \"tagSelector\", \"symbols\": [\"wqname\"], \"postprocess\": ([wqname]) => ({\r\n type: 'tag',\r\n name: wqname.name,\r\n namespace: wqname.namespace,\r\n specificity: [0, 0, 1]\r\n })\r\n },\r\n { \"name\": \"uniSelector\", \"symbols\": [(lexer.has(\"asterisk\") ? { type: \"asterisk\" } : asterisk)], \"postprocess\": () => ({ type: 'universal', namespace: null, specificity: [0, 0, 0] }) },\r\n { \"name\": \"uniSelector\", \"symbols\": [\"ns\", (lexer.has(\"asterisk\") ? { type: \"asterisk\" } : asterisk)], \"postprocess\": ([ns]) => ({ type: 'universal', namespace: ns, specificity: [0, 0, 0] }) },\r\n { \"name\": \"wqname\", \"symbols\": [\"idn\"], \"postprocess\": ([name]) => ({ name: name, namespace: null }) },\r\n { \"name\": \"wqname\", \"symbols\": [\"ns\", \"idn\"], \"postprocess\": ([ns, name]) => ({ name: name, namespace: ns }) },\r\n { \"name\": \"ns\", \"symbols\": [(lexer.has(\"vbar\") ? { type: \"vbar\" } : vbar)], \"postprocess\": () => '' },\r\n { \"name\": \"ns\", \"symbols\": [\"idn\", (lexer.has(\"vbar\") ? { type: \"vbar\" } : vbar)], \"postprocess\": id },\r\n { \"name\": \"str\", \"symbols\": [(lexer.has(\"str1\") ? { type: \"str1\" } : str1)], \"postprocess\": firstTokenValue },\r\n { \"name\": \"str\", \"symbols\": [(lexer.has(\"str2\") ? { type: \"str2\" } : str2)], \"postprocess\": firstTokenValue },\r\n { \"name\": \"idn\", \"symbols\": [(lexer.has(\"idn\") ? { type: \"idn\" } : idn)], \"postprocess\": firstTokenValue },\r\n { \"name\": \"_$ebnf$1\", \"symbols\": [(lexer.has(\"ws\") ? { type: \"ws\" } : ws)], \"postprocess\": id },\r\n { \"name\": \"_$ebnf$1\", \"symbols\": [], \"postprocess\": () => null },\r\n { \"name\": \"_\", \"symbols\": [\"_$ebnf$1\"], \"postprocess\": () => null },\r\n { \"name\": \"__\", \"symbols\": [(lexer.has(\"ws\") ? { type: \"ws\" } : ws)], \"postprocess\": () => null }\r\n ],\r\n ParserStart: \"main\",\r\n};\n\nvar ast = /*#__PURE__*/Object.freeze({\n __proto__: null\n});\n\n// Passing the start argument to a parser or grammar constructor\r\n// doesn't seem to work as expected.\r\nconst compiledRulesNoList = { ...grammar, ParserStart: 'mainNoList' };\r\n/**\r\n * Parse a CSS selector string.\r\n *\r\n * This function supports comma-separated selector lists\r\n * and always returns an AST starting from a node of type `list`.\r\n *\r\n * @param str - CSS selector string (can contain commas).\r\n */\r\nfunction parse(str) {\r\n return _parse(grammar, str);\r\n}\r\n/**\r\n * Parse a CSS selector string.\r\n *\r\n * This function does not support comma-separated selector lists\r\n * and always returns an AST starting from a node of type `compound`.\r\n *\r\n * @param str - CSS selector string (no commas).\r\n */\r\nfunction parse1(str) {\r\n return _parse(compiledRulesNoList, str);\r\n}\r\nfunction _parse(compiledRules1, str) {\r\n const parser = new Parser(Grammar.fromCompiled(compiledRules1));\r\n parser.feed(str);\r\n if (parser.results.length === 0) {\r\n throw new Error('Failed to parse - input string might be incomplete.');\r\n }\r\n return parser.results[0];\r\n}\r\n/**\r\n * Convert a selector AST back to a string representation.\r\n *\r\n * Note: formatting is not preserved in the AST.\r\n *\r\n * @param selector - A selector AST object.\r\n */\r\nfunction serialize(selector) {\r\n if (!selector.type) {\r\n throw new Error('This is not an AST node.');\r\n }\r\n switch (selector.type) {\r\n case 'universal':\r\n return _serNs(selector.namespace) + '*';\r\n case 'tag':\r\n return _serNs(selector.namespace) + selector.name;\r\n case 'class':\r\n return '.' + selector.name;\r\n case 'id':\r\n return '#' + selector.name;\r\n case 'attrPresence':\r\n return `[${_serNs(selector.namespace)}${selector.name}]`;\r\n case 'attrValue':\r\n return `[${_serNs(selector.namespace)}${selector.name}${selector.matcher}${_serStr(selector.value)}${(selector.modifier ? selector.modifier : '')}]`;\r\n case 'combinator':\r\n return serialize(selector.left) + selector.combinator;\r\n case 'compound':\r\n return selector.list.reduce((acc, node) => {\r\n if (node.type === 'combinator') {\r\n return serialize(node) + acc;\r\n }\r\n else {\r\n return acc + serialize(node);\r\n }\r\n }, '');\r\n case 'list':\r\n return selector.list.map(serialize).join(',');\r\n }\r\n}\r\nfunction _serNs(ns) {\r\n return (ns || ns === '')\r\n ? ns + '|'\r\n : '';\r\n}\r\nfunction _serStr(str) {\r\n if (str.indexOf('\"') === -1) {\r\n return `\"${str}\"`;\r\n }\r\n else if (str.indexOf(\"'\") === -1) {\r\n return `'${str}'`;\r\n }\r\n else {\r\n return `\"${str.replace('\"', '\\\\\"')}\"`;\r\n }\r\n}\r\n/**\r\n * Modifies the given AST **in place** to have all internal arrays\r\n * in a stable order. Returns the AST.\r\n *\r\n * Intended for consitent processing and normalized `serialize()` output.\r\n *\r\n * @param selector - A selector AST object.\r\n */\r\nfunction normalize(selector) {\r\n if (!selector.type) {\r\n throw new Error('This is not an AST node.');\r\n }\r\n switch (selector.type) {\r\n case 'compound': {\r\n selector.list.forEach(normalize);\r\n selector.list.sort((a, b) => _compareArrays(_getSelectorPriority(a), _getSelectorPriority(b)));\r\n break;\r\n }\r\n case 'combinator': {\r\n normalize(selector.left);\r\n break;\r\n }\r\n case 'list': {\r\n selector.list.forEach(normalize);\r\n selector.list.sort((a, b) => (serialize(a) < serialize(b)) ? -1 : 1);\r\n break;\r\n }\r\n }\r\n return selector;\r\n}\r\nfunction _getSelectorPriority(selector) {\r\n switch (selector.type) {\r\n case 'universal':\r\n return [1];\r\n case 'tag':\r\n return [1];\r\n case 'id':\r\n return [2];\r\n case 'class':\r\n return [3, selector.name];\r\n case 'attrPresence':\r\n return [4, serialize(selector)];\r\n case 'attrValue':\r\n return [5, serialize(selector)];\r\n case 'combinator':\r\n return [15, serialize(selector)];\r\n }\r\n}\r\n/**\r\n * Compare selectors based on their specificity.\r\n *\r\n * Usable as a comparator for sorting.\r\n *\r\n * @param a - First selector.\r\n * @param b - Second selector.\r\n */\r\nfunction compareSelectors(a, b) {\r\n return _compareArrays(a.specificity, b.specificity);\r\n}\r\n/**\r\n * Compare specificity values without reducing them\r\n * as arbitrary base numbers.\r\n *\r\n * Usable as a comparator for sorting.\r\n *\r\n * @param a - First specificity value.\r\n * @param b - Second specificity value.\r\n */\r\nfunction compareSpecificity(a, b) {\r\n return _compareArrays(a, b);\r\n}\r\nfunction _compareArrays(a, b) {\r\n if (!Array.isArray(a) || !Array.isArray(b)) {\r\n throw new Error('Arguments must be arrays.');\r\n }\r\n const shorter = (a.length < b.length) ? a.length : b.length;\r\n for (let i = 0; i < shorter; i++) {\r\n if (a[i] === b[i]) {\r\n continue;\r\n }\r\n return (a[i] < b[i]) ? -1 : 1;\r\n }\r\n return a.length - b.length;\r\n}\n\nexport { ast as Ast, compareSelectors, compareSpecificity, normalize, parse, parse1, serialize };\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nvar nearley = require('nearley');\nvar moo = require('moo');\n\nfunction _interopNamespace(e) {\n if (e && e.__esModule) return e;\n var n = Object.create(null);\n if (e) {\n Object.keys(e).forEach(function (k) {\n if (k !== 'default') {\n var d = Object.getOwnPropertyDescriptor(e, k);\n Object.defineProperty(n, k, d.get ? d : {\n enumerable: true,\n get: function () {\n return e[k];\n }\n });\n }\n });\n }\n n['default'] = e;\n return Object.freeze(n);\n}\n\nvar moo__namespace = /*#__PURE__*/_interopNamespace(moo);\n\n// Generated automatically by nearley, version 2.20.1\r\n// http://github.com/Hardmath123/nearley\r\n// Bypasses TS6133. Allow declared but unused functions.\r\n// @ts-ignore\r\nfunction id(d) { return d[0]; }\r\nconst lexer = moo__namespace.compile({\r\n ws: { match: /[ \\t\\r\\n\\f]+/, lineBreaks: true },\r\n idn: { match: /[a-zA-Z_-][a-zA-Z0-9_-]*/ },\r\n hashToken: { match: /#[a-zA-Z0-9_-]+/, value: (s) => s.slice(1) },\r\n str1: { match: /'(?:\\\\['\\\\]|[^\\n'\\\\])*'/, value: (s) => s.slice(1, -1) },\r\n str2: { match: /\"(?:\\\\[\"\\\\]|[^\\n\"\\\\])*\"/, value: (s) => s.slice(1, -1) },\r\n asterisk: '*',\r\n fullstop: '.',\r\n comma: ',',\r\n lbr: '[',\r\n rbr: ']',\r\n eq: '=',\r\n gt: '>',\r\n vbar: '|',\r\n plus: '+',\r\n tilde: '~',\r\n caret: '^',\r\n dollar: '$',\r\n //colon: ':',\r\n //lpar: '(',\r\n //rpar: ')',\r\n});\r\nfunction firstTokenValue(tokens) {\r\n return tokens[0].value;\r\n}\r\nfunction second(tokens) {\r\n return tokens[1];\r\n}\r\nfunction sumSpec([a0, a1, a2], [b0, b1, b2]) {\r\n return [a0 + b0, a1 + b1, a2 + b2];\r\n}\r\nconst grammar = {\r\n Lexer: lexer,\r\n ParserRules: [\r\n { \"name\": \"main\", \"symbols\": [\"_\", \"listSelector\", \"_\"], \"postprocess\": second },\r\n { \"name\": \"mainNoList\", \"symbols\": [\"_\", \"complexSelector\", \"_\"], \"postprocess\": second },\r\n { \"name\": \"listSelector\", \"symbols\": [\"complexSelector\"], \"postprocess\": ([next]) => ({ type: 'list', list: [next] }) },\r\n { \"name\": \"listSelector\", \"symbols\": [\"listSelector\", \"_\", (lexer.has(\"comma\") ? { type: \"comma\" } : comma), \"_\", \"complexSelector\"], \"postprocess\": ([acc, , , , next]) => ({ type: 'list', list: [...acc.list, next] }) },\r\n { \"name\": \"complexSelector\", \"symbols\": [\"compoundSelector\"], \"postprocess\": id },\r\n { \"name\": \"complexSelector\", \"symbols\": [\"complexSelector\", \"__\", \"compoundSelector\"], \"postprocess\": ([left, , right]) => ({\r\n type: 'compound',\r\n list: [...right.list, { type: 'combinator', combinator: ' ', left: left, specificity: left.specificity }],\r\n specificity: sumSpec(left.specificity, right.specificity)\r\n }) },\r\n { \"name\": \"complexSelector\", \"symbols\": [\"complexSelector\", \"_\", \"combinator\", \"_\", \"compoundSelector\"], \"postprocess\": ([left, , c, , right]) => ({\r\n type: 'compound',\r\n list: [...right.list, { type: 'combinator', combinator: c, left: left, specificity: left.specificity }],\r\n specificity: sumSpec(left.specificity, right.specificity)\r\n }) },\r\n { \"name\": \"combinator\", \"symbols\": [(lexer.has(\"gt\") ? { type: \"gt\" } : gt)], \"postprocess\": () => '>' },\r\n { \"name\": \"combinator\", \"symbols\": [(lexer.has(\"plus\") ? { type: \"plus\" } : plus)], \"postprocess\": () => '+' },\r\n { \"name\": \"combinator\", \"symbols\": [(lexer.has(\"tilde\") ? { type: \"tilde\" } : tilde)], \"postprocess\": () => '~' },\r\n { \"name\": \"combinator\", \"symbols\": [(lexer.has(\"vbar\") ? { type: \"vbar\" } : vbar), (lexer.has(\"vbar\") ? { type: \"vbar\" } : vbar)], \"postprocess\": () => '||' },\r\n { \"name\": \"compoundSelector\", \"symbols\": [\"typeSelector\"], \"postprocess\": ([next]) => ({\r\n type: 'compound',\r\n list: [next],\r\n specificity: next.specificity\r\n }) },\r\n { \"name\": \"compoundSelector\", \"symbols\": [\"subclassSelector\"], \"postprocess\": ([next]) => ({\r\n type: 'compound',\r\n list: [next],\r\n specificity: next.specificity\r\n }) },\r\n { \"name\": \"compoundSelector\", \"symbols\": [\"compoundSelector\", \"subclassSelector\"], \"postprocess\": ([acc, next]) => ({\r\n type: 'compound',\r\n list: [...acc.list, next],\r\n specificity: sumSpec(acc.specificity, next.specificity)\r\n }) },\r\n { \"name\": \"subclassSelector\", \"symbols\": [\"idSelector\"], \"postprocess\": id },\r\n { \"name\": \"subclassSelector\", \"symbols\": [\"classSelector\"], \"postprocess\": id },\r\n { \"name\": \"subclassSelector\", \"symbols\": [\"attrSelector\"], \"postprocess\": id },\r\n { \"name\": \"attrSelector\", \"symbols\": [\"attrPresenceSelector\"], \"postprocess\": id },\r\n { \"name\": \"attrSelector\", \"symbols\": [\"attrValueSelector\"], \"postprocess\": id },\r\n { \"name\": \"typeSelector\", \"symbols\": [\"tagSelector\"], \"postprocess\": id },\r\n { \"name\": \"typeSelector\", \"symbols\": [\"uniSelector\"], \"postprocess\": id },\r\n { \"name\": \"attrPresenceSelector\", \"symbols\": [(lexer.has(\"lbr\") ? { type: \"lbr\" } : lbr), \"_\", \"wqname\", \"_\", (lexer.has(\"rbr\") ? { type: \"rbr\" } : rbr)], \"postprocess\": ([, , wqname]) => ({\r\n type: 'attrPresence',\r\n name: wqname.name,\r\n namespace: wqname.namespace,\r\n specificity: [0, 1, 0]\r\n })\r\n },\r\n { \"name\": \"attrValueSelector\", \"symbols\": [(lexer.has(\"lbr\") ? { type: \"lbr\" } : lbr), \"_\", \"wqname\", \"_\", \"attrMatcher\", \"_\", \"attrValue\", \"_\", (lexer.has(\"rbr\") ? { type: \"rbr\" } : rbr)], \"postprocess\": ([, , wqname, , matcher, , v]) => ({\r\n type: 'attrValue',\r\n name: wqname.name,\r\n namespace: wqname.namespace,\r\n matcher: matcher,\r\n value: v.value,\r\n modifier: v.modifier,\r\n specificity: [0, 1, 0]\r\n })\r\n },\r\n { \"name\": \"attrMatcher\", \"symbols\": [(lexer.has(\"eq\") ? { type: \"eq\" } : eq)], \"postprocess\": () => '=' },\r\n { \"name\": \"attrMatcher\", \"symbols\": [(lexer.has(\"tilde\") ? { type: \"tilde\" } : tilde), (lexer.has(\"eq\") ? { type: \"eq\" } : eq)], \"postprocess\": () => '~=' },\r\n { \"name\": \"attrMatcher\", \"symbols\": [(lexer.has(\"vbar\") ? { type: \"vbar\" } : vbar), (lexer.has(\"eq\") ? { type: \"eq\" } : eq)], \"postprocess\": () => '|=' },\r\n { \"name\": \"attrMatcher\", \"symbols\": [(lexer.has(\"caret\") ? { type: \"caret\" } : caret), (lexer.has(\"eq\") ? { type: \"eq\" } : eq)], \"postprocess\": () => '^=' },\r\n { \"name\": \"attrMatcher\", \"symbols\": [(lexer.has(\"dollar\") ? { type: \"dollar\" } : dollar), (lexer.has(\"eq\") ? { type: \"eq\" } : eq)], \"postprocess\": () => '$=' },\r\n { \"name\": \"attrMatcher\", \"symbols\": [(lexer.has(\"asterisk\") ? { type: \"asterisk\" } : asterisk), (lexer.has(\"eq\") ? { type: \"eq\" } : eq)], \"postprocess\": () => '*=' },\r\n { \"name\": \"attrValue\", \"symbols\": [\"str\"], \"postprocess\": ([v]) => ({ value: v, modifier: null }) },\r\n { \"name\": \"attrValue\", \"symbols\": [\"idn\"], \"postprocess\": ([v]) => ({ value: v, modifier: null }) },\r\n { \"name\": \"attrValue\", \"symbols\": [\"str\", \"_\", \"attrModifier\"], \"postprocess\": ([v, , mod]) => ({ value: v, modifier: mod }) },\r\n { \"name\": \"attrValue\", \"symbols\": [\"idn\", \"__\", \"attrModifier\"], \"postprocess\": ([v, , mod]) => ({ value: v, modifier: mod }) },\r\n { \"name\": \"attrModifier\", \"symbols\": [{ \"literal\": \"i\" }], \"postprocess\": () => 'i' },\r\n { \"name\": \"attrModifier\", \"symbols\": [{ \"literal\": \"I\" }], \"postprocess\": () => 'i' },\r\n { \"name\": \"attrModifier\", \"symbols\": [{ \"literal\": \"s\" }], \"postprocess\": () => 's' },\r\n { \"name\": \"attrModifier\", \"symbols\": [{ \"literal\": \"S\" }], \"postprocess\": () => 's' },\r\n { \"name\": \"idSelector\", \"symbols\": [(lexer.has(\"hashToken\") ? { type: \"hashToken\" } : hashToken)], \"postprocess\": ([{ value: name }]) => ({ type: 'id', name: name, specificity: [1, 0, 0] }) },\r\n { \"name\": \"classSelector\", \"symbols\": [(lexer.has(\"fullstop\") ? { type: \"fullstop\" } : fullstop), \"idn\"], \"postprocess\": ([, name]) => ({ type: 'class', name: name, specificity: [0, 1, 0] }) },\r\n { \"name\": \"tagSelector\", \"symbols\": [\"wqname\"], \"postprocess\": ([wqname]) => ({\r\n type: 'tag',\r\n name: wqname.name,\r\n namespace: wqname.namespace,\r\n specificity: [0, 0, 1]\r\n })\r\n },\r\n { \"name\": \"uniSelector\", \"symbols\": [(lexer.has(\"asterisk\") ? { type: \"asterisk\" } : asterisk)], \"postprocess\": () => ({ type: 'universal', namespace: null, specificity: [0, 0, 0] }) },\r\n { \"name\": \"uniSelector\", \"symbols\": [\"ns\", (lexer.has(\"asterisk\") ? { type: \"asterisk\" } : asterisk)], \"postprocess\": ([ns]) => ({ type: 'universal', namespace: ns, specificity: [0, 0, 0] }) },\r\n { \"name\": \"wqname\", \"symbols\": [\"idn\"], \"postprocess\": ([name]) => ({ name: name, namespace: null }) },\r\n { \"name\": \"wqname\", \"symbols\": [\"ns\", \"idn\"], \"postprocess\": ([ns, name]) => ({ name: name, namespace: ns }) },\r\n { \"name\": \"ns\", \"symbols\": [(lexer.has(\"vbar\") ? { type: \"vbar\" } : vbar)], \"postprocess\": () => '' },\r\n { \"name\": \"ns\", \"symbols\": [\"idn\", (lexer.has(\"vbar\") ? { type: \"vbar\" } : vbar)], \"postprocess\": id },\r\n { \"name\": \"str\", \"symbols\": [(lexer.has(\"str1\") ? { type: \"str1\" } : str1)], \"postprocess\": firstTokenValue },\r\n { \"name\": \"str\", \"symbols\": [(lexer.has(\"str2\") ? { type: \"str2\" } : str2)], \"postprocess\": firstTokenValue },\r\n { \"name\": \"idn\", \"symbols\": [(lexer.has(\"idn\") ? { type: \"idn\" } : idn)], \"postprocess\": firstTokenValue },\r\n { \"name\": \"_$ebnf$1\", \"symbols\": [(lexer.has(\"ws\") ? { type: \"ws\" } : ws)], \"postprocess\": id },\r\n { \"name\": \"_$ebnf$1\", \"symbols\": [], \"postprocess\": () => null },\r\n { \"name\": \"_\", \"symbols\": [\"_$ebnf$1\"], \"postprocess\": () => null },\r\n { \"name\": \"__\", \"symbols\": [(lexer.has(\"ws\") ? { type: \"ws\" } : ws)], \"postprocess\": () => null }\r\n ],\r\n ParserStart: \"main\",\r\n};\n\nvar ast = /*#__PURE__*/Object.freeze({\n __proto__: null\n});\n\n// Passing the start argument to a parser or grammar constructor\r\n// doesn't seem to work as expected.\r\nconst compiledRulesNoList = { ...grammar, ParserStart: 'mainNoList' };\r\n/**\r\n * Parse a CSS selector string.\r\n *\r\n * This function supports comma-separated selector lists\r\n * and always returns an AST starting from a node of type `list`.\r\n *\r\n * @param str - CSS selector string (can contain commas).\r\n */\r\nfunction parse(str) {\r\n return _parse(grammar, str);\r\n}\r\n/**\r\n * Parse a CSS selector string.\r\n *\r\n * This function does not support comma-separated selector lists\r\n * and always returns an AST starting from a node of type `compound`.\r\n *\r\n * @param str - CSS selector string (no commas).\r\n */\r\nfunction parse1(str) {\r\n return _parse(compiledRulesNoList, str);\r\n}\r\nfunction _parse(compiledRules1, str) {\r\n const parser = new nearley.Parser(nearley.Grammar.fromCompiled(compiledRules1));\r\n parser.feed(str);\r\n if (parser.results.length === 0) {\r\n throw new Error('Failed to parse - input string might be incomplete.');\r\n }\r\n return parser.results[0];\r\n}\r\n/**\r\n * Convert a selector AST back to a string representation.\r\n *\r\n * Note: formatting is not preserved in the AST.\r\n *\r\n * @param selector - A selector AST object.\r\n */\r\nfunction serialize(selector) {\r\n if (!selector.type) {\r\n throw new Error('This is not an AST node.');\r\n }\r\n switch (selector.type) {\r\n case 'universal':\r\n return _serNs(selector.namespace) + '*';\r\n case 'tag':\r\n return _serNs(selector.namespace) + selector.name;\r\n case 'class':\r\n return '.' + selector.name;\r\n case 'id':\r\n return '#' + selector.name;\r\n case 'attrPresence':\r\n return `[${_serNs(selector.namespace)}${selector.name}]`;\r\n case 'attrValue':\r\n return `[${_serNs(selector.namespace)}${selector.name}${selector.matcher}${_serStr(selector.value)}${(selector.modifier ? selector.modifier : '')}]`;\r\n case 'combinator':\r\n return serialize(selector.left) + selector.combinator;\r\n case 'compound':\r\n return selector.list.reduce((acc, node) => {\r\n if (node.type === 'combinator') {\r\n return serialize(node) + acc;\r\n }\r\n else {\r\n return acc + serialize(node);\r\n }\r\n }, '');\r\n case 'list':\r\n return selector.list.map(serialize).join(',');\r\n }\r\n}\r\nfunction _serNs(ns) {\r\n return (ns || ns === '')\r\n ? ns + '|'\r\n : '';\r\n}\r\nfunction _serStr(str) {\r\n if (str.indexOf('\"') === -1) {\r\n return `\"${str}\"`;\r\n }\r\n else if (str.indexOf(\"'\") === -1) {\r\n return `'${str}'`;\r\n }\r\n else {\r\n return `\"${str.replace('\"', '\\\\\"')}\"`;\r\n }\r\n}\r\n/**\r\n * Modifies the given AST **in place** to have all internal arrays\r\n * in a stable order. Returns the AST.\r\n *\r\n * Intended for consitent processing and normalized `serialize()` output.\r\n *\r\n * @param selector - A selector AST object.\r\n */\r\nfunction normalize(selector) {\r\n if (!selector.type) {\r\n throw new Error('This is not an AST node.');\r\n }\r\n switch (selector.type) {\r\n case 'compound': {\r\n selector.list.forEach(normalize);\r\n selector.list.sort((a, b) => _compareArrays(_getSelectorPriority(a), _getSelectorPriority(b)));\r\n break;\r\n }\r\n case 'combinator': {\r\n normalize(selector.left);\r\n break;\r\n }\r\n case 'list': {\r\n selector.list.forEach(normalize);\r\n selector.list.sort((a, b) => (serialize(a) < serialize(b)) ? -1 : 1);\r\n break;\r\n }\r\n }\r\n return selector;\r\n}\r\nfunction _getSelectorPriority(selector) {\r\n switch (selector.type) {\r\n case 'universal':\r\n return [1];\r\n case 'tag':\r\n return [1];\r\n case 'id':\r\n return [2];\r\n case 'class':\r\n return [3, selector.name];\r\n case 'attrPresence':\r\n return [4, serialize(selector)];\r\n case 'attrValue':\r\n return [5, serialize(selector)];\r\n case 'combinator':\r\n return [15, serialize(selector)];\r\n }\r\n}\r\n/**\r\n * Compare selectors based on their specificity.\r\n *\r\n * Usable as a comparator for sorting.\r\n *\r\n * @param a - First selector.\r\n * @param b - Second selector.\r\n */\r\nfunction compareSelectors(a, b) {\r\n return _compareArrays(a.specificity, b.specificity);\r\n}\r\n/**\r\n * Compare specificity values without reducing them\r\n * as arbitrary base numbers.\r\n *\r\n * Usable as a comparator for sorting.\r\n *\r\n * @param a - First specificity value.\r\n * @param b - Second specificity value.\r\n */\r\nfunction compareSpecificity(a, b) {\r\n return _compareArrays(a, b);\r\n}\r\nfunction _compareArrays(a, b) {\r\n if (!Array.isArray(a) || !Array.isArray(b)) {\r\n throw new Error('Arguments must be arrays.');\r\n }\r\n const shorter = (a.length < b.length) ? a.length : b.length;\r\n for (let i = 0; i < shorter; i++) {\r\n if (a[i] === b[i]) {\r\n continue;\r\n }\r\n return (a[i] < b[i]) ? -1 : 1;\r\n }\r\n return a.length - b.length;\r\n}\n\nexports.Ast = ast;\nexports.compareSelectors = compareSelectors;\nexports.compareSpecificity = compareSpecificity;\nexports.normalize = normalize;\nexports.parse = parse;\nexports.parse1 = parse1;\nexports.serialize = serialize;\n"],"sourceRoot":""}