cssints 0.2.0 → 0.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (50) hide show
  1. package/README.md +88 -44
  2. package/dist/check.mjs +2 -2
  3. package/dist/{contrast-DhK69Xak.mjs → contrast-B49XCnVX.mjs} +2 -2
  4. package/dist/devtools-link-D2YxsJKZ.mjs +94 -0
  5. package/dist/devtools-link.d.mts +55 -0
  6. package/dist/devtools-link.mjs +2 -0
  7. package/dist/groups/baseline-2015/with-downstream.d.mts +81 -0
  8. package/dist/groups/baseline-2015.d.mts +291 -0
  9. package/dist/groups/baseline-2016/with-downstream.d.mts +86 -0
  10. package/dist/groups/baseline-2016.d.mts +310 -0
  11. package/dist/groups/baseline-2017/with-downstream.d.mts +94 -0
  12. package/dist/groups/baseline-2017.d.mts +365 -0
  13. package/dist/groups/baseline-2018/with-downstream.d.mts +94 -0
  14. package/dist/groups/baseline-2018.d.mts +368 -0
  15. package/dist/groups/baseline-2019/with-downstream.d.mts +97 -0
  16. package/dist/groups/baseline-2019.d.mts +375 -0
  17. package/dist/groups/baseline-2020/with-downstream.d.mts +112 -0
  18. package/dist/groups/baseline-2020.d.mts +480 -0
  19. package/dist/groups/baseline-2021/with-downstream.d.mts +125 -0
  20. package/dist/groups/baseline-2021.d.mts +536 -0
  21. package/dist/groups/baseline-2022/with-downstream.d.mts +126 -0
  22. package/dist/groups/baseline-2022.d.mts +562 -0
  23. package/dist/groups/baseline-2023/with-downstream.d.mts +120 -0
  24. package/dist/groups/baseline-2023.d.mts +606 -0
  25. package/dist/groups/baseline-2024/with-downstream.d.mts +627 -0
  26. package/dist/groups/baseline-2024.d.mts +632 -0
  27. package/dist/groups/baseline-2025/with-downstream.d.mts +628 -0
  28. package/dist/groups/baseline-2025.d.mts +640 -0
  29. package/dist/groups/baseline-2026/with-downstream.d.mts +3 -0
  30. package/dist/groups/baseline-2026.d.mts +3 -0
  31. package/dist/groups/newly-available/with-downstream.d.mts +632 -0
  32. package/dist/groups/widely-available/with-downstream.d.mts +121 -0
  33. package/dist/index.mjs +22 -7
  34. package/dist/instrument-BqIZpbIU.mjs +3956 -0
  35. package/dist/{lowered-D2KusPLp.mjs → lowered-aJVapQT6.mjs} +1 -1
  36. package/dist/plugin-types.d.mts +7 -0
  37. package/dist/plugin.d.mts +2 -2
  38. package/dist/plugin.mjs +8 -1
  39. package/dist/{registry-CTumHB8p.mjs → registry-BUSEO32-.mjs} +7 -1
  40. package/dist/{scope-ZVhUxQH1.d.mts → scope-INuJD4RT.d.mts} +8 -1
  41. package/dist/{sheet-BKsMTa0c.mjs → sheet-BeHdq4xt.mjs} +1 -1
  42. package/dist/surface.d.mts +1 -1
  43. package/dist/{theme-BsP2E4LB.mjs → theme-SlQ73rFL.mjs} +3 -3
  44. package/dist/tui.mjs +4 -4
  45. package/dist/vite.d.mts +3 -1
  46. package/dist/vite.mjs +92 -39
  47. package/docs/API.md +458 -231
  48. package/package.json +6 -2
  49. package/skills/cssints-plugin/SKILL.md +2 -0
  50. package/dist/instrument-gCazujmb.mjs +0 -1624
@@ -1,1624 +0,0 @@
1
- import { u as ImportError } from "./registry-CTumHB8p.mjs";
2
- import { Effect, Formatter, Predicate } from "effect";
3
- import { parseSync } from "oxc-parser";
4
- import MagicString from "magic-string";
5
- //#region src/groups-data.ts
6
- const groups = {
7
- "widely-available": {
8
- kind: "baseline",
9
- title: "Baseline widely available (high)",
10
- members: "WebkitTextFillColor WebkitTextStroke WebkitTextStrokeColor WebkitTextStrokeWidth acos active alignContent alignItems alignSelf all animation animationComposition animationDelay animationDirection animationDuration animationFillMode animationIterationCount animationName animationPlayState animationTimingFunction anyLink appearance asin aspectRatio atan atan2 attrFn backfaceVisibility background backgroundAttachment backgroundBlendMode backgroundClip backgroundColor backgroundImage backgroundOrigin backgroundPosition backgroundPositionX backgroundPositionY backgroundRepeat backgroundSize bg blockSize blur border borderBlock borderBlockColor borderBlockEnd borderBlockEndColor borderBlockEndStyle borderBlockEndWidth borderBlockStart borderBlockStartColor borderBlockStartStyle borderBlockStartWidth borderBlockStyle borderBlockWidth borderBottom borderBottomColor borderBottomLeftRadius borderBottomRightRadius borderBottomStyle borderBottomWidth borderCollapse borderColor borderEndEndRadius borderEndStartRadius borderImage borderImageOutset borderImageRepeat borderImageSlice borderImageSource borderImageWidth borderInline borderInlineColor borderInlineEnd borderInlineEndColor borderInlineEndStyle borderInlineEndWidth borderInlineStart borderInlineStartColor borderInlineStartStyle borderInlineStartWidth borderInlineStyle borderInlineWidth borderLeft borderLeftColor borderLeftStyle borderLeftWidth borderRadius borderRight borderRightColor borderRightStyle borderRightWidth borderSpacing borderStartEndRadius borderStartStartRadius borderStyle borderTop borderTopColor borderTopLeftRadius borderTopRightRadius borderTopStyle borderTopWidth borderWidth bottom boxShadow boxSizing breakAfter breakBefore breakInside brightness calc captionSide caretColor checked circle clamp clear clipPath clipRule color colorFn colorInterpolationFilters colorMix colorScheme columnCount columnFill columnGap columnRule columnRuleColor columnRuleStyle columnRuleWidth columnSpan columnWidth columns conicGradient contain containIntrinsicBlockSize containIntrinsicHeight containIntrinsicInlineSize containIntrinsicSize containIntrinsicWidth container containerName containerType content contrast cos counter counterIncrement counterReset counterSet counters cubicBezier cursor cx cy defined direction disabled display dominantBaseline dropShadow ellipse empty emptyCells enabled env exp fill fillOpacity fillRule filter firstChild firstOfType flex flexBasis flexDirection flexFlow flexGrow flexShrink flexWrap float floodColor floodOpacity focus focusVisible focusWithin font fontFamily fontFeatureSettings fontKerning fontOpticalSizing fontPalette fontSize fontStyle fontSynthesis fontSynthesisSmallCaps fontSynthesisStyle fontSynthesisWeight fontVariant fontVariantAlternates fontVariantCaps fontVariantEastAsian fontVariantLigatures fontVariantNumeric fontVariantPosition fontVariationSettings fontWeight gap grayscale grid gridArea gridAutoColumns gridAutoFlow gridAutoRows gridColumn gridColumnEnd gridColumnStart gridRow gridRowEnd gridRowStart gridTemplate gridTemplateAreas gridTemplateColumns gridTemplateRows height hover hsl hsla hueRotate hwb hyphenateCharacter hyphens hypot image imageOrientation imageRendering imageSet inRange indeterminate inlineSize inset insetBlock insetBlockEnd insetBlockStart insetFn insetInline insetInlineEnd insetInlineStart invalid invert isolation justifyContent justifyItems justifySelf keyframes lab lastChild lastOfType lch left letterSpacing lightingColor lineBreak lineHeight linear linearGradient link listStyle listStyleImage listStylePosition listStyleType log m margin marginBlock marginBlockEnd marginBlockStart marginBottom marginInline marginInlineEnd marginInlineStart marginLeft marginRight marginTop marker markerEnd markerMid markerStart mask maskClip maskComposite maskImage maskOrigin maskPosition maskRepeat maskSize maskType mathStyle matrix matrix3d max maxBlockSize maxHeight maxInlineSize maxWidth mb media min minBlockSize minHeight minInlineSize minWidth minmax mixBlendMode ml modal mr mt objectFit objectPosition offset offsetAnchor offsetDistance offsetPath offsetPosition offsetRotate oklab oklch onlyChild onlyOfType opacity opacityFn optional order outOfRange outline outlineColor outlineOffset outlineStyle outlineWidth overflow overflowWrap overflowX overflowY p padding paddingBlock paddingBlockEnd paddingBlockStart paddingBottom paddingInline paddingInlineEnd paddingInlineStart paddingLeft paddingRight paddingTop page paintOrder path pb perspective perspectiveFn perspectiveOrigin pl placeContent placeItems placeSelf placeholderShown pointerEvents polygon position pow pr pt quotes r radialGradient ray readOnly readWrite rect repeatingConicGradient repeatingLinearGradient repeatingRadialGradient required rgb rgba right root rotate rotate3d rotateFn rotateX rotateY rotateZ rowGap rx ry saturate scale scale3d scaleFn scaleX scaleY scaleZ scope scrollBehavior scrollMargin scrollMarginBlock scrollMarginBlockEnd scrollMarginBlockStart scrollMarginBottom scrollMarginInline scrollMarginInlineEnd scrollMarginInlineStart scrollMarginLeft scrollMarginRight scrollMarginTop scrollPadding scrollPaddingBlock scrollPaddingBlockEnd scrollPaddingBlockStart scrollPaddingBottom scrollPaddingInline scrollPaddingInlineEnd scrollPaddingInlineStart scrollPaddingLeft scrollPaddingRight scrollPaddingTop scrollSnapAlign scrollSnapStop scrollSnapType sepia shapeImageThreshold shapeMargin shapeOutside shapeRendering sin skew skewX skewY sqrt steps stopColor stopOpacity stroke strokeDasharray strokeDashoffset strokeLinecap strokeLinejoin strokeMiterlimit strokeOpacity strokeWidth supports tabSize tableLayout tan target textAlign textAlignLast textAnchor textCombineUpright textDecoration textDecorationColor textDecorationLine textDecorationSkipInk textDecorationStyle textDecorationThickness textEmphasis textEmphasisColor textEmphasisPosition textEmphasisStyle textIndent textOrientation textOverflow textRendering textShadow textTransform textUnderlineOffset textUnderlinePosition textWrap top touchAction transform transformBox transformOrigin transformStyle transition transitionDelay transitionDuration transitionProperty transitionTimingFunction translate translate3d translateFn translateX translateY translateZ unicodeBidi url userInvalid userValid valid var vectorEffect verticalAlign visibility visited whiteSpace whiteSpaceCollapse width willChange wordBreak wordSpacing writingMode x xywh y zIndex",
11
- ban: {
12
- kw: {
13
- "align-items": "anchor-center",
14
- "align-self": "anchor-center",
15
- "animation-duration": "auto",
16
- "background": "text",
17
- "background-attachment": "fixed",
18
- "background-clip": "border-area text",
19
- "background-image": "element(",
20
- "block-size": "anchor-size( fit-content(",
21
- "bottom": "anchor( anchor-size(",
22
- "break-after": "always avoid avoid-column avoid-page column recto verso",
23
- "break-before": "always avoid avoid-column avoid-page column recto verso",
24
- "container-type": "scroll-state",
25
- "counter-reset": "reversed(",
26
- "display": "grid-lanes inline-grid-lanes math ruby ruby-base ruby-base-container ruby-text ruby-text-container",
27
- "flex": "anchor-size( fit-content(",
28
- "flex-basis": "anchor-size( fit-content(",
29
- "flex-wrap": "balance",
30
- "font": "math ui-monospace ui-rounded ui-sans-serif ui-serif",
31
- "font-family": "math ui-monospace ui-rounded ui-sans-serif ui-serif",
32
- "font-palette": "palette-mix(",
33
- "font-size": "math",
34
- "font-synthesis": "position",
35
- "font-variant-position": "sub super",
36
- "height": "anchor-size( fit-content(",
37
- "image-rendering": "crisp-edges smooth",
38
- "inline-size": "anchor-size( fit-content(",
39
- "inset": "anchor( anchor-size(",
40
- "inset-block": "anchor( anchor-size(",
41
- "inset-block-end": "anchor( anchor-size(",
42
- "inset-block-start": "anchor( anchor-size(",
43
- "inset-inline": "anchor( anchor-size(",
44
- "inset-inline-end": "anchor( anchor-size(",
45
- "inset-inline-start": "anchor( anchor-size(",
46
- "justify-items": "anchor-center",
47
- "justify-self": "anchor-center",
48
- "left": "anchor( anchor-size(",
49
- "list-style": "symbols(",
50
- "list-style-type": "symbols(",
51
- "margin": "anchor-size(",
52
- "margin-block": "anchor-size(",
53
- "margin-block-end": "anchor-size(",
54
- "margin-block-start": "anchor-size(",
55
- "margin-bottom": "anchor-size(",
56
- "margin-inline": "anchor-size(",
57
- "margin-inline-end": "anchor-size(",
58
- "margin-inline-start": "anchor-size(",
59
- "margin-left": "anchor-size(",
60
- "margin-right": "anchor-size(",
61
- "margin-top": "anchor-size(",
62
- "mask-origin": "fill-box stroke-box view-box",
63
- "max-block-size": "anchor-size( fit-content(",
64
- "max-height": "anchor-size( fit-content(",
65
- "max-inline-size": "anchor-size( fit-content(",
66
- "max-width": "anchor-size( fit-content(",
67
- "min-block-size": "anchor-size( fit-content(",
68
- "min-height": "anchor-size( fit-content(",
69
- "min-inline-size": "anchor-size( fit-content(",
70
- "min-width": "anchor-size( fit-content(",
71
- "offset-path": "border-box content-box fill-box none padding-box stroke-box view-box",
72
- "place-items": "anchor-center",
73
- "place-self": "anchor-center",
74
- "right": "anchor( anchor-size(",
75
- "shape-outside": "path(",
76
- "text-align": "match-parent",
77
- "text-decoration": "currentColor transparent",
78
- "text-decoration-line": "blink grammar-error spelling-error",
79
- "text-decoration-skip-ink": "all",
80
- "text-indent": "each-line hanging",
81
- "text-transform": "full-size-kana full-width math-auto",
82
- "text-underline-position": "left right",
83
- "text-wrap": "balance pretty stable",
84
- "top": "anchor( anchor-size(",
85
- "touch-action": "pan-down pan-left pan-right pan-up",
86
- "transform-box": "content-box stroke-box",
87
- "white-space-collapse": "preserve-spaces",
88
- "width": "anchor-size( fit-content(",
89
- "word-break": "auto-phrase break-word",
90
- "writing-mode": "sideways-lr sideways-rl"
91
- },
92
- fn: "abs anchor anchor-size calc-size contrast-color cross-fade dynamic-range-limit-mix element fit-content layer leader light-dark mod paint palette-mix rem round scroll sign src superellipse symbols target-counter target-counters target-text view",
93
- unit: "rcap rch rex ric",
94
- media: "color-index device-aspect-ratio device-height device-posture device-width horizontal-viewport-segments inverted-colors prefers-reduced-data prefers-reduced-transparency vertical-viewport-segments video-dynamic-range",
95
- container: "anchored( style(",
96
- supports: ""
97
- }
98
- },
99
- "newly-available": {
100
- kind: "baseline",
101
- title: "Baseline newly available (low) and widely available",
102
- members: "WebkitTextFillColor WebkitTextStroke WebkitTextStrokeColor WebkitTextStrokeWidth abs acos active alignContent alignItems alignSelf alignmentBaseline all anchor anchorName anchorScope anchorSize animation animationComposition animationDelay animationDirection animationDuration animationFillMode animationIterationCount animationName animationPlayState animationTimingFunction anyLink appearance asin aspectRatio atan atan2 attrFn backdropFilter backfaceVisibility background backgroundAttachment backgroundBlendMode backgroundClip backgroundColor backgroundImage backgroundOrigin backgroundPosition backgroundPositionX backgroundPositionY backgroundRepeat backgroundSize baselineShift bg blockSize blur border borderBlock borderBlockColor borderBlockEnd borderBlockEndColor borderBlockEndStyle borderBlockEndWidth borderBlockStart borderBlockStartColor borderBlockStartStyle borderBlockStartWidth borderBlockStyle borderBlockWidth borderBottom borderBottomColor borderBottomLeftRadius borderBottomRightRadius borderBottomStyle borderBottomWidth borderCollapse borderColor borderEndEndRadius borderEndStartRadius borderImage borderImageOutset borderImageRepeat borderImageSlice borderImageSource borderImageWidth borderInline borderInlineColor borderInlineEnd borderInlineEndColor borderInlineEndStyle borderInlineEndWidth borderInlineStart borderInlineStartColor borderInlineStartStyle borderInlineStartWidth borderInlineStyle borderInlineWidth borderLeft borderLeftColor borderLeftStyle borderLeftWidth borderRadius borderRight borderRightColor borderRightStyle borderRightWidth borderSpacing borderStartEndRadius borderStartStartRadius borderStyle borderTop borderTopColor borderTopLeftRadius borderTopRightRadius borderTopStyle borderTopWidth borderWidth bottom boxShadow boxSizing breakAfter breakBefore breakInside brightness calc captionSide caretColor checked circle clamp clear clipPath clipRule color colorFn colorInterpolationFilters colorMix colorScheme columnCount columnFill columnGap columnRule columnRuleColor columnRuleStyle columnRuleWidth columnSpan columnWidth columns conicGradient contain containIntrinsicBlockSize containIntrinsicHeight containIntrinsicInlineSize containIntrinsicSize containIntrinsicWidth container containerName containerType content contentVisibility contrast contrastColor cos counter counterIncrement counterReset counterSet counters cubicBezier cursor cx cy defined direction disabled display dominantBaseline dropShadow ellipse empty emptyCells enabled env exp fieldSizing fill fillOpacity fillRule filter firstChild firstOfType flex flexBasis flexDirection flexFlow flexGrow flexShrink flexWrap float floodColor floodOpacity focus focusVisible focusWithin font fontFamily fontFeatureSettings fontKerning fontOpticalSizing fontPalette fontSize fontSizeAdjust fontStyle fontSynthesis fontSynthesisSmallCaps fontSynthesisStyle fontSynthesisWeight fontVariant fontVariantAlternates fontVariantCaps fontVariantEastAsian fontVariantLigatures fontVariantNumeric fontVariantPosition fontVariationSettings fontWeight gap grayscale grid gridArea gridAutoColumns gridAutoFlow gridAutoRows gridColumn gridColumnEnd gridColumnStart gridRow gridRowEnd gridRowStart gridTemplate gridTemplateAreas gridTemplateColumns gridTemplateRows height hover hsl hsla hueRotate hwb hyphenateCharacter hyphens hypot image imageOrientation imageRendering imageSet inRange indeterminate inlineSize inset insetBlock insetBlockEnd insetBlockStart insetFn insetInline insetInlineEnd insetInlineStart invalid invert isolation justifyContent justifyItems justifySelf keyframes lab lastChild lastOfType lch left letterSpacing lightDark lightingColor lineBreak lineHeight linear linearGradient link listStyle listStyleImage listStylePosition listStyleType log m margin marginBlock marginBlockEnd marginBlockStart marginBottom marginInline marginInlineEnd marginInlineStart marginLeft marginRight marginTop marker markerEnd markerMid markerStart mask maskClip maskComposite maskImage maskOrigin maskPosition maskRepeat maskSize maskType mathDepth mathShift mathStyle matrix matrix3d max maxBlockSize maxHeight maxInlineSize maxWidth mb media min minBlockSize minHeight minInlineSize minWidth minmax mixBlendMode ml mod modal mr mt objectFit objectPosition offset offsetAnchor offsetDistance offsetPath offsetPosition offsetRotate oklab oklch onlyChild onlyOfType opacity opacityFn open optional order outOfRange outline outlineColor outlineOffset outlineStyle outlineWidth overflow overflowAnchor overflowBlock overflowInline overflowWrap overflowX overflowY p padding paddingBlock paddingBlockEnd paddingBlockStart paddingBottom paddingInline paddingInlineEnd paddingInlineStart paddingLeft paddingRight paddingTop page paintOrder path pb perspective perspectiveFn perspectiveOrigin pl placeContent placeItems placeSelf placeholderShown pointerEvents polygon popoverOpen position positionAnchor positionArea positionTry positionTryFallbacks positionTryOrder positionVisibility pow pr printColorAdjust pt quotes r radialGradient ray readOnly readWrite rect rem repeatingConicGradient repeatingLinearGradient repeatingRadialGradient required rgb rgba right root rotate rotate3d rotateFn rotateX rotateY rotateZ round rowGap rubyAlign rubyPosition rx ry saturate scale scale3d scaleFn scaleX scaleY scaleZ scope scrollBehavior scrollMargin scrollMarginBlock scrollMarginBlockEnd scrollMarginBlockStart scrollMarginBottom scrollMarginInline scrollMarginInlineEnd scrollMarginInlineStart scrollMarginLeft scrollMarginRight scrollMarginTop scrollPadding scrollPaddingBlock scrollPaddingBlockEnd scrollPaddingBlockStart scrollPaddingBottom scrollPaddingInline scrollPaddingInlineEnd scrollPaddingInlineStart scrollPaddingLeft scrollPaddingRight scrollPaddingTop scrollSnapAlign scrollSnapStop scrollSnapType scrollbarColor scrollbarGutter scrollbarWidth sepia shapeImageThreshold shapeMargin shapeOutside shapeRendering sign sin skew skewX skewY sqrt steps stopColor stopOpacity stroke strokeDasharray strokeDashoffset strokeLinecap strokeLinejoin strokeMiterlimit strokeOpacity strokeWidth supports tabSize tableLayout tan target textAlign textAlignLast textAnchor textAutospace textBox textBoxEdge textBoxTrim textCombineUpright textDecoration textDecorationColor textDecorationLine textDecorationSkipInk textDecorationStyle textDecorationThickness textEmphasis textEmphasisColor textEmphasisPosition textEmphasisStyle textIndent textOrientation textOverflow textRendering textShadow textTransform textUnderlineOffset textUnderlinePosition textWrap textWrapMode textWrapStyle top touchAction transform transformBox transformOrigin transformStyle transition transitionBehavior transitionDelay transitionDuration transitionProperty transitionTimingFunction translate translate3d translateFn translateX translateY translateZ unicodeBidi url userInvalid userValid valid var vectorEffect verticalAlign viewTransitionClass viewTransitionName visibility visited whiteSpace whiteSpaceCollapse width willChange wordBreak wordSpacing writingMode x xywh y zIndex zoom",
103
- ban: {
104
- kw: {
105
- "alignment-baseline": "text-after-edge text-before-edge",
106
- "animation-duration": "auto",
107
- "background": "text",
108
- "background-attachment": "fixed",
109
- "background-clip": "border-area text",
110
- "background-image": "element(",
111
- "block-size": "fit-content(",
112
- "break-after": "always avoid avoid-column avoid-page column recto verso",
113
- "break-before": "always avoid avoid-column avoid-page column recto verso",
114
- "container-type": "scroll-state",
115
- "counter-reset": "reversed(",
116
- "display": "grid-lanes inline-grid-lanes math ruby ruby-base ruby-base-container ruby-text ruby-text-container",
117
- "flex": "fit-content(",
118
- "flex-basis": "fit-content(",
119
- "flex-wrap": "balance",
120
- "font": "ui-monospace ui-rounded ui-sans-serif ui-serif",
121
- "font-family": "ui-monospace ui-rounded ui-sans-serif ui-serif",
122
- "font-palette": "palette-mix(",
123
- "font-synthesis": "position",
124
- "font-variant-position": "sub super",
125
- "height": "fit-content(",
126
- "image-rendering": "smooth",
127
- "inline-size": "fit-content(",
128
- "list-style": "symbols(",
129
- "list-style-type": "symbols(",
130
- "mask-origin": "fill-box stroke-box view-box",
131
- "max-block-size": "fit-content(",
132
- "max-height": "fit-content(",
133
- "max-inline-size": "fit-content(",
134
- "max-width": "fit-content(",
135
- "min-block-size": "fit-content(",
136
- "min-height": "fit-content(",
137
- "min-inline-size": "fit-content(",
138
- "min-width": "fit-content(",
139
- "position-visibility": "anchors-valid anchors-visible",
140
- "ruby-position": "alternate inter-character",
141
- "shape-outside": "path(",
142
- "text-align": "match-parent",
143
- "text-autospace": "auto ideograph-alpha ideograph-numeric insert",
144
- "text-decoration-line": "blink",
145
- "text-transform": "full-size-kana full-width math-auto",
146
- "text-wrap": "pretty",
147
- "text-wrap-style": "pretty",
148
- "touch-action": "pan-down pan-left pan-right pan-up",
149
- "white-space-collapse": "preserve-spaces",
150
- "width": "fit-content(",
151
- "word-break": "auto-phrase break-word"
152
- },
153
- fn: "calc-size cross-fade dynamic-range-limit-mix element fit-content layer leader paint palette-mix scroll src superellipse symbols target-counter target-counters target-text view",
154
- unit: "",
155
- media: "color-index device-aspect-ratio device-height device-posture device-width horizontal-viewport-segments inverted-colors prefers-reduced-data prefers-reduced-transparency vertical-viewport-segments video-dynamic-range",
156
- container: "anchored(",
157
- supports: ""
158
- }
159
- },
160
- "not-discouraged": {
161
- kind: "baseline",
162
- title: "everything web-features does not discourage",
163
- members: "WebkitBoxOrient WebkitBoxReflect WebkitLineClamp WebkitTapHighlightColor WebkitTextFillColor WebkitTextStroke WebkitTextStrokeColor WebkitTextStrokeWidth WebkitTouchCallout WebkitUserModify abs accentColor acos active alignContent alignItems alignSelf alignmentBaseline all anchor anchorName anchorScope anchorSize animation animationComposition animationDelay animationDirection animationDuration animationFillMode animationIterationCount animationName animationPlayState animationRange animationRangeEnd animationRangeStart animationTimeline animationTimingFunction animationTrigger anyLink appearance asin aspectRatio atan atan2 attrFn autofill backdropFilter backfaceVisibility background backgroundAttachment backgroundBlendMode backgroundClip backgroundColor backgroundImage backgroundOrigin backgroundPosition backgroundPositionX backgroundPositionY backgroundRepeat backgroundSize baselineShift baselineSource bg blockSize blur border borderBlock borderBlockColor borderBlockEnd borderBlockEndColor borderBlockEndStyle borderBlockEndWidth borderBlockStart borderBlockStartColor borderBlockStartStyle borderBlockStartWidth borderBlockStyle borderBlockWidth borderBottom borderBottomColor borderBottomLeftRadius borderBottomRightRadius borderBottomStyle borderBottomWidth borderCollapse borderColor borderEndEndRadius borderEndStartRadius borderImage borderImageOutset borderImageRepeat borderImageSlice borderImageSource borderImageWidth borderInline borderInlineColor borderInlineEnd borderInlineEndColor borderInlineEndStyle borderInlineEndWidth borderInlineStart borderInlineStartColor borderInlineStartStyle borderInlineStartWidth borderInlineStyle borderInlineWidth borderLeft borderLeftColor borderLeftStyle borderLeftWidth borderRadius borderRight borderRightColor borderRightStyle borderRightWidth borderSpacing borderStartEndRadius borderStartStartRadius borderStyle borderTop borderTopColor borderTopLeftRadius borderTopRightRadius borderTopStyle borderTopWidth borderWidth bottom boxDecorationBreak boxShadow boxSizing breakAfter breakBefore breakInside brightness buffering calc calcSize captionSide caret caretAnimation caretColor caretShape checked circle clamp clear clipPath clipRule color colorFn colorInterpolationFilters colorMix colorScheme columnCount columnFill columnGap columnHeight columnRule columnRuleColor columnRuleStyle columnRuleWidth columnSpan columnWidth columnWrap columns conicGradient contain containIntrinsicBlockSize containIntrinsicHeight containIntrinsicInlineSize containIntrinsicSize containIntrinsicWidth container containerName containerType content contentVisibility contrast contrastColor cornerBlockEndShape cornerBlockStartShape cornerBottomLeftShape cornerBottomRightShape cornerBottomShape cornerEndEndShape cornerEndStartShape cornerInlineEndShape cornerInlineStartShape cornerLeftShape cornerRightShape cornerShape cornerStartEndShape cornerStartStartShape cornerTopLeftShape cornerTopRightShape cornerTopShape cos counter counterIncrement counterReset counterSet counters crossFade cubicBezier cursor cx cy d defined direction disabled display dominantBaseline dropShadow dynamicRangeLimit dynamicRangeLimitMix element ellipse empty emptyCells enabled env exp fieldSizing fill fillOpacity fillRule filter firstChild firstOfType fitContent flex flexBasis flexDirection flexFlow flexGrow flexShrink flexWrap float floodColor floodOpacity flowTolerance focus focusVisible focusWithin font fontFamily fontFeatureSettings fontKerning fontLanguageOverride fontOpticalSizing fontPalette fontSize fontSizeAdjust fontStyle fontSynthesis fontSynthesisPosition fontSynthesisSmallCaps fontSynthesisStyle fontSynthesisWeight fontVariant fontVariantAlternates fontVariantCaps fontVariantEastAsian fontVariantEmoji fontVariantLigatures fontVariantNumeric fontVariantPosition fontVariationSettings fontWeight fontWidth forcedColorAdjust fullscreen future gap grayscale grid gridArea gridAutoColumns gridAutoFlow gridAutoRows gridColumn gridColumnEnd gridColumnStart gridRow gridRowEnd gridRowStart gridTemplate gridTemplateAreas gridTemplateColumns gridTemplateRows hangingPunctuation height hover hsl hsla hueRotate hwb hyphenateCharacter hyphenateLimitChars hyphens hypot image imageOrientation imageRendering imageResolution imageSet inRange indeterminate initialLetter initialLetterAlign inlineSize inset insetBlock insetBlockEnd insetBlockStart insetFn insetInline insetInlineEnd insetInlineStart interactivity interestDelay interestDelayEnd interestDelayStart interpolateSize invalid invert isolation justifyContent justifyItems justifySelf keyframes lab lastChild lastOfType layer lch leader left letterSpacing lightDark lightingColor lineBreak lineClamp lineHeight lineHeightStep linear linearGradient link listStyle listStyleImage listStylePosition listStyleType log m margin marginBlock marginBlockEnd marginBlockStart marginBottom marginInline marginInlineEnd marginInlineStart marginLeft marginRight marginTop marginTrim marker markerEnd markerMid markerStart mask maskBorder maskBorderMode maskBorderOutset maskBorderRepeat maskBorderSlice maskBorderSource maskBorderWidth maskClip maskComposite maskImage maskMode maskOrigin maskPosition maskRepeat maskSize maskType mathDepth mathShift mathStyle matrix matrix3d max maxBlockSize maxHeight maxInlineSize maxLines maxWidth mb media min minBlockSize minHeight minInlineSize minWidth minmax mixBlendMode ml mod modal mr mt muted objectFit objectPosition objectViewBox offset offsetAnchor offsetDistance offsetPath offsetPosition offsetRotate oklab oklch onlyChild onlyOfType opacity opacityFn open optional order orphans outOfRange outline outlineColor outlineOffset outlineStyle outlineWidth overflow overflowAnchor overflowBlock overflowClipMargin overflowInline overflowWrap overflowX overflowY overlay overscrollBehavior overscrollBehaviorBlock overscrollBehaviorInline overscrollBehaviorX overscrollBehaviorY p padding paddingBlock paddingBlockEnd paddingBlockStart paddingBottom paddingInline paddingInlineEnd paddingInlineStart paddingLeft paddingRight paddingTop page paint paintOrder paletteMix past path paused pb perspective perspectiveFn perspectiveOrigin pictureInPicture pl placeContent placeItems placeSelf placeholderShown playing pointerEvents polygon popoverOpen position positionAnchor positionArea positionTry positionTryFallbacks positionTryOrder positionVisibility pow pr printColorAdjust pt quotes r radialGradient ray readOnly readWrite readingFlow readingOrder rect rem repeatingConicGradient repeatingLinearGradient repeatingRadialGradient required resize rgb rgba right root rotate rotate3d rotateFn rotateX rotateY rotateZ round rowGap rubyAlign rubyMerge rubyOverhang rubyPosition rx ry saturate scale scale3d scaleFn scaleX scaleY scaleZ scope scroll scrollBehavior scrollInitialTarget scrollMargin scrollMarginBlock scrollMarginBlockEnd scrollMarginBlockStart scrollMarginBottom scrollMarginInline scrollMarginInlineEnd scrollMarginInlineStart scrollMarginLeft scrollMarginRight scrollMarginTop scrollMarkerGroup scrollPadding scrollPaddingBlock scrollPaddingBlockEnd scrollPaddingBlockStart scrollPaddingBottom scrollPaddingInline scrollPaddingInlineEnd scrollPaddingInlineStart scrollPaddingLeft scrollPaddingRight scrollPaddingTop scrollSnapAlign scrollSnapStop scrollSnapType scrollTargetGroup scrollTimeline scrollTimelineAxis scrollTimelineName scrollbarColor scrollbarGutter scrollbarWidth seeking sepia shapeImageThreshold shapeMargin shapeOutside shapeRendering sign sin skew skewX skewY speakAs sqrt src stalled steps stopColor stopOpacity stroke strokeColor strokeDasharray strokeDashoffset strokeLinecap strokeLinejoin strokeMiterlimit strokeOpacity strokeWidth superellipse supports symbols tabSize tableLayout tan target targetCounter targetCounters targetText textAlign textAlignLast textAnchor textAutospace textBox textBoxEdge textBoxTrim textCombineUpright textDecoration textDecorationColor textDecorationInset textDecorationLine textDecorationSkip textDecorationSkipInk textDecorationStyle textDecorationThickness textEmphasis textEmphasisColor textEmphasisPosition textEmphasisStyle textIndent textJustify textOrientation textOverflow textRendering textShadow textSizeAdjust textSpacingTrim textTransform textUnderlineOffset textUnderlinePosition textWrap textWrapMode textWrapStyle timelineScope timelineTrigger timelineTriggerExitRange timelineTriggerExitRangeEnd timelineTriggerExitRangeStart timelineTriggerName timelineTriggerRange timelineTriggerRangeEnd timelineTriggerRangeStart timelineTriggerSource top touchAction transform transformBox transformOrigin transformStyle transition transitionBehavior transitionDelay transitionDuration transitionProperty transitionTimingFunction translate translate3d translateFn translateX translateY translateZ triggerScope unicodeBidi url userInvalid userSelect userValid valid var vectorEffect verticalAlign view viewTimeline viewTimelineAxis viewTimelineInset viewTimelineName viewTransitionClass viewTransitionName visibility visited volumeLocked whiteSpace whiteSpaceCollapse widows width willChange wordBreak wordSpacing wordWrap writingMode x xywh y zIndex zoom",
164
- ban: {
165
- kw: {
166
- "position-visibility": "anchors-valid anchors-visible",
167
- "text-decoration-line": "blink",
168
- "word-break": "break-word"
169
- },
170
- fn: "",
171
- unit: "",
172
- media: "device-aspect-ratio device-height device-width",
173
- container: "",
174
- supports: ""
175
- }
176
- },
177
- "css2": {
178
- kind: "spec",
179
- title: "Cascading Style Sheets (CSS) Level 2",
180
- members: "media zIndex",
181
- ban: {
182
- kw: {},
183
- fn: "",
184
- unit: "",
185
- media: "",
186
- container: "",
187
- supports: ""
188
- }
189
- },
190
- "compositing-2": {
191
- kind: "spec",
192
- title: "Compositing and Blending Level 2",
193
- members: "backgroundBlendMode isolation mixBlendMode",
194
- ban: {
195
- kw: {},
196
- fn: "",
197
- unit: "",
198
- media: "",
199
- container: "",
200
- supports: ""
201
- }
202
- },
203
- "css-align-3": {
204
- kind: "spec",
205
- title: "CSS Box Alignment Module Level 3",
206
- members: "alignContent alignItems alignSelf columnGap gap justifyContent justifyItems justifySelf placeContent placeItems placeSelf rowGap",
207
- ban: {
208
- kw: {},
209
- fn: "",
210
- unit: "",
211
- media: "",
212
- container: "",
213
- supports: ""
214
- }
215
- },
216
- "css-anchor-position-2": {
217
- kind: "spec",
218
- title: "CSS Anchor Positioning Module Level 2",
219
- members: "alignItems alignSelf anchor anchorName anchorScope anchorSize bottom container height justifyItems justifySelf left marginBottom marginLeft marginRight marginTop maxHeight maxWidth mb minHeight minWidth ml mr mt positionAnchor positionArea positionTry positionTryFallbacks positionTryOrder positionVisibility right top width",
220
- ban: {
221
- kw: {},
222
- fn: "",
223
- unit: "",
224
- media: "",
225
- container: "",
226
- supports: ""
227
- }
228
- },
229
- "css-anchor-position-1": {
230
- kind: "spec",
231
- title: "CSS Anchor Positioning Module Level 1",
232
- members: "alignItems alignSelf anchor anchorName anchorScope anchorSize bottom height justifyItems justifySelf left marginBottom marginLeft marginRight marginTop maxHeight maxWidth mb minHeight minWidth ml mr mt positionAnchor positionArea positionTry positionTryFallbacks positionTryOrder positionVisibility right top width",
233
- ban: {
234
- kw: {},
235
- fn: "",
236
- unit: "",
237
- media: "",
238
- container: "",
239
- supports: ""
240
- }
241
- },
242
- "css-animations-2": {
243
- kind: "spec",
244
- title: "CSS Animations Module Level 2",
245
- members: "animation animationComposition animationDelay animationDirection animationDuration animationFillMode animationIterationCount animationName animationPlayState animationTimeline animationTimingFunction animationTrigger keyframes",
246
- ban: {
247
- kw: {},
248
- fn: "",
249
- unit: "",
250
- media: "",
251
- container: "",
252
- supports: ""
253
- }
254
- },
255
- "css-animations-1": {
256
- kind: "spec",
257
- title: "CSS Animations Module Level 1",
258
- members: "animation animationDelay animationDirection animationDuration animationFillMode animationIterationCount animationName animationPlayState animationTimingFunction keyframes",
259
- ban: {
260
- kw: { "animation-duration": "auto" },
261
- fn: "",
262
- unit: "",
263
- media: "",
264
- container: "",
265
- supports: ""
266
- }
267
- },
268
- "css-backgrounds-4": {
269
- kind: "spec",
270
- title: "CSS Backgrounds Module Level 4",
271
- members: "background backgroundAttachment backgroundClip backgroundColor backgroundImage backgroundOrigin backgroundPosition backgroundPositionX backgroundPositionY backgroundRepeat backgroundSize bg",
272
- ban: {
273
- kw: {},
274
- fn: "",
275
- unit: "",
276
- media: "",
277
- container: "",
278
- supports: ""
279
- }
280
- },
281
- "css-backgrounds-3": {
282
- kind: "spec",
283
- title: "CSS Backgrounds and Borders Module Level 3",
284
- members: "background backgroundAttachment backgroundClip backgroundColor backgroundImage backgroundOrigin backgroundPosition backgroundRepeat backgroundSize bg",
285
- ban: {
286
- kw: {},
287
- fn: "",
288
- unit: "",
289
- media: "",
290
- container: "",
291
- supports: ""
292
- }
293
- },
294
- "css-borders-4": {
295
- kind: "spec",
296
- title: "CSS Borders and Box Decorations Module Level 4",
297
- members: "border borderBlock borderBlockColor borderBlockEnd borderBlockEndColor borderBlockEndStyle borderBlockEndWidth borderBlockStart borderBlockStartColor borderBlockStartStyle borderBlockStartWidth borderBlockStyle borderBlockWidth borderBottom borderBottomColor borderBottomLeftRadius borderBottomRightRadius borderBottomStyle borderBottomWidth borderColor borderEndEndRadius borderEndStartRadius borderImage borderImageOutset borderImageRepeat borderImageSlice borderImageSource borderImageWidth borderInline borderInlineColor borderInlineEnd borderInlineEndColor borderInlineEndStyle borderInlineEndWidth borderInlineStart borderInlineStartColor borderInlineStartStyle borderInlineStartWidth borderInlineStyle borderInlineWidth borderLeft borderLeftColor borderLeftStyle borderLeftWidth borderRadius borderRight borderRightColor borderRightStyle borderRightWidth borderStartEndRadius borderStartStartRadius borderStyle borderTop borderTopColor borderTopLeftRadius borderTopRightRadius borderTopStyle borderTopWidth borderWidth boxShadow cornerBlockEndShape cornerBlockStartShape cornerBottomLeftShape cornerBottomRightShape cornerBottomShape cornerEndEndShape cornerEndStartShape cornerInlineEndShape cornerInlineStartShape cornerLeftShape cornerRightShape cornerShape cornerStartEndShape cornerStartStartShape cornerTopLeftShape cornerTopRightShape cornerTopShape superellipse",
298
- ban: {
299
- kw: {},
300
- fn: "",
301
- unit: "",
302
- media: "",
303
- container: "",
304
- supports: ""
305
- }
306
- },
307
- "css-box-4": {
308
- kind: "spec",
309
- title: "CSS Box Model Module Level 4",
310
- members: "m margin marginBottom marginLeft marginRight marginTop marginTrim mb ml mr mt p padding paddingBottom paddingLeft paddingRight paddingTop pb pl pr pt",
311
- ban: {
312
- kw: {},
313
- fn: "",
314
- unit: "",
315
- media: "",
316
- container: "",
317
- supports: ""
318
- }
319
- },
320
- "css-break-4": {
321
- kind: "spec",
322
- title: "CSS Fragmentation Module Level 4",
323
- members: "boxDecorationBreak breakAfter breakBefore breakInside orphans widows",
324
- ban: {
325
- kw: {},
326
- fn: "",
327
- unit: "",
328
- media: "",
329
- container: "",
330
- supports: ""
331
- }
332
- },
333
- "css-cascade-6": {
334
- kind: "spec",
335
- title: "CSS Cascading and Inheritance Module Level 6",
336
- members: "all",
337
- ban: {
338
- kw: {},
339
- fn: "",
340
- unit: "",
341
- media: "",
342
- container: "",
343
- supports: ""
344
- }
345
- },
346
- "css-cascade-5": {
347
- kind: "spec",
348
- title: "CSS Cascading and Inheritance Module Level 5",
349
- members: "all",
350
- ban: {
351
- kw: {},
352
- fn: "",
353
- unit: "",
354
- media: "",
355
- container: "",
356
- supports: ""
357
- }
358
- },
359
- "css-color-5": {
360
- kind: "spec",
361
- title: "CSS Color Module Level 5",
362
- members: "color colorFn colorMix contrastColor hsl hsla hwb lab lch lightDark oklab oklch opacity rgb rgba",
363
- ban: {
364
- kw: {},
365
- fn: "",
366
- unit: "",
367
- media: "",
368
- container: "",
369
- supports: ""
370
- }
371
- },
372
- "css-color-6": {
373
- kind: "spec",
374
- title: "CSS Color Module Level 6",
375
- members: "color colorFn colorMix contrastColor hsl hsla hwb lab lch lightDark oklab oklch opacity rgb rgba",
376
- ban: {
377
- kw: {},
378
- fn: "",
379
- unit: "",
380
- media: "",
381
- container: "",
382
- supports: ""
383
- }
384
- },
385
- "css-color-adjust-1": {
386
- kind: "spec",
387
- title: "CSS Color Adjustment Module Level 1",
388
- members: "colorScheme forcedColorAdjust printColorAdjust",
389
- ban: {
390
- kw: {},
391
- fn: "",
392
- unit: "",
393
- media: "",
394
- container: "",
395
- supports: ""
396
- }
397
- },
398
- "css-color-hdr-1": {
399
- kind: "spec",
400
- title: "CSS Color HDR Module Level 1",
401
- members: "dynamicRangeLimit dynamicRangeLimitMix",
402
- ban: {
403
- kw: {},
404
- fn: "",
405
- unit: "",
406
- media: "",
407
- container: "",
408
- supports: ""
409
- }
410
- },
411
- "css-color-4": {
412
- kind: "spec",
413
- title: "CSS Color Module Level 4",
414
- members: "color colorFn hsl hsla hwb lab lch oklab oklch opacity rgb rgba",
415
- ban: {
416
- kw: {},
417
- fn: "color-mix contrast-color light-dark",
418
- unit: "",
419
- media: "",
420
- container: "",
421
- supports: ""
422
- }
423
- },
424
- "css-conditional-4": {
425
- kind: "spec",
426
- title: "CSS Conditional Rules Module Level 4",
427
- members: "media supports",
428
- ban: {
429
- kw: {},
430
- fn: "",
431
- unit: "",
432
- media: "",
433
- container: "",
434
- supports: ""
435
- }
436
- },
437
- "css-conditional-5": {
438
- kind: "spec",
439
- title: "CSS Conditional Rules Module Level 5",
440
- members: "container containerName containerType media supports",
441
- ban: {
442
- kw: {},
443
- fn: "",
444
- unit: "",
445
- media: "",
446
- container: "",
447
- supports: ""
448
- }
449
- },
450
- "css-conditional-3": {
451
- kind: "spec",
452
- title: "CSS Conditional Rules Module Level 3",
453
- members: "media supports",
454
- ban: {
455
- kw: {},
456
- fn: "",
457
- unit: "",
458
- media: "",
459
- container: "",
460
- supports: ""
461
- }
462
- },
463
- "css-contain-2": {
464
- kind: "spec",
465
- title: "CSS Containment Module Level 2",
466
- members: "contain contentVisibility",
467
- ban: {
468
- kw: {},
469
- fn: "",
470
- unit: "",
471
- media: "",
472
- container: "",
473
- supports: ""
474
- }
475
- },
476
- "css-content-3": {
477
- kind: "spec",
478
- title: "CSS Generated Content Module Level 3",
479
- members: "content leader quotes targetCounter targetCounters targetText",
480
- ban: {
481
- kw: {},
482
- fn: "",
483
- unit: "",
484
- media: "",
485
- container: "",
486
- supports: ""
487
- }
488
- },
489
- "css-counter-styles-3": {
490
- kind: "spec",
491
- title: "CSS Counter Styles Module Level 3",
492
- members: "symbols",
493
- ban: {
494
- kw: {},
495
- fn: "",
496
- unit: "",
497
- media: "",
498
- container: "",
499
- supports: ""
500
- }
501
- },
502
- "css-display-4": {
503
- kind: "spec",
504
- title: "CSS Display Module Level 4",
505
- members: "display order readingFlow readingOrder visibility",
506
- ban: {
507
- kw: {},
508
- fn: "",
509
- unit: "",
510
- media: "",
511
- container: "",
512
- supports: ""
513
- }
514
- },
515
- "css-easing-2": {
516
- kind: "spec",
517
- title: "CSS Easing Functions Module Level 2",
518
- members: "cubicBezier linear steps",
519
- ban: {
520
- kw: {},
521
- fn: "",
522
- unit: "",
523
- media: "",
524
- container: "",
525
- supports: ""
526
- }
527
- },
528
- "css-env-1": {
529
- kind: "spec",
530
- title: "CSS Environment Variables Module Level 1",
531
- members: "env",
532
- ban: {
533
- kw: {},
534
- fn: "",
535
- unit: "",
536
- media: "",
537
- container: "",
538
- supports: ""
539
- }
540
- },
541
- "css-flexbox-1": {
542
- kind: "spec",
543
- title: "CSS Flexible Box Layout Module Level 1",
544
- members: "flex flexBasis flexDirection flexFlow flexGrow flexShrink flexWrap",
545
- ban: {
546
- kw: {},
547
- fn: "",
548
- unit: "",
549
- media: "",
550
- container: "",
551
- supports: ""
552
- }
553
- },
554
- "css-fonts-5": {
555
- kind: "spec",
556
- title: "CSS Fonts Module Level 5",
557
- members: "font fontFamily fontFeatureSettings fontKerning fontLanguageOverride fontOpticalSizing fontPalette fontSize fontSizeAdjust fontStyle fontSynthesis fontSynthesisPosition fontSynthesisSmallCaps fontSynthesisStyle fontSynthesisWeight fontVariant fontVariantAlternates fontVariantCaps fontVariantEastAsian fontVariantEmoji fontVariantLigatures fontVariantNumeric fontVariantPosition fontVariationSettings fontWeight fontWidth paletteMix",
558
- ban: {
559
- kw: {},
560
- fn: "",
561
- unit: "",
562
- media: "",
563
- container: "",
564
- supports: ""
565
- }
566
- },
567
- "css-fonts-4": {
568
- kind: "spec",
569
- title: "CSS Fonts Module Level 4",
570
- members: "font fontFamily fontFeatureSettings fontKerning fontLanguageOverride fontOpticalSizing fontPalette fontSize fontSizeAdjust fontStyle fontSynthesis fontSynthesisPosition fontSynthesisSmallCaps fontSynthesisStyle fontSynthesisWeight fontVariant fontVariantAlternates fontVariantCaps fontVariantEastAsian fontVariantEmoji fontVariantLigatures fontVariantNumeric fontVariantPosition fontVariationSettings fontWeight fontWidth paletteMix",
571
- ban: {
572
- kw: { "font-size-adjust": "cap-height ch-width ex-height from-font ic-height ic-width" },
573
- fn: "",
574
- unit: "",
575
- media: "",
576
- container: "",
577
- supports: ""
578
- }
579
- },
580
- "css-forms-1": {
581
- kind: "spec",
582
- title: "CSS Form Control Styling Module Level 1",
583
- members: "appearance fieldSizing",
584
- ban: {
585
- kw: {},
586
- fn: "",
587
- unit: "",
588
- media: "",
589
- container: "",
590
- supports: ""
591
- }
592
- },
593
- "css-gaps-1": {
594
- kind: "spec",
595
- title: "CSS Gap Decorations Module Level 1",
596
- members: "columnRule columnRuleColor columnRuleStyle columnRuleWidth",
597
- ban: {
598
- kw: {},
599
- fn: "",
600
- unit: "",
601
- media: "",
602
- container: "",
603
- supports: ""
604
- }
605
- },
606
- "css-gcpm-4": {
607
- kind: "spec",
608
- title: "CSS Generated Content for Paged Media Module Level 4",
609
- members: "content float position",
610
- ban: {
611
- kw: {},
612
- fn: "",
613
- unit: "",
614
- media: "",
615
- container: "",
616
- supports: ""
617
- }
618
- },
619
- "css-gcpm-3": {
620
- kind: "spec",
621
- title: "CSS Generated Content for Paged Media Module Level 3",
622
- members: "content float position",
623
- ban: {
624
- kw: {},
625
- fn: "",
626
- unit: "",
627
- media: "",
628
- container: "",
629
- supports: ""
630
- }
631
- },
632
- "css-grid-3": {
633
- kind: "spec",
634
- title: "CSS Grid Layout Module Level 3",
635
- members: "fitContent grid gridArea gridAutoColumns gridAutoFlow gridAutoRows gridColumn gridColumnEnd gridColumnStart gridRow gridRowEnd gridRowStart gridTemplate gridTemplateAreas gridTemplateColumns gridTemplateRows minmax",
636
- ban: {
637
- kw: {},
638
- fn: "",
639
- unit: "",
640
- media: "",
641
- container: "",
642
- supports: ""
643
- }
644
- },
645
- "css-grid-2": {
646
- kind: "spec",
647
- title: "CSS Grid Layout Module Level 2",
648
- members: "fitContent grid gridArea gridAutoColumns gridAutoFlow gridAutoRows gridColumn gridColumnEnd gridColumnStart gridRow gridRowEnd gridRowStart gridTemplate gridTemplateAreas gridTemplateColumns gridTemplateRows minmax",
649
- ban: {
650
- kw: {},
651
- fn: "",
652
- unit: "",
653
- media: "",
654
- container: "",
655
- supports: ""
656
- }
657
- },
658
- "css-images-4": {
659
- kind: "spec",
660
- title: "CSS Images Module Level 4",
661
- members: "conicGradient crossFade element image imageOrientation imageRendering imageResolution imageSet linearGradient objectFit objectPosition radialGradient repeatingConicGradient repeatingLinearGradient repeatingRadialGradient",
662
- ban: {
663
- kw: {},
664
- fn: "",
665
- unit: "",
666
- media: "",
667
- container: "",
668
- supports: ""
669
- }
670
- },
671
- "css-images-5": {
672
- kind: "spec",
673
- title: "CSS Images Module Level 5",
674
- members: "conicGradient crossFade element image imageOrientation imageRendering imageResolution imageSet linearGradient objectFit objectPosition objectViewBox radialGradient repeatingConicGradient repeatingLinearGradient repeatingRadialGradient",
675
- ban: {
676
- kw: {},
677
- fn: "",
678
- unit: "",
679
- media: "",
680
- container: "",
681
- supports: ""
682
- }
683
- },
684
- "css-images-3": {
685
- kind: "spec",
686
- title: "CSS Images Module Level 3",
687
- members: "imageOrientation imageRendering linearGradient objectFit objectPosition radialGradient repeatingLinearGradient repeatingRadialGradient",
688
- ban: {
689
- kw: {},
690
- fn: "conic-gradient cross-fade element image image-set repeating-conic-gradient",
691
- unit: "",
692
- media: "",
693
- container: "",
694
- supports: ""
695
- }
696
- },
697
- "css-inline-3": {
698
- kind: "spec",
699
- title: "CSS Inline Layout Module Level 3",
700
- members: "alignmentBaseline baselineShift baselineSource dominantBaseline initialLetter initialLetterAlign lineHeight textBox textBoxEdge textBoxTrim verticalAlign",
701
- ban: {
702
- kw: {},
703
- fn: "",
704
- unit: "",
705
- media: "",
706
- container: "",
707
- supports: ""
708
- }
709
- },
710
- "css-lists-3": {
711
- kind: "spec",
712
- title: "CSS Lists and Counters Module Level 3",
713
- members: "counter counterIncrement counterReset counterSet counters listStyle listStyleImage listStylePosition listStyleType",
714
- ban: {
715
- kw: {},
716
- fn: "",
717
- unit: "",
718
- media: "",
719
- container: "",
720
- supports: ""
721
- }
722
- },
723
- "css-logical-1": {
724
- kind: "spec",
725
- title: "CSS Logical Properties and Values Module Level 1",
726
- members: "blockSize inlineSize marginBlock marginBlockEnd marginBlockStart marginInline marginInlineEnd marginInlineStart maxBlockSize maxInlineSize minBlockSize minInlineSize paddingBlock paddingBlockEnd paddingBlockStart paddingInline paddingInlineEnd paddingInlineStart",
727
- ban: {
728
- kw: {},
729
- fn: "",
730
- unit: "",
731
- media: "",
732
- container: "",
733
- supports: ""
734
- }
735
- },
736
- "css-masking-1": {
737
- kind: "spec",
738
- title: "CSS Masking Module Level 1",
739
- members: "clipPath clipRule mask maskBorder maskBorderMode maskBorderOutset maskBorderRepeat maskBorderSlice maskBorderSource maskBorderWidth maskClip maskComposite maskImage maskMode maskOrigin maskPosition maskRepeat maskSize maskType rect",
740
- ban: {
741
- kw: {},
742
- fn: "",
743
- unit: "",
744
- media: "",
745
- container: "",
746
- supports: ""
747
- }
748
- },
749
- "css-multicol-2": {
750
- kind: "spec",
751
- title: "CSS Multi-column Layout Module Level 2",
752
- members: "columnCount columnFill columnHeight columnSpan columnWidth columnWrap columns",
753
- ban: {
754
- kw: {},
755
- fn: "",
756
- unit: "",
757
- media: "",
758
- container: "",
759
- supports: ""
760
- }
761
- },
762
- "css-overflow-4": {
763
- kind: "spec",
764
- title: "CSS Overflow Module Level 4",
765
- members: "WebkitLineClamp lineClamp maxLines overflow overflowBlock overflowClipMargin overflowInline overflowX overflowY scrollBehavior scrollbarGutter textOverflow",
766
- ban: {
767
- kw: {},
768
- fn: "",
769
- unit: "",
770
- media: "",
771
- container: "",
772
- supports: ""
773
- }
774
- },
775
- "css-overflow-5": {
776
- kind: "spec",
777
- title: "CSS Overflow Module Level 5",
778
- members: "WebkitLineClamp lineClamp maxLines overflow overflowBlock overflowClipMargin overflowInline overflowX overflowY scrollBehavior scrollMarkerGroup scrollTargetGroup scrollbarGutter textOverflow",
779
- ban: {
780
- kw: {},
781
- fn: "",
782
- unit: "",
783
- media: "",
784
- container: "",
785
- supports: ""
786
- }
787
- },
788
- "css-overflow-3": {
789
- kind: "spec",
790
- title: "CSS Overflow Module Level 3",
791
- members: "overflow overflowBlock overflowClipMargin overflowInline overflowX overflowY scrollBehavior scrollbarGutter textOverflow",
792
- ban: {
793
- kw: { "text-overflow": "fade" },
794
- fn: "",
795
- unit: "",
796
- media: "",
797
- container: "",
798
- supports: ""
799
- }
800
- },
801
- "css-overscroll-1": {
802
- kind: "spec",
803
- title: "CSS Overscroll Behavior Module Level 1",
804
- members: "overscrollBehavior overscrollBehaviorBlock overscrollBehaviorInline overscrollBehaviorX overscrollBehaviorY",
805
- ban: {
806
- kw: {},
807
- fn: "",
808
- unit: "",
809
- media: "",
810
- container: "",
811
- supports: ""
812
- }
813
- },
814
- "css-page-floats-3": {
815
- kind: "spec",
816
- title: "CSS Page Floats Module Level 3",
817
- members: "clear float",
818
- ban: {
819
- kw: {},
820
- fn: "",
821
- unit: "",
822
- media: "",
823
- container: "",
824
- supports: ""
825
- }
826
- },
827
- "css-page-3": {
828
- kind: "spec",
829
- title: "CSS Paged Media Module Level 3",
830
- members: "page",
831
- ban: {
832
- kw: {},
833
- fn: "",
834
- unit: "",
835
- media: "",
836
- container: "",
837
- supports: ""
838
- }
839
- },
840
- "css-position-4": {
841
- kind: "spec",
842
- title: "CSS Positioned Layout Module Level 4",
843
- members: "bottom inset insetBlock insetBlockEnd insetBlockStart insetInline insetInlineEnd insetInlineStart left overlay position right top",
844
- ban: {
845
- kw: {},
846
- fn: "",
847
- unit: "",
848
- media: "",
849
- container: "",
850
- supports: ""
851
- }
852
- },
853
- "css-position-3": {
854
- kind: "spec",
855
- title: "CSS Positioned Layout Module Level 3",
856
- members: "bottom inset insetBlock insetBlockEnd insetBlockStart insetInline insetInlineEnd insetInlineStart left position right top",
857
- ban: {
858
- kw: {},
859
- fn: "",
860
- unit: "",
861
- media: "",
862
- container: "",
863
- supports: ""
864
- }
865
- },
866
- "css-rhythm-1": {
867
- kind: "spec",
868
- title: "CSS Rhythmic Sizing Module Level 1",
869
- members: "lineHeightStep",
870
- ban: {
871
- kw: {},
872
- fn: "",
873
- unit: "",
874
- media: "",
875
- container: "",
876
- supports: ""
877
- }
878
- },
879
- "css-round-display-1": {
880
- kind: "spec",
881
- title: "CSS Round Display Module Level 1",
882
- members: "media",
883
- ban: {
884
- kw: {},
885
- fn: "",
886
- unit: "",
887
- media: "",
888
- container: "",
889
- supports: ""
890
- }
891
- },
892
- "css-ruby-1": {
893
- kind: "spec",
894
- title: "CSS Ruby Annotation Layout Module Level 1",
895
- members: "rubyAlign rubyMerge rubyOverhang rubyPosition",
896
- ban: {
897
- kw: {},
898
- fn: "",
899
- unit: "",
900
- media: "",
901
- container: "",
902
- supports: ""
903
- }
904
- },
905
- "css-scroll-anchoring-1": {
906
- kind: "spec",
907
- title: "CSS Scroll Anchoring Module Level 1",
908
- members: "overflowAnchor",
909
- ban: {
910
- kw: {},
911
- fn: "",
912
- unit: "",
913
- media: "",
914
- container: "",
915
- supports: ""
916
- }
917
- },
918
- "css-scroll-snap-2": {
919
- kind: "spec",
920
- title: "CSS Scroll Snap Module Level 2",
921
- members: "scrollInitialTarget scrollMargin scrollMarginBlock scrollMarginBlockEnd scrollMarginBlockStart scrollMarginBottom scrollMarginInline scrollMarginInlineEnd scrollMarginInlineStart scrollMarginLeft scrollMarginRight scrollMarginTop scrollPadding scrollPaddingBlock scrollPaddingBlockEnd scrollPaddingBlockStart scrollPaddingBottom scrollPaddingInline scrollPaddingInlineEnd scrollPaddingInlineStart scrollPaddingLeft scrollPaddingRight scrollPaddingTop scrollSnapAlign scrollSnapStop scrollSnapType",
922
- ban: {
923
- kw: {},
924
- fn: "",
925
- unit: "",
926
- media: "",
927
- container: "",
928
- supports: ""
929
- }
930
- },
931
- "css-scroll-snap-1": {
932
- kind: "spec",
933
- title: "CSS Scroll Snap Module Level 1",
934
- members: "scrollMargin scrollMarginBlock scrollMarginBlockEnd scrollMarginBlockStart scrollMarginBottom scrollMarginInline scrollMarginInlineEnd scrollMarginInlineStart scrollMarginLeft scrollMarginRight scrollMarginTop scrollPadding scrollPaddingBlock scrollPaddingBlockEnd scrollPaddingBlockStart scrollPaddingBottom scrollPaddingInline scrollPaddingInlineEnd scrollPaddingInlineStart scrollPaddingLeft scrollPaddingRight scrollPaddingTop scrollSnapAlign scrollSnapStop scrollSnapType",
935
- ban: {
936
- kw: {},
937
- fn: "",
938
- unit: "",
939
- media: "",
940
- container: "",
941
- supports: ""
942
- }
943
- },
944
- "css-scrollbars-1": {
945
- kind: "spec",
946
- title: "CSS Scrollbars Styling Module Level 1",
947
- members: "scrollbarColor scrollbarWidth",
948
- ban: {
949
- kw: {},
950
- fn: "",
951
- unit: "",
952
- media: "",
953
- container: "",
954
- supports: ""
955
- }
956
- },
957
- "css-shapes-2": {
958
- kind: "spec",
959
- title: "CSS Shapes Module Level 2",
960
- members: "circle ellipse insetFn path polygon rect shapeImageThreshold shapeMargin shapeOutside xywh",
961
- ban: {
962
- kw: {},
963
- fn: "",
964
- unit: "",
965
- media: "",
966
- container: "",
967
- supports: ""
968
- }
969
- },
970
- "css-shapes-1": {
971
- kind: "spec",
972
- title: "CSS Shapes Module Level 1",
973
- members: "circle ellipse insetFn path polygon rect shapeImageThreshold shapeMargin shapeOutside xywh",
974
- ban: {
975
- kw: {},
976
- fn: "",
977
- unit: "",
978
- media: "",
979
- container: "",
980
- supports: ""
981
- }
982
- },
983
- "css-size-adjust-1": {
984
- kind: "spec",
985
- title: "CSS Mobile Text Size Adjustment Module Level 1",
986
- members: "textSizeAdjust",
987
- ban: {
988
- kw: {},
989
- fn: "",
990
- unit: "",
991
- media: "",
992
- container: "",
993
- supports: ""
994
- }
995
- },
996
- "css-sizing-4": {
997
- kind: "spec",
998
- title: "CSS Box Sizing Module Level 4",
999
- members: "aspectRatio boxSizing calcSize columnWidth containIntrinsicBlockSize containIntrinsicHeight containIntrinsicInlineSize containIntrinsicSize containIntrinsicWidth fitContent height maxHeight maxWidth minHeight minWidth width",
1000
- ban: {
1001
- kw: {},
1002
- fn: "",
1003
- unit: "",
1004
- media: "",
1005
- container: "",
1006
- supports: ""
1007
- }
1008
- },
1009
- "css-sizing-3": {
1010
- kind: "spec",
1011
- title: "CSS Box Sizing Module Level 3",
1012
- members: "boxSizing calcSize columnWidth fitContent height maxHeight maxWidth minHeight minWidth width",
1013
- ban: {
1014
- kw: {
1015
- "height": "contain fit-content stretch",
1016
- "max-height": "contain fit-content stretch",
1017
- "max-width": "contain fit-content stretch",
1018
- "min-height": "contain fit-content stretch",
1019
- "min-width": "contain fit-content stretch",
1020
- "width": "contain fit-content stretch"
1021
- },
1022
- fn: "",
1023
- unit: "",
1024
- media: "",
1025
- container: "",
1026
- supports: ""
1027
- }
1028
- },
1029
- "css-speech-1": {
1030
- kind: "spec",
1031
- title: "CSS Speech Module Level 1",
1032
- members: "speakAs",
1033
- ban: {
1034
- kw: {},
1035
- fn: "",
1036
- unit: "",
1037
- media: "",
1038
- container: "",
1039
- supports: ""
1040
- }
1041
- },
1042
- "css-tables-3": {
1043
- kind: "spec",
1044
- title: "CSS Table Module Level 3",
1045
- members: "borderCollapse borderSpacing captionSide emptyCells tableLayout",
1046
- ban: {
1047
- kw: {},
1048
- fn: "",
1049
- unit: "",
1050
- media: "",
1051
- container: "",
1052
- supports: ""
1053
- }
1054
- },
1055
- "css-text-4": {
1056
- kind: "spec",
1057
- title: "CSS Text Module Level 4",
1058
- members: "hangingPunctuation hyphenateCharacter hyphenateLimitChars hyphens letterSpacing lineBreak overflowWrap tabSize textAlign textAlignLast textAutospace textIndent textJustify textSpacingTrim textTransform textWrap textWrapMode textWrapStyle whiteSpace whiteSpaceCollapse wordBreak wordSpacing wordWrap",
1059
- ban: {
1060
- kw: {},
1061
- fn: "",
1062
- unit: "",
1063
- media: "",
1064
- container: "",
1065
- supports: ""
1066
- }
1067
- },
1068
- "css-text-decor-4": {
1069
- kind: "spec",
1070
- title: "CSS Text Decoration Module Level 4",
1071
- members: "textDecoration textDecorationColor textDecorationLine textDecorationSkip textDecorationSkipInk textDecorationStyle textDecorationThickness textEmphasis textEmphasisColor textEmphasisPosition textEmphasisStyle textShadow textUnderlineOffset textUnderlinePosition",
1072
- ban: {
1073
- kw: {},
1074
- fn: "",
1075
- unit: "",
1076
- media: "",
1077
- container: "",
1078
- supports: ""
1079
- }
1080
- },
1081
- "css-text-decor-3": {
1082
- kind: "spec",
1083
- title: "CSS Text Decoration Module Level 3",
1084
- members: "textDecoration textDecorationColor textDecorationLine textDecorationStyle textEmphasis textEmphasisColor textEmphasisPosition textEmphasisStyle textShadow textUnderlinePosition",
1085
- ban: {
1086
- kw: {
1087
- "text-decoration-line": "grammar-error spelling-error",
1088
- "text-underline-position": "from-font"
1089
- },
1090
- fn: "",
1091
- unit: "",
1092
- media: "",
1093
- container: "",
1094
- supports: ""
1095
- }
1096
- },
1097
- "css-text-3": {
1098
- kind: "spec",
1099
- title: "CSS Text Module Level 3",
1100
- members: "hangingPunctuation hyphens letterSpacing lineBreak overflowWrap tabSize textAlign textAlignLast textIndent textJustify textTransform whiteSpace wordBreak wordSpacing wordWrap",
1101
- ban: {
1102
- kw: {
1103
- "text-justify": "no-compress ruby",
1104
- "text-transform": "math-auto",
1105
- "word-break": "auto-phrase manual"
1106
- },
1107
- fn: "",
1108
- unit: "",
1109
- media: "",
1110
- container: "",
1111
- supports: ""
1112
- }
1113
- },
1114
- "css-transforms-2": {
1115
- kind: "spec",
1116
- title: "CSS Transforms Module Level 2",
1117
- members: "backfaceVisibility matrix matrix3d perspective perspectiveFn perspectiveOrigin rotate rotate3d rotateFn rotateX rotateY rotateZ scale scale3d scaleFn scaleX scaleY scaleZ skew skewX skewY transform transformBox transformOrigin transformStyle translate translate3d translateFn translateX translateY translateZ",
1118
- ban: {
1119
- kw: {},
1120
- fn: "",
1121
- unit: "",
1122
- media: "",
1123
- container: "",
1124
- supports: ""
1125
- }
1126
- },
1127
- "css-transforms-1": {
1128
- kind: "spec",
1129
- title: "CSS Transforms Module Level 1",
1130
- members: "matrix rotateFn scaleFn scaleX scaleY skew skewX skewY transform transformBox transformOrigin translateFn translateX translateY",
1131
- ban: {
1132
- kw: {},
1133
- fn: "matrix3d perspective rotate3d rotateX rotateY rotateZ scale3d scaleZ translate3d translateZ",
1134
- unit: "",
1135
- media: "",
1136
- container: "",
1137
- supports: ""
1138
- }
1139
- },
1140
- "css-transitions-2": {
1141
- kind: "spec",
1142
- title: "CSS Transitions Module Level 2",
1143
- members: "transition transitionBehavior transitionDelay transitionDuration transitionProperty transitionTimingFunction",
1144
- ban: {
1145
- kw: {},
1146
- fn: "",
1147
- unit: "",
1148
- media: "",
1149
- container: "",
1150
- supports: ""
1151
- }
1152
- },
1153
- "css-transitions-1": {
1154
- kind: "spec",
1155
- title: "CSS Transitions Module Level 1",
1156
- members: "transition transitionDelay transitionDuration transitionProperty transitionTimingFunction",
1157
- ban: {
1158
- kw: {},
1159
- fn: "",
1160
- unit: "",
1161
- media: "",
1162
- container: "",
1163
- supports: ""
1164
- }
1165
- },
1166
- "css-ui-4": {
1167
- kind: "spec",
1168
- title: "CSS Basic User Interface Module Level 4",
1169
- members: "accentColor appearance caret caretAnimation caretColor caretShape cursor interactivity interestDelay interestDelayEnd interestDelayStart outline outlineColor outlineOffset outlineStyle outlineWidth resize userSelect",
1170
- ban: {
1171
- kw: {},
1172
- fn: "",
1173
- unit: "",
1174
- media: "",
1175
- container: "",
1176
- supports: ""
1177
- }
1178
- },
1179
- "css-values-5": {
1180
- kind: "spec",
1181
- title: "CSS Values and Units Module Level 5",
1182
- members: "abs acos asin atan atan2 attrFn calc calcSize clamp cos exp hypot interpolateSize log max min mod pow rem round sign sin sqrt src tan url",
1183
- ban: {
1184
- kw: {},
1185
- fn: "",
1186
- unit: "",
1187
- media: "",
1188
- container: "",
1189
- supports: ""
1190
- }
1191
- },
1192
- "css-values-4": {
1193
- kind: "spec",
1194
- title: "CSS Values and Units Module Level 4",
1195
- members: "abs acos asin atan atan2 calc clamp cos exp hypot log max min mod pow rem round sign sin sqrt src tan url",
1196
- ban: {
1197
- kw: {},
1198
- fn: "attr calc-size",
1199
- unit: "",
1200
- media: "",
1201
- container: "",
1202
- supports: ""
1203
- }
1204
- },
1205
- "css-variables-2": {
1206
- kind: "spec",
1207
- title: "CSS Custom Properties for Cascading Variables Module Level 2",
1208
- members: "var",
1209
- ban: {
1210
- kw: {},
1211
- fn: "",
1212
- unit: "",
1213
- media: "",
1214
- container: "",
1215
- supports: ""
1216
- }
1217
- },
1218
- "css-view-transitions-2": {
1219
- kind: "spec",
1220
- title: "CSS View Transitions Module Level 2",
1221
- members: "contain viewTransitionClass viewTransitionName",
1222
- ban: {
1223
- kw: {},
1224
- fn: "",
1225
- unit: "",
1226
- media: "",
1227
- container: "",
1228
- supports: ""
1229
- }
1230
- },
1231
- "css-viewport": {
1232
- kind: "spec",
1233
- title: "CSS Viewport Module Level 1",
1234
- members: "zoom",
1235
- ban: {
1236
- kw: {},
1237
- fn: "",
1238
- unit: "",
1239
- media: "",
1240
- container: "",
1241
- supports: ""
1242
- }
1243
- },
1244
- "css-will-change-1": {
1245
- kind: "spec",
1246
- title: "CSS Will Change Module Level 1",
1247
- members: "willChange",
1248
- ban: {
1249
- kw: {},
1250
- fn: "",
1251
- unit: "",
1252
- media: "",
1253
- container: "",
1254
- supports: ""
1255
- }
1256
- },
1257
- "css-writing-modes-4": {
1258
- kind: "spec",
1259
- title: "CSS Writing Modes Module Level 4",
1260
- members: "direction textCombineUpright textOrientation unicodeBidi writingMode",
1261
- ban: {
1262
- kw: {},
1263
- fn: "",
1264
- unit: "",
1265
- media: "",
1266
- container: "",
1267
- supports: ""
1268
- }
1269
- },
1270
- "fill-stroke-3": {
1271
- kind: "spec",
1272
- title: "CSS Fill and Stroke Module Level 3",
1273
- members: "fillOpacity fillRule strokeColor strokeDasharray strokeDashoffset strokeLinecap strokeLinejoin strokeMiterlimit strokeOpacity strokeWidth",
1274
- ban: {
1275
- kw: {},
1276
- fn: "",
1277
- unit: "",
1278
- media: "",
1279
- container: "",
1280
- supports: ""
1281
- }
1282
- },
1283
- "filter-effects-2": {
1284
- kind: "spec",
1285
- title: "Filter Effects Module Level 2",
1286
- members: "backdropFilter blur brightness colorInterpolationFilters contrast dropShadow filter floodColor floodOpacity grayscale hueRotate invert lightingColor opacityFn saturate sepia",
1287
- ban: {
1288
- kw: {},
1289
- fn: "",
1290
- unit: "",
1291
- media: "",
1292
- container: "",
1293
- supports: ""
1294
- }
1295
- },
1296
- "filter-effects-1": {
1297
- kind: "spec",
1298
- title: "Filter Effects Module Level 1",
1299
- members: "blur brightness colorInterpolationFilters contrast dropShadow filter floodColor floodOpacity grayscale hueRotate invert lightingColor opacityFn saturate sepia",
1300
- ban: {
1301
- kw: {},
1302
- fn: "",
1303
- unit: "",
1304
- media: "",
1305
- container: "",
1306
- supports: ""
1307
- }
1308
- },
1309
- "mediaqueries-5": {
1310
- kind: "spec",
1311
- title: "Media Queries Level 5",
1312
- members: "media",
1313
- ban: {
1314
- kw: {},
1315
- fn: "",
1316
- unit: "",
1317
- media: "",
1318
- container: "",
1319
- supports: ""
1320
- }
1321
- },
1322
- "mediaqueries-4": {
1323
- kind: "spec",
1324
- title: "Media Queries Level 4",
1325
- members: "media",
1326
- ban: {
1327
- kw: {},
1328
- fn: "",
1329
- unit: "",
1330
- media: "display-mode dynamic-range environment-blending forced-colors horizontal-viewport-segments inverted-colors nav-controls prefers-color-scheme prefers-contrast prefers-reduced-data prefers-reduced-motion prefers-reduced-transparency scripting vertical-viewport-segments video-color-gamut video-dynamic-range",
1331
- container: "",
1332
- supports: ""
1333
- }
1334
- },
1335
- "motion-1": {
1336
- kind: "spec",
1337
- title: "Motion Path Module Level 1",
1338
- members: "offset offsetAnchor offsetDistance offsetPath offsetPosition offsetRotate ray",
1339
- ban: {
1340
- kw: {},
1341
- fn: "",
1342
- unit: "",
1343
- media: "",
1344
- container: "",
1345
- supports: ""
1346
- }
1347
- },
1348
- "scroll-animations-1": {
1349
- kind: "spec",
1350
- title: "Scroll-driven Animations Module Level 1",
1351
- members: "animationRange animationRangeEnd animationRangeStart scroll scrollTimeline scrollTimelineAxis scrollTimelineName timelineScope view viewTimeline viewTimelineAxis viewTimelineInset viewTimelineName",
1352
- ban: {
1353
- kw: {},
1354
- fn: "",
1355
- unit: "",
1356
- media: "",
1357
- container: "",
1358
- supports: ""
1359
- }
1360
- },
1361
- "selectors-5": {
1362
- kind: "spec",
1363
- title: "Selectors Level 5",
1364
- members: "active anyLink autofill buffering checked defined disabled empty enabled firstChild firstOfType focus focusVisible focusWithin fullscreen future hover inRange indeterminate invalid lastChild lastOfType link modal muted onlyChild onlyOfType open optional outOfRange past paused pictureInPicture placeholderShown playing popoverOpen readOnly readWrite required root scope seeking stalled target userInvalid userValid valid visited volumeLocked",
1365
- ban: {
1366
- kw: {},
1367
- fn: "",
1368
- unit: "",
1369
- media: "",
1370
- container: "",
1371
- supports: ""
1372
- }
1373
- },
1374
- "selectors-4": {
1375
- kind: "spec",
1376
- title: "Selectors Level 4",
1377
- members: "active anyLink autofill buffering checked defined disabled empty enabled firstChild firstOfType focus focusVisible focusWithin fullscreen future hover inRange indeterminate invalid lastChild lastOfType link modal muted onlyChild onlyOfType open optional outOfRange past paused pictureInPicture placeholderShown playing popoverOpen readOnly readWrite required root scope seeking stalled target userInvalid userValid valid visited volumeLocked",
1378
- ban: {
1379
- kw: {},
1380
- fn: "",
1381
- unit: "",
1382
- media: "",
1383
- container: "",
1384
- supports: ""
1385
- }
1386
- }
1387
- };
1388
- //#endregion
1389
- //#region src/instrument.ts
1390
- const RUNTIME = "cssints";
1391
- const CV_CALL = "__cv(";
1392
- const CX_CALL = "__cx(";
1393
- const rootIdent = (n) => n.type === "Identifier" ? n.name : n.type === "MemberExpression" ? rootIdent(n.object) : n.type === "CallExpression" ? rootIdent(n.callee) : null;
1394
- const isCssints = (source) => source === "cssints" || source.startsWith(`cssints/`) && (Object.hasOwn(groups, source.slice(8)) || source === `cssints/limited-availability`);
1395
- const TYPED_OM = /* @__PURE__ */ new Set([
1396
- "CSS",
1397
- "CSSStyleValue",
1398
- "CSSUnitValue",
1399
- "CSSColorValue",
1400
- "CSSImageValue"
1401
- ]);
1402
- const nameOf = (m) => m.type === "Identifier" ? m.name : m.value;
1403
- const isSiteImport = (s) => s.attributes.some((a) => (a.key.type === "Identifier" ? a.key.name : a.key.value) === "type" && a.value.value === "cssints");
1404
- const importedName = (x) => x.type === "ImportSpecifier" ? nameOf(x.imported) : null;
1405
- const findCssImport = Effect.fnUntraced(function* (program, code, id, client) {
1406
- const plain = (name) => !client && TYPED_OM.has(name);
1407
- const locals = /* @__PURE__ */ new Set();
1408
- const decls = [];
1409
- for (const s of program.body) {
1410
- if (s.type !== "ImportDeclaration") continue;
1411
- const old = isCssints(s.source.value) && s.specifiers.find((x) => importedName(x) === "_cv");
1412
- const gone = isCssints(s.source.value) && s.specifiers.find((x) => importedName(x) === "cx");
1413
- if (gone) return yield* new ImportError({
1414
- message: `cssints: ${id} imports cx from "${s.source.value}", which is gone: cn(...) takes runtime values now. Write cn(base, on && p(4)) with cn from "cssints" with { type: "cssints" }; for the SVG property, css.cx(...)`,
1415
- file: id,
1416
- offset: gone.start
1417
- });
1418
- if (old) return yield* new ImportError({
1419
- message: `cssints: ${id} imports _cv from "cssints", which is gone: cv({ ... }) is the function now. Write const button = cv({ base, variants }) (cv from "cssints" with { type: "cssints" }), drop _cv, and call button({ size: "lg" })`,
1420
- file: id,
1421
- offset: old.start
1422
- });
1423
- if (isSiteImport(s)) {
1424
- decls.push(s);
1425
- s.specifiers.forEach((x) => locals.add(x.local.name));
1426
- } else if (isCssints(s.source.value) && s.importKind !== "type") {
1427
- const bad = s.specifiers.filter((x) => x.type !== "ImportSpecifier" || x.importKind !== "type" && !plain(importedName(x) ?? ""));
1428
- if (!bad.length) continue;
1429
- const names = bad.map((x) => code.slice(x.start, x.end));
1430
- const fix = bad[0].type === "ImportNamespaceSpecifier" ? names[0] : `{ ${names.join(", ")} }`;
1431
- return yield* new ImportError({
1432
- message: `cssints: ${id} imports build-time ${names.join(", ")} from "${s.source.value}" without the attribute. Import it as: import ${fix} from "${s.source.value}" with { type: "cssints" }`,
1433
- file: id,
1434
- offset: s.start
1435
- });
1436
- }
1437
- }
1438
- return locals.size ? {
1439
- locals,
1440
- decls
1441
- } : null;
1442
- });
1443
- const CONDITIONS = /* @__PURE__ */ new Set([
1444
- "media",
1445
- "container",
1446
- "supports",
1447
- "attr",
1448
- "within"
1449
- ]);
1450
- const boundNames = (id, out) => {
1451
- if (!id) return;
1452
- if (id.type === "Identifier") out.add(id.name);
1453
- else if (id.type === "ArrayPattern") id.elements.forEach((e) => boundNames(e, out));
1454
- else if (id.type === "ObjectPattern") id.properties.forEach((p) => boundNames(p.type === "Property" ? p.value : p.argument, out));
1455
- else if (id.type === "AssignmentPattern") boundNames(id.left, out);
1456
- else if (id.type === "RestElement") boundNames(id.argument, out);
1457
- };
1458
- function withConditions(program, code, { locals, decls }) {
1459
- if (!/\b(?:media|container|supports|attr|within)\b/.test(code)) return locals;
1460
- const ctors = /* @__PURE__ */ new Set();
1461
- for (const d of decls) for (const x of d.specifiers) if (x.type === "ImportSpecifier" && CONDITIONS.has(nameOf(x.imported))) ctors.add(x.local.name);
1462
- const all = new Set(locals);
1463
- const walk = (node) => {
1464
- if (!Predicate.isObject(node) || typeof node.type !== "string") return;
1465
- const n = node;
1466
- if (n.type === "VariableDeclarator" && n.init?.type === "CallExpression") {
1467
- const c = n.init.callee;
1468
- if (c.type === "Identifier" && ctors.has(c.name) || c.type === "MemberExpression" && !c.computed && c.property.type === "Identifier" && CONDITIONS.has(c.property.name) && locals.has(rootIdent(c.object) ?? "")) boundNames(n.id, all);
1469
- }
1470
- for (const k in node) {
1471
- const v = node[k];
1472
- if (Array.isArray(v)) v.forEach(walk);
1473
- else if (Predicate.isObject(v) && "type" in v) walk(v);
1474
- }
1475
- };
1476
- walk(program);
1477
- return all;
1478
- }
1479
- const declsOf = (stmts, out) => stmts.forEach((s) => {
1480
- if (s.type === "VariableDeclaration") s.declarations.forEach((d) => boundNames(d.id, out));
1481
- else if ((s.type === "FunctionDeclaration" || s.type === "ClassDeclaration") && s.id) out.add(s.id.name);
1482
- });
1483
- const declares = (n, out) => {
1484
- if (n.type === "ArrowFunctionExpression" || n.type === "FunctionExpression" || n.type === "FunctionDeclaration") {
1485
- n.params.forEach((p) => boundNames(p, out));
1486
- if (n.type === "FunctionExpression" && n.id) out.add(n.id.name);
1487
- } else if (n.type === "BlockStatement" || n.type === "StaticBlock") declsOf(n.body, out);
1488
- else if (n.type === "SwitchCase") declsOf(n.consequent, out);
1489
- else if (n.type === "ForStatement" && n.init) declsOf([n.init], out);
1490
- else if (n.type === "ForInStatement" || n.type === "ForOfStatement") declsOf([n.left], out);
1491
- else if (n.type === "CatchClause") boundNames(n.param, out);
1492
- };
1493
- const isRuntimeArg = (arg, code, scope, roots) => {
1494
- const a = arg.type === "SpreadElement" ? arg.argument : arg;
1495
- const todo = [a];
1496
- for (const n of todo) if (n.type === "CallExpression") {
1497
- if (!roots.has(rootIdent(n.callee) ?? "")) return true;
1498
- } else if (n.type === "LogicalExpression") todo.push(n.left, n.right);
1499
- else if (n.type === "ConditionalExpression") todo.push(n.consequent, n.alternate);
1500
- else if (n.type === "ArrayExpression") n.elements.forEach((e) => e && todo.push(e));
1501
- else if (n.type === "ParenthesizedExpression") todo.push(n.expression);
1502
- return a.type === "TemplateLiteral" || a.type === "Literal" && typeof a.value === "string" || !!code.slice(a.start, a.end).match(/[\p{L}\p{N}_$]+/gu)?.some((w) => scope.has(w));
1503
- };
1504
- function findSites(program, code, locals, cn, spaces) {
1505
- const sites = [];
1506
- const scopes = [/* @__PURE__ */ new Set()];
1507
- const walk = (node, inFn) => {
1508
- if (!Predicate.isObject(node) || typeof node.type !== "string") return;
1509
- const n = node;
1510
- if ((n.type === "CallExpression" || n.type === "NewExpression") && locals.has(rootIdent(n.callee) ?? "")) {
1511
- const scope = scopes[scopes.length - 1];
1512
- const c = n.type === "CallExpression" ? n.callee : void 0;
1513
- const isCn = c?.type === "Identifier" ? cn.has(c.name) : c?.type === "MemberExpression" && !c.computed && c.property.type === "Identifier" && c.property.name === "cn" && c.object.type === "Identifier" && spaces.has(c.object.name);
1514
- const args = n.type === "CallExpression" && isCn ? n.arguments : [];
1515
- const runtime = args.map((a) => isRuntimeArg(a, code, scope, locals));
1516
- if (!runtime.includes(true)) {
1517
- sites.push({
1518
- start: n.start,
1519
- end: n.end,
1520
- inFn,
1521
- locals: scope
1522
- });
1523
- return;
1524
- }
1525
- const from = sites.length;
1526
- args.forEach((a, i) => runtime[i] && walk(a, inFn));
1527
- sites.push({
1528
- start: n.start,
1529
- end: n.end,
1530
- inFn,
1531
- locals: scope,
1532
- group: {
1533
- callee: {
1534
- start: n.callee.start,
1535
- end: n.callee.end
1536
- },
1537
- args: args.map((a, i) => ({
1538
- start: a.start,
1539
- end: a.end,
1540
- runtime: runtime[i]
1541
- })),
1542
- parts: sites.slice(from).map((x, k) => [x.start, from + k])
1543
- }
1544
- });
1545
- return;
1546
- }
1547
- const fn = inFn || /Function/.test(n.type);
1548
- const own = /* @__PURE__ */ new Set();
1549
- declares(n, own);
1550
- scopes.push(own.size ? /* @__PURE__ */ new Set([...scopes[scopes.length - 1], ...own]) : scopes[scopes.length - 1]);
1551
- for (const k in node) {
1552
- const v = node[k];
1553
- if (Array.isArray(v)) v.forEach((c) => walk(c, fn));
1554
- else if (Predicate.isObject(v) && "type" in v) walk(v, fn);
1555
- }
1556
- scopes.pop();
1557
- };
1558
- walk(program, false);
1559
- return sites;
1560
- }
1561
- const writeSite = (ms, s, replacement) => {
1562
- const kept = s.group?.args.filter((a) => a.runtime);
1563
- if (!kept) return ms.overwrite(s.start, s.end, replacement);
1564
- ms.overwrite(s.start, kept[0].start, replacement);
1565
- kept.slice(1).forEach((a, i) => ms.overwrite(kept[i].end, a.start, ", "));
1566
- ms.overwrite(kept.at(-1).end, s.end, ")");
1567
- };
1568
- const runtimeImport = (replacements) => {
1569
- const all = [...replacements];
1570
- const names = [...all.some((r) => r.startsWith("__cv(")) ? ["_cv as __cv"] : [], ...all.some((r) => r.startsWith("__cx(")) ? ["_cx as __cx"] : []];
1571
- return names.length ? `import { ${names.join(", ")} } from ${Formatter.formatJson(RUNTIME)};\n` : "";
1572
- };
1573
- const instrument = Effect.fn("cssints.instrument")(function* (code, id, client = true) {
1574
- const { program } = parseSync(id, code);
1575
- const imp = yield* findCssImport(program, code, id, client);
1576
- if (!imp) return null;
1577
- const sources = imp.decls.filter((d) => isCssints(d.source.value));
1578
- const cn = /* @__PURE__ */ new Set();
1579
- const spaces = /* @__PURE__ */ new Set();
1580
- for (const d of sources) for (const x of d.specifiers) if (x.type === "ImportNamespaceSpecifier" || importedName(x) === "css") spaces.add(x.local.name);
1581
- else if (importedName(x) === "cn") cn.add(x.local.name);
1582
- const sites = findSites(program, code, withConditions(program, code, imp), cn, spaces);
1583
- const ms = new MagicString(code);
1584
- const hoisted = [];
1585
- const file = Formatter.formatJson(id);
1586
- sites.forEach((s, n) => {
1587
- const site = `__site(__at(${file}, ${n}, ${s.start}), `;
1588
- const expr = code.slice(s.start, s.end);
1589
- if (s.group) {
1590
- const statics = s.group.args.flatMap((a) => {
1591
- if (a.runtime) return [];
1592
- const text = code.slice(a.start, a.end);
1593
- return [text.startsWith("...") ? `...[${text}].map((s) => [${a.start}, s])` : `[${a.start}, ${text}]`];
1594
- });
1595
- if (!s.inFn) ms.overwrite(s.group.callee.start, s.group.callee.end, "__nocn");
1596
- hoisted.push(`${site}__cnGroup([${statics.join(", ")}], ${Formatter.formatJson(s.group.parts)}));`);
1597
- } else if (s.inFn) {
1598
- const names = new Set(expr.match(/[\p{L}\p{N}_$]+/gu));
1599
- const dead = [...s.locals].filter((x) => names.has(x));
1600
- hoisted.push(dead.length ? `{ ${site}${expr}); let ${dead.join(", ")}; }` : `${site}${expr});`);
1601
- } else {
1602
- ms.prependLeft(s.start, site).appendRight(s.end, ")");
1603
- hoisted.push(`__unseen(${file}, ${n}) && ${site}${expr});`);
1604
- }
1605
- });
1606
- imp.decls.forEach((d, i) => {
1607
- const from = String(d.source.value);
1608
- if (!isCssints(from)) return;
1609
- const ns = d.specifiers.find((x) => x.type === "ImportNamespaceSpecifier");
1610
- const bind = ns ? ns.local.name : `{ ${d.specifiers.map((x) => `${Formatter.formatJson(importedName(x))}: ${x.local.name}`).join(", ")} }`;
1611
- const id = from.slice(8);
1612
- const source = id && id !== "limited-availability" ? `__group${i}(${Formatter.formatJson(id)})` : `__css${i}`;
1613
- ms.overwrite(d.start, d.end, `import { css as __css${i}, __group as __group${i} } from ${Formatter.formatJson(RUNTIME)}; const ${bind} = ${source};`);
1614
- });
1615
- ms.prepend(`import { __at, __cnGroup, __nocn, __site, __unseen } from ${Formatter.formatJson(RUNTIME)};\n`);
1616
- if (hoisted.length) ms.append(`\nexport function __cssints_hoisted() {\n${hoisted.join("\n")}\n}\n`);
1617
- return {
1618
- code: ms.toString(),
1619
- sites,
1620
- imp
1621
- };
1622
- });
1623
- //#endregion
1624
- export { runtimeImport as a, instrument as i, CX_CALL as n, writeSite as o, RUNTIME as r, groups as s, CV_CALL as t };