@8wave/ai-elements 0.111.0-beta.3 → 0.111.0-beta.7
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/{Agent-Su_LDF9_.js → Agent-tE7ZJPxG.js} +80 -78
- package/dist/_chunks/Agent-tE7ZJPxG.js.map +1 -0
- package/dist/_chunks/{Document-DecVclEe.js → Document-Bmx6774B.js} +33 -21
- package/dist/_chunks/Document-Bmx6774B.js.map +1 -0
- package/dist/_chunks/Media-Cft7Pwrh.js +108 -0
- package/dist/_chunks/Media-Cft7Pwrh.js.map +1 -0
- package/dist/_chunks/{PkStreamingMarkdown-CwqsJnJJ.js → PkStreamingMarkdown-DgBS4Ebc.js} +69 -59
- package/dist/_chunks/PkStreamingMarkdown-DgBS4Ebc.js.map +1 -0
- package/dist/_chunks/{PkToolRequestGeolocation-OokLeTf1.js → PkToolRequestGeolocation-pVys3x9M.js} +2 -2
- package/dist/_chunks/{PkToolRequestGeolocation-OokLeTf1.js.map → PkToolRequestGeolocation-pVys3x9M.js.map} +1 -1
- package/dist/_chunks/{PkToolRequestOAuthConnection-CtqKG6Yb.js → PkToolRequestOAuthConnection-BGChb_eC.js} +2 -2
- package/dist/_chunks/{PkToolRequestOAuthConnection-CtqKG6Yb.js.map → PkToolRequestOAuthConnection-BGChb_eC.js.map} +1 -1
- package/dist/_chunks/{PkToolShowArtifact-M6jlSmyJ.js → PkToolShowArtifact-CkTBIdQd.js} +2 -2
- package/dist/_chunks/{PkToolShowArtifact-M6jlSmyJ.js.map → PkToolShowArtifact-CkTBIdQd.js.map} +1 -1
- package/dist/_chunks/{PkToolShowContactForm-D_dW59Dl.js → PkToolShowContactForm-Du7jX7K5.js} +2 -2
- package/dist/_chunks/{PkToolShowContactForm-D_dW59Dl.js.map → PkToolShowContactForm-Du7jX7K5.js.map} +1 -1
- package/dist/_chunks/PkToolShowDiagram-BdmG9gm8.js.map +1 -1
- package/dist/_chunks/{PkToolShowForm-DbJHMDbt.js → PkToolShowForm-Du2nk7pq.js} +3 -3
- package/dist/_chunks/PkToolShowForm-Du2nk7pq.js.map +1 -0
- package/dist/_chunks/{PkToolShowSources-Dot-W0Mj.js → PkToolShowSources-CsHLUF4L.js} +3 -3
- package/dist/_chunks/{PkToolShowSources-Dot-W0Mj.js.map → PkToolShowSources-CsHLUF4L.js.map} +1 -1
- package/dist/_chunks/{PkToolShowSuggestedReply-CKxSH0Y9.js → PkToolShowSuggestedReply-D7g_qymH.js} +2 -2
- package/dist/_chunks/{PkToolShowSuggestedReply-CKxSH0Y9.js.map → PkToolShowSuggestedReply-D7g_qymH.js.map} +1 -1
- package/dist/_chunks/PkToolShowWeather-LPd3tC77.js.map +1 -1
- package/dist/_chunks/PkUrl-BPbjZJ1A.js.map +1 -1
- package/dist/_chunks/{browser-NgY6LXg-.js → browser-B0Xnbqi7.js} +726 -751
- package/dist/_chunks/browser-B0Xnbqi7.js.map +1 -0
- package/dist/_chunks/text-DbSEK8si.js.map +1 -1
- package/dist/_chunks/utils-YJ0ZOLDG.js.map +1 -1
- package/dist/ai-elements.es.js +3010 -3052
- 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/PkChatbotError.js +1 -1
- package/dist-vue/PkChatbotInput.js +1 -1
- package/dist-vue/PkChatbotMessages.js +1 -1
- package/dist-vue/PkChatbotSteps.js +1 -1
- package/dist-vue/PkChatbotViewChat.js +1 -1
- package/dist-vue/PkChatbotViewConversations.js +1 -1
- package/dist-vue/PkChatbotViewFiles.js +1 -1
- package/dist-vue/PkChatbotViewProfile.js +1 -1
- package/dist-vue/_chunks/{Agent-C8BsTAxk.js → Agent-De2gFNjR.js} +165 -176
- package/dist-vue/_chunks/Agent-De2gFNjR.js.map +1 -0
- package/dist-vue/_chunks/{Document-CaUfI_SZ.js → Document-8umjeTVS.js} +84 -72
- package/dist-vue/_chunks/Document-8umjeTVS.js.map +1 -0
- package/dist-vue/_chunks/Media-_HfFLHGD.js.map +1 -1
- package/dist-vue/_chunks/{PkChatbot-BPKSPIeC.js → PkChatbot-Di7R2CWN.js} +7 -7
- package/dist-vue/_chunks/PkChatbot-Di7R2CWN.js.map +1 -0
- package/dist-vue/_chunks/{PkChatbotEmptyState-BvaeBxhx.js → PkChatbotEmptyState-C_ITdvH7.js} +2 -2
- package/dist-vue/_chunks/{PkChatbotEmptyState-BvaeBxhx.js.map → PkChatbotEmptyState-C_ITdvH7.js.map} +1 -1
- package/dist-vue/_chunks/{PkChatbotError-CBP2mf-n.js → PkChatbotError-gvDpRcEz.js} +21 -19
- package/dist-vue/_chunks/PkChatbotError-gvDpRcEz.js.map +1 -0
- package/dist-vue/_chunks/{PkChatbotInput-JnHaRlfk.js → PkChatbotInput-pEl3D2O-.js} +139 -124
- package/dist-vue/_chunks/PkChatbotInput-pEl3D2O-.js.map +1 -0
- package/dist-vue/_chunks/{PkChatbotMessages-DAlkoMkY.js → PkChatbotMessages-CGALOKwe.js} +17 -17
- package/dist-vue/_chunks/PkChatbotMessages-CGALOKwe.js.map +1 -0
- package/dist-vue/_chunks/{PkChatbotSteps-rommD48p.js → PkChatbotSteps-BhFupvbz.js} +2 -2
- package/dist-vue/_chunks/{PkChatbotSteps-rommD48p.js.map → PkChatbotSteps-BhFupvbz.js.map} +1 -1
- package/dist-vue/_chunks/{PkChatbotViewChat-CEqzF1G9.js → PkChatbotViewChat-DT-rAU_r.js} +6 -6
- package/dist-vue/_chunks/{PkChatbotViewChat-CEqzF1G9.js.map → PkChatbotViewChat-DT-rAU_r.js.map} +1 -1
- package/dist-vue/_chunks/{PkChatbotViewConversations-C787v5ll.js → PkChatbotViewConversations-3LaZPFyw.js} +2 -2
- package/dist-vue/_chunks/{PkChatbotViewConversations-C787v5ll.js.map → PkChatbotViewConversations-3LaZPFyw.js.map} +1 -1
- package/dist-vue/_chunks/{PkChatbotViewFiles-CNFLt8YO.js → PkChatbotViewFiles-CTqnbsCj.js} +3 -3
- package/dist-vue/_chunks/{PkChatbotViewFiles-CNFLt8YO.js.map → PkChatbotViewFiles-CTqnbsCj.js.map} +1 -1
- package/dist-vue/_chunks/{PkChatbotViewProfile-7p0ci3qm.js → PkChatbotViewProfile-B-Mp1jGQ.js} +2 -2
- package/dist-vue/_chunks/{PkChatbotViewProfile-7p0ci3qm.js.map → PkChatbotViewProfile-B-Mp1jGQ.js.map} +1 -1
- package/dist-vue/_chunks/PkRelativeTime--1cIphlA.js.map +1 -1
- package/dist-vue/_chunks/{PkStreamingMarkdown-D8_LwZMR.js → PkStreamingMarkdown-DIaZEedG.js} +406 -396
- package/dist-vue/_chunks/PkStreamingMarkdown-DIaZEedG.js.map +1 -0
- package/dist-vue/_chunks/PkSvgViewer-D-0M5bqg.js.map +1 -1
- package/dist-vue/_chunks/{PkToolRequestGeolocation-Bxqz9oSo.js → PkToolRequestGeolocation-Q3N3jlO8.js} +2 -2
- package/dist-vue/_chunks/{PkToolRequestGeolocation-Bxqz9oSo.js.map → PkToolRequestGeolocation-Q3N3jlO8.js.map} +1 -1
- package/dist-vue/_chunks/{PkToolRequestOAuthConnection-C6rXgb0s.js → PkToolRequestOAuthConnection-C0LW5Evp.js} +2 -2
- package/dist-vue/_chunks/{PkToolRequestOAuthConnection-C6rXgb0s.js.map → PkToolRequestOAuthConnection-C0LW5Evp.js.map} +1 -1
- package/dist-vue/_chunks/{PkToolShowArtifact-CEXdfOGG.js → PkToolShowArtifact-BCCUucVQ.js} +2 -2
- package/dist-vue/_chunks/{PkToolShowArtifact-CEXdfOGG.js.map → PkToolShowArtifact-BCCUucVQ.js.map} +1 -1
- package/dist-vue/_chunks/{PkToolShowContactForm-DHmzAIVF.js → PkToolShowContactForm-BXGxWSc2.js} +2 -2
- package/dist-vue/_chunks/{PkToolShowContactForm-DHmzAIVF.js.map → PkToolShowContactForm-BXGxWSc2.js.map} +1 -1
- package/dist-vue/_chunks/{PkToolShowDiagram-dwCVZ1up.js → PkToolShowDiagram-CZgrWvBr.js} +2 -2
- package/dist-vue/_chunks/PkToolShowDiagram-CZgrWvBr.js.map +1 -0
- package/dist-vue/_chunks/{PkToolShowEmail-CavhsPvi.js → PkToolShowEmail-DpC517Vn.js} +2 -2
- package/dist-vue/_chunks/{PkToolShowEmail-CavhsPvi.js.map → PkToolShowEmail-DpC517Vn.js.map} +1 -1
- package/dist-vue/_chunks/{PkToolShowForm-CO5A_j9L.js → PkToolShowForm-CIZpfAGK.js} +3 -3
- package/dist-vue/_chunks/PkToolShowForm-CIZpfAGK.js.map +1 -0
- package/dist-vue/_chunks/{PkToolShowMessage-DQojxDiV.js → PkToolShowMessage-B7flxVCU.js} +2 -2
- package/dist-vue/_chunks/{PkToolShowMessage-DQojxDiV.js.map → PkToolShowMessage-B7flxVCU.js.map} +1 -1
- package/dist-vue/_chunks/{PkToolShowProductList-Cn0yewM3.js → PkToolShowProductList-B6fRtIpx.js} +2 -2
- package/dist-vue/_chunks/{PkToolShowProductList-Cn0yewM3.js.map → PkToolShowProductList-B6fRtIpx.js.map} +1 -1
- package/dist-vue/_chunks/{PkToolShowSources-7Q5Iogxi.js → PkToolShowSources-DDZokZow.js} +4 -4
- package/dist-vue/_chunks/{PkToolShowSources-7Q5Iogxi.js.map → PkToolShowSources-DDZokZow.js.map} +1 -1
- package/dist-vue/_chunks/{PkToolShowSuggestedReply-DQFOVonE.js → PkToolShowSuggestedReply-DWLkUh2L.js} +2 -2
- package/dist-vue/_chunks/{PkToolShowSuggestedReply-DQFOVonE.js.map → PkToolShowSuggestedReply-DWLkUh2L.js.map} +1 -1
- package/dist-vue/_chunks/PkToolShowWeather-Bzqalzh8.js.map +1 -1
- package/dist-vue/_chunks/{PkToolShowWebPages-Bzkkn9GV.js → PkToolShowWebPages-DY48ee6V.js} +2 -2
- package/dist-vue/_chunks/{PkToolShowWebPages-Bzkkn9GV.js.map → PkToolShowWebPages-DY48ee6V.js.map} +1 -1
- package/dist-vue/_chunks/{PkUrl-xUBKVJCv.js → PkUrl-DSGxrEM7.js} +2 -2
- package/dist-vue/_chunks/PkUrl-DSGxrEM7.js.map +1 -0
- package/dist-vue/_chunks/{createChatbotApiClient-D9f69brW.js → createChatbotApiClient-MkaPbGWB.js} +2 -2
- package/dist-vue/_chunks/createChatbotApiClient-MkaPbGWB.js.map +1 -0
- package/dist-vue/_chunks/{useChatbotStore-9Cw_oR6J.js → useChatbotStore-BzfqjiYz.js} +6 -3
- package/dist-vue/_chunks/useChatbotStore-BzfqjiYz.js.map +1 -0
- package/dist-vue/_chunks/useDialogConfirm-KWz0ohCQ.js.map +1 -1
- package/dist-vue/_chunks/utils-Coqik0XI.js.map +1 -1
- package/dist-vue/api.js +1 -1
- package/dist-vue/composables.js +2 -2
- package/dist-vue/index.js +3858 -3490
- package/dist-vue/index.js.map +1 -1
- package/dist-vue/locales.js +36 -8
- package/dist-vue/packages/components/src/chat/PkAgentSettingsPanel.d.ts +20 -3
- package/dist-vue/packages/components/src/chat/PkChatButton.d.ts +3 -2
- package/dist-vue/packages/components/src/chat/PkLanguageModel.d.ts +26 -2
- package/dist-vue/packages/components/src/chat/PkLanguageModelCombobox.d.ts +53 -1
- package/dist-vue/packages/components/src/chat/PkModelOption.d.ts +19 -0
- package/dist-vue/packages/components/src/chat/PkReasoningSettings.d.ts +6 -0
- package/dist-vue/packages/components/src/chat/constants.d.ts +5 -18
- package/dist-vue/packages/components/src/chat/index.d.ts +3 -1
- package/dist-vue/packages/components/src/chat/modelCatalog.d.ts +46 -0
- package/dist-vue/packages/components/src/table/PkTableSortable.d.ts +5 -1
- package/dist-vue/packages/composable/src/chatbot/useChatbotStore.d.ts +18 -0
- package/dist-vue/packages/composable/src/useChatbotError.d.ts +2 -0
- package/dist-vue/packages/models/src/schema/Agent.d.ts +70 -10
- package/dist-vue/packages/models/src/schema/Chat.d.ts +10 -0
- package/dist-vue/packages/models/src/schema/ModelProvider.d.ts +316 -0
- package/dist-vue/packages/models/src/schema/Organization.d.ts +142 -2
- package/dist-vue/packages/models/src/schema/ReasoningChat.d.ts +20 -0
- package/dist-vue/packages/models/src/schema/SubAgent.d.ts +20 -0
- package/dist-vue/packages/models/src/schema/UserOverview.d.ts +41 -0
- package/dist-vue/packages/models/src/schema/constants.d.ts +56 -91
- package/dist-vue/packages/models/src/schema/index.d.ts +1 -0
- package/dist-vue/style.css +1 -1
- package/package.json +1 -1
- package/dist/_chunks/Agent-Su_LDF9_.js.map +0 -1
- package/dist/_chunks/Document-DecVclEe.js.map +0 -1
- package/dist/_chunks/Media-C6SOQfJZ.js +0 -122
- package/dist/_chunks/Media-C6SOQfJZ.js.map +0 -1
- package/dist/_chunks/PkStreamingMarkdown-CwqsJnJJ.js.map +0 -1
- package/dist/_chunks/PkToolShowForm-DbJHMDbt.js.map +0 -1
- package/dist/_chunks/browser-NgY6LXg-.js.map +0 -1
- package/dist-vue/_chunks/Agent-C8BsTAxk.js.map +0 -1
- package/dist-vue/_chunks/Document-CaUfI_SZ.js.map +0 -1
- package/dist-vue/_chunks/PkChatbot-BPKSPIeC.js.map +0 -1
- package/dist-vue/_chunks/PkChatbotError-CBP2mf-n.js.map +0 -1
- package/dist-vue/_chunks/PkChatbotInput-JnHaRlfk.js.map +0 -1
- package/dist-vue/_chunks/PkChatbotMessages-DAlkoMkY.js.map +0 -1
- package/dist-vue/_chunks/PkStreamingMarkdown-D8_LwZMR.js.map +0 -1
- package/dist-vue/_chunks/PkToolShowDiagram-dwCVZ1up.js.map +0 -1
- package/dist-vue/_chunks/PkToolShowForm-CO5A_j9L.js.map +0 -1
- package/dist-vue/_chunks/PkUrl-xUBKVJCv.js.map +0 -1
- package/dist-vue/_chunks/createChatbotApiClient-D9f69brW.js.map +0 -1
- package/dist-vue/_chunks/useChatbotStore-9Cw_oR6J.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PkStreamingMarkdown-DgBS4Ebc.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","../../../../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","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 useTemplateRef,\n watch,\n } from 'vue'\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\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 {\n markdown: '',\n loading: false,\n animation: 'fadeIn',\n animationDuration: '0.3s',\n isDark: false,\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,})[^\\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 // 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(() => props.markdown)\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 useTemplateRef,\n watch,\n } from 'vue'\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\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 {\n markdown: '',\n loading: false,\n animation: 'fadeIn',\n animationDuration: '0.3s',\n isDark: false,\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,})[^\\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 // 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(() => props.markdown)\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 useTemplateRef,\n watch,\n } from 'vue'\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\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 {\n markdown: '',\n loading: false,\n animation: 'fadeIn',\n animationDuration: '0.3s',\n isDark: false,\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,})[^\\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 // 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(() => props.markdown)\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":[1,2],"mappings":"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"}
|
package/dist/_chunks/{PkToolRequestGeolocation-OokLeTf1.js → PkToolRequestGeolocation-pVys3x9M.js}
RENAMED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { C as e, F as t, L as n, O as r, Tt as i, _ as a, b as o, bt as s, d as c, h as l, it as u, m as d, v as f, x as p, xt as m } from "./vue.runtime.esm-bundler-CIT_Sbqw.js";
|
|
2
2
|
import { r as h } from "./vue-i18n-BdMHu4Kd.js";
|
|
3
3
|
import { n as g } from "./index.es-dtdl3VFG.js";
|
|
4
|
-
import { u as _ } from "./Agent-
|
|
4
|
+
import { u as _ } from "./Agent-tE7ZJPxG.js";
|
|
5
5
|
r(), u(), m();
|
|
6
6
|
var v = { class: "flex items-center gap-6 text-12 text-word-3 border border-surface-3 rounded-xl px-sm py-10" }, y = /* @__PURE__ */ e({
|
|
7
7
|
__name: "PkToolRequestGeolocation",
|
|
@@ -66,4 +66,4 @@ var v = { class: "flex items-center gap-6 text-12 text-word-3 border border-surf
|
|
|
66
66
|
//#endregion
|
|
67
67
|
export { y as default };
|
|
68
68
|
|
|
69
|
-
//# sourceMappingURL=PkToolRequestGeolocation-
|
|
69
|
+
//# sourceMappingURL=PkToolRequestGeolocation-pVys3x9M.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PkToolRequestGeolocation-OokLeTf1.js","names":["$n"],"sources":["../../../../packages/components/src/chat/PkToolRequestGeolocation.vue","../../../../packages/components/src/chat/PkToolRequestGeolocation.vue"],"sourcesContent":["<script setup lang=\"ts\">\n import { computed, onMounted } from 'vue'\n import { useI18n } from 'vue-i18n'\n import { isVoiceRenderAck } from 'models'\n\n import type { ReverseGeocodeFn } from 'utils/src/device-context'\n\n type GeolocationOutput =\n | {\n latitude: number\n longitude: number\n accuracy?: number\n city?: string\n }\n | { error: 'permission_denied' | 'position_unavailable' | 'timeout' }\n\n const props = defineProps<{\n part: unknown\n reverseGeocode?: ReverseGeocodeFn\n /**\n * Whether a voice call is on the line right now. A request drawn\n * during a call arrives already resolved with the render ack, and the\n * browser prompt must fire only while the caller who was asked is\n * still there: reopening the conversation later must not ask again.\n */\n callLive?: boolean\n }>()\n\n const emit = defineEmits<{\n result: [output: GeolocationOutput]\n }>()\n\n const { t: $t } = useI18n({ useScope: 'global' })\n\n const toolPart = computed(() => {\n return props.part as {\n state?: string\n input?: { reason?: string }\n /** The position, or the voice render ack (a string). */\n output?: GeolocationOutput | string\n }\n })\n\n const state = computed(() => toolPart.value.state ?? 'unknown')\n\n /**\n * The ack is not a position: it only says the card was drawn during a\n * call (see `isVoiceRenderAck`, same rule as the forms). Besides gating\n * the prompt below, it must be kept away from the output parsing: `in`\n * on a string throws, which broke this card on every spoken turn.\n */\n const isRenderAck = computed(() => isVoiceRenderAck(toolPart.value.output))\n\n const isOutputAvailable = computed(\n () => state.value === 'output-available' && !isRenderAck.value,\n )\n\n const successOutput = computed(() => {\n const out = toolPart.value.output\n if (!out || typeof out === 'string' || 'error' in out) {\n return undefined\n }\n return out\n })\n\n const errorOutput = computed(() => {\n const out = toolPart.value.output\n if (!out || typeof out === 'string' || !('error' in out)) {\n return undefined\n }\n return out\n })\n\n /** Maps GeolocationPositionError.code to a typed string */\n function mapGeolocationError(\n code: number,\n ): 'permission_denied' | 'position_unavailable' | 'timeout' {\n if (code === 1) {\n return 'permission_denied'\n }\n if (code === 3) {\n return 'timeout'\n }\n return 'position_unavailable'\n }\n\n onMounted(() => {\n const isAwaitingPosition =\n state.value === 'input-available' ||\n (isRenderAck.value && props.callLive === true)\n if (!isAwaitingPosition) {\n return\n }\n\n if (!navigator.geolocation) {\n emit('result', { error: 'position_unavailable' })\n return\n }\n\n navigator.geolocation.getCurrentPosition(\n async (position) => {\n const { latitude, longitude, accuracy } = position.coords\n const city = props.reverseGeocode\n ? await props\n .reverseGeocode(latitude, longitude)\n .catch(() => undefined)\n : undefined\n emit('result', { latitude, longitude, accuracy, city })\n },\n (error) => {\n emit('result', { error: mapGeolocationError(error.code) })\n },\n { timeout: 15000 },\n )\n })\n</script>\n\n<template>\n <div\n class=\"flex items-center gap-6 text-12 text-word-3 border border-surface-3 rounded-xl px-sm py-10\">\n <!-- Loading state -->\n <template v-if=\"!isOutputAvailable\">\n <VvIcon name=\"loading-loop\" class=\"text-16\" />\n <span>{{ $t('messagePart.requestGeolocation') }}</span>\n </template>\n\n <!-- Success state -->\n <template v-else-if=\"successOutput\">\n <VvIcon name=\"ri:map-pin-line\" class=\"text-16\" />\n <span>\n {{\n $n(successOutput.latitude, {\n style: 'decimal',\n minimumFractionDigits: 5,\n maximumFractionDigits: 5,\n })\n }},\n {{\n $n(successOutput.longitude, {\n style: 'decimal',\n minimumFractionDigits: 5,\n maximumFractionDigits: 5,\n })\n }}\n <template v-if=\"successOutput.accuracy !== undefined\">\n (±{{\n $n(successOutput.accuracy, {\n style: 'unit',\n unit: 'meter',\n })\n }})\n </template>\n </span>\n </template>\n\n <!-- Error state -->\n <template v-else-if=\"errorOutput\">\n <span class=\"i-vv-alert-circle text-16 shrink-0 text-danger\" />\n <span>\n {{\n errorOutput.error === 'permission_denied'\n ? $t('message.geolocationPermissionDenied')\n : $t('message.geolocationUnavailable')\n }}\n </span>\n </template>\n </div>\n</template>\n","<script setup lang=\"ts\">\n import { computed, onMounted } from 'vue'\n import { useI18n } from 'vue-i18n'\n import { isVoiceRenderAck } from 'models'\n\n import type { ReverseGeocodeFn } from 'utils/src/device-context'\n\n type GeolocationOutput =\n | {\n latitude: number\n longitude: number\n accuracy?: number\n city?: string\n }\n | { error: 'permission_denied' | 'position_unavailable' | 'timeout' }\n\n const props = defineProps<{\n part: unknown\n reverseGeocode?: ReverseGeocodeFn\n /**\n * Whether a voice call is on the line right now. A request drawn\n * during a call arrives already resolved with the render ack, and the\n * browser prompt must fire only while the caller who was asked is\n * still there: reopening the conversation later must not ask again.\n */\n callLive?: boolean\n }>()\n\n const emit = defineEmits<{\n result: [output: GeolocationOutput]\n }>()\n\n const { t: $t } = useI18n({ useScope: 'global' })\n\n const toolPart = computed(() => {\n return props.part as {\n state?: string\n input?: { reason?: string }\n /** The position, or the voice render ack (a string). */\n output?: GeolocationOutput | string\n }\n })\n\n const state = computed(() => toolPart.value.state ?? 'unknown')\n\n /**\n * The ack is not a position: it only says the card was drawn during a\n * call (see `isVoiceRenderAck`, same rule as the forms). Besides gating\n * the prompt below, it must be kept away from the output parsing: `in`\n * on a string throws, which broke this card on every spoken turn.\n */\n const isRenderAck = computed(() => isVoiceRenderAck(toolPart.value.output))\n\n const isOutputAvailable = computed(\n () => state.value === 'output-available' && !isRenderAck.value,\n )\n\n const successOutput = computed(() => {\n const out = toolPart.value.output\n if (!out || typeof out === 'string' || 'error' in out) {\n return undefined\n }\n return out\n })\n\n const errorOutput = computed(() => {\n const out = toolPart.value.output\n if (!out || typeof out === 'string' || !('error' in out)) {\n return undefined\n }\n return out\n })\n\n /** Maps GeolocationPositionError.code to a typed string */\n function mapGeolocationError(\n code: number,\n ): 'permission_denied' | 'position_unavailable' | 'timeout' {\n if (code === 1) {\n return 'permission_denied'\n }\n if (code === 3) {\n return 'timeout'\n }\n return 'position_unavailable'\n }\n\n onMounted(() => {\n const isAwaitingPosition =\n state.value === 'input-available' ||\n (isRenderAck.value && props.callLive === true)\n if (!isAwaitingPosition) {\n return\n }\n\n if (!navigator.geolocation) {\n emit('result', { error: 'position_unavailable' })\n return\n }\n\n navigator.geolocation.getCurrentPosition(\n async (position) => {\n const { latitude, longitude, accuracy } = position.coords\n const city = props.reverseGeocode\n ? await props\n .reverseGeocode(latitude, longitude)\n .catch(() => undefined)\n : undefined\n emit('result', { latitude, longitude, accuracy, city })\n },\n (error) => {\n emit('result', { error: mapGeolocationError(error.code) })\n },\n { timeout: 15000 },\n )\n })\n</script>\n\n<template>\n <div\n class=\"flex items-center gap-6 text-12 text-word-3 border border-surface-3 rounded-xl px-sm py-10\">\n <!-- Loading state -->\n <template v-if=\"!isOutputAvailable\">\n <VvIcon name=\"loading-loop\" class=\"text-16\" />\n <span>{{ $t('messagePart.requestGeolocation') }}</span>\n </template>\n\n <!-- Success state -->\n <template v-else-if=\"successOutput\">\n <VvIcon name=\"ri:map-pin-line\" class=\"text-16\" />\n <span>\n {{\n $n(successOutput.latitude, {\n style: 'decimal',\n minimumFractionDigits: 5,\n maximumFractionDigits: 5,\n })\n }},\n {{\n $n(successOutput.longitude, {\n style: 'decimal',\n minimumFractionDigits: 5,\n maximumFractionDigits: 5,\n })\n }}\n <template v-if=\"successOutput.accuracy !== undefined\">\n (±{{\n $n(successOutput.accuracy, {\n style: 'unit',\n unit: 'meter',\n })\n }})\n </template>\n </span>\n </template>\n\n <!-- Error state -->\n <template v-else-if=\"errorOutput\">\n <span class=\"i-vv-alert-circle text-16 shrink-0 text-danger\" />\n <span>\n {{\n errorOutput.error === 'permission_denied'\n ? $t('message.geolocationPermissionDenied')\n : $t('message.geolocationUnavailable')\n }}\n </span>\n </template>\n </div>\n</template>\n"],"mappings":";;;;;;;;;;;;;;EAgBI,IAAM,IAAQ,GAYR,IAAO,GAIP,EAAE,GAAG,MAAO,EAAQ,EAAE,UAAU,SAAS,CAAC,GAE1C,IAAW,QACN,EAAM,IAMhB,GAEK,IAAQ,QAAe,EAAS,MAAM,SAAS,SAAS,GAQxD,IAAc,QAAe,EAAiB,EAAS,MAAM,MAAM,CAAC,GAEpE,IAAoB,QAChB,EAAM,UAAU,sBAAsB,CAAC,EAAY,KAC7D,GAEM,IAAgB,QAAe;GACjC,IAAM,IAAM,EAAS,MAAM;GACvB,OAAC,KAAO,OAAO,KAAQ,YAAY,WAAW,IAGlD,OAAO;EACX,CAAC,GAEK,IAAc,QAAe;GAC/B,IAAM,IAAM,EAAS,MAAM;GACvB,IAAC,KAAO,OAAO,KAAQ,YAAc,WAAW,GAGpD,OAAO;EACX,CAAC;EAGD,SAAS,EACL,GACwD;GAOxD,OANI,MAAS,IACF,sBAEP,MAAS,IACF,YAEJ;EACX;SAEA,QAAgB;GAER,MAAM,UAAU,qBACf,EAAY,SAAS,EAAM,aAAa,IAK7C;QAAI,CAAC,UAAU,aAAa;KACxB,EAAK,UAAU,EAAE,OAAO,uBAAuB,CAAC;KAChD;IACJ;IAEA,UAAU,YAAY,mBAClB,OAAO,MAAa;KAChB,IAAM,EAAE,aAAU,cAAW,gBAAa,EAAS,QAC7C,IAAO,EAAM,iBACb,MAAM,EACD,eAAe,GAAU,CAAS,CAAA,CAClC,YAAY,KAAA,CAAS,IAC1B,KAAA;KACN,EAAK,UAAU;MAAE;MAAU;MAAW;MAAU;KAAK,CAAC;IAC1D,IACC,MAAU;KACP,EAAK,UAAU,EAAE,OAAO,EAAoB,EAAM,IAAI,EAAE,CAAC;IAC7D,GACA,EAAE,SAAS,KAAM,CACrB;GAhBA;EAiBJ,CAAC;;GAID,OAAA,EAAA,GAAA,EAgDM,OAhDN,GAgDM,CA7Ce,EAAA,QAMI,EAAA,SAArB,EAAA,GAAA,EA0BW,GAAA,EAAA,KAAA,EAAA,GAAA,CAzBP,EAAiD,GAAA;IAAzC,MAAK;IAAkB,OAAM;GACrC,CAAA,GAAA,EAuBO,QAAA,MAAA,CArBCA,EAAAA,EAAAA,EAAAA,GAAG,EAAA,MAAc,UAAQ;;;;GAK3B,CAAA,CAAA,IAAA,OACF,EACIA,EAAAA,GAAG,EAAA,MAAc,WAAS;;;;GAK5B,CAAA,CAAA,IAAA,KACF,CAAA,GAAgB,EAAA,MAAc,aAAa,KAAA,IAO3C,EAAA,IAAA,EAAA,KAPA,EAAA,GAAA,EAOW,GAAA,EAAA,KAAA,EAAA,GAAA,CAP2C,EAAA,QAChD,EACEA,EAAAA,GAAG,EAAA,MAAc,UAAQ;;;GAI3B,CAAA,CAAA,IAAA,MACN,CAAA,CAAA,GAAA,EAAA,EAAA,CAAA,CAAA,GAAA,EAAA,KAKa,EAAA,SAArB,EAAA,GAAA,EASW,GAAA,EAAA,KAAA,EAAA,GAAA,CARP,AAAA,EAAA,OAAA,EAA+D,QAAA,EAAzD,OAAM,iDAAgD,GAAA,MAAA,EAAA,GAC5D,EAMO,QAAA,MAAA,EAJC,EAAA,MAAY,UAAK,sBAAmD,EAAA,CAAA,CAAE,CAAA,qCAAA,IAAkE,EAAA,CAAA,CAAE,CAAA,gCAAA,CAAA,GAAA,CAAA,CAAA,GAAA,EAAA,KAAA,EAAA,IAAA,EAAA,KAvCtJ,EAAA,GAAA,EAGW,GAAA,EAAA,KAAA,EAAA,GAAA,CAFP,EAA8C,GAAA;IAAtC,MAAK;IAAe,OAAM;GAClC,CAAA,GAAA,EAAuD,QAAA,MAAA,EAA9C,EAAA,CAAA,CAAE,CAAA,gCAAA,CAAA,GAAA,CAAA,CAAA,GAAA,EAAA,EAqCuI,CAAA"}
|
|
1
|
+
{"version":3,"file":"PkToolRequestGeolocation-pVys3x9M.js","names":["$n"],"sources":["../../../../packages/components/src/chat/PkToolRequestGeolocation.vue","../../../../packages/components/src/chat/PkToolRequestGeolocation.vue"],"sourcesContent":["<script setup lang=\"ts\">\n import { computed, onMounted } from 'vue'\n import { useI18n } from 'vue-i18n'\n import { isVoiceRenderAck } from 'models'\n\n import type { ReverseGeocodeFn } from 'utils/src/device-context'\n\n type GeolocationOutput =\n | {\n latitude: number\n longitude: number\n accuracy?: number\n city?: string\n }\n | { error: 'permission_denied' | 'position_unavailable' | 'timeout' }\n\n const props = defineProps<{\n part: unknown\n reverseGeocode?: ReverseGeocodeFn\n /**\n * Whether a voice call is on the line right now. A request drawn\n * during a call arrives already resolved with the render ack, and the\n * browser prompt must fire only while the caller who was asked is\n * still there: reopening the conversation later must not ask again.\n */\n callLive?: boolean\n }>()\n\n const emit = defineEmits<{\n result: [output: GeolocationOutput]\n }>()\n\n const { t: $t } = useI18n({ useScope: 'global' })\n\n const toolPart = computed(() => {\n return props.part as {\n state?: string\n input?: { reason?: string }\n /** The position, or the voice render ack (a string). */\n output?: GeolocationOutput | string\n }\n })\n\n const state = computed(() => toolPart.value.state ?? 'unknown')\n\n /**\n * The ack is not a position: it only says the card was drawn during a\n * call (see `isVoiceRenderAck`, same rule as the forms). Besides gating\n * the prompt below, it must be kept away from the output parsing: `in`\n * on a string throws, which broke this card on every spoken turn.\n */\n const isRenderAck = computed(() => isVoiceRenderAck(toolPart.value.output))\n\n const isOutputAvailable = computed(\n () => state.value === 'output-available' && !isRenderAck.value,\n )\n\n const successOutput = computed(() => {\n const out = toolPart.value.output\n if (!out || typeof out === 'string' || 'error' in out) {\n return undefined\n }\n return out\n })\n\n const errorOutput = computed(() => {\n const out = toolPart.value.output\n if (!out || typeof out === 'string' || !('error' in out)) {\n return undefined\n }\n return out\n })\n\n /** Maps GeolocationPositionError.code to a typed string */\n function mapGeolocationError(\n code: number,\n ): 'permission_denied' | 'position_unavailable' | 'timeout' {\n if (code === 1) {\n return 'permission_denied'\n }\n if (code === 3) {\n return 'timeout'\n }\n return 'position_unavailable'\n }\n\n onMounted(() => {\n const isAwaitingPosition =\n state.value === 'input-available' ||\n (isRenderAck.value && props.callLive === true)\n if (!isAwaitingPosition) {\n return\n }\n\n if (!navigator.geolocation) {\n emit('result', { error: 'position_unavailable' })\n return\n }\n\n navigator.geolocation.getCurrentPosition(\n async (position) => {\n const { latitude, longitude, accuracy } = position.coords\n const city = props.reverseGeocode\n ? await props\n .reverseGeocode(latitude, longitude)\n .catch(() => undefined)\n : undefined\n emit('result', { latitude, longitude, accuracy, city })\n },\n (error) => {\n emit('result', { error: mapGeolocationError(error.code) })\n },\n { timeout: 15000 },\n )\n })\n</script>\n\n<template>\n <div\n class=\"flex items-center gap-6 text-12 text-word-3 border border-surface-3 rounded-xl px-sm py-10\">\n <!-- Loading state -->\n <template v-if=\"!isOutputAvailable\">\n <VvIcon name=\"loading-loop\" class=\"text-16\" />\n <span>{{ $t('messagePart.requestGeolocation') }}</span>\n </template>\n\n <!-- Success state -->\n <template v-else-if=\"successOutput\">\n <VvIcon name=\"ri:map-pin-line\" class=\"text-16\" />\n <span>\n {{\n $n(successOutput.latitude, {\n style: 'decimal',\n minimumFractionDigits: 5,\n maximumFractionDigits: 5,\n })\n }},\n {{\n $n(successOutput.longitude, {\n style: 'decimal',\n minimumFractionDigits: 5,\n maximumFractionDigits: 5,\n })\n }}\n <template v-if=\"successOutput.accuracy !== undefined\">\n (±{{\n $n(successOutput.accuracy, {\n style: 'unit',\n unit: 'meter',\n })\n }})\n </template>\n </span>\n </template>\n\n <!-- Error state -->\n <template v-else-if=\"errorOutput\">\n <span class=\"i-vv-alert-circle text-16 shrink-0 text-danger\" />\n <span>\n {{\n errorOutput.error === 'permission_denied'\n ? $t('message.geolocationPermissionDenied')\n : $t('message.geolocationUnavailable')\n }}\n </span>\n </template>\n </div>\n</template>\n","<script setup lang=\"ts\">\n import { computed, onMounted } from 'vue'\n import { useI18n } from 'vue-i18n'\n import { isVoiceRenderAck } from 'models'\n\n import type { ReverseGeocodeFn } from 'utils/src/device-context'\n\n type GeolocationOutput =\n | {\n latitude: number\n longitude: number\n accuracy?: number\n city?: string\n }\n | { error: 'permission_denied' | 'position_unavailable' | 'timeout' }\n\n const props = defineProps<{\n part: unknown\n reverseGeocode?: ReverseGeocodeFn\n /**\n * Whether a voice call is on the line right now. A request drawn\n * during a call arrives already resolved with the render ack, and the\n * browser prompt must fire only while the caller who was asked is\n * still there: reopening the conversation later must not ask again.\n */\n callLive?: boolean\n }>()\n\n const emit = defineEmits<{\n result: [output: GeolocationOutput]\n }>()\n\n const { t: $t } = useI18n({ useScope: 'global' })\n\n const toolPart = computed(() => {\n return props.part as {\n state?: string\n input?: { reason?: string }\n /** The position, or the voice render ack (a string). */\n output?: GeolocationOutput | string\n }\n })\n\n const state = computed(() => toolPart.value.state ?? 'unknown')\n\n /**\n * The ack is not a position: it only says the card was drawn during a\n * call (see `isVoiceRenderAck`, same rule as the forms). Besides gating\n * the prompt below, it must be kept away from the output parsing: `in`\n * on a string throws, which broke this card on every spoken turn.\n */\n const isRenderAck = computed(() => isVoiceRenderAck(toolPart.value.output))\n\n const isOutputAvailable = computed(\n () => state.value === 'output-available' && !isRenderAck.value,\n )\n\n const successOutput = computed(() => {\n const out = toolPart.value.output\n if (!out || typeof out === 'string' || 'error' in out) {\n return undefined\n }\n return out\n })\n\n const errorOutput = computed(() => {\n const out = toolPart.value.output\n if (!out || typeof out === 'string' || !('error' in out)) {\n return undefined\n }\n return out\n })\n\n /** Maps GeolocationPositionError.code to a typed string */\n function mapGeolocationError(\n code: number,\n ): 'permission_denied' | 'position_unavailable' | 'timeout' {\n if (code === 1) {\n return 'permission_denied'\n }\n if (code === 3) {\n return 'timeout'\n }\n return 'position_unavailable'\n }\n\n onMounted(() => {\n const isAwaitingPosition =\n state.value === 'input-available' ||\n (isRenderAck.value && props.callLive === true)\n if (!isAwaitingPosition) {\n return\n }\n\n if (!navigator.geolocation) {\n emit('result', { error: 'position_unavailable' })\n return\n }\n\n navigator.geolocation.getCurrentPosition(\n async (position) => {\n const { latitude, longitude, accuracy } = position.coords\n const city = props.reverseGeocode\n ? await props\n .reverseGeocode(latitude, longitude)\n .catch(() => undefined)\n : undefined\n emit('result', { latitude, longitude, accuracy, city })\n },\n (error) => {\n emit('result', { error: mapGeolocationError(error.code) })\n },\n { timeout: 15000 },\n )\n })\n</script>\n\n<template>\n <div\n class=\"flex items-center gap-6 text-12 text-word-3 border border-surface-3 rounded-xl px-sm py-10\">\n <!-- Loading state -->\n <template v-if=\"!isOutputAvailable\">\n <VvIcon name=\"loading-loop\" class=\"text-16\" />\n <span>{{ $t('messagePart.requestGeolocation') }}</span>\n </template>\n\n <!-- Success state -->\n <template v-else-if=\"successOutput\">\n <VvIcon name=\"ri:map-pin-line\" class=\"text-16\" />\n <span>\n {{\n $n(successOutput.latitude, {\n style: 'decimal',\n minimumFractionDigits: 5,\n maximumFractionDigits: 5,\n })\n }},\n {{\n $n(successOutput.longitude, {\n style: 'decimal',\n minimumFractionDigits: 5,\n maximumFractionDigits: 5,\n })\n }}\n <template v-if=\"successOutput.accuracy !== undefined\">\n (±{{\n $n(successOutput.accuracy, {\n style: 'unit',\n unit: 'meter',\n })\n }})\n </template>\n </span>\n </template>\n\n <!-- Error state -->\n <template v-else-if=\"errorOutput\">\n <span class=\"i-vv-alert-circle text-16 shrink-0 text-danger\" />\n <span>\n {{\n errorOutput.error === 'permission_denied'\n ? $t('message.geolocationPermissionDenied')\n : $t('message.geolocationUnavailable')\n }}\n </span>\n </template>\n </div>\n</template>\n"],"mappings":";;;;;;;;;;;;;;EAgBI,IAAM,IAAQ,GAYR,IAAO,GAIP,EAAE,GAAG,MAAO,EAAQ,EAAE,UAAU,SAAS,CAAC,GAE1C,IAAW,QACN,EAAM,IAMhB,GAEK,IAAQ,QAAe,EAAS,MAAM,SAAS,SAAS,GAQxD,IAAc,QAAe,EAAiB,EAAS,MAAM,MAAM,CAAC,GAEpE,IAAoB,QAChB,EAAM,UAAU,sBAAsB,CAAC,EAAY,KAC7D,GAEM,IAAgB,QAAe;GACjC,IAAM,IAAM,EAAS,MAAM;GACvB,OAAC,KAAO,OAAO,KAAQ,YAAY,WAAW,IAGlD,OAAO;EACX,CAAC,GAEK,IAAc,QAAe;GAC/B,IAAM,IAAM,EAAS,MAAM;GACvB,IAAC,KAAO,OAAO,KAAQ,YAAc,WAAW,GAGpD,OAAO;EACX,CAAC;EAGD,SAAS,EACL,GACwD;GAOxD,OANI,MAAS,IACF,sBAEP,MAAS,IACF,YAEJ;EACX;SAEA,QAAgB;GAER,MAAM,UAAU,qBACf,EAAY,SAAS,EAAM,aAAa,IAK7C;QAAI,CAAC,UAAU,aAAa;KACxB,EAAK,UAAU,EAAE,OAAO,uBAAuB,CAAC;KAChD;IACJ;IAEA,UAAU,YAAY,mBAClB,OAAO,MAAa;KAChB,IAAM,EAAE,aAAU,cAAW,gBAAa,EAAS,QAC7C,IAAO,EAAM,iBACb,MAAM,EACD,eAAe,GAAU,CAAS,CAAA,CAClC,YAAY,KAAA,CAAS,IAC1B,KAAA;KACN,EAAK,UAAU;MAAE;MAAU;MAAW;MAAU;KAAK,CAAC;IAC1D,IACC,MAAU;KACP,EAAK,UAAU,EAAE,OAAO,EAAoB,EAAM,IAAI,EAAE,CAAC;IAC7D,GACA,EAAE,SAAS,KAAM,CACrB;GAhBA;EAiBJ,CAAC;;GAID,OAAA,EAAA,GAAA,EAgDM,OAhDN,GAgDM,CA7Ce,EAAA,QAMI,EAAA,SAArB,EAAA,GAAA,EA0BW,GAAA,EAAA,KAAA,EAAA,GAAA,CAzBP,EAAiD,GAAA;IAAzC,MAAK;IAAkB,OAAM;GACrC,CAAA,GAAA,EAuBO,QAAA,MAAA,CArBCA,EAAAA,EAAAA,EAAAA,GAAG,EAAA,MAAc,UAAQ;;;;GAK3B,CAAA,CAAA,IAAA,OACF,EACIA,EAAAA,GAAG,EAAA,MAAc,WAAS;;;;GAK5B,CAAA,CAAA,IAAA,KACF,CAAA,GAAgB,EAAA,MAAc,aAAa,KAAA,IAO3C,EAAA,IAAA,EAAA,KAPA,EAAA,GAAA,EAOW,GAAA,EAAA,KAAA,EAAA,GAAA,CAP2C,EAAA,QAChD,EACEA,EAAAA,GAAG,EAAA,MAAc,UAAQ;;;GAI3B,CAAA,CAAA,IAAA,MACN,CAAA,CAAA,GAAA,EAAA,EAAA,CAAA,CAAA,GAAA,EAAA,KAKa,EAAA,SAArB,EAAA,GAAA,EASW,GAAA,EAAA,KAAA,EAAA,GAAA,CARP,AAAA,EAAA,OAAA,EAA+D,QAAA,EAAzD,OAAM,iDAAgD,GAAA,MAAA,EAAA,GAC5D,EAMO,QAAA,MAAA,EAJC,EAAA,MAAY,UAAK,sBAAmD,EAAA,CAAA,CAAE,CAAA,qCAAA,IAAkE,EAAA,CAAA,CAAE,CAAA,gCAAA,CAAA,GAAA,CAAA,CAAA,GAAA,EAAA,KAAA,EAAA,IAAA,EAAA,KAvCtJ,EAAA,GAAA,EAGW,GAAA,EAAA,KAAA,EAAA,GAAA,CAFP,EAA8C,GAAA;IAAtC,MAAK;IAAe,OAAM;GAClC,CAAA,GAAA,EAAuD,QAAA,MAAA,EAA9C,EAAA,CAAA,CAAE,CAAA,gCAAA,CAAA,GAAA,CAAA,CAAA,GAAA,EAAA,EAqCuI,CAAA"}
|