iobroker.mywebui 1.37.21 → 1.37.23

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (31) hide show
  1. package/io-package.json +1 -1
  2. package/package.json +1 -1
  3. package/www/dist/importmaps/importmap-config.js +1 -0
  4. package/www/dist/importmaps/importmap-runtime.js +1 -0
  5. package/www/node_modules/@node-projects/css-parser/LICENSE +11 -0
  6. package/www/node_modules/@node-projects/css-parser/README.md +161 -0
  7. package/www/node_modules/@node-projects/css-parser/dist/CssParseError.d.ts +8 -0
  8. package/www/node_modules/@node-projects/css-parser/dist/CssParseError.js +15 -0
  9. package/www/node_modules/@node-projects/css-parser/dist/CssPosition.d.ts +25 -0
  10. package/www/node_modules/@node-projects/css-parser/dist/CssPosition.js +13 -0
  11. package/www/node_modules/@node-projects/css-parser/dist/index-min.js +56 -0
  12. package/www/node_modules/@node-projects/css-parser/dist/index-min.js.map +7 -0
  13. package/www/node_modules/@node-projects/css-parser/dist/index.d.ts +12 -0
  14. package/www/node_modules/@node-projects/css-parser/dist/index.js +8 -0
  15. package/www/node_modules/@node-projects/css-parser/dist/parse/index.d.ts +8 -0
  16. package/www/node_modules/@node-projects/css-parser/dist/parse/index.js +1293 -0
  17. package/www/node_modules/@node-projects/css-parser/dist/parse/lexer.d.ts +118 -0
  18. package/www/node_modules/@node-projects/css-parser/dist/parse/lexer.js +248 -0
  19. package/www/node_modules/@node-projects/css-parser/dist/stringify/compiler.d.ts +172 -0
  20. package/www/node_modules/@node-projects/css-parser/dist/stringify/compiler.js +732 -0
  21. package/www/node_modules/@node-projects/css-parser/dist/stringify/index.d.ts +5 -0
  22. package/www/node_modules/@node-projects/css-parser/dist/stringify/index.js +5 -0
  23. package/www/node_modules/@node-projects/css-parser/dist/type.d.ts +205 -0
  24. package/www/node_modules/@node-projects/css-parser/dist/type.js +31 -0
  25. package/www/node_modules/@node-projects/css-parser/dist/utils/stringSearch.d.ts +53 -0
  26. package/www/node_modules/@node-projects/css-parser/dist/utils/stringSearch.js +166 -0
  27. package/www/node_modules/@node-projects/css-parser/docs/API.md +362 -0
  28. package/www/node_modules/@node-projects/css-parser/docs/AST.md +417 -0
  29. package/www/node_modules/@node-projects/css-parser/docs/CHANGELOG.md +205 -0
  30. package/www/node_modules/@node-projects/css-parser/docs/EXAMPLES.md +497 -0
  31. package/www/node_modules/@node-projects/css-parser/package.json +66 -0
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["CssParseError.js", "CssPosition.js", "type.js", "utils/stringSearch.js", "parse/lexer.js", "parse/index.js", "stringify/compiler.js", "stringify/index.js", "index.js"],
4
+ "sourcesContent": ["export default class CssParseError extends Error {\n reason;\n filename;\n line;\n column;\n source;\n constructor(filename, msg, lineno, column, css) {\n super(`${filename}:${lineno}:${column}: ${msg}`);\n this.reason = msg;\n this.filename = filename;\n this.line = lineno;\n this.column = column;\n this.source = css;\n }\n}\n", "/**\n * Store position information for a node\n */\nexport default class Position {\n start;\n end;\n source;\n constructor(start, end, source) {\n this.start = start;\n this.end = end;\n this.source = source;\n }\n}\n", "export var CssTypes;\n(function (CssTypes) {\n CssTypes[\"stylesheet\"] = \"stylesheet\";\n CssTypes[\"rule\"] = \"rule\";\n CssTypes[\"declaration\"] = \"declaration\";\n CssTypes[\"comment\"] = \"comment\";\n CssTypes[\"whitespace\"] = \"whitespace\";\n CssTypes[\"atRule\"] = \"at-rule\";\n CssTypes[\"container\"] = \"container\";\n CssTypes[\"charset\"] = \"charset\";\n CssTypes[\"counterStyle\"] = \"counter-style\";\n CssTypes[\"document\"] = \"document\";\n CssTypes[\"customMedia\"] = \"custom-media\";\n CssTypes[\"fontFace\"] = \"font-face\";\n CssTypes[\"fontFeatureValues\"] = \"font-feature-values\";\n CssTypes[\"host\"] = \"host\";\n CssTypes[\"import\"] = \"import\";\n CssTypes[\"keyframes\"] = \"keyframes\";\n CssTypes[\"keyframe\"] = \"keyframe\";\n CssTypes[\"layer\"] = \"layer\";\n CssTypes[\"media\"] = \"media\";\n CssTypes[\"namespace\"] = \"namespace\";\n CssTypes[\"page\"] = \"page\";\n CssTypes[\"pageMarginBox\"] = \"page-margin-box\";\n CssTypes[\"positionTry\"] = \"position-try\";\n CssTypes[\"property\"] = \"property\";\n CssTypes[\"scope\"] = \"scope\";\n CssTypes[\"startingStyle\"] = \"starting-style\";\n CssTypes[\"supports\"] = \"supports\";\n CssTypes[\"viewTransition\"] = \"view-transition\";\n})(CssTypes || (CssTypes = {}));\n", "export const MAX_LOOP = 10000;\n// \u2500\u2500\u2500 Character-code constants for fast comparisons \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\nconst Ch_BACKSLASH = 92; // \\\nconst Ch_OPEN_PAREN = 40; // (\nconst Ch_DOUBLE_QUOTE = 34; // \"\nconst Ch_SINGLE_QUOTE = 39; // '\n/**\n * Find the first occurrence of any search string in the input string, ignoring escaped characters\n * @param string - The input string to search in\n * @param search - Array of strings to search for\n * @param position - Optional starting position for the search\n * @returns The index of the first match, or -1 if not found\n * @throws {Error} If too many escape sequences are encountered (> MAX_LOOP)\n * @example\n * ```ts\n * // Basic search\n * indexOfArrayNonEscaped('a,b,c', [',']) // 1\n *\n * // Handles escaped characters\n * indexOfArrayNonEscaped('a\\\\,b,c', [',']) // 4, the first comma is escaped\n * ```\n */\nexport const indexOfArrayNonEscaped = (string, search, position) => {\n let currentPosition = position ?? 0;\n let maxLoop = MAX_LOOP;\n do {\n // Find the minimum index across all search terms and backslash\n // without allocating temporary arrays.\n let found = string.indexOf('\\\\', currentPosition);\n for (let i = 0; i < search.length; i++) {\n const idx = string.indexOf(search[i], currentPosition);\n if (idx !== -1 && (found === -1 || idx < found)) {\n found = idx;\n }\n }\n if (found === -1) {\n return -1;\n }\n if (string.charCodeAt(found) === Ch_BACKSLASH) {\n currentPosition = found + 2;\n maxLoop--;\n }\n else {\n return found;\n }\n } while (maxLoop > 0);\n throw new Error('Too many escaping');\n};\n/**\n * Find the first occurrence of any search string in the input string, respecting brackets and quotes\n * @param string - The input string to search in\n * @param search - Array of strings to search for\n * @param position - Optional starting position for the search\n * @returns The index of the first match, or -1 if not found\n * @throws {Error} If too many escape sequences are encountered (> MAX_LOOP)\n * @example\n * ```ts\n * // Basic search\n * indexOfArrayWithBracketAndQuoteSupport('a,b,c', [',']) // 1\n *\n * // Respects brackets - won't match inside ()\n * indexOfArrayWithBracketAndQuoteSupport('(a,b),c', [',']) // 4, ignores the comma inside ()\n *\n * // Respects quotes - won't match inside quotes\n * indexOfArrayWithBracketAndQuoteSupport('\"a,b\",c', [',']) // 4, ignores the comma inside quotes\n * indexOfArrayWithBracketAndQuoteSupport(\"'a,b',c\", [',']) // 4, ignores the comma inside quotes\n *\n * // Handles escaped characters\n * indexOfArrayWithBracketAndQuoteSupport('a\\\\,b,c', [',']) // 4, the first comma is escaped\n * ```\n */\nexport const indexOfArrayWithBracketAndQuoteSupport = (string, search, position) => {\n let currentSearchPosition = position ?? 0;\n let maxLoop = MAX_LOOP;\n do {\n // Find the minimum index across all search terms plus special characters,\n // without allocating temporary arrays on each iteration.\n let firstMatchPos = -1;\n for (let i = 0; i < search.length; i++) {\n const idx = string.indexOf(search[i], currentSearchPosition);\n if (idx !== -1 && (firstMatchPos === -1 || idx < firstMatchPos)) {\n firstMatchPos = idx;\n }\n }\n const parenIdx = string.indexOf('(', currentSearchPosition);\n if (parenIdx !== -1 && (firstMatchPos === -1 || parenIdx < firstMatchPos)) {\n firstMatchPos = parenIdx;\n }\n const dqIdx = string.indexOf('\"', currentSearchPosition);\n if (dqIdx !== -1 && (firstMatchPos === -1 || dqIdx < firstMatchPos)) {\n firstMatchPos = dqIdx;\n }\n const sqIdx = string.indexOf(\"'\", currentSearchPosition);\n if (sqIdx !== -1 && (firstMatchPos === -1 || sqIdx < firstMatchPos)) {\n firstMatchPos = sqIdx;\n }\n const bsIdx = string.indexOf('\\\\', currentSearchPosition);\n if (bsIdx !== -1 && (firstMatchPos === -1 || bsIdx < firstMatchPos)) {\n firstMatchPos = bsIdx;\n }\n if (firstMatchPos === -1) {\n return -1;\n }\n const charCode = string.charCodeAt(firstMatchPos);\n switch (charCode) {\n case Ch_BACKSLASH:\n currentSearchPosition = firstMatchPos + 2;\n break;\n case Ch_OPEN_PAREN:\n {\n const endPosition = indexOfArrayWithBracketAndQuoteSupport(string, [')'], firstMatchPos + 1);\n if (endPosition === -1) {\n return -1;\n }\n currentSearchPosition = endPosition + 1;\n }\n break;\n case Ch_DOUBLE_QUOTE:\n {\n const endQuotePosition = indexOfArrayNonEscaped(string, ['\"'], firstMatchPos + 1);\n if (endQuotePosition === -1) {\n return -1;\n }\n currentSearchPosition = endQuotePosition + 1;\n }\n break;\n case Ch_SINGLE_QUOTE:\n {\n const endQuotePosition = indexOfArrayNonEscaped(string, [\"'\"], firstMatchPos + 1);\n if (endQuotePosition === -1) {\n return -1;\n }\n currentSearchPosition = endQuotePosition + 1;\n }\n break;\n default:\n return firstMatchPos;\n }\n maxLoop--;\n } while (maxLoop > 0);\n throw new Error('Too many escaping');\n};\n/**\n * Split a string by search tokens, respecting brackets and quotes\n * @example\n * ```ts\n * splitWithBracketAndQuoteSupport('a,b', [',']) // ['a', 'b']\n * splitWithBracketAndQuoteSupport('a,(b,c)', [',']) // ['a', '(b,c)']\n * splitWithBracketAndQuoteSupport('a,\"b,c\"', [',']) // ['a', '\"b,c\"']\n * splitWithBracketAndQuoteSupport(\"a,'b,c'\", [',']) // ['a', \"'b,c'\"]\n * ```\n */\nexport const splitWithBracketAndQuoteSupport = (string, search) => {\n const result = [];\n let currentPosition = 0;\n while (currentPosition < string.length) {\n const index = indexOfArrayWithBracketAndQuoteSupport(string, search, currentPosition);\n if (index === -1) {\n result.push(string.substring(currentPosition));\n return result;\n }\n result.push(string.substring(currentPosition, index));\n currentPosition = index + 1;\n }\n return result;\n};\n", "/**\n * A fast lexer (scanner) for CSS input.\n *\n * Inspired by the approach used in es-module-shims / es-module-lexer,\n * this lexer uses numeric character-code comparisons (`charCodeAt`)\n * instead of single-character string comparisons, and employs sticky\n * (`y`-flag) regular expressions matched directly against the full\n * input to avoid creating temporary substring slices.\n *\n * The Lexer keeps an index (`pos`) into the original input. Simple\n * token types (whitespace, braces, colons, semicolons, commas) are\n * scanned character-by-character via `charCodeAt`, avoiding regular\n * expressions for those cases. For complex patterns `matchRegex` uses\n * a sticky regex positioned at `pos` so no string copy is needed.\n */\n// \u2500\u2500\u2500 Character-code constants \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n// Using charCodeAt comparisons is measurably faster than creating\n// single-character strings and comparing with `===`.\nconst Ch_TAB = 9; // \\t\nconst Ch_LF = 10; // \\n\nconst Ch_FF = 12; // \\f\nconst Ch_CR = 13; // \\r\nconst Ch_SPACE = 32; // ' '\nconst Ch_COMMA = 44; // ,\nconst Ch_SLASH = 47; // /\nconst Ch_COLON = 58; // :\nconst Ch_SEMI = 59; // ;\nconst Ch_AT = 64; // @\nconst Ch_OPEN = 123; // {\nconst Ch_CLOSE = 125; // }\nconst Ch_STAR = 42; // *\nexport class Lexer {\n /** The complete CSS source string. */\n input;\n /** Current read position (index into `input`). */\n pos;\n /** Current source line (1-based). */\n lineno;\n /** Current source column (1-based). */\n column;\n constructor(input) {\n this.input = input;\n this.pos = 0;\n this.lineno = 1;\n this.column = 1;\n }\n // \u2500\u2500\u2500 Lookahead helpers \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n /** Returns `true` when there is still input to consume. */\n get hasMore() {\n return this.pos < this.input.length;\n }\n /**\n * Returns the character code at `pos + offset` without advancing,\n * or `NaN` when past the end of input.\n *\n * Comparing numeric codes (`charCodeAt`) is faster than creating\n * single-character strings with bracket indexing.\n */\n charCodeAt(offset = 0) {\n return this.input.charCodeAt(this.pos + offset);\n }\n /**\n * Returns the character at `pos + offset` without advancing, or an\n * empty string when past the end of input.\n */\n charAt(offset = 0) {\n return this.input[this.pos + offset] ?? '';\n }\n /**\n * Returns the remaining input from the current position.\n *\n * This creates a new string (same cost as the old `css.slice(\u2026)` approach)\n * and is provided for compatibility with the bracket/quote-aware search\n * utilities that accept a plain string.\n */\n get remaining() {\n return this.input.slice(this.pos);\n }\n // \u2500\u2500\u2500 Consumption helpers \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n /**\n * Advance `pos` by `n` characters, updating line/column tracking.\n * Returns the consumed slice.\n */\n consume(n) {\n const start = this.pos;\n const end = start + n;\n this._advanceRange(start, end);\n return this.input.slice(start, end);\n }\n /**\n * Advance `pos` up to (but not including) `absolutePos`, updating\n * line/column tracking. Returns the consumed slice.\n */\n consumeTo(absolutePos) {\n return this.consume(absolutePos - this.pos);\n }\n /**\n * Apply a sticky (`y`-flag) regex directly against the full input\n * at the current position. If the regex matches, the matched text\n * is consumed and the `RegExpExecArray` is returned; otherwise\n * `null` is returned and `pos` is not changed.\n *\n * Using the `y` flag with `lastIndex` avoids creating a temporary\n * substring slice (which the old `^`-anchor + `this.remaining`\n * approach required).\n */\n matchRegex(re) {\n re.lastIndex = this.pos;\n const m = re.exec(this.input);\n if (m) {\n this._advanceRange(this.pos, this.pos + m[0].length);\n }\n return m;\n }\n // \u2500\u2500\u2500 Character-based token scanners \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n /**\n * Consume zero or more whitespace characters (space, tab, CR, LF,\n * form-feed) using `charCodeAt` instead of string comparisons.\n */\n skipWhitespace() {\n const src = this.input;\n const len = src.length;\n while (this.pos < len) {\n const ch = src.charCodeAt(this.pos);\n if (ch === Ch_LF) {\n this.lineno++;\n this.column = 1;\n this.pos++;\n }\n else if (ch === Ch_SPACE ||\n ch === Ch_TAB ||\n ch === Ch_CR ||\n ch === Ch_FF) {\n this.column++;\n this.pos++;\n }\n else {\n break;\n }\n }\n }\n /**\n * If the current character is `{`, consume it and any following\n * whitespace, then return `true`. Otherwise return `false`.\n */\n tryOpenBrace() {\n if (this.input.charCodeAt(this.pos) !== Ch_OPEN) {\n return false;\n }\n this.pos++;\n this.column++;\n this.skipWhitespace();\n return true;\n }\n /**\n * If the current character is `}`, consume it and return `true`.\n * Otherwise return `false`.\n */\n tryCloseBrace() {\n if (this.input.charCodeAt(this.pos) !== Ch_CLOSE) {\n return false;\n }\n this.pos++;\n this.column++;\n return true;\n }\n /**\n * If the current character is `:`, consume it and any following\n * whitespace, then return `true`. Otherwise return `false`.\n */\n tryColon() {\n if (this.input.charCodeAt(this.pos) !== Ch_COLON) {\n return false;\n }\n this.pos++;\n this.column++;\n this.skipWhitespace();\n return true;\n }\n /**\n * Consume any leading semicolons and whitespace characters using\n * `charCodeAt` instead of string comparisons.\n */\n skipSemicolonAndWhitespace() {\n const src = this.input;\n const len = src.length;\n while (this.pos < len) {\n const ch = src.charCodeAt(this.pos);\n if (ch === Ch_LF) {\n this.lineno++;\n this.column = 1;\n this.pos++;\n }\n else if (ch === Ch_SEMI ||\n ch === Ch_SPACE ||\n ch === Ch_TAB ||\n ch === Ch_CR ||\n ch === Ch_FF) {\n this.column++;\n this.pos++;\n }\n else {\n break;\n }\n }\n }\n /**\n * If the current character is `,`, consume it and any following\n * whitespace, then return `true`. Otherwise return `false`.\n */\n tryCommaAndWhitespace() {\n if (this.input.charCodeAt(this.pos) !== Ch_COMMA) {\n return false;\n }\n this.pos++;\n this.column++;\n this.skipWhitespace();\n return true;\n }\n // \u2500\u2500\u2500 Position snapshot \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n /**\n * Returns a snapshot of the current source position as an object\n * suitable for use in `Position` nodes.\n */\n getPosition() {\n return { line: this.lineno, column: this.column };\n }\n // \u2500\u2500\u2500 Internal helpers \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n /**\n * Update `lineno`, `column`, and `pos` for a range of characters in\n * the original input. Uses `charCodeAt` for the newline check.\n */\n _advanceRange(from, to) {\n const src = this.input;\n for (let i = from; i < to; i++) {\n if (src.charCodeAt(i) === Ch_LF) {\n this.lineno++;\n this.column = 1;\n }\n else {\n this.column++;\n }\n }\n this.pos = to;\n }\n}\n// Re-export character codes so the parser can use them for fast checks\nexport { Ch_AT, Ch_CLOSE, Ch_SLASH, Ch_STAR };\n", "import CssParseError from '../CssParseError.js';\nimport Position from '../CssPosition.js';\nimport { CssTypes, } from '../type.js';\nimport { indexOfArrayWithBracketAndQuoteSupport, splitWithBracketAndQuoteSupport, } from '../utils/stringSearch.js';\nimport { Ch_AT, Ch_CLOSE, Ch_SLASH, Ch_STAR, Lexer } from './lexer.js';\n// http://www.w3.org/TR/CSS21/grammar.html\n// https://github.com/visionmedia/css-parse/pull/49#issuecomment-30088027\n// New rule => https://www.w3.org/TR/CSS22/syndata.html#comments\n// [^] is equivalent to [.\\n\\r]\nconst commentRegex = /\\/\\*[^]*?(?:\\*\\/|$)/g;\n// \u2500\u2500\u2500 Sticky regexes (y-flag) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n// Using sticky regexes matched against the full input string avoids\n// creating a temporary substring on every `matchRegex` call.\nconst re_comment = /\\/\\*[^]*?\\*\\//y;\nconst re_propName = /(\\*?[-#/*\\\\\\w]+(\\[[0-9a-z_-]+\\])?)\\s*/y;\nconst re_keyframeValue = /((\\d+\\.\\d+|\\.\\d+|\\d+)%?|[a-z]+)\\s*/y;\nconst re_keyframesName = /@([-\\w]+)?keyframes\\s*/y;\nconst re_identifier = /([-\\w]+)\\s*/y;\nconst re_supports = /@supports *([^{]+)/y;\nconst re_host = /@host\\s*/y;\nconst re_container = /@container *([^{]+)/y;\nconst re_layer = /@layer *([^{;@]+)/y;\nconst re_media = /@media *([^{]+)/y;\nconst re_customMedia = /@custom-media\\s+(--\\S+)\\s+([^{;\\s][^{;]*);/y;\nconst re_page = /@page */y;\nconst re_document = /@([-\\w]+)?document *([^{]+)/y;\nconst re_fontFace = /@font-face\\s*/y;\nconst re_property = /@property\\s+(--[-\\w]+)\\s*/y;\nconst re_counterStyle = /@counter-style\\s+([-\\w]+)\\s*/y;\nconst re_fontFeatureValues = /@font-feature-values\\s+([^{]+)/y;\nconst re_scope = /@scope\\s*([^{]*)/y;\nconst re_viewTransition = /@view-transition\\s*/y;\nconst re_positionTry = /@position-try\\s+(--[-\\w]+)\\s*/y;\nconst re_startingStyle = /@starting-style\\s*/y;\nconst re_genericAtRule = /@([-\\w]+)\\s*/y;\n// Pre-compiled page margin box regex (moved to module scope to avoid re-creation)\nconst pageMarginBoxNames = [\n 'top-left-corner',\n 'top-left',\n 'top-center',\n 'top-right',\n 'top-right-corner',\n 'bottom-left-corner',\n 'bottom-left',\n 'bottom-center',\n 'bottom-right',\n 'bottom-right-corner',\n 'left-top',\n 'left-middle',\n 'left-bottom',\n 'right-top',\n 'right-middle',\n 'right-bottom',\n];\nconst re_pageMarginBox = new RegExp(`@(${pageMarginBoxNames.join('|')})(?![\\\\w-])\\\\s*`, 'y');\n// Pre-compiled non-block at-rule regexes.\n// NOTE: these patterns are inherited from the original _compileAtRule factory.\nconst re_atImport = /@import\\s*((?::?[^;'\"]|\"(?:\\\\\"|[^\"])*?\"|'(?:\\\\'|[^'])*?')+)(?:;|$)/y;\nconst re_atCharset = /@charset\\s*((?::?[^;'\"]|\"(?:\\\\\"|[^\"])*?\"|'(?:\\\\'|[^'])*?')+)(?:;|$)/y;\nconst re_atNamespace = /@namespace\\s*((?::?[^;'\"]|\"(?:\\\\\"|[^\"])*?\"|'(?:\\\\'|[^'])*?')+)(?:;|$)/y;\nexport const parse = (css, options) => {\n options = options || {};\n const lexer = new Lexer(css);\n const preserveFormatting = options.preserveFormatting ?? false;\n /**\n * Insert whitespace AST nodes between sibling nodes in an array.\n * Uses position offsets from the source to compute whitespace text.\n */\n function insertWhitespace(nodes, containerStart, containerEnd) {\n if (!preserveFormatting) {\n return nodes;\n }\n const result = [];\n let cursor = containerStart;\n for (const node of nodes) {\n const start = node.position?.start?.offset;\n if (start != null && start > cursor) {\n const wsText = css.slice(cursor, start);\n if (wsText) {\n result.push({ type: CssTypes.whitespace, value: wsText });\n }\n }\n result.push(node);\n const end = node.position?.end?.offset;\n if (end != null) {\n cursor = end;\n }\n }\n if (cursor < containerEnd) {\n const wsText = css.slice(cursor, containerEnd);\n if (wsText) {\n result.push({ type: CssTypes.whitespace, value: wsText });\n }\n }\n return result;\n }\n /**\n * Mark position and patch `node.position`.\n */\n function position() {\n const start = preserveFormatting\n ? { ...lexer.getPosition(), offset: lexer.pos }\n : lexer.getPosition();\n return (node) => {\n const end = preserveFormatting\n ? { ...lexer.getPosition(), offset: lexer.pos }\n : lexer.getPosition();\n node.position = new Position(start, end, options?.source || '');\n lexer.skipWhitespace();\n return node;\n };\n }\n /**\n * Error `msg`.\n */\n const errorsList = [];\n function error(msg) {\n const err = new CssParseError(options?.source || '', msg, lexer.lineno, lexer.column, lexer.remaining);\n if (options?.silent) {\n errorsList.push(err);\n }\n else {\n throw err;\n }\n }\n /**\n * Parse stylesheet.\n */\n function stylesheet() {\n const rulesList = rules();\n const result = {\n type: CssTypes.stylesheet,\n stylesheet: {\n source: options?.source,\n rules: insertWhitespace(rulesList, 0, css.length),\n parsingErrors: errorsList,\n },\n };\n return result;\n }\n /**\n * Opening brace.\n */\n function open() {\n return lexer.tryOpenBrace();\n }\n /**\n * Track brace position and call open().\n */\n function openWithPos() {\n const afterOpen = lexer.pos + 1;\n return { ok: lexer.tryOpenBrace(), afterOpen };\n }\n /**\n * Closing brace.\n */\n function close() {\n return lexer.tryCloseBrace();\n }\n /**\n * Parse ruleset.\n */\n function rules() {\n let node;\n const rules = [];\n lexer.skipWhitespace();\n comments(rules);\n while (lexer.hasMore) {\n if (lexer.charCodeAt() === Ch_CLOSE) {\n if (options?.silent) {\n // Skip stray closing braces at top level\n error(\"extra '}'\");\n lexer.consume(1);\n lexer.skipWhitespace();\n comments(rules);\n continue;\n }\n break;\n }\n node = atRule() || rule();\n if (node) {\n rules.push(node);\n comments(rules);\n }\n else {\n if (options?.silent) {\n // Skip unrecognized character to recover\n lexer.consume(1);\n lexer.skipWhitespace();\n comments(rules);\n continue;\n }\n break;\n }\n }\n return rules;\n }\n /**\n * Parse whitespace.\n */\n function whitespace() {\n lexer.skipWhitespace();\n }\n /**\n * Parse comments;\n */\n function comments(rules) {\n rules = rules || [];\n let c = comment();\n while (c) {\n rules.push(c);\n c = comment();\n }\n return rules;\n }\n /**\n * Parse comment.\n */\n function comment() {\n const pos = position();\n if (lexer.charCodeAt() !== Ch_SLASH || lexer.charCodeAt(1) !== Ch_STAR) {\n return;\n }\n const m = lexer.matchRegex(re_comment);\n if (!m) {\n return error('End of comment missing');\n }\n return pos({\n type: CssTypes.comment,\n comment: m[0].slice(2, -2),\n });\n }\n /**\n * Parse selector.\n */\n function selector() {\n const absPos = indexOfArrayWithBracketAndQuoteSupport(lexer.input, ['{'], lexer.pos);\n if (absPos === -1 || absPos === lexer.pos) {\n return;\n }\n const selectorStr = lexer.consumeTo(absPos);\n // remove comment in selector;\n const res = trim(selectorStr).replace(commentRegex, '');\n return splitWithBracketAndQuoteSupport(res, [',']).map((v) => trim(v));\n }\n /**\n * Parse declaration.\n */\n function declaration() {\n const pos = position();\n const declStart = preserveFormatting ? lexer.pos : 0;\n // prop\n const propMatch = lexer.matchRegex(re_propName);\n if (!propMatch) {\n return;\n }\n const propValue = trim(propMatch[0]);\n const propClean = propValue.replace(commentRegex, '');\n // :\n if (!lexer.tryColon()) {\n return error(\"property missing ':'\");\n }\n const afterColon = preserveFormatting ? lexer.pos : 0;\n // val\n let value = '';\n let rawValText = '';\n const absEndPos = indexOfArrayWithBracketAndQuoteSupport(lexer.input, [';', '}'], lexer.pos);\n if (absEndPos !== -1) {\n rawValText = lexer.consumeTo(absEndPos);\n value = trim(rawValText).replace(commentRegex, '');\n }\n const ret = pos({\n type: CssTypes.declaration,\n property: propClean,\n value: value,\n ...(preserveFormatting\n ? {\n rawBetween: css.slice(declStart + propClean.length, afterColon),\n rawValue: rawValText,\n }\n : {}),\n });\n // ;\n lexer.skipSemicolonAndWhitespace();\n return ret;\n }\n /**\n * Parse declarations (without nesting support).\n * Used by @font-face, @page, keyframes.\n * Returns { decls, afterOpen, beforeClose } when preserveFormatting is true.\n */\n function declarations() {\n const afterOpen = preserveFormatting ? lexer.pos + 1 : 0;\n if (!open()) {\n error(\"missing '{'\");\n return;\n }\n const decls = [];\n comments(decls);\n // declarations\n let decl = declaration();\n while (decl) {\n decls.push(decl);\n comments(decls);\n decl = declaration();\n }\n // In silent mode, try to recover from errors by skipping to next semicolon\n while (options?.silent &&\n lexer.hasMore &&\n lexer.charCodeAt() !== Ch_CLOSE) {\n const semiPos = lexer.input.indexOf(';', lexer.pos);\n const bracePos = lexer.input.indexOf('}', lexer.pos);\n if (semiPos !== -1 && (bracePos === -1 || semiPos < bracePos)) {\n lexer.consumeTo(semiPos + 1);\n whitespace();\n comments(decls);\n decl = declaration();\n while (decl) {\n decls.push(decl);\n comments(decls);\n decl = declaration();\n }\n }\n else {\n break;\n }\n }\n const beforeClose = preserveFormatting ? lexer.pos : 0;\n if (!close()) {\n error(\"missing '}'\");\n return;\n }\n return {\n decls: insertWhitespace(decls, afterOpen, beforeClose),\n afterOpen,\n beforeClose,\n };\n }\n /**\n * Check if the current position looks like a nested rule\n * ('{' appears before ';' and '}' at the top level).\n */\n function looksLikeNestedRule() {\n const pos = lexer.pos;\n const bracePos = indexOfArrayWithBracketAndQuoteSupport(lexer.input, ['{'], pos);\n if (bracePos === -1) {\n return false;\n }\n const semiPos = indexOfArrayWithBracketAndQuoteSupport(lexer.input, [';'], pos);\n const closePos = indexOfArrayWithBracketAndQuoteSupport(lexer.input, ['}'], pos);\n if (semiPos !== -1 && semiPos < bracePos) {\n return false;\n }\n if (closePos !== -1 && closePos < bracePos) {\n return false;\n }\n return true;\n }\n /**\n * Parse rule body with CSS nesting support.\n * Handles declarations, comments, nested rules, and nested at-rules.\n */\n function ruleBody() {\n const items = [];\n const afterOpen = preserveFormatting ? lexer.pos + 1 : 0;\n if (!open()) {\n error(\"missing '{'\");\n return;\n }\n comments(items);\n while (lexer.hasMore && lexer.charCodeAt() !== Ch_CLOSE) {\n // nested at-rule\n if (lexer.charCodeAt() === Ch_AT) {\n const ar = atRule();\n if (ar) {\n items.push(ar);\n comments(items);\n continue;\n }\n }\n // nested rule ('{' comes before ';' and '}')\n if (looksLikeNestedRule()) {\n const nestedR = rule();\n if (nestedR) {\n items.push(nestedR);\n comments(items);\n continue;\n }\n }\n // declaration\n const decl = declaration();\n if (decl) {\n items.push(decl);\n comments(items);\n continue;\n }\n // nothing matched \u2014 skip to next semicolon or closing brace to recover\n if (options?.silent) {\n const semiPos = lexer.input.indexOf(';', lexer.pos);\n const bracePos = lexer.input.indexOf('}', lexer.pos);\n if (semiPos !== -1 && (bracePos === -1 || semiPos < bracePos)) {\n lexer.consumeTo(semiPos + 1);\n whitespace();\n comments(items);\n continue;\n }\n }\n break;\n }\n const beforeClose = preserveFormatting ? lexer.pos : 0;\n if (!close()) {\n error(\"missing '}'\");\n return;\n }\n return {\n items: insertWhitespace(items, afterOpen, beforeClose),\n afterOpen,\n beforeClose,\n };\n }\n /**\n * Parse rules, declarations, and nested rules.\n * Used by block at-rules (media, supports, etc.) to support\n * both top-level rules and declarations when nested inside a rule.\n */\n function rulesOrDeclarations(afterOpen) {\n const items = [];\n whitespace();\n comments(items);\n while (lexer.hasMore && lexer.charCodeAt() !== Ch_CLOSE) {\n // at-rule\n if (lexer.charCodeAt() === Ch_AT) {\n const ar = atRule();\n if (ar) {\n items.push(ar);\n comments(items);\n continue;\n }\n }\n // nested rule ('{' comes before ';' and '}')\n if (looksLikeNestedRule()) {\n const r = rule();\n if (r) {\n items.push(r);\n comments(items);\n continue;\n }\n }\n // declaration\n const decl = declaration();\n if (decl) {\n items.push(decl);\n comments(items);\n continue;\n }\n // nothing matched \u2014 skip to next semicolon or closing brace to recover\n if (options?.silent) {\n const semiPos = lexer.input.indexOf(';', lexer.pos);\n const bracePos = lexer.input.indexOf('}', lexer.pos);\n if (semiPos !== -1 && (bracePos === -1 || semiPos < bracePos)) {\n lexer.consumeTo(semiPos + 1);\n whitespace();\n comments(items);\n continue;\n }\n }\n break;\n }\n if (preserveFormatting && afterOpen != null) {\n const beforeClose = lexer.pos;\n return insertWhitespace(items, afterOpen, beforeClose);\n }\n return items;\n }\n /**\n * Parse keyframe.\n */\n function keyframe() {\n const vals = [];\n const pos = position();\n const kfStart = preserveFormatting ? lexer.pos : 0;\n let m = lexer.matchRegex(re_keyframeValue);\n while (m) {\n vals.push(m[1]);\n lexer.tryCommaAndWhitespace();\n m = lexer.matchRegex(re_keyframeValue);\n }\n if (!vals.length) {\n return;\n }\n const braceOffset = preserveFormatting ? lexer.pos : 0;\n const parsed = declarations();\n if (!parsed)\n return;\n return pos({\n type: CssTypes.keyframe,\n values: vals,\n declarations: parsed.decls,\n ...(preserveFormatting\n ? { rawPrelude: css.slice(kfStart, braceOffset) }\n : {}),\n });\n }\n /**\n * Parse keyframes.\n */\n function atKeyframes() {\n const pos = position();\n const kfStart = preserveFormatting ? lexer.pos : 0;\n const m1 = lexer.matchRegex(re_keyframesName);\n if (!m1) {\n return;\n }\n const vendor = m1[1];\n // identifier\n const m2 = lexer.matchRegex(re_identifier);\n if (!m2) {\n return error('@keyframes missing name');\n }\n const name = m2[1];\n const braceOffset = preserveFormatting ? lexer.pos : 0;\n const afterOpen = preserveFormatting ? lexer.pos + 1 : 0;\n if (!open()) {\n return error(\"@keyframes missing '{'\");\n }\n const frames = comments();\n let frame = keyframe();\n while (frame) {\n frames.push(frame);\n comments(frames);\n frame = keyframe();\n }\n const beforeClose = preserveFormatting ? lexer.pos : 0;\n if (!close()) {\n return error(\"@keyframes missing '}'\");\n }\n return pos({\n type: CssTypes.keyframes,\n name: name,\n vendor: vendor,\n keyframes: insertWhitespace(frames, afterOpen, beforeClose),\n ...(preserveFormatting\n ? { rawPrelude: css.slice(kfStart, braceOffset) }\n : {}),\n });\n }\n /**\n * Parse supports.\n */\n function atSupports() {\n const pos = position();\n const atStart = preserveFormatting ? lexer.pos : 0;\n const m = lexer.matchRegex(re_supports);\n if (!m) {\n return;\n }\n const supports = trim(m[1]);\n const braceOffset = preserveFormatting ? lexer.pos : 0;\n const { ok: opened, afterOpen } = openWithPos();\n if (!opened) {\n return error(\"@supports missing '{'\");\n }\n const style = rulesOrDeclarations(preserveFormatting ? afterOpen : undefined);\n if (!close()) {\n return error(\"@supports missing '}'\");\n }\n return pos({\n type: CssTypes.supports,\n supports: supports,\n rules: style,\n ...(preserveFormatting\n ? { rawPrelude: css.slice(atStart, braceOffset) }\n : {}),\n });\n }\n /**\n * Parse host.\n */\n function atHost() {\n const pos = position();\n const atStart = preserveFormatting ? lexer.pos : 0;\n const m = lexer.matchRegex(re_host);\n if (!m) {\n return;\n }\n const braceOffset = preserveFormatting ? lexer.pos : 0;\n const { ok: opened, afterOpen } = openWithPos();\n if (!opened) {\n return error(\"@host missing '{'\");\n }\n const style = rulesOrDeclarations(preserveFormatting ? afterOpen : undefined);\n if (!close()) {\n return error(\"@host missing '}'\");\n }\n return pos({\n type: CssTypes.host,\n rules: style,\n ...(preserveFormatting\n ? { rawPrelude: css.slice(atStart, braceOffset) }\n : {}),\n });\n }\n /**\n * Parse container.\n */\n function atContainer() {\n const pos = position();\n const atStart = preserveFormatting ? lexer.pos : 0;\n const m = lexer.matchRegex(re_container);\n if (!m) {\n return;\n }\n const container = trim(m[1]);\n const braceOffset = preserveFormatting ? lexer.pos : 0;\n const { ok: opened, afterOpen } = openWithPos();\n if (!opened) {\n return error(\"@container missing '{'\");\n }\n const style = rulesOrDeclarations(preserveFormatting ? afterOpen : undefined);\n if (!close()) {\n return error(\"@container missing '}'\");\n }\n return pos({\n type: CssTypes.container,\n container: container,\n rules: style,\n ...(preserveFormatting\n ? { rawPrelude: css.slice(atStart, braceOffset) }\n : {}),\n });\n }\n /**\n * Parse layer.\n */\n function atLayer() {\n const pos = position();\n const atStart = preserveFormatting ? lexer.pos : 0;\n const m = lexer.matchRegex(re_layer);\n if (!m) {\n return;\n }\n const layer = trim(m[1]);\n const braceOffset = preserveFormatting ? lexer.pos : 0;\n const { ok: opened, afterOpen } = openWithPos();\n if (!opened) {\n // Statement form: @layer name;\n // Consume the semicolon so position end includes it\n if (lexer.charCodeAt() === 59) {\n // 59 = ';'\n lexer.consume(1);\n }\n const rawSrc = preserveFormatting\n ? css.slice(atStart, lexer.pos)\n : undefined;\n return pos({\n type: CssTypes.layer,\n layer: layer,\n ...(rawSrc ? { rawSource: rawSrc } : {}),\n });\n }\n const style = rulesOrDeclarations(preserveFormatting ? afterOpen : undefined);\n if (!close()) {\n return error(\"@layer missing '}'\");\n }\n return pos({\n type: CssTypes.layer,\n layer: layer,\n rules: style,\n ...(preserveFormatting\n ? { rawPrelude: css.slice(atStart, braceOffset) }\n : {}),\n });\n }\n /**\n * Parse media.\n */\n function atMedia() {\n const pos = position();\n const atStart = preserveFormatting ? lexer.pos : 0;\n const m = lexer.matchRegex(re_media);\n if (!m) {\n return;\n }\n const media = trim(m[1]);\n const braceOffset = preserveFormatting ? lexer.pos : 0;\n const { ok: opened, afterOpen } = openWithPos();\n if (!opened) {\n return error(\"@media missing '{'\");\n }\n const style = rulesOrDeclarations(preserveFormatting ? afterOpen : undefined);\n if (!close()) {\n return error(\"@media missing '}'\");\n }\n return pos({\n type: CssTypes.media,\n media: media,\n rules: style,\n ...(preserveFormatting\n ? { rawPrelude: css.slice(atStart, braceOffset) }\n : {}),\n });\n }\n /**\n * Parse custom-media.\n */\n function atCustomMedia() {\n const pos = position();\n const atStart = preserveFormatting ? lexer.pos : 0;\n const m = lexer.matchRegex(re_customMedia);\n if (!m) {\n return;\n }\n const rawSrc = preserveFormatting\n ? css.slice(atStart, lexer.pos)\n : undefined;\n return pos({\n type: CssTypes.customMedia,\n name: trim(m[1]),\n media: trim(m[2]),\n ...(rawSrc ? { rawSource: rawSrc } : {}),\n });\n }\n /**\n * Parse @page margin box at-rules (@top-left, @bottom-right, @left-middle, etc.).\n */\n function atPageMarginBox() {\n const pos = position();\n const atStart = preserveFormatting ? lexer.pos : 0;\n const m = lexer.matchRegex(re_pageMarginBox);\n if (!m) {\n return;\n }\n const name = m[1];\n const braceOffset = preserveFormatting ? lexer.pos : 0;\n const afterOpen = preserveFormatting ? lexer.pos + 1 : 0;\n if (!open()) {\n return error(`@${name} missing '{'`);\n }\n const decls = comments();\n let decl = declaration();\n while (decl) {\n decls.push(decl);\n comments(decls);\n decl = declaration();\n }\n const beforeClose = preserveFormatting ? lexer.pos : 0;\n if (!close()) {\n return error(`@${name} missing '}'`);\n }\n return pos({\n type: CssTypes.pageMarginBox,\n name: name,\n declarations: insertWhitespace(decls, afterOpen, beforeClose),\n ...(preserveFormatting\n ? { rawPrelude: css.slice(atStart, braceOffset) }\n : {}),\n });\n }\n /**\n * Parse paged media.\n */\n function atPage() {\n const pos = position();\n const atStart = preserveFormatting ? lexer.pos : 0;\n const m = lexer.matchRegex(re_page);\n if (!m) {\n return;\n }\n const sel = selector() || [];\n const braceOffset = preserveFormatting ? lexer.pos : 0;\n const afterOpen = preserveFormatting ? lexer.pos + 1 : 0;\n if (!open()) {\n return error(\"@page missing '{'\");\n }\n const decls = [];\n comments(decls);\n // declarations and nested at-rules (margin boxes)\n while (lexer.hasMore && lexer.charCodeAt() !== Ch_CLOSE) {\n if (lexer.charCodeAt() === Ch_AT) {\n const ar = atRule();\n if (ar) {\n decls.push(ar);\n comments(decls);\n continue;\n }\n }\n const decl = declaration();\n if (decl) {\n decls.push(decl);\n comments(decls);\n continue;\n }\n break;\n }\n const beforeClose = preserveFormatting ? lexer.pos : 0;\n if (!close()) {\n return error(\"@page missing '}'\");\n }\n return pos({\n type: CssTypes.page,\n selectors: sel,\n declarations: insertWhitespace(decls, afterOpen, beforeClose),\n ...(preserveFormatting\n ? { rawPrelude: css.slice(atStart, braceOffset) }\n : {}),\n });\n }\n /**\n * Parse document.\n */\n function atDocument() {\n const pos = position();\n const atStart = preserveFormatting ? lexer.pos : 0;\n const m = lexer.matchRegex(re_document);\n if (!m) {\n return;\n }\n const vendor = trim(m[1]);\n const doc = trim(m[2]);\n const braceOffset = preserveFormatting ? lexer.pos : 0;\n const { ok: opened, afterOpen } = openWithPos();\n if (!opened) {\n return error(\"@document missing '{'\");\n }\n const style = rulesOrDeclarations(preserveFormatting ? afterOpen : undefined);\n if (!close()) {\n return error(\"@document missing '}'\");\n }\n return pos({\n type: CssTypes.document,\n document: doc,\n vendor: vendor,\n rules: style,\n ...(preserveFormatting\n ? { rawPrelude: css.slice(atStart, braceOffset) }\n : {}),\n });\n }\n /**\n * Parse font-face.\n */\n function atFontFace() {\n const pos = position();\n const atStart = preserveFormatting ? lexer.pos : 0;\n const m = lexer.matchRegex(re_fontFace);\n if (!m) {\n return;\n }\n const braceOffset = preserveFormatting ? lexer.pos : 0;\n const afterOpen = preserveFormatting ? lexer.pos + 1 : 0;\n if (!open()) {\n return error(\"@font-face missing '{'\");\n }\n const decls = comments();\n // declarations\n let decl = declaration();\n while (decl) {\n decls.push(decl);\n comments(decls);\n decl = declaration();\n }\n const beforeClose = preserveFormatting ? lexer.pos : 0;\n if (!close()) {\n return error(\"@font-face missing '}'\");\n }\n return pos({\n type: CssTypes.fontFace,\n declarations: insertWhitespace(decls, afterOpen, beforeClose),\n ...(preserveFormatting\n ? { rawPrelude: css.slice(atStart, braceOffset) }\n : {}),\n });\n }\n /**\n * Parse @property.\n */\n function atProperty() {\n const pos = position();\n const atStart = preserveFormatting ? lexer.pos : 0;\n const m = lexer.matchRegex(re_property);\n if (!m) {\n return;\n }\n const name = m[1];\n const braceOffset = preserveFormatting ? lexer.pos : 0;\n const afterOpen = preserveFormatting ? lexer.pos + 1 : 0;\n if (!open()) {\n return error(\"@property missing '{'\");\n }\n const decls = comments();\n let decl = declaration();\n while (decl) {\n decls.push(decl);\n comments(decls);\n decl = declaration();\n }\n const beforeClose = preserveFormatting ? lexer.pos : 0;\n if (!close()) {\n return error(\"@property missing '}'\");\n }\n return pos({\n type: CssTypes.property,\n name: name,\n declarations: insertWhitespace(decls, afterOpen, beforeClose),\n ...(preserveFormatting\n ? { rawPrelude: css.slice(atStart, braceOffset) }\n : {}),\n });\n }\n /**\n * Parse @counter-style.\n */\n function atCounterStyle() {\n const pos = position();\n const atStart = preserveFormatting ? lexer.pos : 0;\n const m = lexer.matchRegex(re_counterStyle);\n if (!m) {\n return;\n }\n const name = m[1];\n const braceOffset = preserveFormatting ? lexer.pos : 0;\n const afterOpen = preserveFormatting ? lexer.pos + 1 : 0;\n if (!open()) {\n return error(\"@counter-style missing '{'\");\n }\n const decls = comments();\n let decl = declaration();\n while (decl) {\n decls.push(decl);\n comments(decls);\n decl = declaration();\n }\n const beforeClose = preserveFormatting ? lexer.pos : 0;\n if (!close()) {\n return error(\"@counter-style missing '}'\");\n }\n return pos({\n type: CssTypes.counterStyle,\n name: name,\n declarations: insertWhitespace(decls, afterOpen, beforeClose),\n ...(preserveFormatting\n ? { rawPrelude: css.slice(atStart, braceOffset) }\n : {}),\n });\n }\n /**\n * Parse @font-feature-values.\n */\n function atFontFeatureValues() {\n const pos = position();\n const atStart = preserveFormatting ? lexer.pos : 0;\n const m = lexer.matchRegex(re_fontFeatureValues);\n if (!m) {\n return;\n }\n const fontFamily = trim(m[1]);\n const braceOffset = preserveFormatting ? lexer.pos : 0;\n const { ok: opened, afterOpen } = openWithPos();\n if (!opened) {\n return error(\"@font-feature-values missing '{'\");\n }\n const style = rulesOrDeclarations(preserveFormatting ? afterOpen : undefined);\n if (!close()) {\n return error(\"@font-feature-values missing '}'\");\n }\n return pos({\n type: CssTypes.fontFeatureValues,\n fontFamily: fontFamily,\n rules: style,\n ...(preserveFormatting\n ? { rawPrelude: css.slice(atStart, braceOffset) }\n : {}),\n });\n }\n /**\n * Parse @scope.\n */\n function atScope() {\n const pos = position();\n const atStart = preserveFormatting ? lexer.pos : 0;\n const m = lexer.matchRegex(re_scope);\n if (!m) {\n return;\n }\n const scope = trim(m[1]);\n const braceOffset = preserveFormatting ? lexer.pos : 0;\n const { ok: opened, afterOpen } = openWithPos();\n if (!opened) {\n return error(\"@scope missing '{'\");\n }\n const style = rulesOrDeclarations(preserveFormatting ? afterOpen : undefined);\n if (!close()) {\n return error(\"@scope missing '}'\");\n }\n return pos({\n type: CssTypes.scope,\n scope: scope,\n rules: style,\n ...(preserveFormatting\n ? { rawPrelude: css.slice(atStart, braceOffset) }\n : {}),\n });\n }\n /**\n * Parse @view-transition.\n */\n function atViewTransition() {\n const pos = position();\n const atStart = preserveFormatting ? lexer.pos : 0;\n const m = lexer.matchRegex(re_viewTransition);\n if (!m) {\n return;\n }\n const braceOffset = preserveFormatting ? lexer.pos : 0;\n const afterOpen = preserveFormatting ? lexer.pos + 1 : 0;\n if (!open()) {\n return error(\"@view-transition missing '{'\");\n }\n const decls = comments();\n let decl = declaration();\n while (decl) {\n decls.push(decl);\n comments(decls);\n decl = declaration();\n }\n const beforeClose = preserveFormatting ? lexer.pos : 0;\n if (!close()) {\n return error(\"@view-transition missing '}'\");\n }\n return pos({\n type: CssTypes.viewTransition,\n declarations: insertWhitespace(decls, afterOpen, beforeClose),\n ...(preserveFormatting\n ? { rawPrelude: css.slice(atStart, braceOffset) }\n : {}),\n });\n }\n /**\n * Parse @position-try.\n */\n function atPositionTry() {\n const pos = position();\n const atStart = preserveFormatting ? lexer.pos : 0;\n const m = lexer.matchRegex(re_positionTry);\n if (!m) {\n return;\n }\n const name = m[1];\n const braceOffset = preserveFormatting ? lexer.pos : 0;\n const afterOpen = preserveFormatting ? lexer.pos + 1 : 0;\n if (!open()) {\n return error(\"@position-try missing '{'\");\n }\n const decls = comments();\n let decl = declaration();\n while (decl) {\n decls.push(decl);\n comments(decls);\n decl = declaration();\n }\n const beforeClose = preserveFormatting ? lexer.pos : 0;\n if (!close()) {\n return error(\"@position-try missing '}'\");\n }\n return pos({\n type: CssTypes.positionTry,\n name: name,\n declarations: insertWhitespace(decls, afterOpen, beforeClose),\n ...(preserveFormatting\n ? { rawPrelude: css.slice(atStart, braceOffset) }\n : {}),\n });\n }\n /**\n * Parse starting style.\n */\n function atStartingStyle() {\n const pos = position();\n const atStart = preserveFormatting ? lexer.pos : 0;\n const m = lexer.matchRegex(re_startingStyle);\n if (!m) {\n return;\n }\n const braceOffset = preserveFormatting ? lexer.pos : 0;\n const { ok: opened, afterOpen } = openWithPos();\n if (!opened) {\n return error(\"@starting-style missing '{'\");\n }\n const style = rulesOrDeclarations(preserveFormatting ? afterOpen : undefined);\n if (!close()) {\n return error(\"@starting-style missing '}'\");\n }\n return pos({\n type: CssTypes.startingStyle,\n rules: style,\n ...(preserveFormatting\n ? { rawPrelude: css.slice(atStart, braceOffset) }\n : {}),\n });\n }\n /**\n * Parse import\n */\n function atImport() {\n const pos = position();\n const atStart = preserveFormatting ? lexer.pos : 0;\n const m = lexer.matchRegex(re_atImport);\n if (!m) {\n return;\n }\n const rawSrc = preserveFormatting\n ? css.slice(atStart, lexer.pos)\n : undefined;\n return pos({\n type: CssTypes.import,\n import: m[1].trim(),\n ...(rawSrc ? { rawSource: rawSrc } : {}),\n });\n }\n /**\n * Parse charset\n */\n function atCharset() {\n const pos = position();\n const atStart = preserveFormatting ? lexer.pos : 0;\n const m = lexer.matchRegex(re_atCharset);\n if (!m) {\n return;\n }\n const rawSrc = preserveFormatting\n ? css.slice(atStart, lexer.pos)\n : undefined;\n return pos({\n type: CssTypes.charset,\n charset: m[1].trim(),\n ...(rawSrc ? { rawSource: rawSrc } : {}),\n });\n }\n /**\n * Parse namespace\n */\n function atNamespace() {\n const pos = position();\n const atStart = preserveFormatting ? lexer.pos : 0;\n const m = lexer.matchRegex(re_atNamespace);\n if (!m) {\n return;\n }\n const rawSrc = preserveFormatting\n ? css.slice(atStart, lexer.pos)\n : undefined;\n return pos({\n type: CssTypes.namespace,\n namespace: m[1].trim(),\n ...(rawSrc ? { rawSource: rawSrc } : {}),\n });\n }\n /**\n * Parse generic/unknown at-rule (fallback for any unrecognized at-rule).\n * Handles both block at-rules (@scope { ... }) and statement at-rules (@foo ...;).\n */\n function atGeneric() {\n const pos = position();\n const atStart = preserveFormatting ? lexer.pos : 0;\n const m = lexer.matchRegex(re_genericAtRule);\n if (!m) {\n return;\n }\n const name = m[1];\n // Capture prelude (everything between the name and '{' or ';')\n let prelude = '';\n const preludeEnd = indexOfArrayWithBracketAndQuoteSupport(lexer.input, ['{', ';'], lexer.pos);\n if (preludeEnd !== -1 && preludeEnd > lexer.pos) {\n prelude = trim(lexer.consumeTo(preludeEnd));\n }\n // Block at-rule\n const braceOffset = preserveFormatting ? lexer.pos : 0;\n const { ok: opened, afterOpen } = openWithPos();\n if (opened) {\n const style = rulesOrDeclarations(preserveFormatting ? afterOpen : undefined);\n if (!close()) {\n return error(`@${name} missing '}'`);\n }\n return pos({\n type: CssTypes.atRule,\n name: name,\n prelude: prelude,\n rules: style,\n ...(preserveFormatting\n ? { rawPrelude: css.slice(atStart, braceOffset) }\n : {}),\n });\n }\n // Statement at-rule (ends with ';')\n lexer.skipSemicolonAndWhitespace();\n return pos({\n type: CssTypes.atRule,\n name: name,\n prelude: prelude,\n });\n }\n /**\n * Parse at rule.\n */\n function atRule() {\n if (lexer.charCodeAt() !== Ch_AT) {\n return;\n }\n return (atKeyframes() ||\n atMedia() ||\n atCustomMedia() ||\n atSupports() ||\n atImport() ||\n atCharset() ||\n atNamespace() ||\n atDocument() ||\n atPage() ||\n atHost() ||\n atFontFace() ||\n atFontFeatureValues() ||\n atContainer() ||\n atStartingStyle() ||\n atLayer() ||\n atProperty() ||\n atCounterStyle() ||\n atScope() ||\n atViewTransition() ||\n atPositionTry() ||\n atPageMarginBox() ||\n atGeneric());\n }\n /**\n * Parse rule.\n */\n function rule() {\n const pos = position();\n const ruleStart = preserveFormatting ? lexer.pos : 0;\n const sel = selector();\n if (!sel) {\n return error('selector missing');\n }\n const braceOffset = preserveFormatting ? lexer.pos : 0;\n comments();\n const body = ruleBody();\n return pos({\n type: CssTypes.rule,\n selectors: sel,\n declarations: body?.items || [],\n ...(preserveFormatting\n ? { rawPrelude: css.slice(ruleStart, braceOffset) }\n : {}),\n });\n }\n return addParent(stylesheet());\n};\n/**\n * Trim `str`.\n */\nfunction trim(str) {\n return str ? str.trim() : '';\n}\n/**\n * Adds non-enumerable parent node reference to each node.\n * Only recurses into array and object properties that can contain child nodes,\n * skipping primitive values and known leaf objects (Position, etc.).\n */\nfunction addParent(obj, parent) {\n const isNode = obj && typeof obj.type === 'string';\n const childParent = isNode ? obj : parent;\n for (const k in obj) {\n const value = obj[k];\n if (Array.isArray(value)) {\n for (let i = 0; i < value.length; i++) {\n addParent(value[i], childParent);\n }\n }\n else if (value &&\n typeof value === 'object' &&\n !(value instanceof Position)) {\n addParent(value, childParent);\n }\n }\n if (isNode) {\n Object.defineProperty(obj, 'parent', {\n configurable: true,\n writable: true,\n enumerable: false,\n value: parent || null,\n });\n }\n return obj;\n}\nexport default parse;\n", "import { CssTypes, } from '../type.js';\nclass Compiler {\n level = 0;\n indentation = ' ';\n compress = false;\n identity = false;\n removeEmptyRules = false;\n constructor(options) {\n if (typeof options?.indent === 'string') {\n this.indentation = options?.indent;\n }\n if (options?.compress) {\n this.compress = true;\n }\n if (options?.identity) {\n this.identity = true;\n }\n if (options?.removeEmptyRules) {\n this.removeEmptyRules = true;\n }\n }\n // We disable no-unused-vars for _position. We keep position for potential reintroduction of source-map\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n emit(str, _position) {\n return str;\n }\n /**\n * Increase, decrease or return current indentation.\n */\n indent(level) {\n this.level = this.level || 1;\n if (level) {\n this.level += level;\n return '';\n }\n return this.level > 1 ? this.indentation.repeat(this.level - 1) : '';\n }\n visit(node) {\n switch (node.type) {\n case CssTypes.stylesheet:\n return this.stylesheet(node);\n case CssTypes.rule:\n return this.rule(node);\n case CssTypes.declaration:\n return this.declaration(node);\n case CssTypes.comment:\n return this.comment(node);\n case CssTypes.whitespace:\n return this.whitespace(node);\n case CssTypes.container:\n return this.container(node);\n case CssTypes.charset:\n return this.charset(node);\n case CssTypes.counterStyle:\n return this.counterStyle(node);\n case CssTypes.document:\n return this.document(node);\n case CssTypes.customMedia:\n return this.customMedia(node);\n case CssTypes.fontFace:\n return this.fontFace(node);\n case CssTypes.fontFeatureValues:\n return this.fontFeatureValues(node);\n case CssTypes.host:\n return this.host(node);\n case CssTypes.import:\n return this.import(node);\n case CssTypes.keyframes:\n return this.keyframes(node);\n case CssTypes.keyframe:\n return this.keyframe(node);\n case CssTypes.layer:\n return this.layer(node);\n case CssTypes.media:\n return this.media(node);\n case CssTypes.namespace:\n return this.namespace(node);\n case CssTypes.page:\n return this.page(node);\n case CssTypes.pageMarginBox:\n return this.pageMarginBox(node);\n case CssTypes.positionTry:\n return this.positionTry(node);\n case CssTypes.property:\n return this.property(node);\n case CssTypes.scope:\n return this.scope(node);\n case CssTypes.startingStyle:\n return this.startingStyle(node);\n case CssTypes.supports:\n return this.supports(node);\n case CssTypes.viewTransition:\n return this.viewTransition(node);\n case CssTypes.atRule:\n return this.genericAtRule(node);\n }\n }\n mapVisit(nodes, delim) {\n let buf = '';\n delim = delim || '';\n for (let i = 0, length = nodes.length; i < length; i++) {\n const str = this.visit(nodes[i]);\n if (str) {\n if (delim && buf) {\n buf += this.emit(delim);\n }\n buf += str;\n }\n }\n return buf;\n }\n /**\n * Emit a block at-rule that contains nested rules (e.g. @media, @supports, @container).\n */\n rulesBlock(header, rules, position, rawPrelude) {\n if (this.identity && rawPrelude) {\n this.indent(1);\n const result = this.emit(rawPrelude, position) +\n this.emit('{') +\n this.identityVisitBlock(this.filterEmptyRules(rules), 'rules') +\n this.emit('}');\n this.indent(-1);\n return result;\n }\n const filteredRules = this.filterEmptyRules(this.stripWhitespace(rules));\n if (this.compress) {\n return (this.emit(header, position) +\n this.emit('{') +\n this.mapVisit(filteredRules) +\n this.emit('}'));\n }\n return (this.emit(`${this.indent()}${header}`, position) +\n this.emit(` {\\n${this.indent(1)}`) +\n this.mapVisit(filteredRules, '\\n\\n') +\n this.emit(`\\n${this.indent(-1)}${this.indent()}}`));\n }\n /**\n * Emit a block at-rule that contains declarations (e.g. @font-face, @property).\n */\n declsBlock(header, declarations, position, rawPrelude) {\n if (this.identity && rawPrelude) {\n this.indent(1);\n const result = this.emit(rawPrelude, position) +\n this.emit('{') +\n this.identityVisitBlock(declarations, 'decls') +\n this.emit('}');\n this.indent(-1);\n return result;\n }\n const stripped = this.stripWhitespace(declarations);\n if (this.compress) {\n return (this.emit(header, position) +\n this.emit('{') +\n this.mapVisit(stripped) +\n this.emit('}'));\n }\n return (this.emit(`${header} `, position) +\n this.emit('{\\n') +\n this.emit(this.indent(1)) +\n this.mapVisit(stripped, '\\n') +\n this.emit(this.indent(-1)) +\n this.emit('\\n}'));\n }\n compile(node) {\n if (this.identity) {\n return this.identityCompile(node);\n }\n if (this.compress) {\n return this.filterEmptyRules(this.stripWhitespace(node.stylesheet.rules))\n .map(this.visit, this)\n .join('');\n }\n return this.stylesheet(node);\n }\n /**\n * Identity mode: walk the AST including whitespace nodes.\n * Falls back to beautified output when whitespace nodes are not available.\n */\n identityCompile(node) {\n const rules = node.stylesheet.rules;\n const hasWhitespace = rules.some((r) => r.type === CssTypes.whitespace);\n if (!hasWhitespace) {\n // Fallback to beautified when preserveFormatting was not used\n return this.stylesheet(node);\n }\n return this.identityVisitBlock(rules, 'stylesheet');\n }\n /**\n * Visit stylesheet node.\n */\n stylesheet(node) {\n return this.mapVisit(this.filterEmptyRules(this.stripWhitespace(node.stylesheet.rules)), '\\n\\n');\n }\n /**\n * Strip whitespace nodes from an array (used in beautified/compressed modes).\n */\n stripWhitespace(nodes) {\n return nodes.filter((n) => n.type !== CssTypes.whitespace);\n }\n /**\n * Filter out empty rules when removeEmptyRules is enabled.\n */\n filterEmptyRules(rules) {\n if (!this.removeEmptyRules) {\n return rules;\n }\n return rules.filter((rule) => {\n if (rule.type === CssTypes.rule) {\n const decls = rule.declarations.filter((d) => d.type !== CssTypes.whitespace);\n return decls.length > 0;\n }\n return true;\n });\n }\n /**\n * Check whether a node was newly created (not parsed from source).\n * New nodes lack the raw formatting properties set by the parser.\n */\n isNewNode(node) {\n switch (node.type) {\n case CssTypes.whitespace:\n return false;\n case CssTypes.comment:\n return !node.position;\n case CssTypes.declaration:\n return node.rawBetween == null;\n case CssTypes.rule:\n return node.rawPrelude == null;\n default:\n if ('rawPrelude' in node)\n return !node.rawPrelude;\n if ('rawSource' in node)\n return !node.rawSource;\n return !node.position;\n }\n }\n /**\n * Visit block children in identity mode, formatting newly added nodes\n * with beautified output while preserving original formatting for\n * existing nodes.\n *\n * @param nodes - The child nodes to visit\n * @param context - 'decls' for declaration blocks, 'rules' for nested\n * rule blocks (e.g. @media), 'stylesheet' for top-level\n */\n identityVisitBlock(nodes, context) {\n const filtered = this.filterEmptyRules(nodes);\n // Fast path: no new nodes \u2013 visit normally\n if (!filtered.some((n) => this.isNewNode(n))) {\n return this.mapVisit(filtered);\n }\n let buf = '';\n const needsDoubleNewline = context === 'rules' || context === 'stylesheet';\n for (let i = 0; i < filtered.length; i++) {\n const node = filtered[i];\n if (!this.isNewNode(node)) {\n buf += this.visit(node);\n continue;\n }\n // \u2500\u2500 New node: add proper separator before it \u2500\u2500\n // Check whether the buffer already ends with \\n (possibly followed\n // by spaces that were originally the closing-brace indent). If so,\n // trim those trailing spaces \u2013 the beautified fallback of the new\n // node will supply the correct indentation.\n const lastNl = buf.lastIndexOf('\\n');\n const hasTrailingNewline = lastNl >= 0 && buf.slice(lastNl + 1).trim() === '';\n if (hasTrailingNewline) {\n buf = buf.slice(0, lastNl + 1);\n }\n else if (buf.length === 0 && context !== 'stylesheet') {\n // First child in a block \u2013 add newline after opening brace\n buf += '\\n';\n }\n else if (buf.length > 0) {\n buf += '\\n';\n }\n if (needsDoubleNewline && buf.length > 1 && !buf.endsWith('\\n\\n')) {\n buf += '\\n';\n }\n // Visit the node (uses beautified fallback since raw props are absent)\n const str = this.visit(node);\n if (str)\n buf += str;\n }\n // Add trailing newline + closing-brace indent when the last meaningful\n // node is new (blocks only, not the top-level stylesheet)\n if (context !== 'stylesheet') {\n const lastMeaningful = [...filtered]\n .reverse()\n .find((n) => n.type !== CssTypes.whitespace);\n if (lastMeaningful &&\n this.isNewNode(lastMeaningful) &&\n buf.length > 0 &&\n !buf.endsWith('\\n')) {\n buf += '\\n';\n // Indent for the closing brace (one level less than current)\n this.indent(-1);\n buf += this.indent();\n this.indent(1);\n }\n }\n return buf;\n }\n /**\n * Visit whitespace node.\n */\n whitespace(node) {\n if (this.identity) {\n return this.emit(node.value);\n }\n // In beautified/compressed mode, whitespace nodes are stripped before visiting\n return '';\n }\n /**\n * Visit comment node.\n */\n comment(node) {\n if (this.compress) {\n return this.emit('', node.position);\n }\n const indent = this.identity && node.position ? '' : this.indent();\n return this.emit(`${indent}/*${node.comment}*/`, node.position);\n }\n /**\n * Visit container node.\n */\n container(node) {\n return this.rulesBlock(`@container ${node.container}`, node.rules, node.position, node.rawPrelude);\n }\n /**\n * Visit container node.\n */\n layer(node) {\n if (this.identity && node.rawPrelude && node.rules) {\n this.indent(1);\n const result = this.emit(node.rawPrelude, node.position) +\n this.emit('{') +\n this.identityVisitBlock(this.filterEmptyRules(node.rules), 'rules') +\n this.emit('}');\n this.indent(-1);\n return result;\n }\n if (this.identity && !node.rules && node.rawSource) {\n return this.emit(node.rawSource, node.position);\n }\n const rules = node.rules\n ? this.stripWhitespace(node.rules)\n : undefined;\n if (this.compress) {\n return (this.emit(`@layer ${node.layer}`, node.position) +\n (rules ? this.emit('{') + this.mapVisit(rules) + this.emit('}') : ';'));\n }\n return (this.emit(`${this.indent()}@layer ${node.layer}`, node.position) +\n (rules\n ? this.emit(` {\\n${this.indent(1)}`) +\n this.mapVisit(rules, '\\n\\n') +\n this.emit(`\\n${this.indent(-1)}${this.indent()}}`)\n : ';'));\n }\n /**\n * Visit import node.\n */\n import(node) {\n if (this.identity && node.rawSource) {\n return this.emit(node.rawSource, node.position);\n }\n return this.emit(`@import ${node.import};`, node.position);\n }\n /**\n * Visit media node.\n */\n media(node) {\n return this.rulesBlock(`@media ${node.media}`, node.rules, node.position, node.rawPrelude);\n }\n /**\n * Visit document node.\n */\n document(node) {\n const doc = `@${node.vendor || ''}document ${node.document}`;\n if (this.identity && node.rawPrelude) {\n this.indent(1);\n const result = this.emit(node.rawPrelude, node.position) +\n this.emit('{') +\n this.identityVisitBlock(this.filterEmptyRules(node.rules), 'rules') +\n this.emit('}');\n this.indent(-1);\n return result;\n }\n const rules = this.stripWhitespace(node.rules);\n if (this.compress) {\n return (this.emit(doc, node.position) +\n this.emit('{') +\n this.mapVisit(rules) +\n this.emit('}'));\n }\n return (this.emit(doc, node.position) +\n this.emit(` {\\n${this.indent(1)}`) +\n this.mapVisit(rules, '\\n\\n') +\n this.emit(`${this.indent(-1)}\\n}`));\n }\n /**\n * Visit charset node.\n */\n charset(node) {\n if (this.identity && node.rawSource) {\n return this.emit(node.rawSource, node.position);\n }\n return this.emit(`@charset ${node.charset};`, node.position);\n }\n /**\n * Visit namespace node.\n */\n namespace(node) {\n if (this.identity && node.rawSource) {\n return this.emit(node.rawSource, node.position);\n }\n return this.emit(`@namespace ${node.namespace};`, node.position);\n }\n /**\n * Visit starting-style node.\n */\n startingStyle(node) {\n return this.rulesBlock('@starting-style', node.rules, node.position, node.rawPrelude);\n }\n /**\n * Visit supports node.\n */\n supports(node) {\n return this.rulesBlock(`@supports ${node.supports}`, node.rules, node.position, node.rawPrelude);\n }\n /**\n * Visit keyframes node.\n */\n keyframes(node) {\n if (this.identity && node.rawPrelude) {\n this.indent(1);\n const result = this.emit(node.rawPrelude, node.position) +\n this.emit('{') +\n this.identityVisitBlock(node.keyframes, 'rules') +\n this.emit('}');\n this.indent(-1);\n return result;\n }\n const frames = this.stripWhitespace(node.keyframes);\n if (this.compress) {\n return (this.emit(`@${node.vendor || ''}keyframes ${node.name}`, node.position) +\n this.emit('{') +\n this.mapVisit(frames) +\n this.emit('}'));\n }\n return (this.emit(`@${node.vendor || ''}keyframes ${node.name}`, node.position) +\n this.emit(` {\\n${this.indent(1)}`) +\n this.mapVisit(frames, '\\n') +\n this.emit(`${this.indent(-1)}}`));\n }\n /**\n * Visit keyframe node.\n */\n keyframe(node) {\n const decls = node.declarations;\n if (this.identity && node.rawPrelude) {\n this.indent(1);\n const result = this.emit(node.rawPrelude, node.position) +\n this.emit('{') +\n this.identityVisitBlock(decls, 'decls') +\n this.emit('}');\n this.indent(-1);\n return result;\n }\n const stripped = this.stripWhitespace(decls);\n if (this.compress) {\n return (this.emit(node.values.join(','), node.position) +\n this.emit('{') +\n this.mapVisit(stripped) +\n this.emit('}'));\n }\n return (this.emit(this.indent()) +\n this.emit(node.values.join(', '), node.position) +\n this.emit(` {\\n${this.indent(1)}`) +\n this.mapVisit(stripped, '\\n') +\n this.emit(`${this.indent(-1)}\\n${this.indent()}}\\n`));\n }\n /**\n * Visit page node.\n */\n page(node) {\n if (this.identity && node.rawPrelude) {\n this.indent(1);\n const result = this.emit(node.rawPrelude, node.position) +\n this.emit('{') +\n this.identityVisitBlock(node.declarations, 'decls') +\n this.emit('}');\n this.indent(-1);\n return result;\n }\n const decls = this.stripWhitespace(node.declarations);\n if (this.compress) {\n const sel = node.selectors.length ? node.selectors.join(', ') : '';\n return (this.emit(`@page ${sel}`, node.position) +\n this.emit('{') +\n this.mapVisit(decls) +\n this.emit('}'));\n }\n const sel = node.selectors.length ? `${node.selectors.join(', ')} ` : '';\n return (this.emit(`@page ${sel}`, node.position) +\n this.emit('{\\n') +\n this.emit(this.indent(1)) +\n this.mapVisit(decls, '\\n') +\n this.emit(this.indent(-1)) +\n this.emit('\\n}'));\n }\n /**\n * Visit @page margin box node (@top-left, @bottom-right, etc.).\n */\n pageMarginBox(node) {\n if (this.identity && node.rawPrelude) {\n this.indent(1);\n const result = this.emit(node.rawPrelude, node.position) +\n this.emit('{') +\n this.identityVisitBlock(node.declarations, 'decls') +\n this.emit('}');\n this.indent(-1);\n return result;\n }\n const decls = this.stripWhitespace(node.declarations);\n if (this.compress) {\n return (this.emit(`@${node.name}`, node.position) +\n this.emit('{') +\n this.mapVisit(decls) +\n this.emit('}'));\n }\n return (this.emit(`${this.indent()}@${node.name} `, node.position) +\n this.emit('{\\n') +\n this.emit(this.indent(1)) +\n this.mapVisit(decls, '\\n') +\n this.emit(this.indent(-1)) +\n this.emit(`\\n${this.indent()}}`));\n }\n /**\n * Visit font-face node.\n */\n fontFace(node) {\n return this.declsBlock('@font-face', node.declarations, node.position, node.rawPrelude);\n }\n /**\n * Visit host node.\n */\n host(node) {\n if (this.identity && node.rawPrelude) {\n this.indent(1);\n const result = this.emit(node.rawPrelude, node.position) +\n this.emit('{') +\n this.identityVisitBlock(this.filterEmptyRules(node.rules), 'rules') +\n this.emit('}');\n this.indent(-1);\n return result;\n }\n const rules = this.stripWhitespace(node.rules);\n if (this.compress) {\n return (this.emit('@host', node.position) +\n this.emit('{') +\n this.mapVisit(rules) +\n this.emit('}'));\n }\n return (this.emit('@host', node.position) +\n this.emit(` {\\n${this.indent(1)}`) +\n this.mapVisit(rules, '\\n\\n') +\n this.emit(`${this.indent(-1)}\\n}`));\n }\n /**\n * Visit custom-media node.\n */\n customMedia(node) {\n if (this.identity && node.rawSource) {\n return this.emit(node.rawSource, node.position);\n }\n return this.emit(`@custom-media ${node.name} ${node.media};`, node.position);\n }\n /**\n * Visit @property node.\n */\n property(node) {\n return this.declsBlock(`@property ${node.name}`, node.declarations, node.position, node.rawPrelude);\n }\n /**\n * Visit @counter-style node.\n */\n counterStyle(node) {\n return this.declsBlock(`@counter-style ${node.name}`, node.declarations, node.position, node.rawPrelude);\n }\n /**\n * Visit @font-feature-values node.\n */\n fontFeatureValues(node) {\n return this.rulesBlock(`@font-feature-values ${node.fontFamily}`, node.rules, node.position, node.rawPrelude);\n }\n /**\n * Visit @scope node.\n */\n scope(node) {\n if (this.identity && node.rawPrelude) {\n this.indent(1);\n const result = this.emit(node.rawPrelude, node.position) +\n this.emit('{') +\n this.identityVisitBlock(this.filterEmptyRules(node.rules), 'rules') +\n this.emit('}');\n this.indent(-1);\n return result;\n }\n const prelude = node.scope ? ` ${node.scope}` : '';\n return this.rulesBlock(`@scope${prelude}`, this.stripWhitespace(node.rules), node.position);\n }\n /**\n * Visit @view-transition node.\n */\n viewTransition(node) {\n return this.declsBlock('@view-transition', node.declarations, node.position, node.rawPrelude);\n }\n /**\n * Visit @position-try node.\n */\n positionTry(node) {\n return this.declsBlock(`@position-try ${node.name}`, node.declarations, node.position, node.rawPrelude);\n }\n /**\n * Visit generic at-rule node (fallback for any unrecognized at-rule).\n */\n genericAtRule(node) {\n if (this.identity && node.rawPrelude && node.rules) {\n this.indent(1);\n const result = this.emit(node.rawPrelude, node.position) +\n this.emit('{') +\n this.identityVisitBlock(this.filterEmptyRules(node.rules), 'rules') +\n this.emit('}');\n this.indent(-1);\n return result;\n }\n const prelude = node.prelude ? ` ${node.prelude}` : '';\n const rules = node.rules\n ? this.stripWhitespace(node.rules)\n : undefined;\n if (this.compress) {\n return (this.emit(`@${node.name}${prelude}`, node.position) +\n (rules ? this.emit('{') + this.mapVisit(rules) + this.emit('}') : ';'));\n }\n if (!rules) {\n return this.emit(`${this.indent()}@${node.name}${prelude};`, node.position);\n }\n const hasNestedRules = rules.some((r) => r.type !== CssTypes.declaration && r.type !== CssTypes.comment);\n const delim = hasNestedRules ? '\\n\\n' : '\\n';\n return (this.emit(`${this.indent()}@${node.name}${prelude}`, node.position) +\n this.emit(hasNestedRules ? ` {\\n${this.indent(1)}` : ' {\\n') +\n this.emit(hasNestedRules ? '' : this.indent(1)) +\n this.mapVisit(rules, delim) +\n this.emit(hasNestedRules\n ? `\\n${this.indent(-1)}${this.indent()}}`\n : `${this.indent(-1)}\\n${this.indent()}}`));\n }\n /**\n * Visit rule node.\n */\n rule(node) {\n const decls = node.declarations;\n if (this.identity && node.rawPrelude) {\n this.indent(1);\n const result = this.emit(node.rawPrelude, node.position) +\n this.emit('{') +\n this.identityVisitBlock(decls, 'decls') +\n this.emit('}');\n this.indent(-1);\n return result;\n }\n const stripped = this.stripWhitespace(decls);\n if (this.compress) {\n if (this.removeEmptyRules && !stripped.length) {\n return '';\n }\n return (this.emit(node.selectors.join(','), node.position) +\n this.emit('{') +\n this.mapVisit(stripped) +\n this.emit('}'));\n }\n const indent = this.indent();\n if (!stripped.length) {\n if (this.removeEmptyRules) {\n return '';\n }\n return (this.emit(node.selectors\n .map((s) => {\n return indent + s;\n })\n .join(',\\n'), node.position) + this.emit(' {}'));\n }\n return (this.emit(node.selectors\n .map((s) => {\n return indent + s;\n })\n .join(',\\n'), node.position) +\n this.emit(' {\\n') +\n this.emit(this.indent(1)) +\n this.mapVisit(stripped, '\\n') +\n this.emit(this.indent(-1)) +\n this.emit(`\\n${this.indent()}}`));\n }\n /**\n * Visit declaration node.\n */\n declaration(node) {\n if (this.identity && node.rawBetween != null) {\n return this.emit(`${node.property}${node.rawBetween}${node.rawValue ?? node.value}`, node.position);\n }\n if (this.compress) {\n return (this.emit(`${node.property}:${node.value}`, node.position) +\n this.emit(';'));\n }\n if (node.property === 'grid-template-areas') {\n const indent = this.indent();\n const pad = indent.length + node.property.length + 2; // 2 for \": \"\n const parts = node.value.split('\\n');\n const aligned = parts\n .map((p, i) => (i === 0 ? p : ' '.repeat(pad) + p.trimStart()))\n .join('\\n');\n return (this.emit(indent) +\n this.emit(`${node.property}: ${aligned}`, node.position) +\n this.emit(';'));\n }\n return (this.emit(this.indent()) +\n this.emit(`${node.property}: ${node.value}`, node.position) +\n this.emit(';'));\n }\n}\nexport default Compiler;\n", "import Compiler from './compiler.js';\nexport default (node, options) => {\n const compiler = new Compiler(options || {});\n return compiler.compile(node);\n};\n", "import { default as parseFn } from './parse/index.js';\nimport { default as stringifyFn } from './stringify/index.js';\nexport const parse = parseFn;\nexport const stringify = stringifyFn;\nexport * from './CssParseError.js';\nexport * from './CssPosition.js';\nexport * from './type.js';\nexport default { parse, stringify };\n"],
5
+ "mappings": "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",
6
+ "names": ["CssParseError", "filename", "msg", "lineno", "column", "css", "Position", "start", "end", "source", "CssTypes", "indexOfArrayNonEscaped", "string", "search", "position", "currentPosition", "maxLoop", "found", "i", "idx", "indexOfArrayWithBracketAndQuoteSupport", "currentSearchPosition", "firstMatchPos", "parenIdx", "dqIdx", "sqIdx", "bsIdx", "endPosition", "endQuotePosition", "splitWithBracketAndQuoteSupport", "result", "index", "Lexer", "input", "offset", "n", "start", "end", "absolutePos", "re", "m", "src", "len", "ch", "from", "to", "i", "commentRegex", "re_comment", "re_propName", "re_keyframeValue", "re_keyframesName", "re_identifier", "re_supports", "re_host", "re_container", "re_layer", "re_media", "re_customMedia", "re_page", "re_document", "re_fontFace", "re_property", "re_counterStyle", "re_fontFeatureValues", "re_scope", "re_viewTransition", "re_positionTry", "re_startingStyle", "re_genericAtRule", "pageMarginBoxNames", "re_pageMarginBox", "re_atImport", "re_atCharset", "re_atNamespace", "parse", "css", "options", "lexer", "Lexer", "preserveFormatting", "insertWhitespace", "nodes", "containerStart", "containerEnd", "result", "cursor", "node", "start", "wsText", "CssTypes", "end", "position", "Position", "errorsList", "error", "msg", "err", "CssParseError", "stylesheet", "rulesList", "rules", "open", "openWithPos", "afterOpen", "close", "comments", "atRule", "rule", "whitespace", "c", "comment", "pos", "m", "selector", "absPos", "indexOfArrayWithBracketAndQuoteSupport", "selectorStr", "res", "trim", "splitWithBracketAndQuoteSupport", "v", "declaration", "declStart", "propMatch", "propClean", "afterColon", "value", "rawValText", "absEndPos", "ret", "declarations", "decls", "decl", "semiPos", "bracePos", "beforeClose", "looksLikeNestedRule", "closePos", "ruleBody", "items", "ar", "nestedR", "rulesOrDeclarations", "r", "keyframe", "vals", "kfStart", "braceOffset", "parsed", "atKeyframes", "m1", "vendor", "m2", "name", "frames", "frame", "atSupports", "atStart", "supports", "opened", "style", "atHost", "atContainer", "container", "atLayer", "layer", "rawSrc", "atMedia", "media", "atCustomMedia", "atPageMarginBox", "atPage", "sel", "atDocument", "doc", "atFontFace", "atProperty", "atCounterStyle", "atFontFeatureValues", "fontFamily", "atScope", "scope", "atViewTransition", "atPositionTry", "atStartingStyle", "atImport", "atCharset", "atNamespace", "atGeneric", "prelude", "preludeEnd", "ruleStart", "body", "addParent", "str", "obj", "parent", "isNode", "childParent", "k", "i", "parse_default", "Compiler", "options", "str", "_position", "level", "node", "CssTypes", "nodes", "delim", "buf", "i", "length", "header", "rules", "position", "rawPrelude", "result", "filteredRules", "declarations", "stripped", "r", "n", "rule", "d", "context", "filtered", "needsDoubleNewline", "lastNl", "lastMeaningful", "indent", "doc", "frames", "decls", "sel", "prelude", "hasNestedRules", "s", "pad", "aligned", "p", "compiler_default", "stringify_default", "node", "options", "compiler_default", "parse", "parse_default", "stringify", "stringify_default", "index_default"]
7
+ }
@@ -0,0 +1,12 @@
1
+ export declare const parse: (css: string, options?: import("./parse/index.js").ParseOptions) => import("./type.js").CssStylesheetAST;
2
+ export declare const stringify: (node: import("./type.js").CssStylesheetAST, options?: import("./stringify/compiler.js").CompilerOptions) => string;
3
+ export * from './CssParseError.js';
4
+ export * from './CssPosition.js';
5
+ export type { ParseOptions } from './parse/index.js';
6
+ export type { CompilerOptions } from './stringify/index.js';
7
+ export * from './type.js';
8
+ declare const _default: {
9
+ parse: (css: string, options?: import("./parse/index.js").ParseOptions) => import("./type.js").CssStylesheetAST;
10
+ stringify: (node: import("./type.js").CssStylesheetAST, options?: import("./stringify/compiler.js").CompilerOptions) => string;
11
+ };
12
+ export default _default;
@@ -0,0 +1,8 @@
1
+ import { default as parseFn } from './parse/index.js';
2
+ import { default as stringifyFn } from './stringify/index.js';
3
+ export const parse = parseFn;
4
+ export const stringify = stringifyFn;
5
+ export * from './CssParseError.js';
6
+ export * from './CssPosition.js';
7
+ export * from './type.js';
8
+ export default { parse, stringify };
@@ -0,0 +1,8 @@
1
+ import { type CssStylesheetAST } from '../type.js';
2
+ export type ParseOptions = {
3
+ source?: string;
4
+ silent?: boolean;
5
+ preserveFormatting?: boolean;
6
+ };
7
+ export declare const parse: (css: string, options?: ParseOptions) => CssStylesheetAST;
8
+ export default parse;