chatlab-cli 0.31.2 → 0.31.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/{chat-command-QPL4GNHP.mjs → chat-command-ZIXKNLSE.mjs} +15 -9
- package/dist/chat-command-ZIXKNLSE.mjs.map +1 -0
- package/dist/{chunk-OAXVKNPN.mjs → chunk-23AIEWCD.mjs} +2 -2
- package/dist/{chunk-F2NZ7HAY.mjs → chunk-3J7WTUEE.mjs} +2 -2
- package/dist/{chunk-GYPBWKAU.mjs → chunk-75FZ26HM.mjs} +896 -439
- package/dist/chunk-75FZ26HM.mjs.map +1 -0
- package/dist/{chunk-OQ6N4PDD.mjs → chunk-BLOBEOCG.mjs} +2 -2
- package/dist/{chunk-6JKKHPXY.mjs → chunk-DV4U34MR.mjs} +2 -2
- package/dist/{chunk-ZCXCHKQV.mjs → chunk-EINCXXWY.mjs} +3 -3
- package/dist/{chunk-3SZWD7UM.mjs → chunk-FDLLEDNW.mjs} +79 -20
- package/dist/chunk-FDLLEDNW.mjs.map +1 -0
- package/dist/{chunk-BSSR4ZYW.mjs → chunk-GZO3NAHC.mjs} +2130 -2018
- package/dist/chunk-GZO3NAHC.mjs.map +1 -0
- package/dist/{chunk-S5PQM5J4.mjs → chunk-MFOCDGCC.mjs} +17 -4
- package/dist/chunk-MFOCDGCC.mjs.map +1 -0
- package/dist/{chunk-64FKPYPJ.mjs → chunk-UIUEG7JB.mjs} +11 -11
- package/dist/{chunk-IK7GJTGY.mjs → chunk-YVNZ73O5.mjs} +147 -266
- package/dist/chunk-YVNZ73O5.mjs.map +1 -0
- package/dist/cli.mjs +8 -8
- package/dist/contacts-worker.mjs +2 -2
- package/dist/global-insight-worker.mjs +1 -1
- package/dist/{http-NOEWVWCP.mjs → http-WDG2OHOV.mjs} +11 -11
- package/dist/{import-RS3HW7ZM.mjs → import-4BDC37F7.mjs} +7 -7
- package/dist/index.mjs +11 -11
- package/dist/{mcp-7F3G47Z4.mjs → mcp-4KUVRGFF.mjs} +8 -8
- package/dist/people-relationships-worker.mjs +2 -2
- package/dist/semantic-index-worker.mjs +1 -1
- package/dist/{src-MNH5S423.mjs → src-ZOCLFBCJ.mjs} +28 -6
- package/dist/{stream-import-BPCHGRAN.mjs → stream-import-ERTT7U6V.mjs} +7 -7
- package/dist/{worker-runtime-TTAXGQ5R.mjs → worker-runtime-2TUZHV7W.mjs} +5 -5
- package/dist-web/assets/ActionToolsPanel-Dp-ojXjO.css +1 -0
- package/dist-web/assets/ActionToolsPanel.vue_vue_type_script_setup_true_lang-GgQ5ueMX.js +110 -0
- package/dist-web/assets/{BufferResource-Dh2kaMuP.js → BufferResource-DgKoy0Ii.js} +1 -1
- package/dist-web/assets/{CanvasRenderer-B8hHywwz.js → CanvasRenderer-CKpp71xg.js} +1 -1
- package/dist-web/assets/{EChartWordcloud-BXC_4nUP.js → EChartWordcloud-CSOuFvyM.js} +1 -1
- package/dist-web/assets/{Filter-Bap1KMW6.js → Filter-D32zqY5x.js} +1 -1
- package/dist-web/assets/{LoadingState.vue_vue_type_script_setup_true_lang-B2KAoiMG.js → LoadingState.vue_vue_type_script_setup_true_lang-DUAtrSZD.js} +1 -1
- package/dist-web/assets/{MessageExportModal-H3-LAaXY.js → MessageExportModal-BYLw4vZ8.js} +1 -1
- package/dist-web/assets/{PageHeader-CzTV_lyM.js → PageHeader-Dmu6cdAk.js} +1 -1
- package/dist-web/assets/{RelationshipGalaxyCanvas-C6ZoUZNc.js → RelationshipGalaxyCanvas-DsMOubHV.js} +3 -3
- package/dist-web/assets/{RelationshipGalaxyThreeCanvas-DV6B-7XB.js → RelationshipGalaxyThreeCanvas-Dh5HjVHr.js} +1 -1
- package/dist-web/assets/{RenderTargetSystem-Dpgyoac_.js → RenderTargetSystem-CovK4x_D.js} +1 -1
- package/dist-web/assets/{ThemeCard.vue_vue_type_script_setup_true_lang-BWJ6kuSC.js → ThemeCard.vue_vue_type_script_setup_true_lang-DhUfYrEx.js} +1 -1
- package/dist-web/assets/{TimeSelect.vue_vue_type_script_setup_true_lang--Tbo7p-l.js → TimeSelect.vue_vue_type_script_setup_true_lang-CaumhCAS.js} +1 -1
- package/dist-web/assets/{WebGLRenderer-DICnsAm5.js → WebGLRenderer-CawhbcYU.js} +1 -1
- package/dist-web/assets/{WebGPURenderer-Bf0gkRK9.js → WebGPURenderer-B7P1D2sA.js} +1 -1
- package/dist-web/assets/{annual-summary-time-range-CK0IIPsY.js → annual-summary-time-range-Bya4h2j6.js} +1 -1
- package/dist-web/assets/{base-D5T8QZ8b.js → base-ClGWE9aq.js} +1 -1
- package/dist-web/assets/{browserAll-DcoCy7xY.js → browserAll-CtQkc1DF.js} +1 -1
- package/dist-web/assets/{dateFormat-BDOkdsCR.js → dateFormat-Cfb89ZjM.js} +1 -1
- package/dist-web/assets/{electron-CmhzSjaH.js → electron-Brd7jS6W.js} +1 -1
- package/dist-web/assets/{fetch-CNz28Lv5.js → fetch-BJ3lnhzK.js} +1 -1
- package/dist-web/assets/{fetch-DfTM4Dah.js → fetch-BoB63ns8.js} +1 -1
- package/dist-web/assets/fetch-BtK7YvLp.js +1 -0
- package/dist-web/assets/{fetch-D71bG6Fc.js → fetch-CeREJiFL.js} +1 -1
- package/dist-web/assets/{fetch-C1mlq5VY.js → fetch-D2hvh7lO.js} +1 -1
- package/dist-web/assets/{fetch-DtcNaN3d.js → fetch-DVGCzZ0E.js} +1 -1
- package/dist-web/assets/{fetch-BddgpyKJ.js → fetch-DWoMmOlr.js} +1 -1
- package/dist-web/assets/{fetch-dI5w8lYN.js → fetch-DkfUUq-R.js} +1 -1
- package/dist-web/assets/{fetch-D8xv4lgE.js → fetch-Dr_Fjtvp.js} +1 -1
- package/dist-web/assets/{fetch-TATpgXht.js → fetch-u7ivV7Uy.js} +1 -1
- package/dist-web/assets/{index-CY5yJhCJ.js → index-BHnQaeQY.js} +1 -1
- package/dist-web/assets/{index-qZ7jnIna.js → index-BXaKyn8J.js} +2 -2
- package/dist-web/assets/{index-Dtbu8m1o.js → index-BzH9cnfy.js} +1 -1
- package/dist-web/assets/{index-Bs4ZX2-v.js → index-CuPE4SSh.js} +1 -1
- package/dist-web/assets/index-D-qNxFxp.js +173 -0
- package/dist-web/assets/index-D494nYee.js +64 -0
- package/dist-web/assets/index-D8Uq3_Dc.css +1 -0
- package/dist-web/assets/index-DBb03wVF.css +1 -0
- package/dist-web/assets/{index-DClxj4T2.js → index-DJ8kB4US.js} +2 -2
- package/dist-web/assets/{index-De3ImZb9.js → index-DNMWR2Vj.js} +1 -1
- package/dist-web/assets/{index-DphjBwbA.js → index-DSPls1YV.js} +1 -1
- package/dist-web/assets/{index-soX5gDgh.js → index-DcAqhCpS.js} +1 -1
- package/dist-web/assets/{index-a1ZrlsKo.js → index-DnkaYOFI.js} +1 -1
- package/dist-web/assets/index-_UKteDZB.js +25 -0
- package/dist-web/assets/index-gi0wgh0M.css +1 -0
- package/dist-web/assets/{index-Dp3gCHpK.js → index-w_1EjXiF.js} +1 -1
- package/dist-web/assets/{people-page-header-D93GTPBO.js → people-page-header-YGQM9G53.js} +1 -1
- package/dist-web/assets/{vendor-nuxt-ui-DUpPmItD.js → vendor-nuxt-ui-DmkGVKod.js} +2 -2
- package/dist-web/assets/{vendor-reka-ui-BLnO2MqY.js → vendor-reka-ui-BkhadcDj.js} +1 -1
- package/dist-web/assets/{web-H9T1dZys.js → web-zXxtk2KZ.js} +1 -1
- package/dist-web/assets/{webworkerAll-D1Kui8G8.js → webworkerAll-BzRoT-6m.js} +1 -1
- package/dist-web/index.html +4 -4
- package/package.json +1 -1
- package/dist/chat-command-QPL4GNHP.mjs.map +0 -1
- package/dist/chunk-3SZWD7UM.mjs.map +0 -1
- package/dist/chunk-BSSR4ZYW.mjs.map +0 -1
- package/dist/chunk-GYPBWKAU.mjs.map +0 -1
- package/dist/chunk-IK7GJTGY.mjs.map +0 -1
- package/dist/chunk-S5PQM5J4.mjs.map +0 -1
- package/dist-web/assets/ActionToolsPanel-CbWhu_Uv.css +0 -1
- package/dist-web/assets/ActionToolsPanel.vue_vue_type_script_setup_true_lang-CvvNqXuh.js +0 -110
- package/dist-web/assets/fetch-BJka-sCN.js +0 -1
- package/dist-web/assets/index-CAjUCtGD.css +0 -1
- package/dist-web/assets/index-CF59LLOG.js +0 -25
- package/dist-web/assets/index-CJ3WtSLo.js +0 -173
- package/dist-web/assets/index-CJS6FVuj.js +0 -64
- package/dist-web/assets/index-CsqMIyA9.css +0 -1
- package/dist-web/assets/index-CtmXho1w.css +0 -1
- /package/dist/{chunk-OAXVKNPN.mjs.map → chunk-23AIEWCD.mjs.map} +0 -0
- /package/dist/{chunk-F2NZ7HAY.mjs.map → chunk-3J7WTUEE.mjs.map} +0 -0
- /package/dist/{chunk-OQ6N4PDD.mjs.map → chunk-BLOBEOCG.mjs.map} +0 -0
- /package/dist/{chunk-6JKKHPXY.mjs.map → chunk-DV4U34MR.mjs.map} +0 -0
- /package/dist/{chunk-ZCXCHKQV.mjs.map → chunk-EINCXXWY.mjs.map} +0 -0
- /package/dist/{chunk-64FKPYPJ.mjs.map → chunk-UIUEG7JB.mjs.map} +0 -0
- /package/dist/{http-NOEWVWCP.mjs.map → http-WDG2OHOV.mjs.map} +0 -0
- /package/dist/{import-RS3HW7ZM.mjs.map → import-4BDC37F7.mjs.map} +0 -0
- /package/dist/{mcp-7F3G47Z4.mjs.map → mcp-4KUVRGFF.mjs.map} +0 -0
- /package/dist/{src-MNH5S423.mjs.map → src-ZOCLFBCJ.mjs.map} +0 -0
- /package/dist/{stream-import-BPCHGRAN.mjs.map → stream-import-ERTT7U6V.mjs.map} +0 -0
- /package/dist/{worker-runtime-TTAXGQ5R.mjs.map → worker-runtime-2TUZHV7W.mjs.map} +0 -0
|
@@ -12,4 +12,4 @@ Defaulting to \`null\`.`),null)}function V1(e){return to(e)&&!Number.isNaN(e)&&e
|
|
|
12
12
|
would route through Vue's \`toDisplayString\`, which JSON-stringifies
|
|
13
13
|
arrays — the live region would then announce literal \`[\`, quotes
|
|
14
14
|
and commas instead of the toast title and description.
|
|
15
|
-
`),(P(!0),ot(Ye,null,Co(_.value,(x,$)=>(P(),ot(Ye,{key:$},[Ae(ze(x),1)],64))),128))]),_:1},8,["aria-live"])):Ke("v-if",!0),u(i).viewport.value?(P(),E(cs,{key:1,to:u(i).viewport.value},[le(u(o),null,{default:w(()=>[le(u(H),j({ref:u(n),tabindex:"0"},C.$attrs,{as:C.as,"as-child":C.asChild,"data-state":C.open?"open":"closed","data-swipe-direction":u(i).swipeDirection.value,style:u(i).disableSwipe.value?void 0:{userSelect:"none",touchAction:"none"},onPointerdown:b[0]||(b[0]=Fe(x=>{u(i).disableSwipe.value||(s.value={x:x.clientX,y:x.clientY})},["left"])),onPointermove:b[1]||(b[1]=x=>{if(u(i).disableSwipe.value||!s.value)return;const $=x.clientX-s.value.x,q=x.clientY-s.value.y,T=!!c.value,O=["left","right"].includes(u(i).swipeDirection.value),R=["left","up"].includes(u(i).swipeDirection.value)?Math.min:Math.max,F=O?R(0,$):0,B=O?0:R(0,q),L=x.pointerType==="touch"?10:2,G={x:F,y:B},V={originalEvent:x,delta:G};T?(c.value=G,u(wl)(u(Kq),Y=>r("swipeMove",Y),V)):u(Od)(G,u(i).swipeDirection.value,L)?(c.value=G,u(wl)(u(Hq),Y=>r("swipeStart",Y),V),x.target.setPointerCapture(x.pointerId)):(Math.abs($)>L||Math.abs(q)>L)&&(s.value=null)}),onPointerup:b[2]||(b[2]=x=>{if(u(i).disableSwipe.value)return;const $=c.value,q=x.target;if(q.hasPointerCapture(x.pointerId)&&q.releasePointerCapture(x.pointerId),c.value=null,s.value=null,$){const T=x.currentTarget,O={originalEvent:x,delta:$};u(Od)($,u(i).swipeDirection.value,u(i).swipeThreshold.value)?u(wl)(u(Yq),R=>r("swipeEnd",R),O):u(wl)(u(Wq),R=>r("swipeCancel",R),O),T?.addEventListener("click",R=>R.preventDefault(),{once:!0})}})}),{default:w(()=>[M(C.$slots,"default",{remaining:h.value,duration:d.value})]),_:3},16,["as","as-child","data-state","data-swipe-direction","style"])]),_:3})],8,["to"])):Ke("v-if",!0)],64))}}),Jq=Gq,Xq=A({__name:"ToastClose",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"button"}},setup(e){const t=e,a=jq(),{forwardRef:r}=Q();return(n,l)=>(P(),E(Wp,{"as-child":""},{default:w(()=>[le(u(H),j(t,{ref:u(r),type:n.as==="button"?"button":void 0,onClick:u(a).onClose}),{default:w(()=>[M(n.$slots,"default")]),_:3},16,["type","onClick"])]),_:3}))}}),Qq=Xq,Zq=A({__name:"ToastAction",props:{altText:{type:String,required:!0},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(e){if(!e.altText)throw new Error("Missing prop `altText` expected on `ToastAction`");const{forwardRef:a}=Q();return(r,n)=>r.altText?(P(),E(Wp,{key:0,"alt-text":r.altText,"as-child":""},{default:w(()=>[le(Qq,{ref:u(a),as:r.as,"as-child":r.asChild},{default:w(()=>[M(r.$slots,"default")]),_:3},8,["as","as-child"])]),_:3},8,["alt-text"])):Ke("v-if",!0)}}),HE=Zq,eP=A({__name:"ToastDescription",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(e){const t=e;return Q(),(a,r)=>(P(),E(u(H),ve(me(t)),{default:w(()=>[M(a.$slots,"default")]),_:3},16))}}),KE=eP,tP=A({__name:"ToastPortal",props:{to:{type:null,required:!1},disabled:{type:Boolean,required:!1},defer:{type:Boolean,required:!1},forceMount:{type:Boolean,required:!1}},setup(e){const t=e;return(a,r)=>(P(),E(u(ja),ve(me(t)),{default:w(()=>[M(a.$slots,"default")]),_:3},16))}}),WE=tP,aP=A({__name:"ToastRoot",props:{defaultOpen:{type:Boolean,required:!1,default:!0},forceMount:{type:Boolean,required:!1},type:{type:String,required:!1,default:"foreground"},open:{type:Boolean,required:!1,default:void 0},duration:{type:Number,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"li"}},emits:["escapeKeyDown","pause","resume","swipeStart","swipeMove","swipeCancel","swipeEnd","update:open"],setup(e,{emit:t}){const a=e,r=t,{forwardRef:n}=Q(),l=qe(a,"open",r,{defaultValue:a.defaultOpen,passive:a.open===void 0});return(o,i)=>(P(),E(u(Bt),{present:o.forceMount||u(l)},{default:w(()=>[le(Jq,j({ref:u(n),open:u(l),type:o.type,as:o.as,"as-child":o.asChild,duration:o.duration},o.$attrs,{onClose:i[0]||(i[0]=s=>l.value=!1),onPause:i[1]||(i[1]=s=>r("pause")),onResume:i[2]||(i[2]=s=>r("resume")),onEscapeKeyDown:i[3]||(i[3]=s=>r("escapeKeyDown",s)),onSwipeStart:i[4]||(i[4]=s=>{r("swipeStart",s),s.defaultPrevented||s.currentTarget.setAttribute("data-swipe","start")}),onSwipeMove:i[5]||(i[5]=s=>{if(r("swipeMove",s),!s.defaultPrevented){const{x:c,y:d}=s.detail.delta,f=s.currentTarget;f.setAttribute("data-swipe","move"),f.style.setProperty("--reka-toast-swipe-move-x",`${c}px`),f.style.setProperty("--reka-toast-swipe-move-y",`${d}px`)}}),onSwipeCancel:i[6]||(i[6]=s=>{if(r("swipeCancel",s),!s.defaultPrevented){const c=s.currentTarget;c.setAttribute("data-swipe","cancel"),c.style.removeProperty("--reka-toast-swipe-move-x"),c.style.removeProperty("--reka-toast-swipe-move-y"),c.style.removeProperty("--reka-toast-swipe-end-x"),c.style.removeProperty("--reka-toast-swipe-end-y")}}),onSwipeEnd:i[7]||(i[7]=s=>{if(r("swipeEnd",s),!s.defaultPrevented){const{x:c,y:d}=s.detail.delta,f=s.currentTarget;f.setAttribute("data-swipe","end"),f.style.removeProperty("--reka-toast-swipe-move-x"),f.style.removeProperty("--reka-toast-swipe-move-y"),f.style.setProperty("--reka-toast-swipe-end-x",`${c}px`),f.style.setProperty("--reka-toast-swipe-end-y",`${d}px`),l.value=!1}})}),{default:w(({remaining:s,duration:c})=>[M(o.$slots,"default",{remaining:s,duration:c,open:u(l)})]),_:3},16,["open","type","as","as-child","duration"])]),_:3},8,["present"]))}}),YE=aP,rP=A({__name:"ToastTitle",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(e){const t=e;return Q(),(a,r)=>(P(),E(u(H),ve(me(t)),{default:w(()=>[M(a.$slots,"default")]),_:3},16))}}),UE=rP,nP=A({__name:"FocusProxy",emits:["focusFromOutsideViewport"],setup(e,{emit:t}){const a=t,r=Ko();return(n,l)=>(P(),E(u(ll),{tabindex:"0",style:{position:"fixed"},onFocus:l[0]||(l[0]=o=>{const i=o.relatedTarget;!u(r).viewport.value?.contains(i)&&a("focusFromOutsideViewport")})},{default:w(()=>[M(n.$slots,"default")]),_:3}))}}),Td=nP,lP=A({inheritAttrs:!1,__name:"ToastViewport",props:{hotkey:{type:Array,required:!1,default:()=>["F8"]},label:{type:[String,Function],required:!1,default:"Notifications ({hotkey})"},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"ol"}},setup(e){const t=e,{hotkey:a,label:r}=Se(t),{forwardRef:n,currentElement:l}=Q(),{CollectionSlot:o,getItems:i}=nt(),s=Ko(),c=S(()=>s.toastCount.value>0),d=k(),f=k(),p=/Key/g,v=/Digit/g,h=S(()=>a.value.join("+").replace(p,"").replace(v,""));bs(a.value,()=>{l.value.focus()}),xe(()=>{s.onViewportChange(l.value)}),vt(g=>{const y=l.value;if(c.value&&y){const _=()=>{if(!s.isClosePausedRef.value){const q=new CustomEvent(Zi);y.dispatchEvent(q),s.isClosePausedRef.value=!0}},C=()=>{if(s.isClosePausedRef.value){const q=new CustomEvent(es);y.dispatchEvent(q),s.isClosePausedRef.value=!1}},b=q=>{!y.contains(q.relatedTarget)&&C()},x=()=>{y.contains(Ge())||C()},$=q=>{const T=q.altKey||q.ctrlKey||q.metaKey;if(q.key==="Tab"&&!T){const R=Ge(),F=q.shiftKey;if(q.target===y&&F){d.value?.focus();return}const G=m({tabbingDirection:F?"backwards":"forwards"}),V=G.findIndex(Y=>Y===R);Tl(G.slice(V+1))?q.preventDefault():F?d.value?.focus():f.value?.focus()}};y.addEventListener("focusin",_),y.addEventListener("focusout",b),y.addEventListener("pointermove",_),y.addEventListener("pointerleave",x),y.addEventListener("keydown",$),window.addEventListener("blur",_),window.addEventListener("focus",C),g(()=>{y.removeEventListener("focusin",_),y.removeEventListener("focusout",b),y.removeEventListener("pointermove",_),y.removeEventListener("pointerleave",x),y.removeEventListener("keydown",$),window.removeEventListener("blur",_),window.removeEventListener("focus",C)})}});function m({tabbingDirection:g}){const _=i().map(C=>C.ref).map(C=>{const b=[C,...Os(C)];return g==="forwards"?b:b.reverse()});return(g==="forwards"?_.reverse():_).flat()}return(g,y)=>(P(),E(u(Hg),{role:"region","aria-label":typeof u(r)=="string"?u(r).replace("{hotkey}",h.value):u(r)(h.value),tabindex:"-1",style:Ot({pointerEvents:c.value?void 0:"none"})},{default:w(()=>[c.value?(P(),E(Td,{key:0,ref:_=>{_&&(d.value=u(ht)(_))},onFocusFromOutsideViewport:y[0]||(y[0]=()=>{const _=m({tabbingDirection:"forwards"});u(Tl)(_)})},null,512)):Ke("v-if",!0),le(u(o),null,{default:w(()=>[le(u(H),j({ref:u(n),tabindex:"-1",as:g.as,"as-child":g.asChild},g.$attrs),{default:w(()=>[M(g.$slots,"default")]),_:3},16,["as","as-child"])]),_:3}),c.value?(P(),E(Td,{key:1,ref:_=>{_&&(f.value=u(ht)(_))},onFocusFromOutsideViewport:y[1]||(y[1]=()=>{const _=m({tabbingDirection:"backwards"});u(Tl)(_)})},null,512)):Ke("v-if",!0)]),_:3},8,["aria-label","style"]))}}),jE=lP,oP=A({__name:"TooltipArrow",props:{width:{type:Number,required:!1,default:10},height:{type:Number,required:!1,default:5},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"svg"}},setup(e){const t=e;return Q(),(a,r)=>(P(),E(u(dn),ve(me(t)),{default:w(()=>[M(a.$slots,"default")]),_:3},16))}}),zE=oP;const[Wo,iP]=we("TooltipProvider");var sP=A({inheritAttrs:!1,__name:"TooltipProvider",props:{delayDuration:{type:Number,required:!1,default:700},skipDelayDuration:{type:Number,required:!1,default:300},disableHoverableContent:{type:Boolean,required:!1,default:!1},disableClosingTrigger:{type:Boolean,required:!1},disabled:{type:Boolean,required:!1},ignoreNonKeyboardFocus:{type:Boolean,required:!1,default:!1},content:{type:Object,required:!1}},setup(e){const t=e,{delayDuration:a,skipDelayDuration:r,disableHoverableContent:n,disableClosingTrigger:l,ignoreNonKeyboardFocus:o,disabled:i,content:s}=Se(t);Q();const c=k(!0),d=k(!1),{start:f,stop:p}=gs(()=>{c.value=!0},r,{immediate:!1});return iP({isOpenDelayed:c,delayDuration:a,onOpen(){p(),c.value=!1},onClose(){f()},isPointerInTransitRef:d,disableHoverableContent:n,disableClosingTrigger:l,disabled:i,ignoreNonKeyboardFocus:o,content:s}),(v,h)=>M(v.$slots,"default")}}),GE=sP;const Up="tooltip.open",[Yo,uP]=we("TooltipRoot");var dP=A({__name:"TooltipRoot",props:{defaultOpen:{type:Boolean,required:!1,default:!1},open:{type:Boolean,required:!1,default:void 0},delayDuration:{type:Number,required:!1,default:void 0},disableHoverableContent:{type:Boolean,required:!1,default:void 0},disableClosingTrigger:{type:Boolean,required:!1,default:void 0},disabled:{type:Boolean,required:!1,default:void 0},ignoreNonKeyboardFocus:{type:Boolean,required:!1,default:void 0}},emits:["update:open"],setup(e,{emit:t}){const a=e,r=t;Q();const n=Wo(),l=S(()=>a.disableHoverableContent??n.disableHoverableContent.value),o=S(()=>a.disableClosingTrigger??n.disableClosingTrigger.value),i=S(()=>a.disabled??n.disabled.value),s=S(()=>a.delayDuration??n.delayDuration.value),c=S(()=>a.ignoreNonKeyboardFocus??n.ignoreNonKeyboardFocus.value),d=qe(a,"open",r,{defaultValue:a.defaultOpen,passive:a.open===void 0});ce(d,C=>{n.onClose&&(C?(n.onOpen(),document.dispatchEvent(new CustomEvent(Up))):n.onClose())});const f=k(!1),p=k(),v=S(()=>d.value?f.value?"delayed-open":"instant-open":"closed"),{start:h,stop:m}=gs(()=>{f.value=!0,d.value=!0},s,{immediate:!1});function g(){m(),f.value=!1,d.value=!0}function y(){m(),d.value=!1}function _(){h()}return uP({contentId:"",open:d,stateAttribute:v,trigger:p,onTriggerChange(C){p.value=C},onTriggerEnter(){n.isOpenDelayed.value?_():g()},onTriggerLeave(){l.value?y():m()},onOpen:g,onClose:y,disableHoverableContent:l,disableClosingTrigger:o,disabled:i,ignoreNonKeyboardFocus:c}),(C,b)=>(P(),E(u(Sr),null,{default:w(()=>[M(C.$slots,"default",{open:u(d)})]),_:3}))}}),JE=dP,cP=A({__name:"TooltipContentImpl",props:{ariaLabel:{type:String,required:!1},asChild:{type:Boolean,required:!1,default:void 0},as:{type:null,required:!1},side:{type:null,required:!1},sideOffset:{type:Number,required:!1},align:{type:null,required:!1},alignOffset:{type:Number,required:!1},avoidCollisions:{type:Boolean,required:!1,default:void 0},collisionBoundary:{type:null,required:!1},collisionPadding:{type:[Number,Object],required:!1},arrowPadding:{type:Number,required:!1},sticky:{type:String,required:!1},hideWhenDetached:{type:Boolean,required:!1,default:void 0},positionStrategy:{type:String,required:!1},updatePositionStrategy:{type:String,required:!1}},emits:["escapeKeyDown","pointerDownOutside"],setup(e,{emit:t}){const a=e,r=t,n=Yo(),l=Wo(),{forwardRef:o,currentElement:i}=Q(),s=S(()=>a.ariaLabel||i.value?.textContent),c=S(()=>{const{ariaLabel:d,...f}=a;return mf(f,l.content.value??{},{side:"top",sideOffset:0,align:"center",avoidCollisions:!0,collisionBoundary:[],collisionPadding:0,arrowPadding:0,sticky:"partial",hideWhenDetached:!1})});return xe(()=>{pt(window,"scroll",d=>{d.target?.contains(n.trigger.value)&&n.onClose()},{capture:!0}),pt(window,Up,n.onClose)}),(d,f)=>(P(),E(u(xr),{"as-child":"","disable-outside-pointer-events":!1,onEscapeKeyDown:f[0]||(f[0]=p=>r("escapeKeyDown",p)),onPointerDownOutside:f[1]||(f[1]=p=>{u(n).disableClosingTrigger.value&&u(n).trigger.value?.contains(p.target)&&p.preventDefault(),r("pointerDownOutside",p)}),onFocusOutside:f[2]||(f[2]=Fe(()=>{},["prevent"])),onDismiss:f[3]||(f[3]=p=>u(n).onClose())},{default:w(()=>[le(u(un),j({ref:u(o),"data-state":u(n).stateAttribute.value},{...d.$attrs,...c.value},{style:{"--reka-tooltip-content-transform-origin":"var(--reka-popper-transform-origin)","--reka-tooltip-content-available-width":"var(--reka-popper-available-width)","--reka-tooltip-content-available-height":"var(--reka-popper-available-height)","--reka-tooltip-trigger-width":"var(--reka-popper-anchor-width)","--reka-tooltip-trigger-height":"var(--reka-popper-anchor-height)"}}),{default:w(()=>[M(d.$slots,"default"),le(u(ll),{id:u(n).contentId,role:"tooltip"},{default:w(()=>[Ae(ze(s.value),1)]),_:1},8,["id"])]),_:3},16,["data-state"])]),_:3}))}}),jp=cP,fP=A({__name:"TooltipContentHoverable",props:{ariaLabel:{type:String,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1},side:{type:null,required:!1},sideOffset:{type:Number,required:!1},align:{type:null,required:!1},alignOffset:{type:Number,required:!1},avoidCollisions:{type:Boolean,required:!1},collisionBoundary:{type:null,required:!1},collisionPadding:{type:[Number,Object],required:!1},arrowPadding:{type:Number,required:!1},sticky:{type:String,required:!1},hideWhenDetached:{type:Boolean,required:!1},positionStrategy:{type:String,required:!1},updatePositionStrategy:{type:String,required:!1}},setup(e){const a=oa(e),{forwardRef:r,currentElement:n}=Q(),{trigger:l,onClose:o}=Yo(),i=Wo(),{isPointerInTransit:s,onPointerExit:c}=Lf(l,n);return i.isPointerInTransitRef=s,c(()=>{o()}),(d,f)=>(P(),E(jp,j({ref:u(r)},u(a)),{default:w(()=>[M(d.$slots,"default")]),_:3},16))}}),pP=fP,vP=A({__name:"TooltipContent",props:{forceMount:{type:Boolean,required:!1},ariaLabel:{type:String,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1},side:{type:null,required:!1},sideOffset:{type:Number,required:!1},align:{type:null,required:!1},alignOffset:{type:Number,required:!1},avoidCollisions:{type:Boolean,required:!1},collisionBoundary:{type:null,required:!1},collisionPadding:{type:[Number,Object],required:!1},arrowPadding:{type:Number,required:!1},sticky:{type:String,required:!1},hideWhenDetached:{type:Boolean,required:!1},positionStrategy:{type:String,required:!1},updatePositionStrategy:{type:String,required:!1}},emits:["escapeKeyDown","pointerDownOutside"],setup(e,{emit:t}){const a=e,r=t,n=Yo(),l=Rt(a,r),{forwardRef:o}=Q();return(i,s)=>(P(),E(u(Bt),{present:i.forceMount||u(n).open.value},{default:w(()=>[(P(),E(_r(u(n).disableHoverableContent.value?jp:pP),j({ref:u(o)},u(l)),{default:w(()=>[M(i.$slots,"default")]),_:3},16))]),_:3},8,["present"]))}}),XE=vP,hP=A({__name:"TooltipPortal",props:{to:{type:null,required:!1},disabled:{type:Boolean,required:!1},defer:{type:Boolean,required:!1},forceMount:{type:Boolean,required:!1}},setup(e){const t=e;return(a,r)=>(P(),E(u(ja),ve(me(t)),{default:w(()=>[M(a.$slots,"default")]),_:3},16))}}),QE=hP,mP=A({__name:"TooltipTrigger",props:{reference:{type:null,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"button"}},setup(e){const t=e,a=Yo(),r=Wo();a.contentId||=je(void 0,"reka-tooltip-content");const{forwardRef:n,currentElement:l}=Q(),o=k(!1),i=k(!1),s=S(()=>a.disabled.value?{}:{click:m,focus:v,pointermove:f,pointerleave:p,pointerdown:d,blur:h});xe(()=>{a.onTriggerChange(l.value)});function c(){setTimeout(()=>{o.value=!1},1)}function d(){a.open&&!a.disableClosingTrigger.value&&a.onClose(),o.value=!0,document.addEventListener("pointerup",c,{once:!0})}function f(g){g.pointerType!=="touch"&&!i.value&&!r.isPointerInTransitRef.value&&(a.onTriggerEnter(),i.value=!0)}function p(){a.onTriggerLeave(),i.value=!1}function v(g){o.value||a.ignoreNonKeyboardFocus.value&&!g.target.matches?.(":focus-visible")||a.onOpen()}function h(){a.onClose()}function m(){a.disableClosingTrigger.value||a.onClose()}return(g,y)=>(P(),E(u(qr),{"as-child":"",reference:g.reference},{default:w(()=>[le(u(H),j({ref:u(n),"aria-describedby":u(a).open.value?u(a).contentId:void 0,"data-state":u(a).stateAttribute.value,as:g.as,"as-child":t.asChild,"data-grace-area-trigger":""},rh(s.value)),{default:w(()=>[M(g.$slots,"default")]),_:3},16,["aria-describedby","data-state","as","as-child"])]),_:3},8,["reference"]))}}),ZE=mP;function yP(e){function t(r){return Array.isArray(e.date.value)?e.date.value.some(n=>He(n,r)):e.date.value?He(e.date.value,r):!1}const a=S(()=>{if(Array.isArray(e.date.value)){if(!e.date.value.length)return!1;for(const r of e.date.value)if(e.isYearDisabled?.(r)||e.isYearUnavailable?.(r))return!0}else{if(!e.date.value)return!1;if(e.isYearDisabled?.(e.date.value)||e.isYearUnavailable?.(e.date.value))return!0}return!1});return{isYearSelected:t,isInvalid:a}}function zp(e){const t=Ms(e.locale.value),a=v=>typeof v=="function"?v:v?.value,r=S(()=>{const v={calendar:e.placeholder.value.calendar.identifier};return e.placeholder.value.calendar.identifier==="gregory"&&e.placeholder.value.era==="BC"&&(v.era="short"),v}),n=k(rr({dateObj:e.placeholder.value,yearsPerPage:e.yearsPerPage.value}));function l(v){return!!(a(e.isYearDisabled)?.(v)||e.disabled.value||e.maxValue.value&&ta(_a(v),e.maxValue.value)||e.minValue.value&&Dt(hr(v),e.minValue.value))}const o=v=>!!a(e.isYearUnavailable)?.(v),i=v=>{if(!e.maxValue.value)return!1;if(e.disabled.value)return!0;const h=n.value.cells.at(-1);if(v||e.nextPage.value){const g=(v||e.nextPage.value)(h);return ta(_a(g),e.maxValue.value)}const m=_a(h.add({years:1}));return ta(m,e.maxValue.value)},s=v=>{if(!e.minValue.value)return!1;if(e.disabled.value)return!0;const h=n.value.value;if(v||e.prevPage.value){const g=(v||e.prevPage.value)(h);return Dt(hr(g),e.minValue.value)}const m=hr(h.subtract({years:1}));return Dt(m,e.minValue.value)},c=v=>{const h=n.value.value;if(v||e.nextPage.value){const g=(v||e.nextPage.value)(h);n.value=rr({dateObj:g,yearsPerPage:e.yearsPerPage.value,decadeAligned:!1}),e.placeholder.value=g.set({month:e.placeholder.value.month,day:e.placeholder.value.day});return}const m=h.add({years:e.yearsPerPage.value});n.value=rr({dateObj:m,yearsPerPage:e.yearsPerPage.value,decadeAligned:!1}),e.placeholder.value=m.set({month:e.placeholder.value.month,day:e.placeholder.value.day})},d=v=>{const h=n.value.value;if(v||e.prevPage.value){const g=(v||e.prevPage.value)(h);n.value=rr({dateObj:g,yearsPerPage:e.yearsPerPage.value,decadeAligned:!1}),e.placeholder.value=g.set({month:e.placeholder.value.month,day:e.placeholder.value.day});return}const m=h.subtract({years:e.yearsPerPage.value});n.value=rr({dateObj:m,yearsPerPage:e.yearsPerPage.value,decadeAligned:!1}),e.placeholder.value=m.set({month:e.placeholder.value.month,day:e.placeholder.value.day})};ce(e.placeholder,v=>{const h=n.value.value,m=n.value.cells.at(-1);v.year>=h.year&&v.year<=m.year||(n.value=rr({dateObj:v,yearsPerPage:e.yearsPerPage.value}))}),ce([e.locale,e.yearsPerPage],()=>{t.setLocale(e.locale.value),n.value=rr({dateObj:e.placeholder.value,yearsPerPage:e.yearsPerPage.value})});const f=S(()=>{e.locale.value!==t.getLocale()&&t.setLocale(e.locale.value);const v=n.value.cells[0],h=n.value.cells.at(-1);return`${t.fullYear(tt(v),r.value)} - ${t.fullYear(tt(h),r.value)}`}),p=S(()=>`${e.calendarLabel.value??"Year Picker"}, ${f.value}`);return{isYearDisabled:l,isYearUnavailable:o,isNextButtonDisabled:i,isPrevButtonDisabled:s,grid:n,formatter:t,nextPage:c,prevPage:d,headingValue:f,fullCalendarLabel:p}}const gP={style:{border:"0px",clip:"rect(0px, 0px, 0px, 0px)","clip-path":"inset(50%)",height:"1px",margin:"-1px",overflow:"hidden",padding:"0px",position:"absolute","white-space":"nowrap",width:"1px"}},bP={role:"heading","aria-level":"2"},[mn,_P]=we("YearPickerRoot");var CP=A({__name:"YearPickerRoot",props:{defaultValue:{type:null,required:!1,default:void 0},defaultPlaceholder:{type:null,required:!1},placeholder:{type:null,required:!1,default:void 0},preventDeselect:{type:Boolean,required:!1,default:!1},calendarLabel:{type:String,required:!1},maxValue:{type:null,required:!1},minValue:{type:null,required:!1},locale:{type:String,required:!1},disabled:{type:Boolean,required:!1,default:!1},readonly:{type:Boolean,required:!1,default:!1},initialFocus:{type:Boolean,required:!1,default:!1},isYearDisabled:{type:Function,required:!1,default:void 0},isYearUnavailable:{type:Function,required:!1,default:void 0},dir:{type:String,required:!1},nextPage:{type:Function,required:!1},prevPage:{type:Function,required:!1},modelValue:{type:null,required:!1},multiple:{type:Boolean,required:!1,default:!1},yearsPerPage:{type:Number,required:!1,default:12},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"div"}},emits:["update:modelValue","update:placeholder"],setup(e,{emit:t}){const a=e,r=t,{disabled:n,readonly:l,initialFocus:o,multiple:i,minValue:s,maxValue:c,preventDeselect:d,isYearDisabled:f,isYearUnavailable:p,calendarLabel:v,defaultValue:h,nextPage:m,prevPage:g,dir:y,locale:_,yearsPerPage:C}=Se(a),{primitiveElement:b,currentElement:x}=Xe(),$=wr(_),q=At(y),T=je(void 0,"reka-year-picker-heading"),O=qe(a,"modelValue",r,{defaultValue:h.value,passive:a.modelValue===void 0}),R=rn({defaultPlaceholder:a.placeholder,defaultValue:O.value,locale:a.locale}),F=qe(a,"placeholder",r,{defaultValue:a.defaultPlaceholder??R.copy(),passive:a.placeholder===void 0});function B(ie){F.value=ie.copy()}const{fullCalendarLabel:L,headingValue:G,isYearDisabled:V,isYearUnavailable:Y,isNextButtonDisabled:Z,isPrevButtonDisabled:J,nextPage:fe,prevPage:oe,formatter:he,grid:_e}=zp({locale:$,placeholder:F,minValue:s,maxValue:c,disabled:n,yearsPerPage:C,isYearDisabled:f,isYearUnavailable:p,calendarLabel:v,nextPage:m,prevPage:g}),{isInvalid:Oe,isYearSelected:Pe}=yP({date:O,isYearDisabled:V,isYearUnavailable:Y});ce(O,ie=>{if(Array.isArray(ie)&&ie.length){const ee=ie.at(-1);ee&&!He(F.value,ee)&&B(ee)}else!Array.isArray(ie)&&ie&&!He(F.value,ie)&&B(ie)});function Ne(ie,ee){return ee?ie.copy().set({month:ee.month,day:ee.day}):ie.copy()}function ge(ie){if(i.value){if(!O.value)O.value=[Ne(ie,F.value)];else if(Array.isArray(O.value)){const ee=O.value.findIndex(se=>He(se,ie));if(ee===-1)O.value=[...O.value,Ne(ie,F.value)];else if(!d.value){const se=O.value.filter(ue=>!He(ue,ie));if(!se.length){F.value=Ne(ie,O.value[ee]),O.value=void 0;return}O.value=se.map(ue=>ue.copy())}}}else{if(!O.value){O.value=Ne(ie,F.value);return}!d.value&&He(O.value,ie)?(F.value=Ne(ie,O.value),O.value=void 0):O.value=Ne(ie,O.value)}}return xe(()=>{o.value&&nn(x.value)}),_P({isYearUnavailable:Y,dir:q,isYearDisabled:V,locale:$,formatter:he,modelValue:O,placeholder:F,disabled:n,initialFocus:o,grid:_e,multiple:i,readonly:l,preventDeselect:d,fullCalendarLabel:L,headingValue:G,headingId:T,isInvalid:Oe,isYearSelected:Pe,isNextButtonDisabled:Z,isPrevButtonDisabled:J,nextPage:fe,prevPage:oe,parentElement:x,onPlaceholderChange:B,onYearChange:ge,minValue:s,maxValue:c,yearsPerPage:C}),(ie,ee)=>(P(),E(u(H),{ref_key:"primitiveElement",ref:b,as:ie.as,"as-child":ie.asChild,"aria-label":u(L),"data-readonly":u(l)?"":void 0,"data-disabled":u(n)?"":void 0,"data-invalid":u(Oe)?"":void 0,dir:u(q)},{default:w(()=>[M(ie.$slots,"default",{date:u(F),grid:u(_e),locale:u($),modelValue:u(O)}),$t("div",gP,[$t("div",bP,ze(u(L)),1)])]),_:3},8,["as","as-child","aria-label","data-readonly","data-disabled","data-invalid","dir"]))}}),wP=CP,xP=A({__name:"YearPickerCell",props:{date:{type:null,required:!0},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"td"}},setup(e){const t=mn();return(a,r)=>(P(),E(u(H),{as:a.as,"as-child":a.asChild,role:"gridcell","aria-selected":u(t).isYearSelected(a.date)?!0:void 0,"aria-disabled":u(t).isYearDisabled(a.date)||u(t).isYearUnavailable?.(a.date),"data-disabled":u(t).isYearDisabled(a.date)?"":void 0},{default:w(()=>[M(a.$slots,"default")]),_:3},8,["as","as-child","aria-selected","aria-disabled","data-disabled"]))}}),SP=xP,qP=A({__name:"YearPickerCellTrigger",props:{year:{type:null,required:!0},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"div"}},setup(e){const t=e,a=Gt(),r=mn(),{primitiveElement:n}=Xe(),l=S(()=>(r.locale.value,r.formatter.fullYear(tt(t.year)))),o=S(()=>(r.locale.value,r.formatter.custom(tt(t.year),{year:"numeric"}))),i=S(()=>r.isYearUnavailable?.(t.year)??!1),s=S(()=>{const m=lt(an(la()),t.year.calendar);return He(t.year,m)}),c=S(()=>r.isYearDisabled(t.year)),d=S(()=>!r.disabled.value&&He(t.year,r.placeholder.value)),f=S(()=>r.isYearSelected(t.year));function p(m){r.readonly.value||r.isYearDisabled(m)||r.isYearUnavailable?.(m)||r.onYearChange(m)}function v(){c.value||p(t.year)}function h(m){if(c.value)return;m.preventDefault(),m.stopPropagation();const g=r.parentElement.value,y=r.dir.value==="rtl"?-1:1;switch(m.code){case a.ARROW_RIGHT:_(t.year,y);break;case a.ARROW_LEFT:_(t.year,-y);break;case a.ARROW_UP:_(t.year,-4);break;case a.ARROW_DOWN:_(t.year,4);break;case a.PAGE_UP:C(-1);break;case a.PAGE_DOWN:C(1);break;case a.ENTER:case a.SPACE_CODE:p(t.year)}function _(b,x,$=0){if($>48)return;const q=b.add({years:x});if(r.minValue.value&&hr(q).compare(r.minValue.value)<0||r.maxValue.value&&_a(q).compare(r.maxValue.value)>0)return;const T=g.querySelector(`[data-value='${q.toString()}']`);if(!T){if(x>0){if(r.isNextButtonDisabled())return;r.nextPage()}else{if(r.isPrevButtonDisabled())return;r.prevPage()}Ce(()=>{_(b,x,$+1)});return}if(T&&T.hasAttribute("data-disabled"))return _(q,x,$+1);r.onPlaceholderChange(q),T?.focus()}function C(b){const x=r.yearsPerPage.value,$=t.year.add({years:b*x});if(!(r.minValue.value&&hr($).compare(r.minValue.value)<0||r.maxValue.value&&_a($).compare(r.maxValue.value)>0)){if(b>0){if(r.isNextButtonDisabled())return;r.nextPage()}else{if(r.isPrevButtonDisabled())return;r.prevPage()}Ce(()=>{const q=g.querySelector(`[data-value='${$.toString()}']`);if(q&&!q.hasAttribute("data-disabled")){r.onPlaceholderChange($),q?.focus();return}(!q||q.hasAttribute("data-disabled"))&&_($,b>0?1:-1,1)})}}}return(m,g)=>(P(),E(u(H),{ref_key:"primitiveElement",ref:n,as:t.as,"as-child":t.asChild,role:"button","aria-label":o.value,"data-reka-year-picker-cell-trigger":"","aria-disabled":c.value||i.value?!0:void 0,"data-selected":f.value?"":void 0,"data-value":m.year.toString(),"data-disabled":c.value?"":void 0,"data-unavailable":i.value?"":void 0,"data-today":s.value?"":void 0,"data-focused":d.value?"":void 0,tabindex:d.value?0:c.value?void 0:-1,onClick:v,onKeydown:[at(h,["up","down","left","right","space","enter","page-up","page-down"]),g[0]||(g[0]=at(Fe(()=>{},["prevent"]),["enter"]))]},{default:w(()=>[M(m.$slots,"default",{yearValue:l.value,disabled:c.value,today:s.value,selected:f.value,unavailable:i.value},()=>[Ae(ze(l.value),1)])]),_:3},8,["as","as-child","aria-label","aria-disabled","data-selected","data-value","data-disabled","data-unavailable","data-today","data-focused","tabindex"]))}}),PP=qP,DP=A({__name:"YearPickerGrid",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"table"}},setup(e){const t=e,a=mn(),r=S(()=>a.disabled.value?!0:void 0),n=S(()=>a.readonly.value?!0:void 0);return(l,o)=>(P(),E(u(H),j(t,{tabindex:"-1",role:"application","aria-labelledby":u(a).headingId,"aria-readonly":n.value,"aria-disabled":r.value,"data-readonly":n.value&&"","data-disabled":r.value&&""}),{default:w(()=>[M(l.$slots,"default")]),_:3},16,["aria-labelledby","aria-readonly","aria-disabled","data-readonly","data-disabled"]))}}),EP=DP,$P=A({__name:"YearPickerGridBody",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"tbody"}},setup(e){const t=e;return(a,r)=>(P(),E(u(H),ve(me(t)),{default:w(()=>[M(a.$slots,"default")]),_:3},16))}}),AP=$P,MP=A({__name:"YearPickerGridRow",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"tr"}},setup(e){const t=e;return(a,r)=>(P(),E(u(H),j(t,{role:"row"}),{default:w(()=>[M(a.$slots,"default")]),_:3},16))}}),OP=MP,TP=A({__name:"YearPickerHeader",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"div"}},setup(e){const t=e;return(a,r)=>(P(),E(u(H),ve(me(t)),{default:w(()=>[M(a.$slots,"default")]),_:3},16))}}),IP=TP,RP=A({__name:"YearPickerHeading",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"div"}},setup(e){const t=e,a=mn();return(r,n)=>(P(),E(u(H),j(t,{id:u(a).headingId,role:"heading","aria-level":"2","data-disabled":u(a).disabled.value?"":void 0}),{default:w(()=>[M(r.$slots,"default",{headingValue:u(a).headingValue.value},()=>[Ae(ze(u(a).headingValue.value),1)])]),_:3},16,["id","data-disabled"]))}}),BP=RP,kP=A({__name:"YearPickerNext",props:{nextPage:{type:Function,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"button"}},setup(e){const t=e,a=mn(),r=S(()=>a.disabled.value||a.isNextButtonDisabled(t.nextPage));function n(){r.value||a.nextPage(t.nextPage)}return(l,o)=>(P(),E(u(H),{as:t.as,"as-child":t.asChild,"aria-label":"Next page",type:t.as==="button"?"button":void 0,"aria-disabled":r.value||void 0,"data-disabled":r.value||void 0,disabled:r.value,onClick:n},{default:w(()=>[M(l.$slots,"default",{disabled:r.value},()=>[o[0]||(o[0]=Ae(" Next page "))])]),_:3},8,["as","as-child","type","aria-disabled","data-disabled","disabled"]))}}),VP=kP,FP=A({__name:"YearPickerPrev",props:{prevPage:{type:Function,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"button"}},setup(e){const t=e,a=mn(),r=S(()=>a.disabled.value||a.isPrevButtonDisabled(t.prevPage));function n(){r.value||a.prevPage(t.prevPage)}return(l,o)=>(P(),E(u(H),{"aria-label":"Previous page",as:t.as,"as-child":t.asChild,type:t.as==="button"?"button":void 0,"aria-disabled":r.value||void 0,"data-disabled":r.value||void 0,disabled:r.value,onClick:n},{default:w(()=>[M(l.$slots,"default",{disabled:r.value},()=>[o[0]||(o[0]=Ae(" Prev page "))])]),_:3},8,["as","as-child","type","aria-disabled","data-disabled","disabled"]))}}),NP=FP;function LP(e){const t=S(()=>e.start.value?!!e.isYearDisabled(e.start.value):!1),a=S(()=>e.end.value?!!e.isYearDisabled(e.end.value):!1),r=S(()=>!!(t.value||a.value||e.start.value&&e.end.value&&e.end.value.year<e.start.value.year)),n=f=>e.start.value?He(e.start.value,f):!1,l=f=>e.end.value?He(e.end.value,f):!1,o=f=>e.start.value&&He(e.start.value,f)||e.end.value&&He(e.end.value,f)?!0:e.end.value&&e.start.value?f.year>e.start.value.year&&f.year<e.end.value.year:!1,i=f=>{if(e.isYearDisabled(f))return!0;if(e.maximumYears?.value){const p=e.maximumYears.value;if(e.start.value&&e.end.value){if(e.fixedDate.value){const v=pg(e.start.value,e.end.value);if(v<=p){const y=p-v,_=e.start.value.subtract({years:y}),C=e.end.value.add({years:y});return f.year<_.year||f.year>C.year}const h=e.fixedDate.value==="start"?e.start.value:e.end.value,m=h.add({years:p-1}),g=h.subtract({years:p-1});return f.year<g.year||f.year>m.year}return!1}if(e.start.value){const v=e.start.value.add({years:p-1}),h=e.start.value.subtract({years:p-1});return f.year<h.year||f.year>v.year}}return!1},s=S(()=>{if(e.start.value&&e.end.value&&!e.fixedDate.value||!e.start.value||!e.focusedValue.value)return null;const f=e.start.value.year<e.focusedValue.value.year,p=f?e.start.value:e.focusedValue.value,v=f?e.focusedValue.value:e.start.value;if(He(p,v))return{start:p,end:v};if(e.maximumYears?.value&&!e.end.value){const m=e.maximumYears.value,g=e.start.value,y=e.focusedValue.value;if(y.year>=g.year){const _=g.add({years:m-1}),C=y.year>_.year?_:y;return{start:g,end:C}}else{const _=g.subtract({years:m-1});return{start:y.year<_.year?_:y,end:g}}}return hg(p,v,e.allowNonContiguousRanges.value?()=>!1:e.isYearUnavailable,i)?{start:p,end:v}:null});return{isInvalid:r,isSelected:o,highlightedRange:s,isSelectionStart:n,isSelectionEnd:l,isHighlightedStart:f=>s.value?.start?He(s.value.start,f):!1,isHighlightedEnd:f=>s.value?.end?He(s.value.end,f):!1,isYearDisabled:i}}const HP={style:{border:"0px",clip:"rect(0px, 0px, 0px, 0px)","clip-path":"inset(50%)",height:"1px",margin:"-1px",overflow:"hidden",padding:"0px",position:"absolute","white-space":"nowrap",width:"1px"}},KP={role:"heading","aria-level":"2"},[yn,WP]=we("YearRangePickerRoot");var YP=A({__name:"YearRangePickerRoot",props:{defaultPlaceholder:{type:null,required:!1},defaultValue:{type:Object,required:!1,default:()=>({start:void 0,end:void 0})},modelValue:{type:[Object,null],required:!1},placeholder:{type:null,required:!1,default:void 0},allowNonContiguousRanges:{type:Boolean,required:!1,default:!1},preventDeselect:{type:Boolean,required:!1,default:!1},maximumYears:{type:Number,required:!1,default:void 0},calendarLabel:{type:String,required:!1},maxValue:{type:null,required:!1},minValue:{type:null,required:!1},locale:{type:String,required:!1},disabled:{type:Boolean,required:!1,default:!1},readonly:{type:Boolean,required:!1,default:!1},initialFocus:{type:Boolean,required:!1,default:!1},isYearDisabled:{type:Function,required:!1,default:void 0},isYearUnavailable:{type:Function,required:!1,default:void 0},dir:{type:String,required:!1},nextPage:{type:Function,required:!1},prevPage:{type:Function,required:!1},fixedDate:{type:String,required:!1},yearsPerPage:{type:Number,required:!1,default:12},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"div"}},emits:["update:modelValue","update:placeholder","update:startValue"],setup(e,{emit:t}){const a=e,r=t,{disabled:n,readonly:l,initialFocus:o,preventDeselect:i,isYearUnavailable:s,isYearDisabled:c,calendarLabel:d,maxValue:f,minValue:p,dir:v,locale:h,nextPage:m,prevPage:g,allowNonContiguousRanges:y,fixedDate:_,maximumYears:C,yearsPerPage:b}=Se(a),{primitiveElement:x,currentElement:$}=Xe(),q=At(v),T=wr(h),O=je(void 0,"reka-year-range-picker-heading"),R=k(),F=k(),B=k(!1),L=qe(a,"modelValue",r,{defaultValue:a.defaultValue??{start:void 0,end:void 0},passive:a.modelValue===void 0}),G=N=>N??{start:void 0,end:void 0},V=S(()=>G(L.value)),Y=k(G(L.value)),Z=rn({defaultPlaceholder:a.placeholder,defaultValue:G(L.value).start,locale:a.locale}),J=k(G(L.value).start),fe=k(G(L.value).end),oe=qe(a,"placeholder",r,{defaultValue:a.defaultPlaceholder??Z.copy(),passive:a.placeholder===void 0});function he(N){oe.value=N.copy()}const{fullCalendarLabel:_e,headingValue:Oe,isYearDisabled:Pe,isYearUnavailable:Ne,isNextButtonDisabled:ge,isPrevButtonDisabled:ie,grid:ee,nextPage:se,prevPage:ue,formatter:Ee}=zp({locale:T,placeholder:oe,minValue:p,maxValue:f,disabled:n,yearsPerPage:b,isYearDisabled:c,isYearUnavailable:s,calendarLabel:d,nextPage:m,prevPage:g}),{isInvalid:D,isSelected:I,highlightedRange:K,isSelectionStart:X,isSelectionEnd:W,isHighlightedStart:z,isHighlightedEnd:ae,isYearDisabled:te}=LP({start:J,end:fe,isYearDisabled:Pe,isYearUnavailable:Ne,focusedValue:F,allowNonContiguousRanges:y,fixedDate:_,maximumYears:C});ce(L,N=>{const ne=G(N);!ne.start&&!J.value||ne.start&&J.value&&He(ne.start,J.value)||(J.value=ne.start?.copy?.()),!ne.end&&!fe.value||ne.end&&fe.value&&He(ne.end,fe.value)||(fe.value=ne.end?.copy?.())}),ce(J,N=>{N&&!He(N,oe.value)&&he(N),r("update:startValue",N)}),ce([J,fe],([N,ne])=>{const re=L.value;if(!(re&&re.start&&re.end&&N&&ne&&He(re.start,N)&&He(re.end,ne)))if(B.value=!0,ne&&N){const de=ne.year<N.year?{start:ne.copy(),end:N.copy()}:{start:N.copy(),end:ne.copy()};L.value={start:de.start,end:de.end},B.value=!1,Y.value={start:de.start.copy(),end:de.end.copy()}}else L.value=N?{start:N.copy(),end:void 0}:{start:ne?.copy(),end:void 0}});const U=Gt();return pt($,"keydown",N=>{N.key===U.ESCAPE&&B.value&&(J.value=Y.value.start?.copy(),fe.value=Y.value.end?.copy())}),WP({isYearUnavailable:Ne,startValue:J,endValue:fe,formatter:Ee,modelValue:V,placeholder:oe,disabled:n,initialFocus:o,grid:ee,readonly:l,preventDeselect:i,fullCalendarLabel:_e,headingValue:Oe,headingId:O,isInvalid:D,isYearDisabled:te,allowNonContiguousRanges:y,highlightedRange:K,focusedValue:F,lastPressedDateValue:R,isSelected:I,isSelectionEnd:W,isSelectionStart:X,isNextButtonDisabled:ge,isPrevButtonDisabled:ie,nextPage:se,prevPage:ue,parentElement:$,onPlaceholderChange:he,locale:T,dir:q,isHighlightedStart:z,isHighlightedEnd:ae,fixedDate:_,maximumYears:C,minValue:p,maxValue:f,yearsPerPage:b}),xe(()=>{o.value&&nn($.value)}),(N,ne)=>(P(),E(u(H),{ref_key:"primitiveElement",ref:x,as:N.as,"as-child":N.asChild,"aria-label":u(_e),"data-readonly":u(l)?"":void 0,"data-disabled":u(n)?"":void 0,"data-invalid":u(D)?"":void 0,dir:u(q)},{default:w(()=>[$t("div",HP,[$t("div",KP,ze(u(_e)),1)]),M(N.$slots,"default",{date:u(oe),grid:u(ee),locale:u(T),modelValue:V.value})]),_:3},8,["as","as-child","aria-label","data-readonly","data-disabled","data-invalid","dir"]))}}),UP=YP,jP=A({__name:"YearRangePickerCell",props:{date:{type:null,required:!0},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"td"}},setup(e){const t=yn();return(a,r)=>(P(),E(u(H),{as:a.as,"as-child":a.asChild,role:"gridcell","aria-selected":u(t).isSelected(a.date)?!0:void 0,"aria-disabled":u(t).isYearDisabled(a.date)||u(t).isYearUnavailable?.(a.date),"data-disabled":u(t).isYearDisabled(a.date)?"":void 0},{default:w(()=>[M(a.$slots,"default")]),_:3},8,["as","as-child","aria-selected","aria-disabled","data-disabled"]))}}),zP=jP,GP=A({__name:"YearRangePickerCellTrigger",props:{year:{type:null,required:!0},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"div"}},setup(e){const t=e,a=Gt(),r=yn(),{primitiveElement:n}=Xe(),l=S(()=>(r.locale.value,r.formatter.fullYear(tt(t.year)))),o=S(()=>(r.locale.value,r.formatter.custom(tt(t.year),{year:"numeric"}))),i=S(()=>r.isYearUnavailable?.(t.year)??!1),s=S(()=>{const $=lt(an(la()),t.year.calendar);return He(t.year,$)}),c=S(()=>r.isYearDisabled(t.year)),d=S(()=>!r.disabled.value&&He(t.year,r.placeholder.value)),f=S(()=>r.isSelected(t.year)),p=S(()=>r.isSelectionStart(t.year)),v=S(()=>r.isSelectionEnd(t.year)),h=S(()=>r.isHighlightedStart(t.year)),m=S(()=>r.isHighlightedEnd(t.year)),g=S(()=>r.highlightedRange.value?cg(t.year,r.highlightedRange.value.start,r.highlightedRange.value.end):!1),y=S(()=>r.allowNonContiguousRanges.value);function _($,q){if(!r.readonly.value&&!(r.isYearDisabled(q)||r.isYearUnavailable?.(q))){if(r.startValue.value&&r.highlightedRange.value===null){if(He(q,r.startValue.value)&&!r.preventDeselect.value&&!r.endValue.value){r.startValue.value=void 0,r.onPlaceholderChange(q),r.lastPressedDateValue.value=q.copy();return}else if(!r.endValue.value){$.preventDefault(),r.lastPressedDateValue.value&&He(r.lastPressedDateValue.value,q)&&(r.startValue.value=q.copy()),r.lastPressedDateValue.value=q.copy();return}}if(r.lastPressedDateValue.value=q.copy(),r.startValue.value&&r.endValue.value&&He(r.startValue.value,r.endValue.value)&&He(r.startValue.value,q)&&!r.preventDeselect.value){r.startValue.value=void 0,r.endValue.value=void 0,r.onPlaceholderChange(q);return}r.startValue.value?r.endValue.value?r.endValue.value&&r.startValue.value&&(r.fixedDate.value?r.fixedDate.value==="start"?q.compare(r.startValue.value)<0?r.startValue.value=q.copy():r.endValue.value=q.copy():r.fixedDate.value==="end"&&(q.compare(r.endValue.value)>0?r.endValue.value=q.copy():r.startValue.value=q.copy()):(r.endValue.value=void 0,r.startValue.value=q.copy())):r.endValue.value=q.copy():r.startValue.value=q.copy()}}function C($){c.value||_($,t.year)}function b(){c.value||r.isYearUnavailable?.(t.year)||(r.focusedValue.value=t.year.copy())}function x($){if(c.value)return;$.preventDefault(),$.stopPropagation();const q=r.parentElement.value,T=r.dir.value==="rtl"?-1:1;switch($.code){case a.ARROW_RIGHT:O(t.year,T);break;case a.ARROW_LEFT:O(t.year,-T);break;case a.ARROW_UP:O(t.year,-4);break;case a.ARROW_DOWN:O(t.year,4);break;case a.PAGE_UP:R(-1);break;case a.PAGE_DOWN:R(1);break;case a.ENTER:case a.SPACE_CODE:_($,t.year)}function O(F,B,L=0){if(L>48)return;const G=F.add({years:B});if(r.minValue.value&&hr(G).compare(r.minValue.value)<0||r.maxValue.value&&_a(G).compare(r.maxValue.value)>0)return;const V=q.querySelector(`[data-value='${G.toString()}']`);if(!V){if(B>0){if(r.isNextButtonDisabled())return;r.nextPage()}else{if(r.isPrevButtonDisabled())return;r.prevPage()}Ce(()=>{O(F,B,L+1)});return}if(V&&V.hasAttribute("data-disabled"))return O(G,B,L+1);r.onPlaceholderChange(G),V?.focus()}function R(F){const B=r.yearsPerPage.value,L=t.year.add({years:F*B});if(!(r.minValue.value&&hr(L).compare(r.minValue.value)<0||r.maxValue.value&&_a(L).compare(r.maxValue.value)>0)){if(F>0){if(r.isNextButtonDisabled())return;r.nextPage()}else{if(r.isPrevButtonDisabled())return;r.prevPage()}Ce(()=>{const G=q.querySelector(`[data-value='${L.toString()}']`);if(G&&!G.hasAttribute("data-disabled")){r.onPlaceholderChange(L),G?.focus();return}(!G||G.hasAttribute("data-disabled"))&&O(L,F>0?1:-1,1)})}}}return($,q)=>(P(),E(u(H),{ref_key:"primitiveElement",ref:n,as:t.as,"as-child":t.asChild,role:"button","aria-label":o.value,"data-reka-year-range-picker-cell-trigger":"","aria-pressed":f.value&&(y.value||!i.value)?!0:void 0,"aria-disabled":c.value||i.value?!0:void 0,"data-highlighted":g.value&&(y.value||!i.value)?"":void 0,"data-selection-start":p.value?!0:void 0,"data-selection-end":v.value?!0:void 0,"data-highlighted-start":h.value?!0:void 0,"data-highlighted-end":m.value?!0:void 0,"data-selected":f.value&&(y.value||!i.value)?!0:void 0,"data-value":$.year.toString(),"data-disabled":c.value?"":void 0,"data-unavailable":i.value?"":void 0,"data-today":s.value?"":void 0,"data-focused":d.value?"":void 0,tabindex:d.value?0:c.value?void 0:-1,onClick:C,onFocusin:b,onMouseenter:b,onKeydown:[at(x,["up","down","left","right","space","enter","page-up","page-down"]),q[0]||(q[0]=at(Fe(()=>{},["prevent"]),["enter"]))]},{default:w(()=>[M($.$slots,"default",{yearValue:l.value,disabled:c.value,today:s.value,selected:f.value,unavailable:i.value,highlighted:g.value&&(y.value||!i.value),highlightedStart:h.value,highlightedEnd:m.value,selectionStart:p.value,selectionEnd:v.value},()=>[Ae(ze(l.value),1)])]),_:3},8,["as","as-child","aria-label","aria-pressed","aria-disabled","data-highlighted","data-selection-start","data-selection-end","data-highlighted-start","data-highlighted-end","data-selected","data-value","data-disabled","data-unavailable","data-today","data-focused","tabindex"]))}}),JP=GP,XP=A({__name:"YearRangePickerGrid",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"table"}},setup(e){const t=e,a=yn(),r=S(()=>a.disabled.value?!0:void 0),n=S(()=>a.readonly.value?!0:void 0);return(l,o)=>(P(),E(u(H),j(t,{tabindex:"-1",role:"application","aria-labelledby":u(a).headingId,"aria-readonly":n.value,"aria-disabled":r.value,"data-readonly":n.value&&"","data-disabled":r.value&&""}),{default:w(()=>[M(l.$slots,"default")]),_:3},16,["aria-labelledby","aria-readonly","aria-disabled","data-readonly","data-disabled"]))}}),QP=XP,ZP=A({__name:"YearRangePickerGridBody",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"tbody"}},setup(e){const t=e;return(a,r)=>(P(),E(u(H),ve(me(t)),{default:w(()=>[M(a.$slots,"default")]),_:3},16))}}),eD=ZP,tD=A({__name:"YearRangePickerGridRow",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"tr"}},setup(e){const t=e;return(a,r)=>(P(),E(u(H),j(t,{role:"row"}),{default:w(()=>[M(a.$slots,"default")]),_:3},16))}}),aD=tD,rD=A({__name:"YearRangePickerHeader",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"div"}},setup(e){const t=e;return(a,r)=>(P(),E(u(H),ve(me(t)),{default:w(()=>[M(a.$slots,"default")]),_:3},16))}}),nD=rD,lD=A({__name:"YearRangePickerHeading",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"div"}},setup(e){const t=e,a=yn();return(r,n)=>(P(),E(u(H),j(t,{id:u(a).headingId,role:"heading","aria-level":"2","data-disabled":u(a).disabled.value?"":void 0}),{default:w(()=>[M(r.$slots,"default",{headingValue:u(a).headingValue.value},()=>[Ae(ze(u(a).headingValue.value),1)])]),_:3},16,["id","data-disabled"]))}}),oD=lD,iD=A({__name:"YearRangePickerNext",props:{nextPage:{type:Function,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"button"}},setup(e){const t=e,a=yn(),r=S(()=>a.disabled.value||a.isNextButtonDisabled(t.nextPage));function n(){r.value||a.nextPage(t.nextPage)}return(l,o)=>(P(),E(u(H),{as:t.as,"as-child":t.asChild,"aria-label":"Next page",type:t.as==="button"?"button":void 0,"aria-disabled":r.value||void 0,"data-disabled":r.value||void 0,disabled:r.value,onClick:n},{default:w(()=>[M(l.$slots,"default",{disabled:r.value},()=>[o[0]||(o[0]=Ae(" Next page "))])]),_:3},8,["as","as-child","type","aria-disabled","data-disabled","disabled"]))}}),sD=iD,uD=A({__name:"YearRangePickerPrev",props:{prevPage:{type:Function,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"button"}},setup(e){const t=e,a=yn(),r=S(()=>a.disabled.value||a.isPrevButtonDisabled(t.prevPage));function n(){r.value||a.prevPage(t.prevPage)}return(l,o)=>(P(),E(u(H),{"aria-label":"Previous page",as:t.as,"as-child":t.asChild,type:t.as==="button"?"button":void 0,"aria-disabled":r.value||void 0,"data-disabled":r.value||void 0,disabled:r.value,onClick:n},{default:w(()=>[M(l.$slots,"default",{disabled:r.value},()=>[o[0]||(o[0]=Ae(" Prev page "))])]),_:3},8,["as","as-child","type","aria-disabled","data-disabled","disabled"]))}}),dD=uD;const e$={Root:X0,Header:pC,Heading:hC,Grid:rC,Cell:Z0,HeadCell:cC,Next:yC,Prev:bC,GridHead:iC,GridBody:lC,GridRow:uC,CellTrigger:tC},t$={Root:Uw,Trigger:gx,Portal:nx,Content:zw,Arrow:Lw,Item:Qw,Group:Jw,Separator:dx,CheckboxItem:Kw,ItemIndicator:ex,Label:ax,RadioGroup:ox,RadioItem:sx,Sub:fx,SubContent:vx,SubTrigger:mx},a$={Root:yS,Trigger:PS,Portal:SS,Content:wS,Arrow:vS},r$={Root:TS,Header:YS,Heading:jS,Grid:FS,Cell:RS,Next:GS,Prev:XS,GridBody:LS,GridRow:KS,CellTrigger:kS},n$={Root:r1,Header:h1,Heading:y1,Grid:u1,Cell:l1,Next:b1,Prev:C1,GridBody:c1,GridRow:p1,CellTrigger:i1},l$={Root:Cx,Trigger:Vx,Portal:Bx,Content:Ix,Arrow:qx,Close:Dx,Anchor:xx},o$={Root:Wx,Header:oS,Heading:sS,Grid:Jx,Cell:Ux,HeadCell:nS,Next:dS,Prev:fS,GridHead:eS,GridBody:Qx,GridRow:aS,CellTrigger:zx},i$={Root:wP,Header:IP,Heading:BP,Grid:EP,Cell:SP,Next:VP,Prev:NP,GridBody:AP,GridRow:OP,CellTrigger:PP},s$={Root:UP,Header:nD,Heading:oD,Grid:QP,Cell:zP,Next:sD,Prev:dD,GridBody:eD,GridRow:aD,CellTrigger:JP};export{Ae as $,Ue as A,mf as B,ff as C,dc as D,fr as E,_o as F,Jv as G,Gv as H,mr as I,Pv as J,vr as K,us as L,we as M,Ua as N,it as O,P,E as Q,_r as R,gD as S,w as T,le as U,Ki as V,ve as W,me as X,M as Y,ot as Z,so as _,DD as a,bE as a$,ze as a0,Ke as a1,H as a2,yD as a3,j as a4,AD as a5,$D as a6,oa as a7,Do as a8,lh as a9,ND as aA,kD as aB,VD as aC,TD as aD,Rt as aE,t$ as aF,hD as aG,gx as aH,Uw as aI,Wo as aJ,ZE as aK,XE as aL,zE as aM,QE as aN,JE as aO,a$ as aP,l$ as aQ,TE as aR,RE as aS,IE as aT,OE as aU,ME as aV,PE as aW,DE as aX,SE as aY,gE as aZ,EE as a_,Ot as aa,vE as ab,hE as ac,Ye as ad,Co as ae,fD as af,$t as ag,UE as ah,KE as ai,HE as aj,Fe as ak,Qq as al,YE as am,WE as an,jE as ao,LE as ap,ic as aq,GE as ar,jv as as,MD as at,RD as au,rh as av,ll as aw,FD as ax,BD as ay,ID as az,Fm as b,Bn as b$,xE as b0,qE as b1,_E as b2,wE as b3,CE as b4,yE as b5,mE as b6,pE as b7,fE as b8,cE as b9,KD as bA,tE as bB,YD as bC,ZD as bD,UD as bE,nl as bF,GD as bG,jD as bH,aE as bI,zD as bJ,WD as bK,HD as bL,$e as bM,VE as bN,NE as bO,FE as bP,kE as bQ,BE as bR,_D as bS,cD as bT,wD as bU,at as bV,pD as bW,CD as bX,bD as bY,vD as bZ,xD as b_,dE as ba,mD as bb,$E as bc,AE as bd,uE as be,rE as bf,nE as bg,gg as bh,Se as bi,an as bj,la as bk,OD as bl,s$ as bm,i$ as bn,n$ as bo,r$ as bp,o$ as bq,e$ as br,sE as bs,oE as bt,iE as bu,lE as bv,JD as bw,QD as bx,eE as by,XD as bz,S as c,go as c0,co as c1,fo as c2,pa as c3,cr as c4,Wd as c5,xo as c6,qi as c7,Ze as c8,SD as c9,A as d,Tt as e,Qe as f,mt as g,Fu as h,Pm as i,Lm as j,$m as k,$l as l,ED as m,Ce as n,vt as o,PD as p,Fv as q,k as r,zt as s,sf as t,u,qD as v,ce as w,xe as x,Bu as y,Pa as z};
|
|
15
|
+
`),(P(!0),ot(Ye,null,Co(_.value,(x,$)=>(P(),ot(Ye,{key:$},[Ae(ze(x),1)],64))),128))]),_:1},8,["aria-live"])):Ke("v-if",!0),u(i).viewport.value?(P(),E(cs,{key:1,to:u(i).viewport.value},[le(u(o),null,{default:w(()=>[le(u(H),j({ref:u(n),tabindex:"0"},C.$attrs,{as:C.as,"as-child":C.asChild,"data-state":C.open?"open":"closed","data-swipe-direction":u(i).swipeDirection.value,style:u(i).disableSwipe.value?void 0:{userSelect:"none",touchAction:"none"},onPointerdown:b[0]||(b[0]=Fe(x=>{u(i).disableSwipe.value||(s.value={x:x.clientX,y:x.clientY})},["left"])),onPointermove:b[1]||(b[1]=x=>{if(u(i).disableSwipe.value||!s.value)return;const $=x.clientX-s.value.x,q=x.clientY-s.value.y,T=!!c.value,O=["left","right"].includes(u(i).swipeDirection.value),R=["left","up"].includes(u(i).swipeDirection.value)?Math.min:Math.max,F=O?R(0,$):0,B=O?0:R(0,q),L=x.pointerType==="touch"?10:2,G={x:F,y:B},V={originalEvent:x,delta:G};T?(c.value=G,u(wl)(u(Kq),Y=>r("swipeMove",Y),V)):u(Od)(G,u(i).swipeDirection.value,L)?(c.value=G,u(wl)(u(Hq),Y=>r("swipeStart",Y),V),x.target.setPointerCapture(x.pointerId)):(Math.abs($)>L||Math.abs(q)>L)&&(s.value=null)}),onPointerup:b[2]||(b[2]=x=>{if(u(i).disableSwipe.value)return;const $=c.value,q=x.target;if(q.hasPointerCapture(x.pointerId)&&q.releasePointerCapture(x.pointerId),c.value=null,s.value=null,$){const T=x.currentTarget,O={originalEvent:x,delta:$};u(Od)($,u(i).swipeDirection.value,u(i).swipeThreshold.value)?u(wl)(u(Yq),R=>r("swipeEnd",R),O):u(wl)(u(Wq),R=>r("swipeCancel",R),O),T?.addEventListener("click",R=>R.preventDefault(),{once:!0})}})}),{default:w(()=>[M(C.$slots,"default",{remaining:h.value,duration:d.value})]),_:3},16,["as","as-child","data-state","data-swipe-direction","style"])]),_:3})],8,["to"])):Ke("v-if",!0)],64))}}),Jq=Gq,Xq=A({__name:"ToastClose",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"button"}},setup(e){const t=e,a=jq(),{forwardRef:r}=Q();return(n,l)=>(P(),E(Wp,{"as-child":""},{default:w(()=>[le(u(H),j(t,{ref:u(r),type:n.as==="button"?"button":void 0,onClick:u(a).onClose}),{default:w(()=>[M(n.$slots,"default")]),_:3},16,["type","onClick"])]),_:3}))}}),Qq=Xq,Zq=A({__name:"ToastAction",props:{altText:{type:String,required:!0},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(e){if(!e.altText)throw new Error("Missing prop `altText` expected on `ToastAction`");const{forwardRef:a}=Q();return(r,n)=>r.altText?(P(),E(Wp,{key:0,"alt-text":r.altText,"as-child":""},{default:w(()=>[le(Qq,{ref:u(a),as:r.as,"as-child":r.asChild},{default:w(()=>[M(r.$slots,"default")]),_:3},8,["as","as-child"])]),_:3},8,["alt-text"])):Ke("v-if",!0)}}),HE=Zq,eP=A({__name:"ToastDescription",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(e){const t=e;return Q(),(a,r)=>(P(),E(u(H),ve(me(t)),{default:w(()=>[M(a.$slots,"default")]),_:3},16))}}),KE=eP,tP=A({__name:"ToastPortal",props:{to:{type:null,required:!1},disabled:{type:Boolean,required:!1},defer:{type:Boolean,required:!1},forceMount:{type:Boolean,required:!1}},setup(e){const t=e;return(a,r)=>(P(),E(u(ja),ve(me(t)),{default:w(()=>[M(a.$slots,"default")]),_:3},16))}}),WE=tP,aP=A({__name:"ToastRoot",props:{defaultOpen:{type:Boolean,required:!1,default:!0},forceMount:{type:Boolean,required:!1},type:{type:String,required:!1,default:"foreground"},open:{type:Boolean,required:!1,default:void 0},duration:{type:Number,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"li"}},emits:["escapeKeyDown","pause","resume","swipeStart","swipeMove","swipeCancel","swipeEnd","update:open"],setup(e,{emit:t}){const a=e,r=t,{forwardRef:n}=Q(),l=qe(a,"open",r,{defaultValue:a.defaultOpen,passive:a.open===void 0});return(o,i)=>(P(),E(u(Bt),{present:o.forceMount||u(l)},{default:w(()=>[le(Jq,j({ref:u(n),open:u(l),type:o.type,as:o.as,"as-child":o.asChild,duration:o.duration},o.$attrs,{onClose:i[0]||(i[0]=s=>l.value=!1),onPause:i[1]||(i[1]=s=>r("pause")),onResume:i[2]||(i[2]=s=>r("resume")),onEscapeKeyDown:i[3]||(i[3]=s=>r("escapeKeyDown",s)),onSwipeStart:i[4]||(i[4]=s=>{r("swipeStart",s),s.defaultPrevented||s.currentTarget.setAttribute("data-swipe","start")}),onSwipeMove:i[5]||(i[5]=s=>{if(r("swipeMove",s),!s.defaultPrevented){const{x:c,y:d}=s.detail.delta,f=s.currentTarget;f.setAttribute("data-swipe","move"),f.style.setProperty("--reka-toast-swipe-move-x",`${c}px`),f.style.setProperty("--reka-toast-swipe-move-y",`${d}px`)}}),onSwipeCancel:i[6]||(i[6]=s=>{if(r("swipeCancel",s),!s.defaultPrevented){const c=s.currentTarget;c.setAttribute("data-swipe","cancel"),c.style.removeProperty("--reka-toast-swipe-move-x"),c.style.removeProperty("--reka-toast-swipe-move-y"),c.style.removeProperty("--reka-toast-swipe-end-x"),c.style.removeProperty("--reka-toast-swipe-end-y")}}),onSwipeEnd:i[7]||(i[7]=s=>{if(r("swipeEnd",s),!s.defaultPrevented){const{x:c,y:d}=s.detail.delta,f=s.currentTarget;f.setAttribute("data-swipe","end"),f.style.removeProperty("--reka-toast-swipe-move-x"),f.style.removeProperty("--reka-toast-swipe-move-y"),f.style.setProperty("--reka-toast-swipe-end-x",`${c}px`),f.style.setProperty("--reka-toast-swipe-end-y",`${d}px`),l.value=!1}})}),{default:w(({remaining:s,duration:c})=>[M(o.$slots,"default",{remaining:s,duration:c,open:u(l)})]),_:3},16,["open","type","as","as-child","duration"])]),_:3},8,["present"]))}}),YE=aP,rP=A({__name:"ToastTitle",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(e){const t=e;return Q(),(a,r)=>(P(),E(u(H),ve(me(t)),{default:w(()=>[M(a.$slots,"default")]),_:3},16))}}),UE=rP,nP=A({__name:"FocusProxy",emits:["focusFromOutsideViewport"],setup(e,{emit:t}){const a=t,r=Ko();return(n,l)=>(P(),E(u(ll),{tabindex:"0",style:{position:"fixed"},onFocus:l[0]||(l[0]=o=>{const i=o.relatedTarget;!u(r).viewport.value?.contains(i)&&a("focusFromOutsideViewport")})},{default:w(()=>[M(n.$slots,"default")]),_:3}))}}),Td=nP,lP=A({inheritAttrs:!1,__name:"ToastViewport",props:{hotkey:{type:Array,required:!1,default:()=>["F8"]},label:{type:[String,Function],required:!1,default:"Notifications ({hotkey})"},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"ol"}},setup(e){const t=e,{hotkey:a,label:r}=Se(t),{forwardRef:n,currentElement:l}=Q(),{CollectionSlot:o,getItems:i}=nt(),s=Ko(),c=S(()=>s.toastCount.value>0),d=k(),f=k(),p=/Key/g,v=/Digit/g,h=S(()=>a.value.join("+").replace(p,"").replace(v,""));bs(a.value,()=>{l.value.focus()}),xe(()=>{s.onViewportChange(l.value)}),vt(g=>{const y=l.value;if(c.value&&y){const _=()=>{if(!s.isClosePausedRef.value){const q=new CustomEvent(Zi);y.dispatchEvent(q),s.isClosePausedRef.value=!0}},C=()=>{if(s.isClosePausedRef.value){const q=new CustomEvent(es);y.dispatchEvent(q),s.isClosePausedRef.value=!1}},b=q=>{!y.contains(q.relatedTarget)&&C()},x=()=>{y.contains(Ge())||C()},$=q=>{const T=q.altKey||q.ctrlKey||q.metaKey;if(q.key==="Tab"&&!T){const R=Ge(),F=q.shiftKey;if(q.target===y&&F){d.value?.focus();return}const G=m({tabbingDirection:F?"backwards":"forwards"}),V=G.findIndex(Y=>Y===R);Tl(G.slice(V+1))?q.preventDefault():F?d.value?.focus():f.value?.focus()}};y.addEventListener("focusin",_),y.addEventListener("focusout",b),y.addEventListener("pointermove",_),y.addEventListener("pointerleave",x),y.addEventListener("keydown",$),window.addEventListener("blur",_),window.addEventListener("focus",C),g(()=>{y.removeEventListener("focusin",_),y.removeEventListener("focusout",b),y.removeEventListener("pointermove",_),y.removeEventListener("pointerleave",x),y.removeEventListener("keydown",$),window.removeEventListener("blur",_),window.removeEventListener("focus",C)})}});function m({tabbingDirection:g}){const _=i().map(C=>C.ref).map(C=>{const b=[C,...Os(C)];return g==="forwards"?b:b.reverse()});return(g==="forwards"?_.reverse():_).flat()}return(g,y)=>(P(),E(u(Hg),{role:"region","aria-label":typeof u(r)=="string"?u(r).replace("{hotkey}",h.value):u(r)(h.value),tabindex:"-1",style:Ot({pointerEvents:c.value?void 0:"none"})},{default:w(()=>[c.value?(P(),E(Td,{key:0,ref:_=>{_&&(d.value=u(ht)(_))},onFocusFromOutsideViewport:y[0]||(y[0]=()=>{const _=m({tabbingDirection:"forwards"});u(Tl)(_)})},null,512)):Ke("v-if",!0),le(u(o),null,{default:w(()=>[le(u(H),j({ref:u(n),tabindex:"-1",as:g.as,"as-child":g.asChild},g.$attrs),{default:w(()=>[M(g.$slots,"default")]),_:3},16,["as","as-child"])]),_:3}),c.value?(P(),E(Td,{key:1,ref:_=>{_&&(f.value=u(ht)(_))},onFocusFromOutsideViewport:y[1]||(y[1]=()=>{const _=m({tabbingDirection:"backwards"});u(Tl)(_)})},null,512)):Ke("v-if",!0)]),_:3},8,["aria-label","style"]))}}),jE=lP,oP=A({__name:"TooltipArrow",props:{width:{type:Number,required:!1,default:10},height:{type:Number,required:!1,default:5},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"svg"}},setup(e){const t=e;return Q(),(a,r)=>(P(),E(u(dn),ve(me(t)),{default:w(()=>[M(a.$slots,"default")]),_:3},16))}}),zE=oP;const[Wo,iP]=we("TooltipProvider");var sP=A({inheritAttrs:!1,__name:"TooltipProvider",props:{delayDuration:{type:Number,required:!1,default:700},skipDelayDuration:{type:Number,required:!1,default:300},disableHoverableContent:{type:Boolean,required:!1,default:!1},disableClosingTrigger:{type:Boolean,required:!1},disabled:{type:Boolean,required:!1},ignoreNonKeyboardFocus:{type:Boolean,required:!1,default:!1},content:{type:Object,required:!1}},setup(e){const t=e,{delayDuration:a,skipDelayDuration:r,disableHoverableContent:n,disableClosingTrigger:l,ignoreNonKeyboardFocus:o,disabled:i,content:s}=Se(t);Q();const c=k(!0),d=k(!1),{start:f,stop:p}=gs(()=>{c.value=!0},r,{immediate:!1});return iP({isOpenDelayed:c,delayDuration:a,onOpen(){p(),c.value=!1},onClose(){f()},isPointerInTransitRef:d,disableHoverableContent:n,disableClosingTrigger:l,disabled:i,ignoreNonKeyboardFocus:o,content:s}),(v,h)=>M(v.$slots,"default")}}),GE=sP;const Up="tooltip.open",[Yo,uP]=we("TooltipRoot");var dP=A({__name:"TooltipRoot",props:{defaultOpen:{type:Boolean,required:!1,default:!1},open:{type:Boolean,required:!1,default:void 0},delayDuration:{type:Number,required:!1,default:void 0},disableHoverableContent:{type:Boolean,required:!1,default:void 0},disableClosingTrigger:{type:Boolean,required:!1,default:void 0},disabled:{type:Boolean,required:!1,default:void 0},ignoreNonKeyboardFocus:{type:Boolean,required:!1,default:void 0}},emits:["update:open"],setup(e,{emit:t}){const a=e,r=t;Q();const n=Wo(),l=S(()=>a.disableHoverableContent??n.disableHoverableContent.value),o=S(()=>a.disableClosingTrigger??n.disableClosingTrigger.value),i=S(()=>a.disabled??n.disabled.value),s=S(()=>a.delayDuration??n.delayDuration.value),c=S(()=>a.ignoreNonKeyboardFocus??n.ignoreNonKeyboardFocus.value),d=qe(a,"open",r,{defaultValue:a.defaultOpen,passive:a.open===void 0});ce(d,C=>{n.onClose&&(C?(n.onOpen(),document.dispatchEvent(new CustomEvent(Up))):n.onClose())});const f=k(!1),p=k(),v=S(()=>d.value?f.value?"delayed-open":"instant-open":"closed"),{start:h,stop:m}=gs(()=>{f.value=!0,d.value=!0},s,{immediate:!1});function g(){m(),f.value=!1,d.value=!0}function y(){m(),d.value=!1}function _(){h()}return uP({contentId:"",open:d,stateAttribute:v,trigger:p,onTriggerChange(C){p.value=C},onTriggerEnter(){n.isOpenDelayed.value?_():g()},onTriggerLeave(){l.value?y():m()},onOpen:g,onClose:y,disableHoverableContent:l,disableClosingTrigger:o,disabled:i,ignoreNonKeyboardFocus:c}),(C,b)=>(P(),E(u(Sr),null,{default:w(()=>[M(C.$slots,"default",{open:u(d)})]),_:3}))}}),JE=dP,cP=A({__name:"TooltipContentImpl",props:{ariaLabel:{type:String,required:!1},asChild:{type:Boolean,required:!1,default:void 0},as:{type:null,required:!1},side:{type:null,required:!1},sideOffset:{type:Number,required:!1},align:{type:null,required:!1},alignOffset:{type:Number,required:!1},avoidCollisions:{type:Boolean,required:!1,default:void 0},collisionBoundary:{type:null,required:!1},collisionPadding:{type:[Number,Object],required:!1},arrowPadding:{type:Number,required:!1},sticky:{type:String,required:!1},hideWhenDetached:{type:Boolean,required:!1,default:void 0},positionStrategy:{type:String,required:!1},updatePositionStrategy:{type:String,required:!1}},emits:["escapeKeyDown","pointerDownOutside"],setup(e,{emit:t}){const a=e,r=t,n=Yo(),l=Wo(),{forwardRef:o,currentElement:i}=Q(),s=S(()=>a.ariaLabel||i.value?.textContent),c=S(()=>{const{ariaLabel:d,...f}=a;return mf(f,l.content.value??{},{side:"top",sideOffset:0,align:"center",avoidCollisions:!0,collisionBoundary:[],collisionPadding:0,arrowPadding:0,sticky:"partial",hideWhenDetached:!1})});return xe(()=>{pt(window,"scroll",d=>{d.target?.contains(n.trigger.value)&&n.onClose()},{capture:!0}),pt(window,Up,n.onClose)}),(d,f)=>(P(),E(u(xr),{"as-child":"","disable-outside-pointer-events":!1,onEscapeKeyDown:f[0]||(f[0]=p=>r("escapeKeyDown",p)),onPointerDownOutside:f[1]||(f[1]=p=>{u(n).disableClosingTrigger.value&&u(n).trigger.value?.contains(p.target)&&p.preventDefault(),r("pointerDownOutside",p)}),onFocusOutside:f[2]||(f[2]=Fe(()=>{},["prevent"])),onDismiss:f[3]||(f[3]=p=>u(n).onClose())},{default:w(()=>[le(u(un),j({ref:u(o),"data-state":u(n).stateAttribute.value},{...d.$attrs,...c.value},{style:{"--reka-tooltip-content-transform-origin":"var(--reka-popper-transform-origin)","--reka-tooltip-content-available-width":"var(--reka-popper-available-width)","--reka-tooltip-content-available-height":"var(--reka-popper-available-height)","--reka-tooltip-trigger-width":"var(--reka-popper-anchor-width)","--reka-tooltip-trigger-height":"var(--reka-popper-anchor-height)"}}),{default:w(()=>[M(d.$slots,"default"),le(u(ll),{id:u(n).contentId,role:"tooltip"},{default:w(()=>[Ae(ze(s.value),1)]),_:1},8,["id"])]),_:3},16,["data-state"])]),_:3}))}}),jp=cP,fP=A({__name:"TooltipContentHoverable",props:{ariaLabel:{type:String,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1},side:{type:null,required:!1},sideOffset:{type:Number,required:!1},align:{type:null,required:!1},alignOffset:{type:Number,required:!1},avoidCollisions:{type:Boolean,required:!1},collisionBoundary:{type:null,required:!1},collisionPadding:{type:[Number,Object],required:!1},arrowPadding:{type:Number,required:!1},sticky:{type:String,required:!1},hideWhenDetached:{type:Boolean,required:!1},positionStrategy:{type:String,required:!1},updatePositionStrategy:{type:String,required:!1}},setup(e){const a=oa(e),{forwardRef:r,currentElement:n}=Q(),{trigger:l,onClose:o}=Yo(),i=Wo(),{isPointerInTransit:s,onPointerExit:c}=Lf(l,n);return i.isPointerInTransitRef=s,c(()=>{o()}),(d,f)=>(P(),E(jp,j({ref:u(r)},u(a)),{default:w(()=>[M(d.$slots,"default")]),_:3},16))}}),pP=fP,vP=A({__name:"TooltipContent",props:{forceMount:{type:Boolean,required:!1},ariaLabel:{type:String,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1},side:{type:null,required:!1},sideOffset:{type:Number,required:!1},align:{type:null,required:!1},alignOffset:{type:Number,required:!1},avoidCollisions:{type:Boolean,required:!1},collisionBoundary:{type:null,required:!1},collisionPadding:{type:[Number,Object],required:!1},arrowPadding:{type:Number,required:!1},sticky:{type:String,required:!1},hideWhenDetached:{type:Boolean,required:!1},positionStrategy:{type:String,required:!1},updatePositionStrategy:{type:String,required:!1}},emits:["escapeKeyDown","pointerDownOutside"],setup(e,{emit:t}){const a=e,r=t,n=Yo(),l=Rt(a,r),{forwardRef:o}=Q();return(i,s)=>(P(),E(u(Bt),{present:i.forceMount||u(n).open.value},{default:w(()=>[(P(),E(_r(u(n).disableHoverableContent.value?jp:pP),j({ref:u(o)},u(l)),{default:w(()=>[M(i.$slots,"default")]),_:3},16))]),_:3},8,["present"]))}}),XE=vP,hP=A({__name:"TooltipPortal",props:{to:{type:null,required:!1},disabled:{type:Boolean,required:!1},defer:{type:Boolean,required:!1},forceMount:{type:Boolean,required:!1}},setup(e){const t=e;return(a,r)=>(P(),E(u(ja),ve(me(t)),{default:w(()=>[M(a.$slots,"default")]),_:3},16))}}),QE=hP,mP=A({__name:"TooltipTrigger",props:{reference:{type:null,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"button"}},setup(e){const t=e,a=Yo(),r=Wo();a.contentId||=je(void 0,"reka-tooltip-content");const{forwardRef:n,currentElement:l}=Q(),o=k(!1),i=k(!1),s=S(()=>a.disabled.value?{}:{click:m,focus:v,pointermove:f,pointerleave:p,pointerdown:d,blur:h});xe(()=>{a.onTriggerChange(l.value)});function c(){setTimeout(()=>{o.value=!1},1)}function d(){a.open&&!a.disableClosingTrigger.value&&a.onClose(),o.value=!0,document.addEventListener("pointerup",c,{once:!0})}function f(g){g.pointerType!=="touch"&&!i.value&&!r.isPointerInTransitRef.value&&(a.onTriggerEnter(),i.value=!0)}function p(){a.onTriggerLeave(),i.value=!1}function v(g){o.value||a.ignoreNonKeyboardFocus.value&&!g.target.matches?.(":focus-visible")||a.onOpen()}function h(){a.onClose()}function m(){a.disableClosingTrigger.value||a.onClose()}return(g,y)=>(P(),E(u(qr),{"as-child":"",reference:g.reference},{default:w(()=>[le(u(H),j({ref:u(n),"aria-describedby":u(a).open.value?u(a).contentId:void 0,"data-state":u(a).stateAttribute.value,as:g.as,"as-child":t.asChild,"data-grace-area-trigger":""},rh(s.value)),{default:w(()=>[M(g.$slots,"default")]),_:3},16,["aria-describedby","data-state","as","as-child"])]),_:3},8,["reference"]))}}),ZE=mP;function yP(e){function t(r){return Array.isArray(e.date.value)?e.date.value.some(n=>He(n,r)):e.date.value?He(e.date.value,r):!1}const a=S(()=>{if(Array.isArray(e.date.value)){if(!e.date.value.length)return!1;for(const r of e.date.value)if(e.isYearDisabled?.(r)||e.isYearUnavailable?.(r))return!0}else{if(!e.date.value)return!1;if(e.isYearDisabled?.(e.date.value)||e.isYearUnavailable?.(e.date.value))return!0}return!1});return{isYearSelected:t,isInvalid:a}}function zp(e){const t=Ms(e.locale.value),a=v=>typeof v=="function"?v:v?.value,r=S(()=>{const v={calendar:e.placeholder.value.calendar.identifier};return e.placeholder.value.calendar.identifier==="gregory"&&e.placeholder.value.era==="BC"&&(v.era="short"),v}),n=k(rr({dateObj:e.placeholder.value,yearsPerPage:e.yearsPerPage.value}));function l(v){return!!(a(e.isYearDisabled)?.(v)||e.disabled.value||e.maxValue.value&&ta(_a(v),e.maxValue.value)||e.minValue.value&&Dt(hr(v),e.minValue.value))}const o=v=>!!a(e.isYearUnavailable)?.(v),i=v=>{if(!e.maxValue.value)return!1;if(e.disabled.value)return!0;const h=n.value.cells.at(-1);if(v||e.nextPage.value){const g=(v||e.nextPage.value)(h);return ta(_a(g),e.maxValue.value)}const m=_a(h.add({years:1}));return ta(m,e.maxValue.value)},s=v=>{if(!e.minValue.value)return!1;if(e.disabled.value)return!0;const h=n.value.value;if(v||e.prevPage.value){const g=(v||e.prevPage.value)(h);return Dt(hr(g),e.minValue.value)}const m=hr(h.subtract({years:1}));return Dt(m,e.minValue.value)},c=v=>{const h=n.value.value;if(v||e.nextPage.value){const g=(v||e.nextPage.value)(h);n.value=rr({dateObj:g,yearsPerPage:e.yearsPerPage.value,decadeAligned:!1}),e.placeholder.value=g.set({month:e.placeholder.value.month,day:e.placeholder.value.day});return}const m=h.add({years:e.yearsPerPage.value});n.value=rr({dateObj:m,yearsPerPage:e.yearsPerPage.value,decadeAligned:!1}),e.placeholder.value=m.set({month:e.placeholder.value.month,day:e.placeholder.value.day})},d=v=>{const h=n.value.value;if(v||e.prevPage.value){const g=(v||e.prevPage.value)(h);n.value=rr({dateObj:g,yearsPerPage:e.yearsPerPage.value,decadeAligned:!1}),e.placeholder.value=g.set({month:e.placeholder.value.month,day:e.placeholder.value.day});return}const m=h.subtract({years:e.yearsPerPage.value});n.value=rr({dateObj:m,yearsPerPage:e.yearsPerPage.value,decadeAligned:!1}),e.placeholder.value=m.set({month:e.placeholder.value.month,day:e.placeholder.value.day})};ce(e.placeholder,v=>{const h=n.value.value,m=n.value.cells.at(-1);v.year>=h.year&&v.year<=m.year||(n.value=rr({dateObj:v,yearsPerPage:e.yearsPerPage.value}))}),ce([e.locale,e.yearsPerPage],()=>{t.setLocale(e.locale.value),n.value=rr({dateObj:e.placeholder.value,yearsPerPage:e.yearsPerPage.value})});const f=S(()=>{e.locale.value!==t.getLocale()&&t.setLocale(e.locale.value);const v=n.value.cells[0],h=n.value.cells.at(-1);return`${t.fullYear(tt(v),r.value)} - ${t.fullYear(tt(h),r.value)}`}),p=S(()=>`${e.calendarLabel.value??"Year Picker"}, ${f.value}`);return{isYearDisabled:l,isYearUnavailable:o,isNextButtonDisabled:i,isPrevButtonDisabled:s,grid:n,formatter:t,nextPage:c,prevPage:d,headingValue:f,fullCalendarLabel:p}}const gP={style:{border:"0px",clip:"rect(0px, 0px, 0px, 0px)","clip-path":"inset(50%)",height:"1px",margin:"-1px",overflow:"hidden",padding:"0px",position:"absolute","white-space":"nowrap",width:"1px"}},bP={role:"heading","aria-level":"2"},[mn,_P]=we("YearPickerRoot");var CP=A({__name:"YearPickerRoot",props:{defaultValue:{type:null,required:!1,default:void 0},defaultPlaceholder:{type:null,required:!1},placeholder:{type:null,required:!1,default:void 0},preventDeselect:{type:Boolean,required:!1,default:!1},calendarLabel:{type:String,required:!1},maxValue:{type:null,required:!1},minValue:{type:null,required:!1},locale:{type:String,required:!1},disabled:{type:Boolean,required:!1,default:!1},readonly:{type:Boolean,required:!1,default:!1},initialFocus:{type:Boolean,required:!1,default:!1},isYearDisabled:{type:Function,required:!1,default:void 0},isYearUnavailable:{type:Function,required:!1,default:void 0},dir:{type:String,required:!1},nextPage:{type:Function,required:!1},prevPage:{type:Function,required:!1},modelValue:{type:null,required:!1},multiple:{type:Boolean,required:!1,default:!1},yearsPerPage:{type:Number,required:!1,default:12},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"div"}},emits:["update:modelValue","update:placeholder"],setup(e,{emit:t}){const a=e,r=t,{disabled:n,readonly:l,initialFocus:o,multiple:i,minValue:s,maxValue:c,preventDeselect:d,isYearDisabled:f,isYearUnavailable:p,calendarLabel:v,defaultValue:h,nextPage:m,prevPage:g,dir:y,locale:_,yearsPerPage:C}=Se(a),{primitiveElement:b,currentElement:x}=Xe(),$=wr(_),q=At(y),T=je(void 0,"reka-year-picker-heading"),O=qe(a,"modelValue",r,{defaultValue:h.value,passive:a.modelValue===void 0}),R=rn({defaultPlaceholder:a.placeholder,defaultValue:O.value,locale:a.locale}),F=qe(a,"placeholder",r,{defaultValue:a.defaultPlaceholder??R.copy(),passive:a.placeholder===void 0});function B(ie){F.value=ie.copy()}const{fullCalendarLabel:L,headingValue:G,isYearDisabled:V,isYearUnavailable:Y,isNextButtonDisabled:Z,isPrevButtonDisabled:J,nextPage:fe,prevPage:oe,formatter:he,grid:_e}=zp({locale:$,placeholder:F,minValue:s,maxValue:c,disabled:n,yearsPerPage:C,isYearDisabled:f,isYearUnavailable:p,calendarLabel:v,nextPage:m,prevPage:g}),{isInvalid:Oe,isYearSelected:Pe}=yP({date:O,isYearDisabled:V,isYearUnavailable:Y});ce(O,ie=>{if(Array.isArray(ie)&&ie.length){const ee=ie.at(-1);ee&&!He(F.value,ee)&&B(ee)}else!Array.isArray(ie)&&ie&&!He(F.value,ie)&&B(ie)});function Ne(ie,ee){return ee?ie.copy().set({month:ee.month,day:ee.day}):ie.copy()}function ge(ie){if(i.value){if(!O.value)O.value=[Ne(ie,F.value)];else if(Array.isArray(O.value)){const ee=O.value.findIndex(se=>He(se,ie));if(ee===-1)O.value=[...O.value,Ne(ie,F.value)];else if(!d.value){const se=O.value.filter(ue=>!He(ue,ie));if(!se.length){F.value=Ne(ie,O.value[ee]),O.value=void 0;return}O.value=se.map(ue=>ue.copy())}}}else{if(!O.value){O.value=Ne(ie,F.value);return}!d.value&&He(O.value,ie)?(F.value=Ne(ie,O.value),O.value=void 0):O.value=Ne(ie,O.value)}}return xe(()=>{o.value&&nn(x.value)}),_P({isYearUnavailable:Y,dir:q,isYearDisabled:V,locale:$,formatter:he,modelValue:O,placeholder:F,disabled:n,initialFocus:o,grid:_e,multiple:i,readonly:l,preventDeselect:d,fullCalendarLabel:L,headingValue:G,headingId:T,isInvalid:Oe,isYearSelected:Pe,isNextButtonDisabled:Z,isPrevButtonDisabled:J,nextPage:fe,prevPage:oe,parentElement:x,onPlaceholderChange:B,onYearChange:ge,minValue:s,maxValue:c,yearsPerPage:C}),(ie,ee)=>(P(),E(u(H),{ref_key:"primitiveElement",ref:b,as:ie.as,"as-child":ie.asChild,"aria-label":u(L),"data-readonly":u(l)?"":void 0,"data-disabled":u(n)?"":void 0,"data-invalid":u(Oe)?"":void 0,dir:u(q)},{default:w(()=>[M(ie.$slots,"default",{date:u(F),grid:u(_e),locale:u($),modelValue:u(O)}),$t("div",gP,[$t("div",bP,ze(u(L)),1)])]),_:3},8,["as","as-child","aria-label","data-readonly","data-disabled","data-invalid","dir"]))}}),wP=CP,xP=A({__name:"YearPickerCell",props:{date:{type:null,required:!0},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"td"}},setup(e){const t=mn();return(a,r)=>(P(),E(u(H),{as:a.as,"as-child":a.asChild,role:"gridcell","aria-selected":u(t).isYearSelected(a.date)?!0:void 0,"aria-disabled":u(t).isYearDisabled(a.date)||u(t).isYearUnavailable?.(a.date),"data-disabled":u(t).isYearDisabled(a.date)?"":void 0},{default:w(()=>[M(a.$slots,"default")]),_:3},8,["as","as-child","aria-selected","aria-disabled","data-disabled"]))}}),SP=xP,qP=A({__name:"YearPickerCellTrigger",props:{year:{type:null,required:!0},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"div"}},setup(e){const t=e,a=Gt(),r=mn(),{primitiveElement:n}=Xe(),l=S(()=>(r.locale.value,r.formatter.fullYear(tt(t.year)))),o=S(()=>(r.locale.value,r.formatter.custom(tt(t.year),{year:"numeric"}))),i=S(()=>r.isYearUnavailable?.(t.year)??!1),s=S(()=>{const m=lt(an(la()),t.year.calendar);return He(t.year,m)}),c=S(()=>r.isYearDisabled(t.year)),d=S(()=>!r.disabled.value&&He(t.year,r.placeholder.value)),f=S(()=>r.isYearSelected(t.year));function p(m){r.readonly.value||r.isYearDisabled(m)||r.isYearUnavailable?.(m)||r.onYearChange(m)}function v(){c.value||p(t.year)}function h(m){if(c.value)return;m.preventDefault(),m.stopPropagation();const g=r.parentElement.value,y=r.dir.value==="rtl"?-1:1;switch(m.code){case a.ARROW_RIGHT:_(t.year,y);break;case a.ARROW_LEFT:_(t.year,-y);break;case a.ARROW_UP:_(t.year,-4);break;case a.ARROW_DOWN:_(t.year,4);break;case a.PAGE_UP:C(-1);break;case a.PAGE_DOWN:C(1);break;case a.ENTER:case a.SPACE_CODE:p(t.year)}function _(b,x,$=0){if($>48)return;const q=b.add({years:x});if(r.minValue.value&&hr(q).compare(r.minValue.value)<0||r.maxValue.value&&_a(q).compare(r.maxValue.value)>0)return;const T=g.querySelector(`[data-value='${q.toString()}']`);if(!T){if(x>0){if(r.isNextButtonDisabled())return;r.nextPage()}else{if(r.isPrevButtonDisabled())return;r.prevPage()}Ce(()=>{_(b,x,$+1)});return}if(T&&T.hasAttribute("data-disabled"))return _(q,x,$+1);r.onPlaceholderChange(q),T?.focus()}function C(b){const x=r.yearsPerPage.value,$=t.year.add({years:b*x});if(!(r.minValue.value&&hr($).compare(r.minValue.value)<0||r.maxValue.value&&_a($).compare(r.maxValue.value)>0)){if(b>0){if(r.isNextButtonDisabled())return;r.nextPage()}else{if(r.isPrevButtonDisabled())return;r.prevPage()}Ce(()=>{const q=g.querySelector(`[data-value='${$.toString()}']`);if(q&&!q.hasAttribute("data-disabled")){r.onPlaceholderChange($),q?.focus();return}(!q||q.hasAttribute("data-disabled"))&&_($,b>0?1:-1,1)})}}}return(m,g)=>(P(),E(u(H),{ref_key:"primitiveElement",ref:n,as:t.as,"as-child":t.asChild,role:"button","aria-label":o.value,"data-reka-year-picker-cell-trigger":"","aria-disabled":c.value||i.value?!0:void 0,"data-selected":f.value?"":void 0,"data-value":m.year.toString(),"data-disabled":c.value?"":void 0,"data-unavailable":i.value?"":void 0,"data-today":s.value?"":void 0,"data-focused":d.value?"":void 0,tabindex:d.value?0:c.value?void 0:-1,onClick:v,onKeydown:[at(h,["up","down","left","right","space","enter","page-up","page-down"]),g[0]||(g[0]=at(Fe(()=>{},["prevent"]),["enter"]))]},{default:w(()=>[M(m.$slots,"default",{yearValue:l.value,disabled:c.value,today:s.value,selected:f.value,unavailable:i.value},()=>[Ae(ze(l.value),1)])]),_:3},8,["as","as-child","aria-label","aria-disabled","data-selected","data-value","data-disabled","data-unavailable","data-today","data-focused","tabindex"]))}}),PP=qP,DP=A({__name:"YearPickerGrid",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"table"}},setup(e){const t=e,a=mn(),r=S(()=>a.disabled.value?!0:void 0),n=S(()=>a.readonly.value?!0:void 0);return(l,o)=>(P(),E(u(H),j(t,{tabindex:"-1",role:"application","aria-labelledby":u(a).headingId,"aria-readonly":n.value,"aria-disabled":r.value,"data-readonly":n.value&&"","data-disabled":r.value&&""}),{default:w(()=>[M(l.$slots,"default")]),_:3},16,["aria-labelledby","aria-readonly","aria-disabled","data-readonly","data-disabled"]))}}),EP=DP,$P=A({__name:"YearPickerGridBody",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"tbody"}},setup(e){const t=e;return(a,r)=>(P(),E(u(H),ve(me(t)),{default:w(()=>[M(a.$slots,"default")]),_:3},16))}}),AP=$P,MP=A({__name:"YearPickerGridRow",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"tr"}},setup(e){const t=e;return(a,r)=>(P(),E(u(H),j(t,{role:"row"}),{default:w(()=>[M(a.$slots,"default")]),_:3},16))}}),OP=MP,TP=A({__name:"YearPickerHeader",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"div"}},setup(e){const t=e;return(a,r)=>(P(),E(u(H),ve(me(t)),{default:w(()=>[M(a.$slots,"default")]),_:3},16))}}),IP=TP,RP=A({__name:"YearPickerHeading",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"div"}},setup(e){const t=e,a=mn();return(r,n)=>(P(),E(u(H),j(t,{id:u(a).headingId,role:"heading","aria-level":"2","data-disabled":u(a).disabled.value?"":void 0}),{default:w(()=>[M(r.$slots,"default",{headingValue:u(a).headingValue.value},()=>[Ae(ze(u(a).headingValue.value),1)])]),_:3},16,["id","data-disabled"]))}}),BP=RP,kP=A({__name:"YearPickerNext",props:{nextPage:{type:Function,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"button"}},setup(e){const t=e,a=mn(),r=S(()=>a.disabled.value||a.isNextButtonDisabled(t.nextPage));function n(){r.value||a.nextPage(t.nextPage)}return(l,o)=>(P(),E(u(H),{as:t.as,"as-child":t.asChild,"aria-label":"Next page",type:t.as==="button"?"button":void 0,"aria-disabled":r.value||void 0,"data-disabled":r.value||void 0,disabled:r.value,onClick:n},{default:w(()=>[M(l.$slots,"default",{disabled:r.value},()=>[o[0]||(o[0]=Ae(" Next page "))])]),_:3},8,["as","as-child","type","aria-disabled","data-disabled","disabled"]))}}),VP=kP,FP=A({__name:"YearPickerPrev",props:{prevPage:{type:Function,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"button"}},setup(e){const t=e,a=mn(),r=S(()=>a.disabled.value||a.isPrevButtonDisabled(t.prevPage));function n(){r.value||a.prevPage(t.prevPage)}return(l,o)=>(P(),E(u(H),{"aria-label":"Previous page",as:t.as,"as-child":t.asChild,type:t.as==="button"?"button":void 0,"aria-disabled":r.value||void 0,"data-disabled":r.value||void 0,disabled:r.value,onClick:n},{default:w(()=>[M(l.$slots,"default",{disabled:r.value},()=>[o[0]||(o[0]=Ae(" Prev page "))])]),_:3},8,["as","as-child","type","aria-disabled","data-disabled","disabled"]))}}),NP=FP;function LP(e){const t=S(()=>e.start.value?!!e.isYearDisabled(e.start.value):!1),a=S(()=>e.end.value?!!e.isYearDisabled(e.end.value):!1),r=S(()=>!!(t.value||a.value||e.start.value&&e.end.value&&e.end.value.year<e.start.value.year)),n=f=>e.start.value?He(e.start.value,f):!1,l=f=>e.end.value?He(e.end.value,f):!1,o=f=>e.start.value&&He(e.start.value,f)||e.end.value&&He(e.end.value,f)?!0:e.end.value&&e.start.value?f.year>e.start.value.year&&f.year<e.end.value.year:!1,i=f=>{if(e.isYearDisabled(f))return!0;if(e.maximumYears?.value){const p=e.maximumYears.value;if(e.start.value&&e.end.value){if(e.fixedDate.value){const v=pg(e.start.value,e.end.value);if(v<=p){const y=p-v,_=e.start.value.subtract({years:y}),C=e.end.value.add({years:y});return f.year<_.year||f.year>C.year}const h=e.fixedDate.value==="start"?e.start.value:e.end.value,m=h.add({years:p-1}),g=h.subtract({years:p-1});return f.year<g.year||f.year>m.year}return!1}if(e.start.value){const v=e.start.value.add({years:p-1}),h=e.start.value.subtract({years:p-1});return f.year<h.year||f.year>v.year}}return!1},s=S(()=>{if(e.start.value&&e.end.value&&!e.fixedDate.value||!e.start.value||!e.focusedValue.value)return null;const f=e.start.value.year<e.focusedValue.value.year,p=f?e.start.value:e.focusedValue.value,v=f?e.focusedValue.value:e.start.value;if(He(p,v))return{start:p,end:v};if(e.maximumYears?.value&&!e.end.value){const m=e.maximumYears.value,g=e.start.value,y=e.focusedValue.value;if(y.year>=g.year){const _=g.add({years:m-1}),C=y.year>_.year?_:y;return{start:g,end:C}}else{const _=g.subtract({years:m-1});return{start:y.year<_.year?_:y,end:g}}}return hg(p,v,e.allowNonContiguousRanges.value?()=>!1:e.isYearUnavailable,i)?{start:p,end:v}:null});return{isInvalid:r,isSelected:o,highlightedRange:s,isSelectionStart:n,isSelectionEnd:l,isHighlightedStart:f=>s.value?.start?He(s.value.start,f):!1,isHighlightedEnd:f=>s.value?.end?He(s.value.end,f):!1,isYearDisabled:i}}const HP={style:{border:"0px",clip:"rect(0px, 0px, 0px, 0px)","clip-path":"inset(50%)",height:"1px",margin:"-1px",overflow:"hidden",padding:"0px",position:"absolute","white-space":"nowrap",width:"1px"}},KP={role:"heading","aria-level":"2"},[yn,WP]=we("YearRangePickerRoot");var YP=A({__name:"YearRangePickerRoot",props:{defaultPlaceholder:{type:null,required:!1},defaultValue:{type:Object,required:!1,default:()=>({start:void 0,end:void 0})},modelValue:{type:[Object,null],required:!1},placeholder:{type:null,required:!1,default:void 0},allowNonContiguousRanges:{type:Boolean,required:!1,default:!1},preventDeselect:{type:Boolean,required:!1,default:!1},maximumYears:{type:Number,required:!1,default:void 0},calendarLabel:{type:String,required:!1},maxValue:{type:null,required:!1},minValue:{type:null,required:!1},locale:{type:String,required:!1},disabled:{type:Boolean,required:!1,default:!1},readonly:{type:Boolean,required:!1,default:!1},initialFocus:{type:Boolean,required:!1,default:!1},isYearDisabled:{type:Function,required:!1,default:void 0},isYearUnavailable:{type:Function,required:!1,default:void 0},dir:{type:String,required:!1},nextPage:{type:Function,required:!1},prevPage:{type:Function,required:!1},fixedDate:{type:String,required:!1},yearsPerPage:{type:Number,required:!1,default:12},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"div"}},emits:["update:modelValue","update:placeholder","update:startValue"],setup(e,{emit:t}){const a=e,r=t,{disabled:n,readonly:l,initialFocus:o,preventDeselect:i,isYearUnavailable:s,isYearDisabled:c,calendarLabel:d,maxValue:f,minValue:p,dir:v,locale:h,nextPage:m,prevPage:g,allowNonContiguousRanges:y,fixedDate:_,maximumYears:C,yearsPerPage:b}=Se(a),{primitiveElement:x,currentElement:$}=Xe(),q=At(v),T=wr(h),O=je(void 0,"reka-year-range-picker-heading"),R=k(),F=k(),B=k(!1),L=qe(a,"modelValue",r,{defaultValue:a.defaultValue??{start:void 0,end:void 0},passive:a.modelValue===void 0}),G=N=>N??{start:void 0,end:void 0},V=S(()=>G(L.value)),Y=k(G(L.value)),Z=rn({defaultPlaceholder:a.placeholder,defaultValue:G(L.value).start,locale:a.locale}),J=k(G(L.value).start),fe=k(G(L.value).end),oe=qe(a,"placeholder",r,{defaultValue:a.defaultPlaceholder??Z.copy(),passive:a.placeholder===void 0});function he(N){oe.value=N.copy()}const{fullCalendarLabel:_e,headingValue:Oe,isYearDisabled:Pe,isYearUnavailable:Ne,isNextButtonDisabled:ge,isPrevButtonDisabled:ie,grid:ee,nextPage:se,prevPage:ue,formatter:Ee}=zp({locale:T,placeholder:oe,minValue:p,maxValue:f,disabled:n,yearsPerPage:b,isYearDisabled:c,isYearUnavailable:s,calendarLabel:d,nextPage:m,prevPage:g}),{isInvalid:D,isSelected:I,highlightedRange:K,isSelectionStart:X,isSelectionEnd:W,isHighlightedStart:z,isHighlightedEnd:ae,isYearDisabled:te}=LP({start:J,end:fe,isYearDisabled:Pe,isYearUnavailable:Ne,focusedValue:F,allowNonContiguousRanges:y,fixedDate:_,maximumYears:C});ce(L,N=>{const ne=G(N);!ne.start&&!J.value||ne.start&&J.value&&He(ne.start,J.value)||(J.value=ne.start?.copy?.()),!ne.end&&!fe.value||ne.end&&fe.value&&He(ne.end,fe.value)||(fe.value=ne.end?.copy?.())}),ce(J,N=>{N&&!He(N,oe.value)&&he(N),r("update:startValue",N)}),ce([J,fe],([N,ne])=>{const re=L.value;if(!(re&&re.start&&re.end&&N&&ne&&He(re.start,N)&&He(re.end,ne)))if(B.value=!0,ne&&N){const de=ne.year<N.year?{start:ne.copy(),end:N.copy()}:{start:N.copy(),end:ne.copy()};L.value={start:de.start,end:de.end},B.value=!1,Y.value={start:de.start.copy(),end:de.end.copy()}}else L.value=N?{start:N.copy(),end:void 0}:{start:ne?.copy(),end:void 0}});const U=Gt();return pt($,"keydown",N=>{N.key===U.ESCAPE&&B.value&&(J.value=Y.value.start?.copy(),fe.value=Y.value.end?.copy())}),WP({isYearUnavailable:Ne,startValue:J,endValue:fe,formatter:Ee,modelValue:V,placeholder:oe,disabled:n,initialFocus:o,grid:ee,readonly:l,preventDeselect:i,fullCalendarLabel:_e,headingValue:Oe,headingId:O,isInvalid:D,isYearDisabled:te,allowNonContiguousRanges:y,highlightedRange:K,focusedValue:F,lastPressedDateValue:R,isSelected:I,isSelectionEnd:W,isSelectionStart:X,isNextButtonDisabled:ge,isPrevButtonDisabled:ie,nextPage:se,prevPage:ue,parentElement:$,onPlaceholderChange:he,locale:T,dir:q,isHighlightedStart:z,isHighlightedEnd:ae,fixedDate:_,maximumYears:C,minValue:p,maxValue:f,yearsPerPage:b}),xe(()=>{o.value&&nn($.value)}),(N,ne)=>(P(),E(u(H),{ref_key:"primitiveElement",ref:x,as:N.as,"as-child":N.asChild,"aria-label":u(_e),"data-readonly":u(l)?"":void 0,"data-disabled":u(n)?"":void 0,"data-invalid":u(D)?"":void 0,dir:u(q)},{default:w(()=>[$t("div",HP,[$t("div",KP,ze(u(_e)),1)]),M(N.$slots,"default",{date:u(oe),grid:u(ee),locale:u(T),modelValue:V.value})]),_:3},8,["as","as-child","aria-label","data-readonly","data-disabled","data-invalid","dir"]))}}),UP=YP,jP=A({__name:"YearRangePickerCell",props:{date:{type:null,required:!0},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"td"}},setup(e){const t=yn();return(a,r)=>(P(),E(u(H),{as:a.as,"as-child":a.asChild,role:"gridcell","aria-selected":u(t).isSelected(a.date)?!0:void 0,"aria-disabled":u(t).isYearDisabled(a.date)||u(t).isYearUnavailable?.(a.date),"data-disabled":u(t).isYearDisabled(a.date)?"":void 0},{default:w(()=>[M(a.$slots,"default")]),_:3},8,["as","as-child","aria-selected","aria-disabled","data-disabled"]))}}),zP=jP,GP=A({__name:"YearRangePickerCellTrigger",props:{year:{type:null,required:!0},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"div"}},setup(e){const t=e,a=Gt(),r=yn(),{primitiveElement:n}=Xe(),l=S(()=>(r.locale.value,r.formatter.fullYear(tt(t.year)))),o=S(()=>(r.locale.value,r.formatter.custom(tt(t.year),{year:"numeric"}))),i=S(()=>r.isYearUnavailable?.(t.year)??!1),s=S(()=>{const $=lt(an(la()),t.year.calendar);return He(t.year,$)}),c=S(()=>r.isYearDisabled(t.year)),d=S(()=>!r.disabled.value&&He(t.year,r.placeholder.value)),f=S(()=>r.isSelected(t.year)),p=S(()=>r.isSelectionStart(t.year)),v=S(()=>r.isSelectionEnd(t.year)),h=S(()=>r.isHighlightedStart(t.year)),m=S(()=>r.isHighlightedEnd(t.year)),g=S(()=>r.highlightedRange.value?cg(t.year,r.highlightedRange.value.start,r.highlightedRange.value.end):!1),y=S(()=>r.allowNonContiguousRanges.value);function _($,q){if(!r.readonly.value&&!(r.isYearDisabled(q)||r.isYearUnavailable?.(q))){if(r.startValue.value&&r.highlightedRange.value===null){if(He(q,r.startValue.value)&&!r.preventDeselect.value&&!r.endValue.value){r.startValue.value=void 0,r.onPlaceholderChange(q),r.lastPressedDateValue.value=q.copy();return}else if(!r.endValue.value){$.preventDefault(),r.lastPressedDateValue.value&&He(r.lastPressedDateValue.value,q)&&(r.startValue.value=q.copy()),r.lastPressedDateValue.value=q.copy();return}}if(r.lastPressedDateValue.value=q.copy(),r.startValue.value&&r.endValue.value&&He(r.startValue.value,r.endValue.value)&&He(r.startValue.value,q)&&!r.preventDeselect.value){r.startValue.value=void 0,r.endValue.value=void 0,r.onPlaceholderChange(q);return}r.startValue.value?r.endValue.value?r.endValue.value&&r.startValue.value&&(r.fixedDate.value?r.fixedDate.value==="start"?q.compare(r.startValue.value)<0?r.startValue.value=q.copy():r.endValue.value=q.copy():r.fixedDate.value==="end"&&(q.compare(r.endValue.value)>0?r.endValue.value=q.copy():r.startValue.value=q.copy()):(r.endValue.value=void 0,r.startValue.value=q.copy())):r.endValue.value=q.copy():r.startValue.value=q.copy()}}function C($){c.value||_($,t.year)}function b(){c.value||r.isYearUnavailable?.(t.year)||(r.focusedValue.value=t.year.copy())}function x($){if(c.value)return;$.preventDefault(),$.stopPropagation();const q=r.parentElement.value,T=r.dir.value==="rtl"?-1:1;switch($.code){case a.ARROW_RIGHT:O(t.year,T);break;case a.ARROW_LEFT:O(t.year,-T);break;case a.ARROW_UP:O(t.year,-4);break;case a.ARROW_DOWN:O(t.year,4);break;case a.PAGE_UP:R(-1);break;case a.PAGE_DOWN:R(1);break;case a.ENTER:case a.SPACE_CODE:_($,t.year)}function O(F,B,L=0){if(L>48)return;const G=F.add({years:B});if(r.minValue.value&&hr(G).compare(r.minValue.value)<0||r.maxValue.value&&_a(G).compare(r.maxValue.value)>0)return;const V=q.querySelector(`[data-value='${G.toString()}']`);if(!V){if(B>0){if(r.isNextButtonDisabled())return;r.nextPage()}else{if(r.isPrevButtonDisabled())return;r.prevPage()}Ce(()=>{O(F,B,L+1)});return}if(V&&V.hasAttribute("data-disabled"))return O(G,B,L+1);r.onPlaceholderChange(G),V?.focus()}function R(F){const B=r.yearsPerPage.value,L=t.year.add({years:F*B});if(!(r.minValue.value&&hr(L).compare(r.minValue.value)<0||r.maxValue.value&&_a(L).compare(r.maxValue.value)>0)){if(F>0){if(r.isNextButtonDisabled())return;r.nextPage()}else{if(r.isPrevButtonDisabled())return;r.prevPage()}Ce(()=>{const G=q.querySelector(`[data-value='${L.toString()}']`);if(G&&!G.hasAttribute("data-disabled")){r.onPlaceholderChange(L),G?.focus();return}(!G||G.hasAttribute("data-disabled"))&&O(L,F>0?1:-1,1)})}}}return($,q)=>(P(),E(u(H),{ref_key:"primitiveElement",ref:n,as:t.as,"as-child":t.asChild,role:"button","aria-label":o.value,"data-reka-year-range-picker-cell-trigger":"","aria-pressed":f.value&&(y.value||!i.value)?!0:void 0,"aria-disabled":c.value||i.value?!0:void 0,"data-highlighted":g.value&&(y.value||!i.value)?"":void 0,"data-selection-start":p.value?!0:void 0,"data-selection-end":v.value?!0:void 0,"data-highlighted-start":h.value?!0:void 0,"data-highlighted-end":m.value?!0:void 0,"data-selected":f.value&&(y.value||!i.value)?!0:void 0,"data-value":$.year.toString(),"data-disabled":c.value?"":void 0,"data-unavailable":i.value?"":void 0,"data-today":s.value?"":void 0,"data-focused":d.value?"":void 0,tabindex:d.value?0:c.value?void 0:-1,onClick:C,onFocusin:b,onMouseenter:b,onKeydown:[at(x,["up","down","left","right","space","enter","page-up","page-down"]),q[0]||(q[0]=at(Fe(()=>{},["prevent"]),["enter"]))]},{default:w(()=>[M($.$slots,"default",{yearValue:l.value,disabled:c.value,today:s.value,selected:f.value,unavailable:i.value,highlighted:g.value&&(y.value||!i.value),highlightedStart:h.value,highlightedEnd:m.value,selectionStart:p.value,selectionEnd:v.value},()=>[Ae(ze(l.value),1)])]),_:3},8,["as","as-child","aria-label","aria-pressed","aria-disabled","data-highlighted","data-selection-start","data-selection-end","data-highlighted-start","data-highlighted-end","data-selected","data-value","data-disabled","data-unavailable","data-today","data-focused","tabindex"]))}}),JP=GP,XP=A({__name:"YearRangePickerGrid",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"table"}},setup(e){const t=e,a=yn(),r=S(()=>a.disabled.value?!0:void 0),n=S(()=>a.readonly.value?!0:void 0);return(l,o)=>(P(),E(u(H),j(t,{tabindex:"-1",role:"application","aria-labelledby":u(a).headingId,"aria-readonly":n.value,"aria-disabled":r.value,"data-readonly":n.value&&"","data-disabled":r.value&&""}),{default:w(()=>[M(l.$slots,"default")]),_:3},16,["aria-labelledby","aria-readonly","aria-disabled","data-readonly","data-disabled"]))}}),QP=XP,ZP=A({__name:"YearRangePickerGridBody",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"tbody"}},setup(e){const t=e;return(a,r)=>(P(),E(u(H),ve(me(t)),{default:w(()=>[M(a.$slots,"default")]),_:3},16))}}),eD=ZP,tD=A({__name:"YearRangePickerGridRow",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"tr"}},setup(e){const t=e;return(a,r)=>(P(),E(u(H),j(t,{role:"row"}),{default:w(()=>[M(a.$slots,"default")]),_:3},16))}}),aD=tD,rD=A({__name:"YearRangePickerHeader",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"div"}},setup(e){const t=e;return(a,r)=>(P(),E(u(H),ve(me(t)),{default:w(()=>[M(a.$slots,"default")]),_:3},16))}}),nD=rD,lD=A({__name:"YearRangePickerHeading",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"div"}},setup(e){const t=e,a=yn();return(r,n)=>(P(),E(u(H),j(t,{id:u(a).headingId,role:"heading","aria-level":"2","data-disabled":u(a).disabled.value?"":void 0}),{default:w(()=>[M(r.$slots,"default",{headingValue:u(a).headingValue.value},()=>[Ae(ze(u(a).headingValue.value),1)])]),_:3},16,["id","data-disabled"]))}}),oD=lD,iD=A({__name:"YearRangePickerNext",props:{nextPage:{type:Function,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"button"}},setup(e){const t=e,a=yn(),r=S(()=>a.disabled.value||a.isNextButtonDisabled(t.nextPage));function n(){r.value||a.nextPage(t.nextPage)}return(l,o)=>(P(),E(u(H),{as:t.as,"as-child":t.asChild,"aria-label":"Next page",type:t.as==="button"?"button":void 0,"aria-disabled":r.value||void 0,"data-disabled":r.value||void 0,disabled:r.value,onClick:n},{default:w(()=>[M(l.$slots,"default",{disabled:r.value},()=>[o[0]||(o[0]=Ae(" Next page "))])]),_:3},8,["as","as-child","type","aria-disabled","data-disabled","disabled"]))}}),sD=iD,uD=A({__name:"YearRangePickerPrev",props:{prevPage:{type:Function,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"button"}},setup(e){const t=e,a=yn(),r=S(()=>a.disabled.value||a.isPrevButtonDisabled(t.prevPage));function n(){r.value||a.prevPage(t.prevPage)}return(l,o)=>(P(),E(u(H),{"aria-label":"Previous page",as:t.as,"as-child":t.asChild,type:t.as==="button"?"button":void 0,"aria-disabled":r.value||void 0,"data-disabled":r.value||void 0,disabled:r.value,onClick:n},{default:w(()=>[M(l.$slots,"default",{disabled:r.value},()=>[o[0]||(o[0]=Ae(" Prev page "))])]),_:3},8,["as","as-child","type","aria-disabled","data-disabled","disabled"]))}}),dD=uD;const e$={Root:X0,Header:pC,Heading:hC,Grid:rC,Cell:Z0,HeadCell:cC,Next:yC,Prev:bC,GridHead:iC,GridBody:lC,GridRow:uC,CellTrigger:tC},t$={Root:Uw,Trigger:gx,Portal:nx,Content:zw,Arrow:Lw,Item:Qw,Group:Jw,Separator:dx,CheckboxItem:Kw,ItemIndicator:ex,Label:ax,RadioGroup:ox,RadioItem:sx,Sub:fx,SubContent:vx,SubTrigger:mx},a$={Root:yS,Trigger:PS,Portal:SS,Content:wS,Arrow:vS},r$={Root:TS,Header:YS,Heading:jS,Grid:FS,Cell:RS,Next:GS,Prev:XS,GridBody:LS,GridRow:KS,CellTrigger:kS},n$={Root:r1,Header:h1,Heading:y1,Grid:u1,Cell:l1,Next:b1,Prev:C1,GridBody:c1,GridRow:p1,CellTrigger:i1},l$={Root:Cx,Trigger:Vx,Portal:Bx,Content:Ix,Arrow:qx,Close:Dx,Anchor:xx},o$={Root:Wx,Header:oS,Heading:sS,Grid:Jx,Cell:Ux,HeadCell:nS,Next:dS,Prev:fS,GridHead:eS,GridBody:Qx,GridRow:aS,CellTrigger:zx},i$={Root:wP,Header:IP,Heading:BP,Grid:EP,Cell:SP,Next:VP,Prev:NP,GridBody:AP,GridRow:OP,CellTrigger:PP},s$={Root:UP,Header:nD,Heading:oD,Grid:QP,Cell:zP,Next:sD,Prev:dD,GridBody:eD,GridRow:aD,CellTrigger:JP};export{Ae as $,Ue as A,mf as B,ff as C,dc as D,fr as E,_o as F,Jv as G,Gv as H,mr as I,Pv as J,vr as K,us as L,we as M,Ua as N,it as O,P,E as Q,_r as R,gD as S,w as T,le as U,Ki as V,ve as W,me as X,M as Y,ot as Z,so as _,DD as a,bE as a$,ze as a0,Ke as a1,H as a2,yD as a3,j as a4,AD as a5,$D as a6,oa as a7,Do as a8,lh as a9,ND as aA,kD as aB,VD as aC,TD as aD,Rt as aE,t$ as aF,hD as aG,gx as aH,Uw as aI,Wo as aJ,ZE as aK,XE as aL,zE as aM,QE as aN,JE as aO,a$ as aP,l$ as aQ,TE as aR,RE as aS,IE as aT,OE as aU,ME as aV,PE as aW,DE as aX,SE as aY,gE as aZ,EE as a_,Ot as aa,vE as ab,hE as ac,Ye as ad,Co as ae,fD as af,$t as ag,UE as ah,KE as ai,HE as aj,Fe as ak,Qq as al,YE as am,WE as an,jE as ao,LE as ap,ic as aq,GE as ar,jv as as,MD as at,RD as au,rh as av,ll as aw,FD as ax,BD as ay,ID as az,Fm as b,Bn as b$,xE as b0,qE as b1,_E as b2,wE as b3,CE as b4,yE as b5,mE as b6,pE as b7,fE as b8,cE as b9,KD as bA,tE as bB,YD as bC,ZD as bD,UD as bE,nl as bF,GD as bG,jD as bH,aE as bI,zD as bJ,WD as bK,HD as bL,$e as bM,VE as bN,NE as bO,FE as bP,kE as bQ,BE as bR,_D as bS,cD as bT,wD as bU,at as bV,pD as bW,CD as bX,vD as bY,bD as bZ,xD as b_,dE as ba,mD as bb,$E as bc,AE as bd,uE as be,rE as bf,nE as bg,gg as bh,Se as bi,an as bj,la as bk,OD as bl,s$ as bm,i$ as bn,n$ as bo,r$ as bp,o$ as bq,e$ as br,sE as bs,oE as bt,iE as bu,lE as bv,JD as bw,QD as bx,eE as by,XD as bz,S as c,go as c0,co as c1,fo as c2,pa as c3,cr as c4,Wd as c5,xo as c6,qi as c7,Ze as c8,SD as c9,A as d,Tt as e,Qe as f,mt as g,Fu as h,Pm as i,Lm as j,$m as k,$l as l,ED as m,Ce as n,vt as o,PD as p,Fv as q,k as r,zt as s,sf as t,u,qD as v,ce as w,xe as x,Bu as y,Pa as z};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{f as n,r as s}from"./index-
|
|
1
|
+
import{f as n,r as s}from"./index-_UKteDZB.js";import"./vendor-reka-ui-BkhadcDj.js";import"./vendor-nuxt-ui-DmkGVKod.js";import"./vendor-snapdom--nZvo8Sg.js";class d{async getVersion(){return"0.31.3"}async fetchRemoteConfig(t){try{const e=await fetch(t);return e.ok?{success:!0,data:(e.headers.get("content-type")||"").includes("application/json")||t.split("?")[0].endsWith(".json")?await e.json():await e.text()}:{success:!1,error:`HTTP ${e.status}`}}catch(e){return{success:!1,error:String(e)}}}setThemeSource(t){}async getOpenAtLogin(){return!1}async setOpenAtLogin(t){return{success:!1,error:"Not available in web mode"}}async getAnalyticsEnabled(){try{return(await(await n("/_web/telemetry/enabled")).json()).enabled===!0}catch{return!1}}async setAnalyticsEnabled(t){try{return await(await n("/_web/telemetry/enabled",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({enabled:t})})).json()}catch{return{success:!1}}}async trackDailyActive(t){await n("/_web/telemetry/track",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({eventName:"app_active",properties:{platform:"cli-web",locale:t}})}).catch(()=>{})}async showOpenDialog(t){return{canceled:!0,filePaths:[]}}async copyImageToClipboard(t){if(globalThis.isSecureContext===!1)return{success:!1,error:"Image clipboard requires HTTPS or localhost"};if(typeof navigator>"u"||typeof navigator.clipboard?.write!="function"||typeof ClipboardItem>"u")return{success:!1,error:"Image clipboard is not supported by this browser"};try{const e=fetch(t).then(async r=>{if(!r.ok)throw new Error(`Failed to read screenshot data: HTTP ${r.status}`);const a=await r.blob();if(a.type!=="image/png")throw new Error(`Unsupported screenshot MIME type: ${a.type||"unknown"}`);return a});return await navigator.clipboard.write([new ClipboardItem({"image/png":e})]),{success:!0}}catch(e){const r=e instanceof Error?`${e.name}: ${e.message}`:String(e);return s(`Image clipboard write failed: ${r}`,e instanceof Error?e.stack:void 0),{success:!1,error:r}}}async checkUpdate(){try{return await(await n("/_web/system/check-update")).json()}catch(t){return{hasUpdate:!1,currentVersion:"unknown",error:t instanceof Error?t.message:String(t)}}}async performUpdate(){return{success:!1,error:"Web update is unavailable. Run clb update in your terminal."}}async relaunch(){window.location.reload()}}export{d as WebPlatformAdapter};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{M as w,f as B,O,ar as A,a0 as k,j as _,G as M,b as U,N as E,I as z,a1 as T,T as b,ak as V,R as Y,w as X,r as P}from"./RelationshipGalaxyCanvas-
|
|
1
|
+
import{M as w,f as B,O,ar as A,a0 as k,j as _,G as M,b as U,N as E,I as z,a1 as T,T as b,ak as V,R as Y,w as X,r as P}from"./RelationshipGalaxyCanvas-DsMOubHV.js";import{F as q}from"./Filter-D32zqY5x.js";import"./index-_UKteDZB.js";import"./vendor-reka-ui-BkhadcDj.js";import"./vendor-nuxt-ui-DmkGVKod.js";import"./vendor-snapdom--nZvo8Sg.js";import"./index-DJ8kB4US.js";import"./LoadingState.vue_vue_type_script_setup_true_lang-DUAtrSZD.js";import"./people-page-header-YGQM9G53.js";import"./relationship-galaxy-viewport-Cwfa51ER.js";const v=new w;function G(g,e){e.clear();const t=e.matrix;for(let r=0;r<g.length;r++){const i=g[r];if(i.globalDisplayStatus<7)continue;const s=i.renderGroup??i.parentRenderGroup;s?.isCachedAsTexture?e.matrix=v.copyFrom(s.textureOffsetInverseTransform).append(i.worldTransform):s?._parentCacheAsTextureRenderGroup?e.matrix=v.copyFrom(s._parentCacheAsTextureRenderGroup.inverseWorldTransform).append(i.groupTransform):e.matrix=i.worldTransform,e.addBounds(i.bounds)}return e.matrix=t,e}function y(g){return typeof g.getCanvasFilterString=="function"}class L{constructor(){this.skip=!1,this.useClip=!1,this.filters=null,this.container=null,this.bounds=new k,this.cssFilterString=""}}class R{constructor(e){this._filterStack=[],this._filterStackIndex=0,this._savedStates=[],this._alphaMultiplier=1,this._warnedFilterTypes=new Set,this.renderer=e}push(e){const t=this._pushFilterFrame(),r=e.filterEffect.filters;if(t.skip=!1,t.useClip=!1,t.filters=r,t.container=e.container,t.cssFilterString="",r.every(o=>!o.enabled)){t.skip=!0;return}const i=[],s=1;for(const o of r){if(!o.enabled)continue;if(!y(o)){this._warnUnsupportedFilter(o);continue}const l=o.getCanvasFilterString();if(l===null){this._warnUnsupportedFilter(o);continue}l&&i.push(l)}if(i.length===0&&s===1){t.skip=!0;return}t.cssFilterString=i.join(" "),this._calculateFilterArea(e,t.bounds),t.useClip=!!e.filterEffect.filterArea;const n=this.renderer.canvasContext.activeContext,a=n.filter||"none";if(this._savedStates.push({filter:a,alphaMultiplier:this._alphaMultiplier}),t.useClip&&Number.isFinite(t.bounds.width)&&Number.isFinite(t.bounds.height)&&t.bounds.width>0&&t.bounds.height>0){const o=this.renderer.canvasContext.activeResolution||1;n.save(),n.setTransform(1,0,0,1,0,0),n.beginPath(),n.rect(t.bounds.x*o,t.bounds.y*o,t.bounds.width*o,t.bounds.height*o),n.clip()}else t.useClip=!1;t.cssFilterString&&(n.filter=a!=="none"?`${a} ${t.cssFilterString}`:t.cssFilterString)}pop(){const e=this._popFilterFrame();if(e.skip)return;const t=this._savedStates.pop();if(!t)return;const r=this.renderer.canvasContext.activeContext;e.useClip?r.restore():r.filter=t.filter,this._alphaMultiplier=t.alphaMultiplier}generateFilteredTexture({texture:e,filters:t}){if(!t?.length||t.every(d=>!d.enabled))return e;const r=[],i=1;for(const d of t){if(!d.enabled)continue;if(!y(d)){this._warnUnsupportedFilter(d);continue}const h=d.getCanvasFilterString();if(h===null){this._warnUnsupportedFilter(d);continue}h&&r.push(h)}if(r.length===0&&i===1)return e;const s=B.getCanvasSource(e);if(!s)return e;const n=e.frame,a=e.source._resolution??e.source.resolution??1,o=n.width,l=n.height,f=O.getOptimalCanvasAndContext(o,l,a),{canvas:c,context:u}=f;u.setTransform(1,0,0,1,0,0),u.clearRect(0,0,c.width,c.height),r.length&&(u.filter=r.join(" "));const p=n.x*a,m=n.y*a,x=o*a,F=l*a;return u.drawImage(s,p,m,x,F,0,0,x,F),u.filter="none",u.globalAlpha=1,A(c,o,l,a)}_calculateFilterArea(e,t){if(e.renderables?G(e.renderables,t):e.filterEffect.filterArea?(t.clear(),t.addRect(e.filterEffect.filterArea),t.applyMatrix(e.container.worldTransform)):e.container.getFastGlobalBounds(!0,t),e.container){const i=(e.container.renderGroup||e.container.parentRenderGroup)?.cacheToLocalTransform;i&&t.applyMatrix(i)}}_warnUnsupportedFilter(e){const t=e?.constructor?.name||"Filter";this._warnedFilterTypes.has(t)||(this._warnedFilterTypes.add(t),console.warn(`CanvasRenderer: filter "${t}" is not supported in Canvas2D and will be skipped.`))}get alphaMultiplier(){return this._alphaMultiplier}_pushFilterFrame(){let e=this._filterStack[this._filterStackIndex];return e||(e=this._filterStack[this._filterStackIndex]=new L),this._filterStackIndex++,e}_popFilterFrame(){return this._filterStackIndex<=0?this._filterStack[0]:(this._filterStackIndex--,this._filterStack[this._filterStackIndex])}destroy(){this._filterStack=null,this._savedStates=null,this._warnedFilterTypes=null,this._alphaMultiplier=1}}R.extension={type:[_.CanvasSystem],name:"filter"};var W=`in vec2 aPosition;
|
|
2
2
|
out vec2 vTextureCoord;
|
|
3
3
|
|
|
4
4
|
uniform vec4 uInputSize;
|
package/dist-web/index.html
CHANGED
|
@@ -5,11 +5,11 @@
|
|
|
5
5
|
<title>ChatLab</title>
|
|
6
6
|
<!-- https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP -->
|
|
7
7
|
<link rel="icon" href="/favicon.ico" />
|
|
8
|
-
<script type="module" crossorigin src="/assets/index-
|
|
9
|
-
<link rel="modulepreload" crossorigin href="/assets/vendor-reka-ui-
|
|
10
|
-
<link rel="modulepreload" crossorigin href="/assets/vendor-nuxt-ui-
|
|
8
|
+
<script type="module" crossorigin src="/assets/index-_UKteDZB.js"></script>
|
|
9
|
+
<link rel="modulepreload" crossorigin href="/assets/vendor-reka-ui-BkhadcDj.js">
|
|
10
|
+
<link rel="modulepreload" crossorigin href="/assets/vendor-nuxt-ui-DmkGVKod.js">
|
|
11
11
|
<link rel="modulepreload" crossorigin href="/assets/vendor-snapdom--nZvo8Sg.js">
|
|
12
|
-
<link rel="stylesheet" crossorigin href="/assets/index-
|
|
12
|
+
<link rel="stylesheet" crossorigin href="/assets/index-gi0wgh0M.css">
|
|
13
13
|
</head>
|
|
14
14
|
|
|
15
15
|
<body>
|
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/ai/chat-command.ts"],"sourcesContent":["import { createInterface } from 'node:readline/promises'\nimport type { Readable, Writable } from 'node:stream'\nimport type {\n DatabaseManager,\n AIChatManager,\n AgentStreamChunk,\n ContentBlock,\n PlanContentBlock,\n PlanDraftContentBlock,\n TokenUsageData,\n} from '@openchatlab/node-runtime'\nimport type { ChartPayload, PathProvider } from '@openchatlab/core'\nimport { createCliRunAgentStream } from './agent-stream-runner'\n\nexport interface ChatCommandOptions {\n sessionId?: string\n aiChatId?: string\n question?: string\n json?: boolean\n stream?: boolean\n locale?: string\n includeEvents?: boolean\n}\n\nexport interface ChatCommandDeps {\n dbManager: DatabaseManager\n pathProvider: PathProvider\n aiChatManager: AIChatManager\n stdout?: Pick<Writable, 'write'>\n stderr?: Pick<Writable, 'write'>\n stdin?: Readable\n createRunAgentStream?: typeof createCliRunAgentStream\n}\n\nexport interface ResolvedAIChatTarget {\n sessionId: string\n aiChatId: string\n assistantId: string\n created: boolean\n}\n\nexport interface ChatTurnResult {\n sessionId: string\n aiChatId: string\n question: string\n answer: string\n events?: AgentStreamChunk[]\n contentBlocks?: ContentBlock[]\n usage: {\n durationMs: number\n tokenUsage: TokenUsageData | null\n }\n}\n\nfunction write(stream: Pick<Writable, 'write'>, text: string): void {\n stream.write(text)\n}\n\nfunction buildTitle(question?: string): string {\n const trimmed = question?.trim()\n if (!trimmed) return 'CLI Chat'\n return trimmed.length > 50 ? `${trimmed.slice(0, 50)}...` : trimmed\n}\n\nfunction createAgentStreamError(error: unknown): Error {\n if (error instanceof Error) return error\n if (typeof error === 'string' && error) return new Error(error)\n if (typeof error === 'object' && error !== null) {\n const record = error as { name?: unknown; message?: unknown; stack?: unknown }\n const streamError = new Error(\n typeof record.message === 'string' && record.message ? record.message : 'Agent stream failed'\n )\n if (typeof record.name === 'string' && record.name) streamError.name = record.name\n if (typeof record.stack === 'string' && record.stack) streamError.stack = record.stack\n return streamError\n }\n return new Error('Agent stream failed')\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null && !Array.isArray(value)\n}\n\nfunction isChartPayload(value: unknown): value is ChartPayload {\n return isRecord(value) && value.version === 1 && isRecord(value.spec) && isRecord(value.dataset)\n}\n\nfunction extractChartPayloads(toolResult: unknown): ChartPayload[] {\n if (!isRecord(toolResult)) return []\n const details = isRecord(toolResult.details) ? toolResult.details : toolResult\n const charts: ChartPayload[] = []\n if (isChartPayload(details.chart)) charts.push(details.chart)\n if (Array.isArray(details.charts)) {\n for (const chart of details.charts) {\n if (isChartPayload(chart)) charts.push(chart)\n }\n }\n return charts\n}\n\nfunction toPersistedChartPayload(chart: ChartPayload): ChartPayload {\n return {\n ...chart,\n dataset: {\n ...chart.dataset,\n rows: [],\n },\n }\n}\n\nfunction resolveSingleSessionId(dbManager: DatabaseManager): string {\n const sessionIds = dbManager.listSessionIds()\n if (sessionIds.length === 1) return sessionIds[0]!\n if (sessionIds.length === 0) {\n throw new Error('No chat sessions found. Import data first or run `chatlab sessions` to verify available sessions.')\n }\n throw new Error('Missing --session-id. Run `chatlab sessions` to choose a session ID.')\n}\n\nfunction assertSessionExists(dbManager: DatabaseManager, sessionId: string): void {\n const db = dbManager.open(sessionId)\n if (!db) {\n throw new Error(`Session ${sessionId} not found`)\n }\n}\n\nexport function resolveAIChatTarget(\n options: Pick<ChatCommandOptions, 'sessionId' | 'aiChatId' | 'question'>,\n deps: Pick<ChatCommandDeps, 'dbManager' | 'aiChatManager'>\n): ResolvedAIChatTarget {\n if (options.aiChatId) {\n const aiChat = deps.aiChatManager.getAIChat(options.aiChatId)\n if (!aiChat) {\n throw new Error(`AI chat ${options.aiChatId} not found`)\n }\n if (options.sessionId && options.sessionId !== aiChat.sessionId) {\n throw new Error(`AI chat ${options.aiChatId} belongs to session ${aiChat.sessionId}, not ${options.sessionId}`)\n }\n assertSessionExists(deps.dbManager, aiChat.sessionId)\n return { sessionId: aiChat.sessionId, aiChatId: aiChat.id, assistantId: aiChat.assistantId, created: false }\n }\n\n const sessionId = options.sessionId ?? resolveSingleSessionId(deps.dbManager)\n assertSessionExists(deps.dbManager, sessionId)\n const aiChat = deps.aiChatManager.createAIChat(sessionId, buildTitle(options.question), 'general_cn')\n return { sessionId, aiChatId: aiChat.id, assistantId: aiChat.assistantId, created: true }\n}\n\nexport async function runChatTurn(\n options: Required<Pick<ChatCommandOptions, 'question'>> &\n Pick<ChatCommandOptions, 'sessionId' | 'aiChatId' | 'json' | 'stream' | 'locale' | 'includeEvents'>,\n deps: ChatCommandDeps\n): Promise<ChatTurnResult> {\n const stdout = deps.stdout ?? process.stdout\n const target = resolveAIChatTarget(options, deps)\n const startedAt = Date.now()\n let answer = ''\n let tokenUsage: TokenUsageData | null = null\n let streamError: Error | null = null\n const events: AgentStreamChunk[] = []\n const contentBlocks: ContentBlock[] = []\n let hasReplayContentBlocks = false\n\n const runAgentStream = (deps.createRunAgentStream ?? createCliRunAgentStream)(deps.dbManager, deps.aiChatManager)\n\n // 中文注释:CLI 历史回放依赖 contentBlocks 的时序;只要出现计划/思考块,\n // 就同步保留后续正文 text block,避免 UI 使用 blocks 渲染时丢失最终回答。\n const appendTextBlock = (text: string) => {\n if (!text) return\n const lastBlock = contentBlocks[contentBlocks.length - 1]\n if (lastBlock?.type === 'text') {\n lastBlock.text += text\n } else {\n contentBlocks.push({ type: 'text', text })\n }\n }\n\n const appendThinkBlock = (text: string, tag = 'thinking', durationMs?: number) => {\n if (!text && durationMs === undefined) return\n const lastBlock = contentBlocks[contentBlocks.length - 1]\n let targetBlock: ContentBlock | undefined\n\n if (lastBlock?.type === 'think' && lastBlock.tag === tag) {\n lastBlock.text += text\n targetBlock = lastBlock\n } else if (text.trim().length > 0) {\n targetBlock = { type: 'think', tag, text }\n contentBlocks.push(targetBlock)\n } else if (durationMs !== undefined) {\n for (let index = contentBlocks.length - 1; index >= 0; index--) {\n const block = contentBlocks[index]\n if (block.type === 'think' && block.tag === tag) {\n targetBlock = block\n break\n }\n }\n }\n\n if (durationMs !== undefined && targetBlock?.type === 'think') {\n targetBlock.durationMs = durationMs\n }\n if (targetBlock?.type === 'think') {\n hasReplayContentBlocks = true\n }\n }\n\n const appendChartBlocks = (charts: ChartPayload[]) => {\n if (charts.length === 0) return\n // 中文注释:图表 block 需要持久化给 CLI 生成的 AI 对话回放;\n // 原始 SQL 行数据可能较大,保存时只保留渲染数据和字段元信息。\n contentBlocks.push(...charts.map((chart) => ({ type: 'chart' as const, chart: toPersistedChartPayload(chart) })))\n hasReplayContentBlocks = true\n }\n\n const appendPlanDraftBlock = (delta: string) => {\n if (!delta) return\n const lastBlock = contentBlocks[contentBlocks.length - 1]\n if (lastBlock?.type === 'plan_draft') {\n lastBlock.text += delta\n } else {\n contentBlocks.push({ type: 'plan_draft', version: 1, status: 'streaming', text: delta } as PlanDraftContentBlock)\n }\n hasReplayContentBlocks = true\n }\n\n const removePlanDraftBlocks = () => {\n for (let index = contentBlocks.length - 1; index >= 0; index--) {\n if (contentBlocks[index]?.type === 'plan_draft') {\n contentBlocks.splice(index, 1)\n }\n }\n }\n\n const appendFinalPlanBlock = (plan: PlanContentBlock) => {\n const planBlock = JSON.parse(JSON.stringify(plan)) as PlanContentBlock\n for (let index = contentBlocks.length - 1; index >= 0; index--) {\n const block = contentBlocks[index]\n if (block?.type === 'plan_draft') {\n const displayText = block.text.trim()\n if (displayText) planBlock.displayText = displayText\n contentBlocks[index] = planBlock\n hasReplayContentBlocks = true\n return\n }\n }\n contentBlocks.push(planBlock)\n hasReplayContentBlocks = true\n }\n\n await runAgentStream(\n {\n userMessage: options.question,\n sessionId: target.sessionId,\n aiChatId: target.aiChatId,\n assistantId: target.assistantId,\n chatType: 'group',\n locale: options.locale ?? 'zh-CN',\n enableAutoSkill: true,\n chartAutoMode: 'suggest',\n },\n (chunk: AgentStreamChunk) => {\n if (options.includeEvents) {\n events.push(JSON.parse(JSON.stringify(chunk)) as AgentStreamChunk)\n }\n if (chunk.type === 'error') {\n removePlanDraftBlocks()\n streamError = createAgentStreamError(chunk.error)\n return\n }\n if (chunk.type === 'plan_delta' && chunk.planDelta) {\n appendPlanDraftBlock(chunk.planDelta)\n return\n }\n if (chunk.type === 'plan' && chunk.plan) {\n appendFinalPlanBlock(chunk.plan)\n return\n }\n if (chunk.type === 'plan_skipped') {\n removePlanDraftBlocks()\n return\n }\n if (chunk.type === 'think') {\n appendThinkBlock(chunk.content ?? '', chunk.thinkTag, chunk.thinkDurationMs)\n return\n }\n if (chunk.type === 'tool_result' && chunk.toolName === 'render_chart') {\n appendChartBlocks(extractChartPayloads(chunk.toolResult))\n return\n }\n if (chunk.type === 'content' && chunk.content) {\n answer += chunk.content\n appendTextBlock(chunk.content)\n if (!options.json && options.stream !== false) write(stdout, chunk.content)\n }\n if (chunk.type === 'done' && chunk.usage) {\n tokenUsage = chunk.usage\n for (let index = contentBlocks.length - 1; index >= 0; index--) {\n const block = contentBlocks[index]\n if (block.type === 'plan') {\n block.status = 'done'\n break\n }\n }\n }\n },\n new AbortController().signal\n )\n\n if (streamError) throw streamError\n\n if (!options.json && options.stream !== false && answer && !answer.endsWith('\\n')) {\n write(stdout, '\\n')\n }\n\n deps.aiChatManager.addMessage(target.aiChatId, 'user', options.question)\n deps.aiChatManager.addMessage(\n target.aiChatId,\n 'assistant',\n answer,\n undefined,\n undefined,\n hasReplayContentBlocks ? contentBlocks : undefined,\n tokenUsage ?? undefined\n )\n\n return {\n sessionId: target.sessionId,\n aiChatId: target.aiChatId,\n question: options.question,\n answer,\n ...(options.includeEvents ? { events } : {}),\n ...(hasReplayContentBlocks ? { contentBlocks } : {}),\n usage: {\n durationMs: Date.now() - startedAt,\n tokenUsage,\n },\n }\n}\n\nexport async function runChatCommand(options: ChatCommandOptions, deps: ChatCommandDeps): Promise<void> {\n const stdout = deps.stdout ?? process.stdout\n const stderr = deps.stderr ?? process.stderr\n\n if (options.question?.trim()) {\n const result = await runChatTurn({ ...options, question: options.question.trim() }, deps)\n if (options.json) {\n write(stdout, `${JSON.stringify(result, null, 2)}\\n`)\n } else if (options.stream === false) {\n write(stdout, `${result.answer}\\n`)\n }\n return\n }\n\n const rl = createInterface({\n input: deps.stdin ?? process.stdin,\n output: stdout as Writable,\n })\n\n try {\n let aiChatId = options.aiChatId\n while (true) {\n const question = (await rl.question('chatlab> ')).trim()\n if (!question || question === 'exit' || question === 'quit') break\n try {\n const result = await runChatTurn({ ...options, aiChatId, question, json: false, stream: true }, deps)\n aiChatId = result.aiChatId\n } catch (error) {\n write(stderr, `${error instanceof Error ? error.message : String(error)}\\n`)\n }\n }\n } finally {\n rl.close()\n }\n}\n"],"mappings":"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","names":["aiChat"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/ai/logger.ts","../src/ai/tool-adapter.ts","../src/ai/llm-config.ts","../src/ai/assistant-loader.ts","../src/ai/agent.ts","../src/ai/agent-stream-runner.ts"],"sourcesContent":["/**\n * Server 端 AI 日志\n *\n * 复用 @openchatlab/node-runtime 的 AiLogger,\n * 在 startHttpServer() 中通过 initServerAiLogger() 初始化。\n */\n\nimport { AiLogger } from '@openchatlab/node-runtime'\n\nlet logger: AiLogger | null = null\n\nexport function initServerAiLogger(logsDir: string): AiLogger {\n if (!logger) {\n logger = new AiLogger(logsDir)\n }\n return logger\n}\n\nexport function getServerAiLogger(): AiLogger | null {\n return logger\n}\n\nexport function closeServerAiLogger(): void {\n if (logger) {\n logger.close()\n logger = null\n }\n}\n","/**\n * 工具适配层\n *\n * 将 @openchatlab/tools 的 ToolDefinition 适配为 @earendil-works/pi-agent-core 的 AgentTool 格式。\n * 消息类工具返回 rawMessages 时自动执行预处理管道(清洗、去噪、脱敏、截断、格式化)。\n */\n\nimport type {\n ToolDefinition,\n ToolExecutionContext,\n SemanticSearchToolService,\n RawMessage,\n ToolTimeRange,\n} from '@openchatlab/tools'\nimport { CoreDataProvider, executeToolForAgent, toAgentToolParameters } from '@openchatlab/tools'\nimport type { DatabaseAdapter } from '@openchatlab/core'\nimport {\n applyPreprocessingPipeline,\n batchSegmentWithFrequency,\n preprocessMessages,\n type AgentTool,\n type PreprocessableMessage,\n type PreprocessConfig,\n type TruncationStrategy,\n createChartSchemaGateState,\n wrapWithChartSchemaGate,\n} from '@openchatlab/node-runtime'\nimport { getServerAiLogger } from './logger'\n\nconst DEFAULT_MAX_TOOL_RESULT_TOKENS = 8000\n\nconst TOOL_TRUNCATION_STRATEGY: Record<string, TruncationStrategy> = {\n search_messages: 'keep_first',\n deep_search_messages: 'keep_first',\n get_recent_messages: 'keep_last',\n get_message_context: 'keep_last',\n get_segment_messages: 'keep_last',\n get_conversation_between: 'keep_last',\n}\n\nexport interface ServerToolContext {\n db: DatabaseAdapter\n sessionId: string\n locale?: string\n /** 语义检索窄接口(仅当前会话可检索时由 runner 注入) */\n semanticIndexService?: SemanticSearchToolService\n /** 预处理配置(脱敏/匿名化/清洗) */\n preprocessConfig?: Record<string, unknown>\n /** 当前用户平台 id(昵称匿名化 owner 识别) */\n ownerPlatformId?: string\n /** 会话时间范围筛选(来自请求参数,供证据类工具继承) */\n timeFilter?: ToolTimeRange\n /** 关键词搜索消息条数上限 */\n maxMessagesLimit?: number\n}\n\nexport interface AdaptToolsOptions {\n maxToolResultTokens?: number\n}\n\nexport function adaptToolsForAgent(\n tools: ToolDefinition[],\n getContext: () => ServerToolContext,\n options?: AdaptToolsOptions\n): AgentTool<any, any>[] {\n const tokenBudget = options?.maxToolResultTokens ?? DEFAULT_MAX_TOOL_RESULT_TOKENS\n const chartSchemaGateState = createChartSchemaGateState()\n\n return tools.map((tool) =>\n wrapWithChartSchemaGate(\n {\n name: tool.name,\n label: tool.name,\n description: tool.description,\n parameters: toAgentToolParameters(tool.inputSchema) as any,\n async execute(_toolCallId: string, params: unknown) {\n const ctx = getContext()\n const execCtx: ToolExecutionContext = {\n db: ctx.db,\n dataProvider: new CoreDataProvider(ctx.db),\n sessionId: ctx.sessionId,\n locale: ctx.locale,\n semanticIndexService: ctx.semanticIndexService,\n preprocessConfig: ctx.preprocessConfig,\n ownerPlatformId: ctx.ownerPlatformId,\n timeFilter: ctx.timeFilter,\n maxMessagesLimit: ctx.maxMessagesLimit,\n maxToolResultTokens: tokenBudget,\n segmentText: (texts, locale, options) => batchSegmentWithFrequency(texts, locale as any, options as any),\n desensitizeMessages: (messages: RawMessage[]): RawMessage[] =>\n preprocessMessages(\n messages as PreprocessableMessage[],\n ctx.preprocessConfig as PreprocessConfig | undefined\n ) as RawMessage[],\n }\n const result = await executeToolForAgent(tool, params, execCtx)\n const details = result.details as Record<string, unknown> | null\n if (!Array.isArray(details?.rawMessages)) return result\n\n const { rawMessages, chart, charts, ...extraDetails } = details\n const preprocessCfg = ctx.preprocessConfig as PreprocessConfig | undefined\n const pipelineResult = applyPreprocessingPipeline({\n rawMessages: rawMessages as PreprocessableMessage[],\n preprocessConfig: preprocessCfg,\n anonymizeNames: preprocessCfg?.anonymizeNames ?? false,\n ownerPlatformId: ctx.ownerPlatformId,\n locale: ctx.locale,\n maxToolResultTokens: tokenBudget,\n truncationStrategy: TOOL_TRUNCATION_STRATEGY[tool.name] ?? 'keep_last',\n extraDetails,\n logger: getServerAiLogger() ?? undefined,\n })\n const chartDetails = { ...(chart ? { chart } : {}), ...(charts ? { charts } : {}) }\n return {\n content: [{ type: 'text', text: pipelineResult.text }],\n details: Object.keys(chartDetails).length > 0 ? chartDetails : null,\n }\n },\n },\n chartSchemaGateState\n )\n )\n}\n","/**\n * 服务端 LLM 配置加载\n *\n * API Key 从 ~/.chatlab/auth-profiles.json 读取,\n * 匹配顺序:config.authProfile 精确匹配 > config.provider 兜底匹配。\n *\n * 模型/Provider 等配置仍从 llm-config.json 读取。\n */\n\nimport * as fs from 'fs'\nimport * as path from 'path'\nimport type { PiModel, PiApi } from '@openchatlab/node-runtime'\nimport { buildPiModel as buildPiModelCore, type PiModelConfig } from '@openchatlab/node-runtime'\nimport { resolveApiKey, writeAuthProfile } from '@openchatlab/config'\nimport { randomUUID } from 'crypto'\n\n// ==================== Types ====================\n\nexport interface AIServiceConfig {\n id: string\n name: string\n provider: string\n apiKey: string\n model?: string\n baseUrl?: string\n maxTokens?: number\n apiFormat?: string\n customModels?: Array<{ id: string; name: string }>\n authProfile?: string\n}\n\ninterface ModelSlot {\n configId: string\n modelId?: string\n}\n\ninterface AIConfigStore {\n configs: AIServiceConfig[]\n defaultAssistant: ModelSlot | null\n fastModel: ModelSlot | null\n}\n\n// ==================== Config Loading ====================\n\nexport function loadLlmConfig(aiDataDir: string): AIConfigStore {\n const configPath = path.join(aiDataDir, 'llm-config.json')\n if (!fs.existsSync(configPath)) {\n return { configs: [], defaultAssistant: null, fastModel: null }\n }\n\n try {\n const data = JSON.parse(fs.readFileSync(configPath, 'utf-8'))\n\n const configs = (data.configs || []).map((c: Record<string, unknown>) => {\n const provider = (c.provider as string) || ''\n const authProfile = c.authProfile as string | undefined\n const profileKey = resolveApiKey(provider, authProfile)\n const rawKey = (c.apiKey as string) || ''\n const fallbackKey = rawKey.startsWith('enc:') ? '' : rawKey\n return {\n ...c,\n apiKey: profileKey || fallbackKey,\n }\n })\n return {\n configs,\n defaultAssistant: data.defaultAssistant ?? null,\n fastModel: data.fastModel ?? null,\n }\n } catch {\n return { configs: [], defaultAssistant: null, fastModel: null }\n }\n}\n\nfunction resolveSlot(slot: ModelSlot | null | undefined, configs: AIServiceConfig[]): ModelSlot | null {\n if (slot && configs.some((c) => c.id === slot.configId)) return slot\n const fallback = configs[0]\n if (!fallback) return null\n return { configId: fallback.id, modelId: fallback.model }\n}\n\nexport function getDefaultAssistantConfig(aiDataDir: string): AIServiceConfig | null {\n const store = loadLlmConfig(aiDataDir)\n const slot = resolveSlot(store.defaultAssistant, store.configs)\n if (!slot) return null\n const config = store.configs.find((c) => c.id === slot.configId)\n if (!config) return null\n return { ...config, model: slot.modelId || config.model }\n}\n\n// ==================== Config Write Operations ====================\n\nconst MAX_CONFIG_COUNT = 99\n\nfunction saveLlmConfig(aiDataDir: string, store: AIConfigStore): void {\n const configPath = path.join(aiDataDir, 'llm-config.json')\n const toSave = {\n ...store,\n configs: store.configs.map((c) => {\n const { apiKey: _k, ...rest } = c\n return rest\n }),\n schemaVersion: 3,\n }\n fs.writeFileSync(configPath, JSON.stringify(toSave, null, 2), 'utf-8')\n}\n\nexport function addLlmConfig(\n aiDataDir: string,\n config: Omit<AIServiceConfig, 'id'>\n): { success: boolean; config?: AIServiceConfig; error?: string } {\n const store = loadLlmConfig(aiDataDir)\n\n if (store.configs.length >= MAX_CONFIG_COUNT) {\n return { success: false, error: `Maximum ${MAX_CONFIG_COUNT} configs reached` }\n }\n\n const newConfig: AIServiceConfig = {\n ...config,\n id: randomUUID(),\n }\n\n const storeForSave = loadRawConfigStore(aiDataDir)\n storeForSave.configs.push({\n ...newConfig,\n apiKey: '',\n })\n\n if (storeForSave.configs.length === 1) {\n storeForSave.defaultAssistant = { configId: newConfig.id, modelId: newConfig.model || '' }\n }\n\n if (config.apiKey) {\n const profileName = config.name?.toLowerCase().replace(/\\s+/g, '-') || config.provider\n writeAuthProfile(profileName, {\n type: 'api_key',\n provider: config.provider,\n key: config.apiKey,\n })\n ;(storeForSave.configs[storeForSave.configs.length - 1] as unknown as Record<string, unknown>).authProfile =\n profileName\n }\n\n saveLlmConfig(aiDataDir, storeForSave)\n return { success: true, config: { ...newConfig, apiKey: '' } }\n}\n\nexport function updateLlmConfig(\n aiDataDir: string,\n id: string,\n updates: Partial<Omit<AIServiceConfig, 'id'>>\n): { success: boolean; error?: string } {\n const storeForSave = loadRawConfigStore(aiDataDir)\n const index = storeForSave.configs.findIndex((c) => c.id === id)\n\n if (index === -1) {\n return { success: false, error: 'Config not found' }\n }\n\n const { apiKey: newApiKey, ...restUpdates } = updates\n const updated = {\n ...storeForSave.configs[index],\n ...restUpdates,\n }\n storeForSave.configs[index] = updated\n\n if (newApiKey) {\n const profileName = updated.name?.toLowerCase().replace(/\\s+/g, '-') || updated.provider\n writeAuthProfile(profileName, {\n type: 'api_key',\n provider: updated.provider,\n key: newApiKey,\n })\n ;(storeForSave.configs[index] as unknown as Record<string, unknown>).authProfile = profileName\n }\n\n saveLlmConfig(aiDataDir, storeForSave)\n return { success: true }\n}\n\nexport function deleteLlmConfig(aiDataDir: string, id: string): { success: boolean; error?: string } {\n const storeForSave = loadRawConfigStore(aiDataDir)\n const index = storeForSave.configs.findIndex((c) => c.id === id)\n\n if (index === -1) {\n return { success: false, error: 'Config not found' }\n }\n\n storeForSave.configs.splice(index, 1)\n\n const fallback = storeForSave.configs[0]\n if (storeForSave.defaultAssistant?.configId === id) {\n storeForSave.defaultAssistant = fallback ? { configId: fallback.id, modelId: fallback.model || '' } : null\n }\n if (storeForSave.fastModel?.configId === id) {\n storeForSave.fastModel = fallback ? { configId: fallback.id, modelId: fallback.model || '' } : null\n }\n\n saveLlmConfig(aiDataDir, storeForSave)\n return { success: true }\n}\n\nexport function setDefaultAssistantSlot(\n aiDataDir: string,\n configId: string,\n modelId: string\n): { success: boolean; error?: string } {\n const storeForSave = loadRawConfigStore(aiDataDir)\n const config = storeForSave.configs.find((c) => c.id === configId)\n\n if (!config) {\n return { success: false, error: 'Config not found' }\n }\n\n storeForSave.defaultAssistant = { configId, modelId }\n saveLlmConfig(aiDataDir, storeForSave)\n return { success: true }\n}\n\nexport function setFastModelSlot(aiDataDir: string, slot: ModelSlot | null): { success: boolean; error?: string } {\n const storeForSave = loadRawConfigStore(aiDataDir)\n\n if (slot !== null) {\n const config = storeForSave.configs.find((c) => c.id === slot.configId)\n if (!config) {\n return { success: false, error: 'Config not found' }\n }\n }\n\n storeForSave.fastModel = slot\n saveLlmConfig(aiDataDir, storeForSave)\n return { success: true }\n}\n\nfunction loadRawConfigStore(aiDataDir: string): AIConfigStore {\n const configPath = path.join(aiDataDir, 'llm-config.json')\n if (!fs.existsSync(configPath)) {\n return { configs: [], defaultAssistant: null, fastModel: null }\n }\n try {\n const data = JSON.parse(fs.readFileSync(configPath, 'utf-8'))\n return {\n configs: data.configs || [],\n defaultAssistant: data.defaultAssistant ?? null,\n fastModel: data.fastModel ?? null,\n }\n } catch {\n return { configs: [], defaultAssistant: null, fastModel: null }\n }\n}\n\n// ==================== PiModel Builder ====================\n\nexport function buildPiModel(config: AIServiceConfig): PiModel<PiApi> {\n return buildPiModelCore(config as PiModelConfig)\n}\n","/**\n * 助手配置加载器\n *\n * 从 ~/.chatlab/ai/assistants/*.md 加载助手系统提示词。\n */\n\nimport * as fs from 'fs'\nimport * as path from 'path'\nimport { parseAssistantFile } from '@openchatlab/node-runtime'\nimport type { AssistantConfig } from '@openchatlab/node-runtime'\n\nexport function loadAssistantConfig(aiDataDir: string, assistantId: string): AssistantConfig | null {\n const filePath = path.join(aiDataDir, 'assistants', `${assistantId}.md`)\n if (!fs.existsSync(filePath)) return null\n\n try {\n const content = fs.readFileSync(filePath, 'utf-8')\n return parseAssistantFile(content, filePath)\n } catch {\n return null\n }\n}\n","/**\n * 服务端 Agent\n *\n * 使用 @openchatlab/node-runtime 的 runAgentCore 编排对话流程,\n * 通过 AgentEventHandler 输出与 Electron 端一致的流式事件。\n */\n\nimport {\n DEFAULT_MAX_TOOL_ROUNDS,\n buildPlanGuidance,\n createAnalysisPlanner,\n createLlmRouteDecider,\n createPlanContentBlock,\n decideRequestRoute,\n runAgentCore,\n checkAndCompress,\n buildSystemPrompt,\n createAiTranslate,\n createCompressionLlmAdapter,\n AgentEventHandler,\n formatAIError,\n shouldUseChartCapabilityForMessage,\n getChartPlannerCapabilityForMessage,\n initTokenizer,\n type AgentStreamChunk,\n type PiMessage,\n type SimpleHistoryMessage,\n type AIChatManager,\n type CompressionConfig,\n type AgentTool,\n type DataSnapshot,\n type OwnerInfo,\n type MentionedMember,\n} from '@openchatlab/node-runtime'\nimport type { ChartAutoMode } from '@openchatlab/shared-types'\n\nimport { getDefaultAssistantConfig, buildPiModel } from './llm-config'\nimport { getServerAiLogger } from './logger'\n\nexport type { AgentStreamChunk }\n\nexport interface RunAgentOptions {\n userMessage: string\n aiChatId: string\n historyLeafMessageId?: string | null\n chatType?: 'group' | 'private'\n locale?: string\n assistantSystemPrompt?: string\n skillMenu?: string | null\n skillDef?: { name: string; prompt: string }\n compressionConfig?: CompressionConfig\n tools?: AgentTool[]\n aiDataDir: string\n aiChatManager: AIChatManager\n onEvent: (event: AgentStreamChunk) => void\n abortSignal?: AbortSignal\n ownerInfo?: OwnerInfo\n mentionedMembers?: MentionedMember[]\n dataSnapshot?: DataSnapshot\n thinkingLevel?: string\n chartAutoMode?: ChartAutoMode\n}\n\nexport async function runServerAgent(options: RunAgentOptions): Promise<void> {\n const {\n userMessage,\n aiChatId,\n historyLeafMessageId,\n chatType = 'group',\n locale = 'zh-CN',\n assistantSystemPrompt,\n skillMenu,\n skillDef,\n compressionConfig,\n tools = [],\n aiDataDir,\n aiChatManager,\n onEvent,\n abortSignal,\n ownerInfo,\n mentionedMembers,\n dataSnapshot,\n thinkingLevel,\n chartAutoMode = 'suggest',\n } = options\n\n const aiLogger = getServerAiLogger()\n\n // 确保 tokenizer rank 表已加载(compression + agent 路径均依赖)\n await initTokenizer()\n\n const llmConfig = getDefaultAssistantConfig(aiDataDir)\n if (!llmConfig) {\n onEvent({ type: 'error', error: { name: 'ConfigError', message: 'LLM service not configured' } })\n onEvent({ type: 'done', isFinished: true })\n return\n }\n\n const piModel = buildPiModel(llmConfig)\n const t = createAiTranslate(locale)\n\n let skillCtx: { skillDef?: { name: string; prompt: string }; skillMenu?: string } | undefined\n if (skillDef) {\n skillCtx = { skillDef }\n } else if (skillMenu) {\n skillCtx = { skillMenu }\n }\n\n const systemPrompt = buildSystemPrompt({\n t,\n chatType,\n assistantSystemPrompt,\n ownerInfo,\n locale,\n skillCtx,\n mentionedMembers,\n dataSnapshot,\n })\n\n const handler = new AgentEventHandler({\n onChunk: onEvent,\n context: {},\n systemPrompt,\n })\n\n if (compressionConfig?.enabled && historyLeafMessageId === undefined) {\n const llmAdapter = createCompressionLlmAdapter({\n piModel,\n apiKey: llmConfig.apiKey,\n onCompressing: () => handler.emitStatus('compressing', []),\n })\n const compressionResult = await checkAndCompress(\n aiChatId,\n compressionConfig,\n systemPrompt,\n llmAdapter,\n aiChatManager,\n aiLogger ?? undefined\n )\n if (compressionResult.compressed) {\n onEvent({\n type: 'compression_done',\n compressionResult: {\n summaryContent: compressionResult.summaryContent ?? '',\n tokensBefore: compressionResult.tokensBefore ?? 0,\n tokensAfter: compressionResult.tokensAfter ?? 0,\n timestamp: Date.now(),\n },\n })\n }\n } else if (compressionConfig?.enabled && historyLeafMessageId !== undefined) {\n aiLogger?.info?.('Compression', 'Skipping compression for edited branch request', {\n aiChatId,\n historyLeafMessageId,\n })\n }\n\n if (abortSignal?.aborted) {\n handler.emitStatus('aborted', [], { force: true })\n onEvent({ type: 'done', isFinished: true, usage: handler.cloneUsage() })\n return\n }\n\n let history: SimpleHistoryMessage[] = []\n try {\n history = aiChatManager.getHistoryForAgent(aiChatId, undefined, historyLeafMessageId)\n } catch {\n // empty history on failure\n }\n\n handler.emitStatus('preparing', [], { pendingUserMessage: userMessage, force: true })\n\n const steerMessage = t('ai.agent.answerWithoutTools')\n let cachedMessages: PiMessage[] = []\n const effectiveTools =\n chartAutoMode === 'explicit' && !shouldUseChartCapabilityForMessage(userMessage)\n ? tools.filter((tool) => tool.name !== 'render_chart')\n : tools\n\n try {\n const routeInput = {\n userMessage,\n chatType,\n locale,\n dataSnapshot,\n availableTools: effectiveTools.map((tool) => tool.name),\n availableCapabilities: [\n getChartPlannerCapabilityForMessage({\n userMessage,\n locale,\n availableTools: effectiveTools.map((tool) => tool.name),\n chartAutoMode,\n }),\n ].filter((capability) => capability !== null),\n skillSummary: skillDef?.name ?? (skillMenu ? 'auto_skill_menu' : undefined),\n }\n const routeStartedAt = Date.now()\n const routeDecision = await decideRequestRoute(routeInput, {\n llmRouter: createLlmRouteDecider({\n piModel,\n apiKey: llmConfig.apiKey,\n abortSignal,\n }),\n })\n aiLogger?.info('Router', 'Shadow route decision', {\n ...routeDecision,\n elapsedMs: Date.now() - routeStartedAt,\n availableToolCount: tools.length,\n shadowOnly: true,\n })\n onEvent({ type: 'route', routeDecision })\n\n let effectiveSystemPrompt = systemPrompt\n if (routeDecision.route === 'planned_execution') {\n const planStartedAt = Date.now()\n const planner = createAnalysisPlanner({\n piModel,\n apiKey: llmConfig.apiKey,\n onPlanDelta: (delta) => onEvent({ type: 'plan_delta', planDelta: delta }),\n onThinkingDelta: (delta) => onEvent({ type: 'think', content: delta, thinkTag: 'thinking' }),\n onThinkingEnd: (durationMs) =>\n onEvent({ type: 'think', content: '', thinkTag: 'thinking', thinkDurationMs: durationMs }),\n onValidationDelta: (delta) => onEvent({ type: 'think', content: delta, thinkTag: 'plan_validation' }),\n onValidationEnd: (durationMs) =>\n onEvent({ type: 'think', content: '', thinkTag: 'plan_validation', thinkDurationMs: durationMs }),\n })\n const plan = await planner(routeInput, abortSignal)\n if (plan) {\n const planBlock = createPlanContentBlock(plan)\n onEvent({ type: 'plan', plan: planBlock })\n effectiveSystemPrompt = `${systemPrompt}\\n\\n${buildPlanGuidance(plan)}`\n aiLogger?.info('Planner', 'Plan generated', {\n title: plan.title,\n steps: plan.steps.length,\n successCriteria: plan.successCriteria.length,\n elapsedMs: Date.now() - planStartedAt,\n })\n } else {\n aiLogger?.warn('Planner', 'Plan generation skipped or failed', {\n elapsedMs: Date.now() - planStartedAt,\n route: routeDecision.route,\n })\n onEvent({ type: 'plan_skipped' })\n }\n }\n\n const result = await runAgentCore({\n piModel,\n apiKey: llmConfig.apiKey,\n systemPrompt: effectiveSystemPrompt,\n tools: effectiveTools,\n history,\n userMessage,\n maxToolRounds: DEFAULT_MAX_TOOL_ROUNDS,\n abortSignal,\n steerMessage,\n thinkingLevel: thinkingLevel as import('@openchatlab/core').ThinkingLevel | undefined,\n onConvertToLlm: (filteredMessages) => {\n cachedMessages = filteredMessages as PiMessage[]\n },\n onEvent: (coreEvent) => handler.handleCoreEvent(coreEvent, cachedMessages),\n onDebugContext: (messages) => {\n try {\n aiChatManager.setPendingDebugContext(aiChatId, JSON.stringify(messages, null, 2))\n } catch {\n // silent\n }\n },\n })\n\n if (result.error) {\n const friendlyMessage = formatAIError(result.error)\n onEvent({ type: 'error', error: { name: 'AgentError', message: friendlyMessage } })\n }\n\n handler.emitStatus('completed', cachedMessages, { force: true })\n onEvent({ type: 'done', isFinished: true, usage: result.usage })\n } catch (error) {\n const friendlyMessage = formatAIError(error)\n aiLogger?.error('ServerAgent', 'Agent execution error', { error: String(error) })\n handler.emitStatus('error', cachedMessages, { force: true })\n onEvent({ type: 'error', error: { name: 'AgentError', message: friendlyMessage } })\n onEvent({ type: 'done', isFinished: true, usage: handler.cloneUsage() })\n }\n}\n","/**\n * CLI Agent stream runner — provides runAgentStream implementation\n * for the shared HTTP route context.\n */\n\nimport type { DatabaseManager, AIChatManager, AgentStreamChunk, SemanticIndexRuntime } from '@openchatlab/node-runtime'\nimport {\n CHART_CAPABILITY_CORE_TOOLS,\n SkillManager,\n buildSkillMenuWithBuiltinChart,\n createActivateSkillTool,\n createDataSnapshotFromOverview,\n getAllowedBuiltinToolsForChartAutoSkill,\n getChartCapabilitySkill,\n getSkillConfigWithBuiltinChart,\n resolveChartRuntimeForRequest,\n} from '@openchatlab/node-runtime'\nimport { getChatOverview, normalizeBuiltinToolNames } from '@openchatlab/core'\nimport type { ChartAutoMode } from '@openchatlab/shared-types'\nimport type { DataSnapshot } from '@openchatlab/node-runtime'\nimport type { AgentStreamRequest } from '@openchatlab/http-routes'\nimport { AGENT_TOOL_REGISTRY, SEMANTIC_SEARCH_TOOL_NAME } from '@openchatlab/tools'\nimport { buildSemanticSearchGuidance } from '@openchatlab/node-runtime'\nimport { adaptToolsForAgent } from './tool-adapter'\nimport { getDefaultAssistantConfig, buildPiModel } from './llm-config'\nimport { loadAssistantConfig } from './assistant-loader'\nimport { runServerAgent } from './agent'\n\nfunction getAiDir(dbManager: DatabaseManager): string {\n const pathProvider = (dbManager as any)['pathProvider']\n if (!pathProvider) {\n throw Object.assign(new Error('PathProvider not available'), { statusCode: 500 })\n }\n return pathProvider.getAiDataDir()\n}\n\nconst RAW_SQL_TOOL_NAMES = new Set(['execute_sql'])\n\nexport function getAvailableToolDefs(isChartCapability: boolean, allowedToolSet: Set<string> | null) {\n if (isChartCapability) {\n const chartCoreTools = new Set<string>(CHART_CAPABILITY_CORE_TOOLS)\n return AGENT_TOOL_REGISTRY.filter(\n (tool) =>\n chartCoreTools.has(tool.name) ||\n (tool.category === 'analysis' && allowedToolSet?.has(tool.name) && !RAW_SQL_TOOL_NAMES.has(tool.name))\n )\n }\n\n return allowedToolSet\n ? AGENT_TOOL_REGISTRY.filter((tool) => tool.category !== 'analysis' || allowedToolSet.has(tool.name))\n : AGENT_TOOL_REGISTRY\n}\n\n// 区分“未配置白名单”和“配置为空白名单”:前者无限制,后者禁用 analysis 工具。\nexport function getAllowedToolSet(\n isChartCapability: boolean,\n allowedBuiltinTools?: readonly string[]\n): Set<string> | null {\n if (isChartCapability) {\n return new Set(normalizeBuiltinToolNames(allowedBuiltinTools ?? []))\n }\n return allowedBuiltinTools === undefined ? null : new Set(normalizeBuiltinToolNames(allowedBuiltinTools))\n}\n\nexport function createCliRunAgentStream(\n dbManager: DatabaseManager,\n aiChatManager: AIChatManager,\n semanticIndexService?: SemanticIndexRuntime\n): (params: AgentStreamRequest, onEvent: (chunk: AgentStreamChunk) => void, abortSignal: AbortSignal) => Promise<void> {\n return async (params, onEvent, abortSignal) => {\n const {\n userMessage,\n aiChatId,\n historyLeafMessageId,\n sessionId,\n chatType,\n locale,\n assistantId,\n skillId,\n enableAutoSkill,\n chartAutoMode,\n compressionConfig,\n ownerInfo,\n mentionedMembers,\n thinkingLevel,\n } = params\n\n const aiDataDir = getAiDir(dbManager)\n\n let assistantSystemPrompt: string | undefined\n let assistantAllowedTools: string[] | undefined\n if (assistantId) {\n const assistantConfig = loadAssistantConfig(aiDataDir, assistantId)\n if (assistantConfig?.systemPrompt) {\n assistantSystemPrompt = assistantConfig.systemPrompt\n }\n assistantAllowedTools = assistantConfig?.allowedBuiltinTools\n }\n\n const llmConfig = getDefaultAssistantConfig(aiDataDir)\n const maxToolResultPercent = compressionConfig?.maxToolResultPercent ?? 50\n const contextWindow = llmConfig ? (buildPiModel(llmConfig).contextWindow ?? 128000) : 128000\n const maxToolResultTokens = Math.floor(contextWindow * (maxToolResultPercent / 100))\n\n const db = (dbManager as any).open?.(sessionId)\n const resolvedChartAutoMode: ChartAutoMode = chartAutoMode ?? 'suggest'\n const chartRuntime = resolveChartRuntimeForRequest({\n skillId,\n userMessage,\n locale,\n assistantAllowedTools,\n enableAutoDetection: enableAutoSkill === true,\n chartAutoMode: resolvedChartAutoMode,\n })\n const isChartCapability = chartRuntime.isChartCapability\n const autoSkillAllowedTools =\n !skillId && enableAutoSkill && resolvedChartAutoMode !== 'explicit'\n ? getAllowedBuiltinToolsForChartAutoSkill(assistantAllowedTools)\n : assistantAllowedTools\n const allowedToolSet = getAllowedToolSet(\n isChartCapability,\n isChartCapability ? chartRuntime.allowedBuiltinTools : autoSkillAllowedTools\n )\n const availableToolDefs = getAvailableToolDefs(isChartCapability, allowedToolSet)\n\n // 语义检索按需暴露:仅当前会话可检索时保留工具,否则从工具集中过滤掉以减少 schema token 与无效调用。\n const canSemanticSearch = !!db && !!semanticIndexService && (await semanticIndexService.canSearch(sessionId))\n const filteredToolDefs = canSemanticSearch\n ? availableToolDefs\n : availableToolDefs.filter((tool) => tool.name !== SEMANTIC_SEARCH_TOOL_NAME)\n\n const agentTools = db\n ? adaptToolsForAgent(\n filteredToolDefs,\n () => ({\n db,\n sessionId,\n locale,\n semanticIndexService,\n preprocessConfig: params.preprocessConfig,\n ownerPlatformId: ownerInfo?.platformId,\n timeFilter: params.timeFilter,\n maxMessagesLimit: params.maxMessagesLimit,\n }),\n { maxToolResultTokens }\n )\n : []\n\n // 工具可用时向 system prompt 加简短引导,提示何时调用语义检索。\n if (canSemanticSearch) {\n assistantSystemPrompt = [assistantSystemPrompt, buildSemanticSearchGuidance(locale)].filter(Boolean).join('\\n\\n')\n }\n\n const skillMgr = new SkillManager(aiDataDir)\n skillMgr.init()\n const toolNames = agentTools.map((t: { name: string }) => t.name)\n\n let resolvedSkillDef: { name: string; prompt: string } | undefined\n let resolvedSkillMenu: string | undefined\n if (isChartCapability) {\n const def = chartRuntime.skillDef ?? getChartCapabilitySkill(locale ?? 'zh-CN')\n resolvedSkillDef = { name: def.name, prompt: def.prompt }\n } else if (skillId) {\n const def = skillMgr.getSkillConfig(skillId)\n if (def) resolvedSkillDef = { name: def.name, prompt: def.prompt }\n } else if (enableAutoSkill) {\n const baseMenu = skillMgr.getSkillMenu(chatType ?? 'group', toolNames)\n const menu =\n resolvedChartAutoMode === 'aggressive' ? buildSkillMenuWithBuiltinChart(baseMenu, locale, toolNames) : baseMenu\n if (menu) resolvedSkillMenu = menu\n }\n\n if (resolvedSkillMenu) {\n const activateSkillTool = createActivateSkillTool({\n chatType: chatType ?? 'group',\n allowedTools: toolNames,\n coreToolNames: new Set<string>(CHART_CAPABILITY_CORE_TOOLS),\n locale,\n getSkillConfig: (id) =>\n resolvedChartAutoMode === 'aggressive'\n ? getSkillConfigWithBuiltinChart(id, locale, (skillConfigId) => skillMgr.getSkillConfig(skillConfigId))\n : skillMgr.getSkillConfig(id),\n })\n agentTools.push(activateSkillTool as any)\n }\n\n const resolvedCompression = compressionConfig?.enabled\n ? {\n enabled: true as const,\n tokenThresholdPercent: compressionConfig.tokenThresholdPercent ?? 75,\n bufferSizePercent: compressionConfig.bufferSizePercent ?? 20,\n maxToolResultPercent: compressionConfig.maxToolResultPercent,\n }\n : undefined\n\n let dataSnapshot: DataSnapshot | undefined\n if (db) {\n try {\n dataSnapshot = createDataSnapshotFromOverview(getChatOverview(db, 10))\n } catch {\n // non-fatal\n }\n }\n\n await runServerAgent({\n userMessage,\n aiChatId,\n historyLeafMessageId,\n chatType,\n locale,\n assistantSystemPrompt,\n skillMenu: resolvedSkillMenu,\n skillDef: resolvedSkillDef,\n compressionConfig: resolvedCompression,\n tools: agentTools,\n aiDataDir,\n aiChatManager,\n onEvent,\n abortSignal,\n ownerInfo,\n mentionedMembers,\n dataSnapshot,\n thinkingLevel,\n chartAutoMode: resolvedChartAutoMode,\n })\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AASA,IAAI,SAA0B;AAEvB,SAAS,mBAAmB,SAA2B;AAC5D,MAAI,CAAC,QAAQ;AACX,aAAS,IAAI,SAAS,OAAO;AAAA,EAC/B;AACA,SAAO;AACT;AAEO,SAAS,oBAAqC;AACnD,SAAO;AACT;AAEO,SAAS,sBAA4B;AAC1C,MAAI,QAAQ;AACV,WAAO,MAAM;AACb,aAAS;AAAA,EACX;AACF;;;ACEA,IAAM,iCAAiC;AAEvC,IAAM,2BAA+D;AAAA,EACnE,iBAAiB;AAAA,EACjB,sBAAsB;AAAA,EACtB,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,sBAAsB;AAAA,EACtB,0BAA0B;AAC5B;AAsBO,SAAS,mBACd,OACA,YACA,SACuB;AACvB,QAAM,cAAc,SAAS,uBAAuB;AACpD,QAAM,uBAAuB,2BAA2B;AAExD,SAAO,MAAM;AAAA,IAAI,CAAC,SAChB;AAAA,MACE;AAAA,QACE,MAAM,KAAK;AAAA,QACX,OAAO,KAAK;AAAA,QACZ,aAAa,KAAK;AAAA,QAClB,YAAY,sBAAsB,KAAK,WAAW;AAAA,QAClD,MAAM,QAAQ,aAAqB,QAAiB;AAClD,gBAAM,MAAM,WAAW;AACvB,gBAAM,UAAgC;AAAA,YACpC,IAAI,IAAI;AAAA,YACR,cAAc,IAAI,iBAAiB,IAAI,EAAE;AAAA,YACzC,WAAW,IAAI;AAAA,YACf,QAAQ,IAAI;AAAA,YACZ,sBAAsB,IAAI;AAAA,YAC1B,kBAAkB,IAAI;AAAA,YACtB,iBAAiB,IAAI;AAAA,YACrB,YAAY,IAAI;AAAA,YAChB,kBAAkB,IAAI;AAAA,YACtB,qBAAqB;AAAA,YACrB,aAAa,CAAC,OAAO,QAAQA,aAAY,0BAA0B,OAAO,QAAeA,QAAc;AAAA,YACvG,qBAAqB,CAAC,aACpB;AAAA,cACE;AAAA,cACA,IAAI;AAAA,YACN;AAAA,UACJ;AACA,gBAAM,SAAS,MAAM,oBAAoB,MAAM,QAAQ,OAAO;AAC9D,gBAAM,UAAU,OAAO;AACvB,cAAI,CAAC,MAAM,QAAQ,SAAS,WAAW,EAAG,QAAO;AAEjD,gBAAM,EAAE,aAAa,OAAO,QAAQ,GAAG,aAAa,IAAI;AACxD,gBAAM,gBAAgB,IAAI;AAC1B,gBAAM,iBAAiB,2BAA2B;AAAA,YAChD;AAAA,YACA,kBAAkB;AAAA,YAClB,gBAAgB,eAAe,kBAAkB;AAAA,YACjD,iBAAiB,IAAI;AAAA,YACrB,QAAQ,IAAI;AAAA,YACZ,qBAAqB;AAAA,YACrB,oBAAoB,yBAAyB,KAAK,IAAI,KAAK;AAAA,YAC3D;AAAA,YACA,QAAQ,kBAAkB,KAAK;AAAA,UACjC,CAAC;AACD,gBAAM,eAAe,EAAE,GAAI,QAAQ,EAAE,MAAM,IAAI,CAAC,GAAI,GAAI,SAAS,EAAE,OAAO,IAAI,CAAC,EAAG;AAClF,iBAAO;AAAA,YACL,SAAS,CAAC,EAAE,MAAM,QAAQ,MAAM,eAAe,KAAK,CAAC;AAAA,YACrD,SAAS,OAAO,KAAK,YAAY,EAAE,SAAS,IAAI,eAAe;AAAA,UACjE;AAAA,QACF;AAAA,MACF;AAAA,MACA;AAAA,IACF;AAAA,EACF;AACF;;;ACjHA,YAAY,QAAQ;AACpB,YAAY,UAAU;AAkCf,SAAS,cAAc,WAAkC;AAC9D,QAAM,aAAkB,UAAK,WAAW,iBAAiB;AACzD,MAAI,CAAI,cAAW,UAAU,GAAG;AAC9B,WAAO,EAAE,SAAS,CAAC,GAAG,kBAAkB,MAAM,WAAW,KAAK;AAAA,EAChE;AAEA,MAAI;AACF,UAAM,OAAO,KAAK,MAAS,gBAAa,YAAY,OAAO,CAAC;AAE5D,UAAM,WAAW,KAAK,WAAW,CAAC,GAAG,IAAI,CAAC,MAA+B;AACvE,YAAM,WAAY,EAAE,YAAuB;AAC3C,YAAM,cAAc,EAAE;AACtB,YAAM,aAAa,cAAc,UAAU,WAAW;AACtD,YAAM,SAAU,EAAE,UAAqB;AACvC,YAAM,cAAc,OAAO,WAAW,MAAM,IAAI,KAAK;AACrD,aAAO;AAAA,QACL,GAAG;AAAA,QACH,QAAQ,cAAc;AAAA,MACxB;AAAA,IACF,CAAC;AACD,WAAO;AAAA,MACL;AAAA,MACA,kBAAkB,KAAK,oBAAoB;AAAA,MAC3C,WAAW,KAAK,aAAa;AAAA,IAC/B;AAAA,EACF,QAAQ;AACN,WAAO,EAAE,SAAS,CAAC,GAAG,kBAAkB,MAAM,WAAW,KAAK;AAAA,EAChE;AACF;AAEA,SAAS,YAAY,MAAoC,SAA8C;AACrG,MAAI,QAAQ,QAAQ,KAAK,CAAC,MAAM,EAAE,OAAO,KAAK,QAAQ,EAAG,QAAO;AAChE,QAAM,WAAW,QAAQ,CAAC;AAC1B,MAAI,CAAC,SAAU,QAAO;AACtB,SAAO,EAAE,UAAU,SAAS,IAAI,SAAS,SAAS,MAAM;AAC1D;AAEO,SAAS,0BAA0B,WAA2C;AACnF,QAAM,QAAQ,cAAc,SAAS;AACrC,QAAM,OAAO,YAAY,MAAM,kBAAkB,MAAM,OAAO;AAC9D,MAAI,CAAC,KAAM,QAAO;AAClB,QAAM,SAAS,MAAM,QAAQ,KAAK,CAAC,MAAM,EAAE,OAAO,KAAK,QAAQ;AAC/D,MAAI,CAAC,OAAQ,QAAO;AACpB,SAAO,EAAE,GAAG,QAAQ,OAAO,KAAK,WAAW,OAAO,MAAM;AAC1D;AAqKO,SAASC,cAAa,QAAyC;AACpE,SAAO,aAAiB,MAAuB;AACjD;;;ACzPA,YAAYC,SAAQ;AACpB,YAAYC,WAAU;AAIf,SAAS,oBAAoB,WAAmB,aAA6C;AAClG,QAAM,WAAgB,WAAK,WAAW,cAAc,GAAG,WAAW,KAAK;AACvE,MAAI,CAAI,eAAW,QAAQ,EAAG,QAAO;AAErC,MAAI;AACF,UAAM,UAAa,iBAAa,UAAU,OAAO;AACjD,WAAO,mBAAmB,SAAS,QAAQ;AAAA,EAC7C,QAAQ;AACN,WAAO;AAAA,EACT;AACF;;;AC0CA,eAAsB,eAAe,SAAyC;AAC5E,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA,WAAW;AAAA,IACX,SAAS;AAAA,IACT;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,QAAQ,CAAC;AAAA,IACT;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,gBAAgB;AAAA,EAClB,IAAI;AAEJ,QAAM,WAAW,kBAAkB;AAGnC,QAAM,cAAc;AAEpB,QAAM,YAAY,0BAA0B,SAAS;AACrD,MAAI,CAAC,WAAW;AACd,YAAQ,EAAE,MAAM,SAAS,OAAO,EAAE,MAAM,eAAe,SAAS,6BAA6B,EAAE,CAAC;AAChG,YAAQ,EAAE,MAAM,QAAQ,YAAY,KAAK,CAAC;AAC1C;AAAA,EACF;AAEA,QAAM,UAAUC,cAAa,SAAS;AACtC,QAAM,IAAI,kBAAkB,MAAM;AAElC,MAAI;AACJ,MAAI,UAAU;AACZ,eAAW,EAAE,SAAS;AAAA,EACxB,WAAW,WAAW;AACpB,eAAW,EAAE,UAAU;AAAA,EACzB;AAEA,QAAM,eAAe,kBAAkB;AAAA,IACrC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AAED,QAAM,UAAU,IAAI,kBAAkB;AAAA,IACpC,SAAS;AAAA,IACT,SAAS,CAAC;AAAA,IACV;AAAA,EACF,CAAC;AAED,MAAI,mBAAmB,WAAW,yBAAyB,QAAW;AACpE,UAAM,aAAa,4BAA4B;AAAA,MAC7C;AAAA,MACA,QAAQ,UAAU;AAAA,MAClB,eAAe,MAAM,QAAQ,WAAW,eAAe,CAAC,CAAC;AAAA,IAC3D,CAAC;AACD,UAAM,oBAAoB,MAAM;AAAA,MAC9B;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,YAAY;AAAA,IACd;AACA,QAAI,kBAAkB,YAAY;AAChC,cAAQ;AAAA,QACN,MAAM;AAAA,QACN,mBAAmB;AAAA,UACjB,gBAAgB,kBAAkB,kBAAkB;AAAA,UACpD,cAAc,kBAAkB,gBAAgB;AAAA,UAChD,aAAa,kBAAkB,eAAe;AAAA,UAC9C,WAAW,KAAK,IAAI;AAAA,QACtB;AAAA,MACF,CAAC;AAAA,IACH;AAAA,EACF,WAAW,mBAAmB,WAAW,yBAAyB,QAAW;AAC3E,cAAU,OAAO,eAAe,kDAAkD;AAAA,MAChF;AAAA,MACA;AAAA,IACF,CAAC;AAAA,EACH;AAEA,MAAI,aAAa,SAAS;AACxB,YAAQ,WAAW,WAAW,CAAC,GAAG,EAAE,OAAO,KAAK,CAAC;AACjD,YAAQ,EAAE,MAAM,QAAQ,YAAY,MAAM,OAAO,QAAQ,WAAW,EAAE,CAAC;AACvE;AAAA,EACF;AAEA,MAAI,UAAkC,CAAC;AACvC,MAAI;AACF,cAAU,cAAc,mBAAmB,UAAU,QAAW,oBAAoB;AAAA,EACtF,QAAQ;AAAA,EAER;AAEA,UAAQ,WAAW,aAAa,CAAC,GAAG,EAAE,oBAAoB,aAAa,OAAO,KAAK,CAAC;AAEpF,QAAM,eAAe,EAAE,6BAA6B;AACpD,MAAI,iBAA8B,CAAC;AACnC,QAAM,iBACJ,kBAAkB,cAAc,CAAC,mCAAmC,WAAW,IAC3E,MAAM,OAAO,CAAC,SAAS,KAAK,SAAS,cAAc,IACnD;AAEN,MAAI;AACF,UAAM,aAAa;AAAA,MACjB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,gBAAgB,eAAe,IAAI,CAAC,SAAS,KAAK,IAAI;AAAA,MACtD,uBAAuB;AAAA,QACrB,oCAAoC;AAAA,UAClC;AAAA,UACA;AAAA,UACA,gBAAgB,eAAe,IAAI,CAAC,SAAS,KAAK,IAAI;AAAA,UACtD;AAAA,QACF,CAAC;AAAA,MACH,EAAE,OAAO,CAAC,eAAe,eAAe,IAAI;AAAA,MAC5C,cAAc,UAAU,SAAS,YAAY,oBAAoB;AAAA,IACnE;AACA,UAAM,iBAAiB,KAAK,IAAI;AAChC,UAAM,gBAAgB,MAAM,mBAAmB,YAAY;AAAA,MACzD,WAAW,sBAAsB;AAAA,QAC/B;AAAA,QACA,QAAQ,UAAU;AAAA,QAClB;AAAA,MACF,CAAC;AAAA,IACH,CAAC;AACD,cAAU,KAAK,UAAU,yBAAyB;AAAA,MAChD,GAAG;AAAA,MACH,WAAW,KAAK,IAAI,IAAI;AAAA,MACxB,oBAAoB,MAAM;AAAA,MAC1B,YAAY;AAAA,IACd,CAAC;AACD,YAAQ,EAAE,MAAM,SAAS,cAAc,CAAC;AAExC,QAAI,wBAAwB;AAC5B,QAAI,cAAc,UAAU,qBAAqB;AAC/C,YAAM,gBAAgB,KAAK,IAAI;AAC/B,YAAM,UAAU,sBAAsB;AAAA,QACpC;AAAA,QACA,QAAQ,UAAU;AAAA,QAClB,aAAa,CAAC,UAAU,QAAQ,EAAE,MAAM,cAAc,WAAW,MAAM,CAAC;AAAA,QACxE,iBAAiB,CAAC,UAAU,QAAQ,EAAE,MAAM,SAAS,SAAS,OAAO,UAAU,WAAW,CAAC;AAAA,QAC3F,eAAe,CAAC,eACd,QAAQ,EAAE,MAAM,SAAS,SAAS,IAAI,UAAU,YAAY,iBAAiB,WAAW,CAAC;AAAA,QAC3F,mBAAmB,CAAC,UAAU,QAAQ,EAAE,MAAM,SAAS,SAAS,OAAO,UAAU,kBAAkB,CAAC;AAAA,QACpG,iBAAiB,CAAC,eAChB,QAAQ,EAAE,MAAM,SAAS,SAAS,IAAI,UAAU,mBAAmB,iBAAiB,WAAW,CAAC;AAAA,MACpG,CAAC;AACD,YAAM,OAAO,MAAM,QAAQ,YAAY,WAAW;AAClD,UAAI,MAAM;AACR,cAAM,YAAY,uBAAuB,IAAI;AAC7C,gBAAQ,EAAE,MAAM,QAAQ,MAAM,UAAU,CAAC;AACzC,gCAAwB,GAAG,YAAY;AAAA;AAAA,EAAO,kBAAkB,IAAI,CAAC;AACrE,kBAAU,KAAK,WAAW,kBAAkB;AAAA,UAC1C,OAAO,KAAK;AAAA,UACZ,OAAO,KAAK,MAAM;AAAA,UAClB,iBAAiB,KAAK,gBAAgB;AAAA,UACtC,WAAW,KAAK,IAAI,IAAI;AAAA,QAC1B,CAAC;AAAA,MACH,OAAO;AACL,kBAAU,KAAK,WAAW,qCAAqC;AAAA,UAC7D,WAAW,KAAK,IAAI,IAAI;AAAA,UACxB,OAAO,cAAc;AAAA,QACvB,CAAC;AACD,gBAAQ,EAAE,MAAM,eAAe,CAAC;AAAA,MAClC;AAAA,IACF;AAEA,UAAM,SAAS,MAAM,aAAa;AAAA,MAChC;AAAA,MACA,QAAQ,UAAU;AAAA,MAClB,cAAc;AAAA,MACd,OAAO;AAAA,MACP;AAAA,MACA;AAAA,MACA,eAAe;AAAA,MACf;AAAA,MACA;AAAA,MACA;AAAA,MACA,gBAAgB,CAAC,qBAAqB;AACpC,yBAAiB;AAAA,MACnB;AAAA,MACA,SAAS,CAAC,cAAc,QAAQ,gBAAgB,WAAW,cAAc;AAAA,MACzE,gBAAgB,CAAC,aAAa;AAC5B,YAAI;AACF,wBAAc,uBAAuB,UAAU,KAAK,UAAU,UAAU,MAAM,CAAC,CAAC;AAAA,QAClF,QAAQ;AAAA,QAER;AAAA,MACF;AAAA,IACF,CAAC;AAED,QAAI,OAAO,OAAO;AAChB,YAAM,kBAAkB,cAAc,OAAO,KAAK;AAClD,cAAQ,EAAE,MAAM,SAAS,OAAO,EAAE,MAAM,cAAc,SAAS,gBAAgB,EAAE,CAAC;AAAA,IACpF;AAEA,YAAQ,WAAW,aAAa,gBAAgB,EAAE,OAAO,KAAK,CAAC;AAC/D,YAAQ,EAAE,MAAM,QAAQ,YAAY,MAAM,OAAO,OAAO,MAAM,CAAC;AAAA,EACjE,SAAS,OAAO;AACd,UAAM,kBAAkB,cAAc,KAAK;AAC3C,cAAU,MAAM,eAAe,yBAAyB,EAAE,OAAO,OAAO,KAAK,EAAE,CAAC;AAChF,YAAQ,WAAW,SAAS,gBAAgB,EAAE,OAAO,KAAK,CAAC;AAC3D,YAAQ,EAAE,MAAM,SAAS,OAAO,EAAE,MAAM,cAAc,SAAS,gBAAgB,EAAE,CAAC;AAClF,YAAQ,EAAE,MAAM,QAAQ,YAAY,MAAM,OAAO,QAAQ,WAAW,EAAE,CAAC;AAAA,EACzE;AACF;;;AChQA,SAAS,SAAS,WAAoC;AACpD,QAAM,eAAgB,UAAkB,cAAc;AACtD,MAAI,CAAC,cAAc;AACjB,UAAM,OAAO,OAAO,IAAI,MAAM,4BAA4B,GAAG,EAAE,YAAY,IAAI,CAAC;AAAA,EAClF;AACA,SAAO,aAAa,aAAa;AACnC;AAEA,IAAM,qBAAqB,oBAAI,IAAI,CAAC,aAAa,CAAC;AAE3C,SAAS,qBAAqB,mBAA4B,gBAAoC;AACnG,MAAI,mBAAmB;AACrB,UAAM,iBAAiB,IAAI,IAAY,2BAA2B;AAClE,WAAO,oBAAoB;AAAA,MACzB,CAAC,SACC,eAAe,IAAI,KAAK,IAAI,KAC3B,KAAK,aAAa,cAAc,gBAAgB,IAAI,KAAK,IAAI,KAAK,CAAC,mBAAmB,IAAI,KAAK,IAAI;AAAA,IACxG;AAAA,EACF;AAEA,SAAO,iBACH,oBAAoB,OAAO,CAAC,SAAS,KAAK,aAAa,cAAc,eAAe,IAAI,KAAK,IAAI,CAAC,IAClG;AACN;AAGO,SAAS,kBACd,mBACA,qBACoB;AACpB,MAAI,mBAAmB;AACrB,WAAO,IAAI,IAAI,0BAA0B,uBAAuB,CAAC,CAAC,CAAC;AAAA,EACrE;AACA,SAAO,wBAAwB,SAAY,OAAO,IAAI,IAAI,0BAA0B,mBAAmB,CAAC;AAC1G;AAEO,SAAS,wBACd,WACA,eACA,sBACqH;AACrH,SAAO,OAAO,QAAQ,SAAS,gBAAgB;AAC7C,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,IAAI;AAEJ,UAAM,YAAY,SAAS,SAAS;AAEpC,QAAI;AACJ,QAAI;AACJ,QAAI,aAAa;AACf,YAAM,kBAAkB,oBAAoB,WAAW,WAAW;AAClE,UAAI,iBAAiB,cAAc;AACjC,gCAAwB,gBAAgB;AAAA,MAC1C;AACA,8BAAwB,iBAAiB;AAAA,IAC3C;AAEA,UAAM,YAAY,0BAA0B,SAAS;AACrD,UAAM,uBAAuB,mBAAmB,wBAAwB;AACxE,UAAM,gBAAgB,YAAaC,cAAa,SAAS,EAAE,iBAAiB,QAAU;AACtF,UAAM,sBAAsB,KAAK,MAAM,iBAAiB,uBAAuB,IAAI;AAEnF,UAAM,KAAM,UAAkB,OAAO,SAAS;AAC9C,UAAM,wBAAuC,iBAAiB;AAC9D,UAAM,eAAe,8BAA8B;AAAA,MACjD;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,qBAAqB,oBAAoB;AAAA,MACzC,eAAe;AAAA,IACjB,CAAC;AACD,UAAM,oBAAoB,aAAa;AACvC,UAAM,wBACJ,CAAC,WAAW,mBAAmB,0BAA0B,aACrD,wCAAwC,qBAAqB,IAC7D;AACN,UAAM,iBAAiB;AAAA,MACrB;AAAA,MACA,oBAAoB,aAAa,sBAAsB;AAAA,IACzD;AACA,UAAM,oBAAoB,qBAAqB,mBAAmB,cAAc;AAGhF,UAAM,oBAAoB,CAAC,CAAC,MAAM,CAAC,CAAC,wBAAyB,MAAM,qBAAqB,UAAU,SAAS;AAC3G,UAAM,mBAAmB,oBACrB,oBACA,kBAAkB,OAAO,CAAC,SAAS,KAAK,SAAS,yBAAyB;AAE9E,UAAM,aAAa,KACf;AAAA,MACE;AAAA,MACA,OAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA,kBAAkB,OAAO;AAAA,QACzB,iBAAiB,WAAW;AAAA,QAC5B,YAAY,OAAO;AAAA,QACnB,kBAAkB,OAAO;AAAA,MAC3B;AAAA,MACA,EAAE,oBAAoB;AAAA,IACxB,IACA,CAAC;AAGL,QAAI,mBAAmB;AACrB,8BAAwB,CAAC,uBAAuB,4BAA4B,MAAM,CAAC,EAAE,OAAO,OAAO,EAAE,KAAK,MAAM;AAAA,IAClH;AAEA,UAAM,WAAW,IAAI,aAAa,SAAS;AAC3C,aAAS,KAAK;AACd,UAAM,YAAY,WAAW,IAAI,CAAC,MAAwB,EAAE,IAAI;AAEhE,QAAI;AACJ,QAAI;AACJ,QAAI,mBAAmB;AACrB,YAAM,MAAM,aAAa,YAAY,wBAAwB,UAAU,OAAO;AAC9E,yBAAmB,EAAE,MAAM,IAAI,MAAM,QAAQ,IAAI,OAAO;AAAA,IAC1D,WAAW,SAAS;AAClB,YAAM,MAAM,SAAS,eAAe,OAAO;AAC3C,UAAI,IAAK,oBAAmB,EAAE,MAAM,IAAI,MAAM,QAAQ,IAAI,OAAO;AAAA,IACnE,WAAW,iBAAiB;AAC1B,YAAM,WAAW,SAAS,aAAa,YAAY,SAAS,SAAS;AACrE,YAAM,OACJ,0BAA0B,eAAe,+BAA+B,UAAU,QAAQ,SAAS,IAAI;AACzG,UAAI,KAAM,qBAAoB;AAAA,IAChC;AAEA,QAAI,mBAAmB;AACrB,YAAM,oBAAoB,wBAAwB;AAAA,QAChD,UAAU,YAAY;AAAA,QACtB,cAAc;AAAA,QACd,eAAe,IAAI,IAAY,2BAA2B;AAAA,QAC1D;AAAA,QACA,gBAAgB,CAAC,OACf,0BAA0B,eACtB,+BAA+B,IAAI,QAAQ,CAAC,kBAAkB,SAAS,eAAe,aAAa,CAAC,IACpG,SAAS,eAAe,EAAE;AAAA,MAClC,CAAC;AACD,iBAAW,KAAK,iBAAwB;AAAA,IAC1C;AAEA,UAAM,sBAAsB,mBAAmB,UAC3C;AAAA,MACE,SAAS;AAAA,MACT,uBAAuB,kBAAkB,yBAAyB;AAAA,MAClE,mBAAmB,kBAAkB,qBAAqB;AAAA,MAC1D,sBAAsB,kBAAkB;AAAA,IAC1C,IACA;AAEJ,QAAI;AACJ,QAAI,IAAI;AACN,UAAI;AACF,uBAAe,+BAA+B,gBAAgB,IAAI,EAAE,CAAC;AAAA,MACvE,QAAQ;AAAA,MAER;AAAA,IACF;AAEA,UAAM,eAAe;AAAA,MACnB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,WAAW;AAAA,MACX,UAAU;AAAA,MACV,mBAAmB;AAAA,MACnB,OAAO;AAAA,MACP;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,eAAe;AAAA,IACjB,CAAC;AAAA,EACH;AACF;","names":["options","buildPiModel","fs","path","buildPiModel","buildPiModel"]}
|