@8wave/ai-elements 0.111.0-beta.7 → 0.111.0-beta.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/_chunks/{PkLazyImg-ClL4nr95.js → PkLazyImg-Dbj2dDXA.js} +2 -2
- package/dist/_chunks/{PkLazyImg-ClL4nr95.js.map → PkLazyImg-Dbj2dDXA.js.map} +1 -1
- package/dist/_chunks/{PkStreamingMarkdown-DgBS4Ebc.js → PkStreamingMarkdown-CNI8aV8t.js} +617 -418
- package/dist/_chunks/PkStreamingMarkdown-CNI8aV8t.js.map +1 -0
- package/dist/_chunks/{PkToolRequestGeolocation-pVys3x9M.js → PkToolRequestGeolocation-Bzy4IYSp.js} +2 -2
- package/dist/_chunks/{PkToolRequestGeolocation-pVys3x9M.js.map → PkToolRequestGeolocation-Bzy4IYSp.js.map} +1 -1
- package/dist/_chunks/{PkToolRequestOAuthConnection-BGChb_eC.js → PkToolRequestOAuthConnection-CWEKoD71.js} +2 -2
- package/dist/_chunks/{PkToolRequestOAuthConnection-BGChb_eC.js.map → PkToolRequestOAuthConnection-CWEKoD71.js.map} +1 -1
- package/dist/_chunks/{PkToolShowArtifact-CkTBIdQd.js → PkToolShowArtifact-CGbHDEie.js} +4 -4
- package/dist/_chunks/{PkToolShowArtifact-CkTBIdQd.js.map → PkToolShowArtifact-CGbHDEie.js.map} +1 -1
- package/dist/_chunks/{PkToolShowCalendarEvent-C41JgOUA.js → PkToolShowCalendarEvent-DIFX_rUz.js} +3 -3
- package/dist/_chunks/{PkToolShowCalendarEvent-C41JgOUA.js.map → PkToolShowCalendarEvent-DIFX_rUz.js.map} +1 -1
- package/dist/_chunks/{PkToolShowComparison-DbbUD9pg.js → PkToolShowComparison-B38hHWq2.js} +3 -3
- package/dist/_chunks/{PkToolShowComparison-DbbUD9pg.js.map → PkToolShowComparison-B38hHWq2.js.map} +1 -1
- package/dist/_chunks/{PkToolShowContactForm-Du7jX7K5.js → PkToolShowContactForm-DUw_bZiJ.js} +4 -4
- package/dist/_chunks/{PkToolShowContactForm-Du7jX7K5.js.map → PkToolShowContactForm-DUw_bZiJ.js.map} +1 -1
- package/dist/_chunks/{PkToolShowDiagram-BdmG9gm8.js → PkToolShowDiagram-Dx1Ba0PG.js} +3 -3
- package/dist/_chunks/{PkToolShowDiagram-BdmG9gm8.js.map → PkToolShowDiagram-Dx1Ba0PG.js.map} +1 -1
- package/dist/_chunks/{PkToolShowEmail-Dn3JHYIR.js → PkToolShowEmail-DnFFgzom.js} +3 -3
- package/dist/_chunks/{PkToolShowEmail-Dn3JHYIR.js.map → PkToolShowEmail-DnFFgzom.js.map} +1 -1
- package/dist/_chunks/{PkToolShowForm-Du2nk7pq.js → PkToolShowForm-CKQQltJ6.js} +5 -6
- package/dist/_chunks/{PkToolShowForm-Du2nk7pq.js.map → PkToolShowForm-CKQQltJ6.js.map} +1 -1
- package/dist/_chunks/{PkToolShowImageGallery-C1lzlO0y.js → PkToolShowImageGallery-D99N_Plf.js} +2 -2
- package/dist/_chunks/{PkToolShowImageGallery-C1lzlO0y.js.map → PkToolShowImageGallery-D99N_Plf.js.map} +1 -1
- package/dist/_chunks/{PkToolShowLocation-CKhPxKFA.js → PkToolShowLocation-AfnrtFVJ.js} +3 -3
- package/dist/_chunks/{PkToolShowLocation-CKhPxKFA.js.map → PkToolShowLocation-AfnrtFVJ.js.map} +1 -1
- package/dist/_chunks/{PkToolShowMessage-U9CCU7eG.js → PkToolShowMessage-DUo2c-im.js} +3 -3
- package/dist/_chunks/{PkToolShowMessage-U9CCU7eG.js.map → PkToolShowMessage-DUo2c-im.js.map} +1 -1
- package/dist/_chunks/{PkToolShowProductList-UeiRMLHu.js → PkToolShowProductList-BN6Qk1_y.js} +3 -3
- package/dist/_chunks/{PkToolShowProductList-UeiRMLHu.js.map → PkToolShowProductList-BN6Qk1_y.js.map} +1 -1
- package/dist/_chunks/{PkToolShowQrCode-CypLrfh5.js → PkToolShowQrCode-BLqeBecX.js} +3 -3
- package/dist/_chunks/{PkToolShowQrCode-CypLrfh5.js.map → PkToolShowQrCode-BLqeBecX.js.map} +1 -1
- package/dist/_chunks/{PkToolShowSources-CsHLUF4L.js → PkToolShowSources-DpZb5FUP.js} +3 -3
- package/dist/_chunks/{PkToolShowSources-CsHLUF4L.js.map → PkToolShowSources-DpZb5FUP.js.map} +1 -1
- package/dist/_chunks/{PkToolShowSuggestedReply-D7g_qymH.js → PkToolShowSuggestedReply-C10nNgBs.js} +2 -2
- package/dist/_chunks/{PkToolShowSuggestedReply-D7g_qymH.js.map → PkToolShowSuggestedReply-C10nNgBs.js.map} +1 -1
- package/dist/_chunks/{PkToolShowVideo-BgKxdBcC.js → PkToolShowVideo-S9b4QHUj.js} +2 -2
- package/dist/_chunks/{PkToolShowVideo-BgKxdBcC.js.map → PkToolShowVideo-S9b4QHUj.js.map} +1 -1
- package/dist/_chunks/{PkToolShowWeather-LPd3tC77.js → PkToolShowWeather-CqhG430w.js} +2 -2
- package/dist/_chunks/{PkToolShowWeather-LPd3tC77.js.map → PkToolShowWeather-CqhG430w.js.map} +1 -1
- package/dist/_chunks/{PkToolShowWebPages-ep_erFF0.js → PkToolShowWebPages-txAZi_iG.js} +3 -3
- package/dist/_chunks/{PkToolShowWebPages-ep_erFF0.js.map → PkToolShowWebPages-txAZi_iG.js.map} +1 -1
- package/dist/_chunks/{VvCheckboxGroup.es-Bdu2gFLN.js → VvCheckboxGroup.es-CTrF3pue.js} +2 -2
- package/dist/_chunks/{VvCheckboxGroup.es-Bdu2gFLN.js.map → VvCheckboxGroup.es-CTrF3pue.js.map} +1 -1
- package/dist/_chunks/{VvCombobox.es-C0wpJIr_.js → VvCombobox.es-BWiXmQ_S.js} +10 -10
- package/dist/_chunks/{VvCombobox.es-C0wpJIr_.js.map → VvCombobox.es-BWiXmQ_S.js.map} +1 -1
- package/dist/_chunks/{VvInputText.es-Zgtw2YNw.js → VvInputText.es-Bo9I6g8H.js} +6 -6
- package/dist/_chunks/{VvInputText.es-Zgtw2YNw.js.map → VvInputText.es-Bo9I6g8H.js.map} +1 -1
- package/dist/_chunks/{VvRadioGroup.es-DZLL19SC.js → VvRadioGroup.es-9ooHCuik.js} +2 -2
- package/dist/_chunks/{VvRadioGroup.es-DZLL19SC.js.map → VvRadioGroup.es-9ooHCuik.js.map} +1 -1
- package/dist/_chunks/{VvSelect.es-ovnZRHG5.js → VvSelect.es-DG0VuWtP.js} +2 -2
- package/dist/_chunks/{VvSelect.es-ovnZRHG5.js.map → VvSelect.es-DG0VuWtP.js.map} +1 -1
- package/dist/_chunks/{VvTextarea.es-DbP5Lt2T.js → VvTextarea.es-Dg3pxdZy.js} +6 -6
- package/dist/_chunks/{VvTextarea.es-DbP5Lt2T.js.map → VvTextarea.es-Dg3pxdZy.js.map} +1 -1
- package/dist/_chunks/{dist-n5iFNYf-.js → dist-QdjZA6MJ.js} +143 -133
- package/dist/_chunks/{dist-n5iFNYf-.js.map → dist-QdjZA6MJ.js.map} +1 -1
- package/dist/_chunks/{index.es-dtdl3VFG.js → index.es-0YpCa4c5.js} +6 -6
- package/dist/_chunks/{index.es-dtdl3VFG.js.map → index.es-0YpCa4c5.js.map} +1 -1
- package/dist/_chunks/{index.es-BJnUA_36.js → index.es-CHkJ2TMJ.js} +10 -10
- package/dist/_chunks/{index.es-BJnUA_36.js.map → index.es-CHkJ2TMJ.js.map} +1 -1
- package/dist/ai-elements.es.js +1956 -1944
- package/dist/ai-elements.es.js.map +1 -1
- package/dist-vue/PkChatbot.js +1 -1
- package/dist-vue/PkChatbotEmptyState.js +1 -1
- package/dist-vue/PkChatbotInput.js +1 -1
- package/dist-vue/PkChatbotMessages.js +1 -1
- package/dist-vue/PkChatbotStepPayload.js +1 -1
- package/dist-vue/PkChatbotStepToolDetail.js +1 -1
- package/dist-vue/PkChatbotSteps.js +1 -1
- package/dist-vue/PkChatbotViewChat.js +1 -1
- package/dist-vue/_chunks/{PkChatbot-Di7R2CWN.js → PkChatbot-DE1bKmDi.js} +57 -57
- package/dist-vue/_chunks/{PkChatbot-Di7R2CWN.js.map → PkChatbot-DE1bKmDi.js.map} +1 -1
- package/dist-vue/_chunks/{PkChatbotEmptyState-C_ITdvH7.js → PkChatbotEmptyState-BtzBYOHJ.js} +2 -2
- package/dist-vue/_chunks/{PkChatbotEmptyState-C_ITdvH7.js.map → PkChatbotEmptyState-BtzBYOHJ.js.map} +1 -1
- package/dist-vue/_chunks/{PkChatbotInput-pEl3D2O-.js → PkChatbotInput-MSpF6SB6.js} +2 -2
- package/dist-vue/_chunks/{PkChatbotInput-pEl3D2O-.js.map → PkChatbotInput-MSpF6SB6.js.map} +1 -1
- package/dist-vue/_chunks/PkChatbotMessages-B6ONEJnZ.js +776 -0
- package/dist-vue/_chunks/PkChatbotMessages-B6ONEJnZ.js.map +1 -0
- package/dist-vue/_chunks/{PkChatbotStepPayload-BH6piqOi.js → PkChatbotStepPayload-XW4gT9AZ.js} +2 -2
- package/dist-vue/_chunks/{PkChatbotStepPayload-BH6piqOi.js.map → PkChatbotStepPayload-XW4gT9AZ.js.map} +1 -1
- package/dist-vue/_chunks/{PkChatbotStepToolDetail-BJ7xUvgi.js → PkChatbotStepToolDetail-C4-K6Glw.js} +3 -3
- package/dist-vue/_chunks/{PkChatbotStepToolDetail-BJ7xUvgi.js.map → PkChatbotStepToolDetail-C4-K6Glw.js.map} +1 -1
- package/dist-vue/_chunks/PkChatbotSteps-CrqjWpv0.js +190 -0
- package/dist-vue/_chunks/PkChatbotSteps-CrqjWpv0.js.map +1 -0
- package/dist-vue/_chunks/{PkChatbotViewChat-DT-rAU_r.js → PkChatbotViewChat-BMQtx1Gi.js} +9 -9
- package/dist-vue/_chunks/{PkChatbotViewChat-DT-rAU_r.js.map → PkChatbotViewChat-BMQtx1Gi.js.map} +1 -1
- package/dist-vue/_chunks/{PkStreamingMarkdown-DIaZEedG.js → PkStreamingMarkdown-D0IOaETI.js} +362 -359
- package/dist-vue/_chunks/PkStreamingMarkdown-D0IOaETI.js.map +1 -0
- package/dist-vue/_chunks/{PkToolShowArtifact-BCCUucVQ.js → PkToolShowArtifact-DHdJuzDi.js} +2 -2
- package/dist-vue/_chunks/{PkToolShowArtifact-BCCUucVQ.js.map → PkToolShowArtifact-DHdJuzDi.js.map} +1 -1
- package/dist-vue/_chunks/{PkToolShowContactForm-BXGxWSc2.js → PkToolShowContactForm-BB2X4UdQ.js} +2 -2
- package/dist-vue/_chunks/{PkToolShowContactForm-BXGxWSc2.js.map → PkToolShowContactForm-BB2X4UdQ.js.map} +1 -1
- package/dist-vue/_chunks/{PkToolShowDiagram-CZgrWvBr.js → PkToolShowDiagram-BH6ihikd.js} +2 -2
- package/dist-vue/_chunks/{PkToolShowDiagram-CZgrWvBr.js.map → PkToolShowDiagram-BH6ihikd.js.map} +1 -1
- package/dist-vue/_chunks/{PkToolShowEmail-DpC517Vn.js → PkToolShowEmail-DF__nKpR.js} +2 -2
- package/dist-vue/_chunks/{PkToolShowEmail-DpC517Vn.js.map → PkToolShowEmail-DF__nKpR.js.map} +1 -1
- package/dist-vue/_chunks/{PkToolShowForm-CIZpfAGK.js → PkToolShowForm-DUKIyj9V.js} +5 -5
- package/dist-vue/_chunks/{PkToolShowForm-CIZpfAGK.js.map → PkToolShowForm-DUKIyj9V.js.map} +1 -1
- package/dist-vue/_chunks/{PkToolShowMessage-B7flxVCU.js → PkToolShowMessage-Ck6VP-gw.js} +2 -2
- package/dist-vue/_chunks/{PkToolShowMessage-B7flxVCU.js.map → PkToolShowMessage-Ck6VP-gw.js.map} +1 -1
- package/dist-vue/_chunks/{PkToolShowProductList-B6fRtIpx.js → PkToolShowProductList-zfM8cx-l.js} +2 -2
- package/dist-vue/_chunks/{PkToolShowProductList-B6fRtIpx.js.map → PkToolShowProductList-zfM8cx-l.js.map} +1 -1
- package/dist-vue/_chunks/{PkToolShowSources-DDZokZow.js → PkToolShowSources-Dlaz2Y77.js} +3 -3
- package/dist-vue/_chunks/{PkToolShowSources-DDZokZow.js.map → PkToolShowSources-Dlaz2Y77.js.map} +1 -1
- package/dist-vue/_chunks/{PkToolShowWebPages-DY48ee6V.js → PkToolShowWebPages-CosBYLrE.js} +2 -2
- package/dist-vue/_chunks/{PkToolShowWebPages-DY48ee6V.js.map → PkToolShowWebPages-CosBYLrE.js.map} +1 -1
- package/dist-vue/_chunks/{PkUrl-DSGxrEM7.js → PkUrl-B5CNTQj9.js} +2 -2
- package/dist-vue/_chunks/{PkUrl-DSGxrEM7.js.map → PkUrl-B5CNTQj9.js.map} +1 -1
- package/dist-vue/_chunks/{utils-Coqik0XI.js → utils-C1666_6C.js} +58 -43
- package/dist-vue/_chunks/utils-C1666_6C.js.map +1 -0
- package/dist-vue/composables.js +1 -1
- package/dist-vue/index.js +38 -38
- package/dist-vue/packages/components/src/chat/PkStreamingMarkdown.d.ts +6 -0
- package/dist-vue/packages/components/src/chat/PkStreamingMarkdownAutoscroll.d.ts +1 -0
- package/dist-vue/packages/components/src/chat/utils.d.ts +16 -0
- package/package.json +1 -1
- package/dist/_chunks/PkStreamingMarkdown-DgBS4Ebc.js.map +0 -1
- package/dist/_chunks/utils-YJ0ZOLDG.js +0 -185
- package/dist/_chunks/utils-YJ0ZOLDG.js.map +0 -1
- package/dist-vue/_chunks/PkChatbotMessages-CGALOKwe.js +0 -771
- package/dist-vue/_chunks/PkChatbotMessages-CGALOKwe.js.map +0 -1
- package/dist-vue/_chunks/PkChatbotSteps-BhFupvbz.js +0 -180
- package/dist-vue/_chunks/PkChatbotSteps-BhFupvbz.js.map +0 -1
- package/dist-vue/_chunks/PkStreamingMarkdown-DIaZEedG.js.map +0 -1
- package/dist-vue/_chunks/utils-Coqik0XI.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PkStreamingMarkdown-CNI8aV8t.js","names":["gn","mn","P","I","$","E","y","N","R","U","W","D","C","G","F","X","z","A","Y","T","Tn","h","j","k","L","Q","q","J","V","x","Rn","B","fn","S","xn","ne","We"],"sources":["../../../../packages/utils/src/citations.ts","../../../../packages/utils/src/message.ts","../../../../packages/components/src/chat/utils.ts","../../../../node_modules/.pnpm/remend@1.3.1/node_modules/remend/dist/index.js","../../../../node_modules/.pnpm/marked@18.0.14/node_modules/marked/lib/marked.esm.js","../../../../packages/components/src/chat/PkStreamingMarkdown.vue","../../../../packages/components/src/chat/PkStreamingMarkdown.vue","../../../../packages/components/src/chat/PkStreamingMarkdown.vue"],"sourcesContent":["/**\n * OpenAI's Responses API (native `web_search`, also through Azure and the\n * gateway) emits inline citations as a marker wrapped in Private Use Area\n * delimiters:\n *\n * \\uE200cite\\uE202turn1view1\\uE201\n *\n * `cite` is the marker kind and `turn1view1` is the reference: browsing turn 1,\n * first page viewed (`search4` = 4th search result, `news2`, `fetch0`, …).\n * Several refs can share one block.\n *\n * Those delimiters are invisible in every renderer and get dropped by most text\n * pipelines (JSON round-trips, markdown sanitizers, terminal output), which\n * leaves the bare payload behind as literal prose: `citeturn1view1`. Either way\n * the marker is display noise: the usable data lives in the part's\n * `providerMetadata.<provider>.annotations`, which carries url, title and the\n * span the marker occupied.\n *\n * IMPORTANT: those annotation `start_index`/`end_index` offsets are computed on\n * the text WITH the delimiters still in it. Render the citations from the\n * annotations FIRST (walking them last-to-first so earlier offsets stay valid),\n * and only then strip. Stripping first makes every offset stale.\n */\n\n/** A whole PUA-delimited block, `\\uE200…\\uE201`, plus the space before it. */\nconst DELIMITED_MARKER = /[ \\t]*\\uE200[^\\uE201]*\\uE201/g\n\n/**\n * The same payload once the delimiters are already lost: a marker keyword glued\n * to one or more `turn<n><kind><n>` refs. Anchored on both the keyword and the\n * ref shape, because on degraded text there are no boundaries left to trust and\n * a looser pattern would start eating prose.\n */\nconst DEGRADED_MARKER =\n /[ \\t]*(?:cite|filecite|videocite|audiocite|imagecite|screenshot)(?:turn\\d+[a-z]+\\d+)+/gi\n\n/**\n * Orphan delimiters: a block truncated mid-stream, or one whose payload some\n * upstream pass already removed.\n */\nconst STRAY_DELIMITERS = /[\\uE200-\\uE20F]/g\n\n/**\n * Removes provider citation markers from text meant for display, in all three\n * states they show up in: well-formed, delimiter-stripped, and truncated.\n */\nexport function stripProviderCitationMarkers(text: string): string {\n if (!text) {\n return text\n }\n return text\n .replace(DELIMITED_MARKER, '')\n .replace(DEGRADED_MARKER, '')\n .replace(STRAY_DELIMITERS, '')\n}\n","import type { UIMessage } from 'ai'\nimport type { MediaSource, UIChatMessage } from 'models'\n\ntype MessagePart = UIMessage['parts'][number]\n\nexport function isTextPart(\n part?: MessagePart | null | undefined,\n): part is Extract<MessagePart, { type: 'text' }> {\n if (!part) {\n return false\n }\n return part.type === 'text'\n}\n\nexport function isToolPart(\n part?: MessagePart | null | undefined,\n): part is Extract<MessagePart, { type: `tool-${string}` }> {\n if (!part) {\n return false\n }\n return part.type.startsWith('tool-')\n}\n\nexport function getToolPartName(part?: MessagePart): string {\n if (!isToolPart(part)) {\n return ''\n }\n return part.type.slice('tool-'.length)\n}\n\nexport function isFilePart(\n part?: MessagePart | null | undefined,\n): part is Extract<MessagePart, { type: 'file' }> {\n if (!part) {\n return false\n }\n return part.type === 'file'\n}\n\n/**\n * Returns the persisted `MediaSource` carried by a file part, when present.\n * Uploaded attachments stash the full upload metadata (size, extension,\n * storage handle…) under `providerMetadata['8bot'].media`, which survives\n * persistence — so saved messages can surface size/details without a schema\n * change or extra request.\n */\nexport function getFilePartMedia(\n part?: MessagePart | null | undefined,\n): MediaSource | undefined {\n if (!isFilePart(part)) {\n return undefined\n }\n const container = part.providerMetadata?.['8bot'] as\n { media?: unknown } | undefined\n const media = container?.media\n return media && typeof media === 'object' && !Array.isArray(media)\n ? (media as MediaSource)\n : undefined\n}\n\nexport function isReasoningPart(\n part?: MessagePart | null | undefined,\n): part is Extract<MessagePart, { type: 'reasoning' }> {\n if (!part) {\n return false\n }\n return part.type === 'reasoning'\n}\n\nexport function hasPartText(\n part?: MessagePart | null | undefined,\n): part is Extract<MessagePart, { text: string }> {\n if (!part) {\n return false\n }\n if (isTextPart(part)) {\n return true\n }\n return (\n 'text' in part &&\n part.text !== undefined &&\n part.text !== null &&\n part.text !== ''\n )\n}\n\nexport function hasTextPart(\n message?: UIMessage | UIChatMessage | null | undefined,\n): boolean {\n if (!message) {\n return false\n }\n return (message as UIMessage).parts.some((part) => isTextPart(part))\n}\n\nexport function getTextPart(\n message?: UIMessage | UIChatMessage | null | undefined,\n): string | undefined {\n if (!message) {\n return undefined\n }\n const parts = (message as UIMessage).parts\n if (!Array.isArray(parts)) {\n return undefined\n }\n const textPart = parts.find((part) => isTextPart(part))\n return textPart?.text\n}\n\nexport function getMessageText(\n message?: UIMessage | UIChatMessage | null | undefined,\n): string {\n if (!message) {\n return ''\n }\n const parts = (message as UIMessage).parts\n if (!Array.isArray(parts)) {\n return ''\n }\n return parts\n .filter((p): p is Extract<MessagePart, { type: 'text' }> =>\n isTextPart(p),\n )\n .map((p) => p.text)\n .join('')\n}\n","import type { UIMessage } from 'ai'\nimport {\n isTextPart,\n isFilePart,\n isToolPart,\n isReasoningPart,\n hasPartText,\n hasTextPart,\n getTextPart,\n getMessageText,\n} from 'utils'\n\nexport {\n isTextPart,\n isFilePart,\n isToolPart,\n isReasoningPart,\n hasPartText,\n hasTextPart,\n getTextPart,\n getMessageText,\n}\n\n/**\n * Merges consecutive text parts into a single text part.\n * Claude (and other models) often produce multiple text parts during streaming\n * that should logically be a single block of text.\n */\nexport function mergeConsecutiveTextParts(\n parts: UIMessage['parts'],\n): UIMessage['parts'] {\n const merged: UIMessage['parts'] = []\n for (const part of parts) {\n if (!isTextPart(part)) {\n merged.push(part)\n continue\n }\n const prev = merged[merged.length - 1]\n if (prev && isTextPart(prev)) {\n merged[merged.length - 1] = { ...prev, text: prev.text + part.text }\n } else {\n merged.push(part)\n }\n }\n return merged\n}\n\nexport function isStreamingPart(\n part: UIMessage['parts'][number] | null | undefined,\n): part is Extract<UIMessage['parts'][number], { streaming?: boolean }> {\n if (!part) {\n return false\n }\n if ('state' in part) {\n return part.state === 'streaming' || part.state === 'input-streaming'\n }\n return false\n}\n\n/**\n * How much of a reasoning still being written its live box renders. The box is\n * a few lines tall and follows the bottom, while the reasoning of one turn runs\n * to tens of kilobytes: chat `st0Eg8iG0zUX0HQN` wrote 92KB, and parsing all of\n * it at every delta froze the tab. Four thousand characters leave a few screens\n * to scroll back through, and a finished step renders all of it.\n */\nexport const LIVE_REASONING_TAIL_LENGTH = 4000\n\n// A fence opener or closer, also inside a list item or a quote, whose markers\n// and indentation are skipped. The rest of the line tells them apart: a\n// closing fence carries no info string.\nconst FENCE_LINE =\n /^[ \\t]*(?:(?:[-*+]|\\d{1,9}[.)])[ \\t]+|>[ \\t]?)*(`{3,}|~{3,})(.*)$/gm\n\n/**\n * The end of a markdown text, at most `maxLength` characters long, cut on a\n * blank line (a line break when there is none) so it does not open on half a\n * paragraph. A table or a formula can still be cut in two. An ellipsis marks\n * the cut. A cut inside a fenced code block reopens the fence, or the rest of\n * the text would render as code and the code as prose.\n */\nexport function getMarkdownTail(markdown: string, maxLength: number): string {\n if (markdown.length <= maxLength) {\n return markdown\n }\n const from = markdown.length - maxLength\n // The boundary is looked for in the first half of the window only: the one\n // blank line of the window can be the last thing written, and cutting there\n // would leave nothing to render.\n const limit = from + maxLength / 2\n const boundary = (index: number, length: number) =>\n index !== -1 && index < limit ? index + length : undefined\n const cut =\n boundary(markdown.indexOf('\\n\\n', from), 2) ??\n boundary(markdown.indexOf('\\n', from), 1) ??\n from\n let openFence: string | undefined\n for (const match of markdown.matchAll(FENCE_LINE)) {\n if (match.index >= cut) {\n break\n }\n const [, marker, rest] = match\n if (!openFence) {\n // A backtick in a backtick fence's info string makes it inline\n // code, not a fence.\n if (marker[0] === '`' && rest.includes('`')) {\n continue\n }\n openFence = marker\n } else if (\n marker[0] === openFence[0] &&\n marker.length >= openFence.length &&\n !rest.trim()\n ) {\n openFence = undefined\n }\n }\n const reopen = openFence ? `${openFence}\\n` : ''\n return `…\\n\\n${reopen}${markdown.slice(cut)}`\n}\n\n/**\n * States a tool part goes through when it needs the user's approval. They are\n * rendered by `PkToolApprovalCard` whatever the tool is, so the decision (and\n * its outcome) stays visible in the transcript.\n */\nconst TOOL_APPROVAL_STATES = new Set([\n 'approval-requested',\n 'approval-responded',\n 'output-denied',\n])\n\nexport function isToolApprovalPart(\n part: UIMessage['parts'][number] | null | undefined,\n): boolean {\n if (!isToolPart(part)) {\n return false\n }\n if (TOOL_APPROVAL_STATES.has(part.state)) {\n return true\n }\n // An executed (or errored) call that went through the gate keeps its\n // verdict in `approval`: the card stays in the transcript, so the user's\n // decision remains visible in the chat and in the log viewers (parity\n // with requestConfirm, whose 'confirmed' output is persisted).\n return (part as { approval?: unknown }).approval != null\n}\n\n/**\n * The client-side tool the model uses to have an action it described approved.\n * It predates the SDK's approval gate and keeps its own round-trip (it resolves\n * through `addToolOutput`), but it asks the user the very same question, so it\n * shares `PkToolApprovalCard` instead of having a card of its own.\n */\nexport const CONFIRM_TOOL_NAME = 'requestConfirm'\n\nexport function isToolConfirmPart(\n part: UIMessage['parts'][number] | null | undefined,\n): boolean {\n return isToolPart(part) && part.type === `tool-${CONFIRM_TOOL_NAME}`\n}\n\n/** True for any part the confirmation card is responsible for. */\nexport function isConfirmationCardPart(\n part: UIMessage['parts'][number] | null | undefined,\n): boolean {\n return isToolApprovalPart(part) || isToolConfirmPart(part)\n}\n\n/** The id of the pending approval request on a tool part, if any. */\nexport function getToolApprovalId(\n part: UIMessage['parts'][number] | null | undefined,\n): string | undefined {\n if (!isToolPart(part)) {\n return undefined\n }\n return (part as { approval?: { id?: string } }).approval?.id\n}\n\nexport function getPartState(\n part: UIMessage['parts'][number] | null | undefined,\n): string | undefined {\n if (!part) {\n return undefined\n }\n if ('state' in part) {\n return part.state\n }\n return undefined\n}\n\nexport function isLoadingState(state?: string): boolean {\n if (!state) {\n return false\n }\n return ['streaming'].includes(state)\n}\n\nexport function getContrast(hexcolor: string = '000000'): 'black' | 'white' {\n let hex = hexcolor.replace('#', '')\n\n // Expand 3-character hex to 6-character (e.g., #ccc -> #cccccc)\n if (hex.length === 3) {\n hex = hex\n .split('')\n .map((char) => char + char)\n .join('')\n }\n\n // WCAG relative luminance\n const r = parseInt(hex.substring(0, 2), 16) / 255\n const g = parseInt(hex.substring(2, 4), 16) / 255\n const b = parseInt(hex.substring(4, 6), 16) / 255\n\n const linearize = (c: number) =>\n c <= 0.03928 ? c / 12.92 : ((c + 0.055) / 1.055) ** 2.4\n\n const luminance =\n 0.2126 * linearize(r) + 0.7152 * linearize(g) + 0.0722 * linearize(b)\n\n return luminance > 0.179 ? 'black' : 'white'\n}\n\n/**\n * Resolves the contrast color based on the user's `textColor` preference.\n * Falls back to WCAG auto-detection via `getContrast` when set to `'auto'` or `undefined`.\n */\nexport function resolveContrastColor(\n textColor: 'auto' | 'white' | 'black' | undefined,\n mainColor: string | undefined,\n): 'black' | 'white' {\n if (textColor === 'white' || textColor === 'black') {\n return textColor\n }\n return getContrast(mainColor)\n}\n\n/**\n * Formats a duration in milliseconds using the i18n `seconds` number format\n * (e.g. \"12,4 secondi\" / \"12.4 seconds\"). Returns undefined for durations\n * that would render as \"0 seconds\" (less than 0.05s).\n */\nexport function formatDuration(\n $n: (value: number, format: string) => string,\n ms?: number,\n): string | undefined {\n if (ms === undefined || ms < 50) {\n return undefined\n }\n return $n(ms / 1000, 'seconds')\n}\n\n/**\n * Stringifies a tool payload for the raw fallback view. Returns undefined for\n * empty values so the caller can skip rendering the block entirely.\n */\nexport function stringifyPayload(value: unknown): string | undefined {\n if (value === undefined) {\n return undefined\n }\n if (typeof value === 'string') {\n return value.trim() || undefined\n }\n try {\n const json = JSON.stringify(value, null, 2)\n return json === '{}' || json === '[]' ? undefined : json\n } catch {\n return undefined\n }\n}\n\n/**\n * True when a tool payload carries something worth rendering, so a caller can\n * skip the block without stringifying the value twice.\n */\nexport function hasPayload(value: unknown): boolean {\n return stringifyPayload(value) !== undefined\n}\n\n/**\n * Turns the answers of a form into the sentence the caller would have said.\n *\n * On a call the tool loop is over by the time the form is on screen, so the\n * answers go back to the agent as a user message (see `sendUserMessage` in\n * `useVoiceSession`). Each answer is paired with its question, because that is\n * how a person would say it and because the agent hears it with no widget\n * attached.\n */\nexport function formAnswerAsSpoken(\n part: unknown,\n answer: string | { answers: { id: string; value: unknown }[] },\n): string {\n const input = (\n part as {\n input?: {\n steps?: { id: string; question?: string }[]\n question?: string\n }\n }\n )?.input\n\n if (typeof answer === 'string') {\n const question = input?.question ?? input?.steps?.[0]?.question\n return question ? `${question} ${answer}` : answer\n }\n\n const questionById = new Map(\n (input?.steps ?? []).map((step) => [step.id, step.question]),\n )\n const lines = answer.answers\n .filter(\n ({ value }) =>\n value !== null &&\n value !== '' &&\n !(Array.isArray(value) && !value.length),\n )\n .map(({ id, value }) => {\n const said = Array.isArray(value) ? value.join(', ') : String(value)\n const question = questionById.get(id)\n return question ? `${question} ${said}` : said\n })\n\n return lines.join('. ')\n}\n\n/**\n * The choices of a form step, as the radio and checkbox editors take them.\n *\n * The `value` is the LABEL and not the position, because it is what travels\n * back to the model as the answer: it reads the words it wrote, not an index.\n * Nothing here caps the list, and nothing should: the number of options an\n * agent configures is advice to the model, so a step can legitimately carry\n * more (see `showForm.tool.ts`).\n */\nexport function formStepOptions(\n step: { options?: { label: string; description?: string }[] } | undefined,\n): { label: string; value: string; description?: string }[] {\n if (!step?.options) {\n return []\n }\n return step.options.map((option) => ({\n label: option.label,\n value: option.label,\n description: option.description,\n }))\n}\n\n/**\n * Spreads the answers a form comes back with onto one slot PER STEP.\n *\n * A form's answers travel paired with step ids, and the tool schema does not\n * enforce that those ids are unique: a `.refine()` there would refuse the whole\n * form over a duplicate, which is the failure the schema was just cured of (see\n * the gotchas entry \"A configurable cap does not belong in an inputSchema\").\n * So the duplicate has to be survivable here. Keyed by id, two steps sharing\n * one collapsed onto a single answer: the second question showed the first\n * one's reply, and submitting sent that reply twice. Keyed by position, each\n * step keeps its own.\n *\n * A duplicated id restores the same incoming value to every step claiming it,\n * which is as much as the payload allows: the ids are all it says.\n */\nexport function formAnswerSlots(\n steps: { id: string }[],\n output: unknown,\n): Record<number, unknown> {\n const slots: Record<number, unknown> = {}\n if (output === undefined || output === null) {\n return slots\n }\n // A legacy single-choice answer is the plain string, and it can only\n // belong to a single-step form.\n if (typeof output === 'string') {\n if (steps.length === 1) {\n slots[0] = output\n }\n return slots\n }\n const assign = (id: string, value: unknown) => {\n steps.forEach((step, index) => {\n if (step.id === id) {\n slots[index] = value\n }\n })\n }\n const list = (output as { answers?: unknown }).answers\n if (Array.isArray(list)) {\n for (const answer of list as { id?: unknown; value?: unknown }[]) {\n if (typeof answer?.id === 'string') {\n assign(answer.id, answer.value)\n }\n }\n return slots\n }\n // Forms answered on a platform channel (the Teams modal) come back as a\n // flat record keyed by step id.\n for (const [id, value] of Object.entries(\n output as Record<string, unknown>,\n )) {\n if (value !== undefined) {\n assign(id, value)\n }\n }\n return slots\n}\n\n// Provider-native web search tool part types\nexport const WEB_SEARCH_TOOL_TYPES = [\n 'tool-perplexity_search',\n 'tool-parallel_search',\n 'tool-web_search',\n 'tool-google_search',\n]\n\n// Tool part types with a dedicated rich rendering in PkChatbotStepToolDetail\nconst RICH_DETAIL_TOOL_TYPES = new Set([\n 'tool-searchInKnowledgeBase',\n 'tool-retrieveRevisedAnswers',\n 'tool-expandChunkContext',\n 'tool-readDocumentFile',\n 'tool-getWeather',\n 'tool-geocode',\n 'tool-recallUserMemory',\n 'tool-saveUserMemory',\n ...WEB_SEARCH_TOOL_TYPES,\n])\n\nexport function hasRichToolDetail(\n part?: UIMessage['parts'][number] | null,\n): boolean {\n return isToolPart(part) && RICH_DETAIL_TOOL_TYPES.has(part.type)\n}\n\nconst asRecord = (value: unknown): Record<string, unknown> | undefined =>\n value && typeof value === 'object' && !Array.isArray(value)\n ? (value as Record<string, unknown>)\n : undefined\n\nconst pickString = (\n record: Record<string, unknown> | undefined,\n ...keys: string[]\n): string | undefined => {\n for (const key of keys) {\n const value = record?.[key]\n if (typeof value === 'string' && value.trim()) {\n return value\n }\n }\n return undefined\n}\n\n/**\n * Returns a short inline summary for a tool part (search queries, location,\n * document name, ...) to be shown next to the step label without expanding\n * the step body.\n */\nexport function getToolPartSummary(\n part?: UIMessage['parts'][number] | null,\n): string | undefined {\n if (!isToolPart(part)) {\n return undefined\n }\n const input = asRecord('input' in part ? part.input : undefined)\n const output = asRecord('output' in part ? part.output : undefined)\n if (\n part.type === 'tool-searchInKnowledgeBase' ||\n WEB_SEARCH_TOOL_TYPES.includes(part.type)\n ) {\n const queries = input?.queries\n if (Array.isArray(queries)) {\n const valid = queries.filter(\n (query): query is string =>\n typeof query === 'string' && Boolean(query.trim()),\n )\n return valid.length ? valid.join(' · ') : undefined\n }\n return pickString(input, 'query', 'objective')\n }\n if (part.type === 'tool-retrieveRevisedAnswers') {\n return pickString(input, 'query')\n }\n if (part.type === 'tool-getWeather') {\n return (\n pickString(output, 'location') ?? pickString(input, 'locationName')\n )\n }\n if (part.type === 'tool-geocode') {\n return pickString(input, 'locationName')\n }\n if (part.type === 'tool-expandChunkContext') {\n return pickString(output, 'documentName')\n }\n if (part.type === 'tool-readDocumentFile') {\n return pickString(output, 'name')\n }\n if (part.type === 'tool-recallUserMemory') {\n return pickString(input, 'query')\n }\n if (part.type === 'tool-saveUserMemory') {\n return pickString(input, 'content', 'query')\n }\n return undefined\n}\n\n// Get part icon\nexport function getPartIcon(\n part?: UIMessage['parts'][number] | null,\n): string | undefined {\n if (isToolPart(part)) {\n if (part.type.includes('tool-subagent')) {\n return 'ri:robot-2-line'\n }\n if (part.type === 'tool-runWorker') {\n return 'ri:flow-chart'\n }\n if (part.type === 'tool-fetchTeamsChannelHistory') {\n return 'ri:chat-history-line'\n }\n if (part.type.includes('tool-mcp')) {\n return 'mcp'\n }\n if (part.type === 'tool-retrieveRevisedAnswers') {\n return 'ri:file-edit-line'\n }\n if (part.type === 'tool-searchInKnowledgeBase') {\n return 'ri:search-line'\n }\n if (part.type === 'tool-expandChunkContext') {\n return 'ri:file-search-line'\n }\n if (part.type === 'tool-readDocumentFile') {\n return 'ri:file-text-line'\n }\n if (part.type === 'tool-geocode') {\n return 'ri:map-2-line'\n }\n if (part.type === 'tool-getWeather') {\n return 'ri:sun-cloudy-line'\n }\n if (part.type === 'tool-recallUserMemory') {\n return 'ri:brain-line'\n }\n if (part.type === 'tool-saveUserMemory') {\n return 'ri:save-3-line'\n }\n if (part.type === 'tool-showWeather') {\n return 'ri:sun-line'\n }\n if (part.type === 'tool-showDiagram') {\n return 'ri:flow-chart'\n }\n if (part.type === 'tool-showSources') {\n return 'ri:book-2-line'\n }\n if (part.type === 'tool-showForm') {\n return 'ri:survey-line'\n }\n if (part.type === 'tool-showMultipleChoice') {\n return 'ri:checkbox-multiple-line'\n }\n if (part.type === 'tool-showArtifact') {\n return 'ri:file-code-line'\n }\n if (part.type === 'tool-showEmail') {\n return 'ri:mail-line'\n }\n if (part.type === 'tool-showMessage') {\n return 'ri:chat-1-line'\n }\n if (part.type === 'tool-showWebPages') {\n return 'ri:pages-line'\n }\n if (part.type === 'tool-showProductList') {\n return 'ri:shopping-bag-line'\n }\n if (part.type === 'tool-showContactForm') {\n return 'ri:send-plane-2-line'\n }\n if (part.type === 'tool-showCalendarEvent') {\n return 'ri:calendar-event-line'\n }\n if (part.type === 'tool-showComparison') {\n return 'ri:scales-line'\n }\n if (part.type === 'tool-showLocation') {\n return 'ri:map-pin-line'\n }\n if (part.type === 'tool-showQrCode') {\n return 'ri:qr-code-line'\n }\n if (part.type === 'tool-showImageGallery') {\n return 'ri:image-line'\n }\n if (part.type === 'tool-showVideo') {\n return 'ri:film-line'\n }\n if (part.type === 'tool-showSuggestedReply') {\n return 'ri:corner-down-right-line'\n }\n if (part.type === 'tool-requestGeolocation') {\n return 'ri:map-pin-user-line'\n }\n if (\n part.type === 'tool-perplexity_search' ||\n part.type === 'tool-parallel_search' ||\n part.type === 'tool-web_search' ||\n part.type === 'tool-google_search'\n ) {\n return 'ri:global-line'\n }\n return 'ri:tools-line'\n }\n if (isReasoningPart(part)) {\n return 'ri:lightbulb-line'\n }\n if (isTextPart(part)) {\n return 'ri:double-quotes-r'\n }\n return undefined\n}\n\n// Get part label\nexport function getToolPartLabel(\n $t: (key: string) => string,\n part?: UIMessage['parts'][number] | null,\n): string | undefined {\n if (isToolPart(part)) {\n if (part.type.includes('tool-subagent')) {\n return $t(`messagePart.runSubagent`)\n }\n if (part.type === 'tool-runWorker') {\n return $t(`messagePart.runWorker`)\n }\n if (part.type === 'tool-fetchTeamsChannelHistory') {\n return $t(`messagePart.fetchTeamsChannelHistory`)\n }\n if (part.type === 'tool-retrieveRevisedAnswers') {\n return $t(`messagePart.revisedAnswers`)\n }\n if (part.type === 'tool-searchInKnowledgeBase') {\n return $t(`messagePart.searchingDocuments`)\n }\n if (part.type === 'tool-expandChunkContext') {\n return $t(`messagePart.expandChunkContext`)\n }\n if (part.type === 'tool-readDocumentFile') {\n return $t(`messagePart.readDocumentFile`)\n }\n if (part.type === 'tool-geocode') {\n return $t(`messagePart.geocode`)\n }\n if (part.type === 'tool-getWeather') {\n return $t(`messagePart.getWeather`)\n }\n if (part.type === 'tool-recallUserMemory') {\n return $t(`messagePart.recallUserMemory`)\n }\n if (part.type === 'tool-saveUserMemory') {\n return $t(`messagePart.saveUserMemory`)\n }\n if (part.type === 'tool-showWeather') {\n return $t(`messagePart.showWeather`)\n }\n if (part.type === 'tool-showForm') {\n return $t(`messagePart.showForm`)\n }\n if (part.type === 'tool-showDiagram') {\n return $t(`messagePart.showDiagram`)\n }\n if (part.type === 'tool-showSources') {\n return $t(`messagePart.showSources`)\n }\n if (part.type === 'tool-showMultipleChoice') {\n return $t(`messagePart.showMultipleChoice`)\n }\n if (part.type === 'tool-showArtifact') {\n return $t(`messagePart.showArtifact`)\n }\n if (part.type === 'tool-showEmail') {\n return $t(`messagePart.showEmail`)\n }\n if (part.type === 'tool-showMessage') {\n return $t(`messagePart.showMessage`)\n }\n if (part.type === 'tool-showWebPages') {\n return $t(`messagePart.showWebPages`)\n }\n if (part.type === 'tool-showProducts') {\n return $t(`messagePart.showProducts`)\n }\n if (part.type === 'tool-showContactForm') {\n return $t(`messagePart.showContactForm`)\n }\n if (part.type === 'tool-showCalendarEvent') {\n return $t(`messagePart.showCalendarEvent`)\n }\n if (part.type === 'tool-showComparison') {\n return $t(`messagePart.showComparison`)\n }\n if (part.type === 'tool-showLocation') {\n return $t(`messagePart.showLocation`)\n }\n if (part.type === 'tool-showQrCode') {\n return $t(`messagePart.showQrCode`)\n }\n if (part.type === 'tool-showImageGallery') {\n return $t(`messagePart.showImageGallery`)\n }\n if (part.type === 'tool-showVideo') {\n return $t(`messagePart.showVideo`)\n }\n if (part.type === 'tool-showSuggestedReply') {\n return $t(`messagePart.showSuggestedReply`)\n }\n if (part.type === 'tool-requestGeolocation') {\n return $t(`messagePart.requestGeolocation`)\n }\n if (WEB_SEARCH_TOOL_TYPES.includes(part.type)) {\n return $t(`messagePart.webSearch`)\n }\n return $t(`messagePart.tool`)\n }\n if (isReasoningPart(part)) {\n return $t(`messagePart.reasoning`)\n }\n return $t(`messagePart.streaming`)\n}\n","var dn=Object.defineProperty,gn=Object.defineProperties;var hn=Object.getOwnPropertyDescriptors;var M=Object.getOwnPropertySymbols;var mn=Object.prototype.hasOwnProperty,pn=Object.prototype.propertyIsEnumerable;var P=(n,r,e)=>r in n?dn(n,r,{enumerable:true,configurable:true,writable:true,value:e}):n[r]=e,I=(n,r)=>{for(var e in r||(r={}))mn.call(r,e)&&P(n,e,r[e]);if(M)for(var e of M(r))pn.call(r,e)&&P(n,e,r[e]);return n},b=(n,r)=>gn(n,hn(r));var kn=n=>{let r=new Uint8Array(n.length+1),e=false,i=false,o=0;for(;o<n.length;){if(n[o]===\"\\\\\"&&o+1<n.length&&n[o+1]===\"`\"){let s=e||i?1:0;r[o+1]=s,r[o+2]=s,o+=2;continue}if(n.substring(o,o+3)===\"```\"){i=!i;let s=e||i?1:0,t=Math.min(o+3,n.length);for(let a=o+1;a<=t;a+=1)r[a]=s;o=t;continue}!i&&n[o]===\"`\"&&(e=!e),r[o+1]=e||i?1:0,o+=1;}return r},$=null,c=(n,r)=>{let e=$;return (e===null||e.text!==n)&&(e={text:n,lookup:kn(n)},$=e),e.lookup[Math.min(r,n.length)]===1},In=(n,r)=>{let e=n.substring(r,r+3)===\"```\",i=r>0&&n.substring(r-1,r+2)===\"```\",o=r>1&&n.substring(r-2,r+1)===\"```\";return e||i||o},E=n=>{let r=0;for(let e=0;e<n.length;e+=1){if(n[e]===\"\\\\\"&&e+1<n.length&&n[e+1]===\"`\"){e+=1;continue}n[e]===\"`\"&&!In(n,e)&&(r+=1);}return r},d=(n,r)=>{let e=false,i=false,o=-1;for(let s=0;s<n.length;s+=1){if(n[s]===\"\\\\\"&&s+1<n.length&&n[s+1]===\"`\"){s+=1;continue}if(n.substring(s,s+3)===\"```\"){i=!i,s+=2;continue}if(!i&&n[s]===\"`\")if(e){if(o<r&&r<s)return true;e=false,o=-1;}else e=true,o=s;}return false};var bn=/^(\\s*(?:[-*+]|\\d+[.)]) +)>(=?\\s*[$]?\\d)/gm,y=n=>!n||typeof n!=\"string\"||!n.includes(\">\")?n:n.replace(bn,(r,e,i,o)=>c(n,o)?r:`${e}\\\\>${i}`);var N=/(\\*\\*)([^*]*\\*?)$/,R=/(__)([^_]*?)$/,U=/(\\*\\*\\*)([^*]*?)$/,W=/(\\*)([^*]*?)$/,D=/(_)([^_]*?)$/,K=/(`)([^`]*?)$/,H=/(~~)([^~]*?)$/,g=/^[\\s_~*`]*$/,C=/^[\\s]*[-*+][\\s]+$/,w=/[\\p{L}\\p{N}_]/u,G=/^```[^`\\n]*```?$/,F=/^\\*{4,}$/;var X=/(__)([^_]+)_$/,z=/(~~)([^~]+)~$/;var A=/~~/g;var f=n=>{if(!n)return false;let r=n.charCodeAt(0);return r>=48&&r<=57||r>=65&&r<=90||r>=97&&r<=122||r===95?true:w.test(n)},Cn=(n,r)=>{let e=false;for(let i=0;i<r;i+=1)n[i]===\"`\"&&n[i+1]===\"`\"&&n[i+2]===\"`\"&&(e=!e,i+=2);return e},Y=(n,r)=>{let e=1;for(let i=r-1;i>=0;i-=1)if(n[i]===\"]\")e+=1;else if(n[i]===\"[\"&&(e-=1,e===0))return i;return -1},T=(n,r)=>{let e=1;for(let i=r+1;i<n.length;i+=1)if(n[i]===\"[\")e+=1;else if(n[i]===\"]\"&&(e-=1,e===0))return i;return -1},An=n=>n===\"inlineLatex\"||n===\"blockLatex\",Tn=(n,r)=>r===\"[\"&&n===\"none\"?\"blockLatex\":r===\"]\"&&n===\"blockLatex\"?\"none\":r===\"(\"&&n===\"none\"?\"inlineLatex\":r===\")\"&&n===\"inlineLatex\"?\"none\":null,Ln=(n,r)=>r?n===\"blockDollar\"?\"none\":\"blockDollar\":n===\"blockDollar\"?n:n===\"inlineDollar\"?\"none\":\"inlineDollar\",h=(n,r)=>{let e=\"none\";for(let i=0;i<n.length&&i<r;i+=1){if(n[i]===\"\\\\\"&&n[i+1]===\"$\"){i+=1;continue}if(n[i]===\"\\\\\"){let o=Tn(e,n[i+1]);if(o!==null){e=o,i+=1;continue}}if(n[i]===\"$\"&&!An(e)){let o=n[i+1]===\"$\";e=Ln(e,o),o&&(i+=1);}}return e!==\"none\"},Bn=(n,r)=>{for(let e=r;e<n.length;e+=1){if(n[e]===\")\")return true;if(n[e]===`\n`)return false}return false},m=(n,r)=>{for(let e=r-1;e>=0;e-=1){if(n[e]===\")\")return false;if(n[e]===\"(\")return e>0&&n[e-1]===\"]\"?Bn(n,r):false;if(n[e]===`\n`)return false}return false},j=(n,r)=>{for(let e=r-1;e>=0;e-=1){if(n[e]===\">\")return false;if(n[e]===\"<\"){let i=e+1<n.length?n[e+1]:\"\";return i>=\"a\"&&i<=\"z\"||i>=\"A\"&&i<=\"Z\"||i===\"/\"}if(n[e]===`\n`)return false}return false},p=(n,r,e)=>{let i=0;for(let l=r-1;l>=0;l-=1)if(n[l]===`\n`){i=l+1;break}let o=n.length;for(let l=r;l<n.length;l+=1)if(n[l]===`\n`){o=l;break}let s=n.substring(i,o),t=0,a=false;for(let l of s)if(l===e)t+=1;else if(l!==\" \"&&l!==\"\t\"){a=true;break}return t>=3&&!a};var Z=n=>n.includes(\"$\")||n.includes(\"\\\\(\")||n.includes(\"\\\\[\"),Sn=(n,r,e,i)=>e===\"\\\\\"||Z(n)&&h(n,r)?true:e!==\"*\"&&i===\"*\"?(r<n.length-2?n[r+2]:\"\")!==\"*\":e===\"*\"||(!e||e===\" \"||e===\"\t\"||e===`\n`)&&(!i||i===\" \"||i===\"\t\"||i===`\n`),k=n=>n===\" \"||n===\"\t\"||n===`\n`,On=(n,r)=>!!(n&&r&&f(n)&&f(r)),_n=(n,r,e,i)=>{let o=On(n,r),s=!!r&&!k(r),t=!!n&&!k(n);return o&&e%2===0&&!i?{count:false}:t&&e%2===1||s?{count:true,inWordAsteriskChain:o}:{count:false}},v=n=>{let r=0,e=false,i=false,o=n.length;for(let s=0;s<o;s+=1){if(n[s]===\"`\"&&s+2<o&&n[s+1]===\"`\"&&n[s+2]===\"`\"){e=!e,s+=2;continue}if(e)continue;if(n[s]!==\"*\"){f(n[s])||(i=false);continue}let t=s>0?n[s-1]:\"\",a=s<o-1?n[s+1]:\"\";if(Sn(n,s,t,a))continue;let l=_n(t,a,r,i);l.count&&(r+=1,i=l.inWordAsteriskChain);}return r},Mn=(n,r,e,i)=>!!(e===\"\\\\\"||Z(n)&&h(n,r)||m(n,r)||j(n,r)||e===\"_\"||i===\"_\"||e&&i&&f(e)&&f(i)),Pn=n=>{let r=0,e=false,i=n.length;for(let o=0;o<i;o+=1){if(n[o]===\"`\"&&o+2<i&&n[o+1]===\"`\"&&n[o+2]===\"`\"){e=!e,o+=2;continue}if(e||n[o]!==\"_\")continue;let s=o>0?n[o-1]:\"\",t=o<i-1?n[o+1]:\"\";Mn(n,o,s,t)||(r+=1);}return r},$n=n=>{let r=0,e=0,i=false;for(let o=0;o<n.length;o+=1){if(n[o]===\"`\"&&o+2<n.length&&n[o+1]===\"`\"&&n[o+2]===\"`\"){e>=3&&(r+=Math.floor(e/3)),e=0,i=!i,o+=2;continue}i||(n[o]===\"*\"?e+=1:(e>=3&&(r+=Math.floor(e/3)),e=0));}return e>=3&&(r+=Math.floor(e/3)),r},L=n=>{let r=0,e=false;for(let i=0;i<n.length;i+=1){if(n[i]===\"`\"&&i+2<n.length&&n[i+1]===\"`\"&&n[i+2]===\"`\"){e=!e,i+=2;continue}e||n[i]===\"*\"&&i+1<n.length&&n[i+1]===\"*\"&&(r+=1,i+=1);}return r},Q=n=>{let r=0,e=false;for(let i=0;i<n.length;i+=1){if(n[i]===\"`\"&&i+2<n.length&&n[i+1]===\"`\"&&n[i+2]===\"`\"){e=!e,i+=2;continue}e||n[i]===\"_\"&&i+1<n.length&&n[i+1]===\"_\"&&(r+=1,i+=1);}return r},En=(n,r,e)=>{if(!r||g.test(r))return true;let o=n.substring(0,e).lastIndexOf(`\n`),s=o===-1?0:o+1,t=n.substring(s,e);return C.test(t)&&r.includes(`\n`)?true:p(n,e,\"*\")},q=n=>{let r=n.match(N);if(!r)return n;let e=r[2],i=n.lastIndexOf(r[1]);return c(n,i)||d(n,i)||En(n,e,i)?n:L(n)%2===1?e.endsWith(\"*\")?`${n}*`:`${n}**`:n},yn=(n,r,e)=>{if(!r||g.test(r))return true;let o=n.substring(0,e).lastIndexOf(`\n`),s=o===-1?0:o+1,t=n.substring(s,e);return C.test(t)&&r.includes(`\n`)?true:p(n,e,\"_\")},J=n=>{let r=n.match(R);if(!r){let s=n.match(X);if(s){let t=n.lastIndexOf(s[1]);if(!(c(n,t)||d(n,t))&&Q(n)%2===1)return `${n}_`}return n}let e=r[2],i=n.lastIndexOf(r[1]);return c(n,i)||d(n,i)||yn(n,e,i)?n:Q(n)%2===1?`${n}__`:n},Nn=n=>{let r=false;for(let e=0;e<n.length;e+=1){if(n[e]===\"`\"&&e+2<n.length&&n[e+1]===\"`\"&&n[e+2]===\"`\"){r=!r,e+=2;continue}if(!r&&n[e]===\"*\"&&n[e-1]!==\"*\"&&n[e+1]!==\"*\"&&n[e-1]!==\"\\\\\"&&!h(n,e)){let i=e>0?n[e-1]:\"\",o=e<n.length-1?n[e+1]:\"\",s=!i||k(i),t=!o||k(o);if(s&&t||i&&o&&f(i)&&f(o)||t)continue;return e}}return -1},V=n=>{if(!n.match(W))return n;let e=Nn(n);if(e===-1||c(n,e)||d(n,e))return n;let i=n.substring(e+1);return !i||g.test(i)?n:v(n)%2===1?`${n}*`:n},x=n=>{let r=false;for(let e=0;e<n.length;e+=1){if(n[e]===\"`\"&&e+2<n.length&&n[e+1]===\"`\"&&n[e+2]===\"`\"){r=!r,e+=2;continue}if(!r&&n[e]===\"_\"&&n[e-1]!==\"_\"&&n[e+1]!==\"_\"&&n[e-1]!==\"\\\\\"&&!h(n,e)&&!m(n,e)){let i=e>0?n[e-1]:\"\",o=e<n.length-1?n[e+1]:\"\";if(i&&o&&f(i)&&f(o))continue;return e}}return -1},Rn=n=>{let r=n.length;for(;r>0&&n[r-1]===`\n`;)r-=1;if(r<n.length){let e=n.slice(0,r),i=n.slice(r);return `${e}_${i}`}return `${n}_`},Un=n=>{if(!n.endsWith(\"**\"))return null;let r=n.slice(0,-2);if(L(r)%2!==1)return null;let i=r.indexOf(\"**\"),o=x(r);return i!==-1&&o!==-1&&i<o?`${r}_**`:null},nn=n=>{if(!n.match(D))return n;let e=x(n);if(e===-1)return n;let i=n.substring(e+1);if(!i||g.test(i)||c(n,e)||d(n,e))return n;if(Pn(n)%2===1){let s=Un(n);return s!==null?s:Rn(n)}return n},Wn=n=>{let r=L(n),e=v(n);return r%2===0&&e%2===0},Dn=(n,r,e)=>!r||g.test(r)||c(n,e)||d(n,e)?true:p(n,e,\"*\"),en=n=>{if(F.test(n))return n;let r=n.match(U);if(!r)return n;let e=r[2],i=n.lastIndexOf(r[1]);return Dn(n,e,i)?n:$n(n)%2===1?Wn(n)?n:`${n}***`:n};var Kn=/<[a-zA-Z/][^>]*$/,rn=n=>{let r=n.match(Kn);return !r||r.index===void 0||c(n,r.index)?n:n.substring(0,r.index).trimEnd()};var Hn=n=>!n.match(G)||n.includes(`\n`)?null:n.endsWith(\"``\")&&!n.endsWith(\"```\")?`${n}\\``:n,wn=n=>(n.match(/```/g)||[]).length%2===1,on=n=>{let r=Hn(n);if(r!==null)return r;let e=n.match(K);if(e&&!wn(n)){let i=e[2];if(!i||g.test(i))return n;if(E(n)%2===1)return `${n}\\``}return n};var sn=(n,r)=>r>=2&&n.substring(r-2,r+1)===\"```\"||r>=1&&n.substring(r-1,r+2)===\"```\"||r<=n.length-3&&n.substring(r,r+3)===\"```\",Gn=n=>{let r=0,e=false;for(let i=0;i<n.length-1;i+=1)n[i]===\"`\"&&!sn(n,i)&&(e=!e),!e&&n[i]===\"$\"&&n[i+1]===\"$\"&&(r+=1,i+=1);return r},Fn=n=>{let r=0,e=false;for(let i=0;i<n.length;i+=1){if(n[i]===\"\\\\\"){i+=1;continue}if(n[i]===\"`\"&&!sn(n,i)){e=!e;continue}!e&&n[i]===\"$\"&&(i+1<n.length&&n[i+1]===\"$\"?i+=1:r+=1);}return r},Xn=n=>{if(n.endsWith(\"$\")&&!n.endsWith(\"$$\"))return `${n}$`;let r=n.indexOf(\"$$\");return r!==-1&&n.indexOf(`\n`,r)!==-1&&!n.endsWith(`\n`)?`${n}\n$$`:`${n}$$`},tn=n=>Gn(n)%2===0?n:Xn(n),ln=n=>Fn(n)%2===1?`${n}$`:n;var zn=(n,r,e)=>{if(n.substring(r+2).includes(\")\"))return null;let o=Y(n,r);if(o===-1||c(n,o))return null;let s=o>0&&n[o-1]===\"!\",t=s?o-1:o,a=n.substring(0,t);if(s)return a;let l=n.substring(o+1,r);return e===\"text-only\"?`${a}${l}`:`${a}[${l}](streamdown:incomplete-link)`},an=(n,r)=>{for(let e=0;e<r;e++)if(n[e]===\"[\"&&!c(n,e)){if(e>0&&n[e-1]===\"!\")continue;let i=T(n,e);if(i===-1)return e;if(i+1<n.length&&n[i+1]===\"(\"){let o=n.indexOf(\")\",i+2);o!==-1&&(e=o);}}return r},Yn=(n,r,e)=>{let i=r>0&&n[r-1]===\"!\",o=i?r-1:r;if(!n.substring(r+1).includes(\"]\")){let a=n.substring(0,o);if(i)return a;if(e===\"text-only\"){let l=an(n,r);return n.substring(0,l)+n.substring(l+1)}return `${n}](streamdown:incomplete-link)`}if(T(n,r)===-1){let a=n.substring(0,o);if(i)return a;if(e===\"text-only\"){let l=an(n,r);return n.substring(0,l)+n.substring(l+1)}return `${n}](streamdown:incomplete-link)`}return null},B=(n,r=\"protocol\")=>{let e=n.lastIndexOf(\"](\");if(e!==-1&&!c(n,e)){let i=zn(n,e,r);if(i!==null)return i}for(let i=n.length-1;i>=0;i-=1)if(n[i]===\"[\"&&!c(n,i)){let o=Yn(n,i,r);if(o!==null)return o}return n};var jn=/^-{1,2}$/,Qn=/^[\\s]*-{1,2}[\\s]+$/,Zn=/^={1,2}$/,vn=/^[\\s]*={1,2}[\\s]+$/,cn=n=>{if(!n||typeof n!=\"string\")return n;let r=n.lastIndexOf(`\n`);if(r===-1)return n;let e=n.substring(r+1),i=n.substring(0,r),o=e.trim();if(jn.test(o)&&!e.match(Qn)){let t=i.split(`\n`).at(-1);if(t&&t.trim().length>0)return `${n}\\u200B`}if(Zn.test(o)&&!e.match(vn)){let t=i.split(`\n`).at(-1);if(t&&t.trim().length>0)return `${n}\\u200B`}return n};var qn=/([\\p{L}\\p{N}_])~(?!~)(?=[\\p{L}\\p{N}_])/gu,un=n=>!n||typeof n!=\"string\"||!n.includes(\"~\")?n:n.replace(qn,(r,e,i)=>{let o=i+e.length;return c(n,o)?r:`${e}\\\\~`});var fn=n=>{var e,i;let r=n.match(H);if(r){let o=r[2];if(!o||g.test(o))return n;let s=n.lastIndexOf(r[1]);if(c(n,s)||d(n,s))return n;if(((e=n.match(A))==null?void 0:e.length)%2===1)return `${n}~~`}else {let o=n.match(z);if(o){let s=n.lastIndexOf(o[0].slice(0,2));if(c(n,s)||d(n,s))return n;if(((i=n.match(A))==null?void 0:i.length)%2===1)return `${n}~`}}return n};var S=n=>n!==false,Jn=n=>n===true,u={SINGLE_TILDE:0,COMPARISON_OPERATORS:5,HTML_TAGS:10,SETEXT_HEADINGS:15,LINKS:20,BOLD_ITALIC:30,BOLD:35,ITALIC_DOUBLE_UNDERSCORE:40,ITALIC_SINGLE_ASTERISK:41,ITALIC_SINGLE_UNDERSCORE:42,INLINE_CODE:50,STRIKETHROUGH:60,KATEX:70,INLINE_KATEX:75,DEFAULT:100},Vn=[{handler:{name:\"singleTilde\",handle:un,priority:u.SINGLE_TILDE},optionKey:\"singleTilde\"},{handler:{name:\"comparisonOperators\",handle:y,priority:u.COMPARISON_OPERATORS},optionKey:\"comparisonOperators\"},{handler:{name:\"htmlTags\",handle:rn,priority:u.HTML_TAGS},optionKey:\"htmlTags\"},{handler:{name:\"setextHeadings\",handle:cn,priority:u.SETEXT_HEADINGS},optionKey:\"setextHeadings\"},{handler:{name:\"links\",handle:B,priority:u.LINKS},optionKey:\"links\",earlyReturn:n=>n.endsWith(\"](streamdown:incomplete-link)\")},{handler:{name:\"boldItalic\",handle:en,priority:u.BOLD_ITALIC},optionKey:\"boldItalic\"},{handler:{name:\"bold\",handle:q,priority:u.BOLD},optionKey:\"bold\"},{handler:{name:\"italicDoubleUnderscore\",handle:J,priority:u.ITALIC_DOUBLE_UNDERSCORE},optionKey:\"italic\"},{handler:{name:\"italicSingleAsterisk\",handle:V,priority:u.ITALIC_SINGLE_ASTERISK},optionKey:\"italic\"},{handler:{name:\"italicSingleUnderscore\",handle:nn,priority:u.ITALIC_SINGLE_UNDERSCORE},optionKey:\"italic\"},{handler:{name:\"inlineCode\",handle:on,priority:u.INLINE_CODE},optionKey:\"inlineCode\"},{handler:{name:\"strikethrough\",handle:fn,priority:u.STRIKETHROUGH},optionKey:\"strikethrough\"},{handler:{name:\"katex\",handle:tn,priority:u.KATEX},optionKey:\"katex\"},{handler:{name:\"inlineKatex\",handle:ln,priority:u.INLINE_KATEX},optionKey:\"inlineKatex\"}],xn=n=>{var e;let r=(e=n==null?void 0:n.linkMode)!=null?e:\"protocol\";return Vn.filter(({handler:i,optionKey:o})=>i.name===\"links\"?S(n==null?void 0:n.links)||S(n==null?void 0:n.images):i.name===\"inlineKatex\"?Jn(n==null?void 0:n.inlineKatex):S(n==null?void 0:n[o])).map(({handler:i,earlyReturn:o})=>i.name===\"links\"?{handler:b(I({},i),{handle:s=>B(s,r)}),earlyReturn:r===\"protocol\"?o:void 0}:{handler:i,earlyReturn:o})},ne=(n,r)=>{var t;if(!n||typeof n!=\"string\")return n;let e=n.endsWith(\" \")&&!n.endsWith(\" \")?n.slice(0,-1):n,i=xn(r),o=((t=r==null?void 0:r.handlers)!=null?t:[]).map(a=>{var l;return {handler:b(I({},a),{priority:(l=a.priority)!=null?l:u.DEFAULT}),earlyReturn:void 0}}),s=[...i,...o].sort((a,l)=>{var O,_;return ((O=a.handler.priority)!=null?O:0)-((_=l.handler.priority)!=null?_:0)});for(let{handler:a,earlyReturn:l}of s)if(e=a.handle(e),l!=null&&l(e))return e;return e},We=ne;export{We as default,Cn as isWithinCodeBlock,m as isWithinLinkOrImageUrl,h as isWithinMathBlock,f as isWordChar};","/**\n * marked v18.0.14 - a markdown parser\n * Copyright (c) 2018-2026, MarkedJS. (MIT License)\n * Copyright (c) 2011-2018, Christopher Jeffrey. (MIT License)\n * https://github.com/markedjs/marked\n */\n\n/**\n * DO NOT EDIT THIS FILE\n * The code in this file is generated from files in ./src/\n */\n\nfunction I(){return{async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null}}var y=I();function W(l){y=l}var A={exec:()=>null};function C(l){let e=[];return t=>{let n=Math.max(0,Math.min(3,t-1)),s=e[n];return s||(s=l(n),e[n]=s),s}}function h(l,e=\"\"){let t=typeof l==\"string\"?l:l.source,n={replace:(s,r)=>{let o=typeof r==\"string\"?r:r.source;return o=o.replace(x.caret,\"$1\"),t=t.replace(s,o),n},getRegex:()=>new RegExp(t,e)};return n}var _e=((l=\"\")=>{try{return!!new RegExp(\"(?<=1)(?<!1)\"+l)}catch{return!1}})(),x={codeRemoveIndent:/^(?: {0,3}\\t| {1,4})/gm,outputLinkReplace:/\\\\([\\[\\]])/g,indentCodeCompensation:/^(\\s+)(?:```)/,beginningSpace:/^\\s+/,endingHash:/#$/,startingSpaceChar:/^ /,endingSpaceChar:/ $/,endingSpaceTabChar:/[ \\t]$/,nonSpaceChar:/[^ ]/,newLineCharGlobal:/\\n/g,tabCharGlobal:/\\t/g,leadingSpaceTab:/^[ \\t]+/,multipleSpaceGlobal:/\\s+/g,blankLine:/^[ \\t]*$/,doubleBlankLine:/\\n[ \\t]*\\n[ \\t]*$/,blockquoteStart:/^ {0,3}>/,blockquoteSetextReplace:/\\n {0,3}((?:=+|-+) *)(?=\\n|$)/g,blockquoteSetextReplace2:/^ {0,3}>[ \\t]?/gm,listReplaceNesting:/^ {1,4}(?=( {4})*[^ ])/g,listIsTask:/^\\[[ xX]\\] +\\S/,listReplaceTask:/^\\[[ xX]\\] +/,listTaskCheckbox:/\\[[ xX]\\]/,anyLine:/\\n.*\\n/,hrefBrackets:/^<(.*)>$/,tableDelimiter:/[:|]/,tableAlignChars:/^\\||\\| *$/g,tableRowBlankLine:/\\n[ \\t]*$/,tableAlignRight:/^ *-+: *$/,tableAlignCenter:/^ *:-+: *$/,tableAlignLeft:/^ *:-+ *$/,startATag:/^<a /i,endATag:/^<\\/a>/i,startPreScriptTag:/^<(pre|code|kbd|script)(\\s|>)/i,endPreScriptTag:/^<\\/(pre|code|kbd|script)(\\s|>)/i,startAngleBracket:/^</,endAngleBracket:/>$/,pedanticHrefTitle:/^([^'\"]*[^\\s])\\s+(['\"])(.*)\\2/,unicodeAlphaNumeric:/[\\p{L}\\p{N}]/u,numericCharacterReference:/&#(?:(\\d{1,7})|[Xx]([A-Fa-f0-9]{1,6}));/g,escapeTest:/[&<>\"']/,escapeReplace:/[&<>\"']/g,escapeTestNoEncode:/[<>\"']|&(?!(#\\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\\w+);)/,escapeReplaceNoEncode:/[<>\"']|&(?!(#\\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\\w+);)/g,caret:/(^|[^\\[])\\^/g,percentDecode:/%25/g,findPipe:/\\|/g,splitPipe:/ \\|/,slashPipe:/\\\\\\|/g,carriageReturn:/\\r\\n|\\r/g,spaceLine:/^ +$/gm,notSpaceStart:/^\\S*/,endingNewline:/\\n$/,listItemRegex:l=>new RegExp(`^( {0,3}${l})((?:[\t ][^\\\\n]*)?(?:\\\\n|$))`),nextBulletRegex:C(l=>new RegExp(`^ {0,${l}}(?:[*+-]|\\\\d{1,9}[.)])((?:[ \t][^\\\\n]*)?(?:\\\\n|$))`)),hrRegex:C(l=>new RegExp(`^ {0,${l}}((?:-[ \t]*){3,}|(?:_[ \t]*){3,}|(?:\\\\*[ \t]*){3,})(?:\\\\n+|$)`)),fencesBeginRegex:C(l=>new RegExp(`^ {0,${l}}(?:\\`\\`\\`|~~~)`)),headingBeginRegex:C(l=>new RegExp(`^ {0,${l}}#`)),htmlBeginRegex:C(l=>new RegExp(`^ {0,${l}}(?:</?(?:${N})(?: +|$|/?>)|<(?:script|pre|style|textarea|!--))`,\"i\")),blockquoteBeginRegex:C(l=>new RegExp(`^ {0,${l}}>`))},$e=/^(?:[ \\t]*(?:\\n|$))+/,Le=/^((?: {4}| {0,3}\\t)[^\\n]+(?:\\n(?:[ \\t]*(?:\\n|$))*)?)+/,ze=/^ {0,3}(`{3,}(?=[^`\\n]*(?:\\n|$))|~{3,})([^\\n]*)(?:\\n|$)(?:|([\\s\\S]*?)(?:\\n|$))(?: {0,3}\\1[~`]* *(?=\\n|$)|$)/,G=/^ {0,3}((?:-[\\t ]*){3,}|(?:_[ \\t]*){3,}|(?:\\*[ \\t]*){3,})(?:\\n+|$)/,Ae=/^ {0,3}(#{1,6})(?=\\s|$)(.*)(?:\\n+|$)/,J=/ {0,3}(?:[*+-]|\\d{1,9}[.)])/,ce=/^(?!bull |blockCode|fences|blockquote|heading|html|table)((?:.|\\n(?!\\s*?\\n|bull |fences|blockquote|heading|hr|html|table))+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/,he=h(ce).replace(/bull/g,J).replace(/blockCode/g,/(?: {4}| {0,3}\\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}(?:\\s|$)/).replace(/hr/g,/ {0,3}(?:(?:-[\\t ]*){3,}|(?:_[ \\t]*){3,}|(?:\\*[ \\t]*){3,})(?:\\n+|$)/).replace(/html/g,/ {0,3}<[^\\n>]+>\\n/).replace(/\\|table/g,\"\").getRegex(),Ee=h(ce).replace(/bull/g,J).replace(/blockCode/g,/(?: {4}| {0,3}\\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}(?:\\s|$)/).replace(/hr/g,/ {0,3}(?:(?:-[\\t ]*){3,}|(?:_[ \\t]*){3,}|(?:\\*[ \\t]*){3,})(?:\\n+|$)/).replace(/html/g,/ {0,3}<[^\\n>]+>\\n/).replace(/table/g,/ {0,3}\\|?(?:[:\\- ]*\\|)+[\\:\\- ]*\\n/).getRegex(),V=/^([^\\n]+(?:\\n(?!hr|heading|lheading|blockquote|fences|list|html|table|[ \\t]+\\n)[^\\n]+)*)/,Me=/^[^\\n]+/,Y=/(?!\\s*\\])(?:\\\\[\\s\\S]|[^\\[\\]\\\\])+/,Ie=h(/^ {0,3}\\[(label)\\]: *(?:\\n[ \\t]*)?([^<\\s][^\\s]*|<.*?>)(?:(?: +(?:\\n[ \\t]*)?| *\\n[ \\t]*)(title))? *(?:\\n+|$)/).replace(\"label\",Y).replace(\"title\",/(?:\"(?:\\\\\"?|[^\"\\\\])*\"|'[^'\\n]*(?:\\n[^'\\n]+)*\\n?'|\\([^()]*\\))/).getRegex(),Ce=h(/^(bull)([ \\t][^\\n]*?)?(?:\\n|$)/).replace(/bull/g,J).getRegex(),N=\"address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul\",ee=/<!--(?:-?>|[\\s\\S]*?(?:-->|$))/,Be=h(\"^ {0,3}(?:<(script|pre|style|textarea)[\\\\s>][\\\\s\\\\S]*?(?:</\\\\1>[^\\\\n]*\\\\n*|$)|comment[^\\\\n]*(\\\\n+|$)|<\\\\?[\\\\s\\\\S]*?(?:\\\\?>[^\\\\n]*\\\\n*|$)|<![A-Z][\\\\s\\\\S]*?(?:>[^\\\\n]*\\\\n*|$)|<!\\\\[CDATA\\\\[[\\\\s\\\\S]*?(?:\\\\]\\\\]>[^\\\\n]*\\\\n*|$)|</?(tag)(?: +|\\\\n|/?>)[\\\\s\\\\S]*?(?:(?:\\\\n[ \t]*)+\\\\n|$)|<(?!script|pre|style|textarea)([a-z][a-z0-9-]*)(?:attribute)*? */?>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n[ \t]*)+\\\\n|$)|</(?!script|pre|style|textarea)[a-z][a-z0-9-]*\\\\s*>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n[ \t]*)+\\\\n|$))\",\"i\").replace(\"comment\",ee).replace(\"tag\",N).replace(\"attribute\",/ +[a-zA-Z:_][\\w.:-]*(?: *= *\"[^\"\\n]*\"| *= *'[^'\\n]*'| *= *[^\\s\"'=<>`]+)?/).getRegex(),de=l=>h(V).replace(\"hr\",G).replace(\"heading\",\" {0,3}#{1,6}(?:\\\\s|$)\").replace(\"|lheading\",\"\").replace(\"|table\",\"\").replace(\"blockquote\",\" {0,3}>\").replace(\"fences\",\" {0,3}(?:`{3,}(?=[^`\\\\n]*(?:\\\\n|$))|~~~)[^\\\\n]*(?:\\\\n|$)\").replace(\"list\",l).replace(\"html\",\"</?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|textarea|!--)\").replace(\"tag\",N).getRegex(),De=de(/ {0,3}(?:[*+-]|1[.)])[ \\t]+[^ \\t\\n]/),qe=de(/ {0,3}(?:[*+-]|\\d{1,9}[.)])(?:[ \\t]|\\n|$)/),ve=h(/^( {0,3}> ?(paragraph|[^\\n]*)(?:\\n|$))+/).replace(\"paragraph\",qe).getRegex(),te={blockquote:ve,code:Le,def:Ie,fences:ze,heading:Ae,hr:G,html:Be,lheading:he,list:Ce,newline:$e,paragraph:De,table:A,text:Me},le=h(\"^ *([^\\\\n ].*)\\\\n {0,3}((?:\\\\| *)?:?-+:? *(?:\\\\| *:?-+:? *)*(?:\\\\| *)?)(?:\\\\n((?:(?! *\\\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\\\n|$))*)\\\\n*|$)\").replace(\"hr\",G).replace(\"heading\",\" {0,3}#{1,6}(?:\\\\s|$)\").replace(\"blockquote\",\" {0,3}>\").replace(\"code\",\"(?: {4}| {0,3}\t)[^\\\\n]\").replace(\"fences\",\" {0,3}(?:`{3,}(?=[^`\\\\n]*(?:\\\\n|$))|~~~)[^\\\\n]*(?:\\\\n|$)\").replace(\"list\",\" {0,3}(?:[*+-]|1[.)])[ \\\\t]\").replace(\"html\",\"</?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|textarea|!--)\").replace(\"tag\",N).getRegex(),Ze={...te,lheading:Ee,table:le,paragraph:h(V).replace(\"hr\",G).replace(\"heading\",\" {0,3}#{1,6}(?:\\\\s|$)\").replace(\"|lheading\",\"\").replace(\"table\",le).replace(\"blockquote\",\" {0,3}>\").replace(\"fences\",\" {0,3}(?:`{3,}(?=[^`\\\\n]*(?:\\\\n|$))|~~~)[^\\\\n]*(?:\\\\n|$)\").replace(\"list\",\" {0,3}(?:[*+-]|1[.)])[ \\\\t]+[^ \\\\t\\\\n]\").replace(\"html\",\"</?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|textarea|!--)\").replace(\"tag\",N).getRegex()},He={...te,html:h(`^ *(?:comment *(?:\\\\n|\\\\s*$)|<(tag)[\\\\s\\\\S]+?</\\\\1> *(?:\\\\n{2,}|\\\\s*$)|<tag(?:\"[^\"]*\"|'[^']*'|\\\\s[^'\"/>\\\\s]*)*?/?> *(?:\\\\n{2,}|\\\\s*$))`).replace(\"comment\",ee).replace(/tag/g,\"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\\\b)\\\\w+(?!:|[^\\\\w\\\\s@]*@)\\\\b\").getRegex(),def:/^ *\\[([^\\]]+)\\]: *<?([^\\s>]+)>?(?: +([\"(][^\\n]+[\")]))? *(?:\\n+|$)/,heading:/^(#{1,6})(.*)(?:\\n+|$)/,fences:A,lheading:/^(.+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/,paragraph:h(V).replace(\"hr\",G).replace(\"heading\",` *#{1,6} *[^\n]`).replace(\"lheading\",he).replace(\"|table\",\"\").replace(\"blockquote\",\" {0,3}>\").replace(\"|fences\",\"\").replace(\"|list\",\"\").replace(\"|html\",\"\").replace(\"|tag\",\"\").getRegex()},Ge=/^\\\\([!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~])/,Ne=/^(`+)([^`]|[^`][\\s\\S]*?[^`])\\1(?!`)/,ke=/^( {2,}|\\\\)\\n(?!\\s*$)[ \\t]*/,Qe=/^(`+|[^`])(?:(?= {2,}\\n)|[\\s\\S]*?(?:(?=[\\\\<!\\[`*_]|\\b_|$)|[^ ](?= {2,}\\n)))/,$=/[\\p{P}\\p{S}]/u,B=/[\\s\\p{P}\\p{S}]/u,Q=/[^\\s\\p{P}\\p{S}]/u,je=h(/^((?![*_])punctSpace)/,\"u\").replace(/punctSpace/g,B).getRegex(),Fe=/[\\p{Pi}\\p{Ps}\"']/u,ge=/(?!~)[\\p{P}\\p{S}]/u,Ue=/(?!~)[\\s\\p{P}\\p{S}]/u,Ke=/(?:[^\\s\\p{P}\\p{S}]|~)/u,We=h(/link|precode-code|html/,\"g\").replace(\"link\",/\\[(?:[^\\[\\]`]|(?<a>`+)[^`]+\\k<a>(?!`))*?\\]\\((?:\\\\[\\s\\S]|[^\\\\\\(\\)]|\\((?:\\\\[\\s\\S]|[^\\\\\\(\\)])*\\))*\\)/).replace(\"precode-\",_e?\"(?<!`)()\":\"(^^|[^`])\").replace(\"code\",/(?<b>`+)[^`]+\\k<b>(?!`)/).replace(\"html\",/<(?! )[^<>]*?>/).getRegex(),fe=/^(?:\\*+(?:((?!\\*)punct)|([^\\s*]))?)|^_+(?:((?!_)punct)|([^\\s_]))?/,Xe=h(fe,\"u\").replace(/punct/g,$).getRegex(),Je=h(fe,\"u\").replace(/punct/g,ge).getRegex(),Ve=/^(?:\\*+(?:((?!\\*)(?!openQuote)punct)|([^\\s*]))?)|^_+(?:((?!_)(?!openQuote)punct)|([^\\s_]))?/,Ye=h(Ve,\"u\").replace(/openQuote/g,Fe).replace(/punct/g,$).getRegex(),me=\"^[^_*]*?__[^_*]*?\\\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\\\*)punct(\\\\*+)(?=[\\\\s]|$)|notPunctSpace(\\\\*+)(?!\\\\*)(?=punctSpace|$)|(?!\\\\*)punctSpace(\\\\*+)(?=notPunctSpace)|[\\\\s](\\\\*+)(?!\\\\*)(?=punct)|(?!\\\\*)punct(\\\\*+)(?!\\\\*)(?=punct)|notPunctSpace(\\\\*+)(?=notPunctSpace)\",et=h(me,\"gu\").replace(/notPunctSpace/g,Q).replace(/punctSpace/g,B).replace(/punct/g,$).getRegex(),tt=h(me,\"gu\").replace(/notPunctSpace/g,Ke).replace(/punctSpace/g,Ue).replace(/punct/g,ge).getRegex(),nt=\"^[^_*]*?__[^_*]*?\\\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\\\*)punct(\\\\*+)(?=[\\\\s]|$)|notPunctSpace(\\\\*+)(?!\\\\*)(?=punctSpace|$)|(?!\\\\*)[\\\\s](\\\\*+)(?=notPunctSpace)|[\\\\s](\\\\*+)(?!\\\\*)(?=punct)|(?!\\\\*)punct(\\\\*+)(?!\\\\*)(?=punct)|(?:(?!\\\\*)punct|notPunctSpace)(\\\\*+)(?!\\\\*)(?=notPunctSpace)\",rt=h(nt,\"gu\").replace(/notPunctSpace/g,Q).replace(/punctSpace/g,B).replace(/punct/g,$).getRegex(),st=h(\"^[^_*]*?\\\\*\\\\*[^_*]*?_[^_*]*?(?=\\\\*\\\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)punctSpace(_+)(?=notPunctSpace)|[\\\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)\",\"gu\").replace(/notPunctSpace/g,Q).replace(/punctSpace/g,B).replace(/punct/g,$).getRegex(),it=\"^[^_*]*?\\\\*\\\\*[^_*]*?_[^_*]*?(?=\\\\*\\\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)[\\\\s](_+)(?=notPunctSpace)|[\\\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)|(?:(?!_)punct|notPunctSpace)(_+)(?!_)(?=notPunctSpace)\",ot=h(it,\"gu\").replace(/notPunctSpace/g,Q).replace(/punctSpace/g,B).replace(/punct/g,$).getRegex(),at=h(/^~~?(?:((?!~)punct)|[^\\s~])/,\"u\").replace(/punct/g,$).getRegex(),lt=\"^[^~]+(?=[^~])|(?!~)punct(~~?)(?=[\\\\s]|$)|notPunctSpace(~~?)(?!~)(?=punctSpace|$)|(?!~)punctSpace(~~?)(?=notPunctSpace)|[\\\\s](~~?)(?!~)(?=punct)|(?!~)punct(~~?)(?!~)(?=punct)|notPunctSpace(~~?)(?=notPunctSpace)\",ut=h(lt,\"gu\").replace(/notPunctSpace/g,Q).replace(/punctSpace/g,B).replace(/punct/g,$).getRegex(),pt=h(/\\\\(punct)/,\"gu\").replace(/punct/g,$).getRegex(),ct=h(/^<(scheme:[^\\s\\x00-\\x1f<>]*|email)>/).replace(\"scheme\",/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/).replace(\"email\",/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/).getRegex(),ht=h(ee).replace(\"(?:-->|$)\",\"-->\").getRegex(),dt=h(\"^comment|^</[a-zA-Z][a-zA-Z0-9-]*\\\\s*>|^<[a-zA-Z][a-zA-Z0-9-]*(?:attribute)*?\\\\s*/?>|^<\\\\?[\\\\s\\\\S]*?\\\\?>|^<![a-zA-Z]+\\\\s[\\\\s\\\\S]*?>|^<!\\\\[CDATA\\\\[[\\\\s\\\\S]*?\\\\]\\\\]>\").replace(\"comment\",ht).replace(\"attribute\",/\\s+[a-zA-Z:_][\\w.:-]*(?:\\s*=\\s*\"[^\"]*\"|\\s*=\\s*'[^']*'|\\s*=\\s*[^\\s\"'=<>`]+)?/).getRegex(),xe=/\\[(?:\\\\[\\s\\S]|[^\\[\\]\\\\])*\\]/,U=h(/(?:\\[(?:brackets|\\\\[\\s\\S]|[^\\[\\]\\\\])*\\]|\\\\[\\s\\S]|`+(?!`)[^`]*?`+(?!`)|``+(?=\\])|[^\\[\\]\\\\`])*?/).replace(\"brackets\",xe).getRegex(),kt=h(/^!?\\[(label)\\]\\(\\s*(href)(?:(?:[ \\t]+(?:\\n[ \\t]*)?|\\n[ \\t]*)(title))?\\s*\\)/).replace(\"label\",U).replace(\"href\",/<(?:\\\\.|[^\\n<>\\\\])+>|[^ \\t\\n\\x00-\\x1f]+|(?=\\))/).replace(\"title\",/\"(?:\\\\\"?|[^\"\\\\])*\"|'(?:\\\\'?|[^'\\\\])*'|\\((?:\\\\\\)?|[^)\\\\])*\\)/).getRegex(),gt=h(/^!?\\[(label)\\]\\[(ref)\\]/).replace(\"label\",U).replace(\"ref\",Y).getRegex(),ft=h(/^!?\\[(ref)\\](?:\\[\\])?/).replace(\"ref\",Y).getRegex(),ue=/(?!\\s*\\])(?:\\\\[\\s\\S]|[^\\[\\]\\\\]){1,999}/,mt=h(/(?:[^\\[\\]\\\\`]*(?:\\[(?:brackets|\\\\[\\s\\S]|[^\\[\\]\\\\])*\\]|\\\\[\\s\\S]|`+(?!`)[^`]*?`+(?!`)|``+(?=\\]))){0,999}?[^\\[\\]\\\\`]*?/).replace(\"brackets\",xe).getRegex(),xt=h(\"reflink|nolink(?!\\\\()\",\"g\").replace(\"reflink\",h(/^!?\\[(label)\\]\\[(ref)\\]/).replace(\"label\",mt).replace(\"ref\",ue).getRegex()).replace(\"nolink\",h(/^!?\\[(ref)\\](?:\\[\\])?/).replace(\"ref\",ue).getRegex()).getRegex(),pe=/[hH][tT][tT][pP][sS]?|[fF][tT][pP]/,bt=/[A-Za-z0-9._+-]+@[a-zA-Z0-9-_]+(?:\\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![\\w-])/,Rt=h(/(?:mailto:email|xmpp:email(?:\\/[A-Za-z0-9@.]+)?)/).replace(/email/g,bt).getRegex(),ne={_backpedal:A,anyPunctuation:pt,autolink:ct,blockSkip:We,br:ke,code:Ne,del:A,delLDelim:A,delRDelim:A,emStrongLDelim:Xe,emStrongRDelimAst:et,emStrongRDelimUnd:st,escape:Ge,link:kt,nolink:ft,punctuation:je,reflink:gt,reflinkSearch:xt,tag:dt,text:Qe,url:A},Tt={...ne,emStrongLDelim:Ye,emStrongRDelimAst:rt,emStrongRDelimUnd:ot,link:h(/^!?\\[(label)\\]\\((.*?)\\)/).replace(\"label\",U).getRegex(),reflink:h(/^!?\\[(label)\\]\\s*\\[([^\\]]*)\\]/).replace(\"label\",U).getRegex()},X={...ne,emStrongRDelimAst:tt,emStrongLDelim:Je,delLDelim:at,delRDelim:ut,url:h(/^emailProtocol|^((?:protocol):\\/\\/|www\\.)(?:[a-zA-Z0-9\\-]+\\.?)+[^\\s<]*|^email/).replace(\"emailProtocol\",Rt).replace(\"protocol\",pe).replace(\"email\",/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![\\w-])/).getRegex(),_backpedal:/(?:[^?!.,:;*_'\"~()&]+|\\([^)]*\\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'\"~)]+(?!$))+/,del:/^(~~?)(?=[^\\s~])((?:\\\\[\\s\\S]|[^\\\\])*?(?:\\\\[\\s\\S]|[^\\s~\\\\]))\\1(?=[^~]|$)/,text:h(/^(?:[^a-zA-Z0-9](?=emailProtocol)|(`+|~+|[^`~])(?:(?=[`~])|(?= {2,}\\n)|(?=[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@)|[\\s\\S]*?(?:(?=[\\\\<!\\[`*~_]|\\b_|protocol:\\/\\/|www\\.|$)|[^ ](?= {2,}\\n)|[^a-zA-Z0-9](?=emailProtocol)|[^a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-](?=[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@))))/).replace(\"protocol\",pe).replace(/emailProtocol/g,/(?:mailto|xmpp):/).getRegex()},Ot={...X,br:h(ke).replace(\"{2,}\",\"*\").getRegex(),text:h(X.text).replace(\"\\\\b_\",\"\\\\b_| {2,}\\\\n\").replace(/\\{2,\\}/g,\"*\").getRegex()},j={normal:te,gfm:Ze,pedantic:He},D={normal:ne,gfm:X,breaks:Ot,pedantic:Tt};var wt={\"&\":\"&\",\"<\":\"<\",\">\":\">\",'\"':\""\",\"'\":\"'\"},be=l=>wt[l];function O(l,e){if(e){if(x.escapeTest.test(l))return l.replace(x.escapeReplace,be)}else if(x.escapeTestNoEncode.test(l))return l.replace(x.escapeReplaceNoEncode,be);return l}function Re(l){return l.replace(x.numericCharacterReference,(e,t,n)=>{let s=t===void 0?Number.parseInt(n,16):Number.parseInt(t,10);return s===0||s>1114111||s>=55296&&s<=57343?\"\\uFFFD\":String.fromCodePoint(s)})}function re(l){try{l=encodeURI(l).replace(x.percentDecode,\"%\")}catch{return null}return l}function se(l,e){let t=l.replace(x.findPipe,(r,o,i)=>{let u=!1,a=o;for(;--a>=0&&i[a]===\"\\\\\";)u=!u;return u?\"|\":\" |\"}),n=t.split(x.splitPipe),s=0;if(n[0].trim()||n.shift(),n.length>0&&!n.at(-1)?.trim()&&n.pop(),e)if(n.length>e)n.splice(e);else for(;n.length<e;)n.push(\"\");for(;s<n.length;s++)n[s]=n[s].trim().replace(x.slashPipe,\"|\");return n}function L(l,e,t){let n=l.length;if(n===0)return\"\";let s=0;for(;s<n;){let r=l.charAt(n-s-1);if(r===e&&!t)s++;else if(r!==e&&t)s++;else break}return l.slice(0,n-s)}function ie(l){let e=l.split(`\n`),t=e.length-1;for(;t>=0&&x.blankLine.test(e[t]);)t--;return e.length-t<=2?l:e.slice(0,t+1).join(`\n`)}function q(l){return l.trim().toLowerCase().toUpperCase().toLowerCase()}function Te(l,e){if(l.indexOf(e[1])===-1)return-1;let t=0;for(let n=0;n<l.length;n++)if(l[n]===\"\\\\\")n++;else if(l[n]===e[0])t++;else if(l[n]===e[1]&&(t--,t<0))return n;return t>0?-2:-1}function oe(l,e=0){let t=e,n=\"\";for(let s of l)if(s===\"\t\"){let r=4-t%4;n+=\" \".repeat(r),t+=r}else n+=s,t++;return n}function Oe(l,e,t,n,s){let r=e.href,o=e.title||null,i=l[1].replace(s.other.outputLinkReplace,\"$1\"),u=l[0].charAt(0)===\"!\";n.state.inLink=!0;let a=n.state.linkEmitted,p=n.state.inRawBlock;n.state.linkEmitted=!1;let c=n.inlineTokens(i),d=n.state.linkEmitted;if(n.state.linkEmitted=a,n.state.inLink=!1,!u){if(d){n.state.inRawBlock=p;return}n.state.linkEmitted=!0}return{type:u?\"image\":\"link\",raw:t,href:r,title:o,text:i,tokens:c}}function yt(l,e,t){let n=l.match(t.other.indentCodeCompensation);if(n===null)return e;let s=n[1];return e.split(`\n`).map(r=>{let o=r.match(t.other.beginningSpace);if(o===null)return r;let[i]=o;return r.slice(Math.min(i.length,s.length))}).join(`\n`)}function we(l,e,t,n){if(!e.includes(\"<\"))return!1;for(let s=0;s<e.length;s++){if(e[s]===\"\\\\\"){s++;continue}if(e[s]===\"`\"){let i=n.inline.code.exec(e.slice(s));if(i){s+=i[0].length-1;continue}}if(e[s]!==\"<\")continue;let r=l.slice(t+s),o=n.inline.tag.exec(r)||n.inline.autolink.exec(r);if(o){if(o[0].length>e.length-s)return!0;s+=o[0].length-1}}return!1}var P=class{options;rules;lexer;constructor(e){this.options=e||y}space(e){let t=this.rules.block.newline.exec(e);if(t&&t[0].length>0)return{type:\"space\",raw:t[0]}}code(e){let t=this.rules.block.code.exec(e);if(t){let n=this.options.pedantic?t[0]:ie(t[0]),s=n.replace(this.rules.other.codeRemoveIndent,\"\");return{type:\"code\",raw:n,codeBlockStyle:\"indented\",text:s}}}fences(e){let t=this.rules.block.fences.exec(e);if(t){let n=t[0],s=yt(n,t[3]||\"\",this.rules);return{type:\"code\",raw:n,lang:t[2]?t[2].trim().replace(this.rules.inline.anyPunctuation,\"$1\"):t[2],text:s}}}heading(e){let t=this.rules.block.heading.exec(e);if(t){let n=t[2].trim();if(this.rules.other.endingHash.test(n)){let s=L(n,\"#\");(this.options.pedantic||!s||this.rules.other.endingSpaceTabChar.test(s))&&(n=s.trim())}return{type:\"heading\",raw:L(t[0],`\n`),depth:t[1].length,text:n,tokens:this.lexer.inline(n)}}}hr(e){let t=this.rules.block.hr.exec(e);if(t)return{type:\"hr\",raw:L(t[0],`\n`)}}blockquote(e){let t=this.rules.block.blockquote.exec(e);if(t){let n=L(t[0],`\n`).split(`\n`),s=\"\",r=\"\",o=[];for(;n.length>0;){let i=!1,u=[],a;for(a=0;a<n.length;a++)if(this.rules.other.blockquoteStart.test(n[a]))u.push(n[a]),i=!0;else if(!i)u.push(n[a]);else break;n=n.slice(a);let p=u.join(`\n`),c=p.replace(this.rules.other.blockquoteSetextReplace,`\n $1`).replace(this.rules.other.blockquoteSetextReplace2,\"\");s=s?`${s}\n${p}`:p,r=r?`${r}\n${c}`:c;let d=this.lexer.state.top;if(this.lexer.state.top=!0,this.lexer.blockTokens(c,o,!0),this.lexer.state.top=d,n.length===0)break;let m=o.at(-1);if(m?.type===\"code\")break;if(m?.type===\"blockquote\"){let b=m,g=n.join(`\n`),w=b.raw+`\n`+g.replace(this.rules.other.blockquoteSetextReplace2,\"\"),f=this.blockquote(w);o[o.length-1]=f;let M=w.substring(f.raw.length).replace(/^\\n/,\"\"),v=M?M.split(`\n`).length:0,Z=v?n.slice(0,-v):n;Z.length>0&&(s=`${s}\n${Z.join(`\n`)}`),r=r.substring(0,r.length-b.text.length)+f.text;break}else if(m?.type===\"list\"){let b=m,g=b.raw+`\n`+n.join(`\n`),w=this.list(g);o[o.length-1]=w,s=s.substring(0,s.length-m.raw.length)+w.raw,r=r.substring(0,r.length-b.raw.length)+w.raw,n=g.substring(o.at(-1).raw.length).split(`\n`);continue}}return{type:\"blockquote\",raw:s,tokens:o,text:r}}}list(e){let t=this.rules.block.list.exec(e);if(t){let n=t[1].trim(),s=n.length>1,r={type:\"list\",raw:\"\",ordered:s,start:s?+n.slice(0,-1):\"\",loose:!1,items:[]};n=s?`\\\\d{1,9}\\\\${n.slice(-1)}`:`\\\\${n}`,this.options.pedantic&&(n=s?n:\"[*+-]\");let o=this.rules.other.listItemRegex(n),i=!1;for(;e;){let a=!1,p=\"\",c=\"\";if(!(t=o.exec(e))||this.rules.block.hr.test(e))break;p=t[0],e=e.substring(p.length);let d=t[2].split(`\n`,1)[0],m=t[1].length,b=this.options.pedantic?oe(d,m):d.replace(this.rules.other.leadingSpaceTab,M=>oe(M,m)),g=e.split(`\n`,1)[0],w=!b.trim(),f=0;if(this.options.pedantic?(f=2,c=b.trimStart()):w?f=m+1:(f=b.search(this.rules.other.nonSpaceChar),f=f>4?1:f,c=b.slice(f),f+=m),w&&this.rules.other.blankLine.test(g)&&(p+=g+`\n`,e=e.substring(g.length+1),a=!0),!a){let M=this.rules.other.nextBulletRegex(f),v=this.rules.other.hrRegex(f),Z=this.rules.other.fencesBeginRegex(f),ae=this.rules.other.headingBeginRegex(f),ye=this.rules.other.htmlBeginRegex(f),Pe=this.rules.other.blockquoteBeginRegex(f);for(;e;){let K=e.split(`\n`,1)[0],H;if(g=K,this.options.pedantic?(g=g.replace(this.rules.other.listReplaceNesting,\" \"),H=g):H=g.replace(this.rules.other.leadingSpaceTab,Se=>Se.replace(this.rules.other.tabCharGlobal,\" \")),Z.test(g)||ae.test(g)||ye.test(g)||Pe.test(g)||M.test(g)||v.test(g))break;if(H.search(this.rules.other.nonSpaceChar)>=f||!g.trim())c+=`\n`+H.slice(f);else{if(w||b.replace(this.rules.other.tabCharGlobal,\" \").search(this.rules.other.nonSpaceChar)>=4||Z.test(b)||ae.test(b)||v.test(b))break;c+=`\n`+g}w=!g.trim(),p+=K+`\n`,e=e.substring(K.length+1),b=H.slice(f)}}r.loose||(i?r.loose=!0:this.rules.other.doubleBlankLine.test(p)&&(i=!0)),r.items.push({type:\"list_item\",raw:p,task:!!this.options.gfm&&this.rules.other.listIsTask.test(c),loose:!1,text:c,tokens:[]}),r.raw+=p}let u=r.items.at(-1);if(u)u.raw=u.raw.trimEnd(),u.text=u.text.trimEnd();else return;r.raw=r.raw.trimEnd();for(let a of r.items)if(this.lexer.state.top=!1,a.tokens=this.lexer.blockTokens(a.text,[]),!r.loose){let p=a.tokens.filter(d=>d.type===\"space\"),c=p.length>0&&p.some(d=>this.rules.other.anyLine.test(d.raw));r.loose=c}for(let a of r.items){let p=a.tokens[0];if(a.task&&(p?.type===\"text\"||p?.type===\"paragraph\")){a.text=a.text.replace(this.rules.other.listReplaceTask,\"\"),p.raw=p.raw.replace(this.rules.other.listReplaceTask,\"\"),p.text=p.text.replace(this.rules.other.listReplaceTask,\"\");for(let d=this.lexer.inlineQueue.length-1;d>=0;d--)if(this.rules.other.listIsTask.test(this.lexer.inlineQueue[d].src)){this.lexer.inlineQueue[d].src=this.lexer.inlineQueue[d].src.replace(this.rules.other.listReplaceTask,\"\");break}let c=this.rules.other.listTaskCheckbox.exec(a.raw);if(c){let d={type:\"checkbox\",raw:c[0]+\" \",checked:c[0]!==\"[ ]\"};a.checked=d.checked,r.loose?a.tokens[0]&&[\"paragraph\",\"text\"].includes(a.tokens[0].type)&&\"tokens\"in a.tokens[0]&&a.tokens[0].tokens?(a.tokens[0].raw=d.raw+a.tokens[0].raw,a.tokens[0].text=d.raw+a.tokens[0].text,a.tokens[0].tokens.unshift(d)):a.tokens.unshift({type:\"paragraph\",raw:d.raw,text:d.raw,tokens:[d]}):a.tokens.unshift(d)}}else a.task&&(a.task=!1)}if(r.loose)for(let a of r.items){a.loose=!0;for(let p of a.tokens)p.type===\"text\"&&(p.type=\"paragraph\")}return r}}html(e){let t=this.rules.block.html.exec(e);if(t){let n=ie(t[0]);return{type:\"html\",block:!0,raw:n,pre:t[1]===\"pre\"||t[1]===\"script\"||t[1]===\"style\",text:n}}}def(e){let t=this.rules.block.def.exec(e);if(t){let n=q(t[1]).replace(this.rules.other.multipleSpaceGlobal,\" \"),s=t[2]?t[2].replace(this.rules.other.hrefBrackets,\"$1\").replace(this.rules.inline.anyPunctuation,\"$1\"):\"\",r=t[3]?t[3].substring(1,t[3].length-1).replace(this.rules.inline.anyPunctuation,\"$1\"):t[3];return{type:\"def\",tag:n,raw:L(t[0],`\n`),href:s,title:r}}}table(e){let t=this.rules.block.table.exec(e);if(!t||!this.rules.other.tableDelimiter.test(t[2]))return;let n=se(t[1]),s=t[2].replace(this.rules.other.tableAlignChars,\"\").split(\"|\"),r=t[3]?.trim()?t[3].replace(this.rules.other.tableRowBlankLine,\"\").split(`\n`):[],o={type:\"table\",raw:L(t[0],`\n`),header:[],align:[],rows:[]};if(n.length===s.length){for(let i of s)this.rules.other.tableAlignRight.test(i)?o.align.push(\"right\"):this.rules.other.tableAlignCenter.test(i)?o.align.push(\"center\"):this.rules.other.tableAlignLeft.test(i)?o.align.push(\"left\"):o.align.push(null);for(let i=0;i<n.length;i++)o.header.push({text:n[i],tokens:this.lexer.inline(n[i]),header:!0,align:o.align[i]});for(let i of r)o.rows.push(se(i,o.header.length).map((u,a)=>({text:u,tokens:this.lexer.inline(u),header:!1,align:o.align[a]})));return o}}lheading(e){let t=this.rules.block.lheading.exec(e);if(t){let n=t[1].trim();return{type:\"heading\",raw:L(t[0],`\n`),depth:t[2].charAt(0)===\"=\"?1:2,text:n,tokens:this.lexer.inline(n)}}}paragraph(e){let t=this.rules.block.paragraph.exec(e);if(t){let n=t[1].charAt(t[1].length-1)===`\n`?t[1].slice(0,-1):t[1];return{type:\"paragraph\",raw:t[0],text:n,tokens:this.lexer.inline(n)}}}text(e){let t=this.rules.block.text.exec(e);if(t)return{type:\"text\",raw:t[0],text:t[0],tokens:this.lexer.inline(t[0])}}escape(e){let t=this.rules.inline.escape.exec(e);if(t)return{type:\"escape\",raw:t[0],text:t[1]}}tag(e){let t=this.rules.inline.tag.exec(e);if(t)return!this.lexer.state.inLink&&this.rules.other.startATag.test(t[0])?this.lexer.state.inLink=!0:this.lexer.state.inLink&&this.rules.other.endATag.test(t[0])&&(this.lexer.state.inLink=!1),!this.lexer.state.inRawBlock&&this.rules.other.startPreScriptTag.test(t[0])?this.lexer.state.inRawBlock=!0:this.lexer.state.inRawBlock&&this.rules.other.endPreScriptTag.test(t[0])&&(this.lexer.state.inRawBlock=!1),{type:\"html\",raw:t[0],inLink:this.lexer.state.inLink,inRawBlock:this.lexer.state.inRawBlock,block:!1,text:t[0]}}link(e){let t=this.rules.inline.link.exec(e);if(t){let n=t[0].charAt(0)===\"!\"?2:1;if(!this.options.pedantic&&we(e,t[1],n,this.rules))return;let s=t[2].trim();if(!this.options.pedantic&&this.rules.other.startAngleBracket.test(s)){if(!this.rules.other.endAngleBracket.test(s))return;let i=L(s.slice(0,-1),\"\\\\\");if((s.length-i.length)%2===0)return}else{let i=Te(t[2],\"()\");if(i===-2)return;if(i>-1){let a=(t[0].indexOf(\"!\")===0?5:4)+t[1].length+i;t[2]=t[2].substring(0,i),t[0]=t[0].substring(0,a).trim(),t[3]=\"\"}}let r=t[2],o=\"\";if(this.options.pedantic){let i=this.rules.other.pedanticHrefTitle.exec(r);i&&(r=i[1],o=i[3])}else o=t[3]?t[3].slice(1,-1):\"\";return r=r.trim(),this.rules.other.startAngleBracket.test(r)&&(this.options.pedantic&&!this.rules.other.endAngleBracket.test(s)?r=r.slice(1):r=r.slice(1,-1)),Oe(t,{href:r&&r.replace(this.rules.inline.anyPunctuation,\"$1\"),title:o&&o.replace(this.rules.inline.anyPunctuation,\"$1\")},t[0],this.lexer,this.rules)}}reflink(e,t){let n;if((n=this.rules.inline.reflink.exec(e))||(n=this.rules.inline.nolink.exec(e))){let s=n[0].charAt(0)===\"!\"?2:1;if(!this.options.pedantic&&we(e,n[1],s,this.rules))return;let r=(n[2]||n[1]).replace(this.rules.other.multipleSpaceGlobal,\" \"),o=t[q(r)];if(!o){let i=n[0].charAt(0);return{type:\"text\",raw:i,text:i}}return Oe(n,o,n[0],this.lexer,this.rules)}}emStrong(e,t,n=\"\"){let s=this.rules.inline.emStrongLDelim.exec(e);if(!s||!s[1]&&!s[2]&&!s[3]&&!s[4]||s[4]&&n.match(this.rules.other.unicodeAlphaNumeric))return;if(!(s[1]||s[3]||\"\")||!n||this.rules.inline.punctuation.exec(n)){let o=[...s[0]].length-1,i,u,a=o,p=0,c=s[0][0],d=n===c,m=c===\"*\"?this.rules.inline.emStrongRDelimAst:this.rules.inline.emStrongRDelimUnd;for(m.lastIndex=0,t=t.slice(-1*e.length+o);(s=m.exec(t))!==null;){if(i=s[1]||s[2]||s[3]||s[4]||s[5]||s[6],!i)continue;if(u=[...i].length,s[3]||s[4]){a+=u;continue}else if(s[5]||s[6]){if(o%3&&!((o+u)%3)){p+=u;continue}if(d)break}if(a-=u,a>0)continue;u=Math.min(u,u+a+p);let b=[...s[0]][0].length,g=e.slice(0,o+s.index+b+u);if(Math.min(o,u)%2){let f=g.slice(1,-1);return{type:\"em\",raw:g,text:f,tokens:this.lexer.inlineTokens(f)}}let w=g.slice(2,-2);return{type:\"strong\",raw:g,text:w,tokens:this.lexer.inlineTokens(w)}}}}codespan(e){let t=this.rules.inline.code.exec(e);if(t){let n=t[2].replace(this.rules.other.newLineCharGlobal,\" \"),s=this.rules.other.nonSpaceChar.test(n),r=this.rules.other.startingSpaceChar.test(n)&&this.rules.other.endingSpaceChar.test(n);return s&&r&&(n=n.substring(1,n.length-1)),{type:\"codespan\",raw:t[0],text:n}}}br(e){let t=this.rules.inline.br.exec(e);if(t)return{type:\"br\",raw:t[0]}}del(e,t,n=\"\"){let s=this.rules.inline.delLDelim.exec(e);if(!s)return;if(!(s[1]||\"\")||!n||this.rules.inline.punctuation.exec(n)){let o=[...s[0]].length-1,i,u,a=o,p=this.rules.inline.delRDelim;for(p.lastIndex=0,t=t.slice(-1*e.length+o);(s=p.exec(t))!==null;){if(i=s[1]||s[2]||s[3]||s[4]||s[5]||s[6],!i||(u=[...i].length,u!==o))continue;if(s[3]||s[4]){a+=u;continue}if(a-=u,a>0)continue;u=Math.min(u,u+a);let c=[...s[0]][0].length,d=e.slice(0,o+s.index+c+u),m=d.slice(o,-o);return{type:\"del\",raw:d,text:m,tokens:this.lexer.inlineTokens(m)}}}}autolink(e){let t=this.rules.inline.autolink.exec(e);if(t){let n,s;return t[2]===\"@\"?(n=t[1],s=\"mailto:\"+n):(n=t[1],s=n),{type:\"link\",raw:t[0],text:n,href:s,autolink:!0,tokens:[{type:\"text\",raw:n,text:n}]}}}url(e){let t;if(t=this.rules.inline.url.exec(e)){let n,s;if(t[2]===\"@\")n=t[0],s=\"mailto:\"+n;else{let r;do r=t[0],t[0]=this.rules.inline._backpedal.exec(t[0])?.[0]??\"\";while(r!==t[0]);n=t[0],t[1]===\"www.\"?s=\"http://\"+t[0]:s=t[0]}return{type:\"link\",raw:t[0],text:n,href:s,autolink:!0,tokens:[{type:\"text\",raw:n,text:n}]}}}inlineText(e){let t=this.rules.inline.text.exec(e);if(t){let n=this.lexer.state.inRawBlock;return{type:\"text\",raw:t[0],text:n?t[0]:Re(t[0]),escaped:n}}}};var R=class l{tokens;options;state;inlineQueue;tokenizer;constructor(e){this.tokens=[],this.tokens.links=Object.create(null),this.options=e||y,this.options.tokenizer=this.options.tokenizer||new P,this.tokenizer=this.options.tokenizer,this.tokenizer.options=this.options,this.tokenizer.lexer=this,this.inlineQueue=[],this.state={inLink:!1,inRawBlock:!1,linkEmitted:!1,top:!0};let t={other:x,block:j.normal,inline:D.normal};this.options.pedantic?(t.block=j.pedantic,t.inline=D.pedantic):this.options.gfm&&(t.block=j.gfm,this.options.breaks?t.inline=D.breaks:t.inline=D.gfm),this.tokenizer.rules=t}static get rules(){return{block:j,inline:D}}static lex(e,t){return new l(t).lex(e)}static lexInline(e,t){return new l(t).inlineTokens(e)}lex(e){e=e.replace(x.carriageReturn,`\n`),this.blockTokens(e,this.tokens);for(let t=0;t<this.inlineQueue.length;t++){let n=this.inlineQueue[t];this.inlineTokens(n.src,n.tokens)}return this.inlineQueue=[],this.tokens}blockTokens(e,t=[],n=!1){this.tokenizer.lexer=this,this.options.pedantic&&(e=e.replace(x.tabCharGlobal,\" \").replace(x.spaceLine,\"\"));let s=1/0;for(;e;){if(e.length<s)s=e.length;else{this.infiniteLoopError(e.charCodeAt(0));break}let r;if(this.options.extensions?.block?.some(i=>(r=i.call({lexer:this},e,t))?(e=e.substring(r.raw.length),t.push(r),!0):!1))continue;if(r=this.tokenizer.space(e)){e=e.substring(r.raw.length);let i=t.at(-1);r.raw.length===1&&i!==void 0?i.raw+=`\n`:t.push(r);continue}if(r=this.tokenizer.code(e)){e=e.substring(r.raw.length);let i=t.at(-1);i?.type===\"paragraph\"||i?.type===\"text\"?(i.raw+=(i.raw.endsWith(`\n`)?\"\":`\n`)+r.raw,i.text+=`\n`+r.text,this.inlineQueue.at(-1).src=i.text):t.push(r);continue}if(r=this.tokenizer.fences(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.heading(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.hr(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.blockquote(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.list(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.html(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.def(e)){e=e.substring(r.raw.length);let i=t.at(-1);i?.type===\"paragraph\"||i?.type===\"text\"?(i.raw+=(i.raw.endsWith(`\n`)?\"\":`\n`)+r.raw,i.text+=`\n`+r.raw,this.inlineQueue.at(-1).src=i.text):this.tokens.links[r.tag]||(this.tokens.links[r.tag]={href:r.href,title:r.title},t.push(r));continue}if(r=this.tokenizer.table(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.lheading(e)){e=e.substring(r.raw.length),t.push(r);continue}let o=e;if(this.options.extensions?.startBlock){let i=1/0,u=e.slice(1),a;this.options.extensions.startBlock.forEach(p=>{a=p.call({lexer:this},u),typeof a==\"number\"&&a>=0&&(i=Math.min(i,a))}),i<1/0&&i>=0&&(o=e.substring(0,i+1))}if(this.state.top&&(r=this.tokenizer.paragraph(o))){let i=t.at(-1);n&&i?.type===\"paragraph\"?(i.raw+=(i.raw.endsWith(`\n`)?\"\":`\n`)+r.raw,i.text+=`\n`+r.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=i.text):t.push(r),n=o.length!==e.length,e=e.substring(r.raw.length);continue}if(r=this.tokenizer.text(e)){e=e.substring(r.raw.length);let i=t.at(-1);i?.type===\"text\"?(i.raw+=(i.raw.endsWith(`\n`)?\"\":`\n`)+r.raw,i.text+=`\n`+r.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=i.text):t.push(r);continue}if(e){this.infiniteLoopError(e.charCodeAt(0));break}}return this.state.top=!0,t}inline(e,t=[]){return this.inlineQueue.push({src:e,tokens:t}),t}linkInText(e){if(!e.includes(\"[\"))return!1;let t=this.tokenizer.rules.inline.link;for(let n of e.matchAll(this.tokenizer.rules.inline.blockSkip))if(t.test(n[0])&&e.charAt(n.index-1)!==\"!\")return!0;for(let n of e.matchAll(this.tokenizer.rules.inline.reflinkSearch)){let s=n[0],r=s.lastIndexOf(\"[\");if(!(s.charAt(0)===\"!\"||!Object.hasOwn(this.tokens.links,q(s.slice(r+1,-1))))&&!(r>1&&this.linkInText(s.slice(1,r-1))))return!0}return!1}inlineTokens(e,t=[]){this.tokenizer.lexer=this;let n=e;if(this.tokens.links&&e.includes(\"[\")){let i=this.tokenizer.rules.inline.reflinkSearch,u=a=>{let p=a.lastIndexOf(\"[\");if(!Object.hasOwn(this.tokens.links,q(a.slice(p+1,-1))))return a;if(p>1&&a.charAt(0)!==\"!\"){let c=a.slice(1,p-1);if(this.linkInText(c))return\"[\"+c.replace(i,u)+\"][\"+\"a\".repeat(a.length-p-2)+\"]\"}return\"[\"+\"a\".repeat(a.length-2)+\"]\"};n=n.replace(i,u)}n=n.replace(this.tokenizer.rules.inline.anyPunctuation,i=>\"+\".repeat(i.length)),n=n.replace(this.tokenizer.rules.inline.blockSkip,(i,u,a)=>{let p=a?a.length:0;return i.slice(0,p)+\"[\"+\"a\".repeat(i.length-p-2)+\"]\"}),n=this.options.hooks?.emStrongMask?.call({lexer:this},n)??n;let s=!1,r=\"\",o=1/0;for(;e;){if(e.length<o)o=e.length;else{this.infiniteLoopError(e.charCodeAt(0));break}s||(r=\"\"),s=!1;let i;if(this.options.extensions?.inline?.some(a=>(i=a.call({lexer:this},e,t))?(e=e.substring(i.raw.length),t.push(i),!0):!1))continue;if(i=this.tokenizer.escape(e)){e=e.substring(i.raw.length),t.push(i);continue}if(i=this.tokenizer.tag(e)){e=e.substring(i.raw.length),t.push(i);continue}if(i=this.tokenizer.link(e)){e=e.substring(i.raw.length),t.push(i);continue}if(i=this.tokenizer.reflink(e,this.tokens.links)){e=e.substring(i.raw.length);let a=t.at(-1);i.type===\"text\"&&a?.type===\"text\"?(a.raw+=i.raw,a.text+=i.text):t.push(i);continue}if(i=this.tokenizer.emStrong(e,n,r)){e=e.substring(i.raw.length),t.push(i);continue}if(i=this.tokenizer.codespan(e)){e=e.substring(i.raw.length),t.push(i);continue}if(i=this.tokenizer.br(e)){e=e.substring(i.raw.length),t.push(i);continue}if(i=this.tokenizer.del(e,n,r)){e=e.substring(i.raw.length),t.push(i);continue}if(i=this.tokenizer.autolink(e)){e=e.substring(i.raw.length),t.push(i);continue}if(!this.state.inLink&&(i=this.tokenizer.url(e))){e=e.substring(i.raw.length),t.push(i);continue}let u=e;if(this.options.extensions?.startInline){let a=1/0,p=e.slice(1),c;this.options.extensions.startInline.forEach(d=>{c=d.call({lexer:this},p),typeof c==\"number\"&&c>=0&&(a=Math.min(a,c))}),a<1/0&&a>=0&&(u=e.substring(0,a+1))}if(i=this.tokenizer.inlineText(u)){e=e.substring(i.raw.length),i.raw.slice(-1)!==\"_\"&&(r=i.raw.slice(-1)),s=!0;let a=t.at(-1);a?.type===\"text\"?(a.raw+=i.raw,a.text+=i.text):t.push(i);continue}if(e){this.infiniteLoopError(e.charCodeAt(0));break}}return t}infiniteLoopError(e){let t=\"Infinite loop on byte: \"+e;if(this.options.silent)console.error(t);else throw new Error(t)}};var S=class{options;parser;constructor(e){this.options=e||y}space(e){return\"\"}code({text:e,lang:t,escaped:n}){let s=(t||\"\").match(x.notSpaceStart)?.[0],r=e?e.replace(x.endingNewline,\"\")+`\n`:\"\";return s?'<pre><code class=\"language-'+O(s)+'\">'+(n?r:O(r,!0))+`</code></pre>\n`:\"<pre><code>\"+(n?r:O(r,!0))+`</code></pre>\n`}blockquote({tokens:e}){return`<blockquote>\n${this.parser.parse(e)}</blockquote>\n`}html({text:e}){return e}def(e){return\"\"}heading({tokens:e,depth:t}){return`<h${t}>${this.parser.parseInline(e)}</h${t}>\n`}hr(e){return`<hr>\n`}list(e){let t=e.ordered,n=e.start,s=\"\";for(let i=0;i<e.items.length;i++){let u=e.items[i];s+=this.listitem(u)}let r=t?\"ol\":\"ul\",o=t&&n!==1?' start=\"'+n+'\"':\"\";return\"<\"+r+o+`>\n`+s+\"</\"+r+`>\n`}listitem(e){return`<li>${this.parser.parse(e.tokens)}</li>\n`}checkbox({checked:e}){return\"<input \"+(e?'checked=\"\" ':\"\")+'disabled=\"\" type=\"checkbox\"> '}paragraph({tokens:e}){return`<p>${this.parser.parseInline(e)}</p>\n`}table(e){let t=\"\",n=\"\";for(let r=0;r<e.header.length;r++)n+=this.tablecell(e.header[r]);t+=this.tablerow({text:n});let s=\"\";for(let r=0;r<e.rows.length;r++){let o=e.rows[r];n=\"\";for(let i=0;i<o.length;i++)n+=this.tablecell(o[i]);s+=this.tablerow({text:n})}return s&&(s=`<tbody>${s}</tbody>`),`<table>\n<thead>\n`+t+`</thead>\n`+s+`</table>\n`}tablerow({text:e}){return`<tr>\n${e}</tr>\n`}tablecell(e){let t=this.parser.parseInline(e.tokens),n=e.header?\"th\":\"td\";return(e.align?`<${n} align=\"${e.align}\">`:`<${n}>`)+t+`</${n}>\n`}strong({tokens:e}){return`<strong>${this.parser.parseInline(e)}</strong>`}em({tokens:e}){return`<em>${this.parser.parseInline(e)}</em>`}codespan({text:e}){return`<code>${O(e,!0)}</code>`}br(e){return\"<br>\"}del({tokens:e}){return`<del>${this.parser.parseInline(e)}</del>`}link({href:e,title:t,text:n,tokens:s,autolink:r}){let o=r?O(n,!0):this.parser.parseInline(s),i=re(e);if(i===null)return o;e=O(i,r);let u='<a href=\"'+e+'\"';return t&&(u+=' title=\"'+O(t)+'\"'),u+=\">\"+o+\"</a>\",u}image({href:e,title:t,text:n,tokens:s}){s&&(n=this.parser.parseInline(s,this.parser.textRenderer));let r=re(e);if(r===null)return O(n);e=r;let o=`<img src=\"${O(e)}\" alt=\"${O(n)}\"`;return t&&(o+=` title=\"${O(t)}\"`),o+=\">\",o}text(e){return\"tokens\"in e&&e.tokens?this.parser.parseInline(e.tokens):\"escaped\"in e&&e.escaped?e.text:O(e.text)}};var z=class{strong({text:e}){return e}em({text:e}){return e}codespan({text:e}){return e}del({text:e}){return e}html({text:e}){return e}text({text:e}){return e}link({text:e}){return\"\"+e}image({text:e}){return\"\"+e}br(){return\"\"}checkbox({raw:e}){return e}};var T=class l{options;renderer;textRenderer;constructor(e){this.options=e||y,this.options.renderer=this.options.renderer||new S,this.renderer=this.options.renderer,this.renderer.options=this.options,this.renderer.parser=this,this.textRenderer=new z}static parse(e,t){return new l(t).parse(e)}static parseInline(e,t){return new l(t).parseInline(e)}parse(e){this.renderer.parser=this;let t=\"\";for(let n=0;n<e.length;n++){let s=e[n];if(this.options.extensions?.renderers?.[s.type]){let o=s,i=this.options.extensions.renderers[o.type].call({parser:this},o);if(i!==!1||![\"space\",\"hr\",\"heading\",\"code\",\"table\",\"blockquote\",\"list\",\"checkbox\",\"html\",\"def\",\"paragraph\",\"text\"].includes(o.type)){t+=i||\"\";continue}}let r=s;switch(r.type){case\"space\":{t+=this.renderer.space(r);break}case\"hr\":{t+=this.renderer.hr(r);break}case\"heading\":{t+=this.renderer.heading(r);break}case\"code\":{t+=this.renderer.code(r);break}case\"table\":{t+=this.renderer.table(r);break}case\"blockquote\":{t+=this.renderer.blockquote(r);break}case\"list\":{t+=this.renderer.list(r);break}case\"checkbox\":{t+=this.renderer.checkbox(r);break}case\"html\":{t+=this.renderer.html(r);break}case\"def\":{t+=this.renderer.def(r);break}case\"paragraph\":{t+=this.renderer.paragraph(r);break}case\"text\":{t+=this.renderer.text(r);break}default:{let o='Token with \"'+r.type+'\" type was not found.';if(this.options.silent)return console.error(o),\"\";throw new Error(o)}}}return t}parseInline(e,t=this.renderer){this.renderer.parser=this;let n=\"\";for(let s=0;s<e.length;s++){let r=e[s];if(this.options.extensions?.renderers?.[r.type]){let i=this.options.extensions.renderers[r.type].call({parser:this},r);if(i!==!1||![\"escape\",\"html\",\"link\",\"image\",\"checkbox\",\"strong\",\"em\",\"codespan\",\"br\",\"del\",\"text\"].includes(r.type)){n+=i||\"\";continue}}let o=r;switch(o.type){case\"escape\":{n+=t.text(o);break}case\"html\":{n+=t.html(o);break}case\"link\":{n+=t.link(o);break}case\"image\":{n+=t.image(o);break}case\"checkbox\":{n+=t.checkbox(o);break}case\"strong\":{n+=t.strong(o);break}case\"em\":{n+=t.em(o);break}case\"codespan\":{n+=t.codespan(o);break}case\"br\":{n+=t.br(o);break}case\"del\":{n+=t.del(o);break}case\"text\":{n+=t.text(o);break}default:{let i='Token with \"'+o.type+'\" type was not found.';if(this.options.silent)return console.error(i),\"\";throw new Error(i)}}}return n}};var _=class{options;block;constructor(e){this.options=e||y}static passThroughHooks=new Set([\"preprocess\",\"postprocess\",\"processAllTokens\",\"emStrongMask\"]);static passThroughHooksRespectAsync=new Set([\"preprocess\",\"postprocess\",\"processAllTokens\"]);preprocess(e){return e}postprocess(e){return e}processAllTokens(e){return e}emStrongMask(e){return e}provideLexer(e=this.block){return e?R.lex:R.lexInline}provideParser(e=this.block){return e?T.parse:T.parseInline}};var F=class{defaults=I();options=this.setOptions;parse=this.parseMarkdown(!0);parseInline=this.parseMarkdown(!1);Parser=T;Renderer=S;TextRenderer=z;Lexer=R;Tokenizer=P;Hooks=_;constructor(...e){this.use(...e)}walkTokens(e,t){let n=[];for(let s of e)switch(n=n.concat(t.call(this,s)),s.type){case\"table\":{let r=s;for(let o of r.header)n=n.concat(this.walkTokens(o.tokens,t));for(let o of r.rows)for(let i of o)n=n.concat(this.walkTokens(i.tokens,t));break}case\"list\":{let r=s;n=n.concat(this.walkTokens(r.items,t));break}default:{let r=s;this.defaults.extensions?.childTokens?.[r.type]?this.defaults.extensions.childTokens[r.type].forEach(o=>{let i=r[o].flat(1/0);n=n.concat(this.walkTokens(i,t))}):r.tokens&&(n=n.concat(this.walkTokens(r.tokens,t)))}}return n}use(...e){let t=this.defaults.extensions||{renderers:{},childTokens:{}};return e.forEach(n=>{let s={...n};if(s.async=this.defaults.async||s.async||!1,n.extensions&&(n.extensions.forEach(r=>{if(!r.name)throw new Error(\"extension name required\");if(\"renderer\"in r){let o=t.renderers[r.name];o?t.renderers[r.name]=function(...i){let u=r.renderer.apply(this,i);return u===!1&&(u=o.apply(this,i)),u}:t.renderers[r.name]=r.renderer}if(\"tokenizer\"in r){if(!r.level||r.level!==\"block\"&&r.level!==\"inline\")throw new Error(\"extension level must be 'block' or 'inline'\");let o=t[r.level];o?o.unshift(r.tokenizer):t[r.level]=[r.tokenizer],r.start&&(r.level===\"block\"?t.startBlock?t.startBlock.push(r.start):t.startBlock=[r.start]:r.level===\"inline\"&&(t.startInline?t.startInline.push(r.start):t.startInline=[r.start]))}\"childTokens\"in r&&r.childTokens&&(t.childTokens[r.name]=r.childTokens)}),s.extensions=t),n.renderer){let r=this.defaults.renderer||new S(this.defaults);for(let o in n.renderer){if(!(o in r))throw new Error(`renderer '${o}' does not exist`);if([\"options\",\"parser\"].includes(o))continue;let i=o,u=n.renderer[i],a=r[i];r[i]=(...p)=>{let c=u.apply(r,p);return c===!1&&(c=a.apply(r,p)),c||\"\"}}s.renderer=r}if(n.tokenizer){let r=this.defaults.tokenizer||new P(this.defaults);for(let o in n.tokenizer){if(!(o in r))throw new Error(`tokenizer '${o}' does not exist`);if([\"options\",\"rules\",\"lexer\"].includes(o))continue;let i=o,u=n.tokenizer[i],a=r[i];r[i]=(...p)=>{let c=u.apply(r,p);return c===!1&&(c=a.apply(r,p)),c}}s.tokenizer=r}if(n.hooks){let r=this.defaults.hooks||new _;for(let o in n.hooks){if(!(o in r))throw new Error(`hook '${o}' does not exist`);if([\"options\",\"block\"].includes(o))continue;let i=o,u=n.hooks[i],a=r[i];_.passThroughHooks.has(o)?r[i]=p=>{if(this.defaults.async&&_.passThroughHooksRespectAsync.has(o))return(async()=>{let d=await u.call(r,p);return a.call(r,d)})();let c=u.call(r,p);return a.call(r,c)}:r[i]=(...p)=>{if(this.defaults.async)return(async()=>{let d=await u.apply(r,p);return d===!1&&(d=await a.apply(r,p)),d})();let c=u.apply(r,p);return c===!1&&(c=a.apply(r,p)),c}}s.hooks=r}if(n.walkTokens){let r=this.defaults.walkTokens,o=n.walkTokens;s.walkTokens=function(i){let u=[];return u.push(o.call(this,i)),r&&(u=u.concat(r.call(this,i))),u}}this.defaults={...this.defaults,...s}}),this}setOptions(e){return this.defaults={...this.defaults,...e},this}lexer(e,t){return R.lex(e,t??this.defaults)}parser(e,t){return T.parse(e,t??this.defaults)}parseMarkdown(e){return(n,s)=>{let r={...s},o={...this.defaults,...r},i=this.onError(!!o.silent,!!o.async);if(this.defaults.async===!0&&r.async===!1)return i(new Error(\"marked(): The async option was set to true by an extension. Remove async: false from the parse options object to return a Promise.\"));if(typeof n>\"u\"||n===null)return i(new Error(\"marked(): input parameter is undefined or null\"));if(typeof n!=\"string\")return i(new Error(\"marked(): input parameter is of type \"+Object.prototype.toString.call(n)+\", string expected\"));if(o.hooks&&(o.hooks.options=o,o.hooks.block=e),o.async)return(async()=>{let u=o.hooks?await o.hooks.preprocess(n):n,p=await(o.hooks?await o.hooks.provideLexer(e):e?R.lex:R.lexInline)(u,o),c=o.hooks?await o.hooks.processAllTokens(p):p;o.walkTokens&&await Promise.all(this.walkTokens(c,o.walkTokens));let m=await(o.hooks?await o.hooks.provideParser(e):e?T.parse:T.parseInline)(c,o);return o.hooks?await o.hooks.postprocess(m):m})().catch(i);try{o.hooks&&(n=o.hooks.preprocess(n));let a=(o.hooks?o.hooks.provideLexer(e):e?R.lex:R.lexInline)(n,o);o.hooks&&(a=o.hooks.processAllTokens(a)),o.walkTokens&&this.walkTokens(a,o.walkTokens);let c=(o.hooks?o.hooks.provideParser(e):e?T.parse:T.parseInline)(a,o);return o.hooks&&(c=o.hooks.postprocess(c)),c}catch(u){return i(u)}}}onError(e,t){return n=>{if(n.message+=`\nPlease report this to https://github.com/markedjs/marked.`,e){let s=\"<p>An error occurred:</p><pre>\"+O(n.message+\"\",!0)+\"</pre>\";return t?Promise.resolve(s):s}if(t)return Promise.reject(n);throw n}}};var E=new F;function k(l,e){return E.parse(l,e)}k.options=k.setOptions=function(l){return E.setOptions(l),k.defaults=E.defaults,W(k.defaults),k};k.getDefaults=I;k.defaults=y;function Pt(...l){return E.use(...l),k.defaults=E.defaults,W(k.defaults),k}k.use=Pt;k.walkTokens=function(l,e){return E.walkTokens(l,e)};k.parseInline=E.parseInline;k.Parser=T;k.parser=T.parse;k.Renderer=S;k.TextRenderer=z;k.Lexer=R;k.lexer=R.lex;k.Tokenizer=P;k.Hooks=_;k.parse=k;var gn=k.options,fn=k.setOptions,mn=k.walkTokens,xn=k.parseInline,bn=k,Rn=T.parse,Tn=R.lex;export{_ as Hooks,R as Lexer,F as Marked,T as Parser,S as Renderer,z as TextRenderer,P as Tokenizer,y as defaults,I as getDefaults,Tn as lexer,k as marked,gn as options,bn as parse,xn as parseInline,Rn as parser,fn as setOptions,Pt as use,mn as walkTokens};\n//# sourceMappingURL=marked.esm.js.map\n","<script setup lang=\"ts\">\n import remend from 'remend'\n import { marked, type Token } from 'marked'\n import {\n computed,\n nextTick,\n onBeforeUnmount,\n onMounted,\n toRef,\n useTemplateRef,\n watch,\n } from 'vue'\n import { refThrottled } from '@vueuse/core'\n import { useI18n } from 'vue-i18n'\n import {\n loadCdnCss,\n getShadowRoot,\n isSameSite,\n stripProviderCitationMarkers,\n } from 'utils'\n import { useShortUrlResolver } from 'composables'\n import { getMarkdownTail } from './utils'\n\n export type StreamingAnimation =\n 'fadeIn' | 'blurIn' | 'dropIn' | 'slideUp' | 'fadeAndScale' | null\n\n const props = withDefaults(\n defineProps<{\n markdown?: string\n loading?: boolean\n animation?: StreamingAnimation\n animationDuration?: string\n isDark?: boolean\n /**\n * Renders only the last `tailLength` characters, for a live box\n * that follows the bottom of a text too long to parse whole.\n */\n tailLength?: number\n }>(),\n {\n markdown: '',\n loading: false,\n animation: 'fadeIn',\n animationDuration: '0.3s',\n isDark: false,\n tailLength: undefined,\n },\n )\n\n const { t: $t } = useI18n({ useScope: 'global' })\n\n // --- Lazy-loaded heavy dependencies ---\n\n let beautifulMermaidPromise: Promise<\n typeof import('beautiful-mermaid')\n > | null = null\n function loadBeautifulMermaid() {\n if (!beautifulMermaidPromise) {\n beautifulMermaidPromise = import('beautiful-mermaid')\n }\n return beautifulMermaidPromise\n }\n\n let katexPromise: Promise<(typeof import('katex'))['default']> | null = null\n function loadKatex() {\n if (!katexPromise) {\n katexPromise = import('katex').then((mod) => mod.default)\n }\n return katexPromise\n }\n\n // --- Marked extensions ---\n\n const inlineKatexRule =\n /^(\\${1,2})(?!\\$)((?:\\\\.|[^\\\\\\n])*?(?:\\\\.|[^\\\\\\n$]))\\1(?=[\\s?!.,:\\uFF1F\\uFF01\\u3002\\uFF0C\\uFF1A]|$)/\n const blockKatexRule = /^(\\${1,2})\\n((?:\\\\[^]|[^\\\\])+?)\\n\\1(?:\\n|$)/\n\n function encodeKatexHtml(text: string): string {\n return text\n .replace(/&/g, '&')\n .replace(/</g, '<')\n .replace(/>/g, '>')\n }\n\n function renderKatexPlaceholder(\n text: string,\n displayMode: boolean,\n ): string {\n const encoded = encodeKatexHtml(text)\n return `<span class=\"katex-pending\" data-katex=\"${encoded}\" data-display=\"${displayMode}\"></span>`\n }\n\n marked.use({\n extensions: [\n {\n name: 'inlineKatex',\n level: 'inline',\n start: (src) => {\n const idx = src.indexOf('$')\n if (idx === -1) {\n return undefined\n }\n if (idx === 0 || src.charAt(idx - 1) === ' ') {\n return idx\n }\n return undefined\n },\n tokenizer(src) {\n const match = src.match(inlineKatexRule)\n if (!match) {\n return\n }\n return {\n type: 'inlineKatex',\n raw: match[0],\n text: match[2].trim(),\n displayMode: match[1].length === 2,\n }\n },\n renderer(token) {\n return renderKatexPlaceholder(token.text, token.displayMode)\n },\n },\n {\n name: 'blockKatex',\n level: 'block',\n tokenizer(src) {\n const match = src.match(blockKatexRule)\n if (!match) {\n return\n }\n return {\n type: 'blockKatex',\n raw: match[0],\n text: match[2].trim(),\n displayMode: match[1].length === 2,\n }\n },\n renderer(token) {\n return (\n renderKatexPlaceholder(token.text, token.displayMode) +\n '\\n'\n )\n },\n },\n ],\n })\n\n marked.use({\n extensions: [\n {\n name: 'thinking',\n level: 'block',\n start: (src) => src.indexOf('<thinking>'),\n tokenizer(src) {\n const match = /^<thinking>([\\s\\S]*?)<\\/thinking>/.exec(src)\n if (!match) {\n return\n }\n const token = {\n type: 'thinking',\n raw: match[0],\n text: match[1].trim(),\n tokens: [] as Token[],\n }\n this.lexer.blockTokens(token.text, token.tokens)\n return token\n },\n renderer(token) {\n return `<div class=\"thinking-block\">${this.parser.parse(token.tokens ?? [])}</div>`\n },\n },\n ],\n })\n\n // --- Custom renderer ---\n\n const renderer = new marked.Renderer()\n\n // marked escapes href and title inside its own link renderer. This\n // override replaces that renderer, so until now both went into `v-html`\n // verbatim: a quote in the URL closed the attribute and everything after\n // it became markup, in a document written by a model and, through the\n // knowledge base, by whoever fed it.\n const escapeAttribute = (value: string) =>\n value\n .replace(/&/g, '&')\n .replace(/\"/g, '"')\n .replace(/</g, '<')\n .replace(/>/g, '>')\n // Schemes that execute rather than navigate. The link becomes plain text,\n // so the reader still sees what it said.\n const UNSAFE_LINK_SCHEME = /^(?:javascript|data|vbscript|file):/i\n\n renderer.link = function ({ href, title, tokens }) {\n const text = this.parser.parseInline(tokens)\n // Control characters go first: the browser strips them before reading\n // the scheme, so they are how `java\\tscript:` gets past a check.\n // eslint-disable-next-line no-control-regex -- they are the point here\n const target = (href ?? '').trim().replace(/[\\x00-\\x1f]/g, '')\n if (!target || UNSAFE_LINK_SCHEME.test(target)) {\n return text\n }\n const titleAttr = title ? ` title=\"${escapeAttribute(title)}\"` : ''\n const targetAttrs = isSameSite(target)\n ? ''\n : ' target=\"_blank\" rel=\"noopener noreferrer\"'\n return `<a href=\"${escapeAttribute(target)}\"${titleAttr}${targetAttrs}>${text}</a>`\n }\n\n renderer.table = function (token) {\n return `<div class=\"table-wrapper\">${marked.Renderer.prototype.table.call(this, token)}</div>`\n }\n\n const MERMAID_PREFIXES =\n /^(sequenceDiagram|graph|classDiagram|stateDiagram|erDiagram|flowchart|xychart-beta)/\n\n renderer.code = ({ text }) => {\n if (MERMAID_PREFIXES.test(text)) {\n return `<pre class=\"mermaid\">${text}</pre>`\n }\n return `<pre><code>${text}</code></pre>`\n }\n\n // --- Preprocessing pipeline ---\n\n function normalizeLatexDelimiters(md: string): string {\n return md\n .replace(/\\\\\\[([\\s\\S]*?)\\\\\\]/g, (_, content) => `$$${content}$$`)\n .replace(/\\\\\\(([\\s\\S]*?)\\\\\\)/g, (_, content) => `$${content}$`)\n .replace(/^(\\d+)\\.(?!\\s)/gm, '$1\\\\.')\n }\n\n /**\n * Strips JSON objects/arrays that appear outside fenced code blocks.\n * Some models dump tool-call JSON directly into the text response.\n */\n function stripLeakedJson(md: string): string {\n const fenced = new Set<number>()\n const fenceRe = /^(`{3,}|~{3,})[^\\n]*\\n([\\s\\S]*?)\\n\\1/gm\n let fenceMatch: RegExpExecArray | null\n while ((fenceMatch = fenceRe.exec(md)) !== null) {\n for (\n let i = fenceMatch.index;\n i < fenceMatch.index + fenceMatch[0].length;\n i++\n ) {\n fenced.add(i)\n }\n }\n\n return md\n .replace(\n /[{[]([\\s\\S]*?)[}\\]]/g,\n (match, _inner, offset: number) => {\n if (fenced.has(offset)) {\n return match\n }\n try {\n JSON.parse(match)\n return ''\n } catch {\n return match\n }\n },\n )\n .replace(/\\n{3,}/g, '\\n\\n')\n }\n\n // Runs on the accumulated text, not on deltas, so a marker split across two\n // stream chunks still gets caught once both have landed.\n const preprocessors: Array<(md: string) => string> = [\n stripProviderCitationMarkers,\n stripLeakedJson,\n remend,\n normalizeLatexDelimiters,\n ]\n\n // --- Computed HTML ---\n\n const containerRef = useTemplateRef<HTMLDivElement>('container')\n\n // Every render parses the whole text again, and a stream changes it at every\n // delta: the cost of a turn grows with the square of its length. On chat\n // `st0Eg8iG0zUX0HQN` one parse took 24ms at 92KB, thousands of deltas\n // arrived, and the tab froze. The first text renders at once, the changes\n // after it at most once per interval, the last one always included.\n const RENDER_INTERVAL_MS = 100\n const renderedMarkdown = refThrottled(\n toRef(props, 'markdown'),\n RENDER_INTERVAL_MS,\n )\n const visibleMarkdown = computed(() =>\n props.tailLength\n ? getMarkdownTail(renderedMarkdown.value, props.tailLength)\n : renderedMarkdown.value,\n )\n\n // Expand backend short urls (`/api/r/<hash>`) back to their real target so\n // prose (e.g. a bulleted list of links) shows/opens real urls, not the\n // token-cheap short ones the model sees. No-op when no resolver is provided.\n const { resolveText } = useShortUrlResolver()\n const expandedMarkdown = resolveText(visibleMarkdown)\n\n const html = computed(() => {\n const md = preprocessors.reduce(\n (text, fn) => fn(text),\n expandedMarkdown.value,\n )\n return marked.parse(md, {\n async: false,\n breaks: true,\n renderer,\n }) as string\n })\n\n // --- Post-render processors ---\n\n async function renderMermaid() {\n if (props.loading) {\n return\n }\n\n await nextTick()\n const nodes = containerRef.value?.querySelectorAll<HTMLElement>(\n 'pre.mermaid:not([data-rendered])',\n )\n if (!nodes?.length) {\n return\n }\n\n const { renderMermaidSVG, THEMES } = await loadBeautifulMermaid()\n const theme = props.isDark\n ? THEMES['github-dark']\n : THEMES['github-light']\n\n for (const node of Array.from(nodes)) {\n if (!node.isConnected) {\n continue\n }\n const code = node.textContent?.trim()\n if (!code) {\n continue\n }\n\n try {\n const svg = renderMermaidSVG(code, theme)\n if (node.isConnected) {\n node.dataset.code = code\n node.innerHTML = svg\n node.setAttribute('data-rendered', 'true')\n }\n } catch {\n // Invalid syntax — node left untouched\n }\n }\n }\n\n async function highlightCode() {\n await nextTick()\n const blocks = containerRef.value?.querySelectorAll<HTMLElement>(\n 'pre:not(.mermaid) > code:not([data-highlighted])',\n )\n if (!blocks?.length) {\n return\n }\n\n const hljs = (await import('highlight.js/lib/common')).default\n for (const block of blocks) {\n hljs.highlightElement(block)\n block.setAttribute('data-highlighted', 'true')\n }\n }\n\n async function renderKatex() {\n await nextTick()\n const nodes =\n containerRef.value?.querySelectorAll<HTMLElement>('.katex-pending')\n if (!nodes?.length) {\n return\n }\n\n const katex = await loadKatex()\n // Keep this major in step with the installed katex: 0.18 prefixed the\n // internal class names (.sizing became .katex-sizing), so a stylesheet\n // from another major styles nothing. The widget pins the same major\n // again in its vite config, where katex is aliased to the CDN.\n loadCdnCss(\n 'https://cdn.jsdelivr.net/npm/katex@0.18/dist/katex.min.css',\n getShadowRoot(containerRef.value),\n )\n\n for (const node of Array.from(nodes)) {\n if (!node.isConnected) {\n continue\n }\n const tex = node.dataset.katex\n if (!tex) {\n continue\n }\n const displayMode = node.dataset.display === 'true'\n try {\n node.innerHTML = katex.renderToString(tex, {\n throwOnError: false,\n displayMode,\n })\n node.classList.remove('katex-pending')\n } catch {\n // Invalid LaTeX — leave placeholder\n }\n }\n }\n\n async function rerenderMermaidOnThemeChange() {\n await nextTick()\n const nodes = containerRef.value?.querySelectorAll<HTMLElement>(\n 'pre.mermaid[data-rendered]',\n )\n if (!nodes?.length) {\n return\n }\n\n const { renderMermaidSVG, THEMES } = await loadBeautifulMermaid()\n const theme = props.isDark\n ? THEMES['github-dark']\n : THEMES['github-light']\n\n for (const node of Array.from(nodes)) {\n if (!node.isConnected) {\n continue\n }\n const code = node.dataset.code\n if (!code) {\n continue\n }\n try {\n node.innerHTML = renderMermaidSVG(code, theme)\n } catch {\n // Invalid syntax — leave as-is\n }\n }\n }\n\n /**\n * Markdown images come from model output (or from a scraped page), so their\n * urls die often. The markup is injected with `v-html`, so there is no place\n * to bind `@error`: `error` doesn't bubble but it does propagate in the\n * capture phase, so one container listener covers every image, including the\n * ones added by later stream chunks.\n */\n function handleImageError(event: Event) {\n const img = event.target\n if (!(img instanceof HTMLImageElement) || img.dataset.broken) {\n return\n }\n img.dataset.broken = 'true'\n const placeholder = document.createElement('span')\n placeholder.className = 'markdown-broken-image'\n placeholder.textContent = img.alt || $t('label.imageLoadError')\n placeholder.title = img.src\n img.replaceWith(placeholder)\n }\n\n onMounted(() => {\n containerRef.value?.addEventListener('error', handleImageError, true)\n })\n onBeforeUnmount(() => {\n containerRef.value?.removeEventListener('error', handleImageError, true)\n })\n\n watch([html, () => props.loading], renderMermaid, { immediate: true })\n watch(() => props.isDark, rerenderMermaidOnThemeChange)\n watch(html, highlightCode, { immediate: true })\n watch(html, renderKatex, { immediate: true })\n\n // --- Streaming animation (FlowToken-style) ---\n\n let prevCharCount = 0\n\n function createAnimatedSpan(text: string, delay: number): HTMLSpanElement {\n const span = document.createElement('span')\n span.style.cssText = `animation:ft-${props.animation} ${props.animationDuration} ease-out ${delay}ms both;display:inline-block`\n span.textContent = text\n span.addEventListener(\n 'animationend',\n () => {\n const parent = span.parentNode\n if (!parent) {\n return\n }\n parent.replaceChild(document.createTextNode(text), span)\n parent.normalize()\n },\n { once: true },\n )\n return span\n }\n\n function insertAnimatedWords(\n text: string,\n parent: Node,\n refNode: Node | null,\n startIndex: number,\n ): number {\n let idx = startIndex\n const parts = text.split(/(\\s+)/)\n for (const part of parts) {\n if (!part) {\n continue\n }\n if (/^\\s+$/.test(part)) {\n parent.insertBefore(document.createTextNode(part), refNode)\n continue\n }\n parent.insertBefore(createAnimatedSpan(part, idx * 30), refNode)\n idx++\n }\n return idx\n }\n\n function collectTextNodes(root: HTMLElement): Text[] {\n const walker = document.createTreeWalker(root, NodeFilter.SHOW_TEXT, {\n acceptNode(node) {\n if (\n node.parentElement?.closest(\n 'pre, code, .katex-pending, .markdown-broken-image',\n )\n ) {\n return NodeFilter.FILTER_REJECT\n }\n return NodeFilter.FILTER_ACCEPT\n },\n })\n const nodes: Text[] = []\n while (walker.nextNode()) {\n nodes.push(walker.currentNode as Text)\n }\n return nodes\n }\n\n function annotateNewContent() {\n if (!containerRef.value || !props.loading || !props.animation) {\n return\n }\n\n const textNodes = collectTextNodes(containerRef.value)\n let charsSeen = 0\n let wordIdx = 0\n\n for (const textNode of textNodes) {\n const text = textNode.textContent || ''\n const nodeStart = charsSeen\n const nodeEnd = charsSeen + text.length\n charsSeen = nodeEnd\n\n if (nodeEnd <= prevCharCount) {\n continue\n }\n\n const parent = textNode.parentNode\n if (!parent) {\n continue\n }\n\n // Entirely new node — animate all words\n if (nodeStart >= prevCharCount) {\n const ref = textNode.nextSibling\n parent.removeChild(textNode)\n wordIdx = insertAnimatedWords(text, parent, ref, wordIdx)\n continue\n }\n\n // Partially new — split and animate only the new portion\n const splitAt = prevCharCount - nodeStart\n const newTextNode = textNode.splitText(splitAt)\n const newText = newTextNode.textContent || ''\n const ref = newTextNode.nextSibling\n parent.removeChild(newTextNode)\n wordIdx = insertAnimatedWords(newText, parent, ref, wordIdx)\n }\n\n prevCharCount = charsSeen\n }\n\n watch(\n html,\n async () => {\n await nextTick()\n annotateNewContent()\n },\n { immediate: true },\n )\n\n watch(\n () => props.markdown,\n (newVal, oldVal) => {\n if (!newVal || (oldVal && newVal.length < oldVal.length)) {\n prevCharCount = 0\n }\n },\n )\n</script>\n\n<template>\n <div ref=\"container\" v-html=\"html\"></div>\n</template>\n\n<style>\n .markdown-broken-image {\n display: inline-flex;\n align-items: center;\n gap: var(--spacing-4);\n max-width: 100%;\n padding: var(--spacing-4) var(--spacing-8);\n border: var(--border) dashed var(--color-surface-4);\n border-radius: var(--rounded-md);\n background-color: var(--color-surface-1);\n color: var(--color-word-4);\n font-size: var(--text-12);\n vertical-align: middle;\n }\n\n @keyframes ft-fadeIn {\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n }\n\n @keyframes ft-blurIn {\n from {\n opacity: 0;\n filter: blur(4px);\n }\n to {\n opacity: 1;\n filter: blur(0px);\n }\n }\n\n @keyframes ft-dropIn {\n from {\n transform: translateY(-8px);\n opacity: 0;\n }\n to {\n transform: translateY(0);\n opacity: 1;\n }\n }\n\n @keyframes ft-slideUp {\n from {\n transform: translateY(8px);\n opacity: 0;\n }\n to {\n transform: translateY(0);\n opacity: 1;\n }\n }\n\n @keyframes ft-fadeAndScale {\n from {\n transform: scale(0.85);\n opacity: 0;\n }\n to {\n transform: scale(1);\n opacity: 1;\n }\n }\n</style>\n","<script setup lang=\"ts\">\n import remend from 'remend'\n import { marked, type Token } from 'marked'\n import {\n computed,\n nextTick,\n onBeforeUnmount,\n onMounted,\n toRef,\n useTemplateRef,\n watch,\n } from 'vue'\n import { refThrottled } from '@vueuse/core'\n import { useI18n } from 'vue-i18n'\n import {\n loadCdnCss,\n getShadowRoot,\n isSameSite,\n stripProviderCitationMarkers,\n } from 'utils'\n import { useShortUrlResolver } from 'composables'\n import { getMarkdownTail } from './utils'\n\n export type StreamingAnimation =\n 'fadeIn' | 'blurIn' | 'dropIn' | 'slideUp' | 'fadeAndScale' | null\n\n const props = withDefaults(\n defineProps<{\n markdown?: string\n loading?: boolean\n animation?: StreamingAnimation\n animationDuration?: string\n isDark?: boolean\n /**\n * Renders only the last `tailLength` characters, for a live box\n * that follows the bottom of a text too long to parse whole.\n */\n tailLength?: number\n }>(),\n {\n markdown: '',\n loading: false,\n animation: 'fadeIn',\n animationDuration: '0.3s',\n isDark: false,\n tailLength: undefined,\n },\n )\n\n const { t: $t } = useI18n({ useScope: 'global' })\n\n // --- Lazy-loaded heavy dependencies ---\n\n let beautifulMermaidPromise: Promise<\n typeof import('beautiful-mermaid')\n > | null = null\n function loadBeautifulMermaid() {\n if (!beautifulMermaidPromise) {\n beautifulMermaidPromise = import('beautiful-mermaid')\n }\n return beautifulMermaidPromise\n }\n\n let katexPromise: Promise<(typeof import('katex'))['default']> | null = null\n function loadKatex() {\n if (!katexPromise) {\n katexPromise = import('katex').then((mod) => mod.default)\n }\n return katexPromise\n }\n\n // --- Marked extensions ---\n\n const inlineKatexRule =\n /^(\\${1,2})(?!\\$)((?:\\\\.|[^\\\\\\n])*?(?:\\\\.|[^\\\\\\n$]))\\1(?=[\\s?!.,:\\uFF1F\\uFF01\\u3002\\uFF0C\\uFF1A]|$)/\n const blockKatexRule = /^(\\${1,2})\\n((?:\\\\[^]|[^\\\\])+?)\\n\\1(?:\\n|$)/\n\n function encodeKatexHtml(text: string): string {\n return text\n .replace(/&/g, '&')\n .replace(/</g, '<')\n .replace(/>/g, '>')\n }\n\n function renderKatexPlaceholder(\n text: string,\n displayMode: boolean,\n ): string {\n const encoded = encodeKatexHtml(text)\n return `<span class=\"katex-pending\" data-katex=\"${encoded}\" data-display=\"${displayMode}\"></span>`\n }\n\n marked.use({\n extensions: [\n {\n name: 'inlineKatex',\n level: 'inline',\n start: (src) => {\n const idx = src.indexOf('$')\n if (idx === -1) {\n return undefined\n }\n if (idx === 0 || src.charAt(idx - 1) === ' ') {\n return idx\n }\n return undefined\n },\n tokenizer(src) {\n const match = src.match(inlineKatexRule)\n if (!match) {\n return\n }\n return {\n type: 'inlineKatex',\n raw: match[0],\n text: match[2].trim(),\n displayMode: match[1].length === 2,\n }\n },\n renderer(token) {\n return renderKatexPlaceholder(token.text, token.displayMode)\n },\n },\n {\n name: 'blockKatex',\n level: 'block',\n tokenizer(src) {\n const match = src.match(blockKatexRule)\n if (!match) {\n return\n }\n return {\n type: 'blockKatex',\n raw: match[0],\n text: match[2].trim(),\n displayMode: match[1].length === 2,\n }\n },\n renderer(token) {\n return (\n renderKatexPlaceholder(token.text, token.displayMode) +\n '\\n'\n )\n },\n },\n ],\n })\n\n marked.use({\n extensions: [\n {\n name: 'thinking',\n level: 'block',\n start: (src) => src.indexOf('<thinking>'),\n tokenizer(src) {\n const match = /^<thinking>([\\s\\S]*?)<\\/thinking>/.exec(src)\n if (!match) {\n return\n }\n const token = {\n type: 'thinking',\n raw: match[0],\n text: match[1].trim(),\n tokens: [] as Token[],\n }\n this.lexer.blockTokens(token.text, token.tokens)\n return token\n },\n renderer(token) {\n return `<div class=\"thinking-block\">${this.parser.parse(token.tokens ?? [])}</div>`\n },\n },\n ],\n })\n\n // --- Custom renderer ---\n\n const renderer = new marked.Renderer()\n\n // marked escapes href and title inside its own link renderer. This\n // override replaces that renderer, so until now both went into `v-html`\n // verbatim: a quote in the URL closed the attribute and everything after\n // it became markup, in a document written by a model and, through the\n // knowledge base, by whoever fed it.\n const escapeAttribute = (value: string) =>\n value\n .replace(/&/g, '&')\n .replace(/\"/g, '"')\n .replace(/</g, '<')\n .replace(/>/g, '>')\n // Schemes that execute rather than navigate. The link becomes plain text,\n // so the reader still sees what it said.\n const UNSAFE_LINK_SCHEME = /^(?:javascript|data|vbscript|file):/i\n\n renderer.link = function ({ href, title, tokens }) {\n const text = this.parser.parseInline(tokens)\n // Control characters go first: the browser strips them before reading\n // the scheme, so they are how `java\\tscript:` gets past a check.\n // eslint-disable-next-line no-control-regex -- they are the point here\n const target = (href ?? '').trim().replace(/[\\x00-\\x1f]/g, '')\n if (!target || UNSAFE_LINK_SCHEME.test(target)) {\n return text\n }\n const titleAttr = title ? ` title=\"${escapeAttribute(title)}\"` : ''\n const targetAttrs = isSameSite(target)\n ? ''\n : ' target=\"_blank\" rel=\"noopener noreferrer\"'\n return `<a href=\"${escapeAttribute(target)}\"${titleAttr}${targetAttrs}>${text}</a>`\n }\n\n renderer.table = function (token) {\n return `<div class=\"table-wrapper\">${marked.Renderer.prototype.table.call(this, token)}</div>`\n }\n\n const MERMAID_PREFIXES =\n /^(sequenceDiagram|graph|classDiagram|stateDiagram|erDiagram|flowchart|xychart-beta)/\n\n renderer.code = ({ text }) => {\n if (MERMAID_PREFIXES.test(text)) {\n return `<pre class=\"mermaid\">${text}</pre>`\n }\n return `<pre><code>${text}</code></pre>`\n }\n\n // --- Preprocessing pipeline ---\n\n function normalizeLatexDelimiters(md: string): string {\n return md\n .replace(/\\\\\\[([\\s\\S]*?)\\\\\\]/g, (_, content) => `$$${content}$$`)\n .replace(/\\\\\\(([\\s\\S]*?)\\\\\\)/g, (_, content) => `$${content}$`)\n .replace(/^(\\d+)\\.(?!\\s)/gm, '$1\\\\.')\n }\n\n /**\n * Strips JSON objects/arrays that appear outside fenced code blocks.\n * Some models dump tool-call JSON directly into the text response.\n */\n function stripLeakedJson(md: string): string {\n const fenced = new Set<number>()\n const fenceRe = /^(`{3,}|~{3,})[^\\n]*\\n([\\s\\S]*?)\\n\\1/gm\n let fenceMatch: RegExpExecArray | null\n while ((fenceMatch = fenceRe.exec(md)) !== null) {\n for (\n let i = fenceMatch.index;\n i < fenceMatch.index + fenceMatch[0].length;\n i++\n ) {\n fenced.add(i)\n }\n }\n\n return md\n .replace(\n /[{[]([\\s\\S]*?)[}\\]]/g,\n (match, _inner, offset: number) => {\n if (fenced.has(offset)) {\n return match\n }\n try {\n JSON.parse(match)\n return ''\n } catch {\n return match\n }\n },\n )\n .replace(/\\n{3,}/g, '\\n\\n')\n }\n\n // Runs on the accumulated text, not on deltas, so a marker split across two\n // stream chunks still gets caught once both have landed.\n const preprocessors: Array<(md: string) => string> = [\n stripProviderCitationMarkers,\n stripLeakedJson,\n remend,\n normalizeLatexDelimiters,\n ]\n\n // --- Computed HTML ---\n\n const containerRef = useTemplateRef<HTMLDivElement>('container')\n\n // Every render parses the whole text again, and a stream changes it at every\n // delta: the cost of a turn grows with the square of its length. On chat\n // `st0Eg8iG0zUX0HQN` one parse took 24ms at 92KB, thousands of deltas\n // arrived, and the tab froze. The first text renders at once, the changes\n // after it at most once per interval, the last one always included.\n const RENDER_INTERVAL_MS = 100\n const renderedMarkdown = refThrottled(\n toRef(props, 'markdown'),\n RENDER_INTERVAL_MS,\n )\n const visibleMarkdown = computed(() =>\n props.tailLength\n ? getMarkdownTail(renderedMarkdown.value, props.tailLength)\n : renderedMarkdown.value,\n )\n\n // Expand backend short urls (`/api/r/<hash>`) back to their real target so\n // prose (e.g. a bulleted list of links) shows/opens real urls, not the\n // token-cheap short ones the model sees. No-op when no resolver is provided.\n const { resolveText } = useShortUrlResolver()\n const expandedMarkdown = resolveText(visibleMarkdown)\n\n const html = computed(() => {\n const md = preprocessors.reduce(\n (text, fn) => fn(text),\n expandedMarkdown.value,\n )\n return marked.parse(md, {\n async: false,\n breaks: true,\n renderer,\n }) as string\n })\n\n // --- Post-render processors ---\n\n async function renderMermaid() {\n if (props.loading) {\n return\n }\n\n await nextTick()\n const nodes = containerRef.value?.querySelectorAll<HTMLElement>(\n 'pre.mermaid:not([data-rendered])',\n )\n if (!nodes?.length) {\n return\n }\n\n const { renderMermaidSVG, THEMES } = await loadBeautifulMermaid()\n const theme = props.isDark\n ? THEMES['github-dark']\n : THEMES['github-light']\n\n for (const node of Array.from(nodes)) {\n if (!node.isConnected) {\n continue\n }\n const code = node.textContent?.trim()\n if (!code) {\n continue\n }\n\n try {\n const svg = renderMermaidSVG(code, theme)\n if (node.isConnected) {\n node.dataset.code = code\n node.innerHTML = svg\n node.setAttribute('data-rendered', 'true')\n }\n } catch {\n // Invalid syntax — node left untouched\n }\n }\n }\n\n async function highlightCode() {\n await nextTick()\n const blocks = containerRef.value?.querySelectorAll<HTMLElement>(\n 'pre:not(.mermaid) > code:not([data-highlighted])',\n )\n if (!blocks?.length) {\n return\n }\n\n const hljs = (await import('highlight.js/lib/common')).default\n for (const block of blocks) {\n hljs.highlightElement(block)\n block.setAttribute('data-highlighted', 'true')\n }\n }\n\n async function renderKatex() {\n await nextTick()\n const nodes =\n containerRef.value?.querySelectorAll<HTMLElement>('.katex-pending')\n if (!nodes?.length) {\n return\n }\n\n const katex = await loadKatex()\n // Keep this major in step with the installed katex: 0.18 prefixed the\n // internal class names (.sizing became .katex-sizing), so a stylesheet\n // from another major styles nothing. The widget pins the same major\n // again in its vite config, where katex is aliased to the CDN.\n loadCdnCss(\n 'https://cdn.jsdelivr.net/npm/katex@0.18/dist/katex.min.css',\n getShadowRoot(containerRef.value),\n )\n\n for (const node of Array.from(nodes)) {\n if (!node.isConnected) {\n continue\n }\n const tex = node.dataset.katex\n if (!tex) {\n continue\n }\n const displayMode = node.dataset.display === 'true'\n try {\n node.innerHTML = katex.renderToString(tex, {\n throwOnError: false,\n displayMode,\n })\n node.classList.remove('katex-pending')\n } catch {\n // Invalid LaTeX — leave placeholder\n }\n }\n }\n\n async function rerenderMermaidOnThemeChange() {\n await nextTick()\n const nodes = containerRef.value?.querySelectorAll<HTMLElement>(\n 'pre.mermaid[data-rendered]',\n )\n if (!nodes?.length) {\n return\n }\n\n const { renderMermaidSVG, THEMES } = await loadBeautifulMermaid()\n const theme = props.isDark\n ? THEMES['github-dark']\n : THEMES['github-light']\n\n for (const node of Array.from(nodes)) {\n if (!node.isConnected) {\n continue\n }\n const code = node.dataset.code\n if (!code) {\n continue\n }\n try {\n node.innerHTML = renderMermaidSVG(code, theme)\n } catch {\n // Invalid syntax — leave as-is\n }\n }\n }\n\n /**\n * Markdown images come from model output (or from a scraped page), so their\n * urls die often. The markup is injected with `v-html`, so there is no place\n * to bind `@error`: `error` doesn't bubble but it does propagate in the\n * capture phase, so one container listener covers every image, including the\n * ones added by later stream chunks.\n */\n function handleImageError(event: Event) {\n const img = event.target\n if (!(img instanceof HTMLImageElement) || img.dataset.broken) {\n return\n }\n img.dataset.broken = 'true'\n const placeholder = document.createElement('span')\n placeholder.className = 'markdown-broken-image'\n placeholder.textContent = img.alt || $t('label.imageLoadError')\n placeholder.title = img.src\n img.replaceWith(placeholder)\n }\n\n onMounted(() => {\n containerRef.value?.addEventListener('error', handleImageError, true)\n })\n onBeforeUnmount(() => {\n containerRef.value?.removeEventListener('error', handleImageError, true)\n })\n\n watch([html, () => props.loading], renderMermaid, { immediate: true })\n watch(() => props.isDark, rerenderMermaidOnThemeChange)\n watch(html, highlightCode, { immediate: true })\n watch(html, renderKatex, { immediate: true })\n\n // --- Streaming animation (FlowToken-style) ---\n\n let prevCharCount = 0\n\n function createAnimatedSpan(text: string, delay: number): HTMLSpanElement {\n const span = document.createElement('span')\n span.style.cssText = `animation:ft-${props.animation} ${props.animationDuration} ease-out ${delay}ms both;display:inline-block`\n span.textContent = text\n span.addEventListener(\n 'animationend',\n () => {\n const parent = span.parentNode\n if (!parent) {\n return\n }\n parent.replaceChild(document.createTextNode(text), span)\n parent.normalize()\n },\n { once: true },\n )\n return span\n }\n\n function insertAnimatedWords(\n text: string,\n parent: Node,\n refNode: Node | null,\n startIndex: number,\n ): number {\n let idx = startIndex\n const parts = text.split(/(\\s+)/)\n for (const part of parts) {\n if (!part) {\n continue\n }\n if (/^\\s+$/.test(part)) {\n parent.insertBefore(document.createTextNode(part), refNode)\n continue\n }\n parent.insertBefore(createAnimatedSpan(part, idx * 30), refNode)\n idx++\n }\n return idx\n }\n\n function collectTextNodes(root: HTMLElement): Text[] {\n const walker = document.createTreeWalker(root, NodeFilter.SHOW_TEXT, {\n acceptNode(node) {\n if (\n node.parentElement?.closest(\n 'pre, code, .katex-pending, .markdown-broken-image',\n )\n ) {\n return NodeFilter.FILTER_REJECT\n }\n return NodeFilter.FILTER_ACCEPT\n },\n })\n const nodes: Text[] = []\n while (walker.nextNode()) {\n nodes.push(walker.currentNode as Text)\n }\n return nodes\n }\n\n function annotateNewContent() {\n if (!containerRef.value || !props.loading || !props.animation) {\n return\n }\n\n const textNodes = collectTextNodes(containerRef.value)\n let charsSeen = 0\n let wordIdx = 0\n\n for (const textNode of textNodes) {\n const text = textNode.textContent || ''\n const nodeStart = charsSeen\n const nodeEnd = charsSeen + text.length\n charsSeen = nodeEnd\n\n if (nodeEnd <= prevCharCount) {\n continue\n }\n\n const parent = textNode.parentNode\n if (!parent) {\n continue\n }\n\n // Entirely new node — animate all words\n if (nodeStart >= prevCharCount) {\n const ref = textNode.nextSibling\n parent.removeChild(textNode)\n wordIdx = insertAnimatedWords(text, parent, ref, wordIdx)\n continue\n }\n\n // Partially new — split and animate only the new portion\n const splitAt = prevCharCount - nodeStart\n const newTextNode = textNode.splitText(splitAt)\n const newText = newTextNode.textContent || ''\n const ref = newTextNode.nextSibling\n parent.removeChild(newTextNode)\n wordIdx = insertAnimatedWords(newText, parent, ref, wordIdx)\n }\n\n prevCharCount = charsSeen\n }\n\n watch(\n html,\n async () => {\n await nextTick()\n annotateNewContent()\n },\n { immediate: true },\n )\n\n watch(\n () => props.markdown,\n (newVal, oldVal) => {\n if (!newVal || (oldVal && newVal.length < oldVal.length)) {\n prevCharCount = 0\n }\n },\n )\n</script>\n\n<template>\n <div ref=\"container\" v-html=\"html\"></div>\n</template>\n\n<style>\n .markdown-broken-image {\n display: inline-flex;\n align-items: center;\n gap: var(--spacing-4);\n max-width: 100%;\n padding: var(--spacing-4) var(--spacing-8);\n border: var(--border) dashed var(--color-surface-4);\n border-radius: var(--rounded-md);\n background-color: var(--color-surface-1);\n color: var(--color-word-4);\n font-size: var(--text-12);\n vertical-align: middle;\n }\n\n @keyframes ft-fadeIn {\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n }\n\n @keyframes ft-blurIn {\n from {\n opacity: 0;\n filter: blur(4px);\n }\n to {\n opacity: 1;\n filter: blur(0px);\n }\n }\n\n @keyframes ft-dropIn {\n from {\n transform: translateY(-8px);\n opacity: 0;\n }\n to {\n transform: translateY(0);\n opacity: 1;\n }\n }\n\n @keyframes ft-slideUp {\n from {\n transform: translateY(8px);\n opacity: 0;\n }\n to {\n transform: translateY(0);\n opacity: 1;\n }\n }\n\n @keyframes ft-fadeAndScale {\n from {\n transform: scale(0.85);\n opacity: 0;\n }\n to {\n transform: scale(1);\n opacity: 1;\n }\n }\n</style>\n","<script setup lang=\"ts\">\n import remend from 'remend'\n import { marked, type Token } from 'marked'\n import {\n computed,\n nextTick,\n onBeforeUnmount,\n onMounted,\n toRef,\n useTemplateRef,\n watch,\n } from 'vue'\n import { refThrottled } from '@vueuse/core'\n import { useI18n } from 'vue-i18n'\n import {\n loadCdnCss,\n getShadowRoot,\n isSameSite,\n stripProviderCitationMarkers,\n } from 'utils'\n import { useShortUrlResolver } from 'composables'\n import { getMarkdownTail } from './utils'\n\n export type StreamingAnimation =\n 'fadeIn' | 'blurIn' | 'dropIn' | 'slideUp' | 'fadeAndScale' | null\n\n const props = withDefaults(\n defineProps<{\n markdown?: string\n loading?: boolean\n animation?: StreamingAnimation\n animationDuration?: string\n isDark?: boolean\n /**\n * Renders only the last `tailLength` characters, for a live box\n * that follows the bottom of a text too long to parse whole.\n */\n tailLength?: number\n }>(),\n {\n markdown: '',\n loading: false,\n animation: 'fadeIn',\n animationDuration: '0.3s',\n isDark: false,\n tailLength: undefined,\n },\n )\n\n const { t: $t } = useI18n({ useScope: 'global' })\n\n // --- Lazy-loaded heavy dependencies ---\n\n let beautifulMermaidPromise: Promise<\n typeof import('beautiful-mermaid')\n > | null = null\n function loadBeautifulMermaid() {\n if (!beautifulMermaidPromise) {\n beautifulMermaidPromise = import('beautiful-mermaid')\n }\n return beautifulMermaidPromise\n }\n\n let katexPromise: Promise<(typeof import('katex'))['default']> | null = null\n function loadKatex() {\n if (!katexPromise) {\n katexPromise = import('katex').then((mod) => mod.default)\n }\n return katexPromise\n }\n\n // --- Marked extensions ---\n\n const inlineKatexRule =\n /^(\\${1,2})(?!\\$)((?:\\\\.|[^\\\\\\n])*?(?:\\\\.|[^\\\\\\n$]))\\1(?=[\\s?!.,:\\uFF1F\\uFF01\\u3002\\uFF0C\\uFF1A]|$)/\n const blockKatexRule = /^(\\${1,2})\\n((?:\\\\[^]|[^\\\\])+?)\\n\\1(?:\\n|$)/\n\n function encodeKatexHtml(text: string): string {\n return text\n .replace(/&/g, '&')\n .replace(/</g, '<')\n .replace(/>/g, '>')\n }\n\n function renderKatexPlaceholder(\n text: string,\n displayMode: boolean,\n ): string {\n const encoded = encodeKatexHtml(text)\n return `<span class=\"katex-pending\" data-katex=\"${encoded}\" data-display=\"${displayMode}\"></span>`\n }\n\n marked.use({\n extensions: [\n {\n name: 'inlineKatex',\n level: 'inline',\n start: (src) => {\n const idx = src.indexOf('$')\n if (idx === -1) {\n return undefined\n }\n if (idx === 0 || src.charAt(idx - 1) === ' ') {\n return idx\n }\n return undefined\n },\n tokenizer(src) {\n const match = src.match(inlineKatexRule)\n if (!match) {\n return\n }\n return {\n type: 'inlineKatex',\n raw: match[0],\n text: match[2].trim(),\n displayMode: match[1].length === 2,\n }\n },\n renderer(token) {\n return renderKatexPlaceholder(token.text, token.displayMode)\n },\n },\n {\n name: 'blockKatex',\n level: 'block',\n tokenizer(src) {\n const match = src.match(blockKatexRule)\n if (!match) {\n return\n }\n return {\n type: 'blockKatex',\n raw: match[0],\n text: match[2].trim(),\n displayMode: match[1].length === 2,\n }\n },\n renderer(token) {\n return (\n renderKatexPlaceholder(token.text, token.displayMode) +\n '\\n'\n )\n },\n },\n ],\n })\n\n marked.use({\n extensions: [\n {\n name: 'thinking',\n level: 'block',\n start: (src) => src.indexOf('<thinking>'),\n tokenizer(src) {\n const match = /^<thinking>([\\s\\S]*?)<\\/thinking>/.exec(src)\n if (!match) {\n return\n }\n const token = {\n type: 'thinking',\n raw: match[0],\n text: match[1].trim(),\n tokens: [] as Token[],\n }\n this.lexer.blockTokens(token.text, token.tokens)\n return token\n },\n renderer(token) {\n return `<div class=\"thinking-block\">${this.parser.parse(token.tokens ?? [])}</div>`\n },\n },\n ],\n })\n\n // --- Custom renderer ---\n\n const renderer = new marked.Renderer()\n\n // marked escapes href and title inside its own link renderer. This\n // override replaces that renderer, so until now both went into `v-html`\n // verbatim: a quote in the URL closed the attribute and everything after\n // it became markup, in a document written by a model and, through the\n // knowledge base, by whoever fed it.\n const escapeAttribute = (value: string) =>\n value\n .replace(/&/g, '&')\n .replace(/\"/g, '"')\n .replace(/</g, '<')\n .replace(/>/g, '>')\n // Schemes that execute rather than navigate. The link becomes plain text,\n // so the reader still sees what it said.\n const UNSAFE_LINK_SCHEME = /^(?:javascript|data|vbscript|file):/i\n\n renderer.link = function ({ href, title, tokens }) {\n const text = this.parser.parseInline(tokens)\n // Control characters go first: the browser strips them before reading\n // the scheme, so they are how `java\\tscript:` gets past a check.\n // eslint-disable-next-line no-control-regex -- they are the point here\n const target = (href ?? '').trim().replace(/[\\x00-\\x1f]/g, '')\n if (!target || UNSAFE_LINK_SCHEME.test(target)) {\n return text\n }\n const titleAttr = title ? ` title=\"${escapeAttribute(title)}\"` : ''\n const targetAttrs = isSameSite(target)\n ? ''\n : ' target=\"_blank\" rel=\"noopener noreferrer\"'\n return `<a href=\"${escapeAttribute(target)}\"${titleAttr}${targetAttrs}>${text}</a>`\n }\n\n renderer.table = function (token) {\n return `<div class=\"table-wrapper\">${marked.Renderer.prototype.table.call(this, token)}</div>`\n }\n\n const MERMAID_PREFIXES =\n /^(sequenceDiagram|graph|classDiagram|stateDiagram|erDiagram|flowchart|xychart-beta)/\n\n renderer.code = ({ text }) => {\n if (MERMAID_PREFIXES.test(text)) {\n return `<pre class=\"mermaid\">${text}</pre>`\n }\n return `<pre><code>${text}</code></pre>`\n }\n\n // --- Preprocessing pipeline ---\n\n function normalizeLatexDelimiters(md: string): string {\n return md\n .replace(/\\\\\\[([\\s\\S]*?)\\\\\\]/g, (_, content) => `$$${content}$$`)\n .replace(/\\\\\\(([\\s\\S]*?)\\\\\\)/g, (_, content) => `$${content}$`)\n .replace(/^(\\d+)\\.(?!\\s)/gm, '$1\\\\.')\n }\n\n /**\n * Strips JSON objects/arrays that appear outside fenced code blocks.\n * Some models dump tool-call JSON directly into the text response.\n */\n function stripLeakedJson(md: string): string {\n const fenced = new Set<number>()\n const fenceRe = /^(`{3,}|~{3,})[^\\n]*\\n([\\s\\S]*?)\\n\\1/gm\n let fenceMatch: RegExpExecArray | null\n while ((fenceMatch = fenceRe.exec(md)) !== null) {\n for (\n let i = fenceMatch.index;\n i < fenceMatch.index + fenceMatch[0].length;\n i++\n ) {\n fenced.add(i)\n }\n }\n\n return md\n .replace(\n /[{[]([\\s\\S]*?)[}\\]]/g,\n (match, _inner, offset: number) => {\n if (fenced.has(offset)) {\n return match\n }\n try {\n JSON.parse(match)\n return ''\n } catch {\n return match\n }\n },\n )\n .replace(/\\n{3,}/g, '\\n\\n')\n }\n\n // Runs on the accumulated text, not on deltas, so a marker split across two\n // stream chunks still gets caught once both have landed.\n const preprocessors: Array<(md: string) => string> = [\n stripProviderCitationMarkers,\n stripLeakedJson,\n remend,\n normalizeLatexDelimiters,\n ]\n\n // --- Computed HTML ---\n\n const containerRef = useTemplateRef<HTMLDivElement>('container')\n\n // Every render parses the whole text again, and a stream changes it at every\n // delta: the cost of a turn grows with the square of its length. On chat\n // `st0Eg8iG0zUX0HQN` one parse took 24ms at 92KB, thousands of deltas\n // arrived, and the tab froze. The first text renders at once, the changes\n // after it at most once per interval, the last one always included.\n const RENDER_INTERVAL_MS = 100\n const renderedMarkdown = refThrottled(\n toRef(props, 'markdown'),\n RENDER_INTERVAL_MS,\n )\n const visibleMarkdown = computed(() =>\n props.tailLength\n ? getMarkdownTail(renderedMarkdown.value, props.tailLength)\n : renderedMarkdown.value,\n )\n\n // Expand backend short urls (`/api/r/<hash>`) back to their real target so\n // prose (e.g. a bulleted list of links) shows/opens real urls, not the\n // token-cheap short ones the model sees. No-op when no resolver is provided.\n const { resolveText } = useShortUrlResolver()\n const expandedMarkdown = resolveText(visibleMarkdown)\n\n const html = computed(() => {\n const md = preprocessors.reduce(\n (text, fn) => fn(text),\n expandedMarkdown.value,\n )\n return marked.parse(md, {\n async: false,\n breaks: true,\n renderer,\n }) as string\n })\n\n // --- Post-render processors ---\n\n async function renderMermaid() {\n if (props.loading) {\n return\n }\n\n await nextTick()\n const nodes = containerRef.value?.querySelectorAll<HTMLElement>(\n 'pre.mermaid:not([data-rendered])',\n )\n if (!nodes?.length) {\n return\n }\n\n const { renderMermaidSVG, THEMES } = await loadBeautifulMermaid()\n const theme = props.isDark\n ? THEMES['github-dark']\n : THEMES['github-light']\n\n for (const node of Array.from(nodes)) {\n if (!node.isConnected) {\n continue\n }\n const code = node.textContent?.trim()\n if (!code) {\n continue\n }\n\n try {\n const svg = renderMermaidSVG(code, theme)\n if (node.isConnected) {\n node.dataset.code = code\n node.innerHTML = svg\n node.setAttribute('data-rendered', 'true')\n }\n } catch {\n // Invalid syntax — node left untouched\n }\n }\n }\n\n async function highlightCode() {\n await nextTick()\n const blocks = containerRef.value?.querySelectorAll<HTMLElement>(\n 'pre:not(.mermaid) > code:not([data-highlighted])',\n )\n if (!blocks?.length) {\n return\n }\n\n const hljs = (await import('highlight.js/lib/common')).default\n for (const block of blocks) {\n hljs.highlightElement(block)\n block.setAttribute('data-highlighted', 'true')\n }\n }\n\n async function renderKatex() {\n await nextTick()\n const nodes =\n containerRef.value?.querySelectorAll<HTMLElement>('.katex-pending')\n if (!nodes?.length) {\n return\n }\n\n const katex = await loadKatex()\n // Keep this major in step with the installed katex: 0.18 prefixed the\n // internal class names (.sizing became .katex-sizing), so a stylesheet\n // from another major styles nothing. The widget pins the same major\n // again in its vite config, where katex is aliased to the CDN.\n loadCdnCss(\n 'https://cdn.jsdelivr.net/npm/katex@0.18/dist/katex.min.css',\n getShadowRoot(containerRef.value),\n )\n\n for (const node of Array.from(nodes)) {\n if (!node.isConnected) {\n continue\n }\n const tex = node.dataset.katex\n if (!tex) {\n continue\n }\n const displayMode = node.dataset.display === 'true'\n try {\n node.innerHTML = katex.renderToString(tex, {\n throwOnError: false,\n displayMode,\n })\n node.classList.remove('katex-pending')\n } catch {\n // Invalid LaTeX — leave placeholder\n }\n }\n }\n\n async function rerenderMermaidOnThemeChange() {\n await nextTick()\n const nodes = containerRef.value?.querySelectorAll<HTMLElement>(\n 'pre.mermaid[data-rendered]',\n )\n if (!nodes?.length) {\n return\n }\n\n const { renderMermaidSVG, THEMES } = await loadBeautifulMermaid()\n const theme = props.isDark\n ? THEMES['github-dark']\n : THEMES['github-light']\n\n for (const node of Array.from(nodes)) {\n if (!node.isConnected) {\n continue\n }\n const code = node.dataset.code\n if (!code) {\n continue\n }\n try {\n node.innerHTML = renderMermaidSVG(code, theme)\n } catch {\n // Invalid syntax — leave as-is\n }\n }\n }\n\n /**\n * Markdown images come from model output (or from a scraped page), so their\n * urls die often. The markup is injected with `v-html`, so there is no place\n * to bind `@error`: `error` doesn't bubble but it does propagate in the\n * capture phase, so one container listener covers every image, including the\n * ones added by later stream chunks.\n */\n function handleImageError(event: Event) {\n const img = event.target\n if (!(img instanceof HTMLImageElement) || img.dataset.broken) {\n return\n }\n img.dataset.broken = 'true'\n const placeholder = document.createElement('span')\n placeholder.className = 'markdown-broken-image'\n placeholder.textContent = img.alt || $t('label.imageLoadError')\n placeholder.title = img.src\n img.replaceWith(placeholder)\n }\n\n onMounted(() => {\n containerRef.value?.addEventListener('error', handleImageError, true)\n })\n onBeforeUnmount(() => {\n containerRef.value?.removeEventListener('error', handleImageError, true)\n })\n\n watch([html, () => props.loading], renderMermaid, { immediate: true })\n watch(() => props.isDark, rerenderMermaidOnThemeChange)\n watch(html, highlightCode, { immediate: true })\n watch(html, renderKatex, { immediate: true })\n\n // --- Streaming animation (FlowToken-style) ---\n\n let prevCharCount = 0\n\n function createAnimatedSpan(text: string, delay: number): HTMLSpanElement {\n const span = document.createElement('span')\n span.style.cssText = `animation:ft-${props.animation} ${props.animationDuration} ease-out ${delay}ms both;display:inline-block`\n span.textContent = text\n span.addEventListener(\n 'animationend',\n () => {\n const parent = span.parentNode\n if (!parent) {\n return\n }\n parent.replaceChild(document.createTextNode(text), span)\n parent.normalize()\n },\n { once: true },\n )\n return span\n }\n\n function insertAnimatedWords(\n text: string,\n parent: Node,\n refNode: Node | null,\n startIndex: number,\n ): number {\n let idx = startIndex\n const parts = text.split(/(\\s+)/)\n for (const part of parts) {\n if (!part) {\n continue\n }\n if (/^\\s+$/.test(part)) {\n parent.insertBefore(document.createTextNode(part), refNode)\n continue\n }\n parent.insertBefore(createAnimatedSpan(part, idx * 30), refNode)\n idx++\n }\n return idx\n }\n\n function collectTextNodes(root: HTMLElement): Text[] {\n const walker = document.createTreeWalker(root, NodeFilter.SHOW_TEXT, {\n acceptNode(node) {\n if (\n node.parentElement?.closest(\n 'pre, code, .katex-pending, .markdown-broken-image',\n )\n ) {\n return NodeFilter.FILTER_REJECT\n }\n return NodeFilter.FILTER_ACCEPT\n },\n })\n const nodes: Text[] = []\n while (walker.nextNode()) {\n nodes.push(walker.currentNode as Text)\n }\n return nodes\n }\n\n function annotateNewContent() {\n if (!containerRef.value || !props.loading || !props.animation) {\n return\n }\n\n const textNodes = collectTextNodes(containerRef.value)\n let charsSeen = 0\n let wordIdx = 0\n\n for (const textNode of textNodes) {\n const text = textNode.textContent || ''\n const nodeStart = charsSeen\n const nodeEnd = charsSeen + text.length\n charsSeen = nodeEnd\n\n if (nodeEnd <= prevCharCount) {\n continue\n }\n\n const parent = textNode.parentNode\n if (!parent) {\n continue\n }\n\n // Entirely new node — animate all words\n if (nodeStart >= prevCharCount) {\n const ref = textNode.nextSibling\n parent.removeChild(textNode)\n wordIdx = insertAnimatedWords(text, parent, ref, wordIdx)\n continue\n }\n\n // Partially new — split and animate only the new portion\n const splitAt = prevCharCount - nodeStart\n const newTextNode = textNode.splitText(splitAt)\n const newText = newTextNode.textContent || ''\n const ref = newTextNode.nextSibling\n parent.removeChild(newTextNode)\n wordIdx = insertAnimatedWords(newText, parent, ref, wordIdx)\n }\n\n prevCharCount = charsSeen\n }\n\n watch(\n html,\n async () => {\n await nextTick()\n annotateNewContent()\n },\n { immediate: true },\n )\n\n watch(\n () => props.markdown,\n (newVal, oldVal) => {\n if (!newVal || (oldVal && newVal.length < oldVal.length)) {\n prevCharCount = 0\n }\n },\n )\n</script>\n\n<template>\n <div ref=\"container\" v-html=\"html\"></div>\n</template>\n\n<style>\n .markdown-broken-image {\n display: inline-flex;\n align-items: center;\n gap: var(--spacing-4);\n max-width: 100%;\n padding: var(--spacing-4) var(--spacing-8);\n border: var(--border) dashed var(--color-surface-4);\n border-radius: var(--rounded-md);\n background-color: var(--color-surface-1);\n color: var(--color-word-4);\n font-size: var(--text-12);\n vertical-align: middle;\n }\n\n @keyframes ft-fadeIn {\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n }\n\n @keyframes ft-blurIn {\n from {\n opacity: 0;\n filter: blur(4px);\n }\n to {\n opacity: 1;\n filter: blur(0px);\n }\n }\n\n @keyframes ft-dropIn {\n from {\n transform: translateY(-8px);\n opacity: 0;\n }\n to {\n transform: translateY(0);\n opacity: 1;\n }\n }\n\n @keyframes ft-slideUp {\n from {\n transform: translateY(8px);\n opacity: 0;\n }\n to {\n transform: translateY(0);\n opacity: 1;\n }\n }\n\n @keyframes ft-fadeAndScale {\n from {\n transform: scale(0.85);\n opacity: 0;\n }\n to {\n transform: scale(1);\n opacity: 1;\n }\n }\n</style>\n"],"x_google_ignoreList":[3,4],"mappings":"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"}
|