@clubmed/usg-chat-ui 1.0.1 → 1.2.4
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.
- package/chunks/_commonjsHelpers.js +9 -0
- package/chunks/_commonjsHelpers.js.map +1 -0
- package/chunks/browser.js +579 -0
- package/chunks/browser.js.map +1 -0
- package/chunks/client.js +27323 -0
- package/chunks/client.js.map +1 -0
- package/chunks/index.js +59 -32
- package/chunks/index.js.map +1 -1
- package/chunks/index2.js +32 -59
- package/chunks/index2.js.map +1 -1
- package/chunks/index3.js +22 -740
- package/chunks/index3.js.map +1 -1
- package/chunks/index4.js +740 -22
- package/chunks/index4.js.map +1 -1
- package/chunks/index5.js +1 -1
- package/chunks/index6.js +144 -150
- package/chunks/index6.js.map +1 -1
- package/chunks/index7.js +14 -13
- package/chunks/index7.js.map +1 -1
- package/chunks/magic-string.es.js +664 -0
- package/chunks/magic-string.es.js.map +1 -0
- package/chunks/react.esm.js +10007 -0
- package/chunks/react.esm.js.map +1 -0
- package/chunks/{collaboration.js → useCollaboration.js} +536 -523
- package/chunks/useCollaboration.js.map +1 -0
- package/chunks/vi.2VT5v0um.js +10573 -0
- package/chunks/vi.2VT5v0um.js.map +1 -0
- package/contexts/ChatContext.d.ts +2 -1
- package/contexts/ChatContext.js +32 -30
- package/contexts/ChatContext.js.map +1 -1
- package/core/interfaces/ChatConfig.d.ts +4 -0
- package/core/interfaces/StoryVersion.d.ts +7 -2
- package/index.d.ts +1 -0
- package/molecules/AiElements/Message.js +1 -1
- package/molecules/AiElements/Response.js +15 -13
- package/molecules/AiElements/Response.js.map +1 -1
- package/molecules/AiElements/Sources.d.ts +2 -2
- package/molecules/AiElements/Sources.js.map +1 -1
- package/molecules/Buttons/Button.d.ts +1 -1
- package/molecules/Buttons/Button.js +2 -2
- package/molecules/{AiElements → CodeBlock}/CodeBlock.d.ts +5 -2
- package/molecules/CodeBlock/CodeBlock.js +128 -0
- package/molecules/CodeBlock/CodeBlock.js.map +1 -0
- package/molecules/CodeBlock/CodeBlock.test.d.ts +1 -0
- package/molecules/CodeBlock/CodeBlock.test.js +3158 -0
- package/molecules/CodeBlock/CodeBlock.test.js.map +1 -0
- package/molecules/CodeBlock/highlightCode.d.ts +2 -0
- package/molecules/CodeBlock/highlightCode.js +5850 -0
- package/molecules/CodeBlock/highlightCode.js.map +1 -0
- package/molecules/CodeBlock/highlightCode.test.d.ts +1 -0
- package/molecules/CodeBlock/highlightCode.test.js +47 -0
- package/molecules/CodeBlock/highlightCode.test.js.map +1 -0
- package/molecules/Collapsibles/Collapsible.js +1 -1
- package/molecules/Forms/InputGroups/InputGroup.js +1 -1
- package/molecules/Labels/Label.js +2 -2
- package/molecules/Notifications/{Sonner.js → Toaster.js} +2 -2
- package/molecules/Notifications/Toaster.js.map +1 -0
- package/molecules/Notifications/{use-toast.js → useToast.js} +1 -1
- package/molecules/Notifications/useToast.js.map +1 -0
- package/{organisms → molecules}/RichText/DynamicEditor.js.map +1 -1
- package/molecules/RichText/EditorWithAI.js +55854 -0
- package/molecules/RichText/EditorWithAI.js.map +1 -0
- package/molecules/RichText/useCollaboration.d.ts +9 -0
- package/molecules/RichText/useCollaboration.js +8 -0
- package/molecules/RichText/useCollaboration.js.map +1 -0
- package/molecules/RichText/useCollaboration.test.d.ts +1 -0
- package/molecules/RichText/useCollaboration.test.js +70 -0
- package/molecules/RichText/useCollaboration.test.js.map +1 -0
- package/molecules/Tabs/Tabs.js +1 -1
- package/organisms/canvas/ApiDocsCanvas.js +15 -15
- package/organisms/canvas/ApiDocsCanvas.js.map +1 -1
- package/organisms/canvas/ReleaseNoteCanvas.js +2 -2
- package/organisms/canvas/ReleaseNoteCanvas.js.map +1 -1
- package/organisms/canvas/StoryCanvas.js +2 -2
- package/organisms/canvas/StoryCanvas.js.map +1 -1
- package/organisms/chat/MessageActions.js +1 -1
- package/organisms/chat/MessageActions.js.map +1 -1
- package/organisms/chat/hooks/useChat.js +1 -1
- package/organisms/chat/hooks/useChat.js.map +1 -1
- package/organisms/chat/hooks/useChatKeyboardsShortcuts.js +16 -33
- package/organisms/chat/hooks/useChatKeyboardsShortcuts.js.map +1 -1
- package/organisms/chat/hooks/useConversations.js +1 -1
- package/organisms/chat/hooks/useConversations.js.map +1 -1
- package/organisms/settings/SettingsModal.js +1 -1
- package/package.json +3 -4
- package/.npm/_logs/2026-01-19T16_54_30_380Z-debug-0.log +0 -19
- package/.npm/_logs/2026-01-19T16_54_30_467Z-debug-0.log +0 -19
- package/.npm/_logs/2026-01-19T16_54_30_553Z-debug-0.log +0 -14
- package/chunks/collaboration.js.map +0 -1
- package/core/collaboration.d.ts +0 -6
- package/core/collaboration.js +0 -5
- package/core/collaboration.js.map +0 -1
- package/molecules/AiElements/CodeBlock.js +0 -6525
- package/molecules/AiElements/CodeBlock.js.map +0 -1
- package/molecules/Notifications/Sonner.js.map +0 -1
- package/molecules/Notifications/use-toast.js.map +0 -1
- package/molecules/index.d.ts +0 -28
- package/molecules/index.js +0 -88
- package/molecules/index.js.map +0 -1
- package/organisms/RichText/EditorWithAI.js +0 -83167
- package/organisms/RichText/EditorWithAI.js.map +0 -1
- /package/molecules/Notifications/{Sonner.d.ts → Toaster.d.ts} +0 -0
- /package/molecules/Notifications/{use-toast.d.ts → useToast.d.ts} +0 -0
- /package/{organisms → molecules}/RichText/DynamicEditor.d.ts +0 -0
- /package/{organisms → molecules}/RichText/DynamicEditor.js +0 -0
- /package/{organisms → molecules}/RichText/EditorWithAI.d.ts +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"CodeBlock.js","sources":["../../../../../node_modules/.pnpm/@shikijs+types@3.21.0/node_modules/@shikijs/types/dist/index.mjs","../../../../../node_modules/.pnpm/@shikijs+vscode-textmate@10.0.2/node_modules/@shikijs/vscode-textmate/dist/index.js","../../../../../node_modules/.pnpm/@shikijs+core@3.21.0/node_modules/@shikijs/core/dist/index.mjs","../../../../../node_modules/.pnpm/shiki@3.21.0/node_modules/shiki/dist/langs.mjs","../../../../../node_modules/.pnpm/shiki@3.21.0/node_modules/shiki/dist/themes.mjs","../../../../../node_modules/.pnpm/@shikijs+engine-oniguruma@3.21.0/node_modules/@shikijs/engine-oniguruma/dist/index.mjs","../../../../../node_modules/.pnpm/shiki@3.21.0/node_modules/shiki/dist/bundle-full.mjs","../../../../../node_modules/.pnpm/dompurify@3.3.1/node_modules/dompurify/dist/purify.cjs.js","../../../../../node_modules/.pnpm/isomorphic-dompurify@2.35.0/node_modules/isomorphic-dompurify/browser.js","../../../lib/molecules/AiElements/CodeBlock.tsx"],"sourcesContent":["class ShikiError extends Error {\n constructor(message) {\n super(message);\n this.name = \"ShikiError\";\n }\n}\n\nexport { ShikiError };\n","// src/utils.ts\nfunction clone(something) {\n return doClone(something);\n}\nfunction doClone(something) {\n if (Array.isArray(something)) {\n return cloneArray(something);\n }\n if (something instanceof RegExp) {\n return something;\n }\n if (typeof something === \"object\") {\n return cloneObj(something);\n }\n return something;\n}\nfunction cloneArray(arr) {\n let r = [];\n for (let i = 0, len = arr.length; i < len; i++) {\n r[i] = doClone(arr[i]);\n }\n return r;\n}\nfunction cloneObj(obj) {\n let r = {};\n for (let key in obj) {\n r[key] = doClone(obj[key]);\n }\n return r;\n}\nfunction mergeObjects(target, ...sources) {\n sources.forEach((source) => {\n for (let key in source) {\n target[key] = source[key];\n }\n });\n return target;\n}\nfunction basename(path) {\n const idx = ~path.lastIndexOf(\"/\") || ~path.lastIndexOf(\"\\\\\");\n if (idx === 0) {\n return path;\n } else if (~idx === path.length - 1) {\n return basename(path.substring(0, path.length - 1));\n } else {\n return path.substr(~idx + 1);\n }\n}\nvar CAPTURING_REGEX_SOURCE = /\\$(\\d+)|\\${(\\d+):\\/(downcase|upcase)}/g;\nvar RegexSource = class {\n static hasCaptures(regexSource) {\n if (regexSource === null) {\n return false;\n }\n CAPTURING_REGEX_SOURCE.lastIndex = 0;\n return CAPTURING_REGEX_SOURCE.test(regexSource);\n }\n static replaceCaptures(regexSource, captureSource, captureIndices) {\n return regexSource.replace(CAPTURING_REGEX_SOURCE, (match, index, commandIndex, command) => {\n let capture = captureIndices[parseInt(index || commandIndex, 10)];\n if (capture) {\n let result = captureSource.substring(capture.start, capture.end);\n while (result[0] === \".\") {\n result = result.substring(1);\n }\n switch (command) {\n case \"downcase\":\n return result.toLowerCase();\n case \"upcase\":\n return result.toUpperCase();\n default:\n return result;\n }\n } else {\n return match;\n }\n });\n }\n};\nfunction strcmp(a, b) {\n if (a < b) {\n return -1;\n }\n if (a > b) {\n return 1;\n }\n return 0;\n}\nfunction strArrCmp(a, b) {\n if (a === null && b === null) {\n return 0;\n }\n if (!a) {\n return -1;\n }\n if (!b) {\n return 1;\n }\n let len1 = a.length;\n let len2 = b.length;\n if (len1 === len2) {\n for (let i = 0; i < len1; i++) {\n let res = strcmp(a[i], b[i]);\n if (res !== 0) {\n return res;\n }\n }\n return 0;\n }\n return len1 - len2;\n}\nfunction isValidHexColor(hex) {\n if (/^#[0-9a-f]{6}$/i.test(hex)) {\n return true;\n }\n if (/^#[0-9a-f]{8}$/i.test(hex)) {\n return true;\n }\n if (/^#[0-9a-f]{3}$/i.test(hex)) {\n return true;\n }\n if (/^#[0-9a-f]{4}$/i.test(hex)) {\n return true;\n }\n return false;\n}\nfunction escapeRegExpCharacters(value) {\n return value.replace(/[\\-\\\\\\{\\}\\*\\+\\?\\|\\^\\$\\.\\,\\[\\]\\(\\)\\#\\s]/g, \"\\\\$&\");\n}\nvar CachedFn = class {\n constructor(fn) {\n this.fn = fn;\n }\n cache = /* @__PURE__ */ new Map();\n get(key) {\n if (this.cache.has(key)) {\n return this.cache.get(key);\n }\n const value = this.fn(key);\n this.cache.set(key, value);\n return value;\n }\n};\n\n// src/theme.ts\nvar Theme = class {\n constructor(_colorMap, _defaults, _root) {\n this._colorMap = _colorMap;\n this._defaults = _defaults;\n this._root = _root;\n }\n static createFromRawTheme(source, colorMap) {\n return this.createFromParsedTheme(parseTheme(source), colorMap);\n }\n static createFromParsedTheme(source, colorMap) {\n return resolveParsedThemeRules(source, colorMap);\n }\n _cachedMatchRoot = new CachedFn(\n (scopeName) => this._root.match(scopeName)\n );\n getColorMap() {\n return this._colorMap.getColorMap();\n }\n getDefaults() {\n return this._defaults;\n }\n match(scopePath) {\n if (scopePath === null) {\n return this._defaults;\n }\n const scopeName = scopePath.scopeName;\n const matchingTrieElements = this._cachedMatchRoot.get(scopeName);\n const effectiveRule = matchingTrieElements.find(\n (v) => _scopePathMatchesParentScopes(scopePath.parent, v.parentScopes)\n );\n if (!effectiveRule) {\n return null;\n }\n return new StyleAttributes(\n effectiveRule.fontStyle,\n effectiveRule.foreground,\n effectiveRule.background\n );\n }\n};\nvar ScopeStack = class _ScopeStack {\n constructor(parent, scopeName) {\n this.parent = parent;\n this.scopeName = scopeName;\n }\n static push(path, scopeNames) {\n for (const name of scopeNames) {\n path = new _ScopeStack(path, name);\n }\n return path;\n }\n static from(...segments) {\n let result = null;\n for (let i = 0; i < segments.length; i++) {\n result = new _ScopeStack(result, segments[i]);\n }\n return result;\n }\n push(scopeName) {\n return new _ScopeStack(this, scopeName);\n }\n getSegments() {\n let item = this;\n const result = [];\n while (item) {\n result.push(item.scopeName);\n item = item.parent;\n }\n result.reverse();\n return result;\n }\n toString() {\n return this.getSegments().join(\" \");\n }\n extends(other) {\n if (this === other) {\n return true;\n }\n if (this.parent === null) {\n return false;\n }\n return this.parent.extends(other);\n }\n getExtensionIfDefined(base) {\n const result = [];\n let item = this;\n while (item && item !== base) {\n result.push(item.scopeName);\n item = item.parent;\n }\n return item === base ? result.reverse() : void 0;\n }\n};\nfunction _scopePathMatchesParentScopes(scopePath, parentScopes) {\n if (parentScopes.length === 0) {\n return true;\n }\n for (let index = 0; index < parentScopes.length; index++) {\n let scopePattern = parentScopes[index];\n let scopeMustMatch = false;\n if (scopePattern === \">\") {\n if (index === parentScopes.length - 1) {\n return false;\n }\n scopePattern = parentScopes[++index];\n scopeMustMatch = true;\n }\n while (scopePath) {\n if (_matchesScope(scopePath.scopeName, scopePattern)) {\n break;\n }\n if (scopeMustMatch) {\n return false;\n }\n scopePath = scopePath.parent;\n }\n if (!scopePath) {\n return false;\n }\n scopePath = scopePath.parent;\n }\n return true;\n}\nfunction _matchesScope(scopeName, scopePattern) {\n return scopePattern === scopeName || scopeName.startsWith(scopePattern) && scopeName[scopePattern.length] === \".\";\n}\nvar StyleAttributes = class {\n constructor(fontStyle, foregroundId, backgroundId) {\n this.fontStyle = fontStyle;\n this.foregroundId = foregroundId;\n this.backgroundId = backgroundId;\n }\n};\nfunction parseTheme(source) {\n if (!source) {\n return [];\n }\n if (!source.settings || !Array.isArray(source.settings)) {\n return [];\n }\n let settings = source.settings;\n let result = [], resultLen = 0;\n for (let i = 0, len = settings.length; i < len; i++) {\n let entry = settings[i];\n if (!entry.settings) {\n continue;\n }\n let scopes;\n if (typeof entry.scope === \"string\") {\n let _scope = entry.scope;\n _scope = _scope.replace(/^[,]+/, \"\");\n _scope = _scope.replace(/[,]+$/, \"\");\n scopes = _scope.split(\",\");\n } else if (Array.isArray(entry.scope)) {\n scopes = entry.scope;\n } else {\n scopes = [\"\"];\n }\n let fontStyle = -1 /* NotSet */;\n if (typeof entry.settings.fontStyle === \"string\") {\n fontStyle = 0 /* None */;\n let segments = entry.settings.fontStyle.split(\" \");\n for (let j = 0, lenJ = segments.length; j < lenJ; j++) {\n let segment = segments[j];\n switch (segment) {\n case \"italic\":\n fontStyle = fontStyle | 1 /* Italic */;\n break;\n case \"bold\":\n fontStyle = fontStyle | 2 /* Bold */;\n break;\n case \"underline\":\n fontStyle = fontStyle | 4 /* Underline */;\n break;\n case \"strikethrough\":\n fontStyle = fontStyle | 8 /* Strikethrough */;\n break;\n }\n }\n }\n let foreground = null;\n if (typeof entry.settings.foreground === \"string\" && isValidHexColor(entry.settings.foreground)) {\n foreground = entry.settings.foreground;\n }\n let background = null;\n if (typeof entry.settings.background === \"string\" && isValidHexColor(entry.settings.background)) {\n background = entry.settings.background;\n }\n for (let j = 0, lenJ = scopes.length; j < lenJ; j++) {\n let _scope = scopes[j].trim();\n let segments = _scope.split(\" \");\n let scope = segments[segments.length - 1];\n let parentScopes = null;\n if (segments.length > 1) {\n parentScopes = segments.slice(0, segments.length - 1);\n parentScopes.reverse();\n }\n result[resultLen++] = new ParsedThemeRule(\n scope,\n parentScopes,\n i,\n fontStyle,\n foreground,\n background\n );\n }\n }\n return result;\n}\nvar ParsedThemeRule = class {\n constructor(scope, parentScopes, index, fontStyle, foreground, background) {\n this.scope = scope;\n this.parentScopes = parentScopes;\n this.index = index;\n this.fontStyle = fontStyle;\n this.foreground = foreground;\n this.background = background;\n }\n};\nvar FontStyle = /* @__PURE__ */ ((FontStyle2) => {\n FontStyle2[FontStyle2[\"NotSet\"] = -1] = \"NotSet\";\n FontStyle2[FontStyle2[\"None\"] = 0] = \"None\";\n FontStyle2[FontStyle2[\"Italic\"] = 1] = \"Italic\";\n FontStyle2[FontStyle2[\"Bold\"] = 2] = \"Bold\";\n FontStyle2[FontStyle2[\"Underline\"] = 4] = \"Underline\";\n FontStyle2[FontStyle2[\"Strikethrough\"] = 8] = \"Strikethrough\";\n return FontStyle2;\n})(FontStyle || {});\nfunction resolveParsedThemeRules(parsedThemeRules, _colorMap) {\n parsedThemeRules.sort((a, b) => {\n let r = strcmp(a.scope, b.scope);\n if (r !== 0) {\n return r;\n }\n r = strArrCmp(a.parentScopes, b.parentScopes);\n if (r !== 0) {\n return r;\n }\n return a.index - b.index;\n });\n let defaultFontStyle = 0 /* None */;\n let defaultForeground = \"#000000\";\n let defaultBackground = \"#ffffff\";\n while (parsedThemeRules.length >= 1 && parsedThemeRules[0].scope === \"\") {\n let incomingDefaults = parsedThemeRules.shift();\n if (incomingDefaults.fontStyle !== -1 /* NotSet */) {\n defaultFontStyle = incomingDefaults.fontStyle;\n }\n if (incomingDefaults.foreground !== null) {\n defaultForeground = incomingDefaults.foreground;\n }\n if (incomingDefaults.background !== null) {\n defaultBackground = incomingDefaults.background;\n }\n }\n let colorMap = new ColorMap(_colorMap);\n let defaults = new StyleAttributes(defaultFontStyle, colorMap.getId(defaultForeground), colorMap.getId(defaultBackground));\n let root = new ThemeTrieElement(new ThemeTrieElementRule(0, null, -1 /* NotSet */, 0, 0), []);\n for (let i = 0, len = parsedThemeRules.length; i < len; i++) {\n let rule = parsedThemeRules[i];\n root.insert(0, rule.scope, rule.parentScopes, rule.fontStyle, colorMap.getId(rule.foreground), colorMap.getId(rule.background));\n }\n return new Theme(colorMap, defaults, root);\n}\nvar ColorMap = class {\n _isFrozen;\n _lastColorId;\n _id2color;\n _color2id;\n constructor(_colorMap) {\n this._lastColorId = 0;\n this._id2color = [];\n this._color2id = /* @__PURE__ */ Object.create(null);\n if (Array.isArray(_colorMap)) {\n this._isFrozen = true;\n for (let i = 0, len = _colorMap.length; i < len; i++) {\n this._color2id[_colorMap[i]] = i;\n this._id2color[i] = _colorMap[i];\n }\n } else {\n this._isFrozen = false;\n }\n }\n getId(color) {\n if (color === null) {\n return 0;\n }\n color = color.toUpperCase();\n let value = this._color2id[color];\n if (value) {\n return value;\n }\n if (this._isFrozen) {\n throw new Error(`Missing color in color map - ${color}`);\n }\n value = ++this._lastColorId;\n this._color2id[color] = value;\n this._id2color[value] = color;\n return value;\n }\n getColorMap() {\n return this._id2color.slice(0);\n }\n};\nvar emptyParentScopes = Object.freeze([]);\nvar ThemeTrieElementRule = class _ThemeTrieElementRule {\n scopeDepth;\n parentScopes;\n fontStyle;\n foreground;\n background;\n constructor(scopeDepth, parentScopes, fontStyle, foreground, background) {\n this.scopeDepth = scopeDepth;\n this.parentScopes = parentScopes || emptyParentScopes;\n this.fontStyle = fontStyle;\n this.foreground = foreground;\n this.background = background;\n }\n clone() {\n return new _ThemeTrieElementRule(this.scopeDepth, this.parentScopes, this.fontStyle, this.foreground, this.background);\n }\n static cloneArr(arr) {\n let r = [];\n for (let i = 0, len = arr.length; i < len; i++) {\n r[i] = arr[i].clone();\n }\n return r;\n }\n acceptOverwrite(scopeDepth, fontStyle, foreground, background) {\n if (this.scopeDepth > scopeDepth) {\n console.log(\"how did this happen?\");\n } else {\n this.scopeDepth = scopeDepth;\n }\n if (fontStyle !== -1 /* NotSet */) {\n this.fontStyle = fontStyle;\n }\n if (foreground !== 0) {\n this.foreground = foreground;\n }\n if (background !== 0) {\n this.background = background;\n }\n }\n};\nvar ThemeTrieElement = class _ThemeTrieElement {\n constructor(_mainRule, rulesWithParentScopes = [], _children = {}) {\n this._mainRule = _mainRule;\n this._children = _children;\n this._rulesWithParentScopes = rulesWithParentScopes;\n }\n _rulesWithParentScopes;\n static _cmpBySpecificity(a, b) {\n if (a.scopeDepth !== b.scopeDepth) {\n return b.scopeDepth - a.scopeDepth;\n }\n let aParentIndex = 0;\n let bParentIndex = 0;\n while (true) {\n if (a.parentScopes[aParentIndex] === \">\") {\n aParentIndex++;\n }\n if (b.parentScopes[bParentIndex] === \">\") {\n bParentIndex++;\n }\n if (aParentIndex >= a.parentScopes.length || bParentIndex >= b.parentScopes.length) {\n break;\n }\n const parentScopeLengthDiff = b.parentScopes[bParentIndex].length - a.parentScopes[aParentIndex].length;\n if (parentScopeLengthDiff !== 0) {\n return parentScopeLengthDiff;\n }\n aParentIndex++;\n bParentIndex++;\n }\n return b.parentScopes.length - a.parentScopes.length;\n }\n match(scope) {\n if (scope !== \"\") {\n let dotIndex = scope.indexOf(\".\");\n let head;\n let tail;\n if (dotIndex === -1) {\n head = scope;\n tail = \"\";\n } else {\n head = scope.substring(0, dotIndex);\n tail = scope.substring(dotIndex + 1);\n }\n if (this._children.hasOwnProperty(head)) {\n return this._children[head].match(tail);\n }\n }\n const rules = this._rulesWithParentScopes.concat(this._mainRule);\n rules.sort(_ThemeTrieElement._cmpBySpecificity);\n return rules;\n }\n insert(scopeDepth, scope, parentScopes, fontStyle, foreground, background) {\n if (scope === \"\") {\n this._doInsertHere(scopeDepth, parentScopes, fontStyle, foreground, background);\n return;\n }\n let dotIndex = scope.indexOf(\".\");\n let head;\n let tail;\n if (dotIndex === -1) {\n head = scope;\n tail = \"\";\n } else {\n head = scope.substring(0, dotIndex);\n tail = scope.substring(dotIndex + 1);\n }\n let child;\n if (this._children.hasOwnProperty(head)) {\n child = this._children[head];\n } else {\n child = new _ThemeTrieElement(this._mainRule.clone(), ThemeTrieElementRule.cloneArr(this._rulesWithParentScopes));\n this._children[head] = child;\n }\n child.insert(scopeDepth + 1, tail, parentScopes, fontStyle, foreground, background);\n }\n _doInsertHere(scopeDepth, parentScopes, fontStyle, foreground, background) {\n if (parentScopes === null) {\n this._mainRule.acceptOverwrite(scopeDepth, fontStyle, foreground, background);\n return;\n }\n for (let i = 0, len = this._rulesWithParentScopes.length; i < len; i++) {\n let rule = this._rulesWithParentScopes[i];\n if (strArrCmp(rule.parentScopes, parentScopes) === 0) {\n rule.acceptOverwrite(scopeDepth, fontStyle, foreground, background);\n return;\n }\n }\n if (fontStyle === -1 /* NotSet */) {\n fontStyle = this._mainRule.fontStyle;\n }\n if (foreground === 0) {\n foreground = this._mainRule.foreground;\n }\n if (background === 0) {\n background = this._mainRule.background;\n }\n this._rulesWithParentScopes.push(new ThemeTrieElementRule(scopeDepth, parentScopes, fontStyle, foreground, background));\n }\n};\n\n// src/encodedTokenAttributes.ts\nvar EncodedTokenMetadata = class _EncodedTokenMetadata {\n static toBinaryStr(encodedTokenAttributes) {\n return encodedTokenAttributes.toString(2).padStart(32, \"0\");\n }\n static print(encodedTokenAttributes) {\n const languageId = _EncodedTokenMetadata.getLanguageId(encodedTokenAttributes);\n const tokenType = _EncodedTokenMetadata.getTokenType(encodedTokenAttributes);\n const fontStyle = _EncodedTokenMetadata.getFontStyle(encodedTokenAttributes);\n const foreground = _EncodedTokenMetadata.getForeground(encodedTokenAttributes);\n const background = _EncodedTokenMetadata.getBackground(encodedTokenAttributes);\n console.log({\n languageId,\n tokenType,\n fontStyle,\n foreground,\n background\n });\n }\n static getLanguageId(encodedTokenAttributes) {\n return (encodedTokenAttributes & 255 /* LANGUAGEID_MASK */) >>> 0 /* LANGUAGEID_OFFSET */;\n }\n static getTokenType(encodedTokenAttributes) {\n return (encodedTokenAttributes & 768 /* TOKEN_TYPE_MASK */) >>> 8 /* TOKEN_TYPE_OFFSET */;\n }\n static containsBalancedBrackets(encodedTokenAttributes) {\n return (encodedTokenAttributes & 1024 /* BALANCED_BRACKETS_MASK */) !== 0;\n }\n static getFontStyle(encodedTokenAttributes) {\n return (encodedTokenAttributes & 30720 /* FONT_STYLE_MASK */) >>> 11 /* FONT_STYLE_OFFSET */;\n }\n static getForeground(encodedTokenAttributes) {\n return (encodedTokenAttributes & 16744448 /* FOREGROUND_MASK */) >>> 15 /* FOREGROUND_OFFSET */;\n }\n static getBackground(encodedTokenAttributes) {\n return (encodedTokenAttributes & 4278190080 /* BACKGROUND_MASK */) >>> 24 /* BACKGROUND_OFFSET */;\n }\n /**\n * Updates the fields in `metadata`.\n * A value of `0`, `NotSet` or `null` indicates that the corresponding field should be left as is.\n */\n static set(encodedTokenAttributes, languageId, tokenType, containsBalancedBrackets, fontStyle, foreground, background) {\n let _languageId = _EncodedTokenMetadata.getLanguageId(encodedTokenAttributes);\n let _tokenType = _EncodedTokenMetadata.getTokenType(encodedTokenAttributes);\n let _containsBalancedBracketsBit = _EncodedTokenMetadata.containsBalancedBrackets(encodedTokenAttributes) ? 1 : 0;\n let _fontStyle = _EncodedTokenMetadata.getFontStyle(encodedTokenAttributes);\n let _foreground = _EncodedTokenMetadata.getForeground(encodedTokenAttributes);\n let _background = _EncodedTokenMetadata.getBackground(encodedTokenAttributes);\n if (languageId !== 0) {\n _languageId = languageId;\n }\n if (tokenType !== 8 /* NotSet */) {\n _tokenType = fromOptionalTokenType(tokenType);\n }\n if (containsBalancedBrackets !== null) {\n _containsBalancedBracketsBit = containsBalancedBrackets ? 1 : 0;\n }\n if (fontStyle !== -1 /* NotSet */) {\n _fontStyle = fontStyle;\n }\n if (foreground !== 0) {\n _foreground = foreground;\n }\n if (background !== 0) {\n _background = background;\n }\n return (_languageId << 0 /* LANGUAGEID_OFFSET */ | _tokenType << 8 /* TOKEN_TYPE_OFFSET */ | _containsBalancedBracketsBit << 10 /* BALANCED_BRACKETS_OFFSET */ | _fontStyle << 11 /* FONT_STYLE_OFFSET */ | _foreground << 15 /* FOREGROUND_OFFSET */ | _background << 24 /* BACKGROUND_OFFSET */) >>> 0;\n }\n};\nfunction toOptionalTokenType(standardType) {\n return standardType;\n}\nfunction fromOptionalTokenType(standardType) {\n return standardType;\n}\n\n// src/matcher.ts\nfunction createMatchers(selector, matchesName) {\n const results = [];\n const tokenizer = newTokenizer(selector);\n let token = tokenizer.next();\n while (token !== null) {\n let priority = 0;\n if (token.length === 2 && token.charAt(1) === \":\") {\n switch (token.charAt(0)) {\n case \"R\":\n priority = 1;\n break;\n case \"L\":\n priority = -1;\n break;\n default:\n console.log(`Unknown priority ${token} in scope selector`);\n }\n token = tokenizer.next();\n }\n let matcher = parseConjunction();\n results.push({ matcher, priority });\n if (token !== \",\") {\n break;\n }\n token = tokenizer.next();\n }\n return results;\n function parseOperand() {\n if (token === \"-\") {\n token = tokenizer.next();\n const expressionToNegate = parseOperand();\n return (matcherInput) => !!expressionToNegate && !expressionToNegate(matcherInput);\n }\n if (token === \"(\") {\n token = tokenizer.next();\n const expressionInParents = parseInnerExpression();\n if (token === \")\") {\n token = tokenizer.next();\n }\n return expressionInParents;\n }\n if (isIdentifier(token)) {\n const identifiers = [];\n do {\n identifiers.push(token);\n token = tokenizer.next();\n } while (isIdentifier(token));\n return (matcherInput) => matchesName(identifiers, matcherInput);\n }\n return null;\n }\n function parseConjunction() {\n const matchers = [];\n let matcher = parseOperand();\n while (matcher) {\n matchers.push(matcher);\n matcher = parseOperand();\n }\n return (matcherInput) => matchers.every((matcher2) => matcher2(matcherInput));\n }\n function parseInnerExpression() {\n const matchers = [];\n let matcher = parseConjunction();\n while (matcher) {\n matchers.push(matcher);\n if (token === \"|\" || token === \",\") {\n do {\n token = tokenizer.next();\n } while (token === \"|\" || token === \",\");\n } else {\n break;\n }\n matcher = parseConjunction();\n }\n return (matcherInput) => matchers.some((matcher2) => matcher2(matcherInput));\n }\n}\nfunction isIdentifier(token) {\n return !!token && !!token.match(/[\\w\\.:]+/);\n}\nfunction newTokenizer(input) {\n let regex = /([LR]:|[\\w\\.:][\\w\\.:\\-]*|[\\,\\|\\-\\(\\)])/g;\n let match = regex.exec(input);\n return {\n next: () => {\n if (!match) {\n return null;\n }\n const res = match[0];\n match = regex.exec(input);\n return res;\n }\n };\n}\n\n// src/onigLib.ts\nvar FindOption = /* @__PURE__ */ ((FindOption2) => {\n FindOption2[FindOption2[\"None\"] = 0] = \"None\";\n FindOption2[FindOption2[\"NotBeginString\"] = 1] = \"NotBeginString\";\n FindOption2[FindOption2[\"NotEndString\"] = 2] = \"NotEndString\";\n FindOption2[FindOption2[\"NotBeginPosition\"] = 4] = \"NotBeginPosition\";\n FindOption2[FindOption2[\"DebugCall\"] = 8] = \"DebugCall\";\n return FindOption2;\n})(FindOption || {});\nfunction disposeOnigString(str) {\n if (typeof str.dispose === \"function\") {\n str.dispose();\n }\n}\n\n// src/grammar/grammarDependencies.ts\nvar TopLevelRuleReference = class {\n constructor(scopeName) {\n this.scopeName = scopeName;\n }\n toKey() {\n return this.scopeName;\n }\n};\nvar TopLevelRepositoryRuleReference = class {\n constructor(scopeName, ruleName) {\n this.scopeName = scopeName;\n this.ruleName = ruleName;\n }\n toKey() {\n return `${this.scopeName}#${this.ruleName}`;\n }\n};\nvar ExternalReferenceCollector = class {\n _references = [];\n _seenReferenceKeys = /* @__PURE__ */ new Set();\n get references() {\n return this._references;\n }\n visitedRule = /* @__PURE__ */ new Set();\n add(reference) {\n const key = reference.toKey();\n if (this._seenReferenceKeys.has(key)) {\n return;\n }\n this._seenReferenceKeys.add(key);\n this._references.push(reference);\n }\n};\nvar ScopeDependencyProcessor = class {\n constructor(repo, initialScopeName) {\n this.repo = repo;\n this.initialScopeName = initialScopeName;\n this.seenFullScopeRequests.add(this.initialScopeName);\n this.Q = [new TopLevelRuleReference(this.initialScopeName)];\n }\n seenFullScopeRequests = /* @__PURE__ */ new Set();\n seenPartialScopeRequests = /* @__PURE__ */ new Set();\n Q;\n processQueue() {\n const q = this.Q;\n this.Q = [];\n const deps = new ExternalReferenceCollector();\n for (const dep of q) {\n collectReferencesOfReference(dep, this.initialScopeName, this.repo, deps);\n }\n for (const dep of deps.references) {\n if (dep instanceof TopLevelRuleReference) {\n if (this.seenFullScopeRequests.has(dep.scopeName)) {\n continue;\n }\n this.seenFullScopeRequests.add(dep.scopeName);\n this.Q.push(dep);\n } else {\n if (this.seenFullScopeRequests.has(dep.scopeName)) {\n continue;\n }\n if (this.seenPartialScopeRequests.has(dep.toKey())) {\n continue;\n }\n this.seenPartialScopeRequests.add(dep.toKey());\n this.Q.push(dep);\n }\n }\n }\n};\nfunction collectReferencesOfReference(reference, baseGrammarScopeName, repo, result) {\n const selfGrammar = repo.lookup(reference.scopeName);\n if (!selfGrammar) {\n if (reference.scopeName === baseGrammarScopeName) {\n throw new Error(`No grammar provided for <${baseGrammarScopeName}>`);\n }\n return;\n }\n const baseGrammar = repo.lookup(baseGrammarScopeName);\n if (reference instanceof TopLevelRuleReference) {\n collectExternalReferencesInTopLevelRule({ baseGrammar, selfGrammar }, result);\n } else {\n collectExternalReferencesInTopLevelRepositoryRule(\n reference.ruleName,\n { baseGrammar, selfGrammar, repository: selfGrammar.repository },\n result\n );\n }\n const injections = repo.injections(reference.scopeName);\n if (injections) {\n for (const injection of injections) {\n result.add(new TopLevelRuleReference(injection));\n }\n }\n}\nfunction collectExternalReferencesInTopLevelRepositoryRule(ruleName, context, result) {\n if (context.repository && context.repository[ruleName]) {\n const rule = context.repository[ruleName];\n collectExternalReferencesInRules([rule], context, result);\n }\n}\nfunction collectExternalReferencesInTopLevelRule(context, result) {\n if (context.selfGrammar.patterns && Array.isArray(context.selfGrammar.patterns)) {\n collectExternalReferencesInRules(\n context.selfGrammar.patterns,\n { ...context, repository: context.selfGrammar.repository },\n result\n );\n }\n if (context.selfGrammar.injections) {\n collectExternalReferencesInRules(\n Object.values(context.selfGrammar.injections),\n { ...context, repository: context.selfGrammar.repository },\n result\n );\n }\n}\nfunction collectExternalReferencesInRules(rules, context, result) {\n for (const rule of rules) {\n if (result.visitedRule.has(rule)) {\n continue;\n }\n result.visitedRule.add(rule);\n const patternRepository = rule.repository ? mergeObjects({}, context.repository, rule.repository) : context.repository;\n if (Array.isArray(rule.patterns)) {\n collectExternalReferencesInRules(rule.patterns, { ...context, repository: patternRepository }, result);\n }\n const include = rule.include;\n if (!include) {\n continue;\n }\n const reference = parseInclude(include);\n switch (reference.kind) {\n case 0 /* Base */:\n collectExternalReferencesInTopLevelRule({ ...context, selfGrammar: context.baseGrammar }, result);\n break;\n case 1 /* Self */:\n collectExternalReferencesInTopLevelRule(context, result);\n break;\n case 2 /* RelativeReference */:\n collectExternalReferencesInTopLevelRepositoryRule(reference.ruleName, { ...context, repository: patternRepository }, result);\n break;\n case 3 /* TopLevelReference */:\n case 4 /* TopLevelRepositoryReference */:\n const selfGrammar = reference.scopeName === context.selfGrammar.scopeName ? context.selfGrammar : reference.scopeName === context.baseGrammar.scopeName ? context.baseGrammar : void 0;\n if (selfGrammar) {\n const newContext = { baseGrammar: context.baseGrammar, selfGrammar, repository: patternRepository };\n if (reference.kind === 4 /* TopLevelRepositoryReference */) {\n collectExternalReferencesInTopLevelRepositoryRule(reference.ruleName, newContext, result);\n } else {\n collectExternalReferencesInTopLevelRule(newContext, result);\n }\n } else {\n if (reference.kind === 4 /* TopLevelRepositoryReference */) {\n result.add(new TopLevelRepositoryRuleReference(reference.scopeName, reference.ruleName));\n } else {\n result.add(new TopLevelRuleReference(reference.scopeName));\n }\n }\n break;\n }\n }\n}\nvar BaseReference = class {\n kind = 0 /* Base */;\n};\nvar SelfReference = class {\n kind = 1 /* Self */;\n};\nvar RelativeReference = class {\n constructor(ruleName) {\n this.ruleName = ruleName;\n }\n kind = 2 /* RelativeReference */;\n};\nvar TopLevelReference = class {\n constructor(scopeName) {\n this.scopeName = scopeName;\n }\n kind = 3 /* TopLevelReference */;\n};\nvar TopLevelRepositoryReference = class {\n constructor(scopeName, ruleName) {\n this.scopeName = scopeName;\n this.ruleName = ruleName;\n }\n kind = 4 /* TopLevelRepositoryReference */;\n};\nfunction parseInclude(include) {\n if (include === \"$base\") {\n return new BaseReference();\n } else if (include === \"$self\") {\n return new SelfReference();\n }\n const indexOfSharp = include.indexOf(\"#\");\n if (indexOfSharp === -1) {\n return new TopLevelReference(include);\n } else if (indexOfSharp === 0) {\n return new RelativeReference(include.substring(1));\n } else {\n const scopeName = include.substring(0, indexOfSharp);\n const ruleName = include.substring(indexOfSharp + 1);\n return new TopLevelRepositoryReference(scopeName, ruleName);\n }\n}\n\n// src/rule.ts\nvar HAS_BACK_REFERENCES = /\\\\(\\d+)/;\nvar BACK_REFERENCING_END = /\\\\(\\d+)/g;\nvar ruleIdSymbol = Symbol(\"RuleId\");\nvar endRuleId = -1;\nvar whileRuleId = -2;\nfunction ruleIdFromNumber(id) {\n return id;\n}\nfunction ruleIdToNumber(id) {\n return id;\n}\nvar Rule = class {\n $location;\n id;\n _nameIsCapturing;\n _name;\n _contentNameIsCapturing;\n _contentName;\n constructor($location, id, name, contentName) {\n this.$location = $location;\n this.id = id;\n this._name = name || null;\n this._nameIsCapturing = RegexSource.hasCaptures(this._name);\n this._contentName = contentName || null;\n this._contentNameIsCapturing = RegexSource.hasCaptures(this._contentName);\n }\n get debugName() {\n const location = this.$location ? `${basename(this.$location.filename)}:${this.$location.line}` : \"unknown\";\n return `${this.constructor.name}#${this.id} @ ${location}`;\n }\n getName(lineText, captureIndices) {\n if (!this._nameIsCapturing || this._name === null || lineText === null || captureIndices === null) {\n return this._name;\n }\n return RegexSource.replaceCaptures(this._name, lineText, captureIndices);\n }\n getContentName(lineText, captureIndices) {\n if (!this._contentNameIsCapturing || this._contentName === null) {\n return this._contentName;\n }\n return RegexSource.replaceCaptures(this._contentName, lineText, captureIndices);\n }\n};\nvar CaptureRule = class extends Rule {\n retokenizeCapturedWithRuleId;\n constructor($location, id, name, contentName, retokenizeCapturedWithRuleId) {\n super($location, id, name, contentName);\n this.retokenizeCapturedWithRuleId = retokenizeCapturedWithRuleId;\n }\n dispose() {\n }\n collectPatterns(grammar, out) {\n throw new Error(\"Not supported!\");\n }\n compile(grammar, endRegexSource) {\n throw new Error(\"Not supported!\");\n }\n compileAG(grammar, endRegexSource, allowA, allowG) {\n throw new Error(\"Not supported!\");\n }\n};\nvar MatchRule = class extends Rule {\n _match;\n captures;\n _cachedCompiledPatterns;\n constructor($location, id, name, match, captures) {\n super($location, id, name, null);\n this._match = new RegExpSource(match, this.id);\n this.captures = captures;\n this._cachedCompiledPatterns = null;\n }\n dispose() {\n if (this._cachedCompiledPatterns) {\n this._cachedCompiledPatterns.dispose();\n this._cachedCompiledPatterns = null;\n }\n }\n get debugMatchRegExp() {\n return `${this._match.source}`;\n }\n collectPatterns(grammar, out) {\n out.push(this._match);\n }\n compile(grammar, endRegexSource) {\n return this._getCachedCompiledPatterns(grammar).compile(grammar);\n }\n compileAG(grammar, endRegexSource, allowA, allowG) {\n return this._getCachedCompiledPatterns(grammar).compileAG(grammar, allowA, allowG);\n }\n _getCachedCompiledPatterns(grammar) {\n if (!this._cachedCompiledPatterns) {\n this._cachedCompiledPatterns = new RegExpSourceList();\n this.collectPatterns(grammar, this._cachedCompiledPatterns);\n }\n return this._cachedCompiledPatterns;\n }\n};\nvar IncludeOnlyRule = class extends Rule {\n hasMissingPatterns;\n patterns;\n _cachedCompiledPatterns;\n constructor($location, id, name, contentName, patterns) {\n super($location, id, name, contentName);\n this.patterns = patterns.patterns;\n this.hasMissingPatterns = patterns.hasMissingPatterns;\n this._cachedCompiledPatterns = null;\n }\n dispose() {\n if (this._cachedCompiledPatterns) {\n this._cachedCompiledPatterns.dispose();\n this._cachedCompiledPatterns = null;\n }\n }\n collectPatterns(grammar, out) {\n for (const pattern of this.patterns) {\n const rule = grammar.getRule(pattern);\n rule.collectPatterns(grammar, out);\n }\n }\n compile(grammar, endRegexSource) {\n return this._getCachedCompiledPatterns(grammar).compile(grammar);\n }\n compileAG(grammar, endRegexSource, allowA, allowG) {\n return this._getCachedCompiledPatterns(grammar).compileAG(grammar, allowA, allowG);\n }\n _getCachedCompiledPatterns(grammar) {\n if (!this._cachedCompiledPatterns) {\n this._cachedCompiledPatterns = new RegExpSourceList();\n this.collectPatterns(grammar, this._cachedCompiledPatterns);\n }\n return this._cachedCompiledPatterns;\n }\n};\nvar BeginEndRule = class extends Rule {\n _begin;\n beginCaptures;\n _end;\n endHasBackReferences;\n endCaptures;\n applyEndPatternLast;\n hasMissingPatterns;\n patterns;\n _cachedCompiledPatterns;\n constructor($location, id, name, contentName, begin, beginCaptures, end, endCaptures, applyEndPatternLast, patterns) {\n super($location, id, name, contentName);\n this._begin = new RegExpSource(begin, this.id);\n this.beginCaptures = beginCaptures;\n this._end = new RegExpSource(end ? end : \"\\uFFFF\", -1);\n this.endHasBackReferences = this._end.hasBackReferences;\n this.endCaptures = endCaptures;\n this.applyEndPatternLast = applyEndPatternLast || false;\n this.patterns = patterns.patterns;\n this.hasMissingPatterns = patterns.hasMissingPatterns;\n this._cachedCompiledPatterns = null;\n }\n dispose() {\n if (this._cachedCompiledPatterns) {\n this._cachedCompiledPatterns.dispose();\n this._cachedCompiledPatterns = null;\n }\n }\n get debugBeginRegExp() {\n return `${this._begin.source}`;\n }\n get debugEndRegExp() {\n return `${this._end.source}`;\n }\n getEndWithResolvedBackReferences(lineText, captureIndices) {\n return this._end.resolveBackReferences(lineText, captureIndices);\n }\n collectPatterns(grammar, out) {\n out.push(this._begin);\n }\n compile(grammar, endRegexSource) {\n return this._getCachedCompiledPatterns(grammar, endRegexSource).compile(grammar);\n }\n compileAG(grammar, endRegexSource, allowA, allowG) {\n return this._getCachedCompiledPatterns(grammar, endRegexSource).compileAG(grammar, allowA, allowG);\n }\n _getCachedCompiledPatterns(grammar, endRegexSource) {\n if (!this._cachedCompiledPatterns) {\n this._cachedCompiledPatterns = new RegExpSourceList();\n for (const pattern of this.patterns) {\n const rule = grammar.getRule(pattern);\n rule.collectPatterns(grammar, this._cachedCompiledPatterns);\n }\n if (this.applyEndPatternLast) {\n this._cachedCompiledPatterns.push(this._end.hasBackReferences ? this._end.clone() : this._end);\n } else {\n this._cachedCompiledPatterns.unshift(this._end.hasBackReferences ? this._end.clone() : this._end);\n }\n }\n if (this._end.hasBackReferences) {\n if (this.applyEndPatternLast) {\n this._cachedCompiledPatterns.setSource(this._cachedCompiledPatterns.length() - 1, endRegexSource);\n } else {\n this._cachedCompiledPatterns.setSource(0, endRegexSource);\n }\n }\n return this._cachedCompiledPatterns;\n }\n};\nvar BeginWhileRule = class extends Rule {\n _begin;\n beginCaptures;\n whileCaptures;\n _while;\n whileHasBackReferences;\n hasMissingPatterns;\n patterns;\n _cachedCompiledPatterns;\n _cachedCompiledWhilePatterns;\n constructor($location, id, name, contentName, begin, beginCaptures, _while, whileCaptures, patterns) {\n super($location, id, name, contentName);\n this._begin = new RegExpSource(begin, this.id);\n this.beginCaptures = beginCaptures;\n this.whileCaptures = whileCaptures;\n this._while = new RegExpSource(_while, whileRuleId);\n this.whileHasBackReferences = this._while.hasBackReferences;\n this.patterns = patterns.patterns;\n this.hasMissingPatterns = patterns.hasMissingPatterns;\n this._cachedCompiledPatterns = null;\n this._cachedCompiledWhilePatterns = null;\n }\n dispose() {\n if (this._cachedCompiledPatterns) {\n this._cachedCompiledPatterns.dispose();\n this._cachedCompiledPatterns = null;\n }\n if (this._cachedCompiledWhilePatterns) {\n this._cachedCompiledWhilePatterns.dispose();\n this._cachedCompiledWhilePatterns = null;\n }\n }\n get debugBeginRegExp() {\n return `${this._begin.source}`;\n }\n get debugWhileRegExp() {\n return `${this._while.source}`;\n }\n getWhileWithResolvedBackReferences(lineText, captureIndices) {\n return this._while.resolveBackReferences(lineText, captureIndices);\n }\n collectPatterns(grammar, out) {\n out.push(this._begin);\n }\n compile(grammar, endRegexSource) {\n return this._getCachedCompiledPatterns(grammar).compile(grammar);\n }\n compileAG(grammar, endRegexSource, allowA, allowG) {\n return this._getCachedCompiledPatterns(grammar).compileAG(grammar, allowA, allowG);\n }\n _getCachedCompiledPatterns(grammar) {\n if (!this._cachedCompiledPatterns) {\n this._cachedCompiledPatterns = new RegExpSourceList();\n for (const pattern of this.patterns) {\n const rule = grammar.getRule(pattern);\n rule.collectPatterns(grammar, this._cachedCompiledPatterns);\n }\n }\n return this._cachedCompiledPatterns;\n }\n compileWhile(grammar, endRegexSource) {\n return this._getCachedCompiledWhilePatterns(grammar, endRegexSource).compile(grammar);\n }\n compileWhileAG(grammar, endRegexSource, allowA, allowG) {\n return this._getCachedCompiledWhilePatterns(grammar, endRegexSource).compileAG(grammar, allowA, allowG);\n }\n _getCachedCompiledWhilePatterns(grammar, endRegexSource) {\n if (!this._cachedCompiledWhilePatterns) {\n this._cachedCompiledWhilePatterns = new RegExpSourceList();\n this._cachedCompiledWhilePatterns.push(this._while.hasBackReferences ? this._while.clone() : this._while);\n }\n if (this._while.hasBackReferences) {\n this._cachedCompiledWhilePatterns.setSource(0, endRegexSource ? endRegexSource : \"\\uFFFF\");\n }\n return this._cachedCompiledWhilePatterns;\n }\n};\nvar RuleFactory = class _RuleFactory {\n static createCaptureRule(helper, $location, name, contentName, retokenizeCapturedWithRuleId) {\n return helper.registerRule((id) => {\n return new CaptureRule($location, id, name, contentName, retokenizeCapturedWithRuleId);\n });\n }\n static getCompiledRuleId(desc, helper, repository) {\n if (!desc.id) {\n helper.registerRule((id) => {\n desc.id = id;\n if (desc.match) {\n return new MatchRule(\n desc.$vscodeTextmateLocation,\n desc.id,\n desc.name,\n desc.match,\n _RuleFactory._compileCaptures(desc.captures, helper, repository)\n );\n }\n if (typeof desc.begin === \"undefined\") {\n if (desc.repository) {\n repository = mergeObjects({}, repository, desc.repository);\n }\n let patterns = desc.patterns;\n if (typeof patterns === \"undefined\" && desc.include) {\n patterns = [{ include: desc.include }];\n }\n return new IncludeOnlyRule(\n desc.$vscodeTextmateLocation,\n desc.id,\n desc.name,\n desc.contentName,\n _RuleFactory._compilePatterns(patterns, helper, repository)\n );\n }\n if (desc.while) {\n return new BeginWhileRule(\n desc.$vscodeTextmateLocation,\n desc.id,\n desc.name,\n desc.contentName,\n desc.begin,\n _RuleFactory._compileCaptures(desc.beginCaptures || desc.captures, helper, repository),\n desc.while,\n _RuleFactory._compileCaptures(desc.whileCaptures || desc.captures, helper, repository),\n _RuleFactory._compilePatterns(desc.patterns, helper, repository)\n );\n }\n return new BeginEndRule(\n desc.$vscodeTextmateLocation,\n desc.id,\n desc.name,\n desc.contentName,\n desc.begin,\n _RuleFactory._compileCaptures(desc.beginCaptures || desc.captures, helper, repository),\n desc.end,\n _RuleFactory._compileCaptures(desc.endCaptures || desc.captures, helper, repository),\n desc.applyEndPatternLast,\n _RuleFactory._compilePatterns(desc.patterns, helper, repository)\n );\n });\n }\n return desc.id;\n }\n static _compileCaptures(captures, helper, repository) {\n let r = [];\n if (captures) {\n let maximumCaptureId = 0;\n for (const captureId in captures) {\n if (captureId === \"$vscodeTextmateLocation\") {\n continue;\n }\n const numericCaptureId = parseInt(captureId, 10);\n if (numericCaptureId > maximumCaptureId) {\n maximumCaptureId = numericCaptureId;\n }\n }\n for (let i = 0; i <= maximumCaptureId; i++) {\n r[i] = null;\n }\n for (const captureId in captures) {\n if (captureId === \"$vscodeTextmateLocation\") {\n continue;\n }\n const numericCaptureId = parseInt(captureId, 10);\n let retokenizeCapturedWithRuleId = 0;\n if (captures[captureId].patterns) {\n retokenizeCapturedWithRuleId = _RuleFactory.getCompiledRuleId(captures[captureId], helper, repository);\n }\n r[numericCaptureId] = _RuleFactory.createCaptureRule(helper, captures[captureId].$vscodeTextmateLocation, captures[captureId].name, captures[captureId].contentName, retokenizeCapturedWithRuleId);\n }\n }\n return r;\n }\n static _compilePatterns(patterns, helper, repository) {\n let r = [];\n if (patterns) {\n for (let i = 0, len = patterns.length; i < len; i++) {\n const pattern = patterns[i];\n let ruleId = -1;\n if (pattern.include) {\n const reference = parseInclude(pattern.include);\n switch (reference.kind) {\n case 0 /* Base */:\n case 1 /* Self */:\n ruleId = _RuleFactory.getCompiledRuleId(repository[pattern.include], helper, repository);\n break;\n case 2 /* RelativeReference */:\n let localIncludedRule = repository[reference.ruleName];\n if (localIncludedRule) {\n ruleId = _RuleFactory.getCompiledRuleId(localIncludedRule, helper, repository);\n } else {\n }\n break;\n case 3 /* TopLevelReference */:\n case 4 /* TopLevelRepositoryReference */:\n const externalGrammarName = reference.scopeName;\n const externalGrammarInclude = reference.kind === 4 /* TopLevelRepositoryReference */ ? reference.ruleName : null;\n const externalGrammar = helper.getExternalGrammar(externalGrammarName, repository);\n if (externalGrammar) {\n if (externalGrammarInclude) {\n let externalIncludedRule = externalGrammar.repository[externalGrammarInclude];\n if (externalIncludedRule) {\n ruleId = _RuleFactory.getCompiledRuleId(externalIncludedRule, helper, externalGrammar.repository);\n } else {\n }\n } else {\n ruleId = _RuleFactory.getCompiledRuleId(externalGrammar.repository.$self, helper, externalGrammar.repository);\n }\n } else {\n }\n break;\n }\n } else {\n ruleId = _RuleFactory.getCompiledRuleId(pattern, helper, repository);\n }\n if (ruleId !== -1) {\n const rule = helper.getRule(ruleId);\n let skipRule = false;\n if (rule instanceof IncludeOnlyRule || rule instanceof BeginEndRule || rule instanceof BeginWhileRule) {\n if (rule.hasMissingPatterns && rule.patterns.length === 0) {\n skipRule = true;\n }\n }\n if (skipRule) {\n continue;\n }\n r.push(ruleId);\n }\n }\n }\n return {\n patterns: r,\n hasMissingPatterns: (patterns ? patterns.length : 0) !== r.length\n };\n }\n};\nvar RegExpSource = class _RegExpSource {\n source;\n ruleId;\n hasAnchor;\n hasBackReferences;\n _anchorCache;\n constructor(regExpSource, ruleId) {\n if (regExpSource && typeof regExpSource === \"string\") {\n const len = regExpSource.length;\n let lastPushedPos = 0;\n let output = [];\n let hasAnchor = false;\n for (let pos = 0; pos < len; pos++) {\n const ch = regExpSource.charAt(pos);\n if (ch === \"\\\\\") {\n if (pos + 1 < len) {\n const nextCh = regExpSource.charAt(pos + 1);\n if (nextCh === \"z\") {\n output.push(regExpSource.substring(lastPushedPos, pos));\n output.push(\"$(?!\\\\n)(?<!\\\\n)\");\n lastPushedPos = pos + 2;\n } else if (nextCh === \"A\" || nextCh === \"G\") {\n hasAnchor = true;\n }\n pos++;\n }\n }\n }\n this.hasAnchor = hasAnchor;\n if (lastPushedPos === 0) {\n this.source = regExpSource;\n } else {\n output.push(regExpSource.substring(lastPushedPos, len));\n this.source = output.join(\"\");\n }\n } else {\n this.hasAnchor = false;\n this.source = regExpSource;\n }\n if (this.hasAnchor) {\n this._anchorCache = this._buildAnchorCache();\n } else {\n this._anchorCache = null;\n }\n this.ruleId = ruleId;\n if (typeof this.source === \"string\") {\n this.hasBackReferences = HAS_BACK_REFERENCES.test(this.source);\n } else {\n this.hasBackReferences = false;\n }\n }\n clone() {\n return new _RegExpSource(this.source, this.ruleId);\n }\n setSource(newSource) {\n if (this.source === newSource) {\n return;\n }\n this.source = newSource;\n if (this.hasAnchor) {\n this._anchorCache = this._buildAnchorCache();\n }\n }\n resolveBackReferences(lineText, captureIndices) {\n if (typeof this.source !== \"string\") {\n throw new Error(\"This method should only be called if the source is a string\");\n }\n let capturedValues = captureIndices.map((capture) => {\n return lineText.substring(capture.start, capture.end);\n });\n BACK_REFERENCING_END.lastIndex = 0;\n return this.source.replace(BACK_REFERENCING_END, (match, g1) => {\n return escapeRegExpCharacters(capturedValues[parseInt(g1, 10)] || \"\");\n });\n }\n _buildAnchorCache() {\n if (typeof this.source !== \"string\") {\n throw new Error(\"This method should only be called if the source is a string\");\n }\n let A0_G0_result = [];\n let A0_G1_result = [];\n let A1_G0_result = [];\n let A1_G1_result = [];\n let pos, len, ch, nextCh;\n for (pos = 0, len = this.source.length; pos < len; pos++) {\n ch = this.source.charAt(pos);\n A0_G0_result[pos] = ch;\n A0_G1_result[pos] = ch;\n A1_G0_result[pos] = ch;\n A1_G1_result[pos] = ch;\n if (ch === \"\\\\\") {\n if (pos + 1 < len) {\n nextCh = this.source.charAt(pos + 1);\n if (nextCh === \"A\") {\n A0_G0_result[pos + 1] = \"\\uFFFF\";\n A0_G1_result[pos + 1] = \"\\uFFFF\";\n A1_G0_result[pos + 1] = \"A\";\n A1_G1_result[pos + 1] = \"A\";\n } else if (nextCh === \"G\") {\n A0_G0_result[pos + 1] = \"\\uFFFF\";\n A0_G1_result[pos + 1] = \"G\";\n A1_G0_result[pos + 1] = \"\\uFFFF\";\n A1_G1_result[pos + 1] = \"G\";\n } else {\n A0_G0_result[pos + 1] = nextCh;\n A0_G1_result[pos + 1] = nextCh;\n A1_G0_result[pos + 1] = nextCh;\n A1_G1_result[pos + 1] = nextCh;\n }\n pos++;\n }\n }\n }\n return {\n A0_G0: A0_G0_result.join(\"\"),\n A0_G1: A0_G1_result.join(\"\"),\n A1_G0: A1_G0_result.join(\"\"),\n A1_G1: A1_G1_result.join(\"\")\n };\n }\n resolveAnchors(allowA, allowG) {\n if (!this.hasAnchor || !this._anchorCache || typeof this.source !== \"string\") {\n return this.source;\n }\n if (allowA) {\n if (allowG) {\n return this._anchorCache.A1_G1;\n } else {\n return this._anchorCache.A1_G0;\n }\n } else {\n if (allowG) {\n return this._anchorCache.A0_G1;\n } else {\n return this._anchorCache.A0_G0;\n }\n }\n }\n};\nvar RegExpSourceList = class {\n _items;\n _hasAnchors;\n _cached;\n _anchorCache;\n constructor() {\n this._items = [];\n this._hasAnchors = false;\n this._cached = null;\n this._anchorCache = {\n A0_G0: null,\n A0_G1: null,\n A1_G0: null,\n A1_G1: null\n };\n }\n dispose() {\n this._disposeCaches();\n }\n _disposeCaches() {\n if (this._cached) {\n this._cached.dispose();\n this._cached = null;\n }\n if (this._anchorCache.A0_G0) {\n this._anchorCache.A0_G0.dispose();\n this._anchorCache.A0_G0 = null;\n }\n if (this._anchorCache.A0_G1) {\n this._anchorCache.A0_G1.dispose();\n this._anchorCache.A0_G1 = null;\n }\n if (this._anchorCache.A1_G0) {\n this._anchorCache.A1_G0.dispose();\n this._anchorCache.A1_G0 = null;\n }\n if (this._anchorCache.A1_G1) {\n this._anchorCache.A1_G1.dispose();\n this._anchorCache.A1_G1 = null;\n }\n }\n push(item) {\n this._items.push(item);\n this._hasAnchors = this._hasAnchors || item.hasAnchor;\n }\n unshift(item) {\n this._items.unshift(item);\n this._hasAnchors = this._hasAnchors || item.hasAnchor;\n }\n length() {\n return this._items.length;\n }\n setSource(index, newSource) {\n if (this._items[index].source !== newSource) {\n this._disposeCaches();\n this._items[index].setSource(newSource);\n }\n }\n compile(onigLib) {\n if (!this._cached) {\n let regExps = this._items.map((e) => e.source);\n this._cached = new CompiledRule(onigLib, regExps, this._items.map((e) => e.ruleId));\n }\n return this._cached;\n }\n compileAG(onigLib, allowA, allowG) {\n if (!this._hasAnchors) {\n return this.compile(onigLib);\n } else {\n if (allowA) {\n if (allowG) {\n if (!this._anchorCache.A1_G1) {\n this._anchorCache.A1_G1 = this._resolveAnchors(onigLib, allowA, allowG);\n }\n return this._anchorCache.A1_G1;\n } else {\n if (!this._anchorCache.A1_G0) {\n this._anchorCache.A1_G0 = this._resolveAnchors(onigLib, allowA, allowG);\n }\n return this._anchorCache.A1_G0;\n }\n } else {\n if (allowG) {\n if (!this._anchorCache.A0_G1) {\n this._anchorCache.A0_G1 = this._resolveAnchors(onigLib, allowA, allowG);\n }\n return this._anchorCache.A0_G1;\n } else {\n if (!this._anchorCache.A0_G0) {\n this._anchorCache.A0_G0 = this._resolveAnchors(onigLib, allowA, allowG);\n }\n return this._anchorCache.A0_G0;\n }\n }\n }\n }\n _resolveAnchors(onigLib, allowA, allowG) {\n let regExps = this._items.map((e) => e.resolveAnchors(allowA, allowG));\n return new CompiledRule(onigLib, regExps, this._items.map((e) => e.ruleId));\n }\n};\nvar CompiledRule = class {\n constructor(onigLib, regExps, rules) {\n this.regExps = regExps;\n this.rules = rules;\n this.scanner = onigLib.createOnigScanner(regExps);\n }\n scanner;\n dispose() {\n if (typeof this.scanner.dispose === \"function\") {\n this.scanner.dispose();\n }\n }\n toString() {\n const r = [];\n for (let i = 0, len = this.rules.length; i < len; i++) {\n r.push(\" - \" + this.rules[i] + \": \" + this.regExps[i]);\n }\n return r.join(\"\\n\");\n }\n findNextMatchSync(string, startPosition, options) {\n const result = this.scanner.findNextMatchSync(string, startPosition, options);\n if (!result) {\n return null;\n }\n return {\n ruleId: this.rules[result.index],\n captureIndices: result.captureIndices\n };\n }\n};\n\n// src/grammar/basicScopesAttributeProvider.ts\nvar BasicScopeAttributes = class {\n constructor(languageId, tokenType) {\n this.languageId = languageId;\n this.tokenType = tokenType;\n }\n};\nvar BasicScopeAttributesProvider = class _BasicScopeAttributesProvider {\n _defaultAttributes;\n _embeddedLanguagesMatcher;\n constructor(initialLanguageId, embeddedLanguages) {\n this._defaultAttributes = new BasicScopeAttributes(initialLanguageId, 8 /* NotSet */);\n this._embeddedLanguagesMatcher = new ScopeMatcher(Object.entries(embeddedLanguages || {}));\n }\n getDefaultAttributes() {\n return this._defaultAttributes;\n }\n getBasicScopeAttributes(scopeName) {\n if (scopeName === null) {\n return _BasicScopeAttributesProvider._NULL_SCOPE_METADATA;\n }\n return this._getBasicScopeAttributes.get(scopeName);\n }\n static _NULL_SCOPE_METADATA = new BasicScopeAttributes(0, 0);\n _getBasicScopeAttributes = new CachedFn((scopeName) => {\n const languageId = this._scopeToLanguage(scopeName);\n const standardTokenType = this._toStandardTokenType(scopeName);\n return new BasicScopeAttributes(languageId, standardTokenType);\n });\n /**\n * Given a produced TM scope, return the language that token describes or null if unknown.\n * e.g. source.html => html, source.css.embedded.html => css, punctuation.definition.tag.html => null\n */\n _scopeToLanguage(scope) {\n return this._embeddedLanguagesMatcher.match(scope) || 0;\n }\n _toStandardTokenType(scopeName) {\n const m = scopeName.match(_BasicScopeAttributesProvider.STANDARD_TOKEN_TYPE_REGEXP);\n if (!m) {\n return 8 /* NotSet */;\n }\n switch (m[1]) {\n case \"comment\":\n return 1 /* Comment */;\n case \"string\":\n return 2 /* String */;\n case \"regex\":\n return 3 /* RegEx */;\n case \"meta.embedded\":\n return 0 /* Other */;\n }\n throw new Error(\"Unexpected match for standard token type!\");\n }\n static STANDARD_TOKEN_TYPE_REGEXP = /\\b(comment|string|regex|meta\\.embedded)\\b/;\n};\nvar ScopeMatcher = class {\n values;\n scopesRegExp;\n constructor(values) {\n if (values.length === 0) {\n this.values = null;\n this.scopesRegExp = null;\n } else {\n this.values = new Map(values);\n const escapedScopes = values.map(\n ([scopeName, value]) => escapeRegExpCharacters(scopeName)\n );\n escapedScopes.sort();\n escapedScopes.reverse();\n this.scopesRegExp = new RegExp(\n `^((${escapedScopes.join(\")|(\")}))($|\\\\.)`,\n \"\"\n );\n }\n }\n match(scope) {\n if (!this.scopesRegExp) {\n return void 0;\n }\n const m = scope.match(this.scopesRegExp);\n if (!m) {\n return void 0;\n }\n return this.values.get(m[1]);\n }\n};\n\n// src/debug.ts\nvar DebugFlags = {\n InDebugMode: typeof process !== \"undefined\" && !!process.env[\"VSCODE_TEXTMATE_DEBUG\"]\n};\nvar UseOnigurumaFindOptions = false;\n\n// src/grammar/tokenizeString.ts\nvar TokenizeStringResult = class {\n constructor(stack, stoppedEarly) {\n this.stack = stack;\n this.stoppedEarly = stoppedEarly;\n }\n};\nfunction _tokenizeString(grammar, lineText, isFirstLine, linePos, stack, lineTokens, checkWhileConditions, timeLimit) {\n const lineLength = lineText.content.length;\n let STOP = false;\n let anchorPosition = -1;\n if (checkWhileConditions) {\n const whileCheckResult = _checkWhileConditions(\n grammar,\n lineText,\n isFirstLine,\n linePos,\n stack,\n lineTokens\n );\n stack = whileCheckResult.stack;\n linePos = whileCheckResult.linePos;\n isFirstLine = whileCheckResult.isFirstLine;\n anchorPosition = whileCheckResult.anchorPosition;\n }\n const startTime = Date.now();\n while (!STOP) {\n if (timeLimit !== 0) {\n const elapsedTime = Date.now() - startTime;\n if (elapsedTime > timeLimit) {\n return new TokenizeStringResult(stack, true);\n }\n }\n scanNext();\n }\n return new TokenizeStringResult(stack, false);\n function scanNext() {\n if (false) {\n console.log(\"\");\n console.log(\n `@@scanNext ${linePos}: |${lineText.content.substr(linePos).replace(/\\n$/, \"\\\\n\")}|`\n );\n }\n const r = matchRuleOrInjections(\n grammar,\n lineText,\n isFirstLine,\n linePos,\n stack,\n anchorPosition\n );\n if (!r) {\n lineTokens.produce(stack, lineLength);\n STOP = true;\n return;\n }\n const captureIndices = r.captureIndices;\n const matchedRuleId = r.matchedRuleId;\n const hasAdvanced = captureIndices && captureIndices.length > 0 ? captureIndices[0].end > linePos : false;\n if (matchedRuleId === endRuleId) {\n const poppedRule = stack.getRule(grammar);\n if (false) {\n console.log(\n \" popping \" + poppedRule.debugName + \" - \" + poppedRule.debugEndRegExp\n );\n }\n lineTokens.produce(stack, captureIndices[0].start);\n stack = stack.withContentNameScopesList(stack.nameScopesList);\n handleCaptures(\n grammar,\n lineText,\n isFirstLine,\n stack,\n lineTokens,\n poppedRule.endCaptures,\n captureIndices\n );\n lineTokens.produce(stack, captureIndices[0].end);\n const popped = stack;\n stack = stack.parent;\n anchorPosition = popped.getAnchorPos();\n if (!hasAdvanced && popped.getEnterPos() === linePos) {\n if (false) {\n console.error(\n \"[1] - Grammar is in an endless loop - Grammar pushed & popped a rule without advancing\"\n );\n }\n stack = popped;\n lineTokens.produce(stack, lineLength);\n STOP = true;\n return;\n }\n } else {\n const _rule = grammar.getRule(matchedRuleId);\n lineTokens.produce(stack, captureIndices[0].start);\n const beforePush = stack;\n const scopeName = _rule.getName(lineText.content, captureIndices);\n const nameScopesList = stack.contentNameScopesList.pushAttributed(\n scopeName,\n grammar\n );\n stack = stack.push(\n matchedRuleId,\n linePos,\n anchorPosition,\n captureIndices[0].end === lineLength,\n null,\n nameScopesList,\n nameScopesList\n );\n if (_rule instanceof BeginEndRule) {\n const pushedRule = _rule;\n if (false) {\n console.log(\n \" pushing \" + pushedRule.debugName + \" - \" + pushedRule.debugBeginRegExp\n );\n }\n handleCaptures(\n grammar,\n lineText,\n isFirstLine,\n stack,\n lineTokens,\n pushedRule.beginCaptures,\n captureIndices\n );\n lineTokens.produce(stack, captureIndices[0].end);\n anchorPosition = captureIndices[0].end;\n const contentName = pushedRule.getContentName(\n lineText.content,\n captureIndices\n );\n const contentNameScopesList = nameScopesList.pushAttributed(\n contentName,\n grammar\n );\n stack = stack.withContentNameScopesList(contentNameScopesList);\n if (pushedRule.endHasBackReferences) {\n stack = stack.withEndRule(\n pushedRule.getEndWithResolvedBackReferences(\n lineText.content,\n captureIndices\n )\n );\n }\n if (!hasAdvanced && beforePush.hasSameRuleAs(stack)) {\n if (false) {\n console.error(\n \"[2] - Grammar is in an endless loop - Grammar pushed the same rule without advancing\"\n );\n }\n stack = stack.pop();\n lineTokens.produce(stack, lineLength);\n STOP = true;\n return;\n }\n } else if (_rule instanceof BeginWhileRule) {\n const pushedRule = _rule;\n if (false) {\n console.log(\" pushing \" + pushedRule.debugName);\n }\n handleCaptures(\n grammar,\n lineText,\n isFirstLine,\n stack,\n lineTokens,\n pushedRule.beginCaptures,\n captureIndices\n );\n lineTokens.produce(stack, captureIndices[0].end);\n anchorPosition = captureIndices[0].end;\n const contentName = pushedRule.getContentName(\n lineText.content,\n captureIndices\n );\n const contentNameScopesList = nameScopesList.pushAttributed(\n contentName,\n grammar\n );\n stack = stack.withContentNameScopesList(contentNameScopesList);\n if (pushedRule.whileHasBackReferences) {\n stack = stack.withEndRule(\n pushedRule.getWhileWithResolvedBackReferences(\n lineText.content,\n captureIndices\n )\n );\n }\n if (!hasAdvanced && beforePush.hasSameRuleAs(stack)) {\n if (false) {\n console.error(\n \"[3] - Grammar is in an endless loop - Grammar pushed the same rule without advancing\"\n );\n }\n stack = stack.pop();\n lineTokens.produce(stack, lineLength);\n STOP = true;\n return;\n }\n } else {\n const matchingRule = _rule;\n if (false) {\n console.log(\n \" matched \" + matchingRule.debugName + \" - \" + matchingRule.debugMatchRegExp\n );\n }\n handleCaptures(\n grammar,\n lineText,\n isFirstLine,\n stack,\n lineTokens,\n matchingRule.captures,\n captureIndices\n );\n lineTokens.produce(stack, captureIndices[0].end);\n stack = stack.pop();\n if (!hasAdvanced) {\n if (false) {\n console.error(\n \"[4] - Grammar is in an endless loop - Grammar is not advancing, nor is it pushing/popping\"\n );\n }\n stack = stack.safePop();\n lineTokens.produce(stack, lineLength);\n STOP = true;\n return;\n }\n }\n }\n if (captureIndices[0].end > linePos) {\n linePos = captureIndices[0].end;\n isFirstLine = false;\n }\n }\n}\nfunction _checkWhileConditions(grammar, lineText, isFirstLine, linePos, stack, lineTokens) {\n let anchorPosition = stack.beginRuleCapturedEOL ? 0 : -1;\n const whileRules = [];\n for (let node = stack; node; node = node.pop()) {\n const nodeRule = node.getRule(grammar);\n if (nodeRule instanceof BeginWhileRule) {\n whileRules.push({\n rule: nodeRule,\n stack: node\n });\n }\n }\n for (let whileRule = whileRules.pop(); whileRule; whileRule = whileRules.pop()) {\n const { ruleScanner, findOptions } = prepareRuleWhileSearch(whileRule.rule, grammar, whileRule.stack.endRule, isFirstLine, linePos === anchorPosition);\n const r = ruleScanner.findNextMatchSync(lineText, linePos, findOptions);\n if (false) {\n console.log(\" scanning for while rule\");\n console.log(ruleScanner.toString());\n }\n if (r) {\n const matchedRuleId = r.ruleId;\n if (matchedRuleId !== whileRuleId) {\n stack = whileRule.stack.pop();\n break;\n }\n if (r.captureIndices && r.captureIndices.length) {\n lineTokens.produce(whileRule.stack, r.captureIndices[0].start);\n handleCaptures(grammar, lineText, isFirstLine, whileRule.stack, lineTokens, whileRule.rule.whileCaptures, r.captureIndices);\n lineTokens.produce(whileRule.stack, r.captureIndices[0].end);\n anchorPosition = r.captureIndices[0].end;\n if (r.captureIndices[0].end > linePos) {\n linePos = r.captureIndices[0].end;\n isFirstLine = false;\n }\n }\n } else {\n if (false) {\n console.log(\" popping \" + whileRule.rule.debugName + \" - \" + whileRule.rule.debugWhileRegExp);\n }\n stack = whileRule.stack.pop();\n break;\n }\n }\n return { stack, linePos, anchorPosition, isFirstLine };\n}\nfunction matchRuleOrInjections(grammar, lineText, isFirstLine, linePos, stack, anchorPosition) {\n const matchResult = matchRule(grammar, lineText, isFirstLine, linePos, stack, anchorPosition);\n const injections = grammar.getInjections();\n if (injections.length === 0) {\n return matchResult;\n }\n const injectionResult = matchInjections(injections, grammar, lineText, isFirstLine, linePos, stack, anchorPosition);\n if (!injectionResult) {\n return matchResult;\n }\n if (!matchResult) {\n return injectionResult;\n }\n const matchResultScore = matchResult.captureIndices[0].start;\n const injectionResultScore = injectionResult.captureIndices[0].start;\n if (injectionResultScore < matchResultScore || injectionResult.priorityMatch && injectionResultScore === matchResultScore) {\n return injectionResult;\n }\n return matchResult;\n}\nfunction matchRule(grammar, lineText, isFirstLine, linePos, stack, anchorPosition) {\n const rule = stack.getRule(grammar);\n const { ruleScanner, findOptions } = prepareRuleSearch(rule, grammar, stack.endRule, isFirstLine, linePos === anchorPosition);\n const r = ruleScanner.findNextMatchSync(lineText, linePos, findOptions);\n if (r) {\n return {\n captureIndices: r.captureIndices,\n matchedRuleId: r.ruleId\n };\n }\n return null;\n}\nfunction matchInjections(injections, grammar, lineText, isFirstLine, linePos, stack, anchorPosition) {\n let bestMatchRating = Number.MAX_VALUE;\n let bestMatchCaptureIndices = null;\n let bestMatchRuleId;\n let bestMatchResultPriority = 0;\n const scopes = stack.contentNameScopesList.getScopeNames();\n for (let i = 0, len = injections.length; i < len; i++) {\n const injection = injections[i];\n if (!injection.matcher(scopes)) {\n continue;\n }\n const rule = grammar.getRule(injection.ruleId);\n const { ruleScanner, findOptions } = prepareRuleSearch(rule, grammar, null, isFirstLine, linePos === anchorPosition);\n const matchResult = ruleScanner.findNextMatchSync(lineText, linePos, findOptions);\n if (!matchResult) {\n continue;\n }\n if (false) {\n console.log(` matched injection: ${injection.debugSelector}`);\n console.log(ruleScanner.toString());\n }\n const matchRating = matchResult.captureIndices[0].start;\n if (matchRating >= bestMatchRating) {\n continue;\n }\n bestMatchRating = matchRating;\n bestMatchCaptureIndices = matchResult.captureIndices;\n bestMatchRuleId = matchResult.ruleId;\n bestMatchResultPriority = injection.priority;\n if (bestMatchRating === linePos) {\n break;\n }\n }\n if (bestMatchCaptureIndices) {\n return {\n priorityMatch: bestMatchResultPriority === -1,\n captureIndices: bestMatchCaptureIndices,\n matchedRuleId: bestMatchRuleId\n };\n }\n return null;\n}\nfunction prepareRuleSearch(rule, grammar, endRegexSource, allowA, allowG) {\n if (UseOnigurumaFindOptions) {\n const ruleScanner2 = rule.compile(grammar, endRegexSource);\n const findOptions = getFindOptions(allowA, allowG);\n return { ruleScanner: ruleScanner2, findOptions };\n }\n const ruleScanner = rule.compileAG(grammar, endRegexSource, allowA, allowG);\n return { ruleScanner, findOptions: 0 /* None */ };\n}\nfunction prepareRuleWhileSearch(rule, grammar, endRegexSource, allowA, allowG) {\n if (UseOnigurumaFindOptions) {\n const ruleScanner2 = rule.compileWhile(grammar, endRegexSource);\n const findOptions = getFindOptions(allowA, allowG);\n return { ruleScanner: ruleScanner2, findOptions };\n }\n const ruleScanner = rule.compileWhileAG(grammar, endRegexSource, allowA, allowG);\n return { ruleScanner, findOptions: 0 /* None */ };\n}\nfunction getFindOptions(allowA, allowG) {\n let options = 0 /* None */;\n if (!allowA) {\n options |= 1 /* NotBeginString */;\n }\n if (!allowG) {\n options |= 4 /* NotBeginPosition */;\n }\n return options;\n}\nfunction handleCaptures(grammar, lineText, isFirstLine, stack, lineTokens, captures, captureIndices) {\n if (captures.length === 0) {\n return;\n }\n const lineTextContent = lineText.content;\n const len = Math.min(captures.length, captureIndices.length);\n const localStack = [];\n const maxEnd = captureIndices[0].end;\n for (let i = 0; i < len; i++) {\n const captureRule = captures[i];\n if (captureRule === null) {\n continue;\n }\n const captureIndex = captureIndices[i];\n if (captureIndex.length === 0) {\n continue;\n }\n if (captureIndex.start > maxEnd) {\n break;\n }\n while (localStack.length > 0 && localStack[localStack.length - 1].endPos <= captureIndex.start) {\n lineTokens.produceFromScopes(localStack[localStack.length - 1].scopes, localStack[localStack.length - 1].endPos);\n localStack.pop();\n }\n if (localStack.length > 0) {\n lineTokens.produceFromScopes(localStack[localStack.length - 1].scopes, captureIndex.start);\n } else {\n lineTokens.produce(stack, captureIndex.start);\n }\n if (captureRule.retokenizeCapturedWithRuleId) {\n const scopeName = captureRule.getName(lineTextContent, captureIndices);\n const nameScopesList = stack.contentNameScopesList.pushAttributed(scopeName, grammar);\n const contentName = captureRule.getContentName(lineTextContent, captureIndices);\n const contentNameScopesList = nameScopesList.pushAttributed(contentName, grammar);\n const stackClone = stack.push(captureRule.retokenizeCapturedWithRuleId, captureIndex.start, -1, false, null, nameScopesList, contentNameScopesList);\n const onigSubStr = grammar.createOnigString(lineTextContent.substring(0, captureIndex.end));\n _tokenizeString(\n grammar,\n onigSubStr,\n isFirstLine && captureIndex.start === 0,\n captureIndex.start,\n stackClone,\n lineTokens,\n false,\n /* no time limit */\n 0\n );\n disposeOnigString(onigSubStr);\n continue;\n }\n const captureRuleScopeName = captureRule.getName(lineTextContent, captureIndices);\n if (captureRuleScopeName !== null) {\n const base = localStack.length > 0 ? localStack[localStack.length - 1].scopes : stack.contentNameScopesList;\n const captureRuleScopesList = base.pushAttributed(captureRuleScopeName, grammar);\n localStack.push(new LocalStackElement(captureRuleScopesList, captureIndex.end));\n }\n }\n while (localStack.length > 0) {\n lineTokens.produceFromScopes(localStack[localStack.length - 1].scopes, localStack[localStack.length - 1].endPos);\n localStack.pop();\n }\n}\nvar LocalStackElement = class {\n scopes;\n endPos;\n constructor(scopes, endPos) {\n this.scopes = scopes;\n this.endPos = endPos;\n }\n};\n\n// src/grammar/grammar.ts\nfunction createGrammar(scopeName, grammar, initialLanguage, embeddedLanguages, tokenTypes, balancedBracketSelectors, grammarRepository, onigLib) {\n return new Grammar(\n scopeName,\n grammar,\n initialLanguage,\n embeddedLanguages,\n tokenTypes,\n balancedBracketSelectors,\n grammarRepository,\n onigLib\n );\n}\nfunction collectInjections(result, selector, rule, ruleFactoryHelper, grammar) {\n const matchers = createMatchers(selector, nameMatcher);\n const ruleId = RuleFactory.getCompiledRuleId(rule, ruleFactoryHelper, grammar.repository);\n for (const matcher of matchers) {\n result.push({\n debugSelector: selector,\n matcher: matcher.matcher,\n ruleId,\n grammar,\n priority: matcher.priority\n });\n }\n}\nfunction nameMatcher(identifers, scopes) {\n if (scopes.length < identifers.length) {\n return false;\n }\n let lastIndex = 0;\n return identifers.every((identifier) => {\n for (let i = lastIndex; i < scopes.length; i++) {\n if (scopesAreMatching(scopes[i], identifier)) {\n lastIndex = i + 1;\n return true;\n }\n }\n return false;\n });\n}\nfunction scopesAreMatching(thisScopeName, scopeName) {\n if (!thisScopeName) {\n return false;\n }\n if (thisScopeName === scopeName) {\n return true;\n }\n const len = scopeName.length;\n return thisScopeName.length > len && thisScopeName.substr(0, len) === scopeName && thisScopeName[len] === \".\";\n}\nvar Grammar = class {\n constructor(_rootScopeName, grammar, initialLanguage, embeddedLanguages, tokenTypes, balancedBracketSelectors, grammarRepository, _onigLib) {\n this._rootScopeName = _rootScopeName;\n this.balancedBracketSelectors = balancedBracketSelectors;\n this._onigLib = _onigLib;\n this._basicScopeAttributesProvider = new BasicScopeAttributesProvider(\n initialLanguage,\n embeddedLanguages\n );\n this._rootId = -1;\n this._lastRuleId = 0;\n this._ruleId2desc = [null];\n this._includedGrammars = {};\n this._grammarRepository = grammarRepository;\n this._grammar = initGrammar(grammar, null);\n this._injections = null;\n this._tokenTypeMatchers = [];\n if (tokenTypes) {\n for (const selector of Object.keys(tokenTypes)) {\n const matchers = createMatchers(selector, nameMatcher);\n for (const matcher of matchers) {\n this._tokenTypeMatchers.push({\n matcher: matcher.matcher,\n type: tokenTypes[selector]\n });\n }\n }\n }\n }\n _rootId;\n _lastRuleId;\n _ruleId2desc;\n _includedGrammars;\n _grammarRepository;\n _grammar;\n _injections;\n _basicScopeAttributesProvider;\n _tokenTypeMatchers;\n get themeProvider() {\n return this._grammarRepository;\n }\n dispose() {\n for (const rule of this._ruleId2desc) {\n if (rule) {\n rule.dispose();\n }\n }\n }\n createOnigScanner(sources) {\n return this._onigLib.createOnigScanner(sources);\n }\n createOnigString(sources) {\n return this._onigLib.createOnigString(sources);\n }\n getMetadataForScope(scope) {\n return this._basicScopeAttributesProvider.getBasicScopeAttributes(scope);\n }\n _collectInjections() {\n const grammarRepository = {\n lookup: (scopeName2) => {\n if (scopeName2 === this._rootScopeName) {\n return this._grammar;\n }\n return this.getExternalGrammar(scopeName2);\n },\n injections: (scopeName2) => {\n return this._grammarRepository.injections(scopeName2);\n }\n };\n const result = [];\n const scopeName = this._rootScopeName;\n const grammar = grammarRepository.lookup(scopeName);\n if (grammar) {\n const rawInjections = grammar.injections;\n if (rawInjections) {\n for (let expression in rawInjections) {\n collectInjections(\n result,\n expression,\n rawInjections[expression],\n this,\n grammar\n );\n }\n }\n const injectionScopeNames = this._grammarRepository.injections(scopeName);\n if (injectionScopeNames) {\n injectionScopeNames.forEach((injectionScopeName) => {\n const injectionGrammar = this.getExternalGrammar(injectionScopeName);\n if (injectionGrammar) {\n const selector = injectionGrammar.injectionSelector;\n if (selector) {\n collectInjections(\n result,\n selector,\n injectionGrammar,\n this,\n injectionGrammar\n );\n }\n }\n });\n }\n }\n result.sort((i1, i2) => i1.priority - i2.priority);\n return result;\n }\n getInjections() {\n if (this._injections === null) {\n this._injections = this._collectInjections();\n }\n return this._injections;\n }\n registerRule(factory) {\n const id = ++this._lastRuleId;\n const result = factory(ruleIdFromNumber(id));\n this._ruleId2desc[id] = result;\n return result;\n }\n getRule(ruleId) {\n return this._ruleId2desc[ruleIdToNumber(ruleId)];\n }\n getExternalGrammar(scopeName, repository) {\n if (this._includedGrammars[scopeName]) {\n return this._includedGrammars[scopeName];\n } else if (this._grammarRepository) {\n const rawIncludedGrammar = this._grammarRepository.lookup(scopeName);\n if (rawIncludedGrammar) {\n this._includedGrammars[scopeName] = initGrammar(\n rawIncludedGrammar,\n repository && repository.$base\n );\n return this._includedGrammars[scopeName];\n }\n }\n return void 0;\n }\n tokenizeLine(lineText, prevState, timeLimit = 0) {\n const r = this._tokenize(lineText, prevState, false, timeLimit);\n return {\n tokens: r.lineTokens.getResult(r.ruleStack, r.lineLength),\n ruleStack: r.ruleStack,\n stoppedEarly: r.stoppedEarly\n };\n }\n tokenizeLine2(lineText, prevState, timeLimit = 0) {\n const r = this._tokenize(lineText, prevState, true, timeLimit);\n return {\n tokens: r.lineTokens.getBinaryResult(r.ruleStack, r.lineLength),\n ruleStack: r.ruleStack,\n stoppedEarly: r.stoppedEarly\n };\n }\n _tokenize(lineText, prevState, emitBinaryTokens, timeLimit) {\n if (this._rootId === -1) {\n this._rootId = RuleFactory.getCompiledRuleId(\n this._grammar.repository.$self,\n this,\n this._grammar.repository\n );\n this.getInjections();\n }\n let isFirstLine;\n if (!prevState || prevState === StateStackImpl.NULL) {\n isFirstLine = true;\n const rawDefaultMetadata = this._basicScopeAttributesProvider.getDefaultAttributes();\n const defaultStyle = this.themeProvider.getDefaults();\n const defaultMetadata = EncodedTokenMetadata.set(\n 0,\n rawDefaultMetadata.languageId,\n rawDefaultMetadata.tokenType,\n null,\n defaultStyle.fontStyle,\n defaultStyle.foregroundId,\n defaultStyle.backgroundId\n );\n const rootScopeName = this.getRule(this._rootId).getName(\n null,\n null\n );\n let scopeList;\n if (rootScopeName) {\n scopeList = AttributedScopeStack.createRootAndLookUpScopeName(\n rootScopeName,\n defaultMetadata,\n this\n );\n } else {\n scopeList = AttributedScopeStack.createRoot(\n \"unknown\",\n defaultMetadata\n );\n }\n prevState = new StateStackImpl(\n null,\n this._rootId,\n -1,\n -1,\n false,\n null,\n scopeList,\n scopeList\n );\n } else {\n isFirstLine = false;\n prevState.reset();\n }\n lineText = lineText + \"\\n\";\n const onigLineText = this.createOnigString(lineText);\n const lineLength = onigLineText.content.length;\n const lineTokens = new LineTokens(\n emitBinaryTokens,\n lineText,\n this._tokenTypeMatchers,\n this.balancedBracketSelectors\n );\n const r = _tokenizeString(\n this,\n onigLineText,\n isFirstLine,\n 0,\n prevState,\n lineTokens,\n true,\n timeLimit\n );\n disposeOnigString(onigLineText);\n return {\n lineLength,\n lineTokens,\n ruleStack: r.stack,\n stoppedEarly: r.stoppedEarly\n };\n }\n};\nfunction initGrammar(grammar, base) {\n grammar = clone(grammar);\n grammar.repository = grammar.repository || {};\n grammar.repository.$self = {\n $vscodeTextmateLocation: grammar.$vscodeTextmateLocation,\n patterns: grammar.patterns,\n name: grammar.scopeName\n };\n grammar.repository.$base = base || grammar.repository.$self;\n return grammar;\n}\nvar AttributedScopeStack = class _AttributedScopeStack {\n /**\n * Invariant:\n * ```\n * if (parent && !scopePath.extends(parent.scopePath)) {\n * \tthrow new Error();\n * }\n * ```\n */\n constructor(parent, scopePath, tokenAttributes) {\n this.parent = parent;\n this.scopePath = scopePath;\n this.tokenAttributes = tokenAttributes;\n }\n static fromExtension(namesScopeList, contentNameScopesList) {\n let current = namesScopeList;\n let scopeNames = namesScopeList?.scopePath ?? null;\n for (const frame of contentNameScopesList) {\n scopeNames = ScopeStack.push(scopeNames, frame.scopeNames);\n current = new _AttributedScopeStack(current, scopeNames, frame.encodedTokenAttributes);\n }\n return current;\n }\n static createRoot(scopeName, tokenAttributes) {\n return new _AttributedScopeStack(null, new ScopeStack(null, scopeName), tokenAttributes);\n }\n static createRootAndLookUpScopeName(scopeName, tokenAttributes, grammar) {\n const rawRootMetadata = grammar.getMetadataForScope(scopeName);\n const scopePath = new ScopeStack(null, scopeName);\n const rootStyle = grammar.themeProvider.themeMatch(scopePath);\n const resolvedTokenAttributes = _AttributedScopeStack.mergeAttributes(\n tokenAttributes,\n rawRootMetadata,\n rootStyle\n );\n return new _AttributedScopeStack(null, scopePath, resolvedTokenAttributes);\n }\n get scopeName() {\n return this.scopePath.scopeName;\n }\n toString() {\n return this.getScopeNames().join(\" \");\n }\n equals(other) {\n return _AttributedScopeStack.equals(this, other);\n }\n static equals(a, b) {\n do {\n if (a === b) {\n return true;\n }\n if (!a && !b) {\n return true;\n }\n if (!a || !b) {\n return false;\n }\n if (a.scopeName !== b.scopeName || a.tokenAttributes !== b.tokenAttributes) {\n return false;\n }\n a = a.parent;\n b = b.parent;\n } while (true);\n }\n static mergeAttributes(existingTokenAttributes, basicScopeAttributes, styleAttributes) {\n let fontStyle = -1 /* NotSet */;\n let foreground = 0;\n let background = 0;\n if (styleAttributes !== null) {\n fontStyle = styleAttributes.fontStyle;\n foreground = styleAttributes.foregroundId;\n background = styleAttributes.backgroundId;\n }\n return EncodedTokenMetadata.set(\n existingTokenAttributes,\n basicScopeAttributes.languageId,\n basicScopeAttributes.tokenType,\n null,\n fontStyle,\n foreground,\n background\n );\n }\n pushAttributed(scopePath, grammar) {\n if (scopePath === null) {\n return this;\n }\n if (scopePath.indexOf(\" \") === -1) {\n return _AttributedScopeStack._pushAttributed(this, scopePath, grammar);\n }\n const scopes = scopePath.split(/ /g);\n let result = this;\n for (const scope of scopes) {\n result = _AttributedScopeStack._pushAttributed(result, scope, grammar);\n }\n return result;\n }\n static _pushAttributed(target, scopeName, grammar) {\n const rawMetadata = grammar.getMetadataForScope(scopeName);\n const newPath = target.scopePath.push(scopeName);\n const scopeThemeMatchResult = grammar.themeProvider.themeMatch(newPath);\n const metadata = _AttributedScopeStack.mergeAttributes(\n target.tokenAttributes,\n rawMetadata,\n scopeThemeMatchResult\n );\n return new _AttributedScopeStack(target, newPath, metadata);\n }\n getScopeNames() {\n return this.scopePath.getSegments();\n }\n getExtensionIfDefined(base) {\n const result = [];\n let self = this;\n while (self && self !== base) {\n result.push({\n encodedTokenAttributes: self.tokenAttributes,\n scopeNames: self.scopePath.getExtensionIfDefined(self.parent?.scopePath ?? null)\n });\n self = self.parent;\n }\n return self === base ? result.reverse() : void 0;\n }\n};\nvar StateStackImpl = class _StateStackImpl {\n /**\n * Invariant:\n * ```\n * if (contentNameScopesList !== nameScopesList && contentNameScopesList?.parent !== nameScopesList) {\n * \tthrow new Error();\n * }\n * if (this.parent && !nameScopesList.extends(this.parent.contentNameScopesList)) {\n * \tthrow new Error();\n * }\n * ```\n */\n constructor(parent, ruleId, enterPos, anchorPos, beginRuleCapturedEOL, endRule, nameScopesList, contentNameScopesList) {\n this.parent = parent;\n this.ruleId = ruleId;\n this.beginRuleCapturedEOL = beginRuleCapturedEOL;\n this.endRule = endRule;\n this.nameScopesList = nameScopesList;\n this.contentNameScopesList = contentNameScopesList;\n this.depth = this.parent ? this.parent.depth + 1 : 1;\n this._enterPos = enterPos;\n this._anchorPos = anchorPos;\n }\n _stackElementBrand = void 0;\n // TODO remove me\n static NULL = new _StateStackImpl(\n null,\n 0,\n 0,\n 0,\n false,\n null,\n null,\n null\n );\n /**\n * The position on the current line where this state was pushed.\n * This is relevant only while tokenizing a line, to detect endless loops.\n * Its value is meaningless across lines.\n */\n _enterPos;\n /**\n * The captured anchor position when this stack element was pushed.\n * This is relevant only while tokenizing a line, to restore the anchor position when popping.\n * Its value is meaningless across lines.\n */\n _anchorPos;\n /**\n * The depth of the stack.\n */\n depth;\n equals(other) {\n if (other === null) {\n return false;\n }\n return _StateStackImpl._equals(this, other);\n }\n static _equals(a, b) {\n if (a === b) {\n return true;\n }\n if (!this._structuralEquals(a, b)) {\n return false;\n }\n return AttributedScopeStack.equals(a.contentNameScopesList, b.contentNameScopesList);\n }\n /**\n * A structural equals check. Does not take into account `scopes`.\n */\n static _structuralEquals(a, b) {\n do {\n if (a === b) {\n return true;\n }\n if (!a && !b) {\n return true;\n }\n if (!a || !b) {\n return false;\n }\n if (a.depth !== b.depth || a.ruleId !== b.ruleId || a.endRule !== b.endRule) {\n return false;\n }\n a = a.parent;\n b = b.parent;\n } while (true);\n }\n clone() {\n return this;\n }\n static _reset(el) {\n while (el) {\n el._enterPos = -1;\n el._anchorPos = -1;\n el = el.parent;\n }\n }\n reset() {\n _StateStackImpl._reset(this);\n }\n pop() {\n return this.parent;\n }\n safePop() {\n if (this.parent) {\n return this.parent;\n }\n return this;\n }\n push(ruleId, enterPos, anchorPos, beginRuleCapturedEOL, endRule, nameScopesList, contentNameScopesList) {\n return new _StateStackImpl(\n this,\n ruleId,\n enterPos,\n anchorPos,\n beginRuleCapturedEOL,\n endRule,\n nameScopesList,\n contentNameScopesList\n );\n }\n getEnterPos() {\n return this._enterPos;\n }\n getAnchorPos() {\n return this._anchorPos;\n }\n getRule(grammar) {\n return grammar.getRule(this.ruleId);\n }\n toString() {\n const r = [];\n this._writeString(r, 0);\n return \"[\" + r.join(\",\") + \"]\";\n }\n _writeString(res, outIndex) {\n if (this.parent) {\n outIndex = this.parent._writeString(res, outIndex);\n }\n res[outIndex++] = `(${this.ruleId}, ${this.nameScopesList?.toString()}, ${this.contentNameScopesList?.toString()})`;\n return outIndex;\n }\n withContentNameScopesList(contentNameScopeStack) {\n if (this.contentNameScopesList === contentNameScopeStack) {\n return this;\n }\n return this.parent.push(\n this.ruleId,\n this._enterPos,\n this._anchorPos,\n this.beginRuleCapturedEOL,\n this.endRule,\n this.nameScopesList,\n contentNameScopeStack\n );\n }\n withEndRule(endRule) {\n if (this.endRule === endRule) {\n return this;\n }\n return new _StateStackImpl(\n this.parent,\n this.ruleId,\n this._enterPos,\n this._anchorPos,\n this.beginRuleCapturedEOL,\n endRule,\n this.nameScopesList,\n this.contentNameScopesList\n );\n }\n // Used to warn of endless loops\n hasSameRuleAs(other) {\n let el = this;\n while (el && el._enterPos === other._enterPos) {\n if (el.ruleId === other.ruleId) {\n return true;\n }\n el = el.parent;\n }\n return false;\n }\n toStateStackFrame() {\n return {\n ruleId: ruleIdToNumber(this.ruleId),\n beginRuleCapturedEOL: this.beginRuleCapturedEOL,\n endRule: this.endRule,\n nameScopesList: this.nameScopesList?.getExtensionIfDefined(this.parent?.nameScopesList ?? null) ?? [],\n contentNameScopesList: this.contentNameScopesList?.getExtensionIfDefined(this.nameScopesList) ?? []\n };\n }\n static pushFrame(self, frame) {\n const namesScopeList = AttributedScopeStack.fromExtension(self?.nameScopesList ?? null, frame.nameScopesList);\n return new _StateStackImpl(\n self,\n ruleIdFromNumber(frame.ruleId),\n frame.enterPos ?? -1,\n frame.anchorPos ?? -1,\n frame.beginRuleCapturedEOL,\n frame.endRule,\n namesScopeList,\n AttributedScopeStack.fromExtension(namesScopeList, frame.contentNameScopesList)\n );\n }\n};\nvar BalancedBracketSelectors = class {\n balancedBracketScopes;\n unbalancedBracketScopes;\n allowAny = false;\n constructor(balancedBracketScopes, unbalancedBracketScopes) {\n this.balancedBracketScopes = balancedBracketScopes.flatMap(\n (selector) => {\n if (selector === \"*\") {\n this.allowAny = true;\n return [];\n }\n return createMatchers(selector, nameMatcher).map((m) => m.matcher);\n }\n );\n this.unbalancedBracketScopes = unbalancedBracketScopes.flatMap(\n (selector) => createMatchers(selector, nameMatcher).map((m) => m.matcher)\n );\n }\n get matchesAlways() {\n return this.allowAny && this.unbalancedBracketScopes.length === 0;\n }\n get matchesNever() {\n return this.balancedBracketScopes.length === 0 && !this.allowAny;\n }\n match(scopes) {\n for (const excluder of this.unbalancedBracketScopes) {\n if (excluder(scopes)) {\n return false;\n }\n }\n for (const includer of this.balancedBracketScopes) {\n if (includer(scopes)) {\n return true;\n }\n }\n return this.allowAny;\n }\n};\nvar LineTokens = class {\n constructor(emitBinaryTokens, lineText, tokenTypeOverrides, balancedBracketSelectors) {\n this.balancedBracketSelectors = balancedBracketSelectors;\n this._emitBinaryTokens = emitBinaryTokens;\n this._tokenTypeOverrides = tokenTypeOverrides;\n if (false) {\n this._lineText = lineText;\n } else {\n this._lineText = null;\n }\n this._tokens = [];\n this._binaryTokens = [];\n this._lastTokenEndIndex = 0;\n }\n _emitBinaryTokens;\n /**\n * defined only if `false`.\n */\n _lineText;\n /**\n * used only if `_emitBinaryTokens` is false.\n */\n _tokens;\n /**\n * used only if `_emitBinaryTokens` is true.\n */\n _binaryTokens;\n _lastTokenEndIndex;\n _tokenTypeOverrides;\n produce(stack, endIndex) {\n this.produceFromScopes(stack.contentNameScopesList, endIndex);\n }\n produceFromScopes(scopesList, endIndex) {\n if (this._lastTokenEndIndex >= endIndex) {\n return;\n }\n if (this._emitBinaryTokens) {\n let metadata = scopesList?.tokenAttributes ?? 0;\n let containsBalancedBrackets = false;\n if (this.balancedBracketSelectors?.matchesAlways) {\n containsBalancedBrackets = true;\n }\n if (this._tokenTypeOverrides.length > 0 || this.balancedBracketSelectors && !this.balancedBracketSelectors.matchesAlways && !this.balancedBracketSelectors.matchesNever) {\n const scopes2 = scopesList?.getScopeNames() ?? [];\n for (const tokenType of this._tokenTypeOverrides) {\n if (tokenType.matcher(scopes2)) {\n metadata = EncodedTokenMetadata.set(\n metadata,\n 0,\n toOptionalTokenType(tokenType.type),\n null,\n -1 /* NotSet */,\n 0,\n 0\n );\n }\n }\n if (this.balancedBracketSelectors) {\n containsBalancedBrackets = this.balancedBracketSelectors.match(scopes2);\n }\n }\n if (containsBalancedBrackets) {\n metadata = EncodedTokenMetadata.set(\n metadata,\n 0,\n 8 /* NotSet */,\n containsBalancedBrackets,\n -1 /* NotSet */,\n 0,\n 0\n );\n }\n if (this._binaryTokens.length > 0 && this._binaryTokens[this._binaryTokens.length - 1] === metadata) {\n this._lastTokenEndIndex = endIndex;\n return;\n }\n this._binaryTokens.push(this._lastTokenEndIndex);\n this._binaryTokens.push(metadata);\n this._lastTokenEndIndex = endIndex;\n return;\n }\n const scopes = scopesList?.getScopeNames() ?? [];\n this._tokens.push({\n startIndex: this._lastTokenEndIndex,\n endIndex,\n // value: lineText.substring(lastTokenEndIndex, endIndex),\n scopes\n });\n this._lastTokenEndIndex = endIndex;\n }\n getResult(stack, lineLength) {\n if (this._tokens.length > 0 && this._tokens[this._tokens.length - 1].startIndex === lineLength - 1) {\n this._tokens.pop();\n }\n if (this._tokens.length === 0) {\n this._lastTokenEndIndex = -1;\n this.produce(stack, lineLength);\n this._tokens[this._tokens.length - 1].startIndex = 0;\n }\n return this._tokens;\n }\n getBinaryResult(stack, lineLength) {\n if (this._binaryTokens.length > 0 && this._binaryTokens[this._binaryTokens.length - 2] === lineLength - 1) {\n this._binaryTokens.pop();\n this._binaryTokens.pop();\n }\n if (this._binaryTokens.length === 0) {\n this._lastTokenEndIndex = -1;\n this.produce(stack, lineLength);\n this._binaryTokens[this._binaryTokens.length - 2] = 0;\n }\n const result = new Uint32Array(this._binaryTokens.length);\n for (let i = 0, len = this._binaryTokens.length; i < len; i++) {\n result[i] = this._binaryTokens[i];\n }\n return result;\n }\n};\n\n// src/registry.ts\nvar SyncRegistry = class {\n constructor(theme, _onigLib) {\n this._onigLib = _onigLib;\n this._theme = theme;\n }\n _grammars = /* @__PURE__ */ new Map();\n _rawGrammars = /* @__PURE__ */ new Map();\n _injectionGrammars = /* @__PURE__ */ new Map();\n _theme;\n dispose() {\n for (const grammar of this._grammars.values()) {\n grammar.dispose();\n }\n }\n setTheme(theme) {\n this._theme = theme;\n }\n getColorMap() {\n return this._theme.getColorMap();\n }\n /**\n * Add `grammar` to registry and return a list of referenced scope names\n */\n addGrammar(grammar, injectionScopeNames) {\n this._rawGrammars.set(grammar.scopeName, grammar);\n if (injectionScopeNames) {\n this._injectionGrammars.set(grammar.scopeName, injectionScopeNames);\n }\n }\n /**\n * Lookup a raw grammar.\n */\n lookup(scopeName) {\n return this._rawGrammars.get(scopeName);\n }\n /**\n * Returns the injections for the given grammar\n */\n injections(targetScope) {\n return this._injectionGrammars.get(targetScope);\n }\n /**\n * Get the default theme settings\n */\n getDefaults() {\n return this._theme.getDefaults();\n }\n /**\n * Match a scope in the theme.\n */\n themeMatch(scopePath) {\n return this._theme.match(scopePath);\n }\n /**\n * Lookup a grammar.\n */\n grammarForScopeName(scopeName, initialLanguage, embeddedLanguages, tokenTypes, balancedBracketSelectors) {\n if (!this._grammars.has(scopeName)) {\n let rawGrammar = this._rawGrammars.get(scopeName);\n if (!rawGrammar) {\n return null;\n }\n this._grammars.set(scopeName, createGrammar(\n scopeName,\n rawGrammar,\n initialLanguage,\n embeddedLanguages,\n tokenTypes,\n balancedBracketSelectors,\n this,\n this._onigLib\n ));\n }\n return this._grammars.get(scopeName);\n }\n};\n\n// src/index.ts\nvar Registry = class {\n _options;\n _syncRegistry;\n _ensureGrammarCache;\n constructor(options) {\n this._options = options;\n this._syncRegistry = new SyncRegistry(\n Theme.createFromRawTheme(options.theme, options.colorMap),\n options.onigLib\n );\n this._ensureGrammarCache = /* @__PURE__ */ new Map();\n }\n dispose() {\n this._syncRegistry.dispose();\n }\n /**\n * Change the theme. Once called, no previous `ruleStack` should be used anymore.\n */\n setTheme(theme, colorMap) {\n this._syncRegistry.setTheme(Theme.createFromRawTheme(theme, colorMap));\n }\n /**\n * Returns a lookup array for color ids.\n */\n getColorMap() {\n return this._syncRegistry.getColorMap();\n }\n /**\n * Load the grammar for `scopeName` and all referenced included grammars asynchronously.\n * Please do not use language id 0.\n */\n loadGrammarWithEmbeddedLanguages(initialScopeName, initialLanguage, embeddedLanguages) {\n return this.loadGrammarWithConfiguration(initialScopeName, initialLanguage, { embeddedLanguages });\n }\n /**\n * Load the grammar for `scopeName` and all referenced included grammars asynchronously.\n * Please do not use language id 0.\n */\n loadGrammarWithConfiguration(initialScopeName, initialLanguage, configuration) {\n return this._loadGrammar(\n initialScopeName,\n initialLanguage,\n configuration.embeddedLanguages,\n configuration.tokenTypes,\n new BalancedBracketSelectors(\n configuration.balancedBracketSelectors || [],\n configuration.unbalancedBracketSelectors || []\n )\n );\n }\n /**\n * Load the grammar for `scopeName` and all referenced included grammars asynchronously.\n */\n loadGrammar(initialScopeName) {\n return this._loadGrammar(initialScopeName, 0, null, null, null);\n }\n _loadGrammar(initialScopeName, initialLanguage, embeddedLanguages, tokenTypes, balancedBracketSelectors) {\n const dependencyProcessor = new ScopeDependencyProcessor(this._syncRegistry, initialScopeName);\n while (dependencyProcessor.Q.length > 0) {\n dependencyProcessor.Q.map((request) => this._loadSingleGrammar(request.scopeName));\n dependencyProcessor.processQueue();\n }\n return this._grammarForScopeName(\n initialScopeName,\n initialLanguage,\n embeddedLanguages,\n tokenTypes,\n balancedBracketSelectors\n );\n }\n _loadSingleGrammar(scopeName) {\n if (!this._ensureGrammarCache.has(scopeName)) {\n this._doLoadSingleGrammar(scopeName);\n this._ensureGrammarCache.set(scopeName, true);\n }\n }\n _doLoadSingleGrammar(scopeName) {\n const grammar = this._options.loadGrammar(scopeName);\n if (grammar) {\n const injections = typeof this._options.getInjections === \"function\" ? this._options.getInjections(scopeName) : void 0;\n this._syncRegistry.addGrammar(grammar, injections);\n }\n }\n /**\n * Adds a rawGrammar.\n */\n addGrammar(rawGrammar, injections = [], initialLanguage = 0, embeddedLanguages = null) {\n this._syncRegistry.addGrammar(rawGrammar, injections);\n return this._grammarForScopeName(rawGrammar.scopeName, initialLanguage, embeddedLanguages);\n }\n /**\n * Get the grammar for `scopeName`. The grammar must first be created via `loadGrammar` or `addGrammar`.\n */\n _grammarForScopeName(scopeName, initialLanguage = 0, embeddedLanguages = null, tokenTypes = null, balancedBracketSelectors = null) {\n return this._syncRegistry.grammarForScopeName(\n scopeName,\n initialLanguage,\n embeddedLanguages,\n tokenTypes,\n balancedBracketSelectors\n );\n }\n};\nvar INITIAL = StateStackImpl.NULL;\nexport {\n EncodedTokenMetadata,\n FindOption,\n FontStyle,\n INITIAL,\n Registry,\n Theme,\n disposeOnigString\n};\n","import { ShikiError as ShikiError$1 } from '@shikijs/types';\nexport * from '@shikijs/types';\nimport { FontStyle, INITIAL, EncodedTokenMetadata, Registry as Registry$1, Theme } from '@shikijs/vscode-textmate';\nimport { toHtml } from 'hast-util-to-html';\n\nfunction resolveColorReplacements(theme, options) {\n const replacements = typeof theme === \"string\" ? {} : { ...theme.colorReplacements };\n const themeName = typeof theme === \"string\" ? theme : theme.name;\n for (const [key, value] of Object.entries(options?.colorReplacements || {})) {\n if (typeof value === \"string\")\n replacements[key] = value;\n else if (key === themeName)\n Object.assign(replacements, value);\n }\n return replacements;\n}\nfunction applyColorReplacements(color, replacements) {\n if (!color)\n return color;\n return replacements?.[color?.toLowerCase()] || color;\n}\n\nfunction toArray(x) {\n return Array.isArray(x) ? x : [x];\n}\nasync function normalizeGetter(p) {\n return Promise.resolve(typeof p === \"function\" ? p() : p).then((r) => r.default || r);\n}\nfunction isPlainLang(lang) {\n return !lang || [\"plaintext\", \"txt\", \"text\", \"plain\"].includes(lang);\n}\nfunction isSpecialLang(lang) {\n return lang === \"ansi\" || isPlainLang(lang);\n}\nfunction isNoneTheme(theme) {\n return theme === \"none\";\n}\nfunction isSpecialTheme(theme) {\n return isNoneTheme(theme);\n}\n\nfunction addClassToHast(node, className) {\n if (!className)\n return node;\n node.properties ||= {};\n node.properties.class ||= [];\n if (typeof node.properties.class === \"string\")\n node.properties.class = node.properties.class.split(/\\s+/g);\n if (!Array.isArray(node.properties.class))\n node.properties.class = [];\n const targets = Array.isArray(className) ? className : className.split(/\\s+/g);\n for (const c of targets) {\n if (c && !node.properties.class.includes(c))\n node.properties.class.push(c);\n }\n return node;\n}\n\nfunction splitLines(code, preserveEnding = false) {\n if (code.length === 0) {\n return [[\"\", 0]];\n }\n const parts = code.split(/(\\r?\\n)/g);\n let index = 0;\n const lines = [];\n for (let i = 0; i < parts.length; i += 2) {\n const line = preserveEnding ? parts[i] + (parts[i + 1] || \"\") : parts[i];\n lines.push([line, index]);\n index += parts[i].length;\n index += parts[i + 1]?.length || 0;\n }\n return lines;\n}\nfunction createPositionConverter(code) {\n const lines = splitLines(code, true).map(([line]) => line);\n function indexToPos(index) {\n if (index === code.length) {\n return {\n line: lines.length - 1,\n character: lines[lines.length - 1].length\n };\n }\n let character = index;\n let line = 0;\n for (const lineText of lines) {\n if (character < lineText.length)\n break;\n character -= lineText.length;\n line++;\n }\n return { line, character };\n }\n function posToIndex(line, character) {\n let index = 0;\n for (let i = 0; i < line; i++)\n index += lines[i].length;\n index += character;\n return index;\n }\n return {\n lines,\n indexToPos,\n posToIndex\n };\n}\nfunction guessEmbeddedLanguages(code, _lang, highlighter) {\n const langs = /* @__PURE__ */ new Set();\n for (const match of code.matchAll(/:?lang=[\"']([^\"']+)[\"']/g)) {\n const lang = match[1].toLowerCase().trim();\n if (lang)\n langs.add(lang);\n }\n for (const match of code.matchAll(/(?:```|~~~)([\\w-]+)/g)) {\n const lang = match[1].toLowerCase().trim();\n if (lang)\n langs.add(lang);\n }\n for (const match of code.matchAll(/\\\\begin\\{([\\w-]+)\\}/g)) {\n const lang = match[1].toLowerCase().trim();\n if (lang)\n langs.add(lang);\n }\n for (const match of code.matchAll(/<script\\s+(?:type|lang)=[\"']([^\"']+)[\"']/gi)) {\n const fullType = match[1].toLowerCase().trim();\n const lang = fullType.includes(\"/\") ? fullType.split(\"/\").pop() : fullType;\n if (lang)\n langs.add(lang);\n }\n if (!highlighter)\n return Array.from(langs);\n const bundle = highlighter.getBundledLanguages();\n return Array.from(langs).filter((l) => l && bundle[l]);\n}\n\nconst DEFAULT_COLOR_LIGHT_DARK = \"light-dark()\";\nconst COLOR_KEYS = [\"color\", \"background-color\"];\n\nfunction splitToken(token, offsets) {\n let lastOffset = 0;\n const tokens = [];\n for (const offset of offsets) {\n if (offset > lastOffset) {\n tokens.push({\n ...token,\n content: token.content.slice(lastOffset, offset),\n offset: token.offset + lastOffset\n });\n }\n lastOffset = offset;\n }\n if (lastOffset < token.content.length) {\n tokens.push({\n ...token,\n content: token.content.slice(lastOffset),\n offset: token.offset + lastOffset\n });\n }\n return tokens;\n}\nfunction splitTokens(tokens, breakpoints) {\n const sorted = Array.from(breakpoints instanceof Set ? breakpoints : new Set(breakpoints)).sort((a, b) => a - b);\n if (!sorted.length)\n return tokens;\n return tokens.map((line) => {\n return line.flatMap((token) => {\n const breakpointsInToken = sorted.filter((i) => token.offset < i && i < token.offset + token.content.length).map((i) => i - token.offset).sort((a, b) => a - b);\n if (!breakpointsInToken.length)\n return token;\n return splitToken(token, breakpointsInToken);\n });\n });\n}\nfunction flatTokenVariants(merged, variantsOrder, cssVariablePrefix, defaultColor, colorsRendering = \"css-vars\") {\n const token = {\n content: merged.content,\n explanation: merged.explanation,\n offset: merged.offset\n };\n const styles = variantsOrder.map((t) => getTokenStyleObject(merged.variants[t]));\n const styleKeys = new Set(styles.flatMap((t) => Object.keys(t)));\n const mergedStyles = {};\n const varKey = (idx, key) => {\n const keyName = key === \"color\" ? \"\" : key === \"background-color\" ? \"-bg\" : `-${key}`;\n return cssVariablePrefix + variantsOrder[idx] + (key === \"color\" ? \"\" : keyName);\n };\n styles.forEach((cur, idx) => {\n for (const key of styleKeys) {\n const value = cur[key] || \"inherit\";\n if (idx === 0 && defaultColor && COLOR_KEYS.includes(key)) {\n if (defaultColor === DEFAULT_COLOR_LIGHT_DARK && styles.length > 1) {\n const lightIndex = variantsOrder.findIndex((t) => t === \"light\");\n const darkIndex = variantsOrder.findIndex((t) => t === \"dark\");\n if (lightIndex === -1 || darkIndex === -1)\n throw new ShikiError$1('When using `defaultColor: \"light-dark()\"`, you must provide both `light` and `dark` themes');\n const lightValue = styles[lightIndex][key] || \"inherit\";\n const darkValue = styles[darkIndex][key] || \"inherit\";\n mergedStyles[key] = `light-dark(${lightValue}, ${darkValue})`;\n if (colorsRendering === \"css-vars\")\n mergedStyles[varKey(idx, key)] = value;\n } else {\n mergedStyles[key] = value;\n }\n } else {\n if (colorsRendering === \"css-vars\")\n mergedStyles[varKey(idx, key)] = value;\n }\n }\n });\n token.htmlStyle = mergedStyles;\n return token;\n}\nfunction getTokenStyleObject(token) {\n const styles = {};\n if (token.color)\n styles.color = token.color;\n if (token.bgColor)\n styles[\"background-color\"] = token.bgColor;\n if (token.fontStyle) {\n if (token.fontStyle & FontStyle.Italic)\n styles[\"font-style\"] = \"italic\";\n if (token.fontStyle & FontStyle.Bold)\n styles[\"font-weight\"] = \"bold\";\n const decorations = [];\n if (token.fontStyle & FontStyle.Underline)\n decorations.push(\"underline\");\n if (token.fontStyle & FontStyle.Strikethrough)\n decorations.push(\"line-through\");\n if (decorations.length)\n styles[\"text-decoration\"] = decorations.join(\" \");\n }\n return styles;\n}\nfunction stringifyTokenStyle(token) {\n if (typeof token === \"string\")\n return token;\n return Object.entries(token).map(([key, value]) => `${key}:${value}`).join(\";\");\n}\n\nconst _grammarStateMap = /* @__PURE__ */ new WeakMap();\nfunction setLastGrammarStateToMap(keys, state) {\n _grammarStateMap.set(keys, state);\n}\nfunction getLastGrammarStateFromMap(keys) {\n return _grammarStateMap.get(keys);\n}\nclass GrammarState {\n /**\n * Theme to Stack mapping\n */\n _stacks = {};\n lang;\n get themes() {\n return Object.keys(this._stacks);\n }\n get theme() {\n return this.themes[0];\n }\n get _stack() {\n return this._stacks[this.theme];\n }\n /**\n * Static method to create a initial grammar state.\n */\n static initial(lang, themes) {\n return new GrammarState(\n Object.fromEntries(toArray(themes).map((theme) => [theme, INITIAL])),\n lang\n );\n }\n constructor(...args) {\n if (args.length === 2) {\n const [stacksMap, lang] = args;\n this.lang = lang;\n this._stacks = stacksMap;\n } else {\n const [stack, lang, theme] = args;\n this.lang = lang;\n this._stacks = { [theme]: stack };\n }\n }\n /**\n * Get the internal stack object.\n * @internal\n */\n getInternalStack(theme = this.theme) {\n return this._stacks[theme];\n }\n getScopes(theme = this.theme) {\n return getScopes(this._stacks[theme]);\n }\n toJSON() {\n return {\n lang: this.lang,\n theme: this.theme,\n themes: this.themes,\n scopes: this.getScopes()\n };\n }\n}\nfunction getScopes(stack) {\n const scopes = [];\n const visited = /* @__PURE__ */ new Set();\n function pushScope(stack2) {\n if (visited.has(stack2))\n return;\n visited.add(stack2);\n const name = stack2?.nameScopesList?.scopeName;\n if (name)\n scopes.push(name);\n if (stack2.parent)\n pushScope(stack2.parent);\n }\n pushScope(stack);\n return scopes;\n}\nfunction getGrammarStack(state, theme) {\n if (!(state instanceof GrammarState))\n throw new ShikiError$1(\"Invalid grammar state\");\n return state.getInternalStack(theme);\n}\n\nfunction transformerDecorations() {\n const map = /* @__PURE__ */ new WeakMap();\n function getContext(shiki) {\n if (!map.has(shiki.meta)) {\n let normalizePosition = function(p) {\n if (typeof p === \"number\") {\n if (p < 0 || p > shiki.source.length)\n throw new ShikiError$1(`Invalid decoration offset: ${p}. Code length: ${shiki.source.length}`);\n return {\n ...converter.indexToPos(p),\n offset: p\n };\n } else {\n const line = converter.lines[p.line];\n if (line === void 0)\n throw new ShikiError$1(`Invalid decoration position ${JSON.stringify(p)}. Lines length: ${converter.lines.length}`);\n let character = p.character;\n if (character < 0)\n character = line.length + character;\n if (character < 0 || character > line.length)\n throw new ShikiError$1(`Invalid decoration position ${JSON.stringify(p)}. Line ${p.line} length: ${line.length}`);\n return {\n ...p,\n character,\n offset: converter.posToIndex(p.line, character)\n };\n }\n };\n const converter = createPositionConverter(shiki.source);\n const decorations = (shiki.options.decorations || []).map((d) => ({\n ...d,\n start: normalizePosition(d.start),\n end: normalizePosition(d.end)\n }));\n verifyIntersections(decorations);\n map.set(shiki.meta, {\n decorations,\n converter,\n source: shiki.source\n });\n }\n return map.get(shiki.meta);\n }\n return {\n name: \"shiki:decorations\",\n tokens(tokens) {\n if (!this.options.decorations?.length)\n return;\n const ctx = getContext(this);\n const breakpoints = ctx.decorations.flatMap((d) => [d.start.offset, d.end.offset]);\n const splitted = splitTokens(tokens, breakpoints);\n return splitted;\n },\n code(codeEl) {\n if (!this.options.decorations?.length)\n return;\n const ctx = getContext(this);\n const lines = Array.from(codeEl.children).filter((i) => i.type === \"element\" && i.tagName === \"span\");\n if (lines.length !== ctx.converter.lines.length)\n throw new ShikiError$1(`Number of lines in code element (${lines.length}) does not match the number of lines in the source (${ctx.converter.lines.length}). Failed to apply decorations.`);\n function applyLineSection(line, start, end, decoration) {\n const lineEl = lines[line];\n let text = \"\";\n let startIndex = -1;\n let endIndex = -1;\n if (start === 0)\n startIndex = 0;\n if (end === 0)\n endIndex = 0;\n if (end === Number.POSITIVE_INFINITY)\n endIndex = lineEl.children.length;\n if (startIndex === -1 || endIndex === -1) {\n for (let i = 0; i < lineEl.children.length; i++) {\n text += stringify(lineEl.children[i]);\n if (startIndex === -1 && text.length === start)\n startIndex = i + 1;\n if (endIndex === -1 && text.length === end)\n endIndex = i + 1;\n }\n }\n if (startIndex === -1)\n throw new ShikiError$1(`Failed to find start index for decoration ${JSON.stringify(decoration.start)}`);\n if (endIndex === -1)\n throw new ShikiError$1(`Failed to find end index for decoration ${JSON.stringify(decoration.end)}`);\n const children = lineEl.children.slice(startIndex, endIndex);\n if (!decoration.alwaysWrap && children.length === lineEl.children.length) {\n applyDecoration(lineEl, decoration, \"line\");\n } else if (!decoration.alwaysWrap && children.length === 1 && children[0].type === \"element\") {\n applyDecoration(children[0], decoration, \"token\");\n } else {\n const wrapper = {\n type: \"element\",\n tagName: \"span\",\n properties: {},\n children\n };\n applyDecoration(wrapper, decoration, \"wrapper\");\n lineEl.children.splice(startIndex, children.length, wrapper);\n }\n }\n function applyLine(line, decoration) {\n lines[line] = applyDecoration(lines[line], decoration, \"line\");\n }\n function applyDecoration(el, decoration, type) {\n const properties = decoration.properties || {};\n const transform = decoration.transform || ((i) => i);\n el.tagName = decoration.tagName || \"span\";\n el.properties = {\n ...el.properties,\n ...properties,\n class: el.properties.class\n };\n if (decoration.properties?.class)\n addClassToHast(el, decoration.properties.class);\n el = transform(el, type) || el;\n return el;\n }\n const lineApplies = [];\n const sorted = ctx.decorations.sort((a, b) => b.start.offset - a.start.offset || a.end.offset - b.end.offset);\n for (const decoration of sorted) {\n const { start, end } = decoration;\n if (start.line === end.line) {\n applyLineSection(start.line, start.character, end.character, decoration);\n } else if (start.line < end.line) {\n applyLineSection(start.line, start.character, Number.POSITIVE_INFINITY, decoration);\n for (let i = start.line + 1; i < end.line; i++)\n lineApplies.unshift(() => applyLine(i, decoration));\n applyLineSection(end.line, 0, end.character, decoration);\n }\n }\n lineApplies.forEach((i) => i());\n }\n };\n}\nfunction verifyIntersections(items) {\n for (let i = 0; i < items.length; i++) {\n const foo = items[i];\n if (foo.start.offset > foo.end.offset)\n throw new ShikiError$1(`Invalid decoration range: ${JSON.stringify(foo.start)} - ${JSON.stringify(foo.end)}`);\n for (let j = i + 1; j < items.length; j++) {\n const bar = items[j];\n const isFooHasBarStart = foo.start.offset <= bar.start.offset && bar.start.offset < foo.end.offset;\n const isFooHasBarEnd = foo.start.offset < bar.end.offset && bar.end.offset <= foo.end.offset;\n const isBarHasFooStart = bar.start.offset <= foo.start.offset && foo.start.offset < bar.end.offset;\n const isBarHasFooEnd = bar.start.offset < foo.end.offset && foo.end.offset <= bar.end.offset;\n if (isFooHasBarStart || isFooHasBarEnd || isBarHasFooStart || isBarHasFooEnd) {\n if (isFooHasBarStart && isFooHasBarEnd)\n continue;\n if (isBarHasFooStart && isBarHasFooEnd)\n continue;\n if (isBarHasFooStart && foo.start.offset === foo.end.offset)\n continue;\n if (isFooHasBarEnd && bar.start.offset === bar.end.offset)\n continue;\n throw new ShikiError$1(`Decorations ${JSON.stringify(foo.start)} and ${JSON.stringify(bar.start)} intersect.`);\n }\n }\n }\n}\nfunction stringify(el) {\n if (el.type === \"text\")\n return el.value;\n if (el.type === \"element\")\n return el.children.map(stringify).join(\"\");\n return \"\";\n}\n\nconst builtInTransformers = [\n /* @__PURE__ */ transformerDecorations()\n];\nfunction getTransformers(options) {\n const transformers = sortTransformersByEnforcement(options.transformers || []);\n return [\n ...transformers.pre,\n ...transformers.normal,\n ...transformers.post,\n ...builtInTransformers\n ];\n}\nfunction sortTransformersByEnforcement(transformers) {\n const pre = [];\n const post = [];\n const normal = [];\n for (const transformer of transformers) {\n switch (transformer.enforce) {\n case \"pre\":\n pre.push(transformer);\n break;\n case \"post\":\n post.push(transformer);\n break;\n default:\n normal.push(transformer);\n }\n }\n return { pre, post, normal };\n}\n\n// src/colors.ts\nvar namedColors = [\n \"black\",\n \"red\",\n \"green\",\n \"yellow\",\n \"blue\",\n \"magenta\",\n \"cyan\",\n \"white\",\n \"brightBlack\",\n \"brightRed\",\n \"brightGreen\",\n \"brightYellow\",\n \"brightBlue\",\n \"brightMagenta\",\n \"brightCyan\",\n \"brightWhite\"\n];\n\n// src/decorations.ts\nvar decorations = {\n 1: \"bold\",\n 2: \"dim\",\n 3: \"italic\",\n 4: \"underline\",\n 7: \"reverse\",\n 8: \"hidden\",\n 9: \"strikethrough\"\n};\n\n// src/parser.ts\nfunction findSequence(value, position) {\n const nextEscape = value.indexOf(\"\\x1B\", position);\n if (nextEscape !== -1) {\n if (value[nextEscape + 1] === \"[\") {\n const nextClose = value.indexOf(\"m\", nextEscape);\n if (nextClose !== -1) {\n return {\n sequence: value.substring(nextEscape + 2, nextClose).split(\";\"),\n startPosition: nextEscape,\n position: nextClose + 1\n };\n }\n }\n }\n return {\n position: value.length\n };\n}\nfunction parseColor(sequence) {\n const colorMode = sequence.shift();\n if (colorMode === \"2\") {\n const rgb = sequence.splice(0, 3).map((x) => Number.parseInt(x));\n if (rgb.length !== 3 || rgb.some((x) => Number.isNaN(x)))\n return;\n return {\n type: \"rgb\",\n rgb\n };\n } else if (colorMode === \"5\") {\n const index = sequence.shift();\n if (index) {\n return { type: \"table\", index: Number(index) };\n }\n }\n}\nfunction parseSequence(sequence) {\n const commands = [];\n while (sequence.length > 0) {\n const code = sequence.shift();\n if (!code)\n continue;\n const codeInt = Number.parseInt(code);\n if (Number.isNaN(codeInt))\n continue;\n if (codeInt === 0) {\n commands.push({ type: \"resetAll\" });\n } else if (codeInt <= 9) {\n const decoration = decorations[codeInt];\n if (decoration) {\n commands.push({\n type: \"setDecoration\",\n value: decorations[codeInt]\n });\n }\n } else if (codeInt <= 29) {\n const decoration = decorations[codeInt - 20];\n if (decoration) {\n commands.push({\n type: \"resetDecoration\",\n value: decoration\n });\n if (decoration === \"dim\") {\n commands.push({\n type: \"resetDecoration\",\n value: \"bold\"\n });\n }\n }\n } else if (codeInt <= 37) {\n commands.push({\n type: \"setForegroundColor\",\n value: { type: \"named\", name: namedColors[codeInt - 30] }\n });\n } else if (codeInt === 38) {\n const color = parseColor(sequence);\n if (color) {\n commands.push({\n type: \"setForegroundColor\",\n value: color\n });\n }\n } else if (codeInt === 39) {\n commands.push({\n type: \"resetForegroundColor\"\n });\n } else if (codeInt <= 47) {\n commands.push({\n type: \"setBackgroundColor\",\n value: { type: \"named\", name: namedColors[codeInt - 40] }\n });\n } else if (codeInt === 48) {\n const color = parseColor(sequence);\n if (color) {\n commands.push({\n type: \"setBackgroundColor\",\n value: color\n });\n }\n } else if (codeInt === 49) {\n commands.push({\n type: \"resetBackgroundColor\"\n });\n } else if (codeInt === 53) {\n commands.push({\n type: \"setDecoration\",\n value: \"overline\"\n });\n } else if (codeInt === 55) {\n commands.push({\n type: \"resetDecoration\",\n value: \"overline\"\n });\n } else if (codeInt >= 90 && codeInt <= 97) {\n commands.push({\n type: \"setForegroundColor\",\n value: { type: \"named\", name: namedColors[codeInt - 90 + 8] }\n });\n } else if (codeInt >= 100 && codeInt <= 107) {\n commands.push({\n type: \"setBackgroundColor\",\n value: { type: \"named\", name: namedColors[codeInt - 100 + 8] }\n });\n }\n }\n return commands;\n}\nfunction createAnsiSequenceParser() {\n let foreground = null;\n let background = null;\n let decorations2 = /* @__PURE__ */ new Set();\n return {\n parse(value) {\n const tokens = [];\n let position = 0;\n do {\n const findResult = findSequence(value, position);\n const text = findResult.sequence ? value.substring(position, findResult.startPosition) : value.substring(position);\n if (text.length > 0) {\n tokens.push({\n value: text,\n foreground,\n background,\n decorations: new Set(decorations2)\n });\n }\n if (findResult.sequence) {\n const commands = parseSequence(findResult.sequence);\n for (const styleToken of commands) {\n if (styleToken.type === \"resetAll\") {\n foreground = null;\n background = null;\n decorations2.clear();\n } else if (styleToken.type === \"resetForegroundColor\") {\n foreground = null;\n } else if (styleToken.type === \"resetBackgroundColor\") {\n background = null;\n } else if (styleToken.type === \"resetDecoration\") {\n decorations2.delete(styleToken.value);\n }\n }\n for (const styleToken of commands) {\n if (styleToken.type === \"setForegroundColor\") {\n foreground = styleToken.value;\n } else if (styleToken.type === \"setBackgroundColor\") {\n background = styleToken.value;\n } else if (styleToken.type === \"setDecoration\") {\n decorations2.add(styleToken.value);\n }\n }\n }\n position = findResult.position;\n } while (position < value.length);\n return tokens;\n }\n };\n}\n\n// src/palette.ts\nvar defaultNamedColorsMap = {\n black: \"#000000\",\n red: \"#bb0000\",\n green: \"#00bb00\",\n yellow: \"#bbbb00\",\n blue: \"#0000bb\",\n magenta: \"#ff00ff\",\n cyan: \"#00bbbb\",\n white: \"#eeeeee\",\n brightBlack: \"#555555\",\n brightRed: \"#ff5555\",\n brightGreen: \"#00ff00\",\n brightYellow: \"#ffff55\",\n brightBlue: \"#5555ff\",\n brightMagenta: \"#ff55ff\",\n brightCyan: \"#55ffff\",\n brightWhite: \"#ffffff\"\n};\nfunction createColorPalette(namedColorsMap = defaultNamedColorsMap) {\n function namedColor(name) {\n return namedColorsMap[name];\n }\n function rgbColor(rgb) {\n return `#${rgb.map((x) => Math.max(0, Math.min(x, 255)).toString(16).padStart(2, \"0\")).join(\"\")}`;\n }\n let colorTable;\n function getColorTable() {\n if (colorTable) {\n return colorTable;\n }\n colorTable = [];\n for (let i = 0; i < namedColors.length; i++) {\n colorTable.push(namedColor(namedColors[i]));\n }\n let levels = [0, 95, 135, 175, 215, 255];\n for (let r = 0; r < 6; r++) {\n for (let g = 0; g < 6; g++) {\n for (let b = 0; b < 6; b++) {\n colorTable.push(rgbColor([levels[r], levels[g], levels[b]]));\n }\n }\n }\n let level = 8;\n for (let i = 0; i < 24; i++, level += 10) {\n colorTable.push(rgbColor([level, level, level]));\n }\n return colorTable;\n }\n function tableColor(index) {\n return getColorTable()[index];\n }\n function value(color) {\n switch (color.type) {\n case \"named\":\n return namedColor(color.name);\n case \"rgb\":\n return rgbColor(color.rgb);\n case \"table\":\n return tableColor(color.index);\n }\n }\n return {\n value\n };\n}\n\nconst defaultAnsiColors = {\n black: \"#000000\",\n red: \"#cd3131\",\n green: \"#0DBC79\",\n yellow: \"#E5E510\",\n blue: \"#2472C8\",\n magenta: \"#BC3FBC\",\n cyan: \"#11A8CD\",\n white: \"#E5E5E5\",\n brightBlack: \"#666666\",\n brightRed: \"#F14C4C\",\n brightGreen: \"#23D18B\",\n brightYellow: \"#F5F543\",\n brightBlue: \"#3B8EEA\",\n brightMagenta: \"#D670D6\",\n brightCyan: \"#29B8DB\",\n brightWhite: \"#FFFFFF\"\n};\nfunction tokenizeAnsiWithTheme(theme, fileContents, options) {\n const colorReplacements = resolveColorReplacements(theme, options);\n const lines = splitLines(fileContents);\n const ansiPalette = Object.fromEntries(\n namedColors.map((name) => {\n const key = `terminal.ansi${name[0].toUpperCase()}${name.substring(1)}`;\n const themeColor = theme.colors?.[key];\n return [name, themeColor || defaultAnsiColors[name]];\n })\n );\n const colorPalette = createColorPalette(ansiPalette);\n const parser = createAnsiSequenceParser();\n return lines.map(\n (line) => parser.parse(line[0]).map((token) => {\n let color;\n let bgColor;\n if (token.decorations.has(\"reverse\")) {\n color = token.background ? colorPalette.value(token.background) : theme.bg;\n bgColor = token.foreground ? colorPalette.value(token.foreground) : theme.fg;\n } else {\n color = token.foreground ? colorPalette.value(token.foreground) : theme.fg;\n bgColor = token.background ? colorPalette.value(token.background) : void 0;\n }\n color = applyColorReplacements(color, colorReplacements);\n bgColor = applyColorReplacements(bgColor, colorReplacements);\n if (token.decorations.has(\"dim\"))\n color = dimColor(color);\n let fontStyle = FontStyle.None;\n if (token.decorations.has(\"bold\"))\n fontStyle |= FontStyle.Bold;\n if (token.decorations.has(\"italic\"))\n fontStyle |= FontStyle.Italic;\n if (token.decorations.has(\"underline\"))\n fontStyle |= FontStyle.Underline;\n if (token.decorations.has(\"strikethrough\"))\n fontStyle |= FontStyle.Strikethrough;\n return {\n content: token.value,\n offset: line[1],\n // TODO: more accurate offset? might need to fork ansi-sequence-parser\n color,\n bgColor,\n fontStyle\n };\n })\n );\n}\nfunction dimColor(color) {\n const hexMatch = color.match(/#([0-9a-f]{3,8})/i);\n if (hexMatch) {\n const hex = hexMatch[1];\n if (hex.length === 8) {\n const alpha = Math.round(Number.parseInt(hex.slice(6, 8), 16) / 2).toString(16).padStart(2, \"0\");\n return `#${hex.slice(0, 6)}${alpha}`;\n } else if (hex.length === 6) {\n return `#${hex}80`;\n } else if (hex.length === 4) {\n const r = hex[0];\n const g = hex[1];\n const b = hex[2];\n const a = hex[3];\n const alpha = Math.round(Number.parseInt(`${a}${a}`, 16) / 2).toString(16).padStart(2, \"0\");\n return `#${r}${r}${g}${g}${b}${b}${alpha}`;\n } else if (hex.length === 3) {\n const r = hex[0];\n const g = hex[1];\n const b = hex[2];\n return `#${r}${r}${g}${g}${b}${b}80`;\n }\n }\n const cssVarMatch = color.match(/var\\((--[\\w-]+-ansi-[\\w-]+)\\)/);\n if (cssVarMatch)\n return `var(${cssVarMatch[1]}-dim)`;\n return color;\n}\n\nfunction codeToTokensBase(internal, code, options = {}) {\n const {\n theme: themeName = internal.getLoadedThemes()[0]\n } = options;\n const lang = internal.resolveLangAlias(options.lang || \"text\");\n if (isPlainLang(lang) || isNoneTheme(themeName))\n return splitLines(code).map((line) => [{ content: line[0], offset: line[1] }]);\n const { theme, colorMap } = internal.setTheme(themeName);\n if (lang === \"ansi\")\n return tokenizeAnsiWithTheme(theme, code, options);\n const _grammar = internal.getLanguage(options.lang || \"text\");\n if (options.grammarState) {\n if (options.grammarState.lang !== _grammar.name) {\n throw new ShikiError$1(`Grammar state language \"${options.grammarState.lang}\" does not match highlight language \"${_grammar.name}\"`);\n }\n if (!options.grammarState.themes.includes(theme.name)) {\n throw new ShikiError$1(`Grammar state themes \"${options.grammarState.themes}\" do not contain highlight theme \"${theme.name}\"`);\n }\n }\n return tokenizeWithTheme(code, _grammar, theme, colorMap, options);\n}\nfunction getLastGrammarState(...args) {\n if (args.length === 2) {\n return getLastGrammarStateFromMap(args[1]);\n }\n const [internal, code, options = {}] = args;\n const {\n lang = \"text\",\n theme: themeName = internal.getLoadedThemes()[0]\n } = options;\n if (isPlainLang(lang) || isNoneTheme(themeName))\n throw new ShikiError$1(\"Plain language does not have grammar state\");\n if (lang === \"ansi\")\n throw new ShikiError$1(\"ANSI language does not have grammar state\");\n const { theme, colorMap } = internal.setTheme(themeName);\n const _grammar = internal.getLanguage(lang);\n return new GrammarState(\n _tokenizeWithTheme(code, _grammar, theme, colorMap, options).stateStack,\n _grammar.name,\n theme.name\n );\n}\nfunction tokenizeWithTheme(code, grammar, theme, colorMap, options) {\n const result = _tokenizeWithTheme(code, grammar, theme, colorMap, options);\n const grammarState = new GrammarState(\n result.stateStack,\n grammar.name,\n theme.name\n );\n setLastGrammarStateToMap(result.tokens, grammarState);\n return result.tokens;\n}\nfunction _tokenizeWithTheme(code, grammar, theme, colorMap, options) {\n const colorReplacements = resolveColorReplacements(theme, options);\n const {\n tokenizeMaxLineLength = 0,\n tokenizeTimeLimit = 500\n } = options;\n const lines = splitLines(code);\n let stateStack = options.grammarState ? getGrammarStack(options.grammarState, theme.name) ?? INITIAL : options.grammarContextCode != null ? _tokenizeWithTheme(\n options.grammarContextCode,\n grammar,\n theme,\n colorMap,\n {\n ...options,\n grammarState: void 0,\n grammarContextCode: void 0\n }\n ).stateStack : INITIAL;\n let actual = [];\n const final = [];\n for (let i = 0, len = lines.length; i < len; i++) {\n const [line, lineOffset] = lines[i];\n if (line === \"\") {\n actual = [];\n final.push([]);\n continue;\n }\n if (tokenizeMaxLineLength > 0 && line.length >= tokenizeMaxLineLength) {\n actual = [];\n final.push([{\n content: line,\n offset: lineOffset,\n color: \"\",\n fontStyle: 0\n }]);\n continue;\n }\n let resultWithScopes;\n let tokensWithScopes;\n let tokensWithScopesIndex;\n if (options.includeExplanation) {\n resultWithScopes = grammar.tokenizeLine(line, stateStack, tokenizeTimeLimit);\n tokensWithScopes = resultWithScopes.tokens;\n tokensWithScopesIndex = 0;\n }\n const result = grammar.tokenizeLine2(line, stateStack, tokenizeTimeLimit);\n const tokensLength = result.tokens.length / 2;\n for (let j = 0; j < tokensLength; j++) {\n const startIndex = result.tokens[2 * j];\n const nextStartIndex = j + 1 < tokensLength ? result.tokens[2 * j + 2] : line.length;\n if (startIndex === nextStartIndex)\n continue;\n const metadata = result.tokens[2 * j + 1];\n const color = applyColorReplacements(\n colorMap[EncodedTokenMetadata.getForeground(metadata)],\n colorReplacements\n );\n const fontStyle = EncodedTokenMetadata.getFontStyle(metadata);\n const token = {\n content: line.substring(startIndex, nextStartIndex),\n offset: lineOffset + startIndex,\n color,\n fontStyle\n };\n if (options.includeExplanation) {\n const themeSettingsSelectors = [];\n if (options.includeExplanation !== \"scopeName\") {\n for (const setting of theme.settings) {\n let selectors;\n switch (typeof setting.scope) {\n case \"string\":\n selectors = setting.scope.split(/,/).map((scope) => scope.trim());\n break;\n case \"object\":\n selectors = setting.scope;\n break;\n default:\n continue;\n }\n themeSettingsSelectors.push({\n settings: setting,\n selectors: selectors.map((selector) => selector.split(/ /))\n });\n }\n }\n token.explanation = [];\n let offset = 0;\n while (startIndex + offset < nextStartIndex) {\n const tokenWithScopes = tokensWithScopes[tokensWithScopesIndex];\n const tokenWithScopesText = line.substring(\n tokenWithScopes.startIndex,\n tokenWithScopes.endIndex\n );\n offset += tokenWithScopesText.length;\n token.explanation.push({\n content: tokenWithScopesText,\n scopes: options.includeExplanation === \"scopeName\" ? explainThemeScopesNameOnly(\n tokenWithScopes.scopes\n ) : explainThemeScopesFull(\n themeSettingsSelectors,\n tokenWithScopes.scopes\n )\n });\n tokensWithScopesIndex += 1;\n }\n }\n actual.push(token);\n }\n final.push(actual);\n actual = [];\n stateStack = result.ruleStack;\n }\n return {\n tokens: final,\n stateStack\n };\n}\nfunction explainThemeScopesNameOnly(scopes) {\n return scopes.map((scope) => ({ scopeName: scope }));\n}\nfunction explainThemeScopesFull(themeSelectors, scopes) {\n const result = [];\n for (let i = 0, len = scopes.length; i < len; i++) {\n const scope = scopes[i];\n result[i] = {\n scopeName: scope,\n themeMatches: explainThemeScope(themeSelectors, scope, scopes.slice(0, i))\n };\n }\n return result;\n}\nfunction matchesOne(selector, scope) {\n return selector === scope || scope.substring(0, selector.length) === selector && scope[selector.length] === \".\";\n}\nfunction matches(selectors, scope, parentScopes) {\n if (!matchesOne(selectors[selectors.length - 1], scope))\n return false;\n let selectorParentIndex = selectors.length - 2;\n let parentIndex = parentScopes.length - 1;\n while (selectorParentIndex >= 0 && parentIndex >= 0) {\n if (matchesOne(selectors[selectorParentIndex], parentScopes[parentIndex]))\n selectorParentIndex -= 1;\n parentIndex -= 1;\n }\n if (selectorParentIndex === -1)\n return true;\n return false;\n}\nfunction explainThemeScope(themeSettingsSelectors, scope, parentScopes) {\n const result = [];\n for (const { selectors, settings } of themeSettingsSelectors) {\n for (const selectorPieces of selectors) {\n if (matches(selectorPieces, scope, parentScopes)) {\n result.push(settings);\n break;\n }\n }\n }\n return result;\n}\n\nfunction codeToTokensWithThemes(internal, code, options) {\n const themes = Object.entries(options.themes).filter((i) => i[1]).map((i) => ({ color: i[0], theme: i[1] }));\n const themedTokens = themes.map((t) => {\n const tokens2 = codeToTokensBase(internal, code, {\n ...options,\n theme: t.theme\n });\n const state = getLastGrammarStateFromMap(tokens2);\n const theme = typeof t.theme === \"string\" ? t.theme : t.theme.name;\n return {\n tokens: tokens2,\n state,\n theme\n };\n });\n const tokens = syncThemesTokenization(\n ...themedTokens.map((i) => i.tokens)\n );\n const mergedTokens = tokens[0].map(\n (line, lineIdx) => line.map((_token, tokenIdx) => {\n const mergedToken = {\n content: _token.content,\n variants: {},\n offset: _token.offset\n };\n if (\"includeExplanation\" in options && options.includeExplanation) {\n mergedToken.explanation = _token.explanation;\n }\n tokens.forEach((t, themeIdx) => {\n const {\n content: _,\n explanation: __,\n offset: ___,\n ...styles\n } = t[lineIdx][tokenIdx];\n mergedToken.variants[themes[themeIdx].color] = styles;\n });\n return mergedToken;\n })\n );\n const mergedGrammarState = themedTokens[0].state ? new GrammarState(\n Object.fromEntries(themedTokens.map((s) => [s.theme, s.state?.getInternalStack(s.theme)])),\n themedTokens[0].state.lang\n ) : void 0;\n if (mergedGrammarState)\n setLastGrammarStateToMap(mergedTokens, mergedGrammarState);\n return mergedTokens;\n}\nfunction syncThemesTokenization(...themes) {\n const outThemes = themes.map(() => []);\n const count = themes.length;\n for (let i = 0; i < themes[0].length; i++) {\n const lines = themes.map((t) => t[i]);\n const outLines = outThemes.map(() => []);\n outThemes.forEach((t, i2) => t.push(outLines[i2]));\n const indexes = lines.map(() => 0);\n const current = lines.map((l) => l[0]);\n while (current.every((t) => t)) {\n const minLength = Math.min(...current.map((t) => t.content.length));\n for (let n = 0; n < count; n++) {\n const token = current[n];\n if (token.content.length === minLength) {\n outLines[n].push(token);\n indexes[n] += 1;\n current[n] = lines[n][indexes[n]];\n } else {\n outLines[n].push({\n ...token,\n content: token.content.slice(0, minLength)\n });\n current[n] = {\n ...token,\n content: token.content.slice(minLength),\n offset: token.offset + minLength\n };\n }\n }\n }\n }\n return outThemes;\n}\n\nfunction codeToTokens(internal, code, options) {\n let bg;\n let fg;\n let tokens;\n let themeName;\n let rootStyle;\n let grammarState;\n if (\"themes\" in options) {\n const {\n defaultColor = \"light\",\n cssVariablePrefix = \"--shiki-\",\n colorsRendering = \"css-vars\"\n } = options;\n const themes = Object.entries(options.themes).filter((i) => i[1]).map((i) => ({ color: i[0], theme: i[1] })).sort((a, b) => a.color === defaultColor ? -1 : b.color === defaultColor ? 1 : 0);\n if (themes.length === 0)\n throw new ShikiError$1(\"`themes` option must not be empty\");\n const themeTokens = codeToTokensWithThemes(\n internal,\n code,\n options\n );\n grammarState = getLastGrammarStateFromMap(themeTokens);\n if (defaultColor && DEFAULT_COLOR_LIGHT_DARK !== defaultColor && !themes.find((t) => t.color === defaultColor))\n throw new ShikiError$1(`\\`themes\\` option must contain the defaultColor key \\`${defaultColor}\\``);\n const themeRegs = themes.map((t) => internal.getTheme(t.theme));\n const themesOrder = themes.map((t) => t.color);\n tokens = themeTokens.map((line) => line.map((token) => flatTokenVariants(token, themesOrder, cssVariablePrefix, defaultColor, colorsRendering)));\n if (grammarState)\n setLastGrammarStateToMap(tokens, grammarState);\n const themeColorReplacements = themes.map((t) => resolveColorReplacements(t.theme, options));\n fg = mapThemeColors(themes, themeRegs, themeColorReplacements, cssVariablePrefix, defaultColor, \"fg\", colorsRendering);\n bg = mapThemeColors(themes, themeRegs, themeColorReplacements, cssVariablePrefix, defaultColor, \"bg\", colorsRendering);\n themeName = `shiki-themes ${themeRegs.map((t) => t.name).join(\" \")}`;\n rootStyle = defaultColor ? void 0 : [fg, bg].join(\";\");\n } else if (\"theme\" in options) {\n const colorReplacements = resolveColorReplacements(options.theme, options);\n tokens = codeToTokensBase(\n internal,\n code,\n options\n );\n const _theme = internal.getTheme(options.theme);\n bg = applyColorReplacements(_theme.bg, colorReplacements);\n fg = applyColorReplacements(_theme.fg, colorReplacements);\n themeName = _theme.name;\n grammarState = getLastGrammarStateFromMap(tokens);\n } else {\n throw new ShikiError$1(\"Invalid options, either `theme` or `themes` must be provided\");\n }\n return {\n tokens,\n fg,\n bg,\n themeName,\n rootStyle,\n grammarState\n };\n}\nfunction mapThemeColors(themes, themeRegs, themeColorReplacements, cssVariablePrefix, defaultColor, property, colorsRendering) {\n return themes.map((t, idx) => {\n const value = applyColorReplacements(themeRegs[idx][property], themeColorReplacements[idx]) || \"inherit\";\n const cssVar = `${cssVariablePrefix + t.color}${property === \"bg\" ? \"-bg\" : \"\"}:${value}`;\n if (idx === 0 && defaultColor) {\n if (defaultColor === DEFAULT_COLOR_LIGHT_DARK && themes.length > 1) {\n const lightIndex = themes.findIndex((t2) => t2.color === \"light\");\n const darkIndex = themes.findIndex((t2) => t2.color === \"dark\");\n if (lightIndex === -1 || darkIndex === -1)\n throw new ShikiError$1('When using `defaultColor: \"light-dark()\"`, you must provide both `light` and `dark` themes');\n const lightValue = applyColorReplacements(themeRegs[lightIndex][property], themeColorReplacements[lightIndex]) || \"inherit\";\n const darkValue = applyColorReplacements(themeRegs[darkIndex][property], themeColorReplacements[darkIndex]) || \"inherit\";\n return `light-dark(${lightValue}, ${darkValue});${cssVar}`;\n }\n return value;\n }\n if (colorsRendering === \"css-vars\") {\n return cssVar;\n }\n return null;\n }).filter((i) => !!i).join(\";\");\n}\n\nfunction codeToHast(internal, code, options, transformerContext = {\n meta: {},\n options,\n codeToHast: (_code, _options) => codeToHast(internal, _code, _options),\n codeToTokens: (_code, _options) => codeToTokens(internal, _code, _options)\n}) {\n let input = code;\n for (const transformer of getTransformers(options))\n input = transformer.preprocess?.call(transformerContext, input, options) || input;\n let {\n tokens,\n fg,\n bg,\n themeName,\n rootStyle,\n grammarState\n } = codeToTokens(internal, input, options);\n const {\n mergeWhitespaces = true,\n mergeSameStyleTokens = false\n } = options;\n if (mergeWhitespaces === true)\n tokens = mergeWhitespaceTokens(tokens);\n else if (mergeWhitespaces === \"never\")\n tokens = splitWhitespaceTokens(tokens);\n if (mergeSameStyleTokens) {\n tokens = mergeAdjacentStyledTokens(tokens);\n }\n const contextSource = {\n ...transformerContext,\n get source() {\n return input;\n }\n };\n for (const transformer of getTransformers(options))\n tokens = transformer.tokens?.call(contextSource, tokens) || tokens;\n return tokensToHast(\n tokens,\n {\n ...options,\n fg,\n bg,\n themeName,\n rootStyle: options.rootStyle === false ? false : options.rootStyle ?? rootStyle\n },\n contextSource,\n grammarState\n );\n}\nfunction tokensToHast(tokens, options, transformerContext, grammarState = getLastGrammarStateFromMap(tokens)) {\n const transformers = getTransformers(options);\n const lines = [];\n const root = {\n type: \"root\",\n children: []\n };\n const {\n structure = \"classic\",\n tabindex = \"0\"\n } = options;\n const properties = {\n class: `shiki ${options.themeName || \"\"}`\n };\n if (options.rootStyle !== false) {\n if (options.rootStyle != null)\n properties.style = options.rootStyle;\n else\n properties.style = `background-color:${options.bg};color:${options.fg}`;\n }\n if (tabindex !== false && tabindex != null)\n properties.tabindex = tabindex.toString();\n for (const [key, value] of Object.entries(options.meta || {})) {\n if (!key.startsWith(\"_\"))\n properties[key] = value;\n }\n let preNode = {\n type: \"element\",\n tagName: \"pre\",\n properties,\n children: [],\n data: options.data\n };\n let codeNode = {\n type: \"element\",\n tagName: \"code\",\n properties: {},\n children: lines\n };\n const lineNodes = [];\n const context = {\n ...transformerContext,\n structure,\n addClassToHast,\n get source() {\n return transformerContext.source;\n },\n get tokens() {\n return tokens;\n },\n get options() {\n return options;\n },\n get root() {\n return root;\n },\n get pre() {\n return preNode;\n },\n get code() {\n return codeNode;\n },\n get lines() {\n return lineNodes;\n }\n };\n tokens.forEach((line, idx) => {\n if (idx) {\n if (structure === \"inline\")\n root.children.push({ type: \"element\", tagName: \"br\", properties: {}, children: [] });\n else if (structure === \"classic\")\n lines.push({ type: \"text\", value: \"\\n\" });\n }\n let lineNode = {\n type: \"element\",\n tagName: \"span\",\n properties: { class: \"line\" },\n children: []\n };\n let col = 0;\n for (const token of line) {\n let tokenNode = {\n type: \"element\",\n tagName: \"span\",\n properties: {\n ...token.htmlAttrs\n },\n children: [{ type: \"text\", value: token.content }]\n };\n const style = stringifyTokenStyle(token.htmlStyle || getTokenStyleObject(token));\n if (style)\n tokenNode.properties.style = style;\n for (const transformer of transformers)\n tokenNode = transformer?.span?.call(context, tokenNode, idx + 1, col, lineNode, token) || tokenNode;\n if (structure === \"inline\")\n root.children.push(tokenNode);\n else if (structure === \"classic\")\n lineNode.children.push(tokenNode);\n col += token.content.length;\n }\n if (structure === \"classic\") {\n for (const transformer of transformers)\n lineNode = transformer?.line?.call(context, lineNode, idx + 1) || lineNode;\n lineNodes.push(lineNode);\n lines.push(lineNode);\n } else if (structure === \"inline\") {\n lineNodes.push(lineNode);\n }\n });\n if (structure === \"classic\") {\n for (const transformer of transformers)\n codeNode = transformer?.code?.call(context, codeNode) || codeNode;\n preNode.children.push(codeNode);\n for (const transformer of transformers)\n preNode = transformer?.pre?.call(context, preNode) || preNode;\n root.children.push(preNode);\n } else if (structure === \"inline\") {\n const syntheticLines = [];\n let currentLine = {\n type: \"element\",\n tagName: \"span\",\n properties: { class: \"line\" },\n children: []\n };\n for (const child of root.children) {\n if (child.type === \"element\" && child.tagName === \"br\") {\n syntheticLines.push(currentLine);\n currentLine = {\n type: \"element\",\n tagName: \"span\",\n properties: { class: \"line\" },\n children: []\n };\n } else if (child.type === \"element\" || child.type === \"text\") {\n currentLine.children.push(child);\n }\n }\n syntheticLines.push(currentLine);\n const syntheticCode = {\n type: \"element\",\n tagName: \"code\",\n properties: {},\n children: syntheticLines\n };\n let transformedCode = syntheticCode;\n for (const transformer of transformers)\n transformedCode = transformer?.code?.call(context, transformedCode) || transformedCode;\n root.children = [];\n for (let i = 0; i < transformedCode.children.length; i++) {\n if (i > 0)\n root.children.push({ type: \"element\", tagName: \"br\", properties: {}, children: [] });\n const line = transformedCode.children[i];\n if (line.type === \"element\")\n root.children.push(...line.children);\n }\n }\n let result = root;\n for (const transformer of transformers)\n result = transformer?.root?.call(context, result) || result;\n if (grammarState)\n setLastGrammarStateToMap(result, grammarState);\n return result;\n}\nfunction mergeWhitespaceTokens(tokens) {\n return tokens.map((line) => {\n const newLine = [];\n let carryOnContent = \"\";\n let firstOffset;\n line.forEach((token, idx) => {\n const isDecorated = token.fontStyle && (token.fontStyle & FontStyle.Underline || token.fontStyle & FontStyle.Strikethrough);\n const couldMerge = !isDecorated;\n if (couldMerge && token.content.match(/^\\s+$/) && line[idx + 1]) {\n if (firstOffset === void 0)\n firstOffset = token.offset;\n carryOnContent += token.content;\n } else {\n if (carryOnContent) {\n if (couldMerge) {\n newLine.push({\n ...token,\n offset: firstOffset,\n content: carryOnContent + token.content\n });\n } else {\n newLine.push(\n {\n content: carryOnContent,\n offset: firstOffset\n },\n token\n );\n }\n firstOffset = void 0;\n carryOnContent = \"\";\n } else {\n newLine.push(token);\n }\n }\n });\n return newLine;\n });\n}\nfunction splitWhitespaceTokens(tokens) {\n return tokens.map((line) => {\n return line.flatMap((token) => {\n if (token.content.match(/^\\s+$/))\n return token;\n const match = token.content.match(/^(\\s*)(.*?)(\\s*)$/);\n if (!match)\n return token;\n const [, leading, content, trailing] = match;\n if (!leading && !trailing)\n return token;\n const expanded = [{\n ...token,\n offset: token.offset + leading.length,\n content\n }];\n if (leading) {\n expanded.unshift({\n content: leading,\n offset: token.offset\n });\n }\n if (trailing) {\n expanded.push({\n content: trailing,\n offset: token.offset + leading.length + content.length\n });\n }\n return expanded;\n });\n });\n}\nfunction mergeAdjacentStyledTokens(tokens) {\n return tokens.map((line) => {\n const newLine = [];\n for (const token of line) {\n if (newLine.length === 0) {\n newLine.push({ ...token });\n continue;\n }\n const prevToken = newLine[newLine.length - 1];\n const prevStyle = stringifyTokenStyle(prevToken.htmlStyle || getTokenStyleObject(prevToken));\n const currentStyle = stringifyTokenStyle(token.htmlStyle || getTokenStyleObject(token));\n const isPrevDecorated = prevToken.fontStyle && (prevToken.fontStyle & FontStyle.Underline || prevToken.fontStyle & FontStyle.Strikethrough);\n const isDecorated = token.fontStyle && (token.fontStyle & FontStyle.Underline || token.fontStyle & FontStyle.Strikethrough);\n if (!isPrevDecorated && !isDecorated && prevStyle === currentStyle) {\n prevToken.content += token.content;\n } else {\n newLine.push({ ...token });\n }\n }\n return newLine;\n });\n}\n\nconst hastToHtml = toHtml;\nfunction codeToHtml(internal, code, options) {\n const context = {\n meta: {},\n options,\n codeToHast: (_code, _options) => codeToHast(internal, _code, _options),\n codeToTokens: (_code, _options) => codeToTokens(internal, _code, _options)\n };\n let result = hastToHtml(codeToHast(internal, code, options, context));\n for (const transformer of getTransformers(options))\n result = transformer.postprocess?.call(context, result, options) || result;\n return result;\n}\n\nconst VSCODE_FALLBACK_EDITOR_FG = { light: \"#333333\", dark: \"#bbbbbb\" };\nconst VSCODE_FALLBACK_EDITOR_BG = { light: \"#fffffe\", dark: \"#1e1e1e\" };\nconst RESOLVED_KEY = \"__shiki_resolved\";\nfunction normalizeTheme(rawTheme) {\n if (rawTheme?.[RESOLVED_KEY])\n return rawTheme;\n const theme = {\n ...rawTheme\n };\n if (theme.tokenColors && !theme.settings) {\n theme.settings = theme.tokenColors;\n delete theme.tokenColors;\n }\n theme.type ||= \"dark\";\n theme.colorReplacements = { ...theme.colorReplacements };\n theme.settings ||= [];\n let { bg, fg } = theme;\n if (!bg || !fg) {\n const globalSetting = theme.settings ? theme.settings.find((s) => !s.name && !s.scope) : void 0;\n if (globalSetting?.settings?.foreground)\n fg = globalSetting.settings.foreground;\n if (globalSetting?.settings?.background)\n bg = globalSetting.settings.background;\n if (!fg && theme?.colors?.[\"editor.foreground\"])\n fg = theme.colors[\"editor.foreground\"];\n if (!bg && theme?.colors?.[\"editor.background\"])\n bg = theme.colors[\"editor.background\"];\n if (!fg)\n fg = theme.type === \"light\" ? VSCODE_FALLBACK_EDITOR_FG.light : VSCODE_FALLBACK_EDITOR_FG.dark;\n if (!bg)\n bg = theme.type === \"light\" ? VSCODE_FALLBACK_EDITOR_BG.light : VSCODE_FALLBACK_EDITOR_BG.dark;\n theme.fg = fg;\n theme.bg = bg;\n }\n if (!(theme.settings[0] && theme.settings[0].settings && !theme.settings[0].scope)) {\n theme.settings.unshift({\n settings: {\n foreground: theme.fg,\n background: theme.bg\n }\n });\n }\n let replacementCount = 0;\n const replacementMap = /* @__PURE__ */ new Map();\n function getReplacementColor(value) {\n if (replacementMap.has(value))\n return replacementMap.get(value);\n replacementCount += 1;\n const hex = `#${replacementCount.toString(16).padStart(8, \"0\").toLowerCase()}`;\n if (theme.colorReplacements?.[`#${hex}`])\n return getReplacementColor(value);\n replacementMap.set(value, hex);\n return hex;\n }\n theme.settings = theme.settings.map((setting) => {\n const replaceFg = setting.settings?.foreground && !setting.settings.foreground.startsWith(\"#\");\n const replaceBg = setting.settings?.background && !setting.settings.background.startsWith(\"#\");\n if (!replaceFg && !replaceBg)\n return setting;\n const clone = {\n ...setting,\n settings: {\n ...setting.settings\n }\n };\n if (replaceFg) {\n const replacement = getReplacementColor(setting.settings.foreground);\n theme.colorReplacements[replacement] = setting.settings.foreground;\n clone.settings.foreground = replacement;\n }\n if (replaceBg) {\n const replacement = getReplacementColor(setting.settings.background);\n theme.colorReplacements[replacement] = setting.settings.background;\n clone.settings.background = replacement;\n }\n return clone;\n });\n for (const key of Object.keys(theme.colors || {})) {\n if (key === \"editor.foreground\" || key === \"editor.background\" || key.startsWith(\"terminal.ansi\")) {\n if (!theme.colors[key]?.startsWith(\"#\")) {\n const replacement = getReplacementColor(theme.colors[key]);\n theme.colorReplacements[replacement] = theme.colors[key];\n theme.colors[key] = replacement;\n }\n }\n }\n Object.defineProperty(theme, RESOLVED_KEY, {\n enumerable: false,\n writable: false,\n value: true\n });\n return theme;\n}\n\nasync function resolveLangs(langs) {\n return Array.from(new Set((await Promise.all(\n langs.filter((l) => !isSpecialLang(l)).map(async (lang) => await normalizeGetter(lang).then((r) => Array.isArray(r) ? r : [r]))\n )).flat()));\n}\nasync function resolveThemes(themes) {\n const resolved = await Promise.all(\n themes.map(\n async (theme) => isSpecialTheme(theme) ? null : normalizeTheme(await normalizeGetter(theme))\n )\n );\n return resolved.filter((i) => !!i);\n}\n\nlet _emitDeprecation = 3;\nlet _emitError = false;\nfunction enableDeprecationWarnings(emitDeprecation = true, emitError = false) {\n _emitDeprecation = emitDeprecation;\n _emitError = emitError;\n}\nfunction warnDeprecated(message, version = 3) {\n if (!_emitDeprecation)\n return;\n if (typeof _emitDeprecation === \"number\" && version > _emitDeprecation)\n return;\n if (_emitError) {\n throw new Error(`[SHIKI DEPRECATE]: ${message}`);\n } else {\n console.trace(`[SHIKI DEPRECATE]: ${message}`);\n }\n}\n\nclass ShikiError extends Error {\n constructor(message) {\n super(message);\n this.name = \"ShikiError\";\n }\n}\n\nfunction resolveLangAlias(name, alias) {\n if (!alias)\n return name;\n if (alias[name]) {\n const resolved = /* @__PURE__ */ new Set([name]);\n while (alias[name]) {\n name = alias[name];\n if (resolved.has(name))\n throw new ShikiError(`Circular alias \\`${Array.from(resolved).join(\" -> \")} -> ${name}\\``);\n resolved.add(name);\n }\n }\n return name;\n}\n\nclass Registry extends Registry$1 {\n constructor(_resolver, _themes, _langs, _alias = {}) {\n super(_resolver);\n this._resolver = _resolver;\n this._themes = _themes;\n this._langs = _langs;\n this._alias = _alias;\n this._themes.map((t) => this.loadTheme(t));\n this.loadLanguages(this._langs);\n }\n _resolvedThemes = /* @__PURE__ */ new Map();\n _resolvedGrammars = /* @__PURE__ */ new Map();\n _langMap = /* @__PURE__ */ new Map();\n _langGraph = /* @__PURE__ */ new Map();\n _textmateThemeCache = /* @__PURE__ */ new WeakMap();\n _loadedThemesCache = null;\n _loadedLanguagesCache = null;\n getTheme(theme) {\n if (typeof theme === \"string\")\n return this._resolvedThemes.get(theme);\n else\n return this.loadTheme(theme);\n }\n loadTheme(theme) {\n const _theme = normalizeTheme(theme);\n if (_theme.name) {\n this._resolvedThemes.set(_theme.name, _theme);\n this._loadedThemesCache = null;\n }\n return _theme;\n }\n getLoadedThemes() {\n if (!this._loadedThemesCache)\n this._loadedThemesCache = [...this._resolvedThemes.keys()];\n return this._loadedThemesCache;\n }\n // Override and re-implement this method to cache the textmate themes as `TextMateTheme.createFromRawTheme`\n // is expensive. Themes can switch often especially for dual-theme support.\n //\n // The parent class also accepts `colorMap` as the second parameter, but since we don't use that,\n // we omit here so it's easier to cache the themes.\n setTheme(theme) {\n let textmateTheme = this._textmateThemeCache.get(theme);\n if (!textmateTheme) {\n textmateTheme = Theme.createFromRawTheme(theme);\n this._textmateThemeCache.set(theme, textmateTheme);\n }\n this._syncRegistry.setTheme(textmateTheme);\n }\n getGrammar(name) {\n name = resolveLangAlias(name, this._alias);\n return this._resolvedGrammars.get(name);\n }\n loadLanguage(lang) {\n if (this.getGrammar(lang.name))\n return;\n const embeddedLazilyBy = new Set(\n [...this._langMap.values()].filter((i) => i.embeddedLangsLazy?.includes(lang.name))\n );\n this._resolver.addLanguage(lang);\n const grammarConfig = {\n balancedBracketSelectors: lang.balancedBracketSelectors || [\"*\"],\n unbalancedBracketSelectors: lang.unbalancedBracketSelectors || []\n };\n this._syncRegistry._rawGrammars.set(lang.scopeName, lang);\n const g = this.loadGrammarWithConfiguration(lang.scopeName, 1, grammarConfig);\n g.name = lang.name;\n this._resolvedGrammars.set(lang.name, g);\n if (lang.aliases) {\n lang.aliases.forEach((alias) => {\n this._alias[alias] = lang.name;\n });\n }\n this._loadedLanguagesCache = null;\n if (embeddedLazilyBy.size) {\n for (const e of embeddedLazilyBy) {\n this._resolvedGrammars.delete(e.name);\n this._loadedLanguagesCache = null;\n this._syncRegistry?._injectionGrammars?.delete(e.scopeName);\n this._syncRegistry?._grammars?.delete(e.scopeName);\n this.loadLanguage(this._langMap.get(e.name));\n }\n }\n }\n dispose() {\n super.dispose();\n this._resolvedThemes.clear();\n this._resolvedGrammars.clear();\n this._langMap.clear();\n this._langGraph.clear();\n this._loadedThemesCache = null;\n }\n loadLanguages(langs) {\n for (const lang of langs)\n this.resolveEmbeddedLanguages(lang);\n const langsGraphArray = Array.from(this._langGraph.entries());\n const missingLangs = langsGraphArray.filter(([_, lang]) => !lang);\n if (missingLangs.length) {\n const dependents = langsGraphArray.filter(([_, lang]) => {\n if (!lang)\n return false;\n const embedded = lang.embeddedLanguages || lang.embeddedLangs;\n return embedded?.some((l) => missingLangs.map(([name]) => name).includes(l));\n }).filter((lang) => !missingLangs.includes(lang));\n throw new ShikiError(`Missing languages ${missingLangs.map(([name]) => `\\`${name}\\``).join(\", \")}, required by ${dependents.map(([name]) => `\\`${name}\\``).join(\", \")}`);\n }\n for (const [_, lang] of langsGraphArray)\n this._resolver.addLanguage(lang);\n for (const [_, lang] of langsGraphArray)\n this.loadLanguage(lang);\n }\n getLoadedLanguages() {\n if (!this._loadedLanguagesCache) {\n this._loadedLanguagesCache = [\n .../* @__PURE__ */ new Set([...this._resolvedGrammars.keys(), ...Object.keys(this._alias)])\n ];\n }\n return this._loadedLanguagesCache;\n }\n resolveEmbeddedLanguages(lang) {\n this._langMap.set(lang.name, lang);\n this._langGraph.set(lang.name, lang);\n const embedded = lang.embeddedLanguages ?? lang.embeddedLangs;\n if (embedded) {\n for (const embeddedLang of embedded)\n this._langGraph.set(embeddedLang, this._langMap.get(embeddedLang));\n }\n }\n}\n\nclass Resolver {\n _langs = /* @__PURE__ */ new Map();\n _scopeToLang = /* @__PURE__ */ new Map();\n _injections = /* @__PURE__ */ new Map();\n _onigLib;\n constructor(engine, langs) {\n this._onigLib = {\n createOnigScanner: (patterns) => engine.createScanner(patterns),\n createOnigString: (s) => engine.createString(s)\n };\n langs.forEach((i) => this.addLanguage(i));\n }\n get onigLib() {\n return this._onigLib;\n }\n getLangRegistration(langIdOrAlias) {\n return this._langs.get(langIdOrAlias);\n }\n loadGrammar(scopeName) {\n return this._scopeToLang.get(scopeName);\n }\n addLanguage(l) {\n this._langs.set(l.name, l);\n if (l.aliases) {\n l.aliases.forEach((a) => {\n this._langs.set(a, l);\n });\n }\n this._scopeToLang.set(l.scopeName, l);\n if (l.injectTo) {\n l.injectTo.forEach((i) => {\n if (!this._injections.get(i))\n this._injections.set(i, []);\n this._injections.get(i).push(l.scopeName);\n });\n }\n }\n getInjections(scopeName) {\n const scopeParts = scopeName.split(\".\");\n let injections = [];\n for (let i = 1; i <= scopeParts.length; i++) {\n const subScopeName = scopeParts.slice(0, i).join(\".\");\n injections = [...injections, ...this._injections.get(subScopeName) || []];\n }\n return injections;\n }\n}\n\nlet instancesCount = 0;\nfunction createShikiInternalSync(options) {\n instancesCount += 1;\n if (options.warnings !== false && instancesCount >= 10 && instancesCount % 10 === 0)\n console.warn(`[Shiki] ${instancesCount} instances have been created. Shiki is supposed to be used as a singleton, consider refactoring your code to cache your highlighter instance; Or call \\`highlighter.dispose()\\` to release unused instances.`);\n let isDisposed = false;\n if (!options.engine)\n throw new ShikiError(\"`engine` option is required for synchronous mode\");\n const langs = (options.langs || []).flat(1);\n const themes = (options.themes || []).flat(1).map(normalizeTheme);\n const resolver = new Resolver(options.engine, langs);\n const _registry = new Registry(resolver, themes, langs, options.langAlias);\n let _lastTheme;\n function resolveLangAlias$1(name) {\n return resolveLangAlias(name, options.langAlias);\n }\n function getLanguage(name) {\n ensureNotDisposed();\n const _lang = _registry.getGrammar(typeof name === \"string\" ? name : name.name);\n if (!_lang)\n throw new ShikiError(`Language \\`${name}\\` not found, you may need to load it first`);\n return _lang;\n }\n function getTheme(name) {\n if (name === \"none\")\n return { bg: \"\", fg: \"\", name: \"none\", settings: [], type: \"dark\" };\n ensureNotDisposed();\n const _theme = _registry.getTheme(name);\n if (!_theme)\n throw new ShikiError(`Theme \\`${name}\\` not found, you may need to load it first`);\n return _theme;\n }\n function setTheme(name) {\n ensureNotDisposed();\n const theme = getTheme(name);\n if (_lastTheme !== name) {\n _registry.setTheme(theme);\n _lastTheme = name;\n }\n const colorMap = _registry.getColorMap();\n return {\n theme,\n colorMap\n };\n }\n function getLoadedThemes() {\n ensureNotDisposed();\n return _registry.getLoadedThemes();\n }\n function getLoadedLanguages() {\n ensureNotDisposed();\n return _registry.getLoadedLanguages();\n }\n function loadLanguageSync(...langs2) {\n ensureNotDisposed();\n _registry.loadLanguages(langs2.flat(1));\n }\n async function loadLanguage(...langs2) {\n return loadLanguageSync(await resolveLangs(langs2));\n }\n function loadThemeSync(...themes2) {\n ensureNotDisposed();\n for (const theme of themes2.flat(1)) {\n _registry.loadTheme(theme);\n }\n }\n async function loadTheme(...themes2) {\n ensureNotDisposed();\n return loadThemeSync(await resolveThemes(themes2));\n }\n function ensureNotDisposed() {\n if (isDisposed)\n throw new ShikiError(\"Shiki instance has been disposed\");\n }\n function dispose() {\n if (isDisposed)\n return;\n isDisposed = true;\n _registry.dispose();\n instancesCount -= 1;\n }\n return {\n setTheme,\n getTheme,\n getLanguage,\n getLoadedThemes,\n getLoadedLanguages,\n resolveLangAlias: resolveLangAlias$1,\n loadLanguage,\n loadLanguageSync,\n loadTheme,\n loadThemeSync,\n dispose,\n [Symbol.dispose]: dispose\n };\n}\n\nasync function createShikiInternal(options) {\n if (!options.engine) {\n warnDeprecated(\"`engine` option is required. Use `createOnigurumaEngine` or `createJavaScriptRegexEngine` to create an engine.\");\n }\n const [\n themes,\n langs,\n engine\n ] = await Promise.all([\n resolveThemes(options.themes || []),\n resolveLangs(options.langs || []),\n options.engine\n ]);\n return createShikiInternalSync({\n ...options,\n themes,\n langs,\n engine\n });\n}\n\nasync function createHighlighterCore(options) {\n const internal = await createShikiInternal(options);\n return {\n getLastGrammarState: (...args) => getLastGrammarState(internal, ...args),\n codeToTokensBase: (code, options2) => codeToTokensBase(internal, code, options2),\n codeToTokensWithThemes: (code, options2) => codeToTokensWithThemes(internal, code, options2),\n codeToTokens: (code, options2) => codeToTokens(internal, code, options2),\n codeToHast: (code, options2) => codeToHast(internal, code, options2),\n codeToHtml: (code, options2) => codeToHtml(internal, code, options2),\n getBundledLanguages: () => ({}),\n getBundledThemes: () => ({}),\n ...internal,\n getInternalContext: () => internal\n };\n}\nfunction createHighlighterCoreSync(options) {\n const internal = createShikiInternalSync(options);\n return {\n getLastGrammarState: (...args) => getLastGrammarState(internal, ...args),\n codeToTokensBase: (code, options2) => codeToTokensBase(internal, code, options2),\n codeToTokensWithThemes: (code, options2) => codeToTokensWithThemes(internal, code, options2),\n codeToTokens: (code, options2) => codeToTokens(internal, code, options2),\n codeToHast: (code, options2) => codeToHast(internal, code, options2),\n codeToHtml: (code, options2) => codeToHtml(internal, code, options2),\n getBundledLanguages: () => ({}),\n getBundledThemes: () => ({}),\n ...internal,\n getInternalContext: () => internal\n };\n}\nfunction makeSingletonHighlighterCore(createHighlighter) {\n let _shiki;\n async function getSingletonHighlighterCore2(options) {\n if (!_shiki) {\n _shiki = createHighlighter({\n ...options,\n themes: options.themes || [],\n langs: options.langs || []\n });\n return _shiki;\n } else {\n const s = await _shiki;\n await Promise.all([\n s.loadTheme(...options.themes || []),\n s.loadLanguage(...options.langs || [])\n ]);\n return s;\n }\n }\n return getSingletonHighlighterCore2;\n}\nconst getSingletonHighlighterCore = /* @__PURE__ */ makeSingletonHighlighterCore(createHighlighterCore);\n\nfunction createBundledHighlighter(options) {\n const bundledLanguages = options.langs;\n const bundledThemes = options.themes;\n const engine = options.engine;\n async function createHighlighter(options2) {\n function resolveLang(lang) {\n if (typeof lang === \"string\") {\n lang = options2.langAlias?.[lang] || lang;\n if (isSpecialLang(lang))\n return [];\n const bundle = bundledLanguages[lang];\n if (!bundle)\n throw new ShikiError$1(`Language \\`${lang}\\` is not included in this bundle. You may want to load it from external source.`);\n return bundle;\n }\n return lang;\n }\n function resolveTheme(theme) {\n if (isSpecialTheme(theme))\n return \"none\";\n if (typeof theme === \"string\") {\n const bundle = bundledThemes[theme];\n if (!bundle)\n throw new ShikiError$1(`Theme \\`${theme}\\` is not included in this bundle. You may want to load it from external source.`);\n return bundle;\n }\n return theme;\n }\n const _themes = (options2.themes ?? []).map((i) => resolveTheme(i));\n const langs = (options2.langs ?? []).map((i) => resolveLang(i));\n const core = await createHighlighterCore({\n engine: options2.engine ?? engine(),\n ...options2,\n themes: _themes,\n langs\n });\n return {\n ...core,\n loadLanguage(...langs2) {\n return core.loadLanguage(...langs2.map(resolveLang));\n },\n loadTheme(...themes) {\n return core.loadTheme(...themes.map(resolveTheme));\n },\n getBundledLanguages() {\n return bundledLanguages;\n },\n getBundledThemes() {\n return bundledThemes;\n }\n };\n }\n return createHighlighter;\n}\nfunction makeSingletonHighlighter(createHighlighter) {\n let _shiki;\n async function getSingletonHighlighter(options = {}) {\n if (!_shiki) {\n _shiki = createHighlighter({\n ...options,\n themes: [],\n langs: []\n });\n const s = await _shiki;\n await Promise.all([\n s.loadTheme(...options.themes || []),\n s.loadLanguage(...options.langs || [])\n ]);\n return s;\n } else {\n const s = await _shiki;\n await Promise.all([\n s.loadTheme(...options.themes || []),\n s.loadLanguage(...options.langs || [])\n ]);\n return s;\n }\n }\n return getSingletonHighlighter;\n}\nfunction createSingletonShorthands(createHighlighter, config) {\n const getSingletonHighlighter = makeSingletonHighlighter(createHighlighter);\n async function get(code, options) {\n const shiki = await getSingletonHighlighter({\n langs: [options.lang],\n themes: \"theme\" in options ? [options.theme] : Object.values(options.themes)\n });\n const langs = await config?.guessEmbeddedLanguages?.(code, options.lang, shiki);\n if (langs) {\n await shiki.loadLanguage(...langs);\n }\n return shiki;\n }\n return {\n getSingletonHighlighter(options) {\n return getSingletonHighlighter(options);\n },\n async codeToHtml(code, options) {\n const shiki = await get(code, options);\n return shiki.codeToHtml(code, options);\n },\n async codeToHast(code, options) {\n const shiki = await get(code, options);\n return shiki.codeToHast(code, options);\n },\n async codeToTokens(code, options) {\n const shiki = await get(code, options);\n return shiki.codeToTokens(code, options);\n },\n async codeToTokensBase(code, options) {\n const shiki = await get(code, options);\n return shiki.codeToTokensBase(code, options);\n },\n async codeToTokensWithThemes(code, options) {\n const shiki = await get(code, options);\n return shiki.codeToTokensWithThemes(code, options);\n },\n async getLastGrammarState(code, options) {\n const shiki = await getSingletonHighlighter({\n langs: [options.lang],\n themes: [options.theme]\n });\n return shiki.getLastGrammarState(code, options);\n }\n };\n}\nconst createdBundledHighlighter = createBundledHighlighter;\n\nfunction createCssVariablesTheme(options = {}) {\n const {\n name = \"css-variables\",\n variablePrefix = \"--shiki-\",\n fontStyle = true\n } = options;\n const variable = (name2) => {\n if (options.variableDefaults?.[name2])\n return `var(${variablePrefix}${name2}, ${options.variableDefaults[name2]})`;\n return `var(${variablePrefix}${name2})`;\n };\n const theme = {\n name,\n type: \"dark\",\n colors: {\n \"editor.foreground\": variable(\"foreground\"),\n \"editor.background\": variable(\"background\"),\n \"terminal.ansiBlack\": variable(\"ansi-black\"),\n \"terminal.ansiRed\": variable(\"ansi-red\"),\n \"terminal.ansiGreen\": variable(\"ansi-green\"),\n \"terminal.ansiYellow\": variable(\"ansi-yellow\"),\n \"terminal.ansiBlue\": variable(\"ansi-blue\"),\n \"terminal.ansiMagenta\": variable(\"ansi-magenta\"),\n \"terminal.ansiCyan\": variable(\"ansi-cyan\"),\n \"terminal.ansiWhite\": variable(\"ansi-white\"),\n \"terminal.ansiBrightBlack\": variable(\"ansi-bright-black\"),\n \"terminal.ansiBrightRed\": variable(\"ansi-bright-red\"),\n \"terminal.ansiBrightGreen\": variable(\"ansi-bright-green\"),\n \"terminal.ansiBrightYellow\": variable(\"ansi-bright-yellow\"),\n \"terminal.ansiBrightBlue\": variable(\"ansi-bright-blue\"),\n \"terminal.ansiBrightMagenta\": variable(\"ansi-bright-magenta\"),\n \"terminal.ansiBrightCyan\": variable(\"ansi-bright-cyan\"),\n \"terminal.ansiBrightWhite\": variable(\"ansi-bright-white\")\n },\n tokenColors: [\n {\n scope: [\n \"keyword.operator.accessor\",\n \"meta.group.braces.round.function.arguments\",\n \"meta.template.expression\",\n \"markup.fenced_code meta.embedded.block\"\n ],\n settings: {\n foreground: variable(\"foreground\")\n }\n },\n {\n scope: \"emphasis\",\n settings: {\n fontStyle: \"italic\"\n }\n },\n {\n scope: [\"strong\", \"markup.heading.markdown\", \"markup.bold.markdown\"],\n settings: {\n fontStyle: \"bold\"\n }\n },\n {\n scope: [\"markup.italic.markdown\"],\n settings: {\n fontStyle: \"italic\"\n }\n },\n {\n scope: \"meta.link.inline.markdown\",\n settings: {\n fontStyle: \"underline\",\n foreground: variable(\"token-link\")\n }\n },\n {\n scope: [\"string\", \"markup.fenced_code\", \"markup.inline\"],\n settings: {\n foreground: variable(\"token-string\")\n }\n },\n {\n scope: [\"comment\", \"string.quoted.docstring.multi\"],\n settings: {\n foreground: variable(\"token-comment\")\n }\n },\n {\n scope: [\n \"constant.numeric\",\n \"constant.language\",\n \"constant.other.placeholder\",\n \"constant.character.format.placeholder\",\n \"variable.language.this\",\n \"variable.other.object\",\n \"variable.other.class\",\n \"variable.other.constant\",\n \"meta.property-name\",\n \"meta.property-value\",\n \"support\"\n ],\n settings: {\n foreground: variable(\"token-constant\")\n }\n },\n {\n scope: [\n \"keyword\",\n \"storage.modifier\",\n \"storage.type\",\n \"storage.control.clojure\",\n \"entity.name.function.clojure\",\n \"entity.name.tag.yaml\",\n \"support.function.node\",\n \"support.type.property-name.json\",\n \"punctuation.separator.key-value\",\n \"punctuation.definition.template-expression\"\n ],\n settings: {\n foreground: variable(\"token-keyword\")\n }\n },\n {\n scope: \"variable.parameter.function\",\n settings: {\n foreground: variable(\"token-parameter\")\n }\n },\n {\n scope: [\n \"support.function\",\n \"entity.name.type\",\n \"entity.other.inherited-class\",\n \"meta.function-call\",\n \"meta.instance.constructor\",\n \"entity.other.attribute-name\",\n \"entity.name.function\",\n \"constant.keyword.clojure\"\n ],\n settings: {\n foreground: variable(\"token-function\")\n }\n },\n {\n scope: [\n \"entity.name.tag\",\n \"string.quoted\",\n \"string.regexp\",\n \"string.interpolated\",\n \"string.template\",\n \"string.unquoted.plain.out.yaml\",\n \"keyword.other.template\"\n ],\n settings: {\n foreground: variable(\"token-string-expression\")\n }\n },\n {\n scope: [\n \"punctuation.definition.arguments\",\n \"punctuation.definition.dict\",\n \"punctuation.separator\",\n \"meta.function-call.arguments\"\n ],\n settings: {\n foreground: variable(\"token-punctuation\")\n }\n },\n {\n // [Custom] Markdown links\n scope: [\n \"markup.underline.link\",\n \"punctuation.definition.metadata.markdown\"\n ],\n settings: {\n foreground: variable(\"token-link\")\n }\n },\n {\n // [Custom] Markdown list\n scope: [\"beginning.punctuation.definition.list.markdown\"],\n settings: {\n foreground: variable(\"token-string\")\n }\n },\n {\n // [Custom] Markdown punctuation definition brackets\n scope: [\n \"punctuation.definition.string.begin.markdown\",\n \"punctuation.definition.string.end.markdown\",\n \"string.other.link.title.markdown\",\n \"string.other.link.description.markdown\"\n ],\n settings: {\n foreground: variable(\"token-keyword\")\n }\n },\n {\n // [Custom] Diff\n scope: [\n \"markup.inserted\",\n \"meta.diff.header.to-file\",\n \"punctuation.definition.inserted\"\n ],\n settings: {\n foreground: variable(\"token-inserted\")\n }\n },\n {\n scope: [\n \"markup.deleted\",\n \"meta.diff.header.from-file\",\n \"punctuation.definition.deleted\"\n ],\n settings: {\n foreground: variable(\"token-deleted\")\n }\n },\n {\n scope: [\n \"markup.changed\",\n \"punctuation.definition.changed\"\n ],\n settings: {\n foreground: variable(\"token-changed\")\n }\n }\n ]\n };\n if (!fontStyle) {\n theme.tokenColors = theme.tokenColors?.map((tokenColor) => {\n if (tokenColor.settings?.fontStyle)\n delete tokenColor.settings.fontStyle;\n return tokenColor;\n });\n }\n return theme;\n}\n\nexport { addClassToHast, applyColorReplacements, codeToHast, codeToHtml, codeToTokens, codeToTokensBase, codeToTokensWithThemes, createBundledHighlighter, createCssVariablesTheme, createHighlighterCore, createHighlighterCoreSync, createPositionConverter, createShikiInternal, createShikiInternalSync, createSingletonShorthands, createdBundledHighlighter, enableDeprecationWarnings, flatTokenVariants, getSingletonHighlighterCore, getTokenStyleObject, guessEmbeddedLanguages, hastToHtml, isNoneTheme, isPlainLang, isSpecialLang, isSpecialTheme, makeSingletonHighlighter, makeSingletonHighlighterCore, normalizeGetter, normalizeTheme, resolveColorReplacements, splitLines, splitToken, splitTokens, stringifyTokenStyle, toArray, tokenizeAnsiWithTheme, tokenizeWithTheme, tokensToHast, transformerDecorations, warnDeprecated };\n","const bundledLanguagesInfo = [\n {\n \"id\": \"abap\",\n \"name\": \"ABAP\",\n \"import\": (() => import('@shikijs/langs/abap'))\n },\n {\n \"id\": \"actionscript-3\",\n \"name\": \"ActionScript\",\n \"import\": (() => import('@shikijs/langs/actionscript-3'))\n },\n {\n \"id\": \"ada\",\n \"name\": \"Ada\",\n \"import\": (() => import('@shikijs/langs/ada'))\n },\n {\n \"id\": \"angular-html\",\n \"name\": \"Angular HTML\",\n \"import\": (() => import('@shikijs/langs/angular-html'))\n },\n {\n \"id\": \"angular-ts\",\n \"name\": \"Angular TypeScript\",\n \"import\": (() => import('@shikijs/langs/angular-ts'))\n },\n {\n \"id\": \"apache\",\n \"name\": \"Apache Conf\",\n \"import\": (() => import('@shikijs/langs/apache'))\n },\n {\n \"id\": \"apex\",\n \"name\": \"Apex\",\n \"import\": (() => import('@shikijs/langs/apex'))\n },\n {\n \"id\": \"apl\",\n \"name\": \"APL\",\n \"import\": (() => import('@shikijs/langs/apl'))\n },\n {\n \"id\": \"applescript\",\n \"name\": \"AppleScript\",\n \"import\": (() => import('@shikijs/langs/applescript'))\n },\n {\n \"id\": \"ara\",\n \"name\": \"Ara\",\n \"import\": (() => import('@shikijs/langs/ara'))\n },\n {\n \"id\": \"asciidoc\",\n \"name\": \"AsciiDoc\",\n \"aliases\": [\n \"adoc\"\n ],\n \"import\": (() => import('@shikijs/langs/asciidoc'))\n },\n {\n \"id\": \"asm\",\n \"name\": \"Assembly\",\n \"import\": (() => import('@shikijs/langs/asm'))\n },\n {\n \"id\": \"astro\",\n \"name\": \"Astro\",\n \"import\": (() => import('@shikijs/langs/astro'))\n },\n {\n \"id\": \"awk\",\n \"name\": \"AWK\",\n \"import\": (() => import('@shikijs/langs/awk'))\n },\n {\n \"id\": \"ballerina\",\n \"name\": \"Ballerina\",\n \"import\": (() => import('@shikijs/langs/ballerina'))\n },\n {\n \"id\": \"bat\",\n \"name\": \"Batch File\",\n \"aliases\": [\n \"batch\"\n ],\n \"import\": (() => import('@shikijs/langs/bat'))\n },\n {\n \"id\": \"beancount\",\n \"name\": \"Beancount\",\n \"import\": (() => import('@shikijs/langs/beancount'))\n },\n {\n \"id\": \"berry\",\n \"name\": \"Berry\",\n \"aliases\": [\n \"be\"\n ],\n \"import\": (() => import('@shikijs/langs/berry'))\n },\n {\n \"id\": \"bibtex\",\n \"name\": \"BibTeX\",\n \"import\": (() => import('@shikijs/langs/bibtex'))\n },\n {\n \"id\": \"bicep\",\n \"name\": \"Bicep\",\n \"import\": (() => import('@shikijs/langs/bicep'))\n },\n {\n \"id\": \"blade\",\n \"name\": \"Blade\",\n \"import\": (() => import('@shikijs/langs/blade'))\n },\n {\n \"id\": \"bsl\",\n \"name\": \"1C (Enterprise)\",\n \"aliases\": [\n \"1c\"\n ],\n \"import\": (() => import('@shikijs/langs/bsl'))\n },\n {\n \"id\": \"c\",\n \"name\": \"C\",\n \"import\": (() => import('@shikijs/langs/c'))\n },\n {\n \"id\": \"c3\",\n \"name\": \"C3\",\n \"import\": (() => import('@shikijs/langs/c3'))\n },\n {\n \"id\": \"cadence\",\n \"name\": \"Cadence\",\n \"aliases\": [\n \"cdc\"\n ],\n \"import\": (() => import('@shikijs/langs/cadence'))\n },\n {\n \"id\": \"cairo\",\n \"name\": \"Cairo\",\n \"import\": (() => import('@shikijs/langs/cairo'))\n },\n {\n \"id\": \"clarity\",\n \"name\": \"Clarity\",\n \"import\": (() => import('@shikijs/langs/clarity'))\n },\n {\n \"id\": \"clojure\",\n \"name\": \"Clojure\",\n \"aliases\": [\n \"clj\"\n ],\n \"import\": (() => import('@shikijs/langs/clojure'))\n },\n {\n \"id\": \"cmake\",\n \"name\": \"CMake\",\n \"import\": (() => import('@shikijs/langs/cmake'))\n },\n {\n \"id\": \"cobol\",\n \"name\": \"COBOL\",\n \"import\": (() => import('@shikijs/langs/cobol'))\n },\n {\n \"id\": \"codeowners\",\n \"name\": \"CODEOWNERS\",\n \"import\": (() => import('@shikijs/langs/codeowners'))\n },\n {\n \"id\": \"codeql\",\n \"name\": \"CodeQL\",\n \"aliases\": [\n \"ql\"\n ],\n \"import\": (() => import('@shikijs/langs/codeql'))\n },\n {\n \"id\": \"coffee\",\n \"name\": \"CoffeeScript\",\n \"aliases\": [\n \"coffeescript\"\n ],\n \"import\": (() => import('@shikijs/langs/coffee'))\n },\n {\n \"id\": \"common-lisp\",\n \"name\": \"Common Lisp\",\n \"aliases\": [\n \"lisp\"\n ],\n \"import\": (() => import('@shikijs/langs/common-lisp'))\n },\n {\n \"id\": \"coq\",\n \"name\": \"Coq\",\n \"import\": (() => import('@shikijs/langs/coq'))\n },\n {\n \"id\": \"cpp\",\n \"name\": \"C++\",\n \"aliases\": [\n \"c++\"\n ],\n \"import\": (() => import('@shikijs/langs/cpp'))\n },\n {\n \"id\": \"crystal\",\n \"name\": \"Crystal\",\n \"import\": (() => import('@shikijs/langs/crystal'))\n },\n {\n \"id\": \"csharp\",\n \"name\": \"C#\",\n \"aliases\": [\n \"c#\",\n \"cs\"\n ],\n \"import\": (() => import('@shikijs/langs/csharp'))\n },\n {\n \"id\": \"css\",\n \"name\": \"CSS\",\n \"import\": (() => import('@shikijs/langs/css'))\n },\n {\n \"id\": \"csv\",\n \"name\": \"CSV\",\n \"import\": (() => import('@shikijs/langs/csv'))\n },\n {\n \"id\": \"cue\",\n \"name\": \"CUE\",\n \"import\": (() => import('@shikijs/langs/cue'))\n },\n {\n \"id\": \"cypher\",\n \"name\": \"Cypher\",\n \"aliases\": [\n \"cql\"\n ],\n \"import\": (() => import('@shikijs/langs/cypher'))\n },\n {\n \"id\": \"d\",\n \"name\": \"D\",\n \"import\": (() => import('@shikijs/langs/d'))\n },\n {\n \"id\": \"dart\",\n \"name\": \"Dart\",\n \"import\": (() => import('@shikijs/langs/dart'))\n },\n {\n \"id\": \"dax\",\n \"name\": \"DAX\",\n \"import\": (() => import('@shikijs/langs/dax'))\n },\n {\n \"id\": \"desktop\",\n \"name\": \"Desktop\",\n \"import\": (() => import('@shikijs/langs/desktop'))\n },\n {\n \"id\": \"diff\",\n \"name\": \"Diff\",\n \"import\": (() => import('@shikijs/langs/diff'))\n },\n {\n \"id\": \"docker\",\n \"name\": \"Dockerfile\",\n \"aliases\": [\n \"dockerfile\"\n ],\n \"import\": (() => import('@shikijs/langs/docker'))\n },\n {\n \"id\": \"dotenv\",\n \"name\": \"dotEnv\",\n \"import\": (() => import('@shikijs/langs/dotenv'))\n },\n {\n \"id\": \"dream-maker\",\n \"name\": \"Dream Maker\",\n \"import\": (() => import('@shikijs/langs/dream-maker'))\n },\n {\n \"id\": \"edge\",\n \"name\": \"Edge\",\n \"import\": (() => import('@shikijs/langs/edge'))\n },\n {\n \"id\": \"elixir\",\n \"name\": \"Elixir\",\n \"import\": (() => import('@shikijs/langs/elixir'))\n },\n {\n \"id\": \"elm\",\n \"name\": \"Elm\",\n \"import\": (() => import('@shikijs/langs/elm'))\n },\n {\n \"id\": \"emacs-lisp\",\n \"name\": \"Emacs Lisp\",\n \"aliases\": [\n \"elisp\"\n ],\n \"import\": (() => import('@shikijs/langs/emacs-lisp'))\n },\n {\n \"id\": \"erb\",\n \"name\": \"ERB\",\n \"import\": (() => import('@shikijs/langs/erb'))\n },\n {\n \"id\": \"erlang\",\n \"name\": \"Erlang\",\n \"aliases\": [\n \"erl\"\n ],\n \"import\": (() => import('@shikijs/langs/erlang'))\n },\n {\n \"id\": \"fennel\",\n \"name\": \"Fennel\",\n \"import\": (() => import('@shikijs/langs/fennel'))\n },\n {\n \"id\": \"fish\",\n \"name\": \"Fish\",\n \"import\": (() => import('@shikijs/langs/fish'))\n },\n {\n \"id\": \"fluent\",\n \"name\": \"Fluent\",\n \"aliases\": [\n \"ftl\"\n ],\n \"import\": (() => import('@shikijs/langs/fluent'))\n },\n {\n \"id\": \"fortran-fixed-form\",\n \"name\": \"Fortran (Fixed Form)\",\n \"aliases\": [\n \"f\",\n \"for\",\n \"f77\"\n ],\n \"import\": (() => import('@shikijs/langs/fortran-fixed-form'))\n },\n {\n \"id\": \"fortran-free-form\",\n \"name\": \"Fortran (Free Form)\",\n \"aliases\": [\n \"f90\",\n \"f95\",\n \"f03\",\n \"f08\",\n \"f18\"\n ],\n \"import\": (() => import('@shikijs/langs/fortran-free-form'))\n },\n {\n \"id\": \"fsharp\",\n \"name\": \"F#\",\n \"aliases\": [\n \"f#\",\n \"fs\"\n ],\n \"import\": (() => import('@shikijs/langs/fsharp'))\n },\n {\n \"id\": \"gdresource\",\n \"name\": \"GDResource\",\n \"import\": (() => import('@shikijs/langs/gdresource'))\n },\n {\n \"id\": \"gdscript\",\n \"name\": \"GDScript\",\n \"import\": (() => import('@shikijs/langs/gdscript'))\n },\n {\n \"id\": \"gdshader\",\n \"name\": \"GDShader\",\n \"import\": (() => import('@shikijs/langs/gdshader'))\n },\n {\n \"id\": \"genie\",\n \"name\": \"Genie\",\n \"import\": (() => import('@shikijs/langs/genie'))\n },\n {\n \"id\": \"gherkin\",\n \"name\": \"Gherkin\",\n \"import\": (() => import('@shikijs/langs/gherkin'))\n },\n {\n \"id\": \"git-commit\",\n \"name\": \"Git Commit Message\",\n \"import\": (() => import('@shikijs/langs/git-commit'))\n },\n {\n \"id\": \"git-rebase\",\n \"name\": \"Git Rebase Message\",\n \"import\": (() => import('@shikijs/langs/git-rebase'))\n },\n {\n \"id\": \"gleam\",\n \"name\": \"Gleam\",\n \"import\": (() => import('@shikijs/langs/gleam'))\n },\n {\n \"id\": \"glimmer-js\",\n \"name\": \"Glimmer JS\",\n \"aliases\": [\n \"gjs\"\n ],\n \"import\": (() => import('@shikijs/langs/glimmer-js'))\n },\n {\n \"id\": \"glimmer-ts\",\n \"name\": \"Glimmer TS\",\n \"aliases\": [\n \"gts\"\n ],\n \"import\": (() => import('@shikijs/langs/glimmer-ts'))\n },\n {\n \"id\": \"glsl\",\n \"name\": \"GLSL\",\n \"import\": (() => import('@shikijs/langs/glsl'))\n },\n {\n \"id\": \"gn\",\n \"name\": \"GN\",\n \"import\": (() => import('@shikijs/langs/gn'))\n },\n {\n \"id\": \"gnuplot\",\n \"name\": \"Gnuplot\",\n \"import\": (() => import('@shikijs/langs/gnuplot'))\n },\n {\n \"id\": \"go\",\n \"name\": \"Go\",\n \"import\": (() => import('@shikijs/langs/go'))\n },\n {\n \"id\": \"graphql\",\n \"name\": \"GraphQL\",\n \"aliases\": [\n \"gql\"\n ],\n \"import\": (() => import('@shikijs/langs/graphql'))\n },\n {\n \"id\": \"groovy\",\n \"name\": \"Groovy\",\n \"import\": (() => import('@shikijs/langs/groovy'))\n },\n {\n \"id\": \"hack\",\n \"name\": \"Hack\",\n \"import\": (() => import('@shikijs/langs/hack'))\n },\n {\n \"id\": \"haml\",\n \"name\": \"Ruby Haml\",\n \"import\": (() => import('@shikijs/langs/haml'))\n },\n {\n \"id\": \"handlebars\",\n \"name\": \"Handlebars\",\n \"aliases\": [\n \"hbs\"\n ],\n \"import\": (() => import('@shikijs/langs/handlebars'))\n },\n {\n \"id\": \"haskell\",\n \"name\": \"Haskell\",\n \"aliases\": [\n \"hs\"\n ],\n \"import\": (() => import('@shikijs/langs/haskell'))\n },\n {\n \"id\": \"haxe\",\n \"name\": \"Haxe\",\n \"import\": (() => import('@shikijs/langs/haxe'))\n },\n {\n \"id\": \"hcl\",\n \"name\": \"HashiCorp HCL\",\n \"import\": (() => import('@shikijs/langs/hcl'))\n },\n {\n \"id\": \"hjson\",\n \"name\": \"Hjson\",\n \"import\": (() => import('@shikijs/langs/hjson'))\n },\n {\n \"id\": \"hlsl\",\n \"name\": \"HLSL\",\n \"import\": (() => import('@shikijs/langs/hlsl'))\n },\n {\n \"id\": \"html\",\n \"name\": \"HTML\",\n \"import\": (() => import('@shikijs/langs/html'))\n },\n {\n \"id\": \"html-derivative\",\n \"name\": \"HTML (Derivative)\",\n \"import\": (() => import('@shikijs/langs/html-derivative'))\n },\n {\n \"id\": \"http\",\n \"name\": \"HTTP\",\n \"import\": (() => import('@shikijs/langs/http'))\n },\n {\n \"id\": \"hurl\",\n \"name\": \"Hurl\",\n \"import\": (() => import('@shikijs/langs/hurl'))\n },\n {\n \"id\": \"hxml\",\n \"name\": \"HXML\",\n \"import\": (() => import('@shikijs/langs/hxml'))\n },\n {\n \"id\": \"hy\",\n \"name\": \"Hy\",\n \"import\": (() => import('@shikijs/langs/hy'))\n },\n {\n \"id\": \"imba\",\n \"name\": \"Imba\",\n \"import\": (() => import('@shikijs/langs/imba'))\n },\n {\n \"id\": \"ini\",\n \"name\": \"INI\",\n \"aliases\": [\n \"properties\"\n ],\n \"import\": (() => import('@shikijs/langs/ini'))\n },\n {\n \"id\": \"java\",\n \"name\": \"Java\",\n \"import\": (() => import('@shikijs/langs/java'))\n },\n {\n \"id\": \"javascript\",\n \"name\": \"JavaScript\",\n \"aliases\": [\n \"js\",\n \"cjs\",\n \"mjs\"\n ],\n \"import\": (() => import('@shikijs/langs/javascript'))\n },\n {\n \"id\": \"jinja\",\n \"name\": \"Jinja\",\n \"import\": (() => import('@shikijs/langs/jinja'))\n },\n {\n \"id\": \"jison\",\n \"name\": \"Jison\",\n \"import\": (() => import('@shikijs/langs/jison'))\n },\n {\n \"id\": \"json\",\n \"name\": \"JSON\",\n \"import\": (() => import('@shikijs/langs/json'))\n },\n {\n \"id\": \"json5\",\n \"name\": \"JSON5\",\n \"import\": (() => import('@shikijs/langs/json5'))\n },\n {\n \"id\": \"jsonc\",\n \"name\": \"JSON with Comments\",\n \"import\": (() => import('@shikijs/langs/jsonc'))\n },\n {\n \"id\": \"jsonl\",\n \"name\": \"JSON Lines\",\n \"import\": (() => import('@shikijs/langs/jsonl'))\n },\n {\n \"id\": \"jsonnet\",\n \"name\": \"Jsonnet\",\n \"import\": (() => import('@shikijs/langs/jsonnet'))\n },\n {\n \"id\": \"jssm\",\n \"name\": \"JSSM\",\n \"aliases\": [\n \"fsl\"\n ],\n \"import\": (() => import('@shikijs/langs/jssm'))\n },\n {\n \"id\": \"jsx\",\n \"name\": \"JSX\",\n \"import\": (() => import('@shikijs/langs/jsx'))\n },\n {\n \"id\": \"julia\",\n \"name\": \"Julia\",\n \"aliases\": [\n \"jl\"\n ],\n \"import\": (() => import('@shikijs/langs/julia'))\n },\n {\n \"id\": \"kdl\",\n \"name\": \"KDL\",\n \"import\": (() => import('@shikijs/langs/kdl'))\n },\n {\n \"id\": \"kotlin\",\n \"name\": \"Kotlin\",\n \"aliases\": [\n \"kt\",\n \"kts\"\n ],\n \"import\": (() => import('@shikijs/langs/kotlin'))\n },\n {\n \"id\": \"kusto\",\n \"name\": \"Kusto\",\n \"aliases\": [\n \"kql\"\n ],\n \"import\": (() => import('@shikijs/langs/kusto'))\n },\n {\n \"id\": \"latex\",\n \"name\": \"LaTeX\",\n \"import\": (() => import('@shikijs/langs/latex'))\n },\n {\n \"id\": \"lean\",\n \"name\": \"Lean 4\",\n \"aliases\": [\n \"lean4\"\n ],\n \"import\": (() => import('@shikijs/langs/lean'))\n },\n {\n \"id\": \"less\",\n \"name\": \"Less\",\n \"import\": (() => import('@shikijs/langs/less'))\n },\n {\n \"id\": \"liquid\",\n \"name\": \"Liquid\",\n \"import\": (() => import('@shikijs/langs/liquid'))\n },\n {\n \"id\": \"llvm\",\n \"name\": \"LLVM IR\",\n \"import\": (() => import('@shikijs/langs/llvm'))\n },\n {\n \"id\": \"log\",\n \"name\": \"Log file\",\n \"import\": (() => import('@shikijs/langs/log'))\n },\n {\n \"id\": \"logo\",\n \"name\": \"Logo\",\n \"import\": (() => import('@shikijs/langs/logo'))\n },\n {\n \"id\": \"lua\",\n \"name\": \"Lua\",\n \"import\": (() => import('@shikijs/langs/lua'))\n },\n {\n \"id\": \"luau\",\n \"name\": \"Luau\",\n \"import\": (() => import('@shikijs/langs/luau'))\n },\n {\n \"id\": \"make\",\n \"name\": \"Makefile\",\n \"aliases\": [\n \"makefile\"\n ],\n \"import\": (() => import('@shikijs/langs/make'))\n },\n {\n \"id\": \"markdown\",\n \"name\": \"Markdown\",\n \"aliases\": [\n \"md\"\n ],\n \"import\": (() => import('@shikijs/langs/markdown'))\n },\n {\n \"id\": \"marko\",\n \"name\": \"Marko\",\n \"import\": (() => import('@shikijs/langs/marko'))\n },\n {\n \"id\": \"matlab\",\n \"name\": \"MATLAB\",\n \"import\": (() => import('@shikijs/langs/matlab'))\n },\n {\n \"id\": \"mdc\",\n \"name\": \"MDC\",\n \"import\": (() => import('@shikijs/langs/mdc'))\n },\n {\n \"id\": \"mdx\",\n \"name\": \"MDX\",\n \"import\": (() => import('@shikijs/langs/mdx'))\n },\n {\n \"id\": \"mermaid\",\n \"name\": \"Mermaid\",\n \"aliases\": [\n \"mmd\"\n ],\n \"import\": (() => import('@shikijs/langs/mermaid'))\n },\n {\n \"id\": \"mipsasm\",\n \"name\": \"MIPS Assembly\",\n \"aliases\": [\n \"mips\"\n ],\n \"import\": (() => import('@shikijs/langs/mipsasm'))\n },\n {\n \"id\": \"mojo\",\n \"name\": \"Mojo\",\n \"import\": (() => import('@shikijs/langs/mojo'))\n },\n {\n \"id\": \"moonbit\",\n \"name\": \"MoonBit\",\n \"aliases\": [\n \"mbt\",\n \"mbti\"\n ],\n \"import\": (() => import('@shikijs/langs/moonbit'))\n },\n {\n \"id\": \"move\",\n \"name\": \"Move\",\n \"import\": (() => import('@shikijs/langs/move'))\n },\n {\n \"id\": \"narrat\",\n \"name\": \"Narrat Language\",\n \"aliases\": [\n \"nar\"\n ],\n \"import\": (() => import('@shikijs/langs/narrat'))\n },\n {\n \"id\": \"nextflow\",\n \"name\": \"Nextflow\",\n \"aliases\": [\n \"nf\"\n ],\n \"import\": (() => import('@shikijs/langs/nextflow'))\n },\n {\n \"id\": \"nginx\",\n \"name\": \"Nginx\",\n \"import\": (() => import('@shikijs/langs/nginx'))\n },\n {\n \"id\": \"nim\",\n \"name\": \"Nim\",\n \"import\": (() => import('@shikijs/langs/nim'))\n },\n {\n \"id\": \"nix\",\n \"name\": \"Nix\",\n \"import\": (() => import('@shikijs/langs/nix'))\n },\n {\n \"id\": \"nushell\",\n \"name\": \"nushell\",\n \"aliases\": [\n \"nu\"\n ],\n \"import\": (() => import('@shikijs/langs/nushell'))\n },\n {\n \"id\": \"objective-c\",\n \"name\": \"Objective-C\",\n \"aliases\": [\n \"objc\"\n ],\n \"import\": (() => import('@shikijs/langs/objective-c'))\n },\n {\n \"id\": \"objective-cpp\",\n \"name\": \"Objective-C++\",\n \"import\": (() => import('@shikijs/langs/objective-cpp'))\n },\n {\n \"id\": \"ocaml\",\n \"name\": \"OCaml\",\n \"import\": (() => import('@shikijs/langs/ocaml'))\n },\n {\n \"id\": \"openscad\",\n \"name\": \"OpenSCAD\",\n \"aliases\": [\n \"scad\"\n ],\n \"import\": (() => import('@shikijs/langs/openscad'))\n },\n {\n \"id\": \"pascal\",\n \"name\": \"Pascal\",\n \"import\": (() => import('@shikijs/langs/pascal'))\n },\n {\n \"id\": \"perl\",\n \"name\": \"Perl\",\n \"import\": (() => import('@shikijs/langs/perl'))\n },\n {\n \"id\": \"php\",\n \"name\": \"PHP\",\n \"import\": (() => import('@shikijs/langs/php'))\n },\n {\n \"id\": \"pkl\",\n \"name\": \"Pkl\",\n \"import\": (() => import('@shikijs/langs/pkl'))\n },\n {\n \"id\": \"plsql\",\n \"name\": \"PL/SQL\",\n \"import\": (() => import('@shikijs/langs/plsql'))\n },\n {\n \"id\": \"po\",\n \"name\": \"Gettext PO\",\n \"aliases\": [\n \"pot\",\n \"potx\"\n ],\n \"import\": (() => import('@shikijs/langs/po'))\n },\n {\n \"id\": \"polar\",\n \"name\": \"Polar\",\n \"import\": (() => import('@shikijs/langs/polar'))\n },\n {\n \"id\": \"postcss\",\n \"name\": \"PostCSS\",\n \"import\": (() => import('@shikijs/langs/postcss'))\n },\n {\n \"id\": \"powerquery\",\n \"name\": \"PowerQuery\",\n \"import\": (() => import('@shikijs/langs/powerquery'))\n },\n {\n \"id\": \"powershell\",\n \"name\": \"PowerShell\",\n \"aliases\": [\n \"ps\",\n \"ps1\"\n ],\n \"import\": (() => import('@shikijs/langs/powershell'))\n },\n {\n \"id\": \"prisma\",\n \"name\": \"Prisma\",\n \"import\": (() => import('@shikijs/langs/prisma'))\n },\n {\n \"id\": \"prolog\",\n \"name\": \"Prolog\",\n \"import\": (() => import('@shikijs/langs/prolog'))\n },\n {\n \"id\": \"proto\",\n \"name\": \"Protocol Buffer 3\",\n \"aliases\": [\n \"protobuf\"\n ],\n \"import\": (() => import('@shikijs/langs/proto'))\n },\n {\n \"id\": \"pug\",\n \"name\": \"Pug\",\n \"aliases\": [\n \"jade\"\n ],\n \"import\": (() => import('@shikijs/langs/pug'))\n },\n {\n \"id\": \"puppet\",\n \"name\": \"Puppet\",\n \"import\": (() => import('@shikijs/langs/puppet'))\n },\n {\n \"id\": \"purescript\",\n \"name\": \"PureScript\",\n \"import\": (() => import('@shikijs/langs/purescript'))\n },\n {\n \"id\": \"python\",\n \"name\": \"Python\",\n \"aliases\": [\n \"py\"\n ],\n \"import\": (() => import('@shikijs/langs/python'))\n },\n {\n \"id\": \"qml\",\n \"name\": \"QML\",\n \"import\": (() => import('@shikijs/langs/qml'))\n },\n {\n \"id\": \"qmldir\",\n \"name\": \"QML Directory\",\n \"import\": (() => import('@shikijs/langs/qmldir'))\n },\n {\n \"id\": \"qss\",\n \"name\": \"Qt Style Sheets\",\n \"import\": (() => import('@shikijs/langs/qss'))\n },\n {\n \"id\": \"r\",\n \"name\": \"R\",\n \"import\": (() => import('@shikijs/langs/r'))\n },\n {\n \"id\": \"racket\",\n \"name\": \"Racket\",\n \"import\": (() => import('@shikijs/langs/racket'))\n },\n {\n \"id\": \"raku\",\n \"name\": \"Raku\",\n \"aliases\": [\n \"perl6\"\n ],\n \"import\": (() => import('@shikijs/langs/raku'))\n },\n {\n \"id\": \"razor\",\n \"name\": \"ASP.NET Razor\",\n \"import\": (() => import('@shikijs/langs/razor'))\n },\n {\n \"id\": \"reg\",\n \"name\": \"Windows Registry Script\",\n \"import\": (() => import('@shikijs/langs/reg'))\n },\n {\n \"id\": \"regexp\",\n \"name\": \"RegExp\",\n \"aliases\": [\n \"regex\"\n ],\n \"import\": (() => import('@shikijs/langs/regexp'))\n },\n {\n \"id\": \"rel\",\n \"name\": \"Rel\",\n \"import\": (() => import('@shikijs/langs/rel'))\n },\n {\n \"id\": \"riscv\",\n \"name\": \"RISC-V\",\n \"import\": (() => import('@shikijs/langs/riscv'))\n },\n {\n \"id\": \"rosmsg\",\n \"name\": \"ROS Interface\",\n \"import\": (() => import('@shikijs/langs/rosmsg'))\n },\n {\n \"id\": \"rst\",\n \"name\": \"reStructuredText\",\n \"import\": (() => import('@shikijs/langs/rst'))\n },\n {\n \"id\": \"ruby\",\n \"name\": \"Ruby\",\n \"aliases\": [\n \"rb\"\n ],\n \"import\": (() => import('@shikijs/langs/ruby'))\n },\n {\n \"id\": \"rust\",\n \"name\": \"Rust\",\n \"aliases\": [\n \"rs\"\n ],\n \"import\": (() => import('@shikijs/langs/rust'))\n },\n {\n \"id\": \"sas\",\n \"name\": \"SAS\",\n \"import\": (() => import('@shikijs/langs/sas'))\n },\n {\n \"id\": \"sass\",\n \"name\": \"Sass\",\n \"import\": (() => import('@shikijs/langs/sass'))\n },\n {\n \"id\": \"scala\",\n \"name\": \"Scala\",\n \"import\": (() => import('@shikijs/langs/scala'))\n },\n {\n \"id\": \"scheme\",\n \"name\": \"Scheme\",\n \"import\": (() => import('@shikijs/langs/scheme'))\n },\n {\n \"id\": \"scss\",\n \"name\": \"SCSS\",\n \"import\": (() => import('@shikijs/langs/scss'))\n },\n {\n \"id\": \"sdbl\",\n \"name\": \"1C (Query)\",\n \"aliases\": [\n \"1c-query\"\n ],\n \"import\": (() => import('@shikijs/langs/sdbl'))\n },\n {\n \"id\": \"shaderlab\",\n \"name\": \"ShaderLab\",\n \"aliases\": [\n \"shader\"\n ],\n \"import\": (() => import('@shikijs/langs/shaderlab'))\n },\n {\n \"id\": \"shellscript\",\n \"name\": \"Shell\",\n \"aliases\": [\n \"bash\",\n \"sh\",\n \"shell\",\n \"zsh\"\n ],\n \"import\": (() => import('@shikijs/langs/shellscript'))\n },\n {\n \"id\": \"shellsession\",\n \"name\": \"Shell Session\",\n \"aliases\": [\n \"console\"\n ],\n \"import\": (() => import('@shikijs/langs/shellsession'))\n },\n {\n \"id\": \"smalltalk\",\n \"name\": \"Smalltalk\",\n \"import\": (() => import('@shikijs/langs/smalltalk'))\n },\n {\n \"id\": \"solidity\",\n \"name\": \"Solidity\",\n \"import\": (() => import('@shikijs/langs/solidity'))\n },\n {\n \"id\": \"soy\",\n \"name\": \"Closure Templates\",\n \"aliases\": [\n \"closure-templates\"\n ],\n \"import\": (() => import('@shikijs/langs/soy'))\n },\n {\n \"id\": \"sparql\",\n \"name\": \"SPARQL\",\n \"import\": (() => import('@shikijs/langs/sparql'))\n },\n {\n \"id\": \"splunk\",\n \"name\": \"Splunk Query Language\",\n \"aliases\": [\n \"spl\"\n ],\n \"import\": (() => import('@shikijs/langs/splunk'))\n },\n {\n \"id\": \"sql\",\n \"name\": \"SQL\",\n \"import\": (() => import('@shikijs/langs/sql'))\n },\n {\n \"id\": \"ssh-config\",\n \"name\": \"SSH Config\",\n \"import\": (() => import('@shikijs/langs/ssh-config'))\n },\n {\n \"id\": \"stata\",\n \"name\": \"Stata\",\n \"import\": (() => import('@shikijs/langs/stata'))\n },\n {\n \"id\": \"stylus\",\n \"name\": \"Stylus\",\n \"aliases\": [\n \"styl\"\n ],\n \"import\": (() => import('@shikijs/langs/stylus'))\n },\n {\n \"id\": \"svelte\",\n \"name\": \"Svelte\",\n \"import\": (() => import('@shikijs/langs/svelte'))\n },\n {\n \"id\": \"swift\",\n \"name\": \"Swift\",\n \"import\": (() => import('@shikijs/langs/swift'))\n },\n {\n \"id\": \"system-verilog\",\n \"name\": \"SystemVerilog\",\n \"import\": (() => import('@shikijs/langs/system-verilog'))\n },\n {\n \"id\": \"systemd\",\n \"name\": \"Systemd Units\",\n \"import\": (() => import('@shikijs/langs/systemd'))\n },\n {\n \"id\": \"talonscript\",\n \"name\": \"TalonScript\",\n \"aliases\": [\n \"talon\"\n ],\n \"import\": (() => import('@shikijs/langs/talonscript'))\n },\n {\n \"id\": \"tasl\",\n \"name\": \"Tasl\",\n \"import\": (() => import('@shikijs/langs/tasl'))\n },\n {\n \"id\": \"tcl\",\n \"name\": \"Tcl\",\n \"import\": (() => import('@shikijs/langs/tcl'))\n },\n {\n \"id\": \"templ\",\n \"name\": \"Templ\",\n \"import\": (() => import('@shikijs/langs/templ'))\n },\n {\n \"id\": \"terraform\",\n \"name\": \"Terraform\",\n \"aliases\": [\n \"tf\",\n \"tfvars\"\n ],\n \"import\": (() => import('@shikijs/langs/terraform'))\n },\n {\n \"id\": \"tex\",\n \"name\": \"TeX\",\n \"import\": (() => import('@shikijs/langs/tex'))\n },\n {\n \"id\": \"toml\",\n \"name\": \"TOML\",\n \"import\": (() => import('@shikijs/langs/toml'))\n },\n {\n \"id\": \"ts-tags\",\n \"name\": \"TypeScript with Tags\",\n \"aliases\": [\n \"lit\"\n ],\n \"import\": (() => import('@shikijs/langs/ts-tags'))\n },\n {\n \"id\": \"tsv\",\n \"name\": \"TSV\",\n \"import\": (() => import('@shikijs/langs/tsv'))\n },\n {\n \"id\": \"tsx\",\n \"name\": \"TSX\",\n \"import\": (() => import('@shikijs/langs/tsx'))\n },\n {\n \"id\": \"turtle\",\n \"name\": \"Turtle\",\n \"import\": (() => import('@shikijs/langs/turtle'))\n },\n {\n \"id\": \"twig\",\n \"name\": \"Twig\",\n \"import\": (() => import('@shikijs/langs/twig'))\n },\n {\n \"id\": \"typescript\",\n \"name\": \"TypeScript\",\n \"aliases\": [\n \"ts\",\n \"cts\",\n \"mts\"\n ],\n \"import\": (() => import('@shikijs/langs/typescript'))\n },\n {\n \"id\": \"typespec\",\n \"name\": \"TypeSpec\",\n \"aliases\": [\n \"tsp\"\n ],\n \"import\": (() => import('@shikijs/langs/typespec'))\n },\n {\n \"id\": \"typst\",\n \"name\": \"Typst\",\n \"aliases\": [\n \"typ\"\n ],\n \"import\": (() => import('@shikijs/langs/typst'))\n },\n {\n \"id\": \"v\",\n \"name\": \"V\",\n \"import\": (() => import('@shikijs/langs/v'))\n },\n {\n \"id\": \"vala\",\n \"name\": \"Vala\",\n \"import\": (() => import('@shikijs/langs/vala'))\n },\n {\n \"id\": \"vb\",\n \"name\": \"Visual Basic\",\n \"aliases\": [\n \"cmd\"\n ],\n \"import\": (() => import('@shikijs/langs/vb'))\n },\n {\n \"id\": \"verilog\",\n \"name\": \"Verilog\",\n \"import\": (() => import('@shikijs/langs/verilog'))\n },\n {\n \"id\": \"vhdl\",\n \"name\": \"VHDL\",\n \"import\": (() => import('@shikijs/langs/vhdl'))\n },\n {\n \"id\": \"viml\",\n \"name\": \"Vim Script\",\n \"aliases\": [\n \"vim\",\n \"vimscript\"\n ],\n \"import\": (() => import('@shikijs/langs/viml'))\n },\n {\n \"id\": \"vue\",\n \"name\": \"Vue\",\n \"import\": (() => import('@shikijs/langs/vue'))\n },\n {\n \"id\": \"vue-html\",\n \"name\": \"Vue HTML\",\n \"import\": (() => import('@shikijs/langs/vue-html'))\n },\n {\n \"id\": \"vue-vine\",\n \"name\": \"Vue Vine\",\n \"import\": (() => import('@shikijs/langs/vue-vine'))\n },\n {\n \"id\": \"vyper\",\n \"name\": \"Vyper\",\n \"aliases\": [\n \"vy\"\n ],\n \"import\": (() => import('@shikijs/langs/vyper'))\n },\n {\n \"id\": \"wasm\",\n \"name\": \"WebAssembly\",\n \"import\": (() => import('@shikijs/langs/wasm'))\n },\n {\n \"id\": \"wenyan\",\n \"name\": \"Wenyan\",\n \"aliases\": [\n \"\\u6587\\u8A00\"\n ],\n \"import\": (() => import('@shikijs/langs/wenyan'))\n },\n {\n \"id\": \"wgsl\",\n \"name\": \"WGSL\",\n \"import\": (() => import('@shikijs/langs/wgsl'))\n },\n {\n \"id\": \"wikitext\",\n \"name\": \"Wikitext\",\n \"aliases\": [\n \"mediawiki\",\n \"wiki\"\n ],\n \"import\": (() => import('@shikijs/langs/wikitext'))\n },\n {\n \"id\": \"wit\",\n \"name\": \"WebAssembly Interface Types\",\n \"import\": (() => import('@shikijs/langs/wit'))\n },\n {\n \"id\": \"wolfram\",\n \"name\": \"Wolfram\",\n \"aliases\": [\n \"wl\"\n ],\n \"import\": (() => import('@shikijs/langs/wolfram'))\n },\n {\n \"id\": \"xml\",\n \"name\": \"XML\",\n \"import\": (() => import('@shikijs/langs/xml'))\n },\n {\n \"id\": \"xsl\",\n \"name\": \"XSL\",\n \"import\": (() => import('@shikijs/langs/xsl'))\n },\n {\n \"id\": \"yaml\",\n \"name\": \"YAML\",\n \"aliases\": [\n \"yml\"\n ],\n \"import\": (() => import('@shikijs/langs/yaml'))\n },\n {\n \"id\": \"zenscript\",\n \"name\": \"ZenScript\",\n \"import\": (() => import('@shikijs/langs/zenscript'))\n },\n {\n \"id\": \"zig\",\n \"name\": \"Zig\",\n \"import\": (() => import('@shikijs/langs/zig'))\n }\n];\nconst bundledLanguagesBase = Object.fromEntries(bundledLanguagesInfo.map((i) => [i.id, i.import]));\nconst bundledLanguagesAlias = Object.fromEntries(bundledLanguagesInfo.flatMap((i) => i.aliases?.map((a) => [a, i.import]) || []));\nconst bundledLanguages = {\n ...bundledLanguagesBase,\n ...bundledLanguagesAlias\n};\n\nexport { bundledLanguages, bundledLanguagesAlias, bundledLanguagesBase, bundledLanguagesInfo };\n","const bundledThemesInfo = [\n {\n \"id\": \"andromeeda\",\n \"displayName\": \"Andromeeda\",\n \"type\": \"dark\",\n \"import\": (() => import('@shikijs/themes/andromeeda'))\n },\n {\n \"id\": \"aurora-x\",\n \"displayName\": \"Aurora X\",\n \"type\": \"dark\",\n \"import\": (() => import('@shikijs/themes/aurora-x'))\n },\n {\n \"id\": \"ayu-dark\",\n \"displayName\": \"Ayu Dark\",\n \"type\": \"dark\",\n \"import\": (() => import('@shikijs/themes/ayu-dark'))\n },\n {\n \"id\": \"catppuccin-frappe\",\n \"displayName\": \"Catppuccin Frapp\\xE9\",\n \"type\": \"dark\",\n \"import\": (() => import('@shikijs/themes/catppuccin-frappe'))\n },\n {\n \"id\": \"catppuccin-latte\",\n \"displayName\": \"Catppuccin Latte\",\n \"type\": \"light\",\n \"import\": (() => import('@shikijs/themes/catppuccin-latte'))\n },\n {\n \"id\": \"catppuccin-macchiato\",\n \"displayName\": \"Catppuccin Macchiato\",\n \"type\": \"dark\",\n \"import\": (() => import('@shikijs/themes/catppuccin-macchiato'))\n },\n {\n \"id\": \"catppuccin-mocha\",\n \"displayName\": \"Catppuccin Mocha\",\n \"type\": \"dark\",\n \"import\": (() => import('@shikijs/themes/catppuccin-mocha'))\n },\n {\n \"id\": \"dark-plus\",\n \"displayName\": \"Dark Plus\",\n \"type\": \"dark\",\n \"import\": (() => import('@shikijs/themes/dark-plus'))\n },\n {\n \"id\": \"dracula\",\n \"displayName\": \"Dracula Theme\",\n \"type\": \"dark\",\n \"import\": (() => import('@shikijs/themes/dracula'))\n },\n {\n \"id\": \"dracula-soft\",\n \"displayName\": \"Dracula Theme Soft\",\n \"type\": \"dark\",\n \"import\": (() => import('@shikijs/themes/dracula-soft'))\n },\n {\n \"id\": \"everforest-dark\",\n \"displayName\": \"Everforest Dark\",\n \"type\": \"dark\",\n \"import\": (() => import('@shikijs/themes/everforest-dark'))\n },\n {\n \"id\": \"everforest-light\",\n \"displayName\": \"Everforest Light\",\n \"type\": \"light\",\n \"import\": (() => import('@shikijs/themes/everforest-light'))\n },\n {\n \"id\": \"github-dark\",\n \"displayName\": \"GitHub Dark\",\n \"type\": \"dark\",\n \"import\": (() => import('@shikijs/themes/github-dark'))\n },\n {\n \"id\": \"github-dark-default\",\n \"displayName\": \"GitHub Dark Default\",\n \"type\": \"dark\",\n \"import\": (() => import('@shikijs/themes/github-dark-default'))\n },\n {\n \"id\": \"github-dark-dimmed\",\n \"displayName\": \"GitHub Dark Dimmed\",\n \"type\": \"dark\",\n \"import\": (() => import('@shikijs/themes/github-dark-dimmed'))\n },\n {\n \"id\": \"github-dark-high-contrast\",\n \"displayName\": \"GitHub Dark High Contrast\",\n \"type\": \"dark\",\n \"import\": (() => import('@shikijs/themes/github-dark-high-contrast'))\n },\n {\n \"id\": \"github-light\",\n \"displayName\": \"GitHub Light\",\n \"type\": \"light\",\n \"import\": (() => import('@shikijs/themes/github-light'))\n },\n {\n \"id\": \"github-light-default\",\n \"displayName\": \"GitHub Light Default\",\n \"type\": \"light\",\n \"import\": (() => import('@shikijs/themes/github-light-default'))\n },\n {\n \"id\": \"github-light-high-contrast\",\n \"displayName\": \"GitHub Light High Contrast\",\n \"type\": \"light\",\n \"import\": (() => import('@shikijs/themes/github-light-high-contrast'))\n },\n {\n \"id\": \"gruvbox-dark-hard\",\n \"displayName\": \"Gruvbox Dark Hard\",\n \"type\": \"dark\",\n \"import\": (() => import('@shikijs/themes/gruvbox-dark-hard'))\n },\n {\n \"id\": \"gruvbox-dark-medium\",\n \"displayName\": \"Gruvbox Dark Medium\",\n \"type\": \"dark\",\n \"import\": (() => import('@shikijs/themes/gruvbox-dark-medium'))\n },\n {\n \"id\": \"gruvbox-dark-soft\",\n \"displayName\": \"Gruvbox Dark Soft\",\n \"type\": \"dark\",\n \"import\": (() => import('@shikijs/themes/gruvbox-dark-soft'))\n },\n {\n \"id\": \"gruvbox-light-hard\",\n \"displayName\": \"Gruvbox Light Hard\",\n \"type\": \"light\",\n \"import\": (() => import('@shikijs/themes/gruvbox-light-hard'))\n },\n {\n \"id\": \"gruvbox-light-medium\",\n \"displayName\": \"Gruvbox Light Medium\",\n \"type\": \"light\",\n \"import\": (() => import('@shikijs/themes/gruvbox-light-medium'))\n },\n {\n \"id\": \"gruvbox-light-soft\",\n \"displayName\": \"Gruvbox Light Soft\",\n \"type\": \"light\",\n \"import\": (() => import('@shikijs/themes/gruvbox-light-soft'))\n },\n {\n \"id\": \"houston\",\n \"displayName\": \"Houston\",\n \"type\": \"dark\",\n \"import\": (() => import('@shikijs/themes/houston'))\n },\n {\n \"id\": \"kanagawa-dragon\",\n \"displayName\": \"Kanagawa Dragon\",\n \"type\": \"dark\",\n \"import\": (() => import('@shikijs/themes/kanagawa-dragon'))\n },\n {\n \"id\": \"kanagawa-lotus\",\n \"displayName\": \"Kanagawa Lotus\",\n \"type\": \"light\",\n \"import\": (() => import('@shikijs/themes/kanagawa-lotus'))\n },\n {\n \"id\": \"kanagawa-wave\",\n \"displayName\": \"Kanagawa Wave\",\n \"type\": \"dark\",\n \"import\": (() => import('@shikijs/themes/kanagawa-wave'))\n },\n {\n \"id\": \"laserwave\",\n \"displayName\": \"LaserWave\",\n \"type\": \"dark\",\n \"import\": (() => import('@shikijs/themes/laserwave'))\n },\n {\n \"id\": \"light-plus\",\n \"displayName\": \"Light Plus\",\n \"type\": \"light\",\n \"import\": (() => import('@shikijs/themes/light-plus'))\n },\n {\n \"id\": \"material-theme\",\n \"displayName\": \"Material Theme\",\n \"type\": \"dark\",\n \"import\": (() => import('@shikijs/themes/material-theme'))\n },\n {\n \"id\": \"material-theme-darker\",\n \"displayName\": \"Material Theme Darker\",\n \"type\": \"dark\",\n \"import\": (() => import('@shikijs/themes/material-theme-darker'))\n },\n {\n \"id\": \"material-theme-lighter\",\n \"displayName\": \"Material Theme Lighter\",\n \"type\": \"light\",\n \"import\": (() => import('@shikijs/themes/material-theme-lighter'))\n },\n {\n \"id\": \"material-theme-ocean\",\n \"displayName\": \"Material Theme Ocean\",\n \"type\": \"dark\",\n \"import\": (() => import('@shikijs/themes/material-theme-ocean'))\n },\n {\n \"id\": \"material-theme-palenight\",\n \"displayName\": \"Material Theme Palenight\",\n \"type\": \"dark\",\n \"import\": (() => import('@shikijs/themes/material-theme-palenight'))\n },\n {\n \"id\": \"min-dark\",\n \"displayName\": \"Min Dark\",\n \"type\": \"dark\",\n \"import\": (() => import('@shikijs/themes/min-dark'))\n },\n {\n \"id\": \"min-light\",\n \"displayName\": \"Min Light\",\n \"type\": \"light\",\n \"import\": (() => import('@shikijs/themes/min-light'))\n },\n {\n \"id\": \"monokai\",\n \"displayName\": \"Monokai\",\n \"type\": \"dark\",\n \"import\": (() => import('@shikijs/themes/monokai'))\n },\n {\n \"id\": \"night-owl\",\n \"displayName\": \"Night Owl\",\n \"type\": \"dark\",\n \"import\": (() => import('@shikijs/themes/night-owl'))\n },\n {\n \"id\": \"nord\",\n \"displayName\": \"Nord\",\n \"type\": \"dark\",\n \"import\": (() => import('@shikijs/themes/nord'))\n },\n {\n \"id\": \"one-dark-pro\",\n \"displayName\": \"One Dark Pro\",\n \"type\": \"dark\",\n \"import\": (() => import('@shikijs/themes/one-dark-pro'))\n },\n {\n \"id\": \"one-light\",\n \"displayName\": \"One Light\",\n \"type\": \"light\",\n \"import\": (() => import('@shikijs/themes/one-light'))\n },\n {\n \"id\": \"plastic\",\n \"displayName\": \"Plastic\",\n \"type\": \"dark\",\n \"import\": (() => import('@shikijs/themes/plastic'))\n },\n {\n \"id\": \"poimandres\",\n \"displayName\": \"Poimandres\",\n \"type\": \"dark\",\n \"import\": (() => import('@shikijs/themes/poimandres'))\n },\n {\n \"id\": \"red\",\n \"displayName\": \"Red\",\n \"type\": \"dark\",\n \"import\": (() => import('@shikijs/themes/red'))\n },\n {\n \"id\": \"rose-pine\",\n \"displayName\": \"Ros\\xE9 Pine\",\n \"type\": \"dark\",\n \"import\": (() => import('@shikijs/themes/rose-pine'))\n },\n {\n \"id\": \"rose-pine-dawn\",\n \"displayName\": \"Ros\\xE9 Pine Dawn\",\n \"type\": \"light\",\n \"import\": (() => import('@shikijs/themes/rose-pine-dawn'))\n },\n {\n \"id\": \"rose-pine-moon\",\n \"displayName\": \"Ros\\xE9 Pine Moon\",\n \"type\": \"dark\",\n \"import\": (() => import('@shikijs/themes/rose-pine-moon'))\n },\n {\n \"id\": \"slack-dark\",\n \"displayName\": \"Slack Dark\",\n \"type\": \"dark\",\n \"import\": (() => import('@shikijs/themes/slack-dark'))\n },\n {\n \"id\": \"slack-ochin\",\n \"displayName\": \"Slack Ochin\",\n \"type\": \"light\",\n \"import\": (() => import('@shikijs/themes/slack-ochin'))\n },\n {\n \"id\": \"snazzy-light\",\n \"displayName\": \"Snazzy Light\",\n \"type\": \"light\",\n \"import\": (() => import('@shikijs/themes/snazzy-light'))\n },\n {\n \"id\": \"solarized-dark\",\n \"displayName\": \"Solarized Dark\",\n \"type\": \"dark\",\n \"import\": (() => import('@shikijs/themes/solarized-dark'))\n },\n {\n \"id\": \"solarized-light\",\n \"displayName\": \"Solarized Light\",\n \"type\": \"light\",\n \"import\": (() => import('@shikijs/themes/solarized-light'))\n },\n {\n \"id\": \"synthwave-84\",\n \"displayName\": \"Synthwave '84\",\n \"type\": \"dark\",\n \"import\": (() => import('@shikijs/themes/synthwave-84'))\n },\n {\n \"id\": \"tokyo-night\",\n \"displayName\": \"Tokyo Night\",\n \"type\": \"dark\",\n \"import\": (() => import('@shikijs/themes/tokyo-night'))\n },\n {\n \"id\": \"vesper\",\n \"displayName\": \"Vesper\",\n \"type\": \"dark\",\n \"import\": (() => import('@shikijs/themes/vesper'))\n },\n {\n \"id\": \"vitesse-black\",\n \"displayName\": \"Vitesse Black\",\n \"type\": \"dark\",\n \"import\": (() => import('@shikijs/themes/vitesse-black'))\n },\n {\n \"id\": \"vitesse-dark\",\n \"displayName\": \"Vitesse Dark\",\n \"type\": \"dark\",\n \"import\": (() => import('@shikijs/themes/vitesse-dark'))\n },\n {\n \"id\": \"vitesse-light\",\n \"displayName\": \"Vitesse Light\",\n \"type\": \"light\",\n \"import\": (() => import('@shikijs/themes/vitesse-light'))\n }\n];\nconst bundledThemes = Object.fromEntries(bundledThemesInfo.map((i) => [i.id, i.import]));\n\nexport { bundledThemes, bundledThemesInfo };\n","class ShikiError extends Error {\n constructor(message) {\n super(message);\n this.name = \"ShikiError\";\n }\n}\n\nfunction getHeapMax() {\n return 2147483648;\n}\nfunction _emscripten_get_now() {\n return typeof performance !== \"undefined\" ? performance.now() : Date.now();\n}\nconst alignUp = (x, multiple) => x + (multiple - x % multiple) % multiple;\nasync function main(init) {\n let wasmMemory;\n let buffer;\n const binding = {};\n function updateGlobalBufferAndViews(buf) {\n buffer = buf;\n binding.HEAPU8 = new Uint8Array(buf);\n binding.HEAPU32 = new Uint32Array(buf);\n }\n function _emscripten_memcpy_big(dest, src, num) {\n binding.HEAPU8.copyWithin(dest, src, src + num);\n }\n function emscripten_realloc_buffer(size) {\n try {\n wasmMemory.grow(size - buffer.byteLength + 65535 >>> 16);\n updateGlobalBufferAndViews(wasmMemory.buffer);\n return 1;\n } catch {\n }\n }\n function _emscripten_resize_heap(requestedSize) {\n const oldSize = binding.HEAPU8.length;\n requestedSize = requestedSize >>> 0;\n const maxHeapSize = getHeapMax();\n if (requestedSize > maxHeapSize)\n return false;\n for (let cutDown = 1; cutDown <= 4; cutDown *= 2) {\n let overGrownHeapSize = oldSize * (1 + 0.2 / cutDown);\n overGrownHeapSize = Math.min(overGrownHeapSize, requestedSize + 100663296);\n const newSize = Math.min(maxHeapSize, alignUp(Math.max(requestedSize, overGrownHeapSize), 65536));\n const replacement = emscripten_realloc_buffer(newSize);\n if (replacement)\n return true;\n }\n return false;\n }\n const UTF8Decoder = typeof TextDecoder != \"undefined\" ? new TextDecoder(\"utf8\") : void 0;\n function UTF8ArrayToString(heapOrArray, idx, maxBytesToRead = 1024) {\n const endIdx = idx + maxBytesToRead;\n let endPtr = idx;\n while (heapOrArray[endPtr] && !(endPtr >= endIdx)) ++endPtr;\n if (endPtr - idx > 16 && heapOrArray.buffer && UTF8Decoder) {\n return UTF8Decoder.decode(heapOrArray.subarray(idx, endPtr));\n }\n let str = \"\";\n while (idx < endPtr) {\n let u0 = heapOrArray[idx++];\n if (!(u0 & 128)) {\n str += String.fromCharCode(u0);\n continue;\n }\n const u1 = heapOrArray[idx++] & 63;\n if ((u0 & 224) === 192) {\n str += String.fromCharCode((u0 & 31) << 6 | u1);\n continue;\n }\n const u2 = heapOrArray[idx++] & 63;\n if ((u0 & 240) === 224) {\n u0 = (u0 & 15) << 12 | u1 << 6 | u2;\n } else {\n u0 = (u0 & 7) << 18 | u1 << 12 | u2 << 6 | heapOrArray[idx++] & 63;\n }\n if (u0 < 65536) {\n str += String.fromCharCode(u0);\n } else {\n const ch = u0 - 65536;\n str += String.fromCharCode(55296 | ch >> 10, 56320 | ch & 1023);\n }\n }\n return str;\n }\n function UTF8ToString(ptr, maxBytesToRead) {\n return ptr ? UTF8ArrayToString(binding.HEAPU8, ptr, maxBytesToRead) : \"\";\n }\n const asmLibraryArg = {\n emscripten_get_now: _emscripten_get_now,\n emscripten_memcpy_big: _emscripten_memcpy_big,\n emscripten_resize_heap: _emscripten_resize_heap,\n fd_write: () => 0\n };\n async function createWasm() {\n const info = {\n env: asmLibraryArg,\n wasi_snapshot_preview1: asmLibraryArg\n };\n const exports$1 = await init(info);\n wasmMemory = exports$1.memory;\n updateGlobalBufferAndViews(wasmMemory.buffer);\n Object.assign(binding, exports$1);\n binding.UTF8ToString = UTF8ToString;\n }\n await createWasm();\n return binding;\n}\n\nvar __defProp = Object.defineProperty;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\nlet onigBinding = null;\nfunction throwLastOnigError(onigBinding2) {\n throw new ShikiError(onigBinding2.UTF8ToString(onigBinding2.getLastOnigError()));\n}\nclass UtfString {\n constructor(str) {\n __publicField(this, \"utf16Length\");\n __publicField(this, \"utf8Length\");\n __publicField(this, \"utf16Value\");\n __publicField(this, \"utf8Value\");\n __publicField(this, \"utf16OffsetToUtf8\");\n __publicField(this, \"utf8OffsetToUtf16\");\n const utf16Length = str.length;\n const utf8Length = UtfString._utf8ByteLength(str);\n const computeIndicesMapping = utf8Length !== utf16Length;\n const utf16OffsetToUtf8 = computeIndicesMapping ? new Uint32Array(utf16Length + 1) : null;\n if (computeIndicesMapping)\n utf16OffsetToUtf8[utf16Length] = utf8Length;\n const utf8OffsetToUtf16 = computeIndicesMapping ? new Uint32Array(utf8Length + 1) : null;\n if (computeIndicesMapping)\n utf8OffsetToUtf16[utf8Length] = utf16Length;\n const utf8Value = new Uint8Array(utf8Length);\n let i8 = 0;\n for (let i16 = 0; i16 < utf16Length; i16++) {\n const charCode = str.charCodeAt(i16);\n let codePoint = charCode;\n let wasSurrogatePair = false;\n if (charCode >= 55296 && charCode <= 56319) {\n if (i16 + 1 < utf16Length) {\n const nextCharCode = str.charCodeAt(i16 + 1);\n if (nextCharCode >= 56320 && nextCharCode <= 57343) {\n codePoint = (charCode - 55296 << 10) + 65536 | nextCharCode - 56320;\n wasSurrogatePair = true;\n }\n }\n }\n if (computeIndicesMapping) {\n utf16OffsetToUtf8[i16] = i8;\n if (wasSurrogatePair)\n utf16OffsetToUtf8[i16 + 1] = i8;\n if (codePoint <= 127) {\n utf8OffsetToUtf16[i8 + 0] = i16;\n } else if (codePoint <= 2047) {\n utf8OffsetToUtf16[i8 + 0] = i16;\n utf8OffsetToUtf16[i8 + 1] = i16;\n } else if (codePoint <= 65535) {\n utf8OffsetToUtf16[i8 + 0] = i16;\n utf8OffsetToUtf16[i8 + 1] = i16;\n utf8OffsetToUtf16[i8 + 2] = i16;\n } else {\n utf8OffsetToUtf16[i8 + 0] = i16;\n utf8OffsetToUtf16[i8 + 1] = i16;\n utf8OffsetToUtf16[i8 + 2] = i16;\n utf8OffsetToUtf16[i8 + 3] = i16;\n }\n }\n if (codePoint <= 127) {\n utf8Value[i8++] = codePoint;\n } else if (codePoint <= 2047) {\n utf8Value[i8++] = 192 | (codePoint & 1984) >>> 6;\n utf8Value[i8++] = 128 | (codePoint & 63) >>> 0;\n } else if (codePoint <= 65535) {\n utf8Value[i8++] = 224 | (codePoint & 61440) >>> 12;\n utf8Value[i8++] = 128 | (codePoint & 4032) >>> 6;\n utf8Value[i8++] = 128 | (codePoint & 63) >>> 0;\n } else {\n utf8Value[i8++] = 240 | (codePoint & 1835008) >>> 18;\n utf8Value[i8++] = 128 | (codePoint & 258048) >>> 12;\n utf8Value[i8++] = 128 | (codePoint & 4032) >>> 6;\n utf8Value[i8++] = 128 | (codePoint & 63) >>> 0;\n }\n if (wasSurrogatePair)\n i16++;\n }\n this.utf16Length = utf16Length;\n this.utf8Length = utf8Length;\n this.utf16Value = str;\n this.utf8Value = utf8Value;\n this.utf16OffsetToUtf8 = utf16OffsetToUtf8;\n this.utf8OffsetToUtf16 = utf8OffsetToUtf16;\n }\n static _utf8ByteLength(str) {\n let result = 0;\n for (let i = 0, len = str.length; i < len; i++) {\n const charCode = str.charCodeAt(i);\n let codepoint = charCode;\n let wasSurrogatePair = false;\n if (charCode >= 55296 && charCode <= 56319) {\n if (i + 1 < len) {\n const nextCharCode = str.charCodeAt(i + 1);\n if (nextCharCode >= 56320 && nextCharCode <= 57343) {\n codepoint = (charCode - 55296 << 10) + 65536 | nextCharCode - 56320;\n wasSurrogatePair = true;\n }\n }\n }\n if (codepoint <= 127)\n result += 1;\n else if (codepoint <= 2047)\n result += 2;\n else if (codepoint <= 65535)\n result += 3;\n else\n result += 4;\n if (wasSurrogatePair)\n i++;\n }\n return result;\n }\n createString(onigBinding2) {\n const result = onigBinding2.omalloc(this.utf8Length);\n onigBinding2.HEAPU8.set(this.utf8Value, result);\n return result;\n }\n}\nconst _OnigString = class _OnigString {\n constructor(str) {\n __publicField(this, \"id\", ++_OnigString.LAST_ID);\n __publicField(this, \"_onigBinding\");\n __publicField(this, \"content\");\n __publicField(this, \"utf16Length\");\n __publicField(this, \"utf8Length\");\n __publicField(this, \"utf16OffsetToUtf8\");\n __publicField(this, \"utf8OffsetToUtf16\");\n __publicField(this, \"ptr\");\n if (!onigBinding)\n throw new ShikiError(\"Must invoke loadWasm first.\");\n this._onigBinding = onigBinding;\n this.content = str;\n const utfString = new UtfString(str);\n this.utf16Length = utfString.utf16Length;\n this.utf8Length = utfString.utf8Length;\n this.utf16OffsetToUtf8 = utfString.utf16OffsetToUtf8;\n this.utf8OffsetToUtf16 = utfString.utf8OffsetToUtf16;\n if (this.utf8Length < 1e4 && !_OnigString._sharedPtrInUse) {\n if (!_OnigString._sharedPtr)\n _OnigString._sharedPtr = onigBinding.omalloc(1e4);\n _OnigString._sharedPtrInUse = true;\n onigBinding.HEAPU8.set(utfString.utf8Value, _OnigString._sharedPtr);\n this.ptr = _OnigString._sharedPtr;\n } else {\n this.ptr = utfString.createString(onigBinding);\n }\n }\n convertUtf8OffsetToUtf16(utf8Offset) {\n if (this.utf8OffsetToUtf16) {\n if (utf8Offset < 0)\n return 0;\n if (utf8Offset > this.utf8Length)\n return this.utf16Length;\n return this.utf8OffsetToUtf16[utf8Offset];\n }\n return utf8Offset;\n }\n convertUtf16OffsetToUtf8(utf16Offset) {\n if (this.utf16OffsetToUtf8) {\n if (utf16Offset < 0)\n return 0;\n if (utf16Offset > this.utf16Length)\n return this.utf8Length;\n return this.utf16OffsetToUtf8[utf16Offset];\n }\n return utf16Offset;\n }\n dispose() {\n if (this.ptr === _OnigString._sharedPtr)\n _OnigString._sharedPtrInUse = false;\n else\n this._onigBinding.ofree(this.ptr);\n }\n};\n__publicField(_OnigString, \"LAST_ID\", 0);\n__publicField(_OnigString, \"_sharedPtr\", 0);\n// a pointer to a string of 10000 bytes\n__publicField(_OnigString, \"_sharedPtrInUse\", false);\nlet OnigString = _OnigString;\nclass OnigScanner {\n constructor(patterns) {\n __publicField(this, \"_onigBinding\");\n __publicField(this, \"_ptr\");\n if (!onigBinding)\n throw new ShikiError(\"Must invoke loadWasm first.\");\n const strPtrsArr = [];\n const strLenArr = [];\n for (let i = 0, len = patterns.length; i < len; i++) {\n const utfString = new UtfString(patterns[i]);\n strPtrsArr[i] = utfString.createString(onigBinding);\n strLenArr[i] = utfString.utf8Length;\n }\n const strPtrsPtr = onigBinding.omalloc(4 * patterns.length);\n onigBinding.HEAPU32.set(strPtrsArr, strPtrsPtr / 4);\n const strLenPtr = onigBinding.omalloc(4 * patterns.length);\n onigBinding.HEAPU32.set(strLenArr, strLenPtr / 4);\n const scannerPtr = onigBinding.createOnigScanner(strPtrsPtr, strLenPtr, patterns.length);\n for (let i = 0, len = patterns.length; i < len; i++)\n onigBinding.ofree(strPtrsArr[i]);\n onigBinding.ofree(strLenPtr);\n onigBinding.ofree(strPtrsPtr);\n if (scannerPtr === 0)\n throwLastOnigError(onigBinding);\n this._onigBinding = onigBinding;\n this._ptr = scannerPtr;\n }\n dispose() {\n this._onigBinding.freeOnigScanner(this._ptr);\n }\n findNextMatchSync(string, startPosition, arg) {\n let options = 0 /* None */;\n if (typeof arg === \"number\") {\n options = arg;\n }\n if (typeof string === \"string\") {\n string = new OnigString(string);\n const result = this._findNextMatchSync(string, startPosition, false, options);\n string.dispose();\n return result;\n }\n return this._findNextMatchSync(string, startPosition, false, options);\n }\n _findNextMatchSync(string, startPosition, debugCall, options) {\n const onigBinding2 = this._onigBinding;\n const resultPtr = onigBinding2.findNextOnigScannerMatch(this._ptr, string.id, string.ptr, string.utf8Length, string.convertUtf16OffsetToUtf8(startPosition), options);\n if (resultPtr === 0) {\n return null;\n }\n const HEAPU32 = onigBinding2.HEAPU32;\n let offset = resultPtr / 4;\n const index = HEAPU32[offset++];\n const count = HEAPU32[offset++];\n const captureIndices = [];\n for (let i = 0; i < count; i++) {\n const beg = string.convertUtf8OffsetToUtf16(HEAPU32[offset++]);\n const end = string.convertUtf8OffsetToUtf16(HEAPU32[offset++]);\n captureIndices[i] = {\n start: beg,\n end,\n length: end - beg\n };\n }\n return {\n index,\n captureIndices\n };\n }\n}\nfunction isInstantiatorOptionsObject(dataOrOptions) {\n return typeof dataOrOptions.instantiator === \"function\";\n}\nfunction isInstantiatorModule(dataOrOptions) {\n return typeof dataOrOptions.default === \"function\";\n}\nfunction isDataOptionsObject(dataOrOptions) {\n return typeof dataOrOptions.data !== \"undefined\";\n}\nfunction isResponse(dataOrOptions) {\n return typeof Response !== \"undefined\" && dataOrOptions instanceof Response;\n}\nfunction isArrayBuffer(data) {\n return typeof ArrayBuffer !== \"undefined\" && (data instanceof ArrayBuffer || ArrayBuffer.isView(data)) || typeof Buffer !== \"undefined\" && Buffer.isBuffer?.(data) || typeof SharedArrayBuffer !== \"undefined\" && data instanceof SharedArrayBuffer || typeof Uint32Array !== \"undefined\" && data instanceof Uint32Array;\n}\nlet initPromise;\nfunction loadWasm(options) {\n if (initPromise)\n return initPromise;\n async function _load() {\n onigBinding = await main(async (info) => {\n let instance = options;\n instance = await instance;\n if (typeof instance === \"function\")\n instance = await instance(info);\n if (typeof instance === \"function\")\n instance = await instance(info);\n if (isInstantiatorOptionsObject(instance)) {\n instance = await instance.instantiator(info);\n } else if (isInstantiatorModule(instance)) {\n instance = await instance.default(info);\n } else {\n if (isDataOptionsObject(instance))\n instance = instance.data;\n if (isResponse(instance)) {\n if (typeof WebAssembly.instantiateStreaming === \"function\")\n instance = await _makeResponseStreamingLoader(instance)(info);\n else\n instance = await _makeResponseNonStreamingLoader(instance)(info);\n } else if (isArrayBuffer(instance)) {\n instance = await _makeArrayBufferLoader(instance)(info);\n } else if (instance instanceof WebAssembly.Module) {\n instance = await _makeArrayBufferLoader(instance)(info);\n } else if (\"default\" in instance && instance.default instanceof WebAssembly.Module) {\n instance = await _makeArrayBufferLoader(instance.default)(info);\n }\n }\n if (\"instance\" in instance)\n instance = instance.instance;\n if (\"exports\" in instance)\n instance = instance.exports;\n return instance;\n });\n }\n initPromise = _load();\n return initPromise;\n}\nfunction _makeArrayBufferLoader(data) {\n return (importObject) => WebAssembly.instantiate(data, importObject);\n}\nfunction _makeResponseStreamingLoader(data) {\n return (importObject) => WebAssembly.instantiateStreaming(data, importObject);\n}\nfunction _makeResponseNonStreamingLoader(data) {\n return async (importObject) => {\n const arrayBuffer = await data.arrayBuffer();\n return WebAssembly.instantiate(arrayBuffer, importObject);\n };\n}\n\nlet _defaultWasmLoader;\nfunction setDefaultWasmLoader(_loader) {\n _defaultWasmLoader = _loader;\n}\nfunction getDefaultWasmLoader() {\n return _defaultWasmLoader;\n}\nasync function createOnigurumaEngine(options) {\n if (options)\n await loadWasm(options);\n return {\n createScanner(patterns) {\n return new OnigScanner(patterns.map((p) => typeof p === \"string\" ? p : p.source));\n },\n createString(s) {\n return new OnigString(s);\n }\n };\n}\n\nexport { createOnigurumaEngine, getDefaultWasmLoader, loadWasm, setDefaultWasmLoader };\n","import { createSingletonShorthands, createBundledHighlighter, guessEmbeddedLanguages } from '@shikijs/core';\nexport * from '@shikijs/core';\nimport { bundledLanguages } from './langs.mjs';\nexport { bundledLanguagesAlias, bundledLanguagesBase, bundledLanguagesInfo } from './langs.mjs';\nimport { bundledThemes } from './themes.mjs';\nexport { bundledThemesInfo } from './themes.mjs';\nimport { createOnigurumaEngine } from '@shikijs/engine-oniguruma';\n\nconst createHighlighter = /* @__PURE__ */ createBundledHighlighter({\n langs: bundledLanguages,\n themes: bundledThemes,\n engine: () => createOnigurumaEngine(import('shiki/wasm'))\n});\nconst {\n codeToHtml,\n codeToHast,\n codeToTokens,\n codeToTokensBase,\n codeToTokensWithThemes,\n getSingletonHighlighter,\n getLastGrammarState\n} = /* @__PURE__ */ createSingletonShorthands(\n createHighlighter,\n { guessEmbeddedLanguages }\n);\n\nexport { bundledLanguages, bundledThemes, codeToHast, codeToHtml, codeToTokens, codeToTokensBase, codeToTokensWithThemes, createHighlighter, getLastGrammarState, getSingletonHighlighter };\n","/*! @license DOMPurify 3.3.1 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.3.1/LICENSE */\n\n'use strict';\n\nconst {\n entries,\n setPrototypeOf,\n isFrozen,\n getPrototypeOf,\n getOwnPropertyDescriptor\n} = Object;\nlet {\n freeze,\n seal,\n create\n} = Object; // eslint-disable-line import/no-mutable-exports\nlet {\n apply,\n construct\n} = typeof Reflect !== 'undefined' && Reflect;\nif (!freeze) {\n freeze = function freeze(x) {\n return x;\n };\n}\nif (!seal) {\n seal = function seal(x) {\n return x;\n };\n}\nif (!apply) {\n apply = function apply(func, thisArg) {\n for (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n args[_key - 2] = arguments[_key];\n }\n return func.apply(thisArg, args);\n };\n}\nif (!construct) {\n construct = function construct(Func) {\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n return new Func(...args);\n };\n}\nconst arrayForEach = unapply(Array.prototype.forEach);\nconst arrayLastIndexOf = unapply(Array.prototype.lastIndexOf);\nconst arrayPop = unapply(Array.prototype.pop);\nconst arrayPush = unapply(Array.prototype.push);\nconst arraySplice = unapply(Array.prototype.splice);\nconst stringToLowerCase = unapply(String.prototype.toLowerCase);\nconst stringToString = unapply(String.prototype.toString);\nconst stringMatch = unapply(String.prototype.match);\nconst stringReplace = unapply(String.prototype.replace);\nconst stringIndexOf = unapply(String.prototype.indexOf);\nconst stringTrim = unapply(String.prototype.trim);\nconst objectHasOwnProperty = unapply(Object.prototype.hasOwnProperty);\nconst regExpTest = unapply(RegExp.prototype.test);\nconst typeErrorCreate = unconstruct(TypeError);\n/**\n * Creates a new function that calls the given function with a specified thisArg and arguments.\n *\n * @param func - The function to be wrapped and called.\n * @returns A new function that calls the given function with a specified thisArg and arguments.\n */\nfunction unapply(func) {\n return function (thisArg) {\n if (thisArg instanceof RegExp) {\n thisArg.lastIndex = 0;\n }\n for (var _len3 = arguments.length, args = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {\n args[_key3 - 1] = arguments[_key3];\n }\n return apply(func, thisArg, args);\n };\n}\n/**\n * Creates a new function that constructs an instance of the given constructor function with the provided arguments.\n *\n * @param func - The constructor function to be wrapped and called.\n * @returns A new function that constructs an instance of the given constructor function with the provided arguments.\n */\nfunction unconstruct(Func) {\n return function () {\n for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n args[_key4] = arguments[_key4];\n }\n return construct(Func, args);\n };\n}\n/**\n * Add properties to a lookup table\n *\n * @param set - The set to which elements will be added.\n * @param array - The array containing elements to be added to the set.\n * @param transformCaseFunc - An optional function to transform the case of each element before adding to the set.\n * @returns The modified set with added elements.\n */\nfunction addToSet(set, array) {\n let transformCaseFunc = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : stringToLowerCase;\n if (setPrototypeOf) {\n // Make 'in' and truthy checks like Boolean(set.constructor)\n // independent of any properties defined on Object.prototype.\n // Prevent prototype setters from intercepting set as a this value.\n setPrototypeOf(set, null);\n }\n let l = array.length;\n while (l--) {\n let element = array[l];\n if (typeof element === 'string') {\n const lcElement = transformCaseFunc(element);\n if (lcElement !== element) {\n // Config presets (e.g. tags.js, attrs.js) are immutable.\n if (!isFrozen(array)) {\n array[l] = lcElement;\n }\n element = lcElement;\n }\n }\n set[element] = true;\n }\n return set;\n}\n/**\n * Clean up an array to harden against CSPP\n *\n * @param array - The array to be cleaned.\n * @returns The cleaned version of the array\n */\nfunction cleanArray(array) {\n for (let index = 0; index < array.length; index++) {\n const isPropertyExist = objectHasOwnProperty(array, index);\n if (!isPropertyExist) {\n array[index] = null;\n }\n }\n return array;\n}\n/**\n * Shallow clone an object\n *\n * @param object - The object to be cloned.\n * @returns A new object that copies the original.\n */\nfunction clone(object) {\n const newObject = create(null);\n for (const [property, value] of entries(object)) {\n const isPropertyExist = objectHasOwnProperty(object, property);\n if (isPropertyExist) {\n if (Array.isArray(value)) {\n newObject[property] = cleanArray(value);\n } else if (value && typeof value === 'object' && value.constructor === Object) {\n newObject[property] = clone(value);\n } else {\n newObject[property] = value;\n }\n }\n }\n return newObject;\n}\n/**\n * This method automatically checks if the prop is function or getter and behaves accordingly.\n *\n * @param object - The object to look up the getter function in its prototype chain.\n * @param prop - The property name for which to find the getter function.\n * @returns The getter function found in the prototype chain or a fallback function.\n */\nfunction lookupGetter(object, prop) {\n while (object !== null) {\n const desc = getOwnPropertyDescriptor(object, prop);\n if (desc) {\n if (desc.get) {\n return unapply(desc.get);\n }\n if (typeof desc.value === 'function') {\n return unapply(desc.value);\n }\n }\n object = getPrototypeOf(object);\n }\n function fallbackValue() {\n return null;\n }\n return fallbackValue;\n}\n\nconst html$1 = freeze(['a', 'abbr', 'acronym', 'address', 'area', 'article', 'aside', 'audio', 'b', 'bdi', 'bdo', 'big', 'blink', 'blockquote', 'body', 'br', 'button', 'canvas', 'caption', 'center', 'cite', 'code', 'col', 'colgroup', 'content', 'data', 'datalist', 'dd', 'decorator', 'del', 'details', 'dfn', 'dialog', 'dir', 'div', 'dl', 'dt', 'element', 'em', 'fieldset', 'figcaption', 'figure', 'font', 'footer', 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'header', 'hgroup', 'hr', 'html', 'i', 'img', 'input', 'ins', 'kbd', 'label', 'legend', 'li', 'main', 'map', 'mark', 'marquee', 'menu', 'menuitem', 'meter', 'nav', 'nobr', 'ol', 'optgroup', 'option', 'output', 'p', 'picture', 'pre', 'progress', 'q', 'rp', 'rt', 'ruby', 's', 'samp', 'search', 'section', 'select', 'shadow', 'slot', 'small', 'source', 'spacer', 'span', 'strike', 'strong', 'style', 'sub', 'summary', 'sup', 'table', 'tbody', 'td', 'template', 'textarea', 'tfoot', 'th', 'thead', 'time', 'tr', 'track', 'tt', 'u', 'ul', 'var', 'video', 'wbr']);\nconst svg$1 = freeze(['svg', 'a', 'altglyph', 'altglyphdef', 'altglyphitem', 'animatecolor', 'animatemotion', 'animatetransform', 'circle', 'clippath', 'defs', 'desc', 'ellipse', 'enterkeyhint', 'exportparts', 'filter', 'font', 'g', 'glyph', 'glyphref', 'hkern', 'image', 'inputmode', 'line', 'lineargradient', 'marker', 'mask', 'metadata', 'mpath', 'part', 'path', 'pattern', 'polygon', 'polyline', 'radialgradient', 'rect', 'stop', 'style', 'switch', 'symbol', 'text', 'textpath', 'title', 'tref', 'tspan', 'view', 'vkern']);\nconst svgFilters = freeze(['feBlend', 'feColorMatrix', 'feComponentTransfer', 'feComposite', 'feConvolveMatrix', 'feDiffuseLighting', 'feDisplacementMap', 'feDistantLight', 'feDropShadow', 'feFlood', 'feFuncA', 'feFuncB', 'feFuncG', 'feFuncR', 'feGaussianBlur', 'feImage', 'feMerge', 'feMergeNode', 'feMorphology', 'feOffset', 'fePointLight', 'feSpecularLighting', 'feSpotLight', 'feTile', 'feTurbulence']);\n// List of SVG elements that are disallowed by default.\n// We still need to know them so that we can do namespace\n// checks properly in case one wants to add them to\n// allow-list.\nconst svgDisallowed = freeze(['animate', 'color-profile', 'cursor', 'discard', 'font-face', 'font-face-format', 'font-face-name', 'font-face-src', 'font-face-uri', 'foreignobject', 'hatch', 'hatchpath', 'mesh', 'meshgradient', 'meshpatch', 'meshrow', 'missing-glyph', 'script', 'set', 'solidcolor', 'unknown', 'use']);\nconst mathMl$1 = freeze(['math', 'menclose', 'merror', 'mfenced', 'mfrac', 'mglyph', 'mi', 'mlabeledtr', 'mmultiscripts', 'mn', 'mo', 'mover', 'mpadded', 'mphantom', 'mroot', 'mrow', 'ms', 'mspace', 'msqrt', 'mstyle', 'msub', 'msup', 'msubsup', 'mtable', 'mtd', 'mtext', 'mtr', 'munder', 'munderover', 'mprescripts']);\n// Similarly to SVG, we want to know all MathML elements,\n// even those that we disallow by default.\nconst mathMlDisallowed = freeze(['maction', 'maligngroup', 'malignmark', 'mlongdiv', 'mscarries', 'mscarry', 'msgroup', 'mstack', 'msline', 'msrow', 'semantics', 'annotation', 'annotation-xml', 'mprescripts', 'none']);\nconst text = freeze(['#text']);\n\nconst html = freeze(['accept', 'action', 'align', 'alt', 'autocapitalize', 'autocomplete', 'autopictureinpicture', 'autoplay', 'background', 'bgcolor', 'border', 'capture', 'cellpadding', 'cellspacing', 'checked', 'cite', 'class', 'clear', 'color', 'cols', 'colspan', 'controls', 'controlslist', 'coords', 'crossorigin', 'datetime', 'decoding', 'default', 'dir', 'disabled', 'disablepictureinpicture', 'disableremoteplayback', 'download', 'draggable', 'enctype', 'enterkeyhint', 'exportparts', 'face', 'for', 'headers', 'height', 'hidden', 'high', 'href', 'hreflang', 'id', 'inert', 'inputmode', 'integrity', 'ismap', 'kind', 'label', 'lang', 'list', 'loading', 'loop', 'low', 'max', 'maxlength', 'media', 'method', 'min', 'minlength', 'multiple', 'muted', 'name', 'nonce', 'noshade', 'novalidate', 'nowrap', 'open', 'optimum', 'part', 'pattern', 'placeholder', 'playsinline', 'popover', 'popovertarget', 'popovertargetaction', 'poster', 'preload', 'pubdate', 'radiogroup', 'readonly', 'rel', 'required', 'rev', 'reversed', 'role', 'rows', 'rowspan', 'spellcheck', 'scope', 'selected', 'shape', 'size', 'sizes', 'slot', 'span', 'srclang', 'start', 'src', 'srcset', 'step', 'style', 'summary', 'tabindex', 'title', 'translate', 'type', 'usemap', 'valign', 'value', 'width', 'wrap', 'xmlns', 'slot']);\nconst svg = freeze(['accent-height', 'accumulate', 'additive', 'alignment-baseline', 'amplitude', 'ascent', 'attributename', 'attributetype', 'azimuth', 'basefrequency', 'baseline-shift', 'begin', 'bias', 'by', 'class', 'clip', 'clippathunits', 'clip-path', 'clip-rule', 'color', 'color-interpolation', 'color-interpolation-filters', 'color-profile', 'color-rendering', 'cx', 'cy', 'd', 'dx', 'dy', 'diffuseconstant', 'direction', 'display', 'divisor', 'dur', 'edgemode', 'elevation', 'end', 'exponent', 'fill', 'fill-opacity', 'fill-rule', 'filter', 'filterunits', 'flood-color', 'flood-opacity', 'font-family', 'font-size', 'font-size-adjust', 'font-stretch', 'font-style', 'font-variant', 'font-weight', 'fx', 'fy', 'g1', 'g2', 'glyph-name', 'glyphref', 'gradientunits', 'gradienttransform', 'height', 'href', 'id', 'image-rendering', 'in', 'in2', 'intercept', 'k', 'k1', 'k2', 'k3', 'k4', 'kerning', 'keypoints', 'keysplines', 'keytimes', 'lang', 'lengthadjust', 'letter-spacing', 'kernelmatrix', 'kernelunitlength', 'lighting-color', 'local', 'marker-end', 'marker-mid', 'marker-start', 'markerheight', 'markerunits', 'markerwidth', 'maskcontentunits', 'maskunits', 'max', 'mask', 'mask-type', 'media', 'method', 'mode', 'min', 'name', 'numoctaves', 'offset', 'operator', 'opacity', 'order', 'orient', 'orientation', 'origin', 'overflow', 'paint-order', 'path', 'pathlength', 'patterncontentunits', 'patterntransform', 'patternunits', 'points', 'preservealpha', 'preserveaspectratio', 'primitiveunits', 'r', 'rx', 'ry', 'radius', 'refx', 'refy', 'repeatcount', 'repeatdur', 'restart', 'result', 'rotate', 'scale', 'seed', 'shape-rendering', 'slope', 'specularconstant', 'specularexponent', 'spreadmethod', 'startoffset', 'stddeviation', 'stitchtiles', 'stop-color', 'stop-opacity', 'stroke-dasharray', 'stroke-dashoffset', 'stroke-linecap', 'stroke-linejoin', 'stroke-miterlimit', 'stroke-opacity', 'stroke', 'stroke-width', 'style', 'surfacescale', 'systemlanguage', 'tabindex', 'tablevalues', 'targetx', 'targety', 'transform', 'transform-origin', 'text-anchor', 'text-decoration', 'text-rendering', 'textlength', 'type', 'u1', 'u2', 'unicode', 'values', 'viewbox', 'visibility', 'version', 'vert-adv-y', 'vert-origin-x', 'vert-origin-y', 'width', 'word-spacing', 'wrap', 'writing-mode', 'xchannelselector', 'ychannelselector', 'x', 'x1', 'x2', 'xmlns', 'y', 'y1', 'y2', 'z', 'zoomandpan']);\nconst mathMl = freeze(['accent', 'accentunder', 'align', 'bevelled', 'close', 'columnsalign', 'columnlines', 'columnspan', 'denomalign', 'depth', 'dir', 'display', 'displaystyle', 'encoding', 'fence', 'frame', 'height', 'href', 'id', 'largeop', 'length', 'linethickness', 'lspace', 'lquote', 'mathbackground', 'mathcolor', 'mathsize', 'mathvariant', 'maxsize', 'minsize', 'movablelimits', 'notation', 'numalign', 'open', 'rowalign', 'rowlines', 'rowspacing', 'rowspan', 'rspace', 'rquote', 'scriptlevel', 'scriptminsize', 'scriptsizemultiplier', 'selection', 'separator', 'separators', 'stretchy', 'subscriptshift', 'supscriptshift', 'symmetric', 'voffset', 'width', 'xmlns']);\nconst xml = freeze(['xlink:href', 'xml:id', 'xlink:title', 'xml:space', 'xmlns:xlink']);\n\n// eslint-disable-next-line unicorn/better-regex\nconst MUSTACHE_EXPR = seal(/\\{\\{[\\w\\W]*|[\\w\\W]*\\}\\}/gm); // Specify template detection regex for SAFE_FOR_TEMPLATES mode\nconst ERB_EXPR = seal(/<%[\\w\\W]*|[\\w\\W]*%>/gm);\nconst TMPLIT_EXPR = seal(/\\$\\{[\\w\\W]*/gm); // eslint-disable-line unicorn/better-regex\nconst DATA_ATTR = seal(/^data-[\\-\\w.\\u00B7-\\uFFFF]+$/); // eslint-disable-line no-useless-escape\nconst ARIA_ATTR = seal(/^aria-[\\-\\w]+$/); // eslint-disable-line no-useless-escape\nconst IS_ALLOWED_URI = seal(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp|matrix):|[^a-z]|[a-z+.\\-]+(?:[^a-z+.\\-:]|$))/i // eslint-disable-line no-useless-escape\n);\nconst IS_SCRIPT_OR_DATA = seal(/^(?:\\w+script|data):/i);\nconst ATTR_WHITESPACE = seal(/[\\u0000-\\u0020\\u00A0\\u1680\\u180E\\u2000-\\u2029\\u205F\\u3000]/g // eslint-disable-line no-control-regex\n);\nconst DOCTYPE_NAME = seal(/^html$/i);\nconst CUSTOM_ELEMENT = seal(/^[a-z][.\\w]*(-[.\\w]+)+$/i);\n\nvar EXPRESSIONS = /*#__PURE__*/Object.freeze({\n __proto__: null,\n ARIA_ATTR: ARIA_ATTR,\n ATTR_WHITESPACE: ATTR_WHITESPACE,\n CUSTOM_ELEMENT: CUSTOM_ELEMENT,\n DATA_ATTR: DATA_ATTR,\n DOCTYPE_NAME: DOCTYPE_NAME,\n ERB_EXPR: ERB_EXPR,\n IS_ALLOWED_URI: IS_ALLOWED_URI,\n IS_SCRIPT_OR_DATA: IS_SCRIPT_OR_DATA,\n MUSTACHE_EXPR: MUSTACHE_EXPR,\n TMPLIT_EXPR: TMPLIT_EXPR\n});\n\n/* eslint-disable @typescript-eslint/indent */\n// https://developer.mozilla.org/en-US/docs/Web/API/Node/nodeType\nconst NODE_TYPE = {\n element: 1,\n attribute: 2,\n text: 3,\n cdataSection: 4,\n entityReference: 5,\n // Deprecated\n entityNode: 6,\n // Deprecated\n progressingInstruction: 7,\n comment: 8,\n document: 9,\n documentType: 10,\n documentFragment: 11,\n notation: 12 // Deprecated\n};\nconst getGlobal = function getGlobal() {\n return typeof window === 'undefined' ? null : window;\n};\n/**\n * Creates a no-op policy for internal use only.\n * Don't export this function outside this module!\n * @param trustedTypes The policy factory.\n * @param purifyHostElement The Script element used to load DOMPurify (to determine policy name suffix).\n * @return The policy created (or null, if Trusted Types\n * are not supported or creating the policy failed).\n */\nconst _createTrustedTypesPolicy = function _createTrustedTypesPolicy(trustedTypes, purifyHostElement) {\n if (typeof trustedTypes !== 'object' || typeof trustedTypes.createPolicy !== 'function') {\n return null;\n }\n // Allow the callers to control the unique policy name\n // by adding a data-tt-policy-suffix to the script element with the DOMPurify.\n // Policy creation with duplicate names throws in Trusted Types.\n let suffix = null;\n const ATTR_NAME = 'data-tt-policy-suffix';\n if (purifyHostElement && purifyHostElement.hasAttribute(ATTR_NAME)) {\n suffix = purifyHostElement.getAttribute(ATTR_NAME);\n }\n const policyName = 'dompurify' + (suffix ? '#' + suffix : '');\n try {\n return trustedTypes.createPolicy(policyName, {\n createHTML(html) {\n return html;\n },\n createScriptURL(scriptUrl) {\n return scriptUrl;\n }\n });\n } catch (_) {\n // Policy creation failed (most likely another DOMPurify script has\n // already run). Skip creating the policy, as this will only cause errors\n // if TT are enforced.\n console.warn('TrustedTypes policy ' + policyName + ' could not be created.');\n return null;\n }\n};\nconst _createHooksMap = function _createHooksMap() {\n return {\n afterSanitizeAttributes: [],\n afterSanitizeElements: [],\n afterSanitizeShadowDOM: [],\n beforeSanitizeAttributes: [],\n beforeSanitizeElements: [],\n beforeSanitizeShadowDOM: [],\n uponSanitizeAttribute: [],\n uponSanitizeElement: [],\n uponSanitizeShadowNode: []\n };\n};\nfunction createDOMPurify() {\n let window = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : getGlobal();\n const DOMPurify = root => createDOMPurify(root);\n DOMPurify.version = '3.3.1';\n DOMPurify.removed = [];\n if (!window || !window.document || window.document.nodeType !== NODE_TYPE.document || !window.Element) {\n // Not running in a browser, provide a factory function\n // so that you can pass your own Window\n DOMPurify.isSupported = false;\n return DOMPurify;\n }\n let {\n document\n } = window;\n const originalDocument = document;\n const currentScript = originalDocument.currentScript;\n const {\n DocumentFragment,\n HTMLTemplateElement,\n Node,\n Element,\n NodeFilter,\n NamedNodeMap = window.NamedNodeMap || window.MozNamedAttrMap,\n HTMLFormElement,\n DOMParser,\n trustedTypes\n } = window;\n const ElementPrototype = Element.prototype;\n const cloneNode = lookupGetter(ElementPrototype, 'cloneNode');\n const remove = lookupGetter(ElementPrototype, 'remove');\n const getNextSibling = lookupGetter(ElementPrototype, 'nextSibling');\n const getChildNodes = lookupGetter(ElementPrototype, 'childNodes');\n const getParentNode = lookupGetter(ElementPrototype, 'parentNode');\n // As per issue #47, the web-components registry is inherited by a\n // new document created via createHTMLDocument. As per the spec\n // (http://w3c.github.io/webcomponents/spec/custom/#creating-and-passing-registries)\n // a new empty registry is used when creating a template contents owner\n // document, so we use that as our parent document to ensure nothing\n // is inherited.\n if (typeof HTMLTemplateElement === 'function') {\n const template = document.createElement('template');\n if (template.content && template.content.ownerDocument) {\n document = template.content.ownerDocument;\n }\n }\n let trustedTypesPolicy;\n let emptyHTML = '';\n const {\n implementation,\n createNodeIterator,\n createDocumentFragment,\n getElementsByTagName\n } = document;\n const {\n importNode\n } = originalDocument;\n let hooks = _createHooksMap();\n /**\n * Expose whether this browser supports running the full DOMPurify.\n */\n DOMPurify.isSupported = typeof entries === 'function' && typeof getParentNode === 'function' && implementation && implementation.createHTMLDocument !== undefined;\n const {\n MUSTACHE_EXPR,\n ERB_EXPR,\n TMPLIT_EXPR,\n DATA_ATTR,\n ARIA_ATTR,\n IS_SCRIPT_OR_DATA,\n ATTR_WHITESPACE,\n CUSTOM_ELEMENT\n } = EXPRESSIONS;\n let {\n IS_ALLOWED_URI: IS_ALLOWED_URI$1\n } = EXPRESSIONS;\n /**\n * We consider the elements and attributes below to be safe. Ideally\n * don't add any new ones but feel free to remove unwanted ones.\n */\n /* allowed element names */\n let ALLOWED_TAGS = null;\n const DEFAULT_ALLOWED_TAGS = addToSet({}, [...html$1, ...svg$1, ...svgFilters, ...mathMl$1, ...text]);\n /* Allowed attribute names */\n let ALLOWED_ATTR = null;\n const DEFAULT_ALLOWED_ATTR = addToSet({}, [...html, ...svg, ...mathMl, ...xml]);\n /*\n * Configure how DOMPurify should handle custom elements and their attributes as well as customized built-in elements.\n * @property {RegExp|Function|null} tagNameCheck one of [null, regexPattern, predicate]. Default: `null` (disallow any custom elements)\n * @property {RegExp|Function|null} attributeNameCheck one of [null, regexPattern, predicate]. Default: `null` (disallow any attributes not on the allow list)\n * @property {boolean} allowCustomizedBuiltInElements allow custom elements derived from built-ins if they pass CUSTOM_ELEMENT_HANDLING.tagNameCheck. Default: `false`.\n */\n let CUSTOM_ELEMENT_HANDLING = Object.seal(create(null, {\n tagNameCheck: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: null\n },\n attributeNameCheck: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: null\n },\n allowCustomizedBuiltInElements: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: false\n }\n }));\n /* Explicitly forbidden tags (overrides ALLOWED_TAGS/ADD_TAGS) */\n let FORBID_TAGS = null;\n /* Explicitly forbidden attributes (overrides ALLOWED_ATTR/ADD_ATTR) */\n let FORBID_ATTR = null;\n /* Config object to store ADD_TAGS/ADD_ATTR functions (when used as functions) */\n const EXTRA_ELEMENT_HANDLING = Object.seal(create(null, {\n tagCheck: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: null\n },\n attributeCheck: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: null\n }\n }));\n /* Decide if ARIA attributes are okay */\n let ALLOW_ARIA_ATTR = true;\n /* Decide if custom data attributes are okay */\n let ALLOW_DATA_ATTR = true;\n /* Decide if unknown protocols are okay */\n let ALLOW_UNKNOWN_PROTOCOLS = false;\n /* Decide if self-closing tags in attributes are allowed.\n * Usually removed due to a mXSS issue in jQuery 3.0 */\n let ALLOW_SELF_CLOSE_IN_ATTR = true;\n /* Output should be safe for common template engines.\n * This means, DOMPurify removes data attributes, mustaches and ERB\n */\n let SAFE_FOR_TEMPLATES = false;\n /* Output should be safe even for XML used within HTML and alike.\n * This means, DOMPurify removes comments when containing risky content.\n */\n let SAFE_FOR_XML = true;\n /* Decide if document with <html>... should be returned */\n let WHOLE_DOCUMENT = false;\n /* Track whether config is already set on this instance of DOMPurify. */\n let SET_CONFIG = false;\n /* Decide if all elements (e.g. style, script) must be children of\n * document.body. By default, browsers might move them to document.head */\n let FORCE_BODY = false;\n /* Decide if a DOM `HTMLBodyElement` should be returned, instead of a html\n * string (or a TrustedHTML object if Trusted Types are supported).\n * If `WHOLE_DOCUMENT` is enabled a `HTMLHtmlElement` will be returned instead\n */\n let RETURN_DOM = false;\n /* Decide if a DOM `DocumentFragment` should be returned, instead of a html\n * string (or a TrustedHTML object if Trusted Types are supported) */\n let RETURN_DOM_FRAGMENT = false;\n /* Try to return a Trusted Type object instead of a string, return a string in\n * case Trusted Types are not supported */\n let RETURN_TRUSTED_TYPE = false;\n /* Output should be free from DOM clobbering attacks?\n * This sanitizes markups named with colliding, clobberable built-in DOM APIs.\n */\n let SANITIZE_DOM = true;\n /* Achieve full DOM Clobbering protection by isolating the namespace of named\n * properties and JS variables, mitigating attacks that abuse the HTML/DOM spec rules.\n *\n * HTML/DOM spec rules that enable DOM Clobbering:\n * - Named Access on Window (§7.3.3)\n * - DOM Tree Accessors (§3.1.5)\n * - Form Element Parent-Child Relations (§4.10.3)\n * - Iframe srcdoc / Nested WindowProxies (§4.8.5)\n * - HTMLCollection (§4.2.10.2)\n *\n * Namespace isolation is implemented by prefixing `id` and `name` attributes\n * with a constant string, i.e., `user-content-`\n */\n let SANITIZE_NAMED_PROPS = false;\n const SANITIZE_NAMED_PROPS_PREFIX = 'user-content-';\n /* Keep element content when removing element? */\n let KEEP_CONTENT = true;\n /* If a `Node` is passed to sanitize(), then performs sanitization in-place instead\n * of importing it into a new Document and returning a sanitized copy */\n let IN_PLACE = false;\n /* Allow usage of profiles like html, svg and mathMl */\n let USE_PROFILES = {};\n /* Tags to ignore content of when KEEP_CONTENT is true */\n let FORBID_CONTENTS = null;\n const DEFAULT_FORBID_CONTENTS = addToSet({}, ['annotation-xml', 'audio', 'colgroup', 'desc', 'foreignobject', 'head', 'iframe', 'math', 'mi', 'mn', 'mo', 'ms', 'mtext', 'noembed', 'noframes', 'noscript', 'plaintext', 'script', 'style', 'svg', 'template', 'thead', 'title', 'video', 'xmp']);\n /* Tags that are safe for data: URIs */\n let DATA_URI_TAGS = null;\n const DEFAULT_DATA_URI_TAGS = addToSet({}, ['audio', 'video', 'img', 'source', 'image', 'track']);\n /* Attributes safe for values like \"javascript:\" */\n let URI_SAFE_ATTRIBUTES = null;\n const DEFAULT_URI_SAFE_ATTRIBUTES = addToSet({}, ['alt', 'class', 'for', 'id', 'label', 'name', 'pattern', 'placeholder', 'role', 'summary', 'title', 'value', 'style', 'xmlns']);\n const MATHML_NAMESPACE = 'http://www.w3.org/1998/Math/MathML';\n const SVG_NAMESPACE = 'http://www.w3.org/2000/svg';\n const HTML_NAMESPACE = 'http://www.w3.org/1999/xhtml';\n /* Document namespace */\n let NAMESPACE = HTML_NAMESPACE;\n let IS_EMPTY_INPUT = false;\n /* Allowed XHTML+XML namespaces */\n let ALLOWED_NAMESPACES = null;\n const DEFAULT_ALLOWED_NAMESPACES = addToSet({}, [MATHML_NAMESPACE, SVG_NAMESPACE, HTML_NAMESPACE], stringToString);\n let MATHML_TEXT_INTEGRATION_POINTS = addToSet({}, ['mi', 'mo', 'mn', 'ms', 'mtext']);\n let HTML_INTEGRATION_POINTS = addToSet({}, ['annotation-xml']);\n // Certain elements are allowed in both SVG and HTML\n // namespace. We need to specify them explicitly\n // so that they don't get erroneously deleted from\n // HTML namespace.\n const COMMON_SVG_AND_HTML_ELEMENTS = addToSet({}, ['title', 'style', 'font', 'a', 'script']);\n /* Parsing of strict XHTML documents */\n let PARSER_MEDIA_TYPE = null;\n const SUPPORTED_PARSER_MEDIA_TYPES = ['application/xhtml+xml', 'text/html'];\n const DEFAULT_PARSER_MEDIA_TYPE = 'text/html';\n let transformCaseFunc = null;\n /* Keep a reference to config to pass to hooks */\n let CONFIG = null;\n /* Ideally, do not touch anything below this line */\n /* ______________________________________________ */\n const formElement = document.createElement('form');\n const isRegexOrFunction = function isRegexOrFunction(testValue) {\n return testValue instanceof RegExp || testValue instanceof Function;\n };\n /**\n * _parseConfig\n *\n * @param cfg optional config literal\n */\n // eslint-disable-next-line complexity\n const _parseConfig = function _parseConfig() {\n let cfg = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n if (CONFIG && CONFIG === cfg) {\n return;\n }\n /* Shield configuration object from tampering */\n if (!cfg || typeof cfg !== 'object') {\n cfg = {};\n }\n /* Shield configuration object from prototype pollution */\n cfg = clone(cfg);\n PARSER_MEDIA_TYPE =\n // eslint-disable-next-line unicorn/prefer-includes\n SUPPORTED_PARSER_MEDIA_TYPES.indexOf(cfg.PARSER_MEDIA_TYPE) === -1 ? DEFAULT_PARSER_MEDIA_TYPE : cfg.PARSER_MEDIA_TYPE;\n // HTML tags and attributes are not case-sensitive, converting to lowercase. Keeping XHTML as is.\n transformCaseFunc = PARSER_MEDIA_TYPE === 'application/xhtml+xml' ? stringToString : stringToLowerCase;\n /* Set configuration parameters */\n ALLOWED_TAGS = objectHasOwnProperty(cfg, 'ALLOWED_TAGS') ? addToSet({}, cfg.ALLOWED_TAGS, transformCaseFunc) : DEFAULT_ALLOWED_TAGS;\n ALLOWED_ATTR = objectHasOwnProperty(cfg, 'ALLOWED_ATTR') ? addToSet({}, cfg.ALLOWED_ATTR, transformCaseFunc) : DEFAULT_ALLOWED_ATTR;\n ALLOWED_NAMESPACES = objectHasOwnProperty(cfg, 'ALLOWED_NAMESPACES') ? addToSet({}, cfg.ALLOWED_NAMESPACES, stringToString) : DEFAULT_ALLOWED_NAMESPACES;\n URI_SAFE_ATTRIBUTES = objectHasOwnProperty(cfg, 'ADD_URI_SAFE_ATTR') ? addToSet(clone(DEFAULT_URI_SAFE_ATTRIBUTES), cfg.ADD_URI_SAFE_ATTR, transformCaseFunc) : DEFAULT_URI_SAFE_ATTRIBUTES;\n DATA_URI_TAGS = objectHasOwnProperty(cfg, 'ADD_DATA_URI_TAGS') ? addToSet(clone(DEFAULT_DATA_URI_TAGS), cfg.ADD_DATA_URI_TAGS, transformCaseFunc) : DEFAULT_DATA_URI_TAGS;\n FORBID_CONTENTS = objectHasOwnProperty(cfg, 'FORBID_CONTENTS') ? addToSet({}, cfg.FORBID_CONTENTS, transformCaseFunc) : DEFAULT_FORBID_CONTENTS;\n FORBID_TAGS = objectHasOwnProperty(cfg, 'FORBID_TAGS') ? addToSet({}, cfg.FORBID_TAGS, transformCaseFunc) : clone({});\n FORBID_ATTR = objectHasOwnProperty(cfg, 'FORBID_ATTR') ? addToSet({}, cfg.FORBID_ATTR, transformCaseFunc) : clone({});\n USE_PROFILES = objectHasOwnProperty(cfg, 'USE_PROFILES') ? cfg.USE_PROFILES : false;\n ALLOW_ARIA_ATTR = cfg.ALLOW_ARIA_ATTR !== false; // Default true\n ALLOW_DATA_ATTR = cfg.ALLOW_DATA_ATTR !== false; // Default true\n ALLOW_UNKNOWN_PROTOCOLS = cfg.ALLOW_UNKNOWN_PROTOCOLS || false; // Default false\n ALLOW_SELF_CLOSE_IN_ATTR = cfg.ALLOW_SELF_CLOSE_IN_ATTR !== false; // Default true\n SAFE_FOR_TEMPLATES = cfg.SAFE_FOR_TEMPLATES || false; // Default false\n SAFE_FOR_XML = cfg.SAFE_FOR_XML !== false; // Default true\n WHOLE_DOCUMENT = cfg.WHOLE_DOCUMENT || false; // Default false\n RETURN_DOM = cfg.RETURN_DOM || false; // Default false\n RETURN_DOM_FRAGMENT = cfg.RETURN_DOM_FRAGMENT || false; // Default false\n RETURN_TRUSTED_TYPE = cfg.RETURN_TRUSTED_TYPE || false; // Default false\n FORCE_BODY = cfg.FORCE_BODY || false; // Default false\n SANITIZE_DOM = cfg.SANITIZE_DOM !== false; // Default true\n SANITIZE_NAMED_PROPS = cfg.SANITIZE_NAMED_PROPS || false; // Default false\n KEEP_CONTENT = cfg.KEEP_CONTENT !== false; // Default true\n IN_PLACE = cfg.IN_PLACE || false; // Default false\n IS_ALLOWED_URI$1 = cfg.ALLOWED_URI_REGEXP || IS_ALLOWED_URI;\n NAMESPACE = cfg.NAMESPACE || HTML_NAMESPACE;\n MATHML_TEXT_INTEGRATION_POINTS = cfg.MATHML_TEXT_INTEGRATION_POINTS || MATHML_TEXT_INTEGRATION_POINTS;\n HTML_INTEGRATION_POINTS = cfg.HTML_INTEGRATION_POINTS || HTML_INTEGRATION_POINTS;\n CUSTOM_ELEMENT_HANDLING = cfg.CUSTOM_ELEMENT_HANDLING || {};\n if (cfg.CUSTOM_ELEMENT_HANDLING && isRegexOrFunction(cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck)) {\n CUSTOM_ELEMENT_HANDLING.tagNameCheck = cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck;\n }\n if (cfg.CUSTOM_ELEMENT_HANDLING && isRegexOrFunction(cfg.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)) {\n CUSTOM_ELEMENT_HANDLING.attributeNameCheck = cfg.CUSTOM_ELEMENT_HANDLING.attributeNameCheck;\n }\n if (cfg.CUSTOM_ELEMENT_HANDLING && typeof cfg.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements === 'boolean') {\n CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements = cfg.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements;\n }\n if (SAFE_FOR_TEMPLATES) {\n ALLOW_DATA_ATTR = false;\n }\n if (RETURN_DOM_FRAGMENT) {\n RETURN_DOM = true;\n }\n /* Parse profile info */\n if (USE_PROFILES) {\n ALLOWED_TAGS = addToSet({}, text);\n ALLOWED_ATTR = [];\n if (USE_PROFILES.html === true) {\n addToSet(ALLOWED_TAGS, html$1);\n addToSet(ALLOWED_ATTR, html);\n }\n if (USE_PROFILES.svg === true) {\n addToSet(ALLOWED_TAGS, svg$1);\n addToSet(ALLOWED_ATTR, svg);\n addToSet(ALLOWED_ATTR, xml);\n }\n if (USE_PROFILES.svgFilters === true) {\n addToSet(ALLOWED_TAGS, svgFilters);\n addToSet(ALLOWED_ATTR, svg);\n addToSet(ALLOWED_ATTR, xml);\n }\n if (USE_PROFILES.mathMl === true) {\n addToSet(ALLOWED_TAGS, mathMl$1);\n addToSet(ALLOWED_ATTR, mathMl);\n addToSet(ALLOWED_ATTR, xml);\n }\n }\n /* Merge configuration parameters */\n if (cfg.ADD_TAGS) {\n if (typeof cfg.ADD_TAGS === 'function') {\n EXTRA_ELEMENT_HANDLING.tagCheck = cfg.ADD_TAGS;\n } else {\n if (ALLOWED_TAGS === DEFAULT_ALLOWED_TAGS) {\n ALLOWED_TAGS = clone(ALLOWED_TAGS);\n }\n addToSet(ALLOWED_TAGS, cfg.ADD_TAGS, transformCaseFunc);\n }\n }\n if (cfg.ADD_ATTR) {\n if (typeof cfg.ADD_ATTR === 'function') {\n EXTRA_ELEMENT_HANDLING.attributeCheck = cfg.ADD_ATTR;\n } else {\n if (ALLOWED_ATTR === DEFAULT_ALLOWED_ATTR) {\n ALLOWED_ATTR = clone(ALLOWED_ATTR);\n }\n addToSet(ALLOWED_ATTR, cfg.ADD_ATTR, transformCaseFunc);\n }\n }\n if (cfg.ADD_URI_SAFE_ATTR) {\n addToSet(URI_SAFE_ATTRIBUTES, cfg.ADD_URI_SAFE_ATTR, transformCaseFunc);\n }\n if (cfg.FORBID_CONTENTS) {\n if (FORBID_CONTENTS === DEFAULT_FORBID_CONTENTS) {\n FORBID_CONTENTS = clone(FORBID_CONTENTS);\n }\n addToSet(FORBID_CONTENTS, cfg.FORBID_CONTENTS, transformCaseFunc);\n }\n if (cfg.ADD_FORBID_CONTENTS) {\n if (FORBID_CONTENTS === DEFAULT_FORBID_CONTENTS) {\n FORBID_CONTENTS = clone(FORBID_CONTENTS);\n }\n addToSet(FORBID_CONTENTS, cfg.ADD_FORBID_CONTENTS, transformCaseFunc);\n }\n /* Add #text in case KEEP_CONTENT is set to true */\n if (KEEP_CONTENT) {\n ALLOWED_TAGS['#text'] = true;\n }\n /* Add html, head and body to ALLOWED_TAGS in case WHOLE_DOCUMENT is true */\n if (WHOLE_DOCUMENT) {\n addToSet(ALLOWED_TAGS, ['html', 'head', 'body']);\n }\n /* Add tbody to ALLOWED_TAGS in case tables are permitted, see #286, #365 */\n if (ALLOWED_TAGS.table) {\n addToSet(ALLOWED_TAGS, ['tbody']);\n delete FORBID_TAGS.tbody;\n }\n if (cfg.TRUSTED_TYPES_POLICY) {\n if (typeof cfg.TRUSTED_TYPES_POLICY.createHTML !== 'function') {\n throw typeErrorCreate('TRUSTED_TYPES_POLICY configuration option must provide a \"createHTML\" hook.');\n }\n if (typeof cfg.TRUSTED_TYPES_POLICY.createScriptURL !== 'function') {\n throw typeErrorCreate('TRUSTED_TYPES_POLICY configuration option must provide a \"createScriptURL\" hook.');\n }\n // Overwrite existing TrustedTypes policy.\n trustedTypesPolicy = cfg.TRUSTED_TYPES_POLICY;\n // Sign local variables required by `sanitize`.\n emptyHTML = trustedTypesPolicy.createHTML('');\n } else {\n // Uninitialized policy, attempt to initialize the internal dompurify policy.\n if (trustedTypesPolicy === undefined) {\n trustedTypesPolicy = _createTrustedTypesPolicy(trustedTypes, currentScript);\n }\n // If creating the internal policy succeeded sign internal variables.\n if (trustedTypesPolicy !== null && typeof emptyHTML === 'string') {\n emptyHTML = trustedTypesPolicy.createHTML('');\n }\n }\n // Prevent further manipulation of configuration.\n // Not available in IE8, Safari 5, etc.\n if (freeze) {\n freeze(cfg);\n }\n CONFIG = cfg;\n };\n /* Keep track of all possible SVG and MathML tags\n * so that we can perform the namespace checks\n * correctly. */\n const ALL_SVG_TAGS = addToSet({}, [...svg$1, ...svgFilters, ...svgDisallowed]);\n const ALL_MATHML_TAGS = addToSet({}, [...mathMl$1, ...mathMlDisallowed]);\n /**\n * @param element a DOM element whose namespace is being checked\n * @returns Return false if the element has a\n * namespace that a spec-compliant parser would never\n * return. Return true otherwise.\n */\n const _checkValidNamespace = function _checkValidNamespace(element) {\n let parent = getParentNode(element);\n // In JSDOM, if we're inside shadow DOM, then parentNode\n // can be null. We just simulate parent in this case.\n if (!parent || !parent.tagName) {\n parent = {\n namespaceURI: NAMESPACE,\n tagName: 'template'\n };\n }\n const tagName = stringToLowerCase(element.tagName);\n const parentTagName = stringToLowerCase(parent.tagName);\n if (!ALLOWED_NAMESPACES[element.namespaceURI]) {\n return false;\n }\n if (element.namespaceURI === SVG_NAMESPACE) {\n // The only way to switch from HTML namespace to SVG\n // is via <svg>. If it happens via any other tag, then\n // it should be killed.\n if (parent.namespaceURI === HTML_NAMESPACE) {\n return tagName === 'svg';\n }\n // The only way to switch from MathML to SVG is via`\n // svg if parent is either <annotation-xml> or MathML\n // text integration points.\n if (parent.namespaceURI === MATHML_NAMESPACE) {\n return tagName === 'svg' && (parentTagName === 'annotation-xml' || MATHML_TEXT_INTEGRATION_POINTS[parentTagName]);\n }\n // We only allow elements that are defined in SVG\n // spec. All others are disallowed in SVG namespace.\n return Boolean(ALL_SVG_TAGS[tagName]);\n }\n if (element.namespaceURI === MATHML_NAMESPACE) {\n // The only way to switch from HTML namespace to MathML\n // is via <math>. If it happens via any other tag, then\n // it should be killed.\n if (parent.namespaceURI === HTML_NAMESPACE) {\n return tagName === 'math';\n }\n // The only way to switch from SVG to MathML is via\n // <math> and HTML integration points\n if (parent.namespaceURI === SVG_NAMESPACE) {\n return tagName === 'math' && HTML_INTEGRATION_POINTS[parentTagName];\n }\n // We only allow elements that are defined in MathML\n // spec. All others are disallowed in MathML namespace.\n return Boolean(ALL_MATHML_TAGS[tagName]);\n }\n if (element.namespaceURI === HTML_NAMESPACE) {\n // The only way to switch from SVG to HTML is via\n // HTML integration points, and from MathML to HTML\n // is via MathML text integration points\n if (parent.namespaceURI === SVG_NAMESPACE && !HTML_INTEGRATION_POINTS[parentTagName]) {\n return false;\n }\n if (parent.namespaceURI === MATHML_NAMESPACE && !MATHML_TEXT_INTEGRATION_POINTS[parentTagName]) {\n return false;\n }\n // We disallow tags that are specific for MathML\n // or SVG and should never appear in HTML namespace\n return !ALL_MATHML_TAGS[tagName] && (COMMON_SVG_AND_HTML_ELEMENTS[tagName] || !ALL_SVG_TAGS[tagName]);\n }\n // For XHTML and XML documents that support custom namespaces\n if (PARSER_MEDIA_TYPE === 'application/xhtml+xml' && ALLOWED_NAMESPACES[element.namespaceURI]) {\n return true;\n }\n // The code should never reach this place (this means\n // that the element somehow got namespace that is not\n // HTML, SVG, MathML or allowed via ALLOWED_NAMESPACES).\n // Return false just in case.\n return false;\n };\n /**\n * _forceRemove\n *\n * @param node a DOM node\n */\n const _forceRemove = function _forceRemove(node) {\n arrayPush(DOMPurify.removed, {\n element: node\n });\n try {\n // eslint-disable-next-line unicorn/prefer-dom-node-remove\n getParentNode(node).removeChild(node);\n } catch (_) {\n remove(node);\n }\n };\n /**\n * _removeAttribute\n *\n * @param name an Attribute name\n * @param element a DOM node\n */\n const _removeAttribute = function _removeAttribute(name, element) {\n try {\n arrayPush(DOMPurify.removed, {\n attribute: element.getAttributeNode(name),\n from: element\n });\n } catch (_) {\n arrayPush(DOMPurify.removed, {\n attribute: null,\n from: element\n });\n }\n element.removeAttribute(name);\n // We void attribute values for unremovable \"is\" attributes\n if (name === 'is') {\n if (RETURN_DOM || RETURN_DOM_FRAGMENT) {\n try {\n _forceRemove(element);\n } catch (_) {}\n } else {\n try {\n element.setAttribute(name, '');\n } catch (_) {}\n }\n }\n };\n /**\n * _initDocument\n *\n * @param dirty - a string of dirty markup\n * @return a DOM, filled with the dirty markup\n */\n const _initDocument = function _initDocument(dirty) {\n /* Create a HTML document */\n let doc = null;\n let leadingWhitespace = null;\n if (FORCE_BODY) {\n dirty = '<remove></remove>' + dirty;\n } else {\n /* If FORCE_BODY isn't used, leading whitespace needs to be preserved manually */\n const matches = stringMatch(dirty, /^[\\r\\n\\t ]+/);\n leadingWhitespace = matches && matches[0];\n }\n if (PARSER_MEDIA_TYPE === 'application/xhtml+xml' && NAMESPACE === HTML_NAMESPACE) {\n // Root of XHTML doc must contain xmlns declaration (see https://www.w3.org/TR/xhtml1/normative.html#strict)\n dirty = '<html xmlns=\"http://www.w3.org/1999/xhtml\"><head></head><body>' + dirty + '</body></html>';\n }\n const dirtyPayload = trustedTypesPolicy ? trustedTypesPolicy.createHTML(dirty) : dirty;\n /*\n * Use the DOMParser API by default, fallback later if needs be\n * DOMParser not work for svg when has multiple root element.\n */\n if (NAMESPACE === HTML_NAMESPACE) {\n try {\n doc = new DOMParser().parseFromString(dirtyPayload, PARSER_MEDIA_TYPE);\n } catch (_) {}\n }\n /* Use createHTMLDocument in case DOMParser is not available */\n if (!doc || !doc.documentElement) {\n doc = implementation.createDocument(NAMESPACE, 'template', null);\n try {\n doc.documentElement.innerHTML = IS_EMPTY_INPUT ? emptyHTML : dirtyPayload;\n } catch (_) {\n // Syntax error if dirtyPayload is invalid xml\n }\n }\n const body = doc.body || doc.documentElement;\n if (dirty && leadingWhitespace) {\n body.insertBefore(document.createTextNode(leadingWhitespace), body.childNodes[0] || null);\n }\n /* Work on whole document or just its body */\n if (NAMESPACE === HTML_NAMESPACE) {\n return getElementsByTagName.call(doc, WHOLE_DOCUMENT ? 'html' : 'body')[0];\n }\n return WHOLE_DOCUMENT ? doc.documentElement : body;\n };\n /**\n * Creates a NodeIterator object that you can use to traverse filtered lists of nodes or elements in a document.\n *\n * @param root The root element or node to start traversing on.\n * @return The created NodeIterator\n */\n const _createNodeIterator = function _createNodeIterator(root) {\n return createNodeIterator.call(root.ownerDocument || root, root,\n // eslint-disable-next-line no-bitwise\n NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_COMMENT | NodeFilter.SHOW_TEXT | NodeFilter.SHOW_PROCESSING_INSTRUCTION | NodeFilter.SHOW_CDATA_SECTION, null);\n };\n /**\n * _isClobbered\n *\n * @param element element to check for clobbering attacks\n * @return true if clobbered, false if safe\n */\n const _isClobbered = function _isClobbered(element) {\n return element instanceof HTMLFormElement && (typeof element.nodeName !== 'string' || typeof element.textContent !== 'string' || typeof element.removeChild !== 'function' || !(element.attributes instanceof NamedNodeMap) || typeof element.removeAttribute !== 'function' || typeof element.setAttribute !== 'function' || typeof element.namespaceURI !== 'string' || typeof element.insertBefore !== 'function' || typeof element.hasChildNodes !== 'function');\n };\n /**\n * Checks whether the given object is a DOM node.\n *\n * @param value object to check whether it's a DOM node\n * @return true is object is a DOM node\n */\n const _isNode = function _isNode(value) {\n return typeof Node === 'function' && value instanceof Node;\n };\n function _executeHooks(hooks, currentNode, data) {\n arrayForEach(hooks, hook => {\n hook.call(DOMPurify, currentNode, data, CONFIG);\n });\n }\n /**\n * _sanitizeElements\n *\n * @protect nodeName\n * @protect textContent\n * @protect removeChild\n * @param currentNode to check for permission to exist\n * @return true if node was killed, false if left alive\n */\n const _sanitizeElements = function _sanitizeElements(currentNode) {\n let content = null;\n /* Execute a hook if present */\n _executeHooks(hooks.beforeSanitizeElements, currentNode, null);\n /* Check if element is clobbered or can clobber */\n if (_isClobbered(currentNode)) {\n _forceRemove(currentNode);\n return true;\n }\n /* Now let's check the element's type and name */\n const tagName = transformCaseFunc(currentNode.nodeName);\n /* Execute a hook if present */\n _executeHooks(hooks.uponSanitizeElement, currentNode, {\n tagName,\n allowedTags: ALLOWED_TAGS\n });\n /* Detect mXSS attempts abusing namespace confusion */\n if (SAFE_FOR_XML && currentNode.hasChildNodes() && !_isNode(currentNode.firstElementChild) && regExpTest(/<[/\\w!]/g, currentNode.innerHTML) && regExpTest(/<[/\\w!]/g, currentNode.textContent)) {\n _forceRemove(currentNode);\n return true;\n }\n /* Remove any occurrence of processing instructions */\n if (currentNode.nodeType === NODE_TYPE.progressingInstruction) {\n _forceRemove(currentNode);\n return true;\n }\n /* Remove any kind of possibly harmful comments */\n if (SAFE_FOR_XML && currentNode.nodeType === NODE_TYPE.comment && regExpTest(/<[/\\w]/g, currentNode.data)) {\n _forceRemove(currentNode);\n return true;\n }\n /* Remove element if anything forbids its presence */\n if (!(EXTRA_ELEMENT_HANDLING.tagCheck instanceof Function && EXTRA_ELEMENT_HANDLING.tagCheck(tagName)) && (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName])) {\n /* Check if we have a custom element to handle */\n if (!FORBID_TAGS[tagName] && _isBasicCustomElement(tagName)) {\n if (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, tagName)) {\n return false;\n }\n if (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(tagName)) {\n return false;\n }\n }\n /* Keep content except for bad-listed elements */\n if (KEEP_CONTENT && !FORBID_CONTENTS[tagName]) {\n const parentNode = getParentNode(currentNode) || currentNode.parentNode;\n const childNodes = getChildNodes(currentNode) || currentNode.childNodes;\n if (childNodes && parentNode) {\n const childCount = childNodes.length;\n for (let i = childCount - 1; i >= 0; --i) {\n const childClone = cloneNode(childNodes[i], true);\n childClone.__removalCount = (currentNode.__removalCount || 0) + 1;\n parentNode.insertBefore(childClone, getNextSibling(currentNode));\n }\n }\n }\n _forceRemove(currentNode);\n return true;\n }\n /* Check whether element has a valid namespace */\n if (currentNode instanceof Element && !_checkValidNamespace(currentNode)) {\n _forceRemove(currentNode);\n return true;\n }\n /* Make sure that older browsers don't get fallback-tag mXSS */\n if ((tagName === 'noscript' || tagName === 'noembed' || tagName === 'noframes') && regExpTest(/<\\/no(script|embed|frames)/i, currentNode.innerHTML)) {\n _forceRemove(currentNode);\n return true;\n }\n /* Sanitize element content to be template-safe */\n if (SAFE_FOR_TEMPLATES && currentNode.nodeType === NODE_TYPE.text) {\n /* Get the element's text content */\n content = currentNode.textContent;\n arrayForEach([MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR], expr => {\n content = stringReplace(content, expr, ' ');\n });\n if (currentNode.textContent !== content) {\n arrayPush(DOMPurify.removed, {\n element: currentNode.cloneNode()\n });\n currentNode.textContent = content;\n }\n }\n /* Execute a hook if present */\n _executeHooks(hooks.afterSanitizeElements, currentNode, null);\n return false;\n };\n /**\n * _isValidAttribute\n *\n * @param lcTag Lowercase tag name of containing element.\n * @param lcName Lowercase attribute name.\n * @param value Attribute value.\n * @return Returns true if `value` is valid, otherwise false.\n */\n // eslint-disable-next-line complexity\n const _isValidAttribute = function _isValidAttribute(lcTag, lcName, value) {\n /* Make sure attribute cannot clobber */\n if (SANITIZE_DOM && (lcName === 'id' || lcName === 'name') && (value in document || value in formElement)) {\n return false;\n }\n /* Allow valid data-* attributes: At least one character after \"-\"\n (https://html.spec.whatwg.org/multipage/dom.html#embedding-custom-non-visible-data-with-the-data-*-attributes)\n XML-compatible (https://html.spec.whatwg.org/multipage/infrastructure.html#xml-compatible and http://www.w3.org/TR/xml/#d0e804)\n We don't need to check the value; it's always URI safe. */\n if (ALLOW_DATA_ATTR && !FORBID_ATTR[lcName] && regExpTest(DATA_ATTR, lcName)) ; else if (ALLOW_ARIA_ATTR && regExpTest(ARIA_ATTR, lcName)) ; else if (EXTRA_ELEMENT_HANDLING.attributeCheck instanceof Function && EXTRA_ELEMENT_HANDLING.attributeCheck(lcName, lcTag)) ; else if (!ALLOWED_ATTR[lcName] || FORBID_ATTR[lcName]) {\n if (\n // First condition does a very basic check if a) it's basically a valid custom element tagname AND\n // b) if the tagName passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.tagNameCheck\n // and c) if the attribute name passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.attributeNameCheck\n _isBasicCustomElement(lcTag) && (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, lcTag) || CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(lcTag)) && (CUSTOM_ELEMENT_HANDLING.attributeNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.attributeNameCheck, lcName) || CUSTOM_ELEMENT_HANDLING.attributeNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.attributeNameCheck(lcName, lcTag)) ||\n // Alternative, second condition checks if it's an `is`-attribute, AND\n // the value passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.tagNameCheck\n lcName === 'is' && CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements && (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, value) || CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(value))) ; else {\n return false;\n }\n /* Check value is safe. First, is attr inert? If so, is safe */\n } else if (URI_SAFE_ATTRIBUTES[lcName]) ; else if (regExpTest(IS_ALLOWED_URI$1, stringReplace(value, ATTR_WHITESPACE, ''))) ; else if ((lcName === 'src' || lcName === 'xlink:href' || lcName === 'href') && lcTag !== 'script' && stringIndexOf(value, 'data:') === 0 && DATA_URI_TAGS[lcTag]) ; else if (ALLOW_UNKNOWN_PROTOCOLS && !regExpTest(IS_SCRIPT_OR_DATA, stringReplace(value, ATTR_WHITESPACE, ''))) ; else if (value) {\n return false;\n } else ;\n return true;\n };\n /**\n * _isBasicCustomElement\n * checks if at least one dash is included in tagName, and it's not the first char\n * for more sophisticated checking see https://github.com/sindresorhus/validate-element-name\n *\n * @param tagName name of the tag of the node to sanitize\n * @returns Returns true if the tag name meets the basic criteria for a custom element, otherwise false.\n */\n const _isBasicCustomElement = function _isBasicCustomElement(tagName) {\n return tagName !== 'annotation-xml' && stringMatch(tagName, CUSTOM_ELEMENT);\n };\n /**\n * _sanitizeAttributes\n *\n * @protect attributes\n * @protect nodeName\n * @protect removeAttribute\n * @protect setAttribute\n *\n * @param currentNode to sanitize\n */\n const _sanitizeAttributes = function _sanitizeAttributes(currentNode) {\n /* Execute a hook if present */\n _executeHooks(hooks.beforeSanitizeAttributes, currentNode, null);\n const {\n attributes\n } = currentNode;\n /* Check if we have attributes; if not we might have a text node */\n if (!attributes || _isClobbered(currentNode)) {\n return;\n }\n const hookEvent = {\n attrName: '',\n attrValue: '',\n keepAttr: true,\n allowedAttributes: ALLOWED_ATTR,\n forceKeepAttr: undefined\n };\n let l = attributes.length;\n /* Go backwards over all attributes; safely remove bad ones */\n while (l--) {\n const attr = attributes[l];\n const {\n name,\n namespaceURI,\n value: attrValue\n } = attr;\n const lcName = transformCaseFunc(name);\n const initValue = attrValue;\n let value = name === 'value' ? initValue : stringTrim(initValue);\n /* Execute a hook if present */\n hookEvent.attrName = lcName;\n hookEvent.attrValue = value;\n hookEvent.keepAttr = true;\n hookEvent.forceKeepAttr = undefined; // Allows developers to see this is a property they can set\n _executeHooks(hooks.uponSanitizeAttribute, currentNode, hookEvent);\n value = hookEvent.attrValue;\n /* Full DOM Clobbering protection via namespace isolation,\n * Prefix id and name attributes with `user-content-`\n */\n if (SANITIZE_NAMED_PROPS && (lcName === 'id' || lcName === 'name')) {\n // Remove the attribute with this value\n _removeAttribute(name, currentNode);\n // Prefix the value and later re-create the attribute with the sanitized value\n value = SANITIZE_NAMED_PROPS_PREFIX + value;\n }\n /* Work around a security issue with comments inside attributes */\n if (SAFE_FOR_XML && regExpTest(/((--!?|])>)|<\\/(style|title|textarea)/i, value)) {\n _removeAttribute(name, currentNode);\n continue;\n }\n /* Make sure we cannot easily use animated hrefs, even if animations are allowed */\n if (lcName === 'attributename' && stringMatch(value, 'href')) {\n _removeAttribute(name, currentNode);\n continue;\n }\n /* Did the hooks approve of the attribute? */\n if (hookEvent.forceKeepAttr) {\n continue;\n }\n /* Did the hooks approve of the attribute? */\n if (!hookEvent.keepAttr) {\n _removeAttribute(name, currentNode);\n continue;\n }\n /* Work around a security issue in jQuery 3.0 */\n if (!ALLOW_SELF_CLOSE_IN_ATTR && regExpTest(/\\/>/i, value)) {\n _removeAttribute(name, currentNode);\n continue;\n }\n /* Sanitize attribute content to be template-safe */\n if (SAFE_FOR_TEMPLATES) {\n arrayForEach([MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR], expr => {\n value = stringReplace(value, expr, ' ');\n });\n }\n /* Is `value` valid for this attribute? */\n const lcTag = transformCaseFunc(currentNode.nodeName);\n if (!_isValidAttribute(lcTag, lcName, value)) {\n _removeAttribute(name, currentNode);\n continue;\n }\n /* Handle attributes that require Trusted Types */\n if (trustedTypesPolicy && typeof trustedTypes === 'object' && typeof trustedTypes.getAttributeType === 'function') {\n if (namespaceURI) ; else {\n switch (trustedTypes.getAttributeType(lcTag, lcName)) {\n case 'TrustedHTML':\n {\n value = trustedTypesPolicy.createHTML(value);\n break;\n }\n case 'TrustedScriptURL':\n {\n value = trustedTypesPolicy.createScriptURL(value);\n break;\n }\n }\n }\n }\n /* Handle invalid data-* attribute set by try-catching it */\n if (value !== initValue) {\n try {\n if (namespaceURI) {\n currentNode.setAttributeNS(namespaceURI, name, value);\n } else {\n /* Fallback to setAttribute() for browser-unrecognized namespaces e.g. \"x-schema\". */\n currentNode.setAttribute(name, value);\n }\n if (_isClobbered(currentNode)) {\n _forceRemove(currentNode);\n } else {\n arrayPop(DOMPurify.removed);\n }\n } catch (_) {\n _removeAttribute(name, currentNode);\n }\n }\n }\n /* Execute a hook if present */\n _executeHooks(hooks.afterSanitizeAttributes, currentNode, null);\n };\n /**\n * _sanitizeShadowDOM\n *\n * @param fragment to iterate over recursively\n */\n const _sanitizeShadowDOM = function _sanitizeShadowDOM(fragment) {\n let shadowNode = null;\n const shadowIterator = _createNodeIterator(fragment);\n /* Execute a hook if present */\n _executeHooks(hooks.beforeSanitizeShadowDOM, fragment, null);\n while (shadowNode = shadowIterator.nextNode()) {\n /* Execute a hook if present */\n _executeHooks(hooks.uponSanitizeShadowNode, shadowNode, null);\n /* Sanitize tags and elements */\n _sanitizeElements(shadowNode);\n /* Check attributes next */\n _sanitizeAttributes(shadowNode);\n /* Deep shadow DOM detected */\n if (shadowNode.content instanceof DocumentFragment) {\n _sanitizeShadowDOM(shadowNode.content);\n }\n }\n /* Execute a hook if present */\n _executeHooks(hooks.afterSanitizeShadowDOM, fragment, null);\n };\n // eslint-disable-next-line complexity\n DOMPurify.sanitize = function (dirty) {\n let cfg = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n let body = null;\n let importedNode = null;\n let currentNode = null;\n let returnNode = null;\n /* Make sure we have a string to sanitize.\n DO NOT return early, as this will return the wrong type if\n the user has requested a DOM object rather than a string */\n IS_EMPTY_INPUT = !dirty;\n if (IS_EMPTY_INPUT) {\n dirty = '<!-->';\n }\n /* Stringify, in case dirty is an object */\n if (typeof dirty !== 'string' && !_isNode(dirty)) {\n if (typeof dirty.toString === 'function') {\n dirty = dirty.toString();\n if (typeof dirty !== 'string') {\n throw typeErrorCreate('dirty is not a string, aborting');\n }\n } else {\n throw typeErrorCreate('toString is not a function');\n }\n }\n /* Return dirty HTML if DOMPurify cannot run */\n if (!DOMPurify.isSupported) {\n return dirty;\n }\n /* Assign config vars */\n if (!SET_CONFIG) {\n _parseConfig(cfg);\n }\n /* Clean up removed elements */\n DOMPurify.removed = [];\n /* Check if dirty is correctly typed for IN_PLACE */\n if (typeof dirty === 'string') {\n IN_PLACE = false;\n }\n if (IN_PLACE) {\n /* Do some early pre-sanitization to avoid unsafe root nodes */\n if (dirty.nodeName) {\n const tagName = transformCaseFunc(dirty.nodeName);\n if (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName]) {\n throw typeErrorCreate('root node is forbidden and cannot be sanitized in-place');\n }\n }\n } else if (dirty instanceof Node) {\n /* If dirty is a DOM element, append to an empty document to avoid\n elements being stripped by the parser */\n body = _initDocument('<!---->');\n importedNode = body.ownerDocument.importNode(dirty, true);\n if (importedNode.nodeType === NODE_TYPE.element && importedNode.nodeName === 'BODY') {\n /* Node is already a body, use as is */\n body = importedNode;\n } else if (importedNode.nodeName === 'HTML') {\n body = importedNode;\n } else {\n // eslint-disable-next-line unicorn/prefer-dom-node-append\n body.appendChild(importedNode);\n }\n } else {\n /* Exit directly if we have nothing to do */\n if (!RETURN_DOM && !SAFE_FOR_TEMPLATES && !WHOLE_DOCUMENT &&\n // eslint-disable-next-line unicorn/prefer-includes\n dirty.indexOf('<') === -1) {\n return trustedTypesPolicy && RETURN_TRUSTED_TYPE ? trustedTypesPolicy.createHTML(dirty) : dirty;\n }\n /* Initialize the document to work on */\n body = _initDocument(dirty);\n /* Check we have a DOM node from the data */\n if (!body) {\n return RETURN_DOM ? null : RETURN_TRUSTED_TYPE ? emptyHTML : '';\n }\n }\n /* Remove first element node (ours) if FORCE_BODY is set */\n if (body && FORCE_BODY) {\n _forceRemove(body.firstChild);\n }\n /* Get node iterator */\n const nodeIterator = _createNodeIterator(IN_PLACE ? dirty : body);\n /* Now start iterating over the created document */\n while (currentNode = nodeIterator.nextNode()) {\n /* Sanitize tags and elements */\n _sanitizeElements(currentNode);\n /* Check attributes next */\n _sanitizeAttributes(currentNode);\n /* Shadow DOM detected, sanitize it */\n if (currentNode.content instanceof DocumentFragment) {\n _sanitizeShadowDOM(currentNode.content);\n }\n }\n /* If we sanitized `dirty` in-place, return it. */\n if (IN_PLACE) {\n return dirty;\n }\n /* Return sanitized string or DOM */\n if (RETURN_DOM) {\n if (RETURN_DOM_FRAGMENT) {\n returnNode = createDocumentFragment.call(body.ownerDocument);\n while (body.firstChild) {\n // eslint-disable-next-line unicorn/prefer-dom-node-append\n returnNode.appendChild(body.firstChild);\n }\n } else {\n returnNode = body;\n }\n if (ALLOWED_ATTR.shadowroot || ALLOWED_ATTR.shadowrootmode) {\n /*\n AdoptNode() is not used because internal state is not reset\n (e.g. the past names map of a HTMLFormElement), this is safe\n in theory but we would rather not risk another attack vector.\n The state that is cloned by importNode() is explicitly defined\n by the specs.\n */\n returnNode = importNode.call(originalDocument, returnNode, true);\n }\n return returnNode;\n }\n let serializedHTML = WHOLE_DOCUMENT ? body.outerHTML : body.innerHTML;\n /* Serialize doctype if allowed */\n if (WHOLE_DOCUMENT && ALLOWED_TAGS['!doctype'] && body.ownerDocument && body.ownerDocument.doctype && body.ownerDocument.doctype.name && regExpTest(DOCTYPE_NAME, body.ownerDocument.doctype.name)) {\n serializedHTML = '<!DOCTYPE ' + body.ownerDocument.doctype.name + '>\\n' + serializedHTML;\n }\n /* Sanitize final string template-safe */\n if (SAFE_FOR_TEMPLATES) {\n arrayForEach([MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR], expr => {\n serializedHTML = stringReplace(serializedHTML, expr, ' ');\n });\n }\n return trustedTypesPolicy && RETURN_TRUSTED_TYPE ? trustedTypesPolicy.createHTML(serializedHTML) : serializedHTML;\n };\n DOMPurify.setConfig = function () {\n let cfg = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n _parseConfig(cfg);\n SET_CONFIG = true;\n };\n DOMPurify.clearConfig = function () {\n CONFIG = null;\n SET_CONFIG = false;\n };\n DOMPurify.isValidAttribute = function (tag, attr, value) {\n /* Initialize shared config vars if necessary. */\n if (!CONFIG) {\n _parseConfig({});\n }\n const lcTag = transformCaseFunc(tag);\n const lcName = transformCaseFunc(attr);\n return _isValidAttribute(lcTag, lcName, value);\n };\n DOMPurify.addHook = function (entryPoint, hookFunction) {\n if (typeof hookFunction !== 'function') {\n return;\n }\n arrayPush(hooks[entryPoint], hookFunction);\n };\n DOMPurify.removeHook = function (entryPoint, hookFunction) {\n if (hookFunction !== undefined) {\n const index = arrayLastIndexOf(hooks[entryPoint], hookFunction);\n return index === -1 ? undefined : arraySplice(hooks[entryPoint], index, 1)[0];\n }\n return arrayPop(hooks[entryPoint]);\n };\n DOMPurify.removeHooks = function (entryPoint) {\n hooks[entryPoint] = [];\n };\n DOMPurify.removeAllHooks = function () {\n hooks = _createHooksMap();\n };\n return DOMPurify;\n}\nvar purify = createDOMPurify();\n\nmodule.exports = purify;\n//# sourceMappingURL=purify.cjs.js.map\n","module.exports = self.DOMPurify || (self.DOMPurify = require('dompurify').default || require('dompurify'));\n","\"use client\";\n\nimport {Button} from \"@clubmed/usg-chat-ui/molecules/Buttons/Button\";\nimport {cn} from \"@clubmed/usg-chat-ui/utils/cn\";\nimport type {Element} from \"hast\";\nimport {CheckIcon, CopyIcon} from \"lucide-react\";\nimport {type ComponentProps, createContext, type HTMLAttributes, useContext, useEffect, useRef, useState,} from \"react\";\nimport {type BundledLanguage, codeToHtml, type ShikiTransformer} from \"shiki\";\nimport DOMPurify from \"isomorphic-dompurify\";\n\ntype CodeBlockProps = HTMLAttributes<HTMLDivElement> & {\n code: string;\n language: BundledLanguage;\n showLineNumbers?: boolean;\n};\n\ntype CodeBlockContextType = {\n code: string;\n};\n\nconst CodeBlockContext = createContext<CodeBlockContextType>({\n code: \"\",\n});\n\nconst lineNumberTransformer: ShikiTransformer = {\n name: \"line-numbers\",\n line(node: Element, line: number) {\n node.children.unshift({\n type: \"element\",\n tagName: \"span\",\n properties: {\n className: [\n \"inline-block\",\n \"min-w-10\",\n \"mr-4\",\n \"text-right\",\n \"select-none\",\n \"text-muted-foreground\",\n ],\n },\n children: [{type: \"text\", value: String(line)}],\n });\n },\n};\n\nexport async function highlightCode(\n code: string,\n language: BundledLanguage,\n showLineNumbers = false\n) {\n const transformers: ShikiTransformer[] = showLineNumbers\n ? [lineNumberTransformer]\n : [];\n\n const [lightHtml, darkHtml] = await Promise.all([\n codeToHtml(code, {\n lang: language,\n theme: \"one-light\",\n transformers,\n }),\n codeToHtml(code, {\n lang: language,\n theme: \"one-dark-pro\",\n transformers,\n }),\n ]);\n\n // Sanitize HTML to prevent XSS and React2Shell attacks\n // We use a strict configuration that only allows safe HTML tags\n const sanitizeConfig = {\n ALLOWED_TAGS: ['pre', 'code', 'span', 'div'],\n ALLOWED_ATTR: ['class', 'style', 'data-line'],\n FORBID_TAGS: ['script', 'iframe', 'object', 'embed', 'link'],\n FORBID_ATTR: ['onerror', 'onload', 'onclick', 'onmouseover'],\n };\n\n return [\n DOMPurify.sanitize(lightHtml, sanitizeConfig),\n DOMPurify.sanitize(darkHtml, sanitizeConfig)\n ];\n}\n\nexport const CodeBlock = ({\n code,\n language,\n showLineNumbers = false,\n className,\n children,\n ...props\n }: CodeBlockProps) => {\n const [html, setHtml] = useState<string>(\"\");\n const [darkHtml, setDarkHtml] = useState<string>(\"\");\n const mounted = useRef(false);\n\n useEffect(() => {\n mounted.current = true;\n highlightCode(code, language, showLineNumbers).then(([light, dark]) => {\n if (mounted.current) {\n setHtml(light);\n setDarkHtml(dark);\n }\n });\n\n return () => {\n mounted.current = false;\n };\n }, [code, language, showLineNumbers]);\n\n return (\n <CodeBlockContext.Provider value={{code}}>\n <div\n className={cn(\n \"group relative w-full overflow-hidden rounded-xl border\",\n className\n )}\n {...props}\n >\n {/* Header with language name */}\n <div className=\"flex items-center justify-between bg-muted/80 p-3 text-muted-foreground text-xs\"\n data-code-block-header=\"true\" data-language={language.toLowerCase()}>\n <span className=\"ml-1 font-mono lowercase\">{language}</span>\n {children && (\n <div className=\"flex items-center gap-2\">\n {children}\n </div>\n )}\n </div>\n\n {/* Code content */}\n <div className=\"w-full\">\n <div className=\"min-w-full\">\n {html ? (\n <>\n <div className=\"dark:hidden overflow-x-auto border-t language-{language.toLowerCase()}\"\n data-code-block=\"true\" data-language={language.toLowerCase()}>\n <pre className=\"overflow-x-auto font-mono text-xs p-4 bg-muted/40\"\n style={{backgroundColor: \"var(--card)\", color: \"var(--foreground)\"}} tabIndex={0}\n dangerouslySetInnerHTML={{__html: html}}\n />\n </div>\n <div className=\"hidden dark:block overflow-x-auto border-t language-{language.toLowerCase()}\"\n data-code-block=\"true\" data-language={language.toLowerCase()}>\n <pre className=\"overflow-x-auto font-mono text-xs p-4 bg-muted/40\"\n style={{backgroundColor: \"var(--background)\", color: \"var(--foreground)\"}} tabIndex={0}\n dangerouslySetInnerHTML={{__html: darkHtml}}\n />\n </div>\n </>\n ) : (\n <div className=\"overflow-x-auto border-t\">\n <pre className=\"overflow-x-auto font-mono text-xs p-4 bg-muted/40\"\n style={{backgroundColor: \"var(--card)\", color: \"var(--foreground)\"}} tabIndex={0}>\n {code}\n </pre>\n </div>\n )}\n </div>\n </div>\n </div>\n </CodeBlockContext.Provider>\n );\n};\n\nexport type CodeBlockCopyButtonProps = ComponentProps<typeof Button> & {\n onCopy?: () => void;\n onError?: (error: Error) => void;\n timeout?: number;\n};\n\nexport const CodeBlockCopyButton = ({\n onCopy,\n onError,\n timeout = 2000,\n children,\n className,\n ...props\n }: CodeBlockCopyButtonProps) => {\n const [isCopied, setIsCopied] = useState(false);\n const {code} = useContext(CodeBlockContext);\n\n const copyToClipboard = async () => {\n if (typeof window === \"undefined\" || !navigator?.clipboard?.writeText) {\n onError?.(new Error(\"Clipboard API not available\"));\n return;\n }\n\n try {\n await navigator.clipboard.writeText(code);\n setIsCopied(true);\n onCopy?.();\n setTimeout(() => setIsCopied(false), timeout);\n } catch (error) {\n onError?.(error as Error);\n }\n };\n\n const Icon = isCopied ? CheckIcon : CopyIcon;\n\n return (\n <button\n className={cn(\"cursor-pointer p-1 text-muted-foreground transition-all hover:text-foreground disabled:cursor-not-allowed disabled:opacity-50\", className)}\n onClick={copyToClipboard}\n title=\"Copy code\"\n type=\"button\"\n {...props}\n >\n {children ?? <Icon size={14}/>}\n </button>\n );\n};\n"],"names":["message","clone","something","doClone","cloneArray","cloneObj","arr","r","i","len","obj","key","mergeObjects","target","sources","source","basename","path","idx","CAPTURING_REGEX_SOURCE","RegexSource","regexSource","captureSource","captureIndices","match","index","commandIndex","command","capture","result","strcmp","a","b","strArrCmp","len1","len2","res","isValidHexColor","hex","escapeRegExpCharacters","value","CachedFn","fn","__publicField","Theme","_colorMap","_defaults","_root","scopeName","colorMap","parseTheme","resolveParsedThemeRules","scopePath","effectiveRule","v","_scopePathMatchesParentScopes","StyleAttributes","ScopeStack","_ScopeStack","parent","scopeNames","name","segments","item","other","base","parentScopes","scopePattern","scopeMustMatch","_matchesScope","fontStyle","foregroundId","backgroundId","settings","resultLen","entry","scopes","_scope","j","lenJ","foreground","background","scope","ParsedThemeRule","FontStyle","FontStyle2","parsedThemeRules","defaultFontStyle","defaultForeground","defaultBackground","incomingDefaults","ColorMap","defaults","root","ThemeTrieElement","ThemeTrieElementRule","rule","color","emptyParentScopes","_ThemeTrieElementRule","scopeDepth","_ThemeTrieElement","_mainRule","rulesWithParentScopes","_children","aParentIndex","bParentIndex","parentScopeLengthDiff","dotIndex","head","tail","rules","child","EncodedTokenMetadata","_EncodedTokenMetadata","encodedTokenAttributes","languageId","tokenType","containsBalancedBrackets","_languageId","_tokenType","_containsBalancedBracketsBit","_fontStyle","_foreground","_background","createMatchers","selector","matchesName","results","tokenizer","newTokenizer","token","priority","matcher","parseConjunction","parseOperand","expressionToNegate","matcherInput","expressionInParents","parseInnerExpression","isIdentifier","identifiers","matchers","matcher2","input","regex","disposeOnigString","str","TopLevelRuleReference","TopLevelRepositoryRuleReference","ruleName","ExternalReferenceCollector","reference","ScopeDependencyProcessor","repo","initialScopeName","q","deps","dep","collectReferencesOfReference","baseGrammarScopeName","selfGrammar","baseGrammar","collectExternalReferencesInTopLevelRule","collectExternalReferencesInTopLevelRepositoryRule","injections","injection","context","collectExternalReferencesInRules","patternRepository","include","parseInclude","newContext","BaseReference","SelfReference","RelativeReference","TopLevelReference","TopLevelRepositoryReference","indexOfSharp","HAS_BACK_REFERENCES","BACK_REFERENCING_END","endRuleId","whileRuleId","Rule","$location","id","contentName","location","lineText","CaptureRule","retokenizeCapturedWithRuleId","grammar","out","endRegexSource","allowA","allowG","MatchRule","captures","RegExpSource","RegExpSourceList","IncludeOnlyRule","patterns","pattern","BeginEndRule","begin","beginCaptures","end","endCaptures","applyEndPatternLast","BeginWhileRule","_while","whileCaptures","RuleFactory","_RuleFactory","helper","desc","repository","maximumCaptureId","captureId","numericCaptureId","ruleId","localIncludedRule","externalGrammarName","externalGrammarInclude","externalGrammar","externalIncludedRule","skipRule","_RegExpSource","regExpSource","lastPushedPos","output","hasAnchor","pos","nextCh","newSource","capturedValues","g1","A0_G0_result","A0_G1_result","A1_G0_result","A1_G1_result","ch","onigLib","regExps","e","CompiledRule","string","startPosition","options","BasicScopeAttributes","BasicScopeAttributesProvider","_a","initialLanguageId","embeddedLanguages","standardTokenType","ScopeMatcher","m","values","escapedScopes","TokenizeStringResult","stack","stoppedEarly","_tokenizeString","isFirstLine","linePos","lineTokens","checkWhileConditions","timeLimit","lineLength","STOP","anchorPosition","whileCheckResult","_checkWhileConditions","startTime","scanNext","matchRuleOrInjections","matchedRuleId","hasAdvanced","poppedRule","handleCaptures","popped","_rule","beforePush","nameScopesList","pushedRule","contentNameScopesList","whileRules","node","nodeRule","whileRule","ruleScanner","findOptions","prepareRuleWhileSearch","matchResult","matchRule","injectionResult","matchInjections","matchResultScore","injectionResultScore","prepareRuleSearch","bestMatchRating","bestMatchCaptureIndices","bestMatchRuleId","bestMatchResultPriority","matchRating","lineTextContent","localStack","maxEnd","captureRule","captureIndex","stackClone","onigSubStr","captureRuleScopeName","captureRuleScopesList","LocalStackElement","endPos","createGrammar","initialLanguage","tokenTypes","balancedBracketSelectors","grammarRepository","Grammar","collectInjections","ruleFactoryHelper","nameMatcher","identifers","lastIndex","identifier","scopesAreMatching","thisScopeName","_rootScopeName","_onigLib","initGrammar","scopeName2","rawInjections","expression","injectionScopeNames","injectionScopeName","injectionGrammar","i1","i2","factory","rawIncludedGrammar","prevState","emitBinaryTokens","StateStackImpl","rawDefaultMetadata","defaultStyle","defaultMetadata","rootScopeName","scopeList","AttributedScopeStack","onigLineText","LineTokens","_AttributedScopeStack","tokenAttributes","namesScopeList","current","frame","rawRootMetadata","rootStyle","resolvedTokenAttributes","existingTokenAttributes","basicScopeAttributes","styleAttributes","rawMetadata","newPath","scopeThemeMatchResult","metadata","self","enterPos","anchorPos","beginRuleCapturedEOL","endRule","el","outIndex","_b","contentNameScopeStack","_c","BalancedBracketSelectors","balancedBracketScopes","unbalancedBracketScopes","excluder","includer","tokenTypeOverrides","endIndex","scopesList","scopes2","SyncRegistry","theme","targetScope","rawGrammar","Registry","configuration","dependencyProcessor","request","INITIAL","resolveColorReplacements","replacements","themeName","applyColorReplacements","toArray","x","normalizeGetter","p","isPlainLang","lang","isSpecialLang","isNoneTheme","isSpecialTheme","addClassToHast","className","targets","c","splitLines","code","preserveEnding","parts","lines","line","createPositionConverter","indexToPos","character","posToIndex","guessEmbeddedLanguages","_lang","highlighter","langs","fullType","bundle","l","DEFAULT_COLOR_LIGHT_DARK","COLOR_KEYS","splitToken","offsets","lastOffset","tokens","offset","splitTokens","breakpoints","sorted","breakpointsInToken","flatTokenVariants","merged","variantsOrder","cssVariablePrefix","defaultColor","colorsRendering","styles","t","getTokenStyleObject","styleKeys","mergedStyles","varKey","keyName","cur","lightIndex","darkIndex","ShikiError$1","lightValue","darkValue","decorations","stringifyTokenStyle","_grammarStateMap","setLastGrammarStateToMap","keys","state","getLastGrammarStateFromMap","GrammarState","args","stacksMap","themes","getScopes","visited","pushScope","stack2","getGrammarStack","transformerDecorations","map","getContext","shiki","normalizePosition","converter","d","verifyIntersections","codeEl","ctx","applyLineSection","start","decoration","lineEl","text","startIndex","stringify","children","applyDecoration","wrapper","applyLine","type","properties","transform","lineApplies","items","foo","bar","isFooHasBarStart","isFooHasBarEnd","isBarHasFooStart","isBarHasFooEnd","builtInTransformers","getTransformers","transformers","sortTransformersByEnforcement","pre","post","normal","transformer","namedColors","findSequence","position","nextEscape","nextClose","parseColor","sequence","colorMode","rgb","parseSequence","commands","codeInt","createAnsiSequenceParser","decorations2","findResult","styleToken","defaultNamedColorsMap","createColorPalette","namedColorsMap","namedColor","rgbColor","colorTable","getColorTable","levels","g","level","tableColor","defaultAnsiColors","tokenizeAnsiWithTheme","fileContents","colorReplacements","ansiPalette","themeColor","colorPalette","parser","bgColor","dimColor","hexMatch","alpha","cssVarMatch","codeToTokensBase","internal","_grammar","tokenizeWithTheme","getLastGrammarState","_tokenizeWithTheme","grammarState","tokenizeMaxLineLength","tokenizeTimeLimit","stateStack","actual","final","lineOffset","resultWithScopes","tokensWithScopes","tokensWithScopesIndex","tokensLength","nextStartIndex","themeSettingsSelectors","setting","selectors","tokenWithScopes","tokenWithScopesText","explainThemeScopesNameOnly","explainThemeScopesFull","themeSelectors","explainThemeScope","matchesOne","matches","selectorParentIndex","parentIndex","selectorPieces","codeToTokensWithThemes","themedTokens","tokens2","syncThemesTokenization","mergedTokens","lineIdx","_token","tokenIdx","mergedToken","themeIdx","_","__","___","mergedGrammarState","s","outThemes","count","outLines","indexes","minLength","n","codeToTokens","bg","fg","themeTokens","themeRegs","themesOrder","themeColorReplacements","mapThemeColors","_theme","property","cssVar","t2","codeToHast","transformerContext","_code","_options","mergeWhitespaces","mergeSameStyleTokens","mergeWhitespaceTokens","splitWhitespaceTokens","mergeAdjacentStyledTokens","contextSource","tokensToHast","structure","tabindex","preNode","codeNode","lineNodes","lineNode","col","tokenNode","style","syntheticLines","currentLine","transformedCode","_d","newLine","carryOnContent","firstOffset","couldMerge","leading","content","trailing","expanded","prevToken","prevStyle","currentStyle","isPrevDecorated","isDecorated","hastToHtml","toHtml","codeToHtml","VSCODE_FALLBACK_EDITOR_FG","VSCODE_FALLBACK_EDITOR_BG","RESOLVED_KEY","normalizeTheme","rawTheme","globalSetting","replacementCount","replacementMap","getReplacementColor","replaceFg","replaceBg","replacement","_e","resolveLangs","resolveThemes","_emitDeprecation","warnDeprecated","version","resolveLangAlias","alias","resolved","ShikiError","Registry$1","_resolver","_themes","_langs","_alias","textmateTheme","embeddedLazilyBy","grammarConfig","langsGraphArray","missingLangs","dependents","embedded","embeddedLang","Resolver","engine","langIdOrAlias","scopeParts","subScopeName","instancesCount","createShikiInternalSync","isDisposed","resolver","_registry","_lastTheme","resolveLangAlias$1","getLanguage","ensureNotDisposed","getTheme","setTheme","getLoadedThemes","getLoadedLanguages","loadLanguageSync","langs2","loadLanguage","loadThemeSync","themes2","loadTheme","dispose","createShikiInternal","createHighlighterCore","options2","createBundledHighlighter","bundledLanguages","bundledThemes","createHighlighter","resolveLang","resolveTheme","core","makeSingletonHighlighter","_shiki","getSingletonHighlighter","createSingletonShorthands","config","get","bundledLanguagesInfo","bundledLanguagesBase","bundledLanguagesAlias","bundledThemesInfo","getHeapMax","_emscripten_get_now","alignUp","multiple","main","init","wasmMemory","buffer","binding","updateGlobalBufferAndViews","buf","_emscripten_memcpy_big","dest","src","num","emscripten_realloc_buffer","size","_emscripten_resize_heap","requestedSize","oldSize","maxHeapSize","cutDown","overGrownHeapSize","newSize","UTF8Decoder","UTF8ArrayToString","heapOrArray","maxBytesToRead","endIdx","endPtr","u0","u1","u2","UTF8ToString","ptr","asmLibraryArg","createWasm","exports$1","__defProp","__defNormalProp","onigBinding","throwLastOnigError","onigBinding2","UtfString","utf16Length","utf8Length","computeIndicesMapping","utf16OffsetToUtf8","utf8OffsetToUtf16","utf8Value","i8","i16","charCode","codePoint","wasSurrogatePair","nextCharCode","codepoint","_OnigString","utfString","utf8Offset","utf16Offset","OnigString","OnigScanner","strPtrsArr","strLenArr","strPtrsPtr","strLenPtr","scannerPtr","arg","debugCall","resultPtr","HEAPU32","beg","isInstantiatorOptionsObject","dataOrOptions","isInstantiatorModule","isDataOptionsObject","isResponse","isArrayBuffer","data","initPromise","loadWasm","_load","info","instance","_makeResponseStreamingLoader","_makeResponseNonStreamingLoader","_makeArrayBufferLoader","importObject","arrayBuffer","createOnigurumaEngine","entries","setPrototypeOf","isFrozen","getPrototypeOf","getOwnPropertyDescriptor","freeze","seal","create","apply","construct","func","thisArg","_len","_key","Func","_len2","_key2","arrayForEach","unapply","arrayLastIndexOf","arrayPop","arrayPush","arraySplice","stringToLowerCase","stringToString","stringMatch","stringReplace","stringIndexOf","stringTrim","objectHasOwnProperty","regExpTest","typeErrorCreate","unconstruct","_len3","_key3","_len4","_key4","addToSet","set","array","transformCaseFunc","element","lcElement","cleanArray","object","newObject","lookupGetter","prop","fallbackValue","html$1","svg$1","svgFilters","svgDisallowed","mathMl$1","mathMlDisallowed","html","svg","mathMl","xml","MUSTACHE_EXPR","ERB_EXPR","TMPLIT_EXPR","DATA_ATTR","ARIA_ATTR","IS_ALLOWED_URI","IS_SCRIPT_OR_DATA","ATTR_WHITESPACE","DOCTYPE_NAME","CUSTOM_ELEMENT","EXPRESSIONS","NODE_TYPE","getGlobal","_createTrustedTypesPolicy","trustedTypes","purifyHostElement","suffix","ATTR_NAME","policyName","scriptUrl","_createHooksMap","createDOMPurify","window","DOMPurify","document","originalDocument","currentScript","DocumentFragment","HTMLTemplateElement","Node","Element","NodeFilter","NamedNodeMap","HTMLFormElement","DOMParser","ElementPrototype","cloneNode","remove","getNextSibling","getChildNodes","getParentNode","template","trustedTypesPolicy","emptyHTML","implementation","createNodeIterator","createDocumentFragment","getElementsByTagName","importNode","hooks","IS_ALLOWED_URI$1","ALLOWED_TAGS","DEFAULT_ALLOWED_TAGS","ALLOWED_ATTR","DEFAULT_ALLOWED_ATTR","CUSTOM_ELEMENT_HANDLING","FORBID_TAGS","FORBID_ATTR","EXTRA_ELEMENT_HANDLING","ALLOW_ARIA_ATTR","ALLOW_DATA_ATTR","ALLOW_UNKNOWN_PROTOCOLS","ALLOW_SELF_CLOSE_IN_ATTR","SAFE_FOR_TEMPLATES","SAFE_FOR_XML","WHOLE_DOCUMENT","SET_CONFIG","FORCE_BODY","RETURN_DOM","RETURN_DOM_FRAGMENT","RETURN_TRUSTED_TYPE","SANITIZE_DOM","SANITIZE_NAMED_PROPS","SANITIZE_NAMED_PROPS_PREFIX","KEEP_CONTENT","IN_PLACE","USE_PROFILES","FORBID_CONTENTS","DEFAULT_FORBID_CONTENTS","DATA_URI_TAGS","DEFAULT_DATA_URI_TAGS","URI_SAFE_ATTRIBUTES","DEFAULT_URI_SAFE_ATTRIBUTES","MATHML_NAMESPACE","SVG_NAMESPACE","HTML_NAMESPACE","NAMESPACE","IS_EMPTY_INPUT","ALLOWED_NAMESPACES","DEFAULT_ALLOWED_NAMESPACES","MATHML_TEXT_INTEGRATION_POINTS","HTML_INTEGRATION_POINTS","COMMON_SVG_AND_HTML_ELEMENTS","PARSER_MEDIA_TYPE","SUPPORTED_PARSER_MEDIA_TYPES","DEFAULT_PARSER_MEDIA_TYPE","CONFIG","formElement","isRegexOrFunction","testValue","_parseConfig","cfg","ALL_SVG_TAGS","ALL_MATHML_TAGS","_checkValidNamespace","tagName","parentTagName","_forceRemove","_removeAttribute","_initDocument","dirty","doc","leadingWhitespace","dirtyPayload","body","_createNodeIterator","_isClobbered","_isNode","_executeHooks","currentNode","hook","_sanitizeElements","_isBasicCustomElement","parentNode","childNodes","childCount","childClone","expr","_isValidAttribute","lcTag","lcName","_sanitizeAttributes","attributes","hookEvent","attr","namespaceURI","attrValue","initValue","_sanitizeShadowDOM","fragment","shadowNode","shadowIterator","importedNode","returnNode","nodeIterator","serializedHTML","tag","entryPoint","hookFunction","purify","purify_cjs","browser","require$$0","CodeBlockContext","createContext","lineNumberTransformer","highlightCode","language","showLineNumbers","lightHtml","darkHtml","sanitizeConfig","CodeBlock","props","setHtml","useState","setDarkHtml","mounted","useRef","useEffect","light","dark","jsxs","cn","jsx","Fragment","CodeBlockCopyButton","onCopy","onError","timeout","isCopied","setIsCopied","useContext","copyToClipboard","error","Icon","CheckIcon","CopyIcon"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8]}
|