Files
Nikolay Vitkov 2a1b3b34b1 Update StyleLint to v16
Stylelint v16 deprecated CJS so I moved our lint script to ESM,
and fixed all the deprecation warning.
The only place I needed to silence them were tests,
as we import CJS there.

Bug: none
Change-Id: Iae4d2df76c855a9738b774a2d035f22509770215
Reviewed-on: https://chromium-review.googlesource.com/c/devtools/devtools-frontend/+/6138610
Commit-Queue: Nikolay Vitkov <nvitkov@chromium.org>
Reviewed-by: Benedikt Meurer <bmeurer@chromium.org>
2025-01-03 02:57:06 -08:00

48 lines
1.1 KiB
JavaScript

import selectorParser from '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}}
*/
export default 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,
};
}