Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | 2x 2x 2x 2x 2x 2x 2x 2x 2x 360x 360x 2x 2x 2x 2x 94x 74x 74x 2x 2x 128x 2x 2x 2x 2x 1225x 205x 205x 205x 205x 1225x 1225x 1225x 2x | import { walk } from 'zimmerframe'; import { warn } from '../../../warnings.js'; import { is_keyframes_node } from '../../css.js'; /** * @param {import('#compiler').Css.StyleSheet} stylesheet * @param {import('../../types.js').RawWarning[]} warnings */ export function warn_unused(stylesheet, warnings) { walk(stylesheet, { warnings, stylesheet }, visitors); } /** @type {import('zimmerframe').Visitors<import('#compiler').Css.Node, { warnings: import('../../types.js').RawWarning[], stylesheet: import('#compiler').Css.StyleSheet }>} */ const visitors = { Atrule(node, context) { if (!is_keyframes_node(node)) { context.next(); } }, PseudoClassSelector(node, context) { if (node.name === 'is' || node.name === 'where') { context.next(); } }, ComplexSelector(node, context) { if (!node.metadata.used) { const content = context.state.stylesheet.content; const text = content.styles.substring(node.start - content.start, node.end - content.start); warn(context.state.warnings, node, context.path, 'css-unused-selector', text); } context.next(); } }; |