{"mappings":"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BAAmB,CAC1D,EACA,YAAa,CACX,CACE,MAAO,CACL,4BACA,6CACA,2BACA,wCACF,EACA,SAAU,CACR,WAAYA,EAAS,YAAY,CACnC,CACF,EACA,CACE,MAAO,WACP,SAAU,CACR,UAAW,QACb,CACF,EACA,CACE,MAAO,CAAC,SAAU,0BAA2B,sBAAsB,EACnE,SAAU,CACR,UAAW,MACb,CACF,EACA,CACE,MAAO,CAAC,wBAAwB,EAChC,SAAU,CACR,UAAW,QACb,CACF,EACA,CACE,MAAO,4BACP,SAAU,CACR,UAAW,YACX,WAAYA,EAAS,YAAY,CACnC,CACF,EACA,CACE,MAAO,CAAC,SAAU,qBAAsB,eAAe,EACvD,SAAU,CACR,WAAYA,EAAS,cAAc,CACrC,CACF,EACA,CACE,MAAO,CAAC,UAAW,+BAA+B,EAClD,SAAU,CACR,WAAYA,EAAS,eAAe,CACtC,CACF,EACA,CACE,MAAO,CACL,mBACA,oBACA,6BACA,wCACA,yBACA,wBACA,uBACA,0BACA,qBACA,sBACA,SACF,EACA,SAAU,CACR,WAAYA,EAAS,gBAAgB,CACvC,CACF,EACA,CACE,MAAO,CACL,UACA,mBACA,eACA,0BACA,+BACA,uBACA,wBACA,kCACA,kCACA,4CACF,EACA,SAAU,CACR,WAAYA,EAAS,eAAe,CACtC,CACF,EACA,CACE,MAAO,8BACP,SAAU,CACR,WAAYA,EAAS,iBAAiB,CACxC,CACF,EACA,CACE,MAAO,CACL,mBACA,mBACA,+BACA,qBACA,4BACA,8BACA,uBACA,0BACF,EACA,SAAU,CACR,WAAYA,EAAS,gBAAgB,CACvC,CACF,EACA,CACE,MAAO,CACL,kBACA,gBACA,gBACA,sBACA,kBACA,iCACA,wBACF,EACA,SAAU,CACR,WAAYA,EAAS,yBAAyB,CAChD,CACF,EACA,CACE,MAAO,CACL,mCACA,8BACA,wBACA,8BACF,EACA,SAAU,CACR,WAAYA,EAAS,mBAAmB,CAC1C,CACF,EACA,CAEE,MAAO,CACL,wBACA,0CACF,EACA,SAAU,CACR,WAAYA,EAAS,YAAY,CACnC,CACF,EACA,CAEE,MAAO,CAAC,gDAAgD,EACxD,SAAU,CACR,WAAYA,EAAS,cAAc,CACrC,CACF,EACA,CAEE,MAAO,CACL,+CACA,6CACA,mCACA,wCACF,EACA,SAAU,CACR,WAAYA,EAAS,eAAe,CACtC,CACF,EACA,CAEE,MAAO,CACL,kBACA,2BACA,iCACF,EACA,SAAU,CACR,WAAYA,EAAS,gBAAgB,CACvC,CACF,EACA,CACE,MAAO,CACL,iBACA,6BACA,gCACF,EACA,SAAU,CACR,WAAYA,EAAS,eAAe,CACtC,CACF,EACA,CACE,MAAO,CACL,iBACA,gCACF,EACA,SAAU,CACR,WAAYA,EAAS,eAAe,CACtC,CACF,CACF,CACF,EACA,OAAKxN,IACHpL,EAAM,YAAcA,EAAM,aAAa,IAAK8Y,IACtCA,EAAW,UAAU,WACvB,OAAOA,EAAW,SAAS,UACtBA,EACR,GAEI9Y,CACT","names":["ShikiError$1","FontStyle","INITIAL","EncodedTokenMetadata","Registry$1","Theme","toHtml","resolveColorReplacements","theme","options","replacements","themeName","key","value","applyColorReplacements","color","toArray","x","normalizeGetter","p","r","isPlainLang","lang","isSpecialLang","isNoneTheme","isSpecialTheme","addClassToHast","node","className","targets","c","splitLines","code","preserveEnding","parts","index","lines","i","line","createPositionConverter","indexToPos","character","lineText","posToIndex","guessEmbeddedLanguages","_lang","highlighter","langs","match","fullType","bundle","l","DEFAULT_COLOR_LIGHT_DARK","COLOR_KEYS","splitToken","token","offsets","lastOffset","tokens","offset","splitTokens","breakpoints","sorted","a","b","breakpointsInToken","flatTokenVariants","merged","variantsOrder","cssVariablePrefix","defaultColor","colorsRendering","styles","t","getTokenStyleObject","styleKeys","mergedStyles","varKey","idx","keyName","cur","lightIndex","darkIndex","lightValue","darkValue","decorations","stringifyTokenStyle","_grammarStateMap","setLastGrammarStateToMap","keys","state","getLastGrammarStateFromMap","GrammarState","_GrammarState","themes","args","stacksMap","stack","getScopes","scopes","visited","pushScope","stack2","name","getGrammarStack","transformerDecorations","map","getContext","shiki","normalizePosition","converter","d","verifyIntersections","codeEl","ctx","applyLineSection","start","end","decoration","lineEl","text","startIndex","endIndex","stringify","children","applyDecoration","wrapper","applyLine","el","type","properties","transform","lineApplies","items","foo","j","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","foreground","background","decorations2","findResult","styleToken","defaultNamedColorsMap","createColorPalette","namedColorsMap","namedColor","rgbColor","colorTable","getColorTable","levels","g","level","tableColor","defaultAnsiColors","tokenizeAnsiWithTheme","fileContents","colorReplacements","ansiPalette","themeColor","colorPalette","parser","bgColor","dimColor","fontStyle","hexMatch","hex","alpha","cssVarMatch","codeToTokensBase","internal","colorMap","_grammar","tokenizeWithTheme","getLastGrammarState","_tokenizeWithTheme","grammar","result","grammarState","tokenizeMaxLineLength","tokenizeTimeLimit","stateStack","actual","final","len","lineOffset","resultWithScopes","tokensWithScopes","tokensWithScopesIndex","tokensLength","nextStartIndex","metadata","themeSettingsSelectors","setting","selectors","scope","selector","tokenWithScopes","tokenWithScopesText","explainThemeScopesNameOnly","explainThemeScopesFull","themeSelectors","explainThemeScope","matchesOne","matches","parentScopes","selectorParentIndex","parentIndex","settings","selectorPieces","codeToTokensWithThemes","themedTokens","tokens2","syncThemesTokenization","mergedTokens","lineIdx","_token","tokenIdx","mergedToken","themeIdx","_","__","___","mergedGrammarState","s","outThemes","count","outLines","i2","indexes","current","minLength","n","codeToTokens","bg","fg","rootStyle","themeTokens","themeRegs","themesOrder","themeColorReplacements","mapThemeColors","_theme","property","cssVar","t2","codeToHast","transformerContext","_code","_options","input","mergeWhitespaces","mergeSameStyleTokens","mergeWhitespaceTokens","splitWhitespaceTokens","mergeAdjacentStyledTokens","contextSource","tokensToHast","root","structure","tabindex","preNode","codeNode","lineNodes","context","lineNode","col","tokenNode","style","syntheticLines","currentLine","child","transformedCode","newLine","carryOnContent","firstOffset","couldMerge","leading","content","trailing","expanded","prevToken","prevStyle","currentStyle","isPrevDecorated","isDecorated","hastToHtml","codeToHtml","VSCODE_FALLBACK_EDITOR_FG","VSCODE_FALLBACK_EDITOR_BG","RESOLVED_KEY","normalizeTheme","rawTheme","globalSetting","replacementCount","replacementMap","getReplacementColor","replaceFg","replaceBg","clone","replacement","resolveLangs","resolveThemes","_emitDeprecation","_emitError","enableDeprecationWarnings","emitDeprecation","emitError","warnDeprecated","message","version","ShikiError","resolveLangAlias","alias","resolved","Registry","_resolver","_themes","_langs","_alias","textmateTheme","embeddedLazilyBy","grammarConfig","e","langsGraphArray","missingLangs","dependents","embedded","embeddedLang","Resolver","engine","patterns","langIdOrAlias","scopeName","scopeParts","injections","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","createHighlighterCoreSync","makeSingletonHighlighterCore","createHighlighter","_shiki","getSingletonHighlighterCore2","getSingletonHighlighterCore","createBundledHighlighter","bundledLanguages","bundledThemes","resolveLang","resolveTheme","core","makeSingletonHighlighter","getSingletonHighlighter","createSingletonShorthands","config","get","createdBundledHighlighter","createCssVariablesTheme","variablePrefix","variable","name2","tokenColor"],"sources":["../esm/npm/@shikijs/core@3.22.0/node_modules/@shikijs/core/dist/index.mjs"],"sourcesContent":["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) =\u003e 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 \u0026\u0026 !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 \u003c 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]) =\u003e 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 \u003c 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 \u003c 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(/\u003cscript\\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) =\u003e l \u0026\u0026 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 \u003e 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 \u003c 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) =\u003e a - b);\n  if (!sorted.length)\n    return tokens;\n  return tokens.map((line) =\u003e {\n    return line.flatMap((token) =\u003e {\n      const breakpointsInToken = sorted.filter((i) =\u003e token.offset \u003c i \u0026\u0026 i \u003c token.offset + token.content.length).map((i) =\u003e i - token.offset).sort((a, b) =\u003e 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) =\u003e getTokenStyleObject(merged.variants[t]));\n  const styleKeys = new Set(styles.flatMap((t) =\u003e Object.keys(t)));\n  const mergedStyles = {};\n  const varKey = (idx, key) =\u003e {\n    const keyName = key === \"color\" ? \"\" : key === \"background-color\" ? \"-bg\" : `-${key}`;\n    return cssVariablePrefix + variantsOrder[idx] + (key === \"color\" ? \"\" : keyName);\n  };\n  styles.forEach((cur, idx) =\u003e {\n    for (const key of styleKeys) {\n      const value = cur[key] || \"inherit\";\n      if (idx === 0 \u0026\u0026 defaultColor \u0026\u0026 COLOR_KEYS.includes(key)) {\n        if (defaultColor === DEFAULT_COLOR_LIGHT_DARK \u0026\u0026 styles.length \u003e 1) {\n          const lightIndex = variantsOrder.findIndex((t) =\u003e t === \"light\");\n          const darkIndex = variantsOrder.findIndex((t) =\u003e 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 \u0026 FontStyle.Italic)\n      styles[\"font-style\"] = \"italic\";\n    if (token.fontStyle \u0026 FontStyle.Bold)\n      styles[\"font-weight\"] = \"bold\";\n    const decorations = [];\n    if (token.fontStyle \u0026 FontStyle.Underline)\n      decorations.push(\"underline\");\n    if (token.fontStyle \u0026 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]) =\u003e `${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) =\u003e [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 \u003c 0 || p \u003e 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 \u003c 0)\n            character = line.length + character;\n          if (character \u003c 0 || character \u003e 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) =\u003e ({\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) =\u003e [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) =\u003e i.type === \"element\" \u0026\u0026 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 \u003c lineEl.children.length; i++) {\n            text += stringify(lineEl.children[i]);\n            if (startIndex === -1 \u0026\u0026 text.length === start)\n              startIndex = i + 1;\n            if (endIndex === -1 \u0026\u0026 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 \u0026\u0026 children.length === lineEl.children.length) {\n          applyDecoration(lineEl, decoration, \"line\");\n        } else if (!decoration.alwaysWrap \u0026\u0026 children.length === 1 \u0026\u0026 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) =\u003e 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) =\u003e 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 \u003c end.line) {\n          applyLineSection(start.line, start.character, Number.POSITIVE_INFINITY, decoration);\n          for (let i = start.line + 1; i \u003c end.line; i++)\n            lineApplies.unshift(() =\u003e applyLine(i, decoration));\n          applyLineSection(end.line, 0, end.character, decoration);\n        }\n      }\n      lineApplies.forEach((i) =\u003e i());\n    }\n  };\n}\nfunction verifyIntersections(items) {\n  for (let i = 0; i \u003c items.length; i++) {\n    const foo = items[i];\n    if (foo.start.offset \u003e 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 \u003c items.length; j++) {\n      const bar = items[j];\n      const isFooHasBarStart = foo.start.offset \u003c= bar.start.offset \u0026\u0026 bar.start.offset \u003c foo.end.offset;\n      const isFooHasBarEnd = foo.start.offset \u003c bar.end.offset \u0026\u0026 bar.end.offset \u003c= foo.end.offset;\n      const isBarHasFooStart = bar.start.offset \u003c= foo.start.offset \u0026\u0026 foo.start.offset \u003c bar.end.offset;\n      const isBarHasFooEnd = bar.start.offset \u003c foo.end.offset \u0026\u0026 foo.end.offset \u003c= bar.end.offset;\n      if (isFooHasBarStart || isFooHasBarEnd || isBarHasFooStart || isBarHasFooEnd) {\n        if (isFooHasBarStart \u0026\u0026 isFooHasBarEnd)\n          continue;\n        if (isBarHasFooStart \u0026\u0026 isBarHasFooEnd)\n          continue;\n        if (isBarHasFooStart \u0026\u0026 foo.start.offset === foo.end.offset)\n          continue;\n        if (isFooHasBarEnd \u0026\u0026 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) =\u003e Number.parseInt(x));\n    if (rgb.length !== 3 || rgb.some((x) =\u003e 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 \u003e 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 \u003c= 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 \u003c= 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 \u003c= 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 \u003c= 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 \u003e= 90 \u0026\u0026 codeInt \u003c= 97) {\n      commands.push({\n        type: \"setForegroundColor\",\n        value: { type: \"named\", name: namedColors[codeInt - 90 + 8] }\n      });\n    } else if (codeInt \u003e= 100 \u0026\u0026 codeInt \u003c= 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 \u003e 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 \u003c 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) =\u003e 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 \u003c 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 \u003c 6; r++) {\n      for (let g = 0; g \u003c 6; g++) {\n        for (let b = 0; b \u003c 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 \u003c 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) =\u003e {\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) =\u003e parser.parse(line[0]).map((token) =\u003e {\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) =\u003e [{ 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 \u003c len; i++) {\n    const [line, lineOffset] = lines[i];\n    if (line === \"\") {\n      actual = [];\n      final.push([]);\n      continue;\n    }\n    if (tokenizeMaxLineLength \u003e 0 \u0026\u0026 line.length \u003e= 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 \u003c tokensLength; j++) {\n      const startIndex = result.tokens[2 * j];\n      const nextStartIndex = j + 1 \u003c 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) =\u003e 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) =\u003e selector.split(/ /))\n            });\n          }\n        }\n        token.explanation = [];\n        let offset = 0;\n        while (startIndex + offset \u003c 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) =\u003e ({ scopeName: scope }));\n}\nfunction explainThemeScopesFull(themeSelectors, scopes) {\n  const result = [];\n  for (let i = 0, len = scopes.length; i \u003c 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 \u0026\u0026 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 \u003e= 0 \u0026\u0026 parentIndex \u003e= 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) =\u003e i[1]).map((i) =\u003e ({ color: i[0], theme: i[1] }));\n  const themedTokens = themes.map((t) =\u003e {\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) =\u003e i.tokens)\n  );\n  const mergedTokens = tokens[0].map(\n    (line, lineIdx) =\u003e line.map((_token, tokenIdx) =\u003e {\n      const mergedToken = {\n        content: _token.content,\n        variants: {},\n        offset: _token.offset\n      };\n      if (\"includeExplanation\" in options \u0026\u0026 options.includeExplanation) {\n        mergedToken.explanation = _token.explanation;\n      }\n      tokens.forEach((t, themeIdx) =\u003e {\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) =\u003e [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(() =\u003e []);\n  const count = themes.length;\n  for (let i = 0; i \u003c themes[0].length; i++) {\n    const lines = themes.map((t) =\u003e t[i]);\n    const outLines = outThemes.map(() =\u003e []);\n    outThemes.forEach((t, i2) =\u003e t.push(outLines[i2]));\n    const indexes = lines.map(() =\u003e 0);\n    const current = lines.map((l) =\u003e l[0]);\n    while (current.every((t) =\u003e t)) {\n      const minLength = Math.min(...current.map((t) =\u003e t.content.length));\n      for (let n = 0; n \u003c 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) =\u003e i[1]).map((i) =\u003e ({ color: i[0], theme: i[1] })).sort((a, b) =\u003e 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 \u0026\u0026 DEFAULT_COLOR_LIGHT_DARK !== defaultColor \u0026\u0026 !themes.find((t) =\u003e t.color === defaultColor))\n      throw new ShikiError$1(`\\`themes\\` option must contain the defaultColor key \\`${defaultColor}\\``);\n    const themeRegs = themes.map((t) =\u003e internal.getTheme(t.theme));\n    const themesOrder = themes.map((t) =\u003e t.color);\n    tokens = themeTokens.map((line) =\u003e line.map((token) =\u003e flatTokenVariants(token, themesOrder, cssVariablePrefix, defaultColor, colorsRendering)));\n    if (grammarState)\n      setLastGrammarStateToMap(tokens, grammarState);\n    const themeColorReplacements = themes.map((t) =\u003e 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) =\u003e 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) =\u003e {\n    const value = applyColorReplacements(themeRegs[idx][property], themeColorReplacements[idx]) || \"inherit\";\n    const cssVar = `${cssVariablePrefix + t.color}${property === \"bg\" ? \"-bg\" : \"\"}:${value}`;\n    if (idx === 0 \u0026\u0026 defaultColor) {\n      if (defaultColor === DEFAULT_COLOR_LIGHT_DARK \u0026\u0026 themes.length \u003e 1) {\n        const lightIndex = themes.findIndex((t2) =\u003e t2.color === \"light\");\n        const darkIndex = themes.findIndex((t2) =\u003e 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) =\u003e !!i).join(\";\");\n}\n\nfunction codeToHast(internal, code, options, transformerContext = {\n  meta: {},\n  options,\n  codeToHast: (_code, _options) =\u003e codeToHast(internal, _code, _options),\n  codeToTokens: (_code, _options) =\u003e 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 \u0026\u0026 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) =\u003e {\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\" \u0026\u0026 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 \u003c transformedCode.children.length; i++) {\n      if (i \u003e 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) =\u003e {\n    const newLine = [];\n    let carryOnContent = \"\";\n    let firstOffset;\n    line.forEach((token, idx) =\u003e {\n      const isDecorated = token.fontStyle \u0026\u0026 (token.fontStyle \u0026 FontStyle.Underline || token.fontStyle \u0026 FontStyle.Strikethrough);\n      const couldMerge = !isDecorated;\n      if (couldMerge \u0026\u0026 token.content.match(/^\\s+$/) \u0026\u0026 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) =\u003e {\n    return line.flatMap((token) =\u003e {\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 \u0026\u0026 !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) =\u003e {\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 \u0026\u0026 (prevToken.fontStyle \u0026 FontStyle.Underline || prevToken.fontStyle \u0026 FontStyle.Strikethrough);\n      const isDecorated = token.fontStyle \u0026\u0026 (token.fontStyle \u0026 FontStyle.Underline || token.fontStyle \u0026 FontStyle.Strikethrough);\n      if (!isPrevDecorated \u0026\u0026 !isDecorated \u0026\u0026 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) =\u003e codeToHast(internal, _code, _options),\n    codeToTokens: (_code, _options) =\u003e 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 \u0026\u0026 !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) =\u003e !s.name \u0026\u0026 !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 \u0026\u0026 theme?.colors?.[\"editor.foreground\"])\n      fg = theme.colors[\"editor.foreground\"];\n    if (!bg \u0026\u0026 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] \u0026\u0026 theme.settings[0].settings \u0026\u0026 !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) =\u003e {\n    const replaceFg = setting.settings?.foreground \u0026\u0026 !setting.settings.foreground.startsWith(\"#\");\n    const replaceBg = setting.settings?.background \u0026\u0026 !setting.settings.background.startsWith(\"#\");\n    if (!replaceFg \u0026\u0026 !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) =\u003e !isSpecialLang(l)).map(async (lang) =\u003e await normalizeGetter(lang).then((r) =\u003e Array.isArray(r) ? r : [r]))\n  )).flat()));\n}\nasync function resolveThemes(themes) {\n  const resolved = await Promise.all(\n    themes.map(\n      async (theme) =\u003e isSpecialTheme(theme) ? null : normalizeTheme(await normalizeGetter(theme))\n    )\n  );\n  return resolved.filter((i) =\u003e !!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\" \u0026\u0026 version \u003e _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(\" -\u003e \")} -\u003e ${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) =\u003e 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) =\u003e 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) =\u003e {\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]) =\u003e !lang);\n    if (missingLangs.length) {\n      const dependents = langsGraphArray.filter(([_, lang]) =\u003e {\n        if (!lang)\n          return false;\n        const embedded = lang.embeddedLanguages || lang.embeddedLangs;\n        return embedded?.some((l) =\u003e missingLangs.map(([name]) =\u003e name).includes(l));\n      }).filter((lang) =\u003e !missingLangs.includes(lang));\n      throw new ShikiError(`Missing languages ${missingLangs.map(([name]) =\u003e `\\`${name}\\``).join(\", \")}, required by ${dependents.map(([name]) =\u003e `\\`${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) =\u003e engine.createScanner(patterns),\n      createOnigString: (s) =\u003e engine.createString(s)\n    };\n    langs.forEach((i) =\u003e 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) =\u003e {\n        this._langs.set(a, l);\n      });\n    }\n    this._scopeToLang.set(l.scopeName, l);\n    if (l.injectTo) {\n      l.injectTo.forEach((i) =\u003e {\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 \u003c= 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 \u0026\u0026 instancesCount \u003e= 10 \u0026\u0026 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) =\u003e getLastGrammarState(internal, ...args),\n    codeToTokensBase: (code, options2) =\u003e codeToTokensBase(internal, code, options2),\n    codeToTokensWithThemes: (code, options2) =\u003e codeToTokensWithThemes(internal, code, options2),\n    codeToTokens: (code, options2) =\u003e codeToTokens(internal, code, options2),\n    codeToHast: (code, options2) =\u003e codeToHast(internal, code, options2),\n    codeToHtml: (code, options2) =\u003e codeToHtml(internal, code, options2),\n    getBundledLanguages: () =\u003e ({}),\n    getBundledThemes: () =\u003e ({}),\n    ...internal,\n    getInternalContext: () =\u003e internal\n  };\n}\nfunction createHighlighterCoreSync(options) {\n  const internal = createShikiInternalSync(options);\n  return {\n    getLastGrammarState: (...args) =\u003e getLastGrammarState(internal, ...args),\n    codeToTokensBase: (code, options2) =\u003e codeToTokensBase(internal, code, options2),\n    codeToTokensWithThemes: (code, options2) =\u003e codeToTokensWithThemes(internal, code, options2),\n    codeToTokens: (code, options2) =\u003e codeToTokens(internal, code, options2),\n    codeToHast: (code, options2) =\u003e codeToHast(internal, code, options2),\n    codeToHtml: (code, options2) =\u003e codeToHtml(internal, code, options2),\n    getBundledLanguages: () =\u003e ({}),\n    getBundledThemes: () =\u003e ({}),\n    ...internal,\n    getInternalContext: () =\u003e 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) =\u003e resolveTheme(i));\n    const langs = (options2.langs ?? []).map((i) =\u003e 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) =\u003e {\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) =\u003e {\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"],"version":3}
