fix: prevent asset conflicts between React and Grid.js versions

Add coexistence checks to all enqueue methods to prevent loading
both React and Grid.js assets simultaneously.

Changes:
- ReactAdmin.php: Only enqueue React assets when ?react=1
- Init.php: Skip Grid.js when React active on admin pages
- Form.php, Coupon.php, Access.php: Restore classic assets when ?react=0
- Customer.php, Product.php, License.php: Add coexistence checks

Now the toggle between Classic and React versions works correctly.

Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
dwindown
2026-04-18 17:02:14 +07:00
parent bd9cdac02e
commit e8fbfb14c1
74973 changed files with 6658406 additions and 71 deletions

56
node_modules/stylelint/lib/reference/atKeywords.js generated vendored Normal file
View File

@@ -0,0 +1,56 @@
'use strict';
const uniteSets = require('../utils/uniteSets.js');
// https://www.w3.org/TR/css-page-3/#syntax-page-selector
const pageMarginAtKeywords = new Set([
'top-left-corner',
'top-left',
'top-center',
'top-right',
'top-right-corner',
'bottom-left-corner',
'bottom-left',
'bottom-center',
'bottom-right',
'bottom-right-corner',
'left-top',
'left-middle',
'left-bottom',
'right-top',
'right-middle',
'right-bottom',
]);
// https://developer.mozilla.org/en/docs/Web/CSS/At-rule
const atKeywords = uniteSets(pageMarginAtKeywords, [
'annotation',
'apply',
'character-variant',
'charset',
'container',
'counter-style',
'custom-media',
'custom-selector',
'document',
'font-face',
'font-feature-values',
'import',
'keyframes',
'layer',
'media',
'namespace',
'nest',
'ornaments',
'page',
'property',
'styleset',
'stylistic',
'supports',
'swash',
'viewport',
]);
module.exports = {
atKeywords,
};

22
node_modules/stylelint/lib/reference/functions.js generated vendored Normal file
View File

@@ -0,0 +1,22 @@
'use strict';
const camelCaseFunctions = new Set([
'translateX',
'translateY',
'translateZ',
'scaleX',
'scaleY',
'scaleZ',
'rotateX',
'rotateY',
'rotateZ',
'skewX',
'skewY',
]);
const mathFunctions = new Set(['calc', 'clamp', 'max', 'min']);
module.exports = {
camelCaseFunctions,
mathFunctions,
};

332
node_modules/stylelint/lib/reference/keywords.js generated vendored Normal file
View File

@@ -0,0 +1,332 @@
'use strict';
const uniteSets = require('../utils/uniteSets.js');
const basicKeywords = new Set(['initial', 'inherit', 'revert', 'revert-layer', 'unset']);
const systemFontKeywords = uniteSets(basicKeywords, [
'caption',
'icon',
'menu',
'message-box',
'small-caption',
'status-bar',
]);
const fontFamilyKeywords = uniteSets(basicKeywords, [
'serif',
'sans-serif',
'cursive',
'fantasy',
'monospace',
'system-ui',
'ui-serif',
'ui-sans-serif',
'ui-monospace',
'ui-rounded',
]);
const fontWeightRelativeKeywords = new Set(['bolder', 'lighter']);
const fontWeightAbsoluteKeywords = new Set(['normal', 'bold']);
const fontWeightNonNumericKeywords = uniteSets(
fontWeightRelativeKeywords,
fontWeightAbsoluteKeywords,
);
const fontWeightNumericKeywords = new Set([
'100',
'200',
'300',
'400',
'500',
'600',
'700',
'800',
'900',
]);
const fontWeightKeywords = uniteSets(
basicKeywords,
fontWeightNonNumericKeywords,
fontWeightNumericKeywords,
);
const fontStyleKeywords = uniteSets(basicKeywords, ['normal', 'italic', 'oblique']);
const fontVariantKeywords = uniteSets(basicKeywords, [
'normal',
'none',
'historical-forms',
'none',
'common-ligatures',
'no-common-ligatures',
'discretionary-ligatures',
'no-discretionary-ligatures',
'historical-ligatures',
'no-historical-ligatures',
'contextual',
'no-contextual',
'small-caps',
'small-caps',
'all-small-caps',
'petite-caps',
'all-petite-caps',
'unicase',
'titling-caps',
'lining-nums',
'oldstyle-nums',
'proportional-nums',
'tabular-nums',
'diagonal-fractions',
'stacked-fractions',
'ordinal',
'slashed-zero',
'jis78',
'jis83',
'jis90',
'jis04',
'simplified',
'traditional',
'full-width',
'proportional-width',
'ruby',
]);
const fontStretchKeywords = uniteSets(basicKeywords, [
'semi-condensed',
'condensed',
'extra-condensed',
'ultra-condensed',
'semi-expanded',
'expanded',
'extra-expanded',
'ultra-expanded',
]);
const fontSizeKeywords = uniteSets(basicKeywords, [
'xx-small',
'x-small',
'small',
'medium',
'large',
'x-large',
'xx-large',
'larger',
'smaller',
]);
const lineHeightKeywords = uniteSets(basicKeywords, ['normal']);
const fontShorthandKeywords = uniteSets(
basicKeywords,
fontStyleKeywords,
fontVariantKeywords,
fontWeightKeywords,
fontStretchKeywords,
fontSizeKeywords,
lineHeightKeywords,
fontFamilyKeywords,
);
const animationNameKeywords = uniteSets(basicKeywords, ['none']);
const animationTimingFunctionKeywords = uniteSets(basicKeywords, [
'linear',
'ease',
'ease-in',
'ease-in-out',
'ease-out',
'step-start',
'step-end',
'steps',
'cubic-bezier',
]);
const animationIterationCountKeywords = new Set(['infinite']);
const animationDirectionKeywords = uniteSets(basicKeywords, [
'normal',
'reverse',
'alternate',
'alternate-reverse',
]);
const animationFillModeKeywords = new Set(['none', 'forwards', 'backwards', 'both']);
const animationPlayStateKeywords = uniteSets(basicKeywords, ['running', 'paused']);
// cf. https://developer.mozilla.org/en-US/docs/Web/CSS/animation
const animationShorthandKeywords = uniteSets(
basicKeywords,
animationNameKeywords,
animationTimingFunctionKeywords,
animationIterationCountKeywords,
animationDirectionKeywords,
animationFillModeKeywords,
animationPlayStateKeywords,
);
const gridRowKeywords = uniteSets(basicKeywords, ['auto', 'span']);
const gridColumnKeywords = uniteSets(basicKeywords, ['auto', 'span']);
const gridAreaKeywords = uniteSets(basicKeywords, ['auto', 'span']);
// https://developer.mozilla.org/docs/Web/CSS/counter-increment
const counterIncrementKeywords = uniteSets(basicKeywords, ['none']);
const counterResetKeywords = uniteSets(basicKeywords, ['none']);
// https://developer.mozilla.org/ru/docs/Web/CSS/list-style-type
const listStyleTypeKeywords = uniteSets(basicKeywords, [
'none',
'disc',
'circle',
'square',
'decimal',
'cjk-decimal',
'decimal-leading-zero',
'lower-roman',
'upper-roman',
'lower-greek',
'lower-alpha',
'lower-latin',
'upper-alpha',
'upper-latin',
'arabic-indic',
'armenian',
'bengali',
'cambodian',
'cjk-earthly-branch',
'cjk-ideographic',
'devanagari',
'ethiopic-numeric',
'georgian',
'gujarati',
'gurmukhi',
'hebrew',
'hiragana',
'hiragana-iroha',
'japanese-formal',
'japanese-informal',
'kannada',
'katakana',
'katakana-iroha',
'khmer',
'korean-hangul-formal',
'korean-hanja-formal',
'korean-hanja-informal',
'lao',
'lower-armenian',
'malayalam',
'mongolian',
'myanmar',
'oriya',
'persian',
'simp-chinese-formal',
'simp-chinese-informal',
'tamil',
'telugu',
'thai',
'tibetan',
'trad-chinese-formal',
'trad-chinese-informal',
'upper-armenian',
'disclosure-open',
'disclosure-closed',
// Non-standard extensions (without prefixe)
'ethiopic-halehame',
'ethiopic-halehame-am',
'ethiopic-halehame-ti-er',
'ethiopic-halehame-ti-et',
'hangul',
'hangul-consonant',
'urdu',
]);
const listStylePositionKeywords = uniteSets(basicKeywords, ['inside', 'outside']);
const listStyleImageKeywords = uniteSets(basicKeywords, ['none']);
const listStyleShorthandKeywords = uniteSets(
basicKeywords,
listStyleTypeKeywords,
listStylePositionKeywords,
listStyleImageKeywords,
);
const camelCaseKeywords = new Set([
'optimizeSpeed',
'optimizeQuality',
'optimizeLegibility',
'geometricPrecision',
'currentColor',
'crispEdges',
'visiblePainted',
'visibleFill',
'visibleStroke',
'sRGB',
'linearRGB',
]);
const keyframeSelectorKeywords = new Set(['from', 'to']);
// https://www.w3.org/TR/CSS22/ui.html#system-colors
const systemColorsKeywords = new Set([
'activeborder',
'activecaption',
'appworkspace',
'background',
'buttonface',
'buttonhighlight',
'buttonshadow',
'buttontext',
'captiontext',
'graytext',
'highlight',
'highlighttext',
'inactiveborder',
'inactivecaption',
'inactivecaptiontext',
'infobackground',
'infotext',
'menu',
'menutext',
'scrollbar',
'threeddarkshadow',
'threedface',
'threedhighlight',
'threedlightshadow',
'threedshadow',
'window',
'windowframe',
'windowtext',
]);
module.exports = {
animationNameKeywords,
animationShorthandKeywords,
basicKeywords,
camelCaseKeywords,
counterIncrementKeywords,
counterResetKeywords,
fontFamilyKeywords,
fontShorthandKeywords,
fontSizeKeywords,
fontWeightAbsoluteKeywords,
fontWeightKeywords,
fontWeightNonNumericKeywords,
fontWeightRelativeKeywords,
gridAreaKeywords,
gridColumnKeywords,
gridRowKeywords,
keyframeSelectorKeywords,
listStyleImageKeywords,
listStylePositionKeywords,
listStyleShorthandKeywords,
listStyleTypeKeywords,
systemColorsKeywords,
systemFontKeywords,
};

69
node_modules/stylelint/lib/reference/mediaFeatures.js generated vendored Normal file
View File

@@ -0,0 +1,69 @@
'use strict';
const uniteSets = require('../utils/uniteSets.js');
const deprecatedMediaFeatureNames = new Set([
'device-aspect-ratio',
'device-height',
'device-width',
'max-device-aspect-ratio',
'max-device-height',
'max-device-width',
'min-device-aspect-ratio',
'min-device-height',
'min-device-width',
]);
const rangeTypeMediaFeatureNames = new Set([
'aspect-ratio',
'color-index',
'color',
'height',
'monochrome',
'resolution',
'width',
]);
const mediaFeatureNames = uniteSets(deprecatedMediaFeatureNames, rangeTypeMediaFeatureNames, [
'any-hover',
'any-pointer',
'color-gamut',
'display-mode',
'dynamic-range',
'forced-colors',
'grid',
'hover',
'inverted-colors',
'light-level',
'max-aspect-ratio',
'max-color',
'max-color-index',
'max-height',
'max-monochrome',
'max-resolution',
'max-width',
'min-aspect-ratio',
'min-color',
'min-color-index',
'min-height',
'min-monochrome',
'min-resolution',
'min-width',
'orientation',
'overflow-block',
'overflow-inline',
'pointer',
'prefers-color-scheme',
'prefers-contrast',
'prefers-reduced-motion',
'prefers-reduced-transparency',
'scan',
'scripting',
'update',
'video-dynamic-range',
]);
module.exports = {
rangeTypeMediaFeatureNames,
mediaFeatureNames,
};

377
node_modules/stylelint/lib/reference/properties.js generated vendored Normal file
View File

@@ -0,0 +1,377 @@
'use strict';
const acceptCustomIdentsProperties = new Set([
'animation',
'animation-name',
'font',
'font-family',
'counter-increment',
'grid-row',
'grid-column',
'grid-area',
'list-style',
'list-style-type',
]);
/** @type {import('stylelint').LonghandSubPropertiesOfShorthandProperties} */
const longhandSubPropertiesOfShorthandProperties = new Map([
// Sort alphabetically
[
'animation',
new Set([
'animation-name',
'animation-duration',
'animation-timing-function',
'animation-delay',
'animation-iteration-count',
'animation-direction',
'animation-fill-mode',
'animation-play-state',
]),
],
[
'background',
new Set([
'background-image',
'background-size',
'background-position',
'background-repeat',
'background-origin',
'background-clip',
'background-attachment',
'background-color',
]),
],
[
'border',
new Set([
'border-top-width',
'border-bottom-width',
'border-left-width',
'border-right-width',
'border-top-style',
'border-bottom-style',
'border-left-style',
'border-right-style',
'border-top-color',
'border-bottom-color',
'border-left-color',
'border-right-color',
]),
],
[
'border-block-end',
new Set([
// prettier-ignore
'border-block-end-width',
'border-block-end-style',
'border-block-end-color',
]),
],
[
'border-block-start',
new Set([
// prettier-ignore
'border-block-start-width',
'border-block-start-style',
'border-block-start-color',
]),
],
[
'border-bottom',
new Set([
// prettier-ignore
'border-bottom-width',
'border-bottom-style',
'border-bottom-color',
]),
],
[
'border-color',
new Set([
// prettier-ignore
'border-top-color',
'border-bottom-color',
'border-left-color',
'border-right-color',
]),
],
[
'border-image',
new Set([
'border-image-source',
'border-image-slice',
'border-image-width',
'border-image-outset',
'border-image-repeat',
]),
],
[
'border-inline-end',
new Set([
// prettier-ignore
'border-inline-end-width',
'border-inline-end-style',
'border-inline-end-color',
]),
],
[
'border-inline-start',
new Set([
'border-inline-start-width',
'border-inline-start-style',
'border-inline-start-color',
]),
],
[
'border-left',
new Set([
// prettier-ignore
'border-left-width',
'border-left-style',
'border-left-color',
]),
],
[
'border-radius',
new Set([
'border-top-right-radius',
'border-top-left-radius',
'border-bottom-right-radius',
'border-bottom-left-radius',
]),
],
[
'border-right',
new Set([
// prettier-ignore
'border-right-width',
'border-right-style',
'border-right-color',
]),
],
[
'border-style',
new Set([
// prettier-ignore
'border-top-style',
'border-bottom-style',
'border-left-style',
'border-right-style',
]),
],
[
'border-top',
new Set([
// prettier-ignore
'border-top-width',
'border-top-style',
'border-top-color',
]),
],
[
'border-width',
new Set([
// prettier-ignore
'border-top-width',
'border-bottom-width',
'border-left-width',
'border-right-width',
]),
],
[
'column-rule',
new Set([
// prettier-ignore
'column-rule-width',
'column-rule-style',
'column-rule-color',
]),
],
[
'columns',
new Set([
// prettier-ignore
'column-width',
'column-count',
]),
],
[
'flex',
new Set([
// prettier-ignore
'flex-grow',
'flex-shrink',
'flex-basis',
]),
],
[
'flex-flow',
new Set([
// prettier-ignore
'flex-direction',
'flex-wrap',
]),
],
[
'font',
new Set([
'font-style',
'font-variant',
'font-weight',
'font-stretch',
'font-size',
'font-family',
'line-height',
]),
],
[
'grid',
new Set([
'grid-template-rows',
'grid-template-columns',
'grid-template-areas',
'grid-auto-rows',
'grid-auto-columns',
'grid-auto-flow',
'grid-column-gap',
'grid-row-gap',
]),
],
[
'grid-area',
new Set([
// prettier-ignore
'grid-row-start',
'grid-column-start',
'grid-row-end',
'grid-column-end',
]),
],
[
'grid-column',
new Set([
// prettier-ignore
'grid-column-start',
'grid-column-end',
]),
],
[
'grid-gap',
new Set([
// prettier-ignore
'grid-row-gap',
'grid-column-gap',
]),
],
[
'grid-row',
new Set([
// prettier-ignore
'grid-row-start',
'grid-row-end',
]),
],
[
'grid-template',
new Set([
// prettier-ignore
'grid-template-columns',
'grid-template-rows',
'grid-template-areas',
]),
],
[
'list-style',
new Set([
// prettier-ignore
'list-style-type',
'list-style-position',
'list-style-image',
]),
],
[
'margin',
new Set([
// prettier-ignore
'margin-top',
'margin-bottom',
'margin-left',
'margin-right',
]),
],
[
'mask',
new Set([
'mask-image',
'mask-mode',
'mask-position',
'mask-size',
'mask-repeat',
'mask-origin',
'mask-clip',
'mask-composite',
]),
],
[
'outline',
new Set([
// prettier-ignore
'outline-color',
'outline-style',
'outline-width',
]),
],
[
'padding',
new Set([
// prettier-ignore
'padding-top',
'padding-bottom',
'padding-left',
'padding-right',
]),
],
[
'text-decoration',
new Set([
// prettier-ignore
'text-decoration-color',
'text-decoration-style',
'text-decoration-line',
]),
],
[
'text-emphasis',
new Set([
// prettier-ignore
'text-emphasis-style',
'text-emphasis-color',
]),
],
[
'transition',
new Set([
'transition-delay',
'transition-duration',
'transition-property',
'transition-timing-function',
]),
],
]);
const longhandTimeProperties = new Set([
'transition-duration',
'transition-delay',
'animation-duration',
'animation-delay',
]);
const shorthandTimeProperties = new Set(['transition', 'animation']);
module.exports = {
acceptCustomIdentsProperties,
longhandSubPropertiesOfShorthandProperties,
longhandTimeProperties,
shorthandTimeProperties,
};

319
node_modules/stylelint/lib/reference/selectors.js generated vendored Normal file
View File

@@ -0,0 +1,319 @@
'use strict';
const htmlTags = require('html-tags');
const uniteSets = require('../utils/uniteSets.js');
const deprecatedHtmlTypeSelectors = new Set([
'acronym',
'applet',
'basefont',
'big',
'blink',
'center',
'content',
'dir',
'font',
'frame',
'frameset',
'hgroup',
'isindex',
'keygen',
'listing',
'marquee',
'nobr',
'noembed',
'plaintext',
'spacer',
'strike',
'tt',
'xmp',
]);
// typecasting htmlTags to be more generic; see https://github.com/stylelint/stylelint/pull/6013 for discussion
/** @type {Set<string>} */
const standardHtmlTypeSelectors = new Set(htmlTags);
const htmlTypeSelectors = uniteSets(deprecatedHtmlTypeSelectors, standardHtmlTypeSelectors);
const mixedCaseSvgTypeSelectors = new Set([
'altGlyph',
'altGlyphDef',
'altGlyphItem',
'animateColor',
'animateMotion',
'animateTransform',
'clipPath',
'feBlend',
'feColorMatrix',
'feComponentTransfer',
'feComposite',
'feConvolveMatrix',
'feDiffuseLighting',
'feDisplacementMap',
'feDistantLight',
'feDropShadow',
'feFlood',
'feFuncA',
'feFuncB',
'feFuncG',
'feFuncR',
'feGaussianBlur',
'feImage',
'feMerge',
'feMergeNode',
'feMorphology',
'feOffset',
'fePointLight',
'feSpecularLighting',
'feSpotLight',
'feTile',
'feTurbulence',
'foreignObject',
'glyphRef',
'linearGradient',
'radialGradient',
'textPath',
]);
// These are the ones that can have single-colon notation
const levelOneAndTwoPseudoElements = new Set(['before', 'after', 'first-line', 'first-letter']);
const shadowTreePseudoElements = new Set(['part']);
const webkitScrollbarPseudoElements = new Set([
'-webkit-resizer',
'-webkit-scrollbar',
'-webkit-scrollbar-button',
'-webkit-scrollbar-corner',
'-webkit-scrollbar-thumb',
'-webkit-scrollbar-track',
'-webkit-scrollbar-track-piece',
]);
const vendorSpecificPseudoElements = uniteSets(webkitScrollbarPseudoElements, [
'-moz-focus-inner',
'-moz-focus-outer',
'-moz-list-bullet',
'-moz-meter-bar',
'-moz-placeholder',
'-moz-progress-bar',
'-moz-range-progress',
'-moz-range-thumb',
'-moz-range-track',
'-ms-browse',
'-ms-check',
'-ms-clear',
'-ms-expand',
'-ms-fill',
'-ms-fill-lower',
'-ms-fill-upper',
'-ms-reveal',
'-ms-thumb',
'-ms-ticks-after',
'-ms-ticks-before',
'-ms-tooltip',
'-ms-track',
'-ms-value',
'-webkit-color-swatch',
'-webkit-color-swatch-wrapper',
'-webkit-calendar-picker-indicator',
'-webkit-clear-button',
'-webkit-date-and-time-value',
'-webkit-datetime-edit',
'-webkit-datetime-edit-ampm-field',
'-webkit-datetime-edit-day-field',
'-webkit-datetime-edit-fields-wrapper',
'-webkit-datetime-edit-hour-field',
'-webkit-datetime-edit-millisecond-field',
'-webkit-datetime-edit-minute-field',
'-webkit-datetime-edit-month-field',
'-webkit-datetime-edit-second-field',
'-webkit-datetime-edit-text',
'-webkit-datetime-edit-week-field',
'-webkit-datetime-edit-year-field',
'-webkit-details-marker',
'-webkit-distributed',
'-webkit-file-upload-button',
'-webkit-input-placeholder',
'-webkit-keygen-select',
'-webkit-meter-bar',
'-webkit-meter-even-less-good-value',
'-webkit-meter-inner-element',
'-webkit-meter-optimum-value',
'-webkit-meter-suboptimum-value',
'-webkit-progress-bar',
'-webkit-progress-inner-element',
'-webkit-progress-value',
'-webkit-search-cancel-button',
'-webkit-search-decoration',
'-webkit-search-results-button',
'-webkit-search-results-decoration',
'-webkit-slider-runnable-track',
'-webkit-slider-thumb',
'-webkit-textfield-decoration-container',
'-webkit-validation-bubble',
'-webkit-validation-bubble-arrow',
'-webkit-validation-bubble-arrow-clipper',
'-webkit-validation-bubble-heading',
'-webkit-validation-bubble-message',
'-webkit-validation-bubble-text-block',
]);
const pseudoElements = uniteSets(
levelOneAndTwoPseudoElements,
vendorSpecificPseudoElements,
shadowTreePseudoElements,
[
'backdrop',
'content',
'cue',
'file-selector-button',
'grammar-error',
'highlight',
'marker',
'placeholder',
'selection',
'shadow',
'slotted',
'spelling-error',
'target-text',
],
);
const aNPlusBNotationPseudoClasses = new Set([
'nth-column',
'nth-last-column',
'nth-last-of-type',
'nth-of-type',
]);
const aNPlusBOfSNotationPseudoClasses = new Set(['nth-child', 'nth-last-child']);
const atRulePagePseudoClasses = new Set(['first', 'right', 'left', 'blank']);
const linguisticPseudoClasses = new Set(['dir', 'lang']);
const logicalCombinationsPseudoClasses = new Set(['has', 'is', 'matches', 'not', 'where']);
const vendorSpecificPseudoClasses = new Set([
'-khtml-drag',
'-moz-any',
'-moz-any-link',
'-moz-broken',
'-moz-drag-over',
'-moz-first-node',
'-moz-focusring',
'-moz-full-screen',
'-moz-full-screen-ancestor',
'-moz-last-node',
'-moz-loading',
'-moz-meter-optimum',
'-moz-meter-sub-optimum',
'-moz-meter-sub-sub-optimum',
'-moz-placeholder',
'-moz-submit-invalid',
'-moz-suppressed',
'-moz-ui-invalid',
'-moz-ui-valid',
'-moz-user-disabled',
'-moz-window-inactive',
'-ms-fullscreen',
'-ms-input-placeholder',
'-webkit-drag',
'-webkit-any',
'-webkit-any-link',
'-webkit-autofill',
'-webkit-full-screen',
'-webkit-full-screen-ancestor',
]);
// https://webkit.org/blog/363/styling-scrollbars/
const webkitScrollbarPseudoClasses = new Set([
'horizontal',
'vertical',
'decrement',
'increment',
'start',
'end',
'double-button',
'single-button',
'no-button',
'corner-present',
'window-inactive',
]);
const pseudoClasses = uniteSets(
aNPlusBNotationPseudoClasses,
linguisticPseudoClasses,
logicalCombinationsPseudoClasses,
aNPlusBOfSNotationPseudoClasses,
vendorSpecificPseudoClasses,
[
'active',
'any-link',
'autofill',
'blank',
'checked',
'current',
'default',
'defined',
'disabled',
'empty',
'enabled',
'first-child',
'first-of-type',
'focus',
'focus-within',
'focus-visible',
'fullscreen',
'fullscreen-ancestor',
'future',
'host',
'host-context',
'hover',
'indeterminate',
'in-range',
'invalid',
'last-child',
'last-of-type',
'link',
'only-child',
'only-of-type',
'optional',
'out-of-range',
'past',
'placeholder-shown',
'playing',
'picture-in-picture',
'paused',
'read-only',
'read-write',
'required',
'root',
'scope',
'state',
'target',
'unresolved',
'user-invalid',
'user-valid',
'valid',
'visited',
'window-inactive', // for ::selection (chrome)
],
);
module.exports = {
aNPlusBNotationPseudoClasses,
aNPlusBOfSNotationPseudoClasses,
atRulePagePseudoClasses,
levelOneAndTwoPseudoElements,
linguisticPseudoClasses,
logicalCombinationsPseudoClasses,
mixedCaseSvgTypeSelectors,
pseudoClasses,
pseudoElements,
shadowTreePseudoElements,
htmlTypeSelectors,
webkitScrollbarPseudoClasses,
webkitScrollbarPseudoElements,
};

88
node_modules/stylelint/lib/reference/units.js generated vendored Normal file
View File

@@ -0,0 +1,88 @@
'use strict';
const uniteSets = require('../utils/uniteSets.js');
const lengthUnits = new Set([
// Font-relative length units
'cap',
'ch',
'em',
'ex',
'ic',
'lh',
'rcap',
'rch',
'rem',
'rex',
'ric',
'rlh',
// Viewport-percentage lengths
'dvb',
'dvh',
'dvi',
'dvmax',
'dvmin',
'dvw',
'lvb',
'lvh',
'lvi',
'lvmax',
'lvmin',
'lvw',
'svb',
'svh',
'svi',
'svmax',
'svmin',
'svw',
'vb',
'vh',
'vi',
'vw',
'vmin',
'vmax',
'vm',
// Absolute length units
'px',
'mm',
'cm',
'in',
'pt',
'pc',
'q',
'mozmm',
// Flexible length units
'fr',
// Container query units
'cqw',
'cqh',
'cqi',
'cqb',
'cqmin',
'cqmax',
]);
const units = uniteSets(lengthUnits, [
// Relative length units
'%',
// Time length units
's',
'ms',
// Angle
'deg',
'grad',
'turn',
'rad',
// Frequency
'Hz',
'kHz',
// Resolution
'dpi',
'dpcm',
'dppx',
]);
module.exports = {
lengthUnits,
units,
};