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 36 37 38 39 40 41 42 43 | 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 397x 397x 2x 2x 2x 2x 114x 94x 94x 2x 2x 230x 4x 4x 2x 2x 1377x 230x 230x 230x 230x 1377x 1377x 2x 2x 1359x 28x 1359x 1331x 1331x 1359x 2x | /** @import { Visitors } from 'zimmerframe' */ /** @import { Css } from '#compiler' */ import { walk } from 'zimmerframe'; import * as w from '../../../warnings.js'; import { is_keyframes_node } from '../../css.js'; /** * @param {Css.StyleSheet} stylesheet */ export function warn_unused(stylesheet) { walk(stylesheet, { stylesheet }, visitors); } /** @type {Visitors<Css.Node, { stylesheet: 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); w.css_unused_selector(node, text); } context.next(); }, Rule(node, context) { if (node.metadata.is_global_block) { context.visit(node.prelude); } else { context.next(); } } }; |