diff options
| author | littleblack111 <littleblack11111@gmail.com> | 2023-10-14 15:05:55 +0800 |
|---|---|---|
| committer | littleblack111 <littleblack11111@gmail.com> | 2023-10-14 15:05:55 +0800 |
| commit | c06f7ee0a40255214c477e13d9b956a7e07c2900 (patch) | |
| tree | f5982a568ef8fab865d0142e71c7494fea3e4c1b /node_modules/css-declaration-sorter | |
| parent | 3fd9400d4dccc25aa29b5702216732e0b7542073 (diff) | |
postcss,(plugins): nanocss, postcss-preset-env
Diffstat (limited to 'node_modules/css-declaration-sorter')
| -rw-r--r-- | node_modules/css-declaration-sorter/dist/main.cjs | 1824 | ||||
| -rw-r--r-- | node_modules/css-declaration-sorter/license.md | 15 | ||||
| -rw-r--r-- | node_modules/css-declaration-sorter/orders/alphabetical.mjs | 393 | ||||
| -rw-r--r-- | node_modules/css-declaration-sorter/orders/concentric-css.mjs | 397 | ||||
| -rw-r--r-- | node_modules/css-declaration-sorter/orders/smacss.mjs | 399 | ||||
| -rw-r--r-- | node_modules/css-declaration-sorter/package.json | 59 | ||||
| -rw-r--r-- | node_modules/css-declaration-sorter/readme.md | 126 | ||||
| -rw-r--r-- | node_modules/css-declaration-sorter/src/bubble-sort.mjs | 20 | ||||
| -rw-r--r-- | node_modules/css-declaration-sorter/src/main.d.ts | 27 | ||||
| -rw-r--r-- | node_modules/css-declaration-sorter/src/main.mjs | 146 | ||||
| -rw-r--r-- | node_modules/css-declaration-sorter/src/shorthand-data.mjs | 433 |
11 files changed, 3839 insertions, 0 deletions
diff --git a/node_modules/css-declaration-sorter/dist/main.cjs b/node_modules/css-declaration-sorter/dist/main.cjs new file mode 100644 index 00000000..cef56d78 --- /dev/null +++ b/node_modules/css-declaration-sorter/dist/main.cjs @@ -0,0 +1,1824 @@ +'use strict'; + +Object.defineProperty(exports, '__esModule', { value: true }); + +const shorthandData = { + 'animation': [ + 'animation-name', + 'animation-duration', + 'animation-timing-function', + 'animation-delay', + 'animation-iteration-count', + 'animation-direction', + 'animation-fill-mode', + 'animation-play-state', + ], + 'background': [ + 'background-image', + 'background-size', + 'background-position', + 'background-repeat', + 'background-origin', + 'background-clip', + 'background-attachment', + 'background-color', + ], + 'columns': [ + 'column-width', + 'column-count', + ], + 'column-rule': [ + 'column-rule-width', + 'column-rule-style', + 'column-rule-color', + ], + 'flex': [ + 'flex-grow', + 'flex-shrink', + 'flex-basis', + ], + 'flex-flow': [ + 'flex-direction', + 'flex-wrap', + ], + 'font': [ + 'font-style', + 'font-variant', + 'font-weight', + 'font-stretch', + 'font-size', + 'font-family', + 'line-height', + ], + 'grid': [ + 'grid-template-rows', + 'grid-template-columns', + 'grid-template-areas', + 'grid-auto-rows', + 'grid-auto-columns', + 'grid-auto-flow', + 'column-gap', + 'row-gap', + ], + 'grid-area': [ + 'grid-row-start', + 'grid-column-start', + 'grid-row-end', + 'grid-column-end', + ], + 'grid-column': [ + 'grid-column-start', + 'grid-column-end', + ], + 'grid-row': [ + 'grid-row-start', + 'grid-row-end', + ], + 'grid-template': [ + 'grid-template-columns', + 'grid-template-rows', + 'grid-template-areas', + ], + 'list-style': [ + 'list-style-type', + 'list-style-position', + 'list-style-image', + ], + 'padding': [ + 'padding-block', + 'padding-block-start', + 'padding-block-end', + 'padding-inline', + 'padding-inline-start', + 'padding-inline-end', + 'padding-top', + 'padding-right', + 'padding-bottom', + 'padding-left', + ], + 'padding-block': [ + 'padding-block-start', + 'padding-block-end', + 'padding-top', + 'padding-right', + 'padding-bottom', + 'padding-left', + ], + 'padding-block-start': [ + 'padding-top', + 'padding-right', + 'padding-left', + ], + 'padding-block-end': [ + 'padding-right', + 'padding-bottom', + 'padding-left', + ], + 'padding-inline': [ + 'padding-inline-start', + 'padding-inline-end', + 'padding-top', + 'padding-right', + 'padding-bottom', + 'padding-left', + ], + 'padding-inline-start': [ + 'padding-top', + 'padding-right', + 'padding-left', + ], + 'padding-inline-end': [ + 'padding-right', + 'padding-bottom', + 'padding-left', + ], + 'margin': [ + 'margin-block', + 'margin-block-start', + 'margin-block-end', + 'margin-inline', + 'margin-inline-start', + 'margin-inline-end', + 'margin-top', + 'margin-right', + 'margin-bottom', + 'margin-left', + ], + 'margin-block': [ + 'margin-block-start', + 'margin-block-end', + 'margin-top', + 'margin-right', + 'margin-bottom', + 'margin-left', + ], + 'margin-inline': [ + 'margin-inline-start', + 'margin-inline-end', + 'margin-top', + 'margin-right', + 'margin-bottom', + 'margin-left', + ], + 'margin-inline-start': [ + 'margin-top', + 'margin-right', + 'margin-bottom', + 'margin-left', + ], + 'margin-inline-end': [ + 'margin-top', + 'margin-right', + 'margin-bottom', + 'margin-left', + ], + 'border': [ + 'border-top', + 'border-right', + 'border-bottom', + 'border-left', + 'border-width', + 'border-style', + 'border-color', + 'border-top-width', + 'border-right-width', + 'border-bottom-width', + 'border-left-width', + 'border-inline-start-width', + 'border-inline-end-width', + 'border-block-start-width', + 'border-block-end-width', + 'border-top-style', + 'border-right-style', + 'border-bottom-style', + 'border-left-style', + 'border-inline-start-style', + 'border-inline-end-style', + 'border-block-start-style', + 'border-block-end-style', + 'border-top-color', + 'border-right-color', + 'border-bottom-color', + 'border-left-color', + 'border-inline-start-color', + 'border-inline-end-color', + 'border-block-start-color', + 'border-block-end-color', + 'border-block', + 'border-block-start', + 'border-block-end', + 'border-block-width', + 'border-block-style', + 'border-block-color', + 'border-inline', + 'border-inline-start', + 'border-inline-end', + 'border-inline-width', + 'border-inline-style', + 'border-inline-color', + ], + 'border-top': [ + 'border-width', + 'border-style', + 'border-color', + 'border-top-width', + 'border-top-style', + 'border-top-color', + ], + 'border-right': [ + 'border-width', + 'border-style', + 'border-color', + 'border-right-width', + 'border-right-style', + 'border-right-color', + ], + 'border-bottom': [ + 'border-width', + 'border-style', + 'border-color', + 'border-bottom-width', + 'border-bottom-style', + 'border-bottom-color', + ], + 'border-left': [ + 'border-width', + 'border-style', + 'border-color', + 'border-left-width', + 'border-left-style', + 'border-left-color', + ], + 'border-color': [ + 'border-top-color', + 'border-bottom-color', + 'border-left-color', + 'border-right-color', + 'border-inline-start-color', + 'border-inline-end-color', + 'border-block-start-color', + 'border-block-end-color', + ], + 'border-width': [ + 'border-top-width', + 'border-bottom-width', + 'border-left-width', + 'border-right-width', + 'border-inline-start-width', + 'border-inline-end-width', + 'border-block-start-width', + 'border-block-end-width', + ], + 'border-style': [ + 'border-top-style', + 'border-bottom-style', + 'border-left-style', + 'border-right-style', + 'border-inline-start-style', + 'border-inline-end-style', + 'border-block-start-style', + 'border-block-end-style', + ], + 'border-radius': [ + 'border-top-right-radius', + 'border-top-left-radius', + 'border-bottom-right-radius', + 'border-bottom-left-radius', + ], + 'border-block': [ + 'border-block-start', + 'border-block-end', + 'border-block-width', + 'border-width', + 'border-block-style', + 'border-style', + 'border-block-color', + 'border-color', + ], + 'border-block-start': [ + 'border-block-start-width', + 'border-width', + 'border-block-start-style', + 'border-style', + 'border-block-start-color', + 'border-color', + ], + 'border-block-end': [ + 'border-block-end-width', + 'border-width', + 'border-block-end-style', + 'border-style', + 'border-block-end-color', + 'border-color', + ], + 'border-inline': [ + 'border-inline-start', + 'border-inline-end', + 'border-inline-width', + 'border-width', + 'border-inline-style', + 'border-style', + 'border-inline-color', + 'border-color', + ], + 'border-inline-start': [ + 'border-inline-start-width', + 'border-width', + 'border-inline-start-style', + 'border-style', + 'border-inline-start-color', + 'border-color', + ], + 'border-inline-end': [ + 'border-inline-end-width', + 'border-width', + 'border-inline-end-style', + 'border-style', + 'border-inline-end-color', + 'border-color', + ], + 'border-image': [ + 'border-image-source', + 'border-image-slice', + 'border-image-width', + 'border-image-outset', + 'border-image-repeat', + ], + 'mask': [ + 'mask-image', + 'mask-mode', + 'mask-position', + 'mask-size', + 'mask-repeat', + 'mask-origin', + 'mask-clip', + 'mask-composite', + ], + 'inline-size': [ + 'width', + 'height', + ], + 'block-size': [ + 'width', + 'height', + ], + 'max-inline-size': [ + 'max-width', + 'max-height', + ], + 'max-block-size': [ + 'max-width', + 'max-height', + ], + 'inset': [ + 'inset-block', + 'inset-block-start', + 'inset-block-end', + 'inset-inline', + 'inset-inline-start', + 'inset-inline-end', + 'top', + 'right', + 'bottom', + 'left', + ], + 'inset-block': [ + 'inset-block-start', + 'inset-block-end', + 'top', + 'right', + 'bottom', + 'left', + ], + 'inset-inline': [ + 'inset-inline-start', + 'inset-inline-end', + 'top', + 'right', + 'bottom', + 'left', + ], + 'outline': [ + 'outline-color', + 'outline-style', + 'outline-width', + ], + 'overflow': [ + 'overflow-x', + 'overflow-y', + ], + 'place-content': [ + 'align-content', + 'justify-content', + ], + 'place-items': [ + 'align-items', + 'justify-items', + ], + 'place-self': [ + 'align-self', + 'justify-self', + ], + 'text-decoration': [ + 'text-decoration-color', + 'text-decoration-style', + 'text-decoration-line', + ], + 'transition': [ + 'transition-delay', + 'transition-duration', + 'transition-property', + 'transition-timing-function', + ], + 'text-emphasis': [ + 'text-emphasis-style', + 'text-emphasis-color', + ], +}; + +function bubbleSort (list, comparator) { + let upperIndex = list.length - 1; + + while (upperIndex > 0) { + let swapIndex = 0; + + for (let i = 0; i < upperIndex; i += 1) { + if (comparator(list[i], list[i + 1]) > 0) { + const temp = list[i + 1]; + list[i + 1] = list[i]; + list[i] = temp; + swapIndex = i; + } + } + + upperIndex = swapIndex; + } + + return list; +} + +function __variableDynamicImportRuntime0__(path) { + switch (path) { + case '../orders/alphabetical.mjs': return Promise.resolve().then(function () { return alphabetical; }); + case '../orders/concentric-css.mjs': return Promise.resolve().then(function () { return concentricCss; }); + case '../orders/smacss.mjs': return Promise.resolve().then(function () { return smacss; }); + default: return new Promise(function(resolve, reject) { + (typeof queueMicrotask === 'function' ? queueMicrotask : setTimeout)( + reject.bind(null, new Error("Unknown variable dynamic import: " + path)) + ); + }) + } + } + +const builtInOrders = [ + 'alphabetical', + 'concentric-css', + 'smacss', +]; + +const cssDeclarationSorter = ({ order = 'alphabetical', keepOverrides = false } = {}) => ({ + postcssPlugin: 'css-declaration-sorter', + OnceExit (css) { + let withKeepOverrides = comparator => comparator; + if (keepOverrides) { + withKeepOverrides = withOverridesComparator(shorthandData); + } + + if (typeof order === 'function') { + return processCss({ css, comparator: withKeepOverrides(order) }); + } + + if (!builtInOrders.includes(order)) + return Promise.reject( + Error([ + `Invalid built-in order '${order}' provided.`, + `Available built-in orders are: ${builtInOrders}`, + ].join('\n')) + ); + + return __variableDynamicImportRuntime0__(`../orders/${order}.mjs`) + .then(({ properties }) => processCss({ + css, + comparator: withKeepOverrides(orderComparator(properties)), + })); + }, +}); + +cssDeclarationSorter.postcss = true; + +function processCss ({ css, comparator }) { + const comments = []; + const rulesCache = []; + + css.walk(node => { + const nodes = node.nodes; + const type = node.type; + + if (type === 'comment') { + // Don't do anything to root comments or the last newline comment + const isNewlineNode = node.raws.before && node.raws.before.includes('\n'); + const lastNewlineNode = isNewlineNode && !node.next(); + const onlyNode = !node.prev() && !node.next() || !node.parent; + + if (lastNewlineNode || onlyNode || node.parent.type === 'root') { + return; + } + + if (isNewlineNode) { + const pairedNode = node.next() || node.prev(); + if (pairedNode) { + comments.unshift({ + 'comment': node, + 'pairedNode': pairedNode, + 'insertPosition': node.next() ? 'Before' : 'After', + }); + node.remove(); + } + } else { + const pairedNode = node.prev() || node.next(); + if (pairedNode) { + comments.push({ + 'comment': node, + 'pairedNode': pairedNode, + 'insertPosition': 'After', + }); + node.remove(); + } + } + return; + } + + // Add rule-like nodes to a cache so that we can remove all + // comment nodes before we start sorting. + const isRule = type === 'rule' || type === 'atrule'; + if (isRule && nodes && nodes.length > 1) { + rulesCache.push(nodes); + } + }); + + // Perform a sort once all comment nodes are removed + rulesCache.forEach(nodes => { + sortCssDeclarations({ nodes, comparator }); + }); + + // Add comments back to the nodes they are paired with + comments.forEach(node => { + const pairedNode = node.pairedNode; + node.comment.remove(); + pairedNode.parent && pairedNode.parent['insert' + node.insertPosition](pairedNode, node.comment); + }); +} + +function sortCssDeclarations ({ nodes, comparator }) { + bubbleSort(nodes, (a, b) => { + if (a.type === 'decl' && b.type === 'decl') { + return comparator(a.prop, b.prop); + } else { + return compareDifferentType(a, b); + } + }); +} + +function withOverridesComparator (shorthandData) { + return function (comparator) { + return function (a, b) { + a = removeVendorPrefix(a); + b = removeVendorPrefix(b); + + if (shorthandData[a] && shorthandData[a].includes(b)) return 0; + if (shorthandData[b] && shorthandData[b].includes(a)) return 0; + + return comparator(a, b); + }; + }; +} + +function orderComparator (order) { + return function (a, b) { + return order.indexOf(a) - order.indexOf(b); + }; +} + +function compareDifferentType (a, b) { + if (b.type === 'atrule' || a.type === 'atrule') { + return 0; + } + + return a.type === 'decl' ? -1 : b.type === 'decl' ? 1 : 0; +} + +function removeVendorPrefix (property) { + return property.replace(/^-\w+-/, ''); +} + +const properties$2 = [ + "all", + "-webkit-line-clamp", + "-webkit-text-fill-color", + "-webkit-text-stroke", + "-webkit-text-stroke-color", + "-webkit-text-stroke-width", + "accent-color", + "align-content", + "align-items", + "align-self", + "animation", + "animation-delay", + "animation-direction", + "animation-duration", + "animation-fill-mode", + "animation-iteration-count", + "animation-name", + "animation-play-state", + "animation-timing-function", + "appearance", + "ascent-override", + "aspect-ratio", + "backdrop-filter", + "backface-visibility", + "background", + "background-attachment", + "background-blend-mode", + "background-clip", + "background-color", + "background-image", + "background-origin", + "background-position", + "background-position-x", + "background-position-y", + "background-repeat", + "background-size", + "block-size", + "border", + "border-block", + "border-block-color", + "border-block-end", + "border-block-end-color", + "border-block-end-style", + "border-block-end-width", + "border-block-start", + "border-block-start-color", + "border-block-start-style", + "border-block-start-width", + "border-block-style", + "border-block-width", + "border-bottom", + "border-bottom-color", + "border-bottom-left-radius", + "border-bottom-right-radius", + "border-bottom-style", + "border-bottom-width", + "border-collapse", + "border-color", + "border-end-end-radius", + "border-end-start-radius", + "border-image", + "border-image-outset", + "border-image-repeat", + "border-image-slice", + "border-image-source", + "border-image-width", + "border-inline", + "border-inline-color", + "border-inline-end", + "border-inline-end-color", + "border-inline-end-style", + "border-inline-end-width", + "border-inline-start", + "border-inline-start-color", + "border-inline-start-style", + "border-inline-start-width", + "border-inline-style", + "border-inline-width", + "border-left", + "border-left-color", + "border-left-style", + "border-left-width", + "border-radius", + "border-right", + "border-right-color", + "border-right-style", + "border-right-width", + "border-spacing", + "border-start-end-radius", + "border-start-start-radius", + "border-style", + "border-top", + "border-top-color", + "border-top-left-radius", + "border-top-right-radius", + "border-top-style", + "border-top-width", + "border-width", + "bottom", + "box-decoration-break", + "box-shadow", + "box-sizing", + "break-after", + "break-before", + "break-inside", + "caption-side", + "caret-color", + "clear", + "clip-path", + "color", + "color-scheme", + "column-count", + "column-fill", + "column-gap", + "column-rule", + "column-rule-color", + "column-rule-style", + "column-rule-width", + "column-span", + "column-width", + "columns", + "contain", + "contain-intrinsic-height", + "contain-intrinsic-size", + "contain-intrinsic-width", + "container", + "container-name", + "container-type", + "content", + "content-visibility", + "counter-increment", + "counter-reset", + "counter-set", + "cursor", + "descent-override", + "direction", + "display", + "empty-cells", + "filter", + "flex", + "flex-basis", + "flex-direction", + "flex-flow", + "flex-grow", + "flex-shrink", + "flex-wrap", + "float", + "font", + "font-display", + "font-family", + "font-kerning", + "font-language-override", + "font-optical-sizing", + "font-palette", + "font-size", + "font-size-adjust", + "font-stretch", + "font-style", + "font-synthesis", + "font-variant", + "font-variant-alternates", + "font-variant-caps", + "font-variant-east-asian", + "font-variant-emoji", + "font-variant-ligatures", + "font-variant-numeric", + "font-variant-position", + "font-variation-settings", + "font-weight", + "forced-color-adjust", + "gap", + "grid", + "grid-area", + "grid-auto-columns", + "grid-auto-flow", + "grid-auto-rows", + "grid-column", + "grid-column-end", + "grid-column-start", + "grid-row", + "grid-row-end", + "grid-row-start", + "grid-template", + "grid-template-areas", + "grid-template-columns", + "grid-template-rows", + "hanging-punctuation", + "height", + "hyphenate-character", + "hyphens", + "image-orientation", + "image-rendering", + "inline-size", + "inset", + "inset-block", + "inset-block-end", + "inset-block-start", + "inset-inline", + "inset-inline-end", + "inset-inline-start", + "isolation", + "justify-content", + "justify-items", + "justify-self", + "left", + "letter-spacing", + "line-break", + "line-gap-override", + "line-height", + "list-style", + "list-style-image", + "list-style-position", + "list-style-type", + "margin", + "margin-block", + "margin-block-end", + "margin-block-start", + "margin-bottom", + "margin-inline", + "margin-inline-end", + "margin-inline-start", + "margin-left", + "margin-right", + "margin-top", + "mask", + "mask-border", + "mask-border-outset", + "mask-border-repeat", + "mask-border-slice", + "mask-border-source", + "mask-border-width", + "mask-clip", + "mask-composite", + "mask-image", + "mask-mode", + "mask-origin", + "mask-position", + "mask-repeat", + "mask-size", + "mask-type", + "max-block-size", + "max-height", + "max-inline-size", + "max-width", + "min-block-size", + "min-height", + "min-inline-size", + "min-width", + "mix-blend-mode", + "object-fit", + "object-position", + "offset", + "offset-anchor", + "offset-distance", + "offset-path", + "offset-rotate", + "opacity", + "order", + "orphans", + "outline", + "outline-color", + "outline-offset", + "outline-style", + "outline-width", + "overflow", + "overflow-anchor", + "overflow-block", + "overflow-clip-margin", + "overflow-inline", + "overflow-wrap", + "overflow-x", + "overflow-y", + "overscroll-behavior", + "overscroll-behavior-block", + "overscroll-behavior-inline", + "overscroll-behavior-x", + "overscroll-behavior-y", + "padding", + "padding-block", + "padding-block-end", + "padding-block-start", + "padding-bottom", + "padding-inline", + "padding-inline-end", + "padding-inline-start", + "padding-left", + "padding-right", + "padding-top", + "page", + "page-break-after", + "page-break-before", + "page-break-inside", + "paint-order", + "perspective", + "perspective-origin", + "place-content", + "place-items", + "place-self", + "pointer-events", + "position", + "print-color-adjust", + "quotes", + "resize", + "right", + "rotate", + "row-gap", + "ruby-position", + "scale", + "scroll-behavior", + "scroll-margin", + "scroll-margin-block", + "scroll-margin-block-end", + "scroll-margin-block-start", + "scroll-margin-bottom", + "scroll-margin-inline", + "scroll-margin-inline-end", + "scroll-margin-inline-start", + "scroll-margin-left", + "scroll-margin-right", + "scroll-margin-top", + "scroll-padding", + "scroll-padding-block", + "scroll-padding-block-end", + "scroll-padding-block-start", + "scroll-padding-bottom", + "scroll-padding-inline", + "scroll-padding-inline-end", + "scroll-padding-inline-start", + "scroll-padding-left", + "scroll-padding-right", + "scroll-padding-top", + "scroll-snap-align", + "scroll-snap-stop", + "scroll-snap-type", + "scrollbar-color", + "scrollbar-gutter", + "scrollbar-width", + "shape-image-threshold", + "shape-margin", + "shape-outside", + "size-adjust", + "src", + "tab-size", + "table-layout", + "text-align", + "text-align-last", + "text-combine-upright", + "text-decoration", + "text-decoration-color", + "text-decoration-line", + "text-decoration-skip-ink", + "text-decoration-style", + "text-decoration-thickness", + "text-emphasis", + "text-emphasis-color", + "text-emphasis-position", + "text-emphasis-style", + "text-indent", + "text-justify", + "text-orientation", + "text-overflow", + "text-rendering", + "text-shadow", + "text-transform", + "text-underline-offset", + "text-underline-position", + "top", + "touch-action", + "transform", + "transform-box", + "transform-origin", + "transform-style", + "transition", + "transition-delay", + "transition-duration", + "transition-property", + "transition-timing-function", + "translate", + "unicode-bidi", + "unicode-range", + "user-select", + "vertical-align", + "visibility", + "white-space", + "widows", + "width", + "will-change", + "word-break", + "word-spacing", + "writing-mode", + "z-index" +]; + +var alphabetical = /*#__PURE__*/Object.freeze({ + __proto__: null, + properties: properties$2 +}); + +const properties$1 = [ + "all", + "display", + "position", + "top", + "right", + "bottom", + "left", + "offset", + "offset-anchor", + "offset-distance", + "offset-path", + "offset-rotate", + "grid", + "grid-template-rows", + "grid-template-columns", + "grid-template-areas", + "grid-auto-rows", + "grid-auto-columns", + "grid-auto-flow", + "column-gap", + "row-gap", + "grid-area", + "grid-row", + "grid-row-start", + "grid-row-end", + "grid-column", + "grid-column-start", + "grid-column-end", + "grid-template", + "flex", + "flex-grow", + "flex-shrink", + "flex-basis", + "flex-direction", + "flex-flow", + "flex-wrap", + "box-decoration-break", + "place-content", + "align-content", + "justify-content", + "place-items", + "align-items", + "justify-items", + "place-self", + "align-self", + "justify-self", + "vertical-align", + "order", + "float", + "clear", + "shape-margin", + "shape-outside", + "shape-image-threshold", + "orphans", + "gap", + "columns", + "column-fill", + "column-rule", + "column-rule-width", + "column-rule-style", + "column-rule-color", + "column-width", + "column-span", + "column-count", + "break-before", + "break-after", + "break-inside", + "page", + "page-break-before", + "page-break-after", + "page-break-inside", + "transform", + "transform-box", + "transform-origin", + "transform-style", + "translate", + "rotate", + "scale", + + "perspective", + "perspective-origin", + "appearance", + "visibility", + "content-visibility", + "opacity", + "z-index", + "paint-order", + "mix-blend-mode", + "backface-visibility", + "backdrop-filter", + "clip-path", + "mask", + "mask-border", + "mask-border-outset", + "mask-border-repeat", + "mask-border-slice", + "mask-border-source", + "mask-border-width", + "mask-image", + "mask-mode", + "mask-position", + "mask-size", + "mask-repeat", + "mask-origin", + "mask-clip", + "mask-composite", + "mask-type", + "filter", + "animation", + "animation-duration", + "animation-timing-function", + "animation-delay", + "animation-iteration-count", + "animation-direction", + "animation-fill-mode", + "animation-play-state", + "animation-name", + "transition", + "transition-delay", + "transition-duration", + "transition-property", + "transition-timing-function", + "will-change", + "counter-increment", + "counter-reset", + "counter-set", + "cursor", + + "box-sizing", + "contain", + "contain-intrinsic-height", + "contain-intrinsic-size", + "contain-intrinsic-width", + "container", + "container-name", + "container-type", + "margin", + "margin-top", + "margin-right", + "margin-bottom", + "margin-left", + "margin-inline", + "margin-inline-start", + "margin-inline-end", + "margin-block", + "margin-block-start", + "margin-block-end", + "inset", + "inset-block", + "inset-block-end", + "inset-block-start", + "inset-inline", + "inset-inline-end", + "inset-inline-start", + "outline", + "outline-color", + "outline-style", + "outline-width", + "outline-offset", + "box-shadow", + "border", + "border-top", + "border-right", + "border-bottom", + "border-left", + "border-width", + "border-top-width", + "border-right-width", + "border-bottom-width", + "border-left-width", + "border-style", + "border-top-style", + "border-right-style", + "border-bottom-style", + "border-left-style", + "border-color", + "border-top-color", + "border-right-color", + "border-bottom-color", + "border-left-color", + "border-radius", + "border-top-right-radius", + "border-top-left-radius", + "border-bottom-right-radius", + "border-bottom-left-radius", + "border-inline", + "border-inline-width", + "border-inline-style", + "border-inline-color", + "border-inline-start", + "border-inline-start-width", + "border-inline-start-style", + "border-inline-start-color", + "border-inline-end", + "border-inline-end-width", + "border-inline-end-style", + "border-inline-end-color", + "border-block", + "border-block-width", + "border-block-style", + "border-block-color", + "border-block-start", + "border-block-start-width", + "border-block-start-style", + "border-block-start-color", + "border-block-end", + "border-block-end-width", + "border-block-end-style", + "border-block-end-color", + "border-image", + "border-image-source", + "border-image-slice", + "border-image-width", + "border-image-outset", + "border-image-repeat", + "border-collapse", + "border-spacing", + "border-start-start-radius", + "border-start-end-radius", + "border-end-start-radius", + "border-end-end-radius", + "background", + "background-image", + "background-position", + "background-size", + "background-repeat", + "background-origin", + "background-clip", + "background-attachment", + "background-color", + "background-blend-mode", + "background-position-x", + "background-position-y", + "isolation", + "padding", + "padding-top", + "padding-right", + "padding-bottom", + "padding-left", + "padding-inline", + "padding-inline-start", + "padding-inline-end", + "padding-block", + "padding-block-start", + "padding-block-end", + "image-orientation", + "image-rendering", + + "aspect-ratio", + "width", + "min-width", + "max-width", + "height", + "min-height", + "max-height", + "-webkit-line-clamp", + "-webkit-text-fill-color", + "-webkit-text-stroke", + "-webkit-text-stroke-color", + "-webkit-text-stroke-width", + "inline-size", + "min-inline-size", + "max-inline-size", + "block-size", + "min-block-size", + "max-block-size", + "table-layout", + "caption-side", + "empty-cells", + "overflow", + "overflow-anchor", + "overflow-block", + "overflow-clip-margin", + "overflow-inline", + "overflow-x", + "overflow-y", + "overscroll-behavior", + "overscroll-behavior-block", + "overscroll-behavior-inline", + "overscroll-behavior-x", + "overscroll-behavior-y", + "resize", + "object-fit", + "object-position", + "scroll-behavior", + "scroll-margin", + "scroll-margin-block", + "scroll-margin-block-end", + "scroll-margin-block-start", + "scroll-margin-bottom", + "scroll-margin-inline", + "scroll-margin-inline-end", + "scroll-margin-inline-start", + "scroll-margin-left", + "scroll-margin-right", + "scroll-margin-top", + "scroll-padding", + "scroll-padding-block", + "scroll-padding-block-end", + "scroll-padding-block-start", + "scroll-padding-bottom", + "scroll-padding-inline", + "scroll-padding-inline-end", + "scroll-padding-inline-start", + "scroll-padding-left", + "scroll-padding-right", + "scroll-padding-top", + "scroll-snap-align", + "scroll-snap-stop", + "scroll-snap-type", + "scrollbar-color", + "scrollbar-gutter", + "scrollbar-width", + "touch-action", + "pointer-events", + + "content", + "quotes", + "hanging-punctuation", + "color", + "accent-color", + "print-color-adjust", + "forced-color-adjust", + "color-scheme", + "caret-color", + "font", + "font-style", + "font-variant", + "font-weight", + "font-stretch", + "font-size", + "size-adjust", + "line-height", + "src", + "font-family", + "font-display", + "font-kerning", + "font-language-override", + "font-optical-sizing", + "font-palette", + "font-size-adjust", + "font-synthesis", + "font-variant-alternates", + "font-variant-caps", + "font-variant-east-asian", + "font-variant-emoji", + "font-variant-ligatures", + "font-variant-numeric", + "font-variant-position", + "font-variation-settings", + "ascent-override", + "descent-override", + "line-gap-override", + "hyphens", + "hyphenate-character", + "letter-spacing", + "line-break", + "list-style", + "list-style-type", + "list-style-image", + "list-style-position", + "writing-mode", + "direction", + "unicode-bidi", + "unicode-range", + "user-select", + "ruby-position", + "text-combine-upright", + "text-align", + "text-align-last", + "text-decoration", + "text-decoration-line", + "text-decoration-style", + "text-decoration-color", + "text-decoration-thickness", + "text-decoration-skip-ink", + "text-emphasis", + "text-emphasis-style", + "text-emphasis-color", + "text-emphasis-position", + "text-indent", + "text-justify", + "text-underline-position", + "text-underline-offset", + "text-orientation", + "text-overflow", + "text-rendering", + "text-shadow", + "text-transform", + "white-space", + "word-break", + "word-spacing", + "overflow-wrap", + "tab-size", + "widows" +]; + +var concentricCss = /*#__PURE__*/Object.freeze({ + __proto__: null, + properties: properties$1 +}); + +const properties = [ + "all", + "box-sizing", + "contain", + "contain-intrinsic-height", + "contain-intrinsic-size", + "contain-intrinsic-width", + "container", + "container-name", + "container-type", + "display", + "appearance", + "visibility", + "content-visibility", + "z-index", + "paint-order", + "position", + "top", + "right", + "bottom", + "left", + "offset", + "offset-anchor", + "offset-distance", + "offset-path", + "offset-rotate", + + + "grid", + "grid-template-rows", + "grid-template-columns", + "grid-template-areas", + "grid-auto-rows", + "grid-auto-columns", + "grid-auto-flow", + "column-gap", + "row-gap", + "grid-area", + "grid-row", + "grid-row-start", + "grid-row-end", + "grid-column", + "grid-column-start", + "grid-column-end", + "grid-template", + "flex", + "flex-grow", + "flex-shrink", + "flex-basis", + "flex-direction", + "flex-flow", + "flex-wrap", + "box-decoration-break", + "place-content", + "place-items", + "place-self", + "align-content", + "align-items", + "align-self", + "justify-content", + "justify-items", + "justify-self", + "order", + "aspect-ratio", + "width", + "min-width", + "max-width", + "height", + "min-height", + "max-height", + "-webkit-line-clamp", + "-webkit-text-fill-color", + "-webkit-text-stroke", + "-webkit-text-stroke-color", + "-webkit-text-stroke-width", + "inline-size", + "min-inline-size", + "max-inline-size", + "block-size", + "min-block-size", + "max-block-size", + "margin", + "margin-top", + "margin-right", + "margin-bottom", + "margin-left", + "margin-inline", + "margin-inline-start", + "margin-inline-end", + "margin-block", + "margin-block-start", + "margin-block-end", + "inset", + "inset-block", + "inset-block-end", + "inset-block-start", + "inset-inline", + "inset-inline-end", + "inset-inline-start", + "padding", + "padding-top", + "padding-right", + "padding-bottom", + "padding-left", + "padding-inline", + "padding-inline-start", + "padding-inline-end", + "padding-block", + "padding-block-start", + "padding-block-end", + "float", + "clear", + "overflow", + "overflow-anchor", + "overflow-block", + "overflow-clip-margin", + "overflow-inline", + "overflow-x", + "overflow-y", + "overscroll-behavior", + "overscroll-behavior-block", + "overscroll-behavior-inline", + "overscroll-behavior-x", + "overscroll-behavior-y", + "orphans", + "gap", + "columns", + "column-fill", + "column-rule", + "column-rule-color", + "column-rule-style", + "column-rule-width", + "column-span", + "column-count", + "column-width", + "object-fit", + "object-position", + "transform", + "transform-box", + "transform-origin", + "transform-style", + "translate", + "rotate", + "scale", + + "border", + "border-top", + "border-right", + "border-bottom", + "border-left", + "border-width", + "border-top-width", + "border-right-width", + "border-bottom-width", + "border-left-width", + "border-style", + "border-top-style", + "border-right-style", + "border-bottom-style", + "border-left-style", + "border-radius", + "border-top-right-radius", + "border-top-left-radius", + "border-bottom-right-radius", + "border-bottom-left-radius", + "border-inline", + "border-inline-color", + "border-inline-style", + "border-inline-width", + "border-inline-start", + "border-inline-start-color", + "border-inline-start-style", + "border-inline-start-width", + "border-inline-end", + "border-inline-end-color", + "border-inline-end-style", + "border-inline-end-width", + "border-block", + "border-block-color", + "border-block-style", + "border-block-width", + "border-block-start", + "border-block-start-color", + "border-block-start-style", + "border-block-start-width", + "border-block-end", + "border-block-end-color", + "border-block-end-style", + "border-block-end-width", + "border-color", + "border-image", + "border-image-outset", + "border-image-repeat", + "border-image-slice", + "border-image-source", + "border-image-width", + "border-top-color", + "border-right-color", + "border-bottom-color", + "border-left-color", + "border-collapse", + "border-spacing", + "border-start-start-radius", + "border-start-end-radius", + "border-end-start-radius", + "border-end-end-radius", + "outline", + "outline-color", + "outline-style", + "outline-width", + "outline-offset", + + "backdrop-filter", + "backface-visibility", + "background", + "background-image", + "background-position", + "background-size", + "background-repeat", + "background-origin", + "background-clip", + "background-attachment", + "background-color", + "background-blend-mode", + "background-position-x", + "background-position-y", + "box-shadow", + "isolation", + + "content", + "quotes", + "hanging-punctuation", + "color", + "accent-color", + "print-color-adjust", + "forced-color-adjust", + "color-scheme", + "caret-color", + "font", + "font-style", + "font-variant", + "font-weight", + "src", + "font-stretch", + "font-size", + "size-adjust", + "line-height", + "font-family", + "font-display", + "font-kerning", + "font-language-override", + "font-optical-sizing", + "font-palette", + "font-size-adjust", + "font-synthesis", + "font-variant-alternates", + "font-variant-caps", + "font-variant-east-asian", + "font-variant-emoji", + "font-variant-ligatures", + "font-variant-numeric", + "font-variant-position", + "font-variation-settings", + "ascent-override", + "descent-override", + "line-gap-override", + "hyphens", + "hyphenate-character", + "letter-spacing", + "line-break", + "list-style", + "list-style-image", + "list-style-position", + "list-style-type", + "direction", + "text-align", + "text-align-last", + "text-decoration", + "text-decoration-line", + "text-decoration-style", + "text-decoration-color", + "text-decoration-thickness", + "text-decoration-skip-ink", + "text-emphasis", + "text-emphasis-style", + "text-emphasis-color", + "text-emphasis-position", + "text-indent", + "text-justify", + "text-underline-position", + "text-underline-offset", + "text-orientation", + "text-overflow", + "text-rendering", + "text-shadow", + "text-transform", + "vertical-align", + "white-space", + "word-break", + "word-spacing", + "overflow-wrap", + + "animation", + "animation-duration", + "animation-timing-function", + "animation-delay", + "animation-iteration-count", + "animation-direction", + "animation-fill-mode", + "animation-play-state", + "animation-name", + "mix-blend-mode", + "break-before", + "break-after", + "break-inside", + "page", + "page-break-before", + "page-break-after", + "page-break-inside", + "caption-side", + "clip-path", + "counter-increment", + "counter-reset", + "counter-set", + "cursor", + "empty-cells", + "filter", + "image-orientation", + "image-rendering", + "mask", + "mask-border", + "mask-border-outset", + "mask-border-repeat", + "mask-border-slice", + "mask-border-source", + "mask-border-width", + "mask-clip", + "mask-composite", + "mask-image", + "mask-mode", + "mask-origin", + "mask-position", + "mask-repeat", + "mask-size", + "mask-type", + "opacity", + "perspective", + "perspective-origin", + "pointer-events", + "resize", + "scroll-behavior", + "scroll-margin", + "scroll-margin-block", + "scroll-margin-block-end", + "scroll-margin-block-start", + "scroll-margin-bottom", + "scroll-margin-inline", + "scroll-margin-inline-end", + "scroll-margin-inline-start", + "scroll-margin-left", + "scroll-margin-right", + "scroll-margin-top", + "scroll-padding", + "scroll-padding-block", + "scroll-padding-block-end", + "scroll-padding-block-start", + "scroll-padding-bottom", + "scroll-padding-inline", + "scroll-padding-inline-end", + "scroll-padding-inline-start", + "scroll-padding-left", + "scroll-padding-right", + "scroll-padding-top", + "scroll-snap-align", + "scroll-snap-stop", + "scroll-snap-type", + "scrollbar-color", + "scrollbar-gutter", + "scrollbar-width", + "shape-image-threshold", + "shape-margin", + "shape-outside", + "tab-size", + "table-layout", + "ruby-position", + "text-combine-upright", + "touch-action", + "transition", + "transition-delay", + "transition-duration", + "transition-property", + "transition-timing-function", + "will-change", + "unicode-bidi", + "unicode-range", + "user-select", + "widows", + "writing-mode" +]; + +var smacss = /*#__PURE__*/Object.freeze({ + __proto__: null, + properties: properties +}); + +exports.cssDeclarationSorter = cssDeclarationSorter; +exports.default = cssDeclarationSorter; + +module.exports = cssDeclarationSorter; diff --git a/node_modules/css-declaration-sorter/license.md b/node_modules/css-declaration-sorter/license.md new file mode 100644 index 00000000..295f63f1 --- /dev/null +++ b/node_modules/css-declaration-sorter/license.md @@ -0,0 +1,15 @@ +ISC License + +Copyright (c) + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. diff --git a/node_modules/css-declaration-sorter/orders/alphabetical.mjs b/node_modules/css-declaration-sorter/orders/alphabetical.mjs new file mode 100644 index 00000000..723cd2b0 --- /dev/null +++ b/node_modules/css-declaration-sorter/orders/alphabetical.mjs @@ -0,0 +1,393 @@ +export const properties = [ + "all", + "-webkit-line-clamp", + "-webkit-text-fill-color", + "-webkit-text-stroke", + "-webkit-text-stroke-color", + "-webkit-text-stroke-width", + "accent-color", + "align-content", + "align-items", + "align-self", + "animation", + "animation-delay", + "animation-direction", + "animation-duration", + "animation-fill-mode", + "animation-iteration-count", + "animation-name", + "animation-play-state", + "animation-timing-function", + "appearance", + "ascent-override", + "aspect-ratio", + "backdrop-filter", + "backface-visibility", + "background", + "background-attachment", + "background-blend-mode", + "background-clip", + "background-color", + "background-image", + "background-origin", + "background-position", + "background-position-x", + "background-position-y", + "background-repeat", + "background-size", + "block-size", + "border", + "border-block", + "border-block-color", + "border-block-end", + "border-block-end-color", + "border-block-end-style", + "border-block-end-width", + "border-block-start", + "border-block-start-color", + "border-block-start-style", + "border-block-start-width", + "border-block-style", + "border-block-width", + "border-bottom", + "border-bottom-color", + "border-bottom-left-radius", + "border-bottom-right-radius", + "border-bottom-style", + "border-bottom-width", + "border-collapse", + "border-color", + "border-end-end-radius", + "border-end-start-radius", + "border-image", + "border-image-outset", + "border-image-repeat", + "border-image-slice", + "border-image-source", + "border-image-width", + "border-inline", + "border-inline-color", + "border-inline-end", + "border-inline-end-color", + "border-inline-end-style", + "border-inline-end-width", + "border-inline-start", + "border-inline-start-color", + "border-inline-start-style", + "border-inline-start-width", + "border-inline-style", + "border-inline-width", + "border-left", + "border-left-color", + "border-left-style", + "border-left-width", + "border-radius", + "border-right", + "border-right-color", + "border-right-style", + "border-right-width", + "border-spacing", + "border-start-end-radius", + "border-start-start-radius", + "border-style", + "border-top", + "border-top-color", + "border-top-left-radius", + "border-top-right-radius", + "border-top-style", + "border-top-width", + "border-width", + "bottom", + "box-decoration-break", + "box-shadow", + "box-sizing", + "break-after", + "break-before", + "break-inside", + "caption-side", + "caret-color", + "clear", + "clip-path", + "color", + "color-scheme", + "column-count", + "column-fill", + "column-gap", + "column-rule", + "column-rule-color", + "column-rule-style", + "column-rule-width", + "column-span", + "column-width", + "columns", + "contain", + "contain-intrinsic-height", + "contain-intrinsic-size", + "contain-intrinsic-width", + "container", + "container-name", + "container-type", + "content", + "content-visibility", + "counter-increment", + "counter-reset", + "counter-set", + "cursor", + "descent-override", + "direction", + "display", + "empty-cells", + "filter", + "flex", + "flex-basis", + "flex-direction", + "flex-flow", + "flex-grow", + "flex-shrink", + "flex-wrap", + "float", + "font", + "font-display", + "font-family", + "font-kerning", + "font-language-override", + "font-optical-sizing", + "font-palette", + "font-size", + "font-size-adjust", + "font-stretch", + "font-style", + "font-synthesis", + "font-variant", + "font-variant-alternates", + "font-variant-caps", + "font-variant-east-asian", + "font-variant-emoji", + "font-variant-ligatures", + "font-variant-numeric", + "font-variant-position", + "font-variation-settings", + "font-weight", + "forced-color-adjust", + "gap", + "grid", + "grid-area", + "grid-auto-columns", + "grid-auto-flow", + "grid-auto-rows", + "grid-column", + "grid-column-end", + "grid-column-start", + "grid-row", + "grid-row-end", + "grid-row-start", + "grid-template", + "grid-template-areas", + "grid-template-columns", + "grid-template-rows", + "hanging-punctuation", + "height", + "hyphenate-character", + "hyphens", + "image-orientation", + "image-rendering", + "inline-size", + "inset", + "inset-block", + "inset-block-end", + "inset-block-start", + "inset-inline", + "inset-inline-end", + "inset-inline-start", + "isolation", + "justify-content", + "justify-items", + "justify-self", + "left", + "letter-spacing", + "line-break", + "line-gap-override", + "line-height", + "list-style", + "list-style-image", + "list-style-position", + "list-style-type", + "margin", + "margin-block", + "margin-block-end", + "margin-block-start", + "margin-bottom", + "margin-inline", + "margin-inline-end", + "margin-inline-start", + "margin-left", + "margin-right", + "margin-top", + "mask", + "mask-border", + "mask-border-outset", + "mask-border-repeat", + "mask-border-slice", + "mask-border-source", + "mask-border-width", + "mask-clip", + "mask-composite", + "mask-image", + "mask-mode", + "mask-origin", + "mask-position", + "mask-repeat", + "mask-size", + "mask-type", + "max-block-size", + "max-height", + "max-inline-size", + "max-width", + "min-block-size", + "min-height", + "min-inline-size", + "min-width", + "mix-blend-mode", + "object-fit", + "object-position", + "offset", + "offset-anchor", + "offset-distance", + "offset-path", + "offset-rotate", + "opacity", + "order", + "orphans", + "outline", + "outline-color", + "outline-offset", + "outline-style", + "outline-width", + "overflow", + "overflow-anchor", + "overflow-block", + "overflow-clip-margin", + "overflow-inline", + "overflow-wrap", + "overflow-x", + "overflow-y", + "overscroll-behavior", + "overscroll-behavior-block", + "overscroll-behavior-inline", + "overscroll-behavior-x", + "overscroll-behavior-y", + "padding", + "padding-block", + "padding-block-end", + "padding-block-start", + "padding-bottom", + "padding-inline", + "padding-inline-end", + "padding-inline-start", + "padding-left", + "padding-right", + "padding-top", + "page", + "page-break-after", + "page-break-before", + "page-break-inside", + "paint-order", + "perspective", + "perspective-origin", + "place-content", + "place-items", + "place-self", + "pointer-events", + "position", + "print-color-adjust", + "quotes", + "resize", + "right", + "rotate", + "row-gap", + "ruby-position", + "scale", + "scroll-behavior", + "scroll-margin", + "scroll-margin-block", + "scroll-margin-block-end", + "scroll-margin-block-start", + "scroll-margin-bottom", + "scroll-margin-inline", + "scroll-margin-inline-end", + "scroll-margin-inline-start", + "scroll-margin-left", + "scroll-margin-right", + "scroll-margin-top", + "scroll-padding", + "scroll-padding-block", + "scroll-padding-block-end", + "scroll-padding-block-start", + "scroll-padding-bottom", + "scroll-padding-inline", + "scroll-padding-inline-end", + "scroll-padding-inline-start", + "scroll-padding-left", + "scroll-padding-right", + "scroll-padding-top", + "scroll-snap-align", + "scroll-snap-stop", + "scroll-snap-type", + "scrollbar-color", + "scrollbar-gutter", + "scrollbar-width", + "shape-image-threshold", + "shape-margin", + "shape-outside", + "size-adjust", + "src", + "tab-size", + "table-layout", + "text-align", + "text-align-last", + "text-combine-upright", + "text-decoration", + "text-decoration-color", + "text-decoration-line", + "text-decoration-skip-ink", + "text-decoration-style", + "text-decoration-thickness", + "text-emphasis", + "text-emphasis-color", + "text-emphasis-position", + "text-emphasis-style", + "text-indent", + "text-justify", + "text-orientation", + "text-overflow", + "text-rendering", + "text-shadow", + "text-transform", + "text-underline-offset", + "text-underline-position", + "top", + "touch-action", + "transform", + "transform-box", + "transform-origin", + "transform-style", + "transition", + "transition-delay", + "transition-duration", + "transition-property", + "transition-timing-function", + "translate", + "unicode-bidi", + "unicode-range", + "user-select", + "vertical-align", + "visibility", + "white-space", + "widows", + "width", + "will-change", + "word-break", + "word-spacing", + "writing-mode", + "z-index" +] diff --git a/node_modules/css-declaration-sorter/orders/concentric-css.mjs b/node_modules/css-declaration-sorter/orders/concentric-css.mjs new file mode 100644 index 00000000..a002b753 --- /dev/null +++ b/node_modules/css-declaration-sorter/orders/concentric-css.mjs @@ -0,0 +1,397 @@ +export const properties = [ + "all", + "display", + "position", + "top", + "right", + "bottom", + "left", + "offset", + "offset-anchor", + "offset-distance", + "offset-path", + "offset-rotate", + "grid", + "grid-template-rows", + "grid-template-columns", + "grid-template-areas", + "grid-auto-rows", + "grid-auto-columns", + "grid-auto-flow", + "column-gap", + "row-gap", + "grid-area", + "grid-row", + "grid-row-start", + "grid-row-end", + "grid-column", + "grid-column-start", + "grid-column-end", + "grid-template", + "flex", + "flex-grow", + "flex-shrink", + "flex-basis", + "flex-direction", + "flex-flow", + "flex-wrap", + "box-decoration-break", + "place-content", + "align-content", + "justify-content", + "place-items", + "align-items", + "justify-items", + "place-self", + "align-self", + "justify-self", + "vertical-align", + "order", + "float", + "clear", + "shape-margin", + "shape-outside", + "shape-image-threshold", + "orphans", + "gap", + "columns", + "column-fill", + "column-rule", + "column-rule-width", + "column-rule-style", + "column-rule-color", + "column-width", + "column-span", + "column-count", + "break-before", + "break-after", + "break-inside", + "page", + "page-break-before", + "page-break-after", + "page-break-inside", + "transform", + "transform-box", + "transform-origin", + "transform-style", + "translate", + "rotate", + "scale", + + "perspective", + "perspective-origin", + "appearance", + "visibility", + "content-visibility", + "opacity", + "z-index", + "paint-order", + "mix-blend-mode", + "backface-visibility", + "backdrop-filter", + "clip-path", + "mask", + "mask-border", + "mask-border-outset", + "mask-border-repeat", + "mask-border-slice", + "mask-border-source", + "mask-border-width", + "mask-image", + "mask-mode", + "mask-position", + "mask-size", + "mask-repeat", + "mask-origin", + "mask-clip", + "mask-composite", + "mask-type", + "filter", + "animation", + "animation-duration", + "animation-timing-function", + "animation-delay", + "animation-iteration-count", + "animation-direction", + "animation-fill-mode", + "animation-play-state", + "animation-name", + "transition", + "transition-delay", + "transition-duration", + "transition-property", + "transition-timing-function", + "will-change", + "counter-increment", + "counter-reset", + "counter-set", + "cursor", + + "box-sizing", + "contain", + "contain-intrinsic-height", + "contain-intrinsic-size", + "contain-intrinsic-width", + "container", + "container-name", + "container-type", + "margin", + "margin-top", + "margin-right", + "margin-bottom", + "margin-left", + "margin-inline", + "margin-inline-start", + "margin-inline-end", + "margin-block", + "margin-block-start", + "margin-block-end", + "inset", + "inset-block", + "inset-block-end", + "inset-block-start", + "inset-inline", + "inset-inline-end", + "inset-inline-start", + "outline", + "outline-color", + "outline-style", + "outline-width", + "outline-offset", + "box-shadow", + "border", + "border-top", + "border-right", + "border-bottom", + "border-left", + "border-width", + "border-top-width", + "border-right-width", + "border-bottom-width", + "border-left-width", + "border-style", + "border-top-style", + "border-right-style", + "border-bottom-style", + "border-left-style", + "border-color", + "border-top-color", + "border-right-color", + "border-bottom-color", + "border-left-color", + "border-radius", + "border-top-right-radius", + "border-top-left-radius", + "border-bottom-right-radius", + "border-bottom-left-radius", + "border-inline", + "border-inline-width", + "border-inline-style", + "border-inline-color", + "border-inline-start", + "border-inline-start-width", + "border-inline-start-style", + "border-inline-start-color", + "border-inline-end", + "border-inline-end-width", + "border-inline-end-style", + "border-inline-end-color", + "border-block", + "border-block-width", + "border-block-style", + "border-block-color", + "border-block-start", + "border-block-start-width", + "border-block-start-style", + "border-block-start-color", + "border-block-end", + "border-block-end-width", + "border-block-end-style", + "border-block-end-color", + "border-image", + "border-image-source", + "border-image-slice", + "border-image-width", + "border-image-outset", + "border-image-repeat", + "border-collapse", + "border-spacing", + "border-start-start-radius", + "border-start-end-radius", + "border-end-start-radius", + "border-end-end-radius", + "background", + "background-image", + "background-position", + "background-size", + "background-repeat", + "background-origin", + "background-clip", + "background-attachment", + "background-color", + "background-blend-mode", + "background-position-x", + "background-position-y", + "isolation", + "padding", + "padding-top", + "padding-right", + "padding-bottom", + "padding-left", + "padding-inline", + "padding-inline-start", + "padding-inline-end", + "padding-block", + "padding-block-start", + "padding-block-end", + "image-orientation", + "image-rendering", + + "aspect-ratio", + "width", + "min-width", + "max-width", + "height", + "min-height", + "max-height", + "-webkit-line-clamp", + "-webkit-text-fill-color", + "-webkit-text-stroke", + "-webkit-text-stroke-color", + "-webkit-text-stroke-width", + "inline-size", + "min-inline-size", + "max-inline-size", + "block-size", + "min-block-size", + "max-block-size", + "table-layout", + "caption-side", + "empty-cells", + "overflow", + "overflow-anchor", + "overflow-block", + "overflow-clip-margin", + "overflow-inline", + "overflow-x", + "overflow-y", + "overscroll-behavior", + "overscroll-behavior-block", + "overscroll-behavior-inline", + "overscroll-behavior-x", + "overscroll-behavior-y", + "resize", + "object-fit", + "object-position", + "scroll-behavior", + "scroll-margin", + "scroll-margin-block", + "scroll-margin-block-end", + "scroll-margin-block-start", + "scroll-margin-bottom", + "scroll-margin-inline", + "scroll-margin-inline-end", + "scroll-margin-inline-start", + "scroll-margin-left", + "scroll-margin-right", + "scroll-margin-top", + "scroll-padding", + "scroll-padding-block", + "scroll-padding-block-end", + "scroll-padding-block-start", + "scroll-padding-bottom", + "scroll-padding-inline", + "scroll-padding-inline-end", + "scroll-padding-inline-start", + "scroll-padding-left", + "scroll-padding-right", + "scroll-padding-top", + "scroll-snap-align", + "scroll-snap-stop", + "scroll-snap-type", + "scrollbar-color", + "scrollbar-gutter", + "scrollbar-width", + "touch-action", + "pointer-events", + + "content", + "quotes", + "hanging-punctuation", + "color", + "accent-color", + "print-color-adjust", + "forced-color-adjust", + "color-scheme", + "caret-color", + "font", + "font-style", + "font-variant", + "font-weight", + "font-stretch", + "font-size", + "size-adjust", + "line-height", + "src", + "font-family", + "font-display", + "font-kerning", + "font-language-override", + "font-optical-sizing", + "font-palette", + "font-size-adjust", + "font-synthesis", + "font-variant-alternates", + "font-variant-caps", + "font-variant-east-asian", + "font-variant-emoji", + "font-variant-ligatures", + "font-variant-numeric", + "font-variant-position", + "font-variation-settings", + "ascent-override", + "descent-override", + "line-gap-override", + "hyphens", + "hyphenate-character", + "letter-spacing", + "line-break", + "list-style", + "list-style-type", + "list-style-image", + "list-style-position", + "writing-mode", + "direction", + "unicode-bidi", + "unicode-range", + "user-select", + "ruby-position", + "text-combine-upright", + "text-align", + "text-align-last", + "text-decoration", + "text-decoration-line", + "text-decoration-style", + "text-decoration-color", + "text-decoration-thickness", + "text-decoration-skip-ink", + "text-emphasis", + "text-emphasis-style", + "text-emphasis-color", + "text-emphasis-position", + "text-indent", + "text-justify", + "text-underline-position", + "text-underline-offset", + "text-orientation", + "text-overflow", + "text-rendering", + "text-shadow", + "text-transform", + "white-space", + "word-break", + "word-spacing", + "overflow-wrap", + "tab-size", + "widows" +] diff --git a/node_modules/css-declaration-sorter/orders/smacss.mjs b/node_modules/css-declaration-sorter/orders/smacss.mjs new file mode 100644 index 00000000..919db4ed --- /dev/null +++ b/node_modules/css-declaration-sorter/orders/smacss.mjs @@ -0,0 +1,399 @@ +export const properties = [ + "all", + "box-sizing", + "contain", + "contain-intrinsic-height", + "contain-intrinsic-size", + "contain-intrinsic-width", + "container", + "container-name", + "container-type", + "display", + "appearance", + "visibility", + "content-visibility", + "z-index", + "paint-order", + "position", + "top", + "right", + "bottom", + "left", + "offset", + "offset-anchor", + "offset-distance", + "offset-path", + "offset-rotate", + + + "grid", + "grid-template-rows", + "grid-template-columns", + "grid-template-areas", + "grid-auto-rows", + "grid-auto-columns", + "grid-auto-flow", + "column-gap", + "row-gap", + "grid-area", + "grid-row", + "grid-row-start", + "grid-row-end", + "grid-column", + "grid-column-start", + "grid-column-end", + "grid-template", + "flex", + "flex-grow", + "flex-shrink", + "flex-basis", + "flex-direction", + "flex-flow", + "flex-wrap", + "box-decoration-break", + "place-content", + "place-items", + "place-self", + "align-content", + "align-items", + "align-self", + "justify-content", + "justify-items", + "justify-self", + "order", + "aspect-ratio", + "width", + "min-width", + "max-width", + "height", + "min-height", + "max-height", + "-webkit-line-clamp", + "-webkit-text-fill-color", + "-webkit-text-stroke", + "-webkit-text-stroke-color", + "-webkit-text-stroke-width", + "inline-size", + "min-inline-size", + "max-inline-size", + "block-size", + "min-block-size", + "max-block-size", + "margin", + "margin-top", + "margin-right", + "margin-bottom", + "margin-left", + "margin-inline", + "margin-inline-start", + "margin-inline-end", + "margin-block", + "margin-block-start", + "margin-block-end", + "inset", + "inset-block", + "inset-block-end", + "inset-block-start", + "inset-inline", + "inset-inline-end", + "inset-inline-start", + "padding", + "padding-top", + "padding-right", + "padding-bottom", + "padding-left", + "padding-inline", + "padding-inline-start", + "padding-inline-end", + "padding-block", + "padding-block-start", + "padding-block-end", + "float", + "clear", + "overflow", + "overflow-anchor", + "overflow-block", + "overflow-clip-margin", + "overflow-inline", + "overflow-x", + "overflow-y", + "overscroll-behavior", + "overscroll-behavior-block", + "overscroll-behavior-inline", + "overscroll-behavior-x", + "overscroll-behavior-y", + "orphans", + "gap", + "columns", + "column-fill", + "column-rule", + "column-rule-color", + "column-rule-style", + "column-rule-width", + "column-span", + "column-count", + "column-width", + "object-fit", + "object-position", + "transform", + "transform-box", + "transform-origin", + "transform-style", + "translate", + "rotate", + "scale", + + "border", + "border-top", + "border-right", + "border-bottom", + "border-left", + "border-width", + "border-top-width", + "border-right-width", + "border-bottom-width", + "border-left-width", + "border-style", + "border-top-style", + "border-right-style", + "border-bottom-style", + "border-left-style", + "border-radius", + "border-top-right-radius", + "border-top-left-radius", + "border-bottom-right-radius", + "border-bottom-left-radius", + "border-inline", + "border-inline-color", + "border-inline-style", + "border-inline-width", + "border-inline-start", + "border-inline-start-color", + "border-inline-start-style", + "border-inline-start-width", + "border-inline-end", + "border-inline-end-color", + "border-inline-end-style", + "border-inline-end-width", + "border-block", + "border-block-color", + "border-block-style", + "border-block-width", + "border-block-start", + "border-block-start-color", + "border-block-start-style", + "border-block-start-width", + "border-block-end", + "border-block-end-color", + "border-block-end-style", + "border-block-end-width", + "border-color", + "border-image", + "border-image-outset", + "border-image-repeat", + "border-image-slice", + "border-image-source", + "border-image-width", + "border-top-color", + "border-right-color", + "border-bottom-color", + "border-left-color", + "border-collapse", + "border-spacing", + "border-start-start-radius", + "border-start-end-radius", + "border-end-start-radius", + "border-end-end-radius", + "outline", + "outline-color", + "outline-style", + "outline-width", + "outline-offset", + + "backdrop-filter", + "backface-visibility", + "background", + "background-image", + "background-position", + "background-size", + "background-repeat", + "background-origin", + "background-clip", + "background-attachment", + "background-color", + "background-blend-mode", + "background-position-x", + "background-position-y", + "box-shadow", + "isolation", + + "content", + "quotes", + "hanging-punctuation", + "color", + "accent-color", + "print-color-adjust", + "forced-color-adjust", + "color-scheme", + "caret-color", + "font", + "font-style", + "font-variant", + "font-weight", + "src", + "font-stretch", + "font-size", + "size-adjust", + "line-height", + "font-family", + "font-display", + "font-kerning", + "font-language-override", + "font-optical-sizing", + "font-palette", + "font-size-adjust", + "font-synthesis", + "font-variant-alternates", + "font-variant-caps", + "font-variant-east-asian", + "font-variant-emoji", + "font-variant-ligatures", + "font-variant-numeric", + "font-variant-position", + "font-variation-settings", + "ascent-override", + "descent-override", + "line-gap-override", + "hyphens", + "hyphenate-character", + "letter-spacing", + "line-break", + "list-style", + "list-style-image", + "list-style-position", + "list-style-type", + "direction", + "text-align", + "text-align-last", + "text-decoration", + "text-decoration-line", + "text-decoration-style", + "text-decoration-color", + "text-decoration-thickness", + "text-decoration-skip-ink", + "text-emphasis", + "text-emphasis-style", + "text-emphasis-color", + "text-emphasis-position", + "text-indent", + "text-justify", + "text-underline-position", + "text-underline-offset", + "text-orientation", + "text-overflow", + "text-rendering", + "text-shadow", + "text-transform", + "vertical-align", + "white-space", + "word-break", + "word-spacing", + "overflow-wrap", + + "animation", + "animation-duration", + "animation-timing-function", + "animation-delay", + "animation-iteration-count", + "animation-direction", + "animation-fill-mode", + "animation-play-state", + "animation-name", + "mix-blend-mode", + "break-before", + "break-after", + "break-inside", + "page", + "page-break-before", + "page-break-after", + "page-break-inside", + "caption-side", + "clip-path", + "counter-increment", + "counter-reset", + "counter-set", + "cursor", + "empty-cells", + "filter", + "image-orientation", + "image-rendering", + "mask", + "mask-border", + "mask-border-outset", + "mask-border-repeat", + "mask-border-slice", + "mask-border-source", + "mask-border-width", + "mask-clip", + "mask-composite", + "mask-image", + "mask-mode", + "mask-origin", + "mask-position", + "mask-repeat", + "mask-size", + "mask-type", + "opacity", + "perspective", + "perspective-origin", + "pointer-events", + "resize", + "scroll-behavior", + "scroll-margin", + "scroll-margin-block", + "scroll-margin-block-end", + "scroll-margin-block-start", + "scroll-margin-bottom", + "scroll-margin-inline", + "scroll-margin-inline-end", + "scroll-margin-inline-start", + "scroll-margin-left", + "scroll-margin-right", + "scroll-margin-top", + "scroll-padding", + "scroll-padding-block", + "scroll-padding-block-end", + "scroll-padding-block-start", + "scroll-padding-bottom", + "scroll-padding-inline", + "scroll-padding-inline-end", + "scroll-padding-inline-start", + "scroll-padding-left", + "scroll-padding-right", + "scroll-padding-top", + "scroll-snap-align", + "scroll-snap-stop", + "scroll-snap-type", + "scrollbar-color", + "scrollbar-gutter", + "scrollbar-width", + "shape-image-threshold", + "shape-margin", + "shape-outside", + "tab-size", + "table-layout", + "ruby-position", + "text-combine-upright", + "touch-action", + "transition", + "transition-delay", + "transition-duration", + "transition-property", + "transition-timing-function", + "will-change", + "unicode-bidi", + "unicode-range", + "user-select", + "widows", + "writing-mode" +] diff --git a/node_modules/css-declaration-sorter/package.json b/node_modules/css-declaration-sorter/package.json new file mode 100644 index 00000000..bc952bb5 --- /dev/null +++ b/node_modules/css-declaration-sorter/package.json @@ -0,0 +1,59 @@ +{ + "name": "css-declaration-sorter", + "version": "6.4.1", + "description": "Sorts CSS declarations fast and automatically in a certain order.", + "type": "module", + "main": "./dist/main.cjs", + "exports": { + "import": "./src/main.mjs", + "require": "./dist/main.cjs" + }, + "types": "./src/main.d.ts", + "files": [ + "src/main.mjs", + "src/main.d.ts", + "src/shorthand-data.mjs", + "src/bubble-sort.mjs", + "orders", + "dist" + ], + "scripts": { + "build": "rollup -c", + "preversion": "npm test", + "test": "uvu src .+\\.test\\.mjs", + "test:ci": "npm test && npm run lint -- --max-warnings 0", + "lint": "eslint src/*.mjs", + "scrape": "node --experimental-import-meta-resolve src/property-scraper.mjs", + "prepack": "npm run build" + }, + "devDependencies": { + "@mdn/browser-compat-data": "^5.2.23", + "@rollup/plugin-dynamic-import-vars": "^2.0.2", + "@rollup/plugin-replace": "^5.0.2", + "eslint": "^8.35.0", + "postcss": "^8.4.18", + "rollup": "^3.15.0", + "uvu": "^0.5.6" + }, + "peerDependencies": { + "postcss": "^8.0.9" + }, + "engines": { + "node": "^10 || ^12 || >=14" + }, + "repository": { + "type": "git", + "url": "https://github.com/Siilwyn/css-declaration-sorter.git" + }, + "author": "Selwyn <talk@selwyn.cc> (https://selwyn.cc/)", + "license": "ISC", + "keywords": [ + "postcss", + "postcss-plugin", + "css", + "declaration", + "sorter", + "property", + "order" + ] +} diff --git a/node_modules/css-declaration-sorter/readme.md b/node_modules/css-declaration-sorter/readme.md new file mode 100644 index 00000000..686fd4a4 --- /dev/null +++ b/node_modules/css-declaration-sorter/readme.md @@ -0,0 +1,126 @@ +<img alt='CSS declaration sorter logo' src='https://raw.githubusercontent.com/Siilwyn/css-declaration-sorter/master/logo.svg?sanitize=true' height='260' align='right'> + +# CSS Declaration Sorter +[![npm][npm-badge]][npm] + +A Node.js module and [PostCSS] plugin to sort CSS, SCSS or Less declarations based on their property names. Ensuring styling is organized, more consistent and in order... The goal of this package is to sort the source code of a project in the build process or to decrease the distributed CSS gzipped size. + +Check out [the Prettier plugin](https://github.com/Siilwyn/prettier-plugin-css-order) for usage with a variety of file formats. + +## Niceness +- Up-to-date CSS properties fetched from the [MDN Compatibility Data](https://github.com/mdn/browser-compat-data/) project. +- Choose your wanted order or provide your own. +- Nested rules sorting support. +- SCSS and Less support when combined with either [postcss-scss](https://github.com/postcss/postcss-scss) or [postcss-less](https://github.com/webschik/postcss-less). +- Thought-out sorting orders out of the box, **approved by their authors**. + +## Alphabetical example +Input: +```css +body { + display: block; + animation: none; + color: #C55; + border: 0; +} +``` + +Output: +```css +body { + animation: none; + border: 0; + color: #C55; + display: block; +} +``` + +## Built-in sorting orders +- Alphabetical +`alphabetical` +*Default, order in a simple alphabetical manner from a - z.* + +- [SMACSS](http://smacss.com/book/formatting#grouping) +`smacss` +*Order from most important, flow affecting properties, to least important properties.* + 1. Box + 2. Border + 3. Background + 4. Text + 5. Other + +- [Concentric CSS](https://github.com/brandon-rhodes/Concentric-CSS) +`concentric-css` +*Order properties applying outside the box model, moving inward to intrinsic changes.* + 1. Positioning + 2. Visibility + 3. Box model + 4. Dimensions + 5. Text + +## Usage +Following the PostCSS plugin guidelines, this package depends on PostCSS as a peer dependency: +`npm install postcss css-declaration-sorter --save-dev` + +### CLI +This module does not include its own CLI but works with the official [PostCSS CLI](https://github.com/postcss/postcss-cli). To use the examples below, the `postcss-cli` package is a required dependency. + +Piping out result from file: +`postcss input.css --use css-declaration-sorter | cat` + +Sorting multiple files by overwriting: +`postcss *.css --use css-declaration-sorter --replace --no-map` + +Sorting all files in a directory with SCSS syntax using [postcss-scss](https://github.com/postcss/postcss-scss) by overwriting: +`postcss ./src/**/*.scss --syntax postcss-scss --use css-declaration-sorter --replace --no-map` + +Sorting all files in the directory with SCSS syntax and SMACSS order by overwriting, using `package.json` configuration: +```json +"postcss": { + "syntax": "postcss-scss", + "map": false, + "plugins": { + "css-declaration-sorter": { "order": "smacss" } + } +} +``` + +`postcss ./src/**/*.scss --replace --config package.json` + +### Vanilla JS +```js +import postcss from 'postcss'; +import { cssDeclarationSorter } from 'css-declaration-sorter'; + +postcss([cssDeclarationSorter({ order: 'smacss' })]) + .process('a { color: hyperblue; display: block; }', { from: undefined }) + .then(result => console.log( + result.css === 'a { display: block; color: hyperblue; }' + )); +``` +___ + +**[View more usage examples](/examples) in combination with other tools.** + +___ + +## API +### cssDeclarationSorter({ order, keepOverrides }) + +#### order +Type: `string` or `function` +Default: `alphabetical` +Options: `alphabetical`, `smacss`, `concentric-css` + +Provide the name of one of the built-in sort orders or a comparison function that is passed to ([`Array.sort`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort)). This function receives two declaration names and is expected to return `-1`, `0` or `1` depending on the wanted order. + +#### keepOverrides +Type: `Boolean` +Default: `false` + +To prevent breaking legacy CSS where shorthand declarations override longhand declarations (also taking into account vendor prefixes) this option can enabled. For example `animation-name: some; animation: greeting;` will be kept in this order when `keepOverrides` is `true`. + +[PostCSS]: https://github.com/postcss/postcss + +[npm]: https://www.npmjs.com/package/css-declaration-sorter +[npm-badge]: https://tinyshields.dev/npm/css-declaration-sorter.svg diff --git a/node_modules/css-declaration-sorter/src/bubble-sort.mjs b/node_modules/css-declaration-sorter/src/bubble-sort.mjs new file mode 100644 index 00000000..87803b46 --- /dev/null +++ b/node_modules/css-declaration-sorter/src/bubble-sort.mjs @@ -0,0 +1,20 @@ +export function bubbleSort (list, comparator) { + let upperIndex = list.length - 1; + + while (upperIndex > 0) { + let swapIndex = 0; + + for (let i = 0; i < upperIndex; i += 1) { + if (comparator(list[i], list[i + 1]) > 0) { + const temp = list[i + 1]; + list[i + 1] = list[i]; + list[i] = temp; + swapIndex = i; + } + } + + upperIndex = swapIndex; + } + + return list; +} diff --git a/node_modules/css-declaration-sorter/src/main.d.ts b/node_modules/css-declaration-sorter/src/main.d.ts new file mode 100644 index 00000000..257704b6 --- /dev/null +++ b/node_modules/css-declaration-sorter/src/main.d.ts @@ -0,0 +1,27 @@ +import type { PluginCreator } from 'postcss'; + +declare const cssDeclarationSorter: PluginCreator<{ + /** + Provide the name of one of the built-in sort orders or a comparison function that is passed to `Array.sort`. + + @default 'alphabetical' + */ + order?: SortOrder | SortFunction | undefined; + + /** + To prevent breaking legacy CSS where shorthand declarations override longhand declarations. For example `animation-name: some; animation: greeting;` will be kept in this order. + + @default false + */ + keepOverrides?: boolean; +}>; + +export = cssDeclarationSorter; + +type SortOrder = 'alphabetical' | 'concentric-css' | 'smacss'; + +/** + * This function receives two declaration property names and is expected + * to return -1, 0 or 1 depending on the wanted order. + */ +type SortFunction = (propertyNameA: string, propertyNameB: string) => -1 | 0 | 1; diff --git a/node_modules/css-declaration-sorter/src/main.mjs b/node_modules/css-declaration-sorter/src/main.mjs new file mode 100644 index 00000000..b17cde16 --- /dev/null +++ b/node_modules/css-declaration-sorter/src/main.mjs @@ -0,0 +1,146 @@ +import { shorthandData } from './shorthand-data.mjs'; +import { bubbleSort } from './bubble-sort.mjs'; + +const builtInOrders = [ + 'alphabetical', + 'concentric-css', + 'smacss', +]; + +export const cssDeclarationSorter = ({ order = 'alphabetical', keepOverrides = false } = {}) => ({ + postcssPlugin: 'css-declaration-sorter', + OnceExit (css) { + let withKeepOverrides = comparator => comparator; + if (keepOverrides) { + withKeepOverrides = withOverridesComparator(shorthandData); + } + + if (typeof order === 'function') { + return processCss({ css, comparator: withKeepOverrides(order) }); + } + + if (!builtInOrders.includes(order)) + return Promise.reject( + Error([ + `Invalid built-in order '${order}' provided.`, + `Available built-in orders are: ${builtInOrders}`, + ].join('\n')) + ); + + return import(`../orders/${order}.mjs`) + .then(({ properties }) => processCss({ + css, + comparator: withKeepOverrides(orderComparator(properties)), + })); + }, +}); + +cssDeclarationSorter.postcss = true; + +// Kept for backward compatibility +export default cssDeclarationSorter; + +function processCss ({ css, comparator }) { + const comments = []; + const rulesCache = []; + + css.walk(node => { + const nodes = node.nodes; + const type = node.type; + + if (type === 'comment') { + // Don't do anything to root comments or the last newline comment + const isNewlineNode = node.raws.before && node.raws.before.includes('\n'); + const lastNewlineNode = isNewlineNode && !node.next(); + const onlyNode = !node.prev() && !node.next() || !node.parent; + + if (lastNewlineNode || onlyNode || node.parent.type === 'root') { + return; + } + + if (isNewlineNode) { + const pairedNode = node.next() || node.prev(); + if (pairedNode) { + comments.unshift({ + 'comment': node, + 'pairedNode': pairedNode, + 'insertPosition': node.next() ? 'Before' : 'After', + }); + node.remove(); + } + } else { + const pairedNode = node.prev() || node.next(); + if (pairedNode) { + comments.push({ + 'comment': node, + 'pairedNode': pairedNode, + 'insertPosition': 'After', + }); + node.remove(); + } + } + return; + } + + // Add rule-like nodes to a cache so that we can remove all + // comment nodes before we start sorting. + const isRule = type === 'rule' || type === 'atrule'; + if (isRule && nodes && nodes.length > 1) { + rulesCache.push(nodes); + } + }); + + // Perform a sort once all comment nodes are removed + rulesCache.forEach(nodes => { + sortCssDeclarations({ nodes, comparator }); + }); + + // Add comments back to the nodes they are paired with + comments.forEach(node => { + const pairedNode = node.pairedNode; + node.comment.remove(); + pairedNode.parent && pairedNode.parent['insert' + node.insertPosition](pairedNode, node.comment); + }); +} + +function sortCssDeclarations ({ nodes, comparator }) { + bubbleSort(nodes, (a, b) => { + if (a.type === 'decl' && b.type === 'decl') { + return comparator(a.prop, b.prop); + } else { + return compareDifferentType(a, b); + } + }); +} + +function withOverridesComparator (shorthandData) { + return function (comparator) { + return function (a, b) { + a = removeVendorPrefix(a); + b = removeVendorPrefix(b); + + if (shorthandData[a] && shorthandData[a].includes(b)) return 0; + if (shorthandData[b] && shorthandData[b].includes(a)) return 0; + + return comparator(a, b); + }; + }; +} + +function orderComparator (order) { + return function (a, b) { + return order.indexOf(a) - order.indexOf(b); + }; +} + +function compareDifferentType (a, b) { + if (b.type === 'atrule' || a.type === 'atrule') { + return 0; + } + + return a.type === 'decl' ? -1 : b.type === 'decl' ? 1 : 0; +} + +function removeVendorPrefix (property) { + return property.replace(/^-\w+-/, ''); +} diff --git a/node_modules/css-declaration-sorter/src/shorthand-data.mjs b/node_modules/css-declaration-sorter/src/shorthand-data.mjs new file mode 100644 index 00000000..d79b7376 --- /dev/null +++ b/node_modules/css-declaration-sorter/src/shorthand-data.mjs @@ -0,0 +1,433 @@ +export const shorthandData = { + 'animation': [ + 'animation-name', + 'animation-duration', + 'animation-timing-function', + 'animation-delay', + 'animation-iteration-count', + 'animation-direction', + 'animation-fill-mode', + 'animation-play-state', + ], + 'background': [ + 'background-image', + 'background-size', + 'background-position', + 'background-repeat', + 'background-origin', + 'background-clip', + 'background-attachment', + 'background-color', + ], + 'columns': [ + 'column-width', + 'column-count', + ], + 'column-rule': [ + 'column-rule-width', + 'column-rule-style', + 'column-rule-color', + ], + 'flex': [ + 'flex-grow', + 'flex-shrink', + 'flex-basis', + ], + 'flex-flow': [ + 'flex-direction', + 'flex-wrap', + ], + 'font': [ + 'font-style', + 'font-variant', + 'font-weight', + 'font-stretch', + 'font-size', + 'font-family', + 'line-height', + ], + 'grid': [ + 'grid-template-rows', + 'grid-template-columns', + 'grid-template-areas', + 'grid-auto-rows', + 'grid-auto-columns', + 'grid-auto-flow', + 'column-gap', + 'row-gap', + ], + 'grid-area': [ + 'grid-row-start', + 'grid-column-start', + 'grid-row-end', + 'grid-column-end', + ], + 'grid-column': [ + 'grid-column-start', + 'grid-column-end', + ], + 'grid-row': [ + 'grid-row-start', + 'grid-row-end', + ], + 'grid-template': [ + 'grid-template-columns', + 'grid-template-rows', + 'grid-template-areas', + ], + 'list-style': [ + 'list-style-type', + 'list-style-position', + 'list-style-image', + ], + 'padding': [ + 'padding-block', + 'padding-block-start', + 'padding-block-end', + 'padding-inline', + 'padding-inline-start', + 'padding-inline-end', + 'padding-top', + 'padding-right', + 'padding-bottom', + 'padding-left', + ], + 'padding-block': [ + 'padding-block-start', + 'padding-block-end', + 'padding-top', + 'padding-right', + 'padding-bottom', + 'padding-left', + ], + 'padding-block-start': [ + 'padding-top', + 'padding-right', + 'padding-left', + ], + 'padding-block-end': [ + 'padding-right', + 'padding-bottom', + 'padding-left', + ], + 'padding-inline': [ + 'padding-inline-start', + 'padding-inline-end', + 'padding-top', + 'padding-right', + 'padding-bottom', + 'padding-left', + ], + 'padding-inline-start': [ + 'padding-top', + 'padding-right', + 'padding-left', + ], + 'padding-inline-end': [ + 'padding-right', + 'padding-bottom', + 'padding-left', + ], + 'margin': [ + 'margin-block', + 'margin-block-start', + 'margin-block-end', + 'margin-inline', + 'margin-inline-start', + 'margin-inline-end', + 'margin-top', + 'margin-right', + 'margin-bottom', + 'margin-left', + ], + 'margin-block': [ + 'margin-block-start', + 'margin-block-end', + 'margin-top', + 'margin-right', + 'margin-bottom', + 'margin-left', + ], + 'margin-inline': [ + 'margin-inline-start', + 'margin-inline-end', + 'margin-top', + 'margin-right', + 'margin-bottom', + 'margin-left', + ], + 'margin-inline-start': [ + 'margin-top', + 'margin-right', + 'margin-bottom', + 'margin-left', + ], + 'margin-inline-end': [ + 'margin-top', + 'margin-right', + 'margin-bottom', + 'margin-left', + ], + 'border': [ + 'border-top', + 'border-right', + 'border-bottom', + 'border-left', + 'border-width', + 'border-style', + 'border-color', + 'border-top-width', + 'border-right-width', + 'border-bottom-width', + 'border-left-width', + 'border-inline-start-width', + 'border-inline-end-width', + 'border-block-start-width', + 'border-block-end-width', + 'border-top-style', + 'border-right-style', + 'border-bottom-style', + 'border-left-style', + 'border-inline-start-style', + 'border-inline-end-style', + 'border-block-start-style', + 'border-block-end-style', + 'border-top-color', + 'border-right-color', + 'border-bottom-color', + 'border-left-color', + 'border-inline-start-color', + 'border-inline-end-color', + 'border-block-start-color', + 'border-block-end-color', + 'border-block', + 'border-block-start', + 'border-block-end', + 'border-block-width', + 'border-block-style', + 'border-block-color', + 'border-inline', + 'border-inline-start', + 'border-inline-end', + 'border-inline-width', + 'border-inline-style', + 'border-inline-color', + ], + 'border-top': [ + 'border-width', + 'border-style', + 'border-color', + 'border-top-width', + 'border-top-style', + 'border-top-color', + ], + 'border-right': [ + 'border-width', + 'border-style', + 'border-color', + 'border-right-width', + 'border-right-style', + 'border-right-color', + ], + 'border-bottom': [ + 'border-width', + 'border-style', + 'border-color', + 'border-bottom-width', + 'border-bottom-style', + 'border-bottom-color', + ], + 'border-left': [ + 'border-width', + 'border-style', + 'border-color', + 'border-left-width', + 'border-left-style', + 'border-left-color', + ], + 'border-color': [ + 'border-top-color', + 'border-bottom-color', + 'border-left-color', + 'border-right-color', + 'border-inline-start-color', + 'border-inline-end-color', + 'border-block-start-color', + 'border-block-end-color', + ], + 'border-width': [ + 'border-top-width', + 'border-bottom-width', + 'border-left-width', + 'border-right-width', + 'border-inline-start-width', + 'border-inline-end-width', + 'border-block-start-width', + 'border-block-end-width', + ], + 'border-style': [ + 'border-top-style', + 'border-bottom-style', + 'border-left-style', + 'border-right-style', + 'border-inline-start-style', + 'border-inline-end-style', + 'border-block-start-style', + 'border-block-end-style', + ], + 'border-radius': [ + 'border-top-right-radius', + 'border-top-left-radius', + 'border-bottom-right-radius', + 'border-bottom-left-radius', + ], + 'border-block': [ + 'border-block-start', + 'border-block-end', + 'border-block-width', + 'border-width', + 'border-block-style', + 'border-style', + 'border-block-color', + 'border-color', + ], + 'border-block-start': [ + 'border-block-start-width', + 'border-width', + 'border-block-start-style', + 'border-style', + 'border-block-start-color', + 'border-color', + ], + 'border-block-end': [ + 'border-block-end-width', + 'border-width', + 'border-block-end-style', + 'border-style', + 'border-block-end-color', + 'border-color', + ], + 'border-inline': [ + 'border-inline-start', + 'border-inline-end', + 'border-inline-width', + 'border-width', + 'border-inline-style', + 'border-style', + 'border-inline-color', + 'border-color', + ], + 'border-inline-start': [ + 'border-inline-start-width', + 'border-width', + 'border-inline-start-style', + 'border-style', + 'border-inline-start-color', + 'border-color', + ], + 'border-inline-end': [ + 'border-inline-end-width', + 'border-width', + 'border-inline-end-style', + 'border-style', + 'border-inline-end-color', + 'border-color', + ], + 'border-image': [ + 'border-image-source', + 'border-image-slice', + 'border-image-width', + 'border-image-outset', + 'border-image-repeat', + ], + 'mask': [ + 'mask-image', + 'mask-mode', + 'mask-position', + 'mask-size', + 'mask-repeat', + 'mask-origin', + 'mask-clip', + 'mask-composite', + ], + 'inline-size': [ + 'width', + 'height', + ], + 'block-size': [ + 'width', + 'height', + ], + 'max-inline-size': [ + 'max-width', + 'max-height', + ], + 'max-block-size': [ + 'max-width', + 'max-height', + ], + 'inset': [ + 'inset-block', + 'inset-block-start', + 'inset-block-end', + 'inset-inline', + 'inset-inline-start', + 'inset-inline-end', + 'top', + 'right', + 'bottom', + 'left', + ], + 'inset-block': [ + 'inset-block-start', + 'inset-block-end', + 'top', + 'right', + 'bottom', + 'left', + ], + 'inset-inline': [ + 'inset-inline-start', + 'inset-inline-end', + 'top', + 'right', + 'bottom', + 'left', + ], + 'outline': [ + 'outline-color', + 'outline-style', + 'outline-width', + ], + 'overflow': [ + 'overflow-x', + 'overflow-y', + ], + 'place-content': [ + 'align-content', + 'justify-content', + ], + 'place-items': [ + 'align-items', + 'justify-items', + ], + 'place-self': [ + 'align-self', + 'justify-self', + ], + 'text-decoration': [ + 'text-decoration-color', + 'text-decoration-style', + 'text-decoration-line', + ], + 'transition': [ + 'transition-delay', + 'transition-duration', + 'transition-property', + 'transition-timing-function', + ], + 'text-emphasis': [ + 'text-emphasis-style', + 'text-emphasis-color', + ], +}; |
