selectors.cjs 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483
  1. // NOTICE: This file is generated by Rollup. To modify it,
  2. // please instead edit the ESM counterpart and rebuild with Rollup (npm run build).
  3. 'use strict';
  4. const htmlTags = require('html-tags');
  5. const uniteSets = require('../utils/uniteSets.cjs');
  6. /** @type {ReadonlySet<string>} */
  7. const deprecatedHtmlTypeSelectors = new Set([
  8. 'acronym',
  9. 'applet',
  10. 'basefont',
  11. 'big',
  12. 'bgsound',
  13. 'blink',
  14. 'center',
  15. 'content',
  16. 'dir',
  17. 'font',
  18. 'frame',
  19. 'frameset',
  20. 'isindex',
  21. 'keygen',
  22. 'listing',
  23. 'marquee',
  24. 'multicol',
  25. 'nextid',
  26. 'nobr',
  27. 'noembed',
  28. 'noframes',
  29. 'plaintext',
  30. 'param',
  31. 'popup',
  32. 'selectmenu',
  33. 'shadow',
  34. 'spacer',
  35. 'strike',
  36. 'tt',
  37. 'xmp',
  38. ]);
  39. // typecasting htmlTags to be more generic; see https://github.com/stylelint/stylelint/pull/6013 for discussion
  40. /** @type {ReadonlySet<string>} */
  41. const standardHtmlTypeSelectors = new Set(htmlTags);
  42. /** @type {ReadonlySet<string>} */
  43. const experimentalHtmlTypeSelectors = new Set([
  44. 'fencedframe',
  45. 'listbox',
  46. 'model',
  47. 'portal',
  48. 'selectedcontent',
  49. 'selectlist',
  50. ]);
  51. /** @type {ReadonlySet<string>} */
  52. const htmlTypeSelectors = uniteSets(
  53. deprecatedHtmlTypeSelectors,
  54. standardHtmlTypeSelectors,
  55. experimentalHtmlTypeSelectors,
  56. );
  57. /** @type {ReadonlySet<string>} */
  58. const deprecatedSvgTypeSelectors = new Set([
  59. 'altGlyph',
  60. 'altGlyphDef',
  61. 'altGlyphItem',
  62. 'cursor',
  63. 'font',
  64. 'font-face',
  65. 'font-face-format',
  66. 'font-face-name',
  67. 'font-face-src',
  68. 'font-face-uri',
  69. 'glyph',
  70. 'glyphRef',
  71. 'hatchPath',
  72. 'hkern',
  73. 'missing-glyph',
  74. 'tref',
  75. 'vkern',
  76. ]);
  77. /** @type {ReadonlySet<string>} */
  78. const mixedCaseSvgTypeSelectors = new Set([
  79. 'altGlyph',
  80. 'altGlyphDef',
  81. 'altGlyphItem',
  82. 'animateColor',
  83. 'animateMotion',
  84. 'animateTransform',
  85. 'clipPath',
  86. 'feBlend',
  87. 'feColorMatrix',
  88. 'feComponentTransfer',
  89. 'feComposite',
  90. 'feConvolveMatrix',
  91. 'feDiffuseLighting',
  92. 'feDisplacementMap',
  93. 'feDistantLight',
  94. 'feDropShadow',
  95. 'feFlood',
  96. 'feFuncA',
  97. 'feFuncB',
  98. 'feFuncG',
  99. 'feFuncR',
  100. 'feGaussianBlur',
  101. 'feImage',
  102. 'feMerge',
  103. 'feMergeNode',
  104. 'feMorphology',
  105. 'feOffset',
  106. 'fePointLight',
  107. 'feSpecularLighting',
  108. 'feSpotLight',
  109. 'feTile',
  110. 'feTurbulence',
  111. 'foreignObject',
  112. 'glyphRef',
  113. 'hatchPath',
  114. 'linearGradient',
  115. 'radialGradient',
  116. 'textPath',
  117. ]);
  118. /**
  119. * These are the ones that can have single-colon notation
  120. *
  121. * @type {ReadonlySet<string>}
  122. */
  123. const levelOneAndTwoPseudoElements = new Set([
  124. 'before',
  125. 'after',
  126. 'first-line',
  127. 'first-letter',
  128. ]);
  129. /** @type {ReadonlySet<string>} */
  130. const shadowTreePseudoElements = new Set(['part']);
  131. /** @type {ReadonlySet<string>} */
  132. const webkitScrollbarPseudoElements = new Set([
  133. '-webkit-resizer',
  134. '-webkit-scrollbar',
  135. '-webkit-scrollbar-button',
  136. '-webkit-scrollbar-corner',
  137. '-webkit-scrollbar-thumb',
  138. '-webkit-scrollbar-track',
  139. '-webkit-scrollbar-track-piece',
  140. ]);
  141. /** @type {ReadonlySet<string>} */
  142. const vendorSpecificPseudoElements = uniteSets(webkitScrollbarPseudoElements, [
  143. '-moz-focus-inner',
  144. '-moz-focus-outer',
  145. '-moz-list-bullet',
  146. '-moz-meter-bar',
  147. '-moz-placeholder',
  148. '-moz-progress-bar',
  149. '-moz-range-progress',
  150. '-moz-range-thumb',
  151. '-moz-range-track',
  152. '-ms-browse',
  153. '-ms-check',
  154. '-ms-clear',
  155. '-ms-expand',
  156. '-ms-fill',
  157. '-ms-fill-lower',
  158. '-ms-fill-upper',
  159. '-ms-reveal',
  160. '-ms-thumb',
  161. '-ms-ticks-after',
  162. '-ms-ticks-before',
  163. '-ms-tooltip',
  164. '-ms-track',
  165. '-ms-value',
  166. '-webkit-color-swatch',
  167. '-webkit-color-swatch-wrapper',
  168. '-webkit-calendar-picker-indicator',
  169. '-webkit-clear-button',
  170. '-webkit-date-and-time-value',
  171. '-webkit-datetime-edit',
  172. '-webkit-datetime-edit-ampm-field',
  173. '-webkit-datetime-edit-day-field',
  174. '-webkit-datetime-edit-fields-wrapper',
  175. '-webkit-datetime-edit-hour-field',
  176. '-webkit-datetime-edit-millisecond-field',
  177. '-webkit-datetime-edit-minute-field',
  178. '-webkit-datetime-edit-month-field',
  179. '-webkit-datetime-edit-second-field',
  180. '-webkit-datetime-edit-text',
  181. '-webkit-datetime-edit-week-field',
  182. '-webkit-datetime-edit-year-field',
  183. '-webkit-details-marker',
  184. '-webkit-distributed',
  185. '-webkit-file-upload-button',
  186. '-webkit-input-placeholder',
  187. '-webkit-keygen-select',
  188. '-webkit-meter-bar',
  189. '-webkit-meter-even-less-good-value',
  190. '-webkit-meter-inner-element',
  191. '-webkit-meter-optimum-value',
  192. '-webkit-meter-suboptimum-value',
  193. '-webkit-meter-horizontal-bar',
  194. '-webkit-meter-horizontal-optimum-value',
  195. '-webkit-meter-horizontal-suboptimal-value',
  196. '-webkit-meter-horizontal-even-less-good-value',
  197. '-webkit-meter-vertical-bar',
  198. '-webkit-meter-vertical-optimum-value',
  199. '-webkit-meter-vertical-suboptimal-value',
  200. '-webkit-meter-vertical-even-less-good-value',
  201. '-webkit-progress-bar',
  202. '-webkit-progress-inner-element',
  203. '-webkit-progress-value',
  204. '-webkit-search-cancel-button',
  205. '-webkit-search-decoration',
  206. '-webkit-search-results-button',
  207. '-webkit-search-results-decoration',
  208. '-webkit-slider-runnable-track',
  209. '-webkit-slider-thumb',
  210. '-webkit-textfield-decoration-container',
  211. '-webkit-validation-bubble',
  212. '-webkit-validation-bubble-arrow',
  213. '-webkit-validation-bubble-arrow-clipper',
  214. '-webkit-validation-bubble-heading',
  215. '-webkit-validation-bubble-message',
  216. '-webkit-validation-bubble-text-block',
  217. ]);
  218. /** @type {ReadonlySet<string>} */
  219. const deprecatedPseudoElements = new Set(['shadow']);
  220. /** @type {ReadonlySet<string>} */
  221. const pseudoElements = uniteSets(
  222. levelOneAndTwoPseudoElements,
  223. vendorSpecificPseudoElements,
  224. shadowTreePseudoElements,
  225. deprecatedPseudoElements,
  226. [
  227. 'backdrop',
  228. 'checkmark',
  229. 'clear-icon',
  230. 'color-swatch',
  231. 'content',
  232. 'cue',
  233. 'details-content',
  234. 'field-component',
  235. 'field-separator',
  236. 'field-text',
  237. 'file-selector-button',
  238. 'grammar-error',
  239. 'highlight',
  240. 'marker',
  241. 'picker-icon',
  242. 'picker',
  243. 'placeholder',
  244. 'scroll-marker-group',
  245. 'scroll-marker',
  246. 'search-text',
  247. 'selection',
  248. 'slider-fill',
  249. 'slider-thumb',
  250. 'slider-track',
  251. 'slotted',
  252. 'spelling-error',
  253. 'step-control',
  254. 'step-down',
  255. 'step-up',
  256. 'target-text',
  257. 'view-transition-group',
  258. 'view-transition-image-pair',
  259. 'view-transition-new',
  260. 'view-transition-old',
  261. 'view-transition',
  262. ],
  263. );
  264. /** @type {ReadonlySet<string>} */
  265. const aNPlusBNotationPseudoClasses = new Set([
  266. 'nth-column',
  267. 'nth-last-column',
  268. 'nth-last-of-type',
  269. 'nth-of-type',
  270. ]);
  271. /** @type {ReadonlySet<string>} */
  272. const aNPlusBOfSNotationPseudoClasses = new Set(['nth-child', 'nth-last-child']);
  273. /** @type {ReadonlySet<string>} */
  274. const atRulePagePseudoClasses = new Set([
  275. 'first',
  276. 'right',
  277. 'left',
  278. 'blank',
  279. 'recto',
  280. 'verso',
  281. 'nth',
  282. ]);
  283. /** @type {ReadonlySet<string>} */
  284. const linguisticPseudoClasses = new Set(['dir', 'lang']);
  285. /** @type {ReadonlySet<string>} */
  286. const logicalCombinationsPseudoClasses = new Set(['has', 'is', 'matches', 'not', 'where']);
  287. /** @type {ReadonlySet<string>} */
  288. const deprecatedPseudoClasses = new Set([
  289. 'contains',
  290. 'drop',
  291. 'focus-ring',
  292. 'fullscreen-ancestor',
  293. 'matches',
  294. 'popup-open',
  295. 'top-layer',
  296. 'user-error',
  297. ]);
  298. /** @type {ReadonlySet<string>} */
  299. const vendorSpecificPseudoClasses = new Set([
  300. '-khtml-drag',
  301. '-moz-any',
  302. '-moz-any-link',
  303. '-moz-bound-element',
  304. '-moz-broken',
  305. '-moz-dir',
  306. '-moz-drag-over',
  307. '-moz-empty-except-children-with-localname',
  308. '-moz-first-node',
  309. '-moz-focusring',
  310. '-moz-full-screen',
  311. '-moz-full-screen-ancestor',
  312. '-moz-is-html',
  313. '-moz-last-node',
  314. '-moz-loading',
  315. '-moz-meter-optimum',
  316. '-moz-meter-sub-optimum',
  317. '-moz-meter-sub-sub-optimum',
  318. '-moz-only-whitespace',
  319. '-moz-placeholder',
  320. '-moz-read-only',
  321. '-moz-read-write',
  322. '-moz-submit-invalid',
  323. '-moz-suppressed',
  324. '-moz-table-border-nonzero',
  325. '-moz-ui-invalid',
  326. '-moz-ui-valid',
  327. '-moz-user-disabled',
  328. '-moz-window-inactive',
  329. '-ms-fullscreen',
  330. '-ms-input-placeholder',
  331. '-webkit-drag',
  332. '-webkit-any',
  333. '-webkit-any-link',
  334. '-webkit-autofill',
  335. '-webkit-full-screen',
  336. '-webkit-full-screen-ancestor',
  337. ]);
  338. /**
  339. * @see https://webkit.org/blog/363/styling-scrollbars/
  340. * @type {ReadonlySet<string>}
  341. */
  342. const webkitScrollbarPseudoClasses = new Set([
  343. 'horizontal',
  344. 'vertical',
  345. 'decrement',
  346. 'increment',
  347. 'start',
  348. 'end',
  349. 'double-button',
  350. 'single-button',
  351. 'no-button',
  352. 'corner-present',
  353. 'window-inactive',
  354. ]);
  355. /**
  356. * @see https://www.w3.org/TR/selectors-4/#resource-pseudos
  357. * @type {ReadonlySet<string>}
  358. */
  359. const resourceStatePseudoClasses = new Set([
  360. 'buffering',
  361. 'muted',
  362. 'paused',
  363. 'playing',
  364. 'seeking',
  365. 'stalled',
  366. 'volume-locked',
  367. ]);
  368. /** @type {ReadonlySet<string>} */
  369. const pseudoClasses = uniteSets(
  370. aNPlusBNotationPseudoClasses,
  371. linguisticPseudoClasses,
  372. logicalCombinationsPseudoClasses,
  373. aNPlusBOfSNotationPseudoClasses,
  374. resourceStatePseudoClasses,
  375. vendorSpecificPseudoClasses,
  376. deprecatedPseudoClasses,
  377. [
  378. 'active-view-transition-type',
  379. 'active-view-transition',
  380. 'active',
  381. 'any-link',
  382. 'autofill',
  383. /*
  384. introduced the 10/05/2016 by 8c808d0
  385. as of 2024 it is still not supported by any browser
  386. */
  387. 'blank',
  388. 'checked',
  389. 'current',
  390. 'default',
  391. 'defined',
  392. 'disabled',
  393. 'empty',
  394. 'enabled',
  395. 'even-less-good-value',
  396. 'first-child',
  397. 'first-of-type',
  398. 'focus-visible',
  399. 'focus-within',
  400. 'focus',
  401. 'fullscreen',
  402. 'future',
  403. 'has-slotted',
  404. 'heading',
  405. 'high-value',
  406. 'host-context',
  407. 'host',
  408. 'hover',
  409. 'in-range',
  410. 'indeterminate',
  411. 'invalid',
  412. 'last-child',
  413. 'last-of-type',
  414. 'link',
  415. 'low-value',
  416. 'modal',
  417. 'only-child',
  418. 'only-of-type',
  419. 'open',
  420. 'optimal-value',
  421. 'optional',
  422. 'out-of-range',
  423. 'past',
  424. 'picture-in-picture',
  425. 'placeholder-shown',
  426. 'popover-open',
  427. 'read-only',
  428. 'read-write',
  429. 'required',
  430. 'root',
  431. 'scope',
  432. 'state',
  433. 'suboptimal-value',
  434. 'target',
  435. 'unchecked',
  436. 'unresolved',
  437. 'user-invalid',
  438. 'user-valid',
  439. 'valid',
  440. 'visited',
  441. 'window-inactive', // for ::selection (chrome)
  442. ],
  443. );
  444. exports.aNPlusBNotationPseudoClasses = aNPlusBNotationPseudoClasses;
  445. exports.aNPlusBOfSNotationPseudoClasses = aNPlusBOfSNotationPseudoClasses;
  446. exports.atRulePagePseudoClasses = atRulePagePseudoClasses;
  447. exports.deprecatedPseudoClasses = deprecatedPseudoClasses;
  448. exports.deprecatedPseudoElements = deprecatedPseudoElements;
  449. exports.deprecatedSvgTypeSelectors = deprecatedSvgTypeSelectors;
  450. exports.htmlTypeSelectors = htmlTypeSelectors;
  451. exports.levelOneAndTwoPseudoElements = levelOneAndTwoPseudoElements;
  452. exports.linguisticPseudoClasses = linguisticPseudoClasses;
  453. exports.logicalCombinationsPseudoClasses = logicalCombinationsPseudoClasses;
  454. exports.mixedCaseSvgTypeSelectors = mixedCaseSvgTypeSelectors;
  455. exports.pseudoClasses = pseudoClasses;
  456. exports.pseudoElements = pseudoElements;
  457. exports.shadowTreePseudoElements = shadowTreePseudoElements;
  458. exports.webkitScrollbarPseudoClasses = webkitScrollbarPseudoClasses;
  459. exports.webkitScrollbarPseudoElements = webkitScrollbarPseudoElements;