// NOTICE: This file is generated by Rollup. To modify it, // please instead edit the ESM counterpart and rebuild with Rollup (npm run build). 'use strict'; const selectorParser = require('postcss-selector-parser'); const { isComment } = selectorParser; /** * 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, }; } module.exports = getStrippedSelectorSource;