@vuu-ui/vuu-popups 0.8.9 → 0.8.10-debug

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/esm/index.js CHANGED
@@ -1,34 +1,1843 @@
1
- var Jh=(o,e,t)=>{if(!e.has(o))throw TypeError("Cannot "+t)};var R=(o,e,t)=>(Jh(o,e,"read from private field"),t?t.call(o):e.get(o)),ce=(o,e,t)=>{if(e.has(o))throw TypeError("Cannot add the same private member more than once");e instanceof WeakSet?e.add(o):e.set(o,t)},Y=(o,e,t,n)=>(Jh(o,e,"write to private field"),n?n.call(o,t):e.set(o,t),t),Xh=(o,e,t,n)=>({set _(r){Y(o,e,r,t)},get _(){return R(o,e,n)}});import{Scrim as n4}from"@salt-ds/lab";import{Button as o4,Text as r4}from"@salt-ds/core";import X0 from"classnames";import{useCallback as Y0,useRef as s4,useState as Z0}from"react";import{useLayoutEffect as j0,useMemo as e4}from"react";import*as J0 from"react-dom";import*as Yh from"react-dom";import BT from"classnames";var zT=1,$T=({className:o,dataMode:e,x:t=0,y:n=0,win:r=window})=>{let s=r.document.createElement("div");return s.className=BT(`vuuPopup ${zT++}`,o),s.style.cssText=`left:${t}px; top:${n}px;`,e&&(s.dataset.mode=e),r.document.body.appendChild(s),s},Zh=o=>$T(o),sl=(o,e,t,n,r)=>{e.style.cssText=`left:${t}px; top:${n}px;position: absolute;`,Yh.render(o,e,r)};import IW,{useEffect as LW,useState as AW}from"react";import NW from"classnames";import{Fragment as BW,jsx as zW,jsxs as VW}from"react/jsx-runtime";import{Dropdown as UW}from"@salt-ds/lab";import{useCallback as QW}from"react";import JW from"classnames";import{jsx as YW}from"react/jsx-runtime";import N0,{Suspense as n$,useEffect as o$}from"react";import{partition as rm}from"@vuu-ui/vuu-utils";import QT from"classnames";var WT={},_T={},il={};function $e(o,e,t="component"){il[o]=e,t==="container"?WT[o]=!0:t==="view"&&(_T[o]=!0)}import{Button as em,useControlled as KT}from"@salt-ds/core";import tm from"classnames";import{useCallback as UT}from"react";import{jsx as Ls,jsxs as qT}from"react/jsx-runtime";var Zn="vuuDrawer",nm=o=>typeof o=="string"?o:o+"px",GT=(o,e,t)=>{let n=e!==void 0,r=t!==void 0;if(!(!o&&!r&&!n))return!r&&!n?o:{...o,"--drawer-size":n?nm(e):void 0,"--drawer-peek-size":r?nm(t):void 0}},om=({children:o,className:e,clickToOpen:t,defaultOpen:n,sizeOpen:r,sizeClosed:s,style:i,open:l,position:a="left",inline:u,onClick:c,peekaboo:d=!1,toggleButton:p,...f})=>{let[h,g]=KT({controlled:l,default:n!=null?n:!1,name:"Drawer",state:"open"}),m=tm(Zn,e,`${Zn}-${a}`,{[`${Zn}-open`]:h,[`${Zn}-inline`]:u,[`${Zn}-over`]:!u,[`${Zn}-peekaboo`]:d}),y=UT(()=>{g(!h)},[h,g]),w=GT(i,r,s),v=t?y:c,x=()=>Ls("div",{className:tm("vuuToggleButton-container"),children:h?Ls(em,{"aria-label":"close",onClick:y,"data-icon":"close",variant:"secondary"}):Ls(em,{"aria-label":"open",onClick:y,"data-icon":"close",variant:"secondary"})});return qT("div",{...f,className:m,onClick:v,style:w,children:[p=="start"?x():null,Ls("div",{className:`${Zn}-liner`,children:Ls("div",{className:`${Zn}-content`,children:o})}),p=="end"?x():null]})};om.displayName="Drawer";var ll=om;import{jsx as XT,jsxs as YT}from"react/jsx-runtime";var jT=o=>o.type===ll,JT=({props:{position:o="left"}})=>o.match(/top|bottom/),sm=o=>{let{children:e,className:t,id:n,style:r}=o,s="vuuDockLayout",[i,l]=rm(e,jT),[a,u]=rm(i,JT),c=a.length===0?"horizontal":u.length===0?"vertical":"both",d=QT(s,t,`${s}-${c}`);return YT("div",{className:d,id:n,style:r,children:[i,XT("div",{className:`${s}-content`,children:l})]})};sm.displayName="DockLayout";$e("DockLayout",sm,"container");import{forwardRef as eE}from"react";import{jsx as tE}from"react/jsx-runtime";var Ju=eE(function({resizeable:e,...t},n){return tE("div",{...t,className:"Component",ref:n})});Ju.displayName="Component";var Xu=Ju;$e("Component",Ju);import F_,{isValidElement as V_}from"react";var nE={},gn=(o,e)=>{var n;let t=bt(o);return(n=t[e])!=null?n:t[`data-${e}`]},bt=o=>(o==null?void 0:o.props)||o||nE;import{Children as oE,isValidElement as im,useLayoutEffect as rE,useMemo as sE,useRef as iE}from"react";var lE=[],aE=0,ko=o=>{let e=Array.isArray(o),t=e?o.length:oE.count(o);return e&&o.every(im)?o:t===1&&!e&&im(o)?[o]:t>1?o:lE},on=(o,e)=>{let t=iE(!1);rE(()=>{t.current?o():t.current=!0},e)},Pe=o=>sE(()=>o!=null?o:`vuu-${++aE}`,[o]);import{boxContainsPoint as i3}from"@vuu-ui/vuu-utils";var Zu={north:1,east:2,south:4,west:8,header:16,centre:32,absolute:64},ec={AFTER:"after",BEFORE:"before"},Lo=Object.freeze({North:Io("north"),East:Io("east"),South:Io("south"),West:Io("west"),Header:Io("header"),Centre:Io("centre"),Absolute:Io("absolute")});function Io(o){return Object.freeze({offset:o==="north"||o==="west"?0:o==="south"||o==="east"?1:NaN,valueOf:function(){return Zu[o]},toString:function(){return o},North:o==="north",South:o==="south",East:o==="east",West:o==="west",Header:o==="header",Centre:o==="centre",NorthOrSouth:o==="north"||o==="south",EastOrWest:o==="east"||o==="west",NorthOrWest:o==="north"||o==="west",SouthOrEast:o==="east"||o==="south",Absolute:o==="absolute"})}var u3=Lo.North,c3=Lo.South,d3=Lo.East,p3=Lo.West,f3=Lo.Header,h3=Lo.Centre;var{north:cE,south:dE,east:pE,west:fE}=Zu,w3=pE+fE,T3=cE+dE;import hE from"classnames";import{jsx as lm}from"react/jsx-runtime";function am(o,e=0,t=0){let{pos:n,clientRect:r}=o,s=20;return n.position.West?[r.left-t+s,n.y-e,"left"]:n.position.South?[n.x-t,r.bottom-e-s,"bottom"]:n.position.East?[r.right-t-s,n.y-e,"right"]:[n.x-t,r.top-e+s,"top"]}var tc="vuuDropMenu",um=({className:o,dropTarget:e,onHover:t,orientation:n})=>{let r=e.toArray();return lm("div",{className:hE(tc,o,`${tc}-${n}`),onMouseLeave:()=>t(null),children:r.map((s,i)=>lm("div",{className:`${tc}-item`,"data-icon":i===0?"column-2A":"column-2B",onMouseEnter:()=>t(s)},i))})};import{jsx as CE}from"react/jsx-runtime";var nc=!1,As=null,rn=null,mE=o=>As=o,gE=([o,e])=>`M${o},${e}`,bE=([o,e])=>`L${o},${e}`,cm=([o,...e])=>`${gE(o)} ${e.map(bE)}Z`,yE=o=>{if(o){let[e,t,n,r,s,i,l,a]=o;return`M${e},${t} L${n},${r} M${s},${i} L${l},${a}`}else return""};function xE(){if(document.getElementById("hw-drag-canvas")===null){let o=document.getElementById("root"),e=document.createElement("div");e.id="hw-drag-canvas",e.innerHTML=`
2
- <svg width="100%" height="100%">
3
- <path id="hw-drop-guides" />
4
- <path
5
- id="vuu-drop-outline"
6
- d="M300,132 L380,132 L380,100 L460,100 L460,132, L550,132 L550,350 L300,350z">
7
- <animate
8
- attributeName="d"
9
- id="hw-drop-outline-animate"
10
- begin="indefinite"
11
- dur="300ms"
12
- fill="freeze"
13
- to="M255,33 L255,33,L255,1,L315,1,L315,1,L794,1,L794,164,L255,164Z"
14
- />
15
- </path>
16
- </svg>
17
- `,document.body.insertBefore(e,o)}}var Os=class{constructor(){this.currentPath=null;this.tabMode=null;xE()}prepare(e,t="full-view"){document.body.classList.add("drawing"),this.currentPath=null,this.tabMode=t;let n=this.getPoints(0,0,0,0),r=cm(n),s=document.getElementById("vuu-drop-outline");s==null||s.setAttribute("d",r),this.currentPath=r}clear(){As=null,al(),document.body.classList.remove("drawing"),Re.hidePopup()}get hoverDropTarget(){return As}getPoints(e,t,n,r,s=0,i=0,l=0){let a=this.tabMode==="tab-only";if(i===0)return[[e,t+l],[e,t+l],[e,t],[e+i,t],[e+i,t],[e+n,t],[e+n,t+r],[e,t+r]];if(a){let u=s;return[[u,t],[u,t],[u+i,t],[u+i,t],[u+i,t+l],[u+i,t+l],[u,t+l],[u,t+l]]}else return s===0?[[e,t+l],[e,t+l],[e,t],[e+i,t],[e+i,t+l],[e+n,t+l],[e+n,t+r],[e,t+r]]:[[e,t+l],[e+s,t+l],[e+s,t],[e+s,t],[e+s,t+l],[e+n,t+l],[e+n,t+r],[e,t+r]]}draw(e,t){let r=nc;if(As!==null)this.drawTarget(As);else if(nc=e.nextDropTarget!=null,e.pos.tab?vE(e):rn&&al(),this.drawTarget(e,t),nc){let[s,i,l]=am(e);{let a=CE(um,{dropTarget:e,onHover:mE,orientation:l});Re.showPopup({left:s,top:i,component:a})}}else Re.hidePopup()}drawTarget(e,t){let r=e.getTargetDropOutline(6,t);if(r){let{l:s,t:i,r:l,b:a,tabLeft:u,tabWidth:c,tabHeight:d,guideLines:p}=r,f=l-s,h=a-i;if(this.currentPath){let v=document.getElementById("vuu-drop-outline");v==null||v.setAttribute("d",this.currentPath)}let g=this.getPoints(s,i,f,h,u,c,d),m=cm(g),y=document.getElementById("hw-drop-outline-animate");y==null||y.setAttribute("to",m),y==null||y.beginElement(),this.currentPath=m;let w=document.getElementById("hw-drop-guides");w==null||w.setAttribute("d",yE(p))}}},dm="transition:margin-left .4s ease-out;margin-left: 63px",pm="transition:margin-left .4s ease-out;margin-left: 0px";function vE(o){var l,a;let{AFTER:e,BEFORE:t}=ec,{clientRect:{Stack:n},pos:{tab:r}}=o,{id:s}=o.component.props,i=null;if(n&&r&&r.positionRelativeToTab!==e){let u=r.positionRelativeToTab===t?1:2,c=`:scope .hwTabstrip > .hwTabstrip-inner > .hwTab:nth-child(${r.index+u})`;i=(l=document.getElementById(s))==null?void 0:l.querySelector(c),i?(rn===null||rn!==i)&&(i.style.cssText=dm,rn&&(rn.style.cssText=pm),rn=i):al()}else if((r==null?void 0:r.positionRelativeToTab)===t){if(rn===null){let u=".vuuHeader-title";i=(a=document.getElementById(s))==null?void 0:a.querySelector(u),i.style.cssText=dm,rn=i}}else al()}function al(){rn&&(rn.style.cssText=pm,rn=null)}var X3=new Os;import SE from"classnames";import{forwardRef as wE}from"react";import{jsx as TE}from"react/jsx-runtime";var Hs=wE(function({children:e,className:t,dropTarget:n,resizeable:r,...s},i){let l=SE("DraggableLayout",t);return TE("div",{className:l,ref:i,...s,children:e})}),hm="DraggableLayout";Hs.displayName=hm;$e(hm,Hs,"container");import{useForkRef as _E}from"@salt-ds/core";import KE from"classnames";import{forwardRef as UE}from"react";import{getUniqueId as HE}from"@vuu-ui/vuu-utils";import zs,{useCallback as fl,useMemo as Tm,useRef as hl,useState as FE}from"react";import EE from"classnames";import{jsx as ME}from"react/jsx-runtime";var mm="vuuPlaceholder",ul=({className:o,closeable:e,flexFill:t,resizeable:n,shim:r,...s})=>ME("div",{className:EE(mm,o,{[`${mm}-shim`]:r}),...s,"data-placeholder":!0,"data-resizeable":!0});ul.displayName="Placeholder";$e("Placeholder",ul);import RE from"classnames";import DE,{useCallback as Fs,useRef as cl,useState as PE}from"react";import{jsx as gm}from"react/jsx-runtime";var dl="vuuSplitter",bm=DE.memo(function({column:e,index:t,onDrag:n,onDragEnd:r,onDragStart:s,style:i}){let l=cl(),a=cl(null),u=cl(0),[c,d]=PE(!1),p=Fs(({key:b,shiftKey:C})=>{let M=C?10:1;e&&b==="ArrowDown"?n(t,M):e&&b==="ArrowUp"||!e&&b==="ArrowLeft"?n(t,-M):!e&&b==="ArrowRight"&&n(t,M)},[e,t,n]),f=Fs(b=>{let{key:C}=b;(e&&(C==="ArrowUp"||C==="ArrowDown")||!e&&(C==="ArrowLeft"||C==="ArrowRight"))&&(s(t),p(b),h.current=p)},[e,p,t,s]),h=cl(f),g=b=>h.current(b),m=Fs(b=>{l.current=!0;let C=b[e?"clientY":"clientX"],M=C-u.current;C&&C!==u.current&&n(t,M),u.current=C},[e,t,n]),y=Fs(()=>{var b;window.removeEventListener("mousemove",m,!1),window.removeEventListener("mouseup",y,!1),r(),d(!1),(b=a.current)==null||b.focus()},[m,r,d]),w=Fs(b=>{u.current=e?b.clientY:b.clientX,s(t),window.addEventListener("mousemove",m,!1),window.addEventListener("mouseup",y,!1),b.preventDefault(),d(!0)},[e,m,y,t,s,d]),v=()=>{var b;l.current?l.current=!1:(b=a.current)==null||b.focus()},x=()=>{h.current=f},S=RE(dl,{[`${dl}-active`]:c,[`${dl}-column`]:e});return gm("div",{className:S,"data-splitter":!0,ref:a,role:"separator",style:i,onBlur:x,onClick:v,onKeyDown:g,onMouseDown:w,tabIndex:0,children:gm("div",{className:`${dl}-grab-zone`})})});import{uuid as HK}from"@vuu-ui/vuu-utils";import VK from"react";var xm={},ym="auto";var Mr=o=>{let{style:{width:e=ym,height:t=ym}=xm}=o.props,n=typeof t=="number",r=typeof e=="number";return n&&r?{height:t,width:e}:n?{height:t}:r?{width:e}:void 0};function vm(o){let{style:{flex:e,flexGrow:t,flexShrink:n,flexBasis:r}=xm}=o.props;return typeof e=="number"||r===0&&t===1&&n===1?!0:typeof r!="number"}var kE={},Vs=1,Bs=2,IE=o=>typeof o.intrinsicSize=="number",LE=(o,e)=>{let t={};return o.forEach(n=>{t[n]=gn(e,n)}),t},pl=(o,e,t)=>o.map((n,r)=>{var a;let s=gn(n,"resizeable"),{[e]:i}=(a=Mr(n))!=null?a:kE,l=vm(n);return t?{index:r,flexOpen:l,intrinsicSize:i,resizeable:s,...LE(t,n)}:{index:r,flexOpen:l,intrinsicSize:i,resizeable:s}}),Cm=o=>{let e=o.length,t=o.every(IE),n=Array(e).fill(0);if(t&&e>0&&(n[0]=Bs,n[e-1]=Bs),e<2)return n;for(let r=0,s=0;r<e-1;r++)o[r].resizeable&&!s&&(s=Vs),n[r]+=s;for(let r=e-1;r>0&&(n[r]&Vs&&(n[r]-=Vs),!o[r].resizeable);r--);return n},Sm=(o,e)=>{let t=OE(o,e),n=NE(o,e),r=t!==-1&&n!==-1?[t,n]:void 0,s=AE(o,r);return[r,s]};function AE(o,e){if(e){let t=[];for(let n=0;n<o.length;n++)o[n].flexOpen&&!e.includes(n)&&t.push(n);return t}}function OE(o,e){let t=e,n=!1;for(;t>=1&&!n;)t=t-1,n=wm(o,t);return t}function NE(o,e){let t=e,n=!1,r=o.length;for(;t<r-1&&!n;)t=t+1,n=wm(o,t);return t===r?-1:t}function wm(o,e){let{placeholder:t,splitter:n,resizeable:r,intrinsicSize:s}=o[e];return!!(!n&&!s&&(t||r))}var VE=o=>!o.splitter&&!o.placeholder,Mm=({children:o,onSplitterMoved:e,style:t})=>{let n=hl(null),r=hl(),s=hl(),i=hl([]),[,l]=FE({}),a=m=>{s.current=m,l({})},u=(t==null?void 0:t.flexDirection)==="column",c=u?"height":"width",d=Tm(()=>Array.isArray(o)?o:zs.isValidElement(o)?[o]:[],[o]),p=fl(m=>{let{current:y}=r;if(y){let[w,v]=Sm(y,m);w&&(w.forEach(x=>{var b;let S=(b=n.current)==null?void 0:b.childNodes[x];if(S){let{size:C,minSize:M}=WE(S,c);y[x].currentSize=C,y[x].minSize=M}}),v&&v.forEach(x=>{var b;let S=(b=n.current)==null?void 0:b.childNodes[x];if(S){let{[c]:C}=S.getBoundingClientRect();y[x].flexBasis=C}}))}},[c]),f=fl((m,y)=>{s.current&&r.current&&a(zE(s.current,r.current,y,c))},[c]),h=fl(()=>{let m=r.current;m&&(e==null||e(m.filter(VE))),m==null||m.forEach(y=>{y.currentSize=void 0,y.flexBasis=void 0,y.flexOpen=!1})},[e]),g=fl(m=>zs.createElement(bm,{column:u,index:m,key:`splitter-${m}`,onDrag:f,onDragEnd:h,onDragStart:p}),[f,h,p,u]);return Tm(()=>{let[m,y]=BE(d,c,g,i.current);r.current=y,s.current=m},[d,g,c]),{content:s.current||[],rootRef:n}};function BE(o,e,t,n){let r=pl(o,e),s=Cm(r),i=[],l=[];for(let a=0;a<o.length;a++){let u=o[a];if(a===0&&s[a]&Bs&&(i.push(Em(a)),l.push({placeholder:!0,shim:!0})),u.key==null){let c=n[a]||(n[a]=HE());i.push(zs.cloneElement(u,{key:c}))}else i.push(u);l.push(r[a]),a>0&&s[a]&Bs?(i.push(Em(a)),l.push({placeholder:!0})):s[a]&Vs&&(i.push(t(i.length)),l.push({splitter:!0}))}return[i,l]}function zE(o,e,t,n){return $E(e,t)?o.map((s,i)=>{let l=e[i],{currentSize:a,flexOpen:u,flexBasis:c}=l,d=a!==void 0;if(d||u){let{flexBasis:p}=s.props.style||{},f=d?l.currentSize:c;return f!==p?zs.cloneElement(s,{style:{...s.props.style,flexBasis:f,[n]:"auto"}}):s}else return s}):o}function $E(o,e){let t=[];o.forEach((c,d)=>{c.currentSize!==void 0&&t.push(d)});let n=e<0?t[0]:t[1],{currentSize:r=0,minSize:s=0}=o[n];if(r===s)return!1;if(Math.abs(e)>r-s){let c=e<0?-1:1;e=Math.max(0,r-s)*c}let i=o[t[0]],{currentSize:l=0}=i;i.currentSize=l+e;let a=o[t[1]],{currentSize:u=0}=a;return a.currentSize=u-e,!0}function Em(o){return zs.createElement(ul,{shim:o===0,key:`placeholder-${o}`})}function WE(o,e){let{[e]:t}=o.getBoundingClientRect(),r=getComputedStyle(o).getPropertyValue(`min-${e}`),s=r.endsWith("px")?parseInt(r,10):0;return{size:t,minSize:s}}import{jsx as GE}from"react/jsx-runtime";var rc="hwFlexbox",Rm=UE(function(e,t){let{breakPoints:n,children:r,column:s,className:i,flexFill:l,gap:a,fullPage:u,id:c,onSplitterMoved:d,resizeable:p,row:f,spacing:h,splitterSize:g,style:m,...y}=e,{content:w,rootRef:v}=Mm({children:r,onSplitterMoved:d,style:m}),x=KE(rc,i,{[`${rc}-column`]:s,[`${rc}-row`]:f,"flex-fill":l,"full-page":u});return GE("div",{...y,className:x,"data-resizeable":p||void 0,id:c,ref:_E(v,t),style:{...m,gap:a,"--spacing":h},children:w})});Rm.displayName="Flexbox";var $s=Rm;import{useCallback as eM}from"react";var Ws={ADD:"add",BLUR:"blur",BLUR_SPLITTER:"blur-splitter",DRAG_START:"drag-start",DRAG_STARTED:"drag-started",DRAG_DROP:"drag-drop",FOCUS:"focus",FOCUS_SPLITTER:"focus-splitter",INITIALIZE:"initialize",LAYOUT_RESIZE:"layout-resize",MAXIMIZE:"maximize",MINIMIZE:"minimize",REMOVE:"remove",REPLACE:"replace",RESTORE:"restore",SAVE:"save",SET_TITLE:"set-title",SPLITTER_RESIZE:"splitter-resize",SWITCH_TAB:"switch-tab",TEAR_OUT:"tear-out"};import{useCallback as G8,useContext as Pm,useEffect as q8,useRef as Q8,useState as j8}from"react";import jU from"react";import{uuid as V5}from"@vuu-ui/vuu-utils";import z5 from"react";import{uuid as S5}from"@vuu-ui/vuu-utils";import T5,{cloneElement as E5}from"react";import{useCallback as Rr}from"react";var Ft=new Map,Vt=new Map;var Dr=()=>{let o=Rr((i,l)=>{let a=Vt.get(i);if(a)return l!==void 0&&a[l]!==void 0?a[l]:l!==void 0?void 0:a},[]),e=Rr((i,l,a)=>{if(l===void 0)Vt.set(i,a);else if(Vt.has(i)){let u=Vt.get(i);Vt.set(i,{...u,[l]:a})}else Vt.set(i,{[l]:a})},[]),t=Rr((i,l)=>{if(Vt.has(i)){if(l===void 0)Vt.delete(i);else if(Vt.get(i)[l]){let{[l]:u,...c}=Vt.get(i);Object.keys(c).length>0?Vt.set(i,c):Vt.delete(i)}}},[]),n=Rr((i,l)=>{let a=Ft.get(i);if(a)return l!==void 0?a[l]:a},[]),r=Rr((i,l,a)=>{if(l===void 0)Ft.set(i,a);else if(Ft.has(i)){let u=Ft.get(i);Ft.set(i,{...u,[l]:a})}else Ft.set(i,{[l]:a})},[]),s=Rr((i,l)=>{if(Ft.has(i)){if(l===void 0)Ft.delete(i);else if(Ft.get(i)[l]){let{[l]:u,...c}=Ft.get(i);Object.keys(c).length>0?Ft.set(i,c):Ft.delete(i)}}},[]);return{loadSessionState:o,loadState:n,saveSessionState:e,saveState:r,purgeState:s,purgeSessionState:t}};import{cloneElement as oU}from"react";import j5 from"react";import cU from"react";import bU from"react";import{uuid as RU}from"@vuu-ui/vuu-utils";import PU from"react";import{createContext as XE}from"react";var YE=o=>console.log(`dispatch ${o.type}, have you forgotten to provide a LayoutProvider ?`),lc=XE({dispatchLayoutProvider:YE,version:-1});import{useCallback as P8,useRef as k8}from"react";import{jsx as l9}from"react/jsx-runtime";var Tt=()=>{let{dispatchLayoutProvider:o}=Pm(lc);return o},km=()=>{let{createNewChild:o}=Pm(lc);return o};import{jsx as tM}from"react/jsx-runtime";var Im=function(e){let{path:t}=e,n=Tt(),r=eM(s=>{n({type:Ws.SPLITTER_RESIZE,path:t,sizes:s})},[n,t]);return tM($s,{...e,onSplitterMoved:r})};Im.displayName="Flexbox";$e("Flexbox",Im,"container");import{useForkRef as bM}from"@salt-ds/core";import yM from"classnames";import{forwardRef as xM,useMemo as vM}from"react";import{useCallback as Fm,useEffect as lM,useRef as cc,useState as aM}from"react";import{useCallback as nM,useLayoutEffect as Lm,useRef as oM}from"react";var Om=["height","width"];var Ao=new WeakMap,Nm=(o,e,t)=>{switch(t){case"height":return e.height;case"scrollHeight":return o.scrollHeight;case"scrollWidth":return o.scrollWidth;case"width":return e.width;default:return 0}},Am=new ResizeObserver(o=>{for(let e of o){let{target:t,contentRect:n}=e,r=Ao.get(t);if(r){let{onResize:s,measurements:i}=r,l=!1;for(let[a,u]of Object.entries(i)){let c=Nm(t,n,a);c!==u&&(l=!0,i[a]=c)}l&&s&&s(i)}}});function ml(o,e,t,n=!1){let r=oM(e),s=nM(i=>{let l=i.getBoundingClientRect();return r.current.reduce((a,u)=>(a[u]=Nm(i,l,u),a),{})},[]);Lm(()=>{let i=o.current,l=!1;async function a(){Ao.set(i,{measurements:{}}),l=!1;let{fonts:u}=document;if(u&&await u.ready,!l){let c=Ao.get(i);if(c){let d=s(i);c.measurements=d,Am.observe(i),n&&t(d)}}}if(i){if(Ao.has(i))throw Error("useResizeObserver attemping to observe same element twice");a()}return()=>{i&&Ao.has(i)&&(Am.unobserve(i),Ao.delete(i),l=!0)}},[o,s,n,t]),Lm(()=>{let i=o.current,l=Ao.get(i);if(l){if(r.current!==e){r.current=e;let a=s(i);l.measurements=a}l.onResize=t}},[e,s,o,t])}function rM(o,e){let t=document.body.querySelector(`.${o}`),n={get:function(r,s){let i=r.getPropertyValue(`--${o}-breakpoint-${s}`);return i?parseInt(i):void 0}};return t?new Proxy(getComputedStyle(t),n):e!=null?e:{}}var sM=([,o],[,e])=>e-o,uc=o=>Object.entries(o).sort(sM).map(([e,t],n,r)=>[e,t,n<r.length-1?r[n+1][1]:9999]),ac=null,iM=(o="salt")=>{let{xs:e,sm:t,md:n,lg:r,xl:s}=rM(o);return uc({xs:e,sm:t,md:n,lg:r,xl:s})},Hm=o=>(ac===null&&(ac=iM(o)),ac);var uM=[],Vm=({breakPoints:o,smallerThan:e},t)=>{let[n,r]=aM(e?!1:"lg"),s=cc(document.body),i=cc(o?uc(o):Hm()),l=cc("lg"),a=Fm(c=>{if(i.current){for(let[d,p]of i.current)if(c>=p)return d}},[i]),u=Fm(c=>{if(e){let d=i.current.find(([p])=>p===e);if(d){let[,,p]=d;return c<p}}else return a(c);return c},[e,a]);return ml(t||s,i.current?["width"]:uM,({width:c})=>{let d=u(c);d!==l.current&&(l.current=d,r(d))},!0),lM(()=>{let c=t||s;if(c.current){let d=l.current;if(i.current){let{clientWidth:p}=c.current,f=u(p);l.current=f,f!==d&&r(f)}}},[r,u,t]),n};var cM="data-collapsible",P9={[cM]:!0,"data-pad-start":!0,"data-pad-end":!0};import{getUniqueId as dM}from"@vuu-ui/vuu-utils";import{cloneElement as pM,isValidElement as fM,useCallback as hM,useMemo as Bm,useRef as dc}from"react";var mM=["xs","sm","md","lg","xl"],gM=12,zm=({children:o,cols:e,style:t})=>{let n=dc(null),r=dc(null),s=dc(),i=e!=null?e:gM,a=(t==null?void 0:t.flexDirection)==="column"?"height":"width",u=Bm(()=>Array.isArray(o)?o:fM(o)?[o]:[],[o]),c=hM((d,p)=>{let f=pl(d,p,mM),h=[],g=[];for(let m=0;m<d.length;m++){let y=d[m],{style:{flex:w,...v}}=y.props;h.push(pM(y,{key:dM(),style:{...v,"--parent-col-count":i}})),g.push(f[m])}return[h,g]},[i]);return Bm(()=>{let[d,p]=c(u,a);r.current=p,s.current=d},[c,u,a]),{cols:i,content:s.current,rootRef:n}};import{jsx as CM}from"react/jsx-runtime";var gl="hwFluidGrid",pc=xM(function(e,t){let{breakPoints:n,children:r,column:s,cols:i=12,className:l,flexFill:a,gap:u=3,fullPage:c,id:d,onSplitterMoved:p,resizeable:f,row:h,showGrid:g,spacing:m,splitterSize:y,style:w,...v}=e,x=vM(()=>ko(r),[r]),{cols:S,content:b,rootRef:C}=zm({children:x,cols:i,style:w}),M=Vm({breakPoints:n},C),D=yM(gl,l,{[`${gl}-column`]:s,[`${gl}-row`]:h,[`${gl}-show-grid`]:g,"flex-fill":a,"full-page":c}),E={...w,"--spacing":m,"--grid-col-count":S,"--grid-gap":u};return CM("div",{...v,className:D,"data-breakpoint":M,"data-cols":S,"data-resizeable":f||void 0,id:d,ref:bM(C,t),style:E,children:b})});pc.displayName="FluidGrid";import{jsx as SM}from"react/jsx-runtime";var $m=function(e){return SM(pc,{...e})};$m.displayName="FluidGrid";$e("FluidGrid",$m,"container");import{Input as uP}from"@salt-ds/core";import{forwardRef as cP,useCallback as dP,useRef as pP}from"react";import{cloneElement as wM,createContext as TM,useContext as EM}from"react";import{jsx as MM}from"react/jsx-runtime";var Wm=TM(void 0);function bl({children:o,collectionHook:e,...t}){return MM(Wm.Provider,{value:e,children:Object.keys(t).length>0?wM(o,t):o})}function _m(){let o=EM(Wm);if(o)return o}var RM=o=>Object.prototype.toString.call(o)==="[object Object]";function Bt(o){return typeof o=="string"?o:RM(o)?Object.prototype.hasOwnProperty.call(o,"label")?String(o.label):(console.warn(["itemToString: you've likely forgotten to set the label prop on the item object.","You can also provide your own `itemToString` implementation."].join(`
18
- `)),""):String(o)}import{useCallback as DM,useEffect as PM,useLayoutEffect as kM,useRef as IM}from"react";var Um=["width"],Gm=["height"],Oo=new Map,qm=(o,e,t)=>{switch(t){case"height":return e.height;case"clientHeight":return o.clientHeight;case"clientWidth":return o.clientWidth;case"contentHeight":return e.contentHeight;case"contentWidth":return e.contentWidth;case"scrollHeight":return Math.ceil(o.scrollHeight);case"scrollWidth":return Math.ceil(o.scrollWidth);case"width":return e.width;default:return 0}};var Km=new ResizeObserver(o=>{for(let e of o){let{target:t,borderBoxSize:n,contentBoxSize:r}=e,s=Oo.get(t);if(s){let[{blockSize:i,inlineSize:l}]=n,[{blockSize:a,inlineSize:u}]=r,{onResize:c,measurements:d}=s,p=!1;for(let[f,h]of Object.entries(d)){let g=qm(t,{height:i,width:l,contentHeight:a,contentWidth:u},f);g!==h&&(p=!0,d[f]=g)}p&&c&&c(d)}}});function Nn(o,e,t,n=!1){let r=IM(e),s=o.current,i=DM(l=>{let{width:a,height:u}=l.getBoundingClientRect(),{clientWidth:c,clientHeight:d}=l;return r.current.reduce((p,f)=>(p[f]=qm(l,{width:a,height:u,contentHeight:d,contentWidth:c},f),p),{})},[]);kM(()=>{async function l(){Oo.set(s,{measurements:{}}),await document.fonts.ready;let a=Oo.get(s);if(a){let u=i(s);a.measurements=u,Km.observe(s),n&&t(u)}else console.log("%cuseResizeObserver an target expected to be under observation wa snot found. This warrants investigation","font-weight:bold; color:red;")}return s&&(Oo.has(s)&&console.log("useResizeObserver attemping to observe same element twice",{target:s}),l()),()=>{s&&Oo.has(s)&&(Km.unobserve(s),Oo.delete(s))}},[i,s]),PM(()=>{let l=o.current,a=Oo.get(l);if(a){if(r.current!==e){r.current=e;let u=i(l);a.measurements=u}a.onResize=t}},[e,i,o,t])}var fc=o=>o==="none";var eo=o=>Array.isArray(o)?o.length>0:o!=null,Qm=o=>Array.isArray(o)?o[0]:o;import{useCallback as It,useMemo as Sl,useRef as wl,useState as qM,isValidElement as lg}from"react";import{isValidElement as hc,Children as LM}from"react";var jm=o=>null;var Jm=o=>null;var mc=(o,e)=>o!==null&&Object.prototype.hasOwnProperty.call(o,e),gc=o=>mc(o,"header"),Xm=o=>mc(o,"childNodes"),_s=(o,e)=>o&&Object.prototype.hasOwnProperty.call(o.props,e),Ym=o=>{if(hc(o)){if(_s(o,"disabled"))return o.props.disabled===!0}else if(mc(o,"disabled"))return o.disabled===!0;return!1},Zm=o=>hc(o)&&_s(o,"focusable")?o.props.focusable:!0,eg=(o,e,t)=>{if(o.childNodes)return o.childNodes.length;if(o.header){let n=t+1,r=0;for(;n<e.length&&!e[n].header;)r++,n++;return r}else return 0},AM=o=>{if(typeof o.props.children=="string")return o.props.children;if(o.props.title)return o.props.title;if(o.props.label)return o.props.label},tg=o=>o.type===Jm||_s(o,"data-header"),ng=o=>o.type===jm||_s(o,"data-group"),OM=o=>_s(o,"selectable")?o.props.selectable===!0:!ng(o)&&!tg(o),NM=o=>{if(ng(o)){let{props:{children:e}}=o;if(typeof e!="string")return yc(e)}},HM=(o,e)=>{let t=[];return LM.forEach(o,n=>{hc(n)&&t.push(e(n))}),t},bc=(o,e)=>{if(Array.isArray(o))return o.length===0&&(e!=null&&e.noChildrenLabel)?[{label:e.noChildrenLabel,value:null}]:o.map((t,n)=>{var r,s;return{childNodes:bc(t.childNodes,e),description:t.description,expanded:t.expanded,value:t,label:(s=(r=e==null?void 0:e.itemToString)==null?void 0:r.call(e,t))!=null?s:Bt(t)}});if(o)throw Error("list-child-items expects source to be an array")},yc=o=>{if(o)return HM(o,e=>{let{"data-id":t,disabled:n,id:r=t,"data-expanded":s,expanded:i=s}=e.props;return{childNodes:NM(e),disabled:n,expanded:i,header:tg(e),id:r,label:AM(e),selectable:OM(e),value:e}})},FM=new Set(["/","-","."]),VM=o=>FM.has(o),og=(o,e)=>e.startsWith(o)&&VM(e[o.length]),BM=new Set([".","/"]);function zM(o,e){return e.startsWith(o)?BM.has(e.charAt(o.length)):!1}function yl(o,e,t){let n;return o.map(s=>s.id===e?{...s,...t}:zM(s.id,e)&&s.childNodes?(n=yl(s.childNodes,e,t),{...s,childNodes:n}):s)}var $M=/[.*+?^${}()|[\]\\]/g;function xl(o){return o.replace($M,"\\$&")}var Ks=(o,e)=>Object.keys(o).reduce((n,r)=>{let s=o[r],i=e[r];return typeof s=="function"&&typeof i=="function"&&(n[r]=(...l)=>{s(...l),i(...l)}),n},{...e});var WM=o=>o&&o.replace(/^\s+/g,""),xc=o=>new RegExp(`(${xl(WM(o))})`,"gi"),rg=(o="",e=xc)=>(t="")=>!!t.length&&!!o.length&&t.match(e(o))!==null;function vl(o,e){return Array.isArray(o)?o.includes(e.id):o===e.id}import{isValidElement as _M,useCallback as KM,useEffect as sg,useRef as ig,useState as UM}from"react";function Cl({controlled:o,default:e,name:t,state:n="value"}){let{current:r}=ig(o!==void 0),[s,i]=UM(e),l=o!==void 0?o:s,{current:a}=ig(e);sg(()=>{},[n,t,o]),sg(()=>{},[JSON.stringify(e,GM)]);let u=KM(c=>{r||i(c)},[r]);return[l,u,r]}function GM(o,e){return _M(e)?null:e}var QM={},to=({children:o,id:e,options:t=QM,source:n})=>{var A;let{getItemId:r}=t,[,s]=qM(null),i=_m(),l=wl([]),a=wl([]),u=Sl(()=>[],[]),c=wl((A=t.filterPattern)!=null?A:""),{getFilterRegex:d=xc,noChildrenLabel:p,itemToString:f=Bt}=t,h=It(()=>t.defaultExpanded||!1,[t.defaultExpanded]),g=It((k,I,F=1,H="",B=[],$=[],G=[])=>(k.forEach((q,j,U)=>{var nt,Le;let X=q.header&&t.collapsibleHeaders,pe=q.childNodes&&t.collapsibleHeaders===!1,ae=!q.childNodes||q.childNodes.length===0,Ve=pe||ae&&!X,xe=H?`${H}.${j}`:`item-${j}`,Ae=(nt=q.id)!=null?nt:r?r(j):`${e}-${xe}`,Te=Ve?void 0:(Le=q.expanded)!=null?Le:h(),Ie={...q,childNodes:void 0,count:!pe&&Te===void 0?0:eg(q,U,j),description:q.description,disabled:Ym(q.value),focusable:Zm(q.value)?void 0:!1,id:Ae,index:I.value,expanded:Te,level:F};if(B.push(Ie),$.push(Ie),G.push(k[j].value),I.value+=1,q.childNodes){let[Ye]=g(q.childNodes,I,F+1,xe,[],$,G);Ie.childNodes=Ye}}),[B,G,$]),[t.collapsibleHeaders,r,e,h]),m=It(()=>c.current?rg(c.current,d):null,[d]),y=It((k,I=m(),F=[],H={value:0})=>{let B=!1;for(let $ of k)B&&!gc($)||($.value!==null&&(I===null||I(f($.value)))&&(F[H.value]=$,H.value+=1),B=!1,gc($)&&$.expanded===!1?B=!0:Xm($)&&$.expanded!==!1&&$.childNodes&&y($.childNodes,I,F,H));return F},[m,f]),w=Sl(()=>i?u:bc(n,{itemToString:f,noChildrenLabel:p})||yc(o)||[],[i,u,n,f,p,o]),[v,x,S]=Sl(()=>i?[u,u,u]:g(w,{value:0}),[u,g,i,w]);a.current=S,Sl(()=>i?u:l.current=y(v),[u,y,v,i]);let b=wl(v),C=It((k="")=>{typeof k=="string"&&(c.current=k,l.current=y(v),s({}))},[v,y]),M=It((k,I=v)=>{let F=I.find(H=>{var B;return H.id===k||((B=H==null?void 0:H.childNodes)==null?void 0:B.length)&&og(H.id,k)});if((F==null?void 0:F.id)===k)return x==null?void 0:x[F.index];if(F)return M(k,F.childNodes);throw Error(`useCollectionData itemById, id ${k} not found `)},[x,v]),D=It(k=>{let I=a.current.find(F=>lg(F.value)?F.label===k:F.value===k);if(I)return I;throw Error("useCollectionData toCollectionItem, item not found ")},[]),E=It(k=>{if(k===null)return null;if(Array.isArray(k)){let I=[];for(let F of k){let H=D(F);I.push(H)}return I}else if(k!==void 0)return D(k)},[D]),O=It(k=>{if(k===void 0)return;let I=E(k);return Array.isArray(I)?I.map(F=>F.id):I?I.id:null},[E]),T=It(k=>{let I=F=>{let H=a.current.find(B=>lg(B.value)?B.label===F:B.value!==null&&f(B.value)===F);if(H)return H};if(k===null)return null;if(Array.isArray(k)){let F=[];for(let H of k){let B=I(H);B&&F.push(B)}return F}else if(k!==void 0)return I(k)},[f]),P=It(k=>{for(let I of b.current)if(k===I.value)return I.id;throw Error("useCollectionData itemToId, item not found")},[]),L=It(k=>{b.current=yl(b.current,k.id,{expanded:!1}),l.current=y(b.current),s({})},[y]),N=It(k=>{b.current=yl(b.current,k.id,{expanded:!0}),l.current=y(b.current),s({})},[y]);return i||{collapseGroupItem:L,data:l.current,expandGroupItem:N,setFilterPattern:C,itemById:M,itemToId:P,toCollectionItem:D,itemToCollectionItem:E,itemToCollectionItemId:O,stringToCollectionItem:T}};import pg from"classnames";import{useForkRef as tR}from"@salt-ds/core";import{Children as nR,cloneElement as fg,forwardRef as oR,useRef as rR}from"react";import{useControlled as XM,useForkRef as YM}from"@salt-ds/core";import{useCallback as Pr,useRef as cg,useState as ZM}from"react";import{useEffect as ag,useRef as jM}from"react";var JM=[],ug=({popperRef:o,rootRef:e,isOpen:t,onClose:n})=>{let r=jM(t);ag(()=>{r.current=t},[t]),ag(()=>{let[s,i]=t?[l=>{var u,c;let a=l.target;!((u=o.current)!=null&&u.contains(a))&&!((c=e.current)!=null&&c.contains(a))&&n()},l=>{l.key==="Escape"&&r.current&&(n(),l.stopPropagation())}]:JM;return s&&i&&(document.body.addEventListener("mousedown",s,!0),document.body.addEventListener("keydown",i,!0)),()=>{s&&i&&(document.body.removeEventListener("mousedown",s,!0),document.body.removeEventListener("keydown",i,!0))}},[t,n,o,e])};var eR=[],dg=({defaultIsOpen:o,disabled:e,fullWidth:t,id:n,isOpen:r,onOpenChange:s,onKeyDown:i,openKeys:l=["Enter","ArrowDown"," "],openOnFocus:a,popupComponent:u,popupWidth:c,rootRef:d,width:p})=>{var N;let f=cg(null),h=cg(null),g=Pr(A=>{h.current=A},[]),[m,y]=XM({controlled:r,default:!!o,name:"useDropdown",state:"isOpen"}),[w,v]=ZM({width:(N=c!=null?c:p)!=null?N:0}),x=Pr(()=>{y(!0),s==null||s(!0)},[s,y]),S=Pr(()=>{y(!1),s==null||s(!1)},[s,y]);ug({popperRef:h,rootRef:d,isOpen:m,onClose:S});let b=Pr(()=>{e||a&&(y(!0),s==null||s(!0),f.current=window.setTimeout(()=>{f.current=null},1e3))},[e,s,a,y]),C=Pr(A=>{if(["Enter"," "].indexOf(A.key)===-1){let k=!m;y(k),s==null||s(k)}},[m,y,s]),M=Pr(A=>{(A.key==="Tab"||A.key==="Escape")&&m?(A.key==="Escape"&&(A.stopPropagation(),A.preventDefault()),S()):l.includes(A.key)&&!m?(A.preventDefault(),x()):i==null||i(A)},[S,m,i,l,x]),D=t!=null?t:!1;Nn(d,D?Um:eR,v,D);let O=`${n}-dropdown`,T={"aria-expanded":m,"aria-owns":m?O:void 0,id:`${n}-control`,onClick:e||a?void 0:C,onFocus:b,role:"listbox",onKeyDown:e?void 0:M,style:{width:D?void 0:p}},P={id:O,width:w.width},L=YM(g,h);return{componentProps:P,popupComponentRef:L,isOpen:m,label:"Dropdown Button",triggerProps:T}};import{jsx as hg,jsxs as sR}from"react/jsx-runtime";var Tl="vuuDropdown",El=oR(function({"aria-labelledby":e,children:t,className:n,defaultIsOpen:r,disabled:s,fullWidth:i,id:l,isOpen:a,onKeyDown:u,onOpenChange:c,openKeys:d,openOnFocus:p,placement:f="below",popupWidth:h,width:g,...m},y){let w=rR(null),v=pg(Tl,n,{[`${Tl}-fullWidth`]:i,[`${Tl}-disabled`]:s}),[x,S]=nR.toArray(t),b=Pe(l),{componentProps:C,isOpen:M,popupComponentRef:D,triggerProps:E}=dg({ariaLabelledBy:e,defaultIsOpen:r,disabled:s,fullWidth:i,id:b,isOpen:a,onOpenChange:c,onKeyDown:u,openKeys:d,openOnFocus:p,popupComponent:S,popupWidth:h,rootRef:w,width:g}),O=()=>{let{id:L,role:N,...A}=E,{id:k=L,role:I=N,...F}=x.props;return fg(x,Ks(F,{...A,id:k,role:I}))},T=()=>{let{id:L,width:N,...A}=C,{className:k,id:I=L,width:F,...H}=S.props;return fg(S,{...H,...A,className:pg(k,`${Tl}-popup-component`),id:I,ref:D,width:F!=null?F:N})},P=tR(w,y);return sR("div",{...m,className:v,id:l,ref:P,children:[O(),M&&hg(Us,{children:hg(vc,{anchorElement:w,placement:f,children:T()})})]})});import{Button as iR}from"@salt-ds/core";import lR from"classnames";import{forwardRef as aR}from"react";import{jsx as Cc,jsxs as uR}from"react/jsx-runtime";var Gs="vuuDropdownButton",mg=aR(function({ariaHideOptionRole:e,className:t,disabled:n,icon:r="chevron-down",isOpen:s,label:i,labelId:l,fullWidth:a,posInSet:u,setSize:c,labelAriaAttributes:d,...p},f){return Cc(iR,{className:lR(Gs,{[`${Gs}-fullWidth`]:a},t),disabled:n,variant:"secondary",...p,ref:f,children:uR("div",{className:`${Gs}-content`,children:[Cc("span",{"aria-hidden":e?"true":void 0,...d,className:`${Gs}-buttonLabel`,id:l,role:"option",children:i}),Cc("span",{className:`${Gs}-buttonIcon`,"data-icon":r,"aria-hidden":"true"})]})})});import{useForkRef as eP}from"@salt-ds/core";import{cloneElement as tP,forwardRef as nP,useCallback as oP,useRef as mb}from"react";function cR(o,...e){let t=new Set(o);for(let n of e)for(let r of n)t.add(r);return t}var qs="ArrowUp",Qs="ArrowDown",gg="ArrowLeft",bg="ArrowRight",Sc="Enter";var Ml="Home",js="End",wc="PageUp",Rl="PageDown",yg=" ",dR=new Set(["Enter","Delete"," "]),pR=new Set(["Tab"]),fR=new Set(["ArrowRight","ArrowLeft"]),xg=new Set([Ml,js,wc,Rl,Qs,qs]),hR=new Set(["F1","F2","F3","F4","F5","F6","F7","F8","F9","F10","F11","F12"]),mR=cR(dR,xg,fR,hR,pR),Dl=o=>mR.has(o.key)?!1:o.key.length===1&&!o.ctrlKey&&!o.metaKey&&!o.altKey,vg=({key:o})=>xg.has(o);import{useCallback as Cg}from"react";var gR={},bR=o=>Array.isArray(o.childNodes),yR=o=>!0,xR=o=>o.closest("[data-toggle],[aria-expanded]").dataset.toggle==="true",Sg=({collapsibleHeaders:o,collectionHook:e,highlightedIdx:t,onToggle:n})=>{let r=Cg(l=>{if(l.key===bg||l.key===Sc){let a=e.data[t];a&&a.expanded===!1&&a.value&&(l.preventDefault(),e.expandGroupItem(a),n==null||n(a.value))}if(l.key===gg||l.key===Sc){let a=e.data[t];a&&a.expanded&&a.value&&(l.preventDefault(),e.collapseGroupItem(a),n==null||n(a.value))}},[e.collapseGroupItem,e.data,e.expandGroupItem,t]),i={onClick:Cg(l=>{console.log(`useCollapsibleGroups idx=${t}`);let a=e.data[t];console.log(l.target,l.currentTarget),a&&bR(a)&&(!yR(a)||xR(l.target))&&(l.stopPropagation(),l.preventDefault(),a.expanded===!1&&a.value?(e.expandGroupItem(a),n==null||n(a.value)):a.expanded===!0&&a.value&&(e.collapseGroupItem(a),n==null||n(a.value)))},[e.collapseGroupItem,e.data,e.expandGroupItem,t]),onKeyDown:r};return o?i:gR};function vR(o){if(o){let e=o.dataset.index;if(e)return parseInt(e,10);if(e=o.ariaPosInSet)return parseInt(e,10)-1}return-1}var CR=o=>o.closest("[data-index],[aria-posinset]");var wg=o=>vR(CR(o));import{useImperativeHandle as SR,useMemo as wR}from"react";var TR={scrollToIndex:()=>{},scrollToItem:()=>{},scrollTo:()=>{}},Pl=({collectionHook:o,forwardedRef:e,scrollableRef:t,scrollIntoView:n})=>{let r=wR(()=>({scrollToIndex:s=>{let i=o.data[s];i&&(n==null||n(i))},scrollToItem:s=>{let i=o.toCollectionItem(s);i&&(n==null||n(i))},scrollTo:s=>{t!=null&&t.current&&(t.current.scrollTop=s)}}),[o,n,t]);SR(e,()=>t.current?r:TR,[r,t])};import{useControlled as ER}from"@salt-ds/core";import{useCallback as kr,useMemo as MR,useRef as Tc,useState as RR}from"react";import{getElementByDataIndex as Mc}from"@vuu-ui/vuu-utils";var Rc=-2;function Tg(o,e,t){return e===qs||e===js?t>0?t-1:t:t===null?0:t===o-1?t:t+1}var Ec=(o,e)=>{let t=Qm(e);return t?o.indexOf(t):-1},DR=(o,e,t,n)=>o===js?n:o===Ml?-1:e!==-1?e:t,PR=(o,e,t,n)=>{let{top:r}=e.getBoundingClientRect(),{scrollTop:s,clientHeight:i,scrollHeight:l}=o,a=t-1,u=Math.min(s+i,l-i);if(u!==s&&n<a){o.scrollTo(0,u);let c=n,d;do c+=1,d=Mc(o,c,!0).getBoundingClientRect();while(d.top<r&&c<a);return c}},kR=async(o,e,t)=>{let{top:n}=e.getBoundingClientRect(),{scrollTop:r,clientHeight:s}=o,i=Math.max(r-s,0);if(i!==r&&t>0)return o.scrollTo(0,i),new Promise(l=>{requestAnimationFrame(()=>{let a=t,u;do a-=1,u=Mc(o,a,!0).getBoundingClientRect();while(u.top>n&&a>0);l(a)})})},IR=o=>!o.header&&!o.childNodes,Eg=o=>IR(o)||o.expanded!==void 0,Mg=({containerRef:o,defaultHighlightedIndex:e=-1,disableHighlightOnFocus:t,highlightedIndex:n,indexPositions:r,itemCount:s,onHighlight:i,onKeyboardNavigation:l,restoreLastFocus:a,selected:u,viewportItemCount:c})=>{let d=Tc(-1),[,p]=RR({}),[f,h,g]=ER({controlled:n,default:e,name:"UseKeyboardNavigation"}),m=kr((E,O=!1)=>{i==null||i(E),h(E),O&&(d.current=E)},[i,h]),y=kr(async(E,O)=>{let T=Mc(o.current,O,!0),P;if(T){let{current:L}=o;T&&L&&(P=E===Rl?PR(L,T,s,O):await kR(L,T,O))}return P!=null?P:O},[o,s]),w=kr((E=Qs,O=E===Qs?-1:s)=>{if(s===0)return-1;{let T=Ec(r,u),P=DR(E,O,T,s),L=Tg(s,E,P);if(L===0&&E===qs&&!Eg(r[0]))return O;for(;((E===Qs||E===Ml)&&L<s||(E===qs||E===js)&&L>0)&&!Eg(r[L]);)L=Tg(s,E,L);return L}},[r,s,u]),v=Tc(!1),x=Tc(!1),S=E=>x.current=E,b=kr(()=>{if(x.current)x.current=!1;else if(v.current=!0,r.length===0)m(Rc);else if(f!==-1)p({});else if(a)if(d.current!==-1)m(d.current);else{let E=Ec(r,u);m(E!==-1?E:0)}else if(eo(u)){let E=Ec(r,u);m(E)}else t!==!0&&m(w())},[t,f,r,w,a,u,m]),C=kr(async E=>{let O=E.key===Rl||E.key===wc?await y(E.key,f):w(E.key,f);O!==f&&m(O,!0),l==null||l(E,O)},[f,w,y,l,m]),M=kr(E=>{s>0&&vg(E)?(E.preventDefault(),E.stopPropagation(),v.current=!0,C(E)):Dl(E)&&(v.current=!0)},[s,C]),D=MR(()=>({onBlur:E=>{let O=E.target.closest(".vuuList"),T=E.relatedTarget;O&&!(O!=null&&O.contains(T))&&(v.current=!1,h(-1),a||(d.current=-1))},onFocus:b,onKeyDown:M,onMouseDownCapture:()=>{v.current=!1,S(!0)},onMouseMove:()=>{v.current&&(v.current=!1)},onMouseLeave:()=>{v.current=!1,S(!1),m(-1)}}),[b,M,a,h,m]);return{focusVisible:v.current?f:-1,controlledHighlighting:g,highlightedIndex:f,setHighlightedIndex:m,keyboardNavigation:v,containerProps:D,setIgnoreFocus:S}};import{getElementByDataIndex as kl,getElementDataIndex as LR,isSelectableElement as Dc}from"@vuu-ui/vuu-utils";import{useCallback as bn,useRef as AR}from"react";var OR={},NR=["Enter"," "];var Rg=({containerRef:o,defaultSelected:e,disableSelection:t=!1,highlightedIdx:n,itemQuery:r,onSelect:s,onSelectionChange:i,selected:l,selectionStrategy:a,selectionKeys:u=NR,tabToSelect:c})=>{let d=a==="deselectable",p=a==="multiple",f=a==="extended",h=AR(-1),g=bn(T=>u.includes(T.key),[u]),m=bn(()=>p||f?[]:null,[p,f]),[y,w]=Cl({controlled:l,default:e!=null?e:m(),name:"UseSelection",state:"selected"}),v=bn(T=>Array.isArray(y)?y.includes(T):y===T,[y]),x=bn(T=>v(T)?null:T,[v]),S=bn(T=>{let P=v(T)?y.filter(L=>L!==T):y.concat(T);return P.sort(),P},[v,y]),b=bn((T,P)=>{let L=P?y:[],[N]=y.slice(-1),A=N?LR(document.getElementById(N)):0,k=Math.min(T,A),I=Math.max(T,A),F=o.current,B=Array.from(F.querySelectorAll(r)).slice(k,I+1).map(G=>G.id),$=[...new Set([...L,...B])];return $.sort(),$},[o,r,y]),C=bn((T,P,L,N)=>{let{current:A}=o,{id:k}=kl(A,P,!0),I;p?I=S(k):f?N&&!L?I=S(k):L?I=b(P,N):I=[k]:d?I=x(k):I=k,I!==y&&w(I),s==null||s(T,k),I!==y&&i&&i(T,I)},[o,p,f,d,y,s,S,b,x,w,i]),M=bn(T=>{let{current:P}=o,L=kl(P,n);Dc(L)&&(g(T)||c&&T.key==="Tab")&&(T.key!=="Tab"&&T.preventDefault(),C(T,n,!1,T.ctrlKey||T.metaKey),f&&(h.current=n))},[n,o,g,c,C,f]),D=bn((T,P)=>{if(f&&T.shiftKey){let{current:L}=o,N=kl(L,P);Dc(N)&&C(T,P,!0)}},[f,o,C]),E=bn(T=>{let{current:P}=o,L=kl(P,n);!t&&Dc(L)&&(T.preventDefault(),T.stopPropagation(),C(T,n,T.shiftKey,T.ctrlKey||T.metaKey),f&&(h.current=n))},[o,n,t,C,f]);return{listHandlers:fc(a)?OR:{onClick:E,onKeyDown:M,onKeyboardNavigation:D},selected:y,setSelected:w}};import{useCallback as Dg,useRef as Pc}from"react";var Pg=({disableTypeToSelect:o,highlightedIdx:e,highlightItemAtIndex:t,typeToNavigate:n,items:r,applyIncrementalSearch:s=!0})=>{let i=Pc(null),l=Pc(""),a=Pc(-1),u=Dg(d=>{if(d||!s){let p=new RegExp(`^${l.current}`,"i"),f=r.findIndex(({label:h},g)=>g>a.current&&p.test(h));f===-1&&(f=r.findIndex(({label:h},g)=>g<=a.current&&p.test(h))),f!==-1&&t(f)}else l.current="",i.current=null,a.current=-1},[s,t,r]),c=Dg(d=>{let p=a.current!==-1;(Dl(d)||p&&d.key===yg)&&n&&(d.preventDefault(),d.stopPropagation(),(a.current===-1||d.key===l.current)&&(a.current=e),i.current!==null&&(clearTimeout(i.current),i.current=null),d.key!==l.current&&(l.current+=d.key),s&&u(!0),i.current=window.setTimeout(()=>{u()},100))},[n,s,e,u]);return{onKeyDown:o?void 0:c}};import{useCallback as Ir,useRef as kg}from"react";import{useIsomorphicLayoutEffect as HR}from"@salt-ds/core";var Ig=["height"],FR=["height","scrollHeight"],VR=[],Lg={containerOnly:[FR,VR],withContent:[Ig,Ig]},BR=o=>o?Lg.containerOnly:Lg.withContent,Ag={current:null},zR=(o,e)=>{let{transform:t="none"}=getComputedStyle(o);if(t.startsWith("matrix")){let n=t.lastIndexOf(",");return parseInt(t.slice(n+1))}else{let n=o.offsetParent;if(n===e||e===null)return o.offsetTop;{let r=o.offsetTop;for(;n!==null&&n!==e;)r+=n.offsetTop,n=n.offsetParent;return r}}},Og=({containerRef:o,contentRef:e=Ag,highlightedIdx:t=-1,indexPositions:n,stickyHeaders:r=!1})=>{let s=kg(!1),i=kg({height:0,contentHeight:0}),l=Ir(g=>{s.current=!0,o.current&&(o.current.scrollTop=g),setTimeout(()=>{s.current=!1})},[]),a=Ir(()=>l(0),[l]),u=Ir(()=>{l(i.current.contentHeight-i.current.height)},[l]),c=Ir(g=>{let m=e.current||o.current;if(g.id){let y=document.getElementById(g.id);if(y&&o.current){let{height:w}=i.current,v=y.ariaExpanded&&y.firstChild?y.firstChild:y,x=r?36:0,S=zR(v,m),b=v.offsetHeight,{scrollTop:C}=o.current,M=C+x,D=M+w-x;if(S+b>D||S<M){let E=S+b>D?C+(S+b)-D:S-x;l(E)}}}},[o,e,l,r]);HR(()=>{let{height:g,contentHeight:m}=i.current,y=n[t];if(m>g&&y){let[w]=n,[v]=n.slice(-1);y===w?a():y===v?u():c(n[t])}},[t,n,c,u,a]);let d=Ir(({height:g,scrollHeight:m})=>{typeof g=="number"&&(i.current.height=g),typeof m=="number"&&(i.current.contentHeight=m)},[]),p=Ir(({height:g})=>{typeof g=="number"&&(i.current.contentHeight=g)},[]),[f,h]=BR(e===Ag);return Nn(o,f,d,!0),Nn(e,h,p,!0),{isScrolling:s,scrollIntoView:c}};import{makePrefixer as $R}from"@salt-ds/core";import{Fragment as _R,jsx as kc}from"react/jsx-runtime";var WR=$R("saltHighlighter"),Ng=o=>{let{matchPattern:e,text:t=""}=o,n=typeof e=="string"?new RegExp(`(${xl(e)})`,"gi"):e;return n===void 0?kc(_R,{children:t}):kc("span",{children:t.split(n).map((r,s)=>r.match(n)?kc("strong",{className:WR("highlight"),children:r},`${s}-${r}`):r)})};import{forwardRef as Fg}from"react";import Vg from"classnames";import KR from"classnames";import{jsx as UR}from"react/jsx-runtime";var Hg="vuuCheckboxIcon",Ic=({checked:o=!1,...e})=>UR("span",{...e,className:KR(Hg,{[`${Hg}-checked`]:o})});import{jsx as Il,jsxs as GR}from"react/jsx-runtime";var Js="vuuListItem",Ll=Fg(function({height:e,...t},n){return Il("div",{...t,"aria-hidden":!0,className:Vg(Js,`${Js}-proxy`),ref:n,style:{height:e}})}),no=Fg(function({children:e,className:t,disabled:n,tabIndex:r,item:s,itemHeight:i,itemTextHighlightPattern:l,label:a,selectable:u,selected:c,showCheckbox:d,style:p,...f},h){let g=Vg(Js,t,{vuuDisabled:n,[`${Js}-checkbox`]:d}),m=i!==void 0?{...p,height:i}:p;return GR("div",{className:g,...f,"aria-disabled":n||void 0,"aria-selected":c||void 0,ref:h,style:m,children:[d&&Il(Ic,{"aria-hidden":!0,checked:c}),e&&typeof e!="string"?e:l==null?Il("span",{className:`${Js}-textWrapper`,children:a||e}):Il(Ng,{matchPattern:l,text:a||e})]})});import{useForkRef as AD}from"@salt-ds/core";import Hc from"classnames";import{cloneElement as OD,forwardRef as ND,isValidElement as HD,useCallback as FD,useRef as Fc,useState as VD}from"react";import{useCallback as Fn,useEffect as TD,useMemo as ED,useRef as sb}from"react";import{createContext as qR,useCallback as C7,useContext as QR,useMemo as S7}from"react";import{boxContainsPoint as p7}from"@vuu-ui/vuu-utils";import{useCallback as h7,useRef as m7}from"react";import{jsx as M7}from"react/jsx-runtime";var jR={isDragSource:!1,isDropTarget:!1,register:()=>{}},JR=()=>console.log("have you forgotten to provide a DragDrop Provider ?"),XR=qR({registerDragDropParty:JR});var Bg=o=>{var i,l;let{dragSources:e,dropTargets:t,onDragOut:n,onEndOfDragOperation:r,registerDragDropParty:s}=QR(XR);if(o){let a=(i=e==null?void 0:e.has(o))!=null?i:!1,u=(l=t==null?void 0:t.has(o))!=null?l:!1;return{isDragSource:a,isDropTarget:u,onDragOut:n,onEndOfDragOperation:r,register:s}}else return jR};var Al=class{constructor(e,t){this.draggableElement=null;this.payload=null;this.setDraggable=e=>{this.draggableElement=e};this.initialDragElement=t,this.mouseOffset=this.getMouseOffset(e,t)}setPayload(e){this.payload=e}getMouseOffset(e,t){let{clientX:n,clientY:r}=e,s=t.getBoundingClientRect();return{x:n-s.left,y:r-s.top}}};import{useCallback as Nr,useMemo as aD,useRef as Ho,useState as uD}from"react";import{useCallback as Xs,useMemo as lD,useRef as Qg}from"react";var YR=["left","right"],ZR=["top","bottom"],Ol=":not(.wrapped)",zg=':not([aria-hidden="true"])',$g=o=>{let e=o.cloneNode(!0);return e.removeAttribute("id"),e.dataset.index="-1",e},eD=(o,e="width",t=!1)=>{let n=e==="width"?"left":"top",{[e]:r,[n]:s}=o.getBoundingClientRect(),{padEnd:i=!1,padStart:l=!1}=o.dataset,a=getComputedStyle(o),[u,c]=e==="width"?YR:ZR,d=l&&!t?0:parseInt(a.getPropertyValue(`margin-${u}`),10),p=i&&!t?0:parseInt(a.getPropertyValue(`margin-${c}`),10),f=r;if(parseInt(a.getPropertyValue("flex-shrink"),10)>0){let g=parseInt(a.getPropertyValue("flex-basis"),10);!isNaN(g)&&g>0&&(f=g)}return[s,d+f+p]},tD={horizontal:{CLIENT_POS:"clientX",CLIENT_SIZE:"clientWidth",CONTRA:"top",CONTRA_CLIENT_POS:"clientY",CONTRA_END:"bottom",CONTRA_POS:"y",DIMENSION:"width",END:"right",POS:"x",SCROLL_POS:"scrollLeft",SCROLL_SIZE:"scrollWidth",START:"left"},vertical:{CLIENT_POS:"clientY",CLIENT_SIZE:"clientHeight",CONTRA:"left",CONTRA_CLIENT_POS:"clientX",CONTRA_END:"right",CONTRA_POS:"x",DIMENSION:"height",END:"bottom",POS:"y",SCROLL_POS:"scrollTop",SCROLL_SIZE:"scrollHeight",START:"top"}},Et=o=>tD[o],Wg=(o,e)=>{let t=o.find(n=>n.id===e);if(t)return t},_g=(o,e)=>{o.splice(e,1);for(let t=e;t<o.length;t++)o[t].currentIndex-=1},Lr=(o,e,t,n,r)=>{let s=[],{DIMENSION:i}=Et(e),l=Array.from(t?o.querySelectorAll(t):o.children),a=l.length,u=typeof(n==null?void 0:n.from)=="number"?n.atEnd?Math.max(0,n.from-1):n.from:0,c=typeof(n==null?void 0:n.to)=="number"?Math.min(n.to+2,a-1):a-1;for(let d=u;d<=c;d++){let p=l[d],[f,h]=eD(p,i),g=d===a-1,m=p.id;s.push({currentIndex:d,id:m,index:d,isDraggedItem:r===m,isLast:g,isOverflowIndicator:p.dataset.index==="overflow",element:p,start:f,end:f+h,size:h,mid:f+h/2})}return s},Ar=(o,e=!1)=>{let t=o.findIndex(n=>n.isDraggedItem);if(e){let{index:n}=o[t],r=o.filter(i=>!i.isDraggedItem).reduce((i,l)=>Math.min(i,l.index),Number.MAX_SAFE_INTEGER);if(r>0&&!(n===0&&r===1))return r+t}return t},Lc=(o,e)=>{let t=Ar(o),n=e==="fwd"?t+1:t-1;if(n<0||n>=o.length)throw Error("switchDropTargetPosition index out of range");let r=o.at(t),s=o.at(n),i=s.size-r.size;if(e==="fwd"){let l=s.start+i,a=s.end,u={...r,start:l,mid:Math.floor(l+(a-l)/2),end:a},c=r.start,d=r.end+i,p={...s,start:c,mid:Math.floor(c+(d-c)/2),end:d};o.splice(t,2,p,u)}else{let l=s.start,a=s.end-i,u={...r,start:l,mid:Math.floor(l+(a-l)/2),end:a},c=r.start-i,d=r.end,p={...s,start:c,mid:Math.floor(c+(d-c)/2),end:d};o.splice(n,2,u,p)}},No=(o,e,t,n)=>{let r=o.length,s=Ar(o),i=o[s];if(n==="fwd"){let l=Math.round(e+t);for(let a=r-1;a>=0;a--){let u=o[a];if(l>u.mid)return i&&a<s?i:u}}else{let l=Math.round(e);for(let a=0;a<r;a++){let u=o[a];if(l<u.mid)return a>s?i:u}}throw Error("no dropTraget identified")};function Kg(o,e){let{height:t,left:n,top:r,width:s}=o,{height:i,width:l}=e;return{height:Math.min(t,i),left:n,top:r,width:Math.min(s,l)}}var Ac=o=>o.map((e,t)=>{var n;return`
19
- ${e.isDraggedItem?"*":" "}[${t}] width : ${Math.floor(e.size)} ${Math.floor(e.start)} - ${Math.floor(e.end)} (mid ${Math.floor(e.mid)}) ${(n=e.element)==null?void 0:n.textContent} `}).join("");import{useForkRef as nD}from"@salt-ds/core";import oD from"classnames";import{forwardRef as rD,useCallback as sD}from"react";import{jsx as Ug}from"react/jsx-runtime";var iD=o=>o.split(" ").map(e=>`vuuDraggable-${e}`),Nl=rD(function({wrapperClassName:e,element:t,onTransitionEnd:n,style:r,scale:s=1},i){let l=sD(u=>{u&&(u.innerHTML="",u.appendChild(t),s!==1&&(u.style.transform=`scale(${s},${s})`))},[t,s]),a=nD(i,l);return Ug(Or,{children:Ug("div",{className:oD("vuuDraggable",...iD(e)),ref:a,onTransitionEnd:n,style:r})})}),Oc=o=>{let e=document.createElement("div");return e.className="vuuDraggable-spacer",o&&e.addEventListener("transitionend",()=>{o.current=!1}),e},Gg=()=>{let o=document.createElement("div");return o.className="vuuDraggable-dropIndicatorPosition",o},qg=o=>{let e=document.createElement("div");return e.className="vuuDraggable-dropIndicator",o&&e.addEventListener("transitionend",()=>{o.current=!1}),e};var jg=(o="horizontal")=>{let e=Qg(0),t=Qg(!1),n=lD(()=>[Oc(t),Oc()],[]),r=Xs((u,c="width")=>{let[d,p]=n;e.current=requestAnimationFrame(()=>{t.current=!0,d.style.cssText=`${c}: 0px`,p.style.cssText=`${c}: ${u}px`,n[0]=p,n[1]=d})},[n]),s=Xs((u=!1)=>{if(u===!0){let[c]=n,d=()=>{c.removeEventListener("transitionend",d),s()},p=o==="horizontal"?"width":"height";c.addEventListener("transitionend",d),r(0,p)}else n.forEach(c=>c.remove())},[r,o,n]),i=Xs(()=>{e.current&&(cancelAnimationFrame(e.current),e.current=0)},[]),l=Xs((u,c,d,p=!1,f="static")=>{if(c){let h=o==="horizontal"?"width":"height",[g,m]=n;if(i(),p)t.current?(s(),g.style.cssText=`${h}: ${d}px`,m.style.cssText=`${h}: 0px`,f==="fwd"?(c.element.before(g),c.element.after(m)):(c.element.after(g),c.element.before(m))):f==="fwd"?c.element.after(m):c.element.before(m),r(d,h);else if(f==="static")g.style.cssText=`${h}: ${d}px`,c.element.before(g);else throw Error("useDragDisplacers currently only supports noTransition for static displacement");f!=="static"&&Lc(u,f)}},[r,i,s,o,n]),a=Xs((u,c,d,p=!1,f="static")=>{let h=o==="horizontal"?"width":"height",[g,m]=n;i(),p?(t.current?(s(),g.style.cssText=`${h}: ${d}px`,m.style.cssText=`${h}: 0px`,c.element.before(g),c.element.after(m)):f==="fwd"?c.element.after(m):c.element.before(m),r(d,h)):(g.style.cssText=`${h}: ${d}px`,c.element.after(g)),f!=="static"&&Lc(u,f)},[r,i,s,o,n]);return{displaceItem:l,displaceLastItem:a,clearSpacers:s}};import{dispatchMouseEvent as Jg}from"@vuu-ui/vuu-utils";var Xg=({onDrop:o,orientation:e="horizontal",containerRef:t,itemQuery:n="*",selected:r,viewportRange:s})=>{let i=Ho(),l=Ho(!1),a=Ho(-1),u=Ho([]),c=Ho(!1),[d,p]=uD(!1),{clearSpacers:f,displaceItem:h,displaceLastItem:g}=jg(e),m=Ho(),y=`:is(${n}${Ol}${zg},.vuuOverflowContainer-OverflowIndicator)`,w=T=>u.current.findIndex(P=>P.id===T.id),v=Ho();v.current=s;let x=Nr(()=>{f()},[f]),S=Nr((T,P,L)=>{let{current:N}=t,{current:A}=m;if(N&&A){u.current=Lr(N,e,y,v.current),T==="fwd"?u.current.push(A):u.current.unshift(A);let{size:k}=A,F=a.current+k/2,{current:H}=u,B=No(H,F,k,"fwd");if(B){let G=w(B),q=H[G];L&&T==="fwd"?g(H,H[H.length-1],k,!1,"static"):h(H,q,k,!0,"static")}}},[t,h,g,y,e]),b=Nr(T=>{T.ariaSelected&&Array.isArray(r)&&r.length>1&&console.log("its a selected element, and we have a multi select");let{current:P}=t;if(P&&T){let L=P.contains(T),{SCROLL_SIZE:N,CLIENT_SIZE:A}=Et(e),{id:k}=T,{[N]:I,[A]:F}=P;l.current=I>F;let H=u.current=Lr(P,e,y,s,k);if(L){console.log(Ac(H));let B=Ar(H),$=H[B];$&&P&&(m.current=$,($.isLast?g:h)(H,$,$.size,!1,"static"))}else{let{top:B,height:$}=T.getBoundingClientRect(),G=No(H,B,$,"fwd"),q=H.indexOf(G),{start:j,end:U,mid:X}=G;console.log(`nextDropTarget ${G.element.textContent}`);let pe=m.current={end:U,mid:X,start:j,isDraggedItem:!0,isExternal:!0,size:$},ae=H.indexOf(G);console.log({indexOfDropTarget:ae}),H.splice(ae,0,pe);for(let xe=q+1;xe<H.length;xe++){let Ae=H[xe];Ae.mid+=$,Ae.end+=$,Ae.start+=$}console.log(Ac(H)),(G.isLast?g:h)(H,G,G.size,!0,"static")}}},[t,h,g,y,e,r,s]),[C,M]=aD(()=>{let T=!1;return[N=>{if(!T){T=!0;let A=N.element.querySelector(".vuuPopupMenu");A&&Jg(A,"click")}},N=>{if(T){T=!1;let A=N.element.querySelector(".vuuPopupMenu");A&&Jg(A,"click")}}]},[]),D=Nr((T,P)=>{let{current:L}=m;if(L&&t.current){a.current=T;let{current:N}=u,A=No(N,T,L.size,P);if(A&&!A.isDraggedItem)if(A.isOverflowIndicator)p(c.current=!0),C(A);else{let{size:k}=L;(w(A)===N.length-1?g:h)(N,A,k,!0,P);let H=N.at(-1);M(H),p(c.current=!1)}i.current=P}},[t,h,g,M,C]),E=Nr(()=>{var N;f();let{current:T}=u,P=Ar(T),L=T[P];if(L)if(i.current=void 0,c.current)o(L.index,-1,{fromIndex:L.index,toIndex:-1,isExternal:L.isExternal});else{let A=Ar(T,!0);o(L.index,A,{fromIndex:L.index,toIndex:A,isExternal:L.isExternal})}if(p(!1),t.current){let A=(N=t.current)==null?void 0:N.scrollTop;P<T.length&&(t.current.scrollTop=A)}},[f,t,o]),O=Nr(()=>{f(!0)},[f]);return{beginDrag:b,drag:D,drop:E,handleScrollStart:x,handleScrollStop:S,releaseDrag:O,revealOverflowedItems:d}};import{useCallback as Hr,useRef as yn,useState as eb}from"react";import{useCallback as Yg,useMemo as cD}from"react";var Zg=()=>{let o=cD(()=>Gg(),[]),e=Yg(()=>o.remove(),[o]);return{positionDropIndicator:Yg((n,r="end")=>(r==="end"?n.element.after(o):n.element.before(o),o),[o]),clearSpacer:e}};import{jsx as fD}from"react/jsx-runtime";var dD=':not([data-overflowed="true"])',pD=':not([aria-hidden="true"])',tb=({onDrop:o,orientation:e="horizontal",containerRef:t,itemQuery:n="*",selected:r,viewportRange:s})=>{let i=yn(),l=yn(null),a=yn(null),u=yn(""),c=yn(!1),d=yn(-1),p=yn([]),f=yn(!1),[h,g]=eb(!1),[m,y]=eb(),{clearSpacer:w,positionDropIndicator:v}=Zg(),x=yn(),S=`:is(${n}${dD}${pD},[data-overflow-indicator])`,b=N=>p.current.findIndex(A=>A.id===N.id),C=(N,A,k)=>{N.start+=A,N.mid+=A,N.end+=A,typeof k=="number"&&(N.currentIndex+=k)},M=yn();M.current=s;let D=Hr(()=>{w()},[w]),E=Hr((N,A,k)=>{let{current:I}=t,{current:F}=x;if(I&&F){p.current=Lr(I,e,S,M.current);let{size:H}=F,$=d.current+H/2,{current:G}=p,q=No(G,$,H,"fwd");q&&v(k&&N==="fwd"?G[G.length-1]:q,"start")}},[t,v,S,e]),O=Hr(N=>{N.ariaSelected&&Array.isArray(r)&&r.length>1&&console.log("its a selected element, and we have a multi select");let{current:A}=t;if(A&&N){let{SCROLL_SIZE:k,CLIENT_SIZE:I}=Et(e),{id:F}=N,{[k]:H,[I]:B}=A;c.current=H>B;let $=p.current=Lr(A,e,S,s),G=Wg($,F);if(G&&A){let q=b(G);_g($,q),x.current=G;let{current:j}=M;if(j!=null&&j.atEnd)for(let Te=0;Te<$.length;Te++)C($[Te],G.size);for(let Te=q;Te<$.length;Te++)C($[Te],-G.size,-1);let[U,X]=G.isLast?[$[$.length-1],"end"]:[$[q],"start"];a.current=U,u.current=X;let pe=v(U,X),{top:ae,left:Ve,width:xe}=pe.getBoundingClientRect(),Ae={top:G.isLast?j!=null&&j.atEnd&&!j.atStart?ae+G.size-2:ae-2:ae-G.size-2,left:Ve,width:xe,height:2};y(fD(Nl,{wrapperClassName:"dropIndicatorContainer",style:Ae,ref:l,element:qg()}))}}},[r,t,e,S,s,v]),T=Hr((N,A)=>{let{current:k}=a,{current:I}=x;if(I&&t.current){let F=e==="horizontal"?"left":"top";d.current=N;let{current:H}=p,B=No(H,N,I.size,A);if(B&&B.index!==(k==null?void 0:k.index)){if(B.isOverflowIndicator)g(f.current=!0);else if(l.current){if(b(B)===H.length-1){let G=H[H.length-1],j=v(G,"start").getBoundingClientRect();l.current.style[F]=`${j.top}px`}else{let q=v(B,"start").getBoundingClientRect();l.current.style[F]=`${q.top}px`}g(f.current=!1)}a.current=B,i.current=A}}},[t,e,v]),P=Hr(()=>{w();let{current:N}=x,{current:A}=a,{current:k}=u,{current:I}=M;if(N&&I&&A){let{index:F}=N,H=k==="start",{index:B,currentIndex:$}=A;a.current=null,i.current=void 0,f.current?o(F,-1,{fromIndex:F,toIndex:-1}):F<B?o(F,H?$:$+1,{fromIndex:F,toIndex:H?$:$+1}):o(F,H?B:B+1,{fromIndex:F,toIndex:H?B:B+1}),y(void 0)}g(!1)},[w,o]),L=Hr(()=>{},[]);return{beginDrag:O,drag:T,drop:P,dropIndicator:m,handleScrollStart:D,handleScrollStop:E,releaseDrag:L,revealOverflowedItems:h}};import{useCallback as yt,useEffect as hD,useLayoutEffect as mD,useRef as zt,useState as gD}from"react";import{useCallback as nb,useRef as Hl}from"react";var ob=({containerRef:o,onScrollingStopped:e,orientation:t="vertical"})=>{let n=Hl(null),r=Hl(!1),s=Hl(0),i=Hl("fwd"),l=nb((u=!1)=>{console.log("[useAutoScroll] stopScrolling"),n.current!==null&&(clearTimeout(n.current),n.current=null),r.current=!1,e==null||e(i.current,s.current,u)},[e]),a=nb((u,c,d=30)=>{let{current:p}=o;if(p){let{SCROLL_POS:f,SCROLL_SIZE:h,CLIENT_SIZE:g}=Et(t),{[f]:m,[h]:y,[g]:w}=p,v=u==="fwd"?y-w-m:m,x=Math.min(v,d);u==="fwd"?(i.current="fwd",p[f]=s.current=m+x):(i.current="bwd",p[f]=s.current=m-x),x===v?l(!0):(r.current=!0,n.current=window.setTimeout(()=>{a(u,c,d)},100))}},[o,t,l]);return{isScrolling:r,startScrolling:a,stopScrolling:l}};import{jsx as wD}from"react/jsx-runtime";var bD={beginDrag:()=>{},drag:()=>{},draggableRef:{current:null},drop:()=>{},isDragging:!1,isScrolling:!1,handleScrollStart:()=>{},handleScrollStop:()=>{},revealOverflowedItems:!1},rb={start:0,end:1e3,contraStart:0,contraEnd:1e3},yD=()=>bD,xD=3,vD=(o,e)=>o.closest(e),CD=o=>o.dataset.index==="overflow"&&o.parentElement!==null&&o.parentElement.classList.contains("overflowed"),SD=(o,e)=>{let t=`:is(${e}${Ol},.vuuOverflowContainer-OverflowIndicator)`,r=Array.from(o.querySelectorAll(t)).pop();return[r,CD(r)]},Hn=({allowDragDrop:o,containerRef:e,draggableClassName:t,getDragPayload:n,id:r,itemQuery:s="*",onDragStart:i,onDrop:l,onDropSettle:a,orientation:u,...c})=>{let d=zt({start:0,end:0,contraStart:0,contraEnd:0}),[p,f]=gD({draggable:void 0,draggedItemIndex:-1,isDragging:!1}),h=zt(null),g=zt(null),m=zt(!1),y=zt({x:0,y:0}),w=zt({x:0,y:0}),v=zt(null),x=zt(-1),S=zt(-1),b=zt(),{isDragSource:C,isDropTarget:M,onDragOut:D,onEndOfDragOperation:E,register:O}=Bg(r),T=zt(),P=zt(),L=yt(()=>{let{current:Q}=T,{current:te}=P;Q&&te&&(document.addEventListener("mousemove",Q,!1),document.addEventListener("mouseup",te,!1))},[]),N=yt(()=>{let{current:Q}=T,{current:te}=P;Q&&te&&(document.removeEventListener("mousemove",Q,!1),document.removeEventListener("mouseup",te,!1))},[]),A=yt((Q,te)=>{let{current:oe}=e;if(oe){let[de,Se]=SD(oe,s),{CONTRA:Be,CONTRA_END:ve,DIMENSION:J,END:ee,START:ne}=Et(u),fe=te[J],{[ne]:ze,[ee]:et}=de.getBoundingClientRect();d.current.start=Q[ne],d.current.end=Se?Math.max(ze,Q.right-fe):m.current?Q[ne]+Q[J]-fe:et-fe,d.current.contraStart=Q[Be],d.current.contraEnd=Q[ve]}},[e,s,u]),k=yt(()=>{var oe;let{current:Q}=S,te=(oe=e.current)==null?void 0:oe.querySelector(`${s}[data-index="${Q}"]`);te&&te.classList.remove("vuuDropTarget-settling"),S.current=-1,a==null||a(Q),f(de=>({...de,draggable:void 0}))},[e,s,a]),I=yt(Q=>{if(e.current&&h.current){let{mouseOffset:te}=h.current,{POS:oe,SCROLL_POS:de,SCROLL_SIZE:Se,CLIENT_SIZE:Be}=Et(u),{[de]:ve,[Se]:J,[Be]:ee}=e.current,ne=J-ee,fe=ve<ne,ze=d.current.end,et=ve>0&&Q-te[oe]<=d.current.start,V=fe&&Q-te[oe]>=ze;return et?"bwd":V?"fwd":""}},[e,u]),F=o===!0||o==="natural-movement"?Xg:o==="drop-indicator"?tb:yD,H=yt((Q,te,oe)=>{var de;(de=b.current)==null||de.call(b,Q,te,oe)},[]),{isScrolling:B,startScrolling:$,stopScrolling:G}=ob({containerRef:e,onScrollingStopped:H,orientation:u}),q=yt((Q,te,oe)=>{var de;x.current=te,oe.isExternal?l==null||l(Q,te,{...oe,payload:(de=h.current)==null?void 0:de.payload}):l==null||l(Q,te,oe),S.current=te,r&&(E==null||E(r)),h.current=null},[r,l,E]),{beginDrag:j,drag:U,drop:X,handleScrollStart:pe,handleScrollStop:ae,releaseDrag:Ve,...xe}=F({...c,containerRef:e,isDragSource:C,isDropTarget:M,itemQuery:s,onDrop:q,orientation:u});b.current=ae;let Ae=yt((Q,te)=>{let{CONTRA_POS:oe}=Et(u),de=y.current[oe],Se=C?Math.abs(de-te):0;if(h.current&&Se-Q>5)return D!=null&&D(r,h.current)&&(N(),Ve==null||Ve(),h.current=null),d.current=rb,!0},[r,C,D,u,Ve,N]),Te=yt(Q=>{let{CLIENT_POS:te,CONTRA_CLIENT_POS:oe,POS:de}=Et(u),{clientX:Se,clientY:Be}=Q,{[te]:ve,[oe]:J}=Q,ee=y.current[de],ne=Math.abs(ee-ve),{current:fe}=h;if(Ae(ne,J)){console.log("drag handed over to provider");return}if(y.current.x=Se,y.current.y=Be,fe){let{draggableElement:ze,mouseOffset:et}=fe;if(d.current===rb&&ze){let V=y.current.x-et.x,_=y.current.y-et.y;ze.style.top=`${_}px`,ze.style.left=`${V}px`}else if(ne>0&&ze){let V=ee<ve?"fwd":"bwd",_=I(ve),ue=y.current[de]-et[de];if(_&&m.current&&!B.current?(pe(),$(_,1)):!_&&B.current&&G(),!B.current){let Me=Math.round(Math.max(d.current.start,Math.min(d.current.end,ue))),wt=u==="horizontal"?"left":"top";ze.style[wt]=`${Me}px`,U(Me,V)}}}},[U,I,pe,r,C,B,D,u,$,G]),Ie=yt(()=>{N(),h.current&&(v.current=h.current.draggableElement),X(),f(Q=>({...Q,draggedItemIndex:-1,isDragging:!1}))},[X,N]);T.current=Te,P.current=Ie;let nt=yt(Q=>{h.current=Q;let{draggableElement:te,mouseOffset:oe,initialDragElement:de}=Q,{current:Se}=e;if(console.log({container:Se,draggableElement:te,initialDragElement:de}),Se&&te){let Be=Se.getBoundingClientRect(),ve=te.getBoundingClientRect();return A(Be,ve),y.current.x=ve.left+oe.x,y.current.y=ve.top+oe.y,j(te),L(),!0}else return!1},[L,j,e,A]),Le=yt(Q=>{let{target:te}=Q,oe=vD(te,s),{current:de}=e;if(de&&oe){let{SCROLL_SIZE:Se,CLIENT_SIZE:Be}=Et(u),{[Se]:ve,[Be]:J}=de;m.current=ve>J;let ee=de.getBoundingClientRect(),ne=oe.getBoundingClientRect(),fe=h.current=new Al(Q,oe);A(ee,ne),j(oe);let{dataset:{index:ze="-1"}}=oe;f({isDragging:!0,draggable:wD(Nl,{element:$g(oe),onTransitionEnd:k,ref:fe.setDraggable,style:Kg(ne,ee),wrapperClassName:t}),draggedItemIndex:parseInt(ze)}),i==null||i(fe),L()}},[L,j,e,t,s,i,u,A,k]),Ye=yt(Q=>{let{CLIENT_POS:te,POS:oe}=Et(u),{[te]:de}=Q;Math.abs(de-w.current[oe])>xD&&e.current&&(g.current&&(window.clearTimeout(g.current),g.current=null),document.removeEventListener("mousemove",Ye),document.removeEventListener("mouseup",gt,!1),Le(Q))},[e,j,u]),gt=yt(()=>{g.current&&(window.clearTimeout(g.current),g.current=null),document.removeEventListener("mousemove",Ye,!1),document.removeEventListener("mouseup",gt,!1)},[Ye]),Ee=yt(Q=>{let{current:te}=e;if(Q.stopPropagation(),te&&!Q.defaultPrevented){let{clientX:oe,clientY:de}=Q;y.current.x=w.current.x=oe,y.current.y=w.current.y=de,document.addEventListener("mousemove",Ye,!1),document.addEventListener("mouseup",gt,!1),Q.persist(),g.current=window.setTimeout(()=>{document.removeEventListener("mousemove",Ye,!1),document.removeEventListener("mouseup",gt,!1),Le(Q.nativeEvent)},500)}},[e,Le,Ye,gt]),{current:Ze}=v;return mD(()=>{if(Ze&&e.current){let Q=x.current,te=e.current.querySelector(`${s}[data-index="${Q}"]`);te?(te.classList.add("vuuDropTarget-settling"),requestAnimationFrame(()=>{let{top:oe,left:de}=te.getBoundingClientRect(),{top:Se,left:Be}=Ze.getBoundingClientRect();Be!==de||Se!==oe?(Ze.classList.add("vuuDraggable-settling"),Ze.style.top=`${oe}px`,Ze.style.left=`${de}px`):k()})):console.log(`dont have the dropped item (at ${Q})`),v.current=null}},[e,s,Ze,k]),hD(()=>{r&&(C||M)&&O(r,nt)},[r,C,M,O,nt]),{...xe,...p,isScrolling:B,onMouseDown:o?Ee:void 0}};var oo=({allowDragDrop:o=!1,collapsibleHeaders:e,collectionHook:t,containerRef:n,contentRef:r,defaultHighlightedIndex:s,defaultSelected:i,disabled:l,disableAriaActiveDescendant:a,disableHighlightOnFocus:u,disableTypeToSelect:c,highlightedIndex:d,id:p,label:f="",listHandlers:h,onDragStart:g,onDrop:m,onHighlight:y,onKeyboardNavigation:w,onKeyDown:v,onMoveListItem:x,onSelect:S,onSelectionChange:b,restoreLastFocus:C,scrollContainerRef:M,selected:D,selectionStrategy:E,selectionKeys:O,stickyHeaders:T,tabToSelect:P,viewportRange:L})=>{let N=sb(null),A=sb(D||i),k=(J,ee)=>{var ne,fe;(fe=(ne=ae.listHandlers).onKeyboardNavigation)==null||fe.call(ne,J,ee),w==null||w(J,ee)},I=Fn((J,ee)=>{S&&ee!==null&&S(J,t.itemById(ee))},[t,S]),F=ED(()=>{var J,ee;return M||{current:(ee=(J=n.current)==null?void 0:J.querySelector(".vuuList-scrollContainer"))!=null?ee:null}},[]),H=Fn((J,ee)=>{if(b){if(Array.isArray(ee)){let ne=ee.map(fe=>t.itemById(fe));b(J,ne)}else if(ee){let ne=t.itemById(ee);b(J,ne)}}},[t,b]),{highlightedIndex:B,containerProps:{onKeyDown:$,onMouseMove:G,...q},setHighlightedIndex:j,...U}=Mg({containerRef:F,defaultHighlightedIndex:s,disableHighlightOnFocus:u,highlightedIndex:d,indexPositions:t.data,itemCount:t.data.length,label:f,onHighlight:y,onKeyboardNavigation:k,restoreLastFocus:C,selected:A.current,viewportItemCount:10}),X=Sg({collapsibleHeaders:e,highlightedIdx:B,collectionHook:t}),pe=Fn(J=>{j(-1),g==null||g(J)},[g,j]),ae=Rg({containerRef:n,defaultSelected:i,highlightedIdx:B,itemQuery:".vuuListItem",label:`${f}:useList`,onSelect:I,onSelectionChange:H,selected:D,selectionStrategy:E,selectionKeys:O,tabToSelect:P}),Ve=Fn((J,ee,ne)=>{let fe=t.data.indexOf(J);return fe===ee?ne:fe<Math.min(ee,ne)||fe>Math.max(ee,ne)?fe:ee<fe?fe-1:fe+1},[t.data]),xe=Fn((J,ee,ne)=>Array.isArray(J)?J.map(fe=>Ve(fe,ee,ne)):Ve(J,ee,ne),[Ve]),Ae=Fn((J,ee,ne)=>{eo(ae.selected)&&(N.current=xe(ae.selected,J,ee)),ne.isExternal?m==null||m(J,ee,ne):x==null||x(J,ee),j(-1)},[ae.selected,j,xe,m,x]),Te=Fn(J=>{j(J)},[j]),{setSelected:Ie}=ae;TD(()=>{let{current:J}=N;if(eo(J)){let ee=Array.isArray(J)?J.map(ne=>t.data[ne]):t.data[J];N.current=null,Ie(ee)}},[t.data,Ie]),on(()=>{eo(A.current)&&Ie(Array.isArray(A.current)?[]:null)},[Ie,t.data]);let{onMouseDown:nt,isDragging:Le,isScrolling:Ye,...gt}=Hn({allowDragDrop:o,draggableClassName:"list-item",orientation:"vertical",containerRef:n,id:p,itemQuery:".vuuListItem",onDragStart:pe,onDrop:Ae,onDropSettle:Te,viewportRange:L}),{onKeyDown:Ee}=Pg({disableTypeToSelect:c,highlightedIdx:B,highlightItemAtIndex:j,typeToNavigate:!0,items:t.data}),Ze=Fn(J=>{var ee,ne,fe;J.defaultPrevented||Ee==null||Ee(J),$(J),J.defaultPrevented||(ne=(ee=ae.listHandlers).onKeyDown)==null||ne.call(ee,J),J.defaultPrevented||(fe=X==null?void 0:X.onKeyDown)==null||fe.call(X,J),J.defaultPrevented||v==null||v(J)},[X,$,v,ae.listHandlers,Ee]),{isScrolling:Q,scrollIntoView:te}=Og({containerRef:F,contentRef:r,highlightedIdx:B,indexPositions:t.data,stickyHeaders:T}),oe=Q.current||Ye.current,de=Fn(J=>{if(!oe&&!l&&!Le){G();let ee=wg(J.target);if(ee!==-1&&ee!==B){let ne=t.data[ee];!ne||ne.disabled?j(-1):j(ee)}}},[Le,oe,l,j,G,B,t.data]),Se=()=>{var J;return B===void 0||B===-1||a||(J=t.data[B])==null?void 0:J.id};A.current=ae.selected;let Be={"aria-activedescendant":Se(),onBlur:q.onBlur,onFocus:q.onFocus,onKeyDown:Ze,onMouseDown:nt,onMouseDownCapture:q.onMouseDownCapture,onMouseLeave:q.onMouseLeave},ve=h||{onClick:ae.listHandlers.onClick,onMouseMove:de};return{focusVisible:U.focusVisible,controlledHighlighting:U.controlledHighlighting,highlightedIndex:B,keyboardNavigation:U.keyboardNavigation,listHandlers:ve,listItemHeaderHandlers:X,listControlProps:Be,scrollIntoView:te,selected:ae.selected,setHighlightedIndex:j,setIgnoreFocus:U.setIgnoreFocus,setSelected:ae.setSelected,...gt}};import{useCallback as ib,useMemo as MD,useRef as RD,useState as lb}from"react";var DD=(o,e,t=0)=>o===0?0:t===0?o*e:o-1*(e+t)+e,Fl=({displayedItemCount:o,getItemHeight:e,height:t,itemCount:n,itemGapSize:r,itemHeight:s=36,size:i})=>{let[l,a]=lb(s),[,u]=lb({}),c=RD(null),[d,p]=MD(()=>{let g=0,m=l!=null?l:s,y=DD(n,m,r);if(console.log(`contentHeight ${y}`),t!==void 0)return[y,void 0];let w=Math.min(o,n)||o;return typeof e=="function"?g+=Array(w).fill(0).reduce((x,S,b)=>x+e(b)+r,0)-r:g+=w*Number(m)+(w-1)*r,[y,g]},[o,e,t,n,r,s,l]),f=ib(({height:g})=>{typeof g=="number"&&a(g)},[]),h=ib(g=>{c.current=g,u({})},[]);return Nn(c,Gm,f,!0),{computedListHeight:p,contentHeight:d,listClientHeight:i==null?void 0:i.height,listItemHeight:l,rowHeightProxyRef:h}};import{useIsomorphicLayoutEffect as PD}from"@salt-ds/core";import{useCallback as kD,useMemo as ID,useRef as Nc,useState as LD}from"react";var ab=(o,e,t,n)=>{let r=Math.ceil(e/n),s=Math.floor(o/n),i=Math.ceil(s+r-1);return{atStart:s===0,atEnd:i===t-1,from:s,to:i}},Vl=({containerSize:o,itemCount:e,itemGapSize:t=0,itemSize:n,onViewportScroll:r})=>{let s=Nc(0),i=Nc(0),l=Nc(0),a=ID(()=>ab(l.current,o,e,n+t),[o,e,n,t]),[u,c]=LD(a);return PD(()=>{c(a)},[a]),{onVerticalScroll:kD(p=>{let f=p.target.scrollTop;if(f!==l.current){l.current=f;let h=n+t,g=ab(f,o,e,h);(g.from!==s.current||g.to!==i.current)&&(s.current=g.from,i.current=g.to,r==null||r(g.from,g.to),c(g))}},[n,t,o,e,r]),viewportRange:u}};import{Fragment as $D,jsx as Vo,jsxs as ub}from"react/jsx-runtime";import{createElement as zD}from"react";var BD="No data to display",Fo="vuuList",Vn=ND(function({ListItem:e=no,ListPlaceholder:t,allowDragDrop:n,children:r,className:s,collapsibleHeaders:i=!1,defaultHighlightedIndex:l,defaultSelected:a,disabled:u=!1,disableFocus:c=!1,disableTypeToSelect:d,displayedItemCount:p=10,emptyMessage:f,focusVisible:h,getItemHeight:g,getItemId:m,height:y,highlightedIndex:w,id:v,itemGapSize:x=0,itemHeight:S,itemTextHighlightPattern:b,itemToString:C=Bt,listHandlers:M,maxHeight:D,maxWidth:E,minHeight:O,minWidth:T,onDragStart:P,onDrop:L,onMoveListItem:N,onSelect:A,onSelectionChange:k,onHighlight:I,restoreLastFocus:F,selected:H,selectionStrategy:B,checkable:$=B==="multiple",scrollingApiRef:G,selectionKeys:q,showEmptyMessage:j=!1,source:U,style:X,stickyHeaders:pe,tabToSelect:ae,...Ve},xe){var qh,Qh;let Ae=Pe(v),Te=Fc(null),Ie=Fc(null),nt=Fc(null),[Le,Ye]=VD(),gt=FD(nn=>{Ye(nn)},[]),Ee=to({id:Ae,label:"List",source:U,children:r,options:{collapsibleHeaders:i,getItemId:m,itemToString:C}}),{listClientHeight:Ze,computedListHeight:Q,listItemHeight:te,rowHeightProxyRef:oe}=Fl({displayedItemCount:p,getItemHeight:g,height:y,itemCount:Ee.data.length,itemGapSize:x,itemHeight:S,rootRef:Te,size:Le}),{onVerticalScroll:de,viewportRange:Se}=Vl({containerSize:(Qh=(qh=Ze!=null?Ze:Q)!=null?qh:Le==null?void 0:Le.height)!=null?Qh:0,itemCount:Ee.data.length,itemGapSize:x,itemSize:te}),{draggable:Be,draggedItemIndex:ve,dropIndicator:J,focusVisible:ee,highlightedIndex:ne,listControlProps:fe,listHandlers:ze,listItemHeaderHandlers:et,scrollIntoView:V,selected:_}=oo({allowDragDrop:n,collapsibleHeaders:i,collectionHook:Ee,containerRef:Te,contentRef:nt,defaultHighlightedIndex:l,defaultSelected:Ee.itemToCollectionItemId(a),disabled:u,disableTypeToSelect:d,highlightedIndex:w,id:Ae,label:"List",listHandlers:M,onDragStart:P,onDrop:L,onMoveListItem:N,onSelect:A,onSelectionChange:k,onHighlight:I,restoreLastFocus:F,scrollContainerRef:Ie,selected:Ee.itemToCollectionItemId(H),selectionStrategy:B,selectionKeys:q,stickyHeaders:pe,tabToSelect:ae,viewportRange:Se});Pl({collectionHook:Ee,forwardedRef:G,scrollableRef:Te,scrollIntoView:V});let ue=h!=null?h:ee,Me=function(Ue,Pt,kt,at){let Po=zD(e,{...et,className:Hc(`${Fo}Header`,{focusVisible:i&&ue===Ue.value}),"aria-expanded":at,"data-idx":i?Ue.value:void 0,"data-index":i?Ue.value:void 0,"data-highlighted":Ue.value===ne||void 0,"data-sticky":pe,"data-selectable":!1,id:Pt,key:`header-${Ue.value}`,label:kt});return Ue.value+=1,Po},wt=g===void 0?()=>S:g;function Do(nn,Ue,Pt){var rl,jh;let{disabled:kt,value:at,id:Po,label:nl}=Ue,ol=HD(at),Is={className:Hc((rl=at==null?void 0:at.props)==null?void 0:rl.className,{vuuHighlighted:Pt.value===ne,vuuFocusVisible:ue===Pt.value,["vuuDraggable-dragAway"]:ve===Pt.value}),disabled:kt||u,id:Po,item:ol?void 0:(jh=Ue==null?void 0:Ue.value)!=null?jh:void 0,itemHeight:wt(Pt.value),itemTextHighlightPattern:b,key:Po,"data-index":Pt.value,label:nl,role:"option",selected:vl(_,Ue),showCheckbox:$};nn.push(ol?OD(at,Is):Vo(e,{...Is})),Pt.value+=1}let tn=function(Ue,Pt,kt){let{count:at=0,id:Po,expanded:nl,label:ol=""}=Pt[kt.value],Is=Me(kt,Po,ol,nl),rl=nl!==!1?[Is].concat(Er(Pt,kt,kt.value+at)||[]):Is;Ue.push(Vo("div",{role:"group",children:rl},Po))},Er=(nn,Ue={value:0},Pt=nn.length)=>{let kt=[];for(;Ue.value<Pt;){let at=nn[Ue.value];at.header?kt.push(Me(Ue,at.id,at.label,at.expanded===!1)):at.childNodes?tn(kt,nn,Ue):Do(kt,at,Ue)}return kt};function NT(){return f||j?Vo("span",{className:`${Fo}-empty-message`,children:f!=null?f:BD}):null}let HT=()=>{if(Ee.data.length){let nn=Ee.data;return Er(nn)}else NT()},FT="auto",VT={"--list-borderWidth":"var(--vuuList-borderWidth, var(--salt-size-border, 0))","--list-item-gap":x?`${x}px`:void 0,"--computed-list-height":Q===void 0?void 0:`${Q}px`,minWidth:T,minHeight:O,maxWidth:E,maxHeight:D};return ub(Bl,{"aria-multiselectable":B==="multiple"||B==="extended"||B==="extended-multi-range"||void 0,...Ve,...ze,...fe,className:Hc(Fo,s,{[`${Fo}-collapsible`]:i,[`${Fo}-contentSized`]:Q!==void 0,vuuFocusVisible:ne===Rc}),height:Q!=null?Q:y,id:`${Ae}`,onResize:gt,ref:AD(Te,xe),role:"listbox",onScroll:de,style:{...X,...VT},tabIndex:u||c?void 0:0,children:[Vo(Ll,{ref:oe,height:S}),Ee.data.length===0&&t!==void 0?Vo($D,{children:Vo(t,{})}):Vo("div",{className:`${Fo}-viewport`,ref:Ie,children:ub("div",{className:`${Fo}-scrollingContentContainer`,ref:nt,style:{height:FT},children:[HT(),J,Be]})})]})});import{makePrefixer as KD,useForkRef as UD,useIdMemo as GD}from"@salt-ds/core";function cb(o){var e,t,n="";if(typeof o=="string"||typeof o=="number")n+=o;else if(typeof o=="object")if(Array.isArray(o))for(e=0;e<o.length;e++)o[e]&&(t=cb(o[e]))&&(n&&(n+=" "),n+=t);else for(e in o)o[e]&&(n&&(n+=" "),n+=e);return n}function Vc(){for(var o,e,t=0,n="";t<arguments.length;)(o=arguments[t++])&&(e=cb(o))&&(n&&(n+=" "),n+=e);return n}import{forwardRef as qD,memo as QD,useRef as fb}from"react";import{useMemo as WD}from"react";var zl=class{constructor(e=0,t=0){this.keys=new Map,this.free=[],this.nextKeyValue=0,this.reset(e,t)}next(){return this.free.length?this.free.pop():this.nextKeyValue++}reset(e,t){this.keys.forEach((r,s)=>{(s<e||s>=t)&&(this.free.push(r),this.keys.delete(s))});let n=t-e;this.keys.size+this.free.length>n&&(this.free.length=n-this.keys.size);for(let r=e;r<t;r++)if(!this.keys.has(r)){let s=this.next();this.keys.set(r,s)}}keyFor(e){return this.keys.get(e)}};var _D=([o],[e])=>o-e,db=5,pb=({data:o,listItemGapSize:e=0,listItemHeight:t,viewportRange:n})=>{let r=WD(()=>new zl(0,1),[]),s=t+e,i=Math.max(0,n.from-db),l=Math.min(o.length,n.to+db);return r.reset(i,l),o.slice(i,l).map((u,c)=>[r.keyFor(c+i),(c+i)*s,c+i+1,u]).sort(_D)};import{jsx as Wl,jsxs as XD}from"react/jsx-runtime";var jD="No data to display",$l=KD("saltList"),JD=QD(no),Wj=qD(function({borderless:e,children:t,className:n,collapsibleHeaders:r=!1,defaultHighlightedIndex:s,defaultSelected:i,disabled:l=!1,disableFocus:a=!1,disableTypeToSelect:u,displayedItemCount:c=10,emptyMessage:d,getItemHeight:p,getItemId:f,height:h,highlightedIndex:g,id:m,itemGapSize:y=0,itemHeight:w,itemTextHighlightPattern:v,itemToString:x,maxHeight:S,maxWidth:b,minHeight:C,minWidth:M,onDragStart:D,onDrop:E,onSelect:O,onSelectionChange:T,onViewportScroll:P,onHighlight:L,restoreLastFocus:N,selected:A,selectionStrategy:k,scrollingApiRef:I,selectionKeys:F,showEmptyMessage:H=!1,source:B,style:$,stickyHeaders:G,tabToSelect:q,width:j,...U},X){let pe=GD(m),ae=fb(null),Ve=fb(null),xe=to({id:pe,label:"List",source:B,children:t,options:{collapsibleHeaders:r,getItemId:f,itemToString:x}}),{contentHeight:Ae,listItemHeight:Te,listHeight:Ie}=Fl({borderless:e,displayedItemCount:c,height:h,itemCount:xe.data.length,itemGapSize:y,itemHeight:w,rootRef:ae,rowHeightRef:Ve}),{focusVisible:nt,highlightedIndex:Le,listControlProps:Ye,listHandlers:gt,scrollIntoView:Ee,selected:Ze}=oo({collapsibleHeaders:r,collectionHook:xe,containerRef:ae,defaultHighlightedIndex:s,defaultSelected:xe.itemToCollectionItem(i),disabled:l,disableTypeToSelect:u,highlightedIndex:g,label:pe,onSelect:O,onSelectionChange:T,onHighlight:L,restoreLastFocus:N,selected:xe.itemToCollectionItem(A),selectionStrategy:k,selectionKeys:F,stickyHeaders:G,tabToSelect:q}),{onVerticalScroll:Q,viewportRange:te}=Vl({containerSize:typeof Ie=="number"?Ie:0,itemCount:xe.data.length,itemGapSize:y,itemSize:Te});console.log({viewPortRange:te});let oe=pb({data:xe.data,listItemGapSize:y,listItemHeight:Te,viewportRange:te});Pl({collectionHook:xe,forwardedRef:I,scrollableRef:ae,scrollIntoView:Ee});function de(ee,ne,fe){let[ze,et,V,_]=ne,ue=V-1;ee.push(Wl(JD,{"aria-setsize":xe.data.length,"aria-posinset":V,className:Vc(n,{saltHighlighted:ue===Le,saltFocusVisible:nt===ue}),"data-idx":ue,item:_,label:_.label,"data-offset":et,role:"option",selected:vl(Ze,_),id:_.id,translate3d:et},ze)),fe.value+=1}function Se(ee,ne={value:0},fe=ee.length){let ze=[];for(;ne.value<fe;){let et=ee[ne.value];de(ze,et,ne)}return ze}function Be(){return d||H?Wl("span",{className:$l("empty-message"),children:d!=null?d:jD}):null}let ve=()=>{if(oe.length)return Se(oe);Be()},J={"--list-item-gap":y?`${y}px`:void 0,minWidth:M,minHeight:C,width:j!=null?j:"100%",height:h!=null?h:"100%",maxWidth:b!=null?b:j,maxHeight:S!=null?S:Ie};return Wl("div",{...U,...gt,...Ye,className:Vc($l(),n,$l("virtualized")),id:`${pe}`,ref:UD(ae,X),role:"listbox",onScroll:Q,style:{...$,...J},tabIndex:l||a?void 0:0,children:XD("div",{className:$l("scrollingContentContainer"),style:{height:Ae},children:[Wl(Ll,{ref:Ve}),ve()]})})});import Qj from"classnames";import{jsx as Xj}from"react/jsx-runtime";import{useControlled as YD}from"@salt-ds/core";import{useCallback as Bc,useMemo as ZD}from"react";var hb=({collectionHook:o,defaultHighlightedIndex:e,defaultIsOpen:t,defaultSelected:n,highlightedIndex:r,isOpen:s,itemToString:i=Bt,listRef:l,onHighlight:a,onOpenChange:u,onSelectionChange:c,onSelect:d,selected:p,selectionStrategy:f})=>{let h=f==="multiple"||f==="extended",[g,m]=YD({controlled:s,default:t!=null?t:!1,name:"useDropdownList"}),y=Bc((b,C)=>{h||(m(!1),u==null||u(!1)),c==null||c(b,C)},[h,u,c,m]),w=Bc((b,C)=>{h||(m(!1),u==null||u(!1)),d==null||d(b,C)},[h,u,d,m]),v=oo({collectionHook:o,defaultHighlightedIndex:(e!=null?e:r===void 0)?0:void 0,defaultSelected:n,label:"DropDown",onSelectionChange:y,onSelect:w,containerRef:l,highlightedIndex:r,onHighlight:a,selected:p,selectionStrategy:f,tabToSelect:!h}),x=Bc(b=>{m(b),u==null||u(b)},[u,m]),S=ZD(()=>{if(h&&Array.isArray(v.selected)){let b=v.selected.map(C=>o.itemById(C));if(b.length===0)return;if(b.length===1){let[C]=b;return C===null?void 0:i(C)}else return`${b.length} items selected`}else{let b=v.selected;return b==null?void 0:i(o.itemById(b))}},[o,h,i,v.selected]);return{isOpen:g,onOpenChange:x,triggerLabel:S,...v}};import{jsx as zc,jsxs as rP}from"react/jsx-runtime";var _l=nP(function({"aria-label":e,children:t,defaultIsOpen:n,defaultSelected:r,id:s,isOpen:i,itemToString:l=Bt,onOpenChange:a,onSelectionChange:u,onSelect:c,selected:d,selectionStrategy:p,source:f,triggerComponent:h,ListItem:g,ListProps:m,width:y=180,...w},v){let x=Pe(s),S=mb(null),b=mb(null),C=eP(S,v),M=to({id:x,source:f,children:t,options:{itemToString:l}}),{highlightedIndex:D,triggerLabel:E,listHandlers:O,listControlProps:T,selected:P,...L}=hb({collectionHook:M,defaultHighlightedIndex:m==null?void 0:m.defaultHighlightedIndex,defaultIsOpen:n,defaultSelected:M.itemToCollectionItemId(r),highlightedIndex:m==null?void 0:m.highlightedIndex,isOpen:i,itemToString:l,label:"Dropdown",listRef:b,onHighlight:m==null?void 0:m.onHighlight,onOpenChange:a,onSelectionChange:u,onSelect:c,selected:M.itemToCollectionItemId(d),selectionStrategy:p}),N=oP(k=>{if(Array.isArray(k))return k.map(I=>M.itemById(I));if(k)return M.itemById(k)},[M]),A=()=>{let k={"aria-activedescendant":L.isOpen?T==null?void 0:T["aria-activedescendant"]:void 0,"aria-label":e};if(h){let I=h.props;return tP(h,Ks(I,{...L.isOpen?T:{},...k}))}else return zc(mg,{label:E,...L.isOpen?T:{},...k})};return zc(bl,{collectionHook:M,children:rP(El,{...w,id:x,isOpen:L.isOpen,onOpenChange:L.onOpenChange,placement:(m==null?void 0:m.width)===void 0?"below-full-width":"below",ref:C,width:y,children:[A(),zc(Vn,{ListItem:g,itemToString:l,...m,highlightedIndex:D,listHandlers:O,onSelectionChange:u,onSelect:c,ref:b,selected:N(P),selectionStrategy:p})]})})});import{useControlled as gb}from"@salt-ds/core";import{useCallback as ot,useRef as Kl,useState as bb}from"react";var sP=["Enter"],yb=({allowFreeText:o,ariaLabel:e,collectionHook:t,defaultIsOpen:n,defaultValue:r,onBlur:s,onFocus:i,onChange:l,onSelect:a,id:u,initialHighlightedIndex:c=-1,isOpen:d,itemToString:p=Bt,listRef:f,onOpenChange:h,onSelectionChange:g,selectionStrategy:m,stringToItem:y,value:w,InputProps:v={onBlur:s,onFocus:i,onChange:l,onSelect:a}})=>{var et;let x=m==="multiple"||m==="extended",S=(et=t.stringToCollectionItem(w!=null?w:r))!=null?et:null,{data:b,itemToCollectionItem:C,setFilterPattern:M,stringToCollectionItem:D}=t,E=Kl(null),O=Kl(null),T=Kl(!0),P=Kl(S),[L,N]=gb({controlled:d,default:n!=null?n:!1,name:"useDropdownList"}),[A,k]=gb({controlled:void 0,default:r!=null?r:"",name:"ComboBox",state:"value"}),I=ot(V=>Array.isArray(V)?V.map(_=>_.value):V&&V.value,[]),[F,H]=bb(!0),[B,$]=bb(!1),G=ot((V=P.current)=>{var _,ue;if(Array.isArray(V))console.log("TODO multi selection");else if(V==null)(_=E.current)==null||_.call(E,-1);else{let Me=b.indexOf(V);(ue=E.current)==null||ue.call(E,Me)}},[b]),q=ot(V=>{k(V),M(V===""?void 0:V)},[M,k]),j=ot((V=P.current)=>{var ue;let _="";Array.isArray(V)?console.log("TODO multi selection"):V!=null&&V.value!==null&&(_=p(V.value)),q(_),_===""?(ue=E.current)==null||ue.call(E,-1):G(V)},[G,p,q]),U=ot((V,_)=>{x||N(!1),P.current=_,j(_),g==null||g(V,I(_!=null?_:null))},[I,x,g,j,N]),X=ot((V,_)=>{if(!x){let ue=C(_);U(V,ue)}},[U,x,C]),pe=ot(V=>{if(!o&&V.key==="Enter"&&B){let[_]=b;U(V,_)}},[o,U,b,B]),ae=ot(V=>{V.key==="Escape"?o?q(""):j():V.key==="Tab"&&(o||j()),pe(V)},[o,pe,j,q]),Ve=ot(()=>{H(!1)},[]),{focusVisible:xe,setHighlightedIndex:Ae,highlightedIndex:Te,listControlProps:Ie,listHandlers:nt,selected:Le,setSelected:Ye}=oo({collectionHook:t,containerRef:f,defaultHighlightedIndex:c,disableAriaActiveDescendant:F,disableHighlightOnFocus:!0,disableTypeToSelect:!0,label:"useComboBox",onKeyboardNavigation:Ve,onKeyDown:ae,onSelectionChange:X,selected:P.current,selectionKeys:sP,selectionStrategy:m,tabToSelect:!x});E.current=Ae,O.current=Ye;let gt=ot(V=>{N(V),V||$(!1),h==null||h(V)},[h,N]),{onClick:Ee}=nt,Ze=ot(V=>{var _;(_=document.getElementById(`${u}-input`))==null||_.focus(),Ee==null||Ee(V)},[u,Ee]),Q=ot(V=>{let _=V.target.value;k(_),_&&_.trim().length?M(_):(M(void 0),P.current=null,g==null||g(V,null)),N(!0),$(_.length>0&&!o)},[o,g,M,N,k]),{onFocus:te=i}=v,{onFocus:oe}=Ie,de=ot(V=>{H(!1),oe==null||oe(V),te==null||te(V)},[te,oe]),Se=ot(V=>{let _=V.relatedTarget;return(_==null?void 0:_.id)===`${u}-list`},[u]),Be=ot(V=>{var ue;let _=A.trim();if(_){let Me=D(_);Me?Array.isArray(Me)||Me!==Le&&((ue=O.current)==null||ue.call(O,Me),g==null||g(V,Me.value)):y&&y(_)&&console.log("we have a new item")}},[g,Le,y,D,A]),{onBlur:ve=s}=v,{onBlur:J}=Ie,ee=ot(V=>{Se(V)||(J==null||J(V),ve==null||ve(V),o?Be(V):j(),H(!0),T.current=!0,N(!1))},[Se,J,ve,o,N,Be,j]),{onSelect:ne}=v,fe=ot(V=>{T.current?T.current=!1:H(!0),ne==null||ne(V)},[ne]);on(()=>{eo(Le)?G():Ae(c),b.length===0&&N(!1)},[G,b.length,c,Le,Ae,N]);let ze={...v.inputProps,"aria-label":e};return{focusVisible:xe,highlightedIndex:Te,isOpen:L,onOpenChange:gt,inputProps:{...v,id:`${u}-input`,inputProps:ze,onChange:Q,onSelect:fe,role:"combobox",value:A},listControlProps:{...Ie,onBlur:ee,onFocus:de},listHandlers:{...nt,onClick:Ze},selected:Le}};import iP from"classnames";import{jsx as aP}from"react/jsx-runtime";var lP="vuuChevronIcon",xb=o=>{let{direction:e,...t}=o;return aP("span",{...t,className:iP(lP,e)})};import{jsx as Ul,jsxs as fP}from"react/jsx-runtime";var Gl=cP(function({InputProps:e,ListProps:t,ListItem:n,"aria-label":r,allowFreeText:s,children:i,defaultIsOpen:l,defaultValue:a,disabled:u,onBlur:c,onFocus:d,onChange:p,onSelect:f,getFilterRegex:h,id:g,initialHighlightedIndex:m=-1,isOpen:y,itemToString:w,onOpenChange:v,onSelectionChange:x,selectionStrategy:S,source:b,stringToItem:C,value:M,width:D=180,...E},O){let T=Pe(g),P=pP(null),L=to({id:T,source:b,children:i,options:{filterPattern:M!=null?M:a,getFilterRegex:h,itemToString:w}}),{focusVisible:N,highlightedIndex:A,inputProps:{endAdornment:k,...I},isOpen:F,listHandlers:H,listControlProps:B,onOpenChange:$,selected:G}=yb({InputProps:e,allowFreeText:s,ariaLabel:r,collectionHook:L,defaultIsOpen:l,defaultValue:a,disabled:u,initialHighlightedIndex:m,listRef:P,onBlur:c,onFocus:d,onChange:p,onSelect:f,id:T,isOpen:y,itemToString:w,label:"ComboBox",onOpenChange:v,onSelectionChange:x,selectionStrategy:S,stringToItem:C,value:M}),q=dP(U=>Array.isArray(U)?U.map(X=>X.value):U&&U.value,[]);return Ul(bl,{collectionHook:L,children:fP(El,{...E,fullWidth:!0,id:T,isOpen:F,onOpenChange:$,openOnFocus:!0,ref:O,width:D,children:[Ul(uP,{...I,disabled:u,...B,endAdornment:k===null?null:Ul(xb,{direction:F?"up":"down",onClick:()=>{$(!F)}})}),Ul(Vn,{...t,ListItem:n,focusVisible:N,highlightedIndex:A,itemTextHighlightPattern:String(I.value)||void 0,id:`${T}-list`,listHandlers:H,onSelectionChange:x,ref:P,selected:q(G),selectionStrategy:S})]})})});import{getEditRuleValidator as hP}from"@vuu-ui/vuu-utils";var vb=o=>e=>mP(o,e);function mP(o,e){console.log(`apply rules to ${e}`);let t;for(let n of o){let r=hP(n.name);if(r){let s=r(n,e);switch(s){case!0:break;case!1:t===void 0&&(t=!1);break;default:t===void 0||t===!1?t=s:t+=`::${s}`}}else throw Error(`editable-utils applyRules, no validator registered for rule '${n.name}'`)}return console.log(t),t}import{useCallback as $c,useRef as Wc,useState as Cb}from"react";var Sb=o=>{let e=new Event("vuu-commit");o.dispatchEvent(e)},wb=({clientSideEditValidationCheck:o,initialValue:e,onCommit:t})=>{let[n,r]=Cb(),[s,i]=Cb(e),l=Wc(e),a=Wc(!1),u=Wc(!1),c=$c(()=>{console.log("blur")},[]),d=$c(f=>{if(f.key==="Enter")if(f.stopPropagation(),a.current){u.current=!0;let h=o==null?void 0:o(s);h?r(h):(r(void 0),t(s)&&(a.current=!1,Sb(f.target)))}else Sb(f.target),u.current=!1;else f.key==="ArrowRight"||f.key==="ArrowLeft"||f.key==="ArrowUp"||f.key==="ArrowDown"?f.stopPropagation():f.key==="Escape"&&a.current&&(a.current=!1,r(void 0),i(l.current))},[o,t,s]),p=$c(f=>{let{value:h}=f.target;if(a.current=h!==l.current,i(h),console.log(`value changes to ${h} message ${n}`),u.current){let g=o==null?void 0:o(h);console.log({warningMessage:g}),g!==n&&g!==!1&&r(g)}},[o,n]);return{onBlur:c,onChange:p,onKeyDown:d,value:s,warningMessage:n}};import gP from"classnames";import{useCallback as Tb,useLayoutEffect as bP,forwardRef as yP,useRef as _c}from"react";import{Input as xP,useControlled as Eb}from"@salt-ds/core";import{jsx as Kc}from"react/jsx-runtime";var ql="vuuEditableLabel",Bo=yP(function({className:e,defaultEditing:t,defaultValue:n,editing:r,onChange:s,onEnterEditMode:i,onExitEditMode:l,value:a,...u},c){let d=_c(null),p=_c(!1),[f,h]=Eb({controlled:a,default:n!=null?n:"",name:"EditableLabel",state:"value"}),[g,m]=Eb({controlled:r,default:t!=null?t:!1,name:"EditableLabel",state:"editing"}),y=Tb(E=>{m(p.current=E)},[m]),w=_c(f);bP(()=>{g&&d.current!==null&&(d.current.select(),d.current.focus())},[g,d]);let v=Tb(()=>{y(!0),i&&i()},[i,y]),x=({cancelEdit:E=!1,allowDeactivation:O=!1}={})=>{y(!1);let T=w.current;T!==f&&(E?h(T):w.current=f),l&&l(T,f,O,E)},S=E=>{let{value:O}=E.target;h(O),s&&s(O)},b=()=>{v()},C=()=>{p.current&&x({allowDeactivation:!0})},M=E=>{g&&E.key==="Enter"?(E.stopPropagation(),x()):E.key==="ArrowRight"||E.key==="ArrowLeft"?E.stopPropagation():E.key==="Escape"&&x({cancelEdit:!0})},D=gP(ql,e,{[`${ql}-editing`]:g});return Kc("div",{...u,className:D,onDoubleClick:b,"data-text":f,ref:c,children:g?Kc(xP,{inputProps:{className:`${ql}-input`,spellCheck:!1},value:f,onBlur:C,onChange:S,onKeyDown:M,inputRef:d,style:{padding:0},textAlign:"left",variant:"secondary"}):Kc("span",{className:`${ql}-label`,children:f})})});import{Input as vP}from"@salt-ds/core";import CP from"classnames";import{forwardRef as SP}from"react";import{jsx as Rb}from"react/jsx-runtime";var Mb="vuuExpandoInput",Ql=SP(function({className:e,value:t,inputProps:n,...r},s){return Rb("div",{className:CP(Mb,e),"data-text":t,children:Rb(vP,{...r,inputProps:{...n,className:`${Mb}-input`},ref:s,style:{padding:0},textAlign:"left",value:t,variant:"secondary"})})});import{jsx as EY,jsxs as MY}from"react/jsx-runtime";import{jsx as OY,jsxs as NY}from"react/jsx-runtime";import{useCallback as _Y,useRef as KY}from"react";import{jsx as qY}from"react/jsx-runtime";import{isNumericColumn as wP}from"@vuu-ui/vuu-utils";var Qc=o=>(e,t)=>{let n=[];if(o===void 0)return n;if(e==="header"||e==="column-menu")n.push(...TP(t,o)),n.push(...RP(t,o)),n.push(...EP(t,o)),n.push(...MP(t)),n.push({action:"column-settings",icon:"cog",label:"Column Settings",options:t}),n.push({action:"table-settings",icon:"cog",label:"DataGrid Settings",options:t});else if(e==="filter"){let{column:r,filter:s}=t,i=(s==null?void 0:s.column)===(r==null?void 0:r.name);n.push({label:"Edit filter",action:"filter-edit",options:t}),n.push({label:"Remove filter",action:"filter-remove-column",options:t}),r&&!i&&n.push({label:"Remove all filters",action:"remove-filters",options:t})}return n};function TP(o,{sort:{sortDefs:e}}){let{column:t}=o,n=[];if(t===void 0)return n;let r=e.length>0;return t.sorted==="A"?n.push({label:"Reverse Sort (DSC)",action:"sort-dsc",options:o}):t.sorted==="D"?n.push({label:"Reverse Sort (ASC)",action:"sort-asc",options:o}):typeof t.sorted=="number"?(t.sorted>0?n.push({label:"Reverse Sort (DSC)",action:"sort-add-dsc",options:o}):n.push({label:"Reverse Sort (ASC)",action:"sort-add-asc",options:o}),r&&Math.abs(t.sorted)<e.length&&n.push({label:"Remove from sort",action:"sort-remove",options:o}),n.push({label:"New Sort",children:[{label:"Ascending",action:"sort-asc",options:o},{label:"Descending",action:"sort-dsc",options:o}]})):r?(n.push({label:"Add to sort",children:[{label:"Ascending",action:"sort-add-asc",options:o},{label:"Descending",action:"sort-add-dsc",options:o}]}),n.push({label:"New Sort",children:[{label:"Ascending",action:"sort-asc",options:o},{label:"Descending",action:"sort-dsc",options:o}]})):n.push({label:"Sort",children:[{label:"Ascending",action:"sort-asc",options:o},{label:"Descending",action:"sort-dsc",options:o}]}),n}function EP(o,e){let{column:t}=o;if(t===void 0||e.groupBy.length===0)return[];let{name:n,label:r=n}=t;return[{label:`Aggregate ${r}`,children:[{label:"Count",action:"agg-count",options:o},{label:"Distinct",action:"agg-distinct",options:o}].concat(wP(t)?[{label:"Sum",action:"agg-sum",options:o},{label:"Avg",action:"agg-avg",options:o},{label:"High",action:"agg-high",options:o},{label:"Low",action:"agg-low",options:o}]:[])}]}var jc=(o,e)=>({label:`Pin ${e}`,action:`column-pin-${e}`,options:o}),Uc=o=>jc(o,"left"),Gc=o=>jc(o,"floating"),qc=o=>jc(o,"right");function MP(o){let{column:e}=o;if(e===void 0)return[];let{pin:t}=e,n=[{label:"Hide column",action:"column-hide",options:o},{label:"Remove column",action:"column-remove",options:o}];return t===void 0?n.push({label:"Pin column",children:[Uc(o),Gc(o),qc(o)]}):t==="left"?n.push({label:"Unpin column",action:"column-unpin",options:o},{label:"Pin column",children:[Gc(o),qc(o)]}):t==="right"?n.push({label:"Unpin column",action:"column-unpin",options:o},{label:"Pin column",children:[Uc(o),Gc(o)]}):t==="floating"&&n.push({label:"Unpin column",action:"column-unpin",options:o},{label:"Pin column",children:[Uc(o),qc(o)]}),n}function RP(o,{groupBy:e}){let{column:t}=o,n=[];if(t===void 0)return n;let{name:r,label:s=r}=t;return e.length===0?n.push({label:`Group by ${s}`,action:"group",options:o}):n.push({label:`Add ${s} to group by`,action:"group-add",options:o}),n}import{removeColumnFromFilter as DP}from"@vuu-ui/vuu-utils";import{addGroupColumn as Db,addSortColumn as Pb,AggregationType as PP,setAggregations as Fr,setSortColumn as kb}from"@vuu-ui/vuu-utils";var kP=(o,e)=>{if(o.filterStruct&&e){let[t,n]=DP(e,o.filterStruct);return{filter:n,filterStruct:t}}else return o},{Average:IP,Count:LP,Distinct:AP,High:OP,Low:NP,Sum:HP}=PP,Jc=({dataSource:o,onPersistentColumnOperation:e})=>n=>{let r=n.options;if(r.column&&o){let{column:s}=r;switch(n.menuId){case"sort-asc":return o.sort=kb(o.sort,s,"A"),!0;case"sort-dsc":return o.sort=kb(o.sort,s,"D"),!0;case"sort-add-asc":return o.sort=Pb(o.sort,s,"A"),!0;case"sort-add-dsc":return o.sort=Pb(o.sort,s,"D"),!0;case"group":return o.groupBy=Db(o.groupBy,s),!0;case"group-add":return o.groupBy=Db(o.groupBy,s),!0;case"column-hide":return e({type:"hideColumns",columns:[s]}),!0;case"column-remove":return o.columns=o.columns.filter(i=>i!==s.name),!0;case"filter-remove-column":return o.filter=kP(o.filter,s),!0;case"remove-filters":return o.filter={filter:""},!0;case"agg-avg":return o.aggregations=Fr(o.aggregations,s,IP),!0;case"agg-high":return o.aggregations=Fr(o.aggregations,s,OP),!0;case"agg-low":return o.aggregations=Fr(o.aggregations,s,NP),!0;case"agg-count":return o.aggregations=Fr(o.aggregations,s,LP),!0;case"agg-distinct":return o.aggregations=Fr(o.aggregations,s,AP),!0;case"agg-sum":return o.aggregations=Fr(o.aggregations,s,HP),!0;case"column-pin-floating":return e({type:"pinColumn",column:s,pin:"floating"}),!0;case"column-pin-left":return e({type:"pinColumn",column:s,pin:"left"}),!0;case"column-pin-right":return e({type:"pinColumn",column:s,pin:"right"}),!0;case"column-unpin":return e({type:"pinColumn",column:s,pin:void 0}),!0;case"column-settings":return e({type:"columnSettings",column:s}),!0;case"table-settings":return e({type:"tableSettings"}),!0;default:}}return!1};import{Button as Iie,useIdMemo as Lie}from"@salt-ds/core";import{buildColumnMap as qee,getColumnStyle as Qee,isGroupColumn as jee,metadataKeys as pk,notHidden as Jee,visibleColumnAtIndex as Xee}from"@vuu-ui/vuu-utils";import{useCallback as ete,useMemo as tte}from"react";import{isGroupColumn as Ob,isJsonColumn as JP,isJsonGroup as XP,metadataKeys as YP,notHidden as ZP,RowSelected as ek}from"@vuu-ui/vuu-utils";import tk from"classnames";import{memo as nk,useCallback as Nb}from"react";import{getColumnStyle as FP,metadataKeys as VP}from"@vuu-ui/vuu-utils";import BP from"classnames";import{memo as zP,useCallback as $P,useRef as WP,useState as Ib}from"react";import{jsx as jl}from"react/jsx-runtime";var{KEY:Lb}=VP,Xc=zP(({className:o,column:e,columnMap:t,onClick:n,row:r})=>{let s=WP(null),{align:i,CellRenderer:l,key:a,pin:u,editable:c,resizing:d,valueFormatter:p}=e,[f,h]=Ib(!1),g=p(r[a]),[m,y]=Ib(g),w=()=>{var D;(D=s.current)==null||D.focus()},v=D=>{D.key==="Enter"&&h(!0)},x=$P(D=>{n==null||n(D,e)},[e,n]),S=()=>{h(!0)},b=(D="",E="",O=!0,T=!1)=>{var P;h(!1),T?y(D):E!==D&&y(E),O===!1&&((P=s.current)==null||P.focus())},C=BP(o,{vuuAlignRight:i==="right",vuuPinFloating:u==="floating",vuuPinLeft:u==="left",vuuPinRight:u==="right","vuuTableCell-resizing":d})||void 0,M=FP(e);return c?jl("div",{className:C,"data-editable":!0,role:"cell",style:M,onKeyDown:v,children:jl(Bo,{editing:f,value:m,onChange:y,onMouseDownCapture:w,onEnterEditMode:S,onExitEditMode:b,onKeyDown:v,ref:s,tabIndex:0},"title")}):jl("div",{className:C,role:"cell",style:M,onClick:x,children:l?jl(l,{column:e,columnMap:t,row:r}):g})},_P);Xc.displayName="TableCell";function _P(o,e){return o.column===e.column&&o.onClick===e.onClick&&o.row[Lb]===e.row[Lb]&&o.row[o.column.key]===e.row[e.column.key]}import{getColumnStyle as KP,getGroupValueAndOffset as UP,metadataKeys as GP}from"@vuu-ui/vuu-utils";import{useCallback as qP}from"react";import{jsx as Yc,jsxs as jP}from"react/jsx-runtime";var{IS_LEAF:QP}=GP,Ab=({column:o,onClick:e,row:t})=>{let{columns:n}=o,[r,s]=UP(n,t),i=qP(c=>{e==null||e(c,o)},[o,e]),l=KP(o),a=t[QP],u=Array(s).fill(0).map((c,d)=>Yc("span",{className:"vuuTableGroupCell-spacer"},d));return jP("div",{className:"vuuTableGroupCell vuuPinLeft",onClick:a?void 0:i,role:"cell",style:l,children:[u,a?null:Yc("span",{className:"vuuTableGroupCell-toggle","data-icon":"triangle-right"}),Yc("span",{children:r})]})};import{jsx as Fb,jsxs as uk}from"react/jsx-runtime";var{IDX:ok,IS_EXPANDED:rk,SELECTED:sk}=YP,{True:Hb,First:ik,Last:lk}=ek,Vr="vuuTableRow",ak=nk(function({columnMap:e,columns:t,offset:n,onClick:r,onToggleGroup:s,virtualColSpan:i=0,row:l}){let{[ok]:a,[rk]:u,[sk]:c}=l,d=tk(Vr,{[`${Vr}-even`]:a%2===0,[`${Vr}-expanded`]:u,[`${Vr}-selected`]:c&Hb,[`${Vr}-selectedStart`]:c&ik,[`${Vr}-selectedEnd`]:c&lk}),p=Nb(h=>{let g=h.shiftKey,m=h.ctrlKey||h.metaKey;r==null||r(l,g,m)},[r,l]),f=Nb((h,g)=>{(Ob(g)||XP(g,l))&&(h.stopPropagation(),s==null||s(l,g))},[s,l]);return uk("div",{"aria-selected":c&Hb?!0:void 0,"aria-rowindex":a,className:d,onClick:p,role:"row",style:{transform:`translate3d(0px, ${n}px, 0px)`},children:[i>0?Fb("div",{role:"cell",style:{width:i}}):null,t.filter(ZP).map(h=>{let g=Ob(h),m=JP(h);return Fb(g?Ab:Xc,{column:h,columnMap:e,onClick:g||m?f:void 0,row:l},h.name)})]})});import _Z from"classnames";import{useRef as GZ}from"react";import{useCallback as FZ,useRef as VZ}from"react";import{jsx as XZ,jsxs as YZ}from"react/jsx-runtime";import Mee from"classnames";import{useCallback as kee,useRef as Iee}from"react";import oee from"classnames";import{jsx as iee,jsxs as lee}from"react/jsx-runtime";import mee from"classnames";import{useCallback as yee}from"react";import{jsx as Cee}from"react/jsx-runtime";import{jsx as Bee,jsxs as zee}from"react/jsx-runtime";import{jsx as ate,jsxs as ute}from"react/jsx-runtime";var{RENDER_IDX:ite}=pk;import{applySort as Jse,buildColumnMap as Xse,isJsonGroup as Yse,metadataKeys as f1,moveItemDeprecated as Zse}from"@vuu-ui/vuu-utils";import{useCallback as nie,useEffect as oie,useMemo as rie,useRef as sie,useState as iie}from"react";import{getFullRange as pte,metadataKeys as fk,WindowRange as fte}from"@vuu-ui/vuu-utils";import{useCallback as mte,useEffect as gte,useMemo as bte,useRef as yte,useState as xte}from"react";var{SELECTED:vte}=fk;import{useCallback as soe,useEffect as ioe,useState as loe}from"react";import{EventEmitter as Dk,getLoggingConfigForWorker as Pk,uuid as kk}from"@vuu-ui/vuu-utils";var Ys=(o,e)=>o===e?!0:o===void 0&&e===void 0,hk=({filter:o},{filter:e})=>o===void 0&&(e==null?void 0:e.filter)===""||e===void 0&&(o==null?void 0:o.filter)==="",mk=(o,e)=>{var t,n;return hk(o,e)?!1:((t=o.filter)==null?void 0:t.filter)!==((n=e.filter)==null?void 0:n.filter)},gk=({sort:o},{sort:e})=>o===void 0&&(e==null?void 0:e.sortDefs.length)===0||e===void 0&&(o==null?void 0:o.sortDefs.length)===0,bk=(o,e)=>{let{sort:t}=o,{sort:n}=e;return Ys(t,n)||gk(o,e)?!1:t===void 0||n===void 0||(t==null?void 0:t.sortDefs.length)!==(n==null?void 0:n.sortDefs.length)?!0:t.sortDefs.some(({column:r,sortType:s},i)=>r!==n.sortDefs[i].column||s!==n.sortDefs[i].sortType)},Vb=o=>o!==void 0&&o.groupBy!==void 0&&o.groupBy.length>0,Bb=o=>(o==null?void 0:o.filter)!==void 0&&o.filter.filter.length>0,zb=o=>{var e;return(o==null?void 0:o.sort)!==void 0&&Array.isArray((e=o.sort)==null?void 0:e.sortDefs)&&o.sort.sortDefs.length>0},yk=({groupBy:o},{groupBy:e})=>o===void 0&&(e==null?void 0:e.length)===0||e===void 0&&(o==null?void 0:o.length)===0,Zc=(o,e)=>{let{groupBy:t}=o,{groupBy:n}=e;return Ys(t,n)||yk(o,e)?!1:t===void 0||n===void 0||(t==null?void 0:t.length)!==(n==null?void 0:n.length)?!0:t.some((r,s)=>r!==(n==null?void 0:n[s]))},xk=({columns:o},{columns:e})=>o===void 0&&(e==null?void 0:e.length)===0||e===void 0&&(o==null?void 0:o.length)===0,vk=(o,e)=>{let{columns:t}=o,{columns:n}=e;return Ys(t,n)||xk(o,e)?!1:t===void 0||n===void 0||(t==null?void 0:t.length)!==(n==null?void 0:n.length)?!0:t.some((r,s)=>r!==(n==null?void 0:n[s]))},Ck=({aggregations:o},{aggregations:e})=>o===void 0&&(e==null?void 0:e.length)===0||e===void 0&&(o==null?void 0:o.length)===0,Sk=(o,e)=>{let{aggregations:t}=o,{aggregations:n}=e;return Ys(t,n)||Ck(o,e)?!1:t===void 0||n===void 0||t.length!==n.length?!0:t.some(({column:r,aggType:s},i)=>r!==n[i].column||s!==n[i].aggType)},wk=()=>!1,Jl=(o,e)=>Ys(o,e)?!1:o===void 0||e===void 0?!0:vk(o,e)||mk(o,e)||bk(o,e)||Zc(o,e)||Sk(o,e)||wk(o,e),Tk=["config","aggregate","viewport-update","columns","debounce-begin","disabled","enabled","filter","groupBy","vuu-link-created","vuu-link-removed","vuu-links","vuu-menu","sort","subscribed"],$b=o=>{let e=o.type;return Tk.includes(e)},Wb=o=>["config","aggregate","columns","filter","groupBy","sort"].includes(o.type),Ek={filter:""},Mk={sortDefs:[]},Xl={aggregations:[],columns:[],filter:Ek,groupBy:[],sort:Mk},Yl=o=>{if(o.aggregations&&o.columns&&o.filter&&o.groupBy&&o.sort)return o;{let{aggregations:e=[],columns:t=[],filter:n={filter:""},groupBy:r=[],sort:s={sortDefs:[]},visualLink:i}=o;return{aggregations:e,columns:t,filter:n,groupBy:r,sort:s,visualLink:i}}};var _b="GET_TABLE_LIST",Kb="GET_TABLE_META";var ed=o=>o.type==="connection-status",Ub=o=>o.type==="connection-metrics",Gb=o=>typeof o.result<"u",qb=o=>o.type==="TABLE_META_RESP";var Qb='\nvar me=(s,e,t)=>{if(!e.has(s))throw TypeError("Cannot "+t)};var d=(s,e,t)=>(me(s,e,"read from private field"),t?t.call(s):e.get(s)),F=(s,e,t)=>{if(e.has(s))throw TypeError("Cannot add the same private member more than once");e instanceof WeakSet?e.add(s):e.set(s,t)},he=(s,e,t,n)=>(me(s,e,"write to private field"),n?n.call(s,t):e.set(s,t),t);function be(s,e,t=[],n=[]){for(let r=0,o=s.length;r<o;r++)(e(s[r],r)?t:n).push(s[r]);return[t,n]}var x={IDX:0,RENDER_IDX:1,IS_LEAF:2,IS_EXPANDED:3,DEPTH:4,COUNT:5,KEY:6,SELECTED:7,count:8,PARENT_IDX:"parent_idx",IDX_POINTER:"idx_pointer",FILTER_COUNT:"filter_count",NEXT_FILTER_IDX:"next_filter_idx"};var{DEPTH:tn,IS_LEAF:nn}=x;var Ce=s=>{var e,t;if(((e=globalThis.document)==null?void 0:e.cookie)!==void 0)return(t=globalThis.document.cookie.split("; ").find(n=>n.startsWith(`${s}=`)))==null?void 0:t.split("=")[1]};function Y({from:s,to:e},t=0,n=Number.MAX_SAFE_INTEGER){if(t===0)return n<s?{from:0,to:0}:{from:s,to:Math.min(e,n)};if(s===0)return{from:s,to:Math.min(e+t,n)};{let r=e-s,o=Math.round(t/2),a=s-o<0,u=n-(e+o)<0;return a&&u?{from:0,to:n}:a?{from:0,to:r+t}:u?{from:Math.max(0,n-(r+t)),to:n}:{from:s-o,to:e+o}}}var lt=(s,{from:e,to:t})=>s>=e&&s<t;var v=class{constructor(e,t){this.from=e,this.to=t}isWithin(e){return lt(e,this)}overlap(e,t){return e>=this.to||t<this.from?[0,0]:[Math.max(e,this.from),Math.min(t,this.to)]}copy(){return new v(this.from,this.to)}};var{KEY:cn}=x;var ct=["error","warn","info","debug"],pt=s=>typeof s=="string"&&ct.includes(s),dt="error",N=()=>{},gt="error",{loggingLevel:W=gt}=ft(),w=s=>{let e=W==="debug",t=e||W==="info",n=t||W==="warn",r=n||W==="error",o=t?p=>console.info(`[${s}] ${p}`):N,a=n?p=>console.warn(`[${s}] ${p}`):N,u=e?p=>console.debug(`[${s}] ${p}`):N;return{errorEnabled:r,error:r?p=>console.error(`[${s}] ${p}`):N}};function ft(){return typeof loggingSettings<"u"?loggingSettings:{loggingLevel:mt()}}function mt(){let s=Ce("vuu-logging-level");return pt(s)?s:dt}var{debug:ht,debugEnabled:bt}=w("range-monitor"),$=class{constructor(e){this.source=e;this.range={from:0,to:0};this.timestamp=0}isSet(){return this.timestamp!==0}set({from:e,to:t}){let{timestamp:n}=this;if(this.range.from=e,this.range.to=t,this.timestamp=performance.now(),n)bt&&ht(`<${this.source}> [${e}-${t}], ${(this.timestamp-n).toFixed(0)} ms elapsed`);else return 0}};function ye(s){return Array.isArray(s)}function Ct(s){return!Array.isArray(s)}var S,Se=class{constructor(){F(this,S,new Map)}addListener(e,t){let n=d(this,S).get(e);n?ye(n)?n.push(t):Ct(n)&&d(this,S).set(e,[n,t]):d(this,S).set(e,t)}removeListener(e,t){if(!d(this,S).has(e))return;let n=d(this,S).get(e),r=-1;if(n===t)d(this,S).delete(e);else if(Array.isArray(n)){for(let o=length;o-- >0;)if(n[o]===t){r=o;break}if(r<0)return;n.length===1?(n.length=0,d(this,S).delete(e)):n.splice(r,1)}}removeAllListeners(e){e&&d(this,S).has(e)?d(this,S).delete(e):e===void 0&&d(this,S).clear()}emit(e,...t){if(d(this,S)){let n=d(this,S).get(e);n&&this.invokeHandler(n,t)}}once(e,t){let n=(...r)=>{this.removeListener(e,n),t(...r)};this.on(e,n)}on(e,t){this.addListener(e,t)}invokeHandler(e,t){if(ye(e))e.slice().forEach(n=>this.invokeHandler(n,t));else switch(t.length){case 0:e();break;case 1:e(t[0]);break;case 2:e(t[0],t[1]);break;default:e.call(null,...t)}}};S=new WeakMap;var q=String.fromCharCode(8200),m=String.fromCharCode(8199);var Rn={DIGIT:m,TWO_DIGITS:m+m,THREE_DIGITS:m+m+m,FULL_PADDING:[null,q+m,q+m+m,q+m+m+m,q+m+m+m+m]};var wn=m+m+m+m+m+m+m+m+m;var{COUNT:qn}=x;var B=class{constructor(e){this.keys=new Map,this.free=[],this.nextKeyValue=0,this.reset(e)}next(){return this.free.length>0?this.free.pop():this.nextKeyValue++}reset({from:e,to:t}){this.keys.forEach((r,o)=>{(o<e||o>=t)&&(this.free.push(r),this.keys.delete(o))});let n=t-e;this.keys.size+this.free.length>n&&(this.free.length=Math.max(0,n-this.keys.size));for(let r=e;r<t;r++)if(!this.keys.has(r)){let o=this.next();this.keys.set(r,o)}this.nextKeyValue>this.keys.size&&(this.nextKeyValue=this.keys.size)}keyFor(e){let t=this.keys.get(e);if(t===void 0)throw console.log(`key not found\n keys: ${this.toDebugString()}\n free : ${this.free.join(",")} \n `),Error(`KeySet, no key found for rowIndex ${e}`);return t}toDebugString(){return Array.from(this.keys.entries()).map((e,t)=>`${e}=>${t}`).join(",")}};var{IDX:Yn}=x;var{SELECTED:Qn}=x,I={False:0,True:1,First:2,Last:4};var yt=(s,e)=>e>=s[0]&&e<=s[1],St=I.True+I.First+I.Last,Tt=I.True+I.First,Rt=I.True+I.Last,Z=(s,e)=>{for(let t of s)if(typeof t=="number"){if(t===e)return St}else if(yt(t,e))return e===t[0]?Tt:e===t[1]?Rt:I.True;return I.False};var Te=s=>{if(s.every(t=>typeof t=="number"))return s;let e=[];for(let t of s)if(typeof t=="number")e.push(t);else for(let n=t[0];n<=t[1];n++)e.push(n);return e};var wt=(()=>{let s=0,e=()=>`0000${(Math.random()*36**4<<0).toString(36)}`.slice(-4);return()=>(s+=1,`u${e()}${s}`)})();var{debug:Os,debugEnabled:ks,error:Ee,info:V,infoEnabled:It,warn:_}=w("websocket-connection"),Ve="ws",vt=s=>s.startsWith(Ve+"://")||s.startsWith(Ve+"s://"),Ie={},ee=Symbol("setWebsocket"),A=Symbol("connectionCallback");async function ve(s,e,t,n=10,r=5){return Ie[s]={status:"connecting",connect:{allowed:r,remaining:r},reconnect:{allowed:n,remaining:n}},ne(s,e,t)}async function Q(s){ne(s.url,s.protocol,s[A],s)}async function ne(s,e,t,n){let{status:r,connect:o,reconnect:a}=Ie[s],u=r==="connecting"?o:a;try{t({type:"connection-status",status:"connecting"});let c=typeof n<"u",p=await _t(s,e);console.info("%c\u26A1 %cconnected","font-size: 24px;color: green;font-weight: bold;","color:green; font-size: 14px;"),n!==void 0&&n[ee](p);let i=n!=null?n:new te(p,s,e,t),l=c?"reconnected":"connection-open-awaiting-session";return t({type:"connection-status",status:l}),i.status=l,u.remaining=u.allowed,i}catch{let p=--u.remaining>0;if(t({type:"connection-status",status:"disconnected",reason:"failed to connect",retry:p}),p)return Dt(s,e,t,n,2e3);throw Error("Failed to establish connection")}}var Dt=(s,e,t,n,r)=>new Promise(o=>{setTimeout(()=>{o(ne(s,e,t,n))},r)}),_t=(s,e)=>new Promise((t,n)=>{let r=vt(s)?s:`wss://${s}`;It&&e!==void 0&&V(`WebSocket Protocol ${e==null?void 0:e.toString()}`);let o=new WebSocket(r,e);o.onopen=()=>t(o),o.onerror=a=>n(a)}),Me=()=>{_==null||_("Connection cannot be closed, socket not yet opened")},xe=s=>{_==null||_(`Message cannot be sent, socket closed ${s.body.type}`)},Pt=s=>{try{return JSON.parse(s)}catch{throw Error(`Error parsing JSON response from server ${s}`)}},te=class{constructor(e,t,n,r){this.close=Me;this.requiresLogin=!0;this.send=xe;this.status="ready";this.messagesCount=0;this.connectionMetricsInterval=null;this.handleWebsocketMessage=e=>{let t=Pt(e.data);this.messagesCount+=1,this[A](t)};this.url=t,this.protocol=n,this[A]=r,this[ee](e)}reconnect(){Q(this)}[(A,ee)](e){let t=this[A];e.onmessage=o=>{this.status="connected",e.onmessage=this.handleWebsocketMessage,this.handleWebsocketMessage(o)},this.connectionMetricsInterval=setInterval(()=>{t({type:"connection-metrics",messagesLength:this.messagesCount}),this.messagesCount=0},2e3),e.onerror=()=>{Ee("\u26A1 connection error"),t({type:"connection-status",status:"disconnected",reason:"error"}),this.connectionMetricsInterval&&(clearInterval(this.connectionMetricsInterval),this.connectionMetricsInterval=null),this.status==="connection-open-awaiting-session"?Ee("Websocket connection lost before Vuu session established, check websocket configuration"):this.status!=="closed"&&(Q(this),this.send=r)},e.onclose=()=>{V==null||V("\u26A1 connection close"),t({type:"connection-status",status:"disconnected",reason:"close"}),this.connectionMetricsInterval&&(clearInterval(this.connectionMetricsInterval),this.connectionMetricsInterval=null),this.status!=="closed"&&(Q(this),this.send=r)};let n=o=>{e.send(JSON.stringify(o))},r=o=>{V==null||V(`TODO queue message until websocket reconnected ${o.body.type}`)};this.send=n,this.close=()=>{this.status="closed",e.close(),this.close=Me,this.send=xe,V==null||V("close websocket")}}};var Lt=["VIEW_PORT_MENUS_SELECT_RPC","VIEW_PORT_MENU_TABLE_RPC","VIEW_PORT_MENU_ROW_RPC","VIEW_PORT_MENU_CELL_RPC","VP_EDIT_CELL_RPC","VP_EDIT_ROW_RPC","VP_EDIT_ADD_ROW_RPC","VP_EDIT_DELETE_CELL_RPC","VP_EDIT_DELETE_ROW_RPC","VP_EDIT_SUBMIT_FORM_RPC"],De=s=>Lt.includes(s.type),re=({requestId:s,...e})=>[s,e],_e=s=>{let e=s.at(0);if(e.updateType==="SIZE"){if(s.length===1)return s;e=s.at(1)}let t=s.at(-1);return[e,t]},Pe=s=>{let e={};for(let t of s)(e[t.viewPortId]||(e[t.viewPortId]=[])).push(t);return e};var se=({columns:s,dataTypes:e,key:t,table:n})=>({table:n,columns:s.map((r,o)=>({name:r,serverDataType:e[o]})),key:t});var Le=s=>s.type==="connection-status",Oe=s=>s.type==="connection-metrics";var ke=s=>"viewport"in s,Ae=s=>s.type==="VIEW_PORT_MENU_RESP"&&s.action!==null&&G(s.action.table),G=s=>s!==null&&typeof s=="object"&&"table"in s&&"module"in s?s.table.startsWith("session"):!1;var Ue="CHANGE_VP_SUCCESS",Fe="CHANGE_VP_RANGE_SUCCESS",Ne="CLOSE_TREE_NODE",We="CLOSE_TREE_SUCCESS";var $e="CREATE_VP",qe="CREATE_VP_SUCCESS",Be="DISABLE_VP",Ge="DISABLE_VP_SUCCESS";var Ke="ENABLE_VP",He="ENABLE_VP_SUCCESS";var oe="GET_VP_VISUAL_LINKS",je="GET_VIEW_PORT_MENUS";var ze="HB",Je="HB_RESP",Ye="LOGIN",Ze="LOGIN_SUCCESS",Xe="OPEN_TREE_NODE",Qe="OPEN_TREE_SUCCESS";var et="REMOVE_VP";var ie="RPC_RESP";var tt="SET_SELECTION_SUCCESS",ae="TABLE_META_RESP",ue="TABLE_LIST_RESP",nt="TABLE_ROW";var st=s=>{switch(s){case"TypeAheadRpcHandler":return"TYPEAHEAD";default:return"SIMUL"}};var ot=[],T=w("array-backed-moving-window"),h,K=class{constructor({from:e,to:t},{from:n,to:r},o){F(this,h,void 0);this.setRowCount=e=>{var t;if((t=T.info)==null||t.call(T,`setRowCount ${e}`),e<this.internalData.length&&(this.internalData.length=e),e<this.rowCount){this.rowsWithinRange=0;let n=Math.min(e,this.clientRange.to);for(let r=this.clientRange.from;r<n;r++){let o=r-d(this,h).from;this.internalData[o]!==void 0&&(this.rowsWithinRange+=1)}}this.rowCount=e};this.bufferBreakout=(e,t)=>{let n=this.bufferSize*.25;return d(this,h).to-t<n?!0:d(this,h).from>0&&e-d(this,h).from<n};this.bufferSize=o,this.clientRange=new v(e,t),he(this,h,new v(n,r)),this.internalData=new Array(o),this.rowsWithinRange=0,this.rowCount=0}get range(){return d(this,h)}get hasAllRowsWithinRange(){return this.rowsWithinRange===this.clientRange.to-this.clientRange.from||this.rowCount>0&&this.clientRange.from+this.rowsWithinRange===this.rowCount}outOfRange(e,t){let{from:n,to:r}=this.range;if(t<n||e>=r)return!0}setAtIndex(e){let{rowIndex:t}=e,n=this.isWithinClientRange(t);if(n||this.isWithinRange(t)){let r=t-d(this,h).from;!this.internalData[r]&&n&&(this.rowsWithinRange+=1),this.internalData[r]=e}return n}getAtIndex(e){return d(this,h).isWithin(e)&&this.internalData[e-d(this,h).from]!=null?this.internalData[e-d(this,h).from]:void 0}isWithinRange(e){return d(this,h).isWithin(e)}isWithinClientRange(e){return this.clientRange.isWithin(e)}setClientRange(e,t){var p;(p=T.debug)==null||p.call(T,`setClientRange ${e} - ${t}`);let n=this.clientRange.from,r=Math.min(this.clientRange.to,this.rowCount);if(e===n&&t===r)return[!1,ot];let o=this.clientRange.copy();this.clientRange.from=e,this.clientRange.to=t,this.rowsWithinRange=0;for(let i=e;i<t;i++){let l=i-d(this,h).from;this.internalData[l]&&(this.rowsWithinRange+=1)}let a=ot,u=d(this,h).from;if(this.hasAllRowsWithinRange)if(t>o.to){let i=Math.max(e,o.to);a=this.internalData.slice(i-u,t-u)}else{let i=Math.min(o.from,t);a=this.internalData.slice(e-u,i-u)}return[this.bufferBreakout(e,t),a]}setRange(e,t){var n,r;if(e!==d(this,h).from||t!==d(this,h).to){(n=T.debug)==null||n.call(T,`setRange ${e} - ${t}`);let[o,a]=d(this,h).overlap(e,t),u=new Array(t-e);this.rowsWithinRange=0;for(let c=o;c<a;c++){let p=this.getAtIndex(c);if(p){let i=c-e;u[i]=p,this.isWithinClientRange(c)&&(this.rowsWithinRange+=1)}}this.internalData=u,d(this,h).from=e,d(this,h).to=t}else(r=T.debug)==null||r.call(T,`setRange ${e} - ${t} IGNORED because not changed`)}get data(){return this.internalData}getData(){var u;let{from:e,to:t}=d(this,h),{from:n,to:r}=this.clientRange,o=Math.max(0,n-e),a=Math.min(t-e,t,r-e,(u=this.rowCount)!=null?u:t);return this.internalData.slice(o,a)}clear(){var e;(e=T.debug)==null||e.call(T,"clear"),this.internalData.length=0,this.rowsWithinRange=0,this.setRowCount(0)}getCurrentDataRange(){let e=this.internalData,t=e.length,[n]=this.internalData,r=this.internalData[t-1];if(n&&r)return[n.rowIndex,r.rowIndex];for(let o=0;o<t;o++)if(e[o]!==void 0){n=e[o];break}for(let o=t-1;o>=0;o--)if(e[o]!==void 0){r=e[o];break}return n&&r?[n.rowIndex,r.rowIndex]:[-1,-1]}};h=new WeakMap;var Ot=[],{debug:b,debugEnabled:H,error:kt,info:g,infoEnabled:At,warn:P}=w("viewport"),Ut=({rowKey:s,updateType:e})=>e==="U"&&!s.startsWith("$root"),j=[void 0,void 0],Ft={count:0,mode:void 0,size:0,ts:0},z=class{constructor({aggregations:e,bufferSize:t=50,columns:n,filter:r,groupBy:o=[],table:a,range:u,sort:c,title:p,viewport:i,visualLink:l},f){this.batchMode=!0;this.hasUpdates=!1;this.pendingUpdates=[];this.pendingOperations=new Map;this.pendingRangeRequests=[];this.rowCountChanged=!1;this.selectedRows=[];this.tableSchema=null;this.useBatchMode=!0;this.lastUpdateStatus=Ft;this.updateThrottleTimer=void 0;this.rangeMonitor=new $("ViewPort");this.disabled=!1;this.isTree=!1;this.status="";this.suspended=!1;this.suspendTimer=null;this.setLastSizeOnlyUpdateSize=e=>{this.lastUpdateStatus.size=e};this.setLastUpdate=e=>{let{ts:t,mode:n}=this.lastUpdateStatus,r=0;if(n===e){let o=Date.now();console.log(`read data now ${o}`),this.lastUpdateStatus.count+=1,this.lastUpdateStatus.ts=o,r=t===0?0:o-t}else this.lastUpdateStatus.count=1,this.lastUpdateStatus.ts=0,r=0;return this.lastUpdateStatus.mode=e,r};this.rangeRequestAlreadyPending=e=>{let{bufferSize:t}=this,n=t*.25,{from:r}=e;for(let{from:o,to:a}of this.pendingRangeRequests)if(r>=o&&r<a){if(e.to+n<=a)return!0;r=a}return!1};this.sendThrottledSizeMessage=()=>{this.updateThrottleTimer=void 0,this.lastUpdateStatus.count=3,this.postMessageToClient({clientViewportId:this.clientViewportId,mode:"size-only",size:this.lastUpdateStatus.size,type:"viewport-update"})};this.shouldThrottleMessage=e=>{let t=this.setLastUpdate(e);return console.log(`elapsed time = ${t}`),e==="size-only"&&t>0&&t<500&&this.lastUpdateStatus.count>3};this.throttleMessage=e=>this.shouldThrottleMessage(e)?(console.log("throttling updates setTimeout to 2000"),this.updateThrottleTimer===void 0&&(this.updateThrottleTimer=setTimeout(this.sendThrottledSizeMessage,2e3)),!0):(this.updateThrottleTimer!==void 0&&(clearTimeout(this.updateThrottleTimer),this.updateThrottleTimer=void 0),!1);this.getNewRowCount=()=>{if(this.rowCountChanged&&this.dataWindow)return this.rowCountChanged=!1,this.dataWindow.rowCount};this.aggregations=e,this.bufferSize=t,this.clientRange=u,this.clientViewportId=i,this.columns=n,this.filter=r,this.groupBy=o,this.keys=new B(u),this.pendingLinkedParent=l,this.table=a,this.sort=c,this.title=p,At&&(g==null||g(`constructor #${i} ${a.table} bufferSize=${t}`)),this.dataWindow=new K(this.clientRange,u,this.bufferSize),this.postMessageToClient=f}get hasUpdatesToProcess(){return this.suspended?!1:this.rowCountChanged||this.hasUpdates}get size(){var e;return(e=this.dataWindow.rowCount)!=null?e:0}subscribe(){let{filter:e}=this.filter;return this.status=this.status==="subscribed"?"resubscribing":"subscribing",{type:$e,table:this.table,range:Y(this.clientRange,this.bufferSize),aggregations:this.aggregations,columns:this.columns,sort:this.sort,groupBy:this.groupBy,filterSpec:{filter:e}}}handleSubscribed({viewPortId:e,aggregations:t,columns:n,filterSpec:r,range:o,sort:a,groupBy:u}){return this.serverViewportId=e,this.status="subscribed",this.aggregations=t,this.columns=n,this.groupBy=u,this.isTree=u&&u.length>0,this.dataWindow.setRange(o.from,o.to),{aggregations:t,type:"subscribed",clientViewportId:this.clientViewportId,columns:n,filter:r,groupBy:u,range:o,sort:a,tableSchema:this.tableSchema}}awaitOperation(e,t){this.pendingOperations.set(e,t)}completeOperation(e,...t){var u;let{clientViewportId:n,pendingOperations:r}=this,o=r.get(e);if(!o){kt("no matching operation found to complete");return}let{type:a}=o;if(g==null||g(`completeOperation ${a}`),r.delete(e),a==="CHANGE_VP_RANGE"){let[c,p]=t;(u=this.dataWindow)==null||u.setRange(c,p);for(let i=this.pendingRangeRequests.length-1;i>=0;i--){let l=this.pendingRangeRequests[i];if(l.requestId===e){l.acked=!0;break}else P==null||P("range requests sent faster than they are being ACKed")}}else if(a==="config"){let{aggregations:c,columns:p,filter:i,groupBy:l,sort:f}=o.data;return this.aggregations=c,this.columns=p,this.filter=i,this.groupBy=l,this.sort=f,l.length>0?this.isTree=!0:this.isTree&&(this.isTree=!1),b==null||b(`config change confirmed, isTree : ${this.isTree}`),{clientViewportId:n,type:a,config:o.data}}else{if(a==="groupBy")return this.isTree=o.data.length>0,this.groupBy=o.data,b==null||b(`groupBy change confirmed, isTree : ${this.isTree}`),{clientViewportId:n,type:a,groupBy:o.data};if(a==="columns")return this.columns=o.data,{clientViewportId:n,type:a,columns:o.data};if(a==="filter")return this.filter=o.data,{clientViewportId:n,type:a,filter:o.data};if(a==="aggregate")return this.aggregations=o.data,{clientViewportId:n,type:"aggregate",aggregations:this.aggregations};if(a==="sort")return this.sort=o.data,{clientViewportId:n,type:a,sort:this.sort};if(a!=="selection"){if(a==="disable")return this.disabled=!0,{type:"disabled",clientViewportId:n};if(a==="enable")return this.disabled=!1,{type:"enabled",clientViewportId:n};if(a==="CREATE_VISUAL_LINK"){let[c,p,i]=t;return this.linkedParent={colName:c,parentViewportId:p,parentColName:i},this.pendingLinkedParent=void 0,{type:"vuu-link-created",clientViewportId:n,colName:c,parentViewportId:p,parentColName:i}}else if(a==="REMOVE_VISUAL_LINK")return this.linkedParent=void 0,{type:"vuu-link-removed",clientViewportId:n}}}}rangeRequest(e,t){H&&this.rangeMonitor.set(t);let n="CHANGE_VP_RANGE";if(this.dataWindow){let[r,o]=this.dataWindow.setClientRange(t.from,t.to),a,u=this.dataWindow.rowCount||void 0,c=r&&!this.rangeRequestAlreadyPending(t)?{type:n,viewPortId:this.serverViewportId,...Y(t,this.bufferSize,u)}:null;if(c){H&&(b==null||b(`create CHANGE_VP_RANGE: [${c.from} - ${c.to}]`)),this.awaitOperation(e,{type:n});let i=this.pendingRangeRequests.at(-1);if(i)if(i.acked)console.warn("Range Request before previous request is filled");else{let{from:l,to:f}=i;this.dataWindow.outOfRange(l,f)?a={clientViewportId:this.clientViewportId,type:"debounce-begin"}:P==null||P("Range Request before previous request is acked")}this.pendingRangeRequests.push({...c,requestId:e}),this.useBatchMode&&(this.batchMode=!0)}else o.length>0&&(this.batchMode=!1);this.keys.reset(this.dataWindow.clientRange);let p=this.isTree?ce:le;return o.length?[c,o.map(i=>p(i,this.keys,this.selectedRows))]:a?[c,void 0,a]:[c]}else return[null]}setLinks(e){return this.links=e,[{type:"vuu-links",links:e,clientViewportId:this.clientViewportId},this.pendingLinkedParent]}setMenu(e){return{type:"vuu-menu",menu:e,clientViewportId:this.clientViewportId}}setTableSchema(e){this.tableSchema=e}openTreeNode(e,t){return this.useBatchMode&&(this.batchMode=!0),{type:Xe,vpId:this.serverViewportId,treeKey:t.key}}closeTreeNode(e,t){return this.useBatchMode&&(this.batchMode=!0),{type:Ne,vpId:this.serverViewportId,treeKey:t.key}}createLink(e,t,n,r){let o={type:"CREATE_VISUAL_LINK",parentVpId:n,childVpId:this.serverViewportId,parentColumnName:r,childColumnName:t};return this.awaitOperation(e,o),this.useBatchMode&&(this.batchMode=!0),o}removeLink(e){let t={type:"REMOVE_VISUAL_LINK",childVpId:this.serverViewportId};return this.awaitOperation(e,t),t}suspend(){this.suspended=!0,g==null||g("suspend")}resume(){return this.suspended=!1,H&&(b==null||b(`resume: ${this.currentData()}`)),this.currentData()}currentData(){let e=[];if(this.dataWindow){let t=this.dataWindow.getData(),{keys:n}=this,r=this.isTree?ce:le;for(let o of t)o&&e.push(r(o,n,this.selectedRows))}return e}enable(e){return this.awaitOperation(e,{type:"enable"}),g==null||g(`enable: ${this.serverViewportId}`),{type:Ke,viewPortId:this.serverViewportId}}disable(e){return this.awaitOperation(e,{type:"disable"}),g==null||g(`disable: ${this.serverViewportId}`),this.suspended=!1,{type:Be,viewPortId:this.serverViewportId}}columnRequest(e,t){return this.awaitOperation(e,{type:"columns",data:t}),b==null||b(`columnRequest: ${t}`),this.createRequest({columns:t})}filterRequest(e,t){this.awaitOperation(e,{type:"filter",data:t}),this.useBatchMode&&(this.batchMode=!0);let{filter:n}=t;return g==null||g(`filterRequest: ${n}`),this.createRequest({filterSpec:{filter:n}})}setConfig(e,t){this.awaitOperation(e,{type:"config",data:t});let{filter:n,...r}=t;return this.useBatchMode&&(this.batchMode=!0),H?b==null||b(`setConfig ${JSON.stringify(t)}`):g==null||g("setConfig"),this.createRequest({...r,filterSpec:typeof(n==null?void 0:n.filter)=="string"?{filter:n.filter}:{filter:""}},!0)}aggregateRequest(e,t){return this.awaitOperation(e,{type:"aggregate",data:t}),g==null||g(`aggregateRequest: ${t}`),this.createRequest({aggregations:t})}sortRequest(e,t){return this.awaitOperation(e,{type:"sort",data:t}),g==null||g(`sortRequest: ${JSON.stringify(t.sortDefs)}`),this.createRequest({sort:t})}groupByRequest(e,t=Ot){var n;return this.awaitOperation(e,{type:"groupBy",data:t}),this.useBatchMode&&(this.batchMode=!0),this.isTree||(n=this.dataWindow)==null||n.clear(),this.createRequest({groupBy:t})}selectRequest(e,t){return this.selectedRows=t,this.awaitOperation(e,{type:"selection",data:t}),g==null||g(`selectRequest: ${t}`),{type:"SET_SELECTION",vpId:this.serverViewportId,selection:Te(t)}}removePendingRangeRequest(e,t){for(let n=this.pendingRangeRequests.length-1;n>=0;n--){let{from:r,to:o}=this.pendingRangeRequests[n],a=!0;if(e>=r&&e<o||t>r&&t<o){a||console.warn("removePendingRangeRequest TABLE_ROWS are not for latest request"),this.pendingRangeRequests.splice(n,1);break}else a=!1}}updateRows(e){var r,o,a;let[t,n]=_e(e);if(t&&n&&this.removePendingRangeRequest(t.rowIndex,n.rowIndex),e.length===1)if(t.vpSize===0&&this.disabled){b==null||b(`ignore a SIZE=0 message on disabled viewport (${e.length} rows)`);return}else t.updateType==="SIZE"&&this.setLastSizeOnlyUpdateSize(t.vpSize);for(let u of e)this.isTree&&Ut(u)||((u.updateType==="SIZE"||((r=this.dataWindow)==null?void 0:r.rowCount)!==u.vpSize)&&((o=this.dataWindow)==null||o.setRowCount(u.vpSize),this.rowCountChanged=!0),u.updateType==="U"&&(a=this.dataWindow)!=null&&a.setAtIndex(u)&&(this.hasUpdates=!0,this.batchMode||this.pendingUpdates.push(u)))}getClientRows(){let e,t="size-only";if(!this.hasUpdates&&!this.rowCountChanged)return j;if(this.hasUpdates){let{keys:n,selectedRows:r}=this,o=this.isTree?ce:le;if(this.updateThrottleTimer&&(self.clearTimeout(this.updateThrottleTimer),this.updateThrottleTimer=void 0),this.pendingUpdates.length>0){e=[],t="update";for(let a of this.pendingUpdates)e.push(o(a,n,r));this.pendingUpdates.length=0}else{let a=this.dataWindow.getData();if(this.dataWindow.hasAllRowsWithinRange){e=[],t="batch";for(let u of a)e.push(o(u,n,r));this.batchMode=!1}}this.hasUpdates=!1}return this.throttleMessage(t)?j:[e,t]}createRequest(e,t=!1){return t?{type:"CHANGE_VP",viewPortId:this.serverViewportId,...e}:{type:"CHANGE_VP",viewPortId:this.serverViewportId,aggregations:this.aggregations,columns:this.columns,sort:this.sort,groupBy:this.groupBy,filterSpec:{filter:this.filter.filter},...e}}},le=({rowIndex:s,rowKey:e,sel:t,data:n},r,o)=>[s,r.keyFor(s),!0,!1,0,0,e,t?Z(o,s):0].concat(n),ce=({rowIndex:s,rowKey:e,sel:t,data:n},r,o)=>{let[a,u,,c,,p,...i]=n;return[s,r.keyFor(s),c,u,a,p,e,t?Z(o,s):0].concat(i)};var it=1;var{debug:E,debugEnabled:L,error:O,info:y,infoEnabled:Nt,warn:k}=w("server-proxy"),C=()=>`${it++}`,Wt={},$t=s=>s.disabled!==!0&&s.suspended!==!0,qt={type:"NO_ACTION"},Bt=(s,e,t)=>s.map(n=>n.parentVpId===e?{...n,label:t}:n);function Gt(s,e){return s.map(t=>{let{parentVpId:n}=t,r=e.get(n);if(r)return{...t,parentClientVpId:r.clientViewportId,label:r.title};throw Error("addLabelsToLinks viewport not found")})}var J=class{constructor(e,t){this.authToken="";this.user="user";this.pendingTableMetaRequests=new Map;this.pendingRequests=new Map;this.queuedRequests=[];this.cachedTableSchemas=new Map;this.connection=e,this.postMessageToClient=t,this.viewports=new Map,this.mapClientToServerViewport=new Map}async reconnect(){await this.login(this.authToken);let[e,t]=be(Array.from(this.viewports.values()),$t);this.viewports.clear(),this.mapClientToServerViewport.clear();let n=r=>{r.forEach(o=>{let{clientViewportId:a}=o;this.viewports.set(a,o),this.sendMessageToServer(o.subscribe(),a)})};n(e),setTimeout(()=>{n(t)},2e3)}async login(e,t="user"){if(e)return this.authToken=e,this.user=t,new Promise((n,r)=>{this.sendMessageToServer({type:Ye,token:this.authToken,user:t},""),this.pendingLogin={resolve:n,reject:r}});this.authToken===""&&O("login, cannot login until auth token has been obtained")}subscribe(e){if(this.mapClientToServerViewport.has(e.viewport))O(`spurious subscribe call ${e.viewport}`);else{if(!this.hasSchemaForTable(e.table)&&!G(e.table)){y==null||y(`subscribe to ${e.table.table}, no metadata yet, request metadata`);let n=C();this.sendMessageToServer({type:"GET_TABLE_META",table:e.table},n),this.pendingTableMetaRequests.set(n,e.viewport)}let t=new z(e,this.postMessageToClient);this.viewports.set(e.viewport,t),this.sendIfReady(t.subscribe(),e.viewport,this.sessionId!=="")}}unsubscribe(e){let t=this.mapClientToServerViewport.get(e);t?(y==null||y(`Unsubscribe Message (Client to Server):\n ${t}`),this.sendMessageToServer({type:et,viewPortId:t})):O(`failed to unsubscribe client viewport ${e}, viewport not found`)}getViewportForClient(e,t=!0){let n=this.mapClientToServerViewport.get(e);if(n){let r=this.viewports.get(n);if(r)return r;if(t)throw Error(`Viewport not found for client viewport ${e}`);return null}else{if(this.viewports.has(e))return this.viewports.get(e);if(t)throw Error(`Viewport server id not found for client viewport ${e}`);return null}}setViewRange(e,t){let n=C(),[r,o,a]=e.rangeRequest(n,t.range);y==null||y(`setViewRange ${t.range.from} - ${t.range.to}`),r&&this.sendIfReady(r,n,e.status==="subscribed"),o?(y==null||y(`setViewRange ${o.length} rows returned from cache`),this.postMessageToClient({mode:"batch",type:"viewport-update",clientViewportId:e.clientViewportId,rows:o})):a&&this.postMessageToClient(a)}setConfig(e,t){let n=C(),r=e.setConfig(n,t.config);this.sendIfReady(r,n,e.status==="subscribed")}aggregate(e,t){let n=C(),r=e.aggregateRequest(n,t.aggregations);this.sendIfReady(r,n,e.status==="subscribed")}sort(e,t){let n=C(),r=e.sortRequest(n,t.sort);this.sendIfReady(r,n,e.status==="subscribed")}groupBy(e,t){let n=C(),r=e.groupByRequest(n,t.groupBy);this.sendIfReady(r,n,e.status==="subscribed")}filter(e,t){let n=C(),{filter:r}=t,o=e.filterRequest(n,r);this.sendIfReady(o,n,e.status==="subscribed")}setColumns(e,t){let n=C(),{columns:r}=t,o=e.columnRequest(n,r);this.sendIfReady(o,n,e.status==="subscribed")}setTitle(e,t){e&&(e.title=t.title,this.updateTitleOnVisualLinks(e))}select(e,t){let n=C(),{selected:r}=t,o=e.selectRequest(n,r);this.sendIfReady(o,n,e.status==="subscribed")}disableViewport(e){let t=C(),n=e.disable(t);this.sendIfReady(n,t,e.status==="subscribed")}enableViewport(e){if(e.disabled){let t=C(),n=e.enable(t);this.sendIfReady(n,t,e.status==="subscribed")}}suspendViewport(e){e.suspend(),e.suspendTimer=setTimeout(()=>{y==null||y("suspendTimer expired, escalate suspend to disable"),this.disableViewport(e)},3e3)}resumeViewport(e){e.suspendTimer&&(E==null||E("clear suspend timer"),clearTimeout(e.suspendTimer),e.suspendTimer=null);let t=e.resume();this.postMessageToClient({clientViewportId:e.clientViewportId,mode:"batch",rows:t,type:"viewport-update"})}openTreeNode(e,t){if(e.serverViewportId){let n=C();this.sendIfReady(e.openTreeNode(n,t),n,e.status==="subscribed")}}closeTreeNode(e,t){if(e.serverViewportId){let n=C();this.sendIfReady(e.closeTreeNode(n,t),n,e.status==="subscribed")}}createLink(e,t){let{parentClientVpId:n,parentColumnName:r,childColumnName:o}=t,a=C(),u=this.mapClientToServerViewport.get(n);if(u){let c=e.createLink(a,o,u,r);this.sendMessageToServer(c,a)}else O("ServerProxy unable to create link, viewport not found")}removeLink(e){let t=C(),n=e.removeLink(t);this.sendMessageToServer(n,t)}updateTitleOnVisualLinks(e){var r;let{serverViewportId:t,title:n}=e;for(let o of this.viewports.values())if(o!==e&&o.links&&t&&n&&(r=o.links)!=null&&r.some(a=>a.parentVpId===t)){let[a]=o.setLinks(Bt(o.links,t,n));this.postMessageToClient(a)}}removeViewportFromVisualLinks(e){var t;for(let n of this.viewports.values())if((t=n.links)!=null&&t.some(({parentVpId:r})=>r===e)){let[r]=n.setLinks(n.links.filter(({parentVpId:o})=>o!==e));this.postMessageToClient(r)}}menuRpcCall(e){let t=this.getViewportForClient(e.vpId,!1);if(t!=null&&t.serverViewportId){let[n,r]=re(e);this.sendMessageToServer({...r,vpId:t.serverViewportId},n)}}rpcCall(e){let[t,n]=re(e),r=st(n.service);this.sendMessageToServer(n,t,{module:r})}handleMessageFromClient(e){if(E==null||E(`handleMessageFromClient: ${e.type}`),ke(e))if(e.type==="disable"){let t=this.getViewportForClient(e.viewport,!1);return t!==null?this.disableViewport(t):void 0}else{let t=this.getViewportForClient(e.viewport);switch(e.type){case"setViewRange":return this.setViewRange(t,e);case"config":return this.setConfig(t,e);case"aggregate":return this.aggregate(t,e);case"sort":return this.sort(t,e);case"groupBy":return this.groupBy(t,e);case"filter":return this.filter(t,e);case"select":return this.select(t,e);case"suspend":return this.suspendViewport(t);case"resume":return this.resumeViewport(t);case"enable":return this.enableViewport(t);case"openTreeNode":return this.openTreeNode(t,e);case"closeTreeNode":return this.closeTreeNode(t,e);case"createLink":return this.createLink(t,e);case"removeLink":return this.removeLink(t);case"setColumns":return this.setColumns(t,e);case"setTitle":return this.setTitle(t,e);default:}}else{if(De(e))return this.menuRpcCall(e);{let{type:t,requestId:n}=e;switch(t){case"GET_TABLE_LIST":return this.sendMessageToServer({type:t},n);case"GET_TABLE_META":return this.sendMessageToServer({type:t,table:e.table},n);case"RPC_CALL":return this.rpcCall(e);default:}}}O(`Vuu ServerProxy Unexpected message from client ${JSON.stringify(e)}`)}awaitResponseToMessage(e){return new Promise((t,n)=>{let r=C();this.sendMessageToServer(e,r),this.pendingRequests.set(r,{reject:n,resolve:t})})}sendIfReady(e,t,n=!0){return n?this.sendMessageToServer(e,t):this.queuedRequests.push(e),n}sendMessageToServer(e,t=`${it++}`,n=Wt){let{module:r="CORE"}=n;this.authToken&&this.connection.send({requestId:t,sessionId:this.sessionId,token:this.authToken,user:this.user,module:r,body:e})}handleMessageFromServer(e){var u;let{body:t,requestId:n,sessionId:r}=e,o=this.pendingRequests.get(n);if(o){let{resolve:i}=o;this.pendingRequests.delete(n),i(t);return}let{viewports:a}=this;switch(t.type){case ze:this.sendMessageToServer({type:Je,ts:+new Date},"NA");break;case Ze:if(r)this.sessionId=r,(u=this.pendingLogin)==null||u.resolve(r),this.pendingLogin=void 0;else throw Error("LOGIN_SUCCESS did not provide sessionId");break;case qe:{let i=a.get(n);if(i){let{status:l}=i,{viewPortId:f}=t;n!==f&&(a.delete(n),a.set(f,i)),this.mapClientToServerViewport.set(n,f);let R=i.handleSubscribed(t);R&&(this.postMessageToClient(R),L&&E(`post DataSourceSubscribedMessage to client: ${JSON.stringify(R)}`)),i.disabled&&this.disableViewport(i),l==="subscribing"&&!G(i.table)&&(this.sendMessageToServer({type:oe,vpId:f}),this.sendMessageToServer({type:je,vpId:f}),Array.from(a.entries()).filter(([M,{disabled:U}])=>M!==f&&!U).forEach(([M])=>{this.sendMessageToServer({type:oe,vpId:M})}))}}break;case"REMOVE_VP_SUCCESS":{let i=this.viewports.get(t.viewPortId);i&&(this.mapClientToServerViewport.delete(i.clientViewportId),a.delete(t.viewPortId),this.removeViewportFromVisualLinks(t.viewPortId))}break;case tt:{let i=this.viewports.get(t.vpId);i&&i.completeOperation(n)}break;case Ue:case Ge:if(a.has(t.viewPortId)){let i=this.viewports.get(t.viewPortId);if(i){let l=i.completeOperation(n);l!==void 0&&(this.postMessageToClient(l),L&&E(`postMessageToClient ${JSON.stringify(l)}`))}}break;case He:{let i=this.viewports.get(t.viewPortId);if(i){let l=i.completeOperation(n);if(l){this.postMessageToClient(l);let f=i.currentData();L&&E(`Enable Response (ServerProxy to Client): ${JSON.stringify(l)}`),i.size===0?L&&E("Viewport Enabled but size 0, resend to server"):(this.postMessageToClient({clientViewportId:i.clientViewportId,mode:"batch",rows:f,size:i.size,type:"viewport-update"}),L&&E(`Enable Response (ServerProxy to Client): send size ${i.size} ${f.length} rows from cache`))}}}break;case nt:{let i=Pe(t.rows);for(let[l,f]of Object.entries(i)){let R=a.get(l);R?R.updateRows(f):k==null||k(`TABLE_ROW message received for non registered viewport ${l}`)}this.processUpdates()}break;case Fe:{let i=this.viewports.get(t.viewPortId);if(i){let{from:l,to:f}=t;i.completeOperation(n,l,f)}}break;case Qe:case We:break;case"CREATE_VISUAL_LINK_SUCCESS":{let i=this.viewports.get(t.childVpId),l=this.viewports.get(t.parentVpId);if(i&&l){let{childColumnName:f,parentColumnName:R}=t,M=i.completeOperation(n,f,l.clientViewportId,R);M&&this.postMessageToClient(M)}}break;case"REMOVE_VISUAL_LINK_SUCCESS":{let i=this.viewports.get(t.childVpId);if(i){let l=i.completeOperation(n);l&&this.postMessageToClient(l)}}break;case ue:this.postMessageToClient({type:ue,tables:t.tables,requestId:n});break;case ae:{let i=this.cacheTableMeta(t),l=this.pendingTableMetaRequests.get(n);if(l){this.pendingTableMetaRequests.delete(n);let f=this.viewports.get(l);f?f.setTableSchema(i):k==null||k("Message has come back AFTER CREATE_VP_SUCCESS, what do we do now")}else this.postMessageToClient({type:ae,tableSchema:i,requestId:n})}break;case"VP_VISUAL_LINKS_RESP":{let i=this.getActiveLinks(t.links),l=this.viewports.get(t.vpId);if(i.length&&l){let f=Gt(i,this.viewports),[R,M]=l.setLinks(f);if(this.postMessageToClient(R),M){let{link:U,parentClientVpId:at}=M,ge=C(),fe=this.mapClientToServerViewport.get(at);if(fe){let ut=l.createLink(ge,U.fromColumn,fe,U.toColumn);this.sendMessageToServer(ut,ge)}}}}break;case"VIEW_PORT_MENUS_RESP":if(t.menu.name){let i=this.viewports.get(t.vpId);if(i){let l=i.setMenu(t.menu);this.postMessageToClient(l)}}break;case"VP_EDIT_RPC_RESPONSE":this.postMessageToClient({action:t.action,requestId:n,rpcName:t.rpcName,type:"VP_EDIT_RPC_RESPONSE"});break;case"VP_EDIT_RPC_REJECT":this.viewports.get(t.vpId)&&this.postMessageToClient({requestId:n,type:"VP_EDIT_RPC_REJECT",error:t.error});break;case"VIEW_PORT_MENU_RESP":if(Ae(t)){let{action:i,rpcName:l}=t;this.awaitResponseToMessage({type:"GET_TABLE_META",table:i.table}).then(f=>{let R=se(f);this.postMessageToClient({rpcName:l,type:"VIEW_PORT_MENU_RESP",action:{...i,tableSchema:R},tableAlreadyOpen:this.isTableOpen(i.table),requestId:n})})}else{let{action:i}=t;this.postMessageToClient({type:"VIEW_PORT_MENU_RESP",action:i||qt,tableAlreadyOpen:i!==null&&this.isTableOpen(i.table),requestId:n})}break;case ie:{let{method:i,result:l}=t;this.postMessageToClient({type:ie,method:i,result:l,requestId:n})}break;case"ERROR":O(t.msg);break;default:Nt&&y(`handleMessageFromServer ${t.type}.`)}}hasSchemaForTable(e){return this.cachedTableSchemas.has(`${e.module}:${e.table}`)}cacheTableMeta(e){let{module:t,table:n}=e.table,r=`${t}:${n}`,o=this.cachedTableSchemas.get(r);return o||(o=se(e),this.cachedTableSchemas.set(r,o)),o}isTableOpen(e){if(e){let t=e.table;for(let n of this.viewports.values())if(!n.suspended&&n.table.table===t)return!0}}getActiveLinks(e){return e.filter(t=>{let n=this.viewports.get(t.parentVpId);return n&&!n.suspended})}processUpdates(){this.viewports.forEach(e=>{var t;if(e.hasUpdatesToProcess){let n=e.getClientRows();if(n!==j){let[r,o]=n,a=e.getNewRowCount();(a!==void 0||r&&r.length>0)&&(L&&E(`postMessageToClient #${e.clientViewportId} viewport-update ${o}, ${(t=r==null?void 0:r.length)!=null?t:"no"} rows, size ${a}`),o&&this.postMessageToClient({clientViewportId:e.clientViewportId,mode:o,rows:r,size:a,type:"viewport-update"}))}}})}};var D,{info:pe,infoEnabled:de}=w("worker");async function Kt(s,e,t,n,r,o,a){let u=await ve(s,e,c=>{Oe(c)?postMessage({type:"connection-metrics",messages:c}):Le(c)?(r(c),c.status==="reconnected"&&D.reconnect()):D.handleMessageFromServer(c)},o,a);D=new J(u,c=>Ht(c)),u.requiresLogin&&await D.login(t,n)}function Ht(s){postMessage(s)}var jt=async({data:s})=>{switch(s.type){case"connect":await Kt(s.url,s.protocol,s.token,s.username,postMessage,s.retryLimitDisconnect,s.retryLimitStartup),postMessage({type:"connected"});break;case"subscribe":de&&pe(`client subscribe: ${JSON.stringify(s)}`),D.subscribe(s);break;case"unsubscribe":de&&pe(`client unsubscribe: ${JSON.stringify(s)}`),D.unsubscribe(s.viewport);break;default:de&&pe(`client message: ${JSON.stringify(s)}`),D.handleMessageFromClient(s)}};self.addEventListener("message",jt);postMessage({type:"ready"});\n\n';var Ik=new Blob([Pk()+Qb],{type:"text/javascript"}),Lk=URL.createObjectURL(Ik),Br,td,nd=[],Ak,Ok,jb=new Promise((o,e)=>{Ak=o,Ok=e}),sd=()=>jb,Zl=new Map,ea=new Map,Nk=async({handleConnectionStatusChange:o,protocol:e,retryLimitDisconnect:t,retryLimitStartup:n,token:r="",username:s,url:i})=>r===""&&td===void 0?new Promise(l=>{nd.push({resolve:l})}):td||(td=new Promise(l=>{let a=new Worker(Lk),u=window.setTimeout(()=>{console.error("timed out waiting for worker to load")},1e3);a.onmessage=c=>{let{data:d}=c;if(d.type==="ready")window.clearTimeout(u),a.postMessage({protocol:e,retryLimitDisconnect:t,retryLimitStartup:n,token:r,type:"connect",url:i,username:s});else if(d.type==="connected"){a.onmessage=Jb,l(a);for(let p of nd)p.resolve(a);nd.length=0}else ed(d)?o({data:d}):console.warn("ConnectionManager: Unexpected message from the worker")}}));function Jb({data:o}){if($b(o)){let e=Zl.get(o.clientViewportId);e?e.postMessageToClientDataSource(o):console.error(`[ConnectionManager] ${o.type} message received, viewport not found`)}else if(ed(o))ta.emit("connection-status",o);else if(Ub(o))ta.emit("connection-metrics",o);else{let e=o.requestId;if(ea.has(e)){let{resolve:t}=ea.get(e);ea.delete(e);let{type:n,requestId:r,...s}=o;Gb(o)?t(o.result):o.type==="VP_EDIT_RPC_RESPONSE"||o.type==="VP_EDIT_RPC_REJECT"?t(o):qb(o)?t(o.tableSchema):t(s)}else console.warn("%cConnectionManager Unexpected message from the worker","color:red;font-weight:bold;")}}var od=o=>{let e=kk();return Br.postMessage({requestId:e,...o}),new Promise((t,n)=>{ea.set(e,{resolve:t,reject:n})})},Hk={subscribe:(o,e)=>{Zl.set(o.viewport,{status:"subscribing",request:o,postMessageToClientDataSource:e}),Br.postMessage({type:"subscribe",...o})},unsubscribe:o=>{Br.postMessage({type:"unsubscribe",viewport:o})},send:o=>{Br.postMessage(o)},destroy:o=>{o&&Zl.has(o)&&Zl.delete(o)},rpcCall:async o=>od(o),getTableList:async()=>od({type:_b}),getTableSchema:async o=>od({type:Kb,table:o})},rd=class extends Dk{async connect({url:e,authToken:t,username:n,protocol:r,retryLimitDisconnect:s,retryLimitStartup:i}){return Br=await Nk({protocol:r,url:e,token:t,username:n,retryLimitDisconnect:s,retryLimitStartup:i,handleConnectionStatusChange:Jb}),Hk}destroy(){Br.terminate()}},ta=new rd;var Xb=async o=>{try{return(await jb).rpcCall(o)}catch{throw Error("Error accessing server api")}};var Fk=0,Zs=class{constructor(e,t){this.from=e,this.to=t}},ie=class{constructor(e={}){this.id=Fk++,this.perNode=!!e.perNode,this.deserialize=e.deserialize||(()=>{throw new Error("This node type doesn't define a deserialize function")})}add(e){if(this.perNode)throw new RangeError("Can't add per-node props to node types");return typeof e!="function"&&(e=Ge.match(e)),t=>{let n=e(t);return n===void 0?null:[this,n]}}};ie.closedBy=new ie({deserialize:o=>o.split(" ")});ie.openedBy=new ie({deserialize:o=>o.split(" ")});ie.group=new ie({deserialize:o=>o.split(" ")});ie.contextHash=new ie({perNode:!0});ie.lookAhead=new ie({perNode:!0});ie.mounted=new ie({perNode:!0});var Vk=Object.create(null),Ge=class{constructor(e,t,n,r=0){this.name=e,this.props=t,this.id=n,this.flags=r}static define(e){let t=e.props&&e.props.length?Object.create(null):Vk,n=(e.top?1:0)|(e.skipped?2:0)|(e.error?4:0)|(e.name==null?8:0),r=new Ge(e.name||"",t,e.id,n);if(e.props){for(let s of e.props)if(Array.isArray(s)||(s=s(r)),s){if(s[0].perNode)throw new RangeError("Can't store a per-node prop on a node type");t[s[0].id]=s[1]}}return r}prop(e){return this.props[e.id]}get isTop(){return(this.flags&1)>0}get isSkipped(){return(this.flags&2)>0}get isError(){return(this.flags&4)>0}get isAnonymous(){return(this.flags&8)>0}is(e){if(typeof e=="string"){if(this.name==e)return!0;let t=this.prop(ie.group);return t?t.indexOf(e)>-1:!1}return this.id==e}static match(e){let t=Object.create(null);for(let n in e)for(let r of n.split(" "))t[r]=e[n];return n=>{for(let r=n.prop(ie.group),s=-1;s<(r?r.length:0);s++){let i=t[s<0?n.name:r[s]];if(i)return i}}}};Ge.none=new Ge("",Object.create(null),0,8);var zn=class{constructor(e){this.types=e;for(let t=0;t<e.length;t++)if(e[t].id!=t)throw new RangeError("Node type ids should correspond to array positions when creating a node set")}extend(...e){let t=[];for(let n of this.types){let r=null;for(let s of e){let i=s(n);i&&(r||(r=Object.assign({},n.props)),r[i[0].id]=i[1])}t.push(r?new Ge(n.name,r,n.id,n.flags):n)}return new zn(t)}},na=new WeakMap,Yb=new WeakMap,We;(function(o){o[o.ExcludeBuffers=1]="ExcludeBuffers",o[o.IncludeAnonymous=2]="IncludeAnonymous",o[o.IgnoreMounts=4]="IgnoreMounts",o[o.IgnoreOverlays=8]="IgnoreOverlays"})(We||(We={}));var ye=class{constructor(e,t,n,r,s){if(this.type=e,this.children=t,this.positions=n,this.length=r,this.props=null,s&&s.length){this.props=Object.create(null);for(let[i,l]of s)this.props[typeof i=="number"?i:i.id]=l}}toString(){let e=this.prop(ie.mounted);if(e&&!e.overlay)return e.tree.toString();let t="";for(let n of this.children){let r=n.toString();r&&(t&&(t+=","),t+=r)}return this.type.name?(/\W/.test(this.type.name)&&!this.type.isError?JSON.stringify(this.type.name):this.type.name)+(t.length?"("+t+")":""):t}cursor(e=0){return new $r(this.topNode,e)}cursorAt(e,t=0,n=0){let r=na.get(this)||this.topNode,s=new $r(r);return s.moveTo(e,t),na.set(this,s._tree),s}get topNode(){return new sn(this,0,0,null)}resolve(e,t=0){let n=zr(na.get(this)||this.topNode,e,t,!1);return na.set(this,n),n}resolveInner(e,t=0){let n=zr(Yb.get(this)||this.topNode,e,t,!0);return Yb.set(this,n),n}iterate(e){let{enter:t,leave:n,from:r=0,to:s=this.length}=e,i=e.mode||0,l=(i&We.IncludeAnonymous)>0;for(let a=this.cursor(i|We.IncludeAnonymous);;){let u=!1;if(a.from<=s&&a.to>=r&&(!l&&a.type.isAnonymous||t(a)!==!1)){if(a.firstChild())continue;u=!0}for(;u&&n&&(l||!a.type.isAnonymous)&&n(a),!a.nextSibling();){if(!a.parent())return;u=!0}}}prop(e){return e.perNode?this.props?this.props[e.id]:void 0:this.type.prop(e)}get propValues(){let e=[];if(this.props)for(let t in this.props)e.push([+t,this.props[t]]);return e}balance(e={}){return this.children.length<=8?this:ud(Ge.none,this.children,this.positions,0,this.children.length,0,this.length,(t,n,r)=>new ye(this.type,t,n,r,this.propValues),e.makeTree||((t,n,r)=>new ye(Ge.none,t,n,r)))}static build(e){return Bk(e)}};ye.empty=new ye(Ge.none,[],[],0);var ei=class{constructor(e,t){this.buffer=e,this.index=t}get id(){return this.buffer[this.index-4]}get start(){return this.buffer[this.index-3]}get end(){return this.buffer[this.index-2]}get size(){return this.buffer[this.index-1]}get pos(){return this.index}next(){this.index-=4}fork(){return new ei(this.buffer,this.index)}},$n=class{constructor(e,t,n){this.buffer=e,this.length=t,this.set=n}get type(){return Ge.none}toString(){let e=[];for(let t=0;t<this.buffer.length;)e.push(this.childString(t)),t=this.buffer[t+3];return e.join(",")}childString(e){let t=this.buffer[e],n=this.buffer[e+3],r=this.set.types[t],s=r.name;if(/\W/.test(s)&&!r.isError&&(s=JSON.stringify(s)),e+=4,n==e)return s;let i=[];for(;e<n;)i.push(this.childString(e)),e=this.buffer[e+3];return s+"("+i.join(",")+")"}findChild(e,t,n,r,s){let{buffer:i}=this,l=-1;for(let a=e;a!=t&&!(ey(s,r,i[a+1],i[a+2])&&(l=a,n>0));a=i[a+3]);return l}slice(e,t,n){let r=this.buffer,s=new Uint16Array(t-e),i=0;for(let l=e,a=0;l<t;){s[a++]=r[l++],s[a++]=r[l++]-n;let u=s[a++]=r[l++]-n;s[a++]=r[l++]-e,i=Math.max(i,u)}return new $n(s,i,this.set)}};function ey(o,e,t,n){switch(o){case-2:return t<e;case-1:return n>=e&&t<e;case 0:return t<e&&n>e;case 1:return t<=e&&n>e;case 2:return n>e;case 4:return!0}}function ty(o,e){let t=o.childBefore(e);for(;t;){let n=t.lastChild;if(!n||n.to!=t.to)break;n.type.isError&&n.from==n.to?(o=t,t=n.prevSibling):t=n}return o}function zr(o,e,t,n){for(var r;o.from==o.to||(t<1?o.from>=e:o.from>e)||(t>-1?o.to<=e:o.to<e);){let i=!n&&o instanceof sn&&o.index<0?null:o.parent;if(!i)return o;o=i}let s=n?0:We.IgnoreOverlays;if(n)for(let i=o,l=i.parent;l;i=l,l=i.parent)i instanceof sn&&i.index<0&&((r=l.enter(e,t,s))===null||r===void 0?void 0:r.from)!=i.from&&(o=l);for(;;){let i=o.enter(e,t,s);if(!i)return o;o=i}}var sn=class{constructor(e,t,n,r){this._tree=e,this.from=t,this.index=n,this._parent=r}get type(){return this._tree.type}get name(){return this._tree.type.name}get to(){return this.from+this._tree.length}nextChild(e,t,n,r,s=0){for(let i=this;;){for(let{children:l,positions:a}=i._tree,u=t>0?l.length:-1;e!=u;e+=t){let c=l[e],d=a[e]+i.from;if(ey(r,n,d,d+c.length)){if(c instanceof $n){if(s&We.ExcludeBuffers)continue;let p=c.findChild(0,c.buffer.length,t,n-d,r);if(p>-1)return new xn(new id(i,c,e,d),null,p)}else if(s&We.IncludeAnonymous||!c.type.isAnonymous||ad(c)){let p;if(!(s&We.IgnoreMounts)&&c.props&&(p=c.prop(ie.mounted))&&!p.overlay)return new sn(p.tree,d,e,i);let f=new sn(c,d,e,i);return s&We.IncludeAnonymous||!f.type.isAnonymous?f:f.nextChild(t<0?c.children.length-1:0,t,n,r)}}}if(s&We.IncludeAnonymous||!i.type.isAnonymous||(i.index>=0?e=i.index+t:e=t<0?-1:i._parent._tree.children.length,i=i._parent,!i))return null}}get firstChild(){return this.nextChild(0,1,0,4)}get lastChild(){return this.nextChild(this._tree.children.length-1,-1,0,4)}childAfter(e){return this.nextChild(0,1,e,2)}childBefore(e){return this.nextChild(this._tree.children.length-1,-1,e,-2)}enter(e,t,n=0){let r;if(!(n&We.IgnoreOverlays)&&(r=this._tree.prop(ie.mounted))&&r.overlay){let s=e-this.from;for(let{from:i,to:l}of r.overlay)if((t>0?i<=s:i<s)&&(t<0?l>=s:l>s))return new sn(r.tree,r.overlay[0].from+this.from,-1,this)}return this.nextChild(0,1,e,t,n)}nextSignificantParent(){let e=this;for(;e.type.isAnonymous&&e._parent;)e=e._parent;return e}get parent(){return this._parent?this._parent.nextSignificantParent():null}get nextSibling(){return this._parent&&this.index>=0?this._parent.nextChild(this.index+1,1,0,4):null}get prevSibling(){return this._parent&&this.index>=0?this._parent.nextChild(this.index-1,-1,0,4):null}cursor(e=0){return new $r(this,e)}get tree(){return this._tree}toTree(){return this._tree}resolve(e,t=0){return zr(this,e,t,!1)}resolveInner(e,t=0){return zr(this,e,t,!0)}enterUnfinishedNodesBefore(e){return ty(this,e)}getChild(e,t=null,n=null){let r=ra(this,e,t,n);return r.length?r[0]:null}getChildren(e,t=null,n=null){return ra(this,e,t,n)}toString(){return this._tree.toString()}get node(){return this}matchContext(e){return sa(this,e)}};function ra(o,e,t,n){let r=o.cursor(),s=[];if(!r.firstChild())return s;if(t!=null){for(;!r.type.is(t);)if(!r.nextSibling())return s}for(;;){if(n!=null&&r.type.is(n))return s;if(r.type.is(e)&&s.push(r.node),!r.nextSibling())return n==null?s:[]}}function sa(o,e,t=e.length-1){for(let n=o.parent;t>=0;n=n.parent){if(!n)return!1;if(!n.type.isAnonymous){if(e[t]&&e[t]!=n.name)return!1;t--}}return!0}var id=class{constructor(e,t,n,r){this.parent=e,this.buffer=t,this.index=n,this.start=r}},xn=class{get name(){return this.type.name}get from(){return this.context.start+this.context.buffer.buffer[this.index+1]}get to(){return this.context.start+this.context.buffer.buffer[this.index+2]}constructor(e,t,n){this.context=e,this._parent=t,this.index=n,this.type=e.buffer.set.types[e.buffer.buffer[n]]}child(e,t,n){let{buffer:r}=this.context,s=r.findChild(this.index+4,r.buffer[this.index+3],e,t-this.context.start,n);return s<0?null:new xn(this.context,this,s)}get firstChild(){return this.child(1,0,4)}get lastChild(){return this.child(-1,0,4)}childAfter(e){return this.child(1,e,2)}childBefore(e){return this.child(-1,e,-2)}enter(e,t,n=0){if(n&We.ExcludeBuffers)return null;let{buffer:r}=this.context,s=r.findChild(this.index+4,r.buffer[this.index+3],t>0?1:-1,e-this.context.start,t);return s<0?null:new xn(this.context,this,s)}get parent(){return this._parent||this.context.parent.nextSignificantParent()}externalSibling(e){return this._parent?null:this.context.parent.nextChild(this.context.index+e,e,0,4)}get nextSibling(){let{buffer:e}=this.context,t=e.buffer[this.index+3];return t<(this._parent?e.buffer[this._parent.index+3]:e.buffer.length)?new xn(this.context,this._parent,t):this.externalSibling(1)}get prevSibling(){let{buffer:e}=this.context,t=this._parent?this._parent.index+4:0;return this.index==t?this.externalSibling(-1):new xn(this.context,this._parent,e.findChild(t,this.index,-1,0,4))}cursor(e=0){return new $r(this,e)}get tree(){return null}toTree(){let e=[],t=[],{buffer:n}=this.context,r=this.index+4,s=n.buffer[this.index+3];if(s>r){let i=n.buffer[this.index+1];e.push(n.slice(r,s,i)),t.push(0)}return new ye(this.type,e,t,this.to-this.from)}resolve(e,t=0){return zr(this,e,t,!1)}resolveInner(e,t=0){return zr(this,e,t,!0)}enterUnfinishedNodesBefore(e){return ty(this,e)}toString(){return this.context.buffer.childString(this.index)}getChild(e,t=null,n=null){let r=ra(this,e,t,n);return r.length?r[0]:null}getChildren(e,t=null,n=null){return ra(this,e,t,n)}get node(){return this}matchContext(e){return sa(this,e)}},$r=class{get name(){return this.type.name}constructor(e,t=0){if(this.mode=t,this.buffer=null,this.stack=[],this.index=0,this.bufferNode=null,e instanceof sn)this.yieldNode(e);else{this._tree=e.context.parent,this.buffer=e.context;for(let n=e._parent;n;n=n._parent)this.stack.unshift(n.index);this.bufferNode=e,this.yieldBuf(e.index)}}yieldNode(e){return e?(this._tree=e,this.type=e.type,this.from=e.from,this.to=e.to,!0):!1}yieldBuf(e,t){this.index=e;let{start:n,buffer:r}=this.buffer;return this.type=t||r.set.types[r.buffer[e]],this.from=n+r.buffer[e+1],this.to=n+r.buffer[e+2],!0}yield(e){return e?e instanceof sn?(this.buffer=null,this.yieldNode(e)):(this.buffer=e.context,this.yieldBuf(e.index,e.type)):!1}toString(){return this.buffer?this.buffer.buffer.childString(this.index):this._tree.toString()}enterChild(e,t,n){if(!this.buffer)return this.yield(this._tree.nextChild(e<0?this._tree._tree.children.length-1:0,e,t,n,this.mode));let{buffer:r}=this.buffer,s=r.findChild(this.index+4,r.buffer[this.index+3],e,t-this.buffer.start,n);return s<0?!1:(this.stack.push(this.index),this.yieldBuf(s))}firstChild(){return this.enterChild(1,0,4)}lastChild(){return this.enterChild(-1,0,4)}childAfter(e){return this.enterChild(1,e,2)}childBefore(e){return this.enterChild(-1,e,-2)}enter(e,t,n=this.mode){return this.buffer?n&We.ExcludeBuffers?!1:this.enterChild(1,e,t):this.yield(this._tree.enter(e,t,n))}parent(){if(!this.buffer)return this.yieldNode(this.mode&We.IncludeAnonymous?this._tree._parent:this._tree.parent);if(this.stack.length)return this.yieldBuf(this.stack.pop());let e=this.mode&We.IncludeAnonymous?this.buffer.parent:this.buffer.parent.nextSignificantParent();return this.buffer=null,this.yieldNode(e)}sibling(e){if(!this.buffer)return this._tree._parent?this.yield(this._tree.index<0?null:this._tree._parent.nextChild(this._tree.index+e,e,0,4,this.mode)):!1;let{buffer:t}=this.buffer,n=this.stack.length-1;if(e<0){let r=n<0?0:this.stack[n]+4;if(this.index!=r)return this.yieldBuf(t.findChild(r,this.index,-1,0,4))}else{let r=t.buffer[this.index+3];if(r<(n<0?t.buffer.length:t.buffer[this.stack[n]+3]))return this.yieldBuf(r)}return n<0?this.yield(this.buffer.parent.nextChild(this.buffer.index+e,e,0,4,this.mode)):!1}nextSibling(){return this.sibling(1)}prevSibling(){return this.sibling(-1)}atLastNode(e){let t,n,{buffer:r}=this;if(r){if(e>0){if(this.index<r.buffer.buffer.length)return!1}else for(let s=0;s<this.index;s++)if(r.buffer.buffer[s+3]<this.index)return!1;({index:t,parent:n}=r)}else({index:t,_parent:n}=this._tree);for(;n;{index:t,_parent:n}=n)if(t>-1)for(let s=t+e,i=e<0?-1:n._tree.children.length;s!=i;s+=e){let l=n._tree.children[s];if(this.mode&We.IncludeAnonymous||l instanceof $n||!l.type.isAnonymous||ad(l))return!1}return!0}move(e,t){if(t&&this.enterChild(e,0,4))return!0;for(;;){if(this.sibling(e))return!0;if(this.atLastNode(e)||!this.parent())return!1}}next(e=!0){return this.move(1,e)}prev(e=!0){return this.move(-1,e)}moveTo(e,t=0){for(;(this.from==this.to||(t<1?this.from>=e:this.from>e)||(t>-1?this.to<=e:this.to<e))&&this.parent(););for(;this.enterChild(1,e,t););return this}get node(){if(!this.buffer)return this._tree;let e=this.bufferNode,t=null,n=0;if(e&&e.context==this.buffer)e:for(let r=this.index,s=this.stack.length;s>=0;){for(let i=e;i;i=i._parent)if(i.index==r){if(r==this.index)return i;t=i,n=s+1;break e}r=this.stack[--s]}for(let r=n;r<this.stack.length;r++)t=new xn(this.buffer,t,this.stack[r]);return this.bufferNode=new xn(this.buffer,t,this.index)}get tree(){return this.buffer?null:this._tree._tree}iterate(e,t){for(let n=0;;){let r=!1;if(this.type.isAnonymous||e(this)!==!1){if(this.firstChild()){n++;continue}this.type.isAnonymous||(r=!0)}for(;r&&t&&t(this),r=this.type.isAnonymous,!this.nextSibling();){if(!n)return;this.parent(),n--,r=!0}}}matchContext(e){if(!this.buffer)return sa(this.node,e);let{buffer:t}=this.buffer,{types:n}=t.set;for(let r=e.length-1,s=this.stack.length-1;r>=0;s--){if(s<0)return sa(this.node,e,r);let i=n[t.buffer[this.stack[s]]];if(!i.isAnonymous){if(e[r]&&e[r]!=i.name)return!1;r--}}return!0}};function ad(o){return o.children.some(e=>e instanceof $n||!e.type.isAnonymous||ad(e))}function Bk(o){var e;let{buffer:t,nodeSet:n,maxBufferLength:r=1024,reused:s=[],minRepeatType:i=n.types.length}=o,l=Array.isArray(t)?new ei(t,t.length):t,a=n.types,u=0,c=0;function d(x,S,b,C,M){let{id:D,start:E,end:O,size:T}=l,P=c;for(;T<0;)if(l.next(),T==-1){let I=s[D];b.push(I),C.push(E-x);return}else if(T==-3){u=D;return}else if(T==-4){c=D;return}else throw new RangeError(`Unrecognized record size: ${T}`);let L=a[D],N,A,k=E-x;if(O-E<=r&&(A=g(l.pos-S,M))){let I=new Uint16Array(A.size-A.skip),F=l.pos-A.size,H=I.length;for(;l.pos>F;)H=m(A.start,I,H);N=new $n(I,O-A.start,n),k=A.start-x}else{let I=l.pos-T;l.next();let F=[],H=[],B=D>=i?D:-1,$=0,G=O;for(;l.pos>I;)B>=0&&l.id==B&&l.size>=0?(l.end<=G-r&&(f(F,H,E,$,l.end,G,B,P),$=F.length,G=l.end),l.next()):d(E,I,F,H,B);if(B>=0&&$>0&&$<F.length&&f(F,H,E,$,E,G,B,P),F.reverse(),H.reverse(),B>-1&&$>0){let q=p(L);N=ud(L,F,H,0,F.length,0,O-E,q,q)}else N=h(L,F,H,O-E,P-O)}b.push(N),C.push(k)}function p(x){return(S,b,C)=>{let M=0,D=S.length-1,E,O;if(D>=0&&(E=S[D])instanceof ye){if(!D&&E.type==x&&E.length==C)return E;(O=E.prop(ie.lookAhead))&&(M=b[D]+E.length+O)}return h(x,S,b,C,M)}}function f(x,S,b,C,M,D,E,O){let T=[],P=[];for(;x.length>C;)T.push(x.pop()),P.push(S.pop()+b-M);x.push(h(n.types[E],T,P,D-M,O-D)),S.push(M-b)}function h(x,S,b,C,M=0,D){if(u){let E=[ie.contextHash,u];D=D?[E].concat(D):[E]}if(M>25){let E=[ie.lookAhead,M];D=D?[E].concat(D):[E]}return new ye(x,S,b,C,D)}function g(x,S){let b=l.fork(),C=0,M=0,D=0,E=b.end-r,O={size:0,start:0,skip:0};e:for(let T=b.pos-x;b.pos>T;){let P=b.size;if(b.id==S&&P>=0){O.size=C,O.start=M,O.skip=D,D+=4,C+=4,b.next();continue}let L=b.pos-P;if(P<0||L<T||b.start<E)break;let N=b.id>=i?4:0,A=b.start;for(b.next();b.pos>L;){if(b.size<0)if(b.size==-3)N+=4;else break e;else b.id>=i&&(N+=4);b.next()}M=A,C+=P,D+=N}return(S<0||C==x)&&(O.size=C,O.start=M,O.skip=D),O.size>4?O:void 0}function m(x,S,b){let{id:C,start:M,end:D,size:E}=l;if(l.next(),E>=0&&C<i){let O=b;if(E>4){let T=l.pos-(E-4);for(;l.pos>T;)b=m(x,S,b)}S[--b]=O,S[--b]=D-x,S[--b]=M-x,S[--b]=C}else E==-3?u=C:E==-4&&(c=C);return b}let y=[],w=[];for(;l.pos>0;)d(o.start||0,o.bufferStart||0,y,w,-1);let v=(e=o.length)!==null&&e!==void 0?e:y.length?w[0]+y[0].length:0;return new ye(a[o.topID],y.reverse(),w.reverse(),v)}var Zb=new WeakMap;function oa(o,e){if(!o.isAnonymous||e instanceof $n||e.type!=o)return 1;let t=Zb.get(e);if(t==null){t=1;for(let n of e.children){if(n.type!=o||!(n instanceof ye)){t=1;break}t+=oa(o,n)}Zb.set(e,t)}return t}function ud(o,e,t,n,r,s,i,l,a){let u=0;for(let h=n;h<r;h++)u+=oa(o,e[h]);let c=Math.ceil(u*1.5/8),d=[],p=[];function f(h,g,m,y,w){for(let v=m;v<y;){let x=v,S=g[v],b=oa(o,h[v]);for(v++;v<y;v++){let C=oa(o,h[v]);if(b+C>=c)break;b+=C}if(v==x+1){if(b>c){let C=h[x];f(C.children,C.positions,0,C.children.length,g[x]+w);continue}d.push(h[x])}else{let C=g[v-1]+h[v-1].length-S;d.push(ud(o,h,g,x,v,S,C,null,a))}p.push(S+w-s)}}return f(e,t,n,r,0),(l||a)(d,p,i)}var vn=class{constructor(e,t,n,r,s=!1,i=!1){this.from=e,this.to=t,this.tree=n,this.offset=r,this.open=(s?1:0)|(i?2:0)}get openStart(){return(this.open&1)>0}get openEnd(){return(this.open&2)>0}static addTree(e,t=[],n=!1){let r=[new vn(0,e.length,e,0,!1,n)];for(let s of t)s.to>e.length&&r.push(s);return r}static applyChanges(e,t,n=128){if(!t.length)return e;let r=[],s=1,i=e.length?e[0]:null;for(let l=0,a=0,u=0;;l++){let c=l<t.length?t[l]:null,d=c?c.fromA:1e9;if(d-a>=n)for(;i&&i.from<d;){let p=i;if(a>=p.from||d<=p.to||u){let f=Math.max(p.from,a)-u,h=Math.min(p.to,d)-u;p=f>=h?null:new vn(f,h,p.tree,p.offset+u,l>0,!!c)}if(p&&r.push(p),i.to>d)break;i=s<e.length?e[s++]:null}if(!c)break;a=c.toA,u=c.toA-c.toB}return r}},ro=class{startParse(e,t,n){return typeof e=="string"&&(e=new ld(e)),n=n?n.length?n.map(r=>new Zs(r.from,r.to)):[new Zs(0,0)]:[new Zs(0,e.length)],this.createParse(e,t||[],n)}parse(e,t,n){let r=this.startParse(e,t,n);for(;;){let s=r.advance();if(s)return s}}},ld=class{constructor(e){this.string=e}get length(){return this.string.length}chunk(e){return this.string.slice(e)}get lineChunks(){return!1}read(e,t){return this.string.slice(e,t)}};var $te=new ie({perNode:!0});var _r=class{constructor(e,t,n,r,s,i,l,a,u,c=0,d){this.p=e,this.stack=t,this.state=n,this.reducePos=r,this.pos=s,this.score=i,this.buffer=l,this.bufferBase=a,this.curContext=u,this.lookAhead=c,this.parent=d}toString(){return`[${this.stack.filter((e,t)=>t%3==0).concat(this.state)}]@${this.pos}${this.score?"!"+this.score:""}`}static start(e,t,n=0){let r=e.parser.context;return new _r(e,[],t,n,n,0,[],0,r?new ia(r,r.start):null,0,null)}get context(){return this.curContext?this.curContext.context:null}pushState(e,t){this.stack.push(this.state,t,this.bufferBase+this.buffer.length),this.state=e}reduce(e){var t;let n=e>>19,r=e&65535,{parser:s}=this.p,i=s.dynamicPrecedence(r);if(i&&(this.score+=i),n==0){this.pushState(s.getGoto(this.state,r,!0),this.reducePos),r<s.minRepeatTerm&&this.storeNode(r,this.reducePos,this.reducePos,4,!0),this.reduceContext(r,this.reducePos);return}let l=this.stack.length-(n-1)*3-(e&262144?6:0),a=l?this.stack[l-2]:this.p.ranges[0].from,u=this.reducePos-a;u>=2e3&&!(!((t=this.p.parser.nodeSet.types[r])===null||t===void 0)&&t.isAnonymous)&&(a==this.p.lastBigReductionStart?(this.p.bigReductionCount++,this.p.lastBigReductionSize=u):this.p.lastBigReductionSize<u&&(this.p.bigReductionCount=1,this.p.lastBigReductionStart=a,this.p.lastBigReductionSize=u));let c=l?this.stack[l-1]:0,d=this.bufferBase+this.buffer.length-c;if(r<s.minRepeatTerm||e&131072){let p=s.stateFlag(this.state,1)?this.pos:this.reducePos;this.storeNode(r,a,p,d+4,!0)}if(e&262144)this.state=this.stack[l];else{let p=this.stack[l-3];this.state=s.getGoto(p,r,!0)}for(;this.stack.length>l;)this.stack.pop();this.reduceContext(r,a)}storeNode(e,t,n,r=4,s=!1){if(e==0&&(!this.stack.length||this.stack[this.stack.length-1]<this.buffer.length+this.bufferBase)){let i=this,l=this.buffer.length;if(l==0&&i.parent&&(l=i.bufferBase-i.parent.bufferBase,i=i.parent),l>0&&i.buffer[l-4]==0&&i.buffer[l-1]>-1){if(t==n)return;if(i.buffer[l-2]>=t){i.buffer[l-2]=n;return}}}if(!s||this.pos==n)this.buffer.push(e,t,n,r);else{let i=this.buffer.length;if(i>0&&this.buffer[i-4]!=0)for(;i>0&&this.buffer[i-2]>n;)this.buffer[i]=this.buffer[i-4],this.buffer[i+1]=this.buffer[i-3],this.buffer[i+2]=this.buffer[i-2],this.buffer[i+3]=this.buffer[i-1],i-=4,r>4&&(r-=4);this.buffer[i]=e,this.buffer[i+1]=t,this.buffer[i+2]=n,this.buffer[i+3]=r}}shift(e,t,n){let r=this.pos;if(e&131072)this.pushState(e&65535,this.pos);else if(e&262144)this.pos=n,this.shiftContext(t,r),t<=this.p.parser.maxNode&&this.buffer.push(t,r,n,4);else{let s=e,{parser:i}=this.p;(n>this.pos||t<=i.maxNode)&&(this.pos=n,i.stateFlag(s,1)||(this.reducePos=n)),this.pushState(s,r),this.shiftContext(t,r),t<=i.maxNode&&this.buffer.push(t,r,n,4)}}apply(e,t,n){e&65536?this.reduce(e):this.shift(e,t,n)}useNode(e,t){let n=this.p.reused.length-1;(n<0||this.p.reused[n]!=e)&&(this.p.reused.push(e),n++);let r=this.pos;this.reducePos=this.pos=r+e.length,this.pushState(t,r),this.buffer.push(n,r,this.reducePos,-1),this.curContext&&this.updateContext(this.curContext.tracker.reuse(this.curContext.context,e,this,this.p.stream.reset(this.pos-e.length)))}split(){let e=this,t=e.buffer.length;for(;t>0&&e.buffer[t-2]>e.reducePos;)t-=4;let n=e.buffer.slice(t),r=e.bufferBase+t;for(;e&&r==e.bufferBase;)e=e.parent;return new _r(this.p,this.stack.slice(),this.state,this.reducePos,this.pos,this.score,n,r,this.curContext,this.lookAhead,e)}recoverByDelete(e,t){let n=e<=this.p.parser.maxNode;n&&this.storeNode(e,this.pos,t,4),this.storeNode(0,this.pos,t,n?8:4),this.pos=this.reducePos=t,this.score-=190}canShift(e){for(let t=new dd(this);;){let n=this.p.parser.stateSlot(t.state,4)||this.p.parser.hasAction(t.state,e);if(n==0)return!1;if(!(n&65536))return!0;t.reduce(n)}}recoverByInsert(e){if(this.stack.length>=300)return[];let t=this.p.parser.nextStates(this.state);if(t.length>4<<1||this.stack.length>=120){let r=[];for(let s=0,i;s<t.length;s+=2)(i=t[s+1])!=this.state&&this.p.parser.hasAction(i,e)&&r.push(t[s],i);if(this.stack.length<120)for(let s=0;r.length<4<<1&&s<t.length;s+=2){let i=t[s+1];r.some((l,a)=>a&1&&l==i)||r.push(t[s],i)}t=r}let n=[];for(let r=0;r<t.length&&n.length<4;r+=2){let s=t[r+1];if(s==this.state)continue;let i=this.split();i.pushState(s,this.pos),i.storeNode(0,i.pos,i.pos,4,!0),i.shiftContext(t[r],this.pos),i.score-=200,n.push(i)}return n}forceReduce(){let{parser:e}=this.p,t=e.stateSlot(this.state,5);if(!(t&65536))return!1;if(!e.validAction(this.state,t)){let n=t>>19,r=t&65535,s=this.stack.length-n*3;if(s<0||e.getGoto(this.stack[s],r,!1)<0){let i=this.findForcedReduction();if(i==null)return!1;t=i}this.storeNode(0,this.pos,this.pos,4,!0),this.score-=100}return this.reducePos=this.pos,this.reduce(t),!0}findForcedReduction(){let{parser:e}=this.p,t=[],n=(r,s)=>{if(!t.includes(r))return t.push(r),e.allActions(r,i=>{if(!(i&393216))if(i&65536){let l=(i>>19)-s;if(l>1){let a=i&65535,u=this.stack.length-l*3;if(u>=0&&e.getGoto(this.stack[u],a,!1)>=0)return l<<19|65536|a}}else{let l=n(i,s+1);if(l!=null)return l}})};return n(this.state,0)}forceAll(){for(;!this.p.parser.stateFlag(this.state,2);)if(!this.forceReduce()){this.storeNode(0,this.pos,this.pos,4,!0);break}return this}get deadEnd(){if(this.stack.length!=3)return!1;let{parser:e}=this.p;return e.data[e.stateSlot(this.state,1)]==65535&&!e.stateSlot(this.state,4)}restart(){this.state=this.stack[0],this.stack.length=0}sameState(e){if(this.state!=e.state||this.stack.length!=e.stack.length)return!1;for(let t=0;t<this.stack.length;t+=3)if(this.stack[t]!=e.stack[t])return!1;return!0}get parser(){return this.p.parser}dialectEnabled(e){return this.p.parser.dialect.flags[e]}shiftContext(e,t){this.curContext&&this.updateContext(this.curContext.tracker.shift(this.curContext.context,e,this,this.p.stream.reset(t)))}reduceContext(e,t){this.curContext&&this.updateContext(this.curContext.tracker.reduce(this.curContext.context,e,this,this.p.stream.reset(t)))}emitContext(){let e=this.buffer.length-1;(e<0||this.buffer[e]!=-3)&&this.buffer.push(this.curContext.hash,this.pos,this.pos,-3)}emitLookAhead(){let e=this.buffer.length-1;(e<0||this.buffer[e]!=-4)&&this.buffer.push(this.lookAhead,this.pos,this.pos,-4)}updateContext(e){if(e!=this.curContext.context){let t=new ia(this.curContext.tracker,e);t.hash!=this.curContext.hash&&this.emitContext(),this.curContext=t}}setLookAhead(e){e>this.lookAhead&&(this.emitLookAhead(),this.lookAhead=e)}close(){this.curContext&&this.curContext.tracker.strict&&this.emitContext(),this.lookAhead>0&&this.emitLookAhead()}},ia=class{constructor(e,t){this.tracker=e,this.context=t,this.hash=e.strict?e.hash(t):0}},ny;(function(o){o[o.Insert=200]="Insert",o[o.Delete=190]="Delete",o[o.Reduce=100]="Reduce",o[o.MaxNext=4]="MaxNext",o[o.MaxInsertStackDepth=300]="MaxInsertStackDepth",o[o.DampenInsertStackDepth=120]="DampenInsertStackDepth",o[o.MinBigReduction=2e3]="MinBigReduction"})(ny||(ny={}));var dd=class{constructor(e){this.start=e,this.state=e.state,this.stack=e.stack,this.base=this.stack.length}reduce(e){let t=e&65535,n=e>>19;n==0?(this.stack==this.start.stack&&(this.stack=this.stack.slice()),this.stack.push(this.state,0,0),this.base+=3):this.base-=(n-1)*3;let r=this.start.p.parser.getGoto(this.stack[this.base-3],t,!0);this.state=r}},Kr=class{constructor(e,t,n){this.stack=e,this.pos=t,this.index=n,this.buffer=e.buffer,this.index==0&&this.maybeNext()}static create(e,t=e.bufferBase+e.buffer.length){return new Kr(e,t,t-e.bufferBase)}maybeNext(){let e=this.stack.parent;e!=null&&(this.index=this.stack.bufferBase-e.bufferBase,this.stack=e,this.buffer=e.buffer)}get id(){return this.buffer[this.index-4]}get start(){return this.buffer[this.index-3]}get end(){return this.buffer[this.index-2]}get size(){return this.buffer[this.index-1]}next(){this.index-=4,this.pos-=4,this.index==0&&this.maybeNext()}fork(){return new Kr(this.stack,this.pos,this.index)}};function ti(o,e=Uint16Array){if(typeof o!="string")return o;let t=null;for(let n=0,r=0;n<o.length;){let s=0;for(;;){let i=o.charCodeAt(n++),l=!1;if(i==126){s=65535;break}i>=92&&i--,i>=34&&i--;let a=i-32;if(a>=46&&(a-=46,l=!0),s+=a,l)break;s*=46}t?t[r++]=s:t=new e(s)}return t}var Wr=class{constructor(){this.start=-1,this.value=-1,this.end=-1,this.extended=-1,this.lookAhead=0,this.mask=0,this.context=0}},oy=new Wr,pd=class{constructor(e,t){this.input=e,this.ranges=t,this.chunk="",this.chunkOff=0,this.chunk2="",this.chunk2Pos=0,this.next=-1,this.token=oy,this.rangeIndex=0,this.pos=this.chunkPos=t[0].from,this.range=t[0],this.end=t[t.length-1].to,this.readNext()}resolveOffset(e,t){let n=this.range,r=this.rangeIndex,s=this.pos+e;for(;s<n.from;){if(!r)return null;let i=this.ranges[--r];s-=n.from-i.to,n=i}for(;t<0?s>n.to:s>=n.to;){if(r==this.ranges.length-1)return null;let i=this.ranges[++r];s+=i.from-n.to,n=i}return s}clipPos(e){if(e>=this.range.from&&e<this.range.to)return e;for(let t of this.ranges)if(t.to>e)return Math.max(e,t.from);return this.end}peek(e){let t=this.chunkOff+e,n,r;if(t>=0&&t<this.chunk.length)n=this.pos+e,r=this.chunk.charCodeAt(t);else{let s=this.resolveOffset(e,1);if(s==null)return-1;if(n=s,n>=this.chunk2Pos&&n<this.chunk2Pos+this.chunk2.length)r=this.chunk2.charCodeAt(n-this.chunk2Pos);else{let i=this.rangeIndex,l=this.range;for(;l.to<=n;)l=this.ranges[++i];this.chunk2=this.input.chunk(this.chunk2Pos=n),n+this.chunk2.length>l.to&&(this.chunk2=this.chunk2.slice(0,l.to-n)),r=this.chunk2.charCodeAt(0)}}return n>=this.token.lookAhead&&(this.token.lookAhead=n+1),r}acceptToken(e,t=0){let n=t?this.resolveOffset(t,-1):this.pos;if(n==null||n<this.token.start)throw new RangeError("Token end out of bounds");this.token.value=e,this.token.end=n}getChunk(){if(this.pos>=this.chunk2Pos&&this.pos<this.chunk2Pos+this.chunk2.length){let{chunk:e,chunkPos:t}=this;this.chunk=this.chunk2,this.chunkPos=this.chunk2Pos,this.chunk2=e,this.chunk2Pos=t,this.chunkOff=this.pos-this.chunkPos}else{this.chunk2=this.chunk,this.chunk2Pos=this.chunkPos;let e=this.input.chunk(this.pos),t=this.pos+e.length;this.chunk=t>this.range.to?e.slice(0,this.range.to-this.pos):e,this.chunkPos=this.pos,this.chunkOff=0}}readNext(){return this.chunkOff>=this.chunk.length&&(this.getChunk(),this.chunkOff==this.chunk.length)?this.next=-1:this.next=this.chunk.charCodeAt(this.chunkOff)}advance(e=1){for(this.chunkOff+=e;this.pos+e>=this.range.to;){if(this.rangeIndex==this.ranges.length-1)return this.setDone();e-=this.range.to-this.pos,this.range=this.ranges[++this.rangeIndex],this.pos=this.range.from}return this.pos+=e,this.pos>=this.token.lookAhead&&(this.token.lookAhead=this.pos+1),this.readNext()}setDone(){return this.pos=this.chunkPos=this.end,this.range=this.ranges[this.rangeIndex=this.ranges.length-1],this.chunk="",this.next=-1}reset(e,t){if(t?(this.token=t,t.start=e,t.lookAhead=e+1,t.value=t.extended=-1):this.token=oy,this.pos!=e){if(this.pos=e,e==this.end)return this.setDone(),this;for(;e<this.range.from;)this.range=this.ranges[--this.rangeIndex];for(;e>=this.range.to;)this.range=this.ranges[++this.rangeIndex];e>=this.chunkPos&&e<this.chunkPos+this.chunk.length?this.chunkOff=e-this.chunkPos:(this.chunk="",this.chunkOff=0),this.readNext()}return this}read(e,t){if(e>=this.chunkPos&&t<=this.chunkPos+this.chunk.length)return this.chunk.slice(e-this.chunkPos,t-this.chunkPos);if(e>=this.chunk2Pos&&t<=this.chunk2Pos+this.chunk2.length)return this.chunk2.slice(e-this.chunk2Pos,t-this.chunk2Pos);if(e>=this.range.from&&t<=this.range.to)return this.input.read(e,t);let n="";for(let r of this.ranges){if(r.from>=t)break;r.to>e&&(n+=this.input.read(Math.max(r.from,e),Math.min(r.to,t)))}return n}},so=class{constructor(e,t){this.data=e,this.id=t}token(e,t){let{parser:n}=t.p;cy(this.data,e,t,this.id,n.data,n.tokenPrecTable)}};so.prototype.contextual=so.prototype.fallback=so.prototype.extend=!1;var fd=class{constructor(e,t,n){this.precTable=t,this.elseToken=n,this.data=typeof e=="string"?ti(e):e}token(e,t){let n=e.pos,r=0;for(;;){let s=e.next<0,i=e.resolveOffset(1,1);if(cy(this.data,e,t,0,this.data,this.precTable),e.token.value>-1)break;if(this.elseToken==null)return;if(s||r++,i==null)break;e.reset(i,e.token)}r&&(e.reset(n,e.token),e.acceptToken(this.elseToken,r))}};fd.prototype.contextual=so.prototype.fallback=so.prototype.extend=!1;function cy(o,e,t,n,r,s){let i=0,l=1<<n,{dialect:a}=t.p.parser;e:for(;l&o[i];){let u=o[i+1];for(let f=i+3;f<u;f+=2)if((o[f+1]&l)>0){let h=o[f];if(a.allows(h)&&(e.token.value==-1||e.token.value==h||zk(h,e.token.value,r,s))){e.acceptToken(h);break}}let c=e.next,d=0,p=o[i+2];if(e.next<0&&p>d&&o[u+p*3-3]==65535&&o[u+p*3-3]==65535){i=o[u+p*3-1];continue e}for(;d<p;){let f=d+p>>1,h=u+f+(f<<1),g=o[h],m=o[h+1]||65536;if(c<g)p=f;else if(c>=m)d=f+1;else{i=o[h+2],e.advance();continue e}}break}}function ry(o,e,t){for(let n=e,r;(r=o[n])!=65535;n++)if(r==t)return n-e;return-1}function zk(o,e,t,n){let r=ry(t,n,e);return r<0||ry(t,n,o)<r}var ln=typeof process<"u"&&process.env&&/\bparse\b/.test(process.env.LOG),cd=null,sy;(function(o){o[o.Margin=25]="Margin"})(sy||(sy={}));function iy(o,e,t){let n=o.cursor(We.IncludeAnonymous);for(n.moveTo(e);;)if(!(t<0?n.childBefore(e):n.childAfter(e)))for(;;){if((t<0?n.to<e:n.from>e)&&!n.type.isError)return t<0?Math.max(0,Math.min(n.to-1,e-25)):Math.min(o.length,Math.max(n.from+1,e+25));if(t<0?n.prevSibling():n.nextSibling())break;if(!n.parent())return t<0?0:o.length}}var hd=class{constructor(e,t){this.fragments=e,this.nodeSet=t,this.i=0,this.fragment=null,this.safeFrom=-1,this.safeTo=-1,this.trees=[],this.start=[],this.index=[],this.nextFragment()}nextFragment(){let e=this.fragment=this.i==this.fragments.length?null:this.fragments[this.i++];if(e){for(this.safeFrom=e.openStart?iy(e.tree,e.from+e.offset,1)-e.offset:e.from,this.safeTo=e.openEnd?iy(e.tree,e.to+e.offset,-1)-e.offset:e.to;this.trees.length;)this.trees.pop(),this.start.pop(),this.index.pop();this.trees.push(e.tree),this.start.push(-e.offset),this.index.push(0),this.nextStart=this.safeFrom}else this.nextStart=1e9}nodeAt(e){if(e<this.nextStart)return null;for(;this.fragment&&this.safeTo<=e;)this.nextFragment();if(!this.fragment)return null;for(;;){let t=this.trees.length-1;if(t<0)return this.nextFragment(),null;let n=this.trees[t],r=this.index[t];if(r==n.children.length){this.trees.pop(),this.start.pop(),this.index.pop();continue}let s=n.children[r],i=this.start[t]+n.positions[r];if(i>e)return this.nextStart=i,null;if(s instanceof ye){if(i==e){if(i<this.safeFrom)return null;let l=i+s.length;if(l<=this.safeTo){let a=s.prop(ie.lookAhead);if(!a||l+a<this.fragment.to)return s}}this.index[t]++,i+s.length>=Math.max(this.safeFrom,e)&&(this.trees.push(s),this.start.push(i),this.index.push(0))}else this.index[t]++,this.nextStart=i+s.length}}},md=class{constructor(e,t){this.stream=t,this.tokens=[],this.mainToken=null,this.actions=[],this.tokens=e.tokenizers.map(n=>new Wr)}getActions(e){let t=0,n=null,{parser:r}=e.p,{tokenizers:s}=r,i=r.stateSlot(e.state,3),l=e.curContext?e.curContext.hash:0,a=0;for(let u=0;u<s.length;u++){if(!(1<<u&i))continue;let c=s[u],d=this.tokens[u];if(!(n&&!c.fallback)&&((c.contextual||d.start!=e.pos||d.mask!=i||d.context!=l)&&(this.updateCachedToken(d,c,e),d.mask=i,d.context=l),d.lookAhead>d.end+25&&(a=Math.max(d.lookAhead,a)),d.value!=0)){let p=t;if(d.extended>-1&&(t=this.addActions(e,d.extended,d.end,t)),t=this.addActions(e,d.value,d.end,t),!c.extend&&(n=d,t>p))break}}for(;this.actions.length>t;)this.actions.pop();return a&&e.setLookAhead(a),!n&&e.pos==this.stream.end&&(n=new Wr,n.value=e.p.parser.eofTerm,n.start=n.end=e.pos,t=this.addActions(e,n.value,n.end,t)),this.mainToken=n,this.actions}getMainToken(e){if(this.mainToken)return this.mainToken;let t=new Wr,{pos:n,p:r}=e;return t.start=n,t.end=Math.min(n+1,r.stream.end),t.value=n==r.stream.end?r.parser.eofTerm:0,t}updateCachedToken(e,t,n){let r=this.stream.clipPos(n.pos);if(t.token(this.stream.reset(r,e),n),e.value>-1){let{parser:s}=n.p;for(let i=0;i<s.specialized.length;i++)if(s.specialized[i]==e.value){let l=s.specializers[i](this.stream.read(e.start,e.end),n);if(l>=0&&n.p.parser.dialect.allows(l>>1)){l&1?e.extended=l>>1:e.value=l>>1;break}}}else e.value=0,e.end=this.stream.clipPos(r+1)}putAction(e,t,n,r){for(let s=0;s<r;s+=3)if(this.actions[s]==e)return r;return this.actions[r++]=e,this.actions[r++]=t,this.actions[r++]=n,r}addActions(e,t,n,r){let{state:s}=e,{parser:i}=e.p,{data:l}=i;for(let a=0;a<2;a++)for(let u=i.stateSlot(s,a?2:1);;u+=3){if(l[u]==65535)if(l[u+1]==1)u=Wn(l,u+2);else{r==0&&l[u+1]==2&&(r=this.putAction(Wn(l,u+2),t,n,r));break}l[u]==t&&(r=this.putAction(Wn(l,u+1),t,n,r))}return r}},ly;(function(o){o[o.Distance=5]="Distance",o[o.MaxRemainingPerStep=3]="MaxRemainingPerStep",o[o.MinBufferLengthPrune=500]="MinBufferLengthPrune",o[o.ForceReduceLimit=10]="ForceReduceLimit",o[o.CutDepth=15e3]="CutDepth",o[o.CutTo=9e3]="CutTo",o[o.MaxLeftAssociativeReductionCount=300]="MaxLeftAssociativeReductionCount",o[o.MaxStackCount=12]="MaxStackCount"})(ly||(ly={}));var gd=class{constructor(e,t,n,r){this.parser=e,this.input=t,this.ranges=r,this.recovering=0,this.nextStackID=9812,this.minStackPos=0,this.reused=[],this.stoppedAt=null,this.lastBigReductionStart=-1,this.lastBigReductionSize=0,this.bigReductionCount=0,this.stream=new pd(t,r),this.tokens=new md(e,this.stream),this.topTerm=e.top[1];let{from:s}=r[0];this.stacks=[_r.start(this,e.top[0],s)],this.fragments=n.length&&this.stream.end-s>e.bufferLength*4?new hd(n,e.nodeSet):null}get parsedPos(){return this.minStackPos}advance(){let e=this.stacks,t=this.minStackPos,n=this.stacks=[],r,s;if(this.bigReductionCount>300&&e.length==1){let[i]=e;for(;i.forceReduce()&&i.stack.length&&i.stack[i.stack.length-2]>=this.lastBigReductionStart;);this.bigReductionCount=this.lastBigReductionSize=0}for(let i=0;i<e.length;i++){let l=e[i];for(;;){if(this.tokens.mainToken=null,l.pos>t)n.push(l);else{if(this.advanceStack(l,n,e))continue;{r||(r=[],s=[]),r.push(l);let a=this.tokens.getMainToken(l);s.push(a.value,a.end)}}break}}if(!n.length){let i=r&&$k(r);if(i)return this.stackToTree(i);if(this.parser.strict)throw ln&&r&&console.log("Stuck with token "+(this.tokens.mainToken?this.parser.getName(this.tokens.mainToken.value):"none")),new SyntaxError("No parse at "+t);this.recovering||(this.recovering=5)}if(this.recovering&&r){let i=this.stoppedAt!=null&&r[0].pos>this.stoppedAt?r[0]:this.runRecovery(r,s,n);if(i)return this.stackToTree(i.forceAll())}if(this.recovering){let i=this.recovering==1?1:this.recovering*3;if(n.length>i)for(n.sort((l,a)=>a.score-l.score);n.length>i;)n.pop();n.some(l=>l.reducePos>t)&&this.recovering--}else if(n.length>1){e:for(let i=0;i<n.length-1;i++){let l=n[i];for(let a=i+1;a<n.length;a++){let u=n[a];if(l.sameState(u)||l.buffer.length>500&&u.buffer.length>500)if((l.score-u.score||l.buffer.length-u.buffer.length)>0)n.splice(a--,1);else{n.splice(i--,1);continue e}}}n.length>12&&n.splice(12,n.length-12)}this.minStackPos=n[0].pos;for(let i=1;i<n.length;i++)n[i].pos<this.minStackPos&&(this.minStackPos=n[i].pos);return null}stopAt(e){if(this.stoppedAt!=null&&this.stoppedAt<e)throw new RangeError("Can't move stoppedAt forward");this.stoppedAt=e}advanceStack(e,t,n){let r=e.pos,{parser:s}=this,i=ln?this.stackID(e)+" -> ":"";if(this.stoppedAt!=null&&r>this.stoppedAt)return e.forceReduce()?e:null;if(this.fragments){let u=e.curContext&&e.curContext.tracker.strict,c=u?e.curContext.hash:0;for(let d=this.fragments.nodeAt(r);d;){let p=this.parser.nodeSet.types[d.type.id]==d.type?s.getGoto(e.state,d.type.id):-1;if(p>-1&&d.length&&(!u||(d.prop(ie.contextHash)||0)==c))return e.useNode(d,p),ln&&console.log(i+this.stackID(e)+` (via reuse of ${s.getName(d.type.id)})`),!0;if(!(d instanceof ye)||d.children.length==0||d.positions[0]>0)break;let f=d.children[0];if(f instanceof ye&&d.positions[0]==0)d=f;else break}}let l=s.stateSlot(e.state,4);if(l>0)return e.reduce(l),ln&&console.log(i+this.stackID(e)+` (via always-reduce ${s.getName(l&65535)})`),!0;if(e.stack.length>=15e3)for(;e.stack.length>9e3&&e.forceReduce(););let a=this.tokens.getActions(e);for(let u=0;u<a.length;){let c=a[u++],d=a[u++],p=a[u++],f=u==a.length||!n,h=f?e:e.split();if(h.apply(c,d,p),ln&&console.log(i+this.stackID(h)+` (via ${c&65536?`reduce of ${s.getName(c&65535)}`:"shift"} for ${s.getName(d)} @ ${r}${h==e?"":", split"})`),f)return!0;h.pos>r?t.push(h):n.push(h)}return!1}advanceFully(e,t){let n=e.pos;for(;;){if(!this.advanceStack(e,null,null))return!1;if(e.pos>n)return ay(e,t),!0}}runRecovery(e,t,n){let r=null,s=!1;for(let i=0;i<e.length;i++){let l=e[i],a=t[i<<1],u=t[(i<<1)+1],c=ln?this.stackID(l)+" -> ":"";if(l.deadEnd&&(s||(s=!0,l.restart(),ln&&console.log(c+this.stackID(l)+" (restarted)"),this.advanceFully(l,n))))continue;let d=l.split(),p=c;for(let f=0;d.forceReduce()&&f<10&&(ln&&console.log(p+this.stackID(d)+" (via force-reduce)"),!this.advanceFully(d,n));f++)ln&&(p=this.stackID(d)+" -> ");for(let f of l.recoverByInsert(a))ln&&console.log(c+this.stackID(f)+" (via recover-insert)"),this.advanceFully(f,n);this.stream.end>l.pos?(u==l.pos&&(u++,a=0),l.recoverByDelete(a,u),ln&&console.log(c+this.stackID(l)+` (via recover-delete ${this.parser.getName(a)})`),ay(l,n)):(!r||r.score<l.score)&&(r=l)}return r}stackToTree(e){return e.close(),ye.build({buffer:Kr.create(e),nodeSet:this.parser.nodeSet,topID:this.topTerm,maxBufferLength:this.parser.bufferLength,reused:this.reused,start:this.ranges[0].from,length:e.pos-this.ranges[0].from,minRepeatType:this.parser.minRepeatTerm})}stackID(e){let t=(cd||(cd=new WeakMap)).get(e);return t||cd.set(e,t=String.fromCodePoint(this.nextStackID++)),t+e}};function ay(o,e){for(let t=0;t<e.length;t++){let n=e[t];if(n.pos==o.pos&&n.sameState(o)){e[t].score<o.score&&(e[t]=o);return}}e.push(o)}var bd=class{constructor(e,t,n){this.source=e,this.flags=t,this.disabled=n}allows(e){return!this.disabled||this.disabled[e]==0}};var zo=class extends ro{constructor(e){if(super(),this.wrappers=[],e.version!=14)throw new RangeError(`Parser version (${e.version}) doesn't match runtime version (14)`);let t=e.nodeNames.split(" ");this.minRepeatTerm=t.length;for(let l=0;l<e.repeatNodeCount;l++)t.push("");let n=Object.keys(e.topRules).map(l=>e.topRules[l][1]),r=[];for(let l=0;l<t.length;l++)r.push([]);function s(l,a,u){r[l].push([a,a.deserialize(String(u))])}if(e.nodeProps)for(let l of e.nodeProps){let a=l[0];typeof a=="string"&&(a=ie[a]);for(let u=1;u<l.length;){let c=l[u++];if(c>=0)s(c,a,l[u++]);else{let d=l[u+-c];for(let p=-c;p>0;p--)s(l[u++],a,d);u++}}}this.nodeSet=new zn(t.map((l,a)=>Ge.define({name:a>=this.minRepeatTerm?void 0:l,id:a,props:r[a],top:n.indexOf(a)>-1,error:a==0,skipped:e.skippedNodes&&e.skippedNodes.indexOf(a)>-1}))),e.propSources&&(this.nodeSet=this.nodeSet.extend(...e.propSources)),this.strict=!1,this.bufferLength=1024;let i=ti(e.tokenData);this.context=e.context,this.specializerSpecs=e.specialized||[],this.specialized=new Uint16Array(this.specializerSpecs.length);for(let l=0;l<this.specializerSpecs.length;l++)this.specialized[l]=this.specializerSpecs[l].term;this.specializers=this.specializerSpecs.map(uy),this.states=ti(e.states,Uint32Array),this.data=ti(e.stateData),this.goto=ti(e.goto),this.maxTerm=e.maxTerm,this.tokenizers=e.tokenizers.map(l=>typeof l=="number"?new so(i,l):l),this.topRules=e.topRules,this.dialects=e.dialects||{},this.dynamicPrecedences=e.dynamicPrecedences||null,this.tokenPrecTable=e.tokenPrec,this.termNames=e.termNames||null,this.maxNode=this.nodeSet.types.length-1,this.dialect=this.parseDialect(),this.top=this.topRules[Object.keys(this.topRules)[0]]}createParse(e,t,n){let r=new gd(this,e,t,n);for(let s of this.wrappers)r=s(r,e,t,n);return r}getGoto(e,t,n=!1){let r=this.goto;if(t>=r[0])return-1;for(let s=r[t+1];;){let i=r[s++],l=i&1,a=r[s++];if(l&&n)return a;for(let u=s+(i>>1);s<u;s++)if(r[s]==e)return a;if(l)return-1}}hasAction(e,t){let n=this.data;for(let r=0;r<2;r++)for(let s=this.stateSlot(e,r?2:1),i;;s+=3){if((i=n[s])==65535)if(n[s+1]==1)i=n[s=Wn(n,s+2)];else{if(n[s+1]==2)return Wn(n,s+2);break}if(i==t||i==0)return Wn(n,s+1)}return 0}stateSlot(e,t){return this.states[e*6+t]}stateFlag(e,t){return(this.stateSlot(e,0)&t)>0}validAction(e,t){return!!this.allActions(e,n=>n==t?!0:null)}allActions(e,t){let n=this.stateSlot(e,4),r=n?t(n):void 0;for(let s=this.stateSlot(e,1);r==null;s+=3){if(this.data[s]==65535)if(this.data[s+1]==1)s=Wn(this.data,s+2);else break;r=t(Wn(this.data,s+1))}return r}nextStates(e){let t=[];for(let n=this.stateSlot(e,1);;n+=3){if(this.data[n]==65535)if(this.data[n+1]==1)n=Wn(this.data,n+2);else break;if(!(this.data[n+2]&1)){let r=this.data[n+1];t.some((s,i)=>i&1&&s==r)||t.push(this.data[n],r)}}return t}configure(e){let t=Object.assign(Object.create(zo.prototype),this);if(e.props&&(t.nodeSet=this.nodeSet.extend(...e.props)),e.top){let n=this.topRules[e.top];if(!n)throw new RangeError(`Invalid top rule name ${e.top}`);t.top=n}return e.tokenizers&&(t.tokenizers=this.tokenizers.map(n=>{let r=e.tokenizers.find(s=>s.from==n);return r?r.to:n})),e.specializers&&(t.specializers=this.specializers.slice(),t.specializerSpecs=this.specializerSpecs.map((n,r)=>{let s=e.specializers.find(l=>l.from==n.external);if(!s)return n;let i=Object.assign(Object.assign({},n),{external:s.to});return t.specializers[r]=uy(i),i})),e.contextTracker&&(t.context=e.contextTracker),e.dialect&&(t.dialect=this.parseDialect(e.dialect)),e.strict!=null&&(t.strict=e.strict),e.wrap&&(t.wrappers=t.wrappers.concat(e.wrap)),e.bufferLength!=null&&(t.bufferLength=e.bufferLength),t}hasWrappers(){return this.wrappers.length>0}getName(e){return this.termNames?this.termNames[e]:String(e<=this.maxNode&&this.nodeSet.types[e].name||e)}get eofTerm(){return this.maxNode+1}get topNode(){return this.nodeSet.types[this.top[1]]}dynamicPrecedence(e){let t=this.dynamicPrecedences;return t==null?0:t[e]||0}parseDialect(e){let t=Object.keys(this.dialects),n=t.map(()=>!1);if(e)for(let s of e.split(" ")){let i=t.indexOf(s);i>=0&&(n[i]=!0)}let r=null;for(let s=0;s<t.length;s++)if(!n[s])for(let i=this.dialects[t[s]],l;(l=this.data[i++])!=65535;)(r||(r=new Uint8Array(this.maxTerm+1)))[l]=1;return new bd(e,n,r)}static deserialize(e){return new zo(e)}};function Wn(o,e){return o[e]|o[e+1]<<16}function $k(o){let e=null;for(let t of o){let n=t.p.stoppedAt;(t.pos==t.p.stream.end||n!=null&&t.pos>n)&&t.p.parser.stateFlag(t.state,2)&&(!e||e.score<t.score)&&(e=t)}return e}function uy(o){if(o.external){let e=o.extend?1:0;return(t,n)=>o.external(t,n)<<1|e}return o.get}var ni=zo.deserialize({version:14,states:"%QOVQPOOOOQO'#C_'#C_O_QQO'#C^OOQO'#DO'#DOOvQQO'#C|OOQO'#DR'#DROVQPO'#CuOOQO'#C}'#C}QOQPOOOOQO'#C`'#C`O!UQQO,58xO!dQPO,59VOVQPO,59]OVQPO,59_O!iQPO,59hO!nQQO,59aOOQO'#DQ'#DQOOQO1G.d1G.dO!UQQO1G.qO!yQQO1G.wOOQO1G.y1G.yOOQO'#Cw'#CwOOQO1G/S1G/SOOQO1G.{1G.{O#[QPO'#CnO#dQPO7+$]O!UQQO'#CxO#iQPO,59YOOQO<<Gw<<GwOOQO,59d,59dOOQO-E6v-E6v",stateData:"#q~OoOS~OsPOvUO~OTXOUXOVXOWXOXXOYXO`ZO~Of[Oh]Oj^OmpX~OZ`O[`O]`O^`O~OabO~OseO~Of[Oh]OwgO~Oh]Ofeijeimeiwei~OcjOdbX~OdlO~OcjOdba~O",goto:"#YvPPw}!TPPPPPPPPPPwPP!WPP!ZP!ZP!aP!g!jPPP!p!s!aP#P!aXROU[]XQOU[]RYQRibXTOU[]XVOU[]Rf^QkhRnkRWOQSOQ_UQc[Rd]QaYQhbRmj",nodeNames:"\u26A0 Filter ColumnValueExpression Column Operator Eq NotEq Gt Lt Starts Ends Number String True False ColumnSetExpression In LBrack Values Comma RBrack AndExpression And OrExpression Or ParenthesizedExpression As FilterName",maxTerm:39,skippedNodes:[0],repeatNodeCount:1,tokenData:"6p~RnXY#PYZ#P]^#Ppq#Pqr#brs#mxy$eyz$j|}$o!O!P$t!Q![%S!^!_%_!_!`%d!`!a%i!c!}%n!}#O&V#P#Q&[#R#S%n#T#U&a#U#X%n#X#Y(w#Y#Z+]#Z#]%n#]#^.]#^#c%n#c#d/e#d#g%n#g#h0m#h#i4[#i#o%n~#USo~XY#PYZ#P]^#Ppq#P~#eP!_!`#h~#mOU~~#pWOX#mZ]#m^r#mrs$Ys#O#m#P;'S#m;'S;=`$_<%lO#m~$_O[~~$bP;=`<%l#m~$jOv~~$oOw~~$tOc~~$wP!Q![$z~%PPZ~!Q![$z~%XQZ~!O!P$t!Q![%S~%dOW~~%iOT~~%nOV~P%sUsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#o%n~&[Oa~~&aOd~R&fYsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#b%n#b#c'U#c#g%n#g#h(^#h#o%nR'ZWsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#W%n#W#X's#X#o%nR'zUfQsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#o%nR(eUjQsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#o%nR(|WsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#b%n#b#c)f#c#o%nR)kWsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#W%n#W#X*T#X#o%nR*YWsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#g%n#g#h*r#h#o%nR*yUYQsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#o%nR+bVsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#U+w#U#o%nR+|WsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#`%n#`#a,f#a#o%nR,kWsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#g%n#g#h-T#h#o%nR-YWsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#X%n#X#Y-r#Y#o%nR-yU^QsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#o%nR.bWsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#b%n#b#c.z#c#o%nR/RU`QsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#o%nR/jWsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#f%n#f#g0S#g#o%nR0ZUhQsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#o%nR0rWsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#h%n#h#i1[#i#o%nR1aVsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#U1v#U#o%nR1{WsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#f%n#f#g2e#g#o%nR2jWsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#h%n#h#i3S#i#o%nR3XWsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#g%n#g#h3q#h#o%nR3xUXQsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#o%nR4aWsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#f%n#f#g4y#g#o%nR5OWsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#i%n#i#j5h#j#o%nR5mWsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#X%n#X#Y6V#Y#o%nR6^U]QsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#o%n",tokenizers:[0,1],topRules:{Filter:[0,1]},tokenPrec:0});import{isMultiClauseFilter as oi,isMultiValueFilter as Wk,isSingleValueFilter as _k}from"@vuu-ui/vuu-utils";var Mt,xd=class{constructor(){ce(this,Mt,void 0)}setFilterCombinatorOp(e,t=R(this,Mt)){oi(t)&&t.op===e||Y(this,Mt,{op:e,filters:[R(this,Mt)]})}add(e){if(R(this,Mt)===void 0)Y(this,Mt,e);else if(oi(R(this,Mt)))R(this,Mt).filters.push(e);else throw Error("Invalid filter passed to FilterExpression")}setColumn(e,t=R(this,Mt)){if(oi(t)){let n=t.filters.at(-1);n&&this.setColumn(e,n)}else t&&(t.column=e)}setOp(e,t=R(this,Mt)){if(oi(t)){let n=t.filters.at(-1);n&&this.setOp(e,n)}else t&&(t.op=e)}setValue(e,t=R(this,Mt)){var n;if(oi(t)){let r=t.filters.at(-1);r&&this.setValue(e,r)}else Wk(t)?((n=t.values)!=null||(t.values=[]),t.values.push(e)):_k(t)&&(t.value=e)}toJSON(e=R(this,Mt)){return this.name?{...e,name:this.name}:e}};Mt=new WeakMap;var la=(o,e)=>{let t=new xd,n=o.cursor();do{let{name:r,from:s,to:i}=n;switch(r){case"ColumnValueExpression":t.add({});break;case"ColumnSetExpression":t.add({op:"in"});break;case"Or":case"And":t.setFilterCombinatorOp(e.substring(s,i));break;case"Column":t.setColumn(e.substring(s,i));break;case"Operator":t.setOp(e.substring(s,i));break;case"String":t.setValue(e.substring(s+1,i-1));break;case"Number":t.setValue(parseFloat(e.substring(s,i)));break;case"True":t.setValue(!0);break;case"False":t.setValue(!1);break;case"FilterName":t.name=e.substring(s,i);break;default:}}while(n.next());return t.toJSON()};var Kk=ni.configure({strict:!0}),$o=o=>{let e=Kk.parse(o);return la(e,o)};function aa(o,e){switch(e.op){case"in":return Uk(o,e);case"=":return Gk(o,e);case">":return qk(o,e);case">=":return Qk(o,e);case"<":return jk(o,e);case"<=":return Jk(o,e);case"starts":return Xk(o,e);case"and":return Yk(o,e);case"or":return Zk(o,e);default:return console.log(`unrecognized filter type ${e.op}`),()=>!0}}var Uk=(o,e)=>t=>e.values.indexOf(t[o[e.column]])!==-1,Gk=(o,e)=>t=>t[o[e.column]]===e.value,qk=(o,e)=>t=>t[o[e.column]]>e.value,Qk=(o,e)=>t=>t[o[e.column]]>=e.value,jk=(o,e)=>t=>t[o[e.column]]<e.value,Jk=(o,e)=>t=>t[o[e.column]]<=e.value,Xk=(o,e)=>{let t=e.value;if(typeof t!="string")throw Error("string filter applied to value of wrong type");return n=>{let r=n[o[e.column]];if(typeof r!="string")throw Error("string filter applied to value of wrong type");return r.toLowerCase().startsWith(t.toLowerCase())}},Yk=(o,e)=>{let t=e.filters.map(n=>aa(o,n));return n=>t.every(r=>r(n))};function Zk(o,e){let t=e.filters.map(n=>aa(o,n));return n=>t.some(r=>r(n))}import{buildColumnMap as fI,EventEmitter as hI,getSelectionStatus as mI,KeySet as gI,logger as bI,metadataKeys as yI,NULL_RANGE as xy,rangeNewItems as xI,resetRange as ri,uuid as vy}from"@vuu-ui/vuu-utils";var dy=(o,e,t,n,r,s)=>{let i=Wo(r,o),l=o[o.length-1].aggType,a=t.map(u=>r[u]);switch(l){case 1:return fy(s,n,r,o,e,a);case 2:return eI(s,n,r,o,e,a);case 3:return py(s,r,o,e,a);case 4:return nI(s,n,r,o,e,a);case 5:return oI(s,n,r,o,e,a);case 6:return tI(s,n,r,o,e,a)}};function py(o,e,t,n,r){let s={},i=Wo(e,t);function l(a){if(Array.isArray(a))return a.length;{let u=0;for(let c in a)u+=1+l(a[c]);return u}}for(let a in o){let u=l(o[a]);s[a]=u}for(let a=0;a<n.length;a++)for(let u in s)n[a][r[0]]===u&&(n[a][i]=s[u]);return console.log("!!!! targetData",n),console.log("!!!! counts",s),s}function Wo(o,e){console.log("!!!! aggregation length",e.length);let t=e[e.length-1].column;return o[t]}function fy(o,e,t,n,r,s){let i={},l=Wo(t,n);function a(u,c,d){if(Array.isArray(u)){let p=0;for(let f of u)p+=Number(c[f][d]);return p}else{let p=0;for(let f in u)p+=a(u[f],c,d);return p}}for(let u in o){console.log(u);let c=Number(a(o[u],e,l));i[u]=c}for(let u=0;u<r.length;u++)for(let c in i)r[u][s[0]]===c&&(r[u][l]=i[c]);return console.log("!!!! targetData",r),console.log("!!!! sums",i),i}function eI(o,e,t,n,r,s){let i={},l=Wo(t,n),a=py(o,t,n,r,s),u=fy(o,e,t,n,r,s);for(let c in a){let d=0;d=u[c]/a[c],i[c]=d}for(let c=0;c<r.length;c++)for(let d in i)r[c][s[0]]===d&&(r[c][l]=i[d]);return console.log("!!!! targetData",r),console.log("!!!! averages",i),i}function ua(o,e,t){let n=[];if(Array.isArray(o))for(let r of o)n.push(e[r][t]);else for(let r in o)n.push(...ua(o[r],e,t));return n}function tI(o,e,t,n,r,s){let i={},l=Wo(t,n);for(let a in o){let u=ua(o[a],e,l),c=[...new Set(u)];i[a]=c}for(let a=0;a<r.length;a++)for(let u in i)r[a][s[0]]===u&&(r[a][l]=i[u]);return i}function nI(o,e,t,n,r,s){let i={},l=Wo(t,n);for(let a in o){let u=ua(o[a],e,l),c=Math.max(...u);i[a]=c}for(let a=0;a<r.length;a++)for(let u in i)r[a][s[0]]===u&&(r[a][l]=i[u]);return i}function oI(o,e,t,n,r,s){let i={},l=Wo(t,n);for(let a in o){let u=ua(o[a],e,l),c=Math.min(...u);i[a]=c}for(let a=0;a<r.length;a++)for(let u in i)r[a][s[0]]===u&&(r[a][l]=i[u]);return i}import{metadataKeys as rI}from"@vuu-ui/vuu-utils";var{DEPTH:vd,IS_EXPANDED:hy,KEY:Cd}=rI,my=(o,e)=>{let t=[];for(let n=0,r=0,s=!1,i=e.length;n<i;n++){let l=e[n],{[vd]:a,[Cd]:u}=l;if(u===o){let c=l.slice();for(c[hy]=!1,t.push(c),r+=1,s=!0;n<i-1&&e[n+1][vd]>a;)n+=1}else if(s){let c=l.slice();c[0]=r,c[1]=r,t.push(c),r+=1}else t.push(l),r+=1}return t},Sd=(o,e,t,n,r,s)=>{let i=t.map(l=>n[l]);return gy(r,i,o,e,void 0,void 0,void 0,s)},gy=(o,e,t,n=[],r="$root",s=1,i=[],l)=>{let a=Object.keys(o).sort();for(let u of a){let c=i.length,d=`${r}|${u}`,p=[c,c,!1,!1,s,0,d,0];p[e[s-1]]=u,i.push(p),t.includes(d)&&(p[hy]=!0,Array.isArray(o[u])?sI(i,o[u],n,d,s+1):gy(o[u],e,t,n,d,s+1,i,l))}for(let u in i)for(let c in i)if(i[u][2]===!1&&l[c]!=null&&i[u][e[0]]===l[c][e[0]]){i[u]=i[u].splice(0,8).concat(l[c].slice(8,l[c].length));break}return i},sI=(o,e,t,n,r)=>{for(let s of e){let i=o.length,l=t[s].slice();l[0]=i,l[1]=i,l[vd]=r,l[Cd]=`${n}|${l[Cd]}`,o.push(l)}},by=(o,e,t)=>{let n=e.map(i=>t[i]),r=lI(o,n);return[iI(r,n),r]},iI=(o,e)=>{let n=[],r=0,s=Object.keys(o).sort();for(let i of s){let l=[r,r,!1,!1,1,0,`$root|${i}`,0];l[e[0]]=i,n.push(l),r+=1}return n};function lI(o,e){let t={},n=e.length,r=n-1;for(let s=0,i=o.length;s<i;s++){let l=o[s],a=t,u,c;for(let d=0;d<n;d++){let p=e[d];c=l[p].toString(),u=a[c],u&&d===r?u.push(s):u?a=u:!u&&d<r?a=a[c]={}:u||(a[c]=[s])}}return console.log("!! groups",t),t}var aI=(o,e,[t,n])=>{let r=n==="D"?e[t]:o[t],s=n==="D"?o[t]:e[t];return r===s?0:s===null||r>s?1:-1},uI=o=>o.length===1?cI(o):o.length===2?dI(o):pI(o),cI=([[o,e]])=>(t,n)=>{let r=e==="D"?n[o]:t[o],s=e==="D"?t[o]:n[o];return r>s?1:s>r?-1:0},dI=([[o,e],[t,n]])=>(r,s)=>{let i=e==="D"?s[o]:r[o],l=e==="D"?r[o]:s[o],a=n==="D"?s[t]:r[t],u=n==="D"?r[t]:s[t];return i>l?1:l>i?-1:a>u?1:u>a?-1:0},pI=(o,e=aI)=>(t,n)=>{for(let r of o){let s=e(t,n,r);if(s!==0)return s}return 0},yy=(o,{sortDefs:e},t)=>{let n=e.map(({column:s,sortType:i})=>[t[s],i]),r=uI(n);return o.slice().sort(r)};var{debug:$t}=bI("ArrayDataSource"),{RENDER_IDX:vI,SELECTED:CI}=yI,SI=(o,e)=>[e,e,!0,!1,1,0,o[0].toString(),0,...o],wI=o=>({columns:o.map(({name:t,serverDataType:n="string"})=>({name:t,serverDataType:n})),key:o[0].name,table:{module:"",table:"Array"}}),TI=(o,e,t)=>{let[n]=o,r=o.slice();return r[vI]=e.keyFor(n),r[CI]=mI(t,n),r},si,an,he,ut,je,ca,ii,Ur,Cy=class extends hI{constructor({aggregations:t,columnDescriptors:n,data:r,filter:s,groupBy:i,rangeChangeRowset:l="delta",sort:a,title:u,viewport:c}){super();this.status="initialising";this.disabled=!1;this.selectedRows=[];this.suspended=!1;this.lastRangeServed={from:0,to:0};this.openTreeNodes=[];ce(this,si,[]);ce(this,an,void 0);ce(this,he,Xl);ce(this,ut,void 0);ce(this,je,xy);ce(this,ca,0);ce(this,ii,0);ce(this,Ur,void 0);this.keys=new gI(R(this,je));this.processedData=void 0;if(!r||!n)throw Error("ArrayDataSource constructor called without data or without columnDescriptors");this.columnDescriptors=n,Y(this,si,n.map(d=>d.name)),Y(this,an,fI(R(this,si))),this.rangeChangeRowset=l,this.tableSchema=wI(n),Y(this,ut,r.map(SI)),this.viewport=c||vy(),Y(this,ii,r.length),Y(this,Ur,u),this.config={...R(this,he),aggregations:t||R(this,he).aggregations,columns:n.map(d=>d.name),filter:s||R(this,he).filter,groupBy:i||R(this,he).groupBy,sort:a||R(this,he).sort},$t==null||$t(`columnMap: ${JSON.stringify(R(this,an))}`)}async subscribe({viewport:t=(c=>(c=this.viewport)!=null?c:vy())(),columns:n,aggregations:r,range:s,sort:i,groupBy:l,filter:a},u){var d;this.clientCallback=u,this.viewport=t,this.status="subscribed",this.lastRangeServed={from:0,to:0},r||n||a||l||i?(s&&Y(this,je,s),this.config={...R(this,he),aggregations:r||R(this,he).aggregations,columns:n||R(this,he).columns,filter:a||R(this,he).filter,groupBy:l||R(this,he).groupBy,sort:i||R(this,he).sort}):((d=this.clientCallback)==null||d.call(this,{...R(this,he),type:"subscribed",clientViewportId:this.viewport,range:R(this,je),tableSchema:this.tableSchema}),this.clientCallback({clientViewportId:this.viewport,mode:"size-only",type:"viewport-update",size:R(this,ut).length}),s?this.range=s:R(this,je)!==xy&&this.sendRowsToClient())}unsubscribe(){console.log("unsubscribe noop")}suspend(){return console.log("noop"),this}resume(){return console.log("resume noop"),this}disable(){return console.log("disable noop"),this}enable(){return console.log("enable noop"),this}select(t){$t==null||$t(`select ${JSON.stringify(t)}`),this.selectedRows=t,this.setRange(ri(R(this,je)),!0)}openTreeNode(t){this.openTreeNodes.push(t),this.processedData=Sd(this.openTreeNodes,R(this,ut),R(this,he).groupBy,R(this,an),this.groupMap,this.processedData),this.setRange(ri(R(this,je)),!0)}closeTreeNode(t){this.openTreeNodes=this.openTreeNodes.filter(n=>n!==t),this.processedData&&(this.processedData=my(t,this.processedData),this.setRange(ri(R(this,je)),!0))}get data(){return R(this,ut)}get currentData(){var t;return(t=this.processedData)!=null?t:R(this,ut)}get config(){return R(this,he)}set config(t){var n;if(Jl(R(this,he),t)){if(t){let r=R(this,he),s=(n=t==null?void 0:t.filter)!=null&&n.filter&&(t==null?void 0:t.filter.filterStruct)===void 0?{...t,filter:{filter:t.filter.filter,filterStruct:$o(t.filter.filter)}}:t;Y(this,he,Yl(s));let i;if(Bb(t)){let{filter:l,filterStruct:a=$o(l)}=t.filter;if(a){let u=aa(R(this,an),a);i=R(this,ut).filter(u)}else throw Error("filter must include filterStruct")}if(zb(t)&&(i=yy(i!=null?i:R(this,ut),t.sort,R(this,an))),this.openTreeNodes.length>0&&Zc(r,t)&&(R(this,he).groupBy.length===0?this.openTreeNodes.length=0:console.log("adjust the openTReeNodes groupBy changed ",{originalGroupBy:r.groupBy,newGroupBy:s.groupBy})),Vb(t)){let[l,a]=by(i!=null?i:R(this,ut),t.groupBy,R(this,an));this.groupMap=a,i=l,this.openTreeNodes.length>0&&(i=Sd(this.openTreeNodes,R(this,ut),R(this,he).groupBy,R(this,an),this.groupMap,i))}this.processedData=i==null?void 0:i.map((l,a)=>{let u=l.slice();return u[0]=a,u[1]=a,u})}this.setRange(ri(R(this,je)),!0),this.emit("config",R(this,he))}}get selectedRowsCount(){return R(this,ca)}get size(){return R(this,ii)}get range(){return R(this,je)}set range(t){(t.from!==R(this,je).from||t.to!==R(this,je).to)&&this.setRange(t)}setRange(t,n=!1){Y(this,je,t),this.keys.reset(t),this.sendRowsToClient(n)}sendRowsToClient(t=!1){var i,l;let n=this.rangeChangeRowset==="delta"&&!t?xI(this.lastRangeServed,R(this,je)):R(this,je),r=(i=this.processedData)!=null?i:R(this,ut),s=r.slice(n.from,n.to).map(a=>TI(a,this.keys,this.selectedRows));(l=this.clientCallback)==null||l.call(this,{clientViewportId:this.viewport,mode:"batch",rows:s,size:r.length,type:"viewport-update"}),this.lastRangeServed=R(this,je)}get columns(){return R(this,he).columns}set columns(t){this.config={...R(this,he),columns:t}}get aggregations(){return R(this,he).aggregations}set aggregations(t){var s;Y(this,he,{...R(this,he),aggregations:t});let n=(s=this.processedData)!=null?s:R(this,ut),r=R(this,ut);dy(t,n,R(this,he).groupBy,r,R(this,an),this.groupMap),this.setRange(ri(R(this,je)),!0),this.emit("config",R(this,he))}get sort(){return R(this,he).sort}set sort(t){console.log("set sort",{sort:t}),$t==null||$t(`sort ${JSON.stringify(t)}`),this.config={...R(this,he),sort:t}}get filter(){return R(this,he).filter}set filter(t){$t==null||$t(`filter ${JSON.stringify(t)}`),this.config={...R(this,he),filter:t}}get groupBy(){return R(this,he).groupBy}set groupBy(t){this.config={...R(this,he),groupBy:t}}get title(){return R(this,Ur)}set title(t){Y(this,Ur,t)}get _clientCallback(){return this.clientCallback}createLink({parentVpId:t,link:{fromColumn:n,toColumn:r}}){console.log("create link",{parentVpId:t,fromColumn:n,toColumn:r})}removeLink(){console.log("remove link")}findRow(t){let n=R(this,ut)[t];if(n)return n;throw`no row found for key ${t}`}updateRow(t,n,r){let s=this.findRow(parseInt(t));console.log({row:s,colName:n,value:r})}applyEdit(t,n,r){return console.log(`ArrayDataSource applyEdit ${t} ${n} ${r}`),!0}async menuRpcCall(t){return new Promise(n=>{let{type:r}=t;switch(r){case"VP_EDIT_CELL_RPC":{let{rowKey:s,field:i,value:l}=t;try{this.updateRow(s,i,l),n(void 0)}catch(a){n({error:String(a),type:"VP_EDIT_RPC_REJECT"})}}break;default:n(void 0)}})}};si=new WeakMap,an=new WeakMap,he=new WeakMap,ut=new WeakMap,je=new WeakMap,ca=new WeakMap,ii=new WeakMap,Ur=new WeakMap;import{EventEmitter as EI,isSelected as MI,jsonToDataSourceRows as RI,KeySet as DI,metadataKeys as PI,uuid as Sy}from"@vuu-ui/vuu-utils";var kI={columns:[],key:"",table:{module:"",table:""}},{DEPTH:Gr,IDX:wy,IS_EXPANDED:II,IS_LEAF:LI,KEY:Dy,SELECTED:Ty}=PI,Ey=(o,e)=>{let[t]=o,n=o.slice();return n[1]=e.keyFor(t),n},io,lo,Rt,ao,uo,Cn,da,pa,co,qr,My=class extends EI{constructor({aggregations:t,data:n,filter:r,groupBy:s,sort:i,title:l,viewport:a}){super();this.status="initialising";this.expandedRows=new Set;this.visibleRows=[];ce(this,io,[]);ce(this,lo,[]);ce(this,Rt,void 0);ce(this,ao,{filter:""});ce(this,uo,[]);ce(this,Cn,{from:0,to:0});ce(this,da,0);ce(this,pa,0);ce(this,co,{sortDefs:[]});ce(this,qr,void 0);this.keys=new DI(R(this,Cn));if(!n)throw Error("JsonDataSource constructor called without data");[this.columnDescriptors,Xh(this,Rt)._]=RI(n),this.visibleRows=R(this,Rt).filter(u=>u[Gr]===0).map((u,c)=>[c,c].concat(u.slice(2))),this.viewport=a||Sy(),t&&Y(this,io,t),this.columnDescriptors&&Y(this,lo,this.columnDescriptors.map(u=>u.name)),r&&Y(this,ao,r),s&&Y(this,uo,s),i&&Y(this,co,i),Y(this,qr,l)}async subscribe({viewport:t=(c=>(c=this.viewport)!=null?c:Sy())(),columns:n,aggregations:r,range:s,sort:i,groupBy:l,filter:a},u){var d;this.clientCallback=u,console.log(`subscribe range ${s==null?void 0:s.from} ${s==null?void 0:s.to}`),r&&Y(this,io,r),n&&Y(this,lo,n),a&&Y(this,ao,a),l&&Y(this,uo,l),s&&Y(this,Cn,s),i&&Y(this,co,i),this.status==="initialising"&&(this.viewport=t,this.status="subscribed",(d=this.clientCallback)==null||d.call(this,{aggregations:R(this,io),type:"subscribed",clientViewportId:this.viewport,columns:R(this,lo),filter:R(this,ao),groupBy:R(this,uo),range:R(this,Cn),sort:R(this,co),tableSchema:kI}),this.clientCallback({clientViewportId:this.viewport,mode:"size-only",type:"viewport-update",size:this.visibleRows.length}))}unsubscribe(){console.log("noop")}suspend(){return console.log("noop"),this}resume(){return console.log("noop"),this}disable(){return console.log("noop"),this}enable(){return console.log("noop"),this}select(t){var r;let n=[];for(let s of R(this,Rt)){let{[wy]:i,[Ty]:l}=s,a=l===1,u=MI(t,i);if(u!==a){let c=s.slice();c[Ty]=u?1:0,R(this,Rt)[i]=c,n.push(c)}}n.length>0&&((r=this.clientCallback)==null||r.call(this,{clientViewportId:this.viewport,mode:"update",type:"viewport-update",rows:n}))}openTreeNode(t){var s;this.expandedRows.add(t),this.visibleRows=Ry(R(this,Rt),this.expandedRows);let{from:n,to:r}=R(this,Cn);(s=this.clientCallback)==null||s.call(this,{clientViewportId:this.viewport,mode:"batch",rows:this.visibleRows.slice(n,r).map(i=>Ey(i,this.keys)),size:this.visibleRows.length,type:"viewport-update"}),console.log(this.expandedRows)}closeTreeNode(t,n=!1){if(this.expandedRows.delete(t),n)for(let r of this.expandedRows.keys())r.startsWith(t)&&this.expandedRows.delete(r);this.visibleRows=Ry(R(this,Rt),this.expandedRows),this.sendRowsToClient()}get config(){}get selectedRowsCount(){return R(this,da)}get size(){return R(this,pa)}get range(){return R(this,Cn)}set range(t){Y(this,Cn,t),this.keys.reset(t),requestAnimationFrame(()=>{this.sendRowsToClient()})}sendRowsToClient(){var r;let{from:t,to:n}=R(this,Cn);(r=this.clientCallback)==null||r.call(this,{clientViewportId:this.viewport,mode:"batch",rows:this.visibleRows.slice(t,n).map(s=>Ey(s,this.keys)),size:this.visibleRows.length,type:"viewport-update"})}get columns(){return R(this,lo)}set columns(t){Y(this,lo,t),console.log(`ArrayDataSource setColumns ${t.join(",")}`)}get aggregations(){return R(this,io)}set aggregations(t){Y(this,io,t)}get sort(){return R(this,co)}set sort(t){Y(this,co,t)}get filter(){return R(this,ao)}set filter(t){Y(this,ao,t),console.log(`RemoteDataSource ${JSON.stringify(t)}`)}get groupBy(){return R(this,uo)}set groupBy(t){Y(this,uo,t)}get title(){return R(this,qr)}set title(t){Y(this,qr,t)}createLink({parentVpId:t,link:{fromColumn:n,toColumn:r}}){console.log("create link",{parentVpId:t,fromColumn:n,toColumn:r})}removeLink(){console.log("remove link")}async menuRpcCall(t){console.log("rmenuRpcCall",{rpcRequest:t})}applyEdit(t,n,r){return console.log(`ArrayDataSource applyEdit ${t} ${n} ${r}`),!0}getChildRows(t){let n=R(this,Rt).find(s=>s[Dy]===t);if(n){let{[wy]:s,[Gr]:i}=n,l=s+1,a=[];do{let{[Gr]:u}=R(this,Rt)[l];if(u===i+1)a.push(R(this,Rt)[l]);else if(u<=i)break;l+=1}while(l<R(this,Rt).length);return a}else console.warn(`JsonDataSource getChildRows row not found for key ${t}`);let r=t.split("|").slice(1);return console.log({sections:r,parentRow:n}),[]}getRowsAtDepth(t,n=!0){return(n?this.visibleRows:R(this,Rt)).filter(s=>s[Gr]===t)}};io=new WeakMap,lo=new WeakMap,Rt=new WeakMap,ao=new WeakMap,uo=new WeakMap,Cn=new WeakMap,da=new WeakMap,pa=new WeakMap,co=new WeakMap,qr=new WeakMap;function Ry(o,e){let t=[],n={value:0};for(let r=0;r<o.length;r++){let s=o[r],{[Gr]:i,[Dy]:l,[LI]:a}=s,u=e.has(l);if(t.push(AI(s,n,u)),!a&&!u)do r+=1;while(r<o.length-1&&o[r+1][Gr]>i)}return t}var AI=(o,e,t)=>{let n=o.slice();return n[0]=e.value,n[1]=e.value,t&&(n[II]=!0),e.value+=1,n};import{debounce as Py,EventEmitter as OI,itemsOrOrderChanged as NI,logger as HI,throttle as FI,uuid as VI}from"@vuu-ui/vuu-utils";var{info:xt}=HI("RemoteDataSource"),re,fa,Qr,_n,li,jr,_o,wd=class extends OI{constructor({bufferSize:t=100,aggregations:n,columns:r,filter:s,groupBy:i,sort:l,table:a,title:u,viewport:c,visualLink:d}){super();this.server=null;this.status="initialising";ce(this,re,Xl);ce(this,fa,[]);ce(this,Qr,"throttle");ce(this,_n,{from:0,to:0});ce(this,li,0);ce(this,jr,0);ce(this,_o,void 0);this.handleMessageFromServer=t=>{var n,r;if(t.type==="subscribed")this.status="subscribed",(n=this.clientCallback)==null||n.call(this,t);else if(t.type==="disabled")this.status="disabled";else if(t.type==="enabled")this.status="enabled";else{if(Wb(t))return;t.type==="debounce-begin"?this.optimize="debounce":(t.type==="viewport-update"&&t.size!==void 0&&t.size!==R(this,jr)&&(Y(this,jr,t.size),this.emit("resize",t.size)),this.configChangePending&&this.setConfigPending(),(r=this.clientCallback)==null||r.call(this,t),this.optimize==="debounce"&&this.revertDebounce())}};this.revertDebounce=Py(()=>{this.optimize="throttle"},100);this.rawRangeRequest=t=>{this.viewport&&this.server&&this.server.send({viewport:this.viewport,type:"setViewRange",range:t})};this.debounceRangeRequest=Py(t=>{this.viewport&&this.server&&this.server.send({viewport:this.viewport,type:"setViewRange",range:t})},50);this.throttleRangeRequest=FI(t=>{this.viewport&&this.server&&this.server.send({viewport:this.viewport,type:"setViewRange",range:t})},80);if(!a)throw Error("RemoteDataSource constructor called without table");this.bufferSize=t,this.table=a,this.viewport=c,Y(this,re,{...R(this,re),aggregations:n||R(this,re).aggregations,columns:r||R(this,re).columns,filter:s||R(this,re).filter,groupBy:i||R(this,re).groupBy,sort:l||R(this,re).sort,visualLink:d||R(this,re).visualLink}),Y(this,_o,u),this.rangeRequest=this.throttleRangeRequest}async subscribe({viewport:t=(c=>(c=this.viewport)!=null?c:VI())(),columns:n,aggregations:r,range:s,sort:i,groupBy:l,filter:a},u){var p;if(this.clientCallback=u,(r||n||a||l||i)&&Y(this,re,{...R(this,re),aggregations:r||R(this,re).aggregations,columns:n||R(this,re).columns,filter:a||R(this,re).filter,groupBy:l||R(this,re).groupBy,sort:i||R(this,re).sort}),s&&Y(this,_n,s),this.status!=="initialising")return;this.status="subscribing",this.viewport=t,this.server=await sd();let{bufferSize:d}=this;(p=this.server)==null||p.subscribe({...R(this,re),bufferSize:d,viewport:t,table:this.table,range:R(this,_n),title:R(this,_o)},this.handleMessageFromServer)}unsubscribe(){var t,n;xt==null||xt(`unsubscribe #${this.viewport}`),this.viewport&&((t=this.server)==null||t.unsubscribe(this.viewport)),(n=this.server)==null||n.destroy(this.viewport),this.removeAllListeners()}suspend(){var t;return xt==null||xt(`suspend #${this.viewport}, current status ${this.status}`),this.viewport&&(this.status="suspended",(t=this.server)==null||t.send({type:"suspend",viewport:this.viewport})),this}resume(){var t;return xt==null||xt(`resume #${this.viewport}, current status ${this.status}`),this.viewport&&(this.status==="disabled"||this.status==="disabling"?this.enable():this.status==="suspended"&&((t=this.server)==null||t.send({type:"resume",viewport:this.viewport}),this.status="subscribed")),this}disable(){var t;return xt==null||xt(`disable #${this.viewport}, current status ${this.status}`),this.viewport&&(this.status="disabling",(t=this.server)==null||t.send({viewport:this.viewport,type:"disable"})),this}enable(){var t;return xt==null||xt(`enable #${this.viewport}, current status ${this.status}`),this.viewport&&(this.status==="disabled"||this.status==="disabling")&&(this.status="enabling",(t=this.server)==null||t.send({viewport:this.viewport,type:"enable"})),this}select(t){var n;Y(this,li,t.length),this.viewport&&((n=this.server)==null||n.send({viewport:this.viewport,type:"select",selected:t}))}openTreeNode(t){var n;this.viewport&&((n=this.server)==null||n.send({viewport:this.viewport,type:"openTreeNode",key:t}))}closeTreeNode(t){var n;this.viewport&&((n=this.server)==null||n.send({viewport:this.viewport,type:"closeTreeNode",key:t}))}get optimize(){return R(this,Qr)}set optimize(t){if(t!==R(this,Qr)){switch(Y(this,Qr,t),t){case"none":this.rangeRequest=this.rawRangeRequest;break;case"debounce":this.rangeRequest=this.debounceRangeRequest;break;case"throttle":this.rangeRequest=this.throttleRangeRequest;break}this.emit("optimize",t)}}get selectedRowsCount(){return R(this,li)}get size(){return R(this,jr)}get range(){return R(this,_n)}set range(t){(t.from!==R(this,_n).from||t.to!==R(this,_n).to)&&(Y(this,_n,t),this.rangeRequest(t))}get config(){return R(this,re)}set config(t){var n,r;if(Jl(R(this,re),t)&&t){let s=(n=t==null?void 0:t.filter)!=null&&n.filter&&(t==null?void 0:t.filter.filterStruct)===void 0?{...t,filter:{filter:t.filter.filter,filterStruct:$o(t.filter.filter)}}:t;Y(this,re,Yl(s)),R(this,re)&&this.viewport&&this.server&&t&&((r=this.server)==null||r.send({viewport:this.viewport,type:"config",config:R(this,re)})),this.emit("config",R(this,re))}}get columns(){return R(this,re).columns}set columns(t){if(Y(this,re,{...R(this,re),columns:t}),this.viewport){let n={viewport:this.viewport,type:"setColumns",columns:t};this.server&&this.server.send(n)}this.emit("config",R(this,re))}get aggregations(){return R(this,re).aggregations}set aggregations(t){var n;Y(this,re,{...R(this,re),aggregations:t}),this.viewport&&((n=this.server)==null||n.send({viewport:this.viewport,type:"aggregate",aggregations:t})),this.emit("config",R(this,re))}get sort(){return R(this,re).sort}set sort(t){if(Y(this,re,{...R(this,re),sort:t}),this.viewport){let n={viewport:this.viewport,type:"sort",sort:t};this.server&&this.server.send(n)}this.emit("config",R(this,re))}get filter(){return R(this,re).filter}set filter(t){if(Y(this,re,{...R(this,re),filter:t}),this.viewport){let n={viewport:this.viewport,type:"filter",filter:t};this.server&&this.server.send(n)}this.emit("config",R(this,re))}get groupBy(){return R(this,re).groupBy}set groupBy(t){var n;if(NI(this.groupBy,t)){let r=R(this,fa).length>0;if(Y(this,re,{...R(this,re),groupBy:t}),this.viewport){let s={viewport:this.viewport,type:"groupBy",groupBy:R(this,re).groupBy};this.server&&this.server.send(s)}!r&&t.length>0&&this.viewport&&((n=this.clientCallback)==null||n.call(this,{clientViewportId:this.viewport,mode:"batch",type:"viewport-update",size:0,rows:[]})),this.emit("config",R(this,re)),this.setConfigPending({groupBy:t})}}get title(){return R(this,_o)}set title(t){var n;Y(this,_o,t),this.viewport&&t&&((n=this.server)==null||n.send({type:"setTitle",title:t,viewport:this.viewport}))}get visualLink(){return R(this,re).visualLink}set visualLink(t){var n,r;if(Y(this,re,{...R(this,re),visualLink:t}),t){let{parentClientVpId:s,link:{fromColumn:i,toColumn:l}}=t;this.viewport&&((n=this.server)==null||n.send({viewport:this.viewport,type:"createLink",parentClientVpId:s,parentColumnName:l,childColumnName:i}))}else this.viewport&&((r=this.server)==null||r.send({type:"removeLink",viewport:this.viewport}));this.emit("config",R(this,re))}setConfigPending(t){let n=this.configChangePending;this.configChangePending=t,t!==void 0?this.emit("config",t,!1):this.emit("config",n,!0)}async menuRpcCall(t){var n;if(this.viewport)return(n=this.server)==null?void 0:n.rpcCall({vpId:this.viewport,...t})}applyEdit(t,n,r){return console.log(`ArrayDataSource applyEdit ${t} ${n} ${r}`),!0}};re=new WeakMap,fa=new WeakMap,Qr=new WeakMap,_n=new WeakMap,li=new WeakMap,jr=new WeakMap,_o=new WeakMap;import{useCallback as poe,useEffect as foe,useState as hoe}from"react";import{useCallback as BI}from"react";var ky={type:"RPC_CALL",service:"TypeAheadRpcHandler"};var ha=()=>BI(async e=>{let t=e.length===2?{method:"getUniqueFieldValues",params:e,...ky}:{method:"getUniqueFieldValuesStartingWith",params:e,...ky};return await Xb(t)},[]);import{getRowRecord as Toe,isGroupMenuItemDescriptor as Eoe,metadataKeys as zI}from"@vuu-ui/vuu-utils";import{useCallback as Roe}from"react";var{KEY:Doe}=zI;var $I=o=>o.type==="vuu-links";var WI=o=>o.type==="vuu-menu",Td=o=>WI(o)||$I(o),Ed=o=>o.type==="vuu-link-created"||o.type==="vuu-link-removed";import{useCallback as Ioe,useEffect as Loe,useState as Aoe}from"react";import{getFullRange as Qoe,metadataKeys as _I,WindowRange as joe}from"@vuu-ui/vuu-utils";import{useCallback as Xoe,useEffect as Yoe,useMemo as Zoe,useRef as ere,useState as tre}from"react";var{SELECTED:nre}=_I;import{useCallback as lre,useRef as are}from"react";import{withinRange as mre}from"@vuu-ui/vuu-utils";import{useCallback as vre,useEffect as Cre,useLayoutEffect as Sre,useMemo as wre,useRef as Tre}from"react";function KI(o,...e){let t=new Set(o);for(let n of e)for(let r of n)t.add(r);return t}var Iy="ArrowUp",Ly="ArrowDown",Ay="ArrowLeft",Oy="ArrowRight";var Ny="Home",Hy="End",Fy="PageUp",Vy="PageDown";var UI=new Set(["Enter","Delete"," "]),GI=new Set(["Tab"]),qI=new Set(["ArrowRight","ArrowLeft"]),QI=new Set([Ny,Hy,Fy,Vy,Ly,Ay,Oy,Iy]),jI=new Set(["F1","F2","F3","F4","F5","F6","F7","F8","F9","F10","F11","F12"]),cre=KI(UI,QI,qI,jI,GI);import{isValidNumber as Vre}from"@vuu-ui/vuu-utils";import{useCallback as $re,useMemo as Wre,useRef as _re,useState as Kre}from"react";import{useCallback as Ire,useEffect as Lre,useRef as Are}from"react";var JI=new Map,XI=(o,e,t)=>{switch(t){case"height":return e.height;case"clientHeight":return o.clientHeight;case"clientWidth":return o.clientWidth;case"contentHeight":return e.contentHeight;case"contentWidth":return e.contentWidth;case"scrollHeight":return Math.ceil(o.scrollHeight);case"scrollWidth":return Math.ceil(o.scrollWidth);case"width":return e.width;default:return 0}},Ore=new ResizeObserver(o=>{for(let e of o){let{target:t,borderBoxSize:n,contentBoxSize:r}=e,s=JI.get(t);if(s){let[{blockSize:i,inlineSize:l}]=n,[{blockSize:a,inlineSize:u}]=r,{onResize:c,measurements:d}=s,p=!1;for(let[f,h]of Object.entries(d)){let g=XI(t,{height:i,width:l,contentHeight:a,contentWidth:u},f);g!==h&&(p=!0,d[f]=g)}p&&c&&c(d)}}});import{deselectItem as YI,isRowSelected as ZI,metadataKeys as e1,selectItem as t1}from"@vuu-ui/vuu-utils";import{useCallback as n1,useRef as By}from"react";var{IDX:o1}=e1,r1=[],Md=({selectionModel:o,onSelectionChange:e})=>{let t=By(-1),n=By(r1);return n1((s,i,l)=>{let{[o1]:a}=s,{current:u}=t,{current:c}=n,p=(ZI(s)?YI:t1)(o,c,a,i,l,u);n.current=p,t.current=a,e&&e(p)},[e,o])};import{applyFilterToColumns as Yre,applyGroupByToColumns as Zre,applySortToColumns as ese,findColumn as tse,getCellRenderer as nse,getColumnName as ose,getTableHeadings as rse,getValueFormatter as sse,isFilteredColumn as ise,isGroupColumn as lse,isPinned as ase,isTypeDescriptor as use,metadataKeys as s1,updateColumn as cse,sortPinnedColumns as dse,stripFilterFromColumns as pse,moveItemDeprecated as fse,getDefaultAlignment as hse}from"@vuu-ui/vuu-utils";import{useReducer as bse}from"react";var yse=s1.count;import{useCallback as Cse,useRef as Sse}from"react";import{useCallback as i1,useMemo as ma,useRef as l1}from"react";import{actualRowPositioning as a1,virtualRowPositioning as u1}from"@vuu-ui/vuu-utils";var c1=15e5,d1={contentHeight:0,contentWidth:0,getRowAtPosition:()=>-1,getRowOffset:()=>-1,horizontalScrollbarHeight:0,maxScrollContainerScrollHorizontal:0,maxScrollContainerScrollVertical:0,pinnedWidthLeft:0,pinnedWidthRight:0,rowCount:0,setPctScrollTop:()=>{},totalHeaderHeight:0,verticalScrollbarWidth:0,viewportBodyHeight:0},p1=o=>{let e=0,t=0,n=0;for(let r of o){let{hidden:s,pin:i,width:l}=r,a=s?0:l;i==="left"?e+=a:i==="right"?t+=a:n+=a}return{pinnedWidthLeft:e+4,pinnedWidthRight:t+4,unpinnedWidth:n}},Rd=({columns:o,headerHeight:e,headings:t,rowCount:n,rowHeight:r,size:s})=>{let i=l1(0),a=Math.min(n,c1)*r,c=n*r-a,{pinnedWidthLeft:d,pinnedWidthRight:p,unpinnedWidth:f}=ma(()=>p1(o),[o]),[h,g]=ma(()=>a1(r),[r]),[m,y]=ma(()=>c?u1(r,c,i):[h,g],[g,h,c,r]),w=i1(v=>{i.current=v},[]);return ma(()=>{var v;if(s){let x=t.length,S=15,b=d+f+p,C=b>s.width?S:0,M=e*(1+x),D=a-(((v=s==null?void 0:s.height)!=null?v:0)-C)+M,E=b-s.width+d,O=(s.height-e)/r,T=Number.isInteger(O)?O+1:Math.ceil(O),P=s.height-M,L=a>P?S:0;return{contentHeight:a,getRowAtPosition:y,getRowOffset:m,horizontalScrollbarHeight:C,maxScrollContainerScrollHorizontal:E,maxScrollContainerScrollVertical:D,pinnedWidthLeft:d,pinnedWidthRight:p,rowCount:T,contentWidth:b,setPctScrollTop:w,totalHeaderHeight:M,verticalScrollbarWidth:L,viewportBodyHeight:P}}else return d1},[s,t.length,d,f,p,a,e,r,y,m,w])};import{getColumnsInViewport as Ise,itemsChanged as Lse}from"@vuu-ui/vuu-utils";import{useCallback as Nse,useEffect as Hse,useMemo as Fse,useRef as Vse,useState as Bse}from"react";var{KEY:xie,IS_EXPANDED:vie,IS_LEAF:Cie}=f1;import Fie from"classnames";import{isDataLoading as $ie}from"@vuu-ui/vuu-utils";import{jsx as _ie,jsxs as Kie}from"react/jsx-runtime";import h1 from"classnames";import{isJsonAttribute as m1,metadataKeys as g1,registerComponent as b1}from"@vuu-ui/vuu-utils";import{jsx as Pd,jsxs as S1}from"react/jsx-runtime";var ai="vuuJsonCell",{IS_EXPANDED:y1,KEY:x1}=g1,v1=o=>{let e=o.lastIndexOf("|");return e===-1?"":o.slice(e+1)},C1=({column:o,row:e})=>{let{key:t}=o,n=e[t],r=!1;m1(n)&&(n=n.slice(0,-1),r=!0);let s=v1(e[x1]),i=h1({[`${ai}-name`]:s===n,[`${ai}-value`]:s!==n,[`${ai}-group`]:r});if(r){let l=e[y1]?"minus-box":"plus-box";return S1("span",{className:i,children:[Pd("span",{className:`${ai}-value`,children:n}),Pd("span",{className:`${ai}-toggle`,"data-icon":l})]})}else return n?Pd("span",{className:i,children:n}):null};b1("json",C1,"cell-renderer",{description:"JSON formatter",label:"JSON formatter",serverDataType:"json"});import nae from"classnames";import{useRef as rae}from"react";import{useCallback as kd,useRef as w1}from"react";import{jsx as E1}from"react/jsx-runtime";var zy=()=>{},T1="vuuColumnResizerNext",ui=({onDrag:o,onDragEnd:e=zy,onDragStart:t=zy})=>{let n=w1(0),r=kd(l=>{l.stopPropagation&&l.stopPropagation(),l.preventDefault&&l.preventDefault();let a=Math.round(l.clientX),u=a-n.current;n.current=a,u!==0&&o(l,u)},[o]),s=kd(l=>{window.removeEventListener("mouseup",s),window.removeEventListener("mousemove",r),e(l)},[e,r]),i=kd(l=>{t(l),n.current=Math.round(l.clientX),window.addEventListener("mouseup",s),window.addEventListener("mousemove",r),l.stopPropagation&&l.stopPropagation(),l.preventDefault&&l.preventDefault()},[t,r,s]);return E1("div",{className:T1,onMouseDown:i})};import{useCallback as Id,useRef as M1,useState as R1}from"react";var ci=({column:o,onResize:e,rootRef:t})=>{let n=M1(0),[r,s]=R1(!1),{name:i}=o,l=Id(()=>{if(console.log("onResizeStart"),e&&t.current){console.log("handleResizeStart");let{width:c}=t.current.getBoundingClientRect();n.current=Math.round(c),s(!0),e==null||e("begin",i)}},[i,e,t]),a=Id((c,d)=>{if(t.current&&e){let{width:p}=t.current.getBoundingClientRect(),f=Math.round(p)+d;f!==n.current&&f>0&&(e("resize",i,f),n.current=f)}},[i,e,t]),u=Id(()=>{e&&(e("end",i,n.current),setTimeout(()=>{s(!1)},80))},[i,e]);return{isResizing:r,onDrag:a,onDragStart:l,onDragEnd:u}};import{getColumnStyle as D1}from"@vuu-ui/vuu-utils";import P1 from"classnames";import{useMemo as k1}from"react";var Kn=(o,e,t)=>k1(()=>{let n=P1(e,{vuuPinFloating:o.pin==="floating",vuuPinLeft:o.pin==="left",vuuPinRight:o.pin==="right",vuuEndPin:t&&o.endPin,[`${e}-editable`]:o.editable,[`${e}-right`]:o.align==="right"}),r=D1(o);return{className:n,style:r}},[o,e,t]);import I1 from"classnames";import{useCallback as L1}from"react";import{jsx as A1,jsxs as O1}from"react/jsx-runtime";var $y="vuuColumnHeaderPill",Ko=({children:o,className:e,column:t,onRemove:n,removable:r,...s})=>{if(r&&typeof n!="function")throw Error("ColumnHeaderPill onRemove prop must be provided if Pill is removable");let i=L1(l=>{l.preventDefault(),l.stopPropagation(),n==null||n(t)},[t,n]);return O1("div",{...s,className:I1($y,e),children:[o,r?A1("span",{className:`${$y}-removeButton`,role:"button","data-icon":"cross",onClick:i}):null]})};import{jsx as Ld,jsxs as N1}from"react/jsx-runtime";var Ad=({column:o,...e})=>{let{name:t,sorted:n}=o,r=typeof n=="number"?n<0?"arrow-down":"arrow-up":n==="A"?"arrow-up":n==="D"?"arrow-down":void 0;return N1(Ko,{...e,column:o,children:[Ld("span",{className:"vuuGroupColumnPill-label",children:t}),r!==void 0?Ld("span",{"data-icon":r}):null,typeof n=="number"?Ld("span",{className:"vuuSortPosition",children:Math.abs(n)}):null]})};import{jsx as Wy,jsxs as H1}from"react/jsx-runtime";var _y=({column:o})=>{if(!o.sorted)return null;let e=typeof o.sorted=="number"?o.sorted<0?"arrow-down":"arrow-up":o.sorted==="A"?"arrow-up":"arrow-down";return H1(Ko,{column:o,children:[Wy("span",{"data-icon":e}),typeof o.sorted=="number"?Wy("span",{className:"vuuSortPosition",children:Math.abs(o.sorted)}):null]})};import{jsx as dae,jsxs as pae}from"react/jsx-runtime";import{createElement as cae}from"react";import F1 from"classnames";import{useCallback as V1,useRef as B1,useState as z1}from"react";import{jsx as Nd,jsxs as _1}from"react/jsx-runtime";import{createElement as W1}from"react";var Od="vuuTableNextGroupHeaderCell",$1=(o,e)=>o===e?o:e,ga=({column:o,className:e,onRemoveColumn:t,onResize:n,...r})=>{let s=B1(null),{isResizing:i,...l}=ci({column:o,onResize:n,rootRef:s}),[a,u]=z1(o.columns),{className:c,style:d}=Kn(o,Od,!0),p=a.length>1?{removable:!0,onRemove:t}:void 0,f=V1((h,g)=>{u(m=>{let y=m.slice(),[w]=y.splice(h,1);return g===-1?y.concat(w):(y.splice(g,0,w),y)})},[]);return on(()=>{u(h=>$1(h,o.columns))},[o.columns]),_1("div",{...r,className:F1(c,"vuuTableNextHeaderCell",e,{[`${Od}-pending`]:o.groupConfirmed===!1}),ref:s,role:"columnheader",style:d,children:[Nd(di,{allowDragDrop:!0,className:`${Od}-inner`,height:24,onMoveItem:f,overflowPosition:"start",children:a.map(h=>W1(Ad,{...p,column:h,key:h.key}))}),Nd(Ko,{column:o,removable:!0,onRemove:t}),o.resizeable!==!1?Nd(ui,{...l}):null]})};import{useCallback as j1,useRef as J1}from"react";import K1 from"classnames";import{useCallback as Ky,useRef as U1,useState as G1}from"react";import{jsx as Q1}from"react/jsx-runtime";var q1=o=>{if(o){let{bottom:e,left:t}=o.getBoundingClientRect();return{x:t,y:e+6}}},Uy=({className:o,column:e,...t})=>{let n=U1(null),[r,s]=G1(!1),[i]=Bn(),l=Ky(()=>{s(!1)},[]),a=Ky(u=>{s(!0),i(u,"column-menu",{column:e,ContextMenuProps:{className:"vuuColumnMenuList",onClose:l,position:q1(n.current)}})},[e,l,i]);return Q1("span",{...t,className:K1("vuuTable-columnMenu",o,{"vuuTable-columnMenu-open":r}),"data-icon":"more-vert",onClick:a,ref:n})};import X1 from"classnames";import{jsx as ba,jsxs as Y1}from"react/jsx-runtime";var Hd="vuuTableNextHeaderCell",Gy=({className:o,column:e,onClick:t,onResize:n,...r})=>{var g;let s=J1(null),{isResizing:i,...l}=ci({column:e,onResize:n,rootRef:s}),a=j1(m=>{console.log(`click isResizing ${i}`),!i&&(t==null||t(m))},[i,t]),{className:u,style:c}=Kn(e,Hd,!0),d=ba(Uy,{column:e}),p=ba("div",{className:`${Hd}-label`,children:(g=e.label)!=null?g:e.name}),f=ba(_y,{column:e}),h=e.align==="right"?[f,p,d]:[d,p,f];return Y1("div",{...r,className:X1(u,o,{[`${Hd}-resizing`]:i}),onClick:a,ref:s,role:"columnheader",style:c,children:[...h,e.resizeable!==!1?ba(ui,{...l}):null]})};import{isGroupColumn as CV,metadataKeys as SV,notHidden as wV}from"@vuu-ui/vuu-utils";import XS from"classnames";import{useRef as TV}from"react";import{isGroupColumn as Jy,isJsonColumn as uL,isJsonGroup as cL,metadataKeys as dL,notHidden as pL,RowSelected as fL}from"@vuu-ui/vuu-utils";import hL from"classnames";import{memo as mL,useCallback as Xy}from"react";import{metadataKeys as Z1}from"@vuu-ui/vuu-utils";import{useCallback as eL}from"react";import{jsx as qy}from"react/jsx-runtime";var{IDX:tL}=Z1,nL="vuuTableNextCell",Qy=({column:o,columnMap:e,onDataEdited:t,row:n})=>{let{className:r,style:s}=Kn(o,nL),{CellRenderer:i,name:l,valueFormatter:a}=o,u=e[l],c=eL(d=>(t==null||t(n[tL],l,d),!0),[l,t,n]);return qy("div",{className:r,role:"cell",style:s,children:i?qy(i,{column:o,columnMap:e,onCommit:c,row:n}):a(n[u])})};import{getGroupValueAndOffset as oL,metadataKeys as rL}from"@vuu-ui/vuu-utils";import{useCallback as sL}from"react";import iL from"classnames";import{jsx as Vd,jsxs as aL}from"react/jsx-runtime";var{IS_LEAF:lL}=rL,Fd="vuuTableNextGroupCell",jy=({column:o,onClick:e,row:t})=>{let{columns:n}=o,[r,s]=oL(n,t),{className:i,style:l}=Kn(o,Fd),a=sL(d=>{e==null||e(d,o)},[o,e]),u=t[lL],c=Array(s).fill(0).map((d,p)=>Vd("span",{className:`${Fd}-spacer`},p));return aL("div",{className:iL(i,"vuuTableNextCell"),role:"cell",style:l,onClick:u?void 0:a,children:[c,u?null:Vd("span",{className:`${Fd}-toggle`,"data-icon":"triangle-right"}),Vd("span",{children:r})]})};import{jsx as Bd}from"react/jsx-runtime";import{createElement as xL}from"react";var{IDX:gL,IS_EXPANDED:bL,SELECTED:yL}=dL,po="vuuTableNextRow",zd=mL(({className:o,columnMap:e,columns:t,row:n,offset:r,onClick:s,onDataEdited:i,onToggleGroup:l,zebraStripes:a=!1,...u})=>{let{[gL]:c,[bL]:d,[yL]:p}=n,f=Xy(x=>{let S=x.shiftKey,b=x.ctrlKey||x.metaKey;s==null||s(n,S,b)},[s,n]),{True:h,First:g,Last:m}=fL,y=hL(po,o,{[`${po}-even`]:a&&c%2===0,[`${po}-expanded`]:d,[`${po}-selected`]:p&h,[`${po}-selectedStart`]:p&g,[`${po}-selectedEnd`]:p&m}),w={transform:`translate3d(0px, ${r}px, 0px)`},v=Xy((x,S)=>{(Jy(S)||cL(S,n))&&(x.stopPropagation(),l==null||l(n,S))},[l,n]);return xL("div",{...u,"aria-rowindex":n[0],key:`row-${n[0]}`,role:"row",className:y,onClick:f,style:w},Bd("span",{className:`${po}-selectionDecorator vuuStickyLeft`}),t.filter(pL).map(x=>{let S=Jy(x),b=uL(x);return Bd(S?jy:Qy,{column:x,columnMap:e,onClick:S||b?v:void 0,onDataEdited:i,row:n},x.key)}),Bd("span",{className:`${po}-selectionDecorator vuuStickyRight`}))});zd.displayName="Row";import{registerComponent as vL}from"@vuu-ui/vuu-utils";var CL=o=>typeof o=="string",SL=(o,e)=>CL(e)?e===""?!0:o.value==="lower"&&e.toLowerCase()!==e?"value must be all lowercase":o.value==="upper"&&e.toUpperCase()!==e?"value must be all uppercase":!0:"value must be a string";vL("vuu-case",SL,"data-edit-validator",{});import{registerComponent as wL}from"@vuu-ui/vuu-utils";var TL=o=>typeof o=="string",EL="value does not match expected pattern",ML=(o,e)=>{if(typeof o.value!="string")throw Error("Pattern validation rule must provide pattern");if(TL(e)){if(e==="")return!0;{let{message:t=EL}=o;return new RegExp(o.value).test(e)||t}}else return"value must be a string"};wL("vuu-pattern",ML,"data-edit-validator",{});import{DOWN1 as LL,DOWN2 as AL,isTypeDescriptor as OL,metadataKeys as NL,registerComponent as HL,UP1 as FL,UP2 as VL}from"@vuu-ui/vuu-utils";import BL from"classnames";import{getMovingValueDirection as RL,isTypeDescriptor as DL,isValidNumber as Yy}from"@vuu-ui/vuu-utils";import{useEffect as PL,useRef as kL}from"react";var IL=[void 0,void 0,void 0,void 0];function Zy(o,e,t){var d;let n=kL(),[r,s,i,l]=n.current||IL,{type:a}=t,u=DL(a)?(d=a.formatting)==null?void 0:d.decimals:void 0,c=o===r&&Yy(e)&&Yy(s)&&t===i?RL(e,l,s,u):"";return PL(()=>{n.current=[o,e,t,c]}),c}import{jsx as UL,jsxs as GL}from"react/jsx-runtime";var zL=String.fromCharCode(11014),$L=String.fromCharCode(11015),{KEY:WL}=NL,ya="vuuBackgroundCellDeprecated",pi={ArrowOnly:"arrow",BackgroundOnly:"bg-only",ArrowBackground:"arrow-bg"},_L=o=>OL(o)&&o.renderer&&"flashStyle"in o.renderer?o.renderer.flashStyle:pi.BackgroundOnly,KL=({column:o,row:e})=>{let{key:t,type:n,valueFormatter:r}=o,s=e[t],i=_L(n),l=Zy(e[WL],s,o),a=i===pi.ArrowOnly||i===pi.ArrowBackground?l===FL||l===VL?zL:l===LL||l===AL?$L:null:null,u=l?" "+l:"",c=BL(ya,u,{[`${ya}-arrowOnly`]:i===pi.ArrowOnly,[`${ya}-arrowBackground`]:i===pi.ArrowBackground});return GL("div",{className:c,tabIndex:-1,children:[UL("div",{className:`${ya}-flasher`,children:a}),r(e[o.key])]})};HL("background",KL,"cell-renderer",{description:"Background Cell renderer for VuuTable",label:"Background Cell (deprecated)",serverDataType:["long","int","double"]});import{isColumnTypeRenderer as qL,isTypeDescriptor as QL,isValidNumber as ex,registerComponent as jL}from"@vuu-ui/vuu-utils";import JL from"classnames";import{jsx as $d,jsxs as tx}from"react/jsx-runtime";var fi="vuuProgressCell",XL=({column:o,columnMap:e,row:t})=>{let{type:n}=o,r=t[o.key],s=!1,i=0;if(QL(n)&&qL(n.renderer)){let{associatedField:a}=n.renderer;if(a){let u=t[e[a]];if(typeof ex(r)&&ex(u))i=Math.min(Math.round(r/u*100),100),i=Math.min(Math.round(r/u*100),100),s=isFinite(i);else{let c=parseFloat(r);if(Number.isFinite(c)){let d=parseFloat(u);Number.isFinite(d)&&(i=Math.min(Math.round(c/d*100),100),s=isFinite(i))}}}else throw Error("ProgressCell associatedField is required to render")}let l=JL(fi,{});return tx("div",{className:l,tabIndex:-1,children:[s?tx("span",{className:`${fi}-track`,children:[$d("span",{className:`${fi}-bg`}),$d("span",{className:`${fi}-bar`,style:{"--progress-bar-pct":`-${100-i}%`}})]}):null,$d("span",{className:`${fi}-text`,children:`${i} %`})]})};jL("vuu.progress",XL,"cell-renderer",{description:"Progress formatter",label:"Progress formatter",serverDataType:["long","int","double"]});import{DOWN1 as oA,DOWN2 as rA,isTypeDescriptor as sA,metadataKeys as iA,registerComponent as lA,UP1 as aA,UP2 as uA}from"@vuu-ui/vuu-utils";import cA from"classnames";import{getMovingValueDirection as YL,isTypeDescriptor as ZL,isValidNumber as nx}from"@vuu-ui/vuu-utils";import{useEffect as eA,useRef as tA}from"react";var nA=[void 0,void 0,void 0,void 0];function ox(o,e,t){var d;let n=tA(),[r,s,i,l]=n.current||nA,{type:a}=t,u=ZL(a)?(d=a.formatting)==null?void 0:d.decimals:void 0,c=o===r&&nx(e)&&nx(s)&&t===i?YL(e,l,s,u):"";return eA(()=>{n.current=[o,e,t,c]}),c}import{jsx as gA,jsxs as bA}from"react/jsx-runtime";var dA=String.fromCharCode(11014),pA=String.fromCharCode(11015),{KEY:fA}=iA,xa="vuuBackgroundCell",hi={ArrowOnly:"arrow",BackgroundOnly:"bg-only",ArrowBackground:"arrow-bg"},hA=o=>sA(o)&&o.renderer&&"flashStyle"in o.renderer?o.renderer.flashStyle:hi.BackgroundOnly,mA=({column:o,row:e})=>{let{key:t,type:n,valueFormatter:r}=o,s=e[t],i=hA(n),l=ox(e[fA],s,o),a=i===hi.ArrowOnly||i===hi.ArrowBackground?l===aA||l===uA?dA:l===oA||l===rA?pA:null:null,u=l?" "+l:"",c=cA(xa,u,{[`${xa}-arrowOnly`]:i===hi.ArrowOnly,[`${xa}-arrowBackground`]:i===hi.ArrowBackground});return bA("div",{className:c,tabIndex:-1,children:[gA("div",{className:`${xa}-flasher`,children:a}),r(e[o.key])]})};console.log("register BackgroundCellNext");lA("background-next",mA,"cell-renderer",{description:"Change background color of cell when value changes",label:"Background Flash",serverDataType:["long","int","double"]});import{Checkbox as Bce}from"@salt-ds/core";import{Switch as $ce}from"@salt-ds/lab";import _ce from"classnames";import{useCallback as qce}from"react";import{jsx as Jce,jsxs as Xce}from"react/jsx-runtime";import{getDefaultAlignment as Dme,isCalculatedColumn as Pme}from"@vuu-ui/vuu-utils";import{Button as Ime,FormField as Lme,FormFieldLabel as Ame,ToggleButton as Ome,ToggleButtonGroup as Nme}from"@salt-ds/core";import{FormField as wde,FormFieldLabel as Tde}from"@salt-ds/core";import Mde from"classnames";import{useMemo as Pde}from"react";import{FormField as nde,FormFieldLabel as ode,Input as rde}from"@salt-ds/core";import{Switch as ide}from"@salt-ds/lab";import{getTypeSettingsFromColumn as ade}from"@vuu-ui/vuu-utils";import{useCallback as fde,useState as hde}from"react";import{jsx as gde,jsxs as bde}from"react/jsx-runtime";import{jsx as Lde,jsxs as Ade}from"react/jsx-runtime";import{getRegisteredCellRenderers as yA,isColumnTypeRenderer as zde,isTypeDescriptor as $de,isValidColumnAlignment as Wde,isValidPinLocation as _de,setCalculatedColumnName as Kde,updateColumnRenderer as Ude,updateColumnType as Gde}from"@vuu-ui/vuu-utils";import{useCallback as jde,useMemo as Jde,useRef as Xde,useState as Yde}from"react";var Zde=[{description:"Default formatter for columns with data type double",label:"Default Renderer (data type double)",name:"default-double"},...yA("double")];import{getCalculatedColumnExpression as nme,getCalculatedColumnName as ome,getCalculatedColumnType as rme}from"@vuu-ui/vuu-utils";import{Button as ime,FormField as lme,FormFieldLabel as ame,Input as ume}from"@salt-ds/core";import{useCallback as pme,useRef as fme}from"react";var me=class{lineAt(e){if(e<0||e>this.length)throw new RangeError(`Invalid position ${e} in document of length ${this.length}`);return this.lineInner(e,!1,1,0)}line(e){if(e<1||e>this.lines)throw new RangeError(`Invalid line number ${e} in ${this.lines}-line document`);return this.lineInner(e,!0,1,0)}replace(e,t,n){let r=[];return this.decompose(0,e,r,2),n.length&&n.decompose(0,n.length,r,3),this.decompose(t,this.length,r,1),Wt.from(r,this.length-(t-e)+n.length)}append(e){return this.replace(this.length,this.length,e)}slice(e,t=this.length){let n=[];return this.decompose(e,t,n,0),Wt.from(n,t-e)}eq(e){if(e==this)return!0;if(e.length!=this.length||e.lines!=this.lines)return!1;let t=this.scanIdentical(e,1),n=this.length-this.scanIdentical(e,-1),r=new qo(this),s=new qo(e);for(let i=t,l=t;;){if(r.next(i),s.next(i),i=0,r.lineBreak!=s.lineBreak||r.done!=s.done||r.value!=s.value)return!1;if(l+=r.value.length,r.done||l>=n)return!0}}iter(e=1){return new qo(this,e)}iterRange(e,t=this.length){return new wa(this,e,t)}iterLines(e,t){let n;if(e==null)n=this.iter();else{t==null&&(t=this.lines+1);let r=this.line(e).from;n=this.iterRange(r,Math.max(r,t==this.lines+1?this.length:t<=1?0:this.line(t-1).to))}return new Ta(n)}toString(){return this.sliceString(0)}toJSON(){let e=[];return this.flatten(e),e}constructor(){}static of(e){if(e.length==0)throw new RangeError("A document must have at least one line");return e.length==1&&!e[0]?me.empty:e.length<=32?new Oe(e):Wt.from(Oe.split(e,[]))}},Oe=class extends me{constructor(e,t=xA(e)){super(),this.text=e,this.length=t}get lines(){return this.text.length}get children(){return null}lineInner(e,t,n,r){for(let s=0;;s++){let i=this.text[s],l=r+i.length;if((t?n:l)>=e)return new _d(r,l,n,i);r=l+1,n++}}decompose(e,t,n,r){let s=e<=0&&t>=this.length?this:new Oe(rx(this.text,e,t),Math.min(t,this.length)-Math.max(0,e));if(r&1){let i=n.pop(),l=Sa(s.text,i.text.slice(),0,s.length);if(l.length<=32)n.push(new Oe(l,i.length+s.length));else{let a=l.length>>1;n.push(new Oe(l.slice(0,a)),new Oe(l.slice(a)))}}else n.push(s)}replace(e,t,n){if(!(n instanceof Oe))return super.replace(e,t,n);let r=Sa(this.text,Sa(n.text,rx(this.text,0,e)),t),s=this.length+n.length-(t-e);return r.length<=32?new Oe(r,s):Wt.from(Oe.split(r,[]),s)}sliceString(e,t=this.length,n=`
20
- `){let r="";for(let s=0,i=0;s<=t&&i<this.text.length;i++){let l=this.text[i],a=s+l.length;s>e&&i&&(r+=n),e<a&&t>s&&(r+=l.slice(Math.max(0,e-s),t-s)),s=a+1}return r}flatten(e){for(let t of this.text)e.push(t)}scanIdentical(){return 0}static split(e,t){let n=[],r=-1;for(let s of e)n.push(s),r+=s.length+1,n.length==32&&(t.push(new Oe(n,r)),n=[],r=-1);return r>-1&&t.push(new Oe(n,r)),t}},Wt=class extends me{constructor(e,t){super(),this.children=e,this.length=t,this.lines=0;for(let n of e)this.lines+=n.lines}lineInner(e,t,n,r){for(let s=0;;s++){let i=this.children[s],l=r+i.length,a=n+i.lines-1;if((t?a:l)>=e)return i.lineInner(e,t,n,r);r=l+1,n=a+1}}decompose(e,t,n,r){for(let s=0,i=0;i<=t&&s<this.children.length;s++){let l=this.children[s],a=i+l.length;if(e<=a&&t>=i){let u=r&((i<=e?1:0)|(a>=t?2:0));i>=e&&a<=t&&!u?n.push(l):l.decompose(e-i,t-i,n,u)}i=a+1}}replace(e,t,n){if(n.lines<this.lines)for(let r=0,s=0;r<this.children.length;r++){let i=this.children[r],l=s+i.length;if(e>=s&&t<=l){let a=i.replace(e-s,t-s,n),u=this.lines-i.lines+a.lines;if(a.lines<u>>5-1&&a.lines>u>>5+1){let c=this.children.slice();return c[r]=a,new Wt(c,this.length-(t-e)+n.length)}return super.replace(s,l,a)}s=l+1}return super.replace(e,t,n)}sliceString(e,t=this.length,n=`
21
- `){let r="";for(let s=0,i=0;s<this.children.length&&i<=t;s++){let l=this.children[s],a=i+l.length;i>e&&s&&(r+=n),e<a&&t>i&&(r+=l.sliceString(e-i,t-i,n)),i=a+1}return r}flatten(e){for(let t of this.children)t.flatten(e)}scanIdentical(e,t){if(!(e instanceof Wt))return 0;let n=0,[r,s,i,l]=t>0?[0,0,this.children.length,e.children.length]:[this.children.length-1,e.children.length-1,-1,-1];for(;;r+=t,s+=t){if(r==i||s==l)return n;let a=this.children[r],u=e.children[s];if(a!=u)return n+a.scanIdentical(u,t);n+=a.length+1}}static from(e,t=e.reduce((n,r)=>n+r.length+1,-1)){let n=0;for(let f of e)n+=f.lines;if(n<32){let f=[];for(let h of e)h.flatten(f);return new Oe(f,t)}let r=Math.max(32,n>>5),s=r<<1,i=r>>1,l=[],a=0,u=-1,c=[];function d(f){let h;if(f.lines>s&&f instanceof Wt)for(let g of f.children)d(g);else f.lines>i&&(a>i||!a)?(p(),l.push(f)):f instanceof Oe&&a&&(h=c[c.length-1])instanceof Oe&&f.lines+h.lines<=32?(a+=f.lines,u+=f.length+1,c[c.length-1]=new Oe(h.text.concat(f.text),h.length+1+f.length)):(a+f.lines>r&&p(),a+=f.lines,u+=f.length+1,c.push(f))}function p(){a!=0&&(l.push(c.length==1?c[0]:Wt.from(c,u)),u=-1,a=c.length=0)}for(let f of e)d(f);return p(),l.length==1?l[0]:new Wt(l,t)}};me.empty=new Oe([""],0);function xA(o){let e=-1;for(let t of o)e+=t.length+1;return e}function Sa(o,e,t=0,n=1e9){for(let r=0,s=0,i=!0;s<o.length&&r<=n;s++){let l=o[s],a=r+l.length;a>=t&&(a>n&&(l=l.slice(0,n-r)),r<t&&(l=l.slice(t-r)),i?(e[e.length-1]+=l,i=!1):e.push(l)),r=a+1}return e}function rx(o,e,t){return Sa(o,[""],e,t)}var qo=class{constructor(e,t=1){this.dir=t,this.done=!1,this.lineBreak=!1,this.value="",this.nodes=[e],this.offsets=[t>0?1:(e instanceof Oe?e.text.length:e.children.length)<<1]}nextInner(e,t){for(this.done=this.lineBreak=!1;;){let n=this.nodes.length-1,r=this.nodes[n],s=this.offsets[n],i=s>>1,l=r instanceof Oe?r.text.length:r.children.length;if(i==(t>0?l:0)){if(n==0)return this.done=!0,this.value="",this;t>0&&this.offsets[n-1]++,this.nodes.pop(),this.offsets.pop()}else if((s&1)==(t>0?0:1)){if(this.offsets[n]+=t,e==0)return this.lineBreak=!0,this.value=`
22
- `,this;e--}else if(r instanceof Oe){let a=r.text[i+(t<0?-1:0)];if(this.offsets[n]+=t,a.length>Math.max(0,e))return this.value=e==0?a:t>0?a.slice(e):a.slice(0,a.length-e),this;e-=a.length}else{let a=r.children[i+(t<0?-1:0)];e>a.length?(e-=a.length,this.offsets[n]+=t):(t<0&&this.offsets[n]--,this.nodes.push(a),this.offsets.push(t>0?1:(a instanceof Oe?a.text.length:a.children.length)<<1))}}}next(e=0){return e<0&&(this.nextInner(-e,-this.dir),e=this.value.length),this.nextInner(e,this.dir)}},wa=class{constructor(e,t,n){this.value="",this.done=!1,this.cursor=new qo(e,t>n?-1:1),this.pos=t>n?e.length:0,this.from=Math.min(t,n),this.to=Math.max(t,n)}nextInner(e,t){if(t<0?this.pos<=this.from:this.pos>=this.to)return this.value="",this.done=!0,this;e+=Math.max(0,t<0?this.pos-this.to:this.from-this.pos);let n=t<0?this.pos-this.from:this.to-this.pos;e>n&&(e=n),n-=e;let{value:r}=this.cursor.next(e);return this.pos+=(r.length+e)*t,this.value=r.length<=n?r:t<0?r.slice(r.length-n):r.slice(0,n),this.done=!this.value,this}next(e=0){return e<0?e=Math.max(e,this.from-this.pos):e>0&&(e=Math.min(e,this.to-this.pos)),this.nextInner(e,this.cursor.dir)}get lineBreak(){return this.cursor.lineBreak&&this.value!=""}},Ta=class{constructor(e){this.inner=e,this.afterBreak=!0,this.value="",this.done=!1}next(e=0){let{done:t,lineBreak:n,value:r}=this.inner.next(e);return t?(this.done=!0,this.value=""):n?this.afterBreak?this.value="":(this.afterBreak=!0,this.next()):(this.value=r,this.afterBreak=!1),this}get lineBreak(){return!1}};typeof Symbol<"u"&&(me.prototype[Symbol.iterator]=function(){return this.iter()},qo.prototype[Symbol.iterator]=wa.prototype[Symbol.iterator]=Ta.prototype[Symbol.iterator]=function(){return this});var _d=class{constructor(e,t,n,r){this.from=e,this.to=t,this.number=n,this.text=r}get length(){return this.to-this.from}},Jr="lc,34,7n,7,7b,19,,,,2,,2,,,20,b,1c,l,g,,2t,7,2,6,2,2,,4,z,,u,r,2j,b,1m,9,9,,o,4,,9,,3,,5,17,3,3b,f,,w,1j,,,,4,8,4,,3,7,a,2,t,,1m,,,,2,4,8,,9,,a,2,q,,2,2,1l,,4,2,4,2,2,3,3,,u,2,3,,b,2,1l,,4,5,,2,4,,k,2,m,6,,,1m,,,2,,4,8,,7,3,a,2,u,,1n,,,,c,,9,,14,,3,,1l,3,5,3,,4,7,2,b,2,t,,1m,,2,,2,,3,,5,2,7,2,b,2,s,2,1l,2,,,2,4,8,,9,,a,2,t,,20,,4,,2,3,,,8,,29,,2,7,c,8,2q,,2,9,b,6,22,2,r,,,,,,1j,e,,5,,2,5,b,,10,9,,2u,4,,6,,2,2,2,p,2,4,3,g,4,d,,2,2,6,,f,,jj,3,qa,3,t,3,t,2,u,2,1s,2,,7,8,,2,b,9,,19,3,3b,2,y,,3a,3,4,2,9,,6,3,63,2,2,,1m,,,7,,,,,2,8,6,a,2,,1c,h,1r,4,1c,7,,,5,,14,9,c,2,w,4,2,2,,3,1k,,,2,3,,,3,1m,8,2,2,48,3,,d,,7,4,,6,,3,2,5i,1m,,5,ek,,5f,x,2da,3,3x,,2o,w,fe,6,2x,2,n9w,4,,a,w,2,28,2,7k,,3,,4,,p,2,5,,47,2,q,i,d,,12,8,p,b,1a,3,1c,,2,4,2,2,13,,1v,6,2,2,2,2,c,,8,,1b,,1f,,,3,2,2,5,2,,,16,2,8,,6m,,2,,4,,fn4,,kh,g,g,g,a6,2,gt,,6a,,45,5,1ae,3,,2,5,4,14,3,4,,4l,2,fx,4,ar,2,49,b,4w,,1i,f,1k,3,1d,4,2,2,1x,3,10,5,,8,1q,,c,2,1g,9,a,4,2,,2n,3,2,,,2,6,,4g,,3,8,l,2,1l,2,,,,,m,,e,7,3,5,5f,8,2,3,,,n,,29,,2,6,,,2,,,2,,2,6j,,2,4,6,2,,2,r,2,2d,8,2,,,2,2y,,,,2,6,,,2t,3,2,4,,5,77,9,,2,6t,,a,2,,,4,,40,4,2,2,4,,w,a,14,6,2,4,8,,9,6,2,3,1a,d,,2,ba,7,,6,,,2a,m,2,7,,2,,2,3e,6,3,,,2,,7,,,20,2,3,,,,9n,2,f0b,5,1n,7,t4,,1r,4,29,,f5k,2,43q,,,3,4,5,8,8,2,7,u,4,44,3,1iz,1j,4,1e,8,,e,,m,5,,f,11s,7,,h,2,7,,2,,5,79,7,c5,4,15s,7,31,7,240,5,gx7k,2o,3k,6o".split(",").map(o=>o?parseInt(o,36):1);for(let o=1;o<Jr.length;o++)Jr[o]+=Jr[o-1];function vA(o){for(let e=1;e<Jr.length;e+=2)if(Jr[e]>o)return Jr[e-1]<=o;return!1}function sx(o){return o>=127462&&o<=127487}var ix=8205;function pt(o,e,t=!0,n=!0){return(t?px:CA)(o,e,n)}function px(o,e,t){if(e==o.length)return e;e&&fx(o.charCodeAt(e))&&hx(o.charCodeAt(e-1))&&e--;let n=Sn(o,e);for(e+=Qo(n);e<o.length;){let r=Sn(o,e);if(n==ix||r==ix||t&&vA(r))e+=Qo(r),n=r;else if(sx(r)){let s=0,i=e-2;for(;i>=0&&sx(Sn(o,i));)s++,i-=2;if(s%2==0)break;e+=2}else break}return e}function CA(o,e,t){for(;e>0;){let n=px(o,e-2,t);if(n<e)return n;e--}return 0}function fx(o){return o>=56320&&o<57344}function hx(o){return o>=55296&&o<56320}function Sn(o,e){let t=o.charCodeAt(e);if(!hx(t)||e+1==o.length)return t;let n=o.charCodeAt(e+1);return fx(n)?(t-55296<<10)+(n-56320)+65536:t}function mx(o){return o<=65535?String.fromCharCode(o):(o-=65536,String.fromCharCode((o>>10)+55296,(o&1023)+56320))}function Qo(o){return o<65536?1:2}var Kd=/\r\n?|\n/,dt=function(o){return o[o.Simple=0]="Simple",o[o.TrackDel=1]="TrackDel",o[o.TrackBefore=2]="TrackBefore",o[o.TrackAfter=3]="TrackAfter",o}(dt||(dt={})),Lt=class{constructor(e){this.sections=e}get length(){let e=0;for(let t=0;t<this.sections.length;t+=2)e+=this.sections[t];return e}get newLength(){let e=0;for(let t=0;t<this.sections.length;t+=2){let n=this.sections[t+1];e+=n<0?this.sections[t]:n}return e}get empty(){return this.sections.length==0||this.sections.length==2&&this.sections[1]<0}iterGaps(e){for(let t=0,n=0,r=0;t<this.sections.length;){let s=this.sections[t++],i=this.sections[t++];i<0?(e(n,r,s),r+=s):r+=i,n+=s}}iterChangedRanges(e,t=!1){Ud(this,e,t)}get invertedDesc(){let e=[];for(let t=0;t<this.sections.length;){let n=this.sections[t++],r=this.sections[t++];r<0?e.push(n,r):e.push(r,n)}return new Lt(e)}composeDesc(e){return this.empty?e:e.empty?this:gx(this,e)}mapDesc(e,t=!1){return e.empty?this:Gd(this,e,t)}mapPos(e,t=-1,n=dt.Simple){let r=0,s=0;for(let i=0;i<this.sections.length;){let l=this.sections[i++],a=this.sections[i++],u=r+l;if(a<0){if(u>e)return s+(e-r);s+=l}else{if(n!=dt.Simple&&u>=e&&(n==dt.TrackDel&&r<e&&u>e||n==dt.TrackBefore&&r<e||n==dt.TrackAfter&&u>e))return null;if(u>e||u==e&&t<0&&!l)return e==r||t<0?s:s+a;s+=a}r=u}if(e>r)throw new RangeError(`Position ${e} is out of range for changeset of length ${r}`);return s}touchesRange(e,t=e){for(let n=0,r=0;n<this.sections.length&&r<=t;){let s=this.sections[n++],i=this.sections[n++],l=r+s;if(i>=0&&r<=t&&l>=e)return r<e&&l>t?"cover":!0;r=l}return!1}toString(){let e="";for(let t=0;t<this.sections.length;){let n=this.sections[t++],r=this.sections[t++];e+=(e?" ":"")+n+(r>=0?":"+r:"")}return e}toJSON(){return this.sections}static fromJSON(e){if(!Array.isArray(e)||e.length%2||e.some(t=>typeof t!="number"))throw new RangeError("Invalid JSON representation of ChangeDesc");return new Lt(e)}static create(e){return new Lt(e)}},Ne=class extends Lt{constructor(e,t){super(e),this.inserted=t}apply(e){if(this.length!=e.length)throw new RangeError("Applying change set to a document with the wrong length");return Ud(this,(t,n,r,s,i)=>e=e.replace(r,r+(n-t),i),!1),e}mapDesc(e,t=!1){return Gd(this,e,t,!0)}invert(e){let t=this.sections.slice(),n=[];for(let r=0,s=0;r<t.length;r+=2){let i=t[r],l=t[r+1];if(l>=0){t[r]=l,t[r+1]=i;let a=r>>1;for(;n.length<a;)n.push(me.empty);n.push(i?e.slice(s,s+i):me.empty)}s+=i}return new Ne(t,n)}compose(e){return this.empty?e:e.empty?this:gx(this,e,!0)}map(e,t=!1){return e.empty?this:Gd(this,e,t,!0)}iterChanges(e,t=!1){Ud(this,e,t)}get desc(){return Lt.create(this.sections)}filter(e){let t=[],n=[],r=[],s=new jo(this);e:for(let i=0,l=0;;){let a=i==e.length?1e9:e[i++];for(;l<a||l==a&&s.len==0;){if(s.done)break e;let c=Math.min(s.len,a-l);ct(r,c,-1);let d=s.ins==-1?-1:s.off==0?s.ins:0;ct(t,c,d),d>0&&fo(n,t,s.text),s.forward(c),l+=c}let u=e[i++];for(;l<u;){if(s.done)break e;let c=Math.min(s.len,u-l);ct(t,c,-1),ct(r,c,s.ins==-1?-1:s.off==0?s.ins:0),s.forward(c),l+=c}}return{changes:new Ne(t,n),filtered:Lt.create(r)}}toJSON(){let e=[];for(let t=0;t<this.sections.length;t+=2){let n=this.sections[t],r=this.sections[t+1];r<0?e.push(n):r==0?e.push([n]):e.push([n].concat(this.inserted[t>>1].toJSON()))}return e}static of(e,t,n){let r=[],s=[],i=0,l=null;function a(c=!1){if(!c&&!r.length)return;i<t&&ct(r,t-i,-1);let d=new Ne(r,s);l=l?l.compose(d.map(l)):d,r=[],s=[],i=0}function u(c){if(Array.isArray(c))for(let d of c)u(d);else if(c instanceof Ne){if(c.length!=t)throw new RangeError(`Mismatched change set length (got ${c.length}, expected ${t})`);a(),l=l?l.compose(c.map(l)):c}else{let{from:d,to:p=d,insert:f}=c;if(d>p||d<0||p>t)throw new RangeError(`Invalid change range ${d} to ${p} (in doc of length ${t})`);let h=f?typeof f=="string"?me.of(f.split(n||Kd)):f:me.empty,g=h.length;if(d==p&&g==0)return;d<i&&a(),d>i&&ct(r,d-i,-1),ct(r,p-d,g),fo(s,r,h),i=p}}return u(e),a(!l),l}static empty(e){return new Ne(e?[e,-1]:[],[])}static fromJSON(e){if(!Array.isArray(e))throw new RangeError("Invalid JSON representation of ChangeSet");let t=[],n=[];for(let r=0;r<e.length;r++){let s=e[r];if(typeof s=="number")t.push(s,-1);else{if(!Array.isArray(s)||typeof s[0]!="number"||s.some((i,l)=>l&&typeof i!="string"))throw new RangeError("Invalid JSON representation of ChangeSet");if(s.length==1)t.push(s[0],0);else{for(;n.length<r;)n.push(me.empty);n[r]=me.of(s.slice(1)),t.push(s[0],n[r].length)}}}return new Ne(t,n)}static createSet(e,t){return new Ne(e,t)}};function ct(o,e,t,n=!1){if(e==0&&t<=0)return;let r=o.length-2;r>=0&&t<=0&&t==o[r+1]?o[r]+=e:e==0&&o[r]==0?o[r+1]+=t:n?(o[r]+=e,o[r+1]+=t):o.push(e,t)}function fo(o,e,t){if(t.length==0)return;let n=e.length-2>>1;if(n<o.length)o[o.length-1]=o[o.length-1].append(t);else{for(;o.length<n;)o.push(me.empty);o.push(t)}}function Ud(o,e,t){let n=o.inserted;for(let r=0,s=0,i=0;i<o.sections.length;){let l=o.sections[i++],a=o.sections[i++];if(a<0)r+=l,s+=l;else{let u=r,c=s,d=me.empty;for(;u+=l,c+=a,a&&n&&(d=d.append(n[i-2>>1])),!(t||i==o.sections.length||o.sections[i+1]<0);)l=o.sections[i++],a=o.sections[i++];e(r,u,s,c,d),r=u,s=c}}}function Gd(o,e,t,n=!1){let r=[],s=n?[]:null,i=new jo(o),l=new jo(e);for(let a=-1;;)if(i.ins==-1&&l.ins==-1){let u=Math.min(i.len,l.len);ct(r,u,-1),i.forward(u),l.forward(u)}else if(l.ins>=0&&(i.ins<0||a==i.i||i.off==0&&(l.len<i.len||l.len==i.len&&!t))){let u=l.len;for(ct(r,l.ins,-1);u;){let c=Math.min(i.len,u);i.ins>=0&&a<i.i&&i.len<=c&&(ct(r,0,i.ins),s&&fo(s,r,i.text),a=i.i),i.forward(c),u-=c}l.next()}else if(i.ins>=0){let u=0,c=i.len;for(;c;)if(l.ins==-1){let d=Math.min(c,l.len);u+=d,c-=d,l.forward(d)}else if(l.ins==0&&l.len<c)c-=l.len,l.next();else break;ct(r,u,a<i.i?i.ins:0),s&&a<i.i&&fo(s,r,i.text),a=i.i,i.forward(i.len-c)}else{if(i.done&&l.done)return s?Ne.createSet(r,s):Lt.create(r);throw new Error("Mismatched change set lengths")}}function gx(o,e,t=!1){let n=[],r=t?[]:null,s=new jo(o),i=new jo(e);for(let l=!1;;){if(s.done&&i.done)return r?Ne.createSet(n,r):Lt.create(n);if(s.ins==0)ct(n,s.len,0,l),s.next();else if(i.len==0&&!i.done)ct(n,0,i.ins,l),r&&fo(r,n,i.text),i.next();else{if(s.done||i.done)throw new Error("Mismatched change set lengths");{let a=Math.min(s.len2,i.len),u=n.length;if(s.ins==-1){let c=i.ins==-1?-1:i.off?0:i.ins;ct(n,a,c,l),r&&c&&fo(r,n,i.text)}else i.ins==-1?(ct(n,s.off?0:s.len,a,l),r&&fo(r,n,s.textBit(a))):(ct(n,s.off?0:s.len,i.off?0:i.ins,l),r&&!i.off&&fo(r,n,i.text));l=(s.ins>a||i.ins>=0&&i.len>a)&&(l||n.length>u),s.forward2(a),i.forward(a)}}}}var jo=class{constructor(e){this.set=e,this.i=0,this.next()}next(){let{sections:e}=this.set;this.i<e.length?(this.len=e[this.i++],this.ins=e[this.i++]):(this.len=0,this.ins=-2),this.off=0}get done(){return this.ins==-2}get len2(){return this.ins<0?this.len:this.ins}get text(){let{inserted:e}=this.set,t=this.i-2>>1;return t>=e.length?me.empty:e[t]}textBit(e){let{inserted:t}=this.set,n=this.i-2>>1;return n>=t.length&&!e?me.empty:t[n].slice(this.off,e==null?void 0:this.off+e)}forward(e){e==this.len?this.next():(this.len-=e,this.off+=e)}forward2(e){this.ins==-1?this.forward(e):e==this.ins?this.next():(this.ins-=e,this.off+=e)}},Un=class{constructor(e,t,n){this.from=e,this.to=t,this.flags=n}get anchor(){return this.flags&16?this.to:this.from}get head(){return this.flags&16?this.from:this.to}get empty(){return this.from==this.to}get assoc(){return this.flags&4?-1:this.flags&8?1:0}get bidiLevel(){let e=this.flags&3;return e==3?null:e}get goalColumn(){let e=this.flags>>5;return e==33554431?void 0:e}map(e,t=-1){let n,r;return this.empty?n=r=e.mapPos(this.from,t):(n=e.mapPos(this.from,1),r=e.mapPos(this.to,-1)),n==this.from&&r==this.to?this:new Un(n,r,this.flags)}extend(e,t=e){if(e<=this.anchor&&t>=this.anchor)return z.range(e,t);let n=Math.abs(e-this.anchor)>Math.abs(t-this.anchor)?e:t;return z.range(this.anchor,n)}eq(e){return this.anchor==e.anchor&&this.head==e.head}toJSON(){return{anchor:this.anchor,head:this.head}}static fromJSON(e){if(!e||typeof e.anchor!="number"||typeof e.head!="number")throw new RangeError("Invalid JSON representation for SelectionRange");return z.range(e.anchor,e.head)}static create(e,t,n){return new Un(e,t,n)}},z=class{constructor(e,t){this.ranges=e,this.mainIndex=t}map(e,t=-1){return e.empty?this:z.create(this.ranges.map(n=>n.map(e,t)),this.mainIndex)}eq(e){if(this.ranges.length!=e.ranges.length||this.mainIndex!=e.mainIndex)return!1;for(let t=0;t<this.ranges.length;t++)if(!this.ranges[t].eq(e.ranges[t]))return!1;return!0}get main(){return this.ranges[this.mainIndex]}asSingle(){return this.ranges.length==1?this:new z([this.main],0)}addRange(e,t=!0){return z.create([e].concat(this.ranges),t?0:this.mainIndex+1)}replaceRange(e,t=this.mainIndex){let n=this.ranges.slice();return n[t]=e,z.create(n,this.mainIndex)}toJSON(){return{ranges:this.ranges.map(e=>e.toJSON()),main:this.mainIndex}}static fromJSON(e){if(!e||!Array.isArray(e.ranges)||typeof e.main!="number"||e.main>=e.ranges.length)throw new RangeError("Invalid JSON representation for EditorSelection");return new z(e.ranges.map(t=>Un.fromJSON(t)),e.main)}static single(e,t=e){return new z([z.range(e,t)],0)}static create(e,t=0){if(e.length==0)throw new RangeError("A selection needs at least one range");for(let n=0,r=0;r<e.length;r++){let s=e[r];if(s.empty?s.from<=n:s.from<n)return z.normalized(e.slice(),t);n=s.to}return new z(e,t)}static cursor(e,t=0,n,r){return Un.create(e,e,(t==0?0:t<0?4:8)|(n==null?3:Math.min(2,n))|(r!=null?r:33554431)<<5)}static range(e,t,n,r){let s=(n!=null?n:33554431)<<5|(r==null?3:Math.min(2,r));return t<e?Un.create(t,e,24|s):Un.create(e,t,(t>e?4:0)|s)}static normalized(e,t=0){let n=e[t];e.sort((r,s)=>r.from-s.from),t=e.indexOf(n);for(let r=1;r<e.length;r++){let s=e[r],i=e[r-1];if(s.empty?s.from<=i.to:s.from<i.to){let l=i.from,a=Math.max(s.to,i.to);r<=t&&t--,e.splice(--r,2,s.anchor>s.head?z.range(a,l):z.range(l,a))}}return new z(e,t)}};function bx(o,e){for(let t of o.ranges)if(t.to>e)throw new RangeError("Selection points outside of document")}var Zd=0,se=class{constructor(e,t,n,r,s){this.combine=e,this.compareInput=t,this.compare=n,this.isStatic=r,this.id=Zd++,this.default=e([]),this.extensions=typeof s=="function"?s(this):s}static define(e={}){return new se(e.combine||(t=>t),e.compareInput||((t,n)=>t===n),e.compare||(e.combine?(t,n)=>t===n:ep),!!e.static,e.enables)}of(e){return new Xr([],this,0,e)}compute(e,t){if(this.isStatic)throw new Error("Can't compute a static facet");return new Xr(e,this,1,t)}computeN(e,t){if(this.isStatic)throw new Error("Can't compute a static facet");return new Xr(e,this,2,t)}from(e,t){return t||(t=n=>n),this.compute([e],n=>t(n.field(e)))}};function ep(o,e){return o==e||o.length==e.length&&o.every((t,n)=>t===e[n])}var Xr=class{constructor(e,t,n,r){this.dependencies=e,this.facet=t,this.type=n,this.value=r,this.id=Zd++}dynamicSlot(e){var t;let n=this.value,r=this.facet.compareInput,s=this.id,i=e[s]>>1,l=this.type==2,a=!1,u=!1,c=[];for(let d of this.dependencies)d=="doc"?a=!0:d=="selection"?u=!0:((t=e[d.id])!==null&&t!==void 0?t:1)&1||c.push(e[d.id]);return{create(d){return d.values[i]=n(d),1},update(d,p){if(a&&p.docChanged||u&&(p.docChanged||p.selection)||qd(d,c)){let f=n(d);if(l?!lx(f,d.values[i],r):!r(f,d.values[i]))return d.values[i]=f,1}return 0},reconfigure:(d,p)=>{let f,h=p.config.address[s];if(h!=null){let g=Ma(p,h);if(this.dependencies.every(m=>m instanceof se?p.facet(m)===d.facet(m):m instanceof Ct?p.field(m,!1)==d.field(m,!1):!0)||(l?lx(f=n(d),g,r):r(f=n(d),g)))return d.values[i]=g,0}else f=n(d);return d.values[i]=f,1}}}};function lx(o,e,t){if(o.length!=e.length)return!1;for(let n=0;n<o.length;n++)if(!t(o[n],e[n]))return!1;return!0}function qd(o,e){let t=!1;for(let n of e)gi(o,n)&1&&(t=!0);return t}function SA(o,e,t){let n=t.map(a=>o[a.id]),r=t.map(a=>a.type),s=n.filter(a=>!(a&1)),i=o[e.id]>>1;function l(a){let u=[];for(let c=0;c<n.length;c++){let d=Ma(a,n[c]);if(r[c]==2)for(let p of d)u.push(p);else u.push(d)}return e.combine(u)}return{create(a){for(let u of n)gi(a,u);return a.values[i]=l(a),1},update(a,u){if(!qd(a,s))return 0;let c=l(a);return e.compare(c,a.values[i])?0:(a.values[i]=c,1)},reconfigure(a,u){let c=qd(a,n),d=u.config.facets[e.id],p=u.facet(e);if(d&&!c&&ep(t,d))return a.values[i]=p,0;let f=l(a);return e.compare(f,p)?(a.values[i]=p,0):(a.values[i]=f,1)}}}var ax=se.define({static:!0}),Ct=class{constructor(e,t,n,r,s){this.id=e,this.createF=t,this.updateF=n,this.compareF=r,this.spec=s,this.provides=void 0}static define(e){let t=new Ct(Zd++,e.create,e.update,e.compare||((n,r)=>n===r),e);return e.provide&&(t.provides=e.provide(t)),t}create(e){let t=e.facet(ax).find(n=>n.field==this);return((t==null?void 0:t.create)||this.createF)(e)}slot(e){let t=e[this.id]>>1;return{create:n=>(n.values[t]=this.create(n),1),update:(n,r)=>{let s=n.values[t],i=this.updateF(s,r);return this.compareF(s,i)?0:(n.values[t]=i,1)},reconfigure:(n,r)=>r.config.address[this.id]!=null?(n.values[t]=r.field(this),0):(n.values[t]=this.create(n),1)}}init(e){return[this,ax.of({field:this,create:e})]}get extension(){return this}},Uo={lowest:4,low:3,default:2,high:1,highest:0};function mi(o){return e=>new Ea(e,o)}var Yo={highest:mi(Uo.highest),high:mi(Uo.high),default:mi(Uo.default),low:mi(Uo.low),lowest:mi(Uo.lowest)},Ea=class{constructor(e,t){this.inner=e,this.prec=t}},Zr=class{of(e){return new bi(this,e)}reconfigure(e){return Zr.reconfigure.of({compartment:this,extension:e})}get(e){return e.config.compartments.get(this)}},bi=class{constructor(e,t){this.compartment=e,this.inner=t}},es=class{constructor(e,t,n,r,s,i){for(this.base=e,this.compartments=t,this.dynamicSlots=n,this.address=r,this.staticValues=s,this.facets=i,this.statusTemplate=[];this.statusTemplate.length<n.length;)this.statusTemplate.push(0)}staticFacet(e){let t=this.address[e.id];return t==null?e.default:this.staticValues[t>>1]}static resolve(e,t,n){let r=[],s=Object.create(null),i=new Map;for(let p of wA(e,t,i))p instanceof Ct?r.push(p):(s[p.facet.id]||(s[p.facet.id]=[])).push(p);let l=Object.create(null),a=[],u=[];for(let p of r)l[p.id]=u.length<<1,u.push(f=>p.slot(f));let c=n==null?void 0:n.config.facets;for(let p in s){let f=s[p],h=f[0].facet,g=c&&c[p]||[];if(f.every(m=>m.type==0))if(l[h.id]=a.length<<1|1,ep(g,f))a.push(n.facet(h));else{let m=h.combine(f.map(y=>y.value));a.push(n&&h.compare(m,n.facet(h))?n.facet(h):m)}else{for(let m of f)m.type==0?(l[m.id]=a.length<<1|1,a.push(m.value)):(l[m.id]=u.length<<1,u.push(y=>m.dynamicSlot(y)));l[h.id]=u.length<<1,u.push(m=>SA(m,h,f))}}let d=u.map(p=>p(l));return new es(e,i,d,l,a,s)}};function wA(o,e,t){let n=[[],[],[],[],[]],r=new Map;function s(i,l){let a=r.get(i);if(a!=null){if(a<=l)return;let u=n[a].indexOf(i);u>-1&&n[a].splice(u,1),i instanceof bi&&t.delete(i.compartment)}if(r.set(i,l),Array.isArray(i))for(let u of i)s(u,l);else if(i instanceof bi){if(t.has(i.compartment))throw new RangeError("Duplicate use of compartment in extensions");let u=e.get(i.compartment)||i.inner;t.set(i.compartment,u),s(u,l)}else if(i instanceof Ea)s(i.inner,i.prec);else if(i instanceof Ct)n[l].push(i),i.provides&&s(i.provides,l);else if(i instanceof Xr)n[l].push(i),i.facet.extensions&&s(i.facet.extensions,Uo.default);else{let u=i.extension;if(!u)throw new Error(`Unrecognized extension value in extension set (${i}). This sometimes happens because multiple instances of @codemirror/state are loaded, breaking instanceof checks.`);s(u,l)}}return s(o,Uo.default),n.reduce((i,l)=>i.concat(l))}function gi(o,e){if(e&1)return 2;let t=e>>1,n=o.status[t];if(n==4)throw new Error("Cyclic dependency between fields and/or facets");if(n&2)return n;o.status[t]=4;let r=o.computeSlot(o,o.config.dynamicSlots[t]);return o.status[t]=2|r}function Ma(o,e){return e&1?o.config.staticValues[e>>1]:o.values[e>>1]}var yx=se.define(),xx=se.define({combine:o=>o.some(e=>e),static:!0}),vx=se.define({combine:o=>o.length?o[0]:void 0,static:!0}),Cx=se.define(),Sx=se.define(),wx=se.define(),Tx=se.define({combine:o=>o.length?o[0]:!1}),At=class{constructor(e,t){this.type=e,this.value=t}static define(){return new yi}},yi=class{of(e){return new At(this,e)}},Qd=class{constructor(e){this.map=e}of(e){return new De(this,e)}},De=class{constructor(e,t){this.type=e,this.value=t}map(e){let t=this.type.map(this.value,e);return t===void 0?void 0:t==this.value?this:new De(this.type,t)}is(e){return this.type==e}static define(e={}){return new Qd(e.map||(t=>t))}static mapEffects(e,t){if(!e.length)return e;let n=[];for(let r of e){let s=r.map(t);s&&n.push(s)}return n}};De.reconfigure=De.define();De.appendConfig=De.define();var He=class{constructor(e,t,n,r,s,i){this.startState=e,this.changes=t,this.selection=n,this.effects=r,this.annotations=s,this.scrollIntoView=i,this._doc=null,this._state=null,n&&bx(n,t.newLength),s.some(l=>l.type==He.time)||(this.annotations=s.concat(He.time.of(Date.now())))}static create(e,t,n,r,s,i){return new He(e,t,n,r,s,i)}get newDoc(){return this._doc||(this._doc=this.changes.apply(this.startState.doc))}get newSelection(){return this.selection||this.startState.selection.map(this.changes)}get state(){return this._state||this.startState.applyTransaction(this),this._state}annotation(e){for(let t of this.annotations)if(t.type==e)return t.value}get docChanged(){return!this.changes.empty}get reconfigured(){return this.startState.config!=this.state.config}isUserEvent(e){let t=this.annotation(He.userEvent);return!!(t&&(t==e||t.length>e.length&&t.slice(0,e.length)==e&&t[e.length]=="."))}};He.time=At.define();He.userEvent=At.define();He.addToHistory=At.define();He.remote=At.define();function TA(o,e){let t=[];for(let n=0,r=0;;){let s,i;if(n<o.length&&(r==e.length||e[r]>=o[n]))s=o[n++],i=o[n++];else if(r<e.length)s=e[r++],i=e[r++];else return t;!t.length||t[t.length-1]<s?t.push(s,i):t[t.length-1]<i&&(t[t.length-1]=i)}}function Ex(o,e,t){var n;let r,s,i;return t?(r=e.changes,s=Ne.empty(e.changes.length),i=o.changes.compose(e.changes)):(r=e.changes.map(o.changes),s=o.changes.mapDesc(e.changes,!0),i=o.changes.compose(r)),{changes:i,selection:e.selection?e.selection.map(s):(n=o.selection)===null||n===void 0?void 0:n.map(r),effects:De.mapEffects(o.effects,r).concat(De.mapEffects(e.effects,s)),annotations:o.annotations.length?o.annotations.concat(e.annotations):e.annotations,scrollIntoView:o.scrollIntoView||e.scrollIntoView}}function jd(o,e,t){let n=e.selection,r=Yr(e.annotations);return e.userEvent&&(r=r.concat(He.userEvent.of(e.userEvent))),{changes:e.changes instanceof Ne?e.changes:Ne.of(e.changes||[],t,o.facet(vx)),selection:n&&(n instanceof z?n:z.single(n.anchor,n.head)),effects:Yr(e.effects),annotations:r,scrollIntoView:!!e.scrollIntoView}}function Mx(o,e,t){let n=jd(o,e.length?e[0]:{},o.doc.length);e.length&&e[0].filter===!1&&(t=!1);for(let s=1;s<e.length;s++){e[s].filter===!1&&(t=!1);let i=!!e[s].sequential;n=Ex(n,jd(o,e[s],i?n.changes.newLength:o.doc.length),i)}let r=He.create(o,n.changes,n.selection,n.effects,n.annotations,n.scrollIntoView);return MA(t?EA(r):r)}function EA(o){let e=o.startState,t=!0;for(let r of e.facet(Cx)){let s=r(o);if(s===!1){t=!1;break}Array.isArray(s)&&(t=t===!0?s:TA(t,s))}if(t!==!0){let r,s;if(t===!1)s=o.changes.invertedDesc,r=Ne.empty(e.doc.length);else{let i=o.changes.filter(t);r=i.changes,s=i.filtered.mapDesc(i.changes).invertedDesc}o=He.create(e,r,o.selection&&o.selection.map(s),De.mapEffects(o.effects,s),o.annotations,o.scrollIntoView)}let n=e.facet(Sx);for(let r=n.length-1;r>=0;r--){let s=n[r](o);s instanceof He?o=s:Array.isArray(s)&&s.length==1&&s[0]instanceof He?o=s[0]:o=Mx(e,Yr(s),!1)}return o}function MA(o){let e=o.startState,t=e.facet(wx),n=o;for(let r=t.length-1;r>=0;r--){let s=t[r](o);s&&Object.keys(s).length&&(n=Ex(n,jd(e,s,o.changes.newLength),!0))}return n==o?o:He.create(e,o.changes,o.selection,n.effects,n.annotations,n.scrollIntoView)}var RA=[];function Yr(o){return o==null?RA:Array.isArray(o)?o:[o]}var vt=function(o){return o[o.Word=0]="Word",o[o.Space=1]="Space",o[o.Other=2]="Other",o}(vt||(vt={})),DA=/[\u00df\u0587\u0590-\u05f4\u0600-\u06ff\u3040-\u309f\u30a0-\u30ff\u3400-\u4db5\u4e00-\u9fcc\uac00-\ud7af]/,Jd;try{Jd=new RegExp("[\\p{Alphabetic}\\p{Number}_]","u")}catch{}function PA(o){if(Jd)return Jd.test(o);for(let e=0;e<o.length;e++){let t=o[e];if(/\w/.test(t)||t>"\x80"&&(t.toUpperCase()!=t.toLowerCase()||DA.test(t)))return!0}return!1}function kA(o){return e=>{if(!/\S/.test(e))return vt.Space;if(PA(e))return vt.Word;for(let t=0;t<o.length;t++)if(e.indexOf(o[t])>-1)return vt.Word;return vt.Other}}var be=class{constructor(e,t,n,r,s,i){this.config=e,this.doc=t,this.selection=n,this.values=r,this.status=e.statusTemplate.slice(),this.computeSlot=s,i&&(i._state=this);for(let l=0;l<this.config.dynamicSlots.length;l++)gi(this,l<<1);this.computeSlot=null}field(e,t=!0){let n=this.config.address[e.id];if(n==null){if(t)throw new RangeError("Field is not present in this state");return}return gi(this,n),Ma(this,n)}update(...e){return Mx(this,e,!0)}applyTransaction(e){let t=this.config,{base:n,compartments:r}=t;for(let i of e.effects)i.is(Zr.reconfigure)?(t&&(r=new Map,t.compartments.forEach((l,a)=>r.set(a,l)),t=null),r.set(i.value.compartment,i.value.extension)):i.is(De.reconfigure)?(t=null,n=i.value):i.is(De.appendConfig)&&(t=null,n=Yr(n).concat(i.value));let s;t?s=e.startState.values.slice():(t=es.resolve(n,r,this),s=new be(t,this.doc,this.selection,t.dynamicSlots.map(()=>null),(l,a)=>a.reconfigure(l,this),null).values),new be(t,e.newDoc,e.newSelection,s,(i,l)=>l.update(i,e),e)}replaceSelection(e){return typeof e=="string"&&(e=this.toText(e)),this.changeByRange(t=>({changes:{from:t.from,to:t.to,insert:e},range:z.cursor(t.from+e.length)}))}changeByRange(e){let t=this.selection,n=e(t.ranges[0]),r=this.changes(n.changes),s=[n.range],i=Yr(n.effects);for(let l=1;l<t.ranges.length;l++){let a=e(t.ranges[l]),u=this.changes(a.changes),c=u.map(r);for(let p=0;p<l;p++)s[p]=s[p].map(c);let d=r.mapDesc(u,!0);s.push(a.range.map(d)),r=r.compose(c),i=De.mapEffects(i,c).concat(De.mapEffects(Yr(a.effects),d))}return{changes:r,selection:z.create(s,t.mainIndex),effects:i}}changes(e=[]){return e instanceof Ne?e:Ne.of(e,this.doc.length,this.facet(be.lineSeparator))}toText(e){return me.of(e.split(this.facet(be.lineSeparator)||Kd))}sliceDoc(e=0,t=this.doc.length){return this.doc.sliceString(e,t,this.lineBreak)}facet(e){let t=this.config.address[e.id];return t==null?e.default:(gi(this,t),Ma(this,t))}toJSON(e){let t={doc:this.sliceDoc(),selection:this.selection.toJSON()};if(e)for(let n in e){let r=e[n];r instanceof Ct&&this.config.address[r.id]!=null&&(t[n]=r.spec.toJSON(this.field(e[n]),this))}return t}static fromJSON(e,t={},n){if(!e||typeof e.doc!="string")throw new RangeError("Invalid JSON representation for EditorState");let r=[];if(n){for(let s in n)if(Object.prototype.hasOwnProperty.call(e,s)){let i=n[s],l=e[s];r.push(i.init(a=>i.spec.fromJSON(l,a)))}}return be.create({doc:e.doc,selection:z.fromJSON(e.selection),extensions:t.extensions?r.concat([t.extensions]):r})}static create(e={}){let t=es.resolve(e.extensions||[],new Map),n=e.doc instanceof me?e.doc:me.of((e.doc||"").split(t.staticFacet(be.lineSeparator)||Kd)),r=e.selection?e.selection instanceof z?e.selection:z.single(e.selection.anchor,e.selection.head):z.single(0);return bx(r,n.length),t.staticFacet(xx)||(r=r.asSingle()),new be(t,n,r,t.dynamicSlots.map(()=>null),(s,i)=>i.create(s),null)}get tabSize(){return this.facet(be.tabSize)}get lineBreak(){return this.facet(be.lineSeparator)||`
23
- `}get readOnly(){return this.facet(Tx)}phrase(e,...t){for(let n of this.facet(be.phrases))if(Object.prototype.hasOwnProperty.call(n,e)){e=n[e];break}return t.length&&(e=e.replace(/\$(\$|\d*)/g,(n,r)=>{if(r=="$")return"$";let s=+(r||1);return!s||s>t.length?n:t[s-1]})),e}languageDataAt(e,t,n=-1){let r=[];for(let s of this.facet(yx))for(let i of s(this,t,n))Object.prototype.hasOwnProperty.call(i,e)&&r.push(i[e]);return r}charCategorizer(e){return kA(this.languageDataAt("wordChars",e).join(""))}wordAt(e){let{text:t,from:n,length:r}=this.doc.lineAt(e),s=this.charCategorizer(e),i=e-n,l=e-n;for(;i>0;){let a=pt(t,i,!1);if(s(t.slice(a,i))!=vt.Word)break;i=a}for(;l<r;){let a=pt(t,l);if(s(t.slice(l,a))!=vt.Word)break;l=a}return i==l?null:z.range(i+n,l+n)}};be.allowMultipleSelections=xx;be.tabSize=se.define({combine:o=>o.length?o[0]:4});be.lineSeparator=vx;be.readOnly=Tx;be.phrases=se.define({compare(o,e){let t=Object.keys(o),n=Object.keys(e);return t.length==n.length&&t.every(r=>o[r]==e[r])}});be.languageData=yx;be.changeFilter=Cx;be.transactionFilter=Sx;be.transactionExtender=wx;Zr.reconfigure=De.define();function Zo(o,e,t={}){let n={};for(let r of o)for(let s of Object.keys(r)){let i=r[s],l=n[s];if(l===void 0)n[s]=i;else if(!(l===i||i===void 0))if(Object.hasOwnProperty.call(t,s))n[s]=t[s](l,i);else throw new Error("Config merge conflict for field "+s)}for(let r in e)n[r]===void 0&&(n[r]=e[r]);return n}var un=class{eq(e){return this==e}range(e,t=e){return Jo.create(e,t,this)}};un.prototype.startSide=un.prototype.endSide=0;un.prototype.point=!1;un.prototype.mapMode=dt.TrackDel;var Jo=class{constructor(e,t,n){this.from=e,this.to=t,this.value=n}static create(e,t,n){return new Jo(e,t,n)}};function Xd(o,e){return o.from-e.from||o.value.startSide-e.value.startSide}var xi=class{constructor(e,t,n,r){this.from=e,this.to=t,this.value=n,this.maxPoint=r}get length(){return this.to[this.to.length-1]}findIndex(e,t,n,r=0){let s=n?this.to:this.from;for(let i=r,l=s.length;;){if(i==l)return i;let a=i+l>>1,u=s[a]-e||(n?this.value[a].endSide:this.value[a].startSide)-t;if(a==i)return u>=0?i:l;u>=0?l=a:i=a+1}}between(e,t,n,r){for(let s=this.findIndex(t,-1e9,!0),i=this.findIndex(n,1e9,!1,s);s<i;s++)if(r(this.from[s]+e,this.to[s]+e,this.value[s])===!1)return!1}map(e,t){let n=[],r=[],s=[],i=-1,l=-1;for(let a=0;a<this.value.length;a++){let u=this.value[a],c=this.from[a]+e,d=this.to[a]+e,p,f;if(c==d){let h=t.mapPos(c,u.startSide,u.mapMode);if(h==null||(p=f=h,u.startSide!=u.endSide&&(f=t.mapPos(c,u.endSide),f<p)))continue}else if(p=t.mapPos(c,u.startSide),f=t.mapPos(d,u.endSide),p>f||p==f&&u.startSide>0&&u.endSide<=0)continue;(f-p||u.endSide-u.startSide)<0||(i<0&&(i=p),u.point&&(l=Math.max(l,f-p)),n.push(u),r.push(p-i),s.push(f-i))}return{mapped:n.length?new xi(r,s,n,l):null,pos:i}}},we=class{constructor(e,t,n,r){this.chunkPos=e,this.chunk=t,this.nextLayer=n,this.maxPoint=r}static create(e,t,n,r){return new we(e,t,n,r)}get length(){let e=this.chunk.length-1;return e<0?0:Math.max(this.chunkEnd(e),this.nextLayer.length)}get size(){if(this.isEmpty)return 0;let e=this.nextLayer.size;for(let t of this.chunk)e+=t.value.length;return e}chunkEnd(e){return this.chunkPos[e]+this.chunk[e].length}update(e){let{add:t=[],sort:n=!1,filterFrom:r=0,filterTo:s=this.length}=e,i=e.filter;if(t.length==0&&!i)return this;if(n&&(t=t.slice().sort(Xd)),this.isEmpty)return t.length?we.of(t):this;let l=new Ra(this,null,-1).goto(0),a=0,u=[],c=new wn;for(;l.value||a<t.length;)if(a<t.length&&(l.from-t[a].from||l.startSide-t[a].value.startSide)>=0){let d=t[a++];c.addInner(d.from,d.to,d.value)||u.push(d)}else l.rangeIndex==1&&l.chunkIndex<this.chunk.length&&(a==t.length||this.chunkEnd(l.chunkIndex)<t[a].from)&&(!i||r>this.chunkEnd(l.chunkIndex)||s<this.chunkPos[l.chunkIndex])&&c.addChunk(this.chunkPos[l.chunkIndex],this.chunk[l.chunkIndex])?l.nextChunk():((!i||r>l.to||s<l.from||i(l.from,l.to,l.value))&&(c.addInner(l.from,l.to,l.value)||u.push(Jo.create(l.from,l.to,l.value))),l.next());return c.finishInner(this.nextLayer.isEmpty&&!u.length?we.empty:this.nextLayer.update({add:u,filter:i,filterFrom:r,filterTo:s}))}map(e){if(e.empty||this.isEmpty)return this;let t=[],n=[],r=-1;for(let i=0;i<this.chunk.length;i++){let l=this.chunkPos[i],a=this.chunk[i],u=e.touchesRange(l,l+a.length);if(u===!1)r=Math.max(r,a.maxPoint),t.push(a),n.push(e.mapPos(l));else if(u===!0){let{mapped:c,pos:d}=a.map(l,e);c&&(r=Math.max(r,c.maxPoint),t.push(c),n.push(d))}}let s=this.nextLayer.map(e);return t.length==0?s:new we(n,t,s||we.empty,r)}between(e,t,n){if(!this.isEmpty){for(let r=0;r<this.chunk.length;r++){let s=this.chunkPos[r],i=this.chunk[r];if(t>=s&&e<=s+i.length&&i.between(s,e-s,t-s,n)===!1)return}this.nextLayer.between(e,t,n)}}iter(e=0){return Xo.from([this]).goto(e)}get isEmpty(){return this.nextLayer==this}static iter(e,t=0){return Xo.from(e).goto(t)}static compare(e,t,n,r,s=-1){let i=e.filter(d=>d.maxPoint>0||!d.isEmpty&&d.maxPoint>=s),l=t.filter(d=>d.maxPoint>0||!d.isEmpty&&d.maxPoint>=s),a=ux(i,l,n),u=new Go(i,a,s),c=new Go(l,a,s);n.iterGaps((d,p,f)=>cx(u,d,c,p,f,r)),n.empty&&n.length==0&&cx(u,0,c,0,0,r)}static eq(e,t,n=0,r){r==null&&(r=1e9-1);let s=e.filter(c=>!c.isEmpty&&t.indexOf(c)<0),i=t.filter(c=>!c.isEmpty&&e.indexOf(c)<0);if(s.length!=i.length)return!1;if(!s.length)return!0;let l=ux(s,i),a=new Go(s,l,0).goto(n),u=new Go(i,l,0).goto(n);for(;;){if(a.to!=u.to||!Yd(a.active,u.active)||a.point&&(!u.point||!a.point.eq(u.point)))return!1;if(a.to>r)return!0;a.next(),u.next()}}static spans(e,t,n,r,s=-1){let i=new Go(e,null,s).goto(t),l=t,a=i.openStart;for(;;){let u=Math.min(i.to,n);if(i.point){let c=i.activeForPoint(i.to),d=i.pointFrom<t?c.length+1:Math.min(c.length,a);r.point(l,u,i.point,c,d,i.pointRank),a=Math.min(i.openEnd(u),c.length)}else u>l&&(r.span(l,u,i.active,a),a=i.openEnd(u));if(i.to>n)return a+(i.point&&i.to>n?1:0);l=i.to,i.next()}}static of(e,t=!1){let n=new wn;for(let r of e instanceof Jo?[e]:t?IA(e):e)n.add(r.from,r.to,r.value);return n.finish()}};we.empty=new we([],[],null,-1);function IA(o){if(o.length>1)for(let e=o[0],t=1;t<o.length;t++){let n=o[t];if(Xd(e,n)>0)return o.slice().sort(Xd);e=n}return o}we.empty.nextLayer=we.empty;var wn=class{finishChunk(e){this.chunks.push(new xi(this.from,this.to,this.value,this.maxPoint)),this.chunkPos.push(this.chunkStart),this.chunkStart=-1,this.setMaxPoint=Math.max(this.setMaxPoint,this.maxPoint),this.maxPoint=-1,e&&(this.from=[],this.to=[],this.value=[])}constructor(){this.chunks=[],this.chunkPos=[],this.chunkStart=-1,this.last=null,this.lastFrom=-1e9,this.lastTo=-1e9,this.from=[],this.to=[],this.value=[],this.maxPoint=-1,this.setMaxPoint=-1,this.nextLayer=null}add(e,t,n){this.addInner(e,t,n)||(this.nextLayer||(this.nextLayer=new wn)).add(e,t,n)}addInner(e,t,n){let r=e-this.lastTo||n.startSide-this.last.endSide;if(r<=0&&(e-this.lastFrom||n.startSide-this.last.startSide)<0)throw new Error("Ranges must be added sorted by `from` position and `startSide`");return r<0?!1:(this.from.length==250&&this.finishChunk(!0),this.chunkStart<0&&(this.chunkStart=e),this.from.push(e-this.chunkStart),this.to.push(t-this.chunkStart),this.last=n,this.lastFrom=e,this.lastTo=t,this.value.push(n),n.point&&(this.maxPoint=Math.max(this.maxPoint,t-e)),!0)}addChunk(e,t){if((e-this.lastTo||t.value[0].startSide-this.last.endSide)<0)return!1;this.from.length&&this.finishChunk(!0),this.setMaxPoint=Math.max(this.setMaxPoint,t.maxPoint),this.chunks.push(t),this.chunkPos.push(e);let n=t.value.length-1;return this.last=t.value[n],this.lastFrom=t.from[n]+e,this.lastTo=t.to[n]+e,!0}finish(){return this.finishInner(we.empty)}finishInner(e){if(this.from.length&&this.finishChunk(!1),this.chunks.length==0)return e;let t=we.create(this.chunkPos,this.chunks,this.nextLayer?this.nextLayer.finishInner(e):e,this.setMaxPoint);return this.from=null,t}};function ux(o,e,t){let n=new Map;for(let s of o)for(let i=0;i<s.chunk.length;i++)s.chunk[i].maxPoint<=0&&n.set(s.chunk[i],s.chunkPos[i]);let r=new Set;for(let s of e)for(let i=0;i<s.chunk.length;i++){let l=n.get(s.chunk[i]);l!=null&&(t?t.mapPos(l):l)==s.chunkPos[i]&&!(t!=null&&t.touchesRange(l,l+s.chunk[i].length))&&r.add(s.chunk[i])}return r}var Ra=class{constructor(e,t,n,r=0){this.layer=e,this.skip=t,this.minPoint=n,this.rank=r}get startSide(){return this.value?this.value.startSide:0}get endSide(){return this.value?this.value.endSide:0}goto(e,t=-1e9){return this.chunkIndex=this.rangeIndex=0,this.gotoInner(e,t,!1),this}gotoInner(e,t,n){for(;this.chunkIndex<this.layer.chunk.length;){let r=this.layer.chunk[this.chunkIndex];if(!(this.skip&&this.skip.has(r)||this.layer.chunkEnd(this.chunkIndex)<e||r.maxPoint<this.minPoint))break;this.chunkIndex++,n=!1}if(this.chunkIndex<this.layer.chunk.length){let r=this.layer.chunk[this.chunkIndex].findIndex(e-this.layer.chunkPos[this.chunkIndex],t,!0);(!n||this.rangeIndex<r)&&this.setRangeIndex(r)}this.next()}forward(e,t){(this.to-e||this.endSide-t)<0&&this.gotoInner(e,t,!0)}next(){for(;;)if(this.chunkIndex==this.layer.chunk.length){this.from=this.to=1e9,this.value=null;break}else{let e=this.layer.chunkPos[this.chunkIndex],t=this.layer.chunk[this.chunkIndex],n=e+t.from[this.rangeIndex];if(this.from=n,this.to=e+t.to[this.rangeIndex],this.value=t.value[this.rangeIndex],this.setRangeIndex(this.rangeIndex+1),this.minPoint<0||this.value.point&&this.to-this.from>=this.minPoint)break}}setRangeIndex(e){if(e==this.layer.chunk[this.chunkIndex].value.length){if(this.chunkIndex++,this.skip)for(;this.chunkIndex<this.layer.chunk.length&&this.skip.has(this.layer.chunk[this.chunkIndex]);)this.chunkIndex++;this.rangeIndex=0}else this.rangeIndex=e}nextChunk(){this.chunkIndex++,this.rangeIndex=0,this.next()}compare(e){return this.from-e.from||this.startSide-e.startSide||this.rank-e.rank||this.to-e.to||this.endSide-e.endSide}},Xo=class{constructor(e){this.heap=e}static from(e,t=null,n=-1){let r=[];for(let s=0;s<e.length;s++)for(let i=e[s];!i.isEmpty;i=i.nextLayer)i.maxPoint>=n&&r.push(new Ra(i,t,n,s));return r.length==1?r[0]:new Xo(r)}get startSide(){return this.value?this.value.startSide:0}goto(e,t=-1e9){for(let n of this.heap)n.goto(e,t);for(let n=this.heap.length>>1;n>=0;n--)Wd(this.heap,n);return this.next(),this}forward(e,t){for(let n of this.heap)n.forward(e,t);for(let n=this.heap.length>>1;n>=0;n--)Wd(this.heap,n);(this.to-e||this.value.endSide-t)<0&&this.next()}next(){if(this.heap.length==0)this.from=this.to=1e9,this.value=null,this.rank=-1;else{let e=this.heap[0];this.from=e.from,this.to=e.to,this.value=e.value,this.rank=e.rank,e.value&&e.next(),Wd(this.heap,0)}}};function Wd(o,e){for(let t=o[e];;){let n=(e<<1)+1;if(n>=o.length)break;let r=o[n];if(n+1<o.length&&r.compare(o[n+1])>=0&&(r=o[n+1],n++),t.compare(r)<0)break;o[n]=t,o[e]=r,e=n}}var Go=class{constructor(e,t,n){this.minPoint=n,this.active=[],this.activeTo=[],this.activeRank=[],this.minActive=-1,this.point=null,this.pointFrom=0,this.pointRank=0,this.to=-1e9,this.endSide=0,this.openStart=-1,this.cursor=Xo.from(e,t,n)}goto(e,t=-1e9){return this.cursor.goto(e,t),this.active.length=this.activeTo.length=this.activeRank.length=0,this.minActive=-1,this.to=e,this.endSide=t,this.openStart=-1,this.next(),this}forward(e,t){for(;this.minActive>-1&&(this.activeTo[this.minActive]-e||this.active[this.minActive].endSide-t)<0;)this.removeActive(this.minActive);this.cursor.forward(e,t)}removeActive(e){va(this.active,e),va(this.activeTo,e),va(this.activeRank,e),this.minActive=dx(this.active,this.activeTo)}addActive(e){let t=0,{value:n,to:r,rank:s}=this.cursor;for(;t<this.activeRank.length&&this.activeRank[t]<=s;)t++;Ca(this.active,t,n),Ca(this.activeTo,t,r),Ca(this.activeRank,t,s),e&&Ca(e,t,this.cursor.from),this.minActive=dx(this.active,this.activeTo)}next(){let e=this.to,t=this.point;this.point=null;let n=this.openStart<0?[]:null;for(;;){let r=this.minActive;if(r>-1&&(this.activeTo[r]-this.cursor.from||this.active[r].endSide-this.cursor.startSide)<0){if(this.activeTo[r]>e){this.to=this.activeTo[r],this.endSide=this.active[r].endSide;break}this.removeActive(r),n&&va(n,r)}else if(this.cursor.value)if(this.cursor.from>e){this.to=this.cursor.from,this.endSide=this.cursor.startSide;break}else{let s=this.cursor.value;if(!s.point)this.addActive(n),this.cursor.next();else if(t&&this.cursor.to==this.to&&this.cursor.from<this.cursor.to)this.cursor.next();else{this.point=s,this.pointFrom=this.cursor.from,this.pointRank=this.cursor.rank,this.to=this.cursor.to,this.endSide=s.endSide,this.cursor.next(),this.forward(this.to,this.endSide);break}}else{this.to=this.endSide=1e9;break}}if(n){this.openStart=0;for(let r=n.length-1;r>=0&&n[r]<e;r--)this.openStart++}}activeForPoint(e){if(!this.active.length)return this.active;let t=[];for(let n=this.active.length-1;n>=0&&!(this.activeRank[n]<this.pointRank);n--)(this.activeTo[n]>e||this.activeTo[n]==e&&this.active[n].endSide>=this.point.endSide)&&t.push(this.active[n]);return t.reverse()}openEnd(e){let t=0;for(let n=this.activeTo.length-1;n>=0&&this.activeTo[n]>e;n--)t++;return t}};function cx(o,e,t,n,r,s){o.goto(e),t.goto(n);let i=n+r,l=n,a=n-e;for(;;){let u=o.to+a-t.to||o.endSide-t.endSide,c=u<0?o.to+a:t.to,d=Math.min(c,i);if(o.point||t.point?o.point&&t.point&&(o.point==t.point||o.point.eq(t.point))&&Yd(o.activeForPoint(o.to),t.activeForPoint(t.to))||s.comparePoint(l,d,o.point,t.point):d>l&&!Yd(o.active,t.active)&&s.compareRange(l,d,o.active,t.active),c>i)break;l=c,u<=0&&o.next(),u>=0&&t.next()}}function Yd(o,e){if(o.length!=e.length)return!1;for(let t=0;t<o.length;t++)if(o[t]!=e[t]&&!o[t].eq(e[t]))return!1;return!0}function va(o,e){for(let t=e,n=o.length-1;t<n;t++)o[t]=o[t+1];o.pop()}function Ca(o,e,t){for(let n=o.length-1;n>=e;n--)o[n+1]=o[n];o[e]=t}function dx(o,e){let t=-1,n=1e9;for(let r=0;r<e.length;r++)(e[r]-n||o[r].endSide-o[t].endSide)<0&&(t=r,n=e[r]);return t}function er(o,e,t=o.length){let n=0;for(let r=0;r<t;)o.charCodeAt(r)==9?(n+=e-n%e,r++):(n++,r=pt(o,r));return n}function Rx(o,e,t,n){for(let r=0,s=0;;){if(s>=e)return r;if(r==o.length)break;s+=o.charCodeAt(r)==9?t-s%t:1,r=pt(o,r)}return n===!0?-1:o.length}var tp="\u037C",Dx=typeof Symbol>"u"?"__"+tp:Symbol.for(tp),np=typeof Symbol>"u"?"__styleSet"+Math.floor(Math.random()*1e8):Symbol("styleSet"),Px=typeof globalThis<"u"?globalThis:typeof window<"u"?window:{},_t=class{constructor(e,t){this.rules=[];let{finish:n}=t||{};function r(i){return/^@/.test(i)?[i]:i.split(/,\s*/)}function s(i,l,a,u){let c=[],d=/^@(\w+)\b/.exec(i[0]),p=d&&d[1]=="keyframes";if(d&&l==null)return a.push(i[0]+";");for(let f in l){let h=l[f];if(/&/.test(f))s(f.split(/,\s*/).map(g=>i.map(m=>g.replace(/&/,m))).reduce((g,m)=>g.concat(m)),h,a);else if(h&&typeof h=="object"){if(!d)throw new RangeError("The value of a property ("+f+") should be a primitive value.");s(r(f),h,c,p)}else h!=null&&c.push(f.replace(/_.*/,"").replace(/[A-Z]/g,g=>"-"+g.toLowerCase())+": "+h+";")}(c.length||p)&&a.push((n&&!d&&!u?i.map(n):i).join(", ")+" {"+c.join(" ")+"}")}for(let i in e)s(r(i),e[i],this.rules)}getRules(){return this.rules.join(`
24
- `)}static newName(){let e=Px[Dx]||1;return Px[Dx]=e+1,tp+e.toString(36)}static mount(e,t){(e[np]||new op(e)).mount(Array.isArray(t)?t:[t])}},kx=new Map,op=class{constructor(e){let t=e.ownerDocument||e,n=t.defaultView;if(!e.head&&e.adoptedStyleSheets&&n.CSSStyleSheet){let r=kx.get(t);if(r)return e.adoptedStyleSheets=[r.sheet,...e.adoptedStyleSheets],e[np]=r;this.sheet=new n.CSSStyleSheet,e.adoptedStyleSheets=[this.sheet,...e.adoptedStyleSheets],kx.set(t,this)}else{this.styleTag=t.createElement("style");let r=e.head||e;r.insertBefore(this.styleTag,r.firstChild)}this.modules=[],e[np]=this}mount(e){let t=this.sheet,n=0,r=0;for(let s=0;s<e.length;s++){let i=e[s],l=this.modules.indexOf(i);if(l<r&&l>-1&&(this.modules.splice(l,1),r--,l=-1),l==-1){if(this.modules.splice(r++,0,i),t)for(let a=0;a<i.rules.length;a++)t.insertRule(i.rules[a],n++)}else{for(;r<l;)n+=this.modules[r++].rules.length;n+=i.rules.length,r++}}if(!t){let s="";for(let i=0;i<this.modules.length;i++)s+=this.modules[i].getRules()+`
25
- `;this.styleTag.textContent=s}}};var Gn={8:"Backspace",9:"Tab",10:"Enter",12:"NumLock",13:"Enter",16:"Shift",17:"Control",18:"Alt",20:"CapsLock",27:"Escape",32:" ",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"ArrowLeft",38:"ArrowUp",39:"ArrowRight",40:"ArrowDown",44:"PrintScreen",45:"Insert",46:"Delete",59:";",61:"=",91:"Meta",92:"Meta",106:"*",107:"+",108:",",109:"-",110:".",111:"/",144:"NumLock",145:"ScrollLock",160:"Shift",161:"Shift",162:"Control",163:"Control",164:"Alt",165:"Alt",173:"-",186:";",187:"=",188:",",189:"-",190:".",191:"/",192:"`",219:"[",220:"\\",221:"]",222:"'"},ts={48:")",49:"!",50:"@",51:"#",52:"$",53:"%",54:"^",55:"&",56:"*",57:"(",59:":",61:"+",173:"_",186:":",187:"+",188:"<",189:"_",190:">",191:"?",192:"~",219:"{",220:"|",221:"}",222:'"'},LA=typeof navigator<"u"&&/Mac/.test(navigator.platform),AA=typeof navigator<"u"&&/MSIE \d|Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(navigator.userAgent);for(qe=0;qe<10;qe++)Gn[48+qe]=Gn[96+qe]=String(qe);var qe;for(qe=1;qe<=24;qe++)Gn[qe+111]="F"+qe;var qe;for(qe=65;qe<=90;qe++)Gn[qe]=String.fromCharCode(qe+32),ts[qe]=String.fromCharCode(qe);var qe;for(Da in Gn)ts.hasOwnProperty(Da)||(ts[Da]=Gn[Da]);var Da;function Ix(o){var e=LA&&o.metaKey&&o.shiftKey&&!o.ctrlKey&&!o.altKey||AA&&o.shiftKey&&o.key&&o.key.length==1||o.key=="Unidentified",t=!e&&o.key||(o.shiftKey?ts:Gn)[o.keyCode]||o.key||"Unidentified";return t=="Esc"&&(t="Escape"),t=="Del"&&(t="Delete"),t=="Left"&&(t="ArrowLeft"),t=="Up"&&(t="ArrowUp"),t=="Right"&&(t="ArrowRight"),t=="Down"&&(t="ArrowDown"),t}function $a(o){let e;return o.nodeType==11?e=o.getSelection?o:o.ownerDocument:e=o,e.getSelection()}function up(o,e){return e?o==e||o.contains(e.nodeType!=1?e.parentNode:e):!1}function OA(o){let e=o.activeElement;for(;e&&e.shadowRoot;)e=e.shadowRoot.activeElement;return e}function Ha(o,e){if(!e.anchorNode)return!1;try{return up(o,e.anchorNode)}catch{return!1}}function Ei(o){return o.nodeType==3?nr(o,0,o.nodeValue.length).getClientRects():o.nodeType==1?o.getClientRects():[]}function Wa(o,e,t,n){return t?Lx(o,e,t,n,-1)||Lx(o,e,t,n,1):!1}function _a(o){for(var e=0;;e++)if(o=o.previousSibling,!o)return e}function Lx(o,e,t,n,r){for(;;){if(o==t&&e==n)return!0;if(e==(r<0?0:go(o))){if(o.nodeName=="DIV")return!1;let s=o.parentNode;if(!s||s.nodeType!=1)return!1;e=_a(o)+(r<0?0:1),o=s}else if(o.nodeType==1){if(o=o.childNodes[e+(r<0?-1:0)],o.nodeType==1&&o.contentEditable=="false")return!1;e=r<0?go(o):0}else return!1}}function go(o){return o.nodeType==3?o.nodeValue.length:o.childNodes.length}function _p(o,e){let t=e?o.left:o.right;return{left:t,right:t,top:o.top,bottom:o.bottom}}function NA(o){return{left:0,right:o.innerWidth,top:0,bottom:o.innerHeight}}function HA(o,e,t,n,r,s,i,l){let a=o.ownerDocument,u=a.defaultView||window;for(let c=o,d=!1;c&&!d;)if(c.nodeType==1){let p,f=c==a.body;if(f)p=NA(u);else{if(/^(fixed|sticky)$/.test(getComputedStyle(c).position)&&(d=!0),c.scrollHeight<=c.clientHeight&&c.scrollWidth<=c.clientWidth){c=c.assignedSlot||c.parentNode;continue}let m=c.getBoundingClientRect();p={left:m.left,right:m.left+c.clientWidth,top:m.top,bottom:m.top+c.clientHeight}}let h=0,g=0;if(r=="nearest")e.top<p.top?(g=-(p.top-e.top+i),t>0&&e.bottom>p.bottom+g&&(g=e.bottom-p.bottom+g+i)):e.bottom>p.bottom&&(g=e.bottom-p.bottom+i,t<0&&e.top-g<p.top&&(g=-(p.top+g-e.top+i)));else{let m=e.bottom-e.top,y=p.bottom-p.top;g=(r=="center"&&m<=y?e.top+m/2-y/2:r=="start"||r=="center"&&t<0?e.top-i:e.bottom-y+i)-p.top}if(n=="nearest"?e.left<p.left?(h=-(p.left-e.left+s),t>0&&e.right>p.right+h&&(h=e.right-p.right+h+s)):e.right>p.right&&(h=e.right-p.right+s,t<0&&e.left<p.left+h&&(h=-(p.left+h-e.left+s))):h=(n=="center"?e.left+(e.right-e.left)/2-(p.right-p.left)/2:n=="start"==l?e.left-s:e.right-(p.right-p.left)+s)-p.left,h||g)if(f)u.scrollBy(h,g);else{let m=0,y=0;if(g){let w=c.scrollTop;c.scrollTop+=g,y=c.scrollTop-w}if(h){let w=c.scrollLeft;c.scrollLeft+=h,m=c.scrollLeft-w}e={left:e.left-m,top:e.top-y,right:e.right-m,bottom:e.bottom-y},m&&Math.abs(m-h)<1&&(n="nearest"),y&&Math.abs(y-g)<1&&(r="nearest")}if(f)break;c=c.assignedSlot||c.parentNode}else if(c.nodeType==11)c=c.host;else break}function FA(o){let e=o.ownerDocument;for(let t=o.parentNode;t&&t!=e.body;)if(t.nodeType==1){if(t.scrollHeight>t.clientHeight||t.scrollWidth>t.clientWidth)return t;t=t.assignedSlot||t.parentNode}else if(t.nodeType==11)t=t.host;else break;return null}var cp=class{constructor(){this.anchorNode=null,this.anchorOffset=0,this.focusNode=null,this.focusOffset=0}eq(e){return this.anchorNode==e.anchorNode&&this.anchorOffset==e.anchorOffset&&this.focusNode==e.focusNode&&this.focusOffset==e.focusOffset}setRange(e){let{anchorNode:t,focusNode:n}=e;this.set(t,Math.min(e.anchorOffset,t?go(t):0),n,Math.min(e.focusOffset,n?go(n):0))}set(e,t,n,r){this.anchorNode=e,this.anchorOffset=t,this.focusNode=n,this.focusOffset=r}},ns=null;function dv(o){if(o.setActive)return o.setActive();if(ns)return o.focus(ns);let e=[];for(let t=o;t&&(e.push(t,t.scrollTop,t.scrollLeft),t!=t.ownerDocument);t=t.parentNode);if(o.focus(ns==null?{get preventScroll(){return ns={preventScroll:!0},!0}}:void 0),!ns){ns=!1;for(let t=0;t<e.length;){let n=e[t++],r=e[t++],s=e[t++];n.scrollTop!=r&&(n.scrollTop=r),n.scrollLeft!=s&&(n.scrollLeft=s)}}}var Ax;function nr(o,e,t=e){let n=Ax||(Ax=document.createRange());return n.setEnd(o,t),n.setStart(o,e),n}function ss(o,e,t){let n={key:e,code:e,keyCode:t,which:t,cancelable:!0},r=new KeyboardEvent("keydown",n);r.synthetic=!0,o.dispatchEvent(r);let s=new KeyboardEvent("keyup",n);return s.synthetic=!0,o.dispatchEvent(s),r.defaultPrevented||s.defaultPrevented}function VA(o){for(;o;){if(o&&(o.nodeType==9||o.nodeType==11&&o.host))return o;o=o.assignedSlot||o.parentNode}return null}function pv(o){for(;o.attributes.length;)o.removeAttributeNode(o.attributes[0])}function BA(o,e){let t=e.focusNode,n=e.focusOffset;if(!t||e.anchorNode!=t||e.anchorOffset!=n)return!1;for(n=Math.min(n,go(t));;)if(n){if(t.nodeType!=1)return!1;let r=t.childNodes[n-1];r.contentEditable=="false"?n--:(t=r,n=go(t))}else{if(t==o)return!0;n=_a(t),t=t.parentNode}}function fv(o){return o.scrollTop>Math.max(1,o.scrollHeight-o.clientHeight-4)}var st=class{constructor(e,t,n=!0){this.node=e,this.offset=t,this.precise=n}static before(e,t){return new st(e.parentNode,_a(e),t)}static after(e,t){return new st(e.parentNode,_a(e)+1,t)}},Kp=[],Ce=class{constructor(){this.parent=null,this.dom=null,this.flags=2}get overrideDOMText(){return null}get posAtStart(){return this.parent?this.parent.posBefore(this):0}get posAtEnd(){return this.posAtStart+this.length}posBefore(e){let t=this.posAtStart;for(let n of this.children){if(n==e)return t;t+=n.length+n.breakAfter}throw new RangeError("Invalid child in posBefore")}posAfter(e){return this.posBefore(e)+e.length}sync(e,t){if(this.flags&2){let n=this.dom,r=null,s;for(let i of this.children){if(i.flags&7){if(!i.dom&&(s=r?r.nextSibling:n.firstChild)){let l=Ce.get(s);(!l||!l.parent&&l.canReuseDOM(i))&&i.reuseDOM(s)}i.sync(e,t),i.flags&=-8}if(s=r?r.nextSibling:n.firstChild,t&&!t.written&&t.node==n&&s!=i.dom&&(t.written=!0),i.dom.parentNode==n)for(;s&&s!=i.dom;)s=Ox(s);else n.insertBefore(i.dom,s);r=i.dom}for(s=r?r.nextSibling:n.firstChild,s&&t&&t.node==n&&(t.written=!0);s;)s=Ox(s)}else if(this.flags&1)for(let n of this.children)n.flags&7&&(n.sync(e,t),n.flags&=-8)}reuseDOM(e){}localPosFromDOM(e,t){let n;if(e==this.dom)n=this.dom.childNodes[t];else{let r=go(e)==0?0:t==0?-1:1;for(;;){let s=e.parentNode;if(s==this.dom)break;r==0&&s.firstChild!=s.lastChild&&(e==s.firstChild?r=-1:r=1),e=s}r<0?n=e:n=e.nextSibling}if(n==this.dom.firstChild)return 0;for(;n&&!Ce.get(n);)n=n.nextSibling;if(!n)return this.length;for(let r=0,s=0;;r++){let i=this.children[r];if(i.dom==n)return s;s+=i.length+i.breakAfter}}domBoundsAround(e,t,n=0){let r=-1,s=-1,i=-1,l=-1;for(let a=0,u=n,c=n;a<this.children.length;a++){let d=this.children[a],p=u+d.length;if(u<e&&p>t)return d.domBoundsAround(e,t,u);if(p>=e&&r==-1&&(r=a,s=u),u>t&&d.dom.parentNode==this.dom){i=a,l=c;break}c=p,u=p+d.breakAfter}return{from:s,to:l<0?n+this.length:l,startDOM:(r?this.children[r-1].dom.nextSibling:null)||this.dom.firstChild,endDOM:i<this.children.length&&i>=0?this.children[i].dom:null}}markDirty(e=!1){this.flags|=2,this.markParentsDirty(e)}markParentsDirty(e){for(let t=this.parent;t;t=t.parent){if(e&&(t.flags|=2),t.flags&1)return;t.flags|=1,e=!1}}setParent(e){this.parent!=e&&(this.parent=e,this.flags&7&&this.markParentsDirty(!0))}setDOM(e){this.dom&&(this.dom.cmView=null),this.dom=e,e.cmView=this}get rootView(){for(let e=this;;){let t=e.parent;if(!t)return e;e=t}}replaceChildren(e,t,n=Kp){this.markDirty();for(let r=e;r<t;r++){let s=this.children[r];s.parent==this&&s.destroy()}this.children.splice(e,t-e,...n);for(let r=0;r<n.length;r++)n[r].setParent(this)}ignoreMutation(e){return!1}ignoreEvent(e){return!1}childCursor(e=this.length){return new Ka(this.children,e,this.children.length)}childPos(e,t=1){return this.childCursor().findPos(e,t)}toString(){let e=this.constructor.name.replace("View","");return e+(this.children.length?"("+this.children.join()+")":this.length?"["+(e=="Text"?this.text:this.length)+"]":"")+(this.breakAfter?"#":"")}static get(e){return e.cmView}get isEditable(){return!0}get isWidget(){return!1}get isHidden(){return!1}merge(e,t,n,r,s,i){return!1}become(e){return!1}canReuseDOM(e){return e.constructor==this.constructor&&!((this.flags|e.flags)&8)}getSide(){return 0}destroy(){this.parent=null}};Ce.prototype.breakAfter=0;function Ox(o){let e=o.nextSibling;return o.parentNode.removeChild(o),e}var Ka=class{constructor(e,t,n){this.children=e,this.pos=t,this.i=n,this.off=0}findPos(e,t=1){for(;;){if(e>this.pos||e==this.pos&&(t>0||this.i==0||this.children[this.i-1].breakAfter))return this.off=e-this.pos,this;let n=this.children[--this.i];this.pos-=n.length+n.breakAfter}}};function hv(o,e,t,n,r,s,i,l,a){let{children:u}=o,c=u.length?u[e]:null,d=s.length?s[s.length-1]:null,p=d?d.breakAfter:i;if(!(e==n&&c&&!i&&!p&&s.length<2&&c.merge(t,r,s.length?d:null,t==0,l,a))){if(n<u.length){let f=u[n];f&&r<f.length?(e==n&&(f=f.split(r),r=0),!p&&d&&f.merge(0,r,d,!0,0,a)?s[s.length-1]=f:(r&&f.merge(0,r,null,!1,0,a),s.push(f))):f!=null&&f.breakAfter&&(d?d.breakAfter=1:i=1),n++}for(c&&(c.breakAfter=i,t>0&&(!i&&s.length&&c.merge(t,c.length,s[0],!1,l,0)?c.breakAfter=s.shift().breakAfter:(t<c.length||c.children.length&&c.children[c.children.length-1].length==0)&&c.merge(t,c.length,null,!1,l,0),e++));e<n&&s.length;)if(u[n-1].become(s[s.length-1]))n--,s.pop(),a=s.length?0:l;else if(u[e].become(s[0]))e++,s.shift(),l=s.length?0:a;else break;!s.length&&e&&n<u.length&&!u[e-1].breakAfter&&u[n].merge(0,0,u[e-1],!1,l,a)&&e--,(e<n||s.length)&&o.replaceChildren(e,n,s)}}function mv(o,e,t,n,r,s){let i=o.childCursor(),{i:l,off:a}=i.findPos(t,1),{i:u,off:c}=i.findPos(e,-1),d=e-t;for(let p of n)d+=p.length;o.length+=d,hv(o,u,c,l,a,n,0,r,s)}var os="\uFFFF",Ua=class{constructor(e,t){this.points=e,this.text="",this.lineSeparator=t.facet(be.lineSeparator)}append(e){this.text+=e}lineBreak(){this.text+=os}readRange(e,t){if(!e)return this;let n=e.parentNode;for(let r=e;;){this.findPointBefore(n,r);let s=this.text.length;this.readNode(r);let i=r.nextSibling;if(i==t)break;let l=Ce.get(r),a=Ce.get(i);(l&&a?l.breakAfter:(l?l.breakAfter:Nx(r))||Nx(i)&&(r.nodeName!="BR"||r.cmIgnore)&&this.text.length>s)&&this.lineBreak(),r=i}return this.findPointBefore(n,t),this}readTextNode(e){let t=e.nodeValue;for(let n of this.points)n.node==e&&(n.pos=this.text.length+Math.min(n.offset,t.length));for(let n=0,r=this.lineSeparator?null:/\r\n?|\n/g;;){let s=-1,i=1,l;if(this.lineSeparator?(s=t.indexOf(this.lineSeparator,n),i=this.lineSeparator.length):(l=r.exec(t))&&(s=l.index,i=l[0].length),this.append(t.slice(n,s<0?t.length:s)),s<0)break;if(this.lineBreak(),i>1)for(let a of this.points)a.node==e&&a.pos>this.text.length&&(a.pos-=i-1);n=s+i}}readNode(e){if(e.cmIgnore)return;let t=Ce.get(e),n=t&&t.overrideDOMText;if(n!=null){this.findPointInside(e,n.length);for(let r=n.iter();!r.next().done;)r.lineBreak?this.lineBreak():this.append(r.value)}else e.nodeType==3?this.readTextNode(e):e.nodeName=="BR"?e.nextSibling&&this.lineBreak():e.nodeType==1&&this.readRange(e.firstChild,null)}findPointBefore(e,t){for(let n of this.points)n.node==e&&e.childNodes[n.offset]==t&&(n.pos=this.text.length)}findPointInside(e,t){for(let n of this.points)(e.nodeType==3?n.node==e:e.contains(n.node))&&(n.pos=this.text.length+Math.min(t,n.offset))}};function Nx(o){return o.nodeType==1&&/^(DIV|P|LI|UL|OL|BLOCKQUOTE|DD|DT|H\d|SECTION|PRE)$/.test(o.nodeName)}var Ga=class{constructor(e,t){this.node=e,this.offset=t,this.pos=-1}},Ot=typeof navigator<"u"?navigator:{userAgent:"",vendor:"",platform:""},dp=typeof document<"u"?document:{documentElement:{style:{}}},pp=/Edge\/(\d+)/.exec(Ot.userAgent),gv=/MSIE \d/.test(Ot.userAgent),fp=/Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(Ot.userAgent),Ya=!!(gv||fp||pp),Hx=!Ya&&/gecko\/(\d+)/i.test(Ot.userAgent),rp=!Ya&&/Chrome\/(\d+)/.exec(Ot.userAgent),Fx="webkitFontSmoothing"in dp.documentElement.style,bv=!Ya&&/Apple Computer/.test(Ot.vendor),Vx=bv&&(/Mobile\/\w+/.test(Ot.userAgent)||Ot.maxTouchPoints>2),Z={mac:Vx||/Mac/.test(Ot.platform),windows:/Win/.test(Ot.platform),linux:/Linux|X11/.test(Ot.platform),ie:Ya,ie_version:gv?dp.documentMode||6:fp?+fp[1]:pp?+pp[1]:0,gecko:Hx,gecko_version:Hx?+(/Firefox\/(\d+)/.exec(Ot.userAgent)||[0,0])[1]:0,chrome:!!rp,chrome_version:rp?+rp[1]:0,ios:Vx,android:/Android\b/.test(Ot.userAgent),webkit:Fx,safari:bv,webkit_version:Fx?+(/\bAppleWebKit\/(\d+)/.exec(navigator.userAgent)||[0,0])[1]:0,tabSize:dp.documentElement.style.tabSize!=null?"tab-size":"-moz-tab-size"},zA=256,Ut=class extends Ce{constructor(e){super(),this.text=e}get length(){return this.text.length}createDOM(e){this.setDOM(e||document.createTextNode(this.text))}sync(e,t){this.dom||this.createDOM(),this.dom.nodeValue!=this.text&&(t&&t.node==this.dom&&(t.written=!0),this.dom.nodeValue=this.text)}reuseDOM(e){e.nodeType==3&&this.createDOM(e)}merge(e,t,n){return this.flags&8||n&&(!(n instanceof Ut)||this.length-(t-e)+n.length>zA||n.flags&8)?!1:(this.text=this.text.slice(0,e)+(n?n.text:"")+this.text.slice(t),this.markDirty(),!0)}split(e){let t=new Ut(this.text.slice(e));return this.text=this.text.slice(0,e),this.markDirty(),t.flags|=this.flags&8,t}localPosFromDOM(e,t){return e==this.dom?t:t?this.text.length:0}domAtPos(e){return new st(this.dom,e)}domBoundsAround(e,t,n){return{from:n,to:n+this.length,startDOM:this.dom,endDOM:this.dom.nextSibling}}coordsAt(e,t){return $A(this.dom,e,t)}},cn=class extends Ce{constructor(e,t=[],n=0){super(),this.mark=e,this.children=t,this.length=n;for(let r of t)r.setParent(this)}setAttrs(e){if(pv(e),this.mark.class&&(e.className=this.mark.class),this.mark.attrs)for(let t in this.mark.attrs)e.setAttribute(t,this.mark.attrs[t]);return e}canReuseDOM(e){return super.canReuseDOM(e)&&!((this.flags|e.flags)&8)}reuseDOM(e){e.nodeName==this.mark.tagName.toUpperCase()&&(this.setDOM(e),this.flags|=6)}sync(e,t){this.dom?this.flags&4&&this.setAttrs(this.dom):this.setDOM(this.setAttrs(document.createElement(this.mark.tagName))),super.sync(e,t)}merge(e,t,n,r,s,i){return n&&(!(n instanceof cn&&n.mark.eq(this.mark))||e&&s<=0||t<this.length&&i<=0)?!1:(mv(this,e,t,n?n.children:[],s-1,i-1),this.markDirty(),!0)}split(e){let t=[],n=0,r=-1,s=0;for(let l of this.children){let a=n+l.length;a>e&&t.push(n<e?l.split(e-n):l),r<0&&n>=e&&(r=s),n=a,s++}let i=this.length-e;return this.length=e,r>-1&&(this.children.length=r,this.markDirty()),new cn(this.mark,t,i)}domAtPos(e){return yv(this,e)}coordsAt(e,t){return vv(this,e,t)}};function $A(o,e,t){let n=o.nodeValue.length;e>n&&(e=n);let r=e,s=e,i=0;e==0&&t<0||e==n&&t>=0?Z.chrome||Z.gecko||(e?(r--,i=1):s<n&&(s++,i=-1)):t<0?r--:s<n&&s++;let l=nr(o,r,s).getClientRects();if(!l.length)return null;let a=l[(i?i<0:t>=0)?0:l.length-1];return Z.safari&&!i&&a.width==0&&(a=Array.prototype.find.call(l,u=>u.width)||a),i?_p(a,i<0):a||null}var qn=class extends Ce{constructor(e,t,n){super(),this.widget=e,this.length=t,this.side=n,this.prevWidget=null}static create(e,t,n){return new qn(e,t,n)}split(e){let t=qn.create(this.widget,this.length-e,this.side);return this.length-=e,t}sync(e){(!this.dom||!this.widget.updateDOM(this.dom,e))&&(this.dom&&this.prevWidget&&this.prevWidget.destroy(this.dom),this.prevWidget=null,this.setDOM(this.widget.toDOM(e)),this.dom.contentEditable="false")}getSide(){return this.side}merge(e,t,n,r,s,i){return n&&(!(n instanceof qn)||!this.widget.compare(n.widget)||e>0&&s<=0||t<this.length&&i<=0)?!1:(this.length=e+(n?n.length:0)+(this.length-t),!0)}become(e){return e instanceof qn&&e.side==this.side&&this.widget.constructor==e.widget.constructor?(this.widget.compare(e.widget)||this.markDirty(!0),this.dom&&!this.prevWidget&&(this.prevWidget=this.widget),this.widget=e.widget,this.length=e.length,!0):!1}ignoreMutation(){return!0}ignoreEvent(e){return this.widget.ignoreEvent(e)}get overrideDOMText(){if(this.length==0)return me.empty;let e=this;for(;e.parent;)e=e.parent;let{view:t}=e,n=t&&t.state.doc,r=this.posAtStart;return n?n.slice(r,r+this.length):me.empty}domAtPos(e){return(this.length?e==0:this.side>0)?st.before(this.dom):st.after(this.dom,e==this.length)}domBoundsAround(){return null}coordsAt(e,t){let n=this.widget.coordsAt(this.dom,e,t);if(n)return n;let r=this.dom.getClientRects(),s=null;if(!r.length)return null;let i=this.side?this.side<0:e>0;for(let l=i?r.length-1:0;s=r[l],!(e>0?l==0:l==r.length-1||s.top<s.bottom);l+=i?-1:1);return _p(s,!i)}get isEditable(){return!1}get isWidget(){return!0}get isHidden(){return this.widget.isHidden}destroy(){super.destroy(),this.dom&&this.widget.destroy(this.dom)}},bo=class extends Ce{constructor(e){super(),this.side=e}get length(){return 0}merge(){return!1}become(e){return e instanceof bo&&e.side==this.side}split(){return new bo(this.side)}sync(){if(!this.dom){let e=document.createElement("img");e.className="cm-widgetBuffer",e.setAttribute("aria-hidden","true"),this.setDOM(e)}}getSide(){return this.side}domAtPos(e){return this.side>0?st.before(this.dom):st.after(this.dom)}localPosFromDOM(){return 0}domBoundsAround(){return null}coordsAt(e){return this.dom.getBoundingClientRect()}get overrideDOMText(){return me.empty}get isHidden(){return!0}};Ut.prototype.children=qn.prototype.children=bo.prototype.children=Kp;function yv(o,e){let t=o.dom,{children:n}=o,r=0;for(let s=0;r<n.length;r++){let i=n[r],l=s+i.length;if(!(l==s&&i.getSide()<=0)){if(e>s&&e<l&&i.dom.parentNode==t)return i.domAtPos(e-s);if(e<=s)break;s=l}}for(let s=r;s>0;s--){let i=n[s-1];if(i.dom.parentNode==t)return i.domAtPos(i.length)}for(let s=r;s<n.length;s++){let i=n[s];if(i.dom.parentNode==t)return i.domAtPos(0)}return new st(t,0)}function xv(o,e,t){let n,{children:r}=o;t>0&&e instanceof cn&&r.length&&(n=r[r.length-1])instanceof cn&&n.mark.eq(e.mark)?xv(n,e.children[0],t-1):(r.push(e),e.setParent(o)),o.length+=e.length}function vv(o,e,t){let n=null,r=-1,s=null,i=-1;function l(u,c){for(let d=0,p=0;d<u.children.length&&p<=c;d++){let f=u.children[d],h=p+f.length;h>=c&&(f.children.length?l(f,c-p):(!s||s.isHidden&&t>0)&&(h>c||p==h&&f.getSide()>0)?(s=f,i=c-p):(p<c||p==h&&f.getSide()<0&&!f.isHidden)&&(n=f,r=c-p)),p=h}}l(o,e);let a=(t<0?n:s)||n||s;return a?a.coordsAt(Math.max(0,a==n?r:i),t):WA(o)}function WA(o){let e=o.dom.lastChild;if(!e)return o.dom.getBoundingClientRect();let t=Ei(e);return t[t.length-1]||null}function hp(o,e){for(let t in o)t=="class"&&e.class?e.class+=" "+o.class:t=="style"&&e.style?e.style+=";"+o.style:e[t]=o[t];return e}var Bx=Object.create(null);function Up(o,e,t){if(o==e)return!0;o||(o=Bx),e||(e=Bx);let n=Object.keys(o),r=Object.keys(e);if(n.length-(t&&n.indexOf(t)>-1?1:0)!=r.length-(t&&r.indexOf(t)>-1?1:0))return!1;for(let s of n)if(s!=t&&(r.indexOf(s)==-1||o[s]!==e[s]))return!1;return!0}function mp(o,e,t){let n=null;if(e)for(let r in e)t&&r in t||o.removeAttribute(n=r);if(t)for(let r in t)e&&e[r]==t[r]||o.setAttribute(n=r,t[r]);return!!n}function _A(o){let e=Object.create(null);for(let t=0;t<o.attributes.length;t++){let n=o.attributes[t];e[n.name]=n.value}return e}var jn=class{eq(e){return!1}updateDOM(e,t){return!1}compare(e){return this==e||this.constructor==e.constructor&&this.eq(e)}get estimatedHeight(){return-1}get lineBreaks(){return 0}ignoreEvent(e){return!0}coordsAt(e,t,n){return null}get isHidden(){return!1}destroy(e){}},Ke=function(o){return o[o.Text=0]="Text",o[o.WidgetBefore=1]="WidgetBefore",o[o.WidgetAfter=2]="WidgetAfter",o[o.WidgetRange=3]="WidgetRange",o}(Ke||(Ke={})),Xe=class extends un{constructor(e,t,n,r){super(),this.startSide=e,this.endSide=t,this.widget=n,this.spec=r}get heightRelevant(){return!1}static mark(e){return new or(e)}static widget(e){let t=Math.max(-1e4,Math.min(1e4,e.side||0)),n=!!e.block;return t+=n&&!e.inlineOrder?t>0?3e8:-4e8:t>0?1e8:-1e8,new Mn(e,t,t,n,e.widget||null,!1)}static replace(e){let t=!!e.block,n,r;if(e.isBlockGap)n=-5e8,r=4e8;else{let{start:s,end:i}=Cv(e,t);n=(s?t?-3e8:-1:5e8)-1,r=(i?t?2e8:1:-6e8)+1}return new Mn(e,n,r,t,e.widget||null,!0)}static line(e){return new rr(e)}static set(e,t=!1){return we.of(e,t)}hasHeight(){return this.widget?this.widget.estimatedHeight>-1:!1}};Xe.none=we.empty;var or=class extends Xe{constructor(e){let{start:t,end:n}=Cv(e);super(t?-1:5e8,n?1:-6e8,null,e),this.tagName=e.tagName||"span",this.class=e.class||"",this.attrs=e.attributes||null}eq(e){var t,n;return this==e||e instanceof or&&this.tagName==e.tagName&&(this.class||((t=this.attrs)===null||t===void 0?void 0:t.class))==(e.class||((n=e.attrs)===null||n===void 0?void 0:n.class))&&Up(this.attrs,e.attrs,"class")}range(e,t=e){if(e>=t)throw new RangeError("Mark decorations may not be empty");return super.range(e,t)}};or.prototype.point=!1;var rr=class extends Xe{constructor(e){super(-2e8,-2e8,null,e)}eq(e){return e instanceof rr&&this.spec.class==e.spec.class&&Up(this.spec.attributes,e.spec.attributes)}range(e,t=e){if(t!=e)throw new RangeError("Line decoration ranges must be zero-length");return super.range(e,t)}};rr.prototype.mapMode=dt.TrackBefore;rr.prototype.point=!0;var Mn=class extends Xe{constructor(e,t,n,r,s,i){super(t,n,s,e),this.block=r,this.isReplace=i,this.mapMode=r?t<=0?dt.TrackBefore:dt.TrackAfter:dt.TrackDel}get type(){return this.startSide<this.endSide?Ke.WidgetRange:this.startSide<=0?Ke.WidgetBefore:Ke.WidgetAfter}get heightRelevant(){return this.block||!!this.widget&&(this.widget.estimatedHeight>=5||this.widget.lineBreaks>0)}eq(e){return e instanceof Mn&&KA(this.widget,e.widget)&&this.block==e.block&&this.startSide==e.startSide&&this.endSide==e.endSide}range(e,t=e){if(this.isReplace&&(e>t||e==t&&this.startSide>0&&this.endSide<=0))throw new RangeError("Invalid range for replacement decoration");if(!this.isReplace&&t!=e)throw new RangeError("Widget decorations can only have zero-length ranges");return super.range(e,t)}};Mn.prototype.point=!0;function Cv(o,e=!1){let{inclusiveStart:t,inclusiveEnd:n}=o;return t==null&&(t=o.inclusive),n==null&&(n=o.inclusive),{start:t!=null?t:e,end:n!=null?n:e}}function KA(o,e){return o==e||!!(o&&e&&o.compare(e))}function gp(o,e,t,n=0){let r=t.length-1;r>=0&&t[r]+n>=o?t[r]=Math.max(t[r],e):t.push(o,e)}var rt=class extends Ce{constructor(){super(...arguments),this.children=[],this.length=0,this.prevAttrs=void 0,this.attrs=null,this.breakAfter=0}merge(e,t,n,r,s,i){if(n){if(!(n instanceof rt))return!1;this.dom||n.transferDOM(this)}return r&&this.setDeco(n?n.attrs:null),mv(this,e,t,n?n.children:[],s,i),!0}split(e){let t=new rt;if(t.breakAfter=this.breakAfter,this.length==0)return t;let{i:n,off:r}=this.childPos(e);r&&(t.append(this.children[n].split(r),0),this.children[n].merge(r,this.children[n].length,null,!1,0,0),n++);for(let s=n;s<this.children.length;s++)t.append(this.children[s],0);for(;n>0&&this.children[n-1].length==0;)this.children[--n].destroy();return this.children.length=n,this.markDirty(),this.length=e,t}transferDOM(e){this.dom&&(this.markDirty(),e.setDOM(this.dom),e.prevAttrs=this.prevAttrs===void 0?this.attrs:this.prevAttrs,this.prevAttrs=void 0,this.dom=null)}setDeco(e){Up(this.attrs,e)||(this.dom&&(this.prevAttrs=this.attrs,this.markDirty()),this.attrs=e)}append(e,t){xv(this,e,t)}addLineDeco(e){let t=e.spec.attributes,n=e.spec.class;t&&(this.attrs=hp(t,this.attrs||{})),n&&(this.attrs=hp({class:n},this.attrs||{}))}domAtPos(e){return yv(this,e)}reuseDOM(e){e.nodeName=="DIV"&&(this.setDOM(e),this.flags|=6)}sync(e,t){var n;this.dom?this.flags&4&&(pv(this.dom),this.dom.className="cm-line",this.prevAttrs=this.attrs?null:void 0):(this.setDOM(document.createElement("div")),this.dom.className="cm-line",this.prevAttrs=this.attrs?null:void 0),this.prevAttrs!==void 0&&(mp(this.dom,this.prevAttrs,this.attrs),this.dom.classList.add("cm-line"),this.prevAttrs=void 0),super.sync(e,t);let r=this.dom.lastChild;for(;r&&Ce.get(r)instanceof cn;)r=r.lastChild;if(!r||!this.length||r.nodeName!="BR"&&((n=Ce.get(r))===null||n===void 0?void 0:n.isEditable)==!1&&(!Z.ios||!this.children.some(s=>s instanceof Ut))){let s=document.createElement("BR");s.cmIgnore=!0,this.dom.appendChild(s)}}measureTextSize(){if(this.children.length==0||this.length>20)return null;let e=0,t;for(let n of this.children){if(!(n instanceof Ut)||/[^ -~]/.test(n.text))return null;let r=Ei(n.dom);if(r.length!=1)return null;e+=r[0].width,t=r[0].height}return e?{lineHeight:this.dom.getBoundingClientRect().height,charWidth:e/this.length,textHeight:t}:null}coordsAt(e,t){let n=vv(this,e,t);if(!this.children.length&&n&&this.parent){let{heightOracle:r}=this.parent.view.viewState,s=n.bottom-n.top;if(Math.abs(s-r.lineHeight)<2&&r.textHeight<s){let i=(s-r.textHeight)/2;return{top:n.top+i,bottom:n.bottom-i,left:n.left,right:n.left}}}return n}become(e){return!1}get type(){return Ke.Text}static find(e,t){for(let n=0,r=0;n<e.children.length;n++){let s=e.children[n],i=r+s.length;if(i>=t){if(s instanceof rt)return s;if(i>t)break}r=i+s.breakAfter}return null}},Qn=class extends Ce{constructor(e,t,n){super(),this.widget=e,this.length=t,this.type=n,this.breakAfter=0,this.prevWidget=null}merge(e,t,n,r,s,i){return n&&(!(n instanceof Qn)||!this.widget.compare(n.widget)||e>0&&s<=0||t<this.length&&i<=0)?!1:(this.length=e+(n?n.length:0)+(this.length-t),!0)}domAtPos(e){return e==0?st.before(this.dom):st.after(this.dom,e==this.length)}split(e){let t=this.length-e;this.length=e;let n=new Qn(this.widget,t,this.type);return n.breakAfter=this.breakAfter,n}get children(){return Kp}sync(e){(!this.dom||!this.widget.updateDOM(this.dom,e))&&(this.dom&&this.prevWidget&&this.prevWidget.destroy(this.dom),this.prevWidget=null,this.setDOM(this.widget.toDOM(e)),this.dom.contentEditable="false")}get overrideDOMText(){return this.parent?this.parent.view.state.doc.slice(this.posAtStart,this.posAtEnd):me.empty}domBoundsAround(){return null}become(e){return e instanceof Qn&&e.widget.constructor==this.widget.constructor?(e.widget.compare(this.widget)||this.markDirty(!0),this.dom&&!this.prevWidget&&(this.prevWidget=this.widget),this.widget=e.widget,this.length=e.length,this.type=e.type,this.breakAfter=e.breakAfter,!0):!1}ignoreMutation(){return!0}ignoreEvent(e){return this.widget.ignoreEvent(e)}get isEditable(){return!1}get isWidget(){return!0}coordsAt(e,t){return this.widget.coordsAt(this.dom,e,t)}destroy(){super.destroy(),this.dom&&this.widget.destroy(this.dom)}},tr=class{constructor(e,t,n,r){this.doc=e,this.pos=t,this.end=n,this.disallowBlockEffectsFor=r,this.content=[],this.curLine=null,this.breakAtStart=0,this.pendingBuffer=0,this.bufferMarks=[],this.atCursorPos=!0,this.openStart=-1,this.openEnd=-1,this.text="",this.textOff=0,this.cursor=e.iter(),this.skip=t}posCovered(){if(this.content.length==0)return!this.breakAtStart&&this.doc.lineAt(this.pos).from!=this.pos;let e=this.content[this.content.length-1];return!e.breakAfter&&!(e instanceof Qn&&e.type==Ke.WidgetBefore)}getLine(){return this.curLine||(this.content.push(this.curLine=new rt),this.atCursorPos=!0),this.curLine}flushBuffer(e=this.bufferMarks){this.pendingBuffer&&(this.curLine.append(Pa(new bo(-1),e),e.length),this.pendingBuffer=0)}addBlockWidget(e){this.flushBuffer(),this.curLine=null,this.content.push(e)}finish(e){this.pendingBuffer&&e<=this.bufferMarks.length?this.flushBuffer():this.pendingBuffer=0,this.posCovered()||this.getLine()}buildText(e,t,n){for(;e>0;){if(this.textOff==this.text.length){let{value:s,lineBreak:i,done:l}=this.cursor.next(this.skip);if(this.skip=0,l)throw new Error("Ran out of text content when drawing inline views");if(i){this.posCovered()||this.getLine(),this.content.length?this.content[this.content.length-1].breakAfter=1:this.breakAtStart=1,this.flushBuffer(),this.curLine=null,this.atCursorPos=!0,e--;continue}else this.text=s,this.textOff=0}let r=Math.min(this.text.length-this.textOff,e,512);this.flushBuffer(t.slice(t.length-n)),this.getLine().append(Pa(new Ut(this.text.slice(this.textOff,this.textOff+r)),t),n),this.atCursorPos=!0,this.textOff+=r,e-=r,n=0}}span(e,t,n,r){this.buildText(t-e,n,r),this.pos=t,this.openStart<0&&(this.openStart=r)}point(e,t,n,r,s,i){if(this.disallowBlockEffectsFor[i]&&n instanceof Mn){if(n.block)throw new RangeError("Block decorations may not be specified via plugins");if(t>this.doc.lineAt(this.pos).to)throw new RangeError("Decorations that replace line breaks may not be specified via plugins")}let l=t-e;if(n instanceof Mn)if(n.block){let{type:a}=n;a==Ke.WidgetAfter&&!this.posCovered()&&this.getLine(),this.addBlockWidget(new Qn(n.widget||new qa("div"),l,a))}else{let a=qn.create(n.widget||new qa("span"),l,l?0:n.startSide),u=this.atCursorPos&&!a.isEditable&&s<=r.length&&(e<t||n.startSide>0),c=!a.isEditable&&(e<t||s>r.length||n.startSide<=0),d=this.getLine();this.pendingBuffer==2&&!u&&!a.isEditable&&(this.pendingBuffer=0),this.flushBuffer(r),u&&(d.append(Pa(new bo(1),r),s),s=r.length+Math.max(0,s-r.length)),d.append(Pa(a,r),s),this.atCursorPos=c,this.pendingBuffer=c?e<t||s>r.length?1:2:0,this.pendingBuffer&&(this.bufferMarks=r.slice())}else this.doc.lineAt(this.pos).from==this.pos&&this.getLine().addLineDeco(n);l&&(this.textOff+l<=this.text.length?this.textOff+=l:(this.skip+=l-(this.text.length-this.textOff),this.text="",this.textOff=0),this.pos=t),this.openStart<0&&(this.openStart=s)}static build(e,t,n,r,s){let i=new tr(e,t,n,s);return i.openEnd=we.spans(r,t,n,i),i.openStart<0&&(i.openStart=i.openEnd),i.finish(i.openEnd),i}};function Pa(o,e){for(let t of e)o=new cn(t,[o],o.length);return o}var qa=class extends jn{constructor(e){super(),this.tag=e}eq(e){return e.tag==this.tag}toDOM(){return document.createElement(this.tag)}updateDOM(e){return e.nodeName.toLowerCase()==this.tag}get isHidden(){return!0}},Sv=se.define(),wv=se.define(),Tv=se.define(),Ev=se.define(),bp=se.define(),Mv=se.define(),Rv=se.define(),Dv=se.define({combine:o=>o.some(e=>e)}),Pv=se.define({combine:o=>o.some(e=>e)}),is=class{constructor(e,t="nearest",n="nearest",r=5,s=5){this.range=e,this.y=t,this.x=n,this.yMargin=r,this.xMargin=s}map(e){return e.empty?this:new is(this.range.map(e),this.y,this.x,this.yMargin,this.xMargin)}},zx=De.define({map:(o,e)=>o.map(e)});function En(o,e,t){let n=o.facet(Ev);n.length?n[0](e):window.onerror?window.onerror(String(e),t,void 0,void 0,e):t?console.error(t+":",e):console.error(e)}var Za=se.define({combine:o=>o.length?o[0]:!0}),UA=0,vi=se.define(),Gt=class{constructor(e,t,n,r){this.id=e,this.create=t,this.domEventHandlers=n,this.extension=r(this)}static define(e,t){let{eventHandlers:n,provide:r,decorations:s}=t||{};return new Gt(UA++,e,n,i=>{let l=[vi.of(i)];return s&&l.push(Mi.of(a=>{let u=a.plugin(i);return u?s(u):Xe.none})),r&&l.push(r(i)),l})}static fromClass(e,t){return Gt.define(n=>new e(n),t)}},wi=class{constructor(e){this.spec=e,this.mustUpdate=null,this.value=null}update(e){if(this.value){if(this.mustUpdate){let t=this.mustUpdate;if(this.mustUpdate=null,this.value.update)try{this.value.update(t)}catch(n){if(En(t.state,n,"CodeMirror plugin crashed"),this.value.destroy)try{this.value.destroy()}catch{}this.deactivate()}}}else if(this.spec)try{this.value=this.spec.create(e)}catch(t){En(e.state,t,"CodeMirror plugin crashed"),this.deactivate()}return this}destroy(e){var t;if(!((t=this.value)===null||t===void 0)&&t.destroy)try{this.value.destroy()}catch(n){En(e.state,n,"CodeMirror plugin crashed")}}deactivate(){this.spec=this.value=null}},kv=se.define(),Gp=se.define(),Mi=se.define(),qp=se.define(),Iv=se.define();function Lv(o){let e=0,t=0,n=0,r=0;for(let s of o.state.facet(Iv)){let i=s(o);i&&(i.left!=null&&(e=Math.max(e,i.left)),i.right!=null&&(t=Math.max(t,i.right)),i.top!=null&&(n=Math.max(n,i.top)),i.bottom!=null&&(r=Math.max(r,i.bottom)))}return{left:e,right:t,top:n,bottom:r}}var Ci=se.define(),Dt=class{constructor(e,t,n,r){this.fromA=e,this.toA=t,this.fromB=n,this.toB=r}join(e){return new Dt(Math.min(this.fromA,e.fromA),Math.max(this.toA,e.toA),Math.min(this.fromB,e.fromB),Math.max(this.toB,e.toB))}addToSet(e){let t=e.length,n=this;for(;t>0;t--){let r=e[t-1];if(!(r.fromA>n.toA)){if(r.toA<n.fromA)break;n=n.join(r),e.splice(t-1,1)}}return e.splice(t,0,n),e}static extendWithRanges(e,t){if(t.length==0)return e;let n=[];for(let r=0,s=0,i=0,l=0;;r++){let a=r==e.length?null:e[r],u=i-l,c=a?a.fromB:1e9;for(;s<t.length&&t[s]<c;){let d=t[s],p=t[s+1],f=Math.max(l,d),h=Math.min(c,p);if(f<=h&&new Dt(f+u,h+u,f,h).addToSet(n),p>c)break;s+=2}if(!a)return n;new Dt(a.fromA,a.toA,a.fromB,a.toB).addToSet(n),i=a.toA,l=a.toB}}},ls=class{constructor(e,t,n){this.view=e,this.state=t,this.transactions=n,this.flags=0,this.startState=e.state,this.changes=Ne.empty(this.startState.doc.length);for(let s of n)this.changes=this.changes.compose(s.changes);let r=[];this.changes.iterChangedRanges((s,i,l,a)=>r.push(new Dt(s,i,l,a))),this.changedRanges=r}static create(e,t,n){return new ls(e,t,n)}get viewportChanged(){return(this.flags&4)>0}get heightChanged(){return(this.flags&2)>0}get geometryChanged(){return this.docChanged||(this.flags&10)>0}get focusChanged(){return(this.flags&1)>0}get docChanged(){return!this.changes.empty}get selectionSet(){return this.transactions.some(e=>e.selection)}get empty(){return this.flags==0&&this.transactions.length==0}},_e=function(o){return o[o.LTR=0]="LTR",o[o.RTL=1]="RTL",o}(_e||(_e={})),yp=_e.LTR,GA=_e.RTL;function Av(o){let e=[];for(let t=0;t<o.length;t++)e.push(1<<+o[t]);return e}var qA=Av("88888888888888888888888888888888888666888888787833333333337888888000000000000000000000000008888880000000000000000000000000088888888888888888888888888888888888887866668888088888663380888308888800000000000000000000000800000000000000000000000000000008"),QA=Av("4444448826627288999999999992222222222222222222222222222222222222222222222229999999999999999999994444444444644222822222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222999999949999999229989999223333333333"),xp=Object.create(null),Tn=[];for(let o of["()","[]","{}"]){let e=o.charCodeAt(0),t=o.charCodeAt(1);xp[e]=t,xp[t]=-e}function jA(o){return o<=247?qA[o]:1424<=o&&o<=1524?2:1536<=o&&o<=1785?QA[o-1536]:1774<=o&&o<=2220?4:8192<=o&&o<=8203?256:64336<=o&&o<=65023?4:o==8204?256:1}var JA=/[\u0590-\u05f4\u0600-\u06ff\u0700-\u08ac\ufb50-\ufdff]/,mo=class{constructor(e,t,n){this.from=e,this.to=t,this.level=n}get dir(){return this.level%2?GA:yp}side(e,t){return this.dir==t==e?this.to:this.from}static find(e,t,n,r){let s=-1;for(let i=0;i<e.length;i++){let l=e[i];if(l.from<=t&&l.to>=t){if(l.level==n)return i;(s<0||(r!=0?r<0?l.from<t:l.to>t:e[s].level>l.level))&&(s=i)}}if(s<0)throw new RangeError("Index out of range");return s}},Fe=[];function XA(o,e){let t=o.length,n=e==yp?1:2,r=e==yp?2:1;if(!o||n==1&&!JA.test(o))return Ov(t);for(let i=0,l=n,a=n;i<t;i++){let u=jA(o.charCodeAt(i));u==512?u=l:u==8&&a==4&&(u=16),Fe[i]=u==4?2:u,u&7&&(a=u),l=u}for(let i=0,l=n,a=n;i<t;i++){let u=Fe[i];if(u==128)i<t-1&&l==Fe[i+1]&&l&24?u=Fe[i]=l:Fe[i]=256;else if(u==64){let c=i+1;for(;c<t&&Fe[c]==64;)c++;let d=i&&l==8||c<t&&Fe[c]==8?a==1?1:8:256;for(let p=i;p<c;p++)Fe[p]=d;i=c-1}else u==8&&a==1&&(Fe[i]=1);l=u,u&7&&(a=u)}for(let i=0,l=0,a=0,u,c,d;i<t;i++)if(c=xp[u=o.charCodeAt(i)])if(c<0){for(let p=l-3;p>=0;p-=3)if(Tn[p+1]==-c){let f=Tn[p+2],h=f&2?n:f&4?f&1?r:n:0;h&&(Fe[i]=Fe[Tn[p]]=h),l=p;break}}else{if(Tn.length==189)break;Tn[l++]=i,Tn[l++]=u,Tn[l++]=a}else if((d=Fe[i])==2||d==1){let p=d==n;a=p?0:1;for(let f=l-3;f>=0;f-=3){let h=Tn[f+2];if(h&2)break;if(p)Tn[f+2]|=2;else{if(h&4)break;Tn[f+2]|=4}}}for(let i=0;i<t;i++)if(Fe[i]==256){let l=i+1;for(;l<t&&Fe[l]==256;)l++;let a=(i?Fe[i-1]:n)==1,u=(l<t?Fe[l]:n)==1,c=a==u?a?1:2:n;for(let d=i;d<l;d++)Fe[d]=c;i=l-1}let s=[];if(n==1)for(let i=0;i<t;){let l=i,a=Fe[i++]!=1;for(;i<t&&a==(Fe[i]!=1);)i++;if(a)for(let u=i;u>l;){let c=u,d=Fe[--u]!=2;for(;u>l&&d==(Fe[u-1]!=2);)u--;s.push(new mo(u,c,d?2:1))}else s.push(new mo(l,i,0))}else for(let i=0;i<t;){let l=i,a=Fe[i++]==2;for(;i<t&&a==(Fe[i]==2);)i++;s.push(new mo(l,i,a?1:2))}return s}function Ov(o){return[new mo(0,o,0)]}var Nv="";function YA(o,e,t,n,r){var s;let i=n.head-o.from,l=-1;if(i==0){if(!r||!o.length)return null;e[0].level!=t&&(i=e[0].side(!1,t),l=0)}else if(i==o.length){if(r)return null;let p=e[e.length-1];p.level!=t&&(i=p.side(!0,t),l=e.length-1)}l<0&&(l=mo.find(e,i,(s=n.bidiLevel)!==null&&s!==void 0?s:-1,n.assoc));let a=e[l];i==a.side(r,t)&&(a=e[l+=r?1:-1],i=a.side(!r,t));let u=r==(a.dir==t),c=pt(o.text,i,u);if(Nv=o.text.slice(Math.min(i,c),Math.max(i,c)),c!=a.side(r,t))return z.cursor(c+o.from,u?-1:1,a.level);let d=l==(r?e.length-1:0)?null:e[l+(r?1:-1)];return!d&&a.level!=t?z.cursor(r?o.to:o.from,r?-1:1,t):d&&d.level<a.level?z.cursor(d.side(!r,t)+o.from,r?1:-1,d.level):z.cursor(c+o.from,r?-1:1,a.level)}var Qa=class extends Ce{constructor(e){super(),this.view=e,this.decorations=[],this.dynamicDecorationMap=[],this.hasComposition=null,this.markedForComposition=new Set,this.minWidth=0,this.minWidthFrom=0,this.minWidthTo=0,this.impreciseAnchor=null,this.impreciseHead=null,this.forceSelection=!1,this.lastUpdate=Date.now(),this.setDOM(e.contentDOM),this.children=[new rt],this.children[0].setParent(this),this.updateDeco(),this.updateInner([new Dt(0,0,0,e.state.doc.length)],0,null)}get length(){return this.view.state.doc.length}update(e){let t=e.changedRanges;this.minWidth>0&&t.length&&(t.every(({fromA:l,toA:a})=>a<this.minWidthFrom||l>this.minWidthTo)?(this.minWidthFrom=e.changes.mapPos(this.minWidthFrom,1),this.minWidthTo=e.changes.mapPos(this.minWidthTo,1)):this.minWidth=this.minWidthFrom=this.minWidthTo=0);let n=this.view.inputState.composing<0?null:eO(this.view,e.changes);if(this.hasComposition){this.markedForComposition.clear();let{from:l,to:a}=this.hasComposition;t=new Dt(l,a,e.changes.mapPos(l,-1),e.changes.mapPos(a,1)).addToSet(t.slice())}this.hasComposition=n?{from:n.range.fromB,to:n.range.toB}:null,(Z.ie||Z.chrome)&&!n&&e&&e.state.doc.lines!=e.startState.doc.lines&&(this.forceSelection=!0);let r=this.decorations,s=this.updateDeco(),i=nO(r,s,e.changes);return t=Dt.extendWithRanges(t,i),!(this.flags&7)&&t.length==0?!1:(this.updateInner(t,e.startState.doc.length,n),e.transactions.length&&(this.lastUpdate=Date.now()),!0)}updateInner(e,t,n){this.view.viewState.mustMeasureContent=!0,this.updateChildren(e,t,n);let{observer:r}=this.view;r.ignore(()=>{this.dom.style.height=this.view.viewState.contentHeight+"px",this.dom.style.flexBasis=this.minWidth?this.minWidth+"px":"";let i=Z.chrome||Z.ios?{node:r.selectionRange.focusNode,written:!1}:void 0;this.sync(this.view,i),this.flags&=-8,i&&(i.written||r.selectionRange.focusNode!=i.node)&&(this.forceSelection=!0),this.dom.style.height=""}),this.markedForComposition.forEach(i=>i.flags&=-9);let s=[];if(this.view.viewport.from||this.view.viewport.to<this.view.state.doc.length)for(let i of this.children)i instanceof Qn&&i.widget instanceof ja&&s.push(i.dom);r.updateGaps(s)}updateChildren(e,t,n){let r=n?n.range.addToSet(e.slice()):e,s=this.childCursor(t);for(let i=r.length-1;;i--){let l=i>=0?r[i]:null;if(!l)break;let{fromA:a,toA:u,fromB:c,toB:d}=l,p,f,h,g;if(n&&n.range.fromB<d&&n.range.toB>c){let x=tr.build(this.view.state.doc,c,n.range.fromB,this.decorations,this.dynamicDecorationMap),S=tr.build(this.view.state.doc,n.range.toB,d,this.decorations,this.dynamicDecorationMap);f=x.breakAtStart,h=x.openStart,g=S.openEnd;let b=this.compositionView(n);S.breakAtStart?b.breakAfter=1:S.content.length&&b.merge(b.length,b.length,S.content[0],!1,S.openStart,0)&&(b.breakAfter=S.content[0].breakAfter,S.content.shift()),x.content.length&&b.merge(0,0,x.content[x.content.length-1],!0,0,x.openEnd)&&x.content.pop(),p=x.content.concat(b).concat(S.content)}else({content:p,breakAtStart:f,openStart:h,openEnd:g}=tr.build(this.view.state.doc,c,d,this.decorations,this.dynamicDecorationMap));let{i:m,off:y}=s.findPos(u,1),{i:w,off:v}=s.findPos(a,-1);hv(this,w,v,m,y,p,f,h,g)}n&&this.fixCompositionDOM(n)}compositionView(e){let t=new Ut(e.text.nodeValue);t.flags|=8;for(let{deco:r}of e.marks)t=new cn(r,[t],t.length);let n=new rt;return n.append(t,0),n}fixCompositionDOM(e){let t=(s,i)=>{i.flags|=8,this.markedForComposition.add(i);let l=Ce.get(s);l!=i&&(l&&(l.dom=null),i.setDOM(s))},n=this.childPos(e.range.fromB,1),r=this.children[n.i];t(e.line,r);for(let s=e.marks.length-1;s>=-1;s--)n=r.childPos(n.off,1),r=r.children[n.i],t(s>=0?e.marks[s].node:e.text,r)}updateSelection(e=!1,t=!1){(e||!this.view.observer.selectionRange.focusNode)&&this.view.observer.readSelectionRange();let n=this.view.root.activeElement,r=n==this.dom,s=!r&&Ha(this.dom,this.view.observer.selectionRange)&&!(n&&this.dom.contains(n));if(!(r||t||s))return;let i=this.forceSelection;this.forceSelection=!1;let l=this.view.state.selection.main,a=this.domAtPos(l.anchor),u=l.empty?a:this.domAtPos(l.head);if(Z.gecko&&l.empty&&!this.hasComposition&&ZA(a)){let d=document.createTextNode("");this.view.observer.ignore(()=>a.node.insertBefore(d,a.node.childNodes[a.offset]||null)),a=u=new st(d,0),i=!0}let c=this.view.observer.selectionRange;(i||!c.focusNode||!Wa(a.node,a.offset,c.anchorNode,c.anchorOffset)||!Wa(u.node,u.offset,c.focusNode,c.focusOffset))&&(this.view.observer.ignore(()=>{Z.android&&Z.chrome&&this.dom.contains(c.focusNode)&&oO(c.focusNode,this.dom)&&(this.dom.blur(),this.dom.focus({preventScroll:!0}));let d=$a(this.view.root);if(d)if(l.empty){if(Z.gecko){let p=tO(a.node,a.offset);if(p&&p!=3){let f=Fv(a.node,a.offset,p==1?1:-1);f&&(a=new st(f,p==1?0:f.nodeValue.length))}}d.collapse(a.node,a.offset),l.bidiLevel!=null&&c.cursorBidiLevel!=null&&(c.cursorBidiLevel=l.bidiLevel)}else if(d.extend){d.collapse(a.node,a.offset);try{d.extend(u.node,u.offset)}catch{}}else{let p=document.createRange();l.anchor>l.head&&([a,u]=[u,a]),p.setEnd(u.node,u.offset),p.setStart(a.node,a.offset),d.removeAllRanges(),d.addRange(p)}s&&this.view.root.activeElement==this.dom&&(this.dom.blur(),n&&n.focus())}),this.view.observer.setSelectionRange(a,u)),this.impreciseAnchor=a.precise?null:new st(c.anchorNode,c.anchorOffset),this.impreciseHead=u.precise?null:new st(c.focusNode,c.focusOffset)}enforceCursorAssoc(){if(this.hasComposition)return;let{view:e}=this,t=e.state.selection.main,n=$a(e.root),{anchorNode:r,anchorOffset:s}=e.observer.selectionRange;if(!n||!t.empty||!t.assoc||!n.modify)return;let i=rt.find(this,t.head);if(!i)return;let l=i.posAtStart;if(t.head==l||t.head==l+i.length)return;let a=this.coordsAt(t.head,-1),u=this.coordsAt(t.head,1);if(!a||!u||a.bottom>u.top)return;let c=this.domAtPos(t.head+t.assoc);n.collapse(c.node,c.offset),n.modify("move",t.assoc<0?"forward":"backward","lineboundary"),e.observer.readSelectionRange();let d=e.observer.selectionRange;e.docView.posFromDOM(d.anchorNode,d.anchorOffset)!=t.from&&n.collapse(r,s)}nearest(e){for(let t=e;t;){let n=Ce.get(t);if(n&&n.rootView==this)return n;t=t.parentNode}return null}posFromDOM(e,t){let n=this.nearest(e);if(!n)throw new RangeError("Trying to find position for a DOM position outside of the document");return n.localPosFromDOM(e,t)+n.posAtStart}domAtPos(e){let{i:t,off:n}=this.childCursor().findPos(e,-1);for(;t<this.children.length-1;){let r=this.children[t];if(n<r.length||r instanceof rt)break;t++,n=0}return this.children[t].domAtPos(n)}coordsAt(e,t){for(let n=this.length,r=this.children.length-1;;r--){let s=this.children[r],i=n-s.breakAfter-s.length;if(e>i||e==i&&s.type!=Ke.WidgetBefore&&s.type!=Ke.WidgetAfter&&(!r||t==2||this.children[r-1].breakAfter||this.children[r-1].type==Ke.WidgetBefore&&t>-2))return s.coordsAt(e-i,t);n=i}}coordsForChar(e){let{i:t,off:n}=this.childPos(e,1),r=this.children[t];if(!(r instanceof rt))return null;for(;r.children.length;){let{i:l,off:a}=r.childPos(n,1);for(;;l++){if(l==r.children.length)return null;if((r=r.children[l]).length)break}n=a}if(!(r instanceof Ut))return null;let s=pt(r.text,n);if(s==n)return null;let i=nr(r.dom,n,s).getClientRects();return!i.length||i[0].top>=i[0].bottom?null:i[0]}measureVisibleLineHeights(e){let t=[],{from:n,to:r}=e,s=this.view.contentDOM.clientWidth,i=s>Math.max(this.view.scrollDOM.clientWidth,this.minWidth)+1,l=-1,a=this.view.textDirection==_e.LTR;for(let u=0,c=0;c<this.children.length;c++){let d=this.children[c],p=u+d.length;if(p>r)break;if(u>=n){let f=d.dom.getBoundingClientRect();if(t.push(f.height),i){let h=d.dom.lastChild,g=h?Ei(h):[];if(g.length){let m=g[g.length-1],y=a?m.right-f.left:f.right-m.left;y>l&&(l=y,this.minWidth=s,this.minWidthFrom=u,this.minWidthTo=p)}}}u=p+d.breakAfter}return t}textDirectionAt(e){let{i:t}=this.childPos(e,1);return getComputedStyle(this.children[t].dom).direction=="rtl"?_e.RTL:_e.LTR}measureTextSize(){for(let s of this.children)if(s instanceof rt){let i=s.measureTextSize();if(i)return i}let e=document.createElement("div"),t,n,r;return e.className="cm-line",e.style.width="99999px",e.style.position="absolute",e.textContent="abc def ghi jkl mno pqr stu",this.view.observer.ignore(()=>{this.dom.appendChild(e);let s=Ei(e.firstChild)[0];t=e.getBoundingClientRect().height,n=s?s.width/27:7,r=s?s.height:t,e.remove()}),{lineHeight:t,charWidth:n,textHeight:r}}childCursor(e=this.length){let t=this.children.length;return t&&(e-=this.children[--t].length),new Ka(this.children,e,t)}computeBlockGapDeco(){let e=[],t=this.view.viewState;for(let n=0,r=0;;r++){let s=r==t.viewports.length?null:t.viewports[r],i=s?s.from-1:this.length;if(i>n){let l=t.lineBlockAt(i).bottom-t.lineBlockAt(n).top;e.push(Xe.replace({widget:new ja(l),block:!0,inclusive:!0,isBlockGap:!0}).range(n,i))}if(!s)break;n=s.to+1}return Xe.set(e)}updateDeco(){let e=this.view.state.facet(Mi).map((t,n)=>(this.dynamicDecorationMap[n]=typeof t=="function")?t(this.view):t);for(let t=e.length;t<e.length+3;t++)this.dynamicDecorationMap[t]=!1;return this.decorations=[...e,this.computeBlockGapDeco(),this.view.viewState.lineGapDeco]}scrollIntoView(e){let{range:t}=e,n=this.coordsAt(t.head,t.empty?t.assoc:t.head>t.anchor?-1:1),r;if(!n)return;!t.empty&&(r=this.coordsAt(t.anchor,t.anchor>t.head?-1:1))&&(n={left:Math.min(n.left,r.left),top:Math.min(n.top,r.top),right:Math.max(n.right,r.right),bottom:Math.max(n.bottom,r.bottom)});let s=Lv(this.view),i={left:n.left-s.left,top:n.top-s.top,right:n.right+s.right,bottom:n.bottom+s.bottom};HA(this.view.scrollDOM,i,t.head<t.anchor?-1:1,e.x,e.y,e.xMargin,e.yMargin,this.view.textDirection==_e.LTR)}};function ZA(o){return o.node.nodeType==1&&o.node.firstChild&&(o.offset==0||o.node.childNodes[o.offset-1].contentEditable=="false")&&(o.offset==o.node.childNodes.length||o.node.childNodes[o.offset].contentEditable=="false")}var ja=class extends jn{constructor(e){super(),this.height=e}toDOM(){let e=document.createElement("div");return this.updateDOM(e),e}eq(e){return e.height==this.height}updateDOM(e){return e.style.height=this.height+"px",!0}get estimatedHeight(){return this.height}};function Hv(o){let e=o.observer.selectionRange,t=e.focusNode&&Fv(e.focusNode,e.focusOffset,0);if(!t)return null;let n=Ce.get(t),r,s;if(n instanceof Ut)r=n.posAtStart,s=r+n.length;else e:for(let i=0,l=t;;){for(let u=l.previousSibling,c;u;u=u.previousSibling){if(c=Ce.get(u)){r=s=c.posAtEnd+i;break e}let d=new Ua([],o.state);if(d.readNode(u),d.text.indexOf(os)>-1)return null;i+=d.text.length}if(l=l.parentNode,!l)return null;let a=Ce.get(l);if(a){r=s=a.posAtStart+i;break}}return{from:r,to:s,node:t}}function eO(o,e){let t=Hv(o);if(!t)return null;let{from:n,to:r,node:s}=t,i=e.mapPos(n,-1),l=e.mapPos(r,1),a=s.nodeValue;if(/[\n\r]/.test(a))return null;if(l-i!=a.length){let p=e.mapPos(n,1),f=e.mapPos(r,-1);if(f-p==a.length)i=p,l=f;else if(o.state.doc.sliceString(l-a.length,l)==a)i=l-a.length;else if(o.state.doc.sliceString(i,i+a.length)==a)l=i+a.length;else return null}let{main:u}=o.state.selection;if(o.state.doc.sliceString(i,l)!=a||i>u.head||l<u.head)return null;let c=[],d=new Dt(n,r,i,l);for(let p=s.parentNode;;p=p.parentNode){let f=Ce.get(p);if(f instanceof cn)c.push({node:p,deco:f.mark});else{if(f instanceof rt||p.nodeName=="DIV"&&p.parentNode==o.contentDOM)return{range:d,text:s,marks:c,line:p};if(p!=o.contentDOM)c.push({node:p,deco:new or({inclusive:!0,attributes:_A(p),tagName:p.tagName.toLowerCase()})});else return null}}}function Fv(o,e,t){if(t<=0)for(let n=o,r=e;;){if(n.nodeType==3)return n;if(n.nodeType==1&&r>0)n=n.childNodes[r-1],r=go(n);else break}if(t>=0)for(let n=o,r=e;;){if(n.nodeType==3)return n;if(n.nodeType==1&&r<n.childNodes.length&&t>=0)n=n.childNodes[r],r=0;else break}return null}function tO(o,e){return o.nodeType!=1?0:(e&&o.childNodes[e-1].contentEditable=="false"?1:0)|(e<o.childNodes.length&&o.childNodes[e].contentEditable=="false"?2:0)}var vp=class{constructor(){this.changes=[]}compareRange(e,t){gp(e,t,this.changes)}comparePoint(e,t){gp(e,t,this.changes)}};function nO(o,e,t){let n=new vp;return we.compare(o,e,t,n),n.changes}function oO(o,e){for(let t=o;t&&t!=e;t=t.assignedSlot||t.parentNode)if(t.nodeType==1&&t.contentEditable=="false")return!0;return!1}function rO(o,e,t=1){let n=o.charCategorizer(e),r=o.doc.lineAt(e),s=e-r.from;if(r.length==0)return z.cursor(e);s==0?t=1:s==r.length&&(t=-1);let i=s,l=s;t<0?i=pt(r.text,s,!1):l=pt(r.text,s);let a=n(r.text.slice(i,l));for(;i>0;){let u=pt(r.text,i,!1);if(n(r.text.slice(u,i))!=a)break;i=u}for(;l<r.length;){let u=pt(r.text,l);if(n(r.text.slice(l,u))!=a)break;l=u}return z.range(i+r.from,l+r.from)}function sO(o,e){return e.left>o?e.left-o:Math.max(0,o-e.right)}function iO(o,e){return e.top>o?e.top-o:Math.max(0,o-e.bottom)}function sp(o,e){return o.top<e.bottom-1&&o.bottom>e.top+1}function $x(o,e){return e<o.top?{top:e,left:o.left,right:o.right,bottom:o.bottom}:o}function Wx(o,e){return e>o.bottom?{top:o.top,left:o.left,right:o.right,bottom:e}:o}function Cp(o,e,t){let n,r,s,i,l=!1,a,u,c,d;for(let h=o.firstChild;h;h=h.nextSibling){let g=Ei(h);for(let m=0;m<g.length;m++){let y=g[m];r&&sp(r,y)&&(y=$x(Wx(y,r.bottom),r.top));let w=sO(e,y),v=iO(t,y);if(w==0&&v==0)return h.nodeType==3?_x(h,e,t):Cp(h,e,t);if(!n||i>v||i==v&&s>w){n=h,r=y,s=w,i=v;let x=v?t<y.top?-1:1:w?e<y.left?-1:1:0;l=!x||(x>0?m<g.length-1:m>0)}w==0?t>y.bottom&&(!c||c.bottom<y.bottom)?(a=h,c=y):t<y.top&&(!d||d.top>y.top)&&(u=h,d=y):c&&sp(c,y)?c=Wx(c,y.bottom):d&&sp(d,y)&&(d=$x(d,y.top))}}if(c&&c.bottom>=t?(n=a,r=c):d&&d.top<=t&&(n=u,r=d),!n)return{node:o,offset:0};let p=Math.max(r.left,Math.min(r.right,e));if(n.nodeType==3)return _x(n,p,t);if(l&&n.contentEditable!="false")return Cp(n,p,t);let f=Array.prototype.indexOf.call(o.childNodes,n)+(e>=(r.left+r.right)/2?1:0);return{node:o,offset:f}}function _x(o,e,t){let n=o.nodeValue.length,r=-1,s=1e9,i=0;for(let l=0;l<n;l++){let a=nr(o,l,l+1).getClientRects();for(let u=0;u<a.length;u++){let c=a[u];if(c.top==c.bottom)continue;i||(i=e-c.left);let d=(c.top>t?c.top-t:t-c.bottom)-1;if(c.left-1<=e&&c.right+1>=e&&d<s){let p=e>=(c.left+c.right)/2,f=p;if((Z.chrome||Z.gecko)&&nr(o,l).getBoundingClientRect().left==c.right&&(f=!p),d<=0)return{node:o,offset:l+(f?1:0)};r=l+(f?1:0),s=d}}}return{node:o,offset:r>-1?r:i>0?o.nodeValue.length:0}}function Vv(o,e,t,n=-1){var r,s;let i=o.contentDOM.getBoundingClientRect(),l=i.top+o.viewState.paddingTop,a,{docHeight:u}=o.viewState,{x:c,y:d}=e,p=d-l;if(p<0)return 0;if(p>u)return o.state.doc.length;for(let x=o.viewState.heightOracle.textHeight/2,S=!1;a=o.elementAtHeight(p),a.type!=Ke.Text;)for(;p=n>0?a.bottom+x:a.top-x,!(p>=0&&p<=u);){if(S)return t?null:0;S=!0,n=-n}d=l+p;let f=a.from;if(f<o.viewport.from)return o.viewport.from==0?0:t?null:Kx(o,i,a,c,d);if(f>o.viewport.to)return o.viewport.to==o.state.doc.length?o.state.doc.length:t?null:Kx(o,i,a,c,d);let h=o.dom.ownerDocument,g=o.root.elementFromPoint?o.root:h,m=g.elementFromPoint(c,d);m&&!o.contentDOM.contains(m)&&(m=null),m||(c=Math.max(i.left+1,Math.min(i.right-1,c)),m=g.elementFromPoint(c,d),m&&!o.contentDOM.contains(m)&&(m=null));let y,w=-1;if(m&&((r=o.docView.nearest(m))===null||r===void 0?void 0:r.isEditable)!=!1){if(h.caretPositionFromPoint){let x=h.caretPositionFromPoint(c,d);x&&({offsetNode:y,offset:w}=x)}else if(h.caretRangeFromPoint){let x=h.caretRangeFromPoint(c,d);x&&({startContainer:y,startOffset:w}=x,(!o.contentDOM.contains(y)||Z.safari&&lO(y,w,c)||Z.chrome&&aO(y,w,c))&&(y=void 0))}}if(!y||!o.docView.dom.contains(y)){let x=rt.find(o.docView,f);if(!x)return p>a.top+a.height/2?a.to:a.from;({node:y,offset:w}=Cp(x.dom,c,d))}let v=o.docView.nearest(y);if(!v)return null;if(v.isWidget&&((s=v.dom)===null||s===void 0?void 0:s.nodeType)==1){let x=v.dom.getBoundingClientRect();return e.y<x.top||e.y<=x.bottom&&e.x<=(x.left+x.right)/2?v.posAtStart:v.posAtEnd}else return v.localPosFromDOM(y,w)+v.posAtStart}function Kx(o,e,t,n,r){let s=Math.round((n-e.left)*o.defaultCharacterWidth);if(o.lineWrapping&&t.height>o.defaultLineHeight*1.5){let l=o.viewState.heightOracle.textHeight,a=Math.floor((r-t.top-(o.defaultLineHeight-l)*.5)/l);s+=a*o.viewState.heightOracle.lineLength}let i=o.state.sliceDoc(t.from,t.to);return t.from+Rx(i,s,o.state.tabSize)}function lO(o,e,t){let n;if(o.nodeType!=3||e!=(n=o.nodeValue.length))return!1;for(let r=o.nextSibling;r;r=r.nextSibling)if(r.nodeType!=1||r.nodeName!="BR")return!1;return nr(o,n-1,n).getBoundingClientRect().left>t}function aO(o,e,t){if(e!=0)return!1;for(let r=o;;){let s=r.parentNode;if(!s||s.nodeType!=1||s.firstChild!=r)return!1;if(s.classList.contains("cm-line"))break;r=s}let n=o.nodeType==1?o.getBoundingClientRect():nr(o,0,Math.max(o.nodeValue.length,1)).getBoundingClientRect();return t-n.left>5}function Sp(o,e){let t=o.lineBlockAt(e);if(Array.isArray(t.type)){for(let n of t.type)if(n.to>e||n.to==e&&(n.to==t.to||n.type==Ke.Text))return n}return t}function uO(o,e,t,n){let r=Sp(o,e.head),s=!n||r.type!=Ke.Text||!(o.lineWrapping||r.widgetLineBreaks)?null:o.coordsAtPos(e.assoc<0&&e.head>r.from?e.head-1:e.head);if(s){let i=o.dom.getBoundingClientRect(),l=o.textDirectionAt(r.from),a=o.posAtCoords({x:t==(l==_e.LTR)?i.right-1:i.left+1,y:(s.top+s.bottom)/2});if(a!=null)return z.cursor(a,t?-1:1)}return z.cursor(t?r.to:r.from,t?-1:1)}function Ux(o,e,t,n){let r=o.state.doc.lineAt(e.head),s=o.bidiSpans(r),i=o.textDirectionAt(r.from);for(let l=e,a=null;;){let u=YA(r,s,i,l,t),c=Nv;if(!u){if(r.number==(t?o.state.doc.lines:1))return l;c=`
26
- `,r=o.state.doc.line(r.number+(t?1:-1)),s=o.bidiSpans(r),u=z.cursor(t?r.from:r.to)}if(a){if(!a(c))return l}else{if(!n)return u;a=n(c)}l=u}}function cO(o,e,t){let n=o.state.charCategorizer(e),r=n(t);return s=>{let i=n(s);return r==vt.Space&&(r=i),r==i}}function dO(o,e,t,n){let r=e.head,s=t?1:-1;if(r==(t?o.state.doc.length:0))return z.cursor(r,e.assoc);let i=e.goalColumn,l,a=o.contentDOM.getBoundingClientRect(),u=o.coordsAtPos(r),c=o.documentTop;if(u)i==null&&(i=u.left-a.left),l=s<0?u.top:u.bottom;else{let f=o.viewState.lineBlockAt(r);i==null&&(i=Math.min(a.right-a.left,o.defaultCharacterWidth*(r-f.from))),l=(s<0?f.top:f.bottom)+c}let d=a.left+i,p=n!=null?n:o.viewState.heightOracle.textHeight>>1;for(let f=0;;f+=10){let h=l+(p+f)*s,g=Vv(o,{x:d,y:h},!1,s);if(h<a.top||h>a.bottom||(s<0?g<r:g>r))return z.cursor(g,e.assoc,void 0,i)}}function Fa(o,e,t){for(;;){let n=0;for(let r of o)r.between(e-1,e+1,(s,i,l)=>{if(e>s&&e<i){let a=n||t||(e-s<i-e?-1:1);e=a<0?s:i,n=a}});if(!n)return e}}function ip(o,e,t){let n=Fa(o.state.facet(qp).map(r=>r(o)),t.from,e.head>t.from?-1:1);return n==t.from?t:z.cursor(n,n<t.from?1:-1)}var wp=class{constructor(e){this.lastKeyCode=0,this.lastKeyTime=0,this.lastTouchTime=0,this.lastFocusTime=0,this.lastScrollTop=0,this.lastScrollLeft=0,this.chromeScrollHack=-1,this.pendingIOSKey=void 0,this.lastSelectionOrigin=null,this.lastSelectionTime=0,this.lastEscPress=0,this.lastContextMenu=0,this.scrollHandlers=[],this.registeredEvents=[],this.customHandlers=[],this.composing=-1,this.compositionFirstChange=null,this.compositionEndedAt=0,this.compositionPendingKey=!1,this.compositionPendingChange=!1,this.mouseSelection=null;let t=(n,r)=>{this.ignoreDuringComposition(r)||r.type=="keydown"&&this.keydown(e,r)||(this.mustFlushObserver(r)&&e.observer.forceFlush(),this.runCustomHandlers(r.type,e,r)?r.preventDefault():n(e,r))};for(let n in Qe){let r=Qe[n];e.contentDOM.addEventListener(n,s=>{Gx(e,s)&&t(r,s)},Ep[n]),this.registeredEvents.push(n)}e.scrollDOM.addEventListener("mousedown",n=>{if(n.target==e.scrollDOM&&n.clientY>e.contentDOM.getBoundingClientRect().bottom&&(t(Qe.mousedown,n),!n.defaultPrevented&&n.button==2)){let r=e.contentDOM.style.minHeight;e.contentDOM.style.minHeight="100%",setTimeout(()=>e.contentDOM.style.minHeight=r,200)}}),e.scrollDOM.addEventListener("drop",n=>{n.target==e.scrollDOM&&n.clientY>e.contentDOM.getBoundingClientRect().bottom&&t(Qe.drop,n)}),Z.chrome&&Z.chrome_version==102&&e.scrollDOM.addEventListener("wheel",()=>{this.chromeScrollHack<0?e.contentDOM.style.pointerEvents="none":window.clearTimeout(this.chromeScrollHack),this.chromeScrollHack=setTimeout(()=>{this.chromeScrollHack=-1,e.contentDOM.style.pointerEvents=""},100)},{passive:!0}),this.notifiedFocused=e.hasFocus,Z.safari&&e.contentDOM.addEventListener("input",()=>null)}setSelectionOrigin(e){this.lastSelectionOrigin=e,this.lastSelectionTime=Date.now()}ensureHandlers(e,t){var n;let r;this.customHandlers=[];for(let s of t)if(r=(n=s.update(e).spec)===null||n===void 0?void 0:n.domEventHandlers){this.customHandlers.push({plugin:s.value,handlers:r});for(let i in r)this.registeredEvents.indexOf(i)<0&&i!="scroll"&&(this.registeredEvents.push(i),e.contentDOM.addEventListener(i,l=>{Gx(e,l)&&this.runCustomHandlers(i,e,l)&&l.preventDefault()}))}}runCustomHandlers(e,t,n){for(let r of this.customHandlers){let s=r.handlers[e];if(s)try{if(s.call(r.plugin,n,t)||n.defaultPrevented)return!0}catch(i){En(t.state,i)}}return!1}runScrollHandlers(e,t){this.lastScrollTop=e.scrollDOM.scrollTop,this.lastScrollLeft=e.scrollDOM.scrollLeft;for(let n of this.customHandlers){let r=n.handlers.scroll;if(r)try{r.call(n.plugin,t,e)}catch(s){En(e.state,s)}}}keydown(e,t){if(this.lastKeyCode=t.keyCode,this.lastKeyTime=Date.now(),t.keyCode==9&&Date.now()<this.lastEscPress+2e3)return!0;if(t.keyCode!=27&&zv.indexOf(t.keyCode)<0&&(e.inputState.lastEscPress=0),Z.android&&Z.chrome&&!t.synthetic&&(t.keyCode==13||t.keyCode==8))return e.observer.delayAndroidKey(t.key,t.keyCode),!0;let n;return Z.ios&&!t.synthetic&&!t.altKey&&!t.metaKey&&((n=Bv.find(r=>r.keyCode==t.keyCode))&&!t.ctrlKey||pO.indexOf(t.key)>-1&&t.ctrlKey&&!t.shiftKey)?(this.pendingIOSKey=n||t,setTimeout(()=>this.flushIOSKey(e),250),!0):!1}flushIOSKey(e){let t=this.pendingIOSKey;return t?(this.pendingIOSKey=void 0,ss(e.contentDOM,t.key,t.keyCode)):!1}ignoreDuringComposition(e){return/^key/.test(e.type)?this.composing>0?!0:Z.safari&&!Z.ios&&this.compositionPendingKey&&Date.now()-this.compositionEndedAt<100?(this.compositionPendingKey=!1,!0):!1:!1}mustFlushObserver(e){return e.type=="keydown"&&e.keyCode!=229}startMouseSelection(e){this.mouseSelection&&this.mouseSelection.destroy(),this.mouseSelection=e}update(e){this.mouseSelection&&this.mouseSelection.update(e),e.transactions.length&&(this.lastKeyCode=this.lastSelectionTime=0)}destroy(){this.mouseSelection&&this.mouseSelection.destroy()}},Bv=[{key:"Backspace",keyCode:8,inputType:"deleteContentBackward"},{key:"Enter",keyCode:13,inputType:"insertParagraph"},{key:"Enter",keyCode:13,inputType:"insertLineBreak"},{key:"Delete",keyCode:46,inputType:"deleteContentForward"}],pO="dthko",zv=[16,17,18,20,91,92,224,225],ka=6;function Ia(o){return Math.max(0,o)*.7+8}function fO(o,e){return Math.max(Math.abs(o.clientX-e.clientX),Math.abs(o.clientY-e.clientY))}var Tp=class{constructor(e,t,n,r){this.view=e,this.startEvent=t,this.style=n,this.mustSelect=r,this.scrollSpeed={x:0,y:0},this.scrolling=-1,this.lastEvent=t,this.scrollParent=FA(e.contentDOM),this.atoms=e.state.facet(qp).map(i=>i(e));let s=e.contentDOM.ownerDocument;s.addEventListener("mousemove",this.move=this.move.bind(this)),s.addEventListener("mouseup",this.up=this.up.bind(this)),this.extend=t.shiftKey,this.multiple=e.state.facet(be.allowMultipleSelections)&&hO(e,t),this.dragging=gO(e,t)&&Kv(t)==1?null:!1}start(e){this.dragging===!1&&(e.preventDefault(),this.select(e))}move(e){var t;if(e.buttons==0)return this.destroy();if(this.dragging||this.dragging==null&&fO(this.startEvent,e)<10)return;this.select(this.lastEvent=e);let n=0,r=0,s=((t=this.scrollParent)===null||t===void 0?void 0:t.getBoundingClientRect())||{left:0,top:0,right:this.view.win.innerWidth,bottom:this.view.win.innerHeight},i=Lv(this.view);e.clientX-i.left<=s.left+ka?n=-Ia(s.left-e.clientX):e.clientX+i.right>=s.right-ka&&(n=Ia(e.clientX-s.right)),e.clientY-i.top<=s.top+ka?r=-Ia(s.top-e.clientY):e.clientY+i.bottom>=s.bottom-ka&&(r=Ia(e.clientY-s.bottom)),this.setScrollSpeed(n,r)}up(e){this.dragging==null&&this.select(this.lastEvent),this.dragging||e.preventDefault(),this.destroy()}destroy(){this.setScrollSpeed(0,0);let e=this.view.contentDOM.ownerDocument;e.removeEventListener("mousemove",this.move),e.removeEventListener("mouseup",this.up),this.view.inputState.mouseSelection=null}setScrollSpeed(e,t){this.scrollSpeed={x:e,y:t},e||t?this.scrolling<0&&(this.scrolling=setInterval(()=>this.scroll(),50)):this.scrolling>-1&&(clearInterval(this.scrolling),this.scrolling=-1)}scroll(){this.scrollParent?(this.scrollParent.scrollLeft+=this.scrollSpeed.x,this.scrollParent.scrollTop+=this.scrollSpeed.y):this.view.win.scrollBy(this.scrollSpeed.x,this.scrollSpeed.y),this.dragging===!1&&this.select(this.lastEvent)}skipAtoms(e){let t=null;for(let n=0;n<e.ranges.length;n++){let r=e.ranges[n],s=null;if(r.empty){let i=Fa(this.atoms,r.from,0);i!=r.from&&(s=z.cursor(i,-1))}else{let i=Fa(this.atoms,r.from,-1),l=Fa(this.atoms,r.to,1);(i!=r.from||l!=r.to)&&(s=z.range(r.from==r.anchor?i:l,r.from==r.head?i:l))}s&&(t||(t=e.ranges.slice()),t[n]=s)}return t?z.create(t,e.mainIndex):e}select(e){let{view:t}=this,n=this.skipAtoms(this.style.get(e,this.extend,this.multiple));(this.mustSelect||!n.eq(t.state.selection)||n.main.assoc!=t.state.selection.main.assoc&&this.dragging===!1)&&this.view.dispatch({selection:n,userEvent:"select.pointer"}),this.mustSelect=!1}update(e){e.docChanged&&this.dragging&&(this.dragging=this.dragging.map(e.changes)),this.style.update(e)&&setTimeout(()=>this.select(this.lastEvent),20)}};function hO(o,e){let t=o.state.facet(Sv);return t.length?t[0](e):Z.mac?e.metaKey:e.ctrlKey}function mO(o,e){let t=o.state.facet(wv);return t.length?t[0](e):Z.mac?!e.altKey:!e.ctrlKey}function gO(o,e){let{main:t}=o.state.selection;if(t.empty)return!1;let n=$a(o.root);if(!n||n.rangeCount==0)return!0;let r=n.getRangeAt(0).getClientRects();for(let s=0;s<r.length;s++){let i=r[s];if(i.left<=e.clientX&&i.right>=e.clientX&&i.top<=e.clientY&&i.bottom>=e.clientY)return!0}return!1}function Gx(o,e){if(!e.bubbles)return!0;if(e.defaultPrevented)return!1;for(let t=e.target,n;t!=o.contentDOM;t=t.parentNode)if(!t||t.nodeType==11||(n=Ce.get(t))&&n.ignoreEvent(e))return!1;return!0}var Qe=Object.create(null),Ep=Object.create(null),$v=Z.ie&&Z.ie_version<15||Z.ios&&Z.webkit_version<604;function bO(o){let e=o.dom.parentNode;if(!e)return;let t=e.appendChild(document.createElement("textarea"));t.style.cssText="position: fixed; left: -10000px; top: 10px",t.focus(),setTimeout(()=>{o.focus(),t.remove(),Wv(o,t.value)},50)}function Wv(o,e){let{state:t}=o,n,r=1,s=t.toText(e),i=s.lines==t.selection.ranges.length;if(Mp!=null&&t.selection.ranges.every(a=>a.empty)&&Mp==s.toString()){let a=-1;n=t.changeByRange(u=>{let c=t.doc.lineAt(u.from);if(c.from==a)return{range:u};a=c.from;let d=t.toText((i?s.line(r++).text:e)+t.lineBreak);return{changes:{from:c.from,insert:d},range:z.cursor(u.from+d.length)}})}else i?n=t.changeByRange(a=>{let u=s.line(r++);return{changes:{from:a.from,to:a.to,insert:u.text},range:z.cursor(a.from+u.length)}}):n=t.replaceSelection(s);o.dispatch(n,{userEvent:"input.paste",scrollIntoView:!0})}Qe.keydown=(o,e)=>{o.inputState.setSelectionOrigin("select"),e.keyCode==27&&(o.inputState.lastEscPress=Date.now())};Qe.touchstart=(o,e)=>{o.inputState.lastTouchTime=Date.now(),o.inputState.setSelectionOrigin("select.pointer")};Qe.touchmove=o=>{o.inputState.setSelectionOrigin("select.pointer")};Ep.touchstart=Ep.touchmove={passive:!0};Qe.mousedown=(o,e)=>{if(o.observer.flush(),o.inputState.lastTouchTime>Date.now()-2e3)return;let t=null;for(let n of o.state.facet(Tv))if(t=n(o,e),t)break;if(!t&&e.button==0&&(t=vO(o,e)),t){let n=!o.hasFocus;o.inputState.startMouseSelection(new Tp(o,e,t,n)),n&&o.observer.ignore(()=>dv(o.contentDOM)),o.inputState.mouseSelection&&o.inputState.mouseSelection.start(e)}};function qx(o,e,t,n){if(n==1)return z.cursor(e,t);if(n==2)return rO(o.state,e,t);{let r=rt.find(o.docView,e),s=o.state.doc.lineAt(r?r.posAtEnd:e),i=r?r.posAtStart:s.from,l=r?r.posAtEnd:s.to;return l<o.state.doc.length&&l==s.to&&l++,z.range(i,l)}}var _v=(o,e)=>o>=e.top&&o<=e.bottom,Qx=(o,e,t)=>_v(e,t)&&o>=t.left&&o<=t.right;function yO(o,e,t,n){let r=rt.find(o.docView,e);if(!r)return 1;let s=e-r.posAtStart;if(s==0)return 1;if(s==r.length)return-1;let i=r.coordsAt(s,-1);if(i&&Qx(t,n,i))return-1;let l=r.coordsAt(s,1);return l&&Qx(t,n,l)?1:i&&_v(n,i)?-1:1}function jx(o,e){let t=o.posAtCoords({x:e.clientX,y:e.clientY},!1);return{pos:t,bias:yO(o,t,e.clientX,e.clientY)}}var xO=Z.ie&&Z.ie_version<=11,Jx=null,Xx=0,Yx=0;function Kv(o){if(!xO)return o.detail;let e=Jx,t=Yx;return Jx=o,Yx=Date.now(),Xx=!e||t>Date.now()-400&&Math.abs(e.clientX-o.clientX)<2&&Math.abs(e.clientY-o.clientY)<2?(Xx+1)%3:1}function vO(o,e){let t=jx(o,e),n=Kv(e),r=o.state.selection;return{update(s){s.docChanged&&(t.pos=s.changes.mapPos(t.pos),r=r.map(s.changes))},get(s,i,l){let a=jx(o,s),u,c=qx(o,a.pos,a.bias,n);if(t.pos!=a.pos&&!i){let d=qx(o,t.pos,t.bias,n),p=Math.min(d.from,c.from),f=Math.max(d.to,c.to);c=p<c.from?z.range(p,f):z.range(f,p)}return i?r.replaceRange(r.main.extend(c.from,c.to)):l&&n==1&&r.ranges.length>1&&(u=CO(r,a.pos))?u:l?r.addRange(c):z.create([c])}}}function CO(o,e){for(let t=0;t<o.ranges.length;t++){let{from:n,to:r}=o.ranges[t];if(n<=e&&r>=e)return z.create(o.ranges.slice(0,t).concat(o.ranges.slice(t+1)),o.mainIndex==t?0:o.mainIndex-(o.mainIndex>t?1:0))}return null}Qe.dragstart=(o,e)=>{let{selection:{main:t}}=o.state,{mouseSelection:n}=o.inputState;n&&(n.dragging=t),e.dataTransfer&&(e.dataTransfer.setData("Text",o.state.sliceDoc(t.from,t.to)),e.dataTransfer.effectAllowed="copyMove")};function Zx(o,e,t,n){if(!t)return;let r=o.posAtCoords({x:e.clientX,y:e.clientY},!1);e.preventDefault();let{mouseSelection:s}=o.inputState,i=n&&s&&s.dragging&&mO(o,e)?{from:s.dragging.from,to:s.dragging.to}:null,l={from:r,insert:t},a=o.state.changes(i?[i,l]:l);o.focus(),o.dispatch({changes:a,selection:{anchor:a.mapPos(r,-1),head:a.mapPos(r,1)},userEvent:i?"move.drop":"input.drop"})}Qe.drop=(o,e)=>{if(!e.dataTransfer)return;if(o.state.readOnly)return e.preventDefault();let t=e.dataTransfer.files;if(t&&t.length){e.preventDefault();let n=Array(t.length),r=0,s=()=>{++r==t.length&&Zx(o,e,n.filter(i=>i!=null).join(o.state.lineBreak),!1)};for(let i=0;i<t.length;i++){let l=new FileReader;l.onerror=s,l.onload=()=>{/[\x00-\x08\x0e-\x1f]{2}/.test(l.result)||(n[i]=l.result),s()},l.readAsText(t[i])}}else Zx(o,e,e.dataTransfer.getData("Text"),!0)};Qe.paste=(o,e)=>{if(o.state.readOnly)return e.preventDefault();o.observer.flush();let t=$v?null:e.clipboardData;t?(Wv(o,t.getData("text/plain")||t.getData("text/uri-text")),e.preventDefault()):bO(o)};function SO(o,e){let t=o.dom.parentNode;if(!t)return;let n=t.appendChild(document.createElement("textarea"));n.style.cssText="position: fixed; left: -10000px; top: 10px",n.value=e,n.focus(),n.selectionEnd=e.length,n.selectionStart=0,setTimeout(()=>{n.remove(),o.focus()},50)}function wO(o){let e=[],t=[],n=!1;for(let r of o.selection.ranges)r.empty||(e.push(o.sliceDoc(r.from,r.to)),t.push(r));if(!e.length){let r=-1;for(let{from:s}of o.selection.ranges){let i=o.doc.lineAt(s);i.number>r&&(e.push(i.text),t.push({from:i.from,to:Math.min(o.doc.length,i.to+1)})),r=i.number}n=!0}return{text:e.join(o.lineBreak),ranges:t,linewise:n}}var Mp=null;Qe.copy=Qe.cut=(o,e)=>{let{text:t,ranges:n,linewise:r}=wO(o.state);if(!t&&!r)return;Mp=r?t:null;let s=$v?null:e.clipboardData;s?(e.preventDefault(),s.clearData(),s.setData("text/plain",t)):SO(o,t),e.type=="cut"&&!o.state.readOnly&&o.dispatch({changes:n,scrollIntoView:!0,userEvent:"delete.cut"})};var Uv=At.define();function Gv(o,e){let t=[];for(let n of o.facet(Rv)){let r=n(o,e);r&&t.push(r)}return t?o.update({effects:t,annotations:Uv.of(!0)}):null}function qv(o){setTimeout(()=>{let e=o.hasFocus;if(e!=o.inputState.notifiedFocused){let t=Gv(o.state,e);t?o.dispatch(t):o.update([])}},10)}Qe.focus=o=>{o.inputState.lastFocusTime=Date.now(),!o.scrollDOM.scrollTop&&(o.inputState.lastScrollTop||o.inputState.lastScrollLeft)&&(o.scrollDOM.scrollTop=o.inputState.lastScrollTop,o.scrollDOM.scrollLeft=o.inputState.lastScrollLeft),qv(o)};Qe.blur=o=>{o.observer.clearSelectionRange(),qv(o)};Qe.compositionstart=Qe.compositionupdate=o=>{o.inputState.compositionFirstChange==null&&(o.inputState.compositionFirstChange=!0),o.inputState.composing<0&&(o.inputState.composing=0)};Qe.compositionend=o=>{o.inputState.composing=-1,o.inputState.compositionEndedAt=Date.now(),o.inputState.compositionPendingKey=!0,o.inputState.compositionPendingChange=o.observer.pendingRecords().length>0,o.inputState.compositionFirstChange=null,Z.chrome&&Z.android?o.observer.flushSoon():o.inputState.compositionPendingChange?Promise.resolve().then(()=>o.observer.flush()):setTimeout(()=>{o.inputState.composing<0&&o.docView.hasComposition&&o.update([])},50)};Qe.contextmenu=o=>{o.inputState.lastContextMenu=Date.now()};Qe.beforeinput=(o,e)=>{var t;let n;if(Z.chrome&&Z.android&&(n=Bv.find(r=>r.inputType==e.inputType))&&(o.observer.delayAndroidKey(n.key,n.keyCode),n.key=="Backspace"||n.key=="Delete")){let r=((t=window.visualViewport)===null||t===void 0?void 0:t.height)||0;setTimeout(()=>{var s;(((s=window.visualViewport)===null||s===void 0?void 0:s.height)||0)>r+10&&o.hasFocus&&(o.contentDOM.blur(),o.focus())},100)}};var ev=["pre-wrap","normal","pre-line","break-spaces"],Rp=class{constructor(e){this.lineWrapping=e,this.doc=me.empty,this.heightSamples={},this.lineHeight=14,this.charWidth=7,this.textHeight=14,this.lineLength=30,this.heightChanged=!1}heightForGap(e,t){let n=this.doc.lineAt(t).number-this.doc.lineAt(e).number+1;return this.lineWrapping&&(n+=Math.max(0,Math.ceil((t-e-n*this.lineLength*.5)/this.lineLength))),this.lineHeight*n}heightForLine(e){return this.lineWrapping?(1+Math.max(0,Math.ceil((e-this.lineLength)/(this.lineLength-5))))*this.lineHeight:this.lineHeight}setDoc(e){return this.doc=e,this}mustRefreshForWrapping(e){return ev.indexOf(e)>-1!=this.lineWrapping}mustRefreshForHeights(e){let t=!1;for(let n=0;n<e.length;n++){let r=e[n];r<0?n++:this.heightSamples[Math.floor(r*10)]||(t=!0,this.heightSamples[Math.floor(r*10)]=!0)}return t}refresh(e,t,n,r,s,i){let l=ev.indexOf(e)>-1,a=Math.round(t)!=Math.round(this.lineHeight)||this.lineWrapping!=l;if(this.lineWrapping=l,this.lineHeight=t,this.charWidth=n,this.textHeight=r,this.lineLength=s,a){this.heightSamples={};for(let u=0;u<i.length;u++){let c=i[u];c<0?u++:this.heightSamples[Math.floor(c*10)]=!0}}return a}},Dp=class{constructor(e,t){this.from=e,this.heights=t,this.index=0}get more(){return this.index<this.heights.length}},Kt=class{constructor(e,t,n,r,s){this.from=e,this.length=t,this.top=n,this.height=r,this._content=s}get type(){return typeof this._content=="number"?Ke.Text:Array.isArray(this._content)?this._content:this._content.type}get to(){return this.from+this.length}get bottom(){return this.top+this.height}get widget(){return this._content instanceof Mn?this._content.widget:null}get widgetLineBreaks(){return typeof this._content=="number"?this._content:0}join(e){let t=(Array.isArray(this._content)?this._content:[this]).concat(Array.isArray(e._content)?e._content:[e]);return new Kt(this.from,this.length+e.length,this.top,this.height+e.height,t)}},ke=function(o){return o[o.ByPos=0]="ByPos",o[o.ByHeight=1]="ByHeight",o[o.ByPosNoHeight=2]="ByPosNoHeight",o}(ke||(ke={})),Va=.001,it=class{constructor(e,t,n=2){this.length=e,this.height=t,this.flags=n}get outdated(){return(this.flags&2)>0}set outdated(e){this.flags=(e?2:0)|this.flags&-3}setHeight(e,t){this.height!=t&&(Math.abs(this.height-t)>Va&&(e.heightChanged=!0),this.height=t)}replace(e,t,n){return it.of(n)}decomposeLeft(e,t){t.push(this)}decomposeRight(e,t){t.push(this)}applyChanges(e,t,n,r){let s=this,i=n.doc;for(let l=r.length-1;l>=0;l--){let{fromA:a,toA:u,fromB:c,toB:d}=r[l],p=s.lineAt(a,ke.ByPosNoHeight,n.setDoc(t),0,0),f=p.to>=u?p:s.lineAt(u,ke.ByPosNoHeight,n,0,0);for(d+=f.to-u,u=f.to;l>0&&p.from<=r[l-1].toA;)a=r[l-1].fromA,c=r[l-1].fromB,l--,a<p.from&&(p=s.lineAt(a,ke.ByPosNoHeight,n,0,0));c+=p.from-a,a=p.from;let h=Ri.build(n.setDoc(i),e,c,d);s=s.replace(a,u,h)}return s.updateHeight(n,0)}static empty(){return new St(0,0)}static of(e){if(e.length==1)return e[0];let t=0,n=e.length,r=0,s=0;for(;;)if(t==n)if(r>s*2){let l=e[t-1];l.break?e.splice(--t,1,l.left,null,l.right):e.splice(--t,1,l.left,l.right),n+=1+l.break,r-=l.size}else if(s>r*2){let l=e[n];l.break?e.splice(n,1,l.left,null,l.right):e.splice(n,1,l.left,l.right),n+=2+l.break,s-=l.size}else break;else if(r<s){let l=e[t++];l&&(r+=l.size)}else{let l=e[--n];l&&(s+=l.size)}let i=0;return e[t-1]==null?(i=1,t--):e[t]==null&&(i=1,n++),new Pp(it.of(e.slice(0,t)),i,it.of(e.slice(n)))}};it.prototype.size=1;var Ja=class extends it{constructor(e,t,n){super(e,t),this.deco=n}blockAt(e,t,n,r){return new Kt(r,this.length,n,this.height,this.deco||0)}lineAt(e,t,n,r,s){return this.blockAt(0,n,r,s)}forEachLine(e,t,n,r,s,i){e<=s+this.length&&t>=s&&i(this.blockAt(0,n,r,s))}updateHeight(e,t=0,n=!1,r){return r&&r.from<=t&&r.more&&this.setHeight(e,r.heights[r.index++]),this.outdated=!1,this}toString(){return`block(${this.length})`}},St=class extends Ja{constructor(e,t){super(e,t,null),this.collapsed=0,this.widgetHeight=0,this.breaks=0}blockAt(e,t,n,r){return new Kt(r,this.length,n,this.height,this.breaks)}replace(e,t,n){let r=n[0];return n.length==1&&(r instanceof St||r instanceof Je&&r.flags&4)&&Math.abs(this.length-r.length)<10?(r instanceof Je?r=new St(r.length,this.height):r.height=this.height,this.outdated||(r.outdated=!1),r):it.of(n)}updateHeight(e,t=0,n=!1,r){return r&&r.from<=t&&r.more?this.setHeight(e,r.heights[r.index++]):(n||this.outdated)&&this.setHeight(e,Math.max(this.widgetHeight,e.heightForLine(this.length-this.collapsed))+this.breaks*e.lineHeight),this.outdated=!1,this}toString(){return`line(${this.length}${this.collapsed?-this.collapsed:""}${this.widgetHeight?":"+this.widgetHeight:""})`}},Je=class extends it{constructor(e){super(e,0)}heightMetrics(e,t){let n=e.doc.lineAt(t).number,r=e.doc.lineAt(t+this.length).number,s=r-n+1,i,l=0;if(e.lineWrapping){let a=Math.min(this.height,e.lineHeight*s);i=a/s,this.length>s+1&&(l=(this.height-a)/(this.length-s-1))}else i=this.height/s;return{firstLine:n,lastLine:r,perLine:i,perChar:l}}blockAt(e,t,n,r){let{firstLine:s,lastLine:i,perLine:l,perChar:a}=this.heightMetrics(t,r);if(t.lineWrapping){let u=r+Math.round(Math.max(0,Math.min(1,(e-n)/this.height))*this.length),c=t.doc.lineAt(u),d=l+c.length*a,p=Math.max(n,e-d/2);return new Kt(c.from,c.length,p,d,0)}else{let u=Math.max(0,Math.min(i-s,Math.floor((e-n)/l))),{from:c,length:d}=t.doc.line(s+u);return new Kt(c,d,n+l*u,l,0)}}lineAt(e,t,n,r,s){if(t==ke.ByHeight)return this.blockAt(e,n,r,s);if(t==ke.ByPosNoHeight){let{from:f,to:h}=n.doc.lineAt(e);return new Kt(f,h-f,0,0,0)}let{firstLine:i,perLine:l,perChar:a}=this.heightMetrics(n,s),u=n.doc.lineAt(e),c=l+u.length*a,d=u.number-i,p=r+l*d+a*(u.from-s-d);return new Kt(u.from,u.length,Math.max(r,Math.min(p,r+this.height-c)),c,0)}forEachLine(e,t,n,r,s,i){e=Math.max(e,s),t=Math.min(t,s+this.length);let{firstLine:l,perLine:a,perChar:u}=this.heightMetrics(n,s);for(let c=e,d=r;c<=t;){let p=n.doc.lineAt(c);if(c==e){let h=p.number-l;d+=a*h+u*(e-s-h)}let f=a+u*p.length;i(new Kt(p.from,p.length,d,f,0)),d+=f,c=p.to+1}}replace(e,t,n){let r=this.length-t;if(r>0){let s=n[n.length-1];s instanceof Je?n[n.length-1]=new Je(s.length+r):n.push(null,new Je(r-1))}if(e>0){let s=n[0];s instanceof Je?n[0]=new Je(e+s.length):n.unshift(new Je(e-1),null)}return it.of(n)}decomposeLeft(e,t){t.push(new Je(e-1),null)}decomposeRight(e,t){t.push(null,new Je(this.length-e-1))}updateHeight(e,t=0,n=!1,r){let s=t+this.length;if(r&&r.from<=t+this.length&&r.more){let i=[],l=Math.max(t,r.from),a=-1;for(r.from>t&&i.push(new Je(r.from-t-1).updateHeight(e,t));l<=s&&r.more;){let c=e.doc.lineAt(l).length;i.length&&i.push(null);let d=r.heights[r.index++];a==-1?a=d:Math.abs(d-a)>=Va&&(a=-2);let p=new St(c,d);p.outdated=!1,i.push(p),l+=c+1}l<=s&&i.push(null,new Je(s-l).updateHeight(e,l));let u=it.of(i);return(a<0||Math.abs(u.height-this.height)>=Va||Math.abs(a-this.heightMetrics(e,t).perLine)>=Va)&&(e.heightChanged=!0),u}else(n||this.outdated)&&(this.setHeight(e,e.heightForGap(t,t+this.length)),this.outdated=!1);return this}toString(){return`gap(${this.length})`}},Pp=class extends it{constructor(e,t,n){super(e.length+t+n.length,e.height+n.height,t|(e.outdated||n.outdated?2:0)),this.left=e,this.right=n,this.size=e.size+n.size}get break(){return this.flags&1}blockAt(e,t,n,r){let s=n+this.left.height;return e<s?this.left.blockAt(e,t,n,r):this.right.blockAt(e,t,s,r+this.left.length+this.break)}lineAt(e,t,n,r,s){let i=r+this.left.height,l=s+this.left.length+this.break,a=t==ke.ByHeight?e<i:e<l,u=a?this.left.lineAt(e,t,n,r,s):this.right.lineAt(e,t,n,i,l);if(this.break||(a?u.to<l:u.from>l))return u;let c=t==ke.ByPosNoHeight?ke.ByPosNoHeight:ke.ByPos;return a?u.join(this.right.lineAt(l,c,n,i,l)):this.left.lineAt(l,c,n,r,s).join(u)}forEachLine(e,t,n,r,s,i){let l=r+this.left.height,a=s+this.left.length+this.break;if(this.break)e<a&&this.left.forEachLine(e,t,n,r,s,i),t>=a&&this.right.forEachLine(e,t,n,l,a,i);else{let u=this.lineAt(a,ke.ByPos,n,r,s);e<u.from&&this.left.forEachLine(e,u.from-1,n,r,s,i),u.to>=e&&u.from<=t&&i(u),t>u.to&&this.right.forEachLine(u.to+1,t,n,l,a,i)}}replace(e,t,n){let r=this.left.length+this.break;if(t<r)return this.balanced(this.left.replace(e,t,n),this.right);if(e>this.left.length)return this.balanced(this.left,this.right.replace(e-r,t-r,n));let s=[];e>0&&this.decomposeLeft(e,s);let i=s.length;for(let l of n)s.push(l);if(e>0&&tv(s,i-1),t<this.length){let l=s.length;this.decomposeRight(t,s),tv(s,l)}return it.of(s)}decomposeLeft(e,t){let n=this.left.length;if(e<=n)return this.left.decomposeLeft(e,t);t.push(this.left),this.break&&(n++,e>=n&&t.push(null)),e>n&&this.right.decomposeLeft(e-n,t)}decomposeRight(e,t){let n=this.left.length,r=n+this.break;if(e>=r)return this.right.decomposeRight(e-r,t);e<n&&this.left.decomposeRight(e,t),this.break&&e<r&&t.push(null),t.push(this.right)}balanced(e,t){return e.size>2*t.size||t.size>2*e.size?it.of(this.break?[e,null,t]:[e,t]):(this.left=e,this.right=t,this.height=e.height+t.height,this.outdated=e.outdated||t.outdated,this.size=e.size+t.size,this.length=e.length+this.break+t.length,this)}updateHeight(e,t=0,n=!1,r){let{left:s,right:i}=this,l=t+s.length+this.break,a=null;return r&&r.from<=t+s.length&&r.more?a=s=s.updateHeight(e,t,n,r):s.updateHeight(e,t,n),r&&r.from<=l+i.length&&r.more?a=i=i.updateHeight(e,l,n,r):i.updateHeight(e,l,n),a?this.balanced(s,i):(this.height=this.left.height+this.right.height,this.outdated=!1,this)}toString(){return this.left+(this.break?" ":"-")+this.right}};function tv(o,e){let t,n;o[e]==null&&(t=o[e-1])instanceof Je&&(n=o[e+1])instanceof Je&&o.splice(e-1,3,new Je(t.length+1+n.length))}var TO=5,Ri=class{constructor(e,t){this.pos=e,this.oracle=t,this.nodes=[],this.lineStart=-1,this.lineEnd=-1,this.covering=null,this.writtenTo=e}get isCovered(){return this.covering&&this.nodes[this.nodes.length-1]==this.covering}span(e,t){if(this.lineStart>-1){let n=Math.min(t,this.lineEnd),r=this.nodes[this.nodes.length-1];r instanceof St?r.length+=n-this.pos:(n>this.pos||!this.isCovered)&&this.nodes.push(new St(n-this.pos,-1)),this.writtenTo=n,t>n&&(this.nodes.push(null),this.writtenTo++,this.lineStart=-1)}this.pos=t}point(e,t,n){if(e<t||n.heightRelevant){let r=n.widget?n.widget.estimatedHeight:0,s=n.widget?n.widget.lineBreaks:0;r<0&&(r=this.oracle.lineHeight);let i=t-e;n.block?this.addBlock(new Ja(i,r,n)):(i||s||r>=TO)&&this.addLineDeco(r,s,i)}else t>e&&this.span(e,t);this.lineEnd>-1&&this.lineEnd<this.pos&&(this.lineEnd=this.oracle.doc.lineAt(this.pos).to)}enterLine(){if(this.lineStart>-1)return;let{from:e,to:t}=this.oracle.doc.lineAt(this.pos);this.lineStart=e,this.lineEnd=t,this.writtenTo<e&&((this.writtenTo<e-1||this.nodes[this.nodes.length-1]==null)&&this.nodes.push(this.blankContent(this.writtenTo,e-1)),this.nodes.push(null)),this.pos>e&&this.nodes.push(new St(this.pos-e,-1)),this.writtenTo=this.pos}blankContent(e,t){let n=new Je(t-e);return this.oracle.doc.lineAt(e).to==t&&(n.flags|=4),n}ensureLine(){this.enterLine();let e=this.nodes.length?this.nodes[this.nodes.length-1]:null;if(e instanceof St)return e;let t=new St(0,-1);return this.nodes.push(t),t}addBlock(e){var t;this.enterLine();let n=(t=e.deco)===null||t===void 0?void 0:t.type;n==Ke.WidgetAfter&&!this.isCovered&&this.ensureLine(),this.nodes.push(e),this.writtenTo=this.pos=this.pos+e.length,n!=Ke.WidgetBefore&&(this.covering=e)}addLineDeco(e,t,n){let r=this.ensureLine();r.length+=n,r.collapsed+=n,r.widgetHeight=Math.max(r.widgetHeight,e),r.breaks+=t,this.writtenTo=this.pos=this.pos+n}finish(e){let t=this.nodes.length==0?null:this.nodes[this.nodes.length-1];this.lineStart>-1&&!(t instanceof St)&&!this.isCovered?this.nodes.push(new St(0,-1)):(this.writtenTo<this.pos||t==null)&&this.nodes.push(this.blankContent(this.writtenTo,this.pos));let n=e;for(let r of this.nodes)r instanceof St&&r.updateHeight(this.oracle,n),n+=r?r.length:1;return this.nodes}static build(e,t,n,r){let s=new Ri(n,e);return we.spans(t,n,r,s,0),s.finish(n)}};function EO(o,e,t){let n=new kp;return we.compare(o,e,t,n,0),n.changes}var kp=class{constructor(){this.changes=[]}compareRange(){}comparePoint(e,t,n,r){(e<t||n&&n.heightRelevant||r&&r.heightRelevant)&&gp(e,t,this.changes,5)}};function MO(o,e){let t=o.getBoundingClientRect(),n=o.ownerDocument,r=n.defaultView||window,s=Math.max(0,t.left),i=Math.min(r.innerWidth,t.right),l=Math.max(0,t.top),a=Math.min(r.innerHeight,t.bottom);for(let u=o.parentNode;u&&u!=n.body;)if(u.nodeType==1){let c=u,d=window.getComputedStyle(c);if((c.scrollHeight>c.clientHeight||c.scrollWidth>c.clientWidth)&&d.overflow!="visible"){let p=c.getBoundingClientRect();s=Math.max(s,p.left),i=Math.min(i,p.right),l=Math.max(l,p.top),a=u==o.parentNode?p.bottom:Math.min(a,p.bottom)}u=d.position=="absolute"||d.position=="fixed"?c.offsetParent:c.parentNode}else if(u.nodeType==11)u=u.host;else break;return{left:s-t.left,right:Math.max(s,i)-t.left,top:l-(t.top+e),bottom:Math.max(l,a)-(t.top+e)}}function RO(o,e){let t=o.getBoundingClientRect();return{left:0,right:t.right-t.left,top:e,bottom:t.bottom-(t.top+e)}}var Ti=class{constructor(e,t,n){this.from=e,this.to=t,this.size=n}static same(e,t){if(e.length!=t.length)return!1;for(let n=0;n<e.length;n++){let r=e[n],s=t[n];if(r.from!=s.from||r.to!=s.to||r.size!=s.size)return!1}return!0}draw(e){return Xe.replace({widget:new Ip(this.size,e)}).range(this.from,this.to)}},Ip=class extends jn{constructor(e,t){super(),this.size=e,this.vertical=t}eq(e){return e.size==this.size&&e.vertical==this.vertical}toDOM(){let e=document.createElement("div");return this.vertical?e.style.height=this.size+"px":(e.style.width=this.size+"px",e.style.height="2px",e.style.display="inline-block"),e}get estimatedHeight(){return this.vertical?this.size:-1}},Xa=class{constructor(e){this.state=e,this.pixelViewport={left:0,right:window.innerWidth,top:0,bottom:0},this.inView=!0,this.paddingTop=0,this.paddingBottom=0,this.contentDOMWidth=0,this.contentDOMHeight=0,this.editorHeight=0,this.editorWidth=0,this.scrollTop=0,this.scrolledToBottom=!0,this.scrollAnchorPos=0,this.scrollAnchorHeight=-1,this.scaler=nv,this.scrollTarget=null,this.printing=!1,this.mustMeasureContent=!0,this.defaultTextDirection=_e.LTR,this.visibleRanges=[],this.mustEnforceCursorAssoc=!1;let t=e.facet(Gp).some(n=>typeof n!="function"&&n.class=="cm-lineWrapping");this.heightOracle=new Rp(t),this.stateDeco=e.facet(Mi).filter(n=>typeof n!="function"),this.heightMap=it.empty().applyChanges(this.stateDeco,me.empty,this.heightOracle.setDoc(e.doc),[new Dt(0,0,0,e.doc.length)]),this.viewport=this.getViewport(0,null),this.updateViewportLines(),this.updateForViewport(),this.lineGaps=this.ensureLineGaps([]),this.lineGapDeco=Xe.set(this.lineGaps.map(n=>n.draw(!1))),this.computeVisibleRanges()}updateForViewport(){let e=[this.viewport],{main:t}=this.state.selection;for(let n=0;n<=1;n++){let r=n?t.head:t.anchor;if(!e.some(({from:s,to:i})=>r>=s&&r<=i)){let{from:s,to:i}=this.lineBlockAt(r);e.push(new rs(s,i))}}this.viewports=e.sort((n,r)=>n.from-r.from),this.scaler=this.heightMap.height<=7e6?nv:new Lp(this.heightOracle,this.heightMap,this.viewports)}updateViewportLines(){this.viewportLines=[],this.heightMap.forEachLine(this.viewport.from,this.viewport.to,this.heightOracle.setDoc(this.state.doc),0,0,e=>{this.viewportLines.push(this.scaler.scale==1?e:Si(e,this.scaler))})}update(e,t=null){this.state=e.state;let n=this.stateDeco;this.stateDeco=this.state.facet(Mi).filter(c=>typeof c!="function");let r=e.changedRanges,s=Dt.extendWithRanges(r,EO(n,this.stateDeco,e?e.changes:Ne.empty(this.state.doc.length))),i=this.heightMap.height,l=this.scrolledToBottom?null:this.scrollAnchorAt(this.scrollTop);this.heightMap=this.heightMap.applyChanges(this.stateDeco,e.startState.doc,this.heightOracle.setDoc(this.state.doc),s),this.heightMap.height!=i&&(e.flags|=2),l?(this.scrollAnchorPos=e.changes.mapPos(l.from,-1),this.scrollAnchorHeight=l.top):(this.scrollAnchorPos=-1,this.scrollAnchorHeight=this.heightMap.height);let a=s.length?this.mapViewport(this.viewport,e.changes):this.viewport;(t&&(t.range.head<a.from||t.range.head>a.to)||!this.viewportIsAppropriate(a))&&(a=this.getViewport(0,t));let u=!e.changes.empty||e.flags&2||a.from!=this.viewport.from||a.to!=this.viewport.to;this.viewport=a,this.updateForViewport(),u&&this.updateViewportLines(),(this.lineGaps.length||this.viewport.to-this.viewport.from>2e3<<1)&&this.updateLineGaps(this.ensureLineGaps(this.mapLineGaps(this.lineGaps,e.changes))),e.flags|=this.computeVisibleRanges(),t&&(this.scrollTarget=t),!this.mustEnforceCursorAssoc&&e.selectionSet&&e.view.lineWrapping&&e.state.selection.main.empty&&e.state.selection.main.assoc&&!e.state.facet(Pv)&&(this.mustEnforceCursorAssoc=!0)}measure(e){let t=e.contentDOM,n=window.getComputedStyle(t),r=this.heightOracle,s=n.whiteSpace;this.defaultTextDirection=n.direction=="rtl"?_e.RTL:_e.LTR;let i=this.heightOracle.mustRefreshForWrapping(s),l=t.getBoundingClientRect(),a=i||this.mustMeasureContent||this.contentDOMHeight!=l.height;this.contentDOMHeight=l.height,this.mustMeasureContent=!1;let u=0,c=0,d=parseInt(n.paddingTop)||0,p=parseInt(n.paddingBottom)||0;(this.paddingTop!=d||this.paddingBottom!=p)&&(this.paddingTop=d,this.paddingBottom=p,u|=10),this.editorWidth!=e.scrollDOM.clientWidth&&(r.lineWrapping&&(a=!0),this.editorWidth=e.scrollDOM.clientWidth,u|=8),this.scrollTop!=e.scrollDOM.scrollTop&&(this.scrollAnchorHeight=-1,this.scrollTop=e.scrollDOM.scrollTop),this.scrolledToBottom=fv(e.scrollDOM);let f=(this.printing?RO:MO)(t,this.paddingTop),h=f.top-this.pixelViewport.top,g=f.bottom-this.pixelViewport.bottom;this.pixelViewport=f;let m=this.pixelViewport.bottom>this.pixelViewport.top&&this.pixelViewport.right>this.pixelViewport.left;if(m!=this.inView&&(this.inView=m,m&&(a=!0)),!this.inView&&!this.scrollTarget)return 0;let y=l.width;if((this.contentDOMWidth!=y||this.editorHeight!=e.scrollDOM.clientHeight)&&(this.contentDOMWidth=l.width,this.editorHeight=e.scrollDOM.clientHeight,u|=8),a){let v=e.docView.measureVisibleLineHeights(this.viewport);if(r.mustRefreshForHeights(v)&&(i=!0),i||r.lineWrapping&&Math.abs(y-this.contentDOMWidth)>r.charWidth){let{lineHeight:x,charWidth:S,textHeight:b}=e.docView.measureTextSize();i=x>0&&r.refresh(s,x,S,b,y/S,v),i&&(e.docView.minWidth=0,u|=8)}h>0&&g>0?c=Math.max(h,g):h<0&&g<0&&(c=Math.min(h,g)),r.heightChanged=!1;for(let x of this.viewports){let S=x.from==this.viewport.from?v:e.docView.measureVisibleLineHeights(x);this.heightMap=(i?it.empty().applyChanges(this.stateDeco,me.empty,this.heightOracle,[new Dt(0,0,0,e.state.doc.length)]):this.heightMap).updateHeight(r,0,i,new Dp(x.from,S))}r.heightChanged&&(u|=2)}let w=!this.viewportIsAppropriate(this.viewport,c)||this.scrollTarget&&(this.scrollTarget.range.head<this.viewport.from||this.scrollTarget.range.head>this.viewport.to);return w&&(this.viewport=this.getViewport(c,this.scrollTarget)),this.updateForViewport(),(u&2||w)&&this.updateViewportLines(),(this.lineGaps.length||this.viewport.to-this.viewport.from>2e3<<1)&&this.updateLineGaps(this.ensureLineGaps(i?[]:this.lineGaps,e)),u|=this.computeVisibleRanges(),this.mustEnforceCursorAssoc&&(this.mustEnforceCursorAssoc=!1,e.docView.enforceCursorAssoc()),u}get visibleTop(){return this.scaler.fromDOM(this.pixelViewport.top)}get visibleBottom(){return this.scaler.fromDOM(this.pixelViewport.bottom)}getViewport(e,t){let n=.5-Math.max(-.5,Math.min(.5,e/1e3/2)),r=this.heightMap,s=this.heightOracle,{visibleTop:i,visibleBottom:l}=this,a=new rs(r.lineAt(i-n*1e3,ke.ByHeight,s,0,0).from,r.lineAt(l+(1-n)*1e3,ke.ByHeight,s,0,0).to);if(t){let{head:u}=t.range;if(u<a.from||u>a.to){let c=Math.min(this.editorHeight,this.pixelViewport.bottom-this.pixelViewport.top),d=r.lineAt(u,ke.ByPos,s,0,0),p;t.y=="center"?p=(d.top+d.bottom)/2-c/2:t.y=="start"||t.y=="nearest"&&u<a.from?p=d.top:p=d.bottom-c,a=new rs(r.lineAt(p-1e3/2,ke.ByHeight,s,0,0).from,r.lineAt(p+c+1e3/2,ke.ByHeight,s,0,0).to)}}return a}mapViewport(e,t){let n=t.mapPos(e.from,-1),r=t.mapPos(e.to,1);return new rs(this.heightMap.lineAt(n,ke.ByPos,this.heightOracle,0,0).from,this.heightMap.lineAt(r,ke.ByPos,this.heightOracle,0,0).to)}viewportIsAppropriate({from:e,to:t},n=0){if(!this.inView)return!0;let{top:r}=this.heightMap.lineAt(e,ke.ByPos,this.heightOracle,0,0),{bottom:s}=this.heightMap.lineAt(t,ke.ByPos,this.heightOracle,0,0),{visibleTop:i,visibleBottom:l}=this;return(e==0||r<=i-Math.max(10,Math.min(-n,250)))&&(t==this.state.doc.length||s>=l+Math.max(10,Math.min(n,250)))&&r>i-2*1e3&&s<l+2*1e3}mapLineGaps(e,t){if(!e.length||t.empty)return e;let n=[];for(let r of e)t.touchesRange(r.from,r.to)||n.push(new Ti(t.mapPos(r.from),t.mapPos(r.to),r.size));return n}ensureLineGaps(e,t){let n=this.heightOracle.lineWrapping,r=n?1e4:2e3,s=r>>1,i=r<<1;if(this.defaultTextDirection!=_e.LTR&&!n)return[];let l=[],a=(u,c,d,p)=>{if(c-u<s)return;let f=this.state.selection.main,h=[f.from];f.empty||h.push(f.to);for(let m of h)if(m>u&&m<c){a(u,m-10,d,p),a(m+10,c,d,p);return}let g=PO(e,m=>m.from>=d.from&&m.to<=d.to&&Math.abs(m.from-u)<s&&Math.abs(m.to-c)<s&&!h.some(y=>m.from<y&&m.to>y));if(!g){if(c<d.to&&t&&n&&t.visibleRanges.some(m=>m.from<=c&&m.to>=c)){let m=t.moveToLineBoundary(z.cursor(c),!1,!0).head;m>u&&(c=m)}g=new Ti(u,c,this.gapSize(d,u,c,p))}l.push(g)};for(let u of this.viewportLines){if(u.length<i)continue;let c=DO(u.from,u.to,this.stateDeco);if(c.total<i)continue;let d=this.scrollTarget?this.scrollTarget.range.head:null,p,f;if(n){let h=r/this.heightOracle.lineLength*this.heightOracle.lineHeight,g,m;if(d!=null){let y=Aa(c,d),w=((this.visibleBottom-this.visibleTop)/2+h)/u.height;g=y-w,m=y+w}else g=(this.visibleTop-u.top-h)/u.height,m=(this.visibleBottom-u.top+h)/u.height;p=La(c,g),f=La(c,m)}else{let h=c.total*this.heightOracle.charWidth,g=r*this.heightOracle.charWidth,m,y;if(d!=null){let w=Aa(c,d),v=((this.pixelViewport.right-this.pixelViewport.left)/2+g)/h;m=w-v,y=w+v}else m=(this.pixelViewport.left-g)/h,y=(this.pixelViewport.right+g)/h;p=La(c,m),f=La(c,y)}p>u.from&&a(u.from,p,u,c),f<u.to&&a(f,u.to,u,c)}return l}gapSize(e,t,n,r){let s=Aa(r,n)-Aa(r,t);return this.heightOracle.lineWrapping?e.height*s:r.total*this.heightOracle.charWidth*s}updateLineGaps(e){Ti.same(e,this.lineGaps)||(this.lineGaps=e,this.lineGapDeco=Xe.set(e.map(t=>t.draw(this.heightOracle.lineWrapping))))}computeVisibleRanges(){let e=this.stateDeco;this.lineGaps.length&&(e=e.concat(this.lineGapDeco));let t=[];we.spans(e,this.viewport.from,this.viewport.to,{span(r,s){t.push({from:r,to:s})},point(){}},20);let n=t.length!=this.visibleRanges.length||this.visibleRanges.some((r,s)=>r.from!=t[s].from||r.to!=t[s].to);return this.visibleRanges=t,n?4:0}lineBlockAt(e){return e>=this.viewport.from&&e<=this.viewport.to&&this.viewportLines.find(t=>t.from<=e&&t.to>=e)||Si(this.heightMap.lineAt(e,ke.ByPos,this.heightOracle,0,0),this.scaler)}lineBlockAtHeight(e){return Si(this.heightMap.lineAt(this.scaler.fromDOM(e),ke.ByHeight,this.heightOracle,0,0),this.scaler)}scrollAnchorAt(e){let t=this.lineBlockAtHeight(e+8);return t.from>=this.viewport.from||this.viewportLines[0].top-e>200?t:this.viewportLines[0]}elementAtHeight(e){return Si(this.heightMap.blockAt(this.scaler.fromDOM(e),this.heightOracle,0,0),this.scaler)}get docHeight(){return this.scaler.toDOM(this.heightMap.height)}get contentHeight(){return this.docHeight+this.paddingTop+this.paddingBottom}},rs=class{constructor(e,t){this.from=e,this.to=t}};function DO(o,e,t){let n=[],r=o,s=0;return we.spans(t,o,e,{span(){},point(i,l){i>r&&(n.push({from:r,to:i}),s+=i-r),r=l}},20),r<e&&(n.push({from:r,to:e}),s+=e-r),{total:s,ranges:n}}function La({total:o,ranges:e},t){if(t<=0)return e[0].from;if(t>=1)return e[e.length-1].to;let n=Math.floor(o*t);for(let r=0;;r++){let{from:s,to:i}=e[r],l=i-s;if(n<=l)return s+n;n-=l}}function Aa(o,e){let t=0;for(let{from:n,to:r}of o.ranges){if(e<=r){t+=e-n;break}t+=r-n}return t/o.total}function PO(o,e){for(let t of o)if(e(t))return t}var nv={toDOM(o){return o},fromDOM(o){return o},scale:1},Lp=class{constructor(e,t,n){let r=0,s=0,i=0;this.viewports=n.map(({from:l,to:a})=>{let u=t.lineAt(l,ke.ByPos,e,0,0).top,c=t.lineAt(a,ke.ByPos,e,0,0).bottom;return r+=c-u,{from:l,to:a,top:u,bottom:c,domTop:0,domBottom:0}}),this.scale=(7e6-r)/(t.height-r);for(let l of this.viewports)l.domTop=i+(l.top-s)*this.scale,i=l.domBottom=l.domTop+(l.bottom-l.top),s=l.bottom}toDOM(e){for(let t=0,n=0,r=0;;t++){let s=t<this.viewports.length?this.viewports[t]:null;if(!s||e<s.top)return r+(e-n)*this.scale;if(e<=s.bottom)return s.domTop+(e-s.top);n=s.bottom,r=s.domBottom}}fromDOM(e){for(let t=0,n=0,r=0;;t++){let s=t<this.viewports.length?this.viewports[t]:null;if(!s||e<s.domTop)return n+(e-r)/this.scale;if(e<=s.domBottom)return s.top+(e-s.domTop);n=s.bottom,r=s.domBottom}}};function Si(o,e){if(e.scale==1)return o;let t=e.toDOM(o.top),n=e.toDOM(o.bottom);return new Kt(o.from,o.length,t,n-t,Array.isArray(o._content)?o._content.map(r=>Si(r,e)):o._content)}var Oa=se.define({combine:o=>o.join(" ")}),Ap=se.define({combine:o=>o.indexOf(!0)>-1}),Op=_t.newName(),Qv=_t.newName(),jv=_t.newName(),Jv={"&light":"."+Qv,"&dark":"."+jv};function Np(o,e,t){return new _t(e,{finish(n){return/&/.test(n)?n.replace(/&\w*/,r=>{if(r=="&")return o;if(!t||!t[r])throw new RangeError(`Unsupported selector: ${r}`);return t[r]}):o+" "+n}})}var kO=Np("."+Op,{"&":{position:"relative !important",boxSizing:"border-box","&.cm-focused":{outline:"1px dotted #212121"},display:"flex !important",flexDirection:"column"},".cm-scroller":{display:"flex !important",alignItems:"flex-start !important",fontFamily:"monospace",lineHeight:1.4,height:"100%",overflowX:"auto",position:"relative",zIndex:0},".cm-content":{margin:0,flexGrow:2,flexShrink:0,display:"block",whiteSpace:"pre",wordWrap:"normal",boxSizing:"border-box",padding:"4px 0",outline:"none","&[contenteditable=true]":{WebkitUserModify:"read-write-plaintext-only"}},".cm-lineWrapping":{whiteSpace_fallback:"pre-wrap",whiteSpace:"break-spaces",wordBreak:"break-word",overflowWrap:"anywhere",flexShrink:1},"&light .cm-content":{caretColor:"black"},"&dark .cm-content":{caretColor:"white"},".cm-line":{display:"block",padding:"0 2px 0 6px"},".cm-layer":{position:"absolute",left:0,top:0,contain:"size style","& > *":{position:"absolute"}},"&light .cm-selectionBackground":{background:"#d9d9d9"},"&dark .cm-selectionBackground":{background:"#222"},"&light.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground":{background:"#d7d4f0"},"&dark.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground":{background:"#233"},".cm-cursorLayer":{pointerEvents:"none"},"&.cm-focused > .cm-scroller > .cm-cursorLayer":{animation:"steps(1) cm-blink 1.2s infinite"},"@keyframes cm-blink":{"0%":{},"50%":{opacity:0},"100%":{}},"@keyframes cm-blink2":{"0%":{},"50%":{opacity:0},"100%":{}},".cm-cursor, .cm-dropCursor":{borderLeft:"1.2px solid black",marginLeft:"-0.6px",pointerEvents:"none"},".cm-cursor":{display:"none"},"&dark .cm-cursor":{borderLeftColor:"#444"},".cm-dropCursor":{position:"absolute"},"&.cm-focused > .cm-scroller > .cm-cursorLayer .cm-cursor":{display:"block"},"&light .cm-activeLine":{backgroundColor:"#cceeff44"},"&dark .cm-activeLine":{backgroundColor:"#99eeff33"},"&light .cm-specialChar":{color:"red"},"&dark .cm-specialChar":{color:"#f78"},".cm-gutters":{flexShrink:0,display:"flex",height:"100%",boxSizing:"border-box",insetInlineStart:0,zIndex:200},"&light .cm-gutters":{backgroundColor:"#f5f5f5",color:"#6c6c6c",borderRight:"1px solid #ddd"},"&dark .cm-gutters":{backgroundColor:"#333338",color:"#ccc"},".cm-gutter":{display:"flex !important",flexDirection:"column",flexShrink:0,boxSizing:"border-box",minHeight:"100%",overflow:"hidden"},".cm-gutterElement":{boxSizing:"border-box"},".cm-lineNumbers .cm-gutterElement":{padding:"0 3px 0 5px",minWidth:"20px",textAlign:"right",whiteSpace:"nowrap"},"&light .cm-activeLineGutter":{backgroundColor:"#e2f2ff"},"&dark .cm-activeLineGutter":{backgroundColor:"#222227"},".cm-panels":{boxSizing:"border-box",position:"sticky",left:0,right:0},"&light .cm-panels":{backgroundColor:"#f5f5f5",color:"black"},"&light .cm-panels-top":{borderBottom:"1px solid #ddd"},"&light .cm-panels-bottom":{borderTop:"1px solid #ddd"},"&dark .cm-panels":{backgroundColor:"#333338",color:"white"},".cm-tab":{display:"inline-block",overflow:"hidden",verticalAlign:"bottom"},".cm-widgetBuffer":{verticalAlign:"text-top",height:"1em",width:0,display:"inline"},".cm-placeholder":{color:"#888",display:"inline-block",verticalAlign:"top"},".cm-highlightSpace:before":{content:"attr(data-display)",position:"absolute",pointerEvents:"none",color:"#888"},".cm-highlightTab":{backgroundImage:`url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="200" height="20"><path stroke="%23888" stroke-width="1" fill="none" d="M1 10H196L190 5M190 15L196 10M197 4L197 16"/></svg>')`,backgroundSize:"auto 100%",backgroundPosition:"right 90%",backgroundRepeat:"no-repeat"},".cm-trailingSpace":{backgroundColor:"#ff332255"},".cm-button":{verticalAlign:"middle",color:"inherit",fontSize:"70%",padding:".2em 1em",borderRadius:"1px"},"&light .cm-button":{backgroundImage:"linear-gradient(#eff1f5, #d9d9df)",border:"1px solid #888","&:active":{backgroundImage:"linear-gradient(#b4b4b4, #d0d3d6)"}},"&dark .cm-button":{backgroundImage:"linear-gradient(#393939, #111)",border:"1px solid #888","&:active":{backgroundImage:"linear-gradient(#111, #333)"}},".cm-textfield":{verticalAlign:"middle",color:"inherit",fontSize:"70%",border:"1px solid silver",padding:".2em .5em"},"&light .cm-textfield":{backgroundColor:"white"},"&dark .cm-textfield":{border:"1px solid #555",backgroundColor:"inherit"}},Jv),Hp=class{constructor(e,t,n,r){this.typeOver=r,this.bounds=null,this.text="";let{impreciseHead:s,impreciseAnchor:i}=e.docView;if(e.state.readOnly&&t>-1)this.newSel=null;else if(t>-1&&(this.bounds=e.docView.domBoundsAround(t,n,0))){let l=s||i?[]:LO(e),a=new Ua(l,e.state);a.readRange(this.bounds.startDOM,this.bounds.endDOM),this.text=a.text,this.newSel=AO(l,this.bounds.from)}else{let l=e.observer.selectionRange,a=s&&s.node==l.focusNode&&s.offset==l.focusOffset||!up(e.contentDOM,l.focusNode)?e.state.selection.main.head:e.docView.posFromDOM(l.focusNode,l.focusOffset),u=i&&i.node==l.anchorNode&&i.offset==l.anchorOffset||!up(e.contentDOM,l.anchorNode)?e.state.selection.main.anchor:e.docView.posFromDOM(l.anchorNode,l.anchorOffset);this.newSel=z.single(u,a)}}};function Xv(o,e){let t,{newSel:n}=e,r=o.state.selection.main,s=o.inputState.lastKeyTime>Date.now()-100?o.inputState.lastKeyCode:-1;if(e.bounds){let{from:i,to:l}=e.bounds,a=r.from,u=null;(s===8||Z.android&&e.text.length<l-i)&&(a=r.to,u="end");let c=IO(o.state.doc.sliceString(i,l,os),e.text,a-i,u);c&&(Z.chrome&&s==13&&c.toB==c.from+2&&e.text.slice(c.from,c.toB)==os+os&&c.toB--,t={from:i+c.from,to:i+c.toA,insert:me.of(e.text.slice(c.from,c.toB).split(os))})}else n&&(!o.hasFocus&&o.state.facet(Za)||n.main.eq(r))&&(n=null);if(!t&&!n)return!1;if(!t&&e.typeOver&&!r.empty&&n&&n.main.empty?t={from:r.from,to:r.to,insert:o.state.doc.slice(r.from,r.to)}:t&&t.from>=r.from&&t.to<=r.to&&(t.from!=r.from||t.to!=r.to)&&r.to-r.from-(t.to-t.from)<=4?t={from:r.from,to:r.to,insert:o.state.doc.slice(r.from,t.from).append(t.insert).append(o.state.doc.slice(t.to,r.to))}:(Z.mac||Z.android)&&t&&t.from==t.to&&t.from==r.head-1&&/^\. ?$/.test(t.insert.toString())&&o.contentDOM.getAttribute("autocorrect")=="off"?(n&&t.insert.length==2&&(n=z.single(n.main.anchor-1,n.main.head-1)),t={from:r.from,to:r.to,insert:me.of([" "])}):Z.chrome&&t&&t.from==t.to&&t.from==r.head&&t.insert.toString()==`
27
- `&&o.lineWrapping&&(n&&(n=z.single(n.main.anchor-1,n.main.head-1)),t={from:r.from,to:r.to,insert:me.of([" "])}),t){let i=o.state;if(Z.ios&&o.inputState.flushIOSKey(o)||Z.android&&(t.from==r.from&&t.to==r.to&&t.insert.length==1&&t.insert.lines==2&&ss(o.contentDOM,"Enter",13)||(t.from==r.from-1&&t.to==r.to&&t.insert.length==0||s==8&&t.insert.length<t.to-t.from)&&ss(o.contentDOM,"Backspace",8)||t.from==r.from&&t.to==r.to+1&&t.insert.length==0&&ss(o.contentDOM,"Delete",46)))return!0;let l=t.insert.toString();if(o.state.facet(Mv).some(c=>c(o,t.from,t.to,l)))return!0;o.inputState.composing>=0&&o.inputState.composing++;let a;if(t.from>=r.from&&t.to<=r.to&&t.to-t.from>=(r.to-r.from)/3&&(!n||n.main.empty&&n.main.from==t.from+t.insert.length)&&o.inputState.composing<0){let c=r.from<t.from?i.sliceDoc(r.from,t.from):"",d=r.to>t.to?i.sliceDoc(t.to,r.to):"";a=i.replaceSelection(o.state.toText(c+t.insert.sliceString(0,void 0,o.state.lineBreak)+d))}else{let c=i.changes(t),d=n&&n.main.to<=c.newLength?n.main:void 0;if(i.selection.ranges.length>1&&o.inputState.composing>=0&&t.to<=r.to&&t.to>=r.to-10){let p=o.state.sliceDoc(t.from,t.to),f=Hv(o)||o.state.doc.lineAt(r.head),h=r.to-t.to,g=r.to-r.from;a=i.changeByRange(m=>{if(m.from==r.from&&m.to==r.to)return{changes:c,range:d||m.map(c)};let y=m.to-h,w=y-p.length;if(m.to-m.from!=g||o.state.sliceDoc(w,y)!=p||f&&m.to>=f.from&&m.from<=f.to)return{range:m};let v=i.changes({from:w,to:y,insert:t.insert}),x=m.to-r.to;return{changes:v,range:d?z.range(Math.max(0,d.anchor+x),Math.max(0,d.head+x)):m.map(v)}})}else a={changes:c,selection:d&&i.selection.replaceRange(d)}}let u="input.type";return(o.composing||o.inputState.compositionPendingChange&&o.inputState.compositionEndedAt>Date.now()-50)&&(o.inputState.compositionPendingChange=!1,u+=".compose",o.inputState.compositionFirstChange&&(u+=".start",o.inputState.compositionFirstChange=!1)),o.dispatch(a,{scrollIntoView:!0,userEvent:u}),!0}else if(n&&!n.main.eq(r)){let i=!1,l="select";return o.inputState.lastSelectionTime>Date.now()-50&&(o.inputState.lastSelectionOrigin=="select"&&(i=!0),l=o.inputState.lastSelectionOrigin),o.dispatch({selection:n,scrollIntoView:i,userEvent:l}),!0}else return!1}function IO(o,e,t,n){let r=Math.min(o.length,e.length),s=0;for(;s<r&&o.charCodeAt(s)==e.charCodeAt(s);)s++;if(s==r&&o.length==e.length)return null;let i=o.length,l=e.length;for(;i>0&&l>0&&o.charCodeAt(i-1)==e.charCodeAt(l-1);)i--,l--;if(n=="end"){let a=Math.max(0,s-Math.min(i,l));t-=i+a-s}if(i<s&&o.length<e.length){let a=t<=s&&t>=i?s-t:0;s-=a,l=s+(l-i),i=s}else if(l<s){let a=t<=s&&t>=l?s-t:0;s-=a,i=s+(i-l),l=s}return{from:s,toA:i,toB:l}}function LO(o){let e=[];if(o.root.activeElement!=o.contentDOM)return e;let{anchorNode:t,anchorOffset:n,focusNode:r,focusOffset:s}=o.observer.selectionRange;return t&&(e.push(new Ga(t,n)),(r!=t||s!=n)&&e.push(new Ga(r,s))),e}function AO(o,e){if(o.length==0)return null;let t=o[0].pos,n=o.length==2?o[1].pos:t;return t>-1&&n>-1?z.single(t+e,n+e):null}var OO={childList:!0,characterData:!0,subtree:!0,attributes:!0,characterDataOldValue:!0},lp=Z.ie&&Z.ie_version<=11,Fp=class{constructor(e){this.view=e,this.active=!1,this.selectionRange=new cp,this.selectionChanged=!1,this.delayedFlush=-1,this.resizeTimeout=-1,this.queue=[],this.delayedAndroidKey=null,this.flushingAndroidKey=-1,this.lastChange=0,this.scrollTargets=[],this.intersection=null,this.resizeScroll=null,this.resizeContent=null,this.intersecting=!1,this.gapIntersection=null,this.gaps=[],this.parentCheck=-1,this.dom=e.contentDOM,this.observer=new MutationObserver(t=>{for(let n of t)this.queue.push(n);(Z.ie&&Z.ie_version<=11||Z.ios&&e.composing)&&t.some(n=>n.type=="childList"&&n.removedNodes.length||n.type=="characterData"&&n.oldValue.length>n.target.nodeValue.length)?this.flushSoon():this.flush()}),lp&&(this.onCharData=t=>{this.queue.push({target:t.target,type:"characterData",oldValue:t.prevValue}),this.flushSoon()}),this.onSelectionChange=this.onSelectionChange.bind(this),this.onResize=this.onResize.bind(this),this.onPrint=this.onPrint.bind(this),this.onScroll=this.onScroll.bind(this),typeof ResizeObserver=="function"&&(this.resizeScroll=new ResizeObserver(()=>{var t;((t=this.view.docView)===null||t===void 0?void 0:t.lastUpdate)<Date.now()-75&&this.onResize()}),this.resizeScroll.observe(e.scrollDOM),this.resizeContent=new ResizeObserver(()=>this.view.requestMeasure()),this.resizeContent.observe(e.contentDOM)),this.addWindowListeners(this.win=e.win),this.start(),typeof IntersectionObserver=="function"&&(this.intersection=new IntersectionObserver(t=>{this.parentCheck<0&&(this.parentCheck=setTimeout(this.listenForScroll.bind(this),1e3)),t.length>0&&t[t.length-1].intersectionRatio>0!=this.intersecting&&(this.intersecting=!this.intersecting,this.intersecting!=this.view.inView&&this.onScrollChanged(document.createEvent("Event")))},{threshold:[0,.001]}),this.intersection.observe(this.dom),this.gapIntersection=new IntersectionObserver(t=>{t.length>0&&t[t.length-1].intersectionRatio>0&&this.onScrollChanged(document.createEvent("Event"))},{})),this.listenForScroll(),this.readSelectionRange()}onScrollChanged(e){this.view.inputState.runScrollHandlers(this.view,e),this.intersecting&&this.view.measure()}onScroll(e){this.intersecting&&this.flush(!1),this.onScrollChanged(e)}onResize(){this.resizeTimeout<0&&(this.resizeTimeout=setTimeout(()=>{this.resizeTimeout=-1,this.view.requestMeasure()},50))}onPrint(){this.view.viewState.printing=!0,this.view.measure(),setTimeout(()=>{this.view.viewState.printing=!1,this.view.requestMeasure()},500)}updateGaps(e){if(this.gapIntersection&&(e.length!=this.gaps.length||this.gaps.some((t,n)=>t!=e[n]))){this.gapIntersection.disconnect();for(let t of e)this.gapIntersection.observe(t);this.gaps=e}}onSelectionChange(e){let t=this.selectionChanged;if(!this.readSelectionRange()||this.delayedAndroidKey)return;let{view:n}=this,r=this.selectionRange;if(n.state.facet(Za)?n.root.activeElement!=this.dom:!Ha(n.dom,r))return;let s=r.anchorNode&&n.docView.nearest(r.anchorNode);if(s&&s.ignoreEvent(e)){t||(this.selectionChanged=!1);return}(Z.ie&&Z.ie_version<=11||Z.android&&Z.chrome)&&!n.state.selection.main.empty&&r.focusNode&&Wa(r.focusNode,r.focusOffset,r.anchorNode,r.anchorOffset)?this.flushSoon():this.flush(!1)}readSelectionRange(){let{view:e}=this,t=Z.safari&&e.root.nodeType==11&&OA(this.dom.ownerDocument)==this.dom&&NO(this.view)||$a(e.root);if(!t||this.selectionRange.eq(t))return!1;let n=Ha(this.dom,t);return n&&!this.selectionChanged&&e.inputState.lastFocusTime>Date.now()-200&&e.inputState.lastTouchTime<Date.now()-300&&BA(this.dom,t)?(this.view.inputState.lastFocusTime=0,e.docView.updateSelection(),!1):(this.selectionRange.setRange(t),n&&(this.selectionChanged=!0),!0)}setSelectionRange(e,t){this.selectionRange.set(e.node,e.offset,t.node,t.offset),this.selectionChanged=!1}clearSelectionRange(){this.selectionRange.set(null,0,null,0)}listenForScroll(){this.parentCheck=-1;let e=0,t=null;for(let n=this.dom;n;)if(n.nodeType==1)!t&&e<this.scrollTargets.length&&this.scrollTargets[e]==n?e++:t||(t=this.scrollTargets.slice(0,e)),t&&t.push(n),n=n.assignedSlot||n.parentNode;else if(n.nodeType==11)n=n.host;else break;if(e<this.scrollTargets.length&&!t&&(t=this.scrollTargets.slice(0,e)),t){for(let n of this.scrollTargets)n.removeEventListener("scroll",this.onScroll);for(let n of this.scrollTargets=t)n.addEventListener("scroll",this.onScroll)}}ignore(e){if(!this.active)return e();try{return this.stop(),e()}finally{this.start(),this.clear()}}start(){this.active||(this.observer.observe(this.dom,OO),lp&&this.dom.addEventListener("DOMCharacterDataModified",this.onCharData),this.active=!0)}stop(){this.active&&(this.active=!1,this.observer.disconnect(),lp&&this.dom.removeEventListener("DOMCharacterDataModified",this.onCharData))}clear(){this.processRecords(),this.queue.length=0,this.selectionChanged=!1}delayAndroidKey(e,t){var n;if(!this.delayedAndroidKey){let r=()=>{let s=this.delayedAndroidKey;s&&(this.clearDelayedAndroidKey(),this.view.inputState.lastKeyCode=s.keyCode,this.view.inputState.lastKeyTime=Date.now(),!this.flush()&&s.force&&ss(this.dom,s.key,s.keyCode))};this.flushingAndroidKey=this.view.win.requestAnimationFrame(r)}(!this.delayedAndroidKey||e=="Enter")&&(this.delayedAndroidKey={key:e,keyCode:t,force:this.lastChange<Date.now()-50||!!(!((n=this.delayedAndroidKey)===null||n===void 0)&&n.force)})}clearDelayedAndroidKey(){this.win.cancelAnimationFrame(this.flushingAndroidKey),this.delayedAndroidKey=null,this.flushingAndroidKey=-1}flushSoon(){this.delayedFlush<0&&(this.delayedFlush=this.view.win.requestAnimationFrame(()=>{this.delayedFlush=-1,this.flush()}))}forceFlush(){this.delayedFlush>=0&&(this.view.win.cancelAnimationFrame(this.delayedFlush),this.delayedFlush=-1),this.flush()}pendingRecords(){for(let e of this.observer.takeRecords())this.queue.push(e);return this.queue}processRecords(){let e=this.pendingRecords();e.length&&(this.queue=[]);let t=-1,n=-1,r=!1;for(let s of e){let i=this.readMutation(s);i&&(i.typeOver&&(r=!0),t==-1?{from:t,to:n}=i:(t=Math.min(i.from,t),n=Math.max(i.to,n)))}return{from:t,to:n,typeOver:r}}readChange(){let{from:e,to:t,typeOver:n}=this.processRecords(),r=this.selectionChanged&&Ha(this.dom,this.selectionRange);return e<0&&!r?null:(e>-1&&(this.lastChange=Date.now()),this.view.inputState.lastFocusTime=0,this.selectionChanged=!1,new Hp(this.view,e,t,n))}flush(e=!0){if(this.delayedFlush>=0||this.delayedAndroidKey)return!1;e&&this.readSelectionRange();let t=this.readChange();if(!t)return!1;let n=this.view.state,r=Xv(this.view,t);return this.view.state==n&&this.view.update([]),r}readMutation(e){let t=this.view.docView.nearest(e.target);if(!t||t.ignoreMutation(e))return null;if(t.markDirty(e.type=="attributes"),e.type=="attributes"&&(t.flags|=4),e.type=="childList"){let n=ov(t,e.previousSibling||e.target.previousSibling,-1),r=ov(t,e.nextSibling||e.target.nextSibling,1);return{from:n?t.posAfter(n):t.posAtStart,to:r?t.posBefore(r):t.posAtEnd,typeOver:!1}}else return e.type=="characterData"?{from:t.posAtStart,to:t.posAtEnd,typeOver:e.target.nodeValue==e.oldValue}:null}setWindow(e){e!=this.win&&(this.removeWindowListeners(this.win),this.win=e,this.addWindowListeners(this.win))}addWindowListeners(e){e.addEventListener("resize",this.onResize),e.addEventListener("beforeprint",this.onPrint),e.addEventListener("scroll",this.onScroll),e.document.addEventListener("selectionchange",this.onSelectionChange)}removeWindowListeners(e){e.removeEventListener("scroll",this.onScroll),e.removeEventListener("resize",this.onResize),e.removeEventListener("beforeprint",this.onPrint),e.document.removeEventListener("selectionchange",this.onSelectionChange)}destroy(){var e,t,n,r;this.stop(),(e=this.intersection)===null||e===void 0||e.disconnect(),(t=this.gapIntersection)===null||t===void 0||t.disconnect(),(n=this.resizeScroll)===null||n===void 0||n.disconnect(),(r=this.resizeContent)===null||r===void 0||r.disconnect();for(let s of this.scrollTargets)s.removeEventListener("scroll",this.onScroll);this.removeWindowListeners(this.win),clearTimeout(this.parentCheck),clearTimeout(this.resizeTimeout),this.win.cancelAnimationFrame(this.delayedFlush),this.win.cancelAnimationFrame(this.flushingAndroidKey)}};function ov(o,e,t){for(;e;){let n=Ce.get(e);if(n&&n.parent==o)return n;let r=e.parentNode;e=r!=o.dom?r:t>0?e.nextSibling:e.previousSibling}return null}function NO(o){let e=null;function t(a){a.preventDefault(),a.stopImmediatePropagation(),e=a.getTargetRanges()[0]}if(o.contentDOM.addEventListener("beforeinput",t,!0),o.dom.ownerDocument.execCommand("indent"),o.contentDOM.removeEventListener("beforeinput",t,!0),!e)return null;let n=e.startContainer,r=e.startOffset,s=e.endContainer,i=e.endOffset,l=o.docView.domAtPos(o.state.selection.main.anchor);return Wa(l.node,l.offset,s,i)&&([n,r,s,i]=[s,i,n,r]),{anchorNode:n,anchorOffset:r,focusNode:s,focusOffset:i}}var le=class{constructor(e={}){this.plugins=[],this.pluginMap=new Map,this.editorAttrs={},this.contentAttrs={},this.bidiCache=[],this.destroyed=!1,this.updateState=2,this.measureScheduled=-1,this.measureRequests=[],this.contentDOM=document.createElement("div"),this.scrollDOM=document.createElement("div"),this.scrollDOM.tabIndex=-1,this.scrollDOM.className="cm-scroller",this.scrollDOM.appendChild(this.contentDOM),this.announceDOM=document.createElement("div"),this.announceDOM.style.cssText="position: fixed; top: -10000px",this.announceDOM.setAttribute("aria-live","polite"),this.dom=document.createElement("div"),this.dom.appendChild(this.announceDOM),this.dom.appendChild(this.scrollDOM),this._dispatch=e.dispatch||(t=>this.update([t])),this.dispatch=this.dispatch.bind(this),this._root=e.root||VA(e.parent)||document,this.viewState=new Xa(e.state||be.create(e)),this.plugins=this.state.facet(vi).map(t=>new wi(t));for(let t of this.plugins)t.update(this);this.observer=new Fp(this),this.inputState=new wp(this),this.inputState.ensureHandlers(this,this.plugins),this.docView=new Qa(this),this.mountStyles(),this.updateAttrs(),this.updateState=0,this.requestMeasure(),e.parent&&e.parent.appendChild(this.dom)}get state(){return this.viewState.state}get viewport(){return this.viewState.viewport}get visibleRanges(){return this.viewState.visibleRanges}get inView(){return this.viewState.inView}get composing(){return this.inputState.composing>0}get compositionStarted(){return this.inputState.composing>=0}get root(){return this._root}get win(){return this.dom.ownerDocument.defaultView||window}dispatch(...e){let t=e.length==1&&e[0]instanceof He?e[0]:this.state.update(...e);this._dispatch(t,this)}update(e){if(this.updateState!=0)throw new Error("Calls to EditorView.update are not allowed while an update is in progress");let t=!1,n=!1,r,s=this.state;for(let p of e){if(p.startState!=s)throw new RangeError("Trying to update state with a transaction that doesn't start from the previous state.");s=p.state}if(this.destroyed){this.viewState.state=s;return}let i=this.hasFocus,l=0,a=null;e.some(p=>p.annotation(Uv))?(this.inputState.notifiedFocused=i,l=1):i!=this.inputState.notifiedFocused&&(this.inputState.notifiedFocused=i,a=Gv(s,i),a||(l=1));let u=this.observer.delayedAndroidKey,c=null;if(u?(this.observer.clearDelayedAndroidKey(),c=this.observer.readChange(),(c&&!this.state.doc.eq(s.doc)||!this.state.selection.eq(s.selection))&&(c=null)):this.observer.clear(),s.facet(be.phrases)!=this.state.facet(be.phrases))return this.setState(s);r=ls.create(this,s,e),r.flags|=l;let d=this.viewState.scrollTarget;try{this.updateState=2;for(let p of e){if(d&&(d=d.map(p.changes)),p.scrollIntoView){let{main:f}=p.state.selection;d=new is(f.empty?f:z.cursor(f.head,f.head>f.anchor?-1:1))}for(let f of p.effects)f.is(zx)&&(d=f.value)}this.viewState.update(r,d),this.bidiCache=as.update(this.bidiCache,r.changes),r.empty||(this.updatePlugins(r),this.inputState.update(r)),t=this.docView.update(r),this.state.facet(Ci)!=this.styleModules&&this.mountStyles(),n=this.updateAttrs(),this.showAnnouncements(e),this.docView.updateSelection(t,e.some(p=>p.isUserEvent("select.pointer")))}finally{this.updateState=0}if(r.startState.facet(Oa)!=r.state.facet(Oa)&&(this.viewState.mustMeasureContent=!0),(t||n||d||this.viewState.mustEnforceCursorAssoc||this.viewState.mustMeasureContent)&&this.requestMeasure(),!r.empty)for(let p of this.state.facet(bp))p(r);(a||c)&&Promise.resolve().then(()=>{a&&this.state==a.startState&&this.dispatch(a),c&&!Xv(this,c)&&u.force&&ss(this.contentDOM,u.key,u.keyCode)})}setState(e){if(this.updateState!=0)throw new Error("Calls to EditorView.setState are not allowed while an update is in progress");if(this.destroyed){this.viewState.state=e;return}this.updateState=2;let t=this.hasFocus;try{for(let n of this.plugins)n.destroy(this);this.viewState=new Xa(e),this.plugins=e.facet(vi).map(n=>new wi(n)),this.pluginMap.clear();for(let n of this.plugins)n.update(this);this.docView=new Qa(this),this.inputState.ensureHandlers(this,this.plugins),this.mountStyles(),this.updateAttrs(),this.bidiCache=[]}finally{this.updateState=0}t&&this.focus(),this.requestMeasure()}updatePlugins(e){let t=e.startState.facet(vi),n=e.state.facet(vi);if(t!=n){let r=[];for(let s of n){let i=t.indexOf(s);if(i<0)r.push(new wi(s));else{let l=this.plugins[i];l.mustUpdate=e,r.push(l)}}for(let s of this.plugins)s.mustUpdate!=e&&s.destroy(this);this.plugins=r,this.pluginMap.clear(),this.inputState.ensureHandlers(this,this.plugins)}else for(let r of this.plugins)r.mustUpdate=e;for(let r=0;r<this.plugins.length;r++)this.plugins[r].update(this)}measure(e=!0){if(this.destroyed)return;this.measureScheduled>-1&&this.win.cancelAnimationFrame(this.measureScheduled),this.measureScheduled=0,e&&this.observer.forceFlush();let t=null,n=this.scrollDOM,{scrollTop:r}=n,{scrollAnchorPos:s,scrollAnchorHeight:i}=this.viewState;r!=this.viewState.scrollTop&&(i=-1),this.viewState.scrollAnchorHeight=-1;try{for(let l=0;;l++){if(i<0)if(fv(n))s=-1,i=this.viewState.heightMap.height;else{let f=this.viewState.scrollAnchorAt(r);s=f.from,i=f.top}this.updateState=1;let a=this.viewState.measure(this);if(!a&&!this.measureRequests.length&&this.viewState.scrollTarget==null)break;if(l>5){console.warn(this.measureRequests.length?"Measure loop restarted more than 5 times":"Viewport failed to stabilize");break}let u=[];a&4||([this.measureRequests,u]=[u,this.measureRequests]);let c=u.map(f=>{try{return f.read(this)}catch(h){return En(this.state,h),rv}}),d=ls.create(this,this.state,[]),p=!1;d.flags|=a,t?t.flags|=a:t=d,this.updateState=2,d.empty||(this.updatePlugins(d),this.inputState.update(d),this.updateAttrs(),p=this.docView.update(d));for(let f=0;f<u.length;f++)if(c[f]!=rv)try{let h=u[f];h.write&&h.write(c[f],this)}catch(h){En(this.state,h)}if(p&&this.docView.updateSelection(!0),!d.viewportChanged&&this.measureRequests.length==0){if(this.viewState.editorHeight)if(this.viewState.scrollTarget){this.docView.scrollIntoView(this.viewState.scrollTarget),this.viewState.scrollTarget=null;continue}else{let h=(s<0?this.viewState.heightMap.height:this.viewState.lineBlockAt(s).top)-i;if(h>1||h<-1){r=n.scrollTop=r+h,i=-1;continue}}break}}}finally{this.updateState=0,this.measureScheduled=-1}if(t&&!t.empty)for(let l of this.state.facet(bp))l(t)}get themeClasses(){return Op+" "+(this.state.facet(Ap)?jv:Qv)+" "+this.state.facet(Oa)}updateAttrs(){let e=sv(this,kv,{class:"cm-editor"+(this.hasFocus?" cm-focused ":" ")+this.themeClasses}),t={spellcheck:"false",autocorrect:"off",autocapitalize:"off",translate:"no",contenteditable:this.state.facet(Za)?"true":"false",class:"cm-content",style:`${Z.tabSize}: ${this.state.tabSize}`,role:"textbox","aria-multiline":"true"};this.state.readOnly&&(t["aria-readonly"]="true"),sv(this,Gp,t);let n=this.observer.ignore(()=>{let r=mp(this.contentDOM,this.contentAttrs,t),s=mp(this.dom,this.editorAttrs,e);return r||s});return this.editorAttrs=e,this.contentAttrs=t,n}showAnnouncements(e){let t=!0;for(let n of e)for(let r of n.effects)if(r.is(le.announce)){t&&(this.announceDOM.textContent=""),t=!1;let s=this.announceDOM.appendChild(document.createElement("div"));s.textContent=r.value}}mountStyles(){this.styleModules=this.state.facet(Ci),_t.mount(this.root,this.styleModules.concat(kO).reverse())}readMeasured(){if(this.updateState==2)throw new Error("Reading the editor layout isn't allowed during an update");this.updateState==0&&this.measureScheduled>-1&&this.measure(!1)}requestMeasure(e){if(this.measureScheduled<0&&(this.measureScheduled=this.win.requestAnimationFrame(()=>this.measure())),e){if(this.measureRequests.indexOf(e)>-1)return;if(e.key!=null){for(let t=0;t<this.measureRequests.length;t++)if(this.measureRequests[t].key===e.key){this.measureRequests[t]=e;return}}this.measureRequests.push(e)}}plugin(e){let t=this.pluginMap.get(e);return(t===void 0||t&&t.spec!=e)&&this.pluginMap.set(e,t=this.plugins.find(n=>n.spec==e)||null),t&&t.update(this).value}get documentTop(){return this.contentDOM.getBoundingClientRect().top+this.viewState.paddingTop}get documentPadding(){return{top:this.viewState.paddingTop,bottom:this.viewState.paddingBottom}}elementAtHeight(e){return this.readMeasured(),this.viewState.elementAtHeight(e)}lineBlockAtHeight(e){return this.readMeasured(),this.viewState.lineBlockAtHeight(e)}get viewportLineBlocks(){return this.viewState.viewportLines}lineBlockAt(e){return this.viewState.lineBlockAt(e)}get contentHeight(){return this.viewState.contentHeight}moveByChar(e,t,n){return ip(this,e,Ux(this,e,t,n))}moveByGroup(e,t){return ip(this,e,Ux(this,e,t,n=>cO(this,e.head,n)))}moveToLineBoundary(e,t,n=!0){return uO(this,e,t,n)}moveVertically(e,t,n){return ip(this,e,dO(this,e,t,n))}domAtPos(e){return this.docView.domAtPos(e)}posAtDOM(e,t=0){return this.docView.posFromDOM(e,t)}posAtCoords(e,t=!0){return this.readMeasured(),Vv(this,e,t)}coordsAtPos(e,t=1){this.readMeasured();let n=this.docView.coordsAt(e,t);if(!n||n.left==n.right)return n;let r=this.state.doc.lineAt(e),s=this.bidiSpans(r),i=s[mo.find(s,e-r.from,-1,t)];return _p(n,i.dir==_e.LTR==t>0)}coordsForChar(e){return this.readMeasured(),this.docView.coordsForChar(e)}get defaultCharacterWidth(){return this.viewState.heightOracle.charWidth}get defaultLineHeight(){return this.viewState.heightOracle.lineHeight}get textDirection(){return this.viewState.defaultTextDirection}textDirectionAt(e){return!this.state.facet(Dv)||e<this.viewport.from||e>this.viewport.to?this.textDirection:(this.readMeasured(),this.docView.textDirectionAt(e))}get lineWrapping(){return this.viewState.heightOracle.lineWrapping}bidiSpans(e){if(e.length>HO)return Ov(e.length);let t=this.textDirectionAt(e.from);for(let r of this.bidiCache)if(r.from==e.from&&r.dir==t)return r.order;let n=XA(e.text,t);return this.bidiCache.push(new as(e.from,e.to,t,n)),n}get hasFocus(){var e;return(this.dom.ownerDocument.hasFocus()||Z.safari&&((e=this.inputState)===null||e===void 0?void 0:e.lastContextMenu)>Date.now()-3e4)&&this.root.activeElement==this.contentDOM}focus(){this.observer.ignore(()=>{dv(this.contentDOM),this.docView.updateSelection()})}setRoot(e){this._root!=e&&(this._root=e,this.observer.setWindow((e.nodeType==9?e:e.ownerDocument).defaultView||window),this.mountStyles())}destroy(){for(let e of this.plugins)e.destroy(this);this.plugins=[],this.inputState.destroy(),this.dom.remove(),this.observer.destroy(),this.measureScheduled>-1&&this.win.cancelAnimationFrame(this.measureScheduled),this.destroyed=!0}static scrollIntoView(e,t={}){return zx.of(new is(typeof e=="number"?z.cursor(e):e,t.y,t.x,t.yMargin,t.xMargin))}static domEventHandlers(e){return Gt.define(()=>({}),{eventHandlers:e})}static theme(e,t){let n=_t.newName(),r=[Oa.of(n),Ci.of(Np(`.${n}`,e))];return t&&t.dark&&r.push(Ap.of(!0)),r}static baseTheme(e){return Yo.lowest(Ci.of(Np("."+Op,e,Jv)))}static findFromDOM(e){var t;let n=e.querySelector(".cm-content"),r=n&&Ce.get(n)||Ce.get(e);return((t=r==null?void 0:r.rootView)===null||t===void 0?void 0:t.view)||null}};le.styleModule=Ci;le.inputHandler=Mv;le.focusChangeEffect=Rv;le.perLineTextDirection=Dv;le.exceptionSink=Ev;le.updateListener=bp;le.editable=Za;le.mouseSelectionStyle=Tv;le.dragMovesSelection=wv;le.clickAddsSelectionRange=Sv;le.decorations=Mi;le.atomicRanges=qp;le.scrollMargins=Iv;le.darkTheme=Ap;le.contentAttributes=Gp;le.editorAttributes=kv;le.lineWrapping=le.contentAttributes.of({class:"cm-lineWrapping"});le.announce=De.define();var HO=4096,rv={},as=class{constructor(e,t,n,r){this.from=e,this.to=t,this.dir=n,this.order=r}static update(e,t){if(t.empty)return e;let n=[],r=e.length?e[e.length-1].dir:_e.LTR;for(let s=Math.max(0,e.length-10);s<e.length;s++){let i=e[s];i.dir==r&&!t.touchesRange(i.from,i.to)&&n.push(new as(t.mapPos(i.from,1),t.mapPos(i.to,-1),i.dir,i.order))}return n}};function sv(o,e,t){for(let n=o.state.facet(e),r=n.length-1;r>=0;r--){let s=n[r],i=typeof s=="function"?s(o):s;i&&hp(i,t)}return t}var FO=Z.mac?"mac":Z.windows?"win":Z.linux?"linux":"key";function VO(o,e){let t=o.split(/-(?!$)/),n=t[t.length-1];n=="Space"&&(n=" ");let r,s,i,l;for(let a=0;a<t.length-1;++a){let u=t[a];if(/^(cmd|meta|m)$/i.test(u))l=!0;else if(/^a(lt)?$/i.test(u))r=!0;else if(/^(c|ctrl|control)$/i.test(u))s=!0;else if(/^s(hift)?$/i.test(u))i=!0;else if(/^mod$/i.test(u))e=="mac"?l=!0:s=!0;else throw new Error("Unrecognized modifier name: "+u)}return r&&(n="Alt-"+n),s&&(n="Ctrl-"+n),l&&(n="Meta-"+n),i&&(n="Shift-"+n),n}function Na(o,e,t){return e.altKey&&(o="Alt-"+o),e.ctrlKey&&(o="Ctrl-"+o),e.metaKey&&(o="Meta-"+o),t!==!1&&e.shiftKey&&(o="Shift-"+o),o}var BO=Yo.default(le.domEventHandlers({keydown(o,e){return _O(zO(e.state),o,e,"editor")}})),ir=se.define({enables:BO}),iv=new WeakMap;function zO(o){let e=o.facet(ir),t=iv.get(e);return t||iv.set(e,t=WO(e.reduce((n,r)=>n.concat(r),[]))),t}var ho=null,$O=4e3;function WO(o,e=FO){let t=Object.create(null),n=Object.create(null),r=(i,l)=>{let a=n[i];if(a==null)n[i]=l;else if(a!=l)throw new Error("Key binding "+i+" is used both as a regular binding and as a multi-stroke prefix")},s=(i,l,a,u,c)=>{var d,p;let f=t[i]||(t[i]=Object.create(null)),h=l.split(/ (?!$)/).map(y=>VO(y,e));for(let y=1;y<h.length;y++){let w=h.slice(0,y).join(" ");r(w,!0),f[w]||(f[w]={preventDefault:!0,stopPropagation:!1,run:[v=>{let x=ho={view:v,prefix:w,scope:i};return setTimeout(()=>{ho==x&&(ho=null)},$O),!0}]})}let g=h.join(" ");r(g,!1);let m=f[g]||(f[g]={preventDefault:!1,stopPropagation:!1,run:((p=(d=f._any)===null||d===void 0?void 0:d.run)===null||p===void 0?void 0:p.slice())||[]});a&&m.run.push(a),u&&(m.preventDefault=!0),c&&(m.stopPropagation=!0)};for(let i of o){let l=i.scope?i.scope.split(" "):["editor"];if(i.any)for(let u of l){let c=t[u]||(t[u]=Object.create(null));c._any||(c._any={preventDefault:!1,stopPropagation:!1,run:[]});for(let d in c)c[d].run.push(i.any)}let a=i[e]||i.key;if(a)for(let u of l)s(u,a,i.run,i.preventDefault,i.stopPropagation),i.shift&&s(u,"Shift-"+a,i.shift,i.preventDefault,i.stopPropagation)}return t}function _O(o,e,t,n){let r=Ix(e),s=Sn(r,0),i=Qo(s)==r.length&&r!=" ",l="",a=!1,u=!1,c=!1;ho&&ho.view==t&&ho.scope==n&&(l=ho.prefix+" ",zv.indexOf(e.keyCode)<0&&(u=!0,ho=null));let d=new Set,p=m=>{if(m){for(let y of m.run)if(!d.has(y)&&(d.add(y),y(t,e)))return m.stopPropagation&&(c=!0),!0;m.preventDefault&&(m.stopPropagation&&(c=!0),u=!0)}return!1},f=o[n],h,g;return f&&(p(f[l+Na(r,e,!i)])?a=!0:i&&(e.altKey||e.metaKey||e.ctrlKey)&&!(Z.windows&&e.ctrlKey&&e.altKey)&&(h=Gn[e.keyCode])&&h!=r?(p(f[l+Na(h,e,!0)])||e.shiftKey&&(g=ts[e.keyCode])!=r&&g!=h&&p(f[l+Na(g,e,!1)]))&&(a=!0):i&&e.shiftKey&&p(f[l+Na(r,e,!0)])&&(a=!0),!a&&p(f._any)&&(a=!0)),u&&(a=!0),a&&c&&e.stopPropagation(),a}var sr=class{constructor(e,t,n,r,s){this.className=e,this.left=t,this.top=n,this.width=r,this.height=s}draw(){let e=document.createElement("div");return e.className=this.className,this.adjust(e),e}update(e,t){return t.className!=this.className?!1:(this.adjust(e),!0)}adjust(e){e.style.left=this.left+"px",e.style.top=this.top+"px",this.width!=null&&(e.style.width=this.width+"px"),e.style.height=this.height+"px"}eq(e){return this.left==e.left&&this.top==e.top&&this.width==e.width&&this.height==e.height&&this.className==e.className}static forRange(e,t,n){if(n.empty){let r=e.coordsAtPos(n.head,n.assoc||1);if(!r)return[];let s=Yv(e);return[new sr(t,r.left-s.left,r.top-s.top,null,r.bottom-r.top)]}else return KO(e,t,n)}};function Yv(o){let e=o.scrollDOM.getBoundingClientRect();return{left:(o.textDirection==_e.LTR?e.left:e.right-o.scrollDOM.clientWidth)-o.scrollDOM.scrollLeft,top:e.top-o.scrollDOM.scrollTop}}function lv(o,e,t){let n=z.cursor(e);return{from:Math.max(t.from,o.moveToLineBoundary(n,!1,!0).from),to:Math.min(t.to,o.moveToLineBoundary(n,!0,!0).from),type:Ke.Text}}function KO(o,e,t){if(t.to<=o.viewport.from||t.from>=o.viewport.to)return[];let n=Math.max(t.from,o.viewport.from),r=Math.min(t.to,o.viewport.to),s=o.textDirection==_e.LTR,i=o.contentDOM,l=i.getBoundingClientRect(),a=Yv(o),u=i.querySelector(".cm-line"),c=u&&window.getComputedStyle(u),d=l.left+(c?parseInt(c.paddingLeft)+Math.min(0,parseInt(c.textIndent)):0),p=l.right-(c?parseInt(c.paddingRight):0),f=Sp(o,n),h=Sp(o,r),g=f.type==Ke.Text?f:null,m=h.type==Ke.Text?h:null;if(g&&(o.lineWrapping||f.widgetLineBreaks)&&(g=lv(o,n,g)),m&&(o.lineWrapping||h.widgetLineBreaks)&&(m=lv(o,r,m)),g&&m&&g.from==m.from)return w(v(t.from,t.to,g));{let S=g?v(t.from,null,g):x(f,!1),b=m?v(null,t.to,m):x(h,!0),C=[];return(g||f).to<(m||h).from-(g&&m?1:0)||f.widgetLineBreaks>1&&S.bottom+o.defaultLineHeight/2<b.top?C.push(y(d,S.bottom,p,b.top)):S.bottom<b.top&&o.elementAtHeight((S.bottom+b.top)/2).type==Ke.Text&&(S.bottom=b.top=(S.bottom+b.top)/2),w(S).concat(C).concat(w(b))}function y(S,b,C,M){return new sr(e,S-a.left,b-a.top-.01,C-S,M-b+.01)}function w({top:S,bottom:b,horizontal:C}){let M=[];for(let D=0;D<C.length;D+=2)M.push(y(C[D],S,C[D+1],b));return M}function v(S,b,C){let M=1e9,D=-1e9,E=[];function O(L,N,A,k,I){let F=o.coordsAtPos(L,L==C.to?-2:2),H=o.coordsAtPos(A,A==C.from?2:-2);!F||!H||(M=Math.min(F.top,H.top,M),D=Math.max(F.bottom,H.bottom,D),I==_e.LTR?E.push(s&&N?d:F.left,s&&k?p:H.right):E.push(!s&&k?d:H.left,!s&&N?p:F.right))}let T=S!=null?S:C.from,P=b!=null?b:C.to;for(let L of o.visibleRanges)if(L.to>T&&L.from<P)for(let N=Math.max(L.from,T),A=Math.min(L.to,P);;){let k=o.state.doc.lineAt(N);for(let I of o.bidiSpans(k)){let F=I.from+k.from,H=I.to+k.from;if(F>=A)break;H>N&&O(Math.max(F,N),S==null&&F<=T,Math.min(H,A),b==null&&H>=P,I.dir)}if(N=k.to+1,N>=A)break}return E.length==0&&O(T,S==null,P,b==null,o.textDirection),{top:M,bottom:D,horizontal:E}}function x(S,b){let C=l.top+(b?S.top:S.bottom);return{top:C,bottom:C,horizontal:[]}}}function UO(o,e){return o.constructor==e.constructor&&o.eq(e)}var Vp=class{constructor(e,t){this.view=e,this.layer=t,this.drawn=[],this.measureReq={read:this.measure.bind(this),write:this.draw.bind(this)},this.dom=e.scrollDOM.appendChild(document.createElement("div")),this.dom.classList.add("cm-layer"),t.above&&this.dom.classList.add("cm-layer-above"),t.class&&this.dom.classList.add(t.class),this.dom.setAttribute("aria-hidden","true"),this.setOrder(e.state),e.requestMeasure(this.measureReq),t.mount&&t.mount(this.dom,e)}update(e){e.startState.facet(Ba)!=e.state.facet(Ba)&&this.setOrder(e.state),(this.layer.update(e,this.dom)||e.geometryChanged)&&e.view.requestMeasure(this.measureReq)}setOrder(e){let t=0,n=e.facet(Ba);for(;t<n.length&&n[t]!=this.layer;)t++;this.dom.style.zIndex=String((this.layer.above?150:-1)-t)}measure(){return this.layer.markers(this.view)}draw(e){if(e.length!=this.drawn.length||e.some((t,n)=>!UO(t,this.drawn[n]))){let t=this.dom.firstChild,n=0;for(let r of e)r.update&&t&&r.constructor&&this.drawn[n].constructor&&r.update(t,this.drawn[n])?(t=t.nextSibling,n++):this.dom.insertBefore(r.draw(),t);for(;t;){let r=t.nextSibling;t.remove(),t=r}this.drawn=e}}destroy(){this.layer.destroy&&this.layer.destroy(this.dom,this.view),this.dom.remove()}},Ba=se.define();function Zv(o){return[Gt.define(e=>new Vp(e,o)),Ba.of(o)]}var eC=!Z.ios,Di=se.define({combine(o){return Zo(o,{cursorBlinkRate:1200,drawRangeCursor:!0},{cursorBlinkRate:(e,t)=>Math.min(e,t),drawRangeCursor:(e,t)=>e||t})}});function Qp(o={}){return[Di.of(o),GO,qO,QO,Pv.of(!0)]}function tC(o){return o.startState.facet(Di)!=o.state.facet(Di)}var GO=Zv({above:!0,markers(o){let{state:e}=o,t=e.facet(Di),n=[];for(let r of e.selection.ranges){let s=r==e.selection.main;if(r.empty?!s||eC:t.drawRangeCursor){let i=s?"cm-cursor cm-cursor-primary":"cm-cursor cm-cursor-secondary",l=r.empty?r:z.cursor(r.head,r.head>r.anchor?-1:1);for(let a of sr.forRange(o,i,l))n.push(a)}}return n},update(o,e){o.transactions.some(n=>n.selection)&&(e.style.animationName=e.style.animationName=="cm-blink"?"cm-blink2":"cm-blink");let t=tC(o);return t&&av(o.state,e),o.docChanged||o.selectionSet||t},mount(o,e){av(e.state,o)},class:"cm-cursorLayer"});function av(o,e){e.style.animationDuration=o.facet(Di).cursorBlinkRate+"ms"}var qO=Zv({above:!1,markers(o){return o.state.selection.ranges.map(e=>e.empty?[]:sr.forRange(o,"cm-selectionBackground",e)).reduce((e,t)=>e.concat(t))},update(o,e){return o.docChanged||o.selectionSet||o.viewportChanged||tC(o)},class:"cm-selectionLayer"}),nC={".cm-line":{"& ::selection":{backgroundColor:"transparent !important"},"&::selection":{backgroundColor:"transparent !important"}}};eC&&(nC[".cm-line"].caretColor="transparent !important");var QO=Yo.highest(le.theme(nC));function uv(o,e,t,n,r){e.lastIndex=0;for(let s=o.iterRange(t,n),i=t,l;!s.next().done;i+=s.value.length)if(!s.lineBreak)for(;l=e.exec(s.value);)r(i+l.index,l)}function jO(o,e){let t=o.visibleRanges;if(t.length==1&&t[0].from==o.viewport.from&&t[0].to==o.viewport.to)return t;let n=[];for(let{from:r,to:s}of t)r=Math.max(o.state.doc.lineAt(r).from,r-e),s=Math.min(o.state.doc.lineAt(s).to,s+e),n.length&&n[n.length-1].to>=r?n[n.length-1].to=s:n.push({from:r,to:s});return n}var Bp=class{constructor(e){let{regexp:t,decoration:n,decorate:r,boundary:s,maxLength:i=1e3}=e;if(!t.global)throw new RangeError("The regular expression given to MatchDecorator should have its 'g' flag set");if(this.regexp=t,r)this.addMatch=(l,a,u,c)=>r(c,u,u+l[0].length,l,a);else if(typeof n=="function")this.addMatch=(l,a,u,c)=>{let d=n(l,a,u);d&&c(u,u+l[0].length,d)};else if(n)this.addMatch=(l,a,u,c)=>c(u,u+l[0].length,n);else throw new RangeError("Either 'decorate' or 'decoration' should be provided to MatchDecorator");this.boundary=s,this.maxLength=i}createDeco(e){let t=new wn,n=t.add.bind(t);for(let{from:r,to:s}of jO(e,this.maxLength))uv(e.state.doc,this.regexp,r,s,(i,l)=>this.addMatch(l,e,i,n));return t.finish()}updateDeco(e,t){let n=1e9,r=-1;return e.docChanged&&e.changes.iterChanges((s,i,l,a)=>{a>e.view.viewport.from&&l<e.view.viewport.to&&(n=Math.min(l,n),r=Math.max(a,r))}),e.viewportChanged||r-n>1e3?this.createDeco(e.view):r>-1?this.updateRange(e.view,t.map(e.changes),n,r):t}updateRange(e,t,n,r){for(let s of e.visibleRanges){let i=Math.max(s.from,n),l=Math.min(s.to,r);if(l>i){let a=e.state.doc.lineAt(i),u=a.to<l?e.state.doc.lineAt(l):a,c=Math.max(s.from,a.from),d=Math.min(s.to,u.to);if(this.boundary){for(;i>a.from;i--)if(this.boundary.test(a.text[i-1-a.from])){c=i;break}for(;l<u.to;l++)if(this.boundary.test(u.text[l-u.from])){d=l;break}}let p=[],f,h=(g,m,y)=>p.push(y.range(g,m));if(a==u)for(this.regexp.lastIndex=c-a.from;(f=this.regexp.exec(a.text))&&f.index<d-a.from;)this.addMatch(f,e,f.index+a.from,h);else uv(e.state.doc,this.regexp,c,d,(g,m)=>this.addMatch(m,e,g,h));t=t.update({filterFrom:c,filterTo:d,filter:(g,m)=>g<c||m>d,add:p})}}return t}},zp=/x/.unicode!=null?"gu":"g",JO=new RegExp(`[\0-\b
28
- -\x7F-\x9F\xAD\u061C\u200B\u200E\u200F\u2028\u2029\u202D\u202E\u2066\u2067\u2069\uFEFF\uFFF9-\uFFFC]`,zp),XO={0:"null",7:"bell",8:"backspace",10:"newline",11:"vertical tab",13:"carriage return",27:"escape",8203:"zero width space",8204:"zero width non-joiner",8205:"zero width joiner",8206:"left-to-right mark",8207:"right-to-left mark",8232:"line separator",8237:"left-to-right override",8238:"right-to-left override",8294:"left-to-right isolate",8295:"right-to-left isolate",8297:"pop directional isolate",8233:"paragraph separator",65279:"zero width no-break space",65532:"object replacement"},ap=null;function YO(){var o;if(ap==null&&typeof document<"u"&&document.body){let e=document.body.style;ap=((o=e.tabSize)!==null&&o!==void 0?o:e.MozTabSize)!=null}return ap||!1}var za=se.define({combine(o){let e=Zo(o,{render:null,specialChars:JO,addSpecialChars:null});return(e.replaceTabs=!YO())&&(e.specialChars=new RegExp(" |"+e.specialChars.source,zp)),e.addSpecialChars&&(e.specialChars=new RegExp(e.specialChars.source+"|"+e.addSpecialChars.source,zp)),e}});function jp(o={}){return[za.of(o),ZO()]}var cv=null;function ZO(){return cv||(cv=Gt.fromClass(class{constructor(o){this.view=o,this.decorations=Xe.none,this.decorationCache=Object.create(null),this.decorator=this.makeDecorator(o.state.facet(za)),this.decorations=this.decorator.createDeco(o)}makeDecorator(o){return new Bp({regexp:o.specialChars,decoration:(e,t,n)=>{let{doc:r}=t.state,s=Sn(e[0],0);if(s==9){let i=r.lineAt(n),l=t.state.tabSize,a=er(i.text,l,n-i.from);return Xe.replace({widget:new Wp((l-a%l)*this.view.defaultCharacterWidth)})}return this.decorationCache[s]||(this.decorationCache[s]=Xe.replace({widget:new $p(o,s)}))},boundary:o.replaceTabs?void 0:/[^]/})}update(o){let e=o.state.facet(za);o.startState.facet(za)!=e?(this.decorator=this.makeDecorator(e),this.decorations=this.decorator.createDeco(o.view)):this.decorations=this.decorator.updateDeco(o,this.decorations)}},{decorations:o=>o.decorations}))}var eN="\u2022";function tN(o){return o>=32?eN:o==10?"\u2424":String.fromCharCode(9216+o)}var $p=class extends jn{constructor(e,t){super(),this.options=e,this.code=t}eq(e){return e.code==this.code}toDOM(e){let t=tN(this.code),n=e.state.phrase("Control character")+" "+(XO[this.code]||"0x"+this.code.toString(16)),r=this.options.render&&this.options.render(this.code,n,t);if(r)return r;let s=document.createElement("span");return s.textContent=t,s.title=n,s.setAttribute("aria-label",n),s.className="cm-specialChar",s}ignoreEvent(){return!1}},Wp=class extends jn{constructor(e){super(),this.width=e}eq(e){return e.width==this.width}toDOM(){let e=document.createElement("span");return e.textContent=" ",e.className="cm-tab",e.style.width=this.width+"px",e}ignoreEvent(){return!1}};var lpe=le.baseTheme({".cm-tooltip":{zIndex:100,boxSizing:"border-box"},"&light .cm-tooltip":{border:"1px solid #bbb",backgroundColor:"#f5f5f5"},"&light .cm-tooltip-section:not(:first-child)":{borderTop:"1px solid #bbb"},"&dark .cm-tooltip":{backgroundColor:"#333338",color:"white"},".cm-tooltip-arrow":{height:"7px",width:`${7*2}px`,position:"absolute",zIndex:-1,overflow:"hidden","&:before, &:after":{content:"''",position:"absolute",width:0,height:0,borderLeft:"7px solid transparent",borderRight:"7px solid transparent"},".cm-tooltip-above &":{bottom:"-7px","&:before":{borderTop:"7px solid #bbb"},"&:after":{borderTop:"7px solid #f5f5f5",bottom:"1px"}},".cm-tooltip-below &":{top:"-7px","&:before":{borderBottom:"7px solid #bbb"},"&:after":{borderBottom:"7px solid #f5f5f5",top:"1px"}}},"&dark .cm-tooltip .cm-tooltip-arrow":{"&:before":{borderTopColor:"#333338",borderBottomColor:"#333338"},"&:after":{borderTopColor:"transparent",borderBottomColor:"transparent"}}});var Jn=class extends un{compare(e){return this==e||this.constructor==e.constructor&&this.eq(e)}eq(e){return!1}destroy(e){}};Jn.prototype.elementClass="";Jn.prototype.toDOM=void 0;Jn.prototype.mapMode=dt.TrackBefore;Jn.prototype.startSide=Jn.prototype.endSide=-1;Jn.prototype.point=!0;var nN=0,qt=class{constructor(e,t,n){this.set=e,this.base=t,this.modified=n,this.id=nN++}static define(e){if(e!=null&&e.base)throw new Error("Can not derive from a modified tag");let t=new qt([],null,[]);if(t.set.push(t),e)for(let n of e.set)t.set.push(n);return t}static defineModifier(){let e=new us;return t=>t.modified.indexOf(e)>-1?t:us.get(t.base||t,t.modified.concat(e).sort((n,r)=>n.id-r.id))}},oN=0,us=class{constructor(){this.instances=[],this.id=oN++}static get(e,t){if(!t.length)return e;let n=t[0].instances.find(l=>l.base==e&&rN(t,l.modified));if(n)return n;let r=[],s=new qt(r,e,t);for(let l of t)l.instances.push(s);let i=sN(t);for(let l of e.set)if(!l.modified.length)for(let a of i)r.push(us.get(l,a));return s}};function rN(o,e){return o.length==e.length&&o.every((t,n)=>t==e[n])}function sN(o){let e=[[]];for(let t=0;t<o.length;t++)for(let n=0,r=e.length;n<r;n++)e.push(e[n].concat(o[t]));return e.sort((t,n)=>n.length-t.length)}function ar(o){let e=Object.create(null);for(let t in o){let n=o[t];Array.isArray(n)||(n=[n]);for(let r of t.split(" "))if(r){let s=[],i=2,l=r;for(let d=0;;){if(l=="..."&&d>0&&d+3==r.length){i=1;break}let p=/^"(?:[^"\\]|\\.)*?"|[^\/!]+/.exec(l);if(!p)throw new RangeError("Invalid path: "+r);if(s.push(p[0]=="*"?"":p[0][0]=='"'?JSON.parse(p[0]):p[0]),d+=p[0].length,d==r.length)break;let f=r[d++];if(d==r.length&&f=="!"){i=0;break}if(f!="/")throw new RangeError("Invalid path: "+r);l=r.slice(d)}let a=s.length-1,u=s[a];if(!u)throw new RangeError("Invalid path: "+r);let c=new cs(n,i,a>0?s.slice(0,a):null);e[u]=c.sort(e[u])}}return sC.add(e)}var sC=new ie,cs=class{constructor(e,t,n,r){this.tags=e,this.mode=t,this.context=n,this.next=r}get opaque(){return this.mode==0}get inherit(){return this.mode==1}sort(e){return!e||e.depth<this.depth?(this.next=e,this):(e.next=this.sort(e.next),e)}get depth(){return this.context?this.context.length:0}};cs.empty=new cs([],2,null);function Zp(o,e){let t=Object.create(null);for(let s of o)if(!Array.isArray(s.tag))t[s.tag.id]=s.class;else for(let i of s.tag)t[i.id]=s.class;let{scope:n,all:r=null}=e||{};return{style:s=>{let i=r;for(let l of s)for(let a of l.set){let u=t[a.id];if(u){i=i?i+" "+u:u;break}}return i},scope:n}}function iN(o,e){let t=null;for(let n of o){let r=n.style(e);r&&(t=t?t+" "+r:r)}return t}function iC(o,e,t,n=0,r=o.length){let s=new Xp(n,Array.isArray(e)?e:[e],t);s.highlightRange(o.cursor(),n,r,"",s.highlighters),s.flush(r)}var Xp=class{constructor(e,t,n){this.at=e,this.highlighters=t,this.span=n,this.class=""}startSpan(e,t){t!=this.class&&(this.flush(e),e>this.at&&(this.at=e),this.class=t)}flush(e){e>this.at&&this.class&&this.span(this.at,e,this.class)}highlightRange(e,t,n,r,s){let{type:i,from:l,to:a}=e;if(l>=n||a<=t)return;i.isTop&&(s=this.highlighters.filter(f=>!f.scope||f.scope(i)));let u=r,c=lN(e)||cs.empty,d=iN(s,c.tags);if(d&&(u&&(u+=" "),u+=d,c.mode==1&&(r+=(r?" ":"")+d)),this.startSpan(Math.max(t,l),u),c.opaque)return;let p=e.tree&&e.tree.prop(ie.mounted);if(p&&p.overlay){let f=e.node.enter(p.overlay[0].from+l,1),h=this.highlighters.filter(m=>!m.scope||m.scope(p.tree.type)),g=e.firstChild();for(let m=0,y=l;;m++){let w=m<p.overlay.length?p.overlay[m]:null,v=w?w.from+l:a,x=Math.max(t,y),S=Math.min(n,v);if(x<S&&g)for(;e.from<S&&(this.highlightRange(e,x,S,r,s),this.startSpan(Math.min(S,e.to),u),!(e.to>=v||!e.nextSibling())););if(!w||v>n)break;y=w.to+l,y>t&&(this.highlightRange(f.cursor(),Math.max(t,w.from+l),Math.min(n,y),"",h),this.startSpan(Math.min(n,y),u))}g&&e.parent()}else if(e.firstChild()){p&&(r="");do if(!(e.to<=t)){if(e.from>=n)break;this.highlightRange(e,t,n,r,s),this.startSpan(Math.min(n,e.to),u)}while(e.nextSibling());e.parent()}}};function lN(o){let e=o.type.prop(sC);for(;e&&e.context&&!o.matchContext(e.context);)e=e.next;return e||null}var K=qt.define,eu=K(),yo=K(),oC=K(yo),rC=K(yo),xo=K(),tu=K(xo),Jp=K(xo),Pn=K(),lr=K(Pn),Rn=K(),Dn=K(),Yp=K(),Pi=K(Yp),nu=K(),W={comment:eu,lineComment:K(eu),blockComment:K(eu),docComment:K(eu),name:yo,variableName:K(yo),typeName:oC,tagName:K(oC),propertyName:rC,attributeName:K(rC),className:K(yo),labelName:K(yo),namespace:K(yo),macroName:K(yo),literal:xo,string:tu,docString:K(tu),character:K(tu),attributeValue:K(tu),number:Jp,integer:K(Jp),float:K(Jp),bool:K(xo),regexp:K(xo),escape:K(xo),color:K(xo),url:K(xo),keyword:Rn,self:K(Rn),null:K(Rn),atom:K(Rn),unit:K(Rn),modifier:K(Rn),operatorKeyword:K(Rn),controlKeyword:K(Rn),definitionKeyword:K(Rn),moduleKeyword:K(Rn),operator:Dn,derefOperator:K(Dn),arithmeticOperator:K(Dn),logicOperator:K(Dn),bitwiseOperator:K(Dn),compareOperator:K(Dn),updateOperator:K(Dn),definitionOperator:K(Dn),typeOperator:K(Dn),controlOperator:K(Dn),punctuation:Yp,separator:K(Yp),bracket:Pi,angleBracket:K(Pi),squareBracket:K(Pi),paren:K(Pi),brace:K(Pi),content:Pn,heading:lr,heading1:K(lr),heading2:K(lr),heading3:K(lr),heading4:K(lr),heading5:K(lr),heading6:K(lr),contentSeparator:K(Pn),list:K(Pn),quote:K(Pn),emphasis:K(Pn),strong:K(Pn),link:K(Pn),monospace:K(Pn),strikethrough:K(Pn),inserted:K(),deleted:K(),changed:K(),invalid:K(),meta:nu,documentMeta:K(nu),annotation:K(nu),processingInstruction:K(nu),definition:qt.defineModifier(),constant:qt.defineModifier(),function:qt.defineModifier(),standard:qt.defineModifier(),local:qt.defineModifier(),special:qt.defineModifier()},dpe=Zp([{tag:W.link,class:"tok-link"},{tag:W.heading,class:"tok-heading"},{tag:W.emphasis,class:"tok-emphasis"},{tag:W.strong,class:"tok-strong"},{tag:W.keyword,class:"tok-keyword"},{tag:W.atom,class:"tok-atom"},{tag:W.bool,class:"tok-bool"},{tag:W.url,class:"tok-url"},{tag:W.labelName,class:"tok-labelName"},{tag:W.inserted,class:"tok-inserted"},{tag:W.deleted,class:"tok-deleted"},{tag:W.literal,class:"tok-literal"},{tag:W.string,class:"tok-string"},{tag:W.number,class:"tok-number"},{tag:[W.regexp,W.escape,W.special(W.string)],class:"tok-string2"},{tag:W.variableName,class:"tok-variableName"},{tag:W.local(W.variableName),class:"tok-variableName tok-local"},{tag:W.definition(W.variableName),class:"tok-variableName tok-definition"},{tag:W.special(W.variableName),class:"tok-variableName2"},{tag:W.definition(W.propertyName),class:"tok-propertyName tok-definition"},{tag:W.typeName,class:"tok-typeName"},{tag:W.namespace,class:"tok-namespace"},{tag:W.className,class:"tok-className"},{tag:W.macroName,class:"tok-macroName"},{tag:W.propertyName,class:"tok-propertyName"},{tag:W.operator,class:"tok-operator"},{tag:W.comment,class:"tok-comment"},{tag:W.meta,class:"tok-meta"},{tag:W.invalid,class:"tok-invalid"},{tag:W.punctuation,class:"tok-punctuation"}]);var ef,ds=new ie;function aN(o){return se.define({combine:o?e=>e.concat(o):void 0})}var uN=new ie,Nt=class{constructor(e,t,n=[],r=""){this.data=e,this.name=r,be.prototype.hasOwnProperty("tree")||Object.defineProperty(be.prototype,"tree",{get(){return lt(this)}}),this.parser=t,this.extension=[fs.of(this),be.languageData.of((s,i,l)=>{let a=lC(s,i,l),u=a.type.prop(ds);if(!u)return[];let c=s.facet(u),d=a.type.prop(uN);if(d){let p=a.resolve(i-a.from,l);for(let f of d)if(f.test(p,s)){let h=s.facet(f.facet);return f.type=="replace"?h:h.concat(c)}}return c})].concat(n)}isActiveAt(e,t,n=-1){return lC(e,t,n).type.prop(ds)==this.data}findRegions(e){let t=e.facet(fs);if((t==null?void 0:t.data)==this.data)return[{from:0,to:e.doc.length}];if(!t||!t.allowsNesting)return[];let n=[],r=(s,i)=>{if(s.prop(ds)==this.data){n.push({from:i,to:i+s.length});return}let l=s.prop(ie.mounted);if(l){if(l.tree.prop(ds)==this.data){if(l.overlay)for(let a of l.overlay)n.push({from:a.from+i,to:a.to+i});else n.push({from:i,to:i+s.length});return}else if(l.overlay){let a=n.length;if(r(l.tree,l.overlay[0].from+i),n.length>a)return}}for(let a=0;a<s.children.length;a++){let u=s.children[a];u instanceof ye&&r(u,s.positions[a]+i)}};return r(lt(e),0),n}get allowsNesting(){return!0}};Nt.setState=De.define();function lC(o,e,t){let n=o.facet(fs),r=lt(o).topNode;if(!n||n.allowsNesting)for(let s=r;s;s=s.enter(e,t,We.ExcludeBuffers))s.type.isTop&&(r=s);return r}var kn=class extends Nt{constructor(e,t,n){super(e,t,[],n),this.parser=t}static define(e){let t=aN(e.languageData);return new kn(t,e.parser.configure({props:[ds.add(n=>n.isTop?t:void 0)]}),e.name)}configure(e,t){return new kn(this.data,this.parser.configure(e),t||this.name)}get allowsNesting(){return this.parser.hasWrappers()}};function lt(o){let e=o.field(Nt.state,!1);return e?e.tree:ye.empty}var rf=class{constructor(e){this.doc=e,this.cursorPos=0,this.string="",this.cursor=e.iter()}get length(){return this.doc.length}syncTo(e){return this.string=this.cursor.next(e-this.cursorPos).value,this.cursorPos=e+this.string.length,this.cursorPos-this.string.length}chunk(e){return this.syncTo(e),this.string}get lineChunks(){return!0}read(e,t){let n=this.cursorPos-this.string.length;return e<n||t>=this.cursorPos?this.doc.sliceString(e,t):this.string.slice(e-n,t-n)}},ki=null,ps=class{constructor(e,t,n=[],r,s,i,l,a){this.parser=e,this.state=t,this.fragments=n,this.tree=r,this.treeLen=s,this.viewport=i,this.skipped=l,this.scheduleOn=a,this.parse=null,this.tempSkipped=[]}static create(e,t,n){return new ps(e,t,[],ye.empty,0,n,[],null)}startParse(){return this.parser.startParse(new rf(this.state.doc),this.fragments)}work(e,t){return t!=null&&t>=this.state.doc.length&&(t=void 0),this.tree!=ye.empty&&this.isDone(t!=null?t:this.state.doc.length)?(this.takeTree(),!0):this.withContext(()=>{var n;if(typeof e=="number"){let r=Date.now()+e;e=()=>Date.now()>r}for(this.parse||(this.parse=this.startParse()),t!=null&&(this.parse.stoppedAt==null||this.parse.stoppedAt>t)&&t<this.state.doc.length&&this.parse.stopAt(t);;){let r=this.parse.advance();if(r)if(this.fragments=this.withoutTempSkipped(vn.addTree(r,this.fragments,this.parse.stoppedAt!=null)),this.treeLen=(n=this.parse.stoppedAt)!==null&&n!==void 0?n:this.state.doc.length,this.tree=r,this.parse=null,this.treeLen<(t!=null?t:this.state.doc.length))this.parse=this.startParse();else return!0;if(e())return!1}})}takeTree(){let e,t;this.parse&&(e=this.parse.parsedPos)>=this.treeLen&&((this.parse.stoppedAt==null||this.parse.stoppedAt>e)&&this.parse.stopAt(e),this.withContext(()=>{for(;!(t=this.parse.advance()););}),this.treeLen=e,this.tree=t,this.fragments=this.withoutTempSkipped(vn.addTree(this.tree,this.fragments,!0)),this.parse=null)}withContext(e){let t=ki;ki=this;try{return e()}finally{ki=t}}withoutTempSkipped(e){for(let t;t=this.tempSkipped.pop();)e=aC(e,t.from,t.to);return e}changes(e,t){let{fragments:n,tree:r,treeLen:s,viewport:i,skipped:l}=this;if(this.takeTree(),!e.empty){let a=[];if(e.iterChangedRanges((u,c,d,p)=>a.push({fromA:u,toA:c,fromB:d,toB:p})),n=vn.applyChanges(n,a),r=ye.empty,s=0,i={from:e.mapPos(i.from,-1),to:e.mapPos(i.to,1)},this.skipped.length){l=[];for(let u of this.skipped){let c=e.mapPos(u.from,1),d=e.mapPos(u.to,-1);c<d&&l.push({from:c,to:d})}}}return new ps(this.parser,t,n,r,s,i,l,this.scheduleOn)}updateViewport(e){if(this.viewport.from==e.from&&this.viewport.to==e.to)return!1;this.viewport=e;let t=this.skipped.length;for(let n=0;n<this.skipped.length;n++){let{from:r,to:s}=this.skipped[n];r<e.to&&s>e.from&&(this.fragments=aC(this.fragments,r,s),this.skipped.splice(n--,1))}return this.skipped.length>=t?!1:(this.reset(),!0)}reset(){this.parse&&(this.takeTree(),this.parse=null)}skipUntilInView(e,t){this.skipped.push({from:e,to:t})}static getSkippingParser(e){return new class extends ro{createParse(t,n,r){let s=r[0].from,i=r[r.length-1].to;return{parsedPos:s,advance(){let a=ki;if(a){for(let u of r)a.tempSkipped.push(u);e&&(a.scheduleOn=a.scheduleOn?Promise.all([a.scheduleOn,e]):e)}return this.parsedPos=i,new ye(Ge.none,[],[],i-s)},stoppedAt:null,stopAt(){}}}}}isDone(e){e=Math.min(e,this.state.doc.length);let t=this.fragments;return this.treeLen>=e&&t.length&&t[0].from==0&&t[0].to>=e}static get(){return ki}};function aC(o,e,t){return vn.applyChanges(o,[{fromA:e,toA:t,fromB:e,toB:t}])}var vo=class{constructor(e){this.context=e,this.tree=e.tree}apply(e){if(!e.docChanged&&this.tree==this.context.tree)return this;let t=this.context.changes(e.changes,e.state),n=this.context.treeLen==e.startState.doc.length?void 0:Math.max(e.changes.mapPos(this.context.treeLen),t.viewport.to);return t.work(20,n)||t.takeTree(),new vo(t)}static init(e){let t=Math.min(3e3,e.doc.length),n=ps.create(e.facet(fs).parser,e,{from:0,to:t});return n.work(20,t)||n.takeTree(),new vo(n)}};Nt.state=Ct.define({create:vo.init,update(o,e){for(let t of e.effects)if(t.is(Nt.setState))return t.value;return e.startState.facet(fs)!=e.state.facet(fs)?vo.init(e.state):o.apply(e)}});var dC=o=>{let e=setTimeout(()=>o(),500);return()=>clearTimeout(e)};typeof requestIdleCallback<"u"&&(dC=o=>{let e=-1,t=setTimeout(()=>{e=requestIdleCallback(o,{timeout:500-100})},100);return()=>e<0?clearTimeout(t):cancelIdleCallback(e)});var tf=typeof navigator<"u"&&(!((ef=navigator.scheduling)===null||ef===void 0)&&ef.isInputPending)?()=>navigator.scheduling.isInputPending():null,cN=Gt.fromClass(class{constructor(e){this.view=e,this.working=null,this.workScheduled=0,this.chunkEnd=-1,this.chunkBudget=-1,this.work=this.work.bind(this),this.scheduleWork()}update(e){let t=this.view.state.field(Nt.state).context;(t.updateViewport(e.view.viewport)||this.view.viewport.to>t.treeLen)&&this.scheduleWork(),e.docChanged&&(this.view.hasFocus&&(this.chunkBudget+=50),this.scheduleWork()),this.checkAsyncSchedule(t)}scheduleWork(){if(this.working)return;let{state:e}=this.view,t=e.field(Nt.state);(t.tree!=t.context.tree||!t.context.isDone(e.doc.length))&&(this.working=dC(this.work))}work(e){this.working=null;let t=Date.now();if(this.chunkEnd<t&&(this.chunkEnd<0||this.view.hasFocus)&&(this.chunkEnd=t+3e4,this.chunkBudget=3e3),this.chunkBudget<=0)return;let{state:n,viewport:{to:r}}=this.view,s=n.field(Nt.state);if(s.tree==s.context.tree&&s.context.isDone(r+1e5))return;let i=Date.now()+Math.min(this.chunkBudget,100,e&&!tf?Math.max(25,e.timeRemaining()-5):1e9),l=s.context.treeLen<r&&n.doc.length>r+1e3,a=s.context.work(()=>tf&&tf()||Date.now()>i,r+(l?0:1e5));this.chunkBudget-=Date.now()-t,(a||this.chunkBudget<=0)&&(s.context.takeTree(),this.view.dispatch({effects:Nt.setState.of(new vo(s.context))})),this.chunkBudget>0&&!(a&&!l)&&this.scheduleWork(),this.checkAsyncSchedule(s.context)}checkAsyncSchedule(e){e.scheduleOn&&(this.workScheduled++,e.scheduleOn.then(()=>this.scheduleWork()).catch(t=>En(this.view.state,t)).then(()=>this.workScheduled--),e.scheduleOn=null)}destroy(){this.working&&this.working()}isWorking(){return!!(this.working||this.workScheduled>0)}},{eventHandlers:{focus(){this.scheduleWork()}}}),fs=se.define({combine(o){return o.length?o[0]:null},enables:o=>[Nt.state,cN,le.contentAttributes.compute([o],e=>{let t=e.facet(o);return t&&t.name?{"data-language":t.name}:{}})]});var dN=se.define(),Li=se.define({combine:o=>{if(!o.length)return" ";let e=o[0];if(!e||/\S/.test(e)||Array.from(e).some(t=>t!=e[0]))throw new Error("Invalid indent unit: "+JSON.stringify(o[0]));return e}});function Ai(o){let e=o.facet(Li);return e.charCodeAt(0)==9?o.tabSize*e.length:e.length}function Oi(o,e){let t="",n=o.tabSize,r=o.facet(Li)[0];if(r==" "){for(;e>=n;)t+=" ",e-=n;r=" "}for(let s=0;s<e;s++)t+=r;return t}function cf(o,e){o instanceof be&&(o=new ur(o));for(let n of o.state.facet(dN)){let r=n(o,e);if(r!==void 0)return r}let t=lt(o.state);return t?fN(o,t,e):null}var ur=class{constructor(e,t={}){this.state=e,this.options=t,this.unit=Ai(e)}lineAt(e,t=1){let n=this.state.doc.lineAt(e),{simulateBreak:r,simulateDoubleBreak:s}=this.options;return r!=null&&r>=n.from&&r<=n.to?s&&r==e?{text:"",from:e}:(t<0?r<e:r<=e)?{text:n.text.slice(r-n.from),from:r}:{text:n.text.slice(0,r-n.from),from:n.from}:n}textAfterPos(e,t=1){if(this.options.simulateDoubleBreak&&e==this.options.simulateBreak)return"";let{text:n,from:r}=this.lineAt(e,t);return n.slice(e-r,Math.min(n.length,e+100-r))}column(e,t=1){let{text:n,from:r}=this.lineAt(e,t),s=this.countColumn(n,e-r),i=this.options.overrideIndentation?this.options.overrideIndentation(r):-1;return i>-1&&(s+=i-this.countColumn(n,n.search(/\S|$/))),s}countColumn(e,t=e.length){return er(e,this.state.tabSize,t)}lineIndent(e,t=1){let{text:n,from:r}=this.lineAt(e,t),s=this.options.overrideIndentation;if(s){let i=s(r);if(i>-1)return i}return this.countColumn(n,n.search(/\S|$/))}get simulatedBreak(){return this.options.simulateBreak||null}},pN=new ie;function fN(o,e,t){return pC(e.resolveInner(t).enterUnfinishedNodesBefore(t),t,o)}function hN(o){return o.pos==o.options.simulateBreak&&o.options.simulateDoubleBreak}function mN(o){let e=o.type.prop(pN);if(e)return e;let t=o.firstChild,n;if(t&&(n=t.type.prop(ie.closedBy))){let r=o.lastChild,s=r&&n.indexOf(r.name)>-1;return i=>xN(i,!0,1,void 0,s&&!hN(i)?r.from:void 0)}return o.parent==null?gN:null}function pC(o,e,t){for(;o;o=o.parent){let n=mN(o);if(n)return n(Ii.create(t,e,o))}return null}function gN(){return 0}var Ii=class extends ur{constructor(e,t,n){super(e.state,e.options),this.base=e,this.pos=t,this.node=n}static create(e,t,n){return new Ii(e,t,n)}get textAfter(){return this.textAfterPos(this.pos)}get baseIndent(){return this.baseIndentFor(this.node)}baseIndentFor(e){let t=this.state.doc.lineAt(e.from);for(;;){let n=e.resolve(t.from);for(;n.parent&&n.parent.from==n.from;)n=n.parent;if(bN(n,e))break;t=this.state.doc.lineAt(n.from)}return this.lineIndent(t.from)}continue(){let e=this.node.parent;return e?pC(e,this.pos,this.base):0}};function bN(o,e){for(let t=e;t;t=t.parent)if(o==t)return!0;return!1}function yN(o){let e=o.node,t=e.childAfter(e.from),n=e.lastChild;if(!t)return null;let r=o.options.simulateBreak,s=o.state.doc.lineAt(t.from),i=r==null||r<=s.from?s.to:Math.min(s.to,r);for(let l=t.to;;){let a=e.childAfter(l);if(!a||a==n)return null;if(!a.type.isSkipped)return a.from<i?t:null;l=a.to}}function xN(o,e,t,n,r){let s=o.textAfter,i=s.match(/^\s*/)[0].length,l=n&&s.slice(i,i+n.length)==n||r==o.pos+i,a=e?yN(o):null;return a?l?o.column(a.from):o.column(a.to):o.baseIndent+(l?0:o.unit*t)}var dn=class{constructor(e,t){this.specs=e;let n;function r(l){let a=_t.newName();return(n||(n=Object.create(null)))["."+a]=l,a}let s=typeof t.all=="string"?t.all:t.all?r(t.all):void 0,i=t.scope;this.scope=i instanceof Nt?l=>l.prop(ds)==i.data:i?l=>l==i:void 0,this.style=Zp(e.map(l=>({tag:l.tag,class:l.class||r(Object.assign({},l,{tag:null}))})),{all:s}).style,this.module=n?new _t(n):null,this.themeType=t.themeType}static define(e,t){return new dn(e,t||{})}},sf=se.define(),fC=se.define({combine(o){return o.length?[o[0]]:null}});function nf(o){let e=o.facet(sf);return e.length?e:o.facet(fC)}function cr(o,e){let t=[vN],n;return o instanceof dn&&(o.module&&t.push(le.styleModule.of(o.module)),n=o.themeType),e!=null&&e.fallback?t.push(fC.of(o)):n?t.push(sf.computeN([le.darkTheme],r=>r.facet(le.darkTheme)==(n=="dark")?[o]:[])):t.push(sf.of(o)),t}var lf=class{constructor(e){this.markCache=Object.create(null),this.tree=lt(e.state),this.decorations=this.buildDeco(e,nf(e.state))}update(e){let t=lt(e.state),n=nf(e.state),r=n!=nf(e.startState);t.length<e.view.viewport.to&&!r&&t.type==this.tree.type?this.decorations=this.decorations.map(e.changes):(t!=this.tree||e.viewportChanged||r)&&(this.tree=t,this.decorations=this.buildDeco(e.view,n))}buildDeco(e,t){if(!t||!this.tree.length)return Xe.none;let n=new wn;for(let{from:r,to:s}of e.visibleRanges)iC(this.tree,t,(i,l,a)=>{n.add(i,l,this.markCache[a]||(this.markCache[a]=Xe.mark({class:a})))},r,s);return n.finish()}},vN=Yo.high(Gt.fromClass(lf,{decorations:o=>o.decorations})),df=dn.define([{tag:W.meta,color:"#404740"},{tag:W.link,textDecoration:"underline"},{tag:W.heading,textDecoration:"underline",fontWeight:"bold"},{tag:W.emphasis,fontStyle:"italic"},{tag:W.strong,fontWeight:"bold"},{tag:W.strikethrough,textDecoration:"line-through"},{tag:W.keyword,color:"#708"},{tag:[W.atom,W.bool,W.url,W.contentSeparator,W.labelName],color:"#219"},{tag:[W.literal,W.inserted],color:"#164"},{tag:[W.string,W.deleted],color:"#a11"},{tag:[W.regexp,W.escape,W.special(W.string)],color:"#e40"},{tag:W.definition(W.variableName),color:"#00f"},{tag:W.local(W.variableName),color:"#30a"},{tag:[W.typeName,W.namespace],color:"#085"},{tag:W.className,color:"#167"},{tag:[W.special(W.variableName),W.macroName],color:"#256"},{tag:W.definition(W.propertyName),color:"#00c"},{tag:W.comment,color:"#940"},{tag:W.invalid,color:"#f00"}]);var CN=1e4,SN="()[]{}";var wN=new ie;function af(o,e,t){let n=o.prop(e<0?ie.openedBy:ie.closedBy);if(n)return n;if(o.name.length==1){let r=t.indexOf(o.name);if(r>-1&&r%2==(e<0?1:0))return[t[r+e]]}return null}function uf(o){let e=o.type.prop(wN);return e?e(o.node):o}function dr(o,e,t,n={}){let r=n.maxScanDistance||CN,s=n.brackets||SN,i=lt(o),l=i.resolveInner(e,t);for(let a=l;a;a=a.parent){let u=af(a.type,t,s);if(u&&a.from<a.to){let c=uf(a);if(c&&(t>0?e>=c.from&&e<c.to:e>c.from&&e<=c.to))return TN(o,e,t,a,c,u,s)}}return EN(o,e,t,i,l.type,r,s)}function TN(o,e,t,n,r,s,i){let l=n.parent,a={from:r.from,to:r.to},u=0,c=l==null?void 0:l.cursor();if(c&&(t<0?c.childBefore(n.from):c.childAfter(n.to)))do if(t<0?c.to<=n.from:c.from>=n.to){if(u==0&&s.indexOf(c.type.name)>-1&&c.from<c.to){let d=uf(c);return{start:a,end:d?{from:d.from,to:d.to}:void 0,matched:!0}}else if(af(c.type,t,i))u++;else if(af(c.type,-t,i)){if(u==0){let d=uf(c);return{start:a,end:d&&d.from<d.to?{from:d.from,to:d.to}:void 0,matched:!1}}u--}}while(t<0?c.prevSibling():c.nextSibling());return{start:a,matched:!1}}function EN(o,e,t,n,r,s,i){let l=t<0?o.sliceDoc(e-1,e):o.sliceDoc(e,e+1),a=i.indexOf(l);if(a<0||a%2==0!=t>0)return null;let u={from:t<0?e-1:e,to:t>0?e+1:e},c=o.doc.iterRange(e,t>0?o.doc.length:0),d=0;for(let p=0;!c.next().done&&p<=s;){let f=c.value;t<0&&(p+=f.length);let h=e+p*t;for(let g=t>0?0:f.length-1,m=t>0?f.length:-1;g!=m;g+=t){let y=i.indexOf(f[g]);if(!(y<0||n.resolveInner(h+g,1).type!=r))if(y%2==0==t>0)d++;else{if(d==1)return{start:u,end:{from:h+g,to:h+g+1},matched:y>>1==a>>1};d--}}t>0&&(p+=f.length)}return c.done?{start:u,matched:!1}:null}var MN=Object.create(null),uC=[Ge.none];var cC=[],RN=Object.create(null);for(let[o,e]of[["variable","variableName"],["variable-2","variableName.special"],["string-2","string.special"],["def","variableName.definition"],["tag","tagName"],["attribute","attributeName"],["type","typeName"],["builtin","variableName.standard"],["qualifier","modifier"],["error","invalid"],["header","heading"],["property","propertyName"]])RN[o]=DN(MN,e);function of(o,e){cC.indexOf(o)>-1||(cC.push(o),console.warn(e))}function DN(o,e){let t=null;for(let s of e.split(".")){let i=o[s]||W[s];i?typeof i=="function"?t?t=i(t):of(s,`Modifier ${s} used at start of tag`):t?of(s,`Tag ${s} used as modifier`):t=i:of(s,`Unknown highlighting tag ${s}`)}if(!t)return 0;let n=e.replace(/ /g,"_"),r=Ge.define({id:uC.length,name:n,props:[ar({[n]:t})]});return uC.push(r),r.id}var ou={brackets:["(","[","{","'",'"'],before:")]}:;>",stringPrefixes:[]},pr=De.define({map(o,e){let t=e.mapPos(o,-1,dt.TrackAfter);return t==null?void 0:t}}),ff=new class extends un{};ff.startSide=1;ff.endSide=-1;var gC=Ct.define({create(){return we.empty},update(o,e){if(e.selection){let t=e.state.doc.lineAt(e.selection.main.head).from,n=e.startState.doc.lineAt(e.startState.selection.main.head).from;t!=e.changes.mapPos(n,-1)&&(o=we.empty)}o=o.map(e.changes);for(let t of e.effects)t.is(pr)&&(o=o.update({add:[ff.range(t.value,t.value+1)]}));return o}});function hf(){return[LN,gC]}var pf="()[]{}<>";function PN(o){for(let e=0;e<pf.length;e+=2)if(pf.charCodeAt(e)==o)return pf.charAt(e+1);return mx(o<128?o:o+1)}function kN(o,e){return o.languageDataAt("closeBrackets",e)[0]||ou}var IN=typeof navigator=="object"&&/Android\b/.test(navigator.userAgent),LN=le.inputHandler.of((o,e,t,n)=>{if((IN?o.composing:o.compositionStarted)||o.state.readOnly)return!1;let r=o.state.selection.main;if(n.length>2||n.length==2&&Qo(Sn(n,0))==1||e!=r.from||t!=r.to)return!1;let s=AN(o.state,n);return s?(o.dispatch(s),!0):!1});function AN(o,e){let t=kN(o,o.selection.main.head),n=t.brackets||ou.brackets;for(let r of n){let s=PN(Sn(r,0));if(e==r)return s==r?HN(o,r,n.indexOf(r+r+r)>-1,t):ON(o,r,s,t.before||ou.before);if(e==s&&bC(o,o.selection.main.from))return NN(o,r,s)}return null}function bC(o,e){let t=!1;return o.field(gC).between(0,o.doc.length,n=>{n==e&&(t=!0)}),t}function mf(o,e){let t=o.sliceString(e,e+2);return t.slice(0,Qo(Sn(t,0)))}function ON(o,e,t,n){let r=null,s=o.changeByRange(i=>{if(!i.empty)return{changes:[{insert:e,from:i.from},{insert:t,from:i.to}],effects:pr.of(i.to+e.length),range:z.range(i.anchor+e.length,i.head+e.length)};let l=mf(o.doc,i.head);return!l||/\s/.test(l)||n.indexOf(l)>-1?{changes:{insert:e+t,from:i.head},effects:pr.of(i.head+e.length),range:z.cursor(i.head+e.length)}:{range:r=i}});return r?null:o.update(s,{scrollIntoView:!0,userEvent:"input.type"})}function NN(o,e,t){let n=null,r=o.changeByRange(s=>s.empty&&mf(o.doc,s.head)==t?{changes:{from:s.head,to:s.head+t.length,insert:t},range:z.cursor(s.head+t.length)}:n={range:s});return n?null:o.update(r,{scrollIntoView:!0,userEvent:"input.type"})}function HN(o,e,t,n){let r=n.stringPrefixes||ou.stringPrefixes,s=null,i=o.changeByRange(l=>{if(!l.empty)return{changes:[{insert:e,from:l.from},{insert:e,from:l.to}],effects:pr.of(l.to+e.length),range:z.range(l.anchor+e.length,l.head+e.length)};let a=l.head,u=mf(o.doc,a),c;if(u==e){if(hC(o,a))return{changes:{insert:e+e,from:a},effects:pr.of(a+e.length),range:z.cursor(a+e.length)};if(bC(o,a)){let p=t&&o.sliceDoc(a,a+e.length*3)==e+e+e?e+e+e:e;return{changes:{from:a,to:a+p.length,insert:p},range:z.cursor(a+p.length)}}}else{if(t&&o.sliceDoc(a-2*e.length,a)==e+e&&(c=mC(o,a-2*e.length,r))>-1&&hC(o,c))return{changes:{insert:e+e+e+e,from:a},effects:pr.of(a+e.length),range:z.cursor(a+e.length)};if(o.charCategorizer(a)(u)!=vt.Word&&mC(o,a,r)>-1&&!FN(o,a,e,r))return{changes:{insert:e+e,from:a},effects:pr.of(a+e.length),range:z.cursor(a+e.length)}}return{range:s=l}});return s?null:o.update(i,{scrollIntoView:!0,userEvent:"input.type"})}function hC(o,e){let t=lt(o).resolveInner(e+1);return t.parent&&t.from==e}function FN(o,e,t,n){let r=lt(o).resolveInner(e,-1),s=n.reduce((i,l)=>Math.max(i,l.length),0);for(let i=0;i<5;i++){let l=o.sliceDoc(r.from,Math.min(r.to,r.from+t.length+s)),a=l.indexOf(t);if(!a||a>-1&&n.indexOf(l.slice(0,a))>-1){let c=r.firstChild;for(;c&&c.from==r.from&&c.to-c.from>t.length+a;){if(o.sliceDoc(c.to-t.length,c.to)==t)return!1;c=c.firstChild}return!0}let u=r.to==e&&r.parent;if(!u)break;r=u}return!1}function mC(o,e,t){let n=o.charCategorizer(e);if(n(o.sliceDoc(e-1,e))!=vt.Word)return e;for(let r of t){let s=e-r.length;if(o.sliceDoc(s,e)==r&&n(o.sliceDoc(s-1,s))!=vt.Word)return s}return-1}var VN=o=>{let{state:e}=o,t=e.doc.lineAt(e.selection.main.from),n=Sf(o.state,t.from);return n.line?BN(o):n.block?$N(o):!1};function Cf(o,e){return({state:t,dispatch:n})=>{if(t.readOnly)return!1;let r=o(e,t);return r?(n(t.update(r)),!0):!1}}var BN=Cf(KN,0);var zN=Cf(EC,0);var $N=Cf((o,e)=>EC(o,e,_N(e)),0);function Sf(o,e){let t=o.languageDataAt("commentTokens",e);return t.length?t[0]:{}}var Ni=50;function WN(o,{open:e,close:t},n,r){let s=o.sliceDoc(n-Ni,n),i=o.sliceDoc(r,r+Ni),l=/\s*$/.exec(s)[0].length,a=/^\s*/.exec(i)[0].length,u=s.length-l;if(s.slice(u-e.length,u)==e&&i.slice(a,a+t.length)==t)return{open:{pos:n-l,margin:l&&1},close:{pos:r+a,margin:a&&1}};let c,d;r-n<=2*Ni?c=d=o.sliceDoc(n,r):(c=o.sliceDoc(n,n+Ni),d=o.sliceDoc(r-Ni,r));let p=/^\s*/.exec(c)[0].length,f=/\s*$/.exec(d)[0].length,h=d.length-f-t.length;return c.slice(p,p+e.length)==e&&d.slice(h,h+t.length)==t?{open:{pos:n+p+e.length,margin:/\s/.test(c.charAt(p+e.length))?1:0},close:{pos:r-f-t.length,margin:/\s/.test(d.charAt(h-1))?1:0}}:null}function _N(o){let e=[];for(let t of o.selection.ranges){let n=o.doc.lineAt(t.from),r=t.to<=n.to?n:o.doc.lineAt(t.to),s=e.length-1;s>=0&&e[s].to>n.from?e[s].to=r.to:e.push({from:n.from+/^\s*/.exec(n.text)[0].length,to:r.to})}return e}function EC(o,e,t=e.selection.ranges){let n=t.map(s=>Sf(e,s.from).block);if(!n.every(s=>s))return null;let r=t.map((s,i)=>WN(e,n[i],s.from,s.to));if(o!=2&&!r.every(s=>s))return{changes:e.changes(t.map((s,i)=>r[i]?[]:[{from:s.from,insert:n[i].open+" "},{from:s.to,insert:" "+n[i].close}]))};if(o!=1&&r.some(s=>s)){let s=[];for(let i=0,l;i<r.length;i++)if(l=r[i]){let a=n[i],{open:u,close:c}=l;s.push({from:u.pos-a.open.length,to:u.pos+u.margin},{from:c.pos-c.margin,to:c.pos+a.close.length})}return{changes:s}}return null}function KN(o,e,t=e.selection.ranges){let n=[],r=-1;for(let{from:s,to:i}of t){let l=n.length,a=1e9,u=Sf(e,s).line;if(u){for(let c=s;c<=i;){let d=e.doc.lineAt(c);if(d.from>r&&(s==i||i>d.from)){r=d.from;let p=/^\s*/.exec(d.text)[0].length,f=p==d.length,h=d.text.slice(p,p+u.length)==u?p:-1;p<d.text.length&&p<a&&(a=p),n.push({line:d,comment:h,token:u,indent:p,empty:f,single:!1})}c=d.to+1}if(a<1e9)for(let c=l;c<n.length;c++)n[c].indent<n[c].line.text.length&&(n[c].indent=a);n.length==l+1&&(n[l].single=!0)}}if(o!=2&&n.some(s=>s.comment<0&&(!s.empty||s.single))){let s=[];for(let{line:l,token:a,indent:u,empty:c,single:d}of n)(d||!c)&&s.push({from:l.from+u,insert:a+" "});let i=e.changes(s);return{changes:i,selection:e.selection.map(i,1)}}else if(o!=1&&n.some(s=>s.comment>=0)){let s=[];for(let{line:i,comment:l,token:a}of n)if(l>=0){let u=i.from+l,c=u+a.length;i.text[c-i.from]==" "&&c++,s.push({from:u,to:c})}return{changes:s}}return null}var bf=At.define(),UN=At.define(),GN=se.define(),MC=se.define({combine(o){return Zo(o,{minDepth:100,newGroupDelay:500,joinToEvent:(e,t)=>t},{minDepth:Math.max,newGroupDelay:Math.min,joinToEvent:(e,t)=>(n,r)=>e(n,r)||t(n,r)})}});function qN(o){let e=0;return o.iterChangedRanges((t,n)=>e=n),e}var RC=Ct.define({create(){return jt.empty},update(o,e){let t=e.state.facet(MC),n=e.annotation(bf);if(n){let a=e.docChanged?z.single(qN(e.changes)):void 0,u=ft.fromTransaction(e,a),c=n.side,d=c==0?o.undone:o.done;return u?d=su(d,d.length,t.minDepth,u):d=kC(d,e.startState.selection),new jt(c==0?n.rest:d,c==0?d:n.rest)}let r=e.annotation(UN);if((r=="full"||r=="before")&&(o=o.isolate()),e.annotation(He.addToHistory)===!1)return e.changes.empty?o:o.addMapping(e.changes.desc);let s=ft.fromTransaction(e),i=e.annotation(He.time),l=e.annotation(He.userEvent);return s?o=o.addChanges(s,i,l,t,e):e.selection&&(o=o.addSelection(e.startState.selection,i,l,t.newGroupDelay)),(r=="full"||r=="after")&&(o=o.isolate()),o},toJSON(o){return{done:o.done.map(e=>e.toJSON()),undone:o.undone.map(e=>e.toJSON())}},fromJSON(o){return new jt(o.done.map(ft.fromJSON),o.undone.map(ft.fromJSON))}});function wf(o={}){return[RC,MC.of(o),le.domEventHandlers({beforeinput(e,t){let n=e.inputType=="historyUndo"?DC:e.inputType=="historyRedo"?yf:null;return n?(e.preventDefault(),n(t)):!1}})]}function iu(o,e){return function({state:t,dispatch:n}){if(!e&&t.readOnly)return!1;let r=t.field(RC,!1);if(!r)return!1;let s=r.pop(o,t,e);return s?(n(s),!0):!1}}var DC=iu(0,!1),yf=iu(1,!1),QN=iu(0,!0),jN=iu(1,!0);var ft=class{constructor(e,t,n,r,s){this.changes=e,this.effects=t,this.mapped=n,this.startSelection=r,this.selectionsAfter=s}setSelAfter(e){return new ft(this.changes,this.effects,this.mapped,this.startSelection,e)}toJSON(){var e,t,n;return{changes:(e=this.changes)===null||e===void 0?void 0:e.toJSON(),mapped:(t=this.mapped)===null||t===void 0?void 0:t.toJSON(),startSelection:(n=this.startSelection)===null||n===void 0?void 0:n.toJSON(),selectionsAfter:this.selectionsAfter.map(r=>r.toJSON())}}static fromJSON(e){return new ft(e.changes&&Ne.fromJSON(e.changes),[],e.mapped&&Lt.fromJSON(e.mapped),e.startSelection&&z.fromJSON(e.startSelection),e.selectionsAfter.map(z.fromJSON))}static fromTransaction(e,t){let n=Qt;for(let r of e.startState.facet(GN)){let s=r(e);s.length&&(n=n.concat(s))}return!n.length&&e.changes.empty?null:new ft(e.changes.invert(e.startState.doc),n,void 0,t||e.startState.selection,Qt)}static selection(e){return new ft(void 0,Qt,void 0,void 0,e)}};function su(o,e,t,n){let r=e+1>t+20?e-t-1:0,s=o.slice(r,e);return s.push(n),s}function JN(o,e){let t=[],n=!1;return o.iterChangedRanges((r,s)=>t.push(r,s)),e.iterChangedRanges((r,s,i,l)=>{for(let a=0;a<t.length;){let u=t[a++],c=t[a++];l>=u&&i<=c&&(n=!0)}}),n}function XN(o,e){return o.ranges.length==e.ranges.length&&o.ranges.filter((t,n)=>t.empty!=e.ranges[n].empty).length===0}function PC(o,e){return o.length?e.length?o.concat(e):o:e}var Qt=[],YN=200;function kC(o,e){if(o.length){let t=o[o.length-1],n=t.selectionsAfter.slice(Math.max(0,t.selectionsAfter.length-YN));return n.length&&n[n.length-1].eq(e)?o:(n.push(e),su(o,o.length-1,1e9,t.setSelAfter(n)))}else return[ft.selection([e])]}function ZN(o){let e=o[o.length-1],t=o.slice();return t[o.length-1]=e.setSelAfter(e.selectionsAfter.slice(0,e.selectionsAfter.length-1)),t}function gf(o,e){if(!o.length)return o;let t=o.length,n=Qt;for(;t;){let r=eH(o[t-1],e,n);if(r.changes&&!r.changes.empty||r.effects.length){let s=o.slice(0,t);return s[t-1]=r,s}else e=r.mapped,t--,n=r.selectionsAfter}return n.length?[ft.selection(n)]:Qt}function eH(o,e,t){let n=PC(o.selectionsAfter.length?o.selectionsAfter.map(l=>l.map(e)):Qt,t);if(!o.changes)return ft.selection(n);let r=o.changes.map(e),s=e.mapDesc(o.changes,!0),i=o.mapped?o.mapped.composeDesc(s):s;return new ft(r,De.mapEffects(o.effects,e),i,o.startSelection.map(s),n)}var tH=/^(input\.type|delete)($|\.)/,jt=class{constructor(e,t,n=0,r=void 0){this.done=e,this.undone=t,this.prevTime=n,this.prevUserEvent=r}isolate(){return this.prevTime?new jt(this.done,this.undone):this}addChanges(e,t,n,r,s){let i=this.done,l=i[i.length-1];return l&&l.changes&&!l.changes.empty&&e.changes&&(!n||tH.test(n))&&(!l.selectionsAfter.length&&t-this.prevTime<r.newGroupDelay&&r.joinToEvent(s,JN(l.changes,e.changes))||n=="input.type.compose")?i=su(i,i.length-1,r.minDepth,new ft(e.changes.compose(l.changes),PC(e.effects,l.effects),l.mapped,l.startSelection,Qt)):i=su(i,i.length,r.minDepth,e),new jt(i,Qt,t,n)}addSelection(e,t,n,r){let s=this.done.length?this.done[this.done.length-1].selectionsAfter:Qt;return s.length>0&&t-this.prevTime<r&&n==this.prevUserEvent&&n&&/^select($|\.)/.test(n)&&XN(s[s.length-1],e)?this:new jt(kC(this.done,e),this.undone,t,n)}addMapping(e){return new jt(gf(this.done,e),gf(this.undone,e),this.prevTime,this.prevUserEvent)}pop(e,t,n){let r=e==0?this.done:this.undone;if(r.length==0)return null;let s=r[r.length-1];if(n&&s.selectionsAfter.length)return t.update({selection:s.selectionsAfter[s.selectionsAfter.length-1],annotations:bf.of({side:e,rest:ZN(r)}),userEvent:e==0?"select.undo":"select.redo",scrollIntoView:!0});if(s.changes){let i=r.length==1?Qt:r.slice(0,r.length-1);return s.mapped&&(i=gf(i,s.mapped)),t.update({changes:s.changes,selection:s.startSelection,effects:s.effects,annotations:bf.of({side:e,rest:i}),filter:!1,userEvent:e==0?"undo":"redo",scrollIntoView:!0})}else return null}};jt.empty=new jt(Qt,Qt);var Tf=[{key:"Mod-z",run:DC,preventDefault:!0},{key:"Mod-y",mac:"Mod-Shift-z",run:yf,preventDefault:!0},{linux:"Ctrl-Shift-z",run:yf,preventDefault:!0},{key:"Mod-u",run:QN,preventDefault:!0},{key:"Alt-u",mac:"Mod-Shift-u",run:jN,preventDefault:!0}];function hs(o,e){return z.create(o.ranges.map(e),o.mainIndex)}function In(o,e){return o.update({selection:e,scrollIntoView:!0,userEvent:"select"})}function pn({state:o,dispatch:e},t){let n=hs(o.selection,t);return n.eq(o.selection)?!1:(e(In(o,n)),!0)}function lu(o,e){return z.cursor(e?o.to:o.from)}function IC(o,e){return pn(o,t=>t.empty?o.moveByChar(t,e):lu(t,e))}function ht(o){return o.textDirectionAt(o.state.selection.main.head)==_e.LTR}var LC=o=>IC(o,!ht(o)),AC=o=>IC(o,ht(o));function OC(o,e){return pn(o,t=>t.empty?o.moveByGroup(t,e):lu(t,e))}var nH=o=>OC(o,!ht(o)),oH=o=>OC(o,ht(o));function rH(o,e,t){if(e.type.prop(t))return!0;let n=e.to-e.from;return n&&(n>2||/[^\s,.;:]/.test(o.sliceDoc(e.from,e.to)))||e.firstChild}function au(o,e,t){let n=lt(o).resolveInner(e.head),r=t?ie.closedBy:ie.openedBy;for(let a=e.head;;){let u=t?n.childAfter(a):n.childBefore(a);if(!u)break;rH(o,u,r)?n=u:a=t?u.to:u.from}let s=n.type.prop(r),i,l;return s&&(i=t?dr(o,n.from,1):dr(o,n.to,-1))&&i.matched?l=t?i.end.to:i.end.from:l=t?n.to:n.from,z.cursor(l,t?-1:1)}var sH=o=>pn(o,e=>au(o.state,e,!ht(o))),iH=o=>pn(o,e=>au(o.state,e,ht(o)));function NC(o,e){return pn(o,t=>{if(!t.empty)return lu(t,e);let n=o.moveVertically(t,e);return n.head!=t.head?n:o.moveToLineBoundary(t,e)})}var HC=o=>NC(o,!1),FC=o=>NC(o,!0);function VC(o){let e=o.scrollDOM.clientHeight<o.scrollDOM.scrollHeight-2,t=0,n=0,r;if(e){for(let s of o.state.facet(le.scrollMargins)){let i=s(o);i!=null&&i.top&&(t=Math.max(i==null?void 0:i.top,t)),i!=null&&i.bottom&&(n=Math.max(i==null?void 0:i.bottom,n))}r=o.scrollDOM.clientHeight-t-n}else r=(o.dom.ownerDocument.defaultView||window).innerHeight;return{marginTop:t,marginBottom:n,selfScroll:e,height:Math.max(o.defaultLineHeight,r-5)}}function BC(o,e){let t=VC(o),{state:n}=o,r=hs(n.selection,i=>i.empty?o.moveVertically(i,e,t.height):lu(i,e));if(r.eq(n.selection))return!1;let s;if(t.selfScroll){let i=o.coordsAtPos(n.selection.main.head),l=o.scrollDOM.getBoundingClientRect(),a=l.top+t.marginTop,u=l.bottom-t.marginBottom;i&&i.top>a&&i.bottom<u&&(s=le.scrollIntoView(r.main.head,{y:"start",yMargin:i.top-a}))}return o.dispatch(In(n,r),{effects:s}),!0}var yC=o=>BC(o,!1),xf=o=>BC(o,!0);function Co(o,e,t){let n=o.lineBlockAt(e.head),r=o.moveToLineBoundary(e,t);if(r.head==e.head&&r.head!=(t?n.to:n.from)&&(r=o.moveToLineBoundary(e,t,!1)),!t&&r.head==n.from&&n.length){let s=/^\s*/.exec(o.state.sliceDoc(n.from,Math.min(n.from+100,n.to)))[0].length;s&&e.head!=n.from+s&&(r=z.cursor(n.from+s))}return r}var lH=o=>pn(o,e=>Co(o,e,!0)),aH=o=>pn(o,e=>Co(o,e,!1)),uH=o=>pn(o,e=>Co(o,e,!ht(o))),cH=o=>pn(o,e=>Co(o,e,ht(o))),dH=o=>pn(o,e=>z.cursor(o.lineBlockAt(e.head).from,1)),pH=o=>pn(o,e=>z.cursor(o.lineBlockAt(e.head).to,-1));function fH(o,e,t){let n=!1,r=hs(o.selection,s=>{let i=dr(o,s.head,-1)||dr(o,s.head,1)||s.head>0&&dr(o,s.head-1,1)||s.head<o.doc.length&&dr(o,s.head+1,-1);if(!i||!i.end)return s;n=!0;let l=i.start.from==s.head?i.end.to:i.end.from;return t?z.range(s.anchor,l):z.cursor(l)});return n?(e(In(o,r)),!0):!1}var hH=({state:o,dispatch:e})=>fH(o,e,!1);function Jt(o,e){let t=hs(o.state.selection,n=>{let r=e(n);return z.range(n.anchor,r.head,r.goalColumn,r.bidiLevel||void 0)});return t.eq(o.state.selection)?!1:(o.dispatch(In(o.state,t)),!0)}function zC(o,e){return Jt(o,t=>o.moveByChar(t,e))}var $C=o=>zC(o,!ht(o)),WC=o=>zC(o,ht(o));function _C(o,e){return Jt(o,t=>o.moveByGroup(t,e))}var mH=o=>_C(o,!ht(o)),gH=o=>_C(o,ht(o));var bH=o=>Jt(o,e=>au(o.state,e,!ht(o))),yH=o=>Jt(o,e=>au(o.state,e,ht(o)));function KC(o,e){return Jt(o,t=>o.moveVertically(t,e))}var UC=o=>KC(o,!1),GC=o=>KC(o,!0);function qC(o,e){return Jt(o,t=>o.moveVertically(t,e,VC(o).height))}var xC=o=>qC(o,!1),vC=o=>qC(o,!0),xH=o=>Jt(o,e=>Co(o,e,!0)),vH=o=>Jt(o,e=>Co(o,e,!1)),CH=o=>Jt(o,e=>Co(o,e,!ht(o))),SH=o=>Jt(o,e=>Co(o,e,ht(o))),wH=o=>Jt(o,e=>z.cursor(o.lineBlockAt(e.head).from)),TH=o=>Jt(o,e=>z.cursor(o.lineBlockAt(e.head).to)),CC=({state:o,dispatch:e})=>(e(In(o,{anchor:0})),!0),SC=({state:o,dispatch:e})=>(e(In(o,{anchor:o.doc.length})),!0),wC=({state:o,dispatch:e})=>(e(In(o,{anchor:o.selection.main.anchor,head:0})),!0),TC=({state:o,dispatch:e})=>(e(In(o,{anchor:o.selection.main.anchor,head:o.doc.length})),!0),EH=({state:o,dispatch:e})=>(e(o.update({selection:{anchor:0,head:o.doc.length},userEvent:"select"})),!0),MH=({state:o,dispatch:e})=>{let t=cu(o).map(({from:n,to:r})=>z.range(n,Math.min(r+1,o.doc.length)));return e(o.update({selection:z.create(t),userEvent:"select"})),!0},RH=({state:o,dispatch:e})=>{let t=hs(o.selection,n=>{var r;let s=lt(o).resolveInner(n.head,1);for(;!(s.from<n.from&&s.to>=n.to||s.to>n.to&&s.from<=n.from||!(!((r=s.parent)===null||r===void 0)&&r.parent));)s=s.parent;return z.range(s.to,s.from)});return e(In(o,t)),!0},DH=({state:o,dispatch:e})=>{let t=o.selection,n=null;return t.ranges.length>1?n=z.create([t.main]):t.main.empty||(n=z.create([z.cursor(t.main.head)])),n?(e(In(o,n)),!0):!1};function uu(o,e){if(o.state.readOnly)return!1;let t="delete.selection",{state:n}=o,r=n.changeByRange(s=>{let{from:i,to:l}=s;if(i==l){let a=e(i);a<i?(t="delete.backward",a=ru(o,a,!1)):a>i&&(t="delete.forward",a=ru(o,a,!0)),i=Math.min(i,a),l=Math.max(l,a)}else i=ru(o,i,!1),l=ru(o,l,!0);return i==l?{range:s}:{changes:{from:i,to:l},range:z.cursor(i)}});return r.changes.empty?!1:(o.dispatch(n.update(r,{scrollIntoView:!0,userEvent:t,effects:t=="delete.selection"?le.announce.of(n.phrase("Selection deleted")):void 0})),!0)}function ru(o,e,t){if(o instanceof le)for(let n of o.state.facet(le.atomicRanges).map(r=>r(o)))n.between(e,e,(r,s)=>{r<e&&s>e&&(e=t?s:r)});return e}var QC=(o,e)=>uu(o,t=>{let{state:n}=o,r=n.doc.lineAt(t),s,i;if(!e&&t>r.from&&t<r.from+200&&!/[^ \t]/.test(s=r.text.slice(0,t-r.from))){if(s[s.length-1]==" ")return t-1;let l=er(s,n.tabSize),a=l%Ai(n)||Ai(n);for(let u=0;u<a&&s[s.length-1-u]==" ";u++)t--;i=t}else i=pt(r.text,t-r.from,e,e)+r.from,i==t&&r.number!=(e?n.doc.lines:1)&&(i+=e?1:-1);return i}),vf=o=>QC(o,!1),jC=o=>QC(o,!0),JC=(o,e)=>uu(o,t=>{let n=t,{state:r}=o,s=r.doc.lineAt(n),i=r.charCategorizer(n);for(let l=null;;){if(n==(e?s.to:s.from)){n==t&&s.number!=(e?r.doc.lines:1)&&(n+=e?1:-1);break}let a=pt(s.text,n-s.from,e)+s.from,u=s.text.slice(Math.min(n,a)-s.from,Math.max(n,a)-s.from),c=i(u);if(l!=null&&c!=l)break;(u!=" "||n!=t)&&(l=c),n=a}return n}),XC=o=>JC(o,!1),PH=o=>JC(o,!0),YC=o=>uu(o,e=>{let t=o.lineBlockAt(e).to;return e<t?t:Math.min(o.state.doc.length,e+1)}),kH=o=>uu(o,e=>{let t=o.lineBlockAt(e).from;return e>t?t:Math.max(0,e-1)});var IH=({state:o,dispatch:e})=>{if(o.readOnly)return!1;let t=o.changeByRange(n=>({changes:{from:n.from,to:n.to,insert:me.of(["",""])},range:z.cursor(n.from)}));return e(o.update(t,{scrollIntoView:!0,userEvent:"input"})),!0},LH=({state:o,dispatch:e})=>{if(o.readOnly)return!1;let t=o.changeByRange(n=>{if(!n.empty||n.from==0||n.from==o.doc.length)return{range:n};let r=n.from,s=o.doc.lineAt(r),i=r==s.from?r-1:pt(s.text,r-s.from,!1)+s.from,l=r==s.to?r+1:pt(s.text,r-s.from,!0)+s.from;return{changes:{from:i,to:l,insert:o.doc.slice(r,l).append(o.doc.slice(i,r))},range:z.cursor(l)}});return t.changes.empty?!1:(e(o.update(t,{scrollIntoView:!0,userEvent:"move.character"})),!0)};function cu(o){let e=[],t=-1;for(let n of o.selection.ranges){let r=o.doc.lineAt(n.from),s=o.doc.lineAt(n.to);if(!n.empty&&n.to==s.from&&(s=o.doc.lineAt(n.to-1)),t>=r.number){let i=e[e.length-1];i.to=s.to,i.ranges.push(n)}else e.push({from:r.from,to:s.to,ranges:[n]});t=s.number+1}return e}function ZC(o,e,t){if(o.readOnly)return!1;let n=[],r=[];for(let s of cu(o)){if(t?s.to==o.doc.length:s.from==0)continue;let i=o.doc.lineAt(t?s.to+1:s.from-1),l=i.length+1;if(t){n.push({from:s.to,to:i.to},{from:s.from,insert:i.text+o.lineBreak});for(let a of s.ranges)r.push(z.range(Math.min(o.doc.length,a.anchor+l),Math.min(o.doc.length,a.head+l)))}else{n.push({from:i.from,to:s.from},{from:s.to,insert:o.lineBreak+i.text});for(let a of s.ranges)r.push(z.range(a.anchor-l,a.head-l))}}return n.length?(e(o.update({changes:n,scrollIntoView:!0,selection:z.create(r,o.selection.mainIndex),userEvent:"move.line"})),!0):!1}var AH=({state:o,dispatch:e})=>ZC(o,e,!1),OH=({state:o,dispatch:e})=>ZC(o,e,!0);function eS(o,e,t){if(o.readOnly)return!1;let n=[];for(let r of cu(o))t?n.push({from:r.from,insert:o.doc.slice(r.from,r.to)+o.lineBreak}):n.push({from:r.to,insert:o.lineBreak+o.doc.slice(r.from,r.to)});return e(o.update({changes:n,scrollIntoView:!0,userEvent:"input.copyline"})),!0}var NH=({state:o,dispatch:e})=>eS(o,e,!1),HH=({state:o,dispatch:e})=>eS(o,e,!0),FH=o=>{if(o.state.readOnly)return!1;let{state:e}=o,t=e.changes(cu(e).map(({from:r,to:s})=>(r>0?r--:s<e.doc.length&&s++,{from:r,to:s}))),n=hs(e.selection,r=>o.moveVertically(r,!0)).map(t);return o.dispatch({changes:t,selection:n,scrollIntoView:!0,userEvent:"delete.line"}),!0};function VH(o,e){if(/\(\)|\[\]|\{\}/.test(o.sliceDoc(e-1,e+1)))return{from:e,to:e};let t=lt(o).resolveInner(e),n=t.childBefore(e),r=t.childAfter(e),s;return n&&r&&n.to<=e&&r.from>=e&&(s=n.type.prop(ie.closedBy))&&s.indexOf(r.name)>-1&&o.doc.lineAt(n.to).from==o.doc.lineAt(r.from).from?{from:n.to,to:r.from}:null}var BH=tS(!1),zH=tS(!0);function tS(o){return({state:e,dispatch:t})=>{if(e.readOnly)return!1;let n=e.changeByRange(r=>{let{from:s,to:i}=r,l=e.doc.lineAt(s),a=!o&&s==i&&VH(e,s);o&&(s=i=(i<=l.to?l:e.doc.lineAt(i)).to);let u=new ur(e,{simulateBreak:s,simulateDoubleBreak:!!a}),c=cf(u,s);for(c==null&&(c=/^\s*/.exec(e.doc.lineAt(s).text)[0].length);i<l.to&&/\s/.test(l.text[i-l.from]);)i++;a?{from:s,to:i}=a:s>l.from&&s<l.from+100&&!/\S/.test(l.text.slice(0,s))&&(s=l.from);let d=["",Oi(e,c)];return a&&d.push(Oi(e,u.lineIndent(l.from,-1))),{changes:{from:s,to:i,insert:me.of(d)},range:z.cursor(s+1+d[1].length)}});return t(e.update(n,{scrollIntoView:!0,userEvent:"input"})),!0}}function Ef(o,e){let t=-1;return o.changeByRange(n=>{let r=[];for(let i=n.from;i<=n.to;){let l=o.doc.lineAt(i);l.number>t&&(n.empty||n.to>l.from)&&(e(l,r,n),t=l.number),i=l.to+1}let s=o.changes(r);return{changes:r,range:z.range(s.mapPos(n.anchor,1),s.mapPos(n.head,1))}})}var $H=({state:o,dispatch:e})=>{if(o.readOnly)return!1;let t=Object.create(null),n=new ur(o,{overrideIndentation:s=>{let i=t[s];return i==null?-1:i}}),r=Ef(o,(s,i,l)=>{let a=cf(n,s.from);if(a==null)return;/\S/.test(s.text)||(a=0);let u=/^\s*/.exec(s.text)[0],c=Oi(o,a);(u!=c||l.from<s.from+u.length)&&(t[s.from]=a,i.push({from:s.from,to:s.from+u.length,insert:c}))});return r.changes.empty||e(o.update(r,{userEvent:"indent"})),!0},WH=({state:o,dispatch:e})=>o.readOnly?!1:(e(o.update(Ef(o,(t,n)=>{n.push({from:t.from,insert:o.facet(Li)})}),{userEvent:"input.indent"})),!0),_H=({state:o,dispatch:e})=>o.readOnly?!1:(e(o.update(Ef(o,(t,n)=>{let r=/^\s*/.exec(t.text)[0];if(!r)return;let s=er(r,o.tabSize),i=0,l=Oi(o,Math.max(0,s-Ai(o)));for(;i<r.length&&i<l.length&&r.charCodeAt(i)==l.charCodeAt(i);)i++;n.push({from:t.from+i,to:t.from+r.length,insert:l.slice(i)})}),{userEvent:"delete.dedent"})),!0);var KH=[{key:"Ctrl-b",run:LC,shift:$C,preventDefault:!0},{key:"Ctrl-f",run:AC,shift:WC},{key:"Ctrl-p",run:HC,shift:UC},{key:"Ctrl-n",run:FC,shift:GC},{key:"Ctrl-a",run:dH,shift:wH},{key:"Ctrl-e",run:pH,shift:TH},{key:"Ctrl-d",run:jC},{key:"Ctrl-h",run:vf},{key:"Ctrl-k",run:YC},{key:"Ctrl-Alt-h",run:XC},{key:"Ctrl-o",run:IH},{key:"Ctrl-t",run:LH},{key:"Ctrl-v",run:xf}],UH=[{key:"ArrowLeft",run:LC,shift:$C,preventDefault:!0},{key:"Mod-ArrowLeft",mac:"Alt-ArrowLeft",run:nH,shift:mH,preventDefault:!0},{mac:"Cmd-ArrowLeft",run:uH,shift:CH,preventDefault:!0},{key:"ArrowRight",run:AC,shift:WC,preventDefault:!0},{key:"Mod-ArrowRight",mac:"Alt-ArrowRight",run:oH,shift:gH,preventDefault:!0},{mac:"Cmd-ArrowRight",run:cH,shift:SH,preventDefault:!0},{key:"ArrowUp",run:HC,shift:UC,preventDefault:!0},{mac:"Cmd-ArrowUp",run:CC,shift:wC},{mac:"Ctrl-ArrowUp",run:yC,shift:xC},{key:"ArrowDown",run:FC,shift:GC,preventDefault:!0},{mac:"Cmd-ArrowDown",run:SC,shift:TC},{mac:"Ctrl-ArrowDown",run:xf,shift:vC},{key:"PageUp",run:yC,shift:xC},{key:"PageDown",run:xf,shift:vC},{key:"Home",run:aH,shift:vH,preventDefault:!0},{key:"Mod-Home",run:CC,shift:wC},{key:"End",run:lH,shift:xH,preventDefault:!0},{key:"Mod-End",run:SC,shift:TC},{key:"Enter",run:BH},{key:"Mod-a",run:EH},{key:"Backspace",run:vf,shift:vf},{key:"Delete",run:jC},{key:"Mod-Backspace",mac:"Alt-Backspace",run:XC},{key:"Mod-Delete",mac:"Alt-Delete",run:PH},{mac:"Mod-Backspace",run:kH},{mac:"Mod-Delete",run:YC}].concat(KH.map(o=>({mac:o.key,run:o.run,shift:o.shift}))),Hi=[{key:"Alt-ArrowLeft",mac:"Ctrl-ArrowLeft",run:sH,shift:bH},{key:"Alt-ArrowRight",mac:"Ctrl-ArrowRight",run:iH,shift:yH},{key:"Alt-ArrowUp",run:AH},{key:"Shift-Alt-ArrowUp",run:NH},{key:"Alt-ArrowDown",run:OH},{key:"Shift-Alt-ArrowDown",run:HH},{key:"Escape",run:DH},{key:"Mod-Enter",run:zH},{key:"Alt-l",mac:"Ctrl-l",run:MH},{key:"Mod-i",run:RH,preventDefault:!0},{key:"Mod-[",run:_H},{key:"Mod-]",run:WH},{key:"Mod-Alt-\\",run:$H},{key:"Shift-Mod-k",run:FH},{key:"Shift-Mod-\\",run:hH},{key:"Mod-/",run:VN},{key:"Alt-A",run:zN}].concat(UH);var GH=[...Hi,...Tf],nS=(()=>[jp(),wf(),Qp(),hf(),cr(df,{fallback:!0}),ir.of(GH)])();import{isNumericColumn as Wpe}from"@vuu-ui/vuu-utils";var oS=[{label:"=",boost:10,type:"operator"},{label:"!=",boost:9,type:"operator"}],rS=[...oS,{label:"in",boost:6,type:"operator"},{label:"starts",boost:5,type:"operator"},{label:"ends",boost:4,type:"operator"}],sS=[...oS,{label:">",boost:8,type:"operator"},{label:"<",boost:7,type:"operator"}];import{createEl as qfe}from"@vuu-ui/vuu-utils";import{useEffect as Jfe,useMemo as Xfe,useRef as Yfe}from"react";var gs=class{constructor(e,t,n,r,s,i,l,a,u,c=0,d){this.p=e,this.stack=t,this.state=n,this.reducePos=r,this.pos=s,this.score=i,this.buffer=l,this.bufferBase=a,this.curContext=u,this.lookAhead=c,this.parent=d}toString(){return`[${this.stack.filter((e,t)=>t%3==0).concat(this.state)}]@${this.pos}${this.score?"!"+this.score:""}`}static start(e,t,n=0){let r=e.parser.context;return new gs(e,[],t,n,n,0,[],0,r?new du(r,r.start):null,0,null)}get context(){return this.curContext?this.curContext.context:null}pushState(e,t){this.stack.push(this.state,t,this.bufferBase+this.buffer.length),this.state=e}reduce(e){var t;let n=e>>19,r=e&65535,{parser:s}=this.p,i=s.dynamicPrecedence(r);if(i&&(this.score+=i),n==0){this.pushState(s.getGoto(this.state,r,!0),this.reducePos),r<s.minRepeatTerm&&this.storeNode(r,this.reducePos,this.reducePos,4,!0),this.reduceContext(r,this.reducePos);return}let l=this.stack.length-(n-1)*3-(e&262144?6:0),a=l?this.stack[l-2]:this.p.ranges[0].from,u=this.reducePos-a;u>=2e3&&!(!((t=this.p.parser.nodeSet.types[r])===null||t===void 0)&&t.isAnonymous)&&(a==this.p.lastBigReductionStart?(this.p.bigReductionCount++,this.p.lastBigReductionSize=u):this.p.lastBigReductionSize<u&&(this.p.bigReductionCount=1,this.p.lastBigReductionStart=a,this.p.lastBigReductionSize=u));let c=l?this.stack[l-1]:0,d=this.bufferBase+this.buffer.length-c;if(r<s.minRepeatTerm||e&131072){let p=s.stateFlag(this.state,1)?this.pos:this.reducePos;this.storeNode(r,a,p,d+4,!0)}if(e&262144)this.state=this.stack[l];else{let p=this.stack[l-3];this.state=s.getGoto(p,r,!0)}for(;this.stack.length>l;)this.stack.pop();this.reduceContext(r,a)}storeNode(e,t,n,r=4,s=!1){if(e==0&&(!this.stack.length||this.stack[this.stack.length-1]<this.buffer.length+this.bufferBase)){let i=this,l=this.buffer.length;if(l==0&&i.parent&&(l=i.bufferBase-i.parent.bufferBase,i=i.parent),l>0&&i.buffer[l-4]==0&&i.buffer[l-1]>-1){if(t==n)return;if(i.buffer[l-2]>=t){i.buffer[l-2]=n;return}}}if(!s||this.pos==n)this.buffer.push(e,t,n,r);else{let i=this.buffer.length;if(i>0&&this.buffer[i-4]!=0)for(;i>0&&this.buffer[i-2]>n;)this.buffer[i]=this.buffer[i-4],this.buffer[i+1]=this.buffer[i-3],this.buffer[i+2]=this.buffer[i-2],this.buffer[i+3]=this.buffer[i-1],i-=4,r>4&&(r-=4);this.buffer[i]=e,this.buffer[i+1]=t,this.buffer[i+2]=n,this.buffer[i+3]=r}}shift(e,t,n){let r=this.pos;if(e&131072)this.pushState(e&65535,this.pos);else if(e&262144)this.pos=n,this.shiftContext(t,r),t<=this.p.parser.maxNode&&this.buffer.push(t,r,n,4);else{let s=e,{parser:i}=this.p;(n>this.pos||t<=i.maxNode)&&(this.pos=n,i.stateFlag(s,1)||(this.reducePos=n)),this.pushState(s,r),this.shiftContext(t,r),t<=i.maxNode&&this.buffer.push(t,r,n,4)}}apply(e,t,n){e&65536?this.reduce(e):this.shift(e,t,n)}useNode(e,t){let n=this.p.reused.length-1;(n<0||this.p.reused[n]!=e)&&(this.p.reused.push(e),n++);let r=this.pos;this.reducePos=this.pos=r+e.length,this.pushState(t,r),this.buffer.push(n,r,this.reducePos,-1),this.curContext&&this.updateContext(this.curContext.tracker.reuse(this.curContext.context,e,this,this.p.stream.reset(this.pos-e.length)))}split(){let e=this,t=e.buffer.length;for(;t>0&&e.buffer[t-2]>e.reducePos;)t-=4;let n=e.buffer.slice(t),r=e.bufferBase+t;for(;e&&r==e.bufferBase;)e=e.parent;return new gs(this.p,this.stack.slice(),this.state,this.reducePos,this.pos,this.score,n,r,this.curContext,this.lookAhead,e)}recoverByDelete(e,t){let n=e<=this.p.parser.maxNode;n&&this.storeNode(e,this.pos,t,4),this.storeNode(0,this.pos,t,n?8:4),this.pos=this.reducePos=t,this.score-=190}canShift(e){for(let t=new Rf(this);;){let n=this.p.parser.stateSlot(t.state,4)||this.p.parser.hasAction(t.state,e);if(n==0)return!1;if(!(n&65536))return!0;t.reduce(n)}}recoverByInsert(e){if(this.stack.length>=300)return[];let t=this.p.parser.nextStates(this.state);if(t.length>4<<1||this.stack.length>=120){let r=[];for(let s=0,i;s<t.length;s+=2)(i=t[s+1])!=this.state&&this.p.parser.hasAction(i,e)&&r.push(t[s],i);if(this.stack.length<120)for(let s=0;r.length<4<<1&&s<t.length;s+=2){let i=t[s+1];r.some((l,a)=>a&1&&l==i)||r.push(t[s],i)}t=r}let n=[];for(let r=0;r<t.length&&n.length<4;r+=2){let s=t[r+1];if(s==this.state)continue;let i=this.split();i.pushState(s,this.pos),i.storeNode(0,i.pos,i.pos,4,!0),i.shiftContext(t[r],this.pos),i.score-=200,n.push(i)}return n}forceReduce(){let e=this.p.parser.stateSlot(this.state,5);if(!(e&65536))return!1;let{parser:t}=this.p;if(!t.validAction(this.state,e)){let n=e>>19,r=e&65535,s=this.stack.length-n*3;if(s<0||t.getGoto(this.stack[s],r,!1)<0)return!1;this.storeNode(0,this.reducePos,this.reducePos,4,!0),this.score-=100}return this.reducePos=this.pos,this.reduce(e),!0}forceAll(){for(;!this.p.parser.stateFlag(this.state,2);)if(!this.forceReduce()){this.storeNode(0,this.pos,this.pos,4,!0);break}return this}get deadEnd(){if(this.stack.length!=3)return!1;let{parser:e}=this.p;return e.data[e.stateSlot(this.state,1)]==65535&&!e.stateSlot(this.state,4)}restart(){this.state=this.stack[0],this.stack.length=0}sameState(e){if(this.state!=e.state||this.stack.length!=e.stack.length)return!1;for(let t=0;t<this.stack.length;t+=3)if(this.stack[t]!=e.stack[t])return!1;return!0}get parser(){return this.p.parser}dialectEnabled(e){return this.p.parser.dialect.flags[e]}shiftContext(e,t){this.curContext&&this.updateContext(this.curContext.tracker.shift(this.curContext.context,e,this,this.p.stream.reset(t)))}reduceContext(e,t){this.curContext&&this.updateContext(this.curContext.tracker.reduce(this.curContext.context,e,this,this.p.stream.reset(t)))}emitContext(){let e=this.buffer.length-1;(e<0||this.buffer[e]!=-3)&&this.buffer.push(this.curContext.hash,this.reducePos,this.reducePos,-3)}emitLookAhead(){let e=this.buffer.length-1;(e<0||this.buffer[e]!=-4)&&this.buffer.push(this.lookAhead,this.reducePos,this.reducePos,-4)}updateContext(e){if(e!=this.curContext.context){let t=new du(this.curContext.tracker,e);t.hash!=this.curContext.hash&&this.emitContext(),this.curContext=t}}setLookAhead(e){e>this.lookAhead&&(this.emitLookAhead(),this.lookAhead=e)}close(){this.curContext&&this.curContext.tracker.strict&&this.emitContext(),this.lookAhead>0&&this.emitLookAhead()}},du=class{constructor(e,t){this.tracker=e,this.context=t,this.hash=e.strict?e.hash(t):0}},cS;(function(o){o[o.Insert=200]="Insert",o[o.Delete=190]="Delete",o[o.Reduce=100]="Reduce",o[o.MaxNext=4]="MaxNext",o[o.MaxInsertStackDepth=300]="MaxInsertStackDepth",o[o.DampenInsertStackDepth=120]="DampenInsertStackDepth",o[o.MinBigReduction=2e3]="MinBigReduction"})(cS||(cS={}));var Rf=class{constructor(e){this.start=e,this.state=e.state,this.stack=e.stack,this.base=this.stack.length}reduce(e){let t=e&65535,n=e>>19;n==0?(this.stack==this.start.stack&&(this.stack=this.stack.slice()),this.stack.push(this.state,0,0),this.base+=3):this.base-=(n-1)*3;let r=this.start.p.parser.getGoto(this.stack[this.base-3],t,!0);this.state=r}},bs=class{constructor(e,t,n){this.stack=e,this.pos=t,this.index=n,this.buffer=e.buffer,this.index==0&&this.maybeNext()}static create(e,t=e.bufferBase+e.buffer.length){return new bs(e,t,t-e.bufferBase)}maybeNext(){let e=this.stack.parent;e!=null&&(this.index=this.stack.bufferBase-e.bufferBase,this.stack=e,this.buffer=e.buffer)}get id(){return this.buffer[this.index-4]}get start(){return this.buffer[this.index-3]}get end(){return this.buffer[this.index-2]}get size(){return this.buffer[this.index-1]}next(){this.index-=4,this.pos-=4,this.index==0&&this.maybeNext()}fork(){return new bs(this.stack,this.pos,this.index)}};function Fi(o,e=Uint16Array){if(typeof o!="string")return o;let t=null;for(let n=0,r=0;n<o.length;){let s=0;for(;;){let i=o.charCodeAt(n++),l=!1;if(i==126){s=65535;break}i>=92&&i--,i>=34&&i--;let a=i-32;if(a>=46&&(a-=46,l=!0),s+=a,l)break;s*=46}t?t[r++]=s:t=new e(s)}return t}var ms=class{constructor(){this.start=-1,this.value=-1,this.end=-1,this.extended=-1,this.lookAhead=0,this.mask=0,this.context=0}},dS=new ms,Df=class{constructor(e,t){this.input=e,this.ranges=t,this.chunk="",this.chunkOff=0,this.chunk2="",this.chunk2Pos=0,this.next=-1,this.token=dS,this.rangeIndex=0,this.pos=this.chunkPos=t[0].from,this.range=t[0],this.end=t[t.length-1].to,this.readNext()}resolveOffset(e,t){let n=this.range,r=this.rangeIndex,s=this.pos+e;for(;s<n.from;){if(!r)return null;let i=this.ranges[--r];s-=n.from-i.to,n=i}for(;t<0?s>n.to:s>=n.to;){if(r==this.ranges.length-1)return null;let i=this.ranges[++r];s+=i.from-n.to,n=i}return s}clipPos(e){if(e>=this.range.from&&e<this.range.to)return e;for(let t of this.ranges)if(t.to>e)return Math.max(e,t.from);return this.end}peek(e){let t=this.chunkOff+e,n,r;if(t>=0&&t<this.chunk.length)n=this.pos+e,r=this.chunk.charCodeAt(t);else{let s=this.resolveOffset(e,1);if(s==null)return-1;if(n=s,n>=this.chunk2Pos&&n<this.chunk2Pos+this.chunk2.length)r=this.chunk2.charCodeAt(n-this.chunk2Pos);else{let i=this.rangeIndex,l=this.range;for(;l.to<=n;)l=this.ranges[++i];this.chunk2=this.input.chunk(this.chunk2Pos=n),n+this.chunk2.length>l.to&&(this.chunk2=this.chunk2.slice(0,l.to-n)),r=this.chunk2.charCodeAt(0)}}return n>=this.token.lookAhead&&(this.token.lookAhead=n+1),r}acceptToken(e,t=0){let n=t?this.resolveOffset(t,-1):this.pos;if(n==null||n<this.token.start)throw new RangeError("Token end out of bounds");this.token.value=e,this.token.end=n}getChunk(){if(this.pos>=this.chunk2Pos&&this.pos<this.chunk2Pos+this.chunk2.length){let{chunk:e,chunkPos:t}=this;this.chunk=this.chunk2,this.chunkPos=this.chunk2Pos,this.chunk2=e,this.chunk2Pos=t,this.chunkOff=this.pos-this.chunkPos}else{this.chunk2=this.chunk,this.chunk2Pos=this.chunkPos;let e=this.input.chunk(this.pos),t=this.pos+e.length;this.chunk=t>this.range.to?e.slice(0,this.range.to-this.pos):e,this.chunkPos=this.pos,this.chunkOff=0}}readNext(){return this.chunkOff>=this.chunk.length&&(this.getChunk(),this.chunkOff==this.chunk.length)?this.next=-1:this.next=this.chunk.charCodeAt(this.chunkOff)}advance(e=1){for(this.chunkOff+=e;this.pos+e>=this.range.to;){if(this.rangeIndex==this.ranges.length-1)return this.setDone();e-=this.range.to-this.pos,this.range=this.ranges[++this.rangeIndex],this.pos=this.range.from}return this.pos+=e,this.pos>=this.token.lookAhead&&(this.token.lookAhead=this.pos+1),this.readNext()}setDone(){return this.pos=this.chunkPos=this.end,this.range=this.ranges[this.rangeIndex=this.ranges.length-1],this.chunk="",this.next=-1}reset(e,t){if(t?(this.token=t,t.start=e,t.lookAhead=e+1,t.value=t.extended=-1):this.token=dS,this.pos!=e){if(this.pos=e,e==this.end)return this.setDone(),this;for(;e<this.range.from;)this.range=this.ranges[--this.rangeIndex];for(;e>=this.range.to;)this.range=this.ranges[++this.rangeIndex];e>=this.chunkPos&&e<this.chunkPos+this.chunk.length?this.chunkOff=e-this.chunkPos:(this.chunk="",this.chunkOff=0),this.readNext()}return this}read(e,t){if(e>=this.chunkPos&&t<=this.chunkPos+this.chunk.length)return this.chunk.slice(e-this.chunkPos,t-this.chunkPos);if(e>=this.chunk2Pos&&t<=this.chunk2Pos+this.chunk2.length)return this.chunk2.slice(e-this.chunk2Pos,t-this.chunk2Pos);if(e>=this.range.from&&t<=this.range.to)return this.input.read(e,t);let n="";for(let r of this.ranges){if(r.from>=t)break;r.to>e&&(n+=this.input.read(Math.max(r.from,e),Math.min(r.to,t)))}return n}},So=class{constructor(e,t){this.data=e,this.id=t}token(e,t){let{parser:n}=t.p;yS(this.data,e,t,this.id,n.data,n.tokenPrecTable)}};So.prototype.contextual=So.prototype.fallback=So.prototype.extend=!1;var Pf=class{constructor(e,t,n){this.precTable=t,this.elseToken=n,this.data=typeof e=="string"?Fi(e):e}token(e,t){let n=e.pos,r=0;for(;yS(this.data,e,t,0,this.data,this.precTable),!(e.token.value>-1);){if(this.elseToken==null)return;if(e.next<0)break;e.advance(),e.reset(e.pos,e.token),r++}r&&(e.reset(n,e.token),e.acceptToken(this.elseToken,r))}};Pf.prototype.contextual=So.prototype.fallback=So.prototype.extend=!1;function yS(o,e,t,n,r,s){let i=0,l=1<<n,{dialect:a}=t.p.parser;e:for(;l&o[i];){let u=o[i+1];for(let f=i+3;f<u;f+=2)if((o[f+1]&l)>0){let h=o[f];if(a.allows(h)&&(e.token.value==-1||e.token.value==h||qH(h,e.token.value,r,s))){e.acceptToken(h);break}}let c=e.next,d=0,p=o[i+2];if(e.next<0&&p>d&&o[u+p*3-3]==65535&&o[u+p*3-3]==65535){i=o[u+p*3-1];continue e}for(;d<p;){let f=d+p>>1,h=u+f+(f<<1),g=o[h],m=o[h+1]||65536;if(c<g)p=f;else if(c>=m)d=f+1;else{i=o[h+2],e.advance();continue e}}break}}function pS(o,e,t){for(let n=e,r;(r=o[n])!=65535;n++)if(r==t)return n-e;return-1}function qH(o,e,t,n){let r=pS(t,n,e);return r<0||pS(t,n,o)<r}var fn=typeof process<"u"&&process.env&&/\bparse\b/.test(process.env.LOG),Mf=null,fS;(function(o){o[o.Margin=25]="Margin"})(fS||(fS={}));function hS(o,e,t){let n=o.cursor(We.IncludeAnonymous);for(n.moveTo(e);;)if(!(t<0?n.childBefore(e):n.childAfter(e)))for(;;){if((t<0?n.to<e:n.from>e)&&!n.type.isError)return t<0?Math.max(0,Math.min(n.to-1,e-25)):Math.min(o.length,Math.max(n.from+1,e+25));if(t<0?n.prevSibling():n.nextSibling())break;if(!n.parent())return t<0?0:o.length}}var kf=class{constructor(e,t){this.fragments=e,this.nodeSet=t,this.i=0,this.fragment=null,this.safeFrom=-1,this.safeTo=-1,this.trees=[],this.start=[],this.index=[],this.nextFragment()}nextFragment(){let e=this.fragment=this.i==this.fragments.length?null:this.fragments[this.i++];if(e){for(this.safeFrom=e.openStart?hS(e.tree,e.from+e.offset,1)-e.offset:e.from,this.safeTo=e.openEnd?hS(e.tree,e.to+e.offset,-1)-e.offset:e.to;this.trees.length;)this.trees.pop(),this.start.pop(),this.index.pop();this.trees.push(e.tree),this.start.push(-e.offset),this.index.push(0),this.nextStart=this.safeFrom}else this.nextStart=1e9}nodeAt(e){if(e<this.nextStart)return null;for(;this.fragment&&this.safeTo<=e;)this.nextFragment();if(!this.fragment)return null;for(;;){let t=this.trees.length-1;if(t<0)return this.nextFragment(),null;let n=this.trees[t],r=this.index[t];if(r==n.children.length){this.trees.pop(),this.start.pop(),this.index.pop();continue}let s=n.children[r],i=this.start[t]+n.positions[r];if(i>e)return this.nextStart=i,null;if(s instanceof ye){if(i==e){if(i<this.safeFrom)return null;let l=i+s.length;if(l<=this.safeTo){let a=s.prop(ie.lookAhead);if(!a||l+a<this.fragment.to)return s}}this.index[t]++,i+s.length>=Math.max(this.safeFrom,e)&&(this.trees.push(s),this.start.push(i),this.index.push(0))}else this.index[t]++,this.nextStart=i+s.length}}},If=class{constructor(e,t){this.stream=t,this.tokens=[],this.mainToken=null,this.actions=[],this.tokens=e.tokenizers.map(n=>new ms)}getActions(e){let t=0,n=null,{parser:r}=e.p,{tokenizers:s}=r,i=r.stateSlot(e.state,3),l=e.curContext?e.curContext.hash:0,a=0;for(let u=0;u<s.length;u++){if(!(1<<u&i))continue;let c=s[u],d=this.tokens[u];if(!(n&&!c.fallback)&&((c.contextual||d.start!=e.pos||d.mask!=i||d.context!=l)&&(this.updateCachedToken(d,c,e),d.mask=i,d.context=l),d.lookAhead>d.end+25&&(a=Math.max(d.lookAhead,a)),d.value!=0)){let p=t;if(d.extended>-1&&(t=this.addActions(e,d.extended,d.end,t)),t=this.addActions(e,d.value,d.end,t),!c.extend&&(n=d,t>p))break}}for(;this.actions.length>t;)this.actions.pop();return a&&e.setLookAhead(a),!n&&e.pos==this.stream.end&&(n=new ms,n.value=e.p.parser.eofTerm,n.start=n.end=e.pos,t=this.addActions(e,n.value,n.end,t)),this.mainToken=n,this.actions}getMainToken(e){if(this.mainToken)return this.mainToken;let t=new ms,{pos:n,p:r}=e;return t.start=n,t.end=Math.min(n+1,r.stream.end),t.value=n==r.stream.end?r.parser.eofTerm:0,t}updateCachedToken(e,t,n){let r=this.stream.clipPos(n.pos);if(t.token(this.stream.reset(r,e),n),e.value>-1){let{parser:s}=n.p;for(let i=0;i<s.specialized.length;i++)if(s.specialized[i]==e.value){let l=s.specializers[i](this.stream.read(e.start,e.end),n);if(l>=0&&n.p.parser.dialect.allows(l>>1)){l&1?e.extended=l>>1:e.value=l>>1;break}}}else e.value=0,e.end=this.stream.clipPos(r+1)}putAction(e,t,n,r){for(let s=0;s<r;s+=3)if(this.actions[s]==e)return r;return this.actions[r++]=e,this.actions[r++]=t,this.actions[r++]=n,r}addActions(e,t,n,r){let{state:s}=e,{parser:i}=e.p,{data:l}=i;for(let a=0;a<2;a++)for(let u=i.stateSlot(s,a?2:1);;u+=3){if(l[u]==65535)if(l[u+1]==1)u=Xn(l,u+2);else{r==0&&l[u+1]==2&&(r=this.putAction(Xn(l,u+2),t,n,r));break}l[u]==t&&(r=this.putAction(Xn(l,u+1),t,n,r))}return r}},mS;(function(o){o[o.Distance=5]="Distance",o[o.MaxRemainingPerStep=3]="MaxRemainingPerStep",o[o.MinBufferLengthPrune=500]="MinBufferLengthPrune",o[o.ForceReduceLimit=10]="ForceReduceLimit",o[o.CutDepth=15e3]="CutDepth",o[o.CutTo=9e3]="CutTo",o[o.MaxLeftAssociativeReductionCount=300]="MaxLeftAssociativeReductionCount",o[o.MaxStackCount=12]="MaxStackCount"})(mS||(mS={}));var Lf=class{constructor(e,t,n,r){this.parser=e,this.input=t,this.ranges=r,this.recovering=0,this.nextStackID=9812,this.minStackPos=0,this.reused=[],this.stoppedAt=null,this.lastBigReductionStart=-1,this.lastBigReductionSize=0,this.bigReductionCount=0,this.stream=new Df(t,r),this.tokens=new If(e,this.stream),this.topTerm=e.top[1];let{from:s}=r[0];this.stacks=[gs.start(this,e.top[0],s)],this.fragments=n.length&&this.stream.end-s>e.bufferLength*4?new kf(n,e.nodeSet):null}get parsedPos(){return this.minStackPos}advance(){let e=this.stacks,t=this.minStackPos,n=this.stacks=[],r,s;if(this.bigReductionCount>300&&e.length==1){let[i]=e;for(;i.forceReduce()&&i.stack.length&&i.stack[i.stack.length-2]>=this.lastBigReductionStart;);this.bigReductionCount=this.lastBigReductionSize=0}for(let i=0;i<e.length;i++){let l=e[i];for(;;){if(this.tokens.mainToken=null,l.pos>t)n.push(l);else{if(this.advanceStack(l,n,e))continue;{r||(r=[],s=[]),r.push(l);let a=this.tokens.getMainToken(l);s.push(a.value,a.end)}}break}}if(!n.length){let i=r&&QH(r);if(i)return this.stackToTree(i);if(this.parser.strict)throw fn&&r&&console.log("Stuck with token "+(this.tokens.mainToken?this.parser.getName(this.tokens.mainToken.value):"none")),new SyntaxError("No parse at "+t);this.recovering||(this.recovering=5)}if(this.recovering&&r){let i=this.stoppedAt!=null&&r[0].pos>this.stoppedAt?r[0]:this.runRecovery(r,s,n);if(i)return this.stackToTree(i.forceAll())}if(this.recovering){let i=this.recovering==1?1:this.recovering*3;if(n.length>i)for(n.sort((l,a)=>a.score-l.score);n.length>i;)n.pop();n.some(l=>l.reducePos>t)&&this.recovering--}else if(n.length>1){e:for(let i=0;i<n.length-1;i++){let l=n[i];for(let a=i+1;a<n.length;a++){let u=n[a];if(l.sameState(u)||l.buffer.length>500&&u.buffer.length>500)if((l.score-u.score||l.buffer.length-u.buffer.length)>0)n.splice(a--,1);else{n.splice(i--,1);continue e}}}n.length>12&&n.splice(12,n.length-12)}this.minStackPos=n[0].pos;for(let i=1;i<n.length;i++)n[i].pos<this.minStackPos&&(this.minStackPos=n[i].pos);return null}stopAt(e){if(this.stoppedAt!=null&&this.stoppedAt<e)throw new RangeError("Can't move stoppedAt forward");this.stoppedAt=e}advanceStack(e,t,n){let r=e.pos,{parser:s}=this,i=fn?this.stackID(e)+" -> ":"";if(this.stoppedAt!=null&&r>this.stoppedAt)return e.forceReduce()?e:null;if(this.fragments){let u=e.curContext&&e.curContext.tracker.strict,c=u?e.curContext.hash:0;for(let d=this.fragments.nodeAt(r);d;){let p=this.parser.nodeSet.types[d.type.id]==d.type?s.getGoto(e.state,d.type.id):-1;if(p>-1&&d.length&&(!u||(d.prop(ie.contextHash)||0)==c))return e.useNode(d,p),fn&&console.log(i+this.stackID(e)+` (via reuse of ${s.getName(d.type.id)})`),!0;if(!(d instanceof ye)||d.children.length==0||d.positions[0]>0)break;let f=d.children[0];if(f instanceof ye&&d.positions[0]==0)d=f;else break}}let l=s.stateSlot(e.state,4);if(l>0)return e.reduce(l),fn&&console.log(i+this.stackID(e)+` (via always-reduce ${s.getName(l&65535)})`),!0;if(e.stack.length>=15e3)for(;e.stack.length>9e3&&e.forceReduce(););let a=this.tokens.getActions(e);for(let u=0;u<a.length;){let c=a[u++],d=a[u++],p=a[u++],f=u==a.length||!n,h=f?e:e.split();if(h.apply(c,d,p),fn&&console.log(i+this.stackID(h)+` (via ${c&65536?`reduce of ${s.getName(c&65535)}`:"shift"} for ${s.getName(d)} @ ${r}${h==e?"":", split"})`),f)return!0;h.pos>r?t.push(h):n.push(h)}return!1}advanceFully(e,t){let n=e.pos;for(;;){if(!this.advanceStack(e,null,null))return!1;if(e.pos>n)return gS(e,t),!0}}runRecovery(e,t,n){let r=null,s=!1;for(let i=0;i<e.length;i++){let l=e[i],a=t[i<<1],u=t[(i<<1)+1],c=fn?this.stackID(l)+" -> ":"";if(l.deadEnd&&(s||(s=!0,l.restart(),fn&&console.log(c+this.stackID(l)+" (restarted)"),this.advanceFully(l,n))))continue;let d=l.split(),p=c;for(let f=0;d.forceReduce()&&f<10&&(fn&&console.log(p+this.stackID(d)+" (via force-reduce)"),!this.advanceFully(d,n));f++)fn&&(p=this.stackID(d)+" -> ");for(let f of l.recoverByInsert(a))fn&&console.log(c+this.stackID(f)+" (via recover-insert)"),this.advanceFully(f,n);this.stream.end>l.pos?(u==l.pos&&(u++,a=0),l.recoverByDelete(a,u),fn&&console.log(c+this.stackID(l)+` (via recover-delete ${this.parser.getName(a)})`),gS(l,n)):(!r||r.score<l.score)&&(r=l)}return r}stackToTree(e){return e.close(),ye.build({buffer:bs.create(e),nodeSet:this.parser.nodeSet,topID:this.topTerm,maxBufferLength:this.parser.bufferLength,reused:this.reused,start:this.ranges[0].from,length:e.pos-this.ranges[0].from,minRepeatType:this.parser.minRepeatTerm})}stackID(e){let t=(Mf||(Mf=new WeakMap)).get(e);return t||Mf.set(e,t=String.fromCodePoint(this.nextStackID++)),t+e}};function gS(o,e){for(let t=0;t<e.length;t++){let n=e[t];if(n.pos==o.pos&&n.sameState(o)){e[t].score<o.score&&(e[t]=o);return}}e.push(o)}var Af=class{constructor(e,t,n){this.source=e,this.flags=t,this.disabled=n}allows(e){return!this.disabled||this.disabled[e]==0}};var fr=class extends ro{constructor(e){if(super(),this.wrappers=[],e.version!=14)throw new RangeError(`Parser version (${e.version}) doesn't match runtime version (14)`);let t=e.nodeNames.split(" ");this.minRepeatTerm=t.length;for(let l=0;l<e.repeatNodeCount;l++)t.push("");let n=Object.keys(e.topRules).map(l=>e.topRules[l][1]),r=[];for(let l=0;l<t.length;l++)r.push([]);function s(l,a,u){r[l].push([a,a.deserialize(String(u))])}if(e.nodeProps)for(let l of e.nodeProps){let a=l[0];typeof a=="string"&&(a=ie[a]);for(let u=1;u<l.length;){let c=l[u++];if(c>=0)s(c,a,l[u++]);else{let d=l[u+-c];for(let p=-c;p>0;p--)s(l[u++],a,d);u++}}}this.nodeSet=new zn(t.map((l,a)=>Ge.define({name:a>=this.minRepeatTerm?void 0:l,id:a,props:r[a],top:n.indexOf(a)>-1,error:a==0,skipped:e.skippedNodes&&e.skippedNodes.indexOf(a)>-1}))),e.propSources&&(this.nodeSet=this.nodeSet.extend(...e.propSources)),this.strict=!1,this.bufferLength=1024;let i=Fi(e.tokenData);this.context=e.context,this.specializerSpecs=e.specialized||[],this.specialized=new Uint16Array(this.specializerSpecs.length);for(let l=0;l<this.specializerSpecs.length;l++)this.specialized[l]=this.specializerSpecs[l].term;this.specializers=this.specializerSpecs.map(bS),this.states=Fi(e.states,Uint32Array),this.data=Fi(e.stateData),this.goto=Fi(e.goto),this.maxTerm=e.maxTerm,this.tokenizers=e.tokenizers.map(l=>typeof l=="number"?new So(i,l):l),this.topRules=e.topRules,this.dialects=e.dialects||{},this.dynamicPrecedences=e.dynamicPrecedences||null,this.tokenPrecTable=e.tokenPrec,this.termNames=e.termNames||null,this.maxNode=this.nodeSet.types.length-1,this.dialect=this.parseDialect(),this.top=this.topRules[Object.keys(this.topRules)[0]]}createParse(e,t,n){let r=new Lf(this,e,t,n);for(let s of this.wrappers)r=s(r,e,t,n);return r}getGoto(e,t,n=!1){let r=this.goto;if(t>=r[0])return-1;for(let s=r[t+1];;){let i=r[s++],l=i&1,a=r[s++];if(l&&n)return a;for(let u=s+(i>>1);s<u;s++)if(r[s]==e)return a;if(l)return-1}}hasAction(e,t){let n=this.data;for(let r=0;r<2;r++)for(let s=this.stateSlot(e,r?2:1),i;;s+=3){if((i=n[s])==65535)if(n[s+1]==1)i=n[s=Xn(n,s+2)];else{if(n[s+1]==2)return Xn(n,s+2);break}if(i==t||i==0)return Xn(n,s+1)}return 0}stateSlot(e,t){return this.states[e*6+t]}stateFlag(e,t){return(this.stateSlot(e,0)&t)>0}validAction(e,t){if(t==this.stateSlot(e,4))return!0;for(let n=this.stateSlot(e,1);;n+=3){if(this.data[n]==65535)if(this.data[n+1]==1)n=Xn(this.data,n+2);else return!1;if(t==Xn(this.data,n+1))return!0}}nextStates(e){let t=[];for(let n=this.stateSlot(e,1);;n+=3){if(this.data[n]==65535)if(this.data[n+1]==1)n=Xn(this.data,n+2);else break;if(!(this.data[n+2]&1)){let r=this.data[n+1];t.some((s,i)=>i&1&&s==r)||t.push(this.data[n],r)}}return t}configure(e){let t=Object.assign(Object.create(fr.prototype),this);if(e.props&&(t.nodeSet=this.nodeSet.extend(...e.props)),e.top){let n=this.topRules[e.top];if(!n)throw new RangeError(`Invalid top rule name ${e.top}`);t.top=n}return e.tokenizers&&(t.tokenizers=this.tokenizers.map(n=>{let r=e.tokenizers.find(s=>s.from==n);return r?r.to:n})),e.specializers&&(t.specializers=this.specializers.slice(),t.specializerSpecs=this.specializerSpecs.map((n,r)=>{let s=e.specializers.find(l=>l.from==n.external);if(!s)return n;let i=Object.assign(Object.assign({},n),{external:s.to});return t.specializers[r]=bS(i),i})),e.contextTracker&&(t.context=e.contextTracker),e.dialect&&(t.dialect=this.parseDialect(e.dialect)),e.strict!=null&&(t.strict=e.strict),e.wrap&&(t.wrappers=t.wrappers.concat(e.wrap)),e.bufferLength!=null&&(t.bufferLength=e.bufferLength),t}hasWrappers(){return this.wrappers.length>0}getName(e){return this.termNames?this.termNames[e]:String(e<=this.maxNode&&this.nodeSet.types[e].name||e)}get eofTerm(){return this.maxNode+1}get topNode(){return this.nodeSet.types[this.top[1]]}dynamicPrecedence(e){let t=this.dynamicPrecedences;return t==null?0:t[e]||0}parseDialect(e){let t=Object.keys(this.dialects),n=t.map(()=>!1);if(e)for(let s of e.split(" ")){let i=t.indexOf(s);i>=0&&(n[i]=!0)}let r=null;for(let s=0;s<t.length;s++)if(!n[s])for(let i=this.dialects[t[s]],l;(l=this.data[i++])!=65535;)(r||(r=new Uint8Array(this.maxTerm+1)))[l]=1;return new Af(e,n,r)}static deserialize(e){return new fr(e)}};function Xn(o,e){return o[e]|o[e+1]<<16}function QH(o){let e=null;for(let t of o){let n=t.p.stoppedAt;(t.pos==t.p.stream.end||n!=null&&t.pos>n)&&t.p.parser.stateFlag(t.state,2)&&(!e||e.score<t.score)&&(e=t)}return e}function bS(o){if(o.external){let e=o.extend?1:0;return(t,n)=>o.external(t,n)<<1|e}return o.get}var pu=fr.deserialize({version:14,states:"&fOVQPOOO!SQPO'#C^OVQPO'#CcQ!pQPOOO#OQPO'#CkO#TQPO'#CrOOQO'#Cy'#CyO#YQPO,58}OVQPO,59QOVQPO,59QOVQPO,59VOVQPO'#CtOOQO,59^,59^OOQO1G.i1G.iOOQO1G.l1G.lO#kQPO1G.lO$fQPO'#CmO%WQQO1G.qOOQO'#C{'#C{O%cQPO,59`OOQO'#Cn'#CnO%wQPO,59XOVQPO,59ZOVQPO,59[OVQPO7+$]OVQPO'#CuO&`QPO1G.zOOQO1G.z1G.zO&hQQO'#C^O&rQQO1G.sO'ZQQO1G.uOOQO1G.v1G.vO'fQPO<<GwO'wQPO,59aOOQO-E6s-E6sOOQO7+$f7+$fOVQPOAN=cO(]QQO1G.lO(tQPOG22}OOQOLD(iLD(iO%wQPO,59QO%wQPO,59Q",stateData:")[~OlOS~ORUOSUOTUOUUOWQO`SOnPO~OWgXZQX[QX]QX^QXeQX~OjQXXQXpQXqQXrQXsQXtQXuQX~PnOZWO[WO]XO^XO~OWYO~OWZO~OX]OZWO[WO]XO^XO~OZWO[WO]Yi^YijYiXYipYiqYirYisYitYiuYieYi~OZWO[WO]XO^XOpdOqdOrdOsdOtdOudO~OehOvfOwgO~OXkOZWO[WO]XO^XOeiO~ORUOSUOTUOUUOWQO`SOnlO~OXsOeiO~OvQXwQX~PnOZxO[xO]yO^yOeaivaiwai~OwgOecivci~OZWO[WO]XO^XOetO~OZWO[WO]XO^XOXiaeia~OZxO[xO]Yi^YieYivYiwYi~OXwOZWO[WO]XO^XO~O`UTn~",goto:"#spPPqPPPPqPPqPPPPqP!R!W!R!RPq!Z!k!nPPP!tP#jmUOQWXYZefghitxyVbYfgRe`mTOQWXYZefghitxyR[TQjcRrjQROQVQS^WxQ_XU`YfgQcZQmeQphQqiQuyRvtQaYQnfRog",nodeNames:"\u26A0 ColumnDefinitionExpression Column Number String True False ParenthesizedExpression OpenBrace CloseBrace ArithmeticExpression Divide Times Plus Minus ConditionalExpression If RelationalExpression RelationalOperator AndCondition OrCondition Comma CallExpression Function ArgList",maxTerm:39,skippedNodes:[0],repeatNodeCount:1,tokenData:".^~RnXY#PYZ#P]^#Ppq#Pqr#brs#mxy$eyz$jz{$o{|$t|}$y}!O%O!O!P%T!P!Q%c!Q![%h!^!_%s!_!`&Q!`!a&V!c!}&d#R#S&d#T#U&u#U#Y&d#Y#Z(Y#Z#]&d#]#^*j#^#c&d#c#d+f#d#h&d#h#i,b#i#o&d~#USl~XY#PYZ#P]^#Ppq#P~#eP!_!`#h~#mOu~~#pWOX#mZ]#m^r#mrs$Ys#O#m#P;'S#m;'S;=`$_<%lO#m~$_OS~~$bP;=`<%l#m~$jOW~~$oOX~~$tO[~~$yO]~~%OOe~~%TO^~~%WP!Q![%Z~%`PR~!Q![%Z~%hOZ~~%mQR~!O!P%Z!Q![%h~%xPr~!_!`%{~&QOt~~&VOp~~&[Pq~!_!`&_~&dOs~P&iSnP!Q![&d!c!}&d#R#S&d#T#o&dR&zUnP!Q![&d!c!}&d#R#S&d#T#b&d#b#c'^#c#o&dR'cUnP!Q![&d!c!}&d#R#S&d#T#W&d#W#X'u#X#o&dR'|SvQnP!Q![&d!c!}&d#R#S&d#T#o&d~(_TnP!Q![&d!c!}&d#R#S&d#T#U(n#U#o&d~(sUnP!Q![&d!c!}&d#R#S&d#T#`&d#`#a)V#a#o&d~)[UnP!Q![&d!c!}&d#R#S&d#T#g&d#g#h)n#h#o&d~)sUnP!Q![&d!c!}&d#R#S&d#T#X&d#X#Y*V#Y#o&d~*^SU~nP!Q![&d!c!}&d#R#S&d#T#o&d~*oUnP!Q![&d!c!}&d#R#S&d#T#Y&d#Y#Z+R#Z#o&d~+YS`~nP!Q![&d!c!}&d#R#S&d#T#o&dR+kUnP!Q![&d!c!}&d#R#S&d#T#f&d#f#g+}#g#o&dR,USwQnP!Q![&d!c!}&d#R#S&d#T#o&d~,gUnP!Q![&d!c!}&d#R#S&d#T#f&d#f#g,y#g#o&d~-OUnP!Q![&d!c!}&d#R#S&d#T#i&d#i#j-b#j#o&d~-gUnP!Q![&d!c!}&d#R#S&d#T#X&d#X#Y-y#Y#o&d~.QST~nP!Q![&d!c!}&d#R#S&d#T#o&d",tokenizers:[0,1],topRules:{ColumnDefinitionExpression:[0,1]},tokenPrec:375});var ufe=kn.define({name:"VuuColumnExpression",parser:pu.configure({props:[ar({Function:W.variableName,String:W.string,Or:W.emphasis,Operator:W.operator})]})});var Of=class{constructor(e){switch(this.value=e,typeof e){case"boolean":this.type="booleanLiteralExpression";break;case"number":this.type="numericLiteralExpression";break;default:this.type="stringLiteralExpression"}}toJSON(){return{type:this.type,value:this.value}}},Nf=class{constructor(e){this.type="colExpression";this.column=e}toJSON(){return{type:this.type,column:this.column}}},Bi,mr,xS=class{constructor(e="unknown"){ce(this,Bi,[{type:"unknown"},{type:"unknown"}]);ce(this,mr,void 0);this.type="arithmeticExpression";Y(this,mr,e)}get op(){return R(this,mr)}set op(e){Y(this,mr,e)}get expressions(){return R(this,Bi)}toJSON(){return{type:this.type,op:R(this,mr),expressions:R(this,Bi)}}};Bi=new WeakMap,mr=new WeakMap;var Cs,Hf=class{constructor(e){ce(this,Cs,[]);this.type="callExpression";this.functionName=e}get expressions(){return R(this,Cs)}get arguments(){return R(this,Cs)}toJSON(){return{type:this.type,functionName:this.functionName,arguments:R(this,Cs).map(e=>{var t;return(t=e.toJSON)==null?void 0:t.call(e)})}}};Cs=new WeakMap;var zi,Ss,xs=class{constructor(){ce(this,zi,[{type:"unknown"},{type:"unknown"}]);ce(this,Ss,"unknown");this.type="relationalExpression"}get op(){return R(this,Ss)}set op(e){Y(this,Ss,e)}get expressions(){return R(this,zi)}toJSON(){return{type:this.type,op:R(this,Ss),expressions:R(this,zi)}}};zi=new WeakMap,Ss=new WeakMap;var $i,ws,vs=class{constructor(e){ce(this,$i,[{type:"unknown"},{type:"unknown"}]);ce(this,ws,void 0);this.type="booleanCondition";Y(this,ws,e)}get op(){return R(this,ws)}get expressions(){return R(this,$i)}toJSON(){return{type:this.type,op:R(this,ws),expressions:R(this,$i).map(e=>{var t;return(t=e.toJSON)==null?void 0:t.call(e)})}}};$i=new WeakMap,ws=new WeakMap;var Ln,Vi=class{constructor(e){ce(this,Ln,void 0);this.type="conditionalExpression";Y(this,Ln,[e?new vs(e):new xs,{type:"unknown"},{type:"unknown"}])}get expressions(){return R(this,Ln)}get condition(){return R(this,Ln)[0]}get truthyExpression(){return R(this,Ln)[1]}set truthyExpression(e){R(this,Ln)[1]=e}get falsyExpression(){return R(this,Ln)[2]}set falsyExpression(e){R(this,Ln)[2]=e}toJSON(){var e,t,n,r,s;return{type:this.type,condition:(t=(e=this.condition).toJSON)==null?void 0:t.call(e),truthyExpression:this.truthyExpression,falsyExpression:(s=(r=(n=this.falsyExpression)==null?void 0:n.toJSON)==null?void 0:r.call(n))!=null?s:this.falsyExpression}}};Ln=new WeakMap;var hr=o=>o.type==="unknown",fu=o=>o.type==="arithmeticExpression",jH=o=>o.type==="callExpression",ys=o=>o.type==="conditionalExpression",JH=o=>o.type==="relationalExpression"||o.type==="booleanCondition";var XH=o=>o.type==="booleanCondition",Ff=o=>(o==null?void 0:o.type)==="relationalExpression";var Xt=o=>{if(hr(o))return o;if(Ff(o)){let[e,t]=o.expressions;if(mt(e))return Xt(e);if(o.op==="unknown")return o;if(mt(t))return Xt(t)}else if(JH(o)){let{expressions:e=[]}=o;for(let t of e)if(mt(t))return Xt(t)}else if(ys(o)){let{condition:e,truthyExpression:t,falsyExpression:n}=o;if(mt(e))return Xt(e);if(mt(t))return Xt(t);if(mt(n))return Xt(n)}else if(fu(o)){let{expressions:e=[]}=o;for(let t of e)if(mt(t))return Xt(t)}},hu=(o,e,t)=>{let{expressions:n=[]}=o;if(n.includes(e)){let r=n.indexOf(e);return n.splice(r,1,t),!0}else for(let r of n)if(hu(r,e,t))return!0;return!1},mt=o=>hr(o)?!0:ys(o)?mt(o.condition)||mt(o.truthyExpression)||mt(o.falsyExpression):Ff(o)||XH(o)?o.op===void 0||o.expressions.some(e=>mt(e)):!1,vS=(o,e)=>{let t=Xt(o);t?t.expressions?t.expressions.push(e):console.warn("don't know how to treat targetExpression"):console.error("no target expression found")},ge,gr,CS=class{constructor(){ce(this,ge,void 0);ce(this,gr,[])}setCondition(e){if(R(this,ge)===void 0)this.addExpression(new Vi(e));else if(ys(R(this,ge))){if(mt(R(this,ge).condition)){let t=e?new vs(e):new xs;this.addExpression(t)}else if(hr(R(this,ge).truthyExpression))R(this,ge).truthyExpression=new Vi(e);else if(mt(R(this,ge).truthyExpression)){let t=e?new vs(e):new xs;this.addExpression(t)}else if(hr(R(this,ge).falsyExpression))R(this,ge).falsyExpression=new Vi(e);else if(mt(R(this,ge).falsyExpression)){let t=e?new vs(e):new xs;this.addExpression(t)}}else console.error("setCondition called unexpectedly")}addExpression(e){if(R(this,gr).length>0){let t=R(this,gr).at(-1);t==null||t.arguments.push(e)}else if(R(this,ge)===void 0)Y(this,ge,e);else if(fu(R(this,ge))){let t=Xt(R(this,ge));t&&hr(t)&&hu(R(this,ge),t,e)}else if(ys(R(this,ge))&&mt(R(this,ge))){let t=Xt(R(this,ge));t&&hr(t)?hu(R(this,ge),t,e):t&&vS(t,e)}}setFunction(e){let t=new Hf(e);this.addExpression(t),R(this,gr).push(t)}setColumn(e){this.addExpression(new Nf(e))}setArithmeticOp(e){let t=e,n=R(this,ge);fu(n)&&(n.op=t)}setRelationalOperator(e){let t=e;if(R(this,ge)&&ys(R(this,ge))){let n=Xt(R(this,ge));Ff(n)?n.op=t:console.error(`no target expression found (op = ${e})`)}}setValue(e){let t=new Of(e);if(R(this,ge)===void 0)Y(this,ge,t);else if(fu(R(this,ge)))this.addExpression(t);else if(jH(R(this,ge)))R(this,ge).arguments.push(t);else if(ys(R(this,ge)))if(mt(R(this,ge))){let n=Xt(R(this,ge));n&&hr(n)?hu(R(this,ge),n,t):n&&vS(n,t)}else console.log("what do we do with value, in a complete expression")}closeBrace(){R(this,gr).pop()}get expression(){return R(this,ge)}toJSON(){var e;return(e=R(this,ge))==null?void 0:e.toJSON()}};ge=new WeakMap,gr=new WeakMap;var hfe=pu.configure({strict:!0}),YH=["Number","String"],ZH=[...YH,"AndCondition","ArithmeticExpression","BooleanOperator","RelationalOperatorOperator","CallExpression","CloseBrace","Column","Comma","ConditionalExpression","Divide","Equal","If","Minus","OpenBrace","OrCondition","ParenthesizedExpression","Plus","RelationalExpression","RelationalOperator","Times"];var eF=dn.define([{tag:W.variableName,color:"var(--vuuFilterEditor-variableColor)"},{tag:W.comment,color:"green",fontStyle:"italic"}]),tF=cr(eF);var nF=le.theme({"&":{border:"solid 1px var(--salt-container-primary-borderColor)",color:"var(--vuuFilterEditor-color)",backgroundColor:"var(--vuuFilterEditor-background)"},".cm-content":{caretColor:"var(--vuuFilterEditor-cursorColor)"},"&.cm-focused .cm-cursor":{borderLeftColor:"var(--vuuFilterEditor-cursorColor)"},"&.cm-focused .cm-selectionBackground, ::selection":{backgroundColor:"var(--vuuFilterEditor-selectionBackground)"},".cm-selectionBackground, ::selection":{backgroundColor:"var(--vuuFilterEditor-selectionBackground)"},".cm-scroller":{fontFamily:"var(--vuuFilterEditor-fontFamily)"},".cm-tooltip":{background:"var(--vuuFilterEditor-tooltipBackground)",border:"var(--vuuFilterEditor-tooltipBorder)",boxShadow:"var(--vuuFilterEditor-tooltipElevation)","&.cm-tooltip-autocomplete > ul":{fontFamily:"var(--vuuFilterEditor-fontFamily)",fontSize:"var(--vuuFilterEditor-fontSize)",maxHeight:"240px"},"&.cm-tooltip-autocomplete > ul > li":{height:"var(--vuuFilterEditor-suggestion-height)",padding:"0 3px",lineHeight:"var(--vuuFilterEditor-suggestion-height)"},"&.cm-tooltip-autocomplete li[aria-selected]":{background:"var(--vuuFilterEditor-suggestion-selectedBackground)",color:"var(--vuuFilterEditor-suggestion-selectedColor)"},"&.cm-tooltip-autocomplete li .cm-completionDetail":{color:"var(--vuuFilterEditor-suggestion-detailColor)"}}},{dark:!1});import{useCallback as Ffe}from"react";import{jsx as hhe}from"react/jsx-runtime";import{isNumericColumn as Ehe,isTextColumn as Mhe}from"@vuu-ui/vuu-utils";import{useCallback as Dhe,useRef as Phe}from"react";var SS=[{accepts:"string",description:"Returns multiple string values as a single joined string. Arguments may be string literal values, string columns or other string expressions. Non string arguments may also be included, these will be converted to strings.",example:{expression:'concatenate("example", "-test")',result:'"example-test"'},name:"concatenate",params:{description:"( string, string, [ string* ] )"},type:"string"},{accepts:["string","string"],description:"Tests a string value to determine whether it contains a given substring. Accepts two arguments: source text and target substring. Returns true if <source text> contains one or more occurrences of <target subscring>",example:{expression:'contains("Royal Bank of Scotland", "bank")',result:"true"},name:"contains",params:{description:"( string )"},type:"boolean"},{accepts:["string","number"],description:"Returns the leftmost <number> characters from <string>. First argument may be a string literal, string column or other string expression.",example:{expression:'left("USD Benchmark Report", 3)',result:'"USD"'},name:"left",params:{count:2,description:"( string, number )"},type:"string"},{accepts:"string",description:"Returns the number of characters in <string>. Argument may be a string literal, string column or other string expression.",example:{expression:'len("example")',result:"7"},name:"len",params:{description:"(string)"},type:"number"},{accepts:"string",description:"Convert a string value to lowercase. Argument may be a string column or other string expression.",example:{expression:'lower("examPLE")',result:'"example"'},name:"lower",params:{description:"( string )"},type:"string"},{accepts:"string",description:"Convert a string value to uppercase. Argument may be a string column or other string expression.",example:{expression:'upper("example")',result:'"EXAMPLE"'},name:"upper",params:{description:"( string )"},type:"string"},{accepts:["string","number"],description:"Returns the rightmost <number> characters from <string>. First argument may be a string literal, string column or other string expression.",example:{expression:"blah",result:"blah"},name:"right",params:{description:"( string )"},type:"string"},{accepts:["string","string","string"],description:"Replace characters within a string. Accepts three arguments: source text, text to replace and replacement text. Returns a copy of <source text> with any occurrences of <text to replace> replaced by <replacement text>",example:{expression:"blah",result:"blah"},name:"replace",params:{description:"( string )"},type:"string"},{accepts:"number",description:"Converts a number to a string.",example:{expression:"blah",result:"blah"},name:"text",params:{description:"( string )"},type:"string"},{accepts:"string",description:"Tests a string value to determine whether it starts with a given substring. Accepts two arguments: source text and target substring. Returns true if <source text> starts with <target subscring>.",example:{expression:"blah",result:"blah"},name:"starts",params:{description:"( string )"},type:"boolean"},{accepts:"string",description:"Tests a string value to determine whether it ends with a given substring. Accepts two arguments: source text and target substring. Returns true if <source text> ends with <target subscring>.",example:{expression:"blah",result:"blah"},name:"ends",params:{description:"( string )"},type:"boolean"},{accepts:"number",description:"blah",example:{expression:"blah",result:"blah"},name:"min",params:{description:"( string )"},type:"number"},{accepts:"number",description:"blah",example:{expression:"blah",result:"blah"},name:"max",params:{description:"( string )"},type:"number"},{accepts:"number",description:"blah",example:{expression:"blah",result:"blah"},name:"sum",params:{description:"( string )"},type:"number"},{accepts:"number",description:"blah",example:{expression:"blah",result:"blah"},name:"round",params:{description:"( string )"},type:"number"},{accepts:"any",description:"blah",example:{expression:"blah",result:"blah"},name:"or",params:{description:"( string )"},type:"boolean"},{accepts:"any",description:"blah",example:{expression:"blah",result:"blah"},name:"and",params:{description:"( string )"},type:"boolean"},{accepts:"any",description:"Return one of two possible result values, depending on the evaluation of a filter expression. If <filterExpression> resolves to true, result is <expression1>, otherwise <expression2>. ",example:{expression:"blah",result:"blah"},name:"if",params:{description:"( filterExpression, expression1, expression 2)"},type:"variable"}];import{createEl as Yn}from"@vuu-ui/vuu-utils";var wS=({name:o,description:e,example:t,params:n,type:r})=>{let s=Yn("div","vuuFunctionDoc"),i=Yn("div","function-heading"),l=Yn("span","function-name",o),a=Yn("span","param-list",n.description),u=Yn("span","function-type",r);i.appendChild(l),i.appendChild(a),i.appendChild(u);let c=Yn("p",void 0,e);if(s.appendChild(i),s.appendChild(c),t){let d=Yn("div","example-container","Example:"),p=Yn("div","example-expression",t.expression),f=Yn("div","example-result",t.result);d.appendChild(p),d.appendChild(f),s.appendChild(d)}return s};var lF=o=>({apply:`${o.name}( `,boost:2,expressionType:o.type,info:()=>wS(o),label:o.name,type:"function"});var Ahe=SS.map(lF);import{getCalculatedColumnDetails as $he,setCalculatedColumnExpression as Whe,setCalculatedColumnName as _he,setCalculatedColumnType as Khe}from"@vuu-ui/vuu-utils";import{useCallback as qhe,useRef as Qhe,useState as jhe}from"react";import{jsx as bme,jsxs as yme}from"react/jsx-runtime";import{jsx as Wme,jsxs as _me}from"react/jsx-runtime";import{useEffect as Yme,useState as Zme}from"react";import tge from"classnames";import{jsx as sge,jsxs as ige}from"react/jsx-runtime";var oge=new Intl.NumberFormat;import{Button as Pge,FormField as kge,FormFieldLabel as Ige,Input as Lge,ToggleButton as Age,ToggleButtonGroup as Oge}from"@salt-ds/core";import{addColumnToSubscribedColumns as fge,isCalculatedColumn as hge,moveItem as mge,subscribedOnly as gge}from"@vuu-ui/vuu-utils";import{useCallback as vge,useMemo as Cge,useState as Sge}from"react";import{jsx as Bge,jsxs as zge}from"react/jsx-runtime";import{getCalculatedColumnType as aF}from"@vuu-ui/vuu-utils";import{useCallback as Wi,useRef as uF,useState as cF}from"react";var TS=({availableColumns:o,onAvailableColumnsChange:e,onConfigChange:t,onCreateCalculatedColumn:n,onDataSourceConfigChange:r,tableConfig:s})=>{let i=Tt(),l=uF(),[a,u]=cF(o),c=Wi((h,g,m)=>{i({type:"set-props",path:"#context-panel",props:{expanded:!0,content:{type:h,props:m},title:g}})},[i]),d=Wi(h=>{let g=a.concat({name:h.name,serverDataType:aF(h)});u(g),e==null||e(g),requestAnimationFrame(()=>{var m;(m=l.current)==null||m.call(l)}),n(h)},[a,e,n]),p=Wi(h=>{c("ColumnSettings","Column Settings",{column:h.column,onConfigChange:t,onCreateCalculatedColumn:d,tableConfig:s,vuuTable:h.vuuTable})},[d,t,c,s]),f=Wi(()=>{p({column:{name:"::",serverDataType:"string"},type:"columnSettings",vuuTable:{module:"SIMUL",table:"instruments"}})},[p]);return l.current=Wi(()=>{c("TableSettings","DataGrid Settings",{availableColumns:a!=null?a:s.columns.map(({name:h,serverDataType:g})=>({name:h,serverDataType:g})),onAddCalculatedColumn:f,onConfigChange:t,onDataSourceConfigChange:r,tableConfig:s})},[a,f,t,r,c,s]),{showColumnSettingsPanel:p,showTableSettingsPanel:l.current}};import{useCallback as wo,useEffect as pF,useMemo as fF,useRef as zf}from"react";var Vf=o=>`.vuuTableNext-col-headers .vuuTableNextHeaderCell:nth-child(${o})`,Bf=(o,e)=>`.vuuTableNext-body > [aria-rowindex='${o}'] > [role='cell']:nth-child(${e+1})`,ES=(o,[e,t])=>{var s;let n=e===-1?Vf(t):Bf(e,t),r=(s=o.current)==null?void 0:s.querySelector(n);return dF(r)&&r.querySelector("button")||r},dF=o=>o.classList.contains("vuuTableNextCell-editable"),MS=o=>o.querySelector(".vuuTableInputCell")!==null;var hF=new Set(["Home","End","PageUp","PageDown","ArrowDown","ArrowLeft","ArrowRight","ArrowUp"]),mF=o=>hF.has(o),gF=["Home","End","PageUp","PageDown"],bF=o=>gF.includes(o),yF=[-1,-1],xF=[void 0,void 0],vF=o=>{var t,n;let e=(t=o.closest(".vuuTableNext"))==null?void 0:t.querySelector(".vuuTableNext-scrollbarContainer");if(e){let r=e==null?void 0:e.getBoundingClientRect(),s=(n=o.closest(".vuuTableNextCell"))==null?void 0:n.getBoundingClientRect();if(s)return s.bottom>r.bottom?["down",s.bottom-r.bottom]:s.top<r.top?["up",s.top-r.top]:s.right<r.right?["right",s.right-r.right]:s.left<r.left?["left",s.left-r.left]:xF;throw Error("Whats going on, cell not found")}else throw Error("Whats going on, scrollbar container not found")};function CF(o,[e,t],n,r){return o==="ArrowUp"?e>-1?[e-1,t]:[e,t]:o==="ArrowDown"?e===-1?[0,t]:e===r-1?[e,t]:[e+1,t]:o==="ArrowRight"?t<n-1?[e,t+1]:[e,t]:o==="ArrowLeft"?t>1?[e,t-1]:[e,t]:[e,t]}var RS=({columnCount:o=0,containerRef:e,disableHighlightOnFocus:t,requestScroll:n,rowCount:r=0,viewportRowCount:s})=>{var S;let i=zf([-1,-1]),l=zf(),a=zf([-1,0]),u=b=>b==null?void 0:b.closest("[role='columnHeader'],[role='cell']"),c=b=>{var C,M;if(b.role==="columnHeader")return[-1,parseInt((C=b.dataset.idx)!=null?C:"-1",10)];{let D=b.closest("[role='row']");if(D){let E=parseInt((M=D.ariaRowIndex)!=null?M:"-1",10),O=Array.from(D.childNodes).indexOf(b);return[E,O]}}return yF},d=wo(b=>{var C;if(e.current){let M=ES(e,b);if(M){M!==l.current&&((C=l.current)==null||C.removeAttribute("tabindex"),l.current=M,M.setAttribute("tabindex","0"));let[D,E]=vF(M);D&&E&&(n==null||n({type:"scroll-distance",distance:E,direction:D})),M.focus()}}},[e,n]),p=wo((b,C,M=!1)=>{let D=[b,C];a.current=D,d(D),M&&(i.current=D)},[d]),f=wo((b,[C,M])=>new Promise(D=>{let E=C;switch(b){case"PageDown":E=Math.min(r-1,C+s),n==null||n({type:"scroll-page",direction:"down"});break;case"PageUp":E=Math.max(0,C-s),n==null||n({type:"scroll-page",direction:"up"});break;case"Home":E=0,n==null||n({type:"scroll-end",direction:"home"});break;case"End":E=r-1,n==null||n({type:"scroll-end",direction:"end"});break}setTimeout(()=>{D([E,M])},90)}),[n,r,s]),h=wo(()=>{var b;if(t!==!0&&(b=e.current)!=null&&b.contains(document.activeElement)){let C=u(document.activeElement);C&&(console.log({focusedCell:C}),i.current=c(C))}},[t,e]),g=wo(async b=>{console.log(`navigate child items ${b}`);let[C,M]=bF(b)?await f(b,a.current):CF(b,a.current,o,r);console.log(`nextRowIdx ${C} nextColIdx ${M}`);let[D,E]=a.current;(C!==D||M!==E)&&p(C,M,!0)},[o,f,r,p]),m=wo(b=>{r>0&&mF(b.key)&&(b.preventDefault(),b.stopPropagation(),g(b.key))},[r,g]),y=wo(b=>{let C=b.target,M=u(C);if(M){let[D,E]=c(M);p(D,E)}},[p]),w=wo(()=>{g("ArrowDown")},[g]),v=fF(()=>({navigate:w,onClick:y,onFocus:h,onKeyDown:m}),[y,h,m,w]),x=((S=e.current)==null?void 0:S.firstChild)!=null;return pF(()=>{if(x&&l.current===void 0){let{current:b}=e,C=(b==null?void 0:b.querySelector(Vf(0)))||(b==null?void 0:b.querySelector(Bf(0,0)));C&&(C.setAttribute("tabindex","0"),l.current=C)}},[e,x]),v};import{applySort as pV,buildColumnMap as fV,isGroupColumn as hV,isJsonGroup as mV,isValidNumber as GS,metadataKeys as gV,updateColumn as bV,visibleColumnAtIndex as yV}from"@vuu-ui/vuu-utils";import{useCallback as tt,useEffect as qS,useMemo as Kf,useState as Uf}from"react";var mu=(o,e)=>{switch(e.type){case"col-size":return{...o,columns:o.columns.map(t=>t.name===e.column.name?{...t,width:e.width}:t)};case"column-prop":return{...o,columns:o.columns.map(t=>t.name===e.column.name?{...t,[e.property]:e.value}:t)};default:return o}};import{getFullRange as $f,NULL_RANGE as DS}from"@vuu-ui/vuu-utils";import{useCallback as Wf,useEffect as PS,useMemo as EF,useRef as bu,useState as MF}from"react";import{metadataKeys as SF,WindowRange as wF}from"@vuu-ui/vuu-utils";var{SELECTED:TF}=SF,gu=class{constructor({from:e,to:t}){this.rowCount=0;this.setRowCount=e=>{e<this.data.length&&(this.data.length=e),this.rowCount=e};this.range=new wF(e,t),this.data=new Array(t-e),this.rowCount=0}add(e){let[t]=e;if(this.isWithinRange(t)){let n=t-this.range.from;this.data[n]=e}}getAtIndex(e){return this.range.isWithin(e)&&this.data[e-this.range.from]!=null?this.data[e-this.range.from]:void 0}isWithinRange(e){return this.range.isWithin(e)}setRange({from:e,to:t}){if(e!==this.range.from||t!==this.range.to){let[n,r]=this.range.overlap(e,t),s=new Array(Math.max(0,t-e));for(let i=n;i<r;i++){let l=this.getAtIndex(i);if(l){let a=i-e;s[a]=l}}this.data=s,this.range.from=e,this.range.to=t}}getSelectedRows(){return this.data.filter(e=>e[TF]===1)}};var kS=({dataSource:o,onFeatureEnabled:e,onFeatureInvocation:t,onSizeChange:n,onSubscribed:r,range:s=DS,renderBufferSize:i=0})=>{let[,l]=MF(null),a=bu([]),u=bu(!0),c=bu(!1),d=bu(DS),p=EF(()=>new gu($f(s,i)),[]),f=Wf(m=>{for(let y of m)p.add(y);a.current=p.data,u.current&&l({})},[p]),h=Wf(m=>{m.type==="subscribed"?r==null||r(m):m.type==="viewport-update"?(typeof m.size=="number"&&(n==null||n(m.size),p.setRowCount(m.size)),m.rows?f(m.rows):typeof m.size=="number"&&(a.current=p.data,c.current=!0)):Td(m)?e==null||e(m):Ed(m)?t==null||t(m):console.log(`useDataSource unexpected message ${m.type}`)},[p,e,t,n,r,f]);PS(()=>()=>{u.current=!0,u.current=!1},[]),PS(()=>{o==null||o.subscribe({range:$f(s,i)},h)},[o,h,s,i]);let g=Wf(m=>{let y=$f(m,i);p.setRange(y),o.range=d.current=y,o.emit("range",m)},[o,p,i]);return{data:a.current,range:d.current,setRange:g}};import{useMemo as RF,useRef as DF}from"react";var IS=o=>{let e=DF(o);return RF(()=>e.current,[])};import{buildColumnMap as PF}from"@vuu-ui/vuu-utils";import{useCallback as kF}from"react";var LS=({columns:o,data:e})=>{let[t]=Bn();return kF(r=>{var a;let s=r.target,i=s==null?void 0:s.closest("div[role='cell']"),l=s==null?void 0:s.closest("div[role='row']");if(i&&l){let u=PF(o),c=parseInt((a=l.ariaRowIndex)!=null?a:"-1"),d=Array.from(l.childNodes).indexOf(i),p=e.find(([h])=>h===c),f=o[d];t(r,"grid",{columnMap:u,columnName:f,row:p})}},[o,e,t])};import{isCharacterKey as IF}from"@vuu-ui/vuu-utils";import{useCallback as yu}from"react";var AS=({navigate:o})=>{let e=yu(()=>{o()},[o]),t=yu(s=>{let i=s.target,l=i.querySelector("input");l&&(l.focus(),l.select()),i.addEventListener("vuu-commit",e,!0)},[e]),n=yu(s=>{let i=s.target,l=i.querySelector("input");l&&(l.focus(),l.select()),i.addEventListener("vuu-commit",e,!0)},[e]);return{onKeyDown:yu(s=>{MS(s.target)&&(IF(s.key)?t(s):s.key==="Enter"&&n(s))},[t,n])}};import{applyFilterToColumns as LF,applyGroupByToColumns as AF,applySortToColumns as OF,getCellRenderer as NF,getTableHeadings as HF,getValueFormatter as FF,hasValidationRules as VF,isFilteredColumn as BF,isGroupColumn as zF,isPinned as $F,isTypeDescriptor as WF,logger as _F,metadataKeys as KF,moveItem as UF,sortPinnedColumns as OS,stripFilterFromColumns as GF,subscribedOnly as qF}from"@vuu-ui/vuu-utils";import{useReducer as QF}from"react";var{info:_f}=_F("useTableModel"),jF=100,JF=KF.count,XF=({serverDataType:o})=>o===void 0,YF=o=>{var e;if(WF(o.type))return NF((e=o.type)==null?void 0:e.renderer)},ZF=(o,e)=>{var n;let t=e.columns.find(({name:r})=>r===o.name);return t?t.serverDataType:(n=o.serverDataType)!=null?n:"string"},eV=["int","long","double"],NS=o=>o===void 0?void 0:eV.includes(o)?"right":"left",HS=o=>o.type==="columnSettings",FS=o=>o.type==="tableSettings",tV=(o,e)=>{switch(_f==null||_f(`TableModelReducer ${e.type}`),console.log(`TableModelReducer ${e.type}`),e.type){case"init":return console.log({init:e}),BS(e);case"moveColumn":return oV(o,e);case"resizeColumn":return iV(o,e);case"setTableSchema":return lV(o,e);case"hideColumns":return rV(o,e);case"showColumns":return sV(o,e);case"pinColumn":return aV(o,e);case"updateColumnProp":return Es(o,e);case"tableConfig":return $S(o,e);default:return console.log(`unhandled action ${e.type}`),o}},VS=(o,e)=>{let[t,n]=QF(tV,{tableConfig:o,dataSourceConfig:e},BS),{columns:r,headings:s,tableConfig:i,...l}=t;return{columns:r,dispatchColumnAction:n,headings:s,tableAttributes:l,tableConfig:i}};function BS({dataSourceConfig:o,tableConfig:e}){let{columns:t,...n}=e,r=t.filter(qF(o==null?void 0:o.columns)).map(zS(n)),s=r.some($F)?OS(r):r,i={columns:s,headings:HF(s),tableConfig:e,...n};if(o){let{columns:l,...a}=o;i=$S(i,{type:"tableConfig",...a})}return i}var nV=(o,e)=>e==="uppercase"?o.toUpperCase():e==="capitalize"?o[0].toUpperCase()+o.slice(1).toLowerCase():o,zS=o=>(e,t)=>{let{columnDefaultWidth:n=jF,columnFormatHeader:r}=o,{align:s=NS(e.serverDataType),key:i,name:l,label:a=l,width:u=n,...c}=e,d={...c,align:s,CellRenderer:YF(e),clientSideEditValidationCheck:VF(e.type)?vb(e.type.renderer.rules):void 0,label:nV(a,r),key:i!=null?i:t+JF,name:l,originalIdx:t,valueFormatter:FF(e),width:u};return zF(d)&&(d.columns=d.columns.map(p=>zS(o)(p,p.key))),d};function oV(o,{column:e,moveBy:t,moveTo:n}){let{columns:r}=o;if(typeof t=="number"){let s=r.indexOf(e),i=r.slice(),[l]=i.splice(s,1);return i.splice(s+t,0,l),{...o,columns:i}}else if(typeof n=="number"){let s=r.indexOf(e);return{...o,columns:UF(r,s,n)}}return o}function rV(o,{columns:e}){return e.some(t=>t.hidden!==!0)?e.reduce((t,n)=>n.hidden!==!0?Es(t,{type:"updateColumnProp",column:n,hidden:!0}):t,o):o}function sV(o,{columns:e}){return e.some(t=>t.hidden)?e.reduce((t,n)=>n.hidden?Es(t,{type:"updateColumnProp",column:n,hidden:!1}):t,o):o}function iV(o,{column:e,phase:t,width:n}){let r="updateColumnProp",s=t!=="end";switch(t){case"begin":return Es(o,{type:r,column:e,resizing:s});case"end":return Es(o,{type:r,column:e,resizing:s,width:n});case"resize":return Es(o,{type:r,column:e,width:n});default:throw Error(`useTableModel.resizeColumn, invalid resizePhase ${t}`)}}function lV(o,{tableSchema:e}){let{columns:t}=o;if(t.some(XF)){let n=t.map(r=>{var i;let s=ZF(r,e);return{...r,align:(i=r.align)!=null?i:NS(s),serverDataType:s}});return{...o,columns:n}}else return o}function aV(o,e){let{columns:t}=o,{column:n,pin:r}=e,s=t.find(i=>i.name===n.name);return s?(t=Ts(t,{...s,pin:r}),t=OS(t),{...o,columns:t}):o}function Es(o,e){let{columns:t}=o,{align:n,column:r,hidden:s,label:i,resizing:l,width:a}=e,u=t.find(c=>c.name===r.name);return u&&((n==="left"||n==="right")&&(t=Ts(t,{...u,align:n})),typeof i=="string"&&(t=Ts(t,{...u,label:i})),typeof l=="boolean"&&(t=Ts(t,{...u,resizing:l})),typeof s=="boolean"&&(t=Ts(t,{...u,hidden:s})),typeof a=="number"&&(t=Ts(t,{...u,width:a}))),{...o,columns:t}}function $S(o,{confirmed:e,filter:t,groupBy:n,sort:r}){let s=n!==void 0,i=typeof(t==null?void 0:t.filter)=="string",l=r&&r.sortDefs.length>0,a=o;return s&&(a={...o,columns:AF(a.columns,n,e)}),l&&(a={...o,columns:OF(a.columns,r)}),i?a={...o,columns:LF(a.columns,t)}:a.columns.some(BF)&&(a={...o,columns:GF(a.columns)}),a}function Ts(o,e){return o.map(t=>t.name===e.name?e:t)}import{useCallback as To,useRef as _i}from"react";var WS=o=>{let{scrollLeft:e,scrollTop:t}=o,{clientHeight:n,clientWidth:r,scrollHeight:s,scrollWidth:i}=o,l=e/(i-r),a=t/(s-n);return[l,a]},_S=({onAttach:o,onDetach:e})=>{let t=_i(null);return To(r=>{if(r)t.current=r,o==null||o(r);else if(t.current){let{current:s}=t;t.current=r,e==null||e(s)}},[o,e])},KS=({maxScrollLeft:o,maxScrollTop:e,onHorizontalScroll:t,onVerticalScroll:n,rowHeight:r,viewportRowCount:s})=>{let i=_i(!1),l=_i({scrollTop:0,scrollLeft:0}),a=_i(null),u=_i(null),c=To(()=>{let{current:v}=u,{current:x}=a,{current:S}=i;if(S)i.current=!1;else if(v&&x){let[b,C]=WS(x),M=Math.round(b*o),D=Math.round(C*e);v.scrollTo({left:M,top:D,behavior:"auto"})}},[o,e]),d=To(()=>{let{current:v}=u,{current:x}=a,{current:S}=l;if(v&&x){let{scrollLeft:b,scrollTop:C}=v,[M,D]=WS(v);i.current=!0,x.scrollLeft=Math.round(M*o),x.scrollTop=Math.round(D*e),S.scrollTop!==C&&(S.scrollTop=C,n==null||n(C,D)),S.scrollLeft!==b&&(S.scrollLeft=b,t==null||t(b))}},[o,e,t,n]),p=To(v=>{a.current=v,v.addEventListener("scroll",c,{passive:!0})},[c]),f=To(v=>{a.current=null,v.removeEventListener("scroll",c)},[c]),h=To(v=>{u.current=v,v.addEventListener("scroll",d,{passive:!0})},[d]),g=To(v=>{u.current=null,v.removeEventListener("scroll",d)},[d]),m=_S({onAttach:h,onDetach:g}),y=_S({onAttach:p,onDetach:f}),w=To(v=>{let{current:x}=u;if(x){let{scrollLeft:S,scrollTop:b}=x;if(i.current=!1,v.type==="scroll-distance"){let C=S,M=b;v.direction==="up"||v.direction==="down"?M=Math.min(Math.max(0,b+v.distance),e):C=Math.min(Math.max(0,S+v.distance),o),x.scrollTo({top:M,left:C,behavior:"auto"})}else if(v.type==="scroll-page"){let{direction:C}=v,M=s*(C==="down"?r:-r),D=Math.min(Math.max(0,b+M),e);x.scrollTo({top:D,left:S,behavior:"auto"})}else if(v.type==="scroll-end"){let{direction:C}=v,M=C==="end"?e:0;x.scrollTo({top:M,left:x.scrollLeft,behavior:"auto"})}}},[o,e,r,s]);return{scrollbarContainerRef:y,contentContainerRef:m,requestScroll:w}};import{useCallback as uV,useEffect as cV,useRef as dV}from"react";var US=({columns:o,getRowAtPosition:e,setRange:t,viewportMeasurements:n})=>{let r=dV(0),{contentWidth:s,rowCount:i}=n,l=uV(a=>{let u=e(a);u!==r.current&&(r.current=u,t({from:u,to:u+i}))},[e,t,i]);return cV(()=>{let{current:a}=r,u={from:a,to:a+i};t(u)},[t,i]),{onVerticalScroll:l}};var{KEY:xV,IS_EXPANDED:QS,IS_LEAF:jS}=gV,vV=(o,e)=>({...o,columns:o.columns.concat(e)}),JS=({availableColumns:o,config:e,containerRef:t,dataSource:n,headerHeight:r=25,onAvailableColumnsChange:s,onConfigChange:i,onFeatureEnabled:l,onFeatureInvocation:a,onRowClick:u,onSelectionChange:c,renderBufferSize:d=0,rowHeight:p=20,selectionModel:f})=>{let[h,g]=Uf(n.size);if(n===void 0)throw Error("no data source provided to Vuu Table");let[m,y]=Uf(),w=tt(V=>{y(V)},[]),v=Kf(()=>Qc(n),[n]),x=tt(V=>{g(V)},[]),{columns:S,dispatchColumnAction:b,headings:C,tableAttributes:M,tableConfig:D}=VS(e,n.config);on(()=>{b({type:"init",dataSourceConfig:n.config,tableConfig:D})},[D,n.config,b]);let[E,O]=Uf(),[T,P]=Kf(()=>{let V=(_,ue)=>{let Me=bV(S,_,{width:ue});O(Me)};return[E!=null?E:S,V]},[S,E]),L=Kf(()=>fV(n.columns),[n.columns]),{getRowAtPosition:N,getRowOffset:A,setPctScrollTop:k,...I}=Rd({columns:T,headerHeight:r,headings:C,rowCount:h,rowHeight:p,size:m}),F=IS({from:0,to:I.rowCount}),H=tt(({tableSchema:V})=>{V||console.log("usbscription message with no schema")},[]),{data:B,range:$,setRange:G}=kS({dataSource:n,onFeatureEnabled:l,onFeatureInvocation:a,renderBufferSize:d,onSizeChange:x,onSubscribed:H,range:F}),q=tt(V=>{console.log("useTableNext handleConfigChanged",{tableConfig:V}),b({type:"init",tableConfig:V,dataSourceConfig:n.config}),i==null||i(V)},[n.config,b,i]),j=tt(V=>{console.log("config changed",{dataSourceConfig:V}),n.config={...n.config,...V}},[n]),U=tt(V=>{console.log("useTableNext handleCreateCalculatedColumn",{column:V}),n.columns=n.columns.concat(V.name);let _=vV(D,V);b({type:"init",tableConfig:_,dataSourceConfig:n.config}),i==null||i(_)},[n,b,i,D]);qS(()=>{n.on("config",(V,_)=>{b({type:"tableConfig",...V,confirmed:_})})},[n,b]);let{showColumnSettingsPanel:X,showTableSettingsPanel:pe}=TS({availableColumns:o!=null?o:D.columns.map(({name:V,serverDataType:_="string"})=>({name:V,serverDataType:_})),onAvailableColumnsChange:s,onConfigChange:q,onCreateCalculatedColumn:U,onDataSourceConfigChange:j,tableConfig:D}),ae=tt(V=>{HS(V)?X(V):FS(V)?pe():b(V)},[b,X,pe]),Ve=Jc({dataSource:n,onPersistentColumnOperation:ae}),xe=tt((V,_=!1,ue)=>{n&&(n.sort=pV(n.sort,V,_,ue))},[n]),Ae=tt((V,_,ue)=>{let Me=T.find(wt=>wt.name===_);if(Me)V==="resize"?GS(ue)&&P(_,ue):V==="end"?GS(ue)&&(b({type:"resizeColumn",phase:V,column:Me,width:ue}),i==null||i(mu(D,{type:"col-size",column:Me,width:ue}))):(O(void 0),b({type:"resizeColumn",phase:V,column:Me,width:ue}));else throw Error(`useDataTable.handleColumnResize, column ${_} not found`)},[T,D,b,i,P]),Te=tt((V,_)=>{let ue=mV(_,V),Me=V[xV];if(V[QS]){if(n.closeTreeNode(Me,!0),ue){let wt=T.indexOf(_);n.getRowsAtDepth(wt+1).some(tn=>tn[QS]||tn[jS])||b({type:"hideColumns",columns:T.slice(wt+2)})}}else if(n.openTreeNode(Me),ue){let wt=n.getChildRows(Me),Do=T.indexOf(_)+1,tn=[T[Do]];wt.some(Er=>Er[jS])&&tn.push(T[Do+1]),tn.some(Er=>Er.hidden)&&b({type:"showColumns",columns:tn})}},[T,n,b]),{onVerticalScroll:Ie}=US({columns:T,getRowAtPosition:N,setRange:G,viewportMeasurements:I}),nt=tt(V=>{Ie(V)},[Ie]),{requestScroll:Le,...Ye}=KS({maxScrollLeft:I.maxScrollContainerScrollHorizontal,maxScrollTop:I.maxScrollContainerScrollVertical,rowHeight:p,onVerticalScroll:nt,viewportRowCount:I.rowCount}),{navigate:gt,onKeyDown:Ee,...Ze}=RS({columnCount:T.filter(V=>V.hidden!==!0).length,containerRef:t,requestScroll:Le,rowCount:n==null?void 0:n.size,viewportRange:$,viewportRowCount:I.rowCount}),{onKeyDown:Q}=AS({navigate:gt}),te=tt(V=>{Ee(V),V.defaultPrevented||Q(V)},[Ee,Q]),oe=LS({columns:T,data:B}),de=tt(V=>{var tn;let ue=V.target.closest(".vuuTableNextHeaderCell"),Me=parseInt((tn=ue==null?void 0:ue.dataset.index)!=null?tn:"-1"),wt=yV(T,Me),Do=V.shiftKey;wt&&xe(wt,Do)},[T,xe]),Se=tt(V=>{hV(V)?n.groupBy=[]:n&&n.groupBy.includes(V.name)&&(n.groupBy=n.groupBy.filter(_=>_!==V.name))},[n]),Be=tt(V=>{n.select(V),c==null||c(V)},[n,c]),ve=Md({onSelectionChange:Be,selectionModel:f}),J=tt((V,_,ue)=>{ve(V,_,ue),u==null||u(V)},[u,ve]);qS(()=>{n.on("config",(V,_)=>{b({type:"tableConfig",...V,confirmed:_})})},[n,b]);let ee=tt((V,_)=>{let ue=T[V];b({type:"moveColumn",column:ue,moveTo:_})},[T,b]),ne=tt((V,_,ue)=>n.applyEdit(V,_,ue),[n]),{onMouseDown:fe,...ze}=Hn({allowDragDrop:!0,containerRef:t,draggableClassName:"vuuTableNext",onDrop:ee,orientation:"horizontal",itemQuery:".vuuTableNextHeaderCell"});return{...Ze,onKeyDown:te,columnMap:L,columns:T,data:B,handleContextMenuAction:Ve,headerProps:{onClick:de,onMouseDown:fe,onResize:Ae},menuBuilder:v,onContextMenu:oe,onDataEdited:ne,onRemoveGroupColumn:Se,onResize:w,onRowClick:J,onToggleGroup:Te,scrollProps:Ye,tableAttributes:M,viewportMeasurements:I,dragDropHook:ze}};import{jsx as br,jsxs as Gf}from"react/jsx-runtime";import{createElement as YS}from"react";var hn="vuuTableNext",{IDX:EV,RENDER_IDX:MV}=SV,qf=({Row:o=zd,availableColumns:e,className:t,config:n,dataSource:r,id:s,onAvailableColumnsChange:i,onConfigChange:l,onFeatureEnabled:a,onFeatureInvocation:u,onRowClick:c,onSelectionChange:d,onShowConfigEditor:p,renderBufferSize:f=0,rowHeight:h=20,selectionModel:g="extended",showColumnHeaders:m=!0,headerHeight:y=m?25:0,style:w,...v})=>{let x=Pe(s),S=TV(null),{columnMap:b,columns:C,data:M,dragDropHook:D,handleContextMenuAction:E,headerProps:O,onDataEdited:T,onRemoveGroupColumn:P,onResize:L,onRowClick:N,onToggleGroup:A,menuBuilder:k,scrollProps:I,tableAttributes:F,viewportMeasurements:H,...B}=JS({availableColumns:e,config:n,containerRef:S,dataSource:r,headerHeight:y,onAvailableColumnsChange:i,onConfigChange:l,onFeatureEnabled:a,onFeatureInvocation:u,onRowClick:c,onSelectionChange:d,renderBufferSize:f,rowHeight:h,selectionModel:g}),$=()=>({...w,"--content-height":`${H.contentHeight}px`,"--horizontal-scrollbar-height":`${H.horizontalScrollbarHeight}px`,"--content-width":`${H.contentWidth}px`,"--pinned-width-left":`${H.pinnedWidthLeft}px`,"--pinned-width-right":`${H.pinnedWidthRight}px`,"--header-height":`${y}px`,"--row-height":`${h}px`,"--total-header-height":`${H.totalHeaderHeight}px`,"--vertical-scrollbar-width":`${H.verticalScrollbarWidth}px`,"--viewport-body-height":`${H.viewportBodyHeight}px`}),G=XS(hn,t,{[`${hn}-colLines`]:F.columnSeparators,[`${hn}-rowLines`]:F.rowSeparators,[`${hn}-zebra`]:F.zebraStripes});return br(Dd,{menuActionHandler:E,menuBuilder:k,children:Gf(Bl,{...v,className:G,onResize:L,ref:S,style:$(),children:[br("div",{className:`${hn}-scrollbarContainer`,ref:I.scrollbarContainerRef,children:br("div",{className:`${hn}-scrollbarContent`})}),br("div",{className:`${hn}-contentContainer`,ref:I.contentContainerRef,children:Gf("div",{...B,className:`${hn}-table`,tabIndex:-1,children:[m?br("div",{className:`${hn}-col-headings`,children:Gf("div",{className:`${hn}-col-headers`,role:"row",children:[C.filter(wV).map((q,j)=>CV(q)?YS(ga,{...O,column:q,"data-index":j,key:q.name,onRemoveColumn:P}):YS(Gy,{...O,className:XS({"vuuDraggable-dragAway":j===D.draggedItemIndex}),column:q,"data-index":j,id:`${x}-col-${j}`,key:q.name})),D.draggable]})}):null,br("div",{className:`${hn}-body`,children:M.map(q=>br(o,{columnMap:b,columns:C,onClick:N,onDataEdited:T,row:q,offset:h*q[EV]+y,onToggleGroup:A,zebraStripes:F.zebraStripes},q[MV]))})]})})]})})};import{isColumnTypeRenderer as RV,isTypeDescriptor as DV,registerComponent as PV}from"@vuu-ui/vuu-utils";import{useCallback as kV,useState as IV}from"react";import{jsx as NV}from"react/jsx-runtime";var LV="vuuTableDropdownCell",AV=["Enter"," "],OV=({column:o,columnMap:e,row:t})=>{var a,u,c;let n=DV(o.type)&&RV((a=o.type)==null?void 0:a.renderer)?(c=(u=o.type)==null?void 0:u.renderer)==null?void 0:c.values:[],r=e[o.name],[s,i]=IV(t[r]),l=kV((d,p)=>{p&&i(p)},[]);return NV(_l,{className:LV,onSelectionChange:l,openKeys:AV,selected:s,source:n,width:o.width-17})};PV("dropdown-cell",OV,"cell-renderer",{});import{registerComponent as HV}from"@vuu-ui/vuu-utils";import{Input as FV}from"@salt-ds/core";import VV from"classnames";import{jsx as Qf}from"react/jsx-runtime";var xu="vuuTableInputCell",BV=()=>(console.warn("onCommit handler has not been provided to InputCell cell renderer"),!0),zV=({column:o,columnMap:e,onCommit:t=BV,row:n})=>{let r=e[o.name],{align:s="left",clientSideEditValidationCheck:i,valueFormatter:l}=o,{warningMessage:a,...u}=wb({initialValue:l(n[r]),onCommit:t,clientSideEditValidationCheck:i}),c=a&&s==="left"?Qf("span",{className:`${xu}-icon`,"data-icon":"error"}):void 0,d=a&&s==="right"?Qf("span",{className:`${xu}-icon`,"data-icon":"error"}):void 0;return Qf(FV,{...u,className:VV(xu,{[`${xu}-error`]:a!==void 0}),endAdornment:c,startAdornment:d})};HV("input-cell",zV,"cell-renderer",{});import{FormField as GV,FormFieldLabel as qV,Input as QV}from"@salt-ds/core";import jV from"classnames";import{useCallback as JV,useState as XV}from"react";import{registerComponent as $V}from"@vuu-ui/vuu-utils";import{jsx as KV,jsxs as UV}from"react/jsx-runtime";var WV="vuuSearchCell",_V=({column:o,columnMap:e,row:t})=>{let n=e[o.name],r=t[n];return UV("div",{className:WV,tabIndex:-1,children:[KV("span",{"data-icon":"draggable"}),r]})};console.log("register SearchCell");$V("search-cell",_V,"cell-renderer",{serverDataType:"private"});import{jsx as vu,jsxs as ZS}from"react/jsx-runtime";var jf="vuuInstrumentSearch",YV={columns:[{name:"bbg",hidden:!0},{name:"description",width:200,type:{name:"string",renderer:{name:"search-cell"}}}],rowSeparators:!0},ZV=vu("span",{"data-icon":"search"}),eB=({TableProps:o,className:e,dataSource:t,searchColumn:n="description",...r})=>{let[s,i]=XV({searchText:"",filter:""}),l=JV(a=>{let{value:u}=a.target,c=`name starts "${u}"`;i({searchText:u,filter:c}),t.filter={filter:c,filterStruct:{op:"starts",column:n,value:u}}},[t,n]);return ZS("div",{...r,className:jV(jf,e),children:[ZS(GV,{className:`${jf}-inputField`,children:[vu(qV,{}),vu(QV,{endAdornment:ZV,value:s.searchText,onChange:l})]}),vu(qf,{rowHeight:25,config:YV,renderBufferSize:100,...o,className:`${jf}-list`,dataSource:t,showColumnHeaders:!1})]})};$e("InstrumentSearch",eB,"view");import{getMovingValueDirection as tB,isValidNumber as nB,numericFormatter as oB}from"@vuu-ui/vuu-utils";import{memo as rB,useMemo as sB,useRef as iB}from"react";import lB from"classnames";import{jsx as pB,jsxs as fB}from"react/jsx-runtime";var aB="vuuPriceTicker",uB=o=>oB({type:{name:"number",formatting:{decimals:o,zeroPad:!0}}}),cB=[void 0,void 0],dB=rB(({className:o,decimals:e=2,price:t,showArrow:n,...r})=>{let s=iB(cB),[i,l]=s.current,a=sB(()=>uB(e),[e]),u=nB(i)?tB(t,l,i,e):"";return s.current=[t,u],fB("div",{...r,className:lB(aB,o,u),children:[a(t),n?pB("span",{"data-icon":"price-arrow"}):null]})});dB.displayName="PriceTicker";import{Button as OB}from"@salt-ds/core";import gw from"classnames";import NB,{useMemo as HB,useRef as FB}from"react";import{dispatchMouseEvent as PB}from"@vuu-ui/vuu-utils";import{useCallback as Ht,useRef as kB}from"react";var ew=o=>typeof o=="object"&&o!==null&&"tabIndex"in o&&typeof o.tabIndex=="number",tw=o=>({label:"Close",location:"tab",action:"close-tab",options:o}),nw=o=>({label:"Rename",location:"tab",action:"rename-tab",options:o});import{getElementDataIndex as hB}from"@vuu-ui/vuu-utils";var ow=(o,e)=>{if(o){let t=o.querySelector(`[data-index]:has(${e})`);return hB(t)}return-1},Jf=o=>ow(o,'[aria-selected="true"]'),rw=o=>ow(o,".vuuEditableLabel-editing");import{isValidNumber as Xf,MEASURES as mB}from"@vuu-ui/vuu-utils";import{useCallback as Yf,useMemo as gB,useRef as sw}from"react";var iw=(o,e,t="horizontal")=>{let n=sw(!1),r=Yf(()=>{n.current=!0},[]),s=Yf(()=>{n.current=!1},[]),i=Yf(()=>{var a,u;(a=o.current)==null||a.style.setProperty("--tab-thumb-transition","none"),(u=o.current)==null||u.removeEventListener("transitionend",i)},[o]),l=sw(-1);return gB(()=>{var c,d;let a=0,u=0;if(l.current!==-1){let p=(c=o.current)==null?void 0:c.querySelector(".vuuTab-selected"),f=(d=o.current)==null?void 0:d.querySelector(`[data-index="${e}"] .vuuTab`),{positionProp:h,sizeProp:g}=mB[t];if(p&&f&&!n.current){let{[h]:m,[g]:y}=p.getBoundingClientRect(),{[h]:w}=f.getBoundingClientRect();if(Xf(m)&&Xf(w)&&Xf(y)){console.log({orientation:t,positionProp:h,oldPosition:m,newPosition:w}),a=m-w,u=y;let x=Math.abs(a/(t==="horizontal"?1100:700));requestAnimationFrame(()=>{var S,b,C,M;(S=o.current)==null||S.style.setProperty("--tab-thumb-offset","0px"),(b=o.current)==null||b.style.setProperty("--tab-thumb-size","100%"),(C=o.current)==null||C.style.setProperty("--tab-thumb-transition",`all ${x}s ease`),(M=o.current)==null||M.addEventListener("transitionend",i)})}}}return l.current=e,n.current?{containerStyle:{"--tab-thumb-offset":"0px","--tab-thumb-size":"100%"},resumeAnimation:s,suspendAnimation:r}:{containerStyle:{"--tab-thumb-offset":`${a}px`,"--tab-thumb-size":u?`${u}px`:void 0},resumeAnimation:s,suspendAnimation:r}},[e,o,t,i,s,r])};import{useControlled as bB}from"@salt-ds/core";import{dispatchMouseEvent as yB,getFocusableElement as xB}from"@vuu-ui/vuu-utils";import{useCallback as An,useRef as Zf,useState as lw}from"react";import{ArrowDown as dw,ArrowUp as vB,ArrowLeft as CB,ArrowRight as SB,Home as aw,End as uw}from"@vuu-ui/vuu-utils";var pw={horizontal:{[aw]:"start",[uw]:"end",[CB]:"bwd",[SB]:"fwd"},vertical:{[aw]:"start",[uw]:"end",[vB]:"bwd",[dw]:"fwd"}},wB=(o,e="horizontal")=>pw[e][o]!==void 0,TB=o=>o===dw;function cw(o,e,t){return e==="start"?0:e==="end"?o-1:e==="bwd"?t>0?t-1:t:t===null?0:t===o-1?t:t+1}var EB=o=>o!==null&&!o.classList.contains("wrapped"),Cu=(o,e)=>o?o.querySelector(`[data-index="${e}"]`):null,fw=({containerRef:o,defaultHighlightedIdx:e=-1,highlightedIdx:t,keyBoardActivation:n,orientation:r,selectedIndex:s=0})=>{let i=n==="manual",l=Zf(!1),a=Zf(-1),[u,c]=lw(!1),[,d]=lw({}),[p,f]=bB({controlled:t,default:e,name:"UseKeyboardNavigation"}),h=An(T=>{f(a.current=T)},[f]),g=Zf(!1),m=An((T,P=!1,L,N=70)=>{h(T),L===!0&&!g.current&&(g.current=!0);let A=()=>{let k=Cu(o.current,T);if(k){let I=xB(k);I==null||I.focus()}};P?A():setTimeout(A,N)},[o,h]),y=T=>{if(a.current===-1&&T.target.tabIndex!==-1){let P=rw(o.current);P!==-1?requestAnimationFrame(()=>{h(P)}):setTimeout(()=>{a.current===-1&&s!==null&&h(s)},200)}},w=An(()=>{var T,P;return(P=(T=o.current)==null?void 0:T.querySelectorAll("[data-index]").length)!=null?P:0},[o]),v=An((T="fwd",P)=>{let L=w(),A=cw(L,T,typeof P=="number"?P:L),k=T==="start"?"fwd":T==="end"?"bwd":T;for(;(k==="fwd"&&A<L||k==="bwd"&&A>0)&&!EB(Cu(o.current,A));){let I=cw(L,k,A);if(I===A)break;A=I}return A},[o,w]),x=An((T,P=!1)=>{let L=pw[r][T.key],N=v(L,p);N!==p?i&&m(N,!0):P&&d({})},[p,i,v,m,r]),S=An(()=>{let T=Cu(o.current,p);return T?T.querySelector(".vuuPopupMenu")!=null:!1},[o,p]),b=An(()=>{let T=Cu(o.current,p),P=T==null?void 0:T.querySelector(".vuuPopupMenu");return P&&yB(P,"click"),!1},[o,p]),C=An(T=>{w()>0&&wB(T.key,r)?(T.preventDefault(),g.current?x(T):(g.current=!0,x(T,!0))):TB(T.key)&&S()&&b()},[b,w,S,x,r]),M=(T,P)=>{h(P)},D=An(()=>{u||(c(!0),l.current?l.current=!1:g.current=!0)},[u]),E=An(()=>{u||(l.current=!0),g.current=!1},[u]);return{containerProps:{onBlur:T=>{let P=T.target.closest(".vuuTabstrip"),L=T.relatedTarget;P&&!(P!=null&&P.contains(L))&&(h(-1),c(!1))},onMouseDownCapture:E,onFocus:D,onMouseLeave:()=>{g.current=!0,h(-1),l.current=!1}},focusVisible:g.current?p:-1,focusIsWithinComponent:u,highlightedIdx:p,focusTab:m,onClick:M,onFocus:y,onKeyDown:C,setHighlightedIdx:h}};import{useControlled as MB}from"@salt-ds/core";import{useCallback as Su}from"react";var RB=["Enter"," "],DB=o=>o&&o.matches('[class*="vuuTab "]'),hw=({defaultSelected:o,highlightedIdx:e,onSelectionChange:t,selected:n})=>{let[r,s,i]=MB({controlled:n,default:o!=null?o:0,name:"Tabstrip",state:"value"}),l=Su(d=>RB.includes(d.key),[]),a=Su(d=>{s(d),t==null||t(d)},[t,s]),u=Su(d=>{let p=d.target;l(d)&&e!==r&&DB(p)&&(d.stopPropagation(),d.preventDefault(),a(e))},[l,e,r,a]),c=Su((d,p)=>{p!==r&&a(p)},[a,r]);return{activateTab:a,isControlled:i,onClick:c,onKeyDown:u,selected:r}};var IB=new Set(["Enter"," "]),LB=o=>IB.has(o),AB=(o,e)=>o?o.querySelector(`[data-index="${e}"]`):null,mw=({activeTabIndex:o,allowDragDrop:e,animateSelectionThumb:t,containerRef:n,onActiveChange:r,onAddTab:s,onCloseTab:i,onExitEditMode:l,onMoveTab:a,orientation:u,keyBoardActivation:c})=>{let d=kB(o),{focusTab:p,highlightedIdx:f,onClick:h,onKeyDown:g,setHighlightedIdx:m,...y}=fw({containerRef:n,keyBoardActivation:c,orientation:u,selectedIndex:d.current}),{activateTab:w,onClick:v,onKeyDown:x,selected:S}=hw({highlightedIdx:f,onSelectionChange:r,selected:o});d.current=S;let{containerStyle:b,resumeAnimation:C,suspendAnimation:M}=iw(n,t?S:-1,u),D=Ht((U,X)=>{let{current:pe}=d;console.log(`useTabstrip handleDrop ${U} - ${X} ${pe}`),a==null||a(U,X);let ae=-1;X!==-1&&(pe===U?ae=X:U>pe&&X<=pe?ae=pe+1:U<pe&&X>=pe&&(ae=pe-1),ae!==-1&&(M(),w(ae),requestAnimationFrame(C)),p(X,!1,!1,350))},[p,a,C,w,M]),{onMouseDown:E,...O}=Hn({allowDragDrop:e,containerRef:n,draggableClassName:`tabstrip-${u}`,onDrop:D,orientation:"horizontal",itemQuery:".vuuOverflowContainer-item"}),T=Ht((U,X,pe,ae)=>{console.log(`handleExitEditMode ${U} ${X} ${pe} ${ae}`),l==null||l(U,X,pe,ae),pe||p(ae,!1,!0)},[p,l]),P=Ht((U,X)=>{h(U,X),v(U,X)},[h,v]),L=Ht((U=f)=>{let X=AB(n.current,U);if(X)return X.querySelector(".vuuEditableLabel")},[n,f]),N=Ht((U=f)=>{let X=L(U);return X?X.classList.contains("vuuEditableLabel-editing"):!1},[L,f]),A=Ht((U=f)=>{let X=L(U);X&&PB(X,"dblclick")},[L,f]),k=Ht(U=>{g(U),U.defaultPrevented||x(U),!U.defaultPrevented&&LB(U.key)&&A()},[A,g,x]),I=Ht(U=>{let X=Jf(n.current),pe=X>U?X-1:X===U?0:X;return M(),i==null||i(U,pe),setTimeout(()=>{C()},200),!0},[n,i,C,M]),F=Ht(U=>(A(U),!0),[A]),H=Ht(U=>{if(ew(U.options))switch(U.menuId){case"close-tab":return I(U.options.tabIndex);case"rename-tab":return F(U.options.tabIndex);default:console.log(`tab menu action ${U.menuId}`)}return!1},[I,F]),B=Ht(()=>{N()?m(f):p(f)},[f,p,m,N]),$=Ht(U=>{let X=parseInt(U.index);isNaN(X)||w(X)},[w]),G={onFocus:y.onFocus,onKeyDown:k},q=Ht(()=>{s==null||s(),requestAnimationFrame(()=>{let U=Jf(n.current);U!==-1&&p(U)})},[n,p,s]),j={onClick:P,onKeyDown:k,onExitEditMode:T,onMenuAction:H,onMenuClose:B,onMouseDown:E};return{activeTabIndex:S,containerStyle:b,focusVisible:y.focusVisible,containerProps:{...y.containerProps,onSwitchWrappedItemIntoView:$},navigationProps:G,onClickAddTab:q,tabProps:j,...O}};import{Fragment as zB,jsx as BB,jsxs as $B}from"react/jsx-runtime";import{createElement as VB}from"react";var eh="vuuTabstrip",th=({activeTabIndex:o,allowAddTab:e,allowCloseTab:t,allowDragDrop:n=!1,allowRenameTab:r=!1,animateSelectionThumb:s=!1,children:i,className:l,id:a,keyBoardActivation:u="manual",location:c,onActiveChange:d,onAddTab:p,onCloseTab:f,onExitEditMode:h,onMoveTab:g,orientation:m="horizontal",showTabMenuButton:y,style:w,...v})=>{let x=FB(null),{activeTabIndex:S,focusVisible:b,containerStyle:C,draggedItemIndex:M,onClickAddTab:D,tabProps:E,...O}=mw({activeTabIndex:o,allowDragDrop:n,animateSelectionThumb:s,containerRef:x,keyBoardActivation:u,onActiveChange:d,onAddTab:p,onCloseTab:f,onExitEditMode:h,onMoveTab:g,orientation:m}),T=Pe(a),P=gw(eh,`${eh}-${m}`,l),L=w||C?{...w,...C}:void 0,N=HB(()=>ko(i).map((A,k)=>{let{id:I=`${T}-tab-${k}`,closeable:F=t,editable:H=r,location:B,showMenuButton:$=y}=A.props,G=k===S;return NB.cloneElement(A,{...E,...O.navigationProps,closeable:F,"data-overflow-priority":G?"1":void 0,dragging:M===k,editable:H,focusVisible:b===k,id:I,index:k,key:k,location:gw(c,B),selected:G,showMenuButton:$,tabIndex:G?0:-1})}).concat(e?VB(OB,{...O.navigationProps,"aria-label":"Create Tab",className:`${eh}-addTabButton`,"data-icon":"add","data-overflow-priority":"1",key:"addButton",onClick:D,variant:"secondary",tabIndex:-1}):[]),[S,e,t,r,i,b,T,c,D,y,E,M,O.navigationProps]);return $B(zB,{children:[BB(di,{...v,...O.containerProps,className:P,height:28,id:T,orientation:m,overflowIcon:"more-horiz",ref:x,style:L,children:N}),O.draggable]})};import{useForkRef as GB}from"@salt-ds/core";import qB from"classnames";import{forwardRef as QB,useCallback as jB,useRef as yw}from"react";import{useMemo as WB}from"react";import _B from"classnames";import{jsx as UB}from"react/jsx-runtime";var KB="vuuTabMenu",bw=({allowClose:o,allowRename:e,controlledComponentId:t,location:n,onMenuAction:r,onMenuClose:s,index:i})=>{let[l,a]=WB(()=>[(u,c)=>{let d=[];return e&&d.push(nw(c)),o&&d.push(tw(c)),d},{controlledComponentId:t,tabIndex:i}],[o,e,t,i]);return UB(Ki,{className:KB,menuBuilder:l,menuActionHandler:r,menuLocation:_B("tab",n),menuOptions:a,onMenuClose:s,tabIndex:-1})};import{jsx as wu,jsxs as JB}from"react/jsx-runtime";var yr="vuuTab",xw=()=>{},nh=QB(function({ariaControls:e,children:t,className:n,closeable:r=!1,dragging:s,editable:i=!1,editing:l,focusVisible:a,index:u=-1,label:c,location:d,onClick:p,onClose:f,onEnterEditMode:h=xw,onExitEditMode:g=xw,onFocus:m,onKeyUp:y,onMenuAction:w,onMenuClose:v,orientation:x,selected:S,showMenuButton:b=r||i||!!d,tabIndex:C,...M},D){if(b&&typeof w!="function")throw Error("Tab onMenuAction must be provided if showMenuButton is set");let E=yw(null),O=yw(null),T=GB(D,E),P=jB(I=>{l||(I.preventDefault(),p==null||p(I,u))},[l,u,p]),L=(I="",F="",H=!0)=>g(I,F,H,u),N=I=>{switch(I.key){case"Backspace":case"Delete":r&&(I.stopPropagation(),f&&f(u));break;default:y&&y(I,u)}},A=()=>i?wu(Bo,{editing:l,defaultValue:c,onEnterEditMode:h,onExitEditMode:L,ref:O},c):c,k=I=>{if(O.current){let H=O.current.querySelector(".vuuEditableLabel-input");H==null||H.focus()}m==null||m(I)};return JB("div",{...M,"aria-controls":e,"aria-selected":S,className:qB(yr,{[`${yr}-closeable`]:r,"vuuDraggable-dragAway":s,[`${yr}-editing`]:l,[`${yr}-selected`]:S||void 0,[`${yr}-vertical`]:x==="vertical",vuuFocusVisible:a}),onClick:P,onFocus:k,onKeyUp:N,ref:T,role:"tab",tabIndex:C,children:[wu("div",{className:`${yr}-main`,children:wu("span",{className:`${yr}-text`,"data-text":i?void 0:c,children:t!=null?t:A()})}),b?wu(bw,{allowClose:r,allowRename:i,controlledComponentId:e,location:d,onMenuAction:w,onMenuClose:v,index:u}):null]})});import{useForkRef as M2,useIdMemo as R2}from"@salt-ds/core";import dh from"classnames";import{forwardRef as D2,useRef as P2}from"react";function XB(o){var e;if(o){let t=o.dataset.idx;if(t)return parseInt(t,10);if(t=(e=o.ariaPosInSet)!=null?e:"-1")return parseInt(t,10)-1}}var oh=o=>o.closest("[data-idx],[aria-posinset]");var vw=o=>XB(oh(o));import{useCallback as rh,useMemo as YB}from"react";var ZB=new Set(["/","-","."]),e2=o=>ZB.has(o),Cw=(o,e)=>e.startsWith(o)&&e2(e[o.length]),Sw=(o,e="root",{collapsibleHeaders:t=void 0,defaultExpanded:n=!1,revealSelected:r=!1}={})=>{let s=(p,f,h)=>{if(p.childNodes)return p.childNodes.length;if(p.header){let g=h+1,m=0;for(;g<f.length&&!f[g].header;)m++,g++;return m}else return 0},i=rh(p=>Array.isArray(r)?r.some(f=>Cw(p,f)):n,[n,r]),l=rh((p,f,h=1,g="",m=[],y=[])=>{let w=0;return p.forEach((v,x,S)=>{var L;let b=v.header&&t,C=v.childNodes&&t===!1,M=!v.childNodes||v.childNodes.length===0,D=C||M&&!b,E=g?`${g}.${x}`:`${x}`,O=(L=v.id)!=null?L:`${e}-${E}`,T=D?void 0:i(O),P={...v,childNodes:void 0,id:O,count:!C&&T===void 0?0:s(v,S,x),expanded:T,index:f.index,level:h};if(m.push(P),y.push(p[x]),w+=1,f.index+=1,v.childNodes){let[N,A]=l(v.childNodes,f,h+1,E,[],y);P.childNodes=A,(T===!0||C)&&(w+=N)}}),[w,m,y]},[t,e,i]),[a,u,c]=YB(()=>l(o,{index:0}),[l,o]),d=rh((p,f=u)=>{let h=f.find(g=>{var m;return g.id===p||((m=g==null?void 0:g.childNodes)==null?void 0:m.length)&&Cw(g.id,p)});if((h==null?void 0:h.id)===p)return c[h.index];if(h)return d(p,h.childNodes)},[c,u]);return[a,u,d]};import{useCallback as Ui,useRef as t2}from"react";import{useControlled as n2}from"@salt-ds/core";var ww="single",o2="checkbox",r2="multi",s2="extended",i2=["Enter"," "],Tw={},l2=o=>o.expanded!==void 0,Ew=o=>o&&o!=="none",Mw=({defaultSelected:o,highlightedIdx:e,treeNodes:t,onChange:n,selected:r,selection:s=ww,selectionKeys:i=i2})=>{let l=s===ww,a=s===r2||s.startsWith(o2),u=s===s2,c=t2(-1),d=Ui(x=>i.includes(x.key),[i]),[p,f]=n2({controlled:r,default:o!=null?o:[],name:"selected"}),h=Ui((x,S,b,C,M=!1)=>{let{current:D}=c,E=p==null?void 0:p.includes(b),T=l||u&&!M&&(!C||D===-1),P=a||u&&M&&!C,L=[];if(T&&E)L=[];else if(T)L=[b];else if(P&&E)L=p.filter(N=>N!==b);else if(P)L=p.concat(b);else if(u){let[N,A]=S>D?[D,S]:[S,D];L=p.slice();for(let k=N;k<=A;k++){let{id:I}=t[k];p.includes(I)||L.push(I)}}f(L),n&&n(x,L)},[u,t,a,n,p,f,l]),g=Ui(x=>{if(~e&&d(x)){x.preventDefault();let S=t[e];h(x,e,S.id,!1,x.ctrlKey||x.metaKey),u&&(c.current=e)}},[u,e,t,d,h]),m=Ui((x,S)=>{if(u&&x.shiftKey){let b=t[S];h(x,S,b.id,!0)}},[u,t,h]),y=s==="none"?Tw:{onKeyDown:g,onKeyboardNavigation:m},w=Ui(x=>{if(e!==-1){let S=t[e];l2(S)||(x.preventDefault(),x.stopPropagation(),h(x,e,S.id,x.shiftKey,x.ctrlKey||x.metaKey),u&&(c.current=e))}},[u,e,t,h]);return{listHandlers:y,listItemHandlers:s==="none"?Tw:{onClick:w},selected:p,setSelected:f}};import{useCallback as sh,useEffect as Rw,useLayoutEffect as a2,useRef as Tu}from"react";var u2=["height","scrollHeight"],Dw=(o,e,t=!1)=>{let n=Tu(0),r=Tu(!1),s=Tu(0),i=Tu(0),l=sh(c=>{let d=c.ariaExpanded?c.firstChild:c,p=t?30:0,f=d.offsetTop,h=d.offsetHeight,g=n.current+p,m=g+s.current-p;(f+h>m||f<g)&&(n.current=f+h>m?n.current+(f+h)-m:f-p,r.current=!0,o.current&&(o.current.scrollTop=n.current),setTimeout(()=>{r.current=!1}))},[o,t]),a=sh(c=>{n.current=c.target.scrollTop},[]);Rw(()=>{let{current:c}=o;return c&&c.addEventListener("scroll",a),()=>{c&&c.removeEventListener("scroll",a)}},[o,a]),a2(()=>{if(e!==-1&&i.current>s.current&&o.current){let c=o.current.querySelector(`
29
- [data-idx='${e}'],
30
- [aria-posinset='${e+1}']
31
- `);c===null?console.log("[useViewportTracking], is this virtualised ? we're going to have to know rowHeight"):l(c)}},[e,o,l]),Rw(()=>{},[t]);let u=sh(({height:c,scrollHeight:d})=>{s.current=c,i.current=d},[]);return Nn(o,u2,u,!0),r};import{useCallback as Uw,useRef as T2}from"react";import{useCallback as Gi,useMemo as Fw,useRef as Vw}from"react";var Pw=({id:o})=>{let e=o.lastIndexOf("-");if(e!==-1){let n=o.slice(e+1).split(".");return n.length===1?null:(n.pop(),`${o.slice(0,e)}-${n.join(".")}`)}else if((e=o.lastIndexOf("/"))!==-1)return o.slice(0,e)},kw=o=>o.childNodes!==void 0;var ih=o=>o.header===!0,c2=new Set([".","/"]),Iw=(o,e)=>e.startsWith(o.id)?c2.has(e.charAt(o.id.length)):!1,xr=(o,e)=>{for(let t of o){if(t.id===e)return t;if(Iw(t,e))return xr(t.childNodes,e)}},Eu=(o,e)=>{let t=typeof e=="string"?e:e.id;for(let n=0;n<o.length;n++)if(o[n].id===t)return n},Mu=(o,e,t)=>{let n;return o.map(s=>s.id===e?{...s,...t}:Iw(s,e)?(n=Mu(s.childNodes,e,t),{...s,childNodes:n}):s)};import{useControlled as b2}from"@salt-ds/core";function d2(o,...e){let t=new Set(o);for(let n of e)for(let r of n)t.add(r);return t}var lh="ArrowUp",Lw="ArrowDown",Ms="ArrowLeft";var Aw="ArrowRight",Ru="Enter";var p2="Delete",f2=new Set([Ru,p2]),h2=new Set(["Tab"]),m2=new Set(["ArrowRight","ArrowLeft"]),Ow=new Set(["Home","End","ArrowDown","ArrowUp"]),Nw=new Set(["Home","End","ArrowRight","ArrowLeft"]),g2=new Set(["F1","F2","F3","F4","F5","F6","F7","F8","F9","F10","F11","F12"]),OCe=d2(f2,Nw,Ow,m2,g2,h2);var Hw=({key:o},e="vertical")=>(e==="vertical"?Ow:Nw).has(o);function Bw(o,e,t){return e===lh||e===Ms?t>0?t-1:t:t===null?0:t===o-1?t:t+1}var y2=o=>!o.header&&!o.childNodes,x2=o=>y2(o)||o.expanded!==void 0,zw=({defaultHighlightedIdx:o=-1,highlightedIdx:e,treeNodes:t,onHighlight:n,onKeyboardNavigation:r,selected:s=[]})=>{let{bwd:i,fwd:l}=Fw(()=>({bwd:lh,fwd:Lw}),[]),[a,u,c]=b2({controlled:e,default:o,name:"highlightedIdx"}),d=Gi(x=>{n==null||n(x),u(x)},[n,u]),p=Gi((x=l,S=x===l?-1:t.length)=>{let b=Bw(t.length,x,S);for(;b!==-1&&(x===l&&b<t.length||x===i&&b>0)&&!x2(t[b]);)b=Bw(t.length,x,b);return b},[i,l,t]),f=Vw(!0),h=Vw(!1),g=x=>h.current=x,m=Gi(()=>{if(h.current)h.current=!1;else if(s.length>0){let x=xr(t,s[0]);if(x){let S=Eu(t,x);d(S)}}else d(p())},[t,p,s,d]),y=Gi(x=>{let S=p(x.key,a);S!==a&&(d(S),r==null||r(x,S))},[a,p,r,d]),w=Gi(x=>{t.length>0&&Hw(x,"vertical")&&(x.preventDefault(),x.stopPropagation(),f.current=!0,y(x))},[t,y]),v=Fw(()=>({onBlur:()=>{d(-1)},onFocus:m,onKeyDown:w,onMouseDownCapture:()=>{f.current=!1,g(!0)},onMouseMove:()=>{f.current&&(f.current=!1)},onMouseLeave:()=>{f.current=!0,g(!1),d(-1)}}),[m,w,d]);return{focusVisible:f.current?a:-1,controlledHighlighting:c,highlightedIdx:a,hiliteItemAtIndex:d,keyBoardNavigation:f,listProps:v,setIgnoreFocus:g}};import{useRef as ah,useState as v2}from"react";var Du=(o,e=[],t={value:0})=>{let n=!1;for(let r of o)n&&!ih(r)||(e[t.value]=r,t.value+=1,n=!1,ih(r)&&r.expanded===!1?n=!0:kw(r)&&uh(r)&&Du(r.childNodes,e,t));return e},$w=o=>{let e=ah(o),t=ah(o),n=ah(Du(o)),[,r]=v2({});o!==e.current&&(e.current=o,t.current=o,n.current=Du(o));let s=i=>{t.current=i,n.current=Du(i),r({})};return{data:t.current,indexPositions:n.current,setData:s}};import{useCallback as qi,useRef as Ww}from"react";var C2={},S2=o=>o&&o.hasAttribute("aria-expanded"),_w=({collapsibleHeaders:o,highlightedIdx:e,treeNodes:t,setVisibleData:n,source:r})=>{let s=Ww(r),i=Ww(s.current),l=qi(h=>{n(i.current=h)},[n]),a=qi((h,{id:g})=>Mu(h,g,{expanded:!0}),[]),u=qi((h,{id:g})=>Mu(h,g,{expanded:!1}),[]),c=qi(h=>{if(h.key===Aw||h.key===Ru){let g=t[e];g&&g.expanded===!1&&(h.preventDefault(),l(a(i.current,g)))}if(h.key===Ms||h.key===Ru){let g=t[e];g&&g.expanded&&(h.preventDefault(),l(u(i.current,g)))}},[u,a,e,t,l]),d=o?{onKeyDown:c}:C2,f={onClick:qi(h=>{let g=oh(h.target);if(S2(g)){h.stopPropagation(),h.preventDefault();let m=xr(r,g.id);(m==null?void 0:m.expanded)===!1?l(a(r,m)):(m==null?void 0:m.expanded)===!0&&l(u(r,m))}},[u,a,l,r])};return{listHandlers:d,listItemHandlers:f}};import{useCallback as w2}from"react";var Kw=({highlightedIdx:o,hiliteItemAtIndex:e,indexPositions:t,source:n})=>({listHandlers:{onKeyDown:w2(i=>{if(i.key===Ms){let l=t[o],a=Pw(l);if(a){i.preventDefault();let u=xr(n,a);if(u){let c=Eu(t,u);c!==void 0&&e(c)}}}},[o,e,t,n])}});var E2=[],Gw=({defaultSelected:o,sourceWithIds:e,onChange:t,onHighlight:n,selected:r,selection:s})=>{let i=T2(E2),l=$w(e),a=(v,x)=>{var S,b;(b=(S=p.listHandlers).onKeyboardNavigation)==null||b.call(S,v,x)},{highlightedIdx:u,...c}=zw({treeNodes:l.indexPositions,onHighlight:n,onKeyboardNavigation:a,selected:i.current}),d=_w({collapsibleHeaders:!0,highlightedIdx:u,treeNodes:l.indexPositions,setVisibleData:l.setData,source:l.data}),p=Mw({defaultSelected:o,highlightedIdx:u,treeNodes:l.indexPositions,onChange:t,selected:r,selection:s}),f=Kw({source:l.data,highlightedIdx:u,hiliteItemAtIndex:c.hiliteItemAtIndex,indexPositions:l.indexPositions}),h=Uw(v=>{var x,S,b;(x=d.listItemHandlers)==null||x.onClick(v),v.defaultPrevented||(b=(S=p.listItemHandlers)==null?void 0:S.onClick)==null||b.call(S,v)},[d,p]),g=Uw(v=>{var x,S,b,C,M,D,E,O;(S=(x=c.listProps).onKeyDown)==null||S.call(x,v),v.defaultPrevented||(C=(b=p.listHandlers).onKeyDown)==null||C.call(b,v),v.defaultPrevented||(D=(M=d.listHandlers).onKeyDown)==null||D.call(M,v),v.defaultPrevented||(O=(E=f.listHandlers).onKeyDown)==null||O.call(E,v)},[d.listHandlers,c.listProps,p.listHandlers,f.listHandlers]),m=()=>{var v;return u===void 0||u===-1||(v=l.indexPositions[u])==null?void 0:v.id};i.current=p.selected;let y={"aria-activedescendant":m(),onBlur:c.listProps.onBlur,onFocus:c.listProps.onFocus,onKeyDown:g,onMouseDownCapture:c.listProps.onMouseDownCapture,onMouseLeave:c.listProps.onMouseLeave,onMouseMove:c.listProps.onMouseMove},w={onClick:h};return{focusVisible:c.focusVisible,highlightedIdx:u,hiliteItemAtIndex:c.hiliteItemAtIndex,listProps:y,listItemHandlers:w,selected:p.selected,visibleData:l.data}};import{jsx as Mo,jsxs as ch}from"react/jsx-runtime";import{createElement as L2}from"react";var Eo="vuuTree",uh=o=>o.expanded===!0,qw=({children:o,idx:e,...t})=>Mo("li",{...t,children:o}),k2=D2(function({allowDragDrop:e,className:t,defaultSelected:n,groupSelection:r="none",id:s,onHighlight:i,onSelectionChange:l,revealSelected:a,selected:u,selection:c="single",source:d,...p},f){var A;let h=R2(s),g=P2(null),[,m,y]=Sw(d,h,{revealSelected:a?(A=u!=null?u:n)!=null?A:!1:void 0}),w=(k,I)=>{if(l){let F=I.map(H=>y(H)).filter(H=>H!==void 0);l(F)}},{focusVisible:v,highlightedIdx:x,hiliteItemAtIndex:S,listProps:b,listItemHandlers:C,selected:M,visibleData:D}=Gw({defaultSelected:n,groupSelection:r,onChange:w,onHighlight:i,selected:u,selection:c,sourceWithIds:m});Dw(g,x);let O={...{onMouseEnter:k=>{let I=k.target,F=vw(I);S(F)}},...C,role:"treeitem"},T=Ew(r);function P(k,I,F){k.push(ch(qw,{...O,...I2(I,F,x,M,v),children:[I.icon?Mo("span",{className:`${Eo}Node-icon`,"data-icon":I.icon}):null,Mo("span",{children:I.label})]})),F.value+=1}function L(k,I,F,H,B){let{value:$}=F;F.value+=1,k.push(L2(qw,{...C,"aria-expanded":I.expanded,"aria-level":I.level,"aria-selected":M.includes(H)||void 0,className:dh(`${Eo}Node`,{focusVisible:v===$,[`${Eo}Node-toggle`]:!T}),"data-idx":$,"data-highlighted":$===x||void 0,"data-selectable":!0,id:H,key:`header-${$}`},T?ch("div",{className:`${Eo}Node-label`,children:[Mo("span",{className:`${Eo}Node-toggle`}),B]}):ch("div",{className:`${Eo}Node-label`,children:[I.icon?Mo("span",{className:`${Eo}Node-icon`,"data-icon":I.icon}):null,Mo("span",{children:B})]}),Mo("ul",{role:"group",children:uh(I)?N(I.childNodes,F):""})))}function N(k,I={value:0}){if((k==null?void 0:k.length)>0){let F=[];for(let H of k)H.childNodes?L(F,H,I,H.id,H.label):P(F,H,I);return F}}return Mo("ul",{...p,...b,className:dh(Eo,t),id:`Tree-${h}`,ref:M2(g,f),role:"tree",tabIndex:0,children:N(D)})}),I2=(o,e,t,n,r,s)=>({id:o.id,key:o.id,"aria-level":o.level,"aria-selected":n.includes(o.id)||void 0,"data-idx":e.value,"data-highlighted":e.value===t||void 0,className:dh("vuuTreeNode",s,{focusVisible:r===e.value})});k2.displayName="Tree";import{Input as zSe}from"@salt-ds/core";import _Se from"classnames";import{useCallback as QSe}from"react";import{jsx as JSe}from"react/jsx-runtime";import{Button as Q2}from"@salt-ds/core";import{default as j2,default as J2}from"classnames";import{cloneElement as o0,useRef as X2,useState as r0}from"react";import{useCallback as Qi,useState as O2}from"react";var Pu=(o,e,t,n)=>{var m;let{loadSessionState:r,purgeSessionState:s,purgeState:i,saveSessionState:l}=Dr(),[a,u]=O2((m=r(o,"contributions"))!=null?m:[]),c=Tt(),d=Qi((y,w)=>{let v=a.concat([{location:y,content:w}]);l(o,"contributions",v),u(v)},[a,o,l]),p=Qi(()=>{s(o,"contributions"),u([])},[o,s]),f=Qi(()=>{let y=r(o,"data-source");y&&y.unsubscribe(),s(o),i(o),c({type:"remove",path:t})},[c,o,r,s,i,t]),h=Qi(async(y,w,v)=>{var S;y.stopPropagation();let x=(S=e.current)==null?void 0:S.getBoundingClientRect();return new Promise((b,C)=>{c({type:"drag-start",evt:y,path:w===void 0?t:`${t}.${w}`,dragRect:x,preDragActivity:v,dropTargets:n,resolveDragStart:b,rejectDragStart:C})})},[e,c,t,n]);return[Qi(async(y,w)=>{var x;let{type:v}=y;switch(v){case"maximize":case"minimize":case"restore":return c({type:v,path:(x=y.path)!=null?x:t});case"remove":return f();case"mousedown":return h(w,y.index,y.preDragActivity);case"add-toolbar-contribution":return d(y.location,y.content);case"remove-toolbar-contribution":return p();default:return}},[c,t,f,h,d,p]),a]};import{useForkRef as B2,useIdMemo as z2}from"@salt-ds/core";import $2 from"classnames";import hh,{forwardRef as W2,useCallback as _2,useMemo as K2,useRef as e0,useState as U2}from"react";import{useCallback as vr,useMemo as Qw}from"react";var jw=({id:o,rootRef:e,path:t,dropTargets:n,title:r})=>{let s=Tt(),{loadState:i,loadSessionState:l,purgeState:a,saveState:u,saveSessionState:c}=Dr(),[d,p]=Pu(o,e,t,n),f=Qw(()=>{var b;return(b=i("view-title"))!=null?b:r},[i,r]),h=vr(b=>{t&&s({type:"set-title",path:t,title:b})},[s,t]),g=Qw(()=>i(o),[o,i]),m=vr(b=>i(o,b),[o,i]),y=vr(b=>{a(o,b),s({type:"save"})},[o,s,a]),w=vr((b,C)=>{u(o,C,b),s({type:"save"})},[o,s,u]),v=vr(b=>l(o,b),[o,l]),x=vr((b,C)=>c(o,C,b),[o,c]),S=vr(({type:b,...C})=>{let{[b]:M}=C;w(M,b)},[w]);return{contributions:p,dispatchViewAction:d,load:m,loadSession:v,onConfigChange:S,onEditTitle:h,purge:y,restoredState:g,save:w,saveSession:x,title:f}};import{useCallback as Jw,useRef as Xw}from"react";var N2=[],Yw=({mainRef:o,resize:e="responsive",rootRef:t})=>{let n=e==="defer",r=Xw({}),s=Xw(),i=Jw(()=>{o.current&&(o.current.style.height=r.current.height+"px",o.current.style.width=r.current.width+"px"),s.current=void 0},[o]),l=Jw(({height:a,width:u})=>{r.current.height=a,r.current.width=u,s.current!==null&&clearTimeout(s.current),s.current=window.setTimeout(i,40)},[i]);ml(t,n?Om:N2,l,n)};import H2,{useContext as F2}from"react";var V2={dispatch:null},ph=H2.createContext(V2),Zw=()=>{var e;let o=F2(ph);return(e=o==null?void 0:o.dispatch)!=null?e:null};import{jsx as fh,jsxs as q2}from"react/jsx-runtime";var ji="vuuView",G2=(o,e)=>o&&e?{...o,...e}:o||e,t0=W2(function(e,t){let{Header:n=n0,children:r,className:s,collapsed:i,closeable:l,"data-path":a,"data-resizeable":u,dropTargets:c,expanded:d,flexFill:p,id:f,header:h,orientation:g="horizontal",path:m=a,resize:y="responsive",resizeable:w=u,tearOut:v,style:x={},title:S,...b}=e,C=z2(f),M=e0(null),D=e0(null),[E,O]=U2(),{contributions:T,dispatchViewAction:P,load:L,loadSession:N,onConfigChange:A,onEditTitle:k,purge:I,restoredState:F,save:H,saveSession:B,title:$}=jw({id:C,rootRef:M,path:m,dropTargets:c,title:S});Yw({mainRef:D,resize:y,rootRef:M});let G=_2(X=>{O(X)},[]),q=()=>hh.isValidElement(r)&&(F||E)?hh.cloneElement(r,G2(F,E)):r,j=K2(()=>({dispatch:P,id:C,path:m,title:$,load:L,loadSession:N,onConfigChange:A,purge:I,save:H,saveSession:B,setComponentProps:G}),[P,C,L,N,A,m,I,H,B,G,$]),U=typeof h=="object"?h:{};return fh("div",{...b,className:$2(ji,s,{[`${ji}-collapsed`]:i,[`${ji}-expanded`]:d,[`${ji}-resize-defer`]:y==="defer"}),"data-resizeable":w,id:C,ref:B2(t,M),style:x,tabIndex:-1,children:q2(ph.Provider,{value:j,children:[h?fh(n,{...U,collapsed:i,contributions:T,expanded:d,closeable:l,onEditTitle:k,orientation:g,tearOut:v,title:$}):null,fh("div",{className:`${ji}-main`,ref:D,children:q()})]})})});t0.displayName="View";var Cr=hh.memo(t0);Cr.displayName="View";$e("View",Cr,"view");import{jsx as Ji}from"react/jsx-runtime";var mh="vuuHeader",n0=({className:o,contributions:e,collapsed:t,closeable:n,onEditTitle:r,orientation:s="horizontal",style:i,title:l="Untitled"})=>{let a=X2(null),[u,c]=r0(l),[d,p]=r0(!1),f=Zw(),h=E=>f==null?void 0:f({type:"remove"},E),g=()=>{var E;(E=a.current)==null||E.focus()},m=E=>{E.stopPropagation()},w=j2(mh,o,`${mh}-${t||s}`),v=()=>{p(!0)},x=E=>{E.key==="Enter"&&p(!0)},S=(E="",O="",T=!0,P=!1)=>{var L;p(!1),P?c(E):O!==E&&(c(O),r==null||r(O)),T===!1&&((L=a.current)==null||L.focus())},b=E=>{f==null||f({type:"mousedown"},E)},C=[],M=[],D=[];return e==null||e.forEach((E,O)=>{switch(E.location){case"pre-title":C.push(o0(E.content,{key:O}));break;default:M.push(o0(E.content,{key:O}))}}),l&&C.push(Ji(Bo,{className:`${mh}-title`,editing:d,value:u,onChange:c,onMouseDownCapture:g,onEnterEditMode:v,onExitEditMode:S,onKeyDown:x,ref:a,tabIndex:0},"title")),n&&D.push(Ji(Q2,{"data-icon":"close",onClick:h,onMouseDown:m,variant:"secondary"},"close")),M.length>0&&C.push(Ji("div",{className:"vuuTooltrayProxy","data-align":"end",children:M},"contributions")),D.length>0&&C.push(Ji("div",{className:"vuuTooltrayProxy","data-align":"end",children:D},"actions")),Ji("div",{className:J2("vuuToolbarProxy",w),style:i,onMouseDown:b,children:C})};import{forwardRef as pz}from"react";import{isValidNumber as Ro}from"@vuu-ui/vuu-utils";import{useCallback as ez,useEffect as tz,useMemo as nz,useRef as oz,useState as rz}from"react";import{useCallback as Y2,useEffect as s0,useRef as Z2}from"react";var Sr=new Map,l0=(o,e,t)=>{switch(t){case"height":return e.height;case"clientHeight":return o.clientHeight;case"clientWidth":return o.clientWidth;case"contentHeight":return e.contentHeight;case"contentWidth":return e.contentWidth;case"scrollHeight":return Math.ceil(o.scrollHeight);case"scrollWidth":return Math.ceil(o.scrollWidth);case"width":return e.width;default:return 0}},i0=new ResizeObserver(o=>{for(let e of o){let{target:t,borderBoxSize:n,contentBoxSize:r}=e,s=Sr.get(t);if(s){let[{blockSize:i,inlineSize:l}]=n,[{blockSize:a,inlineSize:u}]=r,{onResize:c,measurements:d}=s,p=!1;for(let[f,h]of Object.entries(d)){let g=l0(t,{height:i,width:l,contentHeight:a,contentWidth:u},f);g!==h&&(p=!0,d[f]=g)}p&&c&&c(d)}}});function a0(o,e,t,n=!1){let r=Z2(e),s=Y2(i=>{let{width:l,height:a}=i.getBoundingClientRect(),{clientWidth:u,clientHeight:c}=i;return r.current.reduce((d,p)=>(d[p]=l0(i,{width:l,height:a,contentHeight:c,contentWidth:u},p),d),{})},[]);s0(()=>{let i=o.current;async function l(){Sr.set(i,{measurements:{}});let a=Sr.get(i);if(a){let u=s(i);a.measurements=u,i0.observe(i),n&&t(u)}else console.log("%cuseResizeObserver an target expected to be under observation wa snot found. This warrants investigation","font-weight:bold; color:red;")}return i&&(Sr.has(i)&&console.log("useResizeObserver attemping to observe same element twice",{target:i}),l()),()=>{i&&Sr.has(i)&&(i0.unobserve(i),Sr.delete(i))}},[s,o]),s0(()=>{let i=o.current,l=Sr.get(i);if(l){if(r.current!==e){r.current=e;let a=s(i);l.measurements=a}l.onResize=t}},[e,s,o,t])}var sz=["clientHeight","clientWidth"],iz=["clientWidth"],lz=["clientHeight"],az=[],ku=o=>Number.isFinite(o),uz={height:"100%",width:"100%"},cz=(o,e)=>Ro(o)&&Ro(e)?{height:`${o}px`,width:`${e}px`}:typeof o=="string"&&typeof e=="string"?{height:o,width:e}:uz,dz=(o,e)=>{if(Ro(o)&&Ro(e))return{height:o,width:e}},u0=({defaultHeight:o=0,defaultWidth:e=0,height:t,onResize:n,width:r})=>{let s=oz(null),[i,l]=rz({css:cz(t,r),inner:dz(t,r),outer:{height:t!=null?t:"100%",width:r!=null?r:"100%"}}),a=typeof t=="number",u=typeof r=="number",c=a&&u?az:a?iz:u?lz:sz;nz(()=>{l(p=>{let{inner:f,outer:h}=p;if(Ro(t)&&Ro(r)&&f&&h){let{height:g,width:m}=f,{height:y,width:w}=h;if(y!==t||w!==r){let v=Ro(y)?y-g:0,x=Ro(w)?w-m:0;return{...p,outer:{height:t,width:r},inner:{height:t-v,width:r-x}}}}return p})},[t,r]);let d=ez(({clientWidth:p,clientHeight:f})=>{let{css:h,inner:g,outer:m}=i,y=i;a&&ku(p)&&p!==(g==null?void 0:g.width)?y={css:h,outer:m,inner:{width:Math.floor(p)||e,height:t}}:u&&ku(f)&&f!==(g==null?void 0:g.height)?y={css:h,outer:m,inner:{height:Math.floor(f)||o,width:r}}:ku(f)&&ku(p)&&(p!==(g==null?void 0:g.width)||f!==(g==null?void 0:g.height))&&(y={css:h,outer:m,inner:{width:Math.floor(p)||e,height:Math.floor(f)||o}}),y!==i&&l(y)},[o,e,a,u,t,i,r]);return tz(()=>{i.inner&&(n==null||n(i.inner))},[n,i.inner]),a0(s,c,d,!0),{containerRef:s,cssSize:i.css,outerSize:i.outer,innerSize:i.inner}};import{useForkRef as fz}from"@salt-ds/core";import c0 from"classnames";import{jsx as d0}from"react/jsx-runtime";var gh="vuuMeasuredContainer",Bl=pz(function({children:e,className:t,height:n,onResize:r,style:s,width:i,...l},a){let{containerRef:u,...c}=u0({height:n,onResize:r,width:i}),{cssSize:d,innerSize:p}=c,f=p===void 0,h=()=>f?{"--measured-css-height":`${d.height}`,"--measured-css-width":`${d.width}`}:{...s,"--measured-css-height":`${d.height}`,"--measured-css-width":`${d.width}`,"--measured-px-height":`${p==null?void 0:p.height}px`,"--measured-px-width":`${p==null?void 0:p.width}px`},g=fz(u,a);return f?d0("div",{...l,className:c0(gh,`${gh}-ummeasured`),style:h(),ref:u}):d0("div",{...l,className:c0(gh,t),ref:g,style:h(),children:e})});import Lu from"classnames";import Ch,{forwardRef as kz}from"react";import{isValidNumber as Rz,MEASURES as Dz}from"@vuu-ui/vuu-utils";import{useCallback as xh,useMemo as vh,useRef as C0,useState as Pz}from"react";import{getElementByDataIndex as p0}from"@vuu-ui/vuu-utils";var hz=".vuuOverflowContainer-item:not(.wrapped)",mz=o=>o.sort((e,t)=>{let{dataset:{index:n="?"}}=e,{dataset:{index:r="?"}}=t,s=e.classList.contains("wrapped"),i=t.classList.contains("wrapped"),l=n==="overflow",a=r==="overflow";return s&&!i?1:!s&&i?-1:l?1:a?-1:parseInt(n)>parseInt(r)?1:-1}),bh=[],Xi=(o,e="horizontal")=>{let t=[],n=[],r=-1,s=!1,i=mz(Array.from(o.children)),l=e==="vertical"?"top":"left";for(let a of i){let u=a,{dataset:{index:c="?",label:d="?",overflowPriority:p="0"}}=u,{[l]:f}=u.getBoundingClientRect();f<=r?(c==="overflow"?n.push(t.pop()):n.push({index:c,label:d,overflowPriority:p}),s=!0):s?n.push({index:c,label:d,overflowPriority:p}):t.push({index:c,label:d,overflowPriority:p}),r=f}return[t,n]},f0=(o,e)=>{let t=!1;e.find(({index:n})=>n==="overflow")&&e.length===1&&(t=!0);for(let n of o.children){let{dataset:{index:r="?"}}=n;e.length===0||t?o.classList.remove("overflowed"):o.classList.add("overflowed"),r!=="overflow"&&e.find(s=>s.index===r)?n.classList.add("wrapped"):n.classList.remove("wrapped")}},gz=(o,{overflowPriority:e})=>Math.max(o,parseInt(e)),bz=(o,{overflowPriority:e})=>Math.min(o,parseInt(e)),h0=o=>{var e;return o.length>1&&((e=o.at(-1))==null?void 0:e.index)==="overflow"},yz=o=>{let[e]=o;for(let t=1;t<o.length;t++){let n=o[t];parseInt(n.overflowPriority)>parseInt(e.overflowPriority)&&(e=n)}return e},m0=(o,e)=>{var r;let t=o.reduce(bz,Number.MAX_SAFE_INTEGER);return e.reduce(gz,0)>t?!0:e.length>1&&((r=e.at(-1))==null?void 0:r.index)==="overflow"},g0=(o,e)=>new Promise(t=>{requestAnimationFrame(()=>{let[,n]=Xi(o);Cz(e,n).forEach(s=>xz(o,s)),t(n)})}),b0=(o,e,t)=>new Promise(n=>{requestAnimationFrame(()=>{let[,r]=Xi(o),s=yz(r);if(s){let[i,l]=yh(o,s);n([i,l])}else n([e,t])})}),xz=(o,e)=>{let t=p0(o,e.index);if(t)t.classList.add("wrapped");else throw Error(`markElementAsWrapped element item with index ${e.index} not found`)},vz=o=>Array.from(o.querySelectorAll(".wrapped")),Cz=(o,e)=>{let t=[];for(let n of e)o.find(({index:r})=>r===n.index)||t.push(n);return t},Sz=(o,e)=>{vz(o).forEach(n=>{let{dataset:{index:r="?"}}=n;e.find(s=>s.index===r)||n.classList.remove("wrapped")})},y0=o=>o.querySelector('[data-index="overflow"]'),wz=o=>o.querySelector(".wrapped"),Iu=o=>parseInt(getComputedStyle(o).getPropertyValue("width")),x0=(o,e)=>{let{right:t}=o.getBoundingClientRect(),n=parseInt(getComputedStyle(o).getPropertyValue("padding-right")),{right:r}=e.getBoundingClientRect();return t-n-r},v0=o=>{let e=y0(o),t=x0(o,e),n=Iu(e),r=wz(o);return Iu(r)<=t+n?(o.classList.remove("overflowed"),r.classList.remove("wrapped"),!0):!1},Tz=(o,e)=>{let{dataset:{index:t="0",overflowPriority:n="0"}}=o,{dataset:{index:r="0",overflowPriority:s="0"}}=e;return n>s?-1:n<s?1:parseInt(t)-parseInt(r)},Ez=o=>Array.from(o.querySelectorAll(hz)).sort(Tz),yh=(o,e)=>{let t=Ez(o),n=p0(o,e.index,!0),r=-1,s=t.at(r),i=Iu(s),l=Iu(n),a=y0(o),u=x0(o,a)+i;if(u>=l)Mz(n,s);else{let{left:p}=s.getBoundingClientRect(),f=u,h=[s];for(;u<l;){r-=1,s=t.at(r),h.push(s);let{left:g}=s.getBoundingClientRect(),m=p-g;u=f+m}n==null||n.classList.remove("wrapped"),h.forEach(g=>{g.classList.add("wrapped")})}let[c,d]=Xi(o);return Sz(o,d),[c,d]},Mz=(o,e)=>{if(!o||!e)throw Error("switchWrapOnElements, element undefined");o.classList.remove("wrapped"),e.classList.add("wrapped")};var S0=({allowDragDrop:o=!1,itemCount:e,onMoveItem:t,onSwitchWrappedItemIntoView:n,orientation:r="horizontal"})=>{let[s,i]=Pz(null),l=C0(bh),a=C0(null),u=xh(async()=>{if(s){let[w,v]=Xi(s,r);for(f0(s,v),h0(v)&&(v=await g0(s,v));m0(w,v);)[w,v]=await b0(s,w,v);v.length===1&&v0(s)&&(v=bh),l.current=v}},[s,r]),c=w=>typeof w=="object"&&w!==null&&"overflowItem"in w,[d,p]=vh(()=>[()=>{let{current:w}=l;return w.map(v=>({label:v.label,action:`activate-item-${v.index}`,options:{overflowItem:v}}))},({options:w})=>{if(s&&c(w)){let[,v]=yh(s,w.overflowItem);l.current=v,n==null||n(w.overflowItem)}return!0}],[s,n]),f=vh(()=>{let{sizeProp:w}=Dz[r],v=0;return new ResizeObserver(x=>{for(let S of x){let{[w]:b}=S.contentRect,C=Math.round(b);Rz(C)&&v!==C&&(v=C,u())}})},[u,r]);on(()=>{u()},[u,e]),vh(()=>{s&&f.observe(s)},[s,f]);let h=xh(w=>{i(a.current=w)},[]),g=xh((w,v)=>{t==null||t(w,v)},[t]),{onMouseDown:m,...y}=Hn({allowDragDrop:o,containerRef:a,draggableClassName:"vuuOverflowContainer",onDrop:g,orientation:"horizontal",itemQuery:".vuuOverflowContainer-item"});return{menuActionHandler:p,menuBuilder:d,onItemMouseDown:m,rootRef:h,...y}};import{jsx as Yi,jsxs as Iz}from"react/jsx-runtime";var Rs="vuuOverflowContainer",w0=Ch.memo(({allowDragDrop:o,children:e,className:t,height:n,id:r,onMoveItem:s,onSwitchWrappedItemIntoView:i,orientation:l="horizontal",overflowIcon:a,overflowPosition:u="end"})=>{let c=ko(e),{draggable:d,draggedItemIndex:p,menuActionHandler:f,menuBuilder:h,onItemMouseDown:g,rootRef:m}=S0({allowDragDrop:o,itemCount:c.length,onMoveItem:s,onSwitchWrappedItemIntoView:i,orientation:l});console.log(`Overflow container WRAPPER ${Ch.Children.count(e)} children`);let w={"--overflow-container-height":`${l==="vertical"?"100%":`${n}px`}`},v=Lu(`${Rs}-wrapContainer`,t,{[`${Rs}-horizontal`]:l==="horizontal",[`${Rs}-vertical`]:l==="vertical"}),x=c.map((b,C)=>{let{"data-align":M,"data-overflow-priority":D="0",id:E=`${r}-${C}`,label:O=`Item ${C+1}`}=b.props;return Yi("div",{className:Lu(`${Rs}-item`,{"vuuDraggable-dragAway":p===C}),"data-index":C,"data-align":M,"data-label":O,"data-overflow-priority":D,id:`${E}-wrapper`,onMouseDown:g,children:b},C)}),S=Yi("div",{className:`${Rs}-OverflowIndicator`,"data-index":"overflow",children:Yi(Ki,{icon:a,menuBuilder:h,menuActionHandler:f})},"overflow");return x.push(S),Iz("div",{className:v,ref:m,style:w,children:[x,d]})});w0.displayName="OverflowContainer.InnerContainer";var di=kz(function({allowDragDrop:e=!1,children:t,className:n,height:r=44,id:s,onMoveItem:i,onSwitchWrappedItemIntoView:l,orientation:a,overflowIcon:u,overflowPosition:c,...d},p){let f=Pe(s);return console.log(`Overflow container ${Ch.Children.count(t)} children`),Yi("div",{...d,className:Lu(Lu(Rs,n)),id:f,ref:p,children:Yi(w0,{allowDragDrop:e,height:r,id:f,orientation:a,overflowIcon:u,overflowPosition:c,onMoveItem:i,onSwitchWrappedItemIntoView:l,children:t})})});import{uuid as Lz}from"@vuu-ui/vuu-utils";import T0 from"classnames";import{cloneElement as Az,memo as Oz}from"react";import{jsx as Sh}from"react/jsx-runtime";var Nz=o=>{let e=o.cloneNode(!0);return e.id="",delete e.dataset.idx,e},wh=Oz(({className:o,children:e,idx:t,resizeable:n,header:r,closeable:s,...i})=>Sh(no,{className:T0("vuuPaletteItem",o),"data-draggable":!0,"data-icon":"draggable",...i}));wh.displayName="PaletteItem";var E0=({children:o,className:e,itemHeight:t=41,orientation:n="horizontal",ViewProps:r,...s})=>{let i=Tt(),l="vuuPalette";function a(u){var M,D;let d=u.target.closest(".vuuPaletteItem"),p=parseInt((D=(M=d.dataset)==null?void 0:M.index)!=null?D:"-1"),{props:{caption:f,children:h,template:g,...m}}=o[p],{height:y,left:w,top:v,width:x}=d.getBoundingClientRect(),S=Lz(),C=g?h:Sh(Cr,{...r,...{id:S,key:S},...m,title:m.label,children:h});i({dragRect:{left:w,top:v,right:w+x,bottom:v+150,width:x,height:y},dragElement:Nz(d),evt:u.nativeEvent,instructions:{DoNotRemove:!0,DoNotTransform:!0,DriftHomeIfNoDropTarget:!0,RemoveDraggableOnDragEnd:!0,dragThreshold:10},path:"*",payload:C,type:"drag-start"})}return Sh(Vn,{...s,className:T0(l,e,`${l}-${n}`),itemHeight:t,selected:null,children:o.map((u,c)=>u.type===wh?Az(u,{key:c,onMouseDown:a}):u)})};$e("Palette",E0,"view");import M0 from"classnames";import Th,{forwardRef as Hz,useCallback as Fz}from"react";import{jsx as D0,jsxs as Wz}from"react/jsx-runtime";var R0="Tabs",Vz=()=>{},Bz=(o,e)=>{var t,n,r,s;return(s=(r=(t=o.props)==null?void 0:t.title)!=null?r:(n=o.props)==null?void 0:n["data-tab-title"])!=null?s:`Tab ${e+1}`},zz=o=>{let e=[];return Th.Children.forEach(o,t=>{Th.isValidElement(t)?e.push(t):console.warn("Stack has unexpected child element type")}),e},$z={allowAddTab:!1,allowCloseTab:!1,allowRenameTab:!1},Au=Hz(function({active:e=0,children:t,className:n,getTabIcon:r=Vz,getTabLabel:s=Bz,id:i,keyBoardActivation:l="manual",onAddTab:a,onMoveTab:u,onTabClose:c,onTabEdit:d,onTabSelectionChanged:p,showTabs:f="top",style:h,TabstripProps:g=$z},m){var O;let y=Pe(i),{allowCloseTab:w,allowRenameTab:v,className:x}=g,S=Fz((T,P,L,N)=>{d==null||d(N,P)},[d]),b=()=>{var T;return Th.isValidElement(t)?t:Array.isArray(t)&&(T=t[e])!=null?T:null},C=()=>zz(t).map((T,P)=>{let{closeable:L=w,id:N=`${y}-${P}`,"data-tab-location":A}=T.props;return D0(nh,{ariaControls:N,"data-icon":r(T,P),id:`${N}-tab`,index:P,label:s(T,P),location:A,closeable:L,editable:v},N)}),M=b(),D=f==="left"||f==="right",E=D?"vertical":"horizontal";return Wz("div",{className:M0(R0,n,{[`${R0}-horizontal`]:D}),style:h,id:y,ref:m,children:[f?D0(th,{...g,activeTabIndex:(O=g==null?void 0:g.activeTabIndex)!=null?O:M===null?-1:e,allowDragDrop:g.allowDragDrop!==!1,animateSelectionThumb:!0,className:M0("vuuTabHeader",x),keyBoardActivation:l,onActiveChange:p,onAddTab:a,onCloseTab:c,onExitEditMode:S,onMoveTab:u,orientation:E,children:C()}):null,M]})});Au.displayName="Stack";import{useIdMemo as _z}from"@salt-ds/core";import Kz,{useCallback as Eh,useRef as Uz}from"react";import{jsx as Mh}from"react/jsx-runtime";var Gz=o=>Mh(Cr,{resizeable:!0,title:`Tab ${o}`,style:{flexGrow:1,flexShrink:0,flexBasis:0},header:!0,closeable:!0,children:Mh(Xu,{style:{flex:1}})}),P0=o=>{var S;let e=Uz(null),t=Tt(),{loadState:n}=Dr(),{createNewChild:r,id:s,onTabSelectionChanged:i,path:l,...a}=o,{children:u}=o,c=_z(s),[d]=Pu(c,e,l),p=km(),f=(S=r!=null?r:p)!=null?S:Gz,h=b=>{l&&(t({type:"switch-tab",id:c,path:l,nextIdx:b}),i==null||i(b))},g=Eh(b=>{if(Array.isArray(u)){let{props:{"data-path":C,path:M=C}}=u[b];t({type:"remove",path:M})}},[u,t]),m=Eh(()=>{if(l){let b=Kz.Children.count(u),C=f(b);t({type:"add",path:l,component:C})}},[u,f,t,l]),y=Eh((b,C)=>{l&&t({fromIndex:b,toIndex:C,path:l,type:"move-child"})},[t,l]);return Mh(Au,{...a,id:c,getTabLabel:(b,C)=>{let{id:M,title:D}=b.props;return n(M,"view-title")||D||`Tab ${C+1}`},onMouseDown:async(b,C)=>{let M;await d({type:"mousedown",index:C,preDragActivity:async()=>new Promise(O=>{console.log("preDragActivity: Ok, gonna release the drag"),M=O})},b)&&(M==null||M(void 0))},onMoveTab:y,onAddTab:m,onTabClose:g,onTabEdit:(b,C)=>{t({type:"set-title",path:`${l}.${b}`,title:C})},onTabSelectionChanged:h,ref:e})};P0.displayName="Stack";$e("Stack",P0,"container");import gMe from"classnames";import yMe,{useMemo as xMe,useRef as vMe}from"react";import{isValidNumber as nMe}from"@vuu-ui/vuu-utils";import{useCallback as lMe,useRef as aMe}from"react";import{useControlled as vEe}from"@salt-ds/core";import{dispatchMouseEvent as SEe,getFocusableElement as wEe}from"@vuu-ui/vuu-utils";import{useCallback as LEe,useRef as AEe,useState as OEe}from"react";import{ArrowDown as qz,ArrowUp as Qz,ArrowLeft as jz,ArrowRight as Jz,Home as k0,End as I0}from"@vuu-ui/vuu-utils";import{getElementDataIndex as gEe}from"@vuu-ui/vuu-utils";var FEe={horizontal:{[k0]:"start",[I0]:"end",[jz]:"bwd",[Jz]:"fwd"},vertical:{[k0]:"start",[I0]:"end",[Qz]:"bwd",[qz]:"fwd"}};import{isSelectableElement as WEe,getClosestIndexItem as _Ee}from"@vuu-ui/vuu-utils";import{useCallback as XEe}from"react";import{jsx as kMe}from"react/jsx-runtime";import HMe,{useState as FMe}from"react";import{jsx as $Me,jsxs as WMe}from"react/jsx-runtime";import{FormField as YMe,Input as ZMe}from"@salt-ds/core";import{jsx as nRe,jsxs as oRe}from"react/jsx-runtime";var Ou="(\\d+)(?:px)?",Xz=`^(?:${Ou}(?:\\s${Ou}(?:\\s${Ou}(?:\\s${Ou})?)?)?)$`,eRe=new RegExp(Xz);import aRe from"react";import cRe from"classnames";import{jsx as mRe}from"react/jsx-runtime";import Yz from"react";import{Fragment as Zz,jsx as L0,jsxs as e$}from"react/jsx-runtime";var Nu=class extends Yz.Component{constructor(e){super(e),this.state={errorMessage:null}}static getDerivedStateFromError(e){return{errorMessage:e.message}}componentDidCatch(e,t){console.log(`error creating component at ${this.props.url}`),console.log(e,t)}render(){return this.state.errorMessage?e$(Zz,{children:[L0("h1",{children:"An error occured while creating component."}),L0("p",{children:this.state.errorMessage})]}):this.props.children}};import{jsx as t$}from"react/jsx-runtime";var A0=()=>t$("div",{className:"hwLoader",children:"loading"});var O0=async o=>{let e=new CSSStyleSheet;return fetch(o).then(t=>t.text()).then(t=>e.replace(t))};import{jsx as Fu}from"react/jsx-runtime";var Hu=new Map,r$=o=>{o$(()=>()=>{Hu.delete(o)},[o]),Hu.has(o)||Hu.set(o,N0.lazy(()=>import(o)));let e=Hu.get(o);if(e)return e;throw Error(`Unable to load Lazy Feature at url ${o}`)};function s$({url:o,css:e,ComponentProps:t,...n}){e&&O0(e).then(s=>{document.adoptedStyleSheets=[...document.adoptedStyleSheets,s]});let r=r$(o);return Fu(Nu,{url:o,children:Fu(n$,{fallback:Fu(A0,{}),children:Fu(r,{...n,...t})})})}var Rh=N0.memo(s$);Rh.displayName="Feature";$e("Feature",Rh,"view");import{useCallback as mDe,useEffect as gDe,useState as bDe}from"react";import{useEffect as PDe,useState as kDe}from"react";import{Input as LDe,Button as ADe,FormField as ODe,FormFieldLabel as NDe,Text as HDe}from"@salt-ds/core";import{formatDate as BDe,takeScreenshot as zDe}from"@vuu-ui/vuu-utils";import{jsx as KDe,jsxs as UDe}from"react/jsx-runtime";var i$="saveLayoutPanel",WDe=`${i$}-formField`;import T$,{useState as CAe,useCallback as SAe,useContext as wAe,useEffect as TAe}from"react";import{Button as T1e}from"@salt-ds/core";import M1e from"classnames";import{useRef as k1e}from"react";import{useCallback as XDe,useRef as YDe}from"react";import{Fragment as sPe,jsx as oPe,jsxs as rPe}from"react/jsx-runtime";import{itemToString as l$}from"@vuu-ui/vuu-utils";import H0 from"classnames";import{forwardRef as a$,useCallback as Dh,useMemo as u$,useRef as c$,useState as F0}from"react";import{jsx as Ph}from"react/jsx-runtime";var V0="vuuExpandoCombobox",d$={},Zi=a$(function({allowMultipleSelection:e=!1,className:t,InputProps:n=d$,ListProps:r,onInputChange:s,onSelectionChange:i,value:l="",...a},u){let[c,d]=F0(l),{itemToString:p=l$}=a,f=c$(l),h=Dh(S=>{let{value:b}=S.target;d(b),s==null||s(S)},[s]),[g,m]=u$(()=>{let{inputProps:S,...b}=n;return[{...b,className:`${V0}-Input`,endAdornment:null,inputProps:{...S,autoComplete:"off",onInput:h}},{...r,className:H0("vuuMenuList",r==null?void 0:r.className),"data-mode":"light",displayedItemCount:10,itemHeight:22,maxWidth:300,minWidth:100,width:"auto"}]},[n,h,r]),y=Dh((S,b)=>{let C=b===null?"":p(b);d(C),i==null||i(S,b)},[p,i]),[w,v]=F0([]),x=Dh((S,b)=>{v(b)},[]);return Ph("div",{className:H0(V0,t),"data-text":c,ref:u,children:e?Ph(Gl,{...a,defaultValue:f.current,ListProps:m,InputProps:g,onSelectionChange:y}):Ph(Gl,{...a,defaultValue:f.current,ListProps:m,InputProps:g,onSelectionChange:y})})});import Rke from"classnames";import{useCallback as kke,useEffect as Ike,useRef as Lke}from"react";import{Button as RPe}from"@salt-ds/core";import{jsx as kPe}from"react/jsx-runtime";import{forwardRef as p$,useState as f$,useCallback as B0}from"react";import{isValidNumber as kh}from"@vuu-ui/vuu-utils";import{jsx as m$}from"react/jsx-runtime";var h$=p$(function({InputProps:e,className:t,column:n,onInputComplete:r,value:s},i){let[l,a]=f$(kh(s)?s.toString():""),u=B0(d=>{let{value:p}=d.target,f=parseFloat(p);kh(f)&&console.log("its valid"),a(p)},[]),c=B0(d=>{if(d.key==="Enter"){let{value:p}=d.target,f=parseFloat(p);kh(f)&&r(f)}},[r]);return m$(Ql,{...e,className:t,value:l,ref:i,onChange:u,onKeyDown:c})});import{isNumericColumn as _Pe,isTextColumn as KPe}from"@vuu-ui/vuu-utils";import{forwardRef as g$,useCallback as Ih,useEffect as z0,useMemo as b$,useState as $0}from"react";import{jsx as Vu}from"react/jsx-runtime";var y$=g$(function({InputProps:e={},className:t,column:n,filterClause:r,onInputComplete:s,operator:i,suggestionProvider:l=ha,table:a,value:u},c){let[d,p]=$0(u!=null?u:""),[f,h]=$0([]),g=l(),m=Ih((x,S)=>{s(S!=null?S:"")},[s]);z0(()=>{},[n]),z0(()=>{if(a){let x=d?[a,n.name,d]:[a,n.name];g(x).then(S=>{h(S)}).catch(S=>{console.error("Error getting suggsetions",S)})}},[a,n,d,g]);let y=Ih(x=>{let{value:S}=x.target;p(S)},[]),w=b$(()=>{if(i==="starts"||i==="ends"){let{inputProps:x,...S}=e;return{...S,inputProps:{...x,onKeyDown:b=>{var C;b.key==="Enter"&&d!==""?(b.stopPropagation(),b.preventDefault(),s(d)):(C=x==null?void 0:x.onKeyDown)==null||C.call(x,b)}}}}else return e},[e,s,i,d]);return Ih(()=>{switch(i){case"in":return Vu(Zi,{InputProps:w,className:t,initialHighlightedIndex:0,source:f,onInputChange:y,onSelectionChange:m,ref:c,value:u});case"starts":return Vu(Zi,{InputProps:w,ListProps:{className:"vuuIllustrationsOnly",disabled:!0},allowFreeText:!0,className:t,initialHighlightedIndex:0,source:f,onInputChange:y,onSelectionChange:m,ref:c,value:u});case"ends":return Vu(Ql,{...w,className:t,value:d,ref:c,onChange:y});default:return Vu(Zi,{InputProps:w,className:t,initialHighlightedIndex:0,source:f,onInputChange:y,onSelectionChange:m,ref:c,value:u})}},[i,w,t,f,y,m,c,u,d])()});import{isMultiValueFilter as uke,isSingleValueFilter as cke,isValidFilterClauseOp as dke}from"@vuu-ui/vuu-utils";import{useCallback as bke,useMemo as yke,useState as xke}from"react";import{jsx as $ke,jsxs as Wke}from"react/jsx-runtime";import{filterAsQuery as IIe,isMultiClauseFilter as LIe}from"@vuu-ui/vuu-utils";import OIe from"classnames";import{useCallback as FIe,useRef as VIe}from"react";import{useMemo as oIe}from"react";import sIe from"classnames";import{jsx as cIe}from"react/jsx-runtime";import{extractFilterForColumn as mIe,isAndFilter as gIe,isCompleteFilter as bIe,isInFilter as yIe,isMultiClauseFilter as xIe,isMultiValueFilter as vIe,isOrFilter as CIe,isSingleValueFilter as SIe,partition as wIe}from"@vuu-ui/vuu-utils";import{jsx as _Ie,jsxs as KIe}from"react/jsx-runtime";import{dispatchMouseEvent as n1e,filterAsQuery as o1e}from"@vuu-ui/vuu-utils";import{useCallback as l1e,useMemo as a1e,useRef as u1e,useState as c1e}from"react";import{useCallback as JIe}from"react";import{jsx as z1e,jsxs as $1e}from"react/jsx-runtime";import{createElement as B1e}from"react";import{Button as NLe}from"@salt-ds/core";import yLe from"classnames";import{useEffect as CLe,useMemo as SLe,useRef as wLe}from"react";var j1e=kn.define({name:"VuuFilterQuery",parser:ni.configure({props:[ar({Identifier:W.variableName,String:W.string,Or:W.emphasis,Operator:W.operator})]})});var C$=dn.define([{tag:W.variableName,color:"var(--vuuFilterEditor-variableColor)"},{tag:W.comment,color:"green",fontStyle:"italic"}]),S$=cr(C$);var w$=le.theme({"&":{color:"var(--vuuFilterEditor-color)",backgroundColor:"var(--vuuFilterEditor-background)",fontSize:"var(--vuuFilterEditor-fontSize)"},".cm-content":{caretColor:"var(--vuuFilterEditor-cursorColor)",padding:0},".cm-line":{lineHeight:"var(--vuuFilterEditor-lineHeight)"},"&.cm-focused .cm-cursor":{borderLeftColor:"var(--vuuFilterEditor-cursorColor)"},"&.cm-focused .cm-selectionBackground, ::selection":{backgroundColor:"var(--vuuFilterEditor-selectionBackground)"},".cm-selectionBackground, ::selection":{backgroundColor:"var(--vuuFilterEditor-selectionBackground)"},".cm-scroller":{fontFamily:"var(--vuuFilterEditor-fontFamily)"},".cm-tooltip":{background:"var(--vuuFilterEditor-tooltipBackground)",border:"var(--vuuFilterEditor-tooltipBorder)",boxShadow:"var(--vuuFilterEditor-tooltipElevation)","&.cm-tooltip-autocomplete > ul":{fontFamily:"var(--vuuFilterEditor-fontFamily)",fontSize:"var(--vuuFilterEditor-fontSize)",maxHeight:"240px"},"&.cm-tooltip-autocomplete > ul > li":{alignItems:"center",display:"flex",height:"var(--vuuFilterEditor-suggestion-height)",padding:"0 3px",lineHeight:"var(--vuuFilterEditor-suggestion-height)"},"&.cm-tooltip-autocomplete li[aria-selected]":{background:"var(--vuuFilterEditor-suggestion-selectedBackground)",color:"var(--vuuFilterEditor-suggestion-selectedColor)"}},".cm-completionIcon":{height:"18px",flex:"0 0 16px"},".cm-completionLabel":{flex:"1 1 auto"},".cm-completionIcon-filter":{position:"relative","&:after":{background:"var(--salt-text-secondary-foreground)",content:"''","-webkit-mask":"var(--svg-filter) center center/13px 13px","-webkit-mask-repeat":"no-repeat",position:"absolute",height:"18px",left:"0px",top:"0px",width:"16px"}}},{dark:!1});import{useCallback as uLe}from"react";import{jsx as $Le,jsxs as WLe}from"react/jsx-runtime";import{useCallback as tAe,useRef as nAe}from"react";import{createEl as ULe}from"@vuu-ui/vuu-utils";import{getUniqueId as RAe}from"@vuu-ui/vuu-utils";import{jsx as kAe}from"react/jsx-runtime";var DAe=T$.createContext({layouts:[],saveLayout:()=>{}});import{Fragment as $Ae,jsx as BAe,jsxs as zAe}from"react/jsx-runtime";import{memo as E$}from"react";import{jsx as Yt,jsxs as Ds}from"react/jsx-runtime";var W0=E$(()=>Ds("svg",{width:"44",height:"45",viewBox:"0 0 44 45",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[Ds("g",{clipPath:"url(#clip0_217_6990)",children:[Yt("path",{d:"M39.8642 15.5509L35.9196 7.58974L34.3369 6.85464L24.6235 22.0825L39.1628 30.618L42.3152 25.6347L39.8642 15.5509Z",fill:"url(#paint0_linear_217_6990)"}),Yt("path",{d:"M42.6246 24.8716C41.9199 25.9157 40.9625 26.824 39.767 27.4905C38.424 28.2396 36.9563 28.597 35.5081 28.597C32.7541 28.597 30.0715 27.3094 28.4466 24.9855L15.772 3.90967L15.7655 3.9206C13.3615 0.137431 8.25372 -1.13143 4.24754 1.10507C0.178173 3.37435 -1.20852 8.39359 1.14854 12.3125L18.3445 40.9095C19.1108 42.1846 20.1816 43.1834 21.4144 43.8764C21.4241 43.8826 21.4338 43.8889 21.4435 43.8951C21.4484 43.8982 21.4549 43.9013 21.4597 43.9045C22.0332 44.2228 22.6423 44.471 23.2725 44.6536C23.3194 44.6677 23.368 44.6817 23.415 44.6942C23.6418 44.7551 23.8702 44.8097 24.1019 44.8534C24.1456 44.8612 24.1894 44.8659 24.2331 44.8737C24.4194 44.9049 24.6073 44.9314 24.7952 44.9501C24.8698 44.9579 24.9443 44.9658 25.0188 44.9704C25.2342 44.9876 25.4497 44.9985 25.6668 45.0001C25.6781 45.0001 25.6895 45.0001 25.6992 45.0001C25.7024 45.0001 25.704 45.0001 25.7073 45.0001C25.7105 45.0001 25.7121 45.0001 25.7154 45.0001C25.9503 45.0001 26.1868 44.9876 26.4217 44.9689C26.4751 44.9642 26.5286 44.9595 26.5837 44.9533C26.8137 44.9299 27.0438 44.9002 27.2738 44.8596C27.277 44.8596 27.2803 44.8596 27.2835 44.8596C27.5362 44.8144 27.7889 44.7551 28.0384 44.6864C28.0546 44.6817 28.0692 44.677 28.0854 44.6723C28.4483 44.5709 28.8063 44.4445 29.1594 44.2931C29.1659 44.29 29.174 44.2868 29.1805 44.2837C29.4494 44.1682 29.7151 44.0418 29.9759 43.8967C30.24 43.75 30.491 43.5908 30.7308 43.4206C30.9398 43.2739 31.1407 43.1179 31.3367 42.9524C31.5748 42.7495 31.8 42.5373 32.009 42.3141C32.1661 42.1471 32.3168 41.9723 32.4609 41.7913C32.5079 41.732 32.5517 41.6711 32.5954 41.6118C32.6942 41.4807 32.7882 41.3465 32.8789 41.2091C32.9259 41.1373 32.9728 41.0671 33.0182 40.9953C33.036 40.9672 33.0555 40.9407 33.0717 40.9126L42.7153 24.8763H42.6214L42.6246 24.8716Z",fill:"url(#paint1_linear_217_6990)"}),Yt("path",{d:"M42.8402 16.4218L42.1112 15.2232L38.9636 9.58433L37.504 7.19644C37.2286 6.56123 36.579 6.11331 35.8176 6.11331C34.8083 6.11331 33.9919 6.90147 33.9919 7.87223C33.9919 8.20154 34.0907 8.50432 34.2543 8.76808L34.2349 8.78056L39.9048 18.0808C40.5884 19.2186 40.7715 20.5437 40.4199 21.8141C40.0684 23.0845 39.226 24.1458 38.045 24.806C37.2675 25.2398 36.3846 25.4693 35.4936 25.4693C33.6727 25.4693 31.9766 24.5281 31.0662 23.0143L22.9161 9.63271H22.9323L19.4899 3.90958L19.4834 3.92051C19.4235 3.8253 19.3538 3.73947 19.2907 3.64738L19.1935 3.48663C19.1935 3.48663 19.1854 3.49131 19.1821 3.49443C17.5654 1.27666 14.9799 0.0390178 12.3118 0.00936427V0H7.91199V0.02185C10.9851 -0.184164 14.0582 1.23296 15.7656 3.92051L15.7721 3.90958L28.4451 24.987C30.0699 27.3093 32.7542 28.5985 35.5066 28.5985C36.9548 28.5985 38.4225 28.2426 39.7655 27.4919C40.961 26.8255 41.9168 25.9156 42.6231 24.8731H42.717L42.6846 24.9261C43.1366 24.2347 43.4833 23.4731 43.7068 22.6615C44.2916 20.5452 43.9871 18.3352 42.8369 16.4234L42.8402 16.4218Z",fill:"#F37880"}),Ds("g",{opacity:"0.86",children:[Yt("path",{d:"M34.2332 8.78212L39.9031 18.0824C40.5868 19.2202 40.7698 20.5452 40.4183 21.8156C40.2044 22.5897 39.8059 23.2858 39.2616 23.8617C39.9744 23.2343 40.4879 22.4243 40.7423 21.5035C41.0938 20.2331 40.9107 18.908 40.2271 17.7703L34.5572 8.46998L34.5767 8.4575C34.413 8.19374 34.3142 7.89096 34.3142 7.56165C34.3142 7.15586 34.4584 6.78285 34.6982 6.48476C34.2672 6.80626 33.9902 7.30881 33.9902 7.87379C33.9902 8.2031 34.0891 8.50588 34.2527 8.76964L34.2332 8.78212Z",fill:"white"}),Yt("path",{d:"M42.6917 24.9169L42.6863 24.9256C42.6863 24.9256 42.6899 24.9187 42.6935 24.9152C42.6935 24.9152 42.6935 24.9152 42.6935 24.9169H42.6917Z",fill:"white"}),Yt("path",{d:"M40.0911 27.1798C38.7481 27.9289 37.2804 28.2863 35.8322 28.2863C33.0782 28.2863 30.3955 26.9988 28.7707 24.6749L16.0961 3.59744L16.0896 3.60837C14.9281 1.78077 13.1364 0.543128 11.1422 0H7.91199V0.02185C10.9851 -0.184164 14.0582 1.23296 15.7656 3.92051L15.7721 3.90958L28.4451 24.987C30.0699 27.3093 32.7542 28.5985 35.5066 28.5985C36.9548 28.5985 38.4225 28.2426 39.7655 27.4919C40.4815 27.0924 41.1084 26.6055 41.6511 26.0561C41.1862 26.479 40.6662 26.8583 40.0894 27.1798H40.0911Z",fill:"white"})]})]}),Ds("defs",{children:[Ds("linearGradient",{id:"paint0_linear_217_6990",x1:"24.6235",y1:"18.7363",x2:"42.3152",y2:"18.7363",gradientUnits:"userSpaceOnUse",children:[Yt("stop",{stopColor:"#4906A5"}),Yt("stop",{offset:"1",stopColor:"#D3423A"})]}),Ds("linearGradient",{id:"paint1_linear_217_6990",x1:"-2.35794e-05",y1:"22.5009",x2:"42.7186",y2:"22.5009",gradientUnits:"userSpaceOnUse",children:[Yt("stop",{stopColor:"#7C06A5"}),Yt("stop",{offset:"1",stopColor:"#D3423A"})]}),Yt("clipPath",{id:"clip0_217_6990",children:Yt("rect",{width:"44",height:"45",fill:"white"})})]})]}));W0.displayName="VuuLogo";import DOe from"classnames";import{useCallback as AOe,useState as OOe}from"react";import{jsx as iOe,jsxs as lOe}from"react/jsx-runtime";import{createContext as M$,isValidElement as R$,cloneElement as D$,useContext as _0}from"react";import P$ from"classnames";import{jsx as N$}from"react/jsx-runtime";var k$="medium",I$="salt-theme",L$="light",Lh=M$({density:"high",theme:"vuu",themeMode:"light"}),A$=["vuu","vuu-density-high","light"],Zt=()=>{let o=_0(Lh);return o?[`${o.theme}-theme`,`${o.theme}-density-${o.density}`,o.themeMode]:A$},O$=(o,e,t,n)=>{var r;return R$(o)?D$(o,{className:P$((r=o.props)==null?void 0:r.className,`${e}-theme`,`${e}-density-${n}`),"data-mode":t}):(console.warn(`
32
- ThemeProvider can only apply CSS classes for theming to a single nested child element of the ThemeProvider.
33
- Wrap elements with a single container`),o)},K0=({applyThemeClasses:o=!1,children:e,theme:t,themeMode:n,density:r})=>{var p,f,h;let{density:s,themeMode:i,theme:l}=_0(Lh),a=(p=r!=null?r:s)!=null?p:k$,u=(f=n!=null?n:i)!=null?f:L$,c=(h=t!=null?t:l)!=null?h:I$,d=o?O$(e,c,u,a):e;return N$(Lh.Provider,{value:{themeMode:u,density:a,theme:c},children:d})};K0.displayName="ThemeProvider";import{jsx as BOe,jsxs as zOe}from"react/jsx-runtime";import{useState as jOe}from"react";import{Button as XOe,FormField as YOe,FormFieldLabel as ZOe,Input as eNe}from"@salt-ds/core";import{jsx as oNe,jsxs as rNe}from"react/jsx-runtime";import{getCookieValue as H$}from"@vuu-ui/vuu-utils";var F$=()=>{let o=H$("vuu-auth-mode");return o!=null?o:""};var V$=()=>F$()==="login"?"login.html":"demo.html",B$=(o=V$())=>{window.location.href=o},U0=o=>{document.cookie="vuu-username= ; expires = Thu, 01 Jan 1970 00:00:00 GMT",document.cookie="vuu-auth-token= ; expires = Thu, 01 Jan 1970 00:00:00 GMT",B$(o)};import{useCallback as xNe,useEffect as vNe,useMemo as CNe,useRef as SNe,useState as wNe}from"react";import ENe from"classnames";import{useIdMemo as RNe}from"@salt-ds/core";import{Button as PNe}from"@salt-ds/core";import{buildColumnMap as ONe,isValidNumber as NNe,shallowEquals as HNe}from"@vuu-ui/vuu-utils";import{jsx as BNe,jsxs as zNe}from"react/jsx-runtime";import sVe from"classnames";import{useCallback as cVe,useEffect as dVe,useRef as pVe}from"react";import{useCallback as QHe}from"react";import{Button as cHe}from"@salt-ds/core";import{DropdownBase as pHe}from"@salt-ds/lab";import{UserSolidIcon as hHe}from"@salt-ds/icons";import{formatDate as z$}from"@vuu-ui/vuu-utils";import{List as $$,ListItem as W$}from"@salt-ds/lab";import{Button as _$}from"@salt-ds/core";import{ExportIcon as K$}from"@salt-ds/icons";import{forwardRef as U$,useCallback as q0,useEffect as G$,useState as q$}from"react";var G0=async o=>await fetch(`api/vui/${o.username}`,{}).then(t=>t.ok?t.json():null).catch(()=>{console.log("error getting history")});import{jsx as Bu,jsxs as Q0}from"react/jsx-runtime";var Q$=({lastUpdate:o},{lastUpdate:e})=>e===o?0:e<o?-1:1,j$=o=>Bu(W$,{...o}),J$=U$(function({loginUrl:e,onNavigate:t,user:n,layoutId:r="latest"},s){let[i,l]=q$([]);G$(()=>{async function d(){let f=(await G0(n)).filter(h=>h.id!=="latest").sort(Q$).map(({id:h,lastUpdate:g})=>({lastUpdate:g,id:h,label:`Saved at ${z$(new Date(g),"kk:mm:ss")}`}));console.log({sortedHistory:f}),l(f)}d()},[n]);let a=q0((d,p)=>{p&&t(p.id)},[t]),u=q0(()=>{U0(e)},[e]),c=i.length===0?null:r==="latest"?i[0]:i.find(d=>d.id===r);return Q0("div",{className:"vuuUserPanel",ref:s,children:[Bu($$,{ListItem:j$,className:"vuuUserPanel-history",onSelect:a,selected:c,source:i}),Bu("div",{className:"vuuUserPanel-buttonBar",children:Q0(_$,{"aria-label":"logout",onClick:u,children:[Bu(K$,{})," Logout"]})})]})});import{jsx as yHe,jsxs as xHe}from"react/jsx-runtime";import MHe from"classnames";import{ToggleButton as DHe,ToggleButtonGroup as PHe,useControlled as kHe}from"@salt-ds/core";import{useCallback as OHe}from"react";import{jsx as FHe,jsxs as VHe}from"react/jsx-runtime";import YHe from"classnames";import{jsx as tFe,jsxs as nFe}from"react/jsx-runtime";import{logger as X$}from"@vuu-ui/vuu-utils";import{Button as uFe}from"@salt-ds/core";import dFe from"classnames";import{useCallback as fFe,useMemo as hFe}from"react";import{jsx as xFe,jsxs as vFe}from"react/jsx-runtime";import{jsx as DFe,jsxs as PFe}from"react/jsx-runtime";import{useCallback as NFe,useRef as HFe,useState as FFe}from"react";import{jsx as BFe,jsxs as zFe}from"react/jsx-runtime";import{jsx as TVe,jsxs as EVe}from"react/jsx-runtime";var{error:SVe}=X$("Shell");import{createContext as Y$,useContext as kVe}from"react";import{jsx as AVe}from"react/jsx-runtime";var Z$={},IVe=Y$(Z$);import t4 from"classnames";var Or=function({children:e,x:t=0,y:n=0,onRender:r}){let[s,i,l]=Zt(),a=e4(()=>Zh({className:t4(s,i),dataMode:l}),[l,i,s]);return j0(()=>{sl(e,a,t,n,r)},[e,r,a,t,n]),j0(()=>()=>{var u;a&&(J0.unmountComponentAtNode(a),a.classList.contains("vuuPopup")&&((u=a.parentElement)==null||u.removeChild(a)))},[a]),null};var oBe=o=>{let e=getComputedStyle(document.body).getPropertyValue("--installed-themes");document.body.style.setProperty("--installed-themes",`${e} ${o}`)};import{jsx as zu,jsxs as eT}from"react/jsx-runtime";var Ah="vuuDialog",yBe=({children:o,className:e,isOpen:t=!1,onClose:n,title:r,hideCloseButton:s=!1,...i})=>{let l=s4(null),[a]=Z0(0),[u]=Z0(0),c=Y0(()=>{n==null||n()},[n]),d=Y0(()=>{},[]);return t?zu(Or,{onRender:d,x:a,y:u,children:zu(n4,{className:`${Ah}-scrim`,open:t,autoFocusRef:l,children:eT("div",{...i,className:X0(Ah,e),ref:l,children:[eT("div",{className:X0("vuuToolbarProxy",`${Ah}-header`),children:[zu(r4,{className:"dialogHeader",children:r}),!s&&zu(o4,{onClick:c,"data-align":"end","data-icon":"close"},"close")]}),o]})})}):null};import{useCallback as yT,useRef as zh}from"react";import dT,{useLayoutEffect as v4,useMemo as C4,useRef as S4}from"react";import pT from"classnames";import{useCallback as $u,useMemo as f4,useRef as Oh,useState as h4}from"react";var tT=o=>o.closest("[data-root='true']")!==null,nT=(o,e)=>{var t;return o.ariaHasPopup==="true"&&((t=o.dataset)==null?void 0:t.idx)===`${e}`||o.querySelector(`:scope > [data-idx='${e}'][aria-haspopup='true']`)!==null};function i4(o,...e){let t=new Set(o);for(let n of e)for(let r of n)t.add(r);return t}var l4="Enter";var a4="Delete",u4=new Set([l4,a4]),c4=new Set(["Tab"]),d4=new Set(["ArrowRight","ArrowLeft"]),oT=new Set(["Home","End","ArrowDown","ArrowUp"]),rT=new Set(["Home","End","ArrowRight","ArrowLeft"]),p4=new Set(["F1","F2","F3","F4","F5","F6","F7","F8","F9","F10","F11","F12"]),TBe=i4(u4,rT,oT,d4,p4,c4);var sT=({key:o},e="vertical")=>(e==="vertical"?oT:rT).has(o);import{isValidNumber as Nh}from"@vuu-ui/vuu-utils";var iT=({autoHighlightFirstItem:o=!1,count:e,defaultHighlightedIdx:t,highlightedIndex:n,onActivate:r,onHighlight:s,onCloseMenu:i,onOpenMenu:l})=>{var x;if(Nh(n)&&Nh(t))throw Error("useKeyboardNavigation do not pass values for both highlightedIndex and defaultHighlightedIdx");let a=Nh(n),u=Oh((x=t!=null?t:n)!=null?x:o?0:-1),[,c]=h4(null),d=$u(S=>{u.current=S,s==null||s(S),c({})},[s]),p=$u(S=>{S!==u.current&&(a||d(S))},[a,d]),f=Oh(!0),h=Oh(!1),g=S=>h.current=S,m=a?n:u.current,y=$u(S=>{let b=m4(e,S.key,u.current);b!==u.current&&p(b)},[e,p]),w=$u(S=>{if(sT(S))S.preventDefault(),S.stopPropagation(),f.current=!0,y(S);else if((S.key==="ArrowRight"||S.key==="Enter")&&nT(S.target,m)){let C=S.target.querySelector(`:scope > [data-idx='${m}']`);C&&(l==null||l(C))}else S.key==="ArrowLeft"&&!tT(S.target)?i(m):S.key==="Enter"?(S.preventDefault(),S.stopPropagation(),r&&r(m)):S.key==="Tab"&&i(-1)},[m,y,r,i,l]),v=f4(()=>({onFocus:()=>{m===-1&&d(0)},onKeyDown:w,onMouseDownCapture:()=>{f.current=!1,g(!0)},onMouseMove:()=>{f.current&&(f.current=!1)},onMouseLeave:()=>{f.current=!0,g(!1),p(-1)}}),[w,m,d,p]);return{focusVisible:f.current?m:-1,controlledHighlighting:a,highlightedIndex:m,setHighlightedIndex:p,listProps:v,setIgnoreFocus:g}};function m4(o,e,t){return e==="ArrowUp"?t>0?t-1:t:t===null?0:t===o-1?t:t+1}import lT,{useCallback as g4,useMemo as b4}from"react";var Hh=o=>o.type===Wu||!!o.props["data-group"],y4=o=>{if(Array.isArray(o)&&Fh(o[0]))return o[0]},x4=(o,e,t,n=!1)=>{let{props:{children:r}}=o;return{childWithId:lT.cloneElement(o,{hasSeparator:n,id:`${e}`,key:e,children:t?y4(r):r}),grandChildren:t?r:void 0}},aT=(o,e)=>{let t=g4(()=>{let s=(i,l=e,a={},u={})=>{let c=a[l]=[],d=0,p=!1;return lT.Children.forEach(i,f=>{if(!Fh(f))if(f.type===uT)p=!0;else{let h=Hh(f),g=`${l}-${d}`,{props:{action:m,options:y}}=f,{childWithId:w,grandChildren:v}=x4(f,g,h,p);c.push(w),v?s(v,g,a,u):u[g]={action:m,options:y},d+=1,p=!1}}),[a,u]};return s(o)},[e,o]),[n,r]=b4(()=>t(),[t]);return[n,r]};import{Fragment as M4,jsx as Ps}from"react/jsx-runtime";var cT="vuuMenuList",uT=()=>Ps("li",{className:"vuuMenuItem-divider"}),Wu=()=>null,_u=({children:o,idx:e,...t})=>Ps("div",{...t,children:o}),fT=({children:o})=>Ps(M4,{children:o});fT.displayName="MenuItemLabel";_u.Label=fT;var w4=o=>dT.isValidElement(o)&&typeof o.type!="string"&&"displayName"in o.type?o.type.displayName:void 0,Fh=o=>w4(o)==="MenuItemLabel",T4=o=>o.props["data-icon"],Vh=({activatedByKeyboard:o,childMenuShowing:e,children:t,className:n,defaultHighlightedIdx:r,highlightedIdx:s,id:i,isRoot:l,listItemProps:a,onHighlightMenuItem:u,onActivate:c,onCloseMenu:d,onOpenMenu:p,...f})=>{let h=Pe(i),g=S4(null),m=C4(()=>new Map,[]),y=M=>{var E;let D=(E=g.current)==null?void 0:E.querySelector(`:scope > [data-idx='${M}']`);D!=null&&D.id&&(c==null||c(D.id))},{focusVisible:w,highlightedIndex:v,listProps:x}=iT({count:dT.Children.count(t),defaultHighlightedIdx:r,highlightedIndex:s,onActivate:y,onHighlight:u,onOpenMenu:p,onCloseMenu:d}),S=e==null?w:-1;v4(()=>{var M;e===void 0&&o&&((M=g.current)==null||M.focus())},[o,e]);let b=()=>v===void 0||v===-1?void 0:m.get(v);function C(){let M={...a,role:"menuitem"},D=(T,P,L)=>P?[Ps("span",{className:"vuuIconContainer","data-icon":L},"icon")].concat(T):T;function E(T,P,L,N){var U;let{children:A,className:k,"data-icon":I,id:F,hasSeparator:H,label:B,...$}=P.props,G=Hh(P),q=G&&e===F,j=q?`${h}-${F}`:void 0;T.push(Ps(_u,{...$,...M,...E4(F,L,(U=P.key)!=null?U:F,v,S,k,H),"aria-controls":j,"aria-haspopup":G||void 0,"aria-expanded":q||void 0,children:D(G&&B!=null?B:A,N,I)}))}let O=[];if(t.length>0){let T=t.some(T4);t.forEach((P,L)=>{E(O,P,L,T)})}return O}return Ps("div",{...f,...x,"aria-activedescendant":b(),className:pT(cT,n,{[`${cT}-childMenuShowing`]:e!==void 0}),"data-root":l||void 0,id:h,ref:g,role:"menu",children:C()})},E4=(o,e,t,n,r,s,i)=>({id:`menuitem-${o}`,key:t!=null?t:e,"data-idx":e,"data-highlighted":e===n||void 0,className:pT("vuuMenuItem",s,{"vuuMenuItem-separator":i,focusVisible:r===e})});Vh.displayName="MenuList";import{useCallback as mn,useMemo as R4,useRef as Ku,useState as D4}from"react";var Bh=o=>o==null?void 0:o.closest("[data-idx],[aria-posinset]");var mT=(o,e,t)=>o.map((n,r)=>r===o.length-1?{...n,[t]:n[t]-e}:n),P4=(o,e)=>mT(o,e,"left"),k4=(o,e)=>mT(o,e,"top"),I4=(o,e)=>{let[t,n]=e.slice(-2),r=document.getElementById(`${o}-${n.id}`);if(r===null)throw Error(`useCascade.flipSides element with id ${n.id} not found`);let{width:s}=r.getBoundingClientRect();return e.map(i=>i===n?{...i,left:t.left-(s-2)}:i)},L4=(o,e)=>{let[{left:t,top:n}]=e.slice(-1),{offsetWidth:r,offsetTop:s}=o;return{left:t+r,top:s+n}},gT=(o,e)=>{let t=o.lastIndexOf("-");return t>-1?o.slice(9,t):e},A4=o=>o.slice(9),hT=({ariaExpanded:o,ariaHasPopup:e,id:t},n)=>{if(t.startsWith("menuitem"))return{hostMenuId:gT(t,n),targetMenuId:A4(t),menuItemId:t,isGroup:e==="true",isOpen:o==="true"};throw Error(`getMenuItemDetails #${t} is not a menuitem`)},bT=({id:o,onActivate:e,onMouseEnterItem:t,position:{x:n,y:r}})=>{let[,s]=D4({}),i=Ku([{id:o,left:n,top:r}]),l=mn(b=>i.current.findIndex(C=>C.id===b)!==-1,[]),a=mn(b=>{let C=p.current[b];if(C===void 0)throw Error(`getOpenMenuState no entry for menu ${b}`);return C},[]),u=mn(b=>{i.current=b,s({})},[]),c=Ku(),d=Ku(),p=Ku({[o]:"no-popup"}),f=mn((b=o,C,M=null)=>{if(b===o&&M===null)u([{id:o,left:n,top:r}]);else{p.current[b]="popup-open";let D=document.getElementById(M);if(D!==null){let{left:E,top:O}=L4(D,i.current);u(i.current.concat({id:C,left:E,top:O}))}else throw Error(`openMenu no menuItem ${M}`)}},[o,n,r,u]),h=mn(b=>{if(b===o)u([]);else{let C=i.current.slice(),M=C.pop();p.current[M.id]="no-popup";let D=C.at(-1);D&&(p.current[D.id]="no-popup"),u(C)}},[o,u]),g=mn(b=>{let C=i.current.slice(),M=b.slice(9),{id:D}=C.at(-1);for(;C.length>1&&!M.startsWith(D);){let E=gT(D,o);C.pop(),p.current[D]="no-popup",p.current[E]="no-popup",{id:D}=C[C.length-1]}C.length<i.current.length&&u(C)},[o,u]),m=mn(()=>{c.current&&(clearTimeout(c.current),c.current=void 0)},[]),y=mn((b,C,M)=>{m(),c.current=window.setTimeout(()=>{g(M),p.current[b]="popup-open",p.current[C]="no-popup",f(b,C,M)},400)},[m,g,f]),w=mn((b,C,M)=>{p.current[C]="pending-close",d.current=window.setTimeout(()=>{g(M)},400)},[g]),v=mn(()=>{let{current:b}=i,[C]=b.slice(-1),M=document.getElementById(C.id);if(M){let{right:D,bottom:E}=M.getBoundingClientRect(),{clientHeight:O,clientWidth:T}=document.body;if(D>T){let P=b.length>1?I4(o,b):P4(b,D-T);u(P)}else if(E>O){let P=k4(b,E-O);u(P)}typeof M.tabIndex=="number"&&M.focus()}else console.log(`no element found with if ${C.id}`)},[o,u]),x=mn(b=>{let{hostMenuId:C,targetMenuId:M,menuItemId:D,isGroup:E,isOpen:O}=hT(b,o),{current:{[C]:T}}=p;if(T==="no-popup"&&E)p.current[C]="popup-pending",y(C,M,D);else if(T==="popup-pending"&&!E)p.current[C]="no-popup",clearTimeout(c.current),c.current=void 0;else if(T==="popup-pending"&&E)clearTimeout(c.current),y(C,M,D);else if(T==="popup-open")if(l(M)){let P=a(M);switch(g(D),P){case"pending-close":clearTimeout(d.current),d.current=void 0,p.current[M]="no-popup",m();break;default:}}else{let[P,L]=i.current.slice(-2);P.id===C&&p.current[L.id]!=="pending-close"?(w(C,L.id,D),E&&!O&&y(C,M,D)):P.id===C&&E&&D!==L.id&&p.current[L.id]==="pending-close"||E?y(C,M,D):p.current[L.id]!=="pending-close"&&g(D)}T==="pending-close"&&(m(),clearTimeout(d.current),d.current=void 0,p.current[C]="popup-open")},[m,g,a,l,o,w,y]),S=R4(()=>({onMouseEnter:b=>{let C=Bh(b.target);x(C),t(b,C.id)},onClick:b=>{let C=Bh(b.target),{isGroup:M,menuItemId:D}=hT(C,o);M?x(C):e(D)}}),[e,t,o,x]);return{closeMenu:h,handleRender:v,listItemProps:S,openMenu:x,openMenus:i.current}};import{Fragment as H4,jsx as xT}from"react/jsx-runtime";import{createElement as N4}from"react";var O4=()=>{},$h=({activatedByKeyboard:o,children:e,className:t,id:n,onClose:r=()=>{},position:s={x:0,y:0},style:i,...l})=>{let a=zh(r);a.current=r;let u=Pe(n),c=zh(O4),[d,p]=aT(e,u),f=zh(o),h=yT(()=>{f.current=!1},[]),g=yT(D=>{let E=D.slice(9),{action:O,options:T}=p[E];c.current(u),r({type:"menu-action",menuId:O,options:T})},[p,u,r]),{closeMenu:m,listItemProps:y,openMenu:w,openMenus:v,handleRender:x}=bT({id:`${u}`,onActivate:g,onMouseEnterItem:h,position:s});c.current=m;let S=()=>{f.current=!0,m()},b=()=>{},C=v.length-1,M=D=>{if(!(D>=C)){let{id:E}=v[D+1];return E}};return xT(H4,{children:v.map(({id:D,left:E,top:O},T,P)=>{let L=M(T);return xT(Or,{x:E,y:O,onRender:x,children:N4(Vh,{...l,activatedByKeyboard:f.current,childMenuShowing:L,className:t,id:D,isRoot:T===0,key:T,listItemProps:y,onActivate:g,onHighlightMenuItem:b,onCloseMenu:S,onOpenMenu:w,style:i,tabIndex:T===P.length-1?0:void 0},d[D])},T)})})};$h.displayName="ContextMenu";import{createContext as F4,useCallback as V4,useMemo as B4}from"react";import{jsx as Wh}from"react/jsx-runtime";var Uu=F4(null),z4=({children:o,context:e,menuActionHandler:t,menuBuilder:n})=>{let r=B4(()=>e!=null&&e.menuBuilders&&n?e.menuBuilders.concat(n):n?[n]:(e==null?void 0:e.menuBuilders)||[],[e,n]),s=V4(i=>{var l;if(t!=null&&t(i)||(l=e==null?void 0:e.menuActionHandler)!=null&&l.call(e,i))return!0},[e,t]);return Wh(Uu.Provider,{value:{menuActionHandler:s,menuBuilders:r},children:o})},Dd=({children:o,label:e,menuActionHandler:t,menuBuilder:n})=>Wh(Uu.Consumer,{children:r=>Wh(z4,{context:r,label:e,menuActionHandler:t,menuBuilder:n,children:o})});import{isGroupMenuItemDescriptor as Z4}from"@vuu-ui/vuu-utils";import eW from"classnames";import{cloneElement as tW,useCallback as _h,useContext as nW}from"react";import $4 from"classnames";import CT,{createElement as ST,useEffect as W4,useRef as vT}from"react";import el from"react-dom";var wr=!1,en=[],wT=o=>(o==null?void 0:o.type)==="menu-action",TT=o=>(o==null?void 0:o.type)==="click-away";function qu(o){if(o.key==="Esc"){if(en.length)MT();else if(wr){let e=document.body.querySelector(".vuuDialog");e&&el.unmountComponentAtNode(e)}}}function ET(o){if(en.length){let e=document.body.querySelectorAll(".vuuPopup");for(let t=0;t<e.length;t++)if(e[t].contains(o.target))return;MT({mouseEvt:o,type:"click-away"})}}function MT(o){if(en.length===1)Re.hidePopup(o,"anon","all");else if(en.length){let e=document.body.querySelectorAll(".vuuPopup");for(let t=0;t<e.length;t++)el.unmountComponentAtNode(e[t]);RT("*")}}function _4(){wr===!1&&(wr=!0,window.addEventListener("keydown",qu,!0))}function K4(){wr&&(wr=!1,window.removeEventListener("keydown",qu,!0))}function U4(o){en.indexOf(o)===-1&&(en.push(o),wr===!1&&(window.addEventListener("keydown",qu,!0),window.addEventListener("click",ET,!0)))}function RT(o){if(en.length){if(o==="*")en.length=0;else{let e=en.indexOf(o);e!==-1&&en.splice(e,1)}en.length===0&&wr===!1&&(window.removeEventListener("keydown",qu,!0),window.removeEventListener("click",ET,!0))}}var G4=({children:o,position:e,style:t})=>{let n=$4("hwPopup","hwPopupContainer",e);return ST("div",{className:n,style:t},o)},q4=1,Re=class{static showPopup({group:e="all",name:t="anon",left:n=0,position:r="",right:s="auto",top:i=0,width:l="auto",component:a}){if(!a)throw Error("PopupService showPopup, no component supplied");typeof a.props.onClose=="function"?Re.onClose=a.props.onClose:Re.onClose=void 0,U4(t),document.addEventListener("keydown",Re.escapeKeyListener,!0);let u=document.body.querySelector(".vuuPopup."+e);u===null&&(u=document.createElement("div"),u.className="vuuPopup "+e,document.body.appendChild(u));let c={width:l};sl(ST(G4,{key:q4++,position:r,style:c},a),u,n,i,()=>{Re.keepWithinThePage(u,s)})}static escapeKeyListener(e){e.key==="Escape"&&Re.hidePopup({type:"escape",event:e})}static hidePopup(e,t="anon",n="all"){var r;if(en.indexOf(t)!==-1){RT(t);let s=document.body.querySelector(`.vuuPopup.${n}`);s&&el.unmountComponentAtNode(s)}document.removeEventListener("keydown",Re.escapeKeyListener,!0),(r=Re==null?void 0:Re.onClose)==null||r.call(Re,e)}static keepWithinThePage(e,t="auto"){let n=e.querySelector(".vuuPopupContainer > *");if(n){let{top:r,left:s,width:i,height:l,right:a}=n.getBoundingClientRect(),u=window.innerWidth,d=window.innerHeight-(r+l);d<0&&(n.style.top=Math.round(r)+d+"px");let p=u-(s+i);if(p<0&&(n.style.left=Math.round(s)+p+"px"),typeof t=="number"&&t!==a){let f=t-a;n.style.left=s+f+"px"}}}},Gu=class{static showDialog(e){let t=".vuuDialog",n=e.props.onClose;_4(),el.render(CT.cloneElement(e,{container:t,onClose:()=>{Gu.closeDialog(),n&&n()}}),document.body.querySelector(t))}static closeDialog(){K4();let e=document.body.querySelector(".vuuDialog");e&&el.unmountComponentAtNode(e)}},I2e=o=>{let e=vT(),t=vT(null),n=(r,s)=>{let{name:i,group:l,depth:a,width:u}=r,c,d;if(e.current&&(window.clearTimeout(e.current),e.current=void 0),r.close===!0)Re.hidePopup(void 0,i,l);else{let{position:p,children:f}=r,{left:h,top:g,width:m,bottom:y}=s;p==="below"?(c=h,d=y):p==="above"&&(c=h,d=g),e.current=window.setTimeout(()=>{Re.showPopup({name:i,group:l,depth:a,position:p,left:c,top:d,width:u||m,component:f})},10)}};return W4(()=>{if(t.current){let r=t.current.parentElement,s=r==null?void 0:r.getBoundingClientRect();s&&n(o,s)}return()=>{Re.hidePopup(void 0,o.name,o.group)}},[o]),CT.createElement("div",{className:"popup-proxy",ref:t})};import X4 from"classnames";import{useLayoutEffect as Q4,useState as j4}from"react";var J4=(o,e,t,n)=>{let{bottom:r,left:s,right:i,top:l,width:a}=o.getBoundingClientRect();switch(e){case"below":return{left:s+t,top:r+n};case"right":return{left:i+t,top:l+n};case"below-center":return{left:s+a/2+t,top:r+n};case"below-full-width":return{left:s+t,top:r+n,width:a};default:throw Error("Popup getPositionRelativeToAnchor only supported placement values are below and right")}},Qu=({anchorElement:o,offsetLeft:e=0,offsetTop:t=0,placement:n})=>{let[r,s]=j4();return Q4(()=>{if(o.current){let i=J4(o.current,n,e,t);s(i)}},[o,e,t,n]),r};import{jsx as Y4}from"react/jsx-runtime";var vc=({children:o,className:e,anchorElement:t,placement:n})=>{let[r,s,i]=Zt(),l=Qu({anchorElement:t,placement:n});return l===void 0?null:Y4("div",{className:X4("vuuPortal",e,r,s),"data-mode":i,style:l,children:o})};import{jsx as Kh}from"react/jsx-runtime";var Bn=(o,e)=>{let t=nW(Uu),[n,r,s]=Zt(),i=_h((u,c,d)=>{let p=[];for(let f of u)p=p.concat(f(c,d));return p},[]),l=_h((u,c,{ContextMenuProps:d,contextMenu:p,...f})=>{var g,m;if((g=u.stopPropagation)==null||g.call(u),(m=u.preventDefault)==null||m.call(u),p)return rW({x:u.clientX,y:u.clientY},p);let h=[];if(o&&h.push(o),t&&Array.isArray(t==null?void 0:t.menuBuilders)&&t.menuBuilders.length>0&&h.push(...t.menuBuilders),h.length>0){let y=i(h,c,f),w=v=>(e==null?void 0:e(v))===!0?!0:t==null?void 0:t.menuActionHandler(v);y.length&&w&&sW(u,y,w,{...d,className:eW(d==null?void 0:d.className,n,r),"data-mode":s})}else console.warn("useContextMenu, no menuBuilders configured. These should be supplied via the ContextMenuProvider(s)")},[i,t,s,r,e,o,n]),a=_h(()=>{console.log("hide comnytext menu")},[]);return[l,a]},oW={},rW=(o,e)=>{Re.showPopup({focus:!0,left:0,top:0,component:tW(e,{position:o})})},sW=(o,e,t,{position:n,...r}=oW)=>{let s=u=>{let c=(d,p)=>Z4(d)?Kh(Wu,{label:d.label,children:d.children.map(c)},p):Kh(_u,{action:d.action,className:d.className,"data-icon":d.icon,options:d.options,children:d.label},p);return u.map(c)},i=u=>{var c;wT(u)&&(t(u),Re.hidePopup()),(c=r==null?void 0:r.onClose)==null||c.call(r,u)},l=n!=null?n:{x:o.clientX,y:o.clientY},a=Kh($h,{...r,className:"vuuContextMenu",onClose:i,position:l,children:s(e)});Re.showPopup({left:0,top:0,component:a,focus:!0})};import{useCallback as DT,useRef as PT,useState as iW}from"react";import lW from"classnames";import{Button as aW}from"@salt-ds/core";import{jsx as cW}from"react/jsx-runtime";var Uh="vuuPopupMenu",uW=o=>{if(o){let{bottom:e,left:t}=o.getBoundingClientRect();return{x:t,y:e+6}}},Ki=({className:o,label:e,icon:t=e?"chevron-down":"more-vert",id:n,menuActionHandler:r,menuBuilder:s,menuLocation:i="header",menuOptions:l,onMenuClose:a,tabIndex:u=0,...c})=>{let d=PT(null),p=PT(!1),[f,h]=iW(!1),g=Pe(n),[m]=Bn(s,r),y=DT(v=>{h(!1),TT(v)?v.mouseEvt.target===d.current&&(p.current=!0):requestAnimationFrame(()=>{var x;a==null||a(v),u!==-1&&((x=d.current)==null||x.focus())})},[a,u]),w=DT(v=>{p.current?p.current=!1:(h(!0),m(v,i,{ContextMenuProps:{className:"vuuPopupMenuList",id:`${g}-menu`,onClose:y,position:uW(d.current)},...l}))},[y,g,i,l,m]);return cW(aW,{...c,"aria-controls":`${g}-menu-root`,"aria-expanded":f,"aria-haspopup":"menu",className:lW(Uh,o,{[`${Uh}-withCaption`]:e!==void 0,[`${Uh}-open`]:f}),"data-icon":t,id:g,onClick:w,ref:d,tabIndex:u,variant:"secondary",children:e})};import{useLayoutEffect as dW,useRef as pW,useState as fW}from"react";import{createPortal as hW}from"react-dom";function mW(o){return typeof o=="function"?o():o}var gW="vuu-portal-root",Us=({children:o,container:e=document.body,id:t=gW,open:n=!0})=>{var d;let[r,s]=fW(!1),i=pW(null),l=(d=mW(e))!=null?d:document.body,[a,u,c]=Zt();return dW(()=>{let p=document.getElementById(t);p?i.current=p:(i.current=document.createElement("div"),i.current.id=t);let f=i.current;l.contains(f)||l.appendChild(f),f.classList.add(a,u),f.dataset.mode=c,s(!0)},[t,l,a,u,c]),n&&r&&i.current&&o?hW(o,i.current):null};import{Button as kT}from"@salt-ds/core";import bW from"classnames";import{useLayoutEffect as yW,useRef as IT}from"react";import{jsx as tl,jsxs as LT}from"react/jsx-runtime";var ks="vuuPrompt",xW={current:document.body},vW={},v$=({PopupProps:o=vW,cancelButtonLabel:e="Cancel",confirmButtonLabel:t="Confirm",icon:n,onCancel:r,onConfirm:s,style:i,text:l,title:a,variant:u="info",...c})=>{let{anchorElement:d=xW,offsetLeft:p=0,offsetTop:f=0,placement:h="below"}=o,[g,m,y]=Zt(),w=Qu({anchorElement:d,offsetLeft:p,offsetTop:f,placement:h}),v=IT(null),x=IT(null);return yW(()=>{if(v.current&&(v.current.showModal(),x.current&&x.current.focus(),h.endsWith("center"))){let{width:S}=v.current.getBoundingClientRect();v.current.style.marginLeft=`-${S/2}px`}},[h]),tl("dialog",{...c,className:bW(ks,`${ks}-${u}`,g),"data-mode":y,ref:v,style:{...i,...w},children:LT("form",{className:`${ks}-form`,children:[tl("div",{className:`${ks}-header`,"data-icon":n,children:a}),tl("div",{className:`${ks}-text`,children:l}),LT("div",{className:`${ks}-buttonBar`,children:[tl(kT,{onClick:r,variant:"secondary",children:e}),tl(kT,{onClick:s,ref:x,value:"default",children:t})]})]})})};import{useLayoutEffect as CW,useState as SW}from"react";var wW=(o,e,t,n)=>{let{bottom:r,height:s,left:i,right:l,top:a,width:u}=o.getBoundingClientRect(),c=i+u/2,d=a+s/2;switch(e){case"above":return{left:c+t,top:a+n};case"below":return{left:c+t,top:r+n};case"right":return{left:l+t,top:d+t};case"left":return{left:i+t,top:d+t};default:throw Error("Tooltip getPositionRelativeToAnchor only supported placement values are left, right, below and right")}},AT=({anchorElement:o,offsetLeft:e=0,offsetTop:t=0,placement:n})=>{let[r,s]=SW();return CW(()=>{if(o.current){let i=wW(o.current,n,e,t);s(i)}},[o,e,t,n]),r};import{jsx as Gh}from"react/jsx-runtime";var OT="vuuTooltip",i$e=({anchorElement:o,children:e,id:t,onMouseEnter:n,onMouseLeave:r,placement:s})=>{let i=AT({anchorElement:o,placement:s});return i===void 0?null:Gh(Us,{children:Gh("div",{className:OT,"data-align":s,id:t,style:i,children:Gh("span",{className:`${OT}-content`,onMouseEnter:n,onMouseLeave:r,children:e})})})};import{useCallback as Tr,useRef as ju,useState as TW}from"react";var f$e=({id:o,placement:e="right",tooltipContent:t})=>{let n=ju(),r=ju(null),s=ju(),i=ju(),[l,a]=TW(),u=Pe(o),c=Tr(y=>{var w;y.key==="Escape"&&((w=n.current)==null||w.call(n))},[]);n.current=Tr(()=>{a(void 0),document.removeEventListener("keydown",c)},[c]);let d=Tr(()=>{window.clearTimeout(i.current)},[]),p=Tr(()=>{var y;(y=n.current)==null||y.call(n)},[]),f=Tr(()=>{let{current:y}=r;y&&(a({anchorElement:r,children:t,id:`${u}-tooltip`,onMouseEnter:d,onMouseLeave:p,placement:e}),document.addEventListener("keydown",c)),s.current=void 0},[c,d,p,u,e,t]),h=Tr(y=>{let w=y.target;w&&(r.current=w,s.current=window.setTimeout(f,800))},[f]),g=Tr(()=>{r.current&&(s.current?(window.clearTimeout(s.current),s.current=void 0):n.current&&(i.current=window.setTimeout(n.current,200)))},[]);return{anchorProps:{"aria-describedby":`${u}-tooltip`,onMouseEnter:h,onMouseLeave:g},tooltipProps:l}};export{$h as ContextMenu,Uu as ContextMenuContext,Dd as ContextMenuProvider,yBe as Dialog,Gu as DialogService,_u as MenuItem,Wu as MenuItemGroup,Vh as MenuList,I2e as Popup,vc as PopupComponent,Ki as PopupMenu,Re as PopupService,Us as Portal,Or as PortalDeprecated,v$ as Prompt,uT as Separator,i$e as Tooltip,Zh as createContainer,oBe as installTheme,Fh as isMenuItemLabel,TT as reasonIsClickAway,wT as reasonIsMenuAction,sl as renderPortal,Qu as useAnchoredPosition,Bn as useContextMenu,f$e as useTooltip};
1
+ // src/dialog/Dialog.tsx
2
+ import { Scrim } from "@salt-ds/lab";
3
+ import { Button, Text } from "@salt-ds/core";
4
+ import cx3 from "classnames";
5
+ import { useCallback, useRef, useState } from "react";
6
+
7
+ // src/portal-deprecated/PortalDeprecated.tsx
8
+ import { useLayoutEffect, useMemo } from "react";
9
+ import * as ReactDOM2 from "react-dom";
10
+
11
+ // src/portal-deprecated/render-portal.tsx
12
+ import * as ReactDOM from "react-dom";
13
+ import cx from "classnames";
14
+ var containerId = 1;
15
+ var getPortalContainer = ({
16
+ className,
17
+ dataMode,
18
+ x = 0,
19
+ y = 0,
20
+ win = window
21
+ }) => {
22
+ const el = win.document.createElement("div");
23
+ el.className = cx(`vuuPopup ${containerId++}`, className);
24
+ el.style.cssText = `left:${x}px; top:${y}px;`;
25
+ if (dataMode) {
26
+ el.dataset.mode = dataMode;
27
+ }
28
+ win.document.body.appendChild(el);
29
+ return el;
30
+ };
31
+ var createContainer = (props) => getPortalContainer(props);
32
+ var renderPortal = (component, container, x, y, onRender) => {
33
+ container.style.cssText = `left:${x}px; top:${y}px;position: absolute;`;
34
+ ReactDOM.render(component, container, onRender);
35
+ };
36
+
37
+ // src/portal-deprecated/PortalDeprecated.tsx
38
+ import { useThemeAttributes } from "@vuu-ui/vuu-shell";
39
+ import cx2 from "classnames";
40
+ var PortalDeprecated = function Portal({
41
+ children,
42
+ x = 0,
43
+ y = 0,
44
+ onRender
45
+ }) {
46
+ const [themeClass, densityClass, dataMode] = useThemeAttributes();
47
+ const renderContainer = useMemo(() => {
48
+ return createContainer({
49
+ className: cx2(themeClass, densityClass),
50
+ dataMode
51
+ });
52
+ }, [dataMode, densityClass, themeClass]);
53
+ useLayoutEffect(() => {
54
+ renderPortal(children, renderContainer, x, y, onRender);
55
+ }, [children, onRender, renderContainer, x, y]);
56
+ useLayoutEffect(() => {
57
+ return () => {
58
+ var _a;
59
+ if (renderContainer) {
60
+ ReactDOM2.unmountComponentAtNode(renderContainer);
61
+ if (renderContainer.classList.contains("vuuPopup")) {
62
+ (_a = renderContainer.parentElement) == null ? void 0 : _a.removeChild(renderContainer);
63
+ }
64
+ }
65
+ };
66
+ }, [renderContainer]);
67
+ return null;
68
+ };
69
+
70
+ // src/portal-deprecated/portal-utils.ts
71
+ var installTheme = (themeId) => {
72
+ const installedThemes = getComputedStyle(document.body).getPropertyValue(
73
+ "--installed-themes"
74
+ );
75
+ document.body.style.setProperty(
76
+ "--installed-themes",
77
+ `${installedThemes} ${themeId}`
78
+ );
79
+ };
80
+
81
+ // src/dialog/Dialog.tsx
82
+ import { jsx, jsxs } from "react/jsx-runtime";
83
+ var classBase = "vuuDialog";
84
+ var Dialog = ({
85
+ children,
86
+ className,
87
+ isOpen = false,
88
+ onClose,
89
+ title,
90
+ hideCloseButton = false,
91
+ ...props
92
+ }) => {
93
+ const root = useRef(null);
94
+ const [posX] = useState(0);
95
+ const [posY] = useState(0);
96
+ const close = useCallback(() => {
97
+ onClose == null ? void 0 : onClose();
98
+ }, [onClose]);
99
+ const handleRender = useCallback(() => {
100
+ }, []);
101
+ if (!isOpen) {
102
+ return null;
103
+ }
104
+ return /* @__PURE__ */ jsx(PortalDeprecated, { onRender: handleRender, x: posX, y: posY, children: /* @__PURE__ */ jsx(Scrim, { className: `${classBase}-scrim`, open: isOpen, autoFocusRef: root, children: /* @__PURE__ */ jsxs("div", { ...props, className: cx3(classBase, className), ref: root, children: [
105
+ /* @__PURE__ */ jsxs("div", { className: cx3("vuuToolbarProxy", `${classBase}-header`), children: [
106
+ /* @__PURE__ */ jsx(Text, { className: "dialogHeader", children: title }),
107
+ !hideCloseButton && /* @__PURE__ */ jsx(
108
+ Button,
109
+ {
110
+ onClick: close,
111
+ "data-align": "end",
112
+ "data-icon": "close"
113
+ },
114
+ "close"
115
+ )
116
+ ] }),
117
+ children
118
+ ] }) }) });
119
+ };
120
+
121
+ // src/menu/ContextMenu.tsx
122
+ import { useCallback as useCallback5, useRef as useRef5 } from "react";
123
+
124
+ // src/menu/MenuList.tsx
125
+ import React2, {
126
+ useLayoutEffect as useLayoutEffect2,
127
+ useMemo as useMemo4,
128
+ useRef as useRef3
129
+ } from "react";
130
+ import cx4 from "classnames";
131
+ import { useId } from "@vuu-ui/vuu-layout";
132
+
133
+ // src/menu/use-keyboard-navigation.ts
134
+ import {
135
+ useCallback as useCallback2,
136
+ useMemo as useMemo2,
137
+ useRef as useRef2,
138
+ useState as useState2
139
+ } from "react";
140
+
141
+ // src/menu/utils.ts
142
+ var isRoot = (el) => el.closest(`[data-root='true']`) !== null;
143
+ var hasPopup = (el, idx) => {
144
+ var _a;
145
+ return el.ariaHasPopup === "true" && ((_a = el.dataset) == null ? void 0 : _a.idx) === `${idx}` || el.querySelector(`:scope > [data-idx='${idx}'][aria-haspopup='true']`) !== null;
146
+ };
147
+
148
+ // src/menu/key-code.ts
149
+ function union(set1, ...sets) {
150
+ const result = new Set(set1);
151
+ for (const set of sets) {
152
+ for (const element of set) {
153
+ result.add(element);
154
+ }
155
+ }
156
+ return result;
157
+ }
158
+ var Enter = "Enter";
159
+ var Delete = "Delete";
160
+ var actionKeys = /* @__PURE__ */ new Set([Enter, Delete]);
161
+ var focusKeys = /* @__PURE__ */ new Set(["Tab"]);
162
+ var arrowLeftRightKeys = /* @__PURE__ */ new Set(["ArrowRight", "ArrowLeft"]);
163
+ var verticalNavigationKeys = /* @__PURE__ */ new Set(["Home", "End", "ArrowDown", "ArrowUp"]);
164
+ var horizontalNavigationKeys = /* @__PURE__ */ new Set([
165
+ "Home",
166
+ "End",
167
+ "ArrowRight",
168
+ "ArrowLeft"
169
+ ]);
170
+ var functionKeys = /* @__PURE__ */ new Set([
171
+ "F1",
172
+ "F2",
173
+ "F3",
174
+ "F4",
175
+ "F5",
176
+ "F6",
177
+ "F7",
178
+ "F8",
179
+ "F9",
180
+ "F10",
181
+ "F11",
182
+ "F12"
183
+ ]);
184
+ var specialKeys = union(
185
+ actionKeys,
186
+ horizontalNavigationKeys,
187
+ verticalNavigationKeys,
188
+ arrowLeftRightKeys,
189
+ functionKeys,
190
+ focusKeys
191
+ );
192
+ var isNavigationKey = ({ key }, orientation = "vertical") => {
193
+ const navigationKeys = orientation === "vertical" ? verticalNavigationKeys : horizontalNavigationKeys;
194
+ return navigationKeys.has(key);
195
+ };
196
+
197
+ // src/menu/use-keyboard-navigation.ts
198
+ import { isValidNumber } from "@vuu-ui/vuu-utils";
199
+ var useKeyboardNavigation = ({
200
+ autoHighlightFirstItem = false,
201
+ count,
202
+ defaultHighlightedIdx,
203
+ highlightedIndex: highlightedIndexProp,
204
+ onActivate,
205
+ onHighlight,
206
+ // onKeyDown,
207
+ onCloseMenu,
208
+ onOpenMenu
209
+ }) => {
210
+ var _a;
211
+ if (isValidNumber(highlightedIndexProp) && isValidNumber(defaultHighlightedIdx)) {
212
+ throw Error(
213
+ "useKeyboardNavigation do not pass values for both highlightedIndex and defaultHighlightedIdx"
214
+ );
215
+ }
216
+ const controlledHighlighting = isValidNumber(highlightedIndexProp);
217
+ const highlightedIndexRef = useRef2(
218
+ (_a = defaultHighlightedIdx != null ? defaultHighlightedIdx : highlightedIndexProp) != null ? _a : autoHighlightFirstItem ? 0 : -1
219
+ );
220
+ const [, forceRender] = useState2(null);
221
+ const setHighlightedIdx = useCallback2(
222
+ (idx) => {
223
+ highlightedIndexRef.current = idx;
224
+ onHighlight == null ? void 0 : onHighlight(idx);
225
+ forceRender({});
226
+ },
227
+ [onHighlight]
228
+ );
229
+ const setHighlightedIndex = useCallback2(
230
+ (idx) => {
231
+ if (idx !== highlightedIndexRef.current) {
232
+ if (!controlledHighlighting) {
233
+ setHighlightedIdx(idx);
234
+ }
235
+ }
236
+ },
237
+ [controlledHighlighting, setHighlightedIdx]
238
+ );
239
+ const keyBoardNavigation = useRef2(true);
240
+ const ignoreFocus = useRef2(false);
241
+ const setIgnoreFocus = (value) => ignoreFocus.current = value;
242
+ const highlightedIndex = controlledHighlighting ? highlightedIndexProp : highlightedIndexRef.current;
243
+ const navigateChildldItems = useCallback2(
244
+ (e) => {
245
+ const nextIdx = nextItemIdx(count, e.key, highlightedIndexRef.current);
246
+ if (nextIdx !== highlightedIndexRef.current) {
247
+ setHighlightedIndex(nextIdx);
248
+ }
249
+ },
250
+ [count, setHighlightedIndex]
251
+ );
252
+ const handleKeyDown = useCallback2(
253
+ (e) => {
254
+ if (isNavigationKey(e)) {
255
+ e.preventDefault();
256
+ e.stopPropagation();
257
+ keyBoardNavigation.current = true;
258
+ navigateChildldItems(e);
259
+ } else if ((e.key === "ArrowRight" || e.key === "Enter") && hasPopup(e.target, highlightedIndex)) {
260
+ const menuEl = e.target;
261
+ const menuItemEl = menuEl.querySelector(
262
+ `:scope > [data-idx='${highlightedIndex}']`
263
+ );
264
+ if (menuItemEl) {
265
+ onOpenMenu == null ? void 0 : onOpenMenu(menuItemEl);
266
+ }
267
+ } else if (e.key === "ArrowLeft" && !isRoot(e.target)) {
268
+ onCloseMenu(highlightedIndex);
269
+ } else if (e.key === "Enter") {
270
+ e.preventDefault();
271
+ e.stopPropagation();
272
+ onActivate && onActivate(highlightedIndex);
273
+ } else if (e.key === "Tab") {
274
+ onCloseMenu(-1);
275
+ }
276
+ },
277
+ [
278
+ highlightedIndex,
279
+ navigateChildldItems,
280
+ onActivate,
281
+ onCloseMenu,
282
+ onOpenMenu
283
+ ]
284
+ );
285
+ const listProps = useMemo2(
286
+ () => ({
287
+ onFocus: () => {
288
+ if (highlightedIndex === -1) {
289
+ setHighlightedIdx(0);
290
+ }
291
+ },
292
+ onKeyDown: handleKeyDown,
293
+ onMouseDownCapture: () => {
294
+ keyBoardNavigation.current = false;
295
+ setIgnoreFocus(true);
296
+ },
297
+ // onMouseEnter would seem less expensive but it misses some cases
298
+ onMouseMove: () => {
299
+ if (keyBoardNavigation.current) {
300
+ keyBoardNavigation.current = false;
301
+ }
302
+ },
303
+ onMouseLeave: () => {
304
+ keyBoardNavigation.current = true;
305
+ setIgnoreFocus(false);
306
+ setHighlightedIndex(-1);
307
+ }
308
+ }),
309
+ [handleKeyDown, highlightedIndex, setHighlightedIdx, setHighlightedIndex]
310
+ );
311
+ return {
312
+ focusVisible: keyBoardNavigation.current ? highlightedIndex : -1,
313
+ controlledHighlighting,
314
+ highlightedIndex,
315
+ setHighlightedIndex,
316
+ // keyBoardNavigation,
317
+ listProps,
318
+ setIgnoreFocus
319
+ };
320
+ };
321
+ function nextItemIdx(count, key, idx) {
322
+ if (key === "ArrowUp") {
323
+ if (idx > 0) {
324
+ return idx - 1;
325
+ } else {
326
+ return idx;
327
+ }
328
+ } else {
329
+ if (idx === null) {
330
+ return 0;
331
+ } else if (idx === count - 1) {
332
+ return idx;
333
+ } else {
334
+ return idx + 1;
335
+ }
336
+ }
337
+ }
338
+
339
+ // src/menu/use-items-with-ids-next.ts
340
+ import React, { useCallback as useCallback3, useMemo as useMemo3 } from "react";
341
+ var isMenuItemGroup = (child) => child.type === MenuItemGroup || !!child.props["data-group"];
342
+ var getLabelFromChildren = (children) => {
343
+ if (Array.isArray(children) && isMenuItemLabel(children[0])) {
344
+ return children[0];
345
+ }
346
+ };
347
+ var assignId = (child, path, group, hasSeparator = false) => {
348
+ const {
349
+ props: { children }
350
+ } = child;
351
+ return {
352
+ childWithId: React.cloneElement(child, {
353
+ hasSeparator,
354
+ id: `${path}`,
355
+ key: path,
356
+ children: group ? getLabelFromChildren(children) : children
357
+ }),
358
+ grandChildren: group ? children : void 0
359
+ };
360
+ };
361
+ var useItemsWithIdsNext = (childrenProp, rootId) => {
362
+ const normalizeChildren = useCallback3(() => {
363
+ const collectChildren = (children, path = rootId, menus2 = {}, actions2 = {}) => {
364
+ const list = menus2[path] = [];
365
+ let idx = 0;
366
+ let hasSeparator = false;
367
+ React.Children.forEach(children, (child) => {
368
+ if (isMenuItemLabel(child)) {
369
+ } else if (child.type === Separator) {
370
+ hasSeparator = true;
371
+ } else {
372
+ const hasChildItems = isMenuItemGroup(child);
373
+ const childPath = `${path}-${idx}`;
374
+ const {
375
+ props: { action, options }
376
+ } = child;
377
+ const { childWithId, grandChildren } = assignId(
378
+ child,
379
+ childPath,
380
+ hasChildItems,
381
+ hasSeparator
382
+ );
383
+ list.push(childWithId);
384
+ if (grandChildren) {
385
+ collectChildren(grandChildren, childPath, menus2, actions2);
386
+ } else {
387
+ actions2[childPath] = { action, options };
388
+ }
389
+ idx += 1;
390
+ hasSeparator = false;
391
+ }
392
+ });
393
+ return [menus2, actions2];
394
+ };
395
+ return collectChildren(childrenProp);
396
+ }, [rootId, childrenProp]);
397
+ const [menus, actions] = useMemo3(
398
+ () => normalizeChildren(),
399
+ [normalizeChildren]
400
+ );
401
+ return [menus, actions];
402
+ };
403
+
404
+ // src/menu/MenuList.tsx
405
+ import { Fragment, jsx as jsx2 } from "react/jsx-runtime";
406
+ var classBase2 = "vuuMenuList";
407
+ var Separator = () => /* @__PURE__ */ jsx2("li", { className: "vuuMenuItem-divider" });
408
+ var MenuItemGroup = () => null;
409
+ var MenuItem = ({ children, idx, ...props }) => {
410
+ return /* @__PURE__ */ jsx2("div", { ...props, children });
411
+ };
412
+ var MenuItemLabel = ({ children }) => /* @__PURE__ */ jsx2(Fragment, { children });
413
+ MenuItemLabel.displayName = "MenuItemLabel";
414
+ MenuItem.Label = MenuItemLabel;
415
+ var getDisplayName = (item) => React2.isValidElement(item) && typeof item.type !== "string" && "displayName" in item.type ? item.type.displayName : void 0;
416
+ var isMenuItemLabel = (item) => getDisplayName(item) === "MenuItemLabel";
417
+ var hasIcon = (child) => child.props["data-icon"];
418
+ var MenuList = ({
419
+ activatedByKeyboard,
420
+ childMenuShowing,
421
+ children,
422
+ className,
423
+ defaultHighlightedIdx,
424
+ highlightedIdx: highlightedIdxProp,
425
+ id: idProp,
426
+ isRoot: isRoot2,
427
+ listItemProps,
428
+ onHighlightMenuItem,
429
+ onActivate,
430
+ onCloseMenu,
431
+ onOpenMenu,
432
+ ...props
433
+ }) => {
434
+ const id = useId(idProp);
435
+ const root = useRef3(null);
436
+ const mapIdxToId = useMemo4(() => /* @__PURE__ */ new Map(), []);
437
+ const handleActivate = (idx) => {
438
+ var _a;
439
+ const el = (_a = root.current) == null ? void 0 : _a.querySelector(`:scope > [data-idx='${idx}']`);
440
+ (el == null ? void 0 : el.id) && (onActivate == null ? void 0 : onActivate(el.id));
441
+ };
442
+ const { focusVisible, highlightedIndex, listProps } = useKeyboardNavigation({
443
+ count: React2.Children.count(children),
444
+ defaultHighlightedIdx,
445
+ highlightedIndex: highlightedIdxProp,
446
+ onActivate: handleActivate,
447
+ onHighlight: onHighlightMenuItem,
448
+ onOpenMenu,
449
+ onCloseMenu
450
+ });
451
+ const appliedFocusVisible = childMenuShowing == void 0 ? focusVisible : -1;
452
+ useLayoutEffect2(() => {
453
+ var _a;
454
+ if (childMenuShowing === void 0 && activatedByKeyboard) {
455
+ (_a = root.current) == null ? void 0 : _a.focus();
456
+ }
457
+ }, [activatedByKeyboard, childMenuShowing]);
458
+ const getActiveDescendant = () => highlightedIndex === void 0 || highlightedIndex === -1 ? void 0 : mapIdxToId.get(highlightedIndex);
459
+ function renderContent() {
460
+ const propsCommonToAllListItems = {
461
+ ...listItemProps,
462
+ role: "menuitem"
463
+ };
464
+ const maybeIcon = (childElement, withIcon, iconName) => withIcon ? [
465
+ /* @__PURE__ */ jsx2(
466
+ "span",
467
+ {
468
+ className: "vuuIconContainer",
469
+ "data-icon": iconName
470
+ },
471
+ "icon"
472
+ )
473
+ ].concat(childElement) : childElement;
474
+ function addClonedChild(list, child, idx, withIcon) {
475
+ var _a;
476
+ const {
477
+ children: children2,
478
+ className: className2,
479
+ "data-icon": iconName,
480
+ id: itemId,
481
+ hasSeparator,
482
+ label,
483
+ ...props2
484
+ } = child.props;
485
+ const hasSubMenu = isMenuItemGroup(child);
486
+ const subMenuShowing = hasSubMenu && childMenuShowing === itemId;
487
+ const ariaControls = subMenuShowing ? `${id}-${itemId}` : void 0;
488
+ list.push(
489
+ /* @__PURE__ */ jsx2(
490
+ MenuItem,
491
+ {
492
+ ...props2,
493
+ ...propsCommonToAllListItems,
494
+ ...getMenuItemProps(
495
+ itemId,
496
+ idx,
497
+ (_a = child.key) != null ? _a : itemId,
498
+ highlightedIndex,
499
+ appliedFocusVisible,
500
+ className2,
501
+ hasSeparator
502
+ ),
503
+ "aria-controls": ariaControls,
504
+ "aria-haspopup": hasSubMenu || void 0,
505
+ "aria-expanded": subMenuShowing || void 0,
506
+ children: hasSubMenu ? maybeIcon(label != null ? label : children2, withIcon, iconName) : maybeIcon(children2, withIcon, iconName)
507
+ }
508
+ )
509
+ );
510
+ }
511
+ const listItems = [];
512
+ if (children.length > 0) {
513
+ const withIcon = children.some(hasIcon);
514
+ children.forEach((child, idx) => {
515
+ addClonedChild(listItems, child, idx, withIcon);
516
+ });
517
+ }
518
+ return listItems;
519
+ }
520
+ return /* @__PURE__ */ jsx2(
521
+ "div",
522
+ {
523
+ ...props,
524
+ ...listProps,
525
+ "aria-activedescendant": getActiveDescendant(),
526
+ className: cx4(classBase2, className, {
527
+ [`${classBase2}-childMenuShowing`]: childMenuShowing !== void 0
528
+ }),
529
+ "data-root": isRoot2 || void 0,
530
+ id,
531
+ ref: root,
532
+ role: "menu",
533
+ children: renderContent()
534
+ }
535
+ );
536
+ };
537
+ var getMenuItemProps = (itemId, idx, key, highlightedIdx, focusVisible, className, hasSeparator) => ({
538
+ id: `menuitem-${itemId}`,
539
+ key: key != null ? key : idx,
540
+ "data-idx": idx,
541
+ "data-highlighted": idx === highlightedIdx || void 0,
542
+ className: cx4("vuuMenuItem", className, {
543
+ "vuuMenuItem-separator": hasSeparator,
544
+ focusVisible: focusVisible === idx
545
+ })
546
+ });
547
+ MenuList.displayName = "MenuList";
548
+
549
+ // src/menu/use-cascade.ts
550
+ import {
551
+ useCallback as useCallback4,
552
+ useMemo as useMemo5,
553
+ useRef as useRef4,
554
+ useState as useState3
555
+ } from "react";
556
+
557
+ // src/menu/list-dom-utils.ts
558
+ var closestListItem = (el) => el == null ? void 0 : el.closest("[data-idx],[aria-posinset]");
559
+
560
+ // src/menu/use-cascade.ts
561
+ var nudge = (menus, distance, pos) => {
562
+ return menus.map(
563
+ (m, i) => i === menus.length - 1 ? {
564
+ ...m,
565
+ [pos]: m[pos] - distance
566
+ } : m
567
+ );
568
+ };
569
+ var nudgeLeft = (menus, distance) => nudge(menus, distance, "left");
570
+ var nudgeUp = (menus, distance) => nudge(menus, distance, "top");
571
+ var flipSides = (id, menus) => {
572
+ const [parentMenu, menu] = menus.slice(-2);
573
+ const el = document.getElementById(`${id}-${menu.id}`);
574
+ if (el === null) {
575
+ throw Error(`useCascade.flipSides element with id ${menu.id} not found`);
576
+ }
577
+ const { width } = el.getBoundingClientRect();
578
+ return menus.map(
579
+ (m) => m === menu ? {
580
+ ...m,
581
+ left: parentMenu.left - (width - 2)
582
+ } : m
583
+ );
584
+ };
585
+ var getPosition = (el, openMenus) => {
586
+ const [{ left, top: menuTop }] = openMenus.slice(-1);
587
+ const { offsetWidth: width, offsetTop: top } = el;
588
+ return { left: left + width, top: top + menuTop };
589
+ };
590
+ var getHostMenuId = (id, rootId) => {
591
+ const pos = id.lastIndexOf("-");
592
+ return pos > -1 ? id.slice(9, pos) : rootId;
593
+ };
594
+ var getTargetMenuId = (id) => id.slice(9);
595
+ var getMenuItemDetails = ({ ariaExpanded, ariaHasPopup, id }, rootId) => {
596
+ if (id.startsWith("menuitem")) {
597
+ return {
598
+ hostMenuId: getHostMenuId(id, rootId),
599
+ targetMenuId: getTargetMenuId(id),
600
+ menuItemId: id,
601
+ isGroup: ariaHasPopup === "true",
602
+ isOpen: ariaExpanded === "true"
603
+ };
604
+ } else {
605
+ throw Error(`getMenuItemDetails #${id} is not a menuitem`);
606
+ }
607
+ };
608
+ var useCascade = ({
609
+ id: rootId,
610
+ onActivate,
611
+ onMouseEnterItem,
612
+ position: { x: posX, y: posY }
613
+ }) => {
614
+ const [, forceRefresh] = useState3({});
615
+ const openMenus = useRef4([
616
+ { id: rootId, left: posX, top: posY }
617
+ ]);
618
+ const menuIsOpen = useCallback4(
619
+ (menuId) => openMenus.current.findIndex((menu) => menu.id === menuId) !== -1,
620
+ []
621
+ );
622
+ const getOpenMenuStatus = useCallback4((menuId) => {
623
+ const state = menuState.current[menuId];
624
+ if (state === void 0) {
625
+ throw Error(`getOpenMenuState no entry for menu ${menuId}`);
626
+ }
627
+ return state;
628
+ }, []);
629
+ const setOpenMenus = useCallback4((menus) => {
630
+ openMenus.current = menus;
631
+ forceRefresh({});
632
+ }, []);
633
+ const menuOpenPendingTimeout = useRef4();
634
+ const menuClosePendingTimeout = useRef4();
635
+ const menuState = useRef4({ [rootId]: "no-popup" });
636
+ const openMenu = useCallback4(
637
+ (hostMenuId = rootId, targetMenuId, itemId = null) => {
638
+ if (hostMenuId === rootId && itemId === null) {
639
+ setOpenMenus([{ id: rootId, left: posX, top: posY }]);
640
+ } else {
641
+ menuState.current[hostMenuId] = "popup-open";
642
+ const el = document.getElementById(itemId);
643
+ if (el !== null) {
644
+ const { left, top } = getPosition(el, openMenus.current);
645
+ setOpenMenus(
646
+ openMenus.current.concat({ id: targetMenuId, left, top })
647
+ );
648
+ } else {
649
+ throw Error(`openMenu no menuItem ${itemId}`);
650
+ }
651
+ }
652
+ },
653
+ [rootId, posX, posY, setOpenMenus]
654
+ );
655
+ const closeMenu = useCallback4(
656
+ (menuId) => {
657
+ if (menuId === rootId) {
658
+ setOpenMenus([]);
659
+ } else {
660
+ const menus = openMenus.current.slice();
661
+ const lastMenu = menus.pop();
662
+ menuState.current[lastMenu.id] = "no-popup";
663
+ const parentMenu = menus.at(-1);
664
+ if (parentMenu) {
665
+ menuState.current[parentMenu.id] = "no-popup";
666
+ }
667
+ setOpenMenus(menus);
668
+ }
669
+ },
670
+ [rootId, setOpenMenus]
671
+ );
672
+ const closeMenus = useCallback4(
673
+ (menuItemId) => {
674
+ const menus = openMenus.current.slice();
675
+ const menuItemMenuId = menuItemId.slice(9);
676
+ let { id: lastMenuId } = menus.at(-1);
677
+ while (menus.length > 1 && !menuItemMenuId.startsWith(lastMenuId)) {
678
+ const parentMenuId = getHostMenuId(lastMenuId, rootId);
679
+ menus.pop();
680
+ menuState.current[lastMenuId] = "no-popup";
681
+ menuState.current[parentMenuId] = "no-popup";
682
+ ({ id: lastMenuId } = menus[menus.length - 1]);
683
+ }
684
+ if (menus.length < openMenus.current.length) {
685
+ setOpenMenus(menus);
686
+ }
687
+ },
688
+ [rootId, setOpenMenus]
689
+ );
690
+ const clearAnyScheduledOpenTasks = useCallback4(() => {
691
+ if (menuOpenPendingTimeout.current) {
692
+ clearTimeout(menuOpenPendingTimeout.current);
693
+ menuOpenPendingTimeout.current = void 0;
694
+ }
695
+ }, []);
696
+ const scheduleOpen = useCallback4(
697
+ (hostMenuId, targetMenuId, menuItemId) => {
698
+ clearAnyScheduledOpenTasks();
699
+ menuOpenPendingTimeout.current = window.setTimeout(() => {
700
+ closeMenus(menuItemId);
701
+ menuState.current[hostMenuId] = "popup-open";
702
+ menuState.current[targetMenuId] = "no-popup";
703
+ openMenu(hostMenuId, targetMenuId, menuItemId);
704
+ }, 400);
705
+ },
706
+ [clearAnyScheduledOpenTasks, closeMenus, openMenu]
707
+ );
708
+ const scheduleClose = useCallback4(
709
+ (hostMenuId, openMenuId, itemId) => {
710
+ menuState.current[openMenuId] = "pending-close";
711
+ menuClosePendingTimeout.current = window.setTimeout(() => {
712
+ closeMenus(itemId);
713
+ }, 400);
714
+ },
715
+ [closeMenus]
716
+ );
717
+ const handleRender = useCallback4(() => {
718
+ const { current: menus } = openMenus;
719
+ const [menu] = menus.slice(-1);
720
+ const el = document.getElementById(menu.id);
721
+ if (el) {
722
+ const { right, bottom } = el.getBoundingClientRect();
723
+ const { clientHeight, clientWidth } = document.body;
724
+ if (right > clientWidth) {
725
+ const newMenus = menus.length > 1 ? flipSides(rootId, menus) : nudgeLeft(menus, right - clientWidth);
726
+ setOpenMenus(newMenus);
727
+ } else if (bottom > clientHeight) {
728
+ const newMenus = nudgeUp(menus, bottom - clientHeight);
729
+ setOpenMenus(newMenus);
730
+ }
731
+ if (typeof el.tabIndex === "number") {
732
+ el.focus();
733
+ }
734
+ } else {
735
+ console.log(`no element found with if ${menu.id}`);
736
+ }
737
+ }, [rootId, setOpenMenus]);
738
+ const triggerChildMenu = useCallback4(
739
+ (menuItemEl) => {
740
+ const { hostMenuId, targetMenuId, menuItemId, isGroup, isOpen } = getMenuItemDetails(menuItemEl, rootId);
741
+ const {
742
+ current: { [hostMenuId]: state }
743
+ } = menuState;
744
+ if (state === "no-popup" && isGroup) {
745
+ menuState.current[hostMenuId] = "popup-pending";
746
+ scheduleOpen(hostMenuId, targetMenuId, menuItemId);
747
+ } else if (state === "popup-pending" && !isGroup) {
748
+ menuState.current[hostMenuId] = "no-popup";
749
+ clearTimeout(menuOpenPendingTimeout.current);
750
+ menuOpenPendingTimeout.current = void 0;
751
+ } else if (state === "popup-pending" && isGroup) {
752
+ clearTimeout(menuOpenPendingTimeout.current);
753
+ scheduleOpen(hostMenuId, targetMenuId, menuItemId);
754
+ } else if (state === "popup-open") {
755
+ if (menuIsOpen(targetMenuId)) {
756
+ const menuStatus = getOpenMenuStatus(targetMenuId);
757
+ closeMenus(menuItemId);
758
+ switch (menuStatus) {
759
+ case "pending-close":
760
+ clearTimeout(menuClosePendingTimeout.current);
761
+ menuClosePendingTimeout.current = void 0;
762
+ menuState.current[targetMenuId] = "no-popup";
763
+ clearAnyScheduledOpenTasks();
764
+ break;
765
+ default:
766
+ }
767
+ } else {
768
+ const [parentOfLastOpenedMenu, lastOpenedMenu] = openMenus.current.slice(-2);
769
+ if (parentOfLastOpenedMenu.id === hostMenuId && menuState.current[lastOpenedMenu.id] !== "pending-close") {
770
+ scheduleClose(hostMenuId, lastOpenedMenu.id, menuItemId);
771
+ if (isGroup && !isOpen) {
772
+ scheduleOpen(hostMenuId, targetMenuId, menuItemId);
773
+ }
774
+ } else if (parentOfLastOpenedMenu.id === hostMenuId && isGroup && menuItemId !== lastOpenedMenu.id && menuState.current[lastOpenedMenu.id] === "pending-close") {
775
+ scheduleOpen(hostMenuId, targetMenuId, menuItemId);
776
+ } else if (isGroup) {
777
+ scheduleOpen(hostMenuId, targetMenuId, menuItemId);
778
+ } else if (!(menuState.current[lastOpenedMenu.id] === "pending-close")) {
779
+ closeMenus(menuItemId);
780
+ }
781
+ }
782
+ }
783
+ if (state === "pending-close") {
784
+ clearAnyScheduledOpenTasks();
785
+ clearTimeout(menuClosePendingTimeout.current);
786
+ menuClosePendingTimeout.current = void 0;
787
+ menuState.current[hostMenuId] = "popup-open";
788
+ }
789
+ },
790
+ [
791
+ clearAnyScheduledOpenTasks,
792
+ closeMenus,
793
+ getOpenMenuStatus,
794
+ menuIsOpen,
795
+ rootId,
796
+ scheduleClose,
797
+ scheduleOpen
798
+ ]
799
+ );
800
+ const listItemProps = useMemo5(
801
+ () => ({
802
+ onMouseEnter: (evt) => {
803
+ const menuItemEl = closestListItem(evt.target);
804
+ triggerChildMenu(menuItemEl);
805
+ onMouseEnterItem(evt, menuItemEl.id);
806
+ },
807
+ onClick: (evt) => {
808
+ const listItemEl = closestListItem(evt.target);
809
+ const { isGroup, menuItemId } = getMenuItemDetails(listItemEl, rootId);
810
+ if (isGroup) {
811
+ triggerChildMenu(listItemEl);
812
+ } else {
813
+ onActivate(menuItemId);
814
+ }
815
+ }
816
+ }),
817
+ [onActivate, onMouseEnterItem, rootId, triggerChildMenu]
818
+ );
819
+ return {
820
+ closeMenu,
821
+ handleRender,
822
+ listItemProps,
823
+ openMenu: triggerChildMenu,
824
+ openMenus: openMenus.current
825
+ };
826
+ };
827
+
828
+ // src/menu/ContextMenu.tsx
829
+ import { useId as useId2 } from "@vuu-ui/vuu-layout";
830
+ import { Fragment as Fragment2, jsx as jsx3 } from "react/jsx-runtime";
831
+ import { createElement } from "react";
832
+ var noop = () => void 0;
833
+ var ContextMenu = ({
834
+ activatedByKeyboard,
835
+ children: childrenProp,
836
+ className,
837
+ id: idProp,
838
+ onClose = () => void 0,
839
+ position = { x: 0, y: 0 },
840
+ style,
841
+ ...menuListProps
842
+ }) => {
843
+ const closeHandlerRef = useRef5(onClose);
844
+ closeHandlerRef.current = onClose;
845
+ const id = useId2(idProp);
846
+ const closeMenuRef = useRef5(noop);
847
+ const [menus, actions] = useItemsWithIdsNext(childrenProp, id);
848
+ const navigatingWithKeyboard = useRef5(activatedByKeyboard);
849
+ const handleMouseEnterItem = useCallback5(() => {
850
+ navigatingWithKeyboard.current = false;
851
+ }, []);
852
+ const handleActivate = useCallback5(
853
+ (menuItemId) => {
854
+ const actionId = menuItemId.slice(9);
855
+ const { action, options } = actions[actionId];
856
+ closeMenuRef.current(id);
857
+ onClose({
858
+ type: "menu-action",
859
+ menuId: action,
860
+ options
861
+ });
862
+ },
863
+ [actions, id, onClose]
864
+ );
865
+ const { closeMenu, listItemProps, openMenu, openMenus, handleRender } = useCascade({
866
+ // FIXME
867
+ id: `${id}`,
868
+ onActivate: handleActivate,
869
+ onMouseEnterItem: handleMouseEnterItem,
870
+ position
871
+ });
872
+ closeMenuRef.current = closeMenu;
873
+ const handleCloseMenu = () => {
874
+ navigatingWithKeyboard.current = true;
875
+ closeMenu();
876
+ };
877
+ const handleHighlightMenuItem = () => {
878
+ };
879
+ const lastMenu = openMenus.length - 1;
880
+ const getChildMenuId = (i) => {
881
+ if (i >= lastMenu) {
882
+ return void 0;
883
+ } else {
884
+ const { id: id2 } = openMenus[i + 1];
885
+ return id2;
886
+ }
887
+ };
888
+ return /* @__PURE__ */ jsx3(Fragment2, { children: openMenus.map(({ id: menuId, left, top }, i, all) => {
889
+ const childMenuId = getChildMenuId(i);
890
+ return /* @__PURE__ */ jsx3(PortalDeprecated, { x: left, y: top, onRender: handleRender, children: /* @__PURE__ */ createElement(
891
+ MenuList,
892
+ {
893
+ ...menuListProps,
894
+ activatedByKeyboard: navigatingWithKeyboard.current,
895
+ childMenuShowing: childMenuId,
896
+ className,
897
+ id: menuId,
898
+ isRoot: i === 0,
899
+ key: i,
900
+ listItemProps,
901
+ onActivate: handleActivate,
902
+ onHighlightMenuItem: handleHighlightMenuItem,
903
+ onCloseMenu: handleCloseMenu,
904
+ onOpenMenu: openMenu,
905
+ style,
906
+ tabIndex: i === all.length - 1 ? 0 : void 0
907
+ },
908
+ menus[menuId]
909
+ ) }, i);
910
+ }) });
911
+ };
912
+ ContextMenu.displayName = "ContextMenu";
913
+
914
+ // src/menu/context-menu-provider.tsx
915
+ import { createContext, useCallback as useCallback6, useMemo as useMemo6 } from "react";
916
+ import { jsx as jsx4 } from "react/jsx-runtime";
917
+ var ContextMenuContext = createContext(
918
+ null
919
+ );
920
+ var Provider = ({
921
+ children,
922
+ context,
923
+ menuActionHandler,
924
+ menuBuilder
925
+ }) => {
926
+ const menuBuilders = useMemo6(() => {
927
+ if ((context == null ? void 0 : context.menuBuilders) && menuBuilder) {
928
+ return context.menuBuilders.concat(menuBuilder);
929
+ } else if (menuBuilder) {
930
+ return [menuBuilder];
931
+ } else {
932
+ return (context == null ? void 0 : context.menuBuilders) || [];
933
+ }
934
+ }, [context, menuBuilder]);
935
+ const handleMenuAction = useCallback6(
936
+ (reason) => {
937
+ var _a;
938
+ if (menuActionHandler == null ? void 0 : menuActionHandler(reason)) {
939
+ return true;
940
+ }
941
+ if ((_a = context == null ? void 0 : context.menuActionHandler) == null ? void 0 : _a.call(context, reason)) {
942
+ return true;
943
+ }
944
+ },
945
+ [context, menuActionHandler]
946
+ );
947
+ return /* @__PURE__ */ jsx4(
948
+ ContextMenuContext.Provider,
949
+ {
950
+ value: {
951
+ menuActionHandler: handleMenuAction,
952
+ menuBuilders
953
+ },
954
+ children
955
+ }
956
+ );
957
+ };
958
+ var ContextMenuProvider = ({
959
+ children,
960
+ label,
961
+ menuActionHandler,
962
+ menuBuilder
963
+ }) => {
964
+ return /* @__PURE__ */ jsx4(ContextMenuContext.Consumer, { children: (parentContext) => /* @__PURE__ */ jsx4(
965
+ Provider,
966
+ {
967
+ context: parentContext,
968
+ label,
969
+ menuActionHandler,
970
+ menuBuilder,
971
+ children
972
+ }
973
+ ) });
974
+ };
975
+
976
+ // src/menu/useContextMenu.tsx
977
+ import { useThemeAttributes as useThemeAttributes3 } from "@vuu-ui/vuu-shell";
978
+ import { isGroupMenuItemDescriptor } from "@vuu-ui/vuu-utils";
979
+ import cx7 from "classnames";
980
+ import { cloneElement, useCallback as useCallback7, useContext } from "react";
981
+
982
+ // src/popup/popup-service.ts
983
+ import cx5 from "classnames";
984
+ import React3, {
985
+ createElement as createElement2,
986
+ useEffect,
987
+ useRef as useRef6
988
+ } from "react";
989
+ import ReactDOM3 from "react-dom";
990
+ var _dialogOpen = false;
991
+ var _popups = [];
992
+ var reasonIsMenuAction = (reason) => (reason == null ? void 0 : reason.type) === "menu-action";
993
+ var reasonIsClickAway = (reason) => (reason == null ? void 0 : reason.type) === "click-away";
994
+ function specialKeyHandler(e) {
995
+ if (e.key === "Esc") {
996
+ if (_popups.length) {
997
+ closeAllPopups();
998
+ } else if (_dialogOpen) {
999
+ const dialogRoot = document.body.querySelector(".vuuDialog");
1000
+ if (dialogRoot) {
1001
+ ReactDOM3.unmountComponentAtNode(dialogRoot);
1002
+ }
1003
+ }
1004
+ }
1005
+ }
1006
+ function outsideClickHandler(e) {
1007
+ if (_popups.length) {
1008
+ const popupContainers = document.body.querySelectorAll(".vuuPopup");
1009
+ for (let i = 0; i < popupContainers.length; i++) {
1010
+ if (popupContainers[i].contains(e.target)) {
1011
+ return;
1012
+ }
1013
+ }
1014
+ closeAllPopups({ mouseEvt: e, type: "click-away" });
1015
+ }
1016
+ }
1017
+ function closeAllPopups(reason) {
1018
+ if (_popups.length === 1) {
1019
+ PopupService.hidePopup(reason, "anon", "all");
1020
+ } else if (_popups.length) {
1021
+ const popupContainers = document.body.querySelectorAll(".vuuPopup");
1022
+ for (let i = 0; i < popupContainers.length; i++) {
1023
+ ReactDOM3.unmountComponentAtNode(popupContainers[i]);
1024
+ }
1025
+ popupClosed("*");
1026
+ }
1027
+ }
1028
+ function dialogOpened() {
1029
+ if (_dialogOpen === false) {
1030
+ _dialogOpen = true;
1031
+ window.addEventListener("keydown", specialKeyHandler, true);
1032
+ }
1033
+ }
1034
+ function dialogClosed() {
1035
+ if (_dialogOpen) {
1036
+ _dialogOpen = false;
1037
+ window.removeEventListener("keydown", specialKeyHandler, true);
1038
+ }
1039
+ }
1040
+ function popupOpened(name) {
1041
+ if (_popups.indexOf(name) === -1) {
1042
+ _popups.push(name);
1043
+ if (_dialogOpen === false) {
1044
+ window.addEventListener("keydown", specialKeyHandler, true);
1045
+ window.addEventListener("click", outsideClickHandler, true);
1046
+ }
1047
+ }
1048
+ }
1049
+ function popupClosed(name) {
1050
+ if (_popups.length) {
1051
+ if (name === "*") {
1052
+ _popups.length = 0;
1053
+ } else {
1054
+ const pos = _popups.indexOf(name);
1055
+ if (pos !== -1) {
1056
+ _popups.splice(pos, 1);
1057
+ }
1058
+ }
1059
+ if (_popups.length === 0 && _dialogOpen === false) {
1060
+ window.removeEventListener("keydown", specialKeyHandler, true);
1061
+ window.removeEventListener("click", outsideClickHandler, true);
1062
+ }
1063
+ }
1064
+ }
1065
+ var PopupComponent = ({
1066
+ children,
1067
+ position,
1068
+ style
1069
+ }) => {
1070
+ const className = cx5("hwPopup", "hwPopupContainer", position);
1071
+ return createElement2("div", { className, style }, children);
1072
+ };
1073
+ var incrementingKey = 1;
1074
+ var PopupService = class {
1075
+ static showPopup({
1076
+ group = "all",
1077
+ name = "anon",
1078
+ left = 0,
1079
+ position = "",
1080
+ right = "auto",
1081
+ top = 0,
1082
+ width = "auto",
1083
+ component
1084
+ }) {
1085
+ if (!component) {
1086
+ throw Error(`PopupService showPopup, no component supplied`);
1087
+ }
1088
+ if (typeof component.props.onClose === "function") {
1089
+ PopupService.onClose = component.props.onClose;
1090
+ } else {
1091
+ PopupService.onClose = void 0;
1092
+ }
1093
+ popupOpened(name);
1094
+ document.addEventListener("keydown", PopupService.escapeKeyListener, true);
1095
+ let el = document.body.querySelector(".vuuPopup." + group);
1096
+ if (el === null) {
1097
+ el = document.createElement("div");
1098
+ el.className = "vuuPopup " + group;
1099
+ document.body.appendChild(el);
1100
+ }
1101
+ const style = { width };
1102
+ renderPortal(
1103
+ createElement2(
1104
+ PopupComponent,
1105
+ { key: incrementingKey++, position, style },
1106
+ component
1107
+ ),
1108
+ el,
1109
+ left,
1110
+ top,
1111
+ () => {
1112
+ PopupService.keepWithinThePage(el, right);
1113
+ }
1114
+ );
1115
+ }
1116
+ static escapeKeyListener(evt) {
1117
+ if (evt.key === "Escape") {
1118
+ PopupService.hidePopup({ type: "escape", event: evt });
1119
+ }
1120
+ }
1121
+ static hidePopup(reason, name = "anon", group = "all") {
1122
+ var _a;
1123
+ if (_popups.indexOf(name) !== -1) {
1124
+ popupClosed(name);
1125
+ const popupRoot = document.body.querySelector(`.vuuPopup.${group}`);
1126
+ if (popupRoot) {
1127
+ ReactDOM3.unmountComponentAtNode(popupRoot);
1128
+ }
1129
+ }
1130
+ document.removeEventListener(
1131
+ "keydown",
1132
+ PopupService.escapeKeyListener,
1133
+ true
1134
+ );
1135
+ (_a = PopupService == null ? void 0 : PopupService.onClose) == null ? void 0 : _a.call(PopupService, reason);
1136
+ }
1137
+ static keepWithinThePage(el, right = "auto") {
1138
+ const target = el.querySelector(".vuuPopupContainer > *");
1139
+ if (target) {
1140
+ const {
1141
+ top,
1142
+ left,
1143
+ width,
1144
+ height,
1145
+ right: currentRight
1146
+ } = target.getBoundingClientRect();
1147
+ const w = window.innerWidth;
1148
+ const h = window.innerHeight;
1149
+ const overflowH = h - (top + height);
1150
+ if (overflowH < 0) {
1151
+ target.style.top = Math.round(top) + overflowH + "px";
1152
+ }
1153
+ const overflowW = w - (left + width);
1154
+ if (overflowW < 0) {
1155
+ target.style.left = Math.round(left) + overflowW + "px";
1156
+ }
1157
+ if (typeof right === "number" && right !== currentRight) {
1158
+ const adjustment = right - currentRight;
1159
+ target.style.left = left + adjustment + "px";
1160
+ }
1161
+ }
1162
+ }
1163
+ };
1164
+ var DialogService = class {
1165
+ static showDialog(dialog) {
1166
+ const containerEl = ".vuuDialog";
1167
+ const onClose = dialog.props.onClose;
1168
+ dialogOpened();
1169
+ ReactDOM3.render(
1170
+ React3.cloneElement(dialog, {
1171
+ container: containerEl,
1172
+ onClose: () => {
1173
+ DialogService.closeDialog();
1174
+ if (onClose) {
1175
+ onClose();
1176
+ }
1177
+ }
1178
+ }),
1179
+ document.body.querySelector(containerEl)
1180
+ );
1181
+ }
1182
+ static closeDialog() {
1183
+ dialogClosed();
1184
+ const dialogRoot = document.body.querySelector(".vuuDialog");
1185
+ if (dialogRoot) {
1186
+ ReactDOM3.unmountComponentAtNode(dialogRoot);
1187
+ }
1188
+ }
1189
+ };
1190
+ var Popup = (props) => {
1191
+ const pendingTask = useRef6();
1192
+ const ref = useRef6(null);
1193
+ const show = (props2, boundingClientRect) => {
1194
+ const { name, group, depth, width } = props2;
1195
+ let left;
1196
+ let top;
1197
+ if (pendingTask.current) {
1198
+ window.clearTimeout(pendingTask.current);
1199
+ pendingTask.current = void 0;
1200
+ }
1201
+ if (props2.close === true) {
1202
+ PopupService.hidePopup(void 0, name, group);
1203
+ } else {
1204
+ const { position, children: component } = props2;
1205
+ const {
1206
+ left: targetLeft,
1207
+ top: targetTop,
1208
+ width: clientWidth,
1209
+ bottom: targetBottom
1210
+ } = boundingClientRect;
1211
+ if (position === "below") {
1212
+ left = targetLeft;
1213
+ top = targetBottom;
1214
+ } else if (position === "above") {
1215
+ left = targetLeft;
1216
+ top = targetTop;
1217
+ }
1218
+ pendingTask.current = window.setTimeout(() => {
1219
+ PopupService.showPopup({
1220
+ name,
1221
+ group,
1222
+ depth,
1223
+ position,
1224
+ left,
1225
+ top,
1226
+ width: width || clientWidth,
1227
+ component
1228
+ });
1229
+ }, 10);
1230
+ }
1231
+ };
1232
+ useEffect(() => {
1233
+ if (ref.current) {
1234
+ const el = ref.current.parentElement;
1235
+ const boundingClientRect = el == null ? void 0 : el.getBoundingClientRect();
1236
+ if (boundingClientRect) {
1237
+ show(props, boundingClientRect);
1238
+ }
1239
+ }
1240
+ return () => {
1241
+ PopupService.hidePopup(void 0, props.name, props.group);
1242
+ };
1243
+ }, [props]);
1244
+ return React3.createElement("div", { className: "popup-proxy", ref });
1245
+ };
1246
+
1247
+ // src/popup/Popup.tsx
1248
+ import cx6 from "classnames";
1249
+ import { useThemeAttributes as useThemeAttributes2 } from "@vuu-ui/vuu-shell";
1250
+
1251
+ // src/popup/useAnchoredPosition.ts
1252
+ import { useLayoutEffect as useLayoutEffect3, useState as useState4 } from "react";
1253
+ var getPositionRelativeToAnchor = (anchorElement, placement, offsetLeft, offsetTop) => {
1254
+ const { bottom, left, right, top, width } = anchorElement.getBoundingClientRect();
1255
+ switch (placement) {
1256
+ case "below":
1257
+ return { left: left + offsetLeft, top: bottom + offsetTop };
1258
+ case "right":
1259
+ return { left: right + offsetLeft, top: top + offsetTop };
1260
+ case "below-center":
1261
+ return { left: left + width / 2 + offsetLeft, top: bottom + offsetTop };
1262
+ case "below-full-width":
1263
+ return { left: left + offsetLeft, top: bottom + offsetTop, width };
1264
+ default:
1265
+ throw Error(
1266
+ "Popup getPositionRelativeToAnchor only supported placement values are below and right"
1267
+ );
1268
+ }
1269
+ };
1270
+ var useAnchoredPosition = ({
1271
+ anchorElement,
1272
+ offsetLeft = 0,
1273
+ offsetTop = 0,
1274
+ placement
1275
+ }) => {
1276
+ const [position, setPosition] = useState4();
1277
+ useLayoutEffect3(() => {
1278
+ if (anchorElement.current) {
1279
+ const position2 = getPositionRelativeToAnchor(
1280
+ anchorElement.current,
1281
+ placement,
1282
+ offsetLeft,
1283
+ offsetTop
1284
+ );
1285
+ setPosition(position2);
1286
+ }
1287
+ }, [anchorElement, offsetLeft, offsetTop, placement]);
1288
+ return position;
1289
+ };
1290
+
1291
+ // src/popup/Popup.tsx
1292
+ import { jsx as jsx5 } from "react/jsx-runtime";
1293
+ var PopupComponent2 = ({
1294
+ children,
1295
+ className,
1296
+ anchorElement,
1297
+ placement
1298
+ }) => {
1299
+ const [themeClass, densityClass, dataMode] = useThemeAttributes2();
1300
+ const position = useAnchoredPosition({ anchorElement, placement });
1301
+ return position === void 0 ? null : /* @__PURE__ */ jsx5(
1302
+ "div",
1303
+ {
1304
+ className: cx6(`vuuPortal`, className, themeClass, densityClass),
1305
+ "data-mode": dataMode,
1306
+ style: position,
1307
+ children
1308
+ }
1309
+ );
1310
+ };
1311
+
1312
+ // src/menu/useContextMenu.tsx
1313
+ import { jsx as jsx6 } from "react/jsx-runtime";
1314
+ var useContextMenu = (menuBuilder, menuActionHandler) => {
1315
+ const ctx = useContext(ContextMenuContext);
1316
+ const [themeClass, densityClass, dataMode] = useThemeAttributes3();
1317
+ const buildMenuOptions = useCallback7(
1318
+ (menuBuilders, location, options) => {
1319
+ let results = [];
1320
+ for (const menuBuilder2 of menuBuilders) {
1321
+ results = results.concat(menuBuilder2(location, options));
1322
+ }
1323
+ return results;
1324
+ },
1325
+ []
1326
+ );
1327
+ const handleShowContextMenu = useCallback7(
1328
+ (e, location, { ContextMenuProps: ContextMenuProps2, contextMenu, ...options }) => {
1329
+ var _a, _b;
1330
+ (_a = e.stopPropagation) == null ? void 0 : _a.call(e);
1331
+ (_b = e.preventDefault) == null ? void 0 : _b.call(e);
1332
+ if (contextMenu) {
1333
+ return showContextMenuComponent(
1334
+ {
1335
+ x: e.clientX,
1336
+ y: e.clientY
1337
+ },
1338
+ contextMenu
1339
+ );
1340
+ }
1341
+ const menuBuilders = [];
1342
+ if (menuBuilder) {
1343
+ menuBuilders.push(menuBuilder);
1344
+ }
1345
+ if (ctx && Array.isArray(ctx == null ? void 0 : ctx.menuBuilders) && ctx.menuBuilders.length > 0) {
1346
+ menuBuilders.push(...ctx.menuBuilders);
1347
+ }
1348
+ if (menuBuilders.length > 0) {
1349
+ const menuItemDescriptors = buildMenuOptions(
1350
+ menuBuilders,
1351
+ location,
1352
+ options
1353
+ );
1354
+ const menuHandler = (action) => {
1355
+ if ((menuActionHandler == null ? void 0 : menuActionHandler(action)) === true) {
1356
+ return true;
1357
+ } else {
1358
+ return ctx == null ? void 0 : ctx.menuActionHandler(action);
1359
+ }
1360
+ };
1361
+ if (menuItemDescriptors.length && menuHandler) {
1362
+ showContextMenu(e, menuItemDescriptors, menuHandler, {
1363
+ ...ContextMenuProps2,
1364
+ className: cx7(
1365
+ ContextMenuProps2 == null ? void 0 : ContextMenuProps2.className,
1366
+ themeClass,
1367
+ densityClass
1368
+ ),
1369
+ "data-mode": dataMode
1370
+ });
1371
+ }
1372
+ } else {
1373
+ console.warn(
1374
+ "useContextMenu, no menuBuilders configured. These should be supplied via the ContextMenuProvider(s)"
1375
+ );
1376
+ }
1377
+ },
1378
+ [
1379
+ buildMenuOptions,
1380
+ ctx,
1381
+ dataMode,
1382
+ densityClass,
1383
+ menuActionHandler,
1384
+ menuBuilder,
1385
+ themeClass
1386
+ ]
1387
+ );
1388
+ const hideContextMenu = useCallback7(() => {
1389
+ console.log("hide comnytext menu");
1390
+ }, []);
1391
+ return [handleShowContextMenu, hideContextMenu];
1392
+ };
1393
+ var NO_OPTIONS = {};
1394
+ var showContextMenuComponent = (position, contextMenu) => {
1395
+ PopupService.showPopup({
1396
+ focus: true,
1397
+ left: 0,
1398
+ top: 0,
1399
+ component: cloneElement(contextMenu, { position })
1400
+ });
1401
+ };
1402
+ var showContextMenu = (e, menuDescriptors, handleContextMenuAction, {
1403
+ position: positionProp,
1404
+ ...contextMenuProps
1405
+ } = NO_OPTIONS) => {
1406
+ const menuItems = (menuDescriptors2) => {
1407
+ const fromDescriptor = (menuItem, i) => isGroupMenuItemDescriptor(menuItem) ? /* @__PURE__ */ jsx6(MenuItemGroup, { label: menuItem.label, children: menuItem.children.map(fromDescriptor) }, i) : /* @__PURE__ */ jsx6(
1408
+ MenuItem,
1409
+ {
1410
+ action: menuItem.action,
1411
+ className: menuItem.className,
1412
+ "data-icon": menuItem.icon,
1413
+ options: menuItem.options,
1414
+ children: menuItem.label
1415
+ },
1416
+ i
1417
+ );
1418
+ return menuDescriptors2.map(fromDescriptor);
1419
+ };
1420
+ const handleClose = (reason) => {
1421
+ var _a;
1422
+ if (reasonIsMenuAction(reason)) {
1423
+ handleContextMenuAction(reason);
1424
+ PopupService.hidePopup();
1425
+ }
1426
+ (_a = contextMenuProps == null ? void 0 : contextMenuProps.onClose) == null ? void 0 : _a.call(contextMenuProps, reason);
1427
+ };
1428
+ const position = positionProp != null ? positionProp : {
1429
+ x: e.clientX,
1430
+ y: e.clientY
1431
+ };
1432
+ const component = /* @__PURE__ */ jsx6(
1433
+ ContextMenu,
1434
+ {
1435
+ ...contextMenuProps,
1436
+ className: "vuuContextMenu",
1437
+ onClose: handleClose,
1438
+ position,
1439
+ children: menuItems(menuDescriptors)
1440
+ }
1441
+ );
1442
+ PopupService.showPopup({ left: 0, top: 0, component, focus: true });
1443
+ };
1444
+
1445
+ // src/popup-menu/PopupMenu.tsx
1446
+ import {
1447
+ useCallback as useCallback8,
1448
+ useRef as useRef7,
1449
+ useState as useState5
1450
+ } from "react";
1451
+ import cx8 from "classnames";
1452
+ import { Button as Button2 } from "@salt-ds/core";
1453
+ import { useId as useId3 } from "@vuu-ui/vuu-layout";
1454
+ import { jsx as jsx7 } from "react/jsx-runtime";
1455
+ var classBase3 = "vuuPopupMenu";
1456
+ var getPosition2 = (element) => {
1457
+ if (element) {
1458
+ const { bottom, left } = element.getBoundingClientRect();
1459
+ return { x: left, y: bottom + 6 };
1460
+ }
1461
+ };
1462
+ var PopupMenu = ({
1463
+ className,
1464
+ label,
1465
+ icon = label ? "chevron-down" : "more-vert",
1466
+ id: idProp,
1467
+ menuActionHandler,
1468
+ menuBuilder,
1469
+ menuLocation = "header",
1470
+ menuOptions,
1471
+ onMenuClose,
1472
+ tabIndex = 0,
1473
+ ...htmlAttributes
1474
+ }) => {
1475
+ const rootRef = useRef7(null);
1476
+ const suppressShowMenuRef = useRef7(false);
1477
+ const [menuOpen, setMenuOpen] = useState5(false);
1478
+ const id = useId3(idProp);
1479
+ const [showContextMenu2] = useContextMenu(menuBuilder, menuActionHandler);
1480
+ const handleMenuClose = useCallback8(
1481
+ (reason) => {
1482
+ setMenuOpen(false);
1483
+ if (reasonIsClickAway(reason)) {
1484
+ const target = reason.mouseEvt.target;
1485
+ if (target === rootRef.current) {
1486
+ suppressShowMenuRef.current = true;
1487
+ }
1488
+ } else {
1489
+ requestAnimationFrame(() => {
1490
+ var _a;
1491
+ onMenuClose == null ? void 0 : onMenuClose(reason);
1492
+ if (tabIndex !== -1) {
1493
+ (_a = rootRef.current) == null ? void 0 : _a.focus();
1494
+ }
1495
+ });
1496
+ }
1497
+ },
1498
+ [onMenuClose, tabIndex]
1499
+ );
1500
+ const showMenu = useCallback8(
1501
+ (e) => {
1502
+ if (suppressShowMenuRef.current) {
1503
+ suppressShowMenuRef.current = false;
1504
+ } else {
1505
+ setMenuOpen(true);
1506
+ showContextMenu2(e, menuLocation, {
1507
+ ContextMenuProps: {
1508
+ className: "vuuPopupMenuList",
1509
+ id: `${id}-menu`,
1510
+ onClose: handleMenuClose,
1511
+ position: getPosition2(rootRef.current)
1512
+ },
1513
+ ...menuOptions
1514
+ });
1515
+ }
1516
+ },
1517
+ [handleMenuClose, id, menuLocation, menuOptions, showContextMenu2]
1518
+ );
1519
+ return /* @__PURE__ */ jsx7(
1520
+ Button2,
1521
+ {
1522
+ ...htmlAttributes,
1523
+ "aria-controls": `${id}-menu-root`,
1524
+ "aria-expanded": menuOpen,
1525
+ "aria-haspopup": "menu",
1526
+ className: cx8(classBase3, className, {
1527
+ [`${classBase3}-withCaption`]: label !== void 0,
1528
+ [`${classBase3}-open`]: menuOpen
1529
+ }),
1530
+ "data-icon": icon,
1531
+ id,
1532
+ onClick: showMenu,
1533
+ ref: rootRef,
1534
+ tabIndex,
1535
+ variant: "secondary",
1536
+ children: label
1537
+ }
1538
+ );
1539
+ };
1540
+
1541
+ // src/portal/Portal.tsx
1542
+ import { useThemeAttributes as useThemeAttributes4 } from "@vuu-ui/vuu-shell";
1543
+ import { useLayoutEffect as useLayoutEffect4, useRef as useRef8, useState as useState6 } from "react";
1544
+ import { createPortal } from "react-dom";
1545
+ function getContainer(container) {
1546
+ return typeof container === "function" ? container() : container;
1547
+ }
1548
+ var DEFAULT_ID = "vuu-portal-root";
1549
+ var Portal2 = ({
1550
+ children,
1551
+ container: containerProp = document.body,
1552
+ id = DEFAULT_ID,
1553
+ open = true
1554
+ }) => {
1555
+ var _a;
1556
+ const [mounted, setMounted] = useState6(false);
1557
+ const portalRef = useRef8(null);
1558
+ const container = (_a = getContainer(containerProp)) != null ? _a : document.body;
1559
+ const [themeClass, densityClass, dataMode] = useThemeAttributes4();
1560
+ useLayoutEffect4(() => {
1561
+ const root = document.getElementById(id);
1562
+ if (root) {
1563
+ portalRef.current = root;
1564
+ } else {
1565
+ portalRef.current = document.createElement("div");
1566
+ portalRef.current.id = id;
1567
+ }
1568
+ const el = portalRef.current;
1569
+ if (!container.contains(el)) {
1570
+ container.appendChild(el);
1571
+ }
1572
+ el.classList.add(themeClass, densityClass);
1573
+ el.dataset.mode = dataMode;
1574
+ setMounted(true);
1575
+ }, [id, container, themeClass, densityClass, dataMode]);
1576
+ if (open && mounted && portalRef.current && children) {
1577
+ return createPortal(children, portalRef.current);
1578
+ }
1579
+ return null;
1580
+ };
1581
+
1582
+ // src/prompt/Prompt.tsx
1583
+ import { useThemeAttributes as useThemeAttributes5 } from "@vuu-ui/vuu-shell";
1584
+ import { Button as Button3 } from "@salt-ds/core";
1585
+ import cx9 from "classnames";
1586
+ import { useLayoutEffect as useLayoutEffect5, useRef as useRef9 } from "react";
1587
+ import { jsx as jsx8, jsxs as jsxs2 } from "react/jsx-runtime";
1588
+ var classBase4 = "vuuPrompt";
1589
+ var AnchorBody = { current: document.body };
1590
+ var EMPTY_PROPS = {};
1591
+ var Prompt = ({
1592
+ PopupProps = EMPTY_PROPS,
1593
+ cancelButtonLabel = "Cancel",
1594
+ confirmButtonLabel = "Confirm",
1595
+ icon,
1596
+ onCancel,
1597
+ onConfirm,
1598
+ style,
1599
+ text,
1600
+ title,
1601
+ variant = "info",
1602
+ ...htmlAttributes
1603
+ }) => {
1604
+ const {
1605
+ anchorElement = AnchorBody,
1606
+ offsetLeft = 0,
1607
+ offsetTop = 0,
1608
+ placement = "below"
1609
+ } = PopupProps;
1610
+ const [themeClass, densityClass, dataMode] = useThemeAttributes5();
1611
+ const position = useAnchoredPosition({
1612
+ anchorElement,
1613
+ offsetLeft,
1614
+ offsetTop,
1615
+ placement
1616
+ });
1617
+ const rootRef = useRef9(null);
1618
+ const confirmRef = useRef9(null);
1619
+ useLayoutEffect5(() => {
1620
+ if (rootRef.current) {
1621
+ rootRef.current.showModal();
1622
+ if (confirmRef.current) {
1623
+ confirmRef.current.focus();
1624
+ }
1625
+ if (placement.endsWith("center")) {
1626
+ const { width } = rootRef.current.getBoundingClientRect();
1627
+ rootRef.current.style.marginLeft = `-${width / 2}px`;
1628
+ }
1629
+ }
1630
+ }, [placement]);
1631
+ return /* @__PURE__ */ jsx8(
1632
+ "dialog",
1633
+ {
1634
+ ...htmlAttributes,
1635
+ className: cx9(classBase4, `${classBase4}-${variant}`, themeClass),
1636
+ "data-mode": dataMode,
1637
+ ref: rootRef,
1638
+ style: { ...style, ...position },
1639
+ children: /* @__PURE__ */ jsxs2("form", { className: `${classBase4}-form`, children: [
1640
+ /* @__PURE__ */ jsx8("div", { className: `${classBase4}-header`, "data-icon": icon, children: title }),
1641
+ /* @__PURE__ */ jsx8("div", { className: `${classBase4}-text`, children: text }),
1642
+ /* @__PURE__ */ jsxs2("div", { className: `${classBase4}-buttonBar`, children: [
1643
+ /* @__PURE__ */ jsx8(Button3, { onClick: onCancel, variant: "secondary", children: cancelButtonLabel }),
1644
+ /* @__PURE__ */ jsx8(Button3, { onClick: onConfirm, ref: confirmRef, value: "default", children: confirmButtonLabel })
1645
+ ] })
1646
+ ] })
1647
+ }
1648
+ );
1649
+ };
1650
+
1651
+ // src/tooltip/useAnchoredPosition.ts
1652
+ import { useLayoutEffect as useLayoutEffect6, useState as useState7 } from "react";
1653
+ var getPositionRelativeToAnchor2 = (anchorElement, placement, offsetLeft, offsetTop) => {
1654
+ const { bottom, height, left, right, top, width } = anchorElement.getBoundingClientRect();
1655
+ const midX = left + width / 2;
1656
+ const midY = top + height / 2;
1657
+ switch (placement) {
1658
+ case "above":
1659
+ return { left: midX + offsetLeft, top: top + offsetTop };
1660
+ case "below":
1661
+ return { left: midX + offsetLeft, top: bottom + offsetTop };
1662
+ case "right":
1663
+ return { left: right + offsetLeft, top: midY + offsetLeft };
1664
+ case "left":
1665
+ return { left: left + offsetLeft, top: midY + offsetLeft };
1666
+ default:
1667
+ throw Error(
1668
+ "Tooltip getPositionRelativeToAnchor only supported placement values are left, right, below and right"
1669
+ );
1670
+ }
1671
+ };
1672
+ var useAnchoredPosition2 = ({
1673
+ anchorElement,
1674
+ offsetLeft = 0,
1675
+ offsetTop = 0,
1676
+ placement
1677
+ }) => {
1678
+ const [position, setPosition] = useState7();
1679
+ useLayoutEffect6(() => {
1680
+ if (anchorElement.current) {
1681
+ const position2 = getPositionRelativeToAnchor2(
1682
+ anchorElement.current,
1683
+ placement,
1684
+ offsetLeft,
1685
+ offsetTop
1686
+ );
1687
+ setPosition(position2);
1688
+ }
1689
+ }, [anchorElement, offsetLeft, offsetTop, placement]);
1690
+ return position;
1691
+ };
1692
+
1693
+ // src/tooltip/Tooltip.tsx
1694
+ import { jsx as jsx9 } from "react/jsx-runtime";
1695
+ var classBase5 = "vuuTooltip";
1696
+ var Tooltip = ({
1697
+ anchorElement,
1698
+ children,
1699
+ id,
1700
+ onMouseEnter,
1701
+ onMouseLeave,
1702
+ placement
1703
+ }) => {
1704
+ const position = useAnchoredPosition2({ anchorElement, placement });
1705
+ if (position === void 0) {
1706
+ return null;
1707
+ }
1708
+ return /* @__PURE__ */ jsx9(Portal2, { children: /* @__PURE__ */ jsx9(
1709
+ "div",
1710
+ {
1711
+ className: classBase5,
1712
+ "data-align": placement,
1713
+ id,
1714
+ style: position,
1715
+ children: /* @__PURE__ */ jsx9(
1716
+ "span",
1717
+ {
1718
+ className: `${classBase5}-content`,
1719
+ onMouseEnter,
1720
+ onMouseLeave,
1721
+ children
1722
+ }
1723
+ )
1724
+ }
1725
+ ) });
1726
+ };
1727
+
1728
+ // src/tooltip/useTooltip.ts
1729
+ import { useCallback as useCallback9, useRef as useRef10, useState as useState8 } from "react";
1730
+ import { useId as useId4 } from "@vuu-ui/vuu-layout";
1731
+ var useTooltip = ({
1732
+ id: idProp,
1733
+ placement = "right",
1734
+ tooltipContent
1735
+ }) => {
1736
+ const hideTooltipRef = useRef10();
1737
+ const anchorElementRef = useRef10(null);
1738
+ const mouseEnterTimerRef = useRef10();
1739
+ const mouseLeaveTimerRef = useRef10();
1740
+ const [tooltipProps, setTooltipProps] = useState8();
1741
+ const id = useId4(idProp);
1742
+ const escapeListener = useCallback9((evt) => {
1743
+ var _a;
1744
+ if (evt.key === "Escape") {
1745
+ (_a = hideTooltipRef.current) == null ? void 0 : _a.call(hideTooltipRef);
1746
+ }
1747
+ }, []);
1748
+ hideTooltipRef.current = useCallback9(() => {
1749
+ setTooltipProps(void 0);
1750
+ document.removeEventListener("keydown", escapeListener);
1751
+ }, [escapeListener]);
1752
+ const handleMouseEnterTooltip = useCallback9(() => {
1753
+ window.clearTimeout(mouseLeaveTimerRef.current);
1754
+ }, []);
1755
+ const handleMouseLeaveTooltip = useCallback9(() => {
1756
+ var _a;
1757
+ (_a = hideTooltipRef.current) == null ? void 0 : _a.call(hideTooltipRef);
1758
+ }, []);
1759
+ const showTooltip = useCallback9(() => {
1760
+ const { current: anchorEl } = anchorElementRef;
1761
+ if (anchorEl) {
1762
+ setTooltipProps({
1763
+ anchorElement: anchorElementRef,
1764
+ children: tooltipContent,
1765
+ id: `${id}-tooltip`,
1766
+ onMouseEnter: handleMouseEnterTooltip,
1767
+ onMouseLeave: handleMouseLeaveTooltip,
1768
+ placement
1769
+ });
1770
+ document.addEventListener("keydown", escapeListener);
1771
+ }
1772
+ mouseEnterTimerRef.current = void 0;
1773
+ }, [
1774
+ escapeListener,
1775
+ handleMouseEnterTooltip,
1776
+ handleMouseLeaveTooltip,
1777
+ id,
1778
+ placement,
1779
+ tooltipContent
1780
+ ]);
1781
+ const handleMouseEnter = useCallback9(
1782
+ (evt) => {
1783
+ const el = evt.target;
1784
+ if (el) {
1785
+ anchorElementRef.current = el;
1786
+ mouseEnterTimerRef.current = window.setTimeout(showTooltip, 800);
1787
+ }
1788
+ },
1789
+ [showTooltip]
1790
+ );
1791
+ const handleMouseLeave = useCallback9(() => {
1792
+ if (anchorElementRef.current)
1793
+ if (mouseEnterTimerRef.current) {
1794
+ window.clearTimeout(mouseEnterTimerRef.current);
1795
+ mouseEnterTimerRef.current = void 0;
1796
+ } else {
1797
+ if (hideTooltipRef.current) {
1798
+ mouseLeaveTimerRef.current = window.setTimeout(
1799
+ hideTooltipRef.current,
1800
+ 200
1801
+ );
1802
+ }
1803
+ }
1804
+ }, []);
1805
+ const anchorProps = {
1806
+ "aria-describedby": `${id}-tooltip`,
1807
+ onMouseEnter: handleMouseEnter,
1808
+ onMouseLeave: handleMouseLeave
1809
+ };
1810
+ return {
1811
+ anchorProps,
1812
+ tooltipProps
1813
+ };
1814
+ };
1815
+ export {
1816
+ ContextMenu,
1817
+ ContextMenuContext,
1818
+ ContextMenuProvider,
1819
+ Dialog,
1820
+ DialogService,
1821
+ MenuItem,
1822
+ MenuItemGroup,
1823
+ MenuList,
1824
+ Popup,
1825
+ PopupComponent2 as PopupComponent,
1826
+ PopupMenu,
1827
+ PopupService,
1828
+ Portal2 as Portal,
1829
+ PortalDeprecated,
1830
+ Prompt,
1831
+ Separator,
1832
+ Tooltip,
1833
+ createContainer,
1834
+ installTheme,
1835
+ isMenuItemLabel,
1836
+ reasonIsClickAway,
1837
+ reasonIsMenuAction,
1838
+ renderPortal,
1839
+ useAnchoredPosition,
1840
+ useContextMenu,
1841
+ useTooltip
1842
+ };
34
1843
  //# sourceMappingURL=index.js.map