markstream-vue 1.0.3-beta.2 → 1.0.3

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/index9.js CHANGED
@@ -1 +1 @@
1
- var e=Object.defineProperty,t=Object.defineProperties,n=Object.getOwnPropertyDescriptors,r=Object.getOwnPropertySymbols,o=Object.prototype.hasOwnProperty,a=Object.prototype.propertyIsEnumerable,l=(t,n,r)=>n in t?e(t,n,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[n]=r,i=(e,t)=>{for(var n in t||(t={}))o.call(t,n)&&l(e,n,t[n]);if(r)for(var n of r(t))a.call(t,n)&&l(e,n,t[n]);return e},u=(e,r)=>t(e,n(r)),s=(e,t,n)=>l(e,"symbol"!=typeof t?t+"":t,n);import{defineComponent as c,ref as d,reactive as m,provide as f,computed as v,shallowRef as h,watch as g,nextTick as y,onMounted as k,onUpdated as p,onBeforeUnmount as b,openBlock as w,createElementBlock as S,normalizeClass as M,createElementVNode as x,normalizeStyle as B,Fragment as K,renderList as T,renderSlot as H,mergeProps as q,createBlock as F,unref as C,resolveDynamicComponent as A,toDisplayString as N,createCommentVNode as R,createTextVNode as _}from"vue";import{x as P,ad as j,a6 as I,Y as z,a5 as O,a4 as $,a3 as E,a7 as L,af as D,a2 as V,y as W}from"./exports.js";const Y=["data-markstream-item-key","data-markstream-item-kind"],G={key:0,class:"markstream-virtual-timeline__status"},J=/* @__PURE__ */W(/* @__PURE__ */c(u(i({},{name:"MarkstreamVirtualTimeline"}),{__name:"MarkstreamVirtualTimeline",props:{items:{},threadKey:{},layoutRevision:{},getKey:{},getKind:{},getContent:{},getFinal:{},getRevision:{},estimateItemHeight:{},overscan:{default:4},overscanPx:{default:1200},stickToBottom:{type:[Boolean,String],default:"auto"},measurementKey:{},markdownMode:{default:"docs"},markdownCodeRenderer:{},initialThreadState:{},markdownFade:{type:Boolean,default:!1},restoreMaxLoadingMs:{type:[Number,Boolean],default:!1},debug:{type:Boolean}},emits:["height-change","virtual-state-change","range-change","thread-state-change"],setup(e,{expose:t,emit:n}){const r=e,o=n;function a(e){o("thread-state-change",e)}const l=/* @__PURE__ */new Map;function c(e){var t;!0===r.debug&&l.set(e,(null!=(t=l.get(e))?t:0)+1)}const W=d(null),J=d(0),Q=d(0),U=d(0),X=d(!0),Z=d(!0),ee=m(/* @__PURE__ */new Map),te=/* @__PURE__ */new Map,ne=/* @__PURE__ */new Map,re=/* @__PURE__ */new Map,oe=m(/* @__PURE__ */new Map),ae=m(/* @__PURE__ */new Map),le=/* @__PURE__ */new Map,ie=/* @__PURE__ */new Map,ue=/* @__PURE__ */new Map,se=/* @__PURE__ */new Map,ce=d(!1),de=d(!0),me=d(!0);f("markstreamHostScrollManaged",me);const fe=[0,80,180,360,640];let ve,he,ge=null,ye=0,ke=null,pe=[],be=null,we=null,Se=-1,Me=0,xe=null,Be=!1,Ke=!1,Te=null,He=0,qe=0,Fe={top:0,bottom:0},Ce=!1;const Ae=v(()=>null==r.threadKey?void 0:String(r.threadKey));let Ne=Ae.value;function Re(e){return"chat"===e||"minimal"===e||"docs"===e?e:"docs"}const _e=v(()=>Re(r.markdownMode)),Pe=v(()=>function(e,t=Re(r.markdownMode)){return"pre"===e||"shiki"===e||"monaco"===e?e:"docs"===t?"monaco":"pre"}(r.markdownCodeRenderer,_e.value)),je=v(()=>[null==r.measurementKey?"":String(r.measurementKey),U.value].join(":")),Ie=v(()=>`${je.value}${_e.value}${Pe.value}`);class ze{constructor(e){s(this,"tree"),s(this,"total"),this.tree=Array.from({length:e.length+1},()=>0),this.total=0,e.forEach((e,t)=>this.add(t,e))}add(e,t){if(Number.isFinite(t)&&0!==t){this.total+=t;for(let n=e+1;n<this.tree.length;n+=n&-n)this.tree[n]+=t}}prefixSum(e){let t=Math.max(0,Math.min(e,this.tree.length-1)),n=0;for(;t>0;)n+=this.tree[t],t-=t&-t;return n}lowerBound(e,t="gte"){const n=this.tree.length-1;if(n<=0)return 0;if(e<=0)return 0;if(e>=this.total)return n-1;let r=0,o=1;for(;o<<1<this.tree.length;)o<<=1;let a=0;for(;o>0;o>>=1){const n=r+o;if(n<this.tree.length){const o=a+this.tree[n];("gt"===t?o<=e:o<e)&&(r=n,a=o)}}return Math.min(r,n-1)}}const Oe=h([]),$e=/* @__PURE__ */new Map,Ee=h(new ze([])),Le=d(0);let De=[];const Ve=v(()=>(Le.value,{records:Oe.value,totalHeight:Ee.value.total}));function We(){var e;const t=[],n=[],o=function(){var e;return null!=(e=Ae.value)?e:"timeline"}();$e.clear();for(let a=0;a<r.items.length;a++){const l=r.items[a],s=et(l,a),c={item:l,index:a,key:s,kind:I(l,a,r),markdown:j(l,a,r)};let d=vt(c);null==d&&(d=null!=(e=De[a])?e:z(l,a,r));const m=u(i({},c),{renderKey:`${o}:${s}`,offset:0,size:d,component:null==l?void 0:l.component});t.push(m),n.push(d),$e.has(s)||$e.set(s,m)}Oe.value=t,Ee.value=new ze(n),De=[],Le.value+=1}function Ye(e){return Le.value,Ee.value.prefixSum(e.index)}function Ge(e){return u(i({},e),{offset:Ye(e)})}function Je(e,t){const n=$e.get(e);if(!n)return;const r=Math.ceil(t),o=r-n.size;0!==o&&(n.size=r,Ee.value.add(n.index,o),Le.value+=1)}function Qe(e,t="gte"){return Le.value,Ee.value.lowerBound(e,t)}const Ue=v(()=>{var e;return Math.max(0,null!=(e=r.overscan)?e:4)}),Xe=v(()=>{var e;const t=Math.max(0,null!=(e=r.overscanPx)?e:1200);return de.value?t:Math.min(t,160)}),Ze=v(()=>{var e,t,n;const r=Ve.value.records;if(0===r.length)return{start:0,end:0,records:[],topSpacerHeight:0,bottomSpacerHeight:0};const o=Ue.value,a=Xe.value,l=Tt(),i=l+Math.max(1,Q.value);let u=Qe(Math.max(0,l-a),"gt"),s=Qe(Math.min(Ve.value.totalHeight,i+a))+1;u=Math.max(0,u-o),s=Math.min(r.length,Math.max(s+o,u+1));const c=r.slice(u,s).map(Ge),d=c[0],m=c[c.length-1],f=null!=(e=null==d?void 0:d.offset)?e:0,v=null!=(t=null==m?void 0:m.offset)?t:0;return{start:u,end:s,records:c,topSpacerHeight:f,bottomSpacerHeight:Math.max(0,Ve.value.totalHeight-(v+(null!=(n=null==m?void 0:m.size)?n:0)))}});function et(e,t){return O(e,t,r)}const tt=/* @__PURE__ */new WeakMap;let nt=1;function rt(e){if("object"!=typeof e&&"function"!=typeof e||null===e)return String(null!=e?e:"");const t=e;let n=tt.get(t);return n||(n=nt++,tt.set(t,n)),String(n)}function ot(e,t,n){var o;if(n)return"";const a="string"==typeof(null==e?void 0:e.text)?e.text:"string"==typeof(null==e?void 0:e.message)?e.message:"string"==typeof(null==e?void 0:e.label)?e.label:String(null!=(o=E(e,t,r))?o:"");return a?`${a.length}:${function(e){let t=2166136261;for(let n=0;n<e.length;n++)t^=e.charCodeAt(n),t=Math.imul(t,16777619);return(t>>>0).toString(36)}(a)}`:""}function at(e,t){if("function"!=typeof r.estimateItemHeight)return"";const n=r.estimateItemHeight(e,t);if(!Number.isFinite(n)||n<=0)return"";const o=Math.ceil(n);return De[t]=o,String(o)}function lt(e){var t;return null!=(t=r.items[e.index])?t:e.item}function it(e){return e.item}function ut(e){var t;const n=lt(e);return null!=(t=null==n?void 0:n.component)?t:e.component}function st(e,t=Ae.value){const n=it(e),o=L(n,e.index,r);return[null!=t?t:"timeline",e.key,null==o?"":String(o)].join(":")}function ct(e,t=Ae.value){if(e.markdown)return st(e,t);const n=it(e),o=L(n,e.index,r);return[null!=t?t:"timeline",e.key,null==o?"":String(o)].join(":")}function dt(e){return{sourceKey:ct(e),measurementKey:e.markdown?Ie.value:je.value,widthBucket:U.value}}function mt(e,t){var n,r,o,a,l,i;return(null!=(n=null==e?void 0:e.sourceKey)?n:"")===(null!=(r=null==t?void 0:t.sourceKey)?r:"")&&(null!=(o=null==e?void 0:e.measurementKey)?o:"")===(null!=(a=null==t?void 0:t.measurementKey)?a:"")&&(null!=(l=null==e?void 0:e.widthBucket)?l:0)===(null!=(i=null==t?void 0:t.widthBucket)?i:0)}function ft(e,t,n=Ae.value){var r;return!(!e||!t)&&t.sourceKey===ct(e,n)&&t.measurementKey===(e.markdown?Ie.value:je.value)&&(null!=(r=t.widthBucket)?r:0)===U.value}function vt(e,t=Ae.value){const n=ee.get(e.key);return ft(e,te.get(e.key),t)&&Number.isFinite(n)&&n>0?n:null}function ht(e){return Ve.value,$e.get(e)}function gt(e,t){var n,r;return!!(e&&e.markdown&&t)&&t.sessionKey===st(e)&&(null!=(n=t.threadKey)?n:"")===(null!=(r=Ae.value)?r:"")&&!!function(e){const t=Ie.value,n=null!=e?e:"";return n===t||n.startsWith(`${t}\0`)}(t.measurementKey)}function yt(e,t){return gt(e,t)}function kt(e,t,n){!Number.isFinite(t)||t<=0||(ae.set(e,Math.ceil(t)),le.set(e,n))}function pt(e,t=oe.get(e)){const n=function(e,t=oe.get(e)){var n;if(!yt(ht(e),t))return 0;const r=Number(null==(n=null==t?void 0:t.metrics)?void 0:n.totalHeight);return Number.isFinite(r)&&r>0?Math.ceil(r):0}(e,t);return n>0&&kt(e,n,t),n}function bt(e){return e===ye&&Me===e&&!de.value}function wt(){if(null!=ke&&"function"==typeof cancelAnimationFrame&&cancelAnimationFrame(ke),ke=null,null!=be&&"undefined"!=typeof window&&window.clearTimeout(be),be=null,"undefined"!=typeof window)for(const e of pe)window.clearTimeout(e);pe=[]}function St(){var e;return Math.max(0,Q.value||(null==(e=W.value)?void 0:e.clientHeight)||0)}function Mt(){const e=W.value;if(!e||"function"!=typeof getComputedStyle)return void(Fe={top:0,bottom:0});const t=getComputedStyle(e),n=Number.parseFloat(t.paddingTop)||0,r=Number.parseFloat(t.paddingBottom)||0;Fe={top:n,bottom:r}}function xt(){return Fe.top}function Bt(){const e=Fe;return Math.max(0,Ve.value.totalHeight+e.top+e.bottom)}function Kt(){var e,t;return Math.max(Bt(),null!=(t=null==(e=W.value)?void 0:e.scrollHeight)?t:0)}function Tt(){return Math.max(0,J.value-xt())}function Ht(){return Math.max(0,Kt()-St())}function qt(e){const t=Number(e);return Number.isFinite(t)?Math.max(0,Math.min(t,Ht())):0}function Ft(){return Math.max(0,Ht()-J.value)}function Ct(){const e=Ft();Z.value=e<=2,!0!==r.stickToBottom?!1!==r.stickToBottom?X.value=e<=48:X.value=!1:X.value=!0}function At(){var e,t;const n=null!=(t=null==(e=W.value)?void 0:e.clientWidth)?t:0;U.value=Number.isFinite(n)&&n>0?32*Math.round(n/32):0}function Nt(e={}){const t=W.value;t&&(J.value=Math.max(0,t.scrollTop||0),Q.value=t.clientHeight||0),At(),Ct(),(!0===e.remember||!1!==e.remember&&!ce.value)&&ln()}function Rt(e,t={}){const n=qt(e),r=W.value;J.value=n,r&&(Q.value=r.clientHeight||Q.value||0,!1!==t.writeDom&&Math.abs((r.scrollTop||0)-n)>.5&&(r.scrollTop=n)),At(),!1!==t.updatePinned&&Ct(),(!0===t.remember||!1!==t.remember&&!ce.value)&&ln()}function _t(){if(!de.value){const e=W.value,t=xe;return e&&null!=t&&Math.abs((e.scrollTop||0)-t)>.5&&(e.scrollTop=t),void mn(Me,he)}Nt()}function Pt(e){Rt(e,{writeDom:!0,remember:!0})}function jt(){Pt(Ht())}function It(e,t){const n=ne.get(e);if(!Number.isFinite(n)||null==n||n<=0)return 0;const r=re.get(e);return t&&r&&!zt(r,t)?0:Math.ceil(n)}function zt(e,t){var n,r,o,a;return e.sourceKey===t.sourceKey&&(0===(null!=(n=t.widthBucket)?n:0)||0===(null!=(r=e.widthBucket)?r:0)||(null!=(o=t.widthBucket)?o:0)===(null!=(a=e.widthBucket)?a:0))&&(Ot(t.measurementKey)||Ot(e.measurementKey)||t.measurementKey===e.measurementKey)}function Ot(e){return":0"===e||!0===(null==e?void 0:e.startsWith(":0"))}function $t(e){ne.delete(e),re.delete(e)}function Et(e,t,n,o={}){if(!Number.isFinite(t)||t<=0)return;const a=ee.get(e),l=n&&!mt(te.get(e),n);!function(e,t){if(!t)return;const n=re.get(e);n&&!zt(n,t)&&(ne.delete(e),re.delete(e))}(e,n);const i=It(e,n),u=i>0?i:Math.ceil(t);if(null!=a&&Math.abs(a-u)<=1&&!l)return;if(!1===o.updateLayout)return n&&te.set(e,n),ee.set(e,u),void sn(o.rememberThreadKey);if(ce.value)return n&&te.set(e,n),ee.set(e,u),Je(e,u),void function(e=Me,t=he){t&&y(()=>{mn(e,t),null==ke&&"function"==typeof requestAnimationFrame&&(ke=requestAnimationFrame(()=>{ke=null,mn(e,t)}))})}();const s=(c=on(),d=Ft(),!0===r.stickToBottom?{type:"bottom",distanceFromBottomPx:0}:"auto"===r.stickToBottom&&X.value?{type:"bottom",distanceFromBottomPx:Z.value?0:Math.max(0,d)}:c);var c,d;n&&te.set(e,n),ee.set(e,u),Je(e,u),sn(o.rememberThreadKey),function(e){if(!Lt.scheduled)return Lt.anchor=e,Lt.scheduled=!0,void(Lt.raf=Yt(Jt));!Lt.anchor&&e&&(Lt.anchor=e)}(s)}g([()=>function(){const e=r.layoutRevision;return null!=e?["explicit",String(e),r.items.length].join(""):r.items.map((e,t)=>{var n;const o=et(e,t),a=j(e,t,r);return[o,I(e,t,r),a?1:0,null!=(n=L(e,t,r))?n:"",at(e,t),ot(e,t,a),(l=null==e?void 0:e.component,l?"string"==typeof l?`s:${l}`:`o:${rt(l)}`:"")].join("");var l}).join("\0")}(),je,Ie,Ae,()=>rt(r.estimateItemHeight),()=>rt(r.getKey),()=>rt(r.getKind),()=>rt(r.getContent),()=>rt(r.getFinal),()=>rt(r.getRevision)],()=>We(),{immediate:!0,flush:"sync"});const Lt={scheduled:!1,raf:null,anchor:void 0},Dt=/* @__PURE__ */new Map;let Vt=!1,Wt=null;function Yt(e){return"function"==typeof requestAnimationFrame?requestAnimationFrame(e):(y(e),null)}function Gt(e){null!=e&&"function"==typeof cancelAnimationFrame&&cancelAnimationFrame(e)}function Jt(){if(!Lt.scheduled)return;Lt.scheduled=!1,Lt.raf=null;const e=Lt.anchor;Lt.anchor=void 0,e&&dn(e),Nt({remember:!1})}function Qt(){var e,t;if(!Vt)return;Vt=!1,Wt=null;const n=Array.from(Dt.entries());Dt.clear();for(const[r,o]of n){if(ae.get(r)!==o.logicalHeight)continue;const n=$e.get(r);if(!n)continue;const a=(null!=(e=o.threadKey)?e:"")===(null!=(t=Ae.value)?t:"");Zt(n,{allowMarkdownShrink:o.allowMarkdownShrink,markdownLogicalHeight:o.logicalHeight,rememberThreadKey:o.threadKey,source:o.itemSizeSource,updateLayout:a})}Jt()}function Ut(){Qt(),Jt()}function Xt(e){var t;null==(t=ue.get(e))||t.disconnect(),ue.delete(e),ie.delete(e)}function Zt(e,t={}){var n,o,a;const i=(u=e.key,D(ie.get(u),c));var u;const s=null!=(n=t.source)?n:dt(e);let d=!1;const m=()=>{d||(d=!0,function(e,t){const n=function(){if(!0!==r.debug||0===l.size)return null;let e=0;for(const n of l.values())e+=n;const t={total:e,byLabel:Object.fromEntries(Array.from(l.entries()).sort((e,t)=>t[1]-e[1]||e[0].localeCompare(t[0])))};return l.clear(),t}();n&&console.info("[markstream-vue][timeline][perf] layout-reads",{label:e,itemKey:t,layoutReads:n})}("reconcileRecordSize",e.key))};if(!e.markdown)return i>0&&Et(e.key,i,s,t),void m();const f=mt(te.get(e.key),s)&&null!=(o=ee.get(e.key))?o:0,v=null!=(a=t.markdownLogicalHeight)?a:function(e){var t;return gt(ht(e),le.get(e))?null!=(t=ae.get(e))?t:0:pt(e)}(e.key),h=function(e,t){return V(ie.get(e),c,t)}(e.key,i);if(v>0){let n=Math.max(i,v+h);(!t.allowMarkdownShrink||ce.value)&&f>0&&(n=Math.max(n,f));const r=It(e.key,s);return(r>0&&v>r+1&&!ce.value||t.allowMarkdownShrink&&!ce.value)&&$t(e.key),n>0&&Et(e.key,n,s,t),void m()}return String(E(lt(e),e.index,r)).trim()?f>0?(i>f+1&&Et(e.key,i,s,t),void m()):(i>0&&Et(e.key,i,s,t),void m()):(i>0&&($t(e.key),Et(e.key,i,s,t)),void m())}function en(e){return t=>{!function(e,t){const n=function(e){const t=e&&"$el"in e?e.$el:e;return t instanceof HTMLElement?t:null}(t),r=ie.get(e.key);if(!n)return void Xt(e.key);if(r===n)return void Zt(e);if(Xt(e.key),ie.set(e.key,n),Zt(e),"undefined"==typeof ResizeObserver)return;const o=new ResizeObserver(()=>{Zt(e)});o.observe(n),ue.set(e.key,o)}(e,t)}}function tn(e){const t=lt(e),n=$(t,e.index,r),a=oe.get(e.key),l=_e.value,i=Pe.value,u={enabled:!0,sessionKey:st(e),threadKey:Ae.value,scrollRoot:()=>W.value,restoreState:yt(e,a)?a:null,restoreAnchor:!1,measurementKey:Ie.value,settleMode:"manual",settledToken:n,emitIntervalMs:96,heightDiffThresholdPx:4};return{content:E(t,e.index,r),final:n,mode:l,codeRenderer:i,nodeVirtual:!1,fade:!0===r.markdownFade,indexKey:st(e),virtualScroll:u,onHeightChange(t){if(t.sessionKey!==st(e))return;kt(e.key,t.totalHeight,{sessionKey:t.sessionKey,threadKey:Ae.value,measurementKey:Ie.value});const n=function(e){return"final"===e.phase||!!e.stable&&("measured"===e.confidence||"final"===e.confidence)}(t),r=Math.ceil(t.totalHeight);var a;!function(e,t){Dt.set(e.key,t),Vt||(Vt=!0,Wt=Yt(Qt))}(e,{allowMarkdownShrink:n,itemSizeSource:dt(e),logicalHeight:r,threadKey:Ae.value}),a={itemKey:e.key,metrics:t},o("height-change",a)},onVirtualStateChange(t){var n;t.sessionKey===st(e)&&(oe.set(e.key,t),pt(e.key,t),sn(),n={itemKey:e.key,state:t},o("virtual-state-change",n))}}}function nn(e){return{item:lt(e),index:e.index,itemKey:e.key,kind:e.kind,measureRef:en(e),markdownProps:tn(e)}}function rn(e){var t;const n=null!=(t=lt(e))?t:{};return"string"==typeof n.text?n.text:"string"==typeof n.message?n.message:"string"==typeof n.label?n.label:E(n,e.index,r)}function on(){const e=Ft();if(e<=2)return{type:"bottom",distanceFromBottomPx:Math.max(0,e)};const t=Tt(),n=Qe(t,"gt"),r=Ve.value.records[n];if(r){const e=Ye(r);if(t>=e&&t<e+r.size)return{type:"item",itemKey:r.key,offsetWithinItemPx:t-e}}const o=Ze.value.records[0];return o?{type:"item",itemKey:o.key,offsetWithinItemPx:0}:void 0}function an(e=Ae.value){Ut();const t={},n={};for(const r of Ve.value.records){const o=vt(r,e),a=te.get(r.key);null!=o&&ft(r,a,e)&&(t[r.key]=o,n[r.key]=a)}return{threadKey:e,measurementKey:je.value,widthBucket:U.value,outerAnchor:on(),itemHeights:t,itemSizeSources:n,markdownStates:Object.fromEntries(oe.entries())}}function ln(e=Ae.value){if(!e)return;const t=an(e);return se.set(e,t),e===Ae.value&&(Te=t),a(t),t}function un(){const e=ve;return null!=we&&"undefined"!=typeof window&&window.clearTimeout(we),we=null,ve=void 0,e?ln(e):void 0}function sn(e=Ae.value){e&&(ve=e,null==we&&("undefined"!=typeof window?we=window.setTimeout(()=>{we=null,un()},80):un()))}function cn(e){if(!e)return null;if("bottom"===e.type)return(de.value?Kt():Bt())-St()-Math.max(0,e.distanceFromBottomPx);const t=ht(e.itemKey);return t?xt()+Ye(t)+Math.max(0,e.offsetWithinItemPx):null}function dn(e,t={}){const n=cn(e);return null!=n&&(Rt(n,{writeDom:!0,remember:!0===t.remember}),!0)}function mn(e,t){if(e===ye){if(t){const e=dn(t,{remember:!1});xe=e?J.value:null}Nt({remember:!1})}}function fn(e,t){const n=e.getBoundingClientRect();return n.width>0&&n.height>0&&n.bottom>t.top&&n.top<t.bottom}function vn(e,t){const n=e.getBoundingClientRect(),r=t.getBoundingClientRect();return n.bottom>r.top&&n.top<r.bottom}function hn(e){if(e.closest(".code-editor-container.is-hidden"))return!1;let t=e;for(;t;){const e=window.getComputedStyle(t);if("none"===e.display||"hidden"===e.visibility||Number.parseFloat(e.opacity||"1")<=.01)return!1;t=t.parentElement}const n=e.getBoundingClientRect();return n.width>0&&n.height>0}function gn(e){return Boolean(e.querySelector(['[data-markstream-pending="true"]','[data-markstream-mermaid][data-markstream-mode="pending"]','.mermaid-block-container[data-markstream-mode="pending"]','[data-markstream-code-loading="1"]'].join(",")))}function yn(e){var t;if(e.querySelector(":scope > .node-placeholder"))return!1;const n=e.querySelector(":scope > .node-content");return!!n&&(!gn(n)&&(!!function(e){const t=Array.from(e.querySelectorAll("[data-markstream-math]"));return!t.length||t.every(e=>{const t=e.dataset.markstreamMode;return!("true"===e.dataset.markstreamPending||"loading"===t||"katex"!==t&&"fallback"!==t)})}(n)&&("code_block"===(null!=(t=e.dataset.nodeType)?t:"")?function(e){if(e.querySelector('[data-markstream-code-loading="1"]'))return!1;const t=e.querySelector('[data-markstream-code-block="1"]');if(t){const e="true"===t.dataset.markstreamEnhanced,r=function(e){if(!e)return!1;if(e.classList.contains("is-fading-out"))return!1;const t=window.getComputedStyle(e);if("none"===t.display||Number.parseFloat(t.opacity||"1")<=.01)return!1;const n=e.getBoundingClientRect();return n.width>0&&n.height>0}(t.querySelector("pre.code-pre-fallback"));return e||r||(n=t,Array.from(n.querySelectorAll(".monaco-editor, .monaco-diff-editor")).some(hn))}var n;return function(e){var t,n;const r=e.querySelector("[data-markstream-mermaid], .mermaid-block-container");if(r){if("true"===r.dataset.markstreamPending)return!1;const e=r.dataset.markstreamMode;return"preview"===e?Boolean(r.querySelector("svg")||r.querySelector('[data-mermaid-svg-layer="1"] svg')):"fallback"===e&&Boolean(null==(n=null==(t=r.querySelector(".mermaid-source-code"))?void 0:t.textContent)?void 0:n.trim())}const o=e.querySelector("[data-markstream-infographic], .infographic-block-container");if(o)return"true"!==o.dataset.markstreamPending;const a=e.querySelector("[data-markstream-d2], .d2-block-container");return a?"true"!==a.dataset.markstreamPending:Boolean(e.querySelector('pre[data-markstream-pre="1"]'))}(e)}(n):function(e){var t;return(null!=(t=e.textContent)?t:"").trim().length>0||Boolean(e.querySelector(["hr","br","table","blockquote","img","svg","canvas","input","button","select","textarea","[role]","[aria-label]","[data-markstream-math]","[data-markstream-mermaid]","[data-markstream-infographic]","[data-markstream-d2]",'[data-markstream-pre="1"]'].join(",")))}(n))))}function kn(e,t){var n;if(!e.markdown)return!0;const o=E(lt(e),e.index,r);if(!String(null!=o?o:"").trim())return!0;if(t.querySelector("[data-node-index]"))return!0;const a=t.querySelector(".markdown-renderer"),l=null!=a?a:t;return!gn(l)&&(!!(null!=(n=l.textContent)?n:"").trim()||Boolean(l.querySelector(["hr","br","table","blockquote","img","svg","canvas","input","button","[role]","[aria-label]","[data-markstream-math]","[data-markstream-mermaid]","[data-markstream-infographic]","[data-markstream-d2]",'[data-markstream-pre="1"]','[data-markstream-code-block="1"]'].join(","))))}function pn(e,t,n){if(!e.markdown)return!0;const o=E(lt(e),e.index,r);if(!String(null!=o?o:"").trim())return!0;const a=n.getBoundingClientRect(),l=Array.from(t.querySelectorAll("[data-node-index]")).filter(e=>fn(e,a));if(l.length>0)return l.every(e=>yn(e));const i=t.querySelector(".markdown-renderer"),u=null!=i?i:t;return u.querySelector("[data-node-index], .node-placeholder")?!!function(e,t,n,r){if("bottom"!==(null==he?void 0:he.type))return!1;if(!bn(e))return!1;const o=n.getBoundingClientRect(),a=t.getBoundingClientRect();return o.width>0&&o.height>0&&o.bottom<=r.top+1&&a.bottom>r.top}(e,t,u,a)&&kn(e,t):kn(e,t)}function bn(e){const t=te.get(e.key);return It(e.key,t)>0}function wn(e,t){var n,o,a,l;if(!e.markdown)return!0;if(!Be&&!Ke)return!0;if(bn(e))return!0;const i=E(lt(e),e.index,r);if(!String(null!=i?i:"").trim())return!0;if(!t.querySelector(".markdown-renderer"))return!1;const u=oe.get(e.key);if(!yt(e,u))return!1;const s=null==u?void 0:u.metrics,c=Number(null!=(n=null==s?void 0:s.totalHeight)?n:0);if(!Number.isFinite(c)||c<=0)return!1;const d=Number(null!=(o=null==s?void 0:s.measuredCount)?o:0),m=Number(null!=(a=null==s?void 0:s.estimatedCount)?a:0),f=Number(null!=(l=null==s?void 0:s.nodeCount)?l:0),v=f<=0||d>=f&&m<=0,h="measured"===(null==s?void 0:s.confidence)||"final"===(null==s?void 0:s.confidence),g=!0===(null==s?void 0:s.stable)||h;return Ke?v&&!0===(null==s?void 0:s.final)&&h:g||!0===(null==s?void 0:s.final)}function Sn(){const e=W.value;if(!e)return!1;const t=cn(he);if(null!=t&&Math.abs((e.scrollTop||0)-qt(t))>.5)return!1;const n=Ze.value.records;if(!n.length)return 0===Ve.value.records.length;const r=new Map(Array.from(e.querySelectorAll("[data-markstream-item-key]")).map(e=>{var t;return[null!=(t=e.dataset.markstreamItemKey)?t:"",e]})),o=[];for(const i of n){const t=r.get(i.key);t&&vn(t,e)&&o.push({record:i,el:t})}if(!o.length)return!1;for(const{record:i,el:u}of o){if(u.offsetHeight+1<i.size)return!1;if(!pn(i,u,e))return!1;if(!wn(i,u))return!1}const a=e.getBoundingClientRect();if(Array.from(e.querySelectorAll(['[data-markstream-pending="true"]','[data-markstream-mermaid][data-markstream-mode="pending"]','.mermaid-block-container[data-markstream-mode="pending"]','[data-markstream-code-loading="1"]'].join(","))).some(e=>fn(e,a)))return!1;const l=Array.from(e.querySelectorAll("[data-node-index]")).filter(e=>fn(e,a));for(const i of l)if(!yn(i))return!1;return!0}function Mn(){const e=W.value;if(!e)return"";const t=e.getBoundingClientRect(),n=new Map(Array.from(e.querySelectorAll("[data-markstream-item-key]")).map(e=>{var t;return[null!=(t=e.dataset.markstreamItemKey)?t:"",e]})),r=Ze.value.records.map(e=>{var t,r,o,a,l,i,u,s,c;const d=n.get(e.key),m=null==d?void 0:d.querySelector(".markdown-renderer"),f=null==(t=oe.get(e.key))?void 0:t.metrics;return[e.key,e.size,null!=(r=null==d?void 0:d.offsetHeight)?r:0,null!=(o=null==d?void 0:d.scrollHeight)?o:0,null!=(a=null==m?void 0:m.offsetHeight)?a:0,null!=(l=null==m?void 0:m.scrollHeight)?l:0,f?Math.round(Number(f.totalHeight||0)):"",null!=(i=null==f?void 0:f.measuredCount)?i:"",null!=(u=null==f?void 0:f.estimatedCount)?u:"",null!=(s=null==f?void 0:f.nodeCount)?s:"",!0===(null==f?void 0:f.final)?1:0,!0===(null==f?void 0:f.stable)?1:0,null!=(c=null==f?void 0:f.confidence)?c:""].join(":")}).join("|"),o=Array.from(e.querySelectorAll("[data-node-index]")).filter(e=>fn(e,t)).map(e=>{var t,n,r,o,a;const l=e.getBoundingClientRect(),i=e.querySelector(":scope > .node-content"),u=null==i?void 0:i.querySelector('[data-markstream-code-block="1"]'),s=null==i?void 0:i.querySelector("pre.code-pre-fallback"),c=null==i?void 0:i.querySelector(".monaco-editor, .monaco-diff-editor");return[null!=(t=e.dataset.nodeIndex)?t:"",null!=(n=e.dataset.nodeType)?n:"",Math.round(l.height),null!=(r=null==i?void 0:i.offsetHeight)?r:0,null!=(o=null==i?void 0:i.scrollHeight)?o:0,null!=(a=null==u?void 0:u.dataset.markstreamEnhanced)?a:"",u?Math.round(u.getBoundingClientRect().height):0,s?Math.round(s.getBoundingClientRect().height):0,c?Math.round(c.getBoundingClientRect().height):0].join(":")}).join("|");return[Math.round(e.scrollTop||0),Math.round(e.scrollHeight||0),Math.round(Ve.value.totalHeight||0),r,o].join("\n")}function xn(){return"undefined"!=typeof performance?performance.now():Date.now()}function Bn(){return Ke?24:2}function Kn(e){bt(e)&&He!==e&&(He=e,function(e){return t=this,n=function*(){const t=xn();let n=0,r="";for(let o=0;o<40;o++){if(yield y(),yield new Promise(e=>{"function"!=typeof requestAnimationFrame?e():requestAnimationFrame(()=>e())}),!bt(e))return!1;mn(e,he);const o=xn(),a=Sn(),l=a?Mn():"";if(a&&l===r&&l){if(n+=1,n>=Bn()&&o-t>=96)return!0}else n=0,r=l}return!1},new Promise((e,r)=>{var o=e=>{try{l(n.next(e))}catch(t){r(t)}},a=e=>{try{l(n.throw(e))}catch(t){r(t)}},l=t=>t.done?e(t.value):Promise.resolve(t.value).then(o,a);l((n=n.apply(t,null)).next())});var t,n}(e).then(t=>{if(He===e&&(He=0),bt(e))return t?void Cn(e):function(){if(Se<0)return!1;const e=function(){if(!1===r.restoreMaxLoadingMs)return Number.POSITIVE_INFINITY;const e=Number(r.restoreMaxLoadingMs);return Number.isFinite(e)&&e>0?e:Number.POSITIVE_INFINITY}();return Number.isFinite(e)&&xn()-Se>=e}()?(!0===r.debug&&import.meta,void Cn(e)):(function(e){qe!==e&&(qe=e,!0===r.debug&&import.meta)}(e),void function(e){bt(e)&&"undefined"!=typeof window&&(null!=be&&window.clearTimeout(be),be=window.setTimeout(()=>{be=null,bt(e)&&Kn(e)},120))}(e))}))}function Tn(){de.value=!0,Se=-1,He=0,qe=0,Be=!1,Ke=!1,null!=be&&"undefined"!=typeof window&&window.clearTimeout(be),be=null}function Hn(){Ce=!0}function qn(e){var t,n;const r=[];if(!function(e){var t,n;return!!e&&(null!=(t=e.measurementKey)?t:"")===je.value&&(null!=(n=e.widthBucket)?n:0)===U.value}(e))return r;for(const[o,a]of Object.entries(null!=(t=null==e?void 0:e.itemHeights)?t:{})){if(!Number.isFinite(a)||a<=0)continue;const t=ht(o),l=null==(n=null==e?void 0:e.itemSizeSources)?void 0:n[o];ft(t,l)&&r.push([o,Math.ceil(a),l])}return r}function Fn(e){var t;for(const[n,r]of Object.entries(null!=(t=null==e?void 0:e.markdownStates)?t:{}))if(yt(ht(n),r))return!0;return!1}function Cn(e){if(e===ye){wt(),mn(e,he),ce.value=!1,Se=-1,he=void 0,xe=null,Me=0;for(const e of Ve.value.records)e.markdown||$t(e.key);Nt({remember:!1}),Tn(),Hn()}}function An(e,t={}){var n;const o=++ye;(null==e?void 0:e.widthBucket)&&0===U.value&&(U.value=e.widthBucket);const a=null==e?void 0:e.outerAnchor,l=function(e){return Boolean((null==e?void 0:e.outerAnchor)||qn(e).length>0||Fn(e))}(e),i=Fn(e),u=!(!Ce&&!0!==t.threadSwitch||l),s=l||u,c=null!=a?a:s?function(){if(!1!==r.stickToBottom)return{type:"bottom",distanceFromBottomPx:0};const e=Ve.value.records[0];return e?{type:"item",itemKey:e.key,offsetWithinItemPx:0}:void 0}():void 0;wt(),He=0,qe=0,de.value=!s,ce.value=s&&Boolean(c),Me=o,he=c,Be=s&&i,Ke=s&&u,Se=ce.value?xn():-1,Nn(),ee.clear(),te.clear(),ne.clear(),re.clear(),oe.clear(),ae.clear(),le.clear();for(const[r,m,f]of qn(e)){const e=Math.ceil(m);te.set(r,f),ee.set(r,e),ne.set(r,e),re.set(r,f)}for(const[r,m]of Object.entries(null!=(n=null==e?void 0:e.markdownStates)?n:{}))oe.set(r,m),pt(r,m);We(),!0===r.stickToBottom?(X.value=!0,Z.value=!0):!1===r.stickToBottom?(X.value=!1,Z.value=!1):(X.value="bottom"===(null==c?void 0:c.type),Z.value="bottom"===(null==c?void 0:c.type)&&c.distanceFromBottomPx<=2);const d=cn(c);return xe=null==d?null:qt(d),null!=d&&Rt(d,{writeDom:!0,remember:!1,updatePinned:!1}),Te=(null==e?void 0:e.threadKey)===Ae.value?e:null,s?c?void y(()=>{mn(o,c),"undefined"!=typeof window?(fe.forEach(e=>{const t=window.setTimeout(()=>{mn(o,c)},e);pe.push(t)}),Kn(o)):Cn(o)}):(ce.value=!1,he=void 0,xe=null,Me=0,Nt({remember:!1}),Tn(),void Hn()):(ce.value=!1,he=void 0,xe=null,Me=0,Nt({remember:!1}),Tn(),Hn(),void(!1!==r.stickToBottom&&(X.value=!0,Z.value=!0,y(()=>{ce.value||jt()}))))}function Nn(){for(const e of ue.values())e.disconnect();ue.clear(),ie.clear()}return g(Ae,(e,t)=>{const n=null!=Ne?Ne:t,o=Boolean(n&&n!==e);o&&function(e){var t;Ut(),(null==(t=un())?void 0:t.threadKey)!==e&&((null==Te?void 0:Te.threadKey)===e?(se.set(e,Te),a(Te)):se.has(e)||ln(e))}(n),Ne=e,An(function(e){return(e?se.get(e):null)||function(e){var t;const n=r.initialThreadState;return n?(null!=(t=n.threadKey)?t:"")!==(null!=e?e:"")?null:n:null}(e)}(e),{threadSwitch:o})},{immediate:!0,flush:"sync"}),g(()=>Ze.value.records.map(e=>e.key).join("\0"),()=>{var e;e={start:Ze.value.start,end:Ze.value.end},o("range-change",e)},{immediate:!0}),g(()=>[r.items.length,Ve.value.totalHeight],()=>{ce.value||!1!==r.stickToBottom&&("auto"!==r.stickToBottom||Z.value)&&y(()=>{ce.value||!1!==r.stickToBottom&&("auto"!==r.stickToBottom||Z.value)&&jt()})},{flush:"post"}),k(()=>{Mt(),At(),he?(mn(Me,he),Nt({remember:!1}),ln()):!1===r.stickToBottom?(Nt({remember:!1}),ln()):(X.value=!0,Rt(Ht(),{writeDom:!0,remember:!1,updatePinned:!1}),Nt({remember:!1}),ln()),W.value&&"undefined"!=typeof ResizeObserver&&(ge=new ResizeObserver(()=>{Mt(),Nt()}),ge.observe(W.value))}),p(()=>{de.value||Kn(Me)}),b(()=>{un()||ln(),wt(),null!=we&&"undefined"!=typeof window&&window.clearTimeout(we),we=null,ve=void 0,Gt(Lt.raf),Lt.scheduled=!1,Lt.raf=null,Lt.anchor=void 0,Gt(Wt),Vt=!1,Wt=null,Dt.clear(),Nn(),te.clear(),ne.clear(),re.clear(),ae.clear(),le.clear(),null==ge||ge.disconnect(),ge=null}),t({captureThreadState:function(){return an(Ae.value)},restoreThreadState:An,scrollToBottom:jt,scrollToIndex:function(e,t="start"){const n=Ve.value.records[e];if(!n)return;let r=xt()+Ye(n);"center"===t?r-=(Q.value-n.size)/2:"end"===t&&(r-=Q.value-n.size),Pt(r)},scrollToOffset:Pt,getItemSize:e=>{var t;const n=ht(e);return n&&null!=(t=vt(n))?t:void 0},getTotalHeight:()=>Ve.value.totalHeight,getVisibleRange:()=>({start:Ze.value.start,end:Ze.value.end})}),(e,t)=>(w(),S("div",{ref_key:"scrollRoot",ref:W,class:M(["markstream-virtual-timeline",{"is-restoring-thread":!de.value}]),"data-markstream-virtual-timeline":"1","data-testid":"markstream-virtual-timeline",onScroll:_t},[x("div",{class:"markstream-virtual-timeline__spacer",style:B({height:`${Ze.value.topSpacerHeight}px`}),"aria-hidden":"true"},null,4),(w(!0),S(K,null,T(Ze.value.records,t=>(w(),S("div",{key:t.renderKey,class:"markstream-virtual-timeline__item","data-markstream-item-key":t.key,"data-markstream-item-kind":t.kind,style:B({minHeight:`${t.size}px`})},[H(e.$slots,"default",q({ref_for:!0},nn(t)),()=>{var e,n;return[t.markdown?(w(),F(C(P),q({key:0,ref_for:!0},tn(t)),null,16)):ut(t)?(w(),F(A(ut(t)),{key:1,ref_for:!0,ref:en(t),item:lt(t)},null,8,["item"])):(w(),S("div",{key:2,ref_for:!0,ref:en(t),class:M(["markstream-virtual-timeline__default-item",`markstream-virtual-timeline__default-item--${t.kind||"item"}`])},["tool-call"===t.kind&&(null==(e=lt(t))?void 0:e.status)?(w(),S("span",G,N(null==(n=lt(t))?void 0:n.status),1)):R("",!0),_(" "+N(rn(t)),1)],2))]},!0)],12,Y))),128)),x("div",{class:"markstream-virtual-timeline__spacer",style:B({height:`${Ze.value.bottomSpacerHeight}px`}),"aria-hidden":"true"},null,4),de.value?R("",!0):(w(),S("div",{key:0,class:"markstream-virtual-timeline__restore-loading",style:B({height:`${Math.max(1,St())}px`,transform:`translateY(${J.value}px)`}),"aria-live":"polite","aria-busy":"true"},[H(e.$slots,"restore-loading",{threadKey:Ae.value,visibleRecords:Ze.value.records},()=>[t[0]||(t[0]=x("div",{class:"markstream-virtual-timeline__restore-loading-card"},[x("span",{class:"markstream-virtual-timeline__restore-spinner","aria-hidden":"true"}),x("span",null,"Loading thread…")],-1))],!0)],4))],34))}})),[["__scopeId","data-v-dff004bf"]]),Q=J;Q.install=e=>{var t,n;const r=null!=(n=null!=(t=Q.__name)?t:Q.name)?n:"MarkstreamVirtualTimeline";e.component(r,J)};export{Q as default};
1
+ var e=Object.defineProperty,t=Object.defineProperties,n=Object.getOwnPropertyDescriptors,r=Object.getOwnPropertySymbols,o=Object.prototype.hasOwnProperty,a=Object.prototype.propertyIsEnumerable,l=(t,n,r)=>n in t?e(t,n,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[n]=r,i=(e,t)=>{for(var n in t||(t={}))o.call(t,n)&&l(e,n,t[n]);if(r)for(var n of r(t))a.call(t,n)&&l(e,n,t[n]);return e},u=(e,r)=>t(e,n(r)),s=(e,t,n)=>l(e,"symbol"!=typeof t?t+"":t,n);import{defineComponent as c,ref as d,reactive as m,provide as f,computed as v,shallowRef as h,watch as g,nextTick as y,onMounted as k,onUpdated as p,onBeforeUnmount as b,openBlock as w,createElementBlock as S,normalizeClass as M,createElementVNode as x,normalizeStyle as B,Fragment as K,renderList as T,renderSlot as H,mergeProps as q,createBlock as F,unref as C,resolveDynamicComponent as A,toDisplayString as N,createCommentVNode as R,createTextVNode as _}from"vue";import{x as P,a8 as j,a2 as I,U as z,a1 as O,a0 as $,$ as E,a3 as L,a9 as D,Z as V,y as W}from"./exports.js";const Y=["data-markstream-item-key","data-markstream-item-kind"],U={key:0,class:"markstream-virtual-timeline__status"},Z=/* @__PURE__ */W(/* @__PURE__ */c(u(i({},{name:"MarkstreamVirtualTimeline"}),{__name:"MarkstreamVirtualTimeline",props:{items:{},threadKey:{},layoutRevision:{},getKey:{},getKind:{},getContent:{},getFinal:{},getRevision:{},estimateItemHeight:{},overscan:{default:4},overscanPx:{default:1200},stickToBottom:{type:[Boolean,String],default:"auto"},measurementKey:{},markdownMode:{default:"docs"},markdownCodeRenderer:{},initialThreadState:{},markdownFade:{type:Boolean,default:!1},restoreMaxLoadingMs:{type:[Number,Boolean],default:!1},debug:{type:Boolean}},emits:["height-change","virtual-state-change","range-change","thread-state-change"],setup(e,{expose:t,emit:n}){const r=e,o=n;function a(e){o("thread-state-change",e)}const l=/* @__PURE__ */new Map;function c(e){var t;!0===r.debug&&l.set(e,(null!=(t=l.get(e))?t:0)+1)}const W=d(null),Z=d(0),G=d(0),J=d(0),Q=d(!0),X=d(!0),ee=m(/* @__PURE__ */new Map),te=/* @__PURE__ */new Map,ne=/* @__PURE__ */new Map,re=/* @__PURE__ */new Map,oe=m(/* @__PURE__ */new Map),ae=m(/* @__PURE__ */new Map),le=/* @__PURE__ */new Map,ie=/* @__PURE__ */new Map,ue=/* @__PURE__ */new Map,se=/* @__PURE__ */new Map,ce=d(!1),de=d(!0),me=d(!0);f("markstreamHostScrollManaged",me);const fe=[0,80,180,360,640];let ve,he,ge=null,ye=0,ke=null,pe=[],be=null,we=null,Se=-1,Me=0,xe=null,Be=!1,Ke=!1,Te=null,He=0,qe=0,Fe={top:0,bottom:0},Ce=!1;const Ae=v(()=>null==r.threadKey?void 0:String(r.threadKey));let Ne=Ae.value;function Re(e){return"chat"===e||"minimal"===e||"docs"===e?e:"docs"}const _e=v(()=>Re(r.markdownMode)),Pe=v(()=>function(e,t=Re(r.markdownMode)){return"pre"===e||"shiki"===e||"monaco"===e?e:"docs"===t?"monaco":"pre"}(r.markdownCodeRenderer,_e.value)),je=v(()=>[null==r.measurementKey?"":String(r.measurementKey),J.value].join(":")),Ie=v(()=>`${je.value}${_e.value}${Pe.value}`);class ze{constructor(e){s(this,"tree"),s(this,"total"),this.tree=Array.from({length:e.length+1},()=>0),this.total=0,e.forEach((e,t)=>this.add(t,e))}add(e,t){if(Number.isFinite(t)&&0!==t){this.total+=t;for(let n=e+1;n<this.tree.length;n+=n&-n)this.tree[n]+=t}}prefixSum(e){let t=Math.max(0,Math.min(e,this.tree.length-1)),n=0;for(;t>0;)n+=this.tree[t],t-=t&-t;return n}lowerBound(e,t="gte"){const n=this.tree.length-1;if(n<=0)return 0;if(e<=0)return 0;if(e>=this.total)return n-1;let r=0,o=1;for(;o<<1<this.tree.length;)o<<=1;let a=0;for(;o>0;o>>=1){const n=r+o;if(n<this.tree.length){const o=a+this.tree[n];("gt"===t?o<=e:o<e)&&(r=n,a=o)}}return Math.min(r,n-1)}}const Oe=h([]),$e=/* @__PURE__ */new Map,Ee=h(new ze([])),Le=d(0);let De=[];const Ve=v(()=>(Le.value,{records:Oe.value,totalHeight:Ee.value.total}));function We(){var e;const t=[],n=[],o=function(){var e;return null!=(e=Ae.value)?e:"timeline"}();$e.clear();for(let a=0;a<r.items.length;a++){const l=r.items[a],s=et(l,a),c={item:l,index:a,key:s,kind:I(l,a,r),markdown:j(l,a,r)};let d=vt(c);null==d&&(d=null!=(e=De[a])?e:z(l,a,r));const m=u(i({},c),{renderKey:`${o}:${s}`,offset:0,size:d,component:null==l?void 0:l.component});t.push(m),n.push(d),$e.has(s)||$e.set(s,m)}Oe.value=t,Ee.value=new ze(n),De=[],Le.value+=1}function Ye(e){return Le.value,Ee.value.prefixSum(e.index)}function Ue(e){return u(i({},e),{offset:Ye(e)})}function Ze(e,t){const n=$e.get(e);if(!n)return;const r=Math.ceil(t),o=r-n.size;0!==o&&(n.size=r,Ee.value.add(n.index,o),Le.value+=1)}function Ge(e,t="gte"){return Le.value,Ee.value.lowerBound(e,t)}const Je=v(()=>{var e;return Math.max(0,null!=(e=r.overscan)?e:4)}),Qe=v(()=>{var e;const t=Math.max(0,null!=(e=r.overscanPx)?e:1200);return de.value?t:Math.min(t,160)}),Xe=v(()=>{var e,t,n;const r=Ve.value.records;if(0===r.length)return{start:0,end:0,records:[],topSpacerHeight:0,bottomSpacerHeight:0};const o=Je.value,a=Qe.value,l=Tt(),i=l+Math.max(1,G.value);let u=Ge(Math.max(0,l-a),"gt"),s=Ge(Math.min(Ve.value.totalHeight,i+a))+1;u=Math.max(0,u-o),s=Math.min(r.length,Math.max(s+o,u+1));const c=r.slice(u,s).map(Ue),d=c[0],m=c[c.length-1],f=null!=(e=null==d?void 0:d.offset)?e:0,v=null!=(t=null==m?void 0:m.offset)?t:0;return{start:u,end:s,records:c,topSpacerHeight:f,bottomSpacerHeight:Math.max(0,Ve.value.totalHeight-(v+(null!=(n=null==m?void 0:m.size)?n:0)))}});function et(e,t){return O(e,t,r)}const tt=/* @__PURE__ */new WeakMap;let nt=1;function rt(e){if("object"!=typeof e&&"function"!=typeof e||null===e)return String(null!=e?e:"");const t=e;let n=tt.get(t);return n||(n=nt++,tt.set(t,n)),String(n)}function ot(e,t,n){var o;if(n)return"";const a="string"==typeof(null==e?void 0:e.text)?e.text:"string"==typeof(null==e?void 0:e.message)?e.message:"string"==typeof(null==e?void 0:e.label)?e.label:String(null!=(o=E(e,t,r))?o:"");return a?`${a.length}:${function(e){let t=2166136261;for(let n=0;n<e.length;n++)t^=e.charCodeAt(n),t=Math.imul(t,16777619);return(t>>>0).toString(36)}(a)}`:""}function at(e,t){if("function"!=typeof r.estimateItemHeight)return"";const n=r.estimateItemHeight(e,t);if(!Number.isFinite(n)||n<=0)return"";const o=Math.ceil(n);return De[t]=o,String(o)}function lt(e){var t;return null!=(t=r.items[e.index])?t:e.item}function it(e){return e.item}function ut(e){var t;const n=lt(e);return null!=(t=null==n?void 0:n.component)?t:e.component}function st(e,t=Ae.value){const n=it(e),o=L(n,e.index,r);return[null!=t?t:"timeline",e.key,null==o?"":String(o)].join(":")}function ct(e,t=Ae.value){if(e.markdown)return st(e,t);const n=it(e),o=L(n,e.index,r);return[null!=t?t:"timeline",e.key,null==o?"":String(o)].join(":")}function dt(e){return{sourceKey:ct(e),measurementKey:e.markdown?Ie.value:je.value,widthBucket:J.value}}function mt(e,t){var n,r,o,a,l,i;return(null!=(n=null==e?void 0:e.sourceKey)?n:"")===(null!=(r=null==t?void 0:t.sourceKey)?r:"")&&(null!=(o=null==e?void 0:e.measurementKey)?o:"")===(null!=(a=null==t?void 0:t.measurementKey)?a:"")&&(null!=(l=null==e?void 0:e.widthBucket)?l:0)===(null!=(i=null==t?void 0:t.widthBucket)?i:0)}function ft(e,t,n=Ae.value){var r;return!(!e||!t)&&t.sourceKey===ct(e,n)&&t.measurementKey===(e.markdown?Ie.value:je.value)&&(null!=(r=t.widthBucket)?r:0)===J.value}function vt(e,t=Ae.value){const n=ee.get(e.key);return ft(e,te.get(e.key),t)&&Number.isFinite(n)&&n>0?n:null}function ht(e){return Ve.value,$e.get(e)}function gt(e,t){var n,r;return!!(e&&e.markdown&&t)&&t.sessionKey===st(e)&&(null!=(n=t.threadKey)?n:"")===(null!=(r=Ae.value)?r:"")&&!!function(e){const t=Ie.value,n=null!=e?e:"";return n===t||n.startsWith(`${t}\0`)}(t.measurementKey)}function yt(e,t){return gt(e,t)}function kt(e,t,n){!Number.isFinite(t)||t<=0||(ae.set(e,Math.ceil(t)),le.set(e,n))}function pt(e,t=oe.get(e)){const n=function(e,t=oe.get(e)){var n;if(!yt(ht(e),t))return 0;const r=Number(null==(n=null==t?void 0:t.metrics)?void 0:n.totalHeight);return Number.isFinite(r)&&r>0?Math.ceil(r):0}(e,t);return n>0&&kt(e,n,t),n}function bt(e){return e===ye&&Me===e&&!de.value}function wt(){if(null!=ke&&"function"==typeof cancelAnimationFrame&&cancelAnimationFrame(ke),ke=null,null!=be&&"undefined"!=typeof window&&window.clearTimeout(be),be=null,"undefined"!=typeof window)for(const e of pe)window.clearTimeout(e);pe=[]}function St(){var e;return Math.max(0,G.value||(null==(e=W.value)?void 0:e.clientHeight)||0)}function Mt(){const e=W.value;if(!e||"function"!=typeof getComputedStyle)return void(Fe={top:0,bottom:0});const t=getComputedStyle(e),n=Number.parseFloat(t.paddingTop)||0,r=Number.parseFloat(t.paddingBottom)||0;Fe={top:n,bottom:r}}function xt(){return Fe.top}function Bt(){const e=Fe;return Math.max(0,Ve.value.totalHeight+e.top+e.bottom)}function Kt(){var e,t;return Math.max(Bt(),null!=(t=null==(e=W.value)?void 0:e.scrollHeight)?t:0)}function Tt(){return Math.max(0,Z.value-xt())}function Ht(){return Math.max(0,Kt()-St())}function qt(e){const t=Number(e);return Number.isFinite(t)?Math.max(0,Math.min(t,Ht())):0}function Ft(){return Math.max(0,Ht()-Z.value)}function Ct(){const e=Ft();X.value=e<=2,!0!==r.stickToBottom?!1!==r.stickToBottom?Q.value=e<=48:Q.value=!1:Q.value=!0}function At(){var e,t;const n=null!=(t=null==(e=W.value)?void 0:e.clientWidth)?t:0;J.value=Number.isFinite(n)&&n>0?32*Math.round(n/32):0}function Nt(e={}){const t=W.value;t&&(Z.value=Math.max(0,t.scrollTop||0),G.value=t.clientHeight||0),At(),Ct(),(!0===e.remember||!1!==e.remember&&!ce.value)&&ln()}function Rt(e,t={}){const n=qt(e),r=W.value;Z.value=n,r&&(G.value=r.clientHeight||G.value||0,!1!==t.writeDom&&Math.abs((r.scrollTop||0)-n)>.5&&(r.scrollTop=n)),At(),!1!==t.updatePinned&&Ct(),(!0===t.remember||!1!==t.remember&&!ce.value)&&ln()}function _t(){if(!de.value){const e=W.value,t=xe;return e&&null!=t&&Math.abs((e.scrollTop||0)-t)>.5&&(e.scrollTop=t),void mn(Me,he)}Nt()}function Pt(e){Rt(e,{writeDom:!0,remember:!0})}function jt(){Pt(Ht())}function It(e,t){const n=ne.get(e);if(!Number.isFinite(n)||null==n||n<=0)return 0;const r=re.get(e);return t&&r&&!zt(r,t)?0:Math.ceil(n)}function zt(e,t){var n,r,o,a;return e.sourceKey===t.sourceKey&&(0===(null!=(n=t.widthBucket)?n:0)||0===(null!=(r=e.widthBucket)?r:0)||(null!=(o=t.widthBucket)?o:0)===(null!=(a=e.widthBucket)?a:0))&&(Ot(t.measurementKey)||Ot(e.measurementKey)||t.measurementKey===e.measurementKey)}function Ot(e){return":0"===e||!0===(null==e?void 0:e.startsWith(":0"))}function $t(e){ne.delete(e),re.delete(e)}function Et(e,t,n,o={}){if(!Number.isFinite(t)||t<=0)return;const a=ee.get(e),l=n&&!mt(te.get(e),n);!function(e,t){if(!t)return;const n=re.get(e);n&&!zt(n,t)&&(ne.delete(e),re.delete(e))}(e,n);const i=It(e,n),u=i>0?i:Math.ceil(t);if(null!=a&&Math.abs(a-u)<=1&&!l)return;if(!1===o.updateLayout)return n&&te.set(e,n),ee.set(e,u),void sn(o.rememberThreadKey);if(ce.value)return n&&te.set(e,n),ee.set(e,u),Ze(e,u),void function(e=Me,t=he){t&&y(()=>{mn(e,t),null==ke&&"function"==typeof requestAnimationFrame&&(ke=requestAnimationFrame(()=>{ke=null,mn(e,t)}))})}();const s=(c=on(),d=Ft(),!0===r.stickToBottom?{type:"bottom",distanceFromBottomPx:0}:"auto"===r.stickToBottom&&Q.value?{type:"bottom",distanceFromBottomPx:X.value?0:Math.max(0,d)}:c);var c,d;n&&te.set(e,n),ee.set(e,u),Ze(e,u),sn(o.rememberThreadKey),function(e){if(!Lt.scheduled)return Lt.anchor=e,Lt.scheduled=!0,void(Lt.raf=Yt(Zt));!Lt.anchor&&e&&(Lt.anchor=e)}(s)}g([()=>function(){const e=r.layoutRevision;return null!=e?["explicit",String(e),r.items.length].join(""):r.items.map((e,t)=>{var n;const o=et(e,t),a=j(e,t,r);return[o,I(e,t,r),a?1:0,null!=(n=L(e,t,r))?n:"",at(e,t),ot(e,t,a),(l=null==e?void 0:e.component,l?"string"==typeof l?`s:${l}`:`o:${rt(l)}`:"")].join("");var l}).join("\0")}(),je,Ie,Ae,()=>rt(r.estimateItemHeight),()=>rt(r.getKey),()=>rt(r.getKind),()=>rt(r.getContent),()=>rt(r.getFinal),()=>rt(r.getRevision)],()=>We(),{immediate:!0,flush:"sync"});const Lt={scheduled:!1,raf:null,anchor:void 0},Dt=/* @__PURE__ */new Map;let Vt=!1,Wt=null;function Yt(e){return"function"==typeof requestAnimationFrame?requestAnimationFrame(e):(y(e),null)}function Ut(e){null!=e&&"function"==typeof cancelAnimationFrame&&cancelAnimationFrame(e)}function Zt(){if(!Lt.scheduled)return;Lt.scheduled=!1,Lt.raf=null;const e=Lt.anchor;Lt.anchor=void 0,e&&dn(e),Nt({remember:!1})}function Gt(){var e,t;if(!Vt)return;Vt=!1,Wt=null;const n=Array.from(Dt.entries());Dt.clear();for(const[r,o]of n){if(ae.get(r)!==o.logicalHeight)continue;const n=$e.get(r);if(!n)continue;const a=(null!=(e=o.threadKey)?e:"")===(null!=(t=Ae.value)?t:"");Xt(n,{allowMarkdownShrink:o.allowMarkdownShrink,markdownLogicalHeight:o.logicalHeight,rememberThreadKey:o.threadKey,source:o.itemSizeSource,updateLayout:a})}Zt()}function Jt(){Gt(),Zt()}function Qt(e){var t;null==(t=ue.get(e))||t.disconnect(),ue.delete(e),ie.delete(e)}function Xt(e,t={}){var n,o,a;const i=(u=e.key,D(ie.get(u),c));var u;const s=null!=(n=t.source)?n:dt(e);let d=!1;const m=()=>{d||(d=!0,function(e,t){const n=function(){if(!0!==r.debug||0===l.size)return null;let e=0;for(const n of l.values())e+=n;const t={total:e,byLabel:Object.fromEntries(Array.from(l.entries()).sort((e,t)=>t[1]-e[1]||e[0].localeCompare(t[0])))};return l.clear(),t}();n&&console.info("[markstream-vue][timeline][perf] layout-reads",{label:e,itemKey:t,layoutReads:n})}("reconcileRecordSize",e.key))};if(!e.markdown)return i>0&&Et(e.key,i,s,t),void m();const f=mt(te.get(e.key),s)&&null!=(o=ee.get(e.key))?o:0,v=null!=(a=t.markdownLogicalHeight)?a:function(e){var t;return gt(ht(e),le.get(e))?null!=(t=ae.get(e))?t:0:pt(e)}(e.key),h=function(e,t){return V(ie.get(e),c,t)}(e.key,i);if(v>0){let n=Math.max(i,v+h);(!t.allowMarkdownShrink||ce.value)&&f>0&&(n=Math.max(n,f));const r=It(e.key,s);return(r>0&&v>r+1&&!ce.value||t.allowMarkdownShrink&&!ce.value)&&$t(e.key),n>0&&Et(e.key,n,s,t),void m()}return String(E(lt(e),e.index,r)).trim()?f>0?(i>f+1&&Et(e.key,i,s,t),void m()):(i>0&&Et(e.key,i,s,t),void m()):(i>0&&($t(e.key),Et(e.key,i,s,t)),void m())}function en(e){return t=>{!function(e,t){const n=function(e){const t=e&&"$el"in e?e.$el:e;return t instanceof HTMLElement?t:null}(t),r=ie.get(e.key);if(!n)return void Qt(e.key);if(r===n)return void Xt(e);if(Qt(e.key),ie.set(e.key,n),Xt(e),"undefined"==typeof ResizeObserver)return;const o=new ResizeObserver(()=>{Xt(e)});o.observe(n),ue.set(e.key,o)}(e,t)}}function tn(e){const t=lt(e),n=$(t,e.index,r),a=oe.get(e.key),l=_e.value,i=Pe.value,u={enabled:!0,sessionKey:st(e),threadKey:Ae.value,scrollRoot:()=>W.value,restoreState:yt(e,a)?a:null,restoreAnchor:!1,measurementKey:Ie.value,settleMode:"manual",settledToken:n,emitIntervalMs:96,heightDiffThresholdPx:4};return{content:E(t,e.index,r),final:n,mode:l,codeRenderer:i,nodeVirtual:!1,fade:!0===r.markdownFade,indexKey:st(e),virtualScroll:u,onHeightChange(t){if(t.sessionKey!==st(e))return;kt(e.key,t.totalHeight,{sessionKey:t.sessionKey,threadKey:Ae.value,measurementKey:Ie.value});const n=function(e){return"final"===e.phase||!!e.stable&&("measured"===e.confidence||"final"===e.confidence)}(t),r=Math.ceil(t.totalHeight);var a;!function(e,t){Dt.set(e.key,t),Vt||(Vt=!0,Wt=Yt(Gt))}(e,{allowMarkdownShrink:n,itemSizeSource:dt(e),logicalHeight:r,threadKey:Ae.value}),a={itemKey:e.key,metrics:t},o("height-change",a)},onVirtualStateChange(t){var n;t.sessionKey===st(e)&&(oe.set(e.key,t),pt(e.key,t),sn(),n={itemKey:e.key,state:t},o("virtual-state-change",n))}}}function nn(e){return{item:lt(e),index:e.index,itemKey:e.key,kind:e.kind,measureRef:en(e),markdownProps:tn(e)}}function rn(e){var t;const n=null!=(t=lt(e))?t:{};return"string"==typeof n.text?n.text:"string"==typeof n.message?n.message:"string"==typeof n.label?n.label:E(n,e.index,r)}function on(){const e=Ft();if(e<=2)return{type:"bottom",distanceFromBottomPx:Math.max(0,e)};const t=Tt(),n=Ge(t,"gt"),r=Ve.value.records[n];if(r){const e=Ye(r);if(t>=e&&t<e+r.size)return{type:"item",itemKey:r.key,offsetWithinItemPx:t-e}}const o=Xe.value.records[0];return o?{type:"item",itemKey:o.key,offsetWithinItemPx:0}:void 0}function an(e=Ae.value){Jt();const t={},n={};for(const r of Ve.value.records){const o=vt(r,e),a=te.get(r.key);null!=o&&ft(r,a,e)&&(t[r.key]=o,n[r.key]=a)}return{threadKey:e,measurementKey:je.value,widthBucket:J.value,outerAnchor:on(),itemHeights:t,itemSizeSources:n,markdownStates:Object.fromEntries(oe.entries())}}function ln(e=Ae.value){if(!e)return;const t=an(e);return se.set(e,t),e===Ae.value&&(Te=t),a(t),t}function un(){const e=ve;return null!=we&&"undefined"!=typeof window&&window.clearTimeout(we),we=null,ve=void 0,e?ln(e):void 0}function sn(e=Ae.value){e&&(ve=e,null==we&&("undefined"!=typeof window?we=window.setTimeout(()=>{we=null,un()},80):un()))}function cn(e){if(!e)return null;if("bottom"===e.type)return(de.value?Kt():Bt())-St()-Math.max(0,e.distanceFromBottomPx);const t=ht(e.itemKey);return t?xt()+Ye(t)+Math.max(0,e.offsetWithinItemPx):null}function dn(e,t={}){const n=cn(e);return null!=n&&(Rt(n,{writeDom:!0,remember:!0===t.remember}),!0)}function mn(e,t){if(e===ye){if(t){const e=dn(t,{remember:!1});xe=e?Z.value:null}Nt({remember:!1})}}function fn(e,t){const n=e.getBoundingClientRect();return n.width>0&&n.height>0&&n.bottom>t.top&&n.top<t.bottom}function vn(e,t){const n=e.getBoundingClientRect(),r=t.getBoundingClientRect();return n.bottom>r.top&&n.top<r.bottom}function hn(e){if(e.closest(".code-editor-container.is-hidden"))return!1;let t=e;for(;t;){const e=window.getComputedStyle(t);if("none"===e.display||"hidden"===e.visibility||Number.parseFloat(e.opacity||"1")<=.01)return!1;t=t.parentElement}const n=e.getBoundingClientRect();return n.width>0&&n.height>0}function gn(e){return Boolean(e.querySelector(['[data-markstream-pending="true"]','[data-markstream-mermaid][data-markstream-mode="pending"]','.mermaid-block-container[data-markstream-mode="pending"]','[data-markstream-code-loading="1"]'].join(",")))}function yn(e){var t;if(e.querySelector(":scope > .node-placeholder"))return!1;const n=e.querySelector(":scope > .node-content");return!!n&&(!gn(n)&&(!!function(e){const t=Array.from(e.querySelectorAll("[data-markstream-math]"));return!t.length||t.every(e=>{const t=e.dataset.markstreamMode;return!("true"===e.dataset.markstreamPending||"loading"===t||"katex"!==t&&"fallback"!==t)})}(n)&&("code_block"===(null!=(t=e.dataset.nodeType)?t:"")?function(e){if(e.querySelector('[data-markstream-code-loading="1"]'))return!1;const t=e.querySelector('[data-markstream-code-block="1"]');if(t){const e="true"===t.dataset.markstreamEnhanced,r=function(e){if(!e)return!1;if(e.classList.contains("is-fading-out"))return!1;const t=window.getComputedStyle(e);if("none"===t.display||Number.parseFloat(t.opacity||"1")<=.01)return!1;const n=e.getBoundingClientRect();return n.width>0&&n.height>0}(t.querySelector("pre.code-pre-fallback"));return e||r||(n=t,Array.from(n.querySelectorAll(".monaco-editor, .monaco-diff-editor")).some(hn))}var n;return function(e){var t,n;const r=e.querySelector("[data-markstream-mermaid], .mermaid-block-container");if(r){if("true"===r.dataset.markstreamPending)return!1;const e=r.dataset.markstreamMode;return"preview"===e?Boolean(r.querySelector("svg")||r.querySelector('[data-mermaid-svg-layer="1"] svg')):"fallback"===e&&Boolean(null==(n=null==(t=r.querySelector(".mermaid-source-code"))?void 0:t.textContent)?void 0:n.trim())}const o=e.querySelector("[data-markstream-infographic], .infographic-block-container");if(o)return"true"!==o.dataset.markstreamPending;const a=e.querySelector("[data-markstream-d2], .d2-block-container");return a?"true"!==a.dataset.markstreamPending:Boolean(e.querySelector('pre[data-markstream-pre="1"]'))}(e)}(n):function(e){var t;return(null!=(t=e.textContent)?t:"").trim().length>0||Boolean(e.querySelector(["hr","br","table","blockquote","img","svg","canvas","input","button","select","textarea","[role]","[aria-label]","[data-markstream-math]","[data-markstream-mermaid]","[data-markstream-infographic]","[data-markstream-d2]",'[data-markstream-pre="1"]'].join(",")))}(n))))}function kn(e,t){var n;if(!e.markdown)return!0;const o=E(lt(e),e.index,r);if(!String(null!=o?o:"").trim())return!0;if(t.querySelector("[data-node-index]"))return!0;const a=t.querySelector(".markdown-renderer"),l=null!=a?a:t;return!gn(l)&&(!!(null!=(n=l.textContent)?n:"").trim()||Boolean(l.querySelector(["hr","br","table","blockquote","img","svg","canvas","input","button","[role]","[aria-label]","[data-markstream-math]","[data-markstream-mermaid]","[data-markstream-infographic]","[data-markstream-d2]",'[data-markstream-pre="1"]','[data-markstream-code-block="1"]'].join(","))))}function pn(e,t,n){if(!e.markdown)return!0;const o=E(lt(e),e.index,r);if(!String(null!=o?o:"").trim())return!0;const a=n.getBoundingClientRect(),l=Array.from(t.querySelectorAll("[data-node-index]")).filter(e=>fn(e,a));if(l.length>0)return l.every(e=>yn(e));const i=t.querySelector(".markdown-renderer"),u=null!=i?i:t;return u.querySelector("[data-node-index], .node-placeholder")?!!function(e,t,n,r){if("bottom"!==(null==he?void 0:he.type))return!1;if(!bn(e))return!1;const o=n.getBoundingClientRect(),a=t.getBoundingClientRect();return o.width>0&&o.height>0&&o.bottom<=r.top+1&&a.bottom>r.top}(e,t,u,a)&&kn(e,t):kn(e,t)}function bn(e){const t=te.get(e.key);return It(e.key,t)>0}function wn(e,t){var n,o,a,l;if(!e.markdown)return!0;if(!Be&&!Ke)return!0;if(bn(e))return!0;const i=E(lt(e),e.index,r);if(!String(null!=i?i:"").trim())return!0;if(!t.querySelector(".markdown-renderer"))return!1;const u=oe.get(e.key);if(!yt(e,u))return!1;const s=null==u?void 0:u.metrics,c=Number(null!=(n=null==s?void 0:s.totalHeight)?n:0);if(!Number.isFinite(c)||c<=0)return!1;const d=Number(null!=(o=null==s?void 0:s.measuredCount)?o:0),m=Number(null!=(a=null==s?void 0:s.estimatedCount)?a:0),f=Number(null!=(l=null==s?void 0:s.nodeCount)?l:0),v=f<=0||d>=f&&m<=0,h="measured"===(null==s?void 0:s.confidence)||"final"===(null==s?void 0:s.confidence),g=!0===(null==s?void 0:s.stable)||h;return Ke?v&&!0===(null==s?void 0:s.final)&&h:g||!0===(null==s?void 0:s.final)}function Sn(){const e=W.value;if(!e)return!1;const t=cn(he);if(null!=t&&Math.abs((e.scrollTop||0)-qt(t))>.5)return!1;const n=Xe.value.records;if(!n.length)return 0===Ve.value.records.length;const r=new Map(Array.from(e.querySelectorAll("[data-markstream-item-key]")).map(e=>{var t;return[null!=(t=e.dataset.markstreamItemKey)?t:"",e]})),o=[];for(const i of n){const t=r.get(i.key);t&&vn(t,e)&&o.push({record:i,el:t})}if(!o.length)return!1;for(const{record:i,el:u}of o){if(u.offsetHeight+1<i.size)return!1;if(!pn(i,u,e))return!1;if(!wn(i,u))return!1}const a=e.getBoundingClientRect();if(Array.from(e.querySelectorAll(['[data-markstream-pending="true"]','[data-markstream-mermaid][data-markstream-mode="pending"]','.mermaid-block-container[data-markstream-mode="pending"]','[data-markstream-code-loading="1"]'].join(","))).some(e=>fn(e,a)))return!1;const l=Array.from(e.querySelectorAll("[data-node-index]")).filter(e=>fn(e,a));for(const i of l)if(!yn(i))return!1;return!0}function Mn(){const e=W.value;if(!e)return"";const t=e.getBoundingClientRect(),n=new Map(Array.from(e.querySelectorAll("[data-markstream-item-key]")).map(e=>{var t;return[null!=(t=e.dataset.markstreamItemKey)?t:"",e]})),r=Xe.value.records.map(e=>{var t,r,o,a,l,i,u,s,c;const d=n.get(e.key),m=null==d?void 0:d.querySelector(".markdown-renderer"),f=null==(t=oe.get(e.key))?void 0:t.metrics;return[e.key,e.size,null!=(r=null==d?void 0:d.offsetHeight)?r:0,null!=(o=null==d?void 0:d.scrollHeight)?o:0,null!=(a=null==m?void 0:m.offsetHeight)?a:0,null!=(l=null==m?void 0:m.scrollHeight)?l:0,f?Math.round(Number(f.totalHeight||0)):"",null!=(i=null==f?void 0:f.measuredCount)?i:"",null!=(u=null==f?void 0:f.estimatedCount)?u:"",null!=(s=null==f?void 0:f.nodeCount)?s:"",!0===(null==f?void 0:f.final)?1:0,!0===(null==f?void 0:f.stable)?1:0,null!=(c=null==f?void 0:f.confidence)?c:""].join(":")}).join("|"),o=Array.from(e.querySelectorAll("[data-node-index]")).filter(e=>fn(e,t)).map(e=>{var t,n,r,o,a;const l=e.getBoundingClientRect(),i=e.querySelector(":scope > .node-content"),u=null==i?void 0:i.querySelector('[data-markstream-code-block="1"]'),s=null==i?void 0:i.querySelector("pre.code-pre-fallback"),c=null==i?void 0:i.querySelector(".monaco-editor, .monaco-diff-editor");return[null!=(t=e.dataset.nodeIndex)?t:"",null!=(n=e.dataset.nodeType)?n:"",Math.round(l.height),null!=(r=null==i?void 0:i.offsetHeight)?r:0,null!=(o=null==i?void 0:i.scrollHeight)?o:0,null!=(a=null==u?void 0:u.dataset.markstreamEnhanced)?a:"",u?Math.round(u.getBoundingClientRect().height):0,s?Math.round(s.getBoundingClientRect().height):0,c?Math.round(c.getBoundingClientRect().height):0].join(":")}).join("|");return[Math.round(e.scrollTop||0),Math.round(e.scrollHeight||0),Math.round(Ve.value.totalHeight||0),r,o].join("\n")}function xn(){return"undefined"!=typeof performance?performance.now():Date.now()}function Bn(){return Ke?24:2}function Kn(e){bt(e)&&He!==e&&(He=e,function(e){return t=this,n=function*(){const t=xn();let n=0,r="";for(let o=0;o<40;o++){if(yield y(),yield new Promise(e=>{"function"!=typeof requestAnimationFrame?e():requestAnimationFrame(()=>e())}),!bt(e))return!1;mn(e,he);const o=xn(),a=Sn(),l=a?Mn():"";if(a&&l===r&&l){if(n+=1,n>=Bn()&&o-t>=96)return!0}else n=0,r=l}return!1},new Promise((e,r)=>{var o=e=>{try{l(n.next(e))}catch(t){r(t)}},a=e=>{try{l(n.throw(e))}catch(t){r(t)}},l=t=>t.done?e(t.value):Promise.resolve(t.value).then(o,a);l((n=n.apply(t,null)).next())});var t,n}(e).then(t=>{if(He===e&&(He=0),bt(e))return t?void Cn(e):function(){if(Se<0)return!1;const e=function(){if(!1===r.restoreMaxLoadingMs)return Number.POSITIVE_INFINITY;const e=Number(r.restoreMaxLoadingMs);return Number.isFinite(e)&&e>0?e:Number.POSITIVE_INFINITY}();return Number.isFinite(e)&&xn()-Se>=e}()?(!0===r.debug&&import.meta,void Cn(e)):(function(e){qe!==e&&(qe=e,!0===r.debug&&import.meta)}(e),void function(e){bt(e)&&"undefined"!=typeof window&&(null!=be&&window.clearTimeout(be),be=window.setTimeout(()=>{be=null,bt(e)&&Kn(e)},120))}(e))}))}function Tn(){de.value=!0,Se=-1,He=0,qe=0,Be=!1,Ke=!1,null!=be&&"undefined"!=typeof window&&window.clearTimeout(be),be=null}function Hn(){Ce=!0}function qn(e){var t,n;const r=[];if(!function(e){var t,n;return!!e&&(null!=(t=e.measurementKey)?t:"")===je.value&&(null!=(n=e.widthBucket)?n:0)===J.value}(e))return r;for(const[o,a]of Object.entries(null!=(t=null==e?void 0:e.itemHeights)?t:{})){if(!Number.isFinite(a)||a<=0)continue;const t=ht(o),l=null==(n=null==e?void 0:e.itemSizeSources)?void 0:n[o];ft(t,l)&&r.push([o,Math.ceil(a),l])}return r}function Fn(e){var t;for(const[n,r]of Object.entries(null!=(t=null==e?void 0:e.markdownStates)?t:{}))if(yt(ht(n),r))return!0;return!1}function Cn(e){if(e===ye){wt(),mn(e,he),ce.value=!1,Se=-1,he=void 0,xe=null,Me=0;for(const e of Ve.value.records)e.markdown||$t(e.key);Nt({remember:!1}),Tn(),Hn()}}function An(e,t={}){var n;const o=++ye;(null==e?void 0:e.widthBucket)&&0===J.value&&(J.value=e.widthBucket);const a=null==e?void 0:e.outerAnchor,l=function(e){return Boolean((null==e?void 0:e.outerAnchor)||qn(e).length>0||Fn(e))}(e),i=Fn(e),u=!(!Ce&&!0!==t.threadSwitch||l),s=l||u,c=null!=a?a:s?function(){if(!1!==r.stickToBottom)return{type:"bottom",distanceFromBottomPx:0};const e=Ve.value.records[0];return e?{type:"item",itemKey:e.key,offsetWithinItemPx:0}:void 0}():void 0;wt(),He=0,qe=0,de.value=!s,ce.value=s&&Boolean(c),Me=o,he=c,Be=s&&i,Ke=s&&u,Se=ce.value?xn():-1,Nn(),ee.clear(),te.clear(),ne.clear(),re.clear(),oe.clear(),ae.clear(),le.clear();for(const[r,m,f]of qn(e)){const e=Math.ceil(m);te.set(r,f),ee.set(r,e),ne.set(r,e),re.set(r,f)}for(const[r,m]of Object.entries(null!=(n=null==e?void 0:e.markdownStates)?n:{}))oe.set(r,m),pt(r,m);We(),!0===r.stickToBottom?(Q.value=!0,X.value=!0):!1===r.stickToBottom?(Q.value=!1,X.value=!1):(Q.value="bottom"===(null==c?void 0:c.type),X.value="bottom"===(null==c?void 0:c.type)&&c.distanceFromBottomPx<=2);const d=cn(c);return xe=null==d?null:qt(d),null!=d&&Rt(d,{writeDom:!0,remember:!1,updatePinned:!1}),Te=(null==e?void 0:e.threadKey)===Ae.value?e:null,s?c?void y(()=>{mn(o,c),"undefined"!=typeof window?(fe.forEach(e=>{const t=window.setTimeout(()=>{mn(o,c)},e);pe.push(t)}),Kn(o)):Cn(o)}):(ce.value=!1,he=void 0,xe=null,Me=0,Nt({remember:!1}),Tn(),void Hn()):(ce.value=!1,he=void 0,xe=null,Me=0,Nt({remember:!1}),Tn(),Hn(),void(!1!==r.stickToBottom&&(Q.value=!0,X.value=!0,y(()=>{ce.value||jt()}))))}function Nn(){for(const e of ue.values())e.disconnect();ue.clear(),ie.clear()}return g(Ae,(e,t)=>{const n=null!=Ne?Ne:t,o=Boolean(n&&n!==e);o&&function(e){var t;Jt(),(null==(t=un())?void 0:t.threadKey)!==e&&((null==Te?void 0:Te.threadKey)===e?(se.set(e,Te),a(Te)):se.has(e)||ln(e))}(n),Ne=e,An(function(e){return(e?se.get(e):null)||function(e){var t;const n=r.initialThreadState;return n?(null!=(t=n.threadKey)?t:"")!==(null!=e?e:"")?null:n:null}(e)}(e),{threadSwitch:o})},{immediate:!0,flush:"sync"}),g(()=>Xe.value.records.map(e=>e.key).join("\0"),()=>{var e;e={start:Xe.value.start,end:Xe.value.end},o("range-change",e)},{immediate:!0}),g(()=>[r.items.length,Ve.value.totalHeight],()=>{ce.value||!1!==r.stickToBottom&&("auto"!==r.stickToBottom||X.value)&&y(()=>{ce.value||!1!==r.stickToBottom&&("auto"!==r.stickToBottom||X.value)&&jt()})},{flush:"post"}),k(()=>{Mt(),At(),he?(mn(Me,he),Nt({remember:!1}),ln()):!1===r.stickToBottom?(Nt({remember:!1}),ln()):(Q.value=!0,Rt(Ht(),{writeDom:!0,remember:!1,updatePinned:!1}),Nt({remember:!1}),ln()),W.value&&"undefined"!=typeof ResizeObserver&&(ge=new ResizeObserver(()=>{Mt(),Nt()}),ge.observe(W.value))}),p(()=>{de.value||Kn(Me)}),b(()=>{un()||ln(),wt(),null!=we&&"undefined"!=typeof window&&window.clearTimeout(we),we=null,ve=void 0,Ut(Lt.raf),Lt.scheduled=!1,Lt.raf=null,Lt.anchor=void 0,Ut(Wt),Vt=!1,Wt=null,Dt.clear(),Nn(),te.clear(),ne.clear(),re.clear(),ae.clear(),le.clear(),null==ge||ge.disconnect(),ge=null}),t({captureThreadState:function(){return an(Ae.value)},restoreThreadState:An,scrollToBottom:jt,scrollToIndex:function(e,t="start"){const n=Ve.value.records[e];if(!n)return;let r=xt()+Ye(n);"center"===t?r-=(G.value-n.size)/2:"end"===t&&(r-=G.value-n.size),Pt(r)},scrollToOffset:Pt,getItemSize:e=>{var t;const n=ht(e);return n&&null!=(t=vt(n))?t:void 0},getTotalHeight:()=>Ve.value.totalHeight,getVisibleRange:()=>({start:Xe.value.start,end:Xe.value.end})}),(e,t)=>(w(),S("div",{ref_key:"scrollRoot",ref:W,class:M(["markstream-virtual-timeline",{"is-restoring-thread":!de.value}]),"data-markstream-virtual-timeline":"1","data-testid":"markstream-virtual-timeline",onScroll:_t},[x("div",{class:"markstream-virtual-timeline__spacer",style:B({height:`${Xe.value.topSpacerHeight}px`}),"aria-hidden":"true"},null,4),(w(!0),S(K,null,T(Xe.value.records,t=>(w(),S("div",{key:t.renderKey,class:"markstream-virtual-timeline__item","data-markstream-item-key":t.key,"data-markstream-item-kind":t.kind,style:B({minHeight:`${t.size}px`})},[H(e.$slots,"default",q({ref_for:!0},nn(t)),()=>{var e,n;return[t.markdown?(w(),F(C(P),q({key:0,ref_for:!0},tn(t)),null,16)):ut(t)?(w(),F(A(ut(t)),{key:1,ref_for:!0,ref:en(t),item:lt(t)},null,8,["item"])):(w(),S("div",{key:2,ref_for:!0,ref:en(t),class:M(["markstream-virtual-timeline__default-item",`markstream-virtual-timeline__default-item--${t.kind||"item"}`])},["tool-call"===t.kind&&(null==(e=lt(t))?void 0:e.status)?(w(),S("span",U,N(null==(n=lt(t))?void 0:n.status),1)):R("",!0),_(" "+N(rn(t)),1)],2))]},!0)],12,Y))),128)),x("div",{class:"markstream-virtual-timeline__spacer",style:B({height:`${Xe.value.bottomSpacerHeight}px`}),"aria-hidden":"true"},null,4),de.value?R("",!0):(w(),S("div",{key:0,class:"markstream-virtual-timeline__restore-loading",style:B({height:`${Math.max(1,St())}px`,transform:`translateY(${Z.value}px)`}),"aria-live":"polite","aria-busy":"true"},[H(e.$slots,"restore-loading",{threadKey:Ae.value,visibleRecords:Xe.value.records},()=>[t[0]||(t[0]=x("div",{class:"markstream-virtual-timeline__restore-loading-card"},[x("span",{class:"markstream-virtual-timeline__restore-spinner","aria-hidden":"true"}),x("span",null,"Loading thread…")],-1))],!0)],4))],34))}})),[["__scopeId","data-v-dff004bf"]]),G=Z;G.install=e=>{var t,n;const r=null!=(n=null!=(t=G.__name)?t:G.name)?n:"MarkstreamVirtualTimeline";e.component(r,Z)};export{G as default};
@@ -0,0 +1 @@
1
+ import{g as t}from"./diagramHeight.js";function e(t,e){return/(?:&#\d+|#\d+|&[a-z]+)$/i.test(t.slice(Math.max(0,e-12),e))}function n(t){return t.includes("->")||t.includes("--\x3e")||t.includes("->>")||t.includes("--\x3e>")||t.includes("-x")||t.includes("--x")||t.includes("-)")||t.includes("--)")||t.includes("-+")||t.includes("--+")}function i(t){const e=t.trimStart();return/^(?:accDescr|accTitle|activate|actor|and|alt|autonumber|box|break|critical|create\s+(?:actor|participant)|deactivate|destroy|else|end|link|links|loop|Note|opt|option|par|participant|properties|rect)\b/i.test(e)||function(t){const e=t.split(";",1)[0],i=e.indexOf(":");return i>0&&n(e.slice(0,i))}(e)}function c(t){if(!t.includes(";"))return t;const c=t.indexOf(":");if(-1===c||!function(t,e){const i=t.slice(0,e);return/^\s*Note\b/i.test(i)||n(i)}(t,c))return t;const r=t.slice(0,c+1),s=t.slice(c+1),o=function(t){let n="",c=!1;for(let r=0;r<t.length;r++){const s=t[r];";"!==s||e(t,r)||i(t.slice(r+1))?n+=s:(n+="#59;",c=!0)}return c?n:t}(s);return o===s?t:`${r}${o}`}function r(e){if("sequencediagram"!==t(e))return e;const n=e.split(/(\r\n|\n|\r)/);let i=!1;for(let t=0;t<n.length;t+=2){const e=n[t],r=c(e);r!==e&&(n[t]=r,i=!0)}return i?n.join(""):e}export{r as e};
package/dist/tailwind.js CHANGED
Binary file
@@ -1 +1 @@
1
- var n=Object.defineProperty,e=Object.defineProperties,i=Object.getOwnPropertyDescriptors,r=Object.getOwnPropertySymbols,a=Object.prototype.hasOwnProperty,t=Object.prototype.propertyIsEnumerable,o=(e,i,r)=>i in e?n(e,i,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[i]=r,d=(n,e)=>{for(var i in e||(e={}))a.call(e,i)&&o(n,i,e[i]);if(r)for(var i of r(e))t.call(e,i)&&o(n,i,e[i]);return n};function s(n){return JSON.stringify(n)}function l(n){var e;const i=null!=(e=n.mode)?e:"module",r=s(n.mermaidUrl),a=`\nlet DEBUG = false\nlet mermaid = null\nlet mermaidLoadError = null\n\nfunction normalizeMermaidModule(mod) {\n if (!mod)\n return mod\n const candidate = (mod && mod.default) ? mod.default : mod\n if (candidate && (typeof candidate.render === 'function' || typeof candidate.parse === 'function' || typeof candidate.initialize === 'function'))\n return candidate\n if (candidate && candidate.mermaidAPI && (typeof candidate.mermaidAPI.render === 'function' || typeof candidate.mermaidAPI.parse === 'function')) {\n const api = candidate.mermaidAPI\n return {\n ...candidate,\n render: api.render ? api.render.bind(api) : undefined,\n parse: api.parse ? api.parse.bind(api) : undefined,\n initialize: (opts) => {\n if (typeof candidate.initialize === 'function')\n return candidate.initialize(opts)\n return api.initialize ? api.initialize(opts) : undefined\n },\n }\n }\n if (mod && mod.mermaid && typeof mod.mermaid.parse === 'function')\n return mod.mermaid\n return candidate\n}\n\nfunction applyThemeTo(code, theme) {\n const themeValue = theme === 'dark' ? 'dark' : 'default'\n const themeConfig = \`%%{init: {"theme": "\${themeValue}"}}%%\\n\`\n const trimmed = (code || '').trimStart()\n if (trimmed.startsWith('%%{'))\n return code\n return themeConfig + code\n}\n\nfunction findHeaderIndex(lines) {\n const headerRe = /^(?:graph|flowchart|flowchart\\s+tb|flowchart\\s+lr|sequenceDiagram|gantt|classDiagram|stateDiagram(?:-v2)?|erDiagram|journey|pie|quadrantChart|timeline|xychart(?:-beta)?)\\b/\n for (let i = 0; i < lines.length; i++) {\n const l = (lines[i] || '').trim()\n if (!l)\n continue\n if (l.startsWith('%%'))\n continue\n if (headerRe.test(l))\n return i\n }\n return -1\n}\n\nasync function canParse(code, theme) {\n const themed = applyThemeTo(code, theme)\n const anyMermaid = mermaid\n if (anyMermaid && typeof anyMermaid.parse === 'function') {\n await anyMermaid.parse(themed)\n return true\n }\n throw new Error('mermaid.parse not available in worker')\n}\n\nasync function findLastRenderablePrefix(baseCode, theme) {\n const lines = String(baseCode || '').split('\\n')\n const headerIdx = findHeaderIndex(lines)\n if (headerIdx === -1)\n return null\n const head = lines.slice(0, headerIdx + 1)\n await canParse(head.join('\\n'), theme)\n\n let low = headerIdx + 1\n let high = lines.length\n let lastGood = headerIdx + 1\n let tries = 0\n const MAX_TRIES = 12\n\n while (low <= high && tries < MAX_TRIES) {\n const mid = Math.floor((low + high) / 2)\n const candidate = [...head, ...lines.slice(headerIdx + 1, mid)].join('\\n')\n tries++\n try {\n await canParse(candidate, theme)\n lastGood = mid\n low = mid + 1\n }\n catch {\n high = mid - 1\n }\n }\n\n return [...head, ...lines.slice(headerIdx + 1, lastGood)].join('\\n')\n}\n\nfunction initMermaidOnce() {\n if (!mermaid)\n return\n try {\n if (typeof mermaid.initialize === 'function')\n mermaid.initialize(${s(d({startOnLoad:!1,securityLevel:"strict",flowchart:{htmlLabels:!1}},n.initializeOptions||{}))})\n }\n catch (e) {\n if (DEBUG)\n console.warn('[mermaid-cdn-worker] initialize failed', e)\n }\n}\n\nglobalThis.addEventListener('message', async (ev) => {\n const msg = ev.data || {}\n if (msg.type === 'init') {\n DEBUG = !!msg.debug\n if (DEBUG)\n console.debug('[mermaid-cdn-worker] debug enabled')\n return\n }\n\n const id = msg.id\n const action = msg.action\n const payload = msg.payload || {}\n\n if (!mermaid) {\n const errMsg = mermaidLoadError ? String(mermaidLoadError?.message || mermaidLoadError) : 'Mermaid is not available in worker'\n globalThis.postMessage({ id, ok: false, error: errMsg })\n return\n }\n\n try {\n if (action === 'canParse') {\n const ok = await canParse(payload.code, payload.theme)\n globalThis.postMessage({ id, ok: true, result: ok })\n return\n }\n if (action === 'findPrefix') {\n const res = await findLastRenderablePrefix(payload.code, payload.theme)\n globalThis.postMessage({ id, ok: true, result: res })\n return\n }\n globalThis.postMessage({ id, ok: false, error: 'Unknown action' })\n }\n catch (e) {\n globalThis.postMessage({ id, ok: false, error: String(e?.message || e) })\n }\n})\n`.trimStart();return"module"===i?`\n${a}\n\nlet loadPromise = null\nasync function loadMermaid() {\n if (mermaid || mermaidLoadError)\n return\n if (!loadPromise) {\n loadPromise = (async () => {\n try {\n const mod = await import(${r})\n mermaid = normalizeMermaidModule(mod) || null\n initMermaidOnce()\n }\n catch (e) {\n mermaidLoadError = e\n }\n })()\n }\n await loadPromise\n}\n\n// Load immediately; failures are reported per-request\nawait loadMermaid()\n`.trimStart():`\n${a}\n\nfunction loadMermaidClassic() {\n if (mermaid || mermaidLoadError)\n return\n try {\n importScripts(${r})\n mermaid = normalizeMermaidModule(globalThis.mermaid) || null\n initMermaidOnce()\n }\n catch (e) {\n mermaidLoadError = e\n }\n}\n\nloadMermaidClassic()\n`.trimStart()}function m(n){var r,a;const t=l(n);if("undefined"==typeof Worker||"undefined"==typeof URL||"undefined"==typeof Blob)return{worker:null,dispose:()=>{},source:t};const o=new Blob([t],{type:"text/javascript"}),s=URL.createObjectURL(o);let m=!1;const c="module"===(null!=(r=n.mode)?r:"module")?(u=d({},null!=(a=n.workerOptions)?a:{}),e(u,i({type:"module"}))):n.workerOptions;var u;const f=new Worker(s,c);if(n.debug)try{f.postMessage({type:"init",debug:!0})}catch(p){}return{worker:f,dispose:()=>{if(!m){m=!0;try{URL.revokeObjectURL(s)}catch(p){}}},source:t}}export{l as buildMermaidCDNWorkerSource,m as createMermaidWorkerFromCDN};
1
+ var e=Object.defineProperty,n=Object.defineProperties,t=Object.getOwnPropertyDescriptors,i=Object.getOwnPropertySymbols,r=Object.prototype.hasOwnProperty,a=Object.prototype.propertyIsEnumerable,o=(n,t,i)=>t in n?e(n,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):n[t]=i,d=(e,n)=>{for(var t in n||(n={}))r.call(n,t)&&o(e,t,n[t]);if(i)for(var t of i(n))a.call(n,t)&&o(e,t,n[t]);return e};function c(e){return JSON.stringify(e)}function s(e){var n;const t=null!=(n=e.mode)?n:"module",i=c(e.mermaidUrl),r=`\nlet DEBUG = false\nlet mermaid = null\nlet mermaidLoadError = null\n\nfunction normalizeMermaidModule(mod) {\n if (!mod)\n return mod\n const candidate = (mod && mod.default) ? mod.default : mod\n if (candidate && (typeof candidate.render === 'function' || typeof candidate.parse === 'function' || typeof candidate.initialize === 'function'))\n return candidate\n if (candidate && candidate.mermaidAPI && (typeof candidate.mermaidAPI.render === 'function' || typeof candidate.mermaidAPI.parse === 'function')) {\n const api = candidate.mermaidAPI\n return {\n ...candidate,\n render: api.render ? api.render.bind(api) : undefined,\n parse: api.parse ? api.parse.bind(api) : undefined,\n initialize: (opts) => {\n if (typeof candidate.initialize === 'function')\n return candidate.initialize(opts)\n return api.initialize ? api.initialize(opts) : undefined\n },\n }\n }\n if (mod && mod.mermaid && typeof mod.mermaid.parse === 'function')\n return mod.mermaid\n return candidate\n}\n\nfunction applyThemeTo(code, theme) {\n const themeValue = theme === 'dark' ? 'dark' : 'default'\n const themeConfig = \`%%{init: {"theme": "\${themeValue}"}}%%\\n\`\n const trimmed = (code || '').trimStart()\n if (trimmed.startsWith('%%{'))\n return code\n return themeConfig + code\n}\n\nfunction getMermaidDiagramKind(code) {\n const lines = String(code || '').split(/\\r?\\n/)\n for (const rawLine of lines) {\n const line = rawLine.trim()\n if (!line || line.startsWith('%%'))\n continue\n const match = line.match(/^([A-Z][\\w-]*)\\b/i)\n return (match && match[1] ? match[1].toLowerCase() : '')\n }\n return ''\n}\n\nfunction isEscapedEntityBefore(text, index) {\n return /(?:&#\\d+|#\\d+|&[a-z]+)$/i.test(text.slice(Math.max(0, index - 12), index))\n}\n\nfunction hasSequenceArrow(text) {\n return text.includes('->')\n || text.includes('--\x3e')\n || text.includes('->>')\n || text.includes('--\x3e>')\n || text.includes('-x')\n || text.includes('--x')\n || text.includes('-)')\n || text.includes('--)')\n || text.includes('-+')\n || text.includes('--+')\n}\n\nfunction startsSequenceMessage(text) {\n const segment = text.split(';', 1)[0]\n const colonIndex = segment.indexOf(':')\n return colonIndex > 0 && hasSequenceArrow(segment.slice(0, colonIndex))\n}\n\nfunction startsSequenceStatement(text) {\n const source = text.trimStart()\n return /^(?:accDescr|accTitle|activate|actor|and|alt|autonumber|box|break|critical|create\\s+(?:actor|participant)|deactivate|destroy|else|end|link|links|loop|Note|opt|option|par|participant|properties|rect)\\b/i.test(source)\n || startsSequenceMessage(source)\n}\n\nfunction isSequenceTextLine(line, colonIndex) {\n const prefix = line.slice(0, colonIndex)\n return /^\\s*Note\\b/i.test(prefix) || hasSequenceArrow(prefix)\n}\n\nfunction escapeTextSemicolons(text) {\n let escaped = ''\n let changed = false\n for (let index = 0; index < text.length; index++) {\n const char = text[index]\n if (char !== ';' || isEscapedEntityBefore(text, index)) {\n escaped += char\n continue\n }\n if (startsSequenceStatement(text.slice(index + 1))) {\n escaped += char\n continue\n }\n escaped += '#59;'\n changed = true\n }\n return changed ? escaped : text\n}\n\nfunction escapeSequenceTextSemicolons(code) {\n if (getMermaidDiagramKind(code) !== 'sequencediagram')\n return code\n const parts = String(code || '').split(/(\\r\\n|\\n|\\r)/)\n let changed = false\n for (let index = 0; index < parts.length; index += 2) {\n const line = parts[index]\n if (!line.includes(';'))\n continue\n const colonIndex = line.indexOf(':')\n if (colonIndex === -1 || !isSequenceTextLine(line, colonIndex))\n continue\n const escapedText = escapeTextSemicolons(line.slice(colonIndex + 1))\n if (escapedText !== line.slice(colonIndex + 1)) {\n parts[index] = line.slice(0, colonIndex + 1) + escapedText\n changed = true\n }\n }\n return changed ? parts.join('') : code\n}\n\nfunction findHeaderIndex(lines) {\n const headerRe = /^(?:graph|flowchart|flowchart\\s+tb|flowchart\\s+lr|sequenceDiagram|gantt|classDiagram|stateDiagram(?:-v2)?|erDiagram|journey|pie|quadrantChart|timeline|xychart(?:-beta)?)\\b/\n for (let i = 0; i < lines.length; i++) {\n const l = (lines[i] || '').trim()\n if (!l)\n continue\n if (l.startsWith('%%'))\n continue\n if (headerRe.test(l))\n return i\n }\n return -1\n}\n\nasync function canParse(code, theme) {\n const themed = applyThemeTo(code, theme)\n const anyMermaid = mermaid\n if (anyMermaid && typeof anyMermaid.parse === 'function') {\n try {\n await anyMermaid.parse(themed)\n }\n catch (error) {\n const retryCode = escapeSequenceTextSemicolons(themed)\n if (retryCode === themed)\n throw error\n await anyMermaid.parse(retryCode)\n }\n return true\n }\n throw new Error('mermaid.parse not available in worker')\n}\n\nasync function findLastRenderablePrefix(baseCode, theme) {\n const lines = String(baseCode || '').split('\\n')\n const headerIdx = findHeaderIndex(lines)\n if (headerIdx === -1)\n return null\n const head = lines.slice(0, headerIdx + 1)\n await canParse(head.join('\\n'), theme)\n\n let low = headerIdx + 1\n let high = lines.length\n let lastGood = headerIdx + 1\n let tries = 0\n const MAX_TRIES = 12\n\n while (low <= high && tries < MAX_TRIES) {\n const mid = Math.floor((low + high) / 2)\n const candidate = [...head, ...lines.slice(headerIdx + 1, mid)].join('\\n')\n tries++\n try {\n await canParse(candidate, theme)\n lastGood = mid\n low = mid + 1\n }\n catch {\n high = mid - 1\n }\n }\n\n return [...head, ...lines.slice(headerIdx + 1, lastGood)].join('\\n')\n}\n\nfunction initMermaidOnce() {\n if (!mermaid)\n return\n try {\n if (typeof mermaid.initialize === 'function')\n mermaid.initialize(${c(d({startOnLoad:!1,securityLevel:"strict",flowchart:{htmlLabels:!1}},e.initializeOptions||{}))})\n }\n catch (e) {\n if (DEBUG)\n console.warn('[mermaid-cdn-worker] initialize failed', e)\n }\n}\n\nglobalThis.addEventListener('message', async (ev) => {\n const msg = ev.data || {}\n if (msg.type === 'init') {\n DEBUG = !!msg.debug\n if (DEBUG)\n console.debug('[mermaid-cdn-worker] debug enabled')\n return\n }\n\n const id = msg.id\n const action = msg.action\n const payload = msg.payload || {}\n\n if (!mermaid) {\n const errMsg = mermaidLoadError ? String(mermaidLoadError?.message || mermaidLoadError) : 'Mermaid is not available in worker'\n globalThis.postMessage({ id, ok: false, error: errMsg })\n return\n }\n\n try {\n if (action === 'canParse') {\n const ok = await canParse(payload.code, payload.theme)\n globalThis.postMessage({ id, ok: true, result: ok })\n return\n }\n if (action === 'findPrefix') {\n const res = await findLastRenderablePrefix(payload.code, payload.theme)\n globalThis.postMessage({ id, ok: true, result: res })\n return\n }\n globalThis.postMessage({ id, ok: false, error: 'Unknown action' })\n }\n catch (e) {\n globalThis.postMessage({ id, ok: false, error: String(e?.message || e) })\n }\n})\n`.trimStart();return"module"===t?`\n${r}\n\nlet loadPromise = null\nasync function loadMermaid() {\n if (mermaid || mermaidLoadError)\n return\n if (!loadPromise) {\n loadPromise = (async () => {\n try {\n const mod = await import(${i})\n mermaid = normalizeMermaidModule(mod) || null\n initMermaidOnce()\n }\n catch (e) {\n mermaidLoadError = e\n }\n })()\n }\n await loadPromise\n}\n\n// Load immediately; failures are reported per-request\nawait loadMermaid()\n`.trimStart():`\n${r}\n\nfunction loadMermaidClassic() {\n if (mermaid || mermaidLoadError)\n return\n try {\n importScripts(${i})\n mermaid = normalizeMermaidModule(globalThis.mermaid) || null\n initMermaidOnce()\n }\n catch (e) {\n mermaidLoadError = e\n }\n}\n\nloadMermaidClassic()\n`.trimStart()}function l(e){var i,r;const a=s(e);if("undefined"==typeof Worker||"undefined"==typeof URL||"undefined"==typeof Blob)return{worker:null,dispose:()=>{},source:a};const o=new Blob([a],{type:"text/javascript"}),c=URL.createObjectURL(o);let l=!1;const m="module"===(null!=(i=e.mode)?i:"module")?(u=d({},null!=(r=e.workerOptions)?r:{}),n(u,t({type:"module"}))):e.workerOptions;var u;const f=new Worker(c,m);if(e.debug)try{f.postMessage({type:"init",debug:!0})}catch(p){}return{worker:f,dispose:()=>{if(!l){l=!0;try{URL.revokeObjectURL(c)}catch(p){}}},source:a}}export{s as buildMermaidCDNWorkerSource,l as createMermaidWorkerFromCDN};
@@ -1 +1 @@
1
- var t=Object.getOwnPropertyNames,r=(t,r,e)=>new Promise((n,a)=>{var o=t=>{try{l(e.next(t))}catch(r){a(r)}},i=t=>{try{l(e.throw(t))}catch(r){a(r)}},l=t=>t.done?n(t.value):Promise.resolve(t.value).then(o,i);l((e=e.apply(t,r)).next())});import e from"mermaid";var n,a,o=(n={"workers/mermaidParser.worker.js"(t){function n(t,n){return r(this,null,function*(){var r;const a=function(t,r){const e=`%%{init: {"theme": "${"dark"===r?"dark":"default"}"}}%%\n`;return t.trimStart().startsWith("%%{")?t:e+t}(t,n),o=e;if("function"==typeof o.parse)return yield null==(r=o.parse)?void 0:r.call(o,a),!0;throw new Error("mermaid.parse not available in worker")})}e.initialize({startOnLoad:!1,securityLevel:"strict",flowchart:{htmlLabels:!1}}),self.onmessage=t=>r(null,null,function*(){var e;const a=t.data,o=t=>self.postMessage(t),i=a.id;try{if("canParse"===a.action)return void o({id:i,ok:!0,result:yield n(a.payload.code,a.payload.theme)});if("findPrefix"===a.action)return void o({id:i,ok:!0,result:yield function(t,e){return r(this,null,function*(){const r=t.split("\n"),a=function(t){const r=/^(?:graph|flowchart|flowchart\s+tb|flowchart\s+lr|sequenceDiagram|gantt|classDiagram|stateDiagram(?:-v2)?|erDiagram|journey|pie|quadrantChart|timeline|xychart(?:-beta)?)\b/;for(let e=0;e<t.length;e++){const n=t[e].trim();if(n&&!n.startsWith("%%")&&r.test(n))return e}return-1}(r);if(-1===a)return null;const o=r.slice(0,a+1);yield n(o.join("\n"),e);let i=a+1,l=r.length,s=a+1,c=0;for(;i<=l&&c<12;){const t=Math.floor((i+l)/2),d=[...o,...r.slice(a+1,t)].join("\n");c++;try{yield n(d,e),s=t,i=t+1}catch(u){l=t-1}}return[...o,...r.slice(a+1,s)].join("\n")})}(a.payload.code,a.payload.theme)});o({id:i,ok:!1,error:"Unknown action"})}catch(l){o({id:i,ok:!1,error:null!=(e=null==l?void 0:l.message)?e:String(l)})}})}},function(){return a||(0,n[t(n)[0]])((a={exports:{}}).exports,a),a.exports});export default o();
1
+ var t=Object.getOwnPropertyNames,r=(t,r,e)=>new Promise((n,a)=>{var o=t=>{try{l(e.next(t))}catch(r){a(r)}},i=t=>{try{l(e.throw(t))}catch(r){a(r)}},l=t=>t.done?n(t.value):Promise.resolve(t.value).then(o,i);l((e=e.apply(t,r)).next())});import e from"mermaid";import{e as n}from"../mermaidSequenceSemicolons.js";var a,o,i=(a={"workers/mermaidParser.worker.js"(t){function a(t,a){return r(this,null,function*(){var r,o;const i=function(t,r){const e=`%%{init: {"theme": "${"dark"===r?"dark":"default"}"}}%%\n`;return t.trimStart().startsWith("%%{")?t:e+t}(t,a),l=e;if("function"==typeof l.parse){try{yield null==(r=l.parse)?void 0:r.call(l,i)}catch(s){const t=n(i);if(t===i)throw s;yield null==(o=l.parse)?void 0:o.call(l,t)}return!0}throw new Error("mermaid.parse not available in worker")})}e.initialize({startOnLoad:!1,securityLevel:"strict",flowchart:{htmlLabels:!1}}),self.onmessage=t=>r(null,null,function*(){var e;const n=t.data,o=t=>self.postMessage(t),i=n.id;try{if("canParse"===n.action)return void o({id:i,ok:!0,result:yield a(n.payload.code,n.payload.theme)});if("findPrefix"===n.action)return void o({id:i,ok:!0,result:yield function(t,e){return r(this,null,function*(){const r=t.split("\n"),n=function(t){const r=/^(?:graph|flowchart|flowchart\s+tb|flowchart\s+lr|sequenceDiagram|gantt|classDiagram|stateDiagram(?:-v2)?|erDiagram|journey|pie|quadrantChart|timeline|xychart(?:-beta)?)\b/;for(let e=0;e<t.length;e++){const n=t[e].trim();if(n&&!n.startsWith("%%")&&r.test(n))return e}return-1}(r);if(-1===n)return null;const o=r.slice(0,n+1);yield a(o.join("\n"),e);let i=n+1,l=r.length,s=n+1,c=0;for(;i<=l&&c<12;){const t=Math.floor((i+l)/2),d=[...o,...r.slice(n+1,t)].join("\n");c++;try{yield a(d,e),s=t,i=t+1}catch(u){l=t-1}}return[...o,...r.slice(n+1,s)].join("\n")})}(n.payload.code,n.payload.theme)});o({id:i,ok:!1,error:"Unknown action"})}catch(l){o({id:i,ok:!1,error:null!=(e=null==l?void 0:l.message)?e:String(l)})}})}},function(){return o||(0,a[t(a)[0]])((o={exports:{}}).exports,o),o.exports});export default i();
package/package.json CHANGED
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "name": "markstream-vue",
3
3
  "type": "module",
4
- "version": "1.0.3-beta.2",
5
- "description": "Vue/Nuxt streaming Markdown renderer for AI chat, SSE/WebSocket output, mobile WebView, docs sites, long documents, and optional Mermaid, KaTeX, Shiki, Monaco.",
4
+ "version": "1.0.3",
5
+ "description": "Vue/Nuxt streaming Markdown renderer for AI chat, LLM token streams, SSE/WebSocket output, incomplete Markdown, long documents, Mermaid, KaTeX, Shiki, and Monaco.",
6
6
  "author": "Simon He",
7
7
  "license": "MIT",
8
8
  "homepage": "https://markstream.simonhe.me/frameworks/vue",
@@ -17,19 +17,33 @@
17
17
  "markdown",
18
18
  "markdown-renderer",
19
19
  "streaming-markdown",
20
+ "streaming-markdown-renderer",
21
+ "markdown-streaming",
22
+ "ai-markdown-renderer",
20
23
  "ai-chat",
21
24
  "llm",
25
+ "llm-markdown",
26
+ "llm-streaming",
22
27
  "sse",
28
+ "sse-markdown",
23
29
  "websocket",
30
+ "websocket-markdown",
24
31
  "vue",
25
32
  "vue3",
26
33
  "nuxt",
27
34
  "vitepress",
28
35
  "vue-markdown",
36
+ "vue-streaming-markdown",
37
+ "nuxt-markdown",
38
+ "vitepress-markdown",
39
+ "incomplete-markdown",
29
40
  "mermaid",
41
+ "streaming-mermaid",
30
42
  "katex",
43
+ "streaming-katex",
31
44
  "shiki",
32
45
  "monaco-editor",
46
+ "streaming-code-blocks",
33
47
  "large-documents",
34
48
  "safe-html",
35
49
  "mobile-webview",