[{"data":1,"prerenderedAt":747},["ShallowReactive",2],{"text-diagram-doc:\u002Fguide\u002Frendering":3,"text-diagram-source:recipes\u002Frender.ts":271,"mdc--a8k2v9-key":272},{"id":4,"title":5,"body":6,"description":260,"extension":261,"keywords":262,"locale":263,"meta":264,"navigation":265,"order":40,"path":266,"section":267,"seo":268,"stem":269,"__hash__":270},"docs\u002Fguide\u002Frendering.zh-CN.md","仅渲染图形",{"type":7,"value":8,"toc":252},"minimark",[9,18,23,26,128,138,142,165,187,190,193,200,203,206,209,212,231,234,244,248],[10,11,12,13,17],"p",{},"只需要展示图形时，使用 ",[14,15,16],"code",{},"@quirekit\u002Ftext-diagram\u002Fbrowser","。它不要求 Vue，也不会安装编辑器。语言由调用方明确传入，不从源码猜测。",[19,20,22],"h2",{"id":21},"_1-从源码生成-svg","1. 从源码生成 SVG",[10,24,25],{},"先提供语言、源码和取消信号。下面在浏览器中生成一张两节点流程图：",[27,28,34],"pre",{"className":29,"code":30,"filename":31,"language":32,"meta":33,"style":33},"language-ts shiki shiki-themes github-light github-light github-dark","import { renderTextDiagram, rasterizeTextDiagram } from '@quirekit\u002Ftext-diagram\u002Fbrowser'\nconst controller = new AbortController()\nconst vector = await renderTextDiagram('mermaid', 'flowchart LR; A-->B', {\n  ownerDocument: document,\n  signal: controller.signal,\n})\n","生成 SVG","ts","",[14,35,36,56,79,110,116,122],{"__ignoreMap":33},[37,38,41,45,49,52],"span",{"class":39,"line":40},"line",1,[37,42,44],{"class":43},"sDD9d","import",[37,46,48],{"class":47},"sVPnS"," { renderTextDiagram, rasterizeTextDiagram } ",[37,50,51],{"class":43},"from",[37,53,55],{"class":54},"s-HEn"," '@quirekit\u002Ftext-diagram\u002Fbrowser'\n",[37,57,59,62,66,69,72,76],{"class":39,"line":58},2,[37,60,61],{"class":43},"const",[37,63,65],{"class":64},"sUNQB"," controller",[37,67,68],{"class":43}," =",[37,70,71],{"class":43}," new",[37,73,75],{"class":74},"sgQzM"," AbortController",[37,77,78],{"class":47},"()\n",[37,80,82,84,87,89,92,95,98,101,104,107],{"class":39,"line":81},3,[37,83,61],{"class":43},[37,85,86],{"class":64}," vector",[37,88,68],{"class":43},[37,90,91],{"class":43}," await",[37,93,94],{"class":74}," renderTextDiagram",[37,96,97],{"class":47},"(",[37,99,100],{"class":54},"'mermaid'",[37,102,103],{"class":47},", ",[37,105,106],{"class":54},"'flowchart LR; A-->B'",[37,108,109],{"class":47},", {\n",[37,111,113],{"class":39,"line":112},4,[37,114,115],{"class":47},"  ownerDocument: document,\n",[37,117,119],{"class":39,"line":118},5,[37,120,121],{"class":47},"  signal: controller.signal,\n",[37,123,125],{"class":39,"line":124},6,[37,126,127],{"class":47},"})\n",[10,129,130,133,134,137],{},[14,131,132],{},"ownerDocument"," 用于浏览器测量；",[14,135,136],{},"signal"," 用于在切换源码或离开页面时取消请求。返回值保存这次渲染的源码与 SVG。",[19,139,141],{"id":140},"_2-从同一个结果生成-png","2. 从同一个结果生成 PNG",[27,143,146],{"className":29,"code":144,"filename":145,"language":32,"meta":33,"style":33},"const raster = await rasterizeTextDiagram(vector, document, controller.signal)\n","生成 PNG",[14,147,148],{"__ignoreMap":33},[37,149,150,152,155,157,159,162],{"class":39,"line":40},[37,151,61],{"class":43},[37,153,154],{"class":64}," raster",[37,156,68],{"class":43},[37,158,91],{"class":43},[37,160,161],{"class":74}," rasterizeTextDiagram",[37,163,164],{"class":47},"(vector, document, controller.signal)\n",[10,166,167,170,171,174,175,178,179,182,183,186],{},[14,168,169],{},"vector.svg"," 是静态 SVG 字符串；",[14,172,173],{},"raster.dataUrl"," 可作为图片 ",[14,176,177],{},"src","。每个结果都携带实际渲染的 ",[14,180,181],{},"language"," 与 ",[14,184,185],{},"source","。调用方显示结果前仍应确认请求未过期，不要把旧图片写进新源码对象。",[19,188,189],{"id":189},"并发与释放",[10,191,192],{},"连续输入时先取消上一个控制器，再为新源码创建控制器。取消意味着不接受迟到结果，不代表所有引擎都能立即停止计算；Mermaid 请求在共享队列中串行执行，PlantUML \u002F DOT 使用独立 sandbox frame，取消后移除 frame。",[10,194,195,196,199],{},"如果把 SVG 包成 Blob URL，替换图片或销毁宿主时调用 ",[14,197,198],{},"URL.revokeObjectURL","。自己创建的图片、容器和事件仍由宿主清理。PNG 是白色背景，按尺寸预算缩放，不保证与 SVG 一比一像素尺寸。",[19,201,202],{"id":202},"失败保留原文",[10,204,205],{},"空白或超限源码、语法错误、不受支持的外部资源、引擎超时都可能让 Promise 拒绝。取消旧请求通常无需显示错误；当前请求失败时展示简短提示、原文和重试入口，不用一张错误图片代替有效预览。",[10,207,208],{},"模型函数不验证 DSL 语法。工作台的语法着色也只是编辑辅助，是否可渲染以引擎结果为准。",[19,210,211],{"id":211},"服务器端",[10,213,214,215,219,220,225,226,230],{},"源码对象、模板和 Markdown 围栏函数可在 Node 中使用；本页渲染函数依赖 DOM、字体测量、iframe 和 Canvas，",[216,217,218],"strong",{},"不是 Node 渲染 API","。SSR 输出已有的 PNG，客户端再按需打开编辑器。详见",[221,222,224],"a",{"href":223},"\u002Fguide\u002Fdeployment","部署","和",[221,227,229],{"href":228},"\u002Fapi\u002Fbrowser","浏览器 API","。",[19,232,233],{"id":233},"完整模块参考",[10,235,236,239,240,243],{},[14,237,238],{},"recipes\u002Frender.ts"," 把上述两步组合成一个函数；",[14,241,242],{},"shared\u002Ftypes.ts"," 定义返回的两种产物。需要复制完整函数时按文件查阅：",[245,246],"docs-recipe",{"name":247},"recipes\u002Frender",[249,250,251],"style",{},"html pre.shiki code .sDD9d, html code.shiki .sDD9d{--shiki-default:#D73A49;--shiki-light:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sVPnS, html code.shiki .sVPnS{--shiki-default:#24292E;--shiki-light:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .s-HEn, html code.shiki .s-HEn{--shiki-default:#032F62;--shiki-light:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sUNQB, html code.shiki .sUNQB{--shiki-default:#005CC5;--shiki-light:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sgQzM, html code.shiki .sgQzM{--shiki-default:#6F42C1;--shiki-light:#6F42C1;--shiki-dark:#B392F0}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":33,"searchDepth":58,"depth":58,"links":253},[254,255,256,257,258,259],{"id":21,"depth":58,"text":22},{"id":140,"depth":58,"text":141},{"id":189,"depth":58,"text":189},{"id":202,"depth":58,"text":202},{"id":211,"depth":58,"text":211},{"id":233,"depth":58,"text":233},"从明确的语言与源码生成 SVG 和 PNG，管理取消、资源与失败。","md",null,"zh-CN",{},true,"\u002Fguide\u002Frendering","接入指南",{"title":5,"description":260},"guide\u002Frendering.zh-CN","R12NIfNsAcTQdkoJTr0lt1o_2GPBMpRuWQme8LO5QWg","import type { TextDiagramLanguage } from \"@quirekit\u002Ftext-diagram\";\nimport { renderTextDiagram, rasterizeTextDiagram } from \"@quirekit\u002Ftext-diagram\u002Fbrowser\";\nimport type { DiagramFiles } from \"..\u002Fshared\u002Ftypes\";\n\n\u002F**\n * Renders both formats in a browser without mounting the authoring UI.\n * @param language - Explicit supported grammar.\n * @param source - Exact source, kept alongside the generated files.\n * @param owner - Browser document used for measurement and rasterization.\n * @param signal - Abort on source replacement or host destruction.\n * @returns Sanitized SVG and PNG tied to the same immutable source snapshot.\n *\u002F\nexport async function createDiagramFiles(language: TextDiagramLanguage, source: string, owner: Document, signal: AbortSignal): Promise\u003CDiagramFiles> {\n  const vector = await renderTextDiagram(language, source, { ownerDocument: owner, signal });\n  const raster = await rasterizeTextDiagram(vector, owner, signal);\n  signal.throwIfAborted();\n  return { vector, raster };\n}\n",{"data":273,"body":274},{},{"type":275,"children":276},"root",[277,742],{"type":278,"tag":27,"props":279,"children":281},"element",{"className":29,"code":280,"language":32,"meta":33,"style":33},"import type { TextDiagramLanguage } from \"@quirekit\u002Ftext-diagram\";\nimport { renderTextDiagram, rasterizeTextDiagram } from \"@quirekit\u002Ftext-diagram\u002Fbrowser\";\nimport type { DiagramFiles } from \"..\u002Fshared\u002Ftypes\";\n\n\u002F**\n * Renders both formats in a browser without mounting the authoring UI.\n * @param language - Explicit supported grammar.\n * @param source - Exact source, kept alongside the generated files.\n * @param owner - Browser document used for measurement and rasterization.\n * @param signal - Abort on source replacement or host destruction.\n * @returns Sanitized SVG and PNG tied to the same immutable source snapshot.\n *\u002F\nexport async function createDiagramFiles(language: TextDiagramLanguage, source: string, owner: Document, signal: AbortSignal): Promise\u003CDiagramFiles> {\n  const vector = await renderTextDiagram(language, source, { ownerDocument: owner, signal });\n  const raster = await rasterizeTextDiagram(vector, owner, signal);\n  signal.throwIfAborted();\n  return { vector, raster };\n}\n\n",[282],{"type":278,"tag":14,"props":283,"children":284},{"__ignoreMap":33},[285,320,344,373,381,390,398,422,444,466,488,506,515,641,671,700,719,733],{"type":278,"tag":37,"props":286,"children":287},{"class":39,"line":40},[288,294,299,305,309,315],{"type":278,"tag":37,"props":289,"children":291},{"style":290},"--shiki-default:#D73A49;--shiki-light:#D73A49;--shiki-dark:#F97583",[292],{"type":293,"value":44},"text",{"type":278,"tag":37,"props":295,"children":296},{"style":290},[297],{"type":293,"value":298}," type",{"type":278,"tag":37,"props":300,"children":302},{"style":301},"--shiki-default:#24292E;--shiki-light:#24292E;--shiki-dark:#E1E4E8",[303],{"type":293,"value":304}," { TextDiagramLanguage } ",{"type":278,"tag":37,"props":306,"children":307},{"style":290},[308],{"type":293,"value":51},{"type":278,"tag":37,"props":310,"children":312},{"style":311},"--shiki-default:#032F62;--shiki-light:#032F62;--shiki-dark:#9ECBFF",[313],{"type":293,"value":314}," \"@quirekit\u002Ftext-diagram\"",{"type":278,"tag":37,"props":316,"children":317},{"style":301},[318],{"type":293,"value":319},";\n",{"type":278,"tag":37,"props":321,"children":322},{"class":39,"line":58},[323,327,331,335,340],{"type":278,"tag":37,"props":324,"children":325},{"style":290},[326],{"type":293,"value":44},{"type":278,"tag":37,"props":328,"children":329},{"style":301},[330],{"type":293,"value":48},{"type":278,"tag":37,"props":332,"children":333},{"style":290},[334],{"type":293,"value":51},{"type":278,"tag":37,"props":336,"children":337},{"style":311},[338],{"type":293,"value":339}," \"@quirekit\u002Ftext-diagram\u002Fbrowser\"",{"type":278,"tag":37,"props":341,"children":342},{"style":301},[343],{"type":293,"value":319},{"type":278,"tag":37,"props":345,"children":346},{"class":39,"line":81},[347,351,355,360,364,369],{"type":278,"tag":37,"props":348,"children":349},{"style":290},[350],{"type":293,"value":44},{"type":278,"tag":37,"props":352,"children":353},{"style":290},[354],{"type":293,"value":298},{"type":278,"tag":37,"props":356,"children":357},{"style":301},[358],{"type":293,"value":359}," { DiagramFiles } ",{"type":278,"tag":37,"props":361,"children":362},{"style":290},[363],{"type":293,"value":51},{"type":278,"tag":37,"props":365,"children":366},{"style":311},[367],{"type":293,"value":368}," \"..\u002Fshared\u002Ftypes\"",{"type":278,"tag":37,"props":370,"children":371},{"style":301},[372],{"type":293,"value":319},{"type":278,"tag":37,"props":374,"children":375},{"class":39,"line":112},[376],{"type":278,"tag":37,"props":377,"children":378},{"emptyLinePlaceholder":265},[379],{"type":293,"value":380},"\n",{"type":278,"tag":37,"props":382,"children":383},{"class":39,"line":118},[384],{"type":278,"tag":37,"props":385,"children":387},{"style":386},"--shiki-default:#6A737D;--shiki-light:#6A737D;--shiki-dark:#6A737D",[388],{"type":293,"value":389},"\u002F**\n",{"type":278,"tag":37,"props":391,"children":392},{"class":39,"line":124},[393],{"type":278,"tag":37,"props":394,"children":395},{"style":386},[396],{"type":293,"value":397}," * Renders both formats in a browser without mounting the authoring UI.\n",{"type":278,"tag":37,"props":399,"children":401},{"class":39,"line":400},7,[402,407,412,417],{"type":278,"tag":37,"props":403,"children":404},{"style":386},[405],{"type":293,"value":406}," * ",{"type":278,"tag":37,"props":408,"children":409},{"style":290},[410],{"type":293,"value":411},"@param",{"type":278,"tag":37,"props":413,"children":414},{"style":301},[415],{"type":293,"value":416}," language",{"type":278,"tag":37,"props":418,"children":419},{"style":386},[420],{"type":293,"value":421}," - Explicit supported grammar.\n",{"type":278,"tag":37,"props":423,"children":425},{"class":39,"line":424},8,[426,430,434,439],{"type":278,"tag":37,"props":427,"children":428},{"style":386},[429],{"type":293,"value":406},{"type":278,"tag":37,"props":431,"children":432},{"style":290},[433],{"type":293,"value":411},{"type":278,"tag":37,"props":435,"children":436},{"style":301},[437],{"type":293,"value":438}," source",{"type":278,"tag":37,"props":440,"children":441},{"style":386},[442],{"type":293,"value":443}," - Exact source, kept alongside the generated files.\n",{"type":278,"tag":37,"props":445,"children":447},{"class":39,"line":446},9,[448,452,456,461],{"type":278,"tag":37,"props":449,"children":450},{"style":386},[451],{"type":293,"value":406},{"type":278,"tag":37,"props":453,"children":454},{"style":290},[455],{"type":293,"value":411},{"type":278,"tag":37,"props":457,"children":458},{"style":301},[459],{"type":293,"value":460}," owner",{"type":278,"tag":37,"props":462,"children":463},{"style":386},[464],{"type":293,"value":465}," - Browser document used for measurement and rasterization.\n",{"type":278,"tag":37,"props":467,"children":469},{"class":39,"line":468},10,[470,474,478,483],{"type":278,"tag":37,"props":471,"children":472},{"style":386},[473],{"type":293,"value":406},{"type":278,"tag":37,"props":475,"children":476},{"style":290},[477],{"type":293,"value":411},{"type":278,"tag":37,"props":479,"children":480},{"style":301},[481],{"type":293,"value":482}," signal",{"type":278,"tag":37,"props":484,"children":485},{"style":386},[486],{"type":293,"value":487}," - Abort on source replacement or host destruction.\n",{"type":278,"tag":37,"props":489,"children":491},{"class":39,"line":490},11,[492,496,501],{"type":278,"tag":37,"props":493,"children":494},{"style":386},[495],{"type":293,"value":406},{"type":278,"tag":37,"props":497,"children":498},{"style":290},[499],{"type":293,"value":500},"@returns",{"type":278,"tag":37,"props":502,"children":503},{"style":386},[504],{"type":293,"value":505}," Sanitized SVG and PNG tied to the same immutable source snapshot.\n",{"type":278,"tag":37,"props":507,"children":509},{"class":39,"line":508},12,[510],{"type":278,"tag":37,"props":511,"children":512},{"style":386},[513],{"type":293,"value":514}," *\u002F\n",{"type":278,"tag":37,"props":516,"children":518},{"class":39,"line":517},13,[519,524,529,534,540,544,549,554,559,563,567,571,577,581,586,590,595,599,603,607,612,617,621,626,631,636],{"type":278,"tag":37,"props":520,"children":521},{"style":290},[522],{"type":293,"value":523},"export",{"type":278,"tag":37,"props":525,"children":526},{"style":290},[527],{"type":293,"value":528}," async",{"type":278,"tag":37,"props":530,"children":531},{"style":290},[532],{"type":293,"value":533}," function",{"type":278,"tag":37,"props":535,"children":537},{"style":536},"--shiki-default:#6F42C1;--shiki-light:#6F42C1;--shiki-dark:#B392F0",[538],{"type":293,"value":539}," createDiagramFiles",{"type":278,"tag":37,"props":541,"children":542},{"style":301},[543],{"type":293,"value":97},{"type":278,"tag":37,"props":545,"children":547},{"style":546},"--shiki-default:#E36209;--shiki-light:#E36209;--shiki-dark:#FFAB70",[548],{"type":293,"value":181},{"type":278,"tag":37,"props":550,"children":551},{"style":290},[552],{"type":293,"value":553},":",{"type":278,"tag":37,"props":555,"children":556},{"style":536},[557],{"type":293,"value":558}," TextDiagramLanguage",{"type":278,"tag":37,"props":560,"children":561},{"style":301},[562],{"type":293,"value":103},{"type":278,"tag":37,"props":564,"children":565},{"style":546},[566],{"type":293,"value":185},{"type":278,"tag":37,"props":568,"children":569},{"style":290},[570],{"type":293,"value":553},{"type":278,"tag":37,"props":572,"children":574},{"style":573},"--shiki-default:#005CC5;--shiki-light:#005CC5;--shiki-dark:#79B8FF",[575],{"type":293,"value":576}," string",{"type":278,"tag":37,"props":578,"children":579},{"style":301},[580],{"type":293,"value":103},{"type":278,"tag":37,"props":582,"children":583},{"style":546},[584],{"type":293,"value":585},"owner",{"type":278,"tag":37,"props":587,"children":588},{"style":290},[589],{"type":293,"value":553},{"type":278,"tag":37,"props":591,"children":592},{"style":536},[593],{"type":293,"value":594}," Document",{"type":278,"tag":37,"props":596,"children":597},{"style":301},[598],{"type":293,"value":103},{"type":278,"tag":37,"props":600,"children":601},{"style":546},[602],{"type":293,"value":136},{"type":278,"tag":37,"props":604,"children":605},{"style":290},[606],{"type":293,"value":553},{"type":278,"tag":37,"props":608,"children":609},{"style":536},[610],{"type":293,"value":611}," AbortSignal",{"type":278,"tag":37,"props":613,"children":614},{"style":301},[615],{"type":293,"value":616},")",{"type":278,"tag":37,"props":618,"children":619},{"style":290},[620],{"type":293,"value":553},{"type":278,"tag":37,"props":622,"children":623},{"style":536},[624],{"type":293,"value":625}," Promise",{"type":278,"tag":37,"props":627,"children":628},{"style":301},[629],{"type":293,"value":630},"\u003C",{"type":278,"tag":37,"props":632,"children":633},{"style":536},[634],{"type":293,"value":635},"DiagramFiles",{"type":278,"tag":37,"props":637,"children":638},{"style":301},[639],{"type":293,"value":640},"> {\n",{"type":278,"tag":37,"props":642,"children":644},{"class":39,"line":643},14,[645,650,654,658,662,666],{"type":278,"tag":37,"props":646,"children":647},{"style":290},[648],{"type":293,"value":649},"  const",{"type":278,"tag":37,"props":651,"children":652},{"style":573},[653],{"type":293,"value":86},{"type":278,"tag":37,"props":655,"children":656},{"style":290},[657],{"type":293,"value":68},{"type":278,"tag":37,"props":659,"children":660},{"style":290},[661],{"type":293,"value":91},{"type":278,"tag":37,"props":663,"children":664},{"style":536},[665],{"type":293,"value":94},{"type":278,"tag":37,"props":667,"children":668},{"style":301},[669],{"type":293,"value":670},"(language, source, { ownerDocument: owner, signal });\n",{"type":278,"tag":37,"props":672,"children":674},{"class":39,"line":673},15,[675,679,683,687,691,695],{"type":278,"tag":37,"props":676,"children":677},{"style":290},[678],{"type":293,"value":649},{"type":278,"tag":37,"props":680,"children":681},{"style":573},[682],{"type":293,"value":154},{"type":278,"tag":37,"props":684,"children":685},{"style":290},[686],{"type":293,"value":68},{"type":278,"tag":37,"props":688,"children":689},{"style":290},[690],{"type":293,"value":91},{"type":278,"tag":37,"props":692,"children":693},{"style":536},[694],{"type":293,"value":161},{"type":278,"tag":37,"props":696,"children":697},{"style":301},[698],{"type":293,"value":699},"(vector, owner, signal);\n",{"type":278,"tag":37,"props":701,"children":703},{"class":39,"line":702},16,[704,709,714],{"type":278,"tag":37,"props":705,"children":706},{"style":301},[707],{"type":293,"value":708},"  signal.",{"type":278,"tag":37,"props":710,"children":711},{"style":536},[712],{"type":293,"value":713},"throwIfAborted",{"type":278,"tag":37,"props":715,"children":716},{"style":301},[717],{"type":293,"value":718},"();\n",{"type":278,"tag":37,"props":720,"children":722},{"class":39,"line":721},17,[723,728],{"type":278,"tag":37,"props":724,"children":725},{"style":290},[726],{"type":293,"value":727},"  return",{"type":278,"tag":37,"props":729,"children":730},{"style":301},[731],{"type":293,"value":732}," { vector, raster };\n",{"type":278,"tag":37,"props":734,"children":736},{"class":39,"line":735},18,[737],{"type":278,"tag":37,"props":738,"children":739},{"style":301},[740],{"type":293,"value":741},"}\n",{"type":278,"tag":249,"props":743,"children":744},{},[745],{"type":293,"value":746},"html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",1793045389730]