UNPKG

ocrmnav

Version:

DevStack - The Complete Developer Toolkit - Virtual file system, workflow automation, and more than 65+ other development tools / features in one seamless extension. Cutting down dev times never before seen.

710 lines (546 loc) 24 kB
exports.id = 134; exports.ids = [134]; exports.modules = { /***/ 1537: /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (/* binding */ uniteSets) /* harmony export */ }); /** * Unite two or more sets * * @param {Iterable<string>[]} args * @see {@link https://github.com/microsoft/TypeScript/issues/57228|GitHub} */ function uniteSets(...args) { return new Set([...args].reduce((result, set) => [...result, ...set], [])); } /***/ }), /***/ 1665: /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (/* binding */ getStrippedSelectorSource) /* harmony export */ }); /* harmony import */ var postcss_selector_parser__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(1666); const { isComment } = postcss_selector_parser__WEBPACK_IMPORTED_MODULE_0__; /** * Get the source of a selector, excluding surrounding whitespace and comments. * * @param {import('postcss-selector-parser').Selector} node * * @returns {{selector: string, index: number, endIndex: number}} */ function getStrippedSelectorSource(node) { const firstIndex = node.nodes.findIndex((x) => !isComment(x)); const lastIndex = node.nodes.findLastIndex((x) => !isComment(x)); const first = node.nodes[firstIndex]; let last = node.nodes[lastIndex]; if (!first || !last) { const selector = node.toString().trim(); const index = node.sourceIndex ?? 0; const endIndex = index + selector.length; return { selector, index, endIndex, }; } last = last.rawSpaceAfter.length ? last.clone() : last; last.rawSpaceAfter = ''; let selector = node.nodes.slice(firstIndex, lastIndex).map(String).join(''); selector += last.toString(); selector = selector.trim(); const index = first.sourceIndex ?? 0; const endIndex = index + selector.length; return { selector, index, endIndex, }; } /***/ }), /***/ 1698: /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (/* binding */ parseSelector) /* harmony export */ }); /* harmony import */ var postcss_selector_parser__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(1666); /** * @param {string} selector * @param {import('stylelint').PostcssResult} result * @param {import('postcss').Node} node * @param {(root: import('postcss-selector-parser').Root) => void} [callback] - Deprecated. It will be removed in the future. * @returns {import('postcss-selector-parser').Root | undefined} */ function parseSelector(selector, result, node, callback) { if (!selector) return undefined; try { // TODO: Remove `callback` in the future. See #7647. if (callback) { // @ts-expect-error -- TS2322: Type 'string' is not assignable to type 'Root'. return postcss_selector_parser__WEBPACK_IMPORTED_MODULE_0__(callback).processSync(selector); } return postcss_selector_parser__WEBPACK_IMPORTED_MODULE_0__().astSync(selector); } catch (err) { result.warn(`Cannot parse selector (${err})`, { node, stylelintType: 'parseError' }); return undefined; } } /***/ }), /***/ 1727: /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _csstools_selector_specificity__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(1728); /* harmony import */ var _utils_typeGuards_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(886); /* harmony import */ var _utils_findAtRuleContext_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(1729); /* harmony import */ var _utils_flattenNestedSelectorsForRule_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(1730); /* harmony import */ var _utils_getStrippedSelectorSource_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(1665); /* harmony import */ var _utils_isStandardSyntaxRule_mjs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(1568); /* harmony import */ var _utils_nodeContextLookup_mjs__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(1732); /* harmony import */ var _utils_normalizeSelector_mjs__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(1733); /* harmony import */ var _utils_optionsMatches_mjs__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(869); /* harmony import */ var _reference_selectors_mjs__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(1734); /* harmony import */ var _utils_report_mjs__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(945); /* harmony import */ var _utils_ruleMessages_mjs__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(950); /* harmony import */ var _utils_validateOptions_mjs__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(873); const ruleName = 'no-descending-specificity'; const messages = (0,_utils_ruleMessages_mjs__WEBPACK_IMPORTED_MODULE_11__["default"])(ruleName, { expected: (b, a, line) => { return `Expected selector "${b}" to come before selector "${a}", at line ${line}`; }, }); const meta = { url: 'https://stylelint.io/user-guide/rules/no-descending-specificity', }; /** @typedef {{ selector: string, specificity: import('@csstools/selector-specificity').Specificity, line: number }} Entry */ /** @type {import('stylelint').CoreRules[ruleName]} */ const rule = (primary, secondaryOptions) => { return (root, result) => { const validOptions = (0,_utils_validateOptions_mjs__WEBPACK_IMPORTED_MODULE_12__["default"])( result, ruleName, { actual: primary, }, { optional: true, actual: secondaryOptions, possible: { ignore: ['selectors-within-list'], }, }, ); if (!validOptions) { return; } const ignoreSelectorsWithinList = (0,_utils_optionsMatches_mjs__WEBPACK_IMPORTED_MODULE_8__["default"])( secondaryOptions, 'ignore', 'selectors-within-list', ); const selectorContextLookup = (0,_utils_nodeContextLookup_mjs__WEBPACK_IMPORTED_MODULE_6__["default"])(); root.walkRules((ruleNode) => { // Ignore nested property `foo: {};` if (!(0,_utils_isStandardSyntaxRule_mjs__WEBPACK_IMPORTED_MODULE_5__["default"])(ruleNode)) { return; } // Ignores selectors within list of selectors if (ignoreSelectorsWithinList && ruleNode.selectors.length > 1) { return; } // Ignore rules that do not directly contain declarations if (!hasDeclaration(ruleNode)) { return; } /** @type {Map<string, Entry[]>} */ const comparisonContext = selectorContextLookup.getContext( ruleNode, (0,_utils_findAtRuleContext_mjs__WEBPACK_IMPORTED_MODULE_2__["default"])(ruleNode), ); // Resolve any nested selectors before checking (0,_utils_flattenNestedSelectorsForRule_mjs__WEBPACK_IMPORTED_MODULE_3__["default"])(ruleNode, result).forEach(({ selector, resolvedSelectors }) => { resolvedSelectors.each((resolvedSelector) => { checkSelector(resolvedSelector, selector, ruleNode, comparisonContext); }); }); }); /** * @param {import('postcss-selector-parser').Selector} resolvedSelectorNode * @param {import('postcss-selector-parser').Selector} selectorNode * @param {import('postcss').Rule} ruleNode * @param {Map<string, Entry[]>} comparisonContext */ function checkSelector(resolvedSelectorNode, selectorNode, ruleNode, comparisonContext) { const referenceSelector = lastCompoundSelectorWithoutPseudoClasses(resolvedSelectorNode); if (!referenceSelector) return; const specificity = (0,_csstools_selector_specificity__WEBPACK_IMPORTED_MODULE_0__.selectorSpecificity)(resolvedSelectorNode); const entry = { selector: resolvedSelectorNode.toString().trim(), specificity, line: ruleNode.source?.start?.line ?? 1, }; const priorComparableSelectors = comparisonContext.get(referenceSelector); if (!priorComparableSelectors) { comparisonContext.set(referenceSelector, [entry]); return; } for (const priorEntry of priorComparableSelectors) { if ((0,_csstools_selector_specificity__WEBPACK_IMPORTED_MODULE_0__.compare)(specificity, priorEntry.specificity) < 0) { const { index, endIndex, selector: selectorStr, } = (0,_utils_getStrippedSelectorSource_mjs__WEBPACK_IMPORTED_MODULE_4__["default"])(selectorNode); (0,_utils_report_mjs__WEBPACK_IMPORTED_MODULE_10__["default"])({ ruleName, result, node: ruleNode, message: messages.expected, messageArgs: [selectorStr, priorEntry.selector, priorEntry.line], index, endIndex, }); break; } } priorComparableSelectors.push(entry); } }; }; /** * @param {import('postcss-selector-parser').Selector} selectorNode * @returns {string | undefined} */ function lastCompoundSelectorWithoutPseudoClasses(selectorNode) { if (selectorNode.nodes.length === 0) return undefined; selectorNode = (0,_utils_normalizeSelector_mjs__WEBPACK_IMPORTED_MODULE_7__["default"])(selectorNode.clone()); const nodesByCombinator = selectorNode.split((node) => node.type === 'combinator'); const nodesAfterLastCombinator = nodesByCombinator[nodesByCombinator.length - 1]; if (!nodesAfterLastCombinator) return undefined; const nodesWithoutPseudoClasses = nodesAfterLastCombinator.filter((node) => { return ( node.type !== 'pseudo' || node.value.startsWith('::') || _reference_selectors_mjs__WEBPACK_IMPORTED_MODULE_9__.pseudoElements.has(node.value.replaceAll(':', '')) ); }); if (nodesWithoutPseudoClasses.length === 0) return undefined; return nodesWithoutPseudoClasses.join(''); } /** * Specificity only has an effect on declarations. * We only want to check rules that contain declarations either directly or in nested at-rules. * * @param {import('postcss').Container} node * @returns {boolean} */ function hasDeclaration(node) { if (!node.nodes) return false; return node.some((child) => { return (0,_utils_typeGuards_mjs__WEBPACK_IMPORTED_MODULE_1__.isDeclaration)(child) || ((0,_utils_typeGuards_mjs__WEBPACK_IMPORTED_MODULE_1__.isAtRule)(child) && hasDeclaration(child)); }); } rule.ruleName = ruleName; rule.messages = messages; rule.meta = meta; /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (rule); /***/ }), /***/ 1728: /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ compare: () => (/* binding */ compare), /* harmony export */ selectorSpecificity: () => (/* binding */ selectorSpecificity), /* harmony export */ specificityOfMostSpecificListItem: () => (/* binding */ specificityOfMostSpecificListItem) /* harmony export */ }); /* harmony import */ var postcss_selector_parser__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(1666); function compare(e,t){return e.a===t.a?e.b===t.b?e.c-t.c:e.b-t.b:e.a-t.a}function selectorSpecificity(t,s){const i=s?.customSpecificity?.(t);if(i)return i;if(!t)return{a:0,b:0,c:0};let c=0,n=0,o=0;if("universal"==t.type)return{a:0,b:0,c:0};if("id"===t.type)c+=1;else if("tag"===t.type)o+=1;else if("class"===t.type)n+=1;else if("attribute"===t.type)n+=1;else if(isPseudoElement(t))switch(t.value.toLowerCase()){case"::slotted":if(o+=1,t.nodes&&t.nodes.length>0){const e=specificityOfMostSpecificListItem(t.nodes,s);c+=e.a,n+=e.b,o+=e.c}break;case"::view-transition-group":case"::view-transition-image-pair":case"::view-transition-old":case"::view-transition-new":return t.nodes&&1===t.nodes.length&&"selector"===t.nodes[0].type&&selectorNodeContainsNothingOrOnlyUniversal(t.nodes[0])?{a:0,b:0,c:0}:{a:0,b:0,c:1};default:o+=1}else if(postcss_selector_parser__WEBPACK_IMPORTED_MODULE_0__.isPseudoClass(t))switch(t.value.toLowerCase()){case":-webkit-any":case":any":default:n+=1;break;case":-moz-any":case":has":case":is":case":matches":case":not":if(t.nodes&&t.nodes.length>0){const e=specificityOfMostSpecificListItem(t.nodes,s);c+=e.a,n+=e.b,o+=e.c}break;case":where":break;case":nth-child":case":nth-last-child":if(n+=1,t.nodes&&t.nodes.length>0){const i=t.nodes[0].nodes.findIndex((e=>"tag"===e.type&&"of"===e.value.toLowerCase()));if(i>-1){const a=postcss_selector_parser__WEBPACK_IMPORTED_MODULE_0__.selector({nodes:[],value:""});t.nodes[0].nodes.slice(i+1).forEach((e=>{a.append(e.clone())}));const r=[a];t.nodes.length>1&&r.push(...t.nodes.slice(1));const l=specificityOfMostSpecificListItem(r,s);c+=l.a,n+=l.b,o+=l.c}}break;case":local":case":global":t.nodes&&t.nodes.length>0&&t.nodes.forEach((e=>{const t=selectorSpecificity(e,s);c+=t.a,n+=t.b,o+=t.c}));break;case":host":case":host-context":if(n+=1,t.nodes&&t.nodes.length>0){const e=specificityOfMostSpecificListItem(t.nodes,s);c+=e.a,n+=e.b,o+=e.c}break;case":active-view-transition":case":active-view-transition-type":return{a:0,b:1,c:0}}else postcss_selector_parser__WEBPACK_IMPORTED_MODULE_0__.isContainer(t)&&t.nodes?.length>0&&t.nodes.forEach((e=>{const t=selectorSpecificity(e,s);c+=t.a,n+=t.b,o+=t.c}));return{a:c,b:n,c:o}}function specificityOfMostSpecificListItem(e,t){let s={a:0,b:0,c:0};return e.forEach((e=>{const i=selectorSpecificity(e,t);compare(i,s)<0||(s=i)})),s}function isPseudoElement(t){return postcss_selector_parser__WEBPACK_IMPORTED_MODULE_0__.isPseudoElement(t)}function selectorNodeContainsNothingOrOnlyUniversal(e){if(!e)return!1;if(!e.nodes)return!1;const t=e.nodes.filter((e=>"comment"!==e.type));return 0===t.length||1===t.length&&"universal"===t[0].type} /***/ }), /***/ 1729: /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (/* binding */ findAtRuleContext) /* harmony export */ }); /* harmony import */ var _typeGuards_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(886); /** * Find the at-rule in which a rule is nested. * * Returns `null` if the rule is not nested within an at-rule. * * @param {import('postcss').Rule} rule * @returns {null | import('postcss').AtRule} */ function findAtRuleContext(rule) { const parent = rule.parent; if (!parent) { return null; } if ((0,_typeGuards_mjs__WEBPACK_IMPORTED_MODULE_0__.isAtRule)(parent)) { return parent; } if ((0,_typeGuards_mjs__WEBPACK_IMPORTED_MODULE_0__.isRule)(parent)) { return findAtRuleContext(parent); } return null; } /***/ }), /***/ 1730: /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (/* binding */ flattenNestedSelectorsForRule) /* harmony export */ }); /* harmony import */ var postcss_resolve_nested_selector__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(1731); /* harmony import */ var postcss_selector_parser__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(1666); /* harmony import */ var _getRuleSelector_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(1521); /* harmony import */ var _isStandardSyntaxSelector_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(1569); /* harmony import */ var _parseSelector_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(1698); /** @import { Selector, Root } from 'postcss-selector-parser' */ /** @import { Rule } from 'postcss' */ /** @import { PostcssResult } from 'stylelint' */ /** * Flatten the selectors of the current rule against it's parent rules and at-rules. * * The selectors for the current rule are assumed to be standard CSS selectors. * * @typedef {{selector: Selector, resolvedSelectors: Root, nested: boolean}} FlattenedSelector * * @param {Rule} rule * @param {PostcssResult} result * @returns {Array<FlattenedSelector>} */ function flattenNestedSelectorsForRule(rule, result) { const ownAST = (0,_parseSelector_mjs__WEBPACK_IMPORTED_MODULE_4__["default"])((0,_getRuleSelector_mjs__WEBPACK_IMPORTED_MODULE_2__["default"])(rule), result, rule); if (!ownAST) return []; /** @type {Array<FlattenedSelector>} */ const flattenedSelectors = []; for (const selectorAST of ownAST.nodes) { const selector = selectorAST.toString(); const resolvedSelectors = postcss_resolve_nested_selector__WEBPACK_IMPORTED_MODULE_0__(selector, rule); if (resolvedSelectors.length === 1 && resolvedSelectors[0] === selector) { flattenedSelectors.push({ selector: selectorAST, resolvedSelectors: postcss_selector_parser__WEBPACK_IMPORTED_MODULE_1__.root({ value: '', nodes: [selectorAST], }), nested: false, }); continue; } for (const resolvedSelector of resolvedSelectors) { if (!(0,_isStandardSyntaxSelector_mjs__WEBPACK_IMPORTED_MODULE_3__["default"])(resolvedSelector)) return []; const resolvedRoot = (0,_parseSelector_mjs__WEBPACK_IMPORTED_MODULE_4__["default"])(resolvedSelector, result, rule); if (!resolvedRoot) { continue; } flattenedSelectors.push({ selector: selectorAST, resolvedSelectors: resolvedRoot, nested: true, }); } } return flattenedSelectors; } /***/ }), /***/ 1731: /***/ ((module) => { module.exports = function resolveNestedSelector(selector, node) { var parent = node.parent; var parentIsNestAtRule = parent.type === 'atrule' && parent.name === 'nest'; if (parent.type === 'root') return [selector]; if (parent.type !== 'rule' && !parentIsNestAtRule) return resolveNestedSelector(selector, parent); var parentSelectors = (parentIsNestAtRule) ? split(parent.params, ',', false).map((x) => x.trim()) : parent.selectors; var resolvedSelectors = parentSelectors.reduce(function(result, parentSelector) { if (selector.indexOf('&') !== -1) { var newlyResolvedSelectors = resolveNestedSelector(parentSelector, parent).map(function(resolvedParentSelector) { return split(selector, '&', true).join(resolvedParentSelector); }); return result.concat(newlyResolvedSelectors); } var combinedSelector = [ parentSelector, selector ].join(' '); return result.concat(resolveNestedSelector(combinedSelector, parent)); }, []); return resolvedSelectors; } var blockPairs = { '(': ')', '[': ']', '{': '}' }; function split(string, separator, splitFunctions) { var array = []; var current = ''; var split = false; var blockClose = []; var inQuote = false; var prevQuote = ''; var escape = false; for (var letter of string) { if (escape) { escape = false; } else if (letter === '\\') { escape = true; } else if (inQuote) { if (letter === prevQuote) { inQuote = false; } } else if (letter === '"' || letter === "'") { inQuote = true; prevQuote = letter; } else if (letter === '(' || letter === '[' || letter === '{') { blockClose.push(blockPairs[letter]); } else if (letter === blockClose[blockClose.length - 1]) { blockClose.pop(); } else if (blockClose.length === 0 || (splitFunctions && blockClose.every((x) => x === ')'))) { if (letter === separator) split = true; } if (split) { array.push(current); current = ''; split = false; } else { current += letter; } } array.push(current); return array; } /***/ }), /***/ 1732: /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (/* binding */ nodeContextLookup) /* harmony export */ }); /** * Create a collection of Maps that serve to contextualize a given node. * This is useful to ensure that you only compare nodes that share a certain * context. * * All nodes are initially contextualized by their input source. * From there, you can contextualize them however you want. * * For a usage example, see `selector-no-descending-specificity`. */ function nodeContextLookup() { const contextMap = new Map(); return { /** * @param {import('postcss').Node} node * @param {any[]} subContexts * @returns {Map<any, any>} */ getContext(node, ...subContexts) { if (!node.source) throw new Error('The node source must be present'); const nodeSource = node.source.input.from; const baseContext = creativeGetMap(contextMap, nodeSource); return subContexts.reduce((result, context) => creativeGetMap(result, context), baseContext); }, }; } /** * @param {Map<any, any>} someMap * @param {any} someThing */ function creativeGetMap(someMap, someThing) { if (!someMap.has(someThing)) { someMap.set(someThing, new Map()); } return someMap.get(someThing); } /***/ }), /***/ 1733: /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (/* binding */ normalizeSelector) /* harmony export */ }); /* harmony import */ var postcss_selector_parser__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(1666); /** @import { Container, Node, Root, Selector } from 'postcss-selector-parser' */ /** * Normalize a selector so that it can be more easily compared to other selectors. * * @template {Root | Selector} T * @param {T} node * @returns {T} */ function normalizeSelector(node) { normalizeSelectorNodeWhitespaceAndComments(node); node.walk(normalizeSelectorNodeWhitespaceAndComments); normalizeSelectorNodesOrder(node); return node; } /** * @param {Node} node */ function normalizeSelectorNodeWhitespaceAndComments(node) { if (postcss_selector_parser__WEBPACK_IMPORTED_MODULE_0__.isComment(node)) { node.remove(); return; } node.rawSpaceBefore = ''; node.rawSpaceAfter = ''; node.spaces.before = ''; node.spaces.after = ''; if (postcss_selector_parser__WEBPACK_IMPORTED_MODULE_0__.isAttribute(node)) { delete node.spaces.insensitive; delete node.spaces.operator; delete node.spaces.attribute; delete node.spaces.value; delete node.raws.spaces; } } /** * @param {Node} node */ function normalizeSelectorNodesOrder(node) { if (!postcss_selector_parser__WEBPACK_IMPORTED_MODULE_0__.isContainer(node)) return; // Need to sort inside out, not outside in. // As the parents needs to sorted with their children already in the right order. node.each(normalizeSelectorNodesOrder); if (postcss_selector_parser__WEBPACK_IMPORTED_MODULE_0__.isRoot(node) || postcss_selector_parser__WEBPACK_IMPORTED_MODULE_0__.isPseudoClass(node) || postcss_selector_parser__WEBPACK_IMPORTED_MODULE_0__.isPseudoElement(node)) { const nodes = node.nodes.map((childNode) => { // Make sure to only stringify the node once. return { node: childNode, string: childNode.toString() }; }); nodes.sort((a, b) => a.string.localeCompare(b.string)); const uniqueNodes = new Set(); const nodesIndices = new Map(); nodes.forEach((x, i) => { if (uniqueNodes.has(x.string)) return; uniqueNodes.add(x.string); nodesIndices.set(x.node, i); }); node.nodes = node.nodes .filter((childNode) => { return nodesIndices.has(childNode); }) .sort((a, b) => { return nodesIndices.get(a) - nodesIndices.get(b); }); } } /***/ }) }; ; //# sourceMappingURL=134.extension.js.map