Fix code quality violations and exclude Manifest from checks
Document application modes (development/debug/production) Add global file drop handler, order column normalization, SPA hash fix Serve CDN assets via /_vendor/ URLs instead of merging into bundles Add production minification with license preservation Improve JSON formatting for debugging and production optimization Add CDN asset caching with CSS URL inlining for production builds Add three-mode system (development, debug, production) Update Manifest CLAUDE.md to reflect helper class architecture Refactor Manifest.php into helper classes for better organization Pre-manifest-refactor checkpoint: Add app_mode documentation 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
103
node_modules/css-tree/data/index.js
generated
vendored
103
node_modules/css-tree/data/index.js
generated
vendored
@@ -1,103 +0,0 @@
|
||||
const mdnAtrules = require('mdn-data/css/at-rules.json');
|
||||
const mdnProperties = require('mdn-data/css/properties.json');
|
||||
const mdnSyntaxes = require('mdn-data/css/syntaxes.json');
|
||||
const patch = require('./patch.json');
|
||||
const extendSyntax = /^\s*\|\s*/;
|
||||
|
||||
function preprocessAtrules(dict) {
|
||||
const result = Object.create(null);
|
||||
|
||||
for (const atruleName in dict) {
|
||||
const atrule = dict[atruleName];
|
||||
let descriptors = null;
|
||||
|
||||
if (atrule.descriptors) {
|
||||
descriptors = Object.create(null);
|
||||
|
||||
for (const descriptor in atrule.descriptors) {
|
||||
descriptors[descriptor] = atrule.descriptors[descriptor].syntax;
|
||||
}
|
||||
}
|
||||
|
||||
result[atruleName.substr(1)] = {
|
||||
prelude: atrule.syntax.trim().match(/^@\S+\s+([^;\{]*)/)[1].trim() || null,
|
||||
descriptors
|
||||
};
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
function patchDictionary(dict, patchDict) {
|
||||
const result = {};
|
||||
|
||||
// copy all syntaxes for an original dict
|
||||
for (const key in dict) {
|
||||
result[key] = dict[key].syntax || dict[key];
|
||||
}
|
||||
|
||||
// apply a patch
|
||||
for (const key in patchDict) {
|
||||
if (key in dict) {
|
||||
if (patchDict[key].syntax) {
|
||||
result[key] = extendSyntax.test(patchDict[key].syntax)
|
||||
? result[key] + ' ' + patchDict[key].syntax.trim()
|
||||
: patchDict[key].syntax;
|
||||
} else {
|
||||
delete result[key];
|
||||
}
|
||||
} else {
|
||||
if (patchDict[key].syntax) {
|
||||
result[key] = patchDict[key].syntax.replace(extendSyntax, '');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
function unpackSyntaxes(dict) {
|
||||
const result = {};
|
||||
|
||||
for (const key in dict) {
|
||||
result[key] = dict[key].syntax;
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
function patchAtrules(dict, patchDict) {
|
||||
const result = {};
|
||||
|
||||
// copy all syntaxes for an original dict
|
||||
for (const key in dict) {
|
||||
const patchDescriptors = (patchDict[key] && patchDict[key].descriptors) || null;
|
||||
|
||||
result[key] = {
|
||||
prelude: key in patchDict && 'prelude' in patchDict[key]
|
||||
? patchDict[key].prelude
|
||||
: dict[key].prelude || null,
|
||||
descriptors: dict[key].descriptors
|
||||
? patchDictionary(dict[key].descriptors, patchDescriptors || {})
|
||||
: patchDescriptors && unpackSyntaxes(patchDescriptors)
|
||||
};
|
||||
}
|
||||
|
||||
// apply a patch
|
||||
for (const key in patchDict) {
|
||||
if (!hasOwnProperty.call(dict, key)) {
|
||||
result[key] = {
|
||||
prelude: patchDict[key].prelude || null,
|
||||
descriptors: patchDict[key].descriptors && unpackSyntaxes(patchDict[key].descriptors)
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
types: patchDictionary(mdnSyntaxes, patch.syntaxes),
|
||||
atrules: patchAtrules(preprocessAtrules(mdnAtrules), patch.atrules),
|
||||
properties: patchDictionary(mdnProperties, patch.properties)
|
||||
};
|
||||
499
node_modules/css-tree/data/patch.json
generated
vendored
499
node_modules/css-tree/data/patch.json
generated
vendored
@@ -3,6 +3,9 @@
|
||||
"charset": {
|
||||
"prelude": "<string>"
|
||||
},
|
||||
"container": {
|
||||
"prelude": "[ <container-name> ]? <container-condition>"
|
||||
},
|
||||
"font-face": {
|
||||
"descriptors": {
|
||||
"unicode-range": {
|
||||
@@ -10,6 +13,53 @@
|
||||
"syntax": "<urange>#"
|
||||
}
|
||||
}
|
||||
},
|
||||
"nest": {
|
||||
"prelude": "<complex-selector-list>"
|
||||
},
|
||||
"scope": {
|
||||
"prelude": "[ ( <scope-start> ) ]? [ to ( <scope-end> ) ]?"
|
||||
},
|
||||
"position-try": {
|
||||
"comment": "The list of descriptors: https://developer.mozilla.org/en-US/docs/Web/CSS/@position-try",
|
||||
"descriptors": {
|
||||
"top": "<'top'>",
|
||||
"left": "<'left'>",
|
||||
"bottom": "<'bottom'>",
|
||||
"right": "<'right'>",
|
||||
"inset-block-start": "<'inset-block-start'>",
|
||||
"inset-block-end": "<'inset-block-end'>",
|
||||
"inset-inline-start": "<'inset-inline-start'>",
|
||||
"inset-inline-end": "<'inset-inline-end'>",
|
||||
"inset-block": "<'inset-block'>",
|
||||
"inset-inline": "<'inset-inline'>",
|
||||
"inset": "<'inset'>",
|
||||
"margin-top": "<'margin-top'>",
|
||||
"margin-left": "<'margin-left'>",
|
||||
"margin-bottom": "<'margin-bottom'>",
|
||||
"margin-right": "<'margin-right'>",
|
||||
"margin-block-start": "<'margin-block-start'>",
|
||||
"margin-block-end": "<'margin-block-end'>",
|
||||
"margin-inline-start": "<'margin-inline-start'>",
|
||||
"margin-inline-end": "<'margin-inline-end'>",
|
||||
"margin": "<'margin'>",
|
||||
"margin-block": "<'margin-block'>",
|
||||
"margin-inline": "<'margin-inline'>",
|
||||
"width": "<'width'>",
|
||||
"height": "<'height'>",
|
||||
"min-width": "<'min-width'>",
|
||||
"min-height": "<'min-height'>",
|
||||
"max-width": "<'max-width'>",
|
||||
"max-height": "<'max-height'>",
|
||||
"block-size": "<'block-size'>",
|
||||
"inline-size": "<'inline-size'>",
|
||||
"min-block-size": "<'min-block-size'>",
|
||||
"min-inline-size": "<'min-inline-size'>",
|
||||
"max-block-size": "<'max-block-size'>",
|
||||
"max-inline-size": "<'max-inline-size'>",
|
||||
"align-self": "<'align-self'> | anchor-center",
|
||||
"justify-self": "<'justify-self'> | anchor-center"
|
||||
}
|
||||
}
|
||||
},
|
||||
"properties": {
|
||||
@@ -150,6 +200,13 @@
|
||||
],
|
||||
"syntax": "auto | baseline | before-edge | text-before-edge | middle | central | after-edge | text-after-edge | ideographic | alphabetic | hanging | mathematical"
|
||||
},
|
||||
"background-clip": {
|
||||
"comment": "used <bg-clip> from CSS Backgrounds and Borders 4 since it adds new values",
|
||||
"references": [
|
||||
"https://github.com/csstree/csstree/issues/190"
|
||||
],
|
||||
"syntax": "<bg-clip>#"
|
||||
},
|
||||
"baseline-shift": {
|
||||
"comment": "added SVG property",
|
||||
"references": [
|
||||
@@ -161,12 +218,9 @@
|
||||
"comment": "added old IE property https://msdn.microsoft.com/en-us/library/ms530723(v=vs.85).aspx",
|
||||
"syntax": "<url>+"
|
||||
},
|
||||
"clip-rule": {
|
||||
"comment": "added SVG property",
|
||||
"references": [
|
||||
"https://www.w3.org/TR/SVG/masking.html#ClipRuleProperty"
|
||||
],
|
||||
"syntax": "nonzero | evenodd"
|
||||
"container-type": {
|
||||
"comment": "https://www.w3.org/TR/css-contain-3/#propdef-container-type",
|
||||
"syntax": "normal || [ size | inline-size ]"
|
||||
},
|
||||
"cue": {
|
||||
"comment": "https://www.w3.org/TR/css3-speech/#property-index",
|
||||
@@ -224,17 +278,19 @@
|
||||
],
|
||||
"syntax": "<number-zero-one>"
|
||||
},
|
||||
"fill-rule": {
|
||||
"comment": "added SVG property",
|
||||
"references": [
|
||||
"https://www.w3.org/TR/SVG/painting.html#FillProperty"
|
||||
],
|
||||
"syntax": "nonzero | evenodd"
|
||||
},
|
||||
"filter": {
|
||||
"comment": "extend with IE legacy syntaxes",
|
||||
"syntax": "| <-ms-filter-function-list>"
|
||||
},
|
||||
"font": {
|
||||
"comment": "align with font-4, fix <'font-family'>#, add non standard fonts",
|
||||
"references": [
|
||||
"https://drafts.csswg.org/css-fonts-4/#font-prop",
|
||||
"https://github.com/w3c/csswg-drafts/pull/10832",
|
||||
"https://webkit.org/blog/3709/using-the-system-font-in-web-content/"
|
||||
],
|
||||
"syntax": "[ [ <'font-style'> || <font-variant-css2> || <'font-weight'> || <font-width-css3> ]? <'font-size'> [ / <'line-height'> ]? <'font-family'># ] | <system-family-name> | <-non-standard-font>"
|
||||
},
|
||||
"glyph-orientation-horizontal": {
|
||||
"comment": "added SVG property",
|
||||
"references": [
|
||||
@@ -263,45 +319,30 @@
|
||||
],
|
||||
"syntax": "normal | <length-percentage>"
|
||||
},
|
||||
"marker": {
|
||||
"comment": "added SVG property",
|
||||
"references": [
|
||||
"https://www.w3.org/TR/SVG/painting.html#MarkerProperties"
|
||||
],
|
||||
"syntax": "none | <url>"
|
||||
},
|
||||
"marker-end": {
|
||||
"comment": "added SVG property",
|
||||
"references": [
|
||||
"https://www.w3.org/TR/SVG/painting.html#MarkerProperties"
|
||||
],
|
||||
"syntax": "none | <url>"
|
||||
},
|
||||
"marker-mid": {
|
||||
"comment": "added SVG property",
|
||||
"references": [
|
||||
"https://www.w3.org/TR/SVG/painting.html#MarkerProperties"
|
||||
],
|
||||
"syntax": "none | <url>"
|
||||
},
|
||||
"marker-start": {
|
||||
"comment": "added SVG property",
|
||||
"references": [
|
||||
"https://www.w3.org/TR/SVG/painting.html#MarkerProperties"
|
||||
],
|
||||
"syntax": "none | <url>"
|
||||
},
|
||||
"max-width": {
|
||||
"comment": "fix auto -> none (https://github.com/mdn/data/pull/431); extend by non-standard width keywords https://developer.mozilla.org/en-US/docs/Web/CSS/max-width",
|
||||
"syntax": "none | <length-percentage> | min-content | max-content | fit-content(<length-percentage>) | <-non-standard-width>"
|
||||
"comment": "extend by non-standard size keywords https://developer.mozilla.org/en-US/docs/Web/CSS/width",
|
||||
"syntax": "| stretch | <-non-standard-size>"
|
||||
},
|
||||
"max-height": {
|
||||
"comment": "extend by non-standard size keywords https://developer.mozilla.org/en-US/docs/Web/CSS/width",
|
||||
"syntax": "| stretch | <-non-standard-size>"
|
||||
},
|
||||
"width": {
|
||||
"comment": "per spec fit-content should be a function, however browsers are supporting it as a keyword (https://github.com/csstree/stylelint-validator/issues/29)",
|
||||
"syntax": "| fit-content | -moz-fit-content | -webkit-fit-content"
|
||||
"references": [
|
||||
"https://developer.mozilla.org/en-US/docs/Web/CSS/width",
|
||||
"https://github.com/csstree/stylelint-validator/issues/29"
|
||||
],
|
||||
"syntax": "| stretch | <-non-standard-size>"
|
||||
},
|
||||
"height": {
|
||||
"syntax": "| stretch | <-non-standard-size>"
|
||||
},
|
||||
"min-width": {
|
||||
"comment": "extend by non-standard width keywords https://developer.mozilla.org/en-US/docs/Web/CSS/width",
|
||||
"syntax": "auto | <length-percentage> | min-content | max-content | fit-content(<length-percentage>) | <-non-standard-width>"
|
||||
"syntax": "| stretch | <-non-standard-size>"
|
||||
},
|
||||
"min-height": {
|
||||
"syntax": "| stretch | <-non-standard-size>"
|
||||
},
|
||||
"overflow": {
|
||||
"comment": "extend by vendor keywords https://developer.mozilla.org/en-US/docs/Web/CSS/overflow",
|
||||
@@ -331,12 +372,19 @@
|
||||
"comment": "https://www.w3.org/TR/css3-speech/#property-index",
|
||||
"syntax": "<time> | none | x-weak | weak | medium | strong | x-strong"
|
||||
},
|
||||
"shape-rendering": {
|
||||
"comment": "added SVG property",
|
||||
"scroll-timeline": {
|
||||
"comment": "fix according to spec",
|
||||
"references": [
|
||||
"https://www.w3.org/TR/SVG/painting.html#ShapeRenderingPropert"
|
||||
"https://www.w3.org/TR/scroll-animations-1/#scroll-timeline-shorthand"
|
||||
],
|
||||
"syntax": "auto | optimizeSpeed | crispEdges | geometricPrecision"
|
||||
"syntax": "[ <'scroll-timeline-name'> || <'scroll-timeline-axis'> ]#"
|
||||
},
|
||||
"scroll-timeline-name": {
|
||||
"comment": "fix according to spec",
|
||||
"references": [
|
||||
"https://w3c.github.io/csswg-drafts/scroll-animations/#propdef-scroll-timeline-name"
|
||||
],
|
||||
"syntax": "[ none | <dashed-ident> ]#"
|
||||
},
|
||||
"src": {
|
||||
"comment": "added @font-face's src property https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/src",
|
||||
@@ -344,7 +392,7 @@
|
||||
},
|
||||
"speak": {
|
||||
"comment": "https://www.w3.org/TR/css3-speech/#property-index",
|
||||
"syntax": "auto | none | normal"
|
||||
"syntax": "auto | never | always"
|
||||
},
|
||||
"speak-as": {
|
||||
"comment": "https://www.w3.org/TR/css3-speech/#property-index",
|
||||
@@ -371,13 +419,6 @@
|
||||
],
|
||||
"syntax": "<svg-length>"
|
||||
},
|
||||
"stroke-linecap": {
|
||||
"comment": "added SVG property",
|
||||
"references": [
|
||||
"https://www.w3.org/TR/SVG/painting.html#StrokeProperties"
|
||||
],
|
||||
"syntax": "butt | round | square"
|
||||
},
|
||||
"stroke-linejoin": {
|
||||
"comment": "added SVG property",
|
||||
"references": [
|
||||
@@ -392,13 +433,6 @@
|
||||
],
|
||||
"syntax": "<number-one-or-greater>"
|
||||
},
|
||||
"stroke-opacity": {
|
||||
"comment": "added SVG property",
|
||||
"references": [
|
||||
"https://www.w3.org/TR/SVG/painting.html#StrokeProperties"
|
||||
],
|
||||
"syntax": "<number-zero-one>"
|
||||
},
|
||||
"stroke-width": {
|
||||
"comment": "added SVG property",
|
||||
"references": [
|
||||
@@ -406,12 +440,9 @@
|
||||
],
|
||||
"syntax": "<svg-length>"
|
||||
},
|
||||
"text-anchor": {
|
||||
"comment": "added SVG property",
|
||||
"references": [
|
||||
"https://www.w3.org/TR/SVG/text.html#TextAlignmentProperties"
|
||||
],
|
||||
"syntax": "start | middle | end"
|
||||
"text-wrap": {
|
||||
"comment": "broken in mdn/data",
|
||||
"syntax": "<'text-wrap-mode'> || <'text-wrap-style'>"
|
||||
},
|
||||
"unicode-bidi": {
|
||||
"comment": "added prefixed keywords https://developer.mozilla.org/en-US/docs/Web/CSS/unicode-bidi",
|
||||
@@ -456,9 +487,20 @@
|
||||
"writing-mode": {
|
||||
"comment": "extend with SVG keywords",
|
||||
"syntax": "| <svg-writing-mode>"
|
||||
},
|
||||
"white-space-trim": {
|
||||
"syntax": "none | discard-before || discard-after || discard-inner",
|
||||
"comment": "missed, https://www.w3.org/TR/css-text-4/#white-space-trim"
|
||||
},
|
||||
"word-break": {
|
||||
"syntax": "normal | break-all | keep-all | break-word | auto-phrase",
|
||||
"comment": "added in Chrome/Edge 119, not covered by a spec currently (2024-09-02)",
|
||||
"references": [
|
||||
"https://developer.mozilla.org/en-US/docs/Web/CSS/word-break"
|
||||
]
|
||||
}
|
||||
},
|
||||
"syntaxes": {
|
||||
"types": {
|
||||
"-legacy-gradient": {
|
||||
"comment": "added collection of legacy gradient syntaxes",
|
||||
"syntax": "<-webkit-gradient()> | <-legacy-linear-gradient> | <-legacy-repeating-linear-gradient> | <-legacy-radial-gradient> | <-legacy-repeating-radial-gradient>"
|
||||
@@ -516,11 +558,11 @@
|
||||
},
|
||||
"-non-standard-overflow": {
|
||||
"comment": "non-standard keywords https://developer.mozilla.org/en-US/docs/Web/CSS/overflow",
|
||||
"syntax": "-moz-scrollbars-none | -moz-scrollbars-horizontal | -moz-scrollbars-vertical | -moz-hidden-unscrollable"
|
||||
"syntax": "overlay | -moz-scrollbars-none | -moz-scrollbars-horizontal | -moz-scrollbars-vertical | -moz-hidden-unscrollable"
|
||||
},
|
||||
"-non-standard-width": {
|
||||
"-non-standard-size": {
|
||||
"comment": "non-standard keywords https://developer.mozilla.org/en-US/docs/Web/CSS/width",
|
||||
"syntax": "fill-available | min-intrinsic | intrinsic | -moz-available | -moz-fit-content | -moz-min-content | -moz-max-content | -webkit-min-content | -webkit-max-content"
|
||||
"syntax": "intrinsic | min-intrinsic | -webkit-fill-available | -webkit-fit-content | -webkit-min-content | -webkit-max-content | -moz-available | -moz-fit-content | -moz-min-content | -moz-max-content"
|
||||
},
|
||||
"-webkit-gradient()": {
|
||||
"comment": "first Apple proposal gradient syntax https://webkit.org/blog/175/introducing-css-gradients/ - TODO: simplify when after match algorithm improvement ( [, point, radius | , point] -> [, radius]? , point )",
|
||||
@@ -546,10 +588,6 @@
|
||||
"comment": "missed; https://developer.mozilla.org/en-US/docs/Web/CSS/-webkit-mask-box-image",
|
||||
"syntax": "repeat | stretch | round"
|
||||
},
|
||||
"-webkit-mask-clip-style": {
|
||||
"comment": "missed; there is no enough information about `-webkit-mask-clip` property, but looks like all those keywords are working",
|
||||
"syntax": "border | border-box | padding | padding-box | content | content-box | text"
|
||||
},
|
||||
"-ms-filter-function-list": {
|
||||
"comment": "https://developer.mozilla.org/en-US/docs/Web/CSS/-ms-filter",
|
||||
"syntax": "<-ms-filter-function>+"
|
||||
@@ -566,30 +604,50 @@
|
||||
"comment": "https://developer.mozilla.org/en-US/docs/Web/CSS/-ms-filter",
|
||||
"syntax": "<ident-token> | <function-token> <any-value>? )"
|
||||
},
|
||||
"-ms-filter": {
|
||||
"syntax": "<string>"
|
||||
"absolute-color-base": {
|
||||
"comment": "https://www.w3.org/TR/css-color-4/#color-syntax",
|
||||
"syntax": "<hex-color> | <absolute-color-function> | <named-color> | transparent"
|
||||
},
|
||||
"absolute-color-function": {
|
||||
"comment": "https://www.w3.org/TR/css-color-4/#color-syntax",
|
||||
"syntax": "<rgb()> | <rgba()> | <hsl()> | <hsla()> | <hwb()> | <lab()> | <lch()> | <oklab()> | <oklch()> | <color()>"
|
||||
},
|
||||
"age": {
|
||||
"comment": "https://www.w3.org/TR/css3-speech/#voice-family",
|
||||
"syntax": "child | young | old"
|
||||
},
|
||||
"anchor-name": {
|
||||
"comment": "missed in mdn/data",
|
||||
"syntax": "<dashed-ident>"
|
||||
},
|
||||
"attr-name": {
|
||||
"syntax": "<wq-name>"
|
||||
},
|
||||
"attr-fallback": {
|
||||
"syntax": "<any-value>"
|
||||
},
|
||||
"border-radius": {
|
||||
"comment": "missed, https://drafts.csswg.org/css-backgrounds-3/#the-border-radius",
|
||||
"syntax": "<length-percentage>{1,2}"
|
||||
"bg-clip": {
|
||||
"comment": "missed, https://drafts.csswg.org/css-backgrounds-4/#typedef-bg-clip",
|
||||
"syntax": "<box> | border | text"
|
||||
},
|
||||
"bottom": {
|
||||
"comment": "missed; not sure we should add it, but no others except `shape` is using it so it's ok for now; https://drafts.fxtf.org/css-masking-1/#funcdef-clip-rect",
|
||||
"syntax": "<length> | auto"
|
||||
},
|
||||
"content-list": {
|
||||
"comment": "missed -> https://drafts.csswg.org/css-content/#typedef-content-list (document-url, <target> and leader() is omitted util stabilization)",
|
||||
"syntax": "[ <string> | contents | <image> | <quote> | <target> | <leader()> | <attr()> | counter( <ident>, <'list-style-type'>? ) ]+"
|
||||
"comment": "added attr(), see https://github.com/csstree/csstree/issues/201",
|
||||
"syntax": "[ <string> | contents | <image> | <counter> | <quote> | <target> | <leader()> | <attr()> ]+"
|
||||
},
|
||||
"container-name": {
|
||||
"comment": "missed, https://drafts.csswg.org/css-contain-3/#container-rule",
|
||||
"syntax": "<custom-ident>"
|
||||
},
|
||||
"container-condition": {
|
||||
"comment": "missed, https://drafts.csswg.org/css-contain-3/#container-rule",
|
||||
"syntax": "not <query-in-parens> | <query-in-parens> [ [ and <query-in-parens> ]* | [ or <query-in-parens> ]* ]"
|
||||
},
|
||||
"coord-box": {
|
||||
"syntax": "content-box | padding-box | border-box | fill-box | stroke-box | view-box"
|
||||
},
|
||||
"element()": {
|
||||
"comment": "https://drafts.csswg.org/css-gcpm/#element-syntax & https://drafts.csswg.org/css-images-4/#element-notation",
|
||||
@@ -603,12 +661,29 @@
|
||||
"comment": "https://www.w3.org/TR/css3-speech/#voice-family",
|
||||
"syntax": "male | female | neutral"
|
||||
},
|
||||
"general-enclosed": {
|
||||
"comment": "remove ident-token, optional any-value, brackets (see https://drafts.csswg.org/mediaqueries-5/#typedef-general-enclosed)",
|
||||
"syntax": "[ <function-token> <any-value>? ) ] | [ ( <any-value>? ) ]"
|
||||
},
|
||||
"generic-family": {
|
||||
"comment": "added -apple-system",
|
||||
"comment": "new definition on font-4, https://drafts.csswg.org/css-fonts-4/#typedef-generic-family",
|
||||
"syntax": "<generic-script-specific>| <generic-complete> | <generic-incomplete> | <-non-standard-generic-family>"
|
||||
},
|
||||
"generic-script-specific": {
|
||||
"syntax": "generic(kai) | generic(fangsong) | generic(nastaliq)"
|
||||
},
|
||||
"generic-complete": {
|
||||
"syntax": "serif | sans-serif | system-ui | cursive | fantasy | math | monospace"
|
||||
},
|
||||
"generic-incomplete": {
|
||||
"syntax": "ui-serif | ui-sans-serif | ui-monospace | ui-rounded"
|
||||
},
|
||||
"-non-standard-generic-family": {
|
||||
"syntax": "-apple-system | BlinkMacSystemFont",
|
||||
"references": [
|
||||
"https://css-tricks.com/snippets/css/system-font-stack/",
|
||||
"https://webkit.org/blog/3709/using-the-system-font-in-web-content/"
|
||||
],
|
||||
"syntax": "| -apple-system"
|
||||
]
|
||||
},
|
||||
"gradient": {
|
||||
"comment": "added legacy syntaxes support",
|
||||
@@ -618,29 +693,47 @@
|
||||
"comment": "missed; not sure we should add it, but no others except `shape` is using it so it's ok for now; https://drafts.fxtf.org/css-masking-1/#funcdef-clip-rect",
|
||||
"syntax": "<length> | auto"
|
||||
},
|
||||
"mask-image": {
|
||||
"comment": "missed; https://drafts.fxtf.org/css-masking-1/#the-mask-image",
|
||||
"syntax": "<mask-reference>#"
|
||||
"color": {
|
||||
"comment": "css-color-5, added non standard color names",
|
||||
"syntax": "<color-base> | currentColor | <system-color> | <device-cmyk()> | <light-dark()> | <-non-standard-color>"
|
||||
},
|
||||
"name-repeat": {
|
||||
"comment": "missed, and looks like obsolete, keep it as is since other property syntaxes should be changed too; https://www.w3.org/TR/2015/WD-css-grid-1-20150917/#typedef-name-repeat",
|
||||
"syntax": "repeat( [ <positive-integer> | auto-fill ], <line-names>+)"
|
||||
"color-base": {
|
||||
"syntax": "<hex-color> | <color-function> | <named-color> | <color-mix()> | transparent"
|
||||
},
|
||||
"named-color": {
|
||||
"comment": "added non standard color names",
|
||||
"syntax": "| <-non-standard-color>"
|
||||
"color-function": {
|
||||
"syntax": "<rgb()> | <rgba()> | <hsl()> | <hsla()> | <hwb()> | <lab()> | <lch()> | <oklab()> | <oklch()> | <color()>"
|
||||
},
|
||||
"device-cmyk()": {
|
||||
"syntax": "<legacy-device-cmyk-syntax> | <modern-device-cmyk-syntax>"
|
||||
},
|
||||
"legacy-device-cmyk-syntax": {
|
||||
"syntax": "device-cmyk( <number>#{4} )"
|
||||
},
|
||||
"modern-device-cmyk-syntax": {
|
||||
"syntax": "device-cmyk( <cmyk-component>{4} [ / [ <alpha-value> | none ] ]? )"
|
||||
},
|
||||
"cmyk-component": {
|
||||
"syntax": "<number> | <percentage> | none"
|
||||
},
|
||||
"color-mix()": {
|
||||
"syntax": "color-mix( <color-interpolation-method> , [ <color> && <percentage [0,100]>? ]#{2} )"
|
||||
},
|
||||
"color-interpolation-method": {
|
||||
"syntax": "in [ <rectangular-color-space> | <polar-color-space> <hue-interpolation-method>? | <custom-color-space> ]"
|
||||
},
|
||||
"color-space": {
|
||||
"syntax": "<rectangular-color-space> | <polar-color-space> | <custom-color-space>"
|
||||
},
|
||||
"custom-color-space": {
|
||||
"syntax": "<dashed-ident>"
|
||||
},
|
||||
"paint": {
|
||||
"comment": "used by SVG https://www.w3.org/TR/SVG/painting.html#SpecifyingPaint",
|
||||
"syntax": "none | <color> | <url> [ none | <color> ]? | context-fill | context-stroke"
|
||||
},
|
||||
"page-size": {
|
||||
"comment": "https://www.w3.org/TR/css-page-3/#typedef-page-size-page-size",
|
||||
"syntax": "A5 | A4 | A3 | B5 | B4 | JIS-B5 | JIS-B4 | letter | legal | ledger"
|
||||
},
|
||||
"ratio": {
|
||||
"comment": "missed, https://drafts.csswg.org/mediaqueries-4/#typedef-ratio",
|
||||
"syntax": "<integer> / <integer>"
|
||||
"palette-identifier": {
|
||||
"comment": "<palette-identifier> is parsed as a <dashed-ident> (https://drafts.csswg.org/css-fonts/#typedef-font-palette-palette-identifier)",
|
||||
"syntax": "<dashed-ident>"
|
||||
},
|
||||
"right": {
|
||||
"comment": "missed; not sure we should add it, but no others except `shape` is using it so it's ok for now; https://drafts.fxtf.org/css-masking-1/#funcdef-clip-rect",
|
||||
@@ -650,6 +743,67 @@
|
||||
"comment": "missed spaces in function body and add backwards compatible syntax",
|
||||
"syntax": "rect( <top>, <right>, <bottom>, <left> ) | rect( <top> <right> <bottom> <left> )"
|
||||
},
|
||||
"scope-start": {
|
||||
"syntax": "<forgiving-selector-list>"
|
||||
},
|
||||
"scope-end": {
|
||||
"syntax": "<forgiving-selector-list>"
|
||||
},
|
||||
"forgiving-selector-list": {
|
||||
"syntax": "<complex-real-selector-list>"
|
||||
},
|
||||
"forgiving-relative-selector-list": {
|
||||
"syntax": "<relative-real-selector-list>"
|
||||
},
|
||||
"selector-list": {
|
||||
"syntax": "<complex-selector-list>"
|
||||
},
|
||||
"complex-real-selector-list": {
|
||||
"syntax": "<complex-real-selector>#"
|
||||
},
|
||||
"simple-selector-list": {
|
||||
"syntax": "<simple-selector>#"
|
||||
},
|
||||
"relative-real-selector-list": {
|
||||
"syntax": "<relative-real-selector>#"
|
||||
},
|
||||
"complex-selector": {
|
||||
"syntax": "<complex-selector-unit> [ <combinator>? <complex-selector-unit> ]*"
|
||||
},
|
||||
"complex-selector-unit": {
|
||||
"syntax": "[ <compound-selector>? <pseudo-compound-selector>* ]!"
|
||||
},
|
||||
"complex-real-selector": {
|
||||
"syntax": "<compound-selector> [ <combinator>? <compound-selector> ]*"
|
||||
},
|
||||
"relative-real-selector": {
|
||||
"syntax": "<combinator>? <complex-real-selector>"
|
||||
},
|
||||
"compound-selector": {
|
||||
"syntax": "[ <type-selector>? <subclass-selector>* ]!"
|
||||
},
|
||||
"pseudo-compound-selector": {
|
||||
"syntax": " <pseudo-element-selector> <pseudo-class-selector>*"
|
||||
},
|
||||
"simple-selector": {
|
||||
"syntax": "<type-selector> | <subclass-selector>"
|
||||
},
|
||||
"combinator": {
|
||||
"syntax": "'>' | '+' | '~' | [ '|' '|' ]"
|
||||
},
|
||||
"pseudo-element-selector": {
|
||||
"syntax": "':' <pseudo-class-selector> | <legacy-pseudo-element-selector>"
|
||||
},
|
||||
"legacy-pseudo-element-selector": {
|
||||
"syntax": " ':' [before | after | first-line | first-letter]"
|
||||
},
|
||||
"single-animation-composition": {
|
||||
"comment": "missed definition",
|
||||
"references": [
|
||||
"https://w3c.github.io/csswg-drafts/css-animations-2/#typedef-single-animation-composition"
|
||||
],
|
||||
"syntax": "replace | add | accumulate"
|
||||
},
|
||||
"svg-length": {
|
||||
"comment": "All coordinates and lengths in SVG can be specified with or without a unit identifier",
|
||||
"references": [
|
||||
@@ -669,18 +823,6 @@
|
||||
"comment": "missed; not sure we should add it, but no others except `shape` is using it so it's ok for now; https://drafts.fxtf.org/css-masking-1/#funcdef-clip-rect",
|
||||
"syntax": "<length> | auto"
|
||||
},
|
||||
"track-group": {
|
||||
"comment": "used by old grid-columns and grid-rows syntax v0",
|
||||
"syntax": "'(' [ <string>* <track-minmax> <string>* ]+ ')' [ '[' <positive-integer> ']' ]? | <track-minmax>"
|
||||
},
|
||||
"track-list-v0": {
|
||||
"comment": "used by old grid-columns and grid-rows syntax v0",
|
||||
"syntax": "[ <string>* <track-group> <string>* ]+ | none"
|
||||
},
|
||||
"track-minmax": {
|
||||
"comment": "used by old grid-columns and grid-rows syntax v0",
|
||||
"syntax": "minmax( <track-breadth> , <track-breadth> ) | auto | <track-breadth> | fit-content"
|
||||
},
|
||||
"x": {
|
||||
"comment": "missed; not sure we should add it, but no others except `cursor` is using it so it's ok for now; https://drafts.csswg.org/css-ui-3/#cursor",
|
||||
"syntax": "<number>"
|
||||
@@ -711,11 +853,130 @@
|
||||
"number-one-or-greater": {
|
||||
"syntax": "<number [1,∞]>"
|
||||
},
|
||||
"positive-integer": {
|
||||
"syntax": "<integer [0,∞]>"
|
||||
"color()": {
|
||||
"syntax": "color( <colorspace-params> [ / [ <alpha-value> | none ] ]? )"
|
||||
},
|
||||
"colorspace-params": {
|
||||
"syntax": "[ <predefined-rgb-params> | <xyz-params>]"
|
||||
},
|
||||
"predefined-rgb-params": {
|
||||
"syntax": "<predefined-rgb> [ <number> | <percentage> | none ]{3}"
|
||||
},
|
||||
"predefined-rgb": {
|
||||
"syntax": "srgb | srgb-linear | display-p3 | a98-rgb | prophoto-rgb | rec2020"
|
||||
},
|
||||
"xyz-params": {
|
||||
"syntax": "<xyz-space> [ <number> | <percentage> | none ]{3}"
|
||||
},
|
||||
"xyz-space": {
|
||||
"syntax": "xyz | xyz-d50 | xyz-d65"
|
||||
},
|
||||
"oklab()": {
|
||||
"comment": "https://www.w3.org/TR/css-color-4/#specifying-oklab-oklch",
|
||||
"syntax": "oklab( [ <percentage> | <number> | none] [ <percentage> | <number> | none] [ <percentage> | <number> | none] [ / [<alpha-value> | none] ]? )"
|
||||
},
|
||||
"oklch()": {
|
||||
"comment": "https://www.w3.org/TR/css-color-4/#specifying-oklab-oklch",
|
||||
"syntax": "oklch( [ <percentage> | <number> | none] [ <percentage> | <number> | none] [ <hue> | none] [ / [<alpha-value> | none] ]? )"
|
||||
},
|
||||
"offset-path": {
|
||||
"syntax": "<ray()> | <url> | <basic-shape>"
|
||||
},
|
||||
"basic-shape": {
|
||||
"syntax": "<inset()> | <xywh()> | <rect()> | <circle()> | <ellipse()> | <polygon()> | <path()>"
|
||||
},
|
||||
"rect()": {
|
||||
"comment": "missed, https://drafts.csswg.org/css-shapes/#supported-basic-shapes",
|
||||
"syntax": "rect( [ <length-percentage> | auto ]{4} [ round <'border-radius'> ]? )"
|
||||
},
|
||||
"xywh()": {
|
||||
"comment": "missed, https://drafts.csswg.org/css-shapes/#supported-basic-shapes",
|
||||
"syntax": "xywh( <length-percentage>{2} <length-percentage [0,∞]>{2} [ round <'border-radius'> ]? )"
|
||||
},
|
||||
"query-in-parens": {
|
||||
"comment": "missed, https://drafts.csswg.org/css-contain-3/#container-rule",
|
||||
"syntax": "( <container-condition> ) | ( <size-feature> ) | style( <style-query> ) | <general-enclosed>"
|
||||
},
|
||||
"size-feature": {
|
||||
"comment": "missed, https://drafts.csswg.org/css-contain-3/#typedef-size-feature",
|
||||
"syntax": "<mf-plain> | <mf-boolean> | <mf-range>"
|
||||
},
|
||||
"style-feature": {
|
||||
"comment": "missed, https://drafts.csswg.org/css-contain-3/#typedef-style-feature",
|
||||
"syntax": "<declaration>"
|
||||
},
|
||||
"style-query": {
|
||||
"comment": "missed, https://drafts.csswg.org/css-contain-3/#container-rule",
|
||||
"syntax": "<style-condition> | <style-feature>"
|
||||
},
|
||||
"style-condition": {
|
||||
"comment": "missed, https://drafts.csswg.org/css-contain-3/#container-rule",
|
||||
"syntax": "not <style-in-parens> | <style-in-parens> [ [ and <style-in-parens> ]* | [ or <style-in-parens> ]* ]"
|
||||
},
|
||||
"style-in-parens": {
|
||||
"comment": "missed, https://drafts.csswg.org/css-contain-3/#container-rule",
|
||||
"syntax": "( <style-condition> ) | ( <style-feature> ) | <general-enclosed>"
|
||||
},
|
||||
"-non-standard-display": {
|
||||
"syntax": "-ms-inline-flexbox | -ms-grid | -ms-inline-grid | -webkit-flex | -webkit-inline-flex | -webkit-box | -webkit-inline-box | -moz-inline-stack | -moz-box | -moz-inline-box"
|
||||
},
|
||||
"inset-area": {
|
||||
"syntax": "[ [ left | center | right | span-left | span-right | x-start | x-end | span-x-start | span-x-end | x-self-start | x-self-end | span-x-self-start | span-x-self-end | span-all ] || [ top | center | bottom | span-top | span-bottom | y-start | y-end | span-y-start | span-y-end | y-self-start | y-self-end | span-y-self-start | span-y-self-end | span-all ] | [ block-start | center | block-end | span-block-start | span-block-end | span-all ] || [ inline-start | center | inline-end | span-inline-start | span-inline-end | span-all ] | [ self-block-start | self-block-end | span-self-block-start | span-self-block-end | span-all ] || [ self-inline-start | self-inline-end | span-self-inline-start | span-self-inline-end | span-all ] | [ start | center | end | span-start | span-end | span-all ]{1,2} | [ self-start | center | self-end | span-self-start | span-self-end | span-all ]{1,2} ]",
|
||||
"comment": "initial name for <position-area> before renamed",
|
||||
"references": [
|
||||
"https://www.w3.org/TR/css-anchor-position-1/#inset-area"
|
||||
]
|
||||
},
|
||||
"position-area": {
|
||||
"syntax": "[ [ left | center | right | span-left | span-right | x-start | x-end | span-x-start | span-x-end | x-self-start | x-self-end | span-x-self-start | span-x-self-end | span-all ] || [ top | center | bottom | span-top | span-bottom | y-start | y-end | span-y-start | span-y-end | y-self-start | y-self-end | span-y-self-start | span-y-self-end | span-all ] | [ block-start | center | block-end | span-block-start | span-block-end | span-all ] || [ inline-start | center | inline-end | span-inline-start | span-inline-end | span-all ] | [ self-block-start | center | self-block-end | span-self-block-start | span-self-block-end | span-all ] || [ self-inline-start | center | self-inline-end | span-self-inline-start | span-self-inline-end | span-all ] | [ start | center | end | span-start | span-end | span-all ]{1,2} | [ self-start | center | self-end | span-self-start | span-self-end | span-all ]{1,2} ]",
|
||||
"comment": "replaced <inset-area>",
|
||||
"references": [
|
||||
"https://drafts.csswg.org/css-anchor-position-1/#typedef-position-area"
|
||||
]
|
||||
},
|
||||
"anchor()": {
|
||||
"syntax": "anchor( <anchor-element>? && <anchor-side>, <length-percentage>? )",
|
||||
"comment": "missed",
|
||||
"references": [
|
||||
"https://drafts.csswg.org/css-anchor-position-1/#anchor-pos"
|
||||
]
|
||||
},
|
||||
"anchor-side": {
|
||||
"syntax": "inside | outside | top | left | right | bottom | start | end | self-start | self-end | <percentage> | center"
|
||||
},
|
||||
"anchor-size()": {
|
||||
"syntax": "anchor-size( [ <anchor-element> || <anchor-size> ]? , <length-percentage>? )",
|
||||
"comment": "missed",
|
||||
"references": [
|
||||
"https://drafts.csswg.org/css-anchor-position-1/#funcdef-anchor-size"
|
||||
]
|
||||
},
|
||||
"anchor-size": {
|
||||
"syntax": "width | height | block | inline | self-block | self-inline"
|
||||
},
|
||||
"anchor-element": {
|
||||
"syntax": "<dashed-ident>",
|
||||
"comment": "missed, https://drafts.csswg.org/css-anchor-position-1/#typedef-anchor-element"
|
||||
},
|
||||
"try-size": {
|
||||
"syntax": "most-width | most-height | most-block-size | most-inline-size",
|
||||
"comment": "missed, https://drafts.csswg.org/css-anchor-position-1/#typedef-try-size"
|
||||
},
|
||||
"try-tactic": {
|
||||
"syntax": "flip-block || flip-inline || flip-start",
|
||||
"comment": "missed, https://drafts.csswg.org/css-anchor-position-1/#typedef-position-try-fallbacks-try-tactic"
|
||||
},
|
||||
"font-variant-css2": {
|
||||
"syntax": "normal | small-caps",
|
||||
"comment": "new definition on font-4, https://drafts.csswg.org/css-fonts-4/#font-variant-css21-values"
|
||||
},
|
||||
"font-width-css3": {
|
||||
"syntax": "normal | ultra-condensed | extra-condensed | condensed | semi-condensed | semi-expanded | expanded | extra-expanded | ultra-expanded",
|
||||
"comment": "new definition on font-4, https://drafts.csswg.org/css-fonts-4/#font-width-css3-values"
|
||||
},
|
||||
"system-family-name": {
|
||||
"syntax": "caption | icon | menu | message-box | small-caption | status-bar",
|
||||
"comment": "new definition on font-4, https://drafts.csswg.org/css-fonts-4/#system-family-name-value"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user