@vuu-ui/vuu-ui-controls 0.8.7 → 0.8.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (47) hide show
  1. package/cjs/index.js +4 -214
  2. package/cjs/index.js.map +4 -4
  3. package/esm/index.js +4 -214
  4. package/esm/index.js.map +4 -4
  5. package/index.css +1 -1
  6. package/index.css.map +3 -3
  7. package/package.json +7 -6
  8. package/types/common-hooks/index.d.ts +1 -0
  9. package/types/{tree → common-hooks}/use-resize-observer.d.ts +1 -0
  10. package/types/drag-drop/drop-target-utils.d.ts +10 -1
  11. package/types/drag-drop/index.d.ts +1 -0
  12. package/types/index.d.ts +1 -0
  13. package/types/list/CheckboxIcon.d.ts +6 -0
  14. package/types/list/Highlighter.d.ts +7 -0
  15. package/types/list/List.d.ts +7 -0
  16. package/types/list/ListItem.d.ts +5 -0
  17. package/types/list/ListItemGroup.d.ts +6 -0
  18. package/types/list/ListItemHeader.d.ts +5 -0
  19. package/types/list/VirtualizedList.d.ts +7 -0
  20. package/types/list/common-hooks/collectionProvider.d.ts +13 -0
  21. package/types/list/common-hooks/collectionTypes.d.ts +56 -0
  22. package/types/list/common-hooks/index.d.ts +15 -0
  23. package/types/list/common-hooks/itemToString.d.ts +2 -0
  24. package/types/list/common-hooks/keyUtils.d.ts +15 -0
  25. package/types/list/common-hooks/list-dom-utils.d.ts +6 -0
  26. package/types/list/common-hooks/navigationTypes.d.ts +37 -0
  27. package/types/list/common-hooks/selectionTypes.d.ts +42 -0
  28. package/types/list/common-hooks/useCollapsibleGroups.d.ts +14 -0
  29. package/types/list/common-hooks/useCollectionItems.d.ts +2 -0
  30. package/types/list/common-hooks/useImperativeScrollingAPI.d.ts +14 -0
  31. package/types/list/common-hooks/useKeyboardNavigation.d.ts +4 -0
  32. package/types/list/common-hooks/useSelection.d.ts +8 -0
  33. package/types/list/common-hooks/useTypeahead.d.ts +15 -0
  34. package/types/list/common-hooks/useViewportTracking.d.ts +14 -0
  35. package/types/list/common-hooks/utils/collection-item-utils.d.ts +21 -0
  36. package/types/list/common-hooks/utils/filter-utils.d.ts +4 -0
  37. package/types/list/common-hooks/utils/index.d.ts +3 -0
  38. package/types/list/common-hooks/utils/isSelected.d.ts +2 -0
  39. package/types/list/index.d.ts +8 -0
  40. package/types/list/keyset.d.ts +9 -0
  41. package/types/list/listTypes.d.ts +206 -0
  42. package/types/list/useList.d.ts +3 -0
  43. package/types/list/useListHeight.d.ts +19 -0
  44. package/types/list/useScrollPosition.d.ts +19 -0
  45. package/types/list/useVirtualization.d.ts +15 -0
  46. package/types/utils/escapeRegExp.d.ts +1 -0
  47. package/types/utils/index.d.ts +1 -0
package/esm/index.js CHANGED
@@ -1,217 +1,7 @@
1
- import{createContext as vi,useCallback as yi,useContext as Si,useMemo as Zo}from"react";import{jsx as wi}from"react/jsx-runtime";var Ti={isDragSource:!1,isDropTarget:!1,register:()=>{}},Ci=()=>console.log("have you forgotten to provide a DragDrop Provider ?"),Jo=vi({registerDragDropParty:Ci}),Od=({children:e,dragSources:t})=>{let[o,r]=Zo(()=>{let i=new Map,l=new Map;for(let[c,{dropTargets:s}]of Object.entries(t)){let m=i.get(c),d=Array.isArray(s)?s:[s];m?m.push(...d):i.set(c,d);for(let u of d){let g=l.get(u);g?g.push(c):l.set(u,[c])}}return[i,l]},[t]);console.log({dragSources:o,dropTargets:r});let n=yi(i=>{console.log(`registerDragDropParty ${i}`)},[]),a=Zo(()=>({dragSources:o,dropTargets:r,registerDragDropParty:n}),[o,r,n]);return wi(Jo.Provider,{value:a,children:e})},jo=e=>{var n,a;let{dragSources:t,dropTargets:o,registerDragDropParty:r}=Si(Jo);if(e){let i=(n=t==null?void 0:t.has(e))!=null?n:!1,l=(a=o==null?void 0:o.has(e))!=null?a:!1;return{isDragSource:i,isDropTarget:l,register:r}}else return Ti};import{useCallback as ut,useMemo as Gc,useRef as Ae,useState as qc}from"react";import{useCallback as ct,useMemo as Wc,useRef as as}from"react";var Mi=["left","right"],Ei=["top","bottom"],ht=":not(.wrapped)",Yo=':not([aria-hidden="true"])',Xo=e=>{let t=e.cloneNode(!0);return t.removeAttribute("id"),t.dataset.index="-1",t},Li=(e,t="width",o=!1)=>{let r=t==="width"?"left":"top",{[t]:n,[r]:a}=e.getBoundingClientRect(),{padEnd:i=!1,padStart:l=!1}=e.dataset,c=getComputedStyle(e),[s,m]=t==="width"?Mi:Ei,d=l&&!o?0:parseInt(c.getPropertyValue(`margin-${s}`),10),u=i&&!o?0:parseInt(c.getPropertyValue(`margin-${m}`),10),g=n;if(parseInt(c.getPropertyValue("flex-shrink"),10)>0){let p=parseInt(c.getPropertyValue("flex-basis"),10);!isNaN(p)&&p>0&&(g=p)}return[a,d+g+u]},Di={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"}},se=e=>Di[e],Qo=(e,t)=>{let o=e.find(r=>r.id===t);if(o)return o},er=(e,t)=>{e.splice(t,1);for(let o=t;o<e.length;o++)e[o].currentIndex-=1},$e=(e,t,o,r,n)=>{var d;let a=[],{DIMENSION:i}=se(t),l=Array.from(o?e.querySelectorAll(o):e.children),c=l.length,s=typeof(r==null?void 0:r.from)=="number"?r.atEnd?Math.max(0,r.from-1):r.from:0,m=typeof(r==null?void 0:r.to)=="number"?Math.min(r.to+2,c-1):c-1;for(let u=s;u<=m;u++){let g=l[u],[f,p]=Li(g,i),x=u===c-1,y=g.id,D=parseInt((d=g.dataset.index)!=null?d:"-1");a.push({currentIndex:u,dataIndex:isNaN(D)?-1:D,id:y,index:u,isDraggedItem:n===y,isLast:x,isOverflowIndicator:g.dataset.index==="overflow",element:g,start:f,end:f+p,size:p,mid:f+p/2})}return a},Qe=e=>e.findIndex(t=>t.isDraggedItem),Xt=(e,t)=>{let o=Qe(e),r=t==="fwd"?o+1:o-1;if(r<0||r>=e.length)throw Error("switchDropTargetPosition index out of range");let n=e.at(o),a=e.at(r),i=a.size-n.size;if(t==="fwd"){let l=a.start+i,c=a.end,s={...n,start:l,mid:Math.floor(l+(c-l)/2),end:c},m=n.start,d=n.end+i,u={...a,start:m,mid:Math.floor(m+(d-m)/2),end:d};e.splice(o,2,u,s)}else{let l=a.start,c=a.end-i,s={...n,start:l,mid:Math.floor(l+(c-l)/2),end:c},m=n.start-i,d=n.end,u={...a,start:m,mid:Math.floor(m+(d-m)/2),end:d};e.splice(r,2,s,u)}},Ve=(e,t,o)=>{let r=e.length,n=Qe(e),a=e[n];if(o==="fwd"){let i=Math.round(t+a.size);for(let l=r-1;l>=0;l--){let c=e[l];if(i>c.mid)return l<n?a:c}}else{let i=Math.round(t);for(let l=0;l<r;l++){let c=e[l];if(i<c.mid)return l>n?a:c}}throw Error("no dropTraget identified")};function tr(e,t){let{height:o,left:r,top:n,width:a}=e,{height:i,width:l}=t;return{height:Math.min(o,i),left:r,top:n,width:Math.min(a,l)}}var Bd=(e,t,o)=>{if(t===o)return e;{let r=e.slice(),[n]=r.splice(t,1);if(o===-1)return r.concat(n);{let a=(o>t,0);return r.splice(o+a,0,n),r}}},$d=e=>e.map((t,o)=>`
2
- ${t.isDraggedItem?"*":" "}[${o}] width : ${Math.floor(t.size)} ${Math.floor(t.start)} - ${Math.floor(t.end)} (mid ${Math.floor(t.mid)})`).join("");import{useForkRef as Vc}from"@salt-ds/core";function or(e){var t,o,r="";if(typeof e=="string"||typeof e=="number")r+=e;else if(typeof e=="object")if(Array.isArray(e))for(t=0;t<e.length;t++)e[t]&&(o=or(e[t]))&&(r&&(r+=" "),r+=o);else for(t in e)e[t]&&(r&&(r+=" "),r+=t);return r}function xt(){for(var e,t,o=0,r="";o<arguments.length;)(e=arguments[o++])&&(t=or(e))&&(r&&(r+=" "),r+=t);return r}import{forwardRef as zc,useCallback as Uc}from"react";function rr(e){var t,o,r="";if(typeof e=="string"||typeof e=="number")r+=e;else if(typeof e=="object")if(Array.isArray(e))for(t=0;t<e.length;t++)e[t]&&(o=rr(e[t]))&&(r&&(r+=" "),r+=o);else for(t in e)e[t]&&(r&&(r+=" "),r+=t);return r}function He(){for(var e,t,o=0,r="";o<arguments.length;)(e=arguments[o++])&&(t=rr(e))&&(r&&(r+=" "),r+=t);return r}var Ni=/[.*+?^${}()|[\]\\]/g;function bt(e){return e.replace(Ni,"\\$&")}import{jsx as Gd}from"react/jsx-runtime";import{createContext as Pi,useContext as Hi}from"react";var ki=Pi(typeof window<"u"?window:null);function Ie(){return Hi(ki)}import*as It from"react";import{jsx as Qd}from"react/jsx-runtime";import{createContext as Ri,useMemo as tm,useContext as Ai}from"react";var Oi=Ri(null);function nr(){return Ai(Oi)}var sr,Fi=(sr=It.useInsertionEffect)!=null?sr:It.useLayoutEffect,Qt=new WeakMap;function ve({testId:e,css:t,window:o}){let r=nr();Fi(()=>{var n,a;if(!o)return;let i=(n=Qt.get(o))!=null?n:new Map,l=(a=i.get(t))!=null?a:{styleElement:null,count:0};return l.styleElement==null?(l.styleElement=o.document.createElement("style"),l.styleElement.setAttribute("type","text/css"),l.styleElement.setAttribute("data-salt-style",e||""),l.styleElement.textContent=t,l.count=1,o.document.head.insertBefore(l.styleElement,r||o.document.head.firstChild)):(l.styleElement.textContent=t,l.count++),i.set(t,l),Qt.set(o,i),()=>{let c=Qt.get(o),s=c==null?void 0:c.get(t);s!=null&&s.styleElement&&(s.count--,s.count<1&&(o.document.head.removeChild(s.styleElement),s.styleElement=null,c==null||c.delete(t)))}},[e,t,o])}import"@salt-ds/core";import"react";import{jsx as cr}from"react/jsx-runtime";import{forwardRef as Ki}from"react";function ir(e){var t,o,r="";if(typeof e=="string"||typeof e=="number")r+=e;else if(typeof e=="object")if(Array.isArray(e))for(t=0;t<e.length;t++)e[t]&&(o=ir(e[t]))&&(r&&(r+=" "),r+=o);else for(t in e)e[t]&&(r&&(r+=" "),r+=t);return r}function ar(){for(var e,t,o=0,r="";o<arguments.length;)(e=arguments[o++])&&(t=ir(e))&&(r&&(r+=" "),r+=t);return r}var lr=`/* Style applied to the root element */
3
- .saltIcon {
4
- --icon-color: var(--saltIcon-color, var(--salt-text-secondary-foreground));
5
- --icon-size-multiplier: var(--saltIcon-size-multiplier, 1);
6
- --icon-base-size: var(--salt-icon-size-base, 12px);
7
- /**
8
- * Icon size will be the multiplier (an integer from the size prop) * the base size (set by the theme per density)
9
- * Icons should never be smaller than 12px for readability so we've added a max() to enforce this
10
- * Consumers can use --saltIcon-size variable to override this rule as an escape hatch
11
- */
12
- --icon-size: var(--saltIcon-size, max(calc(var(--icon-base-size) * var(--icon-size-multiplier)), 12px));
13
- }
14
-
15
- .saltIcon {
16
- fill: var(--saltIcon-color, var(--icon-color));
17
- display: inline-block;
18
- margin: var(--saltIcon-margin, 0);
19
- position: relative;
20
- width: var(--icon-size);
21
- height: var(--icon-size);
22
- min-width: var(--icon-size);
23
- min-height: var(--icon-size);
24
- }
25
-
26
- .saltIcon:hover {
27
- --icon-color: var(--saltIcon-color-hover, var(--salt-text-secondary-foreground));
28
- }
29
-
30
- .saltIcon:active {
31
- --icon-color: var(--saltIcon-color-active, var(--salt-text-secondary-foreground));
32
- }
33
- `;var Bi=e=>(...t)=>[e,...t].join("-"),$i=Bi("saltIcon"),Vi=1,ur=Ki(function({children:t,className:o,size:r=Vi,style:n,...a},i){let l=Ie();ve({testId:"salt-icon",css:lr,window:l});let c={...n,"--saltIcon-size-multiplier":`${r}`};return cr("svg",{className:ar($i(),o),style:c,role:"img",...a,ref:i,children:cr("g",{"aria-hidden":!0,children:t})})});import{jsxs as zi,jsx as dr}from"react/jsx-runtime";import{forwardRef as Ui}from"react";var eo=Ui(function(t,o){return zi(ur,{"data-testid":"ExportIcon","aria-label":"export",viewBox:"0 0 12 12",ref:o,...t,children:[dr("path",{d:"M5 1H1v10h4v-1H2V2h3V1Z"}),dr("path",{d:"M3 5h5V3l4 3-4 3V7H3V5Z"})]})});import{jsx as Tm}from"react/jsx-runtime";import{createContext as _i,cloneElement as wm,useContext as Wi}from"react";var Gi=_i(void 0);function mr(){let e=Wi(Gi);if(e)return e}function qi(e,...t){let o=new Set(e);for(let r of t)for(let n of r)o.add(n);return o}var et="ArrowUp",tt="ArrowDown",pr="ArrowLeft",fr="ArrowRight",to="Enter",vt="Home",ot="End",oo="PageUp",yt="PageDown",gr=" ",Zi=new Set(["Enter","Delete"," "]),Ji=new Set(["Tab"]),ji=new Set(["ArrowRight","ArrowLeft"]),hr=new Set([vt,ot,oo,yt,tt,et]),Yi=new Set(["F1","F2","F3","F4","F5","F6","F7","F8","F9","F10","F11","F12"]),Xi=qi(Zi,hr,ji,Yi,Ji),St=e=>Xi.has(e.key)?!1:e.key.length===1&&!e.ctrlKey&&!e.metaKey&&!e.altKey,xr=({key:e})=>hr.has(e);import{useState as ua,useRef as Ct,useMemo as wt,useCallback as ie,isValidElement as Lr}from"react";import{isValidElement as ro,Children as ea}from"react";var br=e=>null;var Ir=e=>null;var Qi=e=>Object.prototype.toString.call(e)==="[object Object]";function ze(e){return typeof e=="string"?e:Qi(e)?Object.prototype.hasOwnProperty.call(e,"label")?String(e.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(`
34
- `)),""):String(e)}var no=(e,t)=>e!==null&&Object.prototype.hasOwnProperty.call(e,t),so=e=>no(e,"header"),vr=e=>no(e,"childNodes"),rt=(e,t)=>e&&Object.prototype.hasOwnProperty.call(e.props,t),yr=e=>{if(ro(e)){if(rt(e,"disabled"))return e.props.disabled===!0}else if(no(e,"disabled"))return e.disabled===!0;return!1},Sr=e=>ro(e)&&rt(e,"focusable")?e.props.focusable:!0,Tr=(e,t,o)=>{if(e.childNodes)return e.childNodes.length;if(e.header){let r=o+1,n=0;for(;r<t.length&&!t[r].header;)n++,r++;return n}else return 0},ta=e=>{if(typeof e.props.children=="string")return e.props.children;if(e.props.title)return e.props.title;if(e.props.label)return e.props.label},Cr=e=>e.type===Ir||rt(e,"data-header"),wr=e=>e.type===br||rt(e,"data-group"),oa=e=>rt(e,"selectable")?e.props.selectable===!0:!wr(e)&&!Cr(e),ra=e=>{if(wr(e)){let{props:{children:t}}=e;if(typeof t!="string")return ao(t)}},na=(e,t)=>{let o=[];return ea.forEach(e,r=>{ro(r)&&o.push(t(r))}),o},io=(e,t)=>{if(Array.isArray(e))return e.length===0&&(t!=null&&t.noChildrenLabel)?[{label:t.noChildrenLabel,value:null}]:e.map((o,r)=>{var n,a;return{childNodes:io(o.childNodes,t),description:o.description,expanded:o.expanded,value:o,label:(a=(n=t==null?void 0:t.itemToString)==null?void 0:n.call(t,o))!=null?a:ze(o)}});if(e)throw Error("list-child-items expects source to be an array")},ao=e=>{if(e)return na(e,t=>{let{"data-id":o,disabled:r,id:n=o,"data-expanded":a,expanded:i=a}=t.props;return{childNodes:ra(t),disabled:r,expanded:i,header:Cr(t),id:n,label:ta(t),selectable:oa(t),value:t}})},sa=new Set(["/","-","."]),ia=e=>sa.has(e),Mr=(e,t)=>t.startsWith(e)&&ia(t[e.length]),aa=new Set([".","/"]);function la(e,t){return t.startsWith(e)?aa.has(t.charAt(e.length)):!1}function Tt(e,t,o){let r;return e.map(a=>a.id===t?{...a,...o}:la(a.id,t)&&a.childNodes?(r=Tt(a.childNodes,t,o),{...a,childNodes:r}):a)}import"react";import"@salt-ds/core";var ca=e=>e&&e.replace(/^\s+/g,""),lo=e=>new RegExp(`(${bt(ca(e))})`,"gi"),Er=(e="",t=lo)=>(o="")=>!!o.length&&!!e.length&&o.match(t(e))!==null;var da={},Dr=({children:e,id:t,label:o="",options:r=da,source:n})=>{var a;let{getItemId:i}=r,[,l]=ua(null),c=mr(),s=Ct([]),m=Ct([]),d=wt(()=>[],[]),u=Ct((a=r.filterPattern)!=null?a:""),{getFilterRegex:g=lo,noChildrenLabel:f,itemToString:p=ze}=r,x=ie(C=>r.defaultExpanded||!1,[r.defaultExpanded]),y=ie((C,T,R=1,A="",F=[],V=[],G=[])=>(C.forEach((z,q,K)=>{var B,$;let _=z.header&&r.collapsibleHeaders,J=z.childNodes&&r.collapsibleHeaders===!1,U=!z.childNodes||z.childNodes.length===0,Z=J||U&&!_,j=A?`${A}.${q}`:`item-${q}`,Y=(B=z.id)!=null?B:i?i(q):`${t}-${j}`,W=Z?void 0:($=z.expanded)!=null?$:x(Y),ee={...z,childNodes:void 0,count:!J&&W===void 0?0:Tr(z,K,q),description:z.description,disabled:yr(z.value),focusable:Sr(z.value)?void 0:!1,id:Y,index:T.value,expanded:W,level:R};if(F.push(ee),V.push(ee),G.push(C[q].value),T.value+=1,z.childNodes){let[be]=y(z.childNodes,T,R+1,j,[],V,G);ee.childNodes=be}}),[F,G,V]),[r.collapsibleHeaders,i,t,x]),D=ie(()=>u.current?Er(u.current,g):null,[g]),I=ie((C,T=D(),R=[],A={value:0})=>{let F=!1;for(let V of C)F&&!so(V)||(V.value!==null&&(T===null||T(p(V.value)))&&(R[A.value]=V,A.value+=1),F=!1,so(V)&&V.expanded===!1?F=!0:vr(V)&&V.expanded!==!1&&V.childNodes&&I(V.childNodes,T,R,A));return R},[D,p]),v=wt(()=>c?d:io(n,{itemToString:p,noChildrenLabel:f})||ao(e)||[],[c,d,n,p,f,e]),[L,w,M]=wt(()=>c?[d,d,d]:y(v,{value:0}),[d,y,c,v]);m.current=M,wt(()=>c?d:s.current=I(L),[d,I,L,c]);let h=Ct(L),E=ie((C="")=>{typeof C=="string"&&(u.current=C,s.current=I(L),l({}))},[L,I]),H=ie((C,T=L)=>{let R=T.find(A=>{var F;return A.id===C||((F=A==null?void 0:A.childNodes)==null?void 0:F.length)&&Mr(A.id,C)});if((R==null?void 0:R.id)===C)return w==null?void 0:w[R.index];if(R)return H(C,R.childNodes);throw Error(`useCollectionData itemById, id ${C} not found `)},[w,L]),O=ie(C=>{let T=m.current.find(R=>Lr(R.value)?R.label===C:R.value===C);if(T)return T;throw Error("useCollectionData toCollectionItem, item not found ")},[]),b=ie(C=>{if(C===null)return null;if(Array.isArray(C)){let T=[];for(let R of C){let A=O(R);T.push(A)}return T}else if(C!==void 0)return O(C)},[O]),S=ie(C=>{let T=R=>{let A=m.current.find(F=>Lr(F.value)?F.label===R:F.value!==null&&p(F.value)===R);if(A)return A};if(C===null)return null;if(Array.isArray(C)){let R=[];for(let A of C){let F=T(A);F&&R.push(F)}return R}else if(C!==void 0)return T(C)},[p]),N=ie(C=>{for(let T of h.current)if(C===T.value)return T.id;throw Error("useCollectionData itemToId, item not found")},[]),P=ie(C=>{h.current=Tt(h.current,C.id,{expanded:!1}),s.current=I(h.current),l({})},[I]),k=ie(C=>{h.current=Tt(h.current,C.id,{expanded:!0}),s.current=I(h.current),l({})},[I]);return c||{collapseGroupItem:P,data:s.current,expandGroupItem:k,setFilterPattern:E,itemById:H,itemToId:N,toCollectionItem:O,itemToCollectionItem:b,stringToCollectionItem:S}};import{useIsomorphicLayoutEffect as Nr}from"@salt-ds/core";import{useRef as ma,useCallback as pa}from"react";var Pr=["height"];var ke=new WeakMap,Hr=(e,t,o)=>{switch(o){case"height":return t.height;case"scrollHeight":return e.scrollHeight;case"scrollWidth":return e.scrollWidth;case"width":return t.width;default:return 0}},Mt=typeof ResizeObserver<"u"?new ResizeObserver(e=>{for(let t of e){let{target:o,contentRect:r}=t,n=ke.get(o);if(n){let{onResize:a,measurements:i}=n,l=!1;for(let[c,s]of Object.entries(i)){let m=Hr(o,r,c);m!==s&&(l=!0,i[c]=m)}l&&a&&a(i)}}}):null;function nt(e,t,o,r=!1){let n=ma(t),a=pa(i=>{let l=i.getBoundingClientRect();return n.current.reduce((c,s)=>(c[s]=Hr(i,l,s),c),{})},[]);Nr(()=>{if(!Mt)return;let i=e.current,l=!1;async function c(){ke.set(i,{measurements:{}}),l=!1;let{fonts:s}=document;if(s&&await s.ready,!l&&Mt){let m=ke.get(i);if(m){let d=a(i);m.measurements=d,Mt.observe(i),r&&o(d)}}}if(i){if(ke.has(i))throw Error("useResizeObserver attemping to observe same element twice");c()}return()=>{i&&ke.has(i)&&(Mt.unobserve(i),ke.delete(i),l=!0)}},[e,a]),Nr(()=>{let i=e.current,l=ke.get(i);if(l){if(n.current!==t){n.current=t;let c=a(i);l.measurements=c}l.onResize=o}},[t,a,e,o])}import{jsxs as qa,jsx as Re,Fragment as Za}from"react/jsx-runtime";import{forwardRef as Ja,useRef as bo,createElement as ja,isValidElement as Ya,cloneElement as Xa}from"react";import{makePrefixer as Qa,useIdMemo as el,useForkRef as tl}from"@salt-ds/core";import{useMemo as fa,useImperativeHandle as ga}from"react";var ha={scrollToIndex:e=>{},scrollToItem:e=>{},scrollTo:e=>{}},kr=({collectionHook:e,forwardedRef:t,scrollableRef:o,scrollIntoView:r})=>{let n=fa(()=>({scrollToIndex:a=>{let i=e.data[a];i&&(r==null||r(i))},scrollToItem:a=>{let i=e.toCollectionItem(a);i&&(r==null||r(i))},scrollTo:a=>{o!=null&&o.current&&(o.current.scrollTop=a)}}),[e.data,e.toCollectionItem,r]);ga(t,()=>o.current?n:ha,[n])};import{useControlled as xa}from"@salt-ds/core";import{useRef as co,useState as ba,useCallback as Ue,useMemo as Ia}from"react";var Rr=e=>Array.isArray(e)?e.length>0:e!=null,Ar=e=>Array.isArray(e)?e[0]:e;var mo=-2;function Or(e,t,o){return t===et||t===ot?o>0?o-1:o:o===null?0:o===e-1?o:o+1}var uo=(e,t)=>{let o=Ar(t);return o?e.indexOf(o):-1},va=(e,t,o,r)=>e===ot?r:e===vt?-1:t!==-1?t:o,Kr=e=>{let t=document.getElementById(e.id);if(t)return t.getBoundingClientRect();throw Error(`useKeyboardNavigation.getItemRect no element found for item #${e==null?void 0:e.id}`)},ya=(e,t,o,r)=>{let{top:n}=t.getBoundingClientRect(),{scrollTop:a,clientHeight:i,scrollHeight:l}=e,c=o.length-1,s=Math.min(a+i,l-i);if(s!==a&&r<c){e.scrollTo(0,s);let m=r,d;do m+=1,d=Kr(o[m]);while(d.top<n&&m<c);return m}},Sa=async(e,t,o,r)=>{let{top:n}=t.getBoundingClientRect(),{scrollTop:a,clientHeight:i}=e,l=Math.max(a-i,0);if(l!==a&&r>0)return e.scrollTo(0,l),new Promise(c=>{requestAnimationFrame(()=>{let s=r,m;do s-=1,m=Kr(o[s]);while(m.top>n&&s>0);c(s)})})},Ta=e=>!e.header&&!e.childNodes,Fr=e=>Ta(e)||e.expanded!==void 0,Br=({containerRef:e,defaultHighlightedIndex:t=-1,disableHighlightOnFocus:o,highlightedIndex:r,indexPositions:n,onHighlight:a,onKeyboardNavigation:i,restoreLastFocus:l,selected:c})=>{let s=co(-1),[,m]=ba({}),[d,u,g]=xa({controlled:r,default:t,name:"UseKeyboardNavigation"}),f=Ue((h,E=!1)=>{a==null||a(h),u(h),E&&(s.current=h)},[a,u]),p=Ue(async(h,E)=>{let{id:H}=n[E],O;if(H){let b=document.getElementById(H),{current:S}=e;b&&S&&(O=h.key===yt?ya(S,b,n,E):await Sa(S,b,n,E))}return O!=null?O:E},[e,n]),x=Ue((h=tt,E=h===tt?-1:n.length)=>{if(n.length===0)return-1;{let H=uo(n,c),O=va(h,E,H,n.length),b=Or(n.length,h,O);if(b===0&&h===et&&!Fr(n[0]))return E;for(;((h===tt||h===vt)&&b<n.length||(h===et||h===ot)&&b>0)&&!Fr(n[b]);)b=Or(n.length,h,b);return b}},[n,c]),y=co(!1),D=co(!1),I=h=>D.current=h,v=Ue(h=>{if(D.current)D.current=!1;else if(y.current=!0,n.length===0)f(mo);else if(d!==-1)m({});else if(l)if(s.current!==-1)f(s.current);else{let E=uo(n,c);f(E!==-1?E:0)}else if(Rr(c)){let E=uo(n,c);f(E)}else o!==!0&&f(x())},[o,d,n,x,l,c,f]),L=Ue(async h=>{let E=h.key===yt||h.key===oo?await p(h,d):x(h.key,d);E!==d&&f(E,!0),i==null||i(h,E)},[d,x,p,i,f]),w=Ue(h=>{n.length>0&&xr(h)?(h.preventDefault(),h.stopPropagation(),y.current=!0,L(h)):St(h)&&(y.current=!0)},[n,L]),M=Ia(()=>({onBlur:h=>{let E=h.target.closest(".saltList"),H=h.relatedTarget;E&&!(E!=null&&E.contains(H))&&(y.current=!1,u(-1),l||(s.current=-1))},onFocus:v,onKeyDown:w,onMouseDownCapture:()=>{y.current=!1,I(!0)},onMouseMove:()=>{y.current&&(y.current=!1)},onMouseLeave:()=>{y.current=!1,I(!1),f(-1)}}),[v,w,l,u,f]);return{focusVisible:y.current?d:-1,controlledHighlighting:g,highlightedIndex:d,setHighlightedIndex:f,keyboardNavigation:y,listProps:M,setIgnoreFocus:I}};function $r(e,t){return Array.isArray(e)?e.includes(t):e===t}import{jsx as Et,jsxs as Ea}from"react/jsx-runtime";import{forwardRef as _r}from"react";import{makePrefixer as La,CheckboxIcon as Da}from"@salt-ds/core";import{jsx as po,Fragment as Ca}from"react/jsx-runtime";import{makePrefixer as wa}from"@salt-ds/core";import"react";var Vr=`.saltHighlighter-highlight {
35
- font-weight: var(--salt-text-fontWeight-strong); /* TODO: Check with design */
36
- }
37
- `;var Ma=wa("saltHighlighter"),zr=e=>{let{matchPattern:t,text:o=""}=e,r=Ie();ve({testId:"salt-hightligher",css:Vr,window:r});let n=typeof t=="string"?new RegExp(`(${bt(t)})`,"gi"):t;return n===void 0?po(Ca,{children:o}):po("span",{children:o.split(n).map((a,i)=>a.match(n)?po("strong",{className:Ma("highlight"),children:a},`${i}-${a}`):a)})};var Ur=`.saltListItem {
38
- /* Color */
39
- --list-item-text-color: var(--salt-text-primary-foreground);
40
- --list-item-background: var(--saltList-item-background, var(--salt-selectable-background));
41
- /* --list-item-selected-focus-outlineColor: var(--salt-color-white); TODO: Check token with design */
42
- --list-item-text-color-active: var(--salt-text-primary-foreground);
43
- --list-item-background-active: var(--salt-selectable-background-selected);
44
- --list-item-alignItems: center;
45
- }
46
-
47
- .saltListItem.saltHighlighted {
48
- --saltCheckbox-icon-stroke: var(--salt-selectable-borderColor-hover);
49
- --list-item-background: var(--salt-selectable-background-hover);
50
- }
51
-
52
- .saltListItemHeader {
53
- font-weight: var(--salt-text-fontWeight-strong); /* TODO: Check token with design */
54
- }
55
-
56
- .saltListItemHeader[data-sticky] {
57
- position: sticky;
58
- top: 0;
59
- z-index: 1;
60
- }
61
-
62
- .saltListItem {
63
- color: var(--list-item-text-color);
64
- cursor: var(--saltList-item-cursor, pointer);
65
- background: var(--saltList-item-background, var(--list-item-background));
66
- font-size: var(--salt-text-fontSize);
67
- text-align: var(--salt-text-textAlign);
68
- line-height: var(--salt-text-lineHeight);
69
- height: var(--saltList-item-height, var(--list-item-height, auto));
70
- /* Replaced border-bottom with margin. In design spec, the height of the items should not include gap */
71
- margin-bottom: var(--list-item-gap);
72
- padding: 0 var(--salt-size-unit);
73
- left: 0;
74
- right: 0;
75
- display: flex;
76
- position: relative;
77
- align-items: var(--list-item-alignItems);
78
- white-space: nowrap;
79
- }
80
-
81
- .saltListItem:last-child {
82
- margin-bottom: 0px;
83
- }
84
-
85
- .saltListItem-checkbox {
86
- --list-item-background-active: var(--salt-selectable-background);
87
- --list-item-text-color-active: var(--salt-text-primary-foreground);
88
- --list-item-text-padding: 0 0 0 var(--salt-size-unit);
89
- }
90
-
91
- .saltListItem[aria-selected="true"]:not(.saltListItem-checkbox) {
92
- --list-item-background: var(--list-item-background-active);
93
- color: var(--list-item-text-color-active);
94
- }
95
-
96
- .saltListItem.saltDisabled {
97
- --list-item-text-color: var(--salt-text-primary-foreground-disabled);
98
- cursor: var(--salt-selectable-cursor-disabled);
99
- }
100
-
101
- .saltListItem.saltFocusVisible {
102
- outline-style: var(--salt-focused-outlineStyle);
103
- outline-width: var(--salt-focused-outlineWidth);
104
- outline-offset: -2px;
105
- outline-color: var(--salt-focused-outlineColor);
106
- }
107
-
108
- .saltListItem.saltFocusVisible:after {
109
- content: none;
110
- }
111
-
112
- .saltListItem[aria-selected="true"]:not(.saltListItem-checkbox).saltFocusVisible {
113
- outline-color: var(--list-item-selected-focus-outlineColor);
114
- }
115
-
116
- .saltListItem-textWrapper {
117
- flex: 1;
118
- overflow: hidden;
119
- padding: var(--list-item-text-padding, 0px);
120
- white-space: nowrap;
121
- text-overflow: ellipsis;
122
- }
123
-
124
- .saltListItem-proxy {
125
- position: absolute !important;
126
- visibility: hidden;
127
- }
128
- `;var st=La("saltListItem"),fo=_r(function(t,o){return Et("div",{"aria-hidden":!0,className:He(st(),st("proxy")),ref:o})}),it=_r(function({children:t,className:o,disabled:r,tabIndex:n,item:a,itemHeight:i,itemTextHighlightPattern:l,label:c,selectable:s,selected:m,showCheckbox:d,style:u,...g},f){let p=Ie();ve({testId:"salt-list-item",css:Ur,window:p});let x=He(st(),o,{saltDisabled:r,[st("checkbox")]:d}),y=i!==void 0?{...u,height:i}:u;return Ea("div",{className:x,...g,"aria-disabled":r||void 0,"aria-selected":m||void 0,ref:f,style:y,children:[d&&Et(Da,{"aria-hidden":!0,checked:m}),t&&typeof t!="string"?t:l==null?Et("span",{className:st("textWrapper"),children:c||t}):Et(zr,{matchPattern:l,text:c||t})]})});import{useRef as Ua,useCallback as Lt,isValidElement as xo}from"react";import"@salt-ds/core";import{useCallback as Wr}from"react";var Na={},Pa=e=>Array.isArray(e.childNodes),Ha=e=>e.closest("[data-toggle],[aria-expanded]").dataset.toggle==="true",Gr=({collapsibleHeaders:e,collectionHook:t,highlightedIdx:o,onToggle:r})=>{let n=Wr(l=>{if(l.key===fr||l.key===to){let c=t.data[o];c&&c.expanded===!1&&c.value&&(l.preventDefault(),t.expandGroupItem(c),r==null||r(c.value))}if(l.key===pr||l.key===to){let c=t.data[o];c&&c.expanded&&c.value&&(l.preventDefault(),t.collapseGroupItem(c),r==null||r(c.value))}},[t.collapseGroupItem,t.data,t.expandGroupItem,o]),i={onClick:Wr(l=>{console.log(`useCollapsibleGroups idx=${o}`);let c=t.data[o];console.log(l.target,l.currentTarget),c&&Pa(c)&&Ha(l.target)&&(l.stopPropagation(),l.preventDefault(),c.expanded===!1&&c.value?(t.expandGroupItem(c),r==null||r(c.value)):c.expanded===!0&&c.value&&(t.collapseGroupItem(c),r==null||r(c.value)))},[t.collapseGroupItem,t.data,t.expandGroupItem,o]),onKeyDown:n};return e?i:Na};function ka(e){if(e){let t=e.dataset.idx;if(t)return parseInt(t,10);if(t=e.ariaPosInSet)return parseInt(t,10)-1}return-1}var Ra=e=>e.closest("[data-idx],[aria-posinset]"),qr=e=>ka(Ra(e));import{useControlled as Aa}from"@salt-ds/core";import{useRef as Oa,useCallback as me}from"react";var Fa=["Enter"," "],go=e=>e&&e.disabled!==!0&&e.selectable!==!1,Zr=(e,t)=>{var o,r;return((o=e.index)!=null?o:0)-((r=t.index)!=null?r:0)},Jr=({defaultSelected:e,disableSelection:t=!1,highlightedIdx:o,indexPositions:r,label:n="",onSelect:a,onSelectionChange:i,selected:l,selectionStrategy:c,selectionKeys:s=Fa,tabToSelect:m})=>{let d=c==="deselectable",u=c==="multiple",g=c==="extended",f=Oa(-1),p=me(S=>s.includes(S.key),[s]),x=me(()=>u||g?[]:null,[u,g]),[y,D]=Aa({controlled:l,default:e!=null?e:x(),name:"UseSelection",state:"selected"}),I=me(S=>Array.isArray(y)?y.includes(S):y===S,[y]),v=me(S=>S,[]),L=me(S=>I(S)?null:S,[I]),w=me(S=>{let N=I(S)?y.filter(P=>P!==S):y.concat(S);return N.sort(Zr),N},[I,y]),M=me((S,N)=>{let P=N?y:[],[k]=y.slice(-1),C=k?r.indexOf(k):0,T=Math.min(S,C),R=Math.max(S,C),A=r.slice(T,R+1),F=[...new Set([...P,...A])];return F.sort(Zr),F},[r,y]),h=me((S,N,P,k,C)=>{let T;u?T=w(P):g?C&&!k?T=w(P):k?T=M(N,C):T=[P]:d?T=L(P):T=v(P),T!==y&&D(T),a==null||a(S,P),T!==y&&i&&i(S,T)},[u,g,d,y,a,w,M,L,v,D,i]),E=me(S=>{let N=r[o];go(N)&&(p(S)||m&&S.key==="Tab")&&(S.key!=="Tab"&&S.preventDefault(),h(S,o,N,!1,S.ctrlKey||S.metaKey),g&&(f.current=o))},[r,o,p,m,h,g]),H=me((S,N)=>{if(g&&S.shiftKey){let P=r[N];go(P)&&h(S,N,P,!0)}},[g,r,h]);return{listHandlers:{onClick:me(S=>{let N=r[o];!t&&go(N)&&(S.preventDefault(),S.stopPropagation(),h(S,o,N,S.shiftKey,S.ctrlKey||S.metaKey),g&&(f.current=o))},[t,g,o,r,h]),onKeyDown:E,onKeyboardNavigation:H},selected:y,setSelected:D}};import{useRef as ho,useCallback as jr}from"react";var Yr=({disableTypeToSelect:e,highlightedIdx:t,highlightItemAtIndex:o,typeToNavigate:r,items:n,applyIncrementalSearch:a=!0})=>{let i=ho(null),l=ho(""),c=ho(-1),s=jr(d=>{if(d||!a){let u=new RegExp(`^${l.current}`,"i"),g=n.findIndex(({label:f},p)=>p>c.current&&u.test(f));g===-1&&(g=n.findIndex(({label:f},p)=>p<=c.current&&u.test(f))),g!==-1&&o(g)}else l.current="",i.current=null,c.current=-1},[a,o,n]),m=jr(d=>{let u=c.current!==-1;(St(d)||u&&d.key===gr)&&r&&(d.preventDefault(),d.stopPropagation(),(c.current===-1||d.key===l.current)&&(c.current=t),i.current!==null&&(clearTimeout(i.current),i.current=null),d.key!==l.current&&(l.current+=d.key),a&&s(!0),i.current=window.setTimeout(()=>{s()},100))},[r,a,t,s]);return{onKeyDown:e?void 0:m}};import{useRef as Xr,useCallback as _e}from"react";import{useIsomorphicLayoutEffect as Ka}from"@salt-ds/core";import"react/jsx-runtime";var Qr=["height"],Ba=["height","scrollHeight"],$a=[],en={containerOnly:[Ba,$a],withContent:[Qr,Qr]},Va=e=>e?en.containerOnly:en.withContent,tn={current:null},za=(e,t)=>{let{transform:o="none"}=getComputedStyle(e);if(o.startsWith("matrix")){let r=o.lastIndexOf(",");return parseInt(o.slice(r+1))}else{let r=e.offsetParent;if(r===t||t===null)return e.offsetTop;{let n=e.offsetTop;for(;r!==null&&r!==t;)n+=r.offsetTop,r=r.offsetParent;return n}}},on=({containerRef:e,contentRef:t=tn,highlightedIdx:o=-1,indexPositions:r,stickyHeaders:n=!1})=>{let a=Xr(!1),i=Xr({height:0,contentHeight:0}),l=_e(p=>{a.current=!0,e.current&&(e.current.scrollTop=p),setTimeout(()=>{a.current=!1})},[]),c=_e(()=>l(0),[l]),s=_e(()=>{l(i.current.contentHeight-i.current.height)},[l]),m=_e(p=>{let x=t.current||e.current;if(p.id){let y=document.getElementById(p.id);if(y&&e.current){let{height:D}=i.current,I=y.ariaExpanded&&y.firstChild?y.firstChild:y,v=n?36:0,L=za(I,x),w=I.offsetHeight,{scrollTop:M}=e.current,h=M+v,E=h+D-v;if(L+w>E||L<h){let H=L+w>E?M+(L+w)-E:L-v;l(H)}}}},[e,t,l,n]);Ka(()=>{let{height:p,contentHeight:x}=i.current,y=r[o];if(x>p&&y){let[D]=r,[I]=r.slice(-1);y===D?c():y===I?s():m(r[o])}},[o,r,m,s,c]);let d=_e(({height:p,scrollHeight:x})=>{typeof p=="number"&&(i.current.height=p),typeof x=="number"&&(i.current.contentHeight=x)},[]),u=_e(({height:p})=>{typeof p=="number"&&(i.current.contentHeight=p)},[]),[g,f]=Va(t===tn);return nt(e,g,d,!0),nt(t,f,u,!0),{isScrolling:a,scrollIntoView:m}};var rn=({collapsibleHeaders:e,collectionHook:t,containerRef:o,contentRef:r,defaultHighlightedIndex:n,defaultSelected:a,disabled:i,disableAriaActiveDescendant:l,disableHighlightOnFocus:c,disableTypeToSelect:s,highlightedIndex:m,label:d="",listHandlers:u,onSelect:g,onSelectionChange:f,onHighlight:p,onKeyboardNavigation:x,onKeyDown:y,restoreLastFocus:D,selected:I,selectionStrategy:v,selectionKeys:L,stickyHeaders:w,tabToSelect:M})=>{let h=Ua(I||a),E=($,_)=>{var J,U;(U=(J=R.listHandlers).onKeyboardNavigation)==null||U.call(J,$,_),x==null||x($,_)},H=Lt(($,_)=>{g&&(xo(_.value)?g($,_.label):_.value!==null&&g($,_.value))},[g]),O=Lt(($,_)=>{f&&f($,Array.isArray(_)?_.map(J=>xo(J.value)?J.label:J.value):_&&(xo(_.value)?_.label:_.value))},[f]),{highlightedIndex:b,listProps:{onKeyDown:S,onMouseMove:N,...P},setHighlightedIndex:k,...C}=Br({containerRef:o,defaultHighlightedIndex:n,disableHighlightOnFocus:c,highlightedIndex:m,indexPositions:t.data,label:d,onHighlight:p,onKeyboardNavigation:E,restoreLastFocus:D,selected:h.current}),T=Gr({collapsibleHeaders:e,highlightedIdx:b,collectionHook:t}),R=Jr({defaultSelected:a,highlightedIdx:b,indexPositions:t.data,label:d,onSelect:H,onSelectionChange:O,selected:I,selectionStrategy:v,selectionKeys:L,tabToSelect:M}),{onKeyDown:A}=Yr({disableTypeToSelect:s,highlightedIdx:b,highlightItemAtIndex:k,typeToNavigate:!0,items:t.data}),F=Lt($=>{var _,J,U;$.defaultPrevented||A==null||A($),S($),$.defaultPrevented||(J=(_=R.listHandlers).onKeyDown)==null||J.call(_,$),$.defaultPrevented||(U=T==null?void 0:T.onKeyDown)==null||U.call(T,$),$.defaultPrevented||y==null||y($)},[T,S,y,R.listHandlers,A]),{isScrolling:V,scrollIntoView:G}=on({containerRef:o,contentRef:r,highlightedIdx:b,indexPositions:t.data,stickyHeaders:w}),z=Lt($=>{if(!V.current&&!i){N();let _=qr($.target);if(_!==b){let J=t.data[_];!J||J.disabled?k(-1):k(_)}}},[V,i,k,N,b,t.data]),q=()=>{var $;return b===void 0||b===-1||l||($=t.data[b])==null?void 0:$.id};h.current=R.selected;let K={"aria-activedescendant":q(),onBlur:P.onBlur,onFocus:P.onFocus,onKeyDown:F,onMouseDownCapture:P.onMouseDownCapture,onMouseLeave:P.onMouseLeave},B=u||{onClick:R.listHandlers.onClick,onMouseMove:z};return{focusVisible:C.focusVisible,controlledHighlighting:C.controlledHighlighting,highlightedIndex:b,keyboardNavigation:C.keyboardNavigation,listHandlers:B,listItemHeaderHandlers:T,listControlProps:K,scrollIntoView:G,selected:R.selected,setHighlightedIndex:k,setIgnoreFocus:C.setIgnoreFocus,setSelected:R.setSelected}};import{useState as _a,useMemo as Wa,useCallback as Ga}from"react";import"@salt-ds/core";import"react/jsx-runtime";var nn=({borderless:e,displayedItemCount:t,getItemHeight:o,height:r,itemCount:n,itemGapSize:a,itemHeight:i,rowHeightRef:l})=>{let[c,s]=_a(36),m=Wa(()=>{let u=e?0:2,g=i!=null?i:c,f=Math.min(t,n)||t;return typeof o=="function"?u+=Array(f).fill(0).reduce((p,x,y)=>p+o(y)+a,0)-a:u+=f*Number(g)+(f-1)*a,isNaN(u)?void 0:u},[e,t,o,n,a,i,c]),d=Ga(({height:u})=>{s(u)},[]);return nt(l,Pr,d,!0),{preferredHeight:m}};var sn=`.saltList {
129
- --list-background: var(--salt-container-primary-background);
130
- --list-borderStyle: var(--salt-container-borderStyle);
131
- --list-borderWidth: var(--salt-size-border);
132
- --list-height: auto;
133
- --list-item-height: var(--salt-size-stackable);
134
- --list-item-gap: 0px;
135
- --list-maxHeight: 100%;
136
-
137
- background: var(--list-background);
138
- border-color: var(--salt-container-primary-borderColor);
139
- border-style: var(--list-borderStyle);
140
- border-width: var(--list-borderWidth);
141
- height: var(--saltList-height, var(--list-height));
142
- max-height: var(--list-maxHeight);
143
- outline: none;
144
- overflow-y: auto;
145
- position: relative;
146
- user-select: none;
147
- width: var(--saltList-width, auto);
148
- }
149
-
150
- .saltList-borderless {
151
- --list-borderStyle: none;
152
- }
153
-
154
- /* virtualised list */
155
- .saltList-viewport {
156
- --list-item-height: 30px;
157
- max-height: calc(var(--list-maxHeight) - 2 * var(--list-borderWidth));
158
- overflow: auto;
159
- }
160
-
161
- .saltListItemHeader {
162
- --saltList-item-background: var(--list-item-header-background);
163
- color: var(--list-item-header-color);
164
- }
165
-
166
- .saltListItemHeader[data-sticky="true"] {
167
- --saltList-item-background: var(--list-background);
168
- position: sticky;
169
- top: 0;
170
- z-index: 1;
171
- }
172
-
173
- .saltList-collapsible .saltListItemHeader:after {
174
- border-width: var(--checkbox-borderWidth);
175
- border-color: var(--checkbox-borderColor);
176
- content: var(--list-item-header-twisty-content);
177
- -webkit-mask: var(--list-svg-chevron-down) center center/12px 12px no-repeat;
178
- mask: var(--list-svg-chevron-down) center center/12px 12px no-repeat;
179
- background: var(--list-item-header-twisty-color);
180
- height: 12px;
181
- left: var(--list-item-header-twisty-left);
182
- right: var(--list-item-header-twisty-right);
183
- margin-top: -8px;
184
- position: absolute;
185
- top: var(--list-item-header-twisty-top);
186
- transition: transform 0.3s;
187
- width: 12px;
188
- }
189
- .saltListItemHeader[aria-expanded="false"]:after {
190
- transform: rotate(-90deg);
191
- }
192
-
193
- /* Selection */
194
-
195
- .saltList-scrollingContentContainer {
196
- box-sizing: inherit;
197
- position: relative;
198
- }
199
-
200
- .saltList-virtualized .saltListItem {
201
- line-height: 30px;
202
- position: absolute;
203
- top: 0;
204
- left: 0;
205
- right: 0;
206
- will-change: transform;
207
- }
208
- .saltList.saltFocusVisible:after {
209
- inset: 2px;
210
- }
211
- `;var ol="No data to display",at=Qa("saltList"),Io=Ja(function({ListItem:t=it,ListPlaceholder:o,borderless:r,children:n,className:a,collapsibleHeaders:i=!1,defaultHighlightedIndex:l,defaultSelected:c,disabled:s=!1,disableFocus:m=!1,disableTypeToSelect:d,displayedItemCount:u=10,emptyMessage:g,focusVisible:f,getItemHeight:p,getItemId:x,height:y,highlightedIndex:D,id:I,itemGapSize:v=0,itemHeight:L,itemTextHighlightPattern:w,itemToString:M=ze,listHandlers:h,maxHeight:E,maxWidth:H,minHeight:O,minWidth:b,onSelect:S,onSelectionChange:N,onHighlight:P,restoreLastFocus:k,selected:C,selectionStrategy:T,checkable:R=T==="multiple",scrollingApiRef:A,selectionKeys:F,showEmptyMessage:V=!1,source:G,style:z,stickyHeaders:q,tabToSelect:K,width:B,...$},_){let J=Ie();ve({testId:"salt-list",css:sn,window:J});let U=el(I),Z=bo(null),j=bo(null),Y=bo(null),W=Dr({id:U,label:"List",source:G,children:n,options:{collapsibleHeaders:i,getItemId:x,itemToString:M}}),{preferredHeight:ee}=nn({borderless:r,displayedItemCount:u,getItemHeight:p,height:y,itemCount:W.data.length,itemGapSize:v,itemHeight:L,rowHeightRef:Y}),{focusVisible:be,highlightedIndex:ue,listControlProps:ye,listHandlers:Se,listItemHeaderHandlers:Le,scrollIntoView:Te,selected:Ce}=rn({collapsibleHeaders:i,collectionHook:W,containerRef:Z,contentRef:j,defaultHighlightedIndex:l,defaultSelected:W.itemToCollectionItem(c),disabled:s,disableTypeToSelect:d,highlightedIndex:D,label:U,listHandlers:h,onSelect:S,onSelectionChange:N,onHighlight:P,restoreLastFocus:k,selected:W.itemToCollectionItem(C),selectionStrategy:T,selectionKeys:F,stickyHeaders:q,tabToSelect:K});kr({collectionHook:W,forwardedRef:A,scrollableRef:Z,scrollIntoView:Te});let we=f!=null?f:be,fe=function(Q,re,te,ne){let Pe=ja(t,{...Le,className:He("saltListItemHeader",{focusVisible:i&&we===Q.value}),"aria-expanded":ne,"data-idx":i?Q.value:void 0,"data-highlighted":Q.value===ue||void 0,"data-sticky":q,"data-selectable":!1,id:re,key:`header-${Q.value}`,label:te});return Q.value+=1,Pe},Je=p===void 0?()=>L:p;function Be(Ne,Q,re){var te;let{disabled:ne,value:Pe,id:Ye,label:Yt}=Q,Xe=Ya(Pe),gt={className:He({saltHighlighted:re.value===ue,saltFocusVisible:we===re.value}),disabled:ne||s,id:Ye,item:Xe?void 0:(te=Q==null?void 0:Q.value)!=null?te:void 0,itemHeight:Je(re.value),itemTextHighlightPattern:w,key:Ye,"data-idx":re.value,label:Yt,role:"option",selected:$r(Ce,Q),showCheckbox:R};Ne.push(Xe?Xa(Pe,gt):Re(t,{...gt})),re.value+=1}let de=function(Q,re,te){let{count:ne=0,id:Pe,expanded:Ye,label:Yt=""}=re[te.value],Xe=fe(te,Pe,Yt,Ye),gt=Ye!==!1?[Xe].concat(De(re,te,te.value+ne)||[]):Xe;Q.push(Re("div",{role:"group",children:gt},Pe))},De=(Ne,Q={value:0},re=Ne.length)=>{let te=[];for(;Q.value<re;){let ne=Ne[Q.value];ne.header?te.push(fe(Q,ne.id,ne.label,ne.expanded===!1)):ne.childNodes?de(te,Ne,Q):Be(te,ne,Q)}return te};function je(){return g||V?Re("span",{className:at("empty-message"),children:g!=null?g:ol}):null}let Zt=()=>{if(W.data.length)return De(W.data);je()},Jt="auto",jt={"--list-item-gap":v?`${v}px`:void 0,minWidth:b,minHeight:O,width:B!=null?B:"100%",height:y!=null?y:"100%",maxWidth:H!=null?H:B,maxHeight:E!=null?E:ee};return qa("div",{"aria-multiselectable":T==="multiple"||T==="extended"||T==="extended-multi-range"||void 0,...$,...Se,...ye,className:He(at(),a,{[at("borderless")]:r,saltDisabled:s,[at("collapsible")]:i,saltFocusVisible:ue===mo}),id:`${U}`,ref:tl(Z,_),role:"listbox",style:{...z,...jt},tabIndex:s||m?void 0:0,children:[Re(fo,{ref:Y}),W.data.length===0&&o!==void 0?Re(Za,{children:Re(o,{})}):Re("div",{className:at("scrollingContentContainer"),ref:j,style:{height:Jt},children:Zt()})]})});import{Button as Bv,Text as $v}from"@salt-ds/core";import zv from"classnames";import{useCallback as Wv,useRef as Gv,useState as qv}from"react";import{useLayoutEffect as Sn,useMemo as zl}from"react";import*as Tn from"react-dom";import*as an from"react-dom";import rl from"classnames";var nl=1,sl=({className:e,dataMode:t,x:o=0,y:r=0,win:n=window})=>{let a=n.document.createElement("div");return a.className=rl(`vuuPopup ${nl++}`,e),a.style.cssText=`left:${o}px; top:${r}px;`,t&&(a.dataset.mode=t),n.document.body.appendChild(a),a},ln=e=>sl(e),Dt=(e,t,o,r,n)=>{t.style.cssText=`left:${o}px; top:${r}px;position: absolute;`,an.render(e,t,n)};import Mf,{useEffect as Ef,useState as Lf}from"react";import Nf from"classnames";import{Fragment as Rf,jsx as Af,jsxs as kf}from"react/jsx-runtime";import{useCallback as Vf}from"react";import Uf from"classnames";import{jsx as Wf}from"react/jsx-runtime";import mn,{Suspense as ul,useEffect as pn}from"react";import{registerComponent as dl}from"@vuu-ui/vuu-layout";import il from"react";import{Fragment as al,jsx as cn,jsxs as ll}from"react/jsx-runtime";var Nt=class extends il.Component{constructor(t){super(t),this.state={errorMessage:null}}static getDerivedStateFromError(t){return{errorMessage:t.message}}componentDidCatch(t,o){console.log(t,o)}render(){return this.state.errorMessage?ll(al,{children:[cn("h1",{children:"Something went wrong."}),cn("p",{children:this.state.errorMessage})]}):this.props.children}};import{jsx as cl}from"react/jsx-runtime";var un=()=>cl("div",{className:"hwLoader",children:"loading"});var dn=async e=>{let t=new CSSStyleSheet;return fetch(e).then(o=>o.text()).then(o=>t.replace(o))};import{jsx as Ht}from"react/jsx-runtime";var Pt=new Map,ml=e=>(pn(()=>()=>{Pt.delete(e)},[e]),Pt.has(e)||Pt.set(e,mn.lazy(()=>import(e))),Pt.get(e));function pl({url:e,css:t,params:o,...r}){console.log("Feature render",{css:t,url:e,props:r}),pn(()=>(console.log("%cFeature mount","color: green;"),()=>{console.log("%cFeature unmount","color:red;")}),[]),t&&dn(t).then(a=>{document.adoptedStyleSheets=[...document.adoptedStyleSheets,a]});let n=ml(e);return Ht(Nt,{children:Ht(ul,{fallback:Ht(un,{}),children:Ht(n,{...r,...o})})})}var fn=mn.memo(pl);fn.displayName="Feature";dl("Feature",fn,"view");import{jsx as fg}from"react/jsx-runtime";import{memo as fl}from"react";import{jsx as ae,jsxs as We}from"react/jsx-runtime";var gn=fl(()=>We("svg",{width:"44",height:"45",viewBox:"0 0 44 45",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[We("g",{clipPath:"url(#clip0_217_6990)",children:[ae("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)"}),ae("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)"}),ae("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"}),We("g",{opacity:"0.86",children:[ae("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"}),ae("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"}),ae("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"})]})]}),We("defs",{children:[We("linearGradient",{id:"paint0_linear_217_6990",x1:"24.6235",y1:"18.7363",x2:"42.3152",y2:"18.7363",gradientUnits:"userSpaceOnUse",children:[ae("stop",{stopColor:"#4906A5"}),ae("stop",{offset:"1",stopColor:"#D3423A"})]}),We("linearGradient",{id:"paint1_linear_217_6990",x1:"-2.35794e-05",y1:"22.5009",x2:"42.7186",y2:"22.5009",gradientUnits:"userSpaceOnUse",children:[ae("stop",{stopColor:"#7C06A5"}),ae("stop",{offset:"1",stopColor:"#D3423A"})]}),ae("clipPath",{id:"clip0_217_6990",children:ae("rect",{width:"44",height:"45",fill:"white"})})]})]}));gn.displayName="VuuLogo";import{Action as Og,Stack as Fg,useLayoutProviderDispatch as Kg}from"@vuu-ui/vuu-layout";import Vg from"classnames";import{useCallback as Wg,useRef as Gg,useState as qg}from"react";import{createContext as gl,isValidElement as hl,cloneElement as xl,useContext as hn}from"react";import bl from"classnames";import{jsx as Cl}from"react/jsx-runtime";var Il="medium",vl="salt-theme",yl="light",vo=gl({density:"high",theme:"salt",themeMode:"light"}),Sl=["salt","salt-density-high","light"],Ge=()=>{let e=hn(vo);return e?[`${e.theme}-theme`,`salt-density-${e.density}`,e.themeMode]:Sl},Tl=(e,t,o,r)=>{var n;return hl(e)?xl(e,{className:bl((n=e.props)==null?void 0:n.className,`${t}-theme`,`${t}-density-${r}`),"data-mode":o}):(console.warn(`
212
- ThemeProvider can only apply CSS classes for theming to a single nested child element of the ThemeProvider.
213
- Wrap elements with a single container`),e)},xn=({applyThemeClasses:e=!1,children:t,theme:o,themeMode:r,density:n})=>{var u,g,f;let{density:a,themeMode:i,theme:l}=hn(vo),c=(u=n!=null?n:a)!=null?u:Il,s=(g=r!=null?r:i)!=null?g:yl,m=(f=o!=null?o:l)!=null?f:vl,d=e?Tl(t,m,s,c):t;return Cl(vo.Provider,{value:{themeMode:s,density:c,theme:m},children:d})};xn.displayName="ThemeProvider";import{jsx as Yg,jsxs as Xg}from"react/jsx-runtime";import{useState as ah}from"react";import{Button as ch,FormField as uh,FormFieldLabel as dh,Input as mh}from"@salt-ds/core";import{jsx as gh,jsxs as hh}from"react/jsx-runtime";import{getCookieValue as El}from"@vuu-ui/vuu-utils";var Ll=()=>{let e=El("vuu-auth-mode");return e!=null?e:""};var Dl=()=>Ll()==="login"?"login.html":"demo.html",Nl=(e=Dl())=>{window.location.href=e},bn=e=>{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",Nl(e)};import{useCallback as Dh,useEffect as Nh,useMemo as Ph,useRef as Hh,useState as kh}from"react";import Ah from"classnames";import{useIdMemo as Fh}from"@salt-ds/core";import{Button as Bh}from"@salt-ds/core";import{hasAction as zh,isErrorResponse as Uh,RemoteDataSource as _h}from"@vuu-ui/vuu-data";import{buildColumnMap as qh,isValidNumber as Zh,shallowEquals as Jh}from"@vuu-ui/vuu-utils";import{jsx as Xh,jsxs as Qh}from"react/jsx-runtime";import{connectToServer as HI}from"@vuu-ui/vuu-data";import RI from"classnames";import{useCallback as BI,useEffect as $I,useRef as VI}from"react";import{useCallback as ux,useEffect as dx,useState as mx}from"react";import{DraggableLayout as _I,LayoutProvider as WI}from"@vuu-ui/vuu-layout";import{useCallback as bb}from"react";import{Button as Kx}from"@salt-ds/core";import{formatDate as Pl}from"@vuu-ui/vuu-utils";import{Button as Hl}from"@salt-ds/core";import{forwardRef as kl,useCallback as vn,useEffect as Rl,useState as Al}from"react";var In=async e=>await fetch(`api/vui/${e.username}`,{}).then(o=>o.ok?o.json():null).catch(()=>{console.log("error getting history")});import{jsx as kt,jsxs as yn}from"react/jsx-runtime";var Ol=({lastUpdate:e},{lastUpdate:t})=>t===e?0:t<e?-1:1,Fl=e=>kt(it,{...e}),Kl=kl(function({loginUrl:t,onNavigate:o,user:r,layoutId:n="latest"},a){let[i,l]=Al([]);Rl(()=>{async function d(){let g=(await In(r)).filter(f=>f.id!=="latest").sort(Ol).map(({id:f,lastUpdate:p})=>({lastUpdate:p,id:f,label:`Saved at ${Pl(new Date(p),"kk:mm:ss")}`}));console.log({sortedHistory:g}),l(g)}d()},[r]);let c=vn((d,u)=>{u&&o(u.id)},[o]),s=vn(()=>{bn(t)},[t]),m=i.length===0?null:n==="latest"?i[0]:i.find(d=>d.id===n);return yn("div",{className:"vuuUserPanel",ref:a,children:[kt(Io,{ListItem:Fl,className:"vuuUserPanel-history",onSelect:c,selected:m,source:i}),kt("div",{className:"vuuUserPanel-buttonBar",children:yn(Hl,{"aria-label":"logout",onClick:s,children:[kt(eo,{})," Logout"]})})]})});import{jsx as zx,jsxs as Ux}from"react/jsx-runtime";import jx from"classnames";import{ToggleButton as Xx,ToggleButtonGroup as Qx,useControlled as eb}from"@salt-ds/core";import{useCallback as nb}from"react";import{jsx as ab,jsxs as lb}from"react/jsx-runtime";import Sb from"classnames";import{jsx as wb,jsxs as Mb}from"react/jsx-runtime";import{logger as Bl}from"@vuu-ui/vuu-utils";import{Button as kb}from"@salt-ds/core";import Ab from"classnames";import{useCallback as Fb}from"react";import{useLayoutProviderDispatch as Bb}from"@vuu-ui/vuu-layout";import{jsx as zb,jsxs as Ub}from"react/jsx-runtime";import{DraggableLayout as Jb,Flexbox as jb}from"@vuu-ui/vuu-layout";import{jsx as Qb,jsxs as eI}from"react/jsx-runtime";import{DockLayout as rI,DraggableLayout as nI,Drawer as sI,Flexbox as iI,View as aI}from"@vuu-ui/vuu-layout";import{useCallback as dI,useRef as mI,useState as pI}from"react";import{jsx as gI,jsxs as hI}from"react/jsx-runtime";import{jsx as ev,jsxs as tv}from"react/jsx-runtime";var{error:XI}=Bl("Shell");import{createContext as $l,useContext as iv}from"react";import{jsx as cv}from"react/jsx-runtime";var Vl={},av=$l(Vl);import Ul from"classnames";var lt=function({children:t,x:o=0,y:r=0,onRender:n}){let[a,i,l]=Ge(),c=zl(()=>ln({className:Ul(a,i),dataMode:l}),[l,i,a]);return Sn(()=>{Dt(t,c,o,r,n)},[t,n,c,o,r]),Sn(()=>()=>{var s;c&&(Tn.unmountComponentAtNode(c),c.classList.contains("vuuPopup")&&((s=c.parentElement)==null||s.removeChild(c)))},[c]),null};import{jsx as Yv,jsxs as Xv}from"react/jsx-runtime";import{useCallback as Un,useRef as wo}from"react";import Rn,{useLayoutEffect as nc,useMemo as sc,useRef as ic}from"react";import An from"classnames";import{useId as ac}from"@vuu-ui/vuu-layout";import{useCallback as Rt,useMemo as Yl,useRef as yo,useState as Xl}from"react";var Cn=e=>e.closest("[data-root='true']")!==null,wn=(e,t)=>{var o;return e.ariaHasPopup==="true"&&((o=e.dataset)==null?void 0:o.idx)===`${t}`||e.querySelector(`:scope > [data-idx='${t}'][aria-haspopup='true']`)!==null};function _l(e,...t){let o=new Set(e);for(let r of t)for(let n of r)o.add(n);return o}var Wl="Enter";var Gl="Delete",ql=new Set([Wl,Gl]),Zl=new Set(["Tab"]),Jl=new Set(["ArrowRight","ArrowLeft"]),Mn=new Set(["Home","End","ArrowDown","ArrowUp"]),En=new Set(["Home","End","ArrowRight","ArrowLeft"]),jl=new Set(["F1","F2","F3","F4","F5","F6","F7","F8","F9","F10","F11","F12"]),ry=_l(ql,En,Mn,Jl,jl,Zl);var Ln=({key:e},t="vertical")=>(t==="vertical"?Mn:En).has(e);var Dn=({autoHighlightFirstItem:e=!1,count:t,highlightedIndex:o,onActivate:r,onHighlight:n,onCloseMenu:a,onOpenMenu:i})=>{let l=yo((o!=null?o:e)?0:-1),[,c]=Xl(null),s=o!==void 0,m=Rt(I=>{l.current=I,n==null||n(I),c({})},[n]),d=Rt(I=>{I!==l.current&&(s||m(I))},[s,m]),u=yo(!0),g=yo(!1),f=I=>g.current=I,p=s?o:l.current,x=Rt(I=>{let v=Ql(t,I.key,l.current);v!==l.current&&d(v)},[t,d]),y=Rt(I=>{if(Ln(I))I.preventDefault(),I.stopPropagation(),u.current=!0,x(I);else if((I.key==="ArrowRight"||I.key==="Enter")&&wn(I.target,p)){let L=I.target.querySelector(`:scope > [data-idx='${p}']`);L&&(i==null||i(L))}else I.key==="ArrowLeft"&&!Cn(I.target)?a(p):I.key==="Enter"?r&&r(p):I.key==="Tab"&&a(-1)},[p,x,r,a,i]),D=Yl(()=>({onFocus:()=>{p===-1&&m(0)},onKeyDown:y,onMouseDownCapture:()=>{u.current=!1,f(!0)},onMouseMove:()=>{u.current&&(u.current=!1)},onMouseLeave:()=>{u.current=!0,f(!1),d(-1)}}),[y,p,m,d]);return{focusVisible:u.current?p:-1,controlledHighlighting:s,highlightedIndex:p,setHighlightedIndex:d,listProps:D,setIgnoreFocus:f}};function Ql(e,t,o){return t==="ArrowUp"?o>0?o-1:o:o===null?0:o===e-1?o:o+1}import Nn,{useCallback as ec,useMemo as tc}from"react";var So=e=>e.type===At||!!e.props["data-group"],oc=e=>{if(Array.isArray(e)&&To(e[0]))return e[0]},rc=(e,t,o,r=!1)=>{let{props:{children:n}}=e;return{childWithId:Nn.cloneElement(e,{hasSeparator:r,id:`${t}`,key:t,children:o?oc(n):n}),grandChildren:o?n:void 0}},Pn=(e,t)=>{let o=ec(()=>{let a=(i,l=t,c={},s={})=>{let m=c[l]=[],d=0,u=!1;return Nn.Children.forEach(i,g=>{if(!To(g))if(g.type===Hn)u=!0;else{let f=So(g),p=`${l}-${d}`,{props:{action:x,options:y}}=g,{childWithId:D,grandChildren:I}=rc(g,p,f,u);m.push(D),I?a(I,p,c,s):s[p]={action:x,options:y},d+=1,u=!1}}),[c,s]};return a(e)},[t,e]),[r,n]=tc(()=>o(),[o]);return[r,n]};import{Fragment as dc,jsx as qe}from"react/jsx-runtime";var kn="vuuMenuList",Hn=()=>qe("li",{className:"vuuMenuItem-divider"}),At=()=>null,Ot=({children:e,idx:t,...o})=>qe("div",{...o,children:e}),On=({children:e})=>qe(dc,{children:e});On.displayName="MenuItemLabel";Ot.Label=On;var lc=e=>Rn.isValidElement(e)&&typeof e.type!="string"&&"displayName"in e.type?e.type.displayName:void 0,To=e=>lc(e)==="MenuItemLabel",cc=e=>e.props["data-icon"],Fn=({activatedByKeyboard:e,childMenuShowing:t,children:o,className:r,highlightedIdx:n,id:a,isRoot:i,listItemProps:l,onHighlightMenuItem:c,onActivate:s,onCloseMenu:m,onOpenMenu:d,...u})=>{let g=ac(a),f=ic(null),p=sc(()=>new Map,[]),x=M=>{var E;let h=(E=f.current)==null?void 0:E.querySelector(`:scope > [data-idx='${M}']`);h!=null&&h.id&&(s==null||s(h.id))},{focusVisible:y,highlightedIndex:D,listProps:I}=Dn({count:Rn.Children.count(o),highlightedIndex:n,onActivate:x,onHighlight:c,onOpenMenu:d,onCloseMenu:m}),v=t==null?y:-1;nc(()=>{var M;t===void 0&&e&&((M=f.current)==null||M.focus())},[e,t]);let L=()=>D===void 0||D===-1?void 0:p.get(D);function w(){let M={...l,role:"menuitem"},h=(O,b,S)=>b?[qe("span",{className:"vuuIconContainer","data-icon":S},"icon")].concat(O):O;function E(O,b,S,N){var q;let{children:P,className:k,"data-icon":C,id:T,hasSeparator:R,label:A,...F}=b.props,V=So(b),G=V&&t===T,z=G?`${g}-${T}`:void 0;O.push(qe(Ot,{...F,...M,...uc(T,S,(q=b.key)!=null?q:T,D,v,k,R),"aria-controls":z,"aria-haspopup":V||void 0,"aria-expanded":G||void 0,children:h(V&&A!=null?A:P,N,C)}))}let H=[];if(o.length>0){let O=o.some(cc);o.forEach((b,S)=>{E(H,b,S,O)})}return H}return qe("div",{...u,...I,"aria-activedescendant":L(),className:An(kn,r,{[`${kn}-childMenuShowing`]:t!==void 0}),"data-root":i||void 0,id:g,ref:f,role:"menu",children:w()})},uc=(e,t,o,r,n,a,i)=>({id:`menuitem-${e}`,key:o!=null?o:t,"data-idx":t,"data-highlighted":t===r||void 0,className:An("vuuMenuItem",a,{"vuuMenuItem-separator":i,focusVisible:n===t})});Fn.displayName="MenuList";var Kn=Fn;import{useCallback as pe,useMemo as mc,useRef as Ft,useState as pc}from"react";var Co=e=>e==null?void 0:e.closest("[data-idx],[aria-posinset]");var $n=(e,t,o)=>e.map((r,n)=>n===e.length-1?{...r,[o]:r[o]-t}:r),fc=(e,t)=>$n(e,t,"left"),gc=(e,t)=>$n(e,t,"top"),hc=(e,t)=>{let[o,r]=t.slice(-2),n=document.getElementById(`${e}-${r.id}`);if(n===null)throw Error(`useCascade.flipSides element with id ${r.id} not found`);let{width:a}=n.getBoundingClientRect();return t.map(i=>i===r?{...i,left:o.left-(a-2)}:i)},xc=(e,t)=>{let[{left:o,top:r}]=t.slice(-1),{offsetWidth:n,offsetTop:a}=e;return{left:o+n,top:a+r}},Vn=(e,t)=>{let o=e.lastIndexOf("-");return o>-1?e.slice(9,o):t},bc=e=>e.slice(9),Bn=({ariaExpanded:e,ariaHasPopup:t,id:o},r)=>{if(o.startsWith("menuitem"))return{hostMenuId:Vn(o,r),targetMenuId:bc(o),menuItemId:o,isGroup:t==="true",isOpen:e==="true"};throw Error(`getMenuItemDetails #${o} is not a menuitem`)},zn=({id:e,onActivate:t,onMouseEnterItem:o,position:{x:r,y:n}})=>{let[,a]=pc({}),i=Ft([{id:e,left:r,top:n}]),l=pe(w=>i.current.findIndex(M=>M.id===w)!==-1,[]),c=pe(w=>{let M=u.current[w];if(M===void 0)throw Error(`getOpenMenuState no entry for menu ${w}`);return M},[]),s=pe(w=>{i.current=w,a({})},[]),m=Ft(),d=Ft(),u=Ft({[e]:"no-popup"}),g=pe((w=e,M,h=null)=>{if(w===e&&h===null)s([{id:e,left:r,top:n}]);else{u.current[w]="popup-open";let E=document.getElementById(h);if(E!==null){let{left:H,top:O}=xc(E,i.current);s(i.current.concat({id:M,left:H,top:O}))}else throw Error(`openMenu no menuItem ${h}`)}},[e,r,n,s]),f=pe(w=>{if(w===e)s([]);else{let M=i.current.slice(),h=M.pop();u.current[h.id]="no-popup";let E=M.at(-1);E&&(u.current[E.id]="no-popup"),s(M)}},[e,s]),p=pe(w=>{let M=i.current.slice(),h=w.slice(9),{id:E}=M.at(-1);for(;M.length>1&&!h.startsWith(E);){let H=Vn(E,e);M.pop(),u.current[E]="no-popup",u.current[H]="no-popup",{id:E}=M[M.length-1]}M.length<i.current.length&&s(M)},[e,s]),x=pe(()=>{m.current&&(clearTimeout(m.current),m.current=void 0)},[]),y=pe((w,M,h)=>{x(),m.current=window.setTimeout(()=>{console.log(`scheduleOpen<timeout> opening menu ${M} from menu ${w} via menuitem ${h}`),p(h),u.current[w]="popup-open",u.current[M]="no-popup",g(w,M,h)},400)},[x,p,g]),D=pe((w,M,h)=>{console.log(`scheduleClose openMenuId ${M} from parent menu ${w} itemId ${h}`),u.current[M]="pending-close",d.current=window.setTimeout(()=>{p(h)},400)},[p]),I=pe(()=>{let{current:w}=i,[M]=w.slice(-1),h=document.getElementById(M.id);if(console.log(`handle render ${JSON.stringify(M)} tabindex ${h==null?void 0:h.tabIndex}`),h){let{right:E,bottom:H}=h.getBoundingClientRect(),{clientHeight:O,clientWidth:b}=document.body;if(E>b){let S=w.length>1?hc(e,w):fc(w,E-b);s(S)}else if(H>O){let S=gc(w,H-O);s(S)}typeof h.tabIndex=="number"&&(console.log(`focus el ${h.id}`),h.focus())}else console.log(`no element found with if ${M.id}`)},[e,s]),v=pe(w=>{let{hostMenuId:M,targetMenuId:h,menuItemId:E,isGroup:H,isOpen:O}=Bn(w,e),{current:{[M]:b}}=u;if(console.log(`trigger child menu ${E}`),b==="no-popup"&&H)u.current[M]="popup-pending",y(M,h,E);else if(b==="popup-pending"&&!H)u.current[M]="no-popup",clearTimeout(m.current),m.current=void 0;else if(b==="popup-pending"&&H)clearTimeout(m.current),y(M,h,E);else if(b==="popup-open")if(l(h)){let S=c(h);switch(console.log({menuStatus:S}),p(E),S){case"pending-close":clearTimeout(d.current),d.current=void 0,u.current[h]="no-popup",x();break;default:}}else{let[S,N]=i.current.slice(-2);S.id===M&&u.current[N.id]!=="pending-close"?(D(M,N.id,E),H&&!O&&y(M,h,E)):S.id===M&&H&&E!==N.id&&u.current[N.id]==="pending-close"||H?y(M,h,E):u.current[N.id]!=="pending-close"&&p(E)}b==="pending-close"&&(x(),clearTimeout(d.current),d.current=void 0,u.current[M]="popup-open")},[x,p,c,l,e,D,y]),L=mc(()=>({onMouseEnter:w=>{let M=Co(w.target);v(M),o(w,M.id)},onClick:w=>{let M=Co(w.target),{isGroup:h,menuItemId:E}=Bn(M,e);h?v(M):t(E)}}),[t,o,e,v]);return{closeMenu:f,handleRender:I,listItemProps:L,openMenu:v,openMenus:i.current}};import{useId as Ic}from"@vuu-ui/vuu-layout";import{Fragment as Sc,jsx as _n}from"react/jsx-runtime";import{createElement as yc}from"react";var vc=()=>{},Mo=({activatedByKeyboard:e,children:t,className:o,id:r,onClose:n=()=>{},position:a={x:0,y:0},style:i,...l})=>{let c=wo(n);c.current=n;let s=Ic(r),m=wo(vc),[d,u]=Pn(t,s),g=wo(e),f=Un(()=>{g.current=!1},[]);console.log({actions:u,menus:d});let p=Un(E=>{let H=E.slice(9),{action:O,options:b}=u[H];m.current(s),n({type:"menu-action",menuId:O,options:b})},[u,s,n]),{closeMenu:x,listItemProps:y,openMenu:D,openMenus:I,handleRender:v}=zn({id:`${s}`,onActivate:p,onMouseEnterItem:f,position:a});m.current=x;let L=()=>{console.log("handleCloseMenu"),g.current=!0,x()},w=()=>{},M=I.length-1,h=E=>{if(!(E>=M)){let{id:H}=I[E+1];return H}};return _n(Sc,{children:I.map(({id:E,left:H,top:O},b,S)=>{let N=h(b);return _n(lt,{x:H,y:O,onRender:v,children:yc(Kn,{...l,activatedByKeyboard:g.current,childMenuShowing:N,className:o,id:E,isRoot:b===0,key:b,listItemProps:y,onActivate:p,onHighlightMenuItem:w,onCloseMenu:L,onOpenMenu:D,style:i,tabIndex:b===S.length-1?0:void 0},d[E])},b)})})};Mo.displayName="ContextMenu";import{createContext as Tc,useCallback as Zy,useMemo as Jy}from"react";import{jsx as Yy}from"react/jsx-runtime";var Wn=Tc(null);import{isGroupMenuItemDescriptor as Lc}from"@vuu-ui/vuu-utils";import Dc from"classnames";import{cloneElement as Nc,useCallback as Do,useContext as Pc}from"react";import Cc from"classnames";import rS,{createElement as Gn,useEffect as aS,useRef as lS}from"react";import Eo from"react-dom";var Lo=!1,le=[],qn=e=>(e==null?void 0:e.type)==="menu-action",Zn=e=>(e==null?void 0:e.type)==="click-away";function Jn(e){if(e.key==="Esc"){if(le.length)Yn();else if(Lo){let t=document.body.querySelector(".vuuDialog");t&&Eo.unmountComponentAtNode(t)}}}function jn(e){if(le.length){console.log("Popup.outsideClickHandler ... ");let t=document.body.querySelectorAll(".vuuPopup");for(let o=0;o<t.length;o++)if(t[o].contains(e.target)){console.log(" ... its ok, he's one of us");return}console.log(" ... close all"),Yn({mouseEvt:e,type:"click-away"})}}function Yn(e){if(le.length===1)X.hidePopup(e,"anon","all");else if(le.length){let t=document.body.querySelectorAll(".vuuPopup");for(let o=0;o<t.length;o++)Eo.unmountComponentAtNode(t[o]);Xn("*")}}function wc(e){le.indexOf(e)===-1&&(le.push(e),Lo===!1&&(window.addEventListener("keydown",Jn,!0),window.addEventListener("click",jn,!0)))}function Xn(e){if(le.length){if(e==="*")le.length=0;else{let t=le.indexOf(e);t!==-1&&le.splice(t,1)}le.length===0&&Lo===!1&&(window.removeEventListener("keydown",Jn,!0),window.removeEventListener("click",jn,!0))}}var Mc=({children:e,position:t,style:o})=>{let r=Cc("hwPopup","hwPopupContainer",t);return Gn("div",{className:r,style:o},e)},Ec=1,X=class{static showPopup({group:t="all",name:o="anon",left:r=0,position:n="",right:a="auto",top:i=0,width:l="auto",component:c}){if(!c)throw Error("PopupService showPopup, no component supplied");typeof c.props.onClose=="function"?X.onClose=c.props.onClose:X.onClose=void 0,wc(o),document.addEventListener("keydown",X.escapeKeyListener,!0);let s=document.body.querySelector(".vuuPopup."+t);s===null&&(s=document.createElement("div"),s.className="vuuPopup "+t,document.body.appendChild(s));let m={width:l};Dt(Gn(Mc,{key:Ec++,position:n,style:m},c),s,r,i,()=>{X.keepWithinThePage(s,a)})}static escapeKeyListener(t){t.key==="Escape"&&(console.log("%cESC listener","color:green;font-weight:bold;"),X.hidePopup())}static hidePopup(t,o="anon",r="all"){var n;if(console.log("PopupService.hidePopup",{reason:t}),le.indexOf(o)!==-1){Xn(o);let a=document.body.querySelector(`.vuuPopup.${r}`);a&&Eo.unmountComponentAtNode(a)}document.removeEventListener("keydown",X.escapeKeyListener,!0),console.log(`PopupService will call onClose if found ${typeof(X==null?void 0:X.onClose)}`),(n=X==null?void 0:X.onClose)==null||n.call(X,t)}static keepWithinThePage(t,o="auto"){let r=t.querySelector(".vuuPopupContainer > *");if(r){let{top:n,left:a,width:i,height:l,right:c}=r.getBoundingClientRect(),s=window.innerWidth,d=window.innerHeight-(n+l);d<0&&(r.style.top=Math.round(n)+d+"px");let u=s-(a+i);if(u<0&&(r.style.left=Math.round(a)+u+"px"),typeof o=="number"&&o!==c){let g=o-c;r.style.left=a+g+"px"}}}};import{jsx as No}from"react/jsx-runtime";var Qn=(e,t)=>{let o=Pc(Wn),[r,n,a]=Ge(),i=Do((s,m,d)=>{let u=[];for(let g of s)u=u.concat(g(m,d));return u},[]),l=Do((s,m,{ContextMenuProps:d,contextMenu:u,...g})=>{if(s.stopPropagation(),s.preventDefault(),u)return kc(s,u);let f=[];if(e&&f.push(e),o&&Array.isArray(o==null?void 0:o.menuBuilders)&&o.menuBuilders.length>0&&f.push(...o.menuBuilders),f.length>0){let p=i(f,m,g),x=y=>(t==null?void 0:t(y))===!0?!0:o==null?void 0:o.menuActionHandler(y);p.length&&x&&(console.log(`showContextMenu ${m}`,{options:g}),Rc(s,p,x,{...d,className:Dc(d==null?void 0:d.className,r,n),"data-mode":a}))}else console.warn("useContextMenu, no menuBuilders configured. These should be supplied via the ContextMenuProvider(s)")},[i,o,a,n,t,e,r]),c=Do(()=>{console.log("hide comnytext menu")},[]);return[l,c]},Hc={},kc=(e,t)=>{let o={x:e.clientX,y:e.clientY};X.showPopup({focus:!0,left:0,top:0,component:Nc(t,{position:o})})},Rc=(e,t,o,{position:r,...n}=Hc)=>{let a=s=>{let m=(d,u)=>Lc(d)?No(At,{label:d.label,children:d.children.map(m)},u):No(Ot,{action:d.action,"data-icon":d.icon,options:d.options,children:d.label},u);return s.map(m)},i=s=>{var m;qn(s)&&(o(s),X.hidePopup()),(m=n==null?void 0:n.onClose)==null||m.call(n,s)},l=r!=null?r:{x:e.clientX,y:e.clientY},c=No(Mo,{...n,onClose:i,position:l,children:a(t)});X.showPopup({left:0,top:0,component:c,focus:!0})};import{useCallback as es,useRef as ts,useState as Ac}from"react";import Oc from"classnames";import{Button as Fc}from"@salt-ds/core";import{useId as Kc}from"@vuu-ui/vuu-layout";import{jsx as $c}from"react/jsx-runtime";var os="vuuPopupMenu",Bc=e=>{if(e){let{bottom:t,left:o}=e.getBoundingClientRect();return{x:o,y:t+6}}},rs=({className:e,icon:t="more-vert",id:o,menuActionHandler:r,menuBuilder:n,menuLocation:a="header",menuOptions:i,onMenuClose:l,tabIndex:c=0,...s})=>{let m=ts(null),d=ts(!1),[u,g]=Ac(!1),f=Kc(o),[p]=Qn(n,r),x=es(D=>{console.log("PopupMenu popup closed",{reason:D}),g(!1),Zn(D)?D.mouseEvt.target===m.current&&(d.current=!0):requestAnimationFrame(()=>{var I;l==null||l(),c!==-1&&((I=m.current)==null||I.focus())})},[l,c]),y=es(D=>{d.current?d.current=!1:(g(!0),p(D,a,{ContextMenuProps:{id:`${f}-menu`,onClose:x,position:Bc(m.current)},...i}))},[x,f,a,i,p]);return $c(Fc,{...s,"aria-controls":`${f}-menu-root`,"aria-expanded":u,"aria-haspopup":"menu",className:Oc(os,e,{[`${os}-open`]:u}),"data-icon":t,id:f,onClick:y,ref:m,tabIndex:c,variant:"secondary"})};import{jsx as ns}from"react/jsx-runtime";var _c=e=>e.split(" ").map(t=>`vuuDraggable-${t}`),Kt=zc(function({wrapperClassName:t,element:o,onTransitionEnd:r,style:n,scale:a=1},i){let l=Uc(s=>{s&&(s.innerHTML="",s.appendChild(o),a!==1&&(s.style.transform=`scale(${a},${a})`))},[o,a]),c=Vc(i,l);return ns(lt,{children:ns("div",{className:xt("vuuDraggable",..._c(t)),ref:c,onTransitionEnd:r,style:n})})}),Po=e=>{let t=document.createElement("div");return t.className="vuuDraggable-spacer",e&&t.addEventListener("transitionend",()=>{e.current=!1}),t},ss=()=>{let e=document.createElement("div");return e.className="vuuDraggable-dropIndicatorPosition",e},is=e=>{let t=document.createElement("div");return t.className="vuuDraggable-dropIndicator",e&&t.addEventListener("transitionend",()=>{e.current=!1}),t};var ls=()=>{let e=as(0),t=as(!1),o=Wc(()=>[Po(t),Po()],[]),r=ct(()=>o.forEach(c=>c.remove()),[o]),n=ct((c,s="width")=>{let[m,d]=o;e.current=requestAnimationFrame(()=>{t.current=!0,m.style.cssText=`${s}: 0px`,d.style.cssText=`${s}: ${c}px`,o[0]=d,o[1]=m})},[o]),a=ct(()=>{e.current&&(cancelAnimationFrame(e.current),e.current=0)},[]),i=ct((c,s,m,d=!1,u="static",g="horizontal")=>{if(s){let f=g==="horizontal"?"width":"height",[p,x]=o;if(a(),d)t.current?(r(),p.style.cssText=`${f}: ${m}px`,x.style.cssText=`${f}: 0px`,u==="fwd"?(s.element.before(p),s.element.after(x)):(s.element.after(p),s.element.before(x))):u==="fwd"?s.element.after(x):s.element.before(x),n(m,f);else if(u==="static")p.style.cssText=`${f}: ${m}px`,s.element.before(p);else throw Error("useDragDisplacers currently only supports noTransition for static displacement");u!=="static"&&Xt(c,u)}},[n,a,r,o]),l=ct((c,s,m,d=!1,u="static",g="horizontal")=>{let f=g==="horizontal"?"width":"height",[p,x]=o;a(),d?(t.current?(r(),p.style.cssText=`${f}: ${m}px`,x.style.cssText=`${f}: 0px`,s.element.before(p),s.element.after(x)):u==="fwd"?s.element.after(x):s.element.before(x),n(m,f)):(p.style.cssText=`${f}: ${m}px`,s.element.after(p)),u!=="static"&&Xt(c,u)},[n,a,r,o]);return{displaceItem:i,displaceLastItem:l,clearSpacers:r}};var cs=({draggableRef:e,onDrop:t,orientation:o="horizontal",containerRef:r,itemQuery:n="*",selected:a,viewportRange:i})=>{let l=Ae(),c=Ae(!1),s=Ae(-1),m=Ae([]),d=Ae(!1),[u,g]=qc(!1),{clearSpacers:f,displaceItem:p,displaceLastItem:x}=ls(),y=Ae(),D=`:is(${n}${ht}${Yo},.vuuOverflowContainer-OverflowIndicator)`,I=b=>m.current.findIndex(S=>S.id===b.id),v=Ae();v.current=i;let L=ut(()=>{f()},[f]),w=ut((b,S,N)=>{let{current:P}=r,{current:k}=y;if(P&&k){m.current=$e(P,o,D,v.current);let{size:C}=k,R=s.current+C/2,{current:A}=m,F=Ve(A,R,"fwd");if(F){let G=I(F),z=A[G];N&&b==="fwd"?x(A,A[A.length-1],C,!1,"static",o):p(A,z,C,!0,"static",o)}}},[r,p,x,D,o]),M=ut(b=>{let N=b.target.closest(n);N.ariaSelected&&Array.isArray(a)&&a.length>1&&console.log("its a selected element, and we have a multi select");let{current:P}=r;if(P&&N){let{SCROLL_SIZE:k,CLIENT_SIZE:C}=se(o),{id:T}=N,{[k]:R,[C]:A}=P;c.current=R>A;let F=m.current=$e(P,o,D,i,T);console.log({dropTargets:F});let V=Qe(F),G=F[V];G&&P&&(y.current=G,(G.isLast?x:p)(F,G,G.size,!1,"static",o))}},[r,p,x,D,n,o,a,i]),[h,E]=Gc(()=>{let b=!1;return[P=>{if(!b){b=!0;let k=P.element.querySelector(".vuuPopupMenu");if(k){let C=new MouseEvent("click",{view:window,bubbles:!0,cancelable:!0});k.dispatchEvent(C)}}},P=>{if(b){b=!1;let k=P.element.querySelector(".vuuPopupMenu");if(k){let C=new MouseEvent("click",{view:window,bubbles:!0,cancelable:!0});k.dispatchEvent(C)}}}]},[]),H=ut((b,S)=>{let{current:N}=y;if(N&&e.current&&r.current){s.current=b;let{current:P}=m,k=Ve(P,b,S);if(k&&!k.isDraggedItem)if(k.isOverflowIndicator)g(d.current=!0),h(k);else{let{size:C}=N;(I(k)===P.length-1?x:p)(P,k,C,!0,S,o);let A=P.at(-1);E(A),g(d.current=!1)}l.current=S}},[r,p,x,e,E,o,h]),O=ut(()=>{var P;f();let{current:b}=m,S=Qe(b),N=b[S];if(N&&(l.current=void 0,d.current?t(N.index,-1):t(N.index,S)),g(!1),r.current){let k=(P=r.current)==null?void 0:P.scrollTop;S<b.length&&(r.current.scrollTop=k)}},[f,r,t]);return{beginDrag:M,drag:H,drop:O,handleScrollStart:L,handleScrollStop:w,revealOverflowedItems:u}};import{useCallback as dt,useRef as ge,useState as ms}from"react";import{useCallback as us,useMemo as Zc}from"react";var ds=()=>{let e=Zc(()=>ss(),[]),t=us(()=>e.remove(),[e]);return{positionDropIndicator:us((r,n="end")=>(n==="end"?r.element.after(e):r.element.before(e),e),[e]),clearSpacer:t}};import{jsx as Yc}from"react/jsx-runtime";var Jc=':not([data-overflowed="true"])',jc=':not([aria-hidden="true"])',ps=({draggableRef:e,onDrop:t,orientation:o="horizontal",containerRef:r,itemQuery:n="*",selected:a,viewportRange:i})=>{let l=ge(),c=ge(null),s=ge(null),m=ge(""),d=ge(!1),u=ge(-1),g=ge([]),f=ge(!1),[p,x]=ms(!1),[y,D]=ms(),{clearSpacer:I,positionDropIndicator:v}=ds(),L=ge(),w=`:is(${n}${Jc}${jc},[data-overflow-indicator])`,M=P=>g.current.findIndex(k=>k.id===P.id),h=(P,k,C)=>{P.start+=k,P.mid+=k,P.end+=k,typeof C=="number"&&(P.currentIndex+=C)},E=ge();E.current=i;let H=dt(()=>{I()},[I]),O=dt((P,k,C)=>{let{current:T}=r,{current:R}=L;if(T&&R){g.current=$e(T,o,w,E.current);let{size:A}=R,V=u.current+A/2,{current:G}=g,z=Ve(G,V,"fwd");z&&v(C&&P==="fwd"?G[G.length-1]:z,"start")}},[r,v,w,o]),b=dt(P=>{let C=P.target.closest(n);C.ariaSelected&&Array.isArray(a)&&a.length>1&&console.log("its a selected element, and we have a multi select");let{current:T}=r;if(T&&C){let{SCROLL_SIZE:R,CLIENT_SIZE:A}=se(o),{id:F}=C,{[R]:V,[A]:G}=T;d.current=V>G;let z=g.current=$e(T,o,w,i),q=Qo(z,F);if(q&&T){let K=M(q);er(z,K),L.current=q;let{current:B}=E;if(B!=null&&B.atEnd)for(let W=0;W<z.length;W++)h(z[W],q.size);for(let W=K;W<z.length;W++)h(z[W],-q.size,-1);let[$,_]=q.isLast?[z[z.length-1],"end"]:[z[K],"start"];s.current=$,m.current=_;let J=v($,_),{top:U,left:Z,width:j}=J.getBoundingClientRect(),Y={top:q.isLast?B!=null&&B.atEnd&&!B.atStart?U+q.size-2:U-2:U-q.size-2,left:Z,width:j,height:2};D(Yc(Kt,{wrapperClassName:"dropIndicatorContainer",style:Y,ref:c,element:is()}))}}},[n,a,r,o,w,i,v]),S=dt((P,k)=>{let{current:C}=s,{current:T}=L;if(T&&e.current&&r.current){let R=o==="horizontal"?"left":"top";u.current=P;let{current:A}=g,F=Ve(A,P,k);if(F&&F.index!==(C==null?void 0:C.index)){if(F.isOverflowIndicator)x(f.current=!0);else if(c.current){if(M(F)===A.length-1){let G=A[A.length-1],q=v(G,"start").getBoundingClientRect();c.current.style[R]=`${q.top}px`}else{let z=v(F,"start").getBoundingClientRect();c.current.style[R]=`${z.top}px`}x(f.current=!1)}s.current=F,l.current=k}}},[e,r,o,v]),N=dt(()=>{I();let{current:P}=L,{current:k}=s,{current:C}=m,{current:T}=E;if(P&&T&&k){let{index:R}=P,A=C==="start",{index:F,currentIndex:V}=k;s.current=null,l.current=void 0,f.current?t(R,-1):R<F?t(R,A?V:V+1):t(R,A?F:F+1),D(void 0)}x(!1)},[I,t]);return{beginDrag:b,drag:S,drop:N,dropIndicator:y,handleScrollStart:H,handleScrollStop:O,revealOverflowedItems:p}};import{useCallback as he,useLayoutEffect as Xc,useRef as ce,useState as Qc}from"react";import{useCallback as fs,useRef as Bt}from"react";var gs=({containerRef:e,onScrollingStopped:t,orientation:o="vertical"})=>{let r=Bt(null),n=Bt(!1),a=Bt(0),i=Bt("fwd"),l=fs((s=!1)=>{console.log("[useAutoScroll] stopScrolling"),r.current!==null&&(clearTimeout(r.current),r.current=null),n.current=!1,t==null||t(i.current,a.current,s)},[t]),c=fs((s,m,d=30)=>{let{current:u}=e;if(u){let{SCROLL_POS:g,SCROLL_SIZE:f,CLIENT_SIZE:p}=se(o),{[g]:x,[f]:y,[p]:D}=u,I=s==="fwd"?y-D-x:x,v=Math.min(I,d);s==="fwd"?(i.current="fwd",u[g]=a.current=x+v):(i.current="bwd",u[g]=a.current=x-v),v===I?l(!0):(n.current=!0,r.current=window.setTimeout(()=>{c(s,m,d)},100))}},[e,o,l]);return{isScrolling:n,startScrolling:c,stopScrolling:l}};import{jsx as iu}from"react/jsx-runtime";var eu={beginDrag:()=>{},drag:()=>{},draggableRef:{current:null},drop:()=>{},isDragging:!1,isScrolling:!1,handleScrollStart:()=>{},handleScrollStop:()=>{},revealOverflowedItems:!1},hs={start:0,end:1e3,contraStart:0,contraEnd:1e3},tu=()=>eu,ou=3,ru=(e,t)=>e.closest(t),nu=e=>e.dataset.index==="overflow"&&e.parentElement!==null&&e.parentElement.classList.contains("overflowed"),su=(e,t)=>{let o=`:is(${t}${ht},.vuuOverflowContainer-OverflowIndicator)`,n=Array.from(e.querySelectorAll(o)).pop();return[n,nu(n)]},xs=({allowDragDrop:e,containerRef:t,draggableClassName:o,itemQuery:r="*",onDragStart:n,onDrop:a,onDropSettle:i,orientation:l,...c})=>{let s=ce({start:0,end:0,contraStart:0,contraEnd:0}),[m,d]=Qc({draggable:void 0,draggedItemIndex:-1,isDragging:!1}),u=ce(null),g=ce(),f=ce(null),p=ce(!1),x=ce({x:0,y:0}),y=ce({x:0,y:0}),D=ce({x:0,y:0}),I=ce(null),v=ce(-1),L=ce(-1),w=ce(),{isDragSource:M,isDropTarget:h,register:E}=jo(c.id);c.id&&(M||h)&&E(c.id);let H=he(()=>{var j;let{current:U}=L,Z=(j=t.current)==null?void 0:j.querySelector(`${r}[data-index="${U}"]`);Z&&Z.classList.remove("vuuDropTarget-settling"),L.current=-1,i==null||i(U),d(Y=>({...Y,draggable:void 0}))},[t,r,i]),O=he(U=>{if(t.current){let{POS:Z,SCROLL_POS:j,SCROLL_SIZE:Y,CLIENT_SIZE:W}=se(l),{[j]:ee,[Y]:be,[W]:ue}=t.current,ye=be-ue,Se=ee<ye,Le=s.current.end,Te=ee>0&&U-x.current[Z]<=s.current.start,Ce=Se&&U-x.current[Z]>=Le;return Te?"bwd":Ce?"fwd":""}},[t,l]),b=e===!0||e==="natural-movement"?cs:e==="drop-indicator"?ps:tu,S=he((U,Z,j)=>{var Y;(Y=w.current)==null||Y.call(w,U,Z,j)},[]),{isScrolling:N,startScrolling:P,stopScrolling:k}=gs({containerRef:t,onScrollingStopped:S,orientation:l}),C=he((U,Z)=>{v.current=Z,a==null||a(U,Z),L.current=Z},[a]),{beginDrag:T,drag:R,drop:A,handleScrollStart:F,handleScrollStop:V,...G}=b({...c,containerRef:t,draggableRef:u,isDragSource:M,isDropTarget:h,itemQuery:r,onDrop:C,orientation:l});w.current=V;let z=he(U=>{let{CLIENT_POS:Z,CONTRA_CLIENT_POS:j,CONTRA_POS:Y,POS:W}=se(l),{clientX:ee,clientY:be}=U,{[Z]:ue,[j]:ye}=U,Se=y.current[W],Le=y.current[Y],Te=Math.abs(Se-ue);if((M?Math.abs(Le-ye):0)-Te>5&&(s.current=hs),y.current.x=ee,y.current.y=be,s.current===hs&&u.current){let we=y.current.x-x.current.x,fe=y.current.y-x.current.y;u.current.style.top=`${fe}px`,u.current.style.left=`${we}px`}else if(Te>0&&u.current){let we=Se<ue?"fwd":"bwd",fe=O(ue),Je=y.current[W]-x.current[W];if(fe&&p.current&&!N.current?(F(),P(fe,1)):!fe&&N.current&&k(),!N.current){let Be=Math.round(Math.max(s.current.start,Math.min(s.current.end,Je))),de=l==="horizontal"?"left":"top";u.current.style[de]=`${Be}px`,R(Be,we)}}},[R,u,O,F,M,N,l,P,k]),q=he(()=>{document.removeEventListener("mousemove",z,!1),document.removeEventListener("mouseup",q,!1),I.current=u.current,A(),d(U=>({...U,draggedItemIndex:-1,isDragging:!1})),g.current=void 0},[z,u,A]),K=he(U=>{let{clientX:Z,clientY:j,target:Y}=U,W=ru(Y,r),{current:ee}=t;if(ee&&W){let{CONTRA:be,CONTRA_END:ue,DIMENSION:ye,END:Se,SCROLL_SIZE:Le,CLIENT_SIZE:Te,START:Ce}=se(l);g.current=W;let{[Le]:we,[Te]:fe}=ee;p.current=we>fe;let[Je,Be]=su(ee,r),de=ee.getBoundingClientRect(),De=W.getBoundingClientRect(),je=De[ye],{[Ce]:Zt,[Se]:Jt}=Je.getBoundingClientRect();x.current.x=Z-De.left,x.current.y=j-De.top,s.current.start=de[Ce],s.current.end=Be?Math.max(Zt,de.right-je):p.current?de[Ce]+de[ye]-je:Jt-je,s.current.contraStart=de[be],s.current.contraEnd=de[ue],T(U);let{dataset:{index:jt="-1"}}=W;d({isDragging:!0,draggable:iu(Kt,{element:Xo(W),onTransitionEnd:H,ref:u,style:tr(De,de),wrapperClassName:o}),draggedItemIndex:parseInt(jt)}),n==null||n(),document.addEventListener("mousemove",z,!1),document.addEventListener("mouseup",q,!1)}},[T,t,z,q,o,u,r,n,l,H]),B=he(U=>{let{CLIENT_POS:Z,POS:j}=se(l),{[Z]:Y}=U;Math.abs(Y-D.current[j])>ou&&t.current&&(f.current&&(window.clearTimeout(f.current),f.current=null),document.removeEventListener("mousemove",B),document.removeEventListener("mouseup",$,!1),K(U))},[t,T,l]),$=he(()=>{f.current&&(window.clearTimeout(f.current),f.current=null),document.removeEventListener("mousemove",B,!1),document.removeEventListener("mouseup",$,!1)},[B]),_=he(U=>{console.log("useDragDropNext onMouseDown");let{current:Z}=t;if(Z&&!U.defaultPrevented){let{clientX:j,clientY:Y}=U;y.current.x=D.current.x=j,y.current.y=D.current.y=Y,document.addEventListener("mousemove",B,!1),document.addEventListener("mouseup",$,!1),U.persist(),f.current=window.setTimeout(()=>{document.removeEventListener("mousemove",B,!1),document.removeEventListener("mouseup",$,!1),K(U.nativeEvent)},500)}},[t,K,B,$]),{current:J}=I;return Xc(()=>{if(J&&t.current){let U=v.current,Z=t.current.querySelector(`${r}[data-index="${U}"]`);Z?(Z.classList.add("vuuDropTarget-settling"),requestAnimationFrame(()=>{let{top:j,left:Y}=Z.getBoundingClientRect(),{top:W,left:ee}=J.getBoundingClientRect();ee!==Y||W!==j?(J.classList.add("vuuDraggable-settling"),J.style.top=`${j}px`,J.style.left=`${Y}px`):H()})):console.log(`dont have the dropped item (at ${U})`),I.current=null}},[t,r,J,H]),{...G,...m,isScrolling:N,onMouseDown:e?_:void 0}};import{useCallback as bs,useLayoutEffect as au,forwardRef as lu,useRef as Ho}from"react";import{Input as cu,useControlled as Is}from"@salt-ds/core";import{jsx as vs}from"react/jsx-runtime";var ko="vuuEditableLabel",ys=lu(function({className:t,defaultEditing:o,defaultValue:r,editing:n,onChange:a,onEnterEditMode:i,onExitEditMode:l,value:c,...s},m){let d=Ho(null),u=Ho(!1),[g,f]=Is({controlled:c,default:r!=null?r:"",name:"EditableLabel",state:"value"}),[p,x]=Is({controlled:n,default:o!=null?o:!1,name:"EditableLabel",state:"editing"}),y=bs(H=>{x(u.current=H)},[]),D=Ho(g);au(()=>{p&&d.current!==null&&(d.current.select(),d.current.focus())},[p,d]);let I=bs(()=>{y(!0),i&&i()},[i,y]),v=({cancelEdit:H=!1,allowDeactivation:O=!1}={})=>{y(!1);let b=D.current;b!==g&&(H?f(b):D.current=g),l&&l(b,g,O,H)},L=H=>{let{value:O}=H.target;f(O),a&&a(O)},w=()=>{I()},M=()=>{u.current&&v({allowDeactivation:!0})},h=H=>{p&&H.key==="Enter"?(H.stopPropagation(),v()):H.key==="ArrowRight"||H.key==="ArrowLeft"?H.stopPropagation():H.key==="Escape"&&v({cancelEdit:!0})},E=xt(ko,t,{[`${ko}-editing`]:p});return vs("div",{...s,className:E,onDoubleClick:w,"data-text":g,ref:m,children:p?vs(cu,{inputProps:{className:`${ko}-input`},value:g,onBlur:M,onChange:L,onKeyDown:h,inputRef:d,style:{padding:0},textAlign:"left",variant:"secondary"}):g})});import{asReactElements as Lu,OverflowContainer as Du,useId as Nu}from"@vuu-ui/vuu-layout";import{Button as Pu}from"@salt-ds/core";import Hu from"classnames";import ku,{useMemo as Ru,useRef as Au}from"react";import{useCallback as oe,useRef as Cu}from"react";var Ss=e=>typeof e=="object"&&e!==null&&"tabIndex"in e&&typeof e.tabIndex=="number",Ts=e=>({label:"Close",location:"tab",action:"close-tab",options:e}),Cs=e=>({label:"Rename",location:"tab",action:"rename-tab",options:e});var uu=e=>{if(e){let t=parseInt(e.dataset.index||"");if(!isNaN(t))return t}return-1},ws=(e,t)=>{if(e){let o=e.querySelector(`[data-index]:has(${t})`);return uu(o)}return-1},Ro=e=>ws(e,'[aria-selected="true"]'),Ms=e=>ws(e,".vuuEditableLabel-editing");import{isValidNumber as Ao,MEASURES as du}from"@vuu-ui/vuu-utils";import{useCallback as Oo,useMemo as mu,useRef as Es}from"react";var Ls=(e,t,o="horizontal")=>{let r=Es(!1),n=Oo(()=>{r.current=!0},[]),a=Oo(()=>{r.current=!1},[]),i=Oo(()=>{var c,s;(c=e.current)==null||c.style.setProperty("--tab-thumb-transition","none"),(s=e.current)==null||s.removeEventListener("transitionend",i)},[e]),l=Es(-1);return mu(()=>{var m,d;let c=0,s=0;if(l.current!==-1){let u=(m=e.current)==null?void 0:m.querySelector(".vuuTab-selected"),g=(d=e.current)==null?void 0:d.querySelector(`[data-index="${t}"] .vuuTab`),{positionProp:f,sizeProp:p}=du[o];if(u&&g&&!r.current){let{[f]:x,[p]:y}=u.getBoundingClientRect(),{[f]:D}=g.getBoundingClientRect();if(Ao(x)&&Ao(D)&&Ao(y)){console.log({orientation:o,positionProp:f,oldPosition:x,newPosition:D}),c=x-D,s=y;let v=Math.abs(c/(o==="horizontal"?1100:700));requestAnimationFrame(()=>{var L,w,M,h;(L=e.current)==null||L.style.setProperty("--tab-thumb-offset","0px"),(w=e.current)==null||w.style.setProperty("--tab-thumb-size","100%"),(M=e.current)==null||M.style.setProperty("--tab-thumb-transition",`all ${v}s ease`),(h=e.current)==null||h.addEventListener("transitionend",i)})}}}return l.current=t,r.current?{containerStyle:{"--tab-thumb-offset":"0px","--tab-thumb-size":"100%"},resumeAnimation:a,suspendAnimation:n}:{containerStyle:{"--tab-thumb-offset":`${c}px`,"--tab-thumb-size":s?`${s}px`:void 0},resumeAnimation:a,suspendAnimation:n}},[t,e,o,i,a,n])};import{useControlled as pu}from"@salt-ds/core";import{getFocusableElement as fu}from"@vuu-ui/vuu-utils";import{useCallback as xe,useRef as Fo,useState as Ds}from"react";import{ArrowDown as ks,ArrowUp as gu,ArrowLeft as hu,ArrowRight as xu,Home as Ns,End as Ps}from"@vuu-ui/vuu-utils";var Rs={horizontal:{[Ns]:"start",[Ps]:"end",[hu]:"bwd",[xu]:"fwd"},vertical:{[Ns]:"start",[Ps]:"end",[gu]:"bwd",[ks]:"fwd"}},bu=(e,t="horizontal")=>Rs[t][e]!==void 0,Iu=e=>e===ks;function Hs(e,t,o){return t==="start"?0:t==="end"?e-1:t==="bwd"?o>0?o-1:o:o===null?0:o===e-1?o:o+1}var vu=e=>e!==null&&!e.classList.contains("wrapped"),$t=(e,t)=>e?e.querySelector(`[data-index="${t}"]`):null,As=({containerRef:e,defaultHighlightedIdx:t=-1,highlightedIdx:o,keyBoardActivation:r,orientation:n,selectedIndex:a=0})=>{let i=r==="manual",l=Fo(!1),c=Fo(-1),[s,m]=Ds(!1),[,d]=Ds({}),[u,g]=pu({controlled:o,default:t,name:"UseKeyboardNavigation"}),f=xe(b=>{g(c.current=b)},[g]),p=Fo(!1),x=xe((b,S=!1,N,P=70)=>{f(b),N===!0&&!p.current&&(p.current=!0);let k=()=>{let C=$t(e.current,b);if(C){let T=fu(C);T==null||T.focus()}};S?k():setTimeout(k,P)},[e,f]),y=b=>{if(c.current===-1&&b.target.tabIndex!==-1){let S=Ms(e.current);S!==-1?requestAnimationFrame(()=>{f(S)}):setTimeout(()=>{c.current===-1&&a!==null&&f(a)},200)}},D=xe(()=>{var b,S;return(S=(b=e.current)==null?void 0:b.querySelectorAll("[data-index]").length)!=null?S:0},[e]),I=xe((b="fwd",S)=>{let N=D(),k=Hs(N,b,typeof S=="number"?S:N),C=b==="start"?"fwd":b==="end"?"bwd":b;for(;(C==="fwd"&&k<N||C==="bwd"&&k>0)&&!vu($t(e.current,k));){let T=Hs(N,C,k);if(T===k)break;k=T}return k},[e,D]),v=xe((b,S=!1)=>{let N=Rs[n][b.key],P=I(N,u);P!==u?i&&x(P,!0):S&&d({})},[u,i,I,x,n]),L=xe(()=>{let b=$t(e.current,u);return b?b.querySelector(".vuuPopupMenu")!=null:!1},[e,u]),w=xe(()=>{let b=$t(e.current,u),S=b==null?void 0:b.querySelector(".vuuPopupMenu");if(S){let N=new MouseEvent("click",{view:window,bubbles:!0,cancelable:!0});S.dispatchEvent(N)}return!1},[e,u]),M=xe(b=>{D()>0&&bu(b.key,n)?(b.preventDefault(),p.current?v(b):(p.current=!0,v(b,!0))):Iu(b.key)&&L()&&w()},[w,D,L,v,n]),h=(b,S)=>{f(S)},E=xe(()=>{s||(m(!0),l.current?l.current=!1:p.current=!0)},[s]),H=xe(()=>{s||(l.current=!0),p.current=!1},[s]);return{containerProps:{onBlur:b=>{let S=b.target.closest(".vuuTabstrip"),N=b.relatedTarget;S&&!(S!=null&&S.contains(N))&&(f(-1),m(!1))},onMouseDownCapture:H,onFocus:E,onMouseLeave:()=>{p.current=!0,f(-1),l.current=!1}},focusVisible:p.current?u:-1,focusIsWithinComponent:s,highlightedIdx:u,focusTab:x,onClick:h,onFocus:y,onKeyDown:M,setHighlightedIdx:f}};import{useControlled as yu}from"@salt-ds/core";import{useCallback as Vt}from"react";var Su=["Enter"," "],Tu=e=>e&&e.matches('[class*="vuuTab "]'),Os=({defaultSelected:e,highlightedIdx:t,onSelectionChange:o,selected:r})=>{let[n,a,i]=yu({controlled:r,default:e!=null?e:0,name:"Tabstrip",state:"value"}),l=Vt(d=>Su.includes(d.key),[]),c=Vt(d=>{a(d),o==null||o(d)},[o,a]),s=Vt(d=>{let u=d.target;l(d)&&t!==n&&Tu(u)&&(d.stopPropagation(),d.preventDefault(),c(t))},[l,t,n,c]),m=Vt((d,u)=>{u!==n&&c(u)},[c,n]);return{activateTab:c,isControlled:i,onClick:m,onKeyDown:s,selected:n}};var wu=new Set(["Enter"," "]),Mu=e=>wu.has(e),Eu=(e,t)=>e?e.querySelector(`[data-index="${t}"]`):null,Fs=({activeTabIndex:e,allowDragDrop:t,animateSelectionThumb:o,containerRef:r,onActiveChange:n,onAddTab:a,onCloseTab:i,onExitEditMode:l,onMoveTab:c,orientation:s,keyBoardActivation:m})=>{let d=Cu(e),{focusTab:u,highlightedIdx:g,onClick:f,onKeyDown:p,setHighlightedIdx:x,...y}=As({containerRef:r,keyBoardActivation:m,orientation:s,selectedIndex:d.current}),{activateTab:D,onClick:I,onKeyDown:v,selected:L}=Os({highlightedIdx:g,onSelectionChange:n,selected:e});d.current=L;let{containerStyle:w,resumeAnimation:M,suspendAnimation:h}=Ls(r,o?L:-1,s),E=oe((K,B)=>{let{current:$}=d;console.log(`useTabstrip handleDrop ${K} - ${B} ${$}`),c==null||c(K,B);let _=-1;B!==-1&&($===K?_=B:K>$&&B<=$?_=$+1:K<$&&B>=$&&(_=$-1),_!==-1&&(h(),D(_),requestAnimationFrame(M)),u(B,!1,!1,350))},[u,c,M,D,h]),{onMouseDown:H,...O}=xs({allowDragDrop:t,containerRef:r,draggableClassName:`tabstrip-${s}`,onDrop:E,orientation:"horizontal",itemQuery:".vuuOverflowContainer-item"}),b=oe((K,B,$,_)=>{console.log(`handleExitEditMode ${K} ${B} ${$} ${_}`),l==null||l(K,B,$,_),$||u(_,!1,!0)},[u,l]),S=oe((K,B)=>{f(K,B),I(K,B)},[f,I]),N=oe((K=g)=>{let B=Eu(r.current,K);if(B)return B.querySelector(".vuuEditableLabel")},[r,g]),P=oe((K=g)=>{let B=N(K);return B?B.classList.contains("vuuEditableLabel-editing"):!1},[N,g]),k=oe((K=g)=>{let B=N(K);if(B){let $=new MouseEvent("dblclick",{view:window,bubbles:!0,cancelable:!0});B.dispatchEvent($)}},[N,g]),C=oe(K=>{p(K),K.defaultPrevented||v(K),!K.defaultPrevented&&Mu(K.key)&&k()},[k,p,v]),T=oe(K=>{let B=Ro(r.current),$=B>K?B-1:B===K?0:B;return h(),i==null||i(K,$),setTimeout(()=>{M()},200),!0},[r,i,M,h]),R=oe(K=>(k(K),!0),[k]),A=oe(K=>{if(Ss(K.options))switch(K.menuId){case"close-tab":return T(K.options.tabIndex);case"rename-tab":return R(K.options.tabIndex);default:console.log(`tab menu action ${K.menuId}`)}return!1},[T,R]),F=oe(()=>{P()?x(g):u(g)},[g,u,x,P]),V=oe(K=>{let B=parseInt(K.index);isNaN(B)||D(B)},[D]),G={onFocus:y.onFocus,onKeyDown:C},z=oe(()=>{a==null||a(),requestAnimationFrame(()=>{let K=Ro(r.current);K!==-1&&u(K)})},[r,u,a]),q={onClick:S,onKeyDown:C,onExitEditMode:b,onMenuAction:A,onMenuClose:F,onMouseDown:H};return{activeTabIndex:L,containerStyle:w,focusVisible:y.focusVisible,containerProps:{...y.containerProps,onSwitchWrappedItemIntoView:V},navigationProps:G,onClickAddTab:z,tabProps:q,...O}};import{Fragment as Ku,jsx as Fu,jsxs as Bu}from"react/jsx-runtime";import{createElement as Ou}from"react";var Ko="vuuTabstrip",wl=({activeTabIndex:e,allowAddTab:t,allowCloseTab:o,allowDragDrop:r=!1,allowRenameTab:n=!1,animateSelectionThumb:a=!1,children:i,className:l,id:c,keyBoardActivation:s="manual",location:m,onActiveChange:d,onAddTab:u,onCloseTab:g,onExitEditMode:f,onMoveTab:p,orientation:x="horizontal",showTabMenuButton:y,style:D,...I})=>{let v=Au(null),{activeTabIndex:L,focusVisible:w,containerStyle:M,draggedItemIndex:h,onClickAddTab:E,tabProps:H,...O}=Fs({activeTabIndex:e,allowDragDrop:r,animateSelectionThumb:a,containerRef:v,keyBoardActivation:s,onActiveChange:d,onAddTab:u,onCloseTab:g,onExitEditMode:f,onMoveTab:p,orientation:x}),b=Nu(c),S=Hu(Ko,`${Ko}-${x}`,l),N=D||M?{...D,...M}:void 0,P=Ru(()=>Lu(i).map((k,C)=>{let{id:T=`${b}-tab-${C}`,closeable:R=o,editable:A=n,showMenuButton:F=y}=k.props,V=C===L;return ku.cloneElement(k,{...H,...O.navigationProps,closeable:R,"data-overflow-priority":V?"1":void 0,dragging:h===C,editable:A,focusVisible:w===C,id:T,index:C,key:C,location:m,selected:V,showMenuButton:F,tabIndex:V?0:-1})}).concat(t?Ou(Pu,{...O.navigationProps,"aria-label":"Create Tab",className:`${Ko}-addTabButton`,"data-icon":"add","data-overflow-priority":"1",key:"addButton",onClick:E,variant:"secondary",tabIndex:-1}):[]),[L,t,o,n,i,w,b,m,E,y,H,h,O.navigationProps]);return Bu(Ku,{children:[Fu(Du,{...I,...O.containerProps,className:S,height:28,id:b,orientation:x,overflowIcon:"more-horiz",ref:v,style:N,children:P}),O.draggable]})};import{useForkRef as _u}from"@salt-ds/core";import Wu from"classnames";import{forwardRef as Gu,useCallback as qu,useRef as Bs}from"react";import{useMemo as $u}from"react";import Vu from"classnames";import{jsx as Uu}from"react/jsx-runtime";var zu="vuuTabMenu",Ks=({allowClose:e,allowRename:t,location:o,onMenuAction:r,onMenuClose:n,index:a})=>{let[i,l]=$u(()=>[(c,s)=>{let m=[];return t&&m.push(Cs(s)),e&&m.push(Ts(s)),m},{tabIndex:a}],[e,t,a]);return Uu(rs,{className:zu,menuBuilder:i,menuActionHandler:r,menuLocation:Vu("tab",o),menuOptions:l,onMenuClose:n,tabIndex:-1})};import{jsx as zt,jsxs as Zu}from"react/jsx-runtime";var Oe="vuuTab",$s=()=>{},Ml=Gu(function({ariaControls:t,children:o,className:r,closeable:n=!1,dragging:a,editable:i=!1,editing:l,focusVisible:c,index:s=-1,label:m,location:d,onClick:u,onClose:g,onEnterEditMode:f=$s,onExitEditMode:p=$s,onFocus:x,onKeyUp:y,onMenuAction:D,onMenuClose:I,orientation:v,selected:L,showMenuButton:w=n||i,tabIndex:M,...h},E){if(w&&typeof D!="function")throw Error("Tab onMenuAction must be provided if showMenuButton is set");let H=Bs(null),O=Bs(null),b=_u(E,H),S=qu(T=>{l||(T.preventDefault(),u==null||u(T,s))},[l,s,u]),N=(T="",R="",A=!0)=>p(T,R,A,s),P=T=>{switch(T.key){case"Backspace":case"Delete":n&&(T.stopPropagation(),g&&g(s));break;default:y&&y(T,s)}},k=()=>i?zt(ys,{editing:l,defaultValue:m,onEnterEditMode:f,onExitEditMode:N,ref:O},m):m,C=T=>{if(O.current){let A=O.current.querySelector(".vuuEditableLabel-input");A==null||A.focus()}x==null||x(T)};return Zu("div",{...h,"aria-controls":t,"aria-selected":L,className:Wu(Oe,{[`${Oe}-closeable`]:n,"vuuDraggable-dragAway":a,[`${Oe}-editing`]:l,[`${Oe}-selected`]:L||void 0,[`${Oe}-vertical`]:v==="vertical",vuuFocusVisible:c}),onClick:S,onFocus:C,onKeyUp:P,ref:b,role:"tab",tabIndex:M,children:[zt("div",{className:`${Oe}-main`,children:zt("span",{className:`${Oe}-text`,"data-text":i?void 0:m,children:o!=null?o:k()})}),w?zt(Ks,{allowClose:n,allowRename:i,location:d,onMenuAction:D,onMenuClose:I,index:s}):null]})});import{useForkRef as Md,useIdMemo as Ed}from"@salt-ds/core";import qo from"classnames";import{forwardRef as Ld,useRef as Dd}from"react";function Ju(e){var t;if(e){let o=e.dataset.idx;if(o)return parseInt(o,10);if(o=(t=e.ariaPosInSet)!=null?t:"-1")return parseInt(o,10)-1}}var Bo=e=>e.closest("[data-idx],[aria-posinset]");var Vs=e=>Ju(Bo(e));import{useCallback as $o,useMemo as ju}from"react";var Yu=new Set(["/","-","."]),Xu=e=>Yu.has(e),zs=(e,t)=>t.startsWith(e)&&Xu(t[e.length]),Us=(e,t="root",{collapsibleHeaders:o=void 0,defaultExpanded:r=!1,revealSelected:n=!1}={})=>{let a=(u,g,f)=>{if(u.childNodes)return u.childNodes.length;if(u.header){let p=f+1,x=0;for(;p<g.length&&!g[p].header;)x++,p++;return x}else return 0},i=$o(u=>Array.isArray(n)?n.some(g=>zs(u,g)):r,[r,n]),l=$o((u,g,f=1,p="",x=[],y=[])=>{let D=0;return u.forEach((I,v,L)=>{var N;let w=I.header&&o,M=I.childNodes&&o===!1,h=!I.childNodes||I.childNodes.length===0,E=M||h&&!w,H=p?`${p}.${v}`:`${v}`,O=(N=I.id)!=null?N:`${t}-${H}`,b=E?void 0:i(O),S={...I,childNodes:void 0,id:O,count:!M&&b===void 0?0:a(I,L,v),expanded:b,index:g.index,level:f};if(x.push(S),y.push(u[v]),D+=1,g.index+=1,I.childNodes){let[P,k]=l(I.childNodes,g,f+1,H,[],y);S.childNodes=k,(b===!0||M)&&(D+=P)}}),[D,x,y]},[o,t,i]),[c,s,m]=ju(()=>l(e,{index:0}),[l,e]),d=$o((u,g=s)=>{let f=g.find(p=>{var x;return p.id===u||((x=p==null?void 0:p.childNodes)==null?void 0:x.length)&&zs(p.id,u)});if((f==null?void 0:f.id)===u)return m[f.index];if(f)return d(u,f.childNodes)},[m,s]);return[c,s,d]};import{useCallback as mt,useRef as Qu}from"react";import{useControlled as ed}from"@salt-ds/core";var _s="single",td="checkbox",od="multi",rd="extended",nd=["Enter"," "],Ws={},sd=e=>e.expanded!==void 0,Gs=e=>e&&e!=="none",qs=({defaultSelected:e,highlightedIdx:t,treeNodes:o,onChange:r,selected:n,selection:a=_s,selectionKeys:i=nd})=>{let l=a===_s,c=a===od||a.startsWith(td),s=a===rd,m=Qu(-1),d=mt(v=>i.includes(v.key),[i]),[u,g]=ed({controlled:n,default:e!=null?e:[],name:"selected"}),f=mt((v,L,w,M,h=!1)=>{let{current:E}=m,H=u==null?void 0:u.includes(w),b=l||s&&!h&&(!M||E===-1),S=c||s&&h&&!M,N=[];if(b&&H)N=[];else if(b)N=[w];else if(S&&H)N=u.filter(P=>P!==w);else if(S)N=u.concat(w);else if(s){let[P,k]=L>E?[E,L]:[L,E];N=u.slice();for(let C=P;C<=k;C++){let{id:T}=o[C];u.includes(T)||N.push(T)}}g(N),r&&r(v,N)},[s,o,c,r,u,g,l]),p=mt(v=>{if(~t&&d(v)){v.preventDefault();let L=o[t];f(v,t,L.id,!1,v.ctrlKey||v.metaKey),s&&(m.current=t)}},[s,t,o,d,f]),x=mt((v,L)=>{if(s&&v.shiftKey){let w=o[L];f(v,L,w.id,!0)}},[s,o,f]),y=a==="none"?Ws:{onKeyDown:p,onKeyboardNavigation:x},D=mt(v=>{if(t!==-1){let L=o[t];sd(L)||(v.preventDefault(),v.stopPropagation(),f(v,t,L.id,v.shiftKey,v.ctrlKey||v.metaKey),s&&(m.current=t))}},[s,t,o,f]);return{listHandlers:y,listItemHandlers:a==="none"?Ws:{onClick:D},selected:u,setSelected:g}};import{useCallback as Vo,useEffect as Xs,useLayoutEffect as ld,useRef as Ut}from"react";import{useCallback as id,useEffect as Zs,useRef as ad}from"react";var Fe=new Map,js=(e,t,o)=>{switch(o){case"height":return t.height;case"clientHeight":return e.clientHeight;case"clientWidth":return e.clientWidth;case"contentHeight":return t.contentHeight;case"contentWidth":return t.contentWidth;case"scrollHeight":return Math.ceil(e.scrollHeight);case"scrollWidth":return Math.ceil(e.scrollWidth);case"width":return t.width;default:return 0}};var Js=new ResizeObserver(e=>{for(let t of e){let{target:o,borderBoxSize:r,contentBoxSize:n}=t,a=Fe.get(o);if(a){let[{blockSize:i,inlineSize:l}]=r,[{blockSize:c,inlineSize:s}]=n,{onResize:m,measurements:d}=a,u=!1;for(let[g,f]of Object.entries(d)){let p=js(o,{height:i,width:l,contentHeight:c,contentWidth:s},g);p!==f&&(u=!0,d[g]=p)}u&&m&&m(d)}}});function Ys(e,t,o,r=!1){let n=ad(t),a=id(i=>{let{width:l,height:c}=i.getBoundingClientRect(),{clientWidth:s,clientHeight:m}=i;return n.current.reduce((d,u)=>(d[u]=js(i,{width:l,height:c,contentHeight:m,contentWidth:s},u),d),{})},[]);Zs(()=>{let i=e.current;async function l(){Fe.set(i,{measurements:{}}),await document.fonts.ready;let c=Fe.get(i);if(c){let s=a(i);c.measurements=s,Js.observe(i),r&&o(s)}else console.log("%cuseResizeObserver an target expected to be under observation wa snot found. This warrants investigation","font-weight:bold; color:red;")}if(i){if(Fe.has(i))throw Error("useResizeObserver attemping to observe same element twice");l()}return()=>{i&&Fe.has(i)&&(Js.unobserve(i),Fe.delete(i))}},[a,e]),Zs(()=>{let i=e.current,l=Fe.get(i);if(l){if(n.current!==t){n.current=t;let c=a(i);l.measurements=c}l.onResize=o}},[t,a,e,o])}var cd=["height","scrollHeight"],Qs=(e,t,o=!1)=>{let r=Ut(0),n=Ut(!1),a=Ut(0),i=Ut(0),l=Vo(m=>{let d=m.ariaExpanded?m.firstChild:m,u=o?30:0,g=d.offsetTop,f=d.offsetHeight,p=r.current+u,x=p+a.current-u;(g+f>x||g<p)&&(r.current=g+f>x?r.current+(g+f)-x:g-u,n.current=!0,e.current&&(e.current.scrollTop=r.current),setTimeout(()=>{n.current=!1}))},[e,o]),c=Vo(m=>{r.current=m.target.scrollTop},[]);Xs(()=>{let{current:m}=e;return m&&m.addEventListener("scroll",c),()=>{m&&m.removeEventListener("scroll",c)}},[e,c]),ld(()=>{if(t!==-1&&i.current>a.current&&e.current){let m=e.current.querySelector(`
1
+ var Na="fwd",La="bwd";import{createContext as Jr,useCallback as Qr,useContext as es,useMemo as Hn}from"react";import{jsx as os}from"react/jsx-runtime";var ts={isDragSource:!1,isDropTarget:!1,register:()=>{}},ns=()=>console.log("have you forgotten to provide a DragDrop Provider ?"),Mn=Jr({registerDragDropParty:ns}),Aa=({children:e,dragSources:t})=>{let[n,o]=Hn(()=>{let i=new Map,s=new Map;for(let[a,{dropTargets:c}]of Object.entries(t)){let d=i.get(a),f=Array.isArray(c)?c:[c];d?d.push(...f):i.set(a,f);for(let u of f){let I=s.get(u);I?I.push(a):s.set(u,[a])}}return[i,s]},[t]);console.log({dragSources:n,dropTargets:o});let r=Qr(i=>{console.log(`registerDragDropParty ${i}`)},[]),l=Hn(()=>({dragSources:n,dropTargets:o,registerDragDropParty:r}),[n,o,r]);return os(Mn.Provider,{value:l,children:e})},Cn=e=>{var r,l;let{dragSources:t,dropTargets:n,registerDragDropParty:o}=es(Mn);if(e){let i=(r=t==null?void 0:t.has(e))!=null?r:!1,s=(l=n==null?void 0:n.has(e))!=null?l:!1;return{isDragSource:i,isDropTarget:s,register:o}}else return ts};import{useCallback as Xe,useMemo as gs,useRef as ke,useState as bs}from"react";import{useCallback as qe,useMemo as ps,useRef as Fn}from"react";var rs=["left","right"],ss=["top","bottom"],ut=":not(.wrapped)",Nn=':not([aria-hidden="true"])',Ln=e=>{let t=e.cloneNode(!0);return t.removeAttribute("id"),t.dataset.index="-1",t},ls=(e,t="width",n=!1)=>{let o=t==="width"?"left":"top",{[t]:r,[o]:l}=e.getBoundingClientRect(),{padEnd:i=!1,padStart:s=!1}=e.dataset,a=getComputedStyle(e),[c,d]=t==="width"?rs:ss,f=s&&!n?0:parseInt(a.getPropertyValue(`margin-${c}`),10),u=i&&!n?0:parseInt(a.getPropertyValue(`margin-${d}`),10),I=r;if(parseInt(a.getPropertyValue("flex-shrink"),10)>0){let p=parseInt(a.getPropertyValue("flex-basis"),10);!isNaN(p)&&p>0&&(I=p)}return[l,f+I+u]},is={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"}},be=e=>is[e],Rn=(e,t)=>{let n=e.find(o=>o.id===t);if(n)return n},kn=(e,t)=>{e.splice(t,1);for(let n=t;n<e.length;n++)e[n].currentIndex-=1},Fe=(e,t,n,o,r)=>{var f;let l=[],{DIMENSION:i}=be(t),s=Array.from(n?e.querySelectorAll(n):e.children),a=s.length,c=typeof(o==null?void 0:o.from)=="number"?o.atEnd?Math.max(0,o.from-1):o.from:0,d=typeof(o==null?void 0:o.to)=="number"?Math.min(o.to+2,a-1):a-1;for(let u=c;u<=d;u++){let I=s[u],[m,p]=ls(I,i),g=u===a-1,S=I.id,E=parseInt((f=I.dataset.index)!=null?f:"-1");l.push({currentIndex:u,dataIndex:isNaN(E)?-1:E,id:S,index:u,isDraggedItem:r===S,isLast:g,isOverflowIndicator:I.dataset.index==="overflow",element:I,start:m,end:m+p,size:p,mid:m+p/2})}return l},$e=(e,t=!1)=>{let n=e.findIndex(r=>r.isDraggedItem),{index:o}=e[n];if(t){let r=e.filter(i=>!i.isDraggedItem).reduce((i,s)=>Math.min(i,s.index),Number.MAX_SAFE_INTEGER);if(r>0&&!(o===0&&r===1))return r+n}return n},Bt=(e,t)=>{let n=$e(e),o=t==="fwd"?n+1:n-1;if(o<0||o>=e.length)throw Error("switchDropTargetPosition index out of range");let r=e.at(n),l=e.at(o),i=l.size-r.size;if(t==="fwd"){let s=l.start+i,a=l.end,c={...r,start:s,mid:Math.floor(s+(a-s)/2),end:a},d=r.start,f=r.end+i,u={...l,start:d,mid:Math.floor(d+(f-d)/2),end:f};e.splice(n,2,u,c)}else{let s=l.start,a=l.end-i,c={...r,start:s,mid:Math.floor(s+(a-s)/2),end:a},d=r.start-i,f=r.end,u={...l,start:d,mid:Math.floor(d+(f-d)/2),end:f};e.splice(o,2,c,u)}},ze=(e,t,n)=>{let o=e.length,r=$e(e),l=e[r];if(n==="fwd"){let i=Math.round(t+l.size);for(let s=o-1;s>=0;s--){let a=e[s];if(i>a.mid)return s<r?l:a}}else{let i=Math.round(t);for(let s=0;s<o;s++){let a=e[s];if(i<a.mid)return s>r?l:a}}throw Error("no dropTraget identified")};function Pn(e,t){let{height:n,left:o,top:r,width:l}=e,{height:i,width:s}=t;return{height:Math.min(n,i),left:o,top:r,width:Math.min(l,s)}}var $a=(e,t,n)=>{if(t===n)return e;{let o=e.slice(),[r]=o.splice(t,1);if(n===-1)return o.concat(r);{let l=(n>t,0);return o.splice(n+l,0,r),o}}},za=e=>e.map((t,n)=>`
2
+ ${t.isDraggedItem?"*":" "}[${n}] width : ${Math.floor(t.size)} ${Math.floor(t.start)} - ${Math.floor(t.end)} (mid ${Math.floor(t.mid)})`).join("");import{useForkRef as as}from"@salt-ds/core";import cs from"classnames";import{forwardRef as us,useCallback as ds}from"react";import{Portal as ms}from"@vuu-ui/vuu-popups";import{jsx as On}from"react/jsx-runtime";var fs=e=>e.split(" ").map(t=>`vuuDraggable-${t}`),dt=us(function({wrapperClassName:t,element:n,onTransitionEnd:o,style:r,scale:l=1},i){let s=ds(c=>{c&&(c.innerHTML="",c.appendChild(n),l!==1&&(c.style.transform=`scale(${l},${l})`))},[n,l]),a=as(i,s);return On(ms,{children:On("div",{className:cs("vuuDraggable",...fs(t)),ref:a,onTransitionEnd:o,style:r})})}),_t=e=>{let t=document.createElement("div");return t.className="vuuDraggable-spacer",e&&t.addEventListener("transitionend",()=>{e.current=!1}),t},An=()=>{let e=document.createElement("div");return e.className="vuuDraggable-dropIndicatorPosition",e},Kn=e=>{let t=document.createElement("div");return t.className="vuuDraggable-dropIndicator",e&&t.addEventListener("transitionend",()=>{e.current=!1}),t};var $n=()=>{let e=Fn(0),t=Fn(!1),n=ps(()=>[_t(t),_t()],[]),o=qe(()=>n.forEach(a=>a.remove()),[n]),r=qe((a,c="width")=>{let[d,f]=n;e.current=requestAnimationFrame(()=>{t.current=!0,d.style.cssText=`${c}: 0px`,f.style.cssText=`${c}: ${a}px`,n[0]=f,n[1]=d})},[n]),l=qe(()=>{e.current&&(cancelAnimationFrame(e.current),e.current=0)},[]),i=qe((a,c,d,f=!1,u="static",I="horizontal")=>{if(c){let m=I==="horizontal"?"width":"height",[p,g]=n;if(l(),f)t.current?(o(),p.style.cssText=`${m}: ${d}px`,g.style.cssText=`${m}: 0px`,u==="fwd"?(c.element.before(p),c.element.after(g)):(c.element.after(p),c.element.before(g))):u==="fwd"?c.element.after(g):c.element.before(g),r(d,m);else if(u==="static")p.style.cssText=`${m}: ${d}px`,c.element.before(p);else throw Error("useDragDisplacers currently only supports noTransition for static displacement");u!=="static"&&Bt(a,u)}},[r,l,o,n]),s=qe((a,c,d,f=!1,u="static",I="horizontal")=>{let m=I==="horizontal"?"width":"height",[p,g]=n;l(),f?(t.current?(o(),p.style.cssText=`${m}: ${d}px`,g.style.cssText=`${m}: 0px`,c.element.before(p),c.element.after(g)):u==="fwd"?c.element.after(g):c.element.before(g),r(d,m)):(p.style.cssText=`${m}: ${d}px`,c.element.after(p)),u!=="static"&&Bt(a,u)},[r,l,o,n]);return{displaceItem:i,displaceLastItem:s,clearSpacers:o}};var zn=({draggableRef:e,onDrop:t,orientation:n="horizontal",containerRef:o,itemQuery:r="*",selected:l,viewportRange:i})=>{let s=ke(),a=ke(!1),c=ke(-1),d=ke([]),f=ke(!1),[u,I]=bs(!1),{clearSpacers:m,displaceItem:p,displaceLastItem:g}=$n(),S=ke(),E=`:is(${r}${ut}${Nn},.vuuOverflowContainer-OverflowIndicator)`,v=b=>d.current.findIndex(M=>M.id===b.id),x=ke();x.current=i;let T=Xe(()=>{m()},[m]),N=Xe((b,M,C)=>{let{current:R}=o,{current:D}=S;if(R&&D){d.current=Fe(R,n,E,x.current),b==="fwd"?d.current.push(D):d.current.unshift(D);let{size:h}=D,L=c.current+h/2,{current:w}=d,A=ze(w,L,"fwd");if(A){let W=v(A),V=w[W];C&&b==="fwd"?g(w,w[w.length-1],h,!1,"static",n):p(w,V,h,!0,"static",n)}}},[o,p,g,E,n]),P=Xe(b=>{let C=b.target.closest(r);C.ariaSelected&&Array.isArray(l)&&l.length>1&&console.log("its a selected element, and we have a multi select");let{current:R}=o;if(R&&C){let{SCROLL_SIZE:D,CLIENT_SIZE:h}=be(n),{id:y}=C,{[D]:L,[h]:w}=R;a.current=L>w;let A=d.current=Fe(R,n,E,i,y),z=$e(A),W=A[z];if(W&&R){S.current=W;let V=W.isLast?g:p;console.log({indexOfDraggedItem:z,draggedItem:W}),V(A,W,W.size,!1,"static",n)}}},[o,p,g,E,r,n,l,i]),[H,k]=gs(()=>{let b=!1;return[R=>{if(!b){b=!0;let D=R.element.querySelector(".vuuPopupMenu");if(D){let h=new MouseEvent("click",{view:window,bubbles:!0,cancelable:!0});D.dispatchEvent(h)}}},R=>{if(b){b=!1;let D=R.element.querySelector(".vuuPopupMenu");if(D){let h=new MouseEvent("click",{view:window,bubbles:!0,cancelable:!0});D.dispatchEvent(h)}}}]},[]),O=Xe((b,M)=>{let{current:C}=S;if(C&&e.current&&o.current){c.current=b;let{current:R}=d,D=ze(R,b,M);if(D&&!D.isDraggedItem)if(D.isOverflowIndicator)I(f.current=!0),H(D);else{let{size:h}=C;(v(D)===R.length-1?g:p)(R,D,h,!0,M,n);let w=R.at(-1);k(w),I(f.current=!1)}s.current=M}},[o,p,g,e,k,n,H]),$=Xe(()=>{var R;m();let{current:b}=d,M=$e(b),C=b[M];if(C)if(s.current=void 0,f.current)t(C.index,-1);else{let D=$e(b,!0);t(C.index,D)}if(I(!1),o.current){let D=(R=o.current)==null?void 0:R.scrollTop;M<b.length&&(o.current.scrollTop=D)}},[m,o,t]);return{beginDrag:P,drag:O,drop:$,handleScrollStart:T,handleScrollStop:N,revealOverflowedItems:u}};import{useCallback as Ye,useRef as Te,useState as Vn}from"react";import{useCallback as Bn,useMemo as Is}from"react";var _n=()=>{let e=Is(()=>An(),[]),t=Bn(()=>e.remove(),[e]);return{positionDropIndicator:Bn((o,r="end")=>(r==="end"?o.element.after(e):o.element.before(e),e),[e]),clearSpacer:t}};import{jsx as Ss}from"react/jsx-runtime";var hs=':not([data-overflowed="true"])',xs=':not([aria-hidden="true"])',Gn=({draggableRef:e,onDrop:t,orientation:n="horizontal",containerRef:o,itemQuery:r="*",selected:l,viewportRange:i})=>{let s=Te(),a=Te(null),c=Te(null),d=Te(""),f=Te(!1),u=Te(-1),I=Te([]),m=Te(!1),[p,g]=Vn(!1),[S,E]=Vn(),{clearSpacer:v,positionDropIndicator:x}=_n(),T=Te(),N=`:is(${r}${hs}${xs},[data-overflow-indicator])`,P=R=>I.current.findIndex(D=>D.id===R.id),H=(R,D,h)=>{R.start+=D,R.mid+=D,R.end+=D,typeof h=="number"&&(R.currentIndex+=h)},k=Te();k.current=i;let O=Ye(()=>{v()},[v]),$=Ye((R,D,h)=>{let{current:y}=o,{current:L}=T;if(y&&L){I.current=Fe(y,n,N,k.current);let{size:w}=L,z=u.current+w/2,{current:W}=I,V=ze(W,z,"fwd");V&&x(h&&R==="fwd"?W[W.length-1]:V,"start")}},[o,x,N,n]),b=Ye(R=>{let h=R.target.closest(r);h.ariaSelected&&Array.isArray(l)&&l.length>1&&console.log("its a selected element, and we have a multi select");let{current:y}=o;if(y&&h){let{SCROLL_SIZE:L,CLIENT_SIZE:w}=be(n),{id:A}=h,{[L]:z,[w]:W}=y;f.current=z>W;let V=I.current=Fe(y,n,N,i),j=Rn(V,A);if(j&&y){let K=P(j);kn(V,K),T.current=j;let{current:F}=k;if(F!=null&&F.atEnd)for(let q=0;q<V.length;q++)H(V[q],j.size);for(let q=K;q<V.length;q++)H(V[q],-j.size,-1);let[Z,X]=j.isLast?[V[V.length-1],"end"]:[V[K],"start"];c.current=Z,d.current=X;let oe=x(Z,X),{top:G,left:U,width:Y}=oe.getBoundingClientRect(),Q={top:j.isLast?F!=null&&F.atEnd&&!F.atStart?G+j.size-2:G-2:G-j.size-2,left:U,width:Y,height:2};E(Ss(dt,{wrapperClassName:"dropIndicatorContainer",style:Q,ref:a,element:Kn()}))}}},[r,l,o,n,N,i,x]),M=Ye((R,D)=>{let{current:h}=c,{current:y}=T;if(y&&e.current&&o.current){let L=n==="horizontal"?"left":"top";u.current=R;let{current:w}=I,A=ze(w,R,D);if(A&&A.index!==(h==null?void 0:h.index)){if(A.isOverflowIndicator)g(m.current=!0);else if(a.current){if(P(A)===w.length-1){let W=w[w.length-1],j=x(W,"start").getBoundingClientRect();a.current.style[L]=`${j.top}px`}else{let V=x(A,"start").getBoundingClientRect();a.current.style[L]=`${V.top}px`}g(m.current=!1)}c.current=A,s.current=D}}},[e,o,n,x]),C=Ye(()=>{v();let{current:R}=T,{current:D}=c,{current:h}=d,{current:y}=k;if(R&&y&&D){let{index:L}=R,w=h==="start",{index:A,currentIndex:z}=D;c.current=null,s.current=void 0,m.current?t(L,-1):L<A?t(L,w?z:z+1):t(L,w?A:A+1),E(void 0)}g(!1)},[v,t]);return{beginDrag:b,drag:M,drop:C,dropIndicator:S,handleScrollStart:O,handleScrollStop:$,revealOverflowedItems:p}};import{useCallback as Ee,useLayoutEffect as ys,useRef as Ie,useState as Ts}from"react";import{useCallback as Wn,useRef as mt}from"react";var Un=({containerRef:e,onScrollingStopped:t,orientation:n="vertical"})=>{let o=mt(null),r=mt(!1),l=mt(0),i=mt("fwd"),s=Wn((c=!1)=>{console.log("[useAutoScroll] stopScrolling"),o.current!==null&&(clearTimeout(o.current),o.current=null),r.current=!1,t==null||t(i.current,l.current,c)},[t]),a=Wn((c,d,f=30)=>{let{current:u}=e;if(u){let{SCROLL_POS:I,SCROLL_SIZE:m,CLIENT_SIZE:p}=be(n),{[I]:g,[m]:S,[p]:E}=u,v=c==="fwd"?S-E-g:g,x=Math.min(v,f);c==="fwd"?(i.current="fwd",u[I]=l.current=g+x):(i.current="bwd",u[I]=l.current=g-x),x===v?s(!0):(r.current=!0,o.current=window.setTimeout(()=>{a(c,d,f)},100))}},[e,n,s]);return{isScrolling:r,startScrolling:a,stopScrolling:s}};import{jsx as Cs}from"react/jsx-runtime";var Es={beginDrag:()=>{},drag:()=>{},draggableRef:{current:null},drop:()=>{},isDragging:!1,isScrolling:!1,handleScrollStart:()=>{},handleScrollStop:()=>{},revealOverflowedItems:!1},jn={start:0,end:1e3,contraStart:0,contraEnd:1e3},vs=()=>Es,Ds=3,ws=(e,t)=>e.closest(t),Hs=e=>e.dataset.index==="overflow"&&e.parentElement!==null&&e.parentElement.classList.contains("overflowed"),Ms=(e,t)=>{let n=`:is(${t}${ut},.vuuOverflowContainer-OverflowIndicator)`,r=Array.from(e.querySelectorAll(n)).pop();return[r,Hs(r)]},ft=({allowDragDrop:e,containerRef:t,draggableClassName:n,itemQuery:o="*",onDragStart:r,onDrop:l,onDropSettle:i,orientation:s,...a})=>{let c=Ie({start:0,end:0,contraStart:0,contraEnd:0}),[d,f]=Ts({draggable:void 0,draggedItemIndex:-1,isDragging:!1}),u=Ie(null),I=Ie(),m=Ie(null),p=Ie(!1),g=Ie({x:0,y:0}),S=Ie({x:0,y:0}),E=Ie({x:0,y:0}),v=Ie(null),x=Ie(-1),T=Ie(-1),N=Ie(),{isDragSource:P,isDropTarget:H,register:k}=Cn(a.id);a.id&&(P||H)&&k(a.id);let O=Ee(()=>{var Y;let{current:G}=T,U=(Y=t.current)==null?void 0:Y.querySelector(`${o}[data-index="${G}"]`);U&&U.classList.remove("vuuDropTarget-settling"),T.current=-1,i==null||i(G),f(Q=>({...Q,draggable:void 0}))},[t,o,i]),$=Ee(G=>{if(t.current){let{POS:U,SCROLL_POS:Y,SCROLL_SIZE:Q,CLIENT_SIZE:q}=be(s),{[Y]:ee,[Q]:le,[q]:ie}=t.current,ce=le-ie,ue=ee<ce,fe=c.current.end,pe=ee>0&&G-g.current[U]<=c.current.start,ge=ue&&G-g.current[U]>=fe;return pe?"bwd":ge?"fwd":""}},[t,s]),b=e===!0||e==="natural-movement"?zn:e==="drop-indicator"?Gn:vs,M=Ee((G,U,Y)=>{var Q;(Q=N.current)==null||Q.call(N,G,U,Y)},[]),{isScrolling:C,startScrolling:R,stopScrolling:D}=Un({containerRef:t,onScrollingStopped:M,orientation:s}),h=Ee((G,U)=>{x.current=U,l==null||l(G,U),T.current=U},[l]),{beginDrag:y,drag:L,drop:w,handleScrollStart:A,handleScrollStop:z,...W}=b({...a,containerRef:t,draggableRef:u,isDragSource:P,isDropTarget:H,itemQuery:o,onDrop:h,orientation:s});N.current=z;let V=Ee(G=>{let{CLIENT_POS:U,CONTRA_CLIENT_POS:Y,CONTRA_POS:Q,POS:q}=be(s),{clientX:ee,clientY:le}=G,{[U]:ie,[Y]:ce}=G,ue=S.current[q],fe=S.current[Q],pe=Math.abs(ue-ie);if((P?Math.abs(fe-ce):0)-pe>5&&(c.current=jn),S.current.x=ee,S.current.y=le,c.current===jn&&u.current){let B=S.current.x-g.current.x,_=S.current.y-g.current.y;u.current.style.top=`${_}px`,u.current.style.left=`${B}px`}else if(pe>0&&u.current){let B=ue<ie?"fwd":"bwd",_=$(ie),J=S.current[q]-g.current[q];if(_&&p.current&&!C.current?(A(),R(_,1)):!_&&C.current&&D(),!C.current){let te=Math.round(Math.max(c.current.start,Math.min(c.current.end,J))),re=s==="horizontal"?"left":"top";u.current.style[re]=`${te}px`,L(te,B)}}},[L,u,$,A,P,C,s,R,D]),j=Ee(()=>{document.removeEventListener("mousemove",V,!1),document.removeEventListener("mouseup",j,!1),v.current=u.current,w(),f(G=>({...G,draggedItemIndex:-1,isDragging:!1})),I.current=void 0},[V,u,w]),K=Ee(G=>{let{clientX:U,clientY:Y,target:Q}=G,q=ws(Q,o),{current:ee}=t;if(ee&&q){let{CONTRA:le,CONTRA_END:ie,DIMENSION:ce,END:ue,SCROLL_SIZE:fe,CLIENT_SIZE:pe,START:ge}=be(s);I.current=q;let{[fe]:B,[pe]:_}=ee;p.current=B>_;let[J,te]=Ms(ee,o),re=ee.getBoundingClientRect(),Se=q.getBoundingClientRect(),ye=Se[ce],{[ge]:Me,[ue]:Le}=J.getBoundingClientRect();g.current.x=U-Se.left,g.current.y=Y-Se.top,c.current.start=re[ge],c.current.end=te?Math.max(Me,re.right-ye):p.current?re[ge]+re[ce]-ye:Le-ye,c.current.contraStart=re[le],c.current.contraEnd=re[ie],y(G);let{dataset:{index:De="-1"}}=q;f({isDragging:!0,draggable:Cs(dt,{element:Ln(q),onTransitionEnd:O,ref:u,style:Pn(Se,re),wrapperClassName:n}),draggedItemIndex:parseInt(De)}),r==null||r(),document.addEventListener("mousemove",V,!1),document.addEventListener("mouseup",j,!1)}},[y,t,V,j,n,u,o,r,s,O]),F=Ee(G=>{let{CLIENT_POS:U,POS:Y}=be(s),{[U]:Q}=G;Math.abs(Q-E.current[Y])>Ds&&t.current&&(m.current&&(window.clearTimeout(m.current),m.current=null),document.removeEventListener("mousemove",F),document.removeEventListener("mouseup",Z,!1),K(G))},[t,y,s]),Z=Ee(()=>{m.current&&(window.clearTimeout(m.current),m.current=null),document.removeEventListener("mousemove",F,!1),document.removeEventListener("mouseup",Z,!1)},[F]),X=Ee(G=>{let{current:U}=t;if(U&&!G.defaultPrevented){let{clientX:Y,clientY:Q}=G;S.current.x=E.current.x=Y,S.current.y=E.current.y=Q,document.addEventListener("mousemove",F,!1),document.addEventListener("mouseup",Z,!1),G.persist(),m.current=window.setTimeout(()=>{document.removeEventListener("mousemove",F,!1),document.removeEventListener("mouseup",Z,!1),K(G.nativeEvent)},500)}},[t,K,F,Z]),{current:oe}=v;return ys(()=>{if(oe&&t.current){let G=x.current,U=t.current.querySelector(`${o}[data-index="${G}"]`);U?(U.classList.add("vuuDropTarget-settling"),requestAnimationFrame(()=>{let{top:Y,left:Q}=U.getBoundingClientRect(),{top:q,left:ee}=oe.getBoundingClientRect();ee!==Q||q!==Y?(oe.classList.add("vuuDraggable-settling"),oe.style.top=`${Y}px`,oe.style.left=`${Q}px`):O()})):console.log(`dont have the dropped item (at ${G})`),v.current=null}},[t,o,oe,O]),{...W,...d,isScrolling:C,onMouseDown:e?X:void 0}};import Ns from"classnames";import{useCallback as Zn,useLayoutEffect as Ls,forwardRef as Rs,useRef as Vt}from"react";import{Input as ks,useControlled as qn}from"@salt-ds/core";import{jsx as Xn}from"react/jsx-runtime";var Gt="vuuEditableLabel",Yn=Rs(function({className:t,defaultEditing:n,defaultValue:o,editing:r,onChange:l,onEnterEditMode:i,onExitEditMode:s,value:a,...c},d){let f=Vt(null),u=Vt(!1),[I,m]=qn({controlled:a,default:o!=null?o:"",name:"EditableLabel",state:"value"}),[p,g]=qn({controlled:r,default:n!=null?n:!1,name:"EditableLabel",state:"editing"}),S=Zn(O=>{g(u.current=O)},[]),E=Vt(I);Ls(()=>{p&&f.current!==null&&(f.current.select(),f.current.focus())},[p,f]);let v=Zn(()=>{S(!0),i&&i()},[i,S]),x=({cancelEdit:O=!1,allowDeactivation:$=!1}={})=>{S(!1);let b=E.current;b!==I&&(O?m(b):E.current=I),s&&s(b,I,$,O)},T=O=>{let{value:$}=O.target;m($),l&&l($)},N=()=>{v()},P=()=>{u.current&&x({allowDeactivation:!0})},H=O=>{p&&O.key==="Enter"?(O.stopPropagation(),x()):O.key==="ArrowRight"||O.key==="ArrowLeft"?O.stopPropagation():O.key==="Escape"&&x({cancelEdit:!0})},k=Ns(Gt,t,{[`${Gt}-editing`]:p});return Xn("div",{...c,className:k,onDoubleClick:N,"data-text":I,ref:d,children:p?Xn(ks,{inputProps:{className:`${Gt}-input`},value:I,onBlur:P,onChange:T,onKeyDown:H,inputRef:f,style:{padding:0},textAlign:"left",variant:"secondary"}):I})});import{makePrefixer as Os}from"@salt-ds/core";var Ps=/[.*+?^${}()|[\]\\]/g;function pt(e){return e.replace(Ps,"\\$&")}import{Fragment as Ks,jsx as Wt}from"react/jsx-runtime";var As=Os("saltHighlighter"),Jn=e=>{let{matchPattern:t,text:n=""}=e,o=typeof t=="string"?new RegExp(`(${pt(t)})`,"gi"):t;return o===void 0?Wt(Ks,{children:n}):Wt("span",{children:n.split(o).map((r,l)=>r.match(o)?Wt("strong",{className:As("highlight"),children:r},`${l}-${r}`):r)})};import{forwardRef as to}from"react";import no from"classnames";import Fs from"classnames";import{jsx as $s}from"react/jsx-runtime";var Qn="vuuCheckboxIcon",eo=({checked:e=!1,...t})=>$s("span",{...t,className:Fs(Qn,{[`${Qn}-checked`]:e})});import{jsx as gt,jsxs as zs}from"react/jsx-runtime";var Je="vuuListItem",bt=to(function(t,n){return gt("div",{"aria-hidden":!0,className:no(Je,`${Je}-proxy`),ref:n})}),It=to(function({children:t,className:n,disabled:o,tabIndex:r,item:l,itemHeight:i,itemTextHighlightPattern:s,label:a,selectable:c,selected:d,showCheckbox:f,style:u,...I},m){let p=no(Je,n,{vuuDisabled:o,[`${Je}-checkbox`]:f}),g=i!==void 0?{...u,height:i}:u;return zs("div",{className:p,...I,"aria-disabled":o||void 0,"aria-selected":d||void 0,ref:m,style:g,children:[f&&gt(eo,{"aria-hidden":!0,checked:d}),t&&typeof t!="string"?t:s==null?gt("span",{className:`${Je}-textWrapper`,children:a||t}):gt(Jn,{matchPattern:s,text:a||t})]})});import{useId as Gl}from"@vuu-ui/vuu-layout";import{useForkRef as Wl}from"@salt-ds/core";import an from"classnames";import{cloneElement as Ul,forwardRef as jl,isValidElement as Zl,useRef as cn}from"react";import{cloneElement as Nu,createContext as Bs,useContext as _s}from"react";import{jsx as ku}from"react/jsx-runtime";var Vs=Bs(void 0);function oo(){let e=_s(Vs);if(e)return e}var Gs=e=>Object.prototype.toString.call(e)==="[object Object]";function Be(e){return typeof e=="string"?e:Gs(e)?Object.prototype.hasOwnProperty.call(e,"label")?String(e.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(`
3
+ `)),""):String(e)}function Ws(e,...t){let n=new Set(e);for(let o of t)for(let r of o)n.add(r);return n}var Qe="ArrowUp",et="ArrowDown",ro="ArrowLeft",so="ArrowRight",Ut="Enter";var ht="Home",tt="End",jt="PageUp",xt="PageDown",lo=" ";var Us=new Set(["Enter","Delete"," "]),js=new Set(["Tab"]),Zs=new Set(["ArrowRight","ArrowLeft"]),io=new Set([ht,tt,jt,xt,et,Qe]),qs=new Set(["F1","F2","F3","F4","F5","F6","F7","F8","F9","F10","F11","F12"]),Xs=Ws(Us,io,Zs,qs,js),St=e=>Xs.has(e.key)?!1:e.key.length===1&&!e.ctrlKey&&!e.metaKey&&!e.altKey,ao=({key:e})=>io.has(e);import{useCallback as co}from"react";var Ys={},Js=e=>Array.isArray(e.childNodes),Qs=e=>!0,el=e=>e.closest("[data-toggle],[aria-expanded]").dataset.toggle==="true",uo=({collapsibleHeaders:e,collectionHook:t,highlightedIdx:n,onToggle:o})=>{let r=co(s=>{if(s.key===so||s.key===Ut){let a=t.data[n];a&&a.expanded===!1&&a.value&&(s.preventDefault(),t.expandGroupItem(a),o==null||o(a.value))}if(s.key===ro||s.key===Ut){let a=t.data[n];a&&a.expanded&&a.value&&(s.preventDefault(),t.collapseGroupItem(a),o==null||o(a.value))}},[t.collapseGroupItem,t.data,t.expandGroupItem,n]),i={onClick:co(s=>{console.log(`useCollapsibleGroups idx=${n}`);let a=t.data[n];console.log(s.target,s.currentTarget),a&&Js(a)&&(!Qs(a)||el(s.target))&&(s.stopPropagation(),s.preventDefault(),a.expanded===!1&&a.value?(t.expandGroupItem(a),o==null||o(a.value)):a.expanded===!0&&a.value&&(t.collapseGroupItem(a),o==null||o(a.value)))},[t.collapseGroupItem,t.data,t.expandGroupItem,n]),onKeyDown:r};return e?i:Ys};function tl(e){if(e){let t=e.dataset.idx;if(t)return parseInt(t,10);if(t=e.ariaPosInSet)return parseInt(t,10)-1}return-1}var nl=e=>e.closest("[data-idx],[aria-posinset]");var mo=e=>tl(nl(e));var fo=e=>e==="none",_e=e=>Array.isArray(e)?e.length>0:e!=null,po=e=>Array.isArray(e)?e[0]:e;import{useCallback as he,useMemo as Et,useRef as vt,useState as fl,isValidElement as Do}from"react";import{isValidElement as Zt,Children as ol}from"react";var go=e=>null;var bo=e=>null;var qt=(e,t)=>e!==null&&Object.prototype.hasOwnProperty.call(e,t),Xt=e=>qt(e,"header"),Io=e=>qt(e,"childNodes"),nt=(e,t)=>e&&Object.prototype.hasOwnProperty.call(e.props,t),ho=e=>{if(Zt(e)){if(nt(e,"disabled"))return e.props.disabled===!0}else if(qt(e,"disabled"))return e.disabled===!0;return!1},xo=e=>Zt(e)&&nt(e,"focusable")?e.props.focusable:!0,So=(e,t,n)=>{if(e.childNodes)return e.childNodes.length;if(e.header){let o=n+1,r=0;for(;o<t.length&&!t[o].header;)r++,o++;return r}else return 0},rl=e=>{if(typeof e.props.children=="string")return e.props.children;if(e.props.title)return e.props.title;if(e.props.label)return e.props.label},yo=e=>e.type===bo||nt(e,"data-header"),To=e=>e.type===go||nt(e,"data-group"),sl=e=>nt(e,"selectable")?e.props.selectable===!0:!To(e)&&!yo(e),ll=e=>{if(To(e)){let{props:{children:t}}=e;if(typeof t!="string")return Jt(t)}},il=(e,t)=>{let n=[];return ol.forEach(e,o=>{Zt(o)&&n.push(t(o))}),n},Yt=(e,t)=>{if(Array.isArray(e))return e.length===0&&(t!=null&&t.noChildrenLabel)?[{label:t.noChildrenLabel,value:null}]:e.map((n,o)=>{var r,l;return{childNodes:Yt(n.childNodes,t),description:n.description,expanded:n.expanded,value:n,label:(l=(r=t==null?void 0:t.itemToString)==null?void 0:r.call(t,n))!=null?l:Be(n)}});if(e)throw Error("list-child-items expects source to be an array")},Jt=e=>{if(e)return il(e,t=>{let{"data-id":n,disabled:o,id:r=n,"data-expanded":l,expanded:i=l}=t.props;return{childNodes:ll(t),disabled:o,expanded:i,header:yo(t),id:r,label:rl(t),selectable:sl(t),value:t}})},al=new Set(["/","-","."]),cl=e=>al.has(e),Eo=(e,t)=>t.startsWith(e)&&cl(t[e.length]),ul=new Set([".","/"]);function dl(e,t){return t.startsWith(e)?ul.has(t.charAt(e.length)):!1}function yt(e,t,n){let o;return e.map(l=>l.id===t?{...l,...n}:dl(l.id,t)&&l.childNodes?(o=yt(l.childNodes,t,n),{...l,childNodes:o}):l)}var ml=e=>e&&e.replace(/^\s+/g,""),Qt=e=>new RegExp(`(${pt(ml(e))})`,"gi"),vo=(e="",t=Qt)=>(n="")=>!!n.length&&!!e.length&&n.match(t(e))!==null;function Tt(e,t){return Array.isArray(e)?e.includes(t):e===t}var pl={},Dt=({children:e,id:t,label:n="",options:o=pl,source:r})=>{var D;let{getItemId:l}=o,[,i]=fl(null),s=oo(),a=vt([]),c=vt([]),d=Et(()=>[],[]),f=vt((D=o.filterPattern)!=null?D:""),{getFilterRegex:u=Qt,noChildrenLabel:I,itemToString:m=Be}=o,p=he(h=>o.defaultExpanded||!1,[o.defaultExpanded]),g=he((h,y,L=1,w="",A=[],z=[],W=[])=>(h.forEach((V,j,K)=>{var q,ee;let F=V.header&&o.collapsibleHeaders,Z=V.childNodes&&o.collapsibleHeaders===!1,X=!V.childNodes||V.childNodes.length===0,oe=Z||X&&!F,G=w?`${w}.${j}`:`item-${j}`,U=(q=V.id)!=null?q:l?l(j):`${t}-${G}`,Y=oe?void 0:(ee=V.expanded)!=null?ee:p(U),Q={...V,childNodes:void 0,count:!Z&&Y===void 0?0:So(V,K,j),description:V.description,disabled:ho(V.value),focusable:xo(V.value)?void 0:!1,id:U,index:y.value,expanded:Y,level:L};if(A.push(Q),z.push(Q),W.push(h[j].value),y.value+=1,V.childNodes){let[le]=g(V.childNodes,y,L+1,G,[],z,W);Q.childNodes=le}}),[A,W,z]),[o.collapsibleHeaders,l,t,p]),S=he(()=>f.current?vo(f.current,u):null,[u]),E=he((h,y=S(),L=[],w={value:0})=>{let A=!1;for(let z of h)A&&!Xt(z)||(z.value!==null&&(y===null||y(m(z.value)))&&(L[w.value]=z,w.value+=1),A=!1,Xt(z)&&z.expanded===!1?A=!0:Io(z)&&z.expanded!==!1&&z.childNodes&&E(z.childNodes,y,L,w));return L},[S,m]),v=Et(()=>s?d:Yt(r,{itemToString:m,noChildrenLabel:I})||Jt(e)||[],[s,d,r,m,I,e]),[x,T,N]=Et(()=>s?[d,d,d]:g(v,{value:0}),[d,g,s,v]);c.current=N,Et(()=>s?d:a.current=E(x),[d,E,x,s]);let P=vt(x),H=he((h="")=>{typeof h=="string"&&(f.current=h,a.current=E(x),i({}))},[x,E]),k=he((h,y=x)=>{let L=y.find(w=>{var A;return w.id===h||((A=w==null?void 0:w.childNodes)==null?void 0:A.length)&&Eo(w.id,h)});if((L==null?void 0:L.id)===h)return T==null?void 0:T[L.index];if(L)return k(h,L.childNodes);throw Error(`useCollectionData itemById, id ${h} not found `)},[T,x]),O=he(h=>{let y=c.current.find(L=>Do(L.value)?L.label===h:L.value===h);if(y)return y;throw Error("useCollectionData toCollectionItem, item not found ")},[]),$=he(h=>{if(h===null)return null;if(Array.isArray(h)){let y=[];for(let L of h){let w=O(L);y.push(w)}return y}else if(h!==void 0)return O(h)},[O]),b=he(h=>{let y=L=>{let w=c.current.find(A=>Do(A.value)?A.label===L:A.value!==null&&m(A.value)===L);if(w)return w};if(h===null)return null;if(Array.isArray(h)){let L=[];for(let w of h){let A=y(w);A&&L.push(A)}return L}else if(h!==void 0)return y(h)},[m]),M=he(h=>{for(let y of P.current)if(h===y.value)return y.id;throw Error("useCollectionData itemToId, item not found")},[]),C=he(h=>{P.current=yt(P.current,h.id,{expanded:!1}),a.current=E(P.current),i({})},[E]),R=he(h=>{P.current=yt(P.current,h.id,{expanded:!0}),a.current=E(P.current),i({})},[E]);return s||{collapseGroupItem:C,data:a.current,expandGroupItem:R,setFilterPattern:H,itemById:k,itemToId:M,toCollectionItem:O,itemToCollectionItem:$,stringToCollectionItem:b}};import{useImperativeHandle as gl,useMemo as bl}from"react";var Il={scrollToIndex:e=>{},scrollToItem:e=>{},scrollTo:e=>{}},wt=({collectionHook:e,forwardedRef:t,scrollableRef:n,scrollIntoView:o})=>{let r=bl(()=>({scrollToIndex:l=>{let i=e.data[l];i&&(o==null||o(i))},scrollToItem:l=>{let i=e.toCollectionItem(l);i&&(o==null||o(i))},scrollTo:l=>{n!=null&&n.current&&(n.current.scrollTop=l)}}),[e.data,e.toCollectionItem,o]);gl(t,()=>n.current?r:Il,[r])};import{useControlled as hl}from"@salt-ds/core";import{useCallback as Ve,useMemo as xl,useRef as en,useState as Sl}from"react";var nn=-2;function wo(e,t,n){return t===Qe||t===tt?n>0?n-1:n:n===null?0:n===e-1?n:n+1}var tn=(e,t)=>{let n=po(t);return n?e.indexOf(n):-1},yl=(e,t,n,o)=>e===tt?o:e===ht?-1:t!==-1?t:n,Mo=e=>{let t=document.getElementById(e.id);if(t)return t.getBoundingClientRect();throw Error(`useKeyboardNavigation.getItemRect no element found for item #${e==null?void 0:e.id}`)},Tl=(e,t,n,o)=>{let{top:r}=t.getBoundingClientRect(),{scrollTop:l,clientHeight:i,scrollHeight:s}=e,a=n.length-1,c=Math.min(l+i,s-i);if(c!==l&&o<a){e.scrollTo(0,c);let d=o,f;do d+=1,f=Mo(n[d]);while(f.top<r&&d<a);return d}},El=async(e,t,n,o)=>{let{top:r}=t.getBoundingClientRect(),{scrollTop:l,clientHeight:i}=e,s=Math.max(l-i,0);if(s!==l&&o>0)return e.scrollTo(0,s),new Promise(a=>{requestAnimationFrame(()=>{let c=o,d;do c-=1,d=Mo(n[c]);while(d.top>r&&c>0);a(c)})})},vl=e=>!e.header&&!e.childNodes,Ho=e=>vl(e)||e.expanded!==void 0,Co=({containerRef:e,defaultHighlightedIndex:t=-1,disableHighlightOnFocus:n,highlightedIndex:o,indexPositions:r,onHighlight:l,onKeyboardNavigation:i,restoreLastFocus:s,selected:a})=>{let c=en(-1),[,d]=Sl({}),[f,u,I]=hl({controlled:o,default:t,name:"UseKeyboardNavigation"}),m=Ve((H,k=!1)=>{l==null||l(H),u(H),k&&(c.current=H)},[l,u]),p=Ve(async(H,k)=>{let{id:O}=r[k],$;if(O){let b=document.getElementById(O),{current:M}=e;b&&M&&($=H.key===xt?Tl(M,b,r,k):await El(M,b,r,k))}return $!=null?$:k},[e,r]),g=Ve((H=et,k=H===et?-1:r.length)=>{if(r.length===0)return-1;{let O=tn(r,a),$=yl(H,k,O,r.length),b=wo(r.length,H,$);if(b===0&&H===Qe&&!Ho(r[0]))return k;for(;((H===et||H===ht)&&b<r.length||(H===Qe||H===tt)&&b>0)&&!Ho(r[b]);)b=wo(r.length,H,b);return b}},[r,a]),S=en(!1),E=en(!1),v=H=>E.current=H,x=Ve(H=>{if(E.current)E.current=!1;else if(S.current=!0,r.length===0)m(nn);else if(f!==-1)d({});else if(s)if(c.current!==-1)m(c.current);else{let k=tn(r,a);m(k!==-1?k:0)}else if(_e(a)){let k=tn(r,a);m(k)}else n!==!0&&m(g())},[n,f,r,g,s,a,m]),T=Ve(async H=>{let k=H.key===xt||H.key===jt?await p(H,f):g(H.key,f);k!==f&&m(k,!0),i==null||i(H,k)},[f,g,p,i,m]),N=Ve(H=>{r.length>0&&ao(H)?(H.preventDefault(),H.stopPropagation(),S.current=!0,T(H)):St(H)&&(S.current=!0)},[r,T]),P=xl(()=>({onBlur:H=>{let k=H.target.closest(".saltList"),O=H.relatedTarget;k&&!(k!=null&&k.contains(O))&&(S.current=!1,u(-1),s||(c.current=-1))},onFocus:x,onKeyDown:N,onMouseDownCapture:()=>{S.current=!1,v(!0)},onMouseMove:()=>{S.current&&(S.current=!1)},onMouseLeave:()=>{S.current=!1,v(!1),m(-1)}}),[x,N,s,u,m]);return{focusVisible:S.current?f:-1,controlledHighlighting:I,highlightedIndex:f,setHighlightedIndex:m,keyboardNavigation:S,listProps:P,setIgnoreFocus:v}};import{useControlled as Dl}from"@salt-ds/core";import{useCallback as xe,useRef as wl}from"react";var Hl={},Ml=["Enter"," "],on=e=>e&&e.disabled!==!0&&e.selectable!==!1,No=(e,t)=>{var n,o;return((n=e.index)!=null?n:0)-((o=t.index)!=null?o:0)};var Lo=({defaultSelected:e,disableSelection:t=!1,highlightedIdx:n,indexPositions:o,onSelect:r,onSelectionChange:l,selected:i,selectionStrategy:s,selectionKeys:a=Ml,tabToSelect:c})=>{let d=s==="deselectable",f=s==="multiple",u=s==="extended",I=wl(-1),m=xe(b=>a.includes(b.key),[a]),p=xe(()=>f||u?[]:null,[f,u]),[g,S]=Dl({controlled:i,default:e!=null?e:p(),name:"UseSelection",state:"selected"}),E=xe(b=>Array.isArray(g)?g.includes(b):g===b,[g]),v=xe(b=>b,[]),x=xe(b=>E(b)?null:b,[E]),T=xe(b=>{let M=E(b)?g.filter(C=>C!==b):g.concat(b);return M.sort(No),M},[E,g]),N=xe((b,M)=>{let C=M?g:[],[R]=g.slice(-1),D=R?o.indexOf(R):0,h=Math.min(b,D),y=Math.max(b,D),L=o.slice(h,y+1),w=[...new Set([...C,...L])];return w.sort(No),w},[o,g]),P=xe((b,M,C,R,D)=>{let h;f?h=T(C):u?D&&!R?h=T(C):R?h=N(M,D):h=[C]:d?h=x(C):h=v(C),h!==g&&S(h),r==null||r(b,C),h!==g&&l&&l(b,h)},[f,u,d,g,r,T,N,x,v,S,l]),H=xe(b=>{let M=o[n];on(M)&&(m(b)||c&&b.key==="Tab")&&(b.key!=="Tab"&&b.preventDefault(),P(b,n,M,!1,b.ctrlKey||b.metaKey),u&&(I.current=n))},[o,n,m,c,P,u]),k=xe((b,M)=>{if(u&&b.shiftKey){let C=o[M];on(C)&&P(b,M,C,!0)}},[u,o,P]),O=xe(b=>{let M=o[n];!t&&on(M)&&(b.preventDefault(),b.stopPropagation(),P(b,n,M,b.shiftKey,b.ctrlKey||b.metaKey),u&&(I.current=n))},[t,u,n,o,P]);return{listHandlers:fo(s)?Hl:{onClick:O,onKeyDown:H,onKeyboardNavigation:k},selected:g,setSelected:S}};import{useCallback as Ro,useRef as rn}from"react";var ko=({disableTypeToSelect:e,highlightedIdx:t,highlightItemAtIndex:n,typeToNavigate:o,items:r,applyIncrementalSearch:l=!0})=>{let i=rn(null),s=rn(""),a=rn(-1),c=Ro(f=>{if(f||!l){let u=new RegExp(`^${s.current}`,"i"),I=r.findIndex(({label:m},p)=>p>a.current&&u.test(m));I===-1&&(I=r.findIndex(({label:m},p)=>p<=a.current&&u.test(m))),I!==-1&&n(I)}else s.current="",i.current=null,a.current=-1},[l,n,r]),d=Ro(f=>{let u=a.current!==-1;(St(f)||u&&f.key===lo)&&o&&(f.preventDefault(),f.stopPropagation(),(a.current===-1||f.key===s.current)&&(a.current=t),i.current!==null&&(clearTimeout(i.current),i.current=null),f.key!==s.current&&(s.current+=f.key),l&&c(!0),i.current=window.setTimeout(()=>{c()},100))},[o,l,t,c]);return{onKeyDown:e?void 0:d}};import{useCallback as Ge,useRef as Fo}from"react";import{useCallback as Cl,useEffect as Po,useRef as Nl}from"react";var Ao=["height"],Pe=new Map,Ko=(e,t,n)=>{switch(n){case"height":return t.height;case"clientHeight":return e.clientHeight;case"clientWidth":return e.clientWidth;case"contentHeight":return t.contentHeight;case"contentWidth":return t.contentWidth;case"scrollHeight":return Math.ceil(e.scrollHeight);case"scrollWidth":return Math.ceil(e.scrollWidth);case"width":return t.width;default:return 0}};var Oo=new ResizeObserver(e=>{for(let t of e){let{target:n,borderBoxSize:o,contentBoxSize:r}=t,l=Pe.get(n);if(l){let[{blockSize:i,inlineSize:s}]=o,[{blockSize:a,inlineSize:c}]=r,{onResize:d,measurements:f}=l,u=!1;for(let[I,m]of Object.entries(f)){let p=Ko(n,{height:i,width:s,contentHeight:a,contentWidth:c},I);p!==m&&(u=!0,f[I]=p)}u&&d&&d(f)}}});function Oe(e,t,n,o=!1){let r=Nl(t),l=Cl(i=>{let{width:s,height:a}=i.getBoundingClientRect(),{clientWidth:c,clientHeight:d}=i;return r.current.reduce((f,u)=>(f[u]=Ko(i,{width:s,height:a,contentHeight:d,contentWidth:c},u),f),{})},[]);Po(()=>{let i=e.current;async function s(){Pe.set(i,{measurements:{}}),await document.fonts.ready;let a=Pe.get(i);if(a){let c=l(i);a.measurements=c,Oo.observe(i),o&&n(c)}else console.log("%cuseResizeObserver an target expected to be under observation wa snot found. This warrants investigation","font-weight:bold; color:red;")}if(i){if(Pe.has(i))throw Error("useResizeObserver attemping to observe same element twice");s()}return()=>{i&&Pe.has(i)&&(Oo.unobserve(i),Pe.delete(i))}},[l,e]),Po(()=>{let i=e.current,s=Pe.get(i);if(s){if(r.current!==t){r.current=t;let a=l(i);s.measurements=a}s.onResize=n}},[t,l,e,n])}import{useIsomorphicLayoutEffect as Ll}from"@salt-ds/core";var $o=["height"],Rl=["height","scrollHeight"],kl=[],zo={containerOnly:[Rl,kl],withContent:[$o,$o]},Pl=e=>e?zo.containerOnly:zo.withContent,Bo={current:null},Ol=(e,t)=>{let{transform:n="none"}=getComputedStyle(e);if(n.startsWith("matrix")){let o=n.lastIndexOf(",");return parseInt(n.slice(o+1))}else{let o=e.offsetParent;if(o===t||t===null)return e.offsetTop;{let r=e.offsetTop;for(;o!==null&&o!==t;)r+=o.offsetTop,o=o.offsetParent;return r}}},_o=({containerRef:e,contentRef:t=Bo,highlightedIdx:n=-1,indexPositions:o,stickyHeaders:r=!1})=>{let l=Fo(!1),i=Fo({height:0,contentHeight:0}),s=Ge(p=>{l.current=!0,e.current&&(e.current.scrollTop=p),setTimeout(()=>{l.current=!1})},[]),a=Ge(()=>s(0),[s]),c=Ge(()=>{s(i.current.contentHeight-i.current.height)},[s]),d=Ge(p=>{let g=t.current||e.current;if(p.id){let S=document.getElementById(p.id);if(S&&e.current){let{height:E}=i.current,v=S.ariaExpanded&&S.firstChild?S.firstChild:S,x=r?36:0,T=Ol(v,g),N=v.offsetHeight,{scrollTop:P}=e.current,H=P+x,k=H+E-x;if(T+N>k||T<H){let O=T+N>k?P+(T+N)-k:T-x;s(O)}}}},[e,t,s,r]);Ll(()=>{let{height:p,contentHeight:g}=i.current,S=o[n];if(g>p&&S){let[E]=o,[v]=o.slice(-1);S===E?a():S===v?c():d(o[n])}},[n,o,d,c,a]);let f=Ge(({height:p,scrollHeight:g})=>{typeof p=="number"&&(i.current.height=p),typeof g=="number"&&(i.current.contentHeight=g)},[]),u=Ge(({height:p})=>{typeof p=="number"&&(i.current.contentHeight=p)},[]),[I,m]=Pl(t===Bo);return Oe(e,I,f,!0),Oe(t,m,u,!0),{isScrolling:l,scrollIntoView:d}};import{isValidElement as sn,useCallback as He,useEffect as Vo,useRef as Go}from"react";var Ht=({allowDragDrop:e=!1,collapsibleHeaders:t,collectionHook:n,containerRef:o,contentRef:r,defaultHighlightedIndex:l,defaultSelected:i,disabled:s,disableAriaActiveDescendant:a,disableHighlightOnFocus:c,disableTypeToSelect:d,highlightedIndex:f,id:u,label:I="",listHandlers:m,onHighlight:p,onKeyboardNavigation:g,onKeyDown:S,onMoveListItem:E,onSelect:v,onSelectionChange:x,restoreLastFocus:T,selected:N,selectionStrategy:P,selectionKeys:H,stickyHeaders:k,tabToSelect:O,viewportRange:$})=>{let b=Go(null),M=Go(N||i),C=(B,_)=>{var J,te;(te=(J=j.listHandlers).onKeyboardNavigation)==null||te.call(J,B,_),g==null||g(B,_)},R=He((B,_)=>{v&&(sn(_.value)?v(B,_.label):_.value!==null&&v(B,_.value))},[v]),D=He((B,_)=>{x&&x(B,Array.isArray(_)?_.map(J=>sn(J.value)?J.label:J.value):_&&(sn(_.value)?_.label:_.value))},[x]),{highlightedIndex:h,listProps:{onKeyDown:y,onMouseMove:L,...w},setHighlightedIndex:A,...z}=Co({containerRef:o,defaultHighlightedIndex:l,disableHighlightOnFocus:c,highlightedIndex:f,indexPositions:n.data,label:I,onHighlight:p,onKeyboardNavigation:C,restoreLastFocus:T,selected:M.current}),W=uo({collapsibleHeaders:t,highlightedIdx:h,collectionHook:n}),V=He(()=>{A(-1)},[A]),j=Lo({defaultSelected:i,highlightedIdx:h,indexPositions:n.data,label:I,onSelect:R,onSelectionChange:D,selected:N,selectionStrategy:P,selectionKeys:H,tabToSelect:O}),K=He((B,_,J)=>{let te=n.data.indexOf(B);return te===_?J:te<Math.min(_,J)||te>Math.max(_,J)?te:_<te?te-1:te+1},[n.data]),F=He((B,_,J)=>Array.isArray(B)?B.map(te=>K(te,_,J)):K(B,_,J),[K]),Z=He((B,_)=>{_e(j.selected)&&(b.current=F(j.selected,B,_)),E==null||E(B,_),A(-1)},[j.selected,E,A,F]),X=He(B=>{A(B)},[A]),{setSelected:oe}=j;Vo(()=>{let{current:B}=b;if(_e(B)){let _=Array.isArray(B)?B.map(J=>n.data[J]):n.data[B];oe(_)}},[n.data,oe]),Vo(()=>{_e(M.current)&&oe(Array.isArray(M.current)?[]:null)},[oe,n.data]);let{onMouseDown:G,isDragging:U,isScrolling:Y,...Q}=ft({allowDragDrop:e,draggableClassName:"list-item",orientation:"vertical",containerRef:o,id:u,itemQuery:".vuuListItem",onDragStart:V,onDrop:Z,onDropSettle:X,viewportRange:$}),{onKeyDown:q}=ko({disableTypeToSelect:d,highlightedIdx:h,highlightItemAtIndex:A,typeToNavigate:!0,items:n.data}),ee=He(B=>{var _,J,te;B.defaultPrevented||q==null||q(B),y(B),B.defaultPrevented||(J=(_=j.listHandlers).onKeyDown)==null||J.call(_,B),B.defaultPrevented||(te=W==null?void 0:W.onKeyDown)==null||te.call(W,B),B.defaultPrevented||S==null||S(B)},[W,y,S,j.listHandlers,q]),{isScrolling:le,scrollIntoView:ie}=_o({containerRef:o,contentRef:r,highlightedIdx:h,indexPositions:n.data,stickyHeaders:k}),ce=le.current||Y.current,ue=He(B=>{if(!ce&&!s&&!U){L();let _=mo(B.target);if(_!==-1&&_!==h){let J=n.data[_];!J||J.disabled?A(-1):A(_)}}},[U,ce,s,A,L,h,n.data]),fe=()=>{var B;return h===void 0||h===-1||a||(B=n.data[h])==null?void 0:B.id};M.current=j.selected;let pe={"aria-activedescendant":fe(),onBlur:w.onBlur,onFocus:w.onFocus,onKeyDown:ee,onMouseDown:G,onMouseDownCapture:w.onMouseDownCapture,onMouseLeave:w.onMouseLeave},ge=m||{onClick:j.listHandlers.onClick,onMouseMove:ue};return{focusVisible:z.focusVisible,controlledHighlighting:z.controlledHighlighting,highlightedIndex:h,keyboardNavigation:z.keyboardNavigation,listHandlers:ge,listItemHeaderHandlers:W,listControlProps:pe,scrollIntoView:ie,selected:j.selected,setHighlightedIndex:A,setIgnoreFocus:z.setIgnoreFocus,setSelected:j.setSelected,...Q}};import{useIsomorphicLayoutEffect as Al}from"@salt-ds/core";import{useCallback as Kl,useMemo as Fl,useState as Wo}from"react";var $l=(e,t,n=0)=>e===0?0:n===0?e*t:e-1*(t+n)+t,Mt=({borderless:e,displayedItemCount:t,getItemHeight:n,height:o,itemCount:r,itemGapSize:l,itemHeight:i,rootRef:s,rowHeightRef:a})=>{let[c,d]=Wo(36),[f,u]=Wo(),[I,m]=Fl(()=>{let g=e?0:2,S=i!=null?i:c,E=$l(r,S,l);if(o!==void 0&&typeof o=="number"||typeof o=="string")return[E,o];let v=Math.min(t,r)||t;return typeof n=="function"?g+=Array(v).fill(0).reduce((T,N,P)=>T+n(P)+l,0)-l:g+=v*Number(S)+(v-1)*l,[E,g,f]},[e,f,t,n,o,r,l,i,c]);Al(()=>{if(s.current){let{clientHeight:g}=s.current;u(g)}},[s]);let p=Kl(({height:g})=>{typeof g=="number"&&d(g)},[]);return Oe(a,Ao,p,!0),{contentHeight:I,listClientHeight:f,listItemHeight:c,listHeight:m}};import{useIsomorphicLayoutEffect as zl}from"@salt-ds/core";import{useCallback as Bl,useMemo as _l,useRef as ln,useState as Vl}from"react";var Uo=(e,t,n,o)=>{let r=Math.ceil(t/o),l=Math.floor(e/o),i=Math.ceil(l+r-1);return{atStart:l===0,atEnd:i===n-1,from:l,to:i}},Ct=({containerSize:e,itemCount:t,itemGapSize:n=0,itemSize:o,onViewportScroll:r})=>{let l=ln(0),i=ln(0),s=ln(0),a=_l(()=>Uo(s.current,e,t,o+n),[e,t,o,n]),[c,d]=Vl(a);return zl(()=>{d(a)},[a]),{onVerticalScroll:Bl(u=>{let I=u.target.scrollTop;if(I!==s.current){s.current=I;let m=o+n,p=Uo(I,e,t,m);(p.from!==l.current||p.to!==i.current)&&(l.current=p.from,i.current=p.to,r==null||r(p.from,p.to),d(p))}},[o,n,e,t,r]),viewportRange:c}};import{Fragment as Yl,jsx as We,jsxs as jo}from"react/jsx-runtime";import{createElement as Xl}from"react";var ql="No data to display",ot="vuuList",Ym=jl(function({ListItem:t=It,ListPlaceholder:n,allowDragDrop:o,borderless:r,children:l,className:i,collapsibleHeaders:s=!1,defaultHighlightedIndex:a,defaultSelected:c,disabled:d=!1,disableFocus:f=!1,disableTypeToSelect:u,displayedItemCount:I=10,emptyMessage:m,focusVisible:p,getItemHeight:g,getItemId:S,height:E,highlightedIndex:v,id:x,itemGapSize:T=0,itemHeight:N,itemTextHighlightPattern:P,itemToString:H=Be,listHandlers:k,maxHeight:O,maxWidth:$,minHeight:b,minWidth:M,onMoveListItem:C,onSelect:R,onSelectionChange:D,onHighlight:h,restoreLastFocus:y,selected:L,selectionStrategy:w,checkable:A=w==="multiple",scrollingApiRef:z,selectionKeys:W,showEmptyMessage:V=!1,source:j,style:K,stickyHeaders:F,tabToSelect:Z,width:X,...oe},G){let U=Gl(x),Y=cn(null),Q=cn(null),q=cn(null),ee=Dt({id:U,label:"List",source:j,children:l,options:{collapsibleHeaders:s,getItemId:S,itemToString:H}}),{listClientHeight:le,listHeight:ie,listItemHeight:ce}=Mt({borderless:r,displayedItemCount:I,getItemHeight:g,height:E,itemCount:ee.data.length,itemGapSize:T,itemHeight:N,rootRef:Y,rowHeightRef:q}),{onVerticalScroll:ue,viewportRange:fe}=Ct({containerSize:le!=null?le:typeof ie=="number"?ie:0,itemCount:ee.data.length,itemGapSize:T,itemSize:ce}),{draggable:pe,draggedItemIndex:ge,dropIndicator:B,focusVisible:_,highlightedIndex:J,listControlProps:te,listHandlers:re,listItemHeaderHandlers:Se,scrollIntoView:ye,selected:Me}=Ht({allowDragDrop:o,collapsibleHeaders:s,collectionHook:ee,containerRef:Y,contentRef:Q,defaultHighlightedIndex:a,defaultSelected:ee.itemToCollectionItem(c),disabled:d,disableTypeToSelect:u,highlightedIndex:v,id:U,label:U,listHandlers:k,onMoveListItem:C,onSelect:R,onSelectionChange:D,onHighlight:h,restoreLastFocus:y,selected:ee.itemToCollectionItem(L),selectionStrategy:w,selectionKeys:W,stickyHeaders:F,tabToSelect:Z,viewportRange:fe});wt({collectionHook:ee,forwardedRef:z,scrollableRef:Y,scrollIntoView:ye});let Le=p!=null?p:_,De=function(ne,ae,de,se){let Re=Xl(t,{...Se,className:an(`${ot}Header`,{focusVisible:s&&Le===ne.value}),"aria-expanded":se,"data-idx":s?ne.value:void 0,"data-index":s?ne.value:void 0,"data-highlighted":ne.value===J||void 0,"data-sticky":F,"data-selectable":!1,id:ae,key:`header-${ne.value}`,label:de});return ne.value+=1,Re},je=g===void 0?()=>N:g;function Ur(we,ne,ae){var ct,wn;let{disabled:de,value:se,id:Re,label:it}=ne,at=Zl(se),Ze={className:an((ct=se==null?void 0:se.props)==null?void 0:ct.className,{vuuHighlighted:ae.value===J,vuuFocusVisible:Le===ae.value,["vuuDraggable-dragAway"]:ge===ae.value}),disabled:de||d,id:Re,item:at?void 0:(wn=ne==null?void 0:ne.value)!=null?wn:void 0,itemHeight:je(ae.value),itemTextHighlightPattern:P,key:Re,"data-idx":ae.value,"data-index":ae.value,label:it,role:"option",selected:Tt(Me,ne),showCheckbox:A};we.push(at?Ul(se,Ze):We(t,{...Ze})),ae.value+=1}let jr=function(ne,ae,de){let{count:se=0,id:Re,expanded:it,label:at=""}=ae[de.value],Ze=De(de,Re,at,it),ct=it!==!1?[Ze].concat(Dn(ae,de,de.value+se)||[]):Ze;ne.push(We("div",{role:"group",children:ct},Re))},Dn=(we,ne={value:0},ae=we.length)=>{let de=[];for(;ne.value<ae;){let se=we[ne.value];se.header?de.push(De(ne,se.id,se.label,se.expanded===!1)):se.childNodes?jr(de,we,ne):Ur(de,se,ne)}return de};function Zr(){return m||V?We("span",{className:`${ot}-empty-message`,children:m!=null?m:ql}):null}let qr=()=>{if(ee.data.length){let we=ee.data;return Dn(we)}else Zr()},Xr="auto",Yr={"--list-item-gap":T?`${T}px`:void 0,minWidth:M,minHeight:b,width:X!=null?X:"100%",height:E!=null?E:"100%",maxWidth:$!=null?$:X,maxHeight:O!=null?O:ie};return jo("div",{"aria-multiselectable":w==="multiple"||w==="extended"||w==="extended-multi-range"||void 0,...oe,...re,...te,className:an(ot,i,{[`${ot}-collapsible`]:s,vuuFocusVisible:J===nn}),id:`${U}`,ref:Wl(Y,G),role:"listbox",onScroll:ue,style:{...K,...Yr},tabIndex:d||f?void 0:0,children:[We(bt,{ref:q}),ee.data.length===0&&n!==void 0?We(Yl,{children:We(n,{})}):jo("div",{className:`${ot}-scrollingContentContainer`,ref:Q,style:{height:Xr},children:[qr(),B,pe]})]})});import{makePrefixer as ei,useForkRef as ti,useIdMemo as ni}from"@salt-ds/core";function Zo(e){var t,n,o="";if(typeof e=="string"||typeof e=="number")o+=e;else if(typeof e=="object")if(Array.isArray(e))for(t=0;t<e.length;t++)e[t]&&(n=Zo(e[t]))&&(o&&(o+=" "),o+=n);else for(t in e)e[t]&&(o&&(o+=" "),o+=t);return o}function un(){for(var e,t,n=0,o="";n<arguments.length;)(e=arguments[n++])&&(t=Zo(e))&&(o&&(o+=" "),o+=t);return o}import{forwardRef as oi,memo as ri,useRef as Yo}from"react";import{useMemo as Jl}from"react";var Nt=class{constructor(t=0,n=0){this.keys=new Map,this.free=[],this.nextKeyValue=0,this.reset(t,n)}next(){return this.free.length?this.free.pop():this.nextKeyValue++}reset(t,n){this.keys.forEach((r,l)=>{(l<t||l>=n)&&(this.free.push(r),this.keys.delete(l))});let o=n-t;this.keys.size+this.free.length>o&&(this.free.length=o-this.keys.size);for(let r=t;r<n;r++)if(!this.keys.has(r)){let l=this.next();this.keys.set(r,l)}}keyFor(t){return this.keys.get(t)}};var Ql=([e],[t])=>e-t,qo=5,Xo=({data:e,listItemGapSize:t=0,listItemHeight:n,viewportRange:o})=>{let r=Jl(()=>new Nt(0,1),[]),l=n+t,i=Math.max(0,o.from-qo),s=Math.min(e.length,o.to+qo);return r.reset(i,s),e.slice(i,s).map((c,d)=>[r.keyFor(d+i),(d+i)*l,d+i+1,c]).sort(Ql)};import{jsx as Rt,jsxs as ii}from"react/jsx-runtime";var si="No data to display",Lt=ei("saltList"),li=ri(It),Tf=oi(function({borderless:t,children:n,className:o,collapsibleHeaders:r=!1,defaultHighlightedIndex:l,defaultSelected:i,disabled:s=!1,disableFocus:a=!1,disableTypeToSelect:c,displayedItemCount:d=10,emptyMessage:f,getItemHeight:u,getItemId:I,height:m,highlightedIndex:p,id:g,itemGapSize:S=0,itemHeight:E,itemTextHighlightPattern:v,itemToString:x,maxHeight:T,maxWidth:N,minHeight:P,minWidth:H,onSelect:k,onSelectionChange:O,onViewportScroll:$,onHighlight:b,restoreLastFocus:M,selected:C,selectionStrategy:R,scrollingApiRef:D,selectionKeys:h,showEmptyMessage:y=!1,source:L,style:w,stickyHeaders:A,tabToSelect:z,width:W,...V},j){let K=ni(g),F=Yo(null),Z=Yo(null),X=Dt({id:K,label:"List",source:L,children:n,options:{collapsibleHeaders:r,getItemId:I,itemToString:x}}),{contentHeight:oe,listItemHeight:G,listHeight:U}=Mt({borderless:t,displayedItemCount:d,height:m,itemCount:X.data.length,itemGapSize:S,itemHeight:E,rootRef:F,rowHeightRef:Z}),{focusVisible:Y,highlightedIndex:Q,listControlProps:q,listHandlers:ee,scrollIntoView:le,selected:ie}=Ht({collapsibleHeaders:r,collectionHook:X,containerRef:F,defaultHighlightedIndex:l,defaultSelected:X.itemToCollectionItem(i),disabled:s,disableTypeToSelect:c,highlightedIndex:p,label:K,onSelect:k,onSelectionChange:O,onHighlight:b,restoreLastFocus:M,selected:X.itemToCollectionItem(C),selectionStrategy:R,selectionKeys:h,stickyHeaders:A,tabToSelect:z}),{onVerticalScroll:ce,viewportRange:ue}=Ct({containerSize:typeof U=="number"?U:0,itemCount:X.data.length,itemGapSize:S,itemSize:G});console.log({viewPortRange:ue});let fe=Xo({data:X.data,listItemGapSize:S,listItemHeight:G,viewportRange:ue});wt({collectionHook:X,forwardedRef:D,scrollableRef:F,scrollIntoView:le});function pe(te,re,Se){let[ye,Me,Le,De]=re,je=Le-1;te.push(Rt(li,{"aria-setsize":X.data.length,"aria-posinset":Le,className:un(o,{saltHighlighted:je===Q,saltFocusVisible:Y===je}),"data-idx":je,item:De,label:De.label,"data-offset":Me,role:"option",selected:Tt(ie,De),id:De.id,translate3d:Me},ye)),Se.value+=1}function ge(te,re={value:0},Se=te.length){let ye=[];for(;re.value<Se;){let Me=te[re.value];pe(ye,Me,re)}return ye}function B(){return f||y?Rt("span",{className:Lt("empty-message"),children:f!=null?f:si}):null}let _=()=>{if(fe.length)return ge(fe);B()},J={"--list-item-gap":S?`${S}px`:void 0,minWidth:H,minHeight:P,width:W!=null?W:"100%",height:m!=null?m:"100%",maxWidth:N!=null?N:W,maxHeight:T!=null?T:U};return Rt("div",{...V,...ee,...q,className:un(Lt(),o,Lt("virtualized")),id:`${K}`,ref:ti(F,j),role:"listbox",onScroll:ce,style:{...w,...J},tabIndex:s||a?void 0:0,children:ii("div",{className:Lt("scrollingContentContainer"),style:{height:oe},children:[Rt(bt,{ref:Z}),_()]})})});import{asReactElements as wi,OverflowContainer as Hi,useId as Mi}from"@vuu-ui/vuu-layout";import{Button as Ci}from"@salt-ds/core";import Ni from"classnames";import Li,{useMemo as Ri,useRef as ki}from"react";import{useCallback as me,useRef as Ti}from"react";var Jo=e=>typeof e=="object"&&e!==null&&"tabIndex"in e&&typeof e.tabIndex=="number",Qo=e=>({label:"Close",location:"tab",action:"close-tab",options:e}),er=e=>({label:"Rename",location:"tab",action:"rename-tab",options:e});var ai=e=>{if(e){let t=parseInt(e.dataset.index||"");if(!isNaN(t))return t}return-1},tr=(e,t)=>{if(e){let n=e.querySelector(`[data-index]:has(${t})`);return ai(n)}return-1},dn=e=>tr(e,'[aria-selected="true"]'),nr=e=>tr(e,".vuuEditableLabel-editing");import{isValidNumber as mn,MEASURES as ci}from"@vuu-ui/vuu-utils";import{useCallback as fn,useMemo as ui,useRef as or}from"react";var rr=(e,t,n="horizontal")=>{let o=or(!1),r=fn(()=>{o.current=!0},[]),l=fn(()=>{o.current=!1},[]),i=fn(()=>{var a,c;(a=e.current)==null||a.style.setProperty("--tab-thumb-transition","none"),(c=e.current)==null||c.removeEventListener("transitionend",i)},[e]),s=or(-1);return ui(()=>{var d,f;let a=0,c=0;if(s.current!==-1){let u=(d=e.current)==null?void 0:d.querySelector(".vuuTab-selected"),I=(f=e.current)==null?void 0:f.querySelector(`[data-index="${t}"] .vuuTab`),{positionProp:m,sizeProp:p}=ci[n];if(u&&I&&!o.current){let{[m]:g,[p]:S}=u.getBoundingClientRect(),{[m]:E}=I.getBoundingClientRect();if(mn(g)&&mn(E)&&mn(S)){console.log({orientation:n,positionProp:m,oldPosition:g,newPosition:E}),a=g-E,c=S;let x=Math.abs(a/(n==="horizontal"?1100:700));requestAnimationFrame(()=>{var T,N,P,H;(T=e.current)==null||T.style.setProperty("--tab-thumb-offset","0px"),(N=e.current)==null||N.style.setProperty("--tab-thumb-size","100%"),(P=e.current)==null||P.style.setProperty("--tab-thumb-transition",`all ${x}s ease`),(H=e.current)==null||H.addEventListener("transitionend",i)})}}}return s.current=t,o.current?{containerStyle:{"--tab-thumb-offset":"0px","--tab-thumb-size":"100%"},resumeAnimation:l,suspendAnimation:r}:{containerStyle:{"--tab-thumb-offset":`${a}px`,"--tab-thumb-size":c?`${c}px`:void 0},resumeAnimation:l,suspendAnimation:r}},[t,e,n,i,l,r])};import{useControlled as di}from"@salt-ds/core";import{getFocusableElement as mi}from"@vuu-ui/vuu-utils";import{useCallback as ve,useRef as pn,useState as sr}from"react";import{ArrowDown as cr,ArrowUp as fi,ArrowLeft as pi,ArrowRight as gi,Home as lr,End as ir}from"@vuu-ui/vuu-utils";var ur={horizontal:{[lr]:"start",[ir]:"end",[pi]:"bwd",[gi]:"fwd"},vertical:{[lr]:"start",[ir]:"end",[fi]:"bwd",[cr]:"fwd"}},bi=(e,t="horizontal")=>ur[t][e]!==void 0,Ii=e=>e===cr;function ar(e,t,n){return t==="start"?0:t==="end"?e-1:t==="bwd"?n>0?n-1:n:n===null?0:n===e-1?n:n+1}var hi=e=>e!==null&&!e.classList.contains("wrapped"),kt=(e,t)=>e?e.querySelector(`[data-index="${t}"]`):null,dr=({containerRef:e,defaultHighlightedIdx:t=-1,highlightedIdx:n,keyBoardActivation:o,orientation:r,selectedIndex:l=0})=>{let i=o==="manual",s=pn(!1),a=pn(-1),[c,d]=sr(!1),[,f]=sr({}),[u,I]=di({controlled:n,default:t,name:"UseKeyboardNavigation"}),m=ve(b=>{I(a.current=b)},[I]),p=pn(!1),g=ve((b,M=!1,C,R=70)=>{m(b),C===!0&&!p.current&&(p.current=!0);let D=()=>{let h=kt(e.current,b);if(h){let y=mi(h);y==null||y.focus()}};M?D():setTimeout(D,R)},[e,m]),S=b=>{if(a.current===-1&&b.target.tabIndex!==-1){let M=nr(e.current);M!==-1?requestAnimationFrame(()=>{m(M)}):setTimeout(()=>{a.current===-1&&l!==null&&m(l)},200)}},E=ve(()=>{var b,M;return(M=(b=e.current)==null?void 0:b.querySelectorAll("[data-index]").length)!=null?M:0},[e]),v=ve((b="fwd",M)=>{let C=E(),D=ar(C,b,typeof M=="number"?M:C),h=b==="start"?"fwd":b==="end"?"bwd":b;for(;(h==="fwd"&&D<C||h==="bwd"&&D>0)&&!hi(kt(e.current,D));){let y=ar(C,h,D);if(y===D)break;D=y}return D},[e,E]),x=ve((b,M=!1)=>{let C=ur[r][b.key],R=v(C,u);R!==u?i&&g(R,!0):M&&f({})},[u,i,v,g,r]),T=ve(()=>{let b=kt(e.current,u);return b?b.querySelector(".vuuPopupMenu")!=null:!1},[e,u]),N=ve(()=>{let b=kt(e.current,u),M=b==null?void 0:b.querySelector(".vuuPopupMenu");if(M){let C=new MouseEvent("click",{view:window,bubbles:!0,cancelable:!0});M.dispatchEvent(C)}return!1},[e,u]),P=ve(b=>{E()>0&&bi(b.key,r)?(b.preventDefault(),p.current?x(b):(p.current=!0,x(b,!0))):Ii(b.key)&&T()&&N()},[N,E,T,x,r]),H=(b,M)=>{m(M)},k=ve(()=>{c||(d(!0),s.current?s.current=!1:p.current=!0)},[c]),O=ve(()=>{c||(s.current=!0),p.current=!1},[c]);return{containerProps:{onBlur:b=>{let M=b.target.closest(".vuuTabstrip"),C=b.relatedTarget;M&&!(M!=null&&M.contains(C))&&(m(-1),d(!1))},onMouseDownCapture:O,onFocus:k,onMouseLeave:()=>{p.current=!0,m(-1),s.current=!1}},focusVisible:p.current?u:-1,focusIsWithinComponent:c,highlightedIdx:u,focusTab:g,onClick:H,onFocus:S,onKeyDown:P,setHighlightedIdx:m}};import{useControlled as xi}from"@salt-ds/core";import{useCallback as Pt}from"react";var Si=["Enter"," "],yi=e=>e&&e.matches('[class*="vuuTab "]'),mr=({defaultSelected:e,highlightedIdx:t,onSelectionChange:n,selected:o})=>{let[r,l,i]=xi({controlled:o,default:e!=null?e:0,name:"Tabstrip",state:"value"}),s=Pt(f=>Si.includes(f.key),[]),a=Pt(f=>{l(f),n==null||n(f)},[n,l]),c=Pt(f=>{let u=f.target;s(f)&&t!==r&&yi(u)&&(f.stopPropagation(),f.preventDefault(),a(t))},[s,t,r,a]),d=Pt((f,u)=>{u!==r&&a(u)},[a,r]);return{activateTab:a,isControlled:i,onClick:d,onKeyDown:c,selected:r}};var Ei=new Set(["Enter"," "]),vi=e=>Ei.has(e),Di=(e,t)=>e?e.querySelector(`[data-index="${t}"]`):null,fr=({activeTabIndex:e,allowDragDrop:t,animateSelectionThumb:n,containerRef:o,onActiveChange:r,onAddTab:l,onCloseTab:i,onExitEditMode:s,onMoveTab:a,orientation:c,keyBoardActivation:d})=>{let f=Ti(e),{focusTab:u,highlightedIdx:I,onClick:m,onKeyDown:p,setHighlightedIdx:g,...S}=dr({containerRef:o,keyBoardActivation:d,orientation:c,selectedIndex:f.current}),{activateTab:E,onClick:v,onKeyDown:x,selected:T}=mr({highlightedIdx:I,onSelectionChange:r,selected:e});f.current=T;let{containerStyle:N,resumeAnimation:P,suspendAnimation:H}=rr(o,n?T:-1,c),k=me((K,F)=>{let{current:Z}=f;console.log(`useTabstrip handleDrop ${K} - ${F} ${Z}`),a==null||a(K,F);let X=-1;F!==-1&&(Z===K?X=F:K>Z&&F<=Z?X=Z+1:K<Z&&F>=Z&&(X=Z-1),X!==-1&&(H(),E(X),requestAnimationFrame(P)),u(F,!1,!1,350))},[u,a,P,E,H]),{onMouseDown:O,...$}=ft({allowDragDrop:t,containerRef:o,draggableClassName:`tabstrip-${c}`,onDrop:k,orientation:"horizontal",itemQuery:".vuuOverflowContainer-item"}),b=me((K,F,Z,X)=>{console.log(`handleExitEditMode ${K} ${F} ${Z} ${X}`),s==null||s(K,F,Z,X),Z||u(X,!1,!0)},[u,s]),M=me((K,F)=>{m(K,F),v(K,F)},[m,v]),C=me((K=I)=>{let F=Di(o.current,K);if(F)return F.querySelector(".vuuEditableLabel")},[o,I]),R=me((K=I)=>{let F=C(K);return F?F.classList.contains("vuuEditableLabel-editing"):!1},[C,I]),D=me((K=I)=>{let F=C(K);if(F){let Z=new MouseEvent("dblclick",{view:window,bubbles:!0,cancelable:!0});F.dispatchEvent(Z)}},[C,I]),h=me(K=>{p(K),K.defaultPrevented||x(K),!K.defaultPrevented&&vi(K.key)&&D()},[D,p,x]),y=me(K=>{let F=dn(o.current),Z=F>K?F-1:F===K?0:F;return H(),i==null||i(K,Z),setTimeout(()=>{P()},200),!0},[o,i,P,H]),L=me(K=>(D(K),!0),[D]),w=me(K=>{if(Jo(K.options))switch(K.menuId){case"close-tab":return y(K.options.tabIndex);case"rename-tab":return L(K.options.tabIndex);default:console.log(`tab menu action ${K.menuId}`)}return!1},[y,L]),A=me(()=>{R()?g(I):u(I)},[I,u,g,R]),z=me(K=>{let F=parseInt(K.index);isNaN(F)||E(F)},[E]),W={onFocus:S.onFocus,onKeyDown:h},V=me(()=>{l==null||l(),requestAnimationFrame(()=>{let K=dn(o.current);K!==-1&&u(K)})},[o,u,l]),j={onClick:M,onKeyDown:h,onExitEditMode:b,onMenuAction:w,onMenuClose:A,onMouseDown:O};return{activeTabIndex:T,containerStyle:N,focusVisible:S.focusVisible,containerProps:{...S.containerProps,onSwitchWrappedItemIntoView:z},navigationProps:W,onClickAddTab:V,tabProps:j,...$}};import{Fragment as Ai,jsx as Oi,jsxs as Ki}from"react/jsx-runtime";import{createElement as Pi}from"react";var gn="vuuTabstrip",Dp=({activeTabIndex:e,allowAddTab:t,allowCloseTab:n,allowDragDrop:o=!1,allowRenameTab:r=!1,animateSelectionThumb:l=!1,children:i,className:s,id:a,keyBoardActivation:c="manual",location:d,onActiveChange:f,onAddTab:u,onCloseTab:I,onExitEditMode:m,onMoveTab:p,orientation:g="horizontal",showTabMenuButton:S,style:E,...v})=>{let x=ki(null),{activeTabIndex:T,focusVisible:N,containerStyle:P,draggedItemIndex:H,onClickAddTab:k,tabProps:O,...$}=fr({activeTabIndex:e,allowDragDrop:o,animateSelectionThumb:l,containerRef:x,keyBoardActivation:c,onActiveChange:f,onAddTab:u,onCloseTab:I,onExitEditMode:m,onMoveTab:p,orientation:g}),b=Mi(a),M=Ni(gn,`${gn}-${g}`,s),C=E||P?{...E,...P}:void 0,R=Ri(()=>wi(i).map((D,h)=>{let{id:y=`${b}-tab-${h}`,closeable:L=n,editable:w=r,showMenuButton:A=S}=D.props,z=h===T;return Li.cloneElement(D,{...O,...$.navigationProps,closeable:L,"data-overflow-priority":z?"1":void 0,dragging:H===h,editable:w,focusVisible:N===h,id:y,index:h,key:h,location:d,selected:z,showMenuButton:A,tabIndex:z?0:-1})}).concat(t?Pi(Ci,{...$.navigationProps,"aria-label":"Create Tab",className:`${gn}-addTabButton`,"data-icon":"add","data-overflow-priority":"1",key:"addButton",onClick:k,variant:"secondary",tabIndex:-1}):[]),[T,t,n,r,i,N,b,d,k,S,O,H,$.navigationProps]);return Ki(Ai,{children:[Oi(Hi,{...v,...$.containerProps,className:M,height:28,id:b,orientation:g,overflowIcon:"more-horiz",ref:x,style:C,children:R}),$.draggable]})};import{useForkRef as Vi}from"@salt-ds/core";import Gi from"classnames";import{forwardRef as Wi,useCallback as Ui,useRef as gr}from"react";import{PopupMenu as Fi}from"@vuu-ui/vuu-popups";import{useMemo as $i}from"react";import zi from"classnames";import{jsx as _i}from"react/jsx-runtime";var Bi="vuuTabMenu",pr=({allowClose:e,allowRename:t,location:n,onMenuAction:o,onMenuClose:r,index:l})=>{let[i,s]=$i(()=>[(a,c)=>{let d=[];return t&&d.push(er(c)),e&&d.push(Qo(c)),d},{tabIndex:l}],[e,t,l]);return _i(Fi,{className:Bi,menuBuilder:i,menuActionHandler:o,menuLocation:zi("tab",n),menuOptions:s,onMenuClose:r,tabIndex:-1})};import{jsx as Ot,jsxs as ji}from"react/jsx-runtime";var Ae="vuuTab",br=()=>{},Qp=Wi(function({ariaControls:t,children:n,className:o,closeable:r=!1,dragging:l,editable:i=!1,editing:s,focusVisible:a,index:c=-1,label:d,location:f,onClick:u,onClose:I,onEnterEditMode:m=br,onExitEditMode:p=br,onFocus:g,onKeyUp:S,onMenuAction:E,onMenuClose:v,orientation:x,selected:T,showMenuButton:N=r||i,tabIndex:P,...H},k){if(N&&typeof E!="function")throw Error("Tab onMenuAction must be provided if showMenuButton is set");let O=gr(null),$=gr(null),b=Vi(k,O),M=Ui(y=>{s||(y.preventDefault(),u==null||u(y,c))},[s,c,u]),C=(y="",L="",w=!0)=>p(y,L,w,c),R=y=>{switch(y.key){case"Backspace":case"Delete":r&&(y.stopPropagation(),I&&I(c));break;default:S&&S(y,c)}},D=()=>i?Ot(Yn,{editing:s,defaultValue:d,onEnterEditMode:m,onExitEditMode:C,ref:$},d):d,h=y=>{if($.current){let w=$.current.querySelector(".vuuEditableLabel-input");w==null||w.focus()}g==null||g(y)};return ji("div",{...H,"aria-controls":t,"aria-selected":T,className:Gi(Ae,{[`${Ae}-closeable`]:r,"vuuDraggable-dragAway":l,[`${Ae}-editing`]:s,[`${Ae}-selected`]:T||void 0,[`${Ae}-vertical`]:x==="vertical",vuuFocusVisible:a}),onClick:M,onFocus:h,onKeyUp:R,ref:b,role:"tab",tabIndex:P,children:[Ot("div",{className:`${Ae}-main`,children:Ot("span",{className:`${Ae}-text`,"data-text":i?void 0:d,children:n!=null?n:D()})}),N?Ot(pr,{allowClose:r,allowRename:i,location:f,onMenuAction:E,onMenuClose:v,index:c}):null]})});import{useForkRef as Ea,useIdMemo as va}from"@salt-ds/core";import vn from"classnames";import{forwardRef as Da,useRef as wa}from"react";function Zi(e){var t;if(e){let n=e.dataset.idx;if(n)return parseInt(n,10);if(n=(t=e.ariaPosInSet)!=null?t:"-1")return parseInt(n,10)-1}}var bn=e=>e.closest("[data-idx],[aria-posinset]");var Ir=e=>Zi(bn(e));import{useCallback as In,useMemo as qi}from"react";var Xi=new Set(["/","-","."]),Yi=e=>Xi.has(e),hr=(e,t)=>t.startsWith(e)&&Yi(t[e.length]),xr=(e,t="root",{collapsibleHeaders:n=void 0,defaultExpanded:o=!1,revealSelected:r=!1}={})=>{let l=(u,I,m)=>{if(u.childNodes)return u.childNodes.length;if(u.header){let p=m+1,g=0;for(;p<I.length&&!I[p].header;)g++,p++;return g}else return 0},i=In(u=>Array.isArray(r)?r.some(I=>hr(u,I)):o,[o,r]),s=In((u,I,m=1,p="",g=[],S=[])=>{let E=0;return u.forEach((v,x,T)=>{var C;let N=v.header&&n,P=v.childNodes&&n===!1,H=!v.childNodes||v.childNodes.length===0,k=P||H&&!N,O=p?`${p}.${x}`:`${x}`,$=(C=v.id)!=null?C:`${t}-${O}`,b=k?void 0:i($),M={...v,childNodes:void 0,id:$,count:!P&&b===void 0?0:l(v,T,x),expanded:b,index:I.index,level:m};if(g.push(M),S.push(u[x]),E+=1,I.index+=1,v.childNodes){let[R,D]=s(v.childNodes,I,m+1,O,[],S);M.childNodes=D,(b===!0||P)&&(E+=R)}}),[E,g,S]},[n,t,i]),[a,c,d]=qi(()=>s(e,{index:0}),[s,e]),f=In((u,I=c)=>{let m=I.find(p=>{var g;return p.id===u||((g=p==null?void 0:p.childNodes)==null?void 0:g.length)&&hr(p.id,u)});if((m==null?void 0:m.id)===u)return d[m.index];if(m)return f(u,m.childNodes)},[d,c]);return[a,c,f]};import{useCallback as rt,useRef as Ji}from"react";import{useControlled as Qi}from"@salt-ds/core";var Sr="single",ea="checkbox",ta="multi",na="extended",oa=["Enter"," "],yr={},ra=e=>e.expanded!==void 0,Tr=e=>e&&e!=="none",Er=({defaultSelected:e,highlightedIdx:t,treeNodes:n,onChange:o,selected:r,selection:l=Sr,selectionKeys:i=oa})=>{let s=l===Sr,a=l===ta||l.startsWith(ea),c=l===na,d=Ji(-1),f=rt(x=>i.includes(x.key),[i]),[u,I]=Qi({controlled:r,default:e!=null?e:[],name:"selected"}),m=rt((x,T,N,P,H=!1)=>{let{current:k}=d,O=u==null?void 0:u.includes(N),b=s||c&&!H&&(!P||k===-1),M=a||c&&H&&!P,C=[];if(b&&O)C=[];else if(b)C=[N];else if(M&&O)C=u.filter(R=>R!==N);else if(M)C=u.concat(N);else if(c){let[R,D]=T>k?[k,T]:[T,k];C=u.slice();for(let h=R;h<=D;h++){let{id:y}=n[h];u.includes(y)||C.push(y)}}I(C),o&&o(x,C)},[c,n,a,o,u,I,s]),p=rt(x=>{if(~t&&f(x)){x.preventDefault();let T=n[t];m(x,t,T.id,!1,x.ctrlKey||x.metaKey),c&&(d.current=t)}},[c,t,n,f,m]),g=rt((x,T)=>{if(c&&x.shiftKey){let N=n[T];m(x,T,N.id,!0)}},[c,n,m]),S=l==="none"?yr:{onKeyDown:p,onKeyboardNavigation:g},E=rt(x=>{if(t!==-1){let T=n[t];ra(T)||(x.preventDefault(),x.stopPropagation(),m(x,t,T.id,x.shiftKey,x.ctrlKey||x.metaKey),c&&(d.current=t))}},[c,t,n,m]);return{listHandlers:S,listItemHandlers:l==="none"?yr:{onClick:E},selected:u,setSelected:I}};import{useCallback as hn,useEffect as vr,useLayoutEffect as sa,useRef as At}from"react";var la=["height","scrollHeight"],Dr=(e,t,n=!1)=>{let o=At(0),r=At(!1),l=At(0),i=At(0),s=hn(d=>{let f=d.ariaExpanded?d.firstChild:d,u=n?30:0,I=f.offsetTop,m=f.offsetHeight,p=o.current+u,g=p+l.current-u;(I+m>g||I<p)&&(o.current=I+m>g?o.current+(I+m)-g:I-u,r.current=!0,e.current&&(e.current.scrollTop=o.current),setTimeout(()=>{r.current=!1}))},[e,n]),a=hn(d=>{o.current=d.target.scrollTop},[]);vr(()=>{let{current:d}=e;return d&&d.addEventListener("scroll",a),()=>{d&&d.removeEventListener("scroll",a)}},[e,a]),sa(()=>{if(t!==-1&&i.current>l.current&&e.current){let d=e.current.querySelector(`
214
4
  [data-idx='${t}'],
215
5
  [aria-posinset='${t+1}']
216
- `);m===null?console.log("[useViewportTracking], is this virtualised ? we're going to have to know rowHeight"):l(m)}},[t,e,l]),Xs(()=>{},[o]);let s=Vo(({height:m,scrollHeight:d})=>{a.current=m,i.current=d},[]);return Ys(e,cd,s,!0),n};import{useCallback as hi,useRef as Cd}from"react";import{useCallback as pt,useMemo as li,useRef as ci}from"react";var ei=({id:e})=>{let t=e.lastIndexOf("-");if(t!==-1){let r=e.slice(t+1).split(".");return r.length===1?null:(r.pop(),`${e.slice(0,t)}-${r.join(".")}`)}else if((t=e.lastIndexOf("/"))!==-1)return e.slice(0,t)},ti=e=>e.childNodes!==void 0;var zo=e=>e.header===!0,ud=new Set([".","/"]),oi=(e,t)=>t.startsWith(e.id)?ud.has(t.charAt(e.id.length)):!1,Ke=(e,t)=>{for(let o of e){if(o.id===t)return o;if(oi(o,t))return Ke(o.childNodes,t)}},_t=(e,t)=>{let o=typeof t=="string"?t:t.id;for(let r=0;r<e.length;r++)if(e[r].id===o)return r},Wt=(e,t,o)=>{let r;return e.map(a=>a.id===t?{...a,...o}:oi(a,t)?(r=Wt(a.childNodes,t,o),{...a,childNodes:r}):a)};import{useControlled as xd}from"@salt-ds/core";function dd(e,...t){let o=new Set(e);for(let r of t)for(let n of r)o.add(n);return o}var Uo="ArrowUp",ri="ArrowDown",Ze="ArrowLeft";var ni="ArrowRight",Gt="Enter";var md="Delete",pd=new Set([Gt,md]),fd=new Set(["Tab"]),gd=new Set(["ArrowRight","ArrowLeft"]),si=new Set(["Home","End","ArrowDown","ArrowUp"]),ii=new Set(["Home","End","ArrowRight","ArrowLeft"]),hd=new Set(["F1","F2","F3","F4","F5","F6","F7","F8","F9","F10","F11","F12"]),oM=dd(pd,ii,si,gd,hd,fd);var ai=({key:e},t="vertical")=>(t==="vertical"?si:ii).has(e);function ui(e,t,o){return t===Uo||t===Ze?o>0?o-1:o:o===null?0:o===e-1?o:o+1}var bd=e=>!e.header&&!e.childNodes,Id=e=>bd(e)||e.expanded!==void 0,di=({defaultHighlightedIdx:e=-1,highlightedIdx:t,treeNodes:o,onHighlight:r,onKeyboardNavigation:n,selected:a=[]})=>{let{bwd:i,fwd:l}=li(()=>({bwd:Uo,fwd:ri}),[]),[c,s,m]=xd({controlled:t,default:e,name:"highlightedIdx"}),d=pt(v=>{r==null||r(v),s(v)},[r,s]),u=pt((v=l,L=v===l?-1:o.length)=>{let w=ui(o.length,v,L);for(;w!==-1&&(v===l&&w<o.length||v===i&&w>0)&&!Id(o[w]);)w=ui(o.length,v,w);return w},[i,l,o]),g=ci(!0),f=ci(!1),p=v=>f.current=v,x=pt(()=>{if(f.current)f.current=!1;else if(a.length>0){let v=Ke(o,a[0]);if(v){let L=_t(o,v);d(L)}}else d(u())},[o,u,a,d]),y=pt(v=>{let L=u(v.key,c);L!==c&&(d(L),n==null||n(v,L))},[c,u,n,d]),D=pt(v=>{o.length>0&&ai(v,"vertical")&&(v.preventDefault(),v.stopPropagation(),g.current=!0,y(v))},[o,y]),I=li(()=>({onBlur:()=>{d(-1)},onFocus:x,onKeyDown:D,onMouseDownCapture:()=>{g.current=!1,p(!0)},onMouseMove:()=>{g.current&&(g.current=!1)},onMouseLeave:()=>{g.current=!0,p(!1),d(-1)}}),[x,D,d]);return{focusVisible:g.current?c:-1,controlledHighlighting:m,highlightedIdx:c,hiliteItemAtIndex:d,keyBoardNavigation:g,listProps:I,setIgnoreFocus:p}};import{useRef as _o,useState as vd}from"react";var qt=(e,t=[],o={value:0})=>{let r=!1;for(let n of e)r&&!zo(n)||(t[o.value]=n,o.value+=1,r=!1,zo(n)&&n.expanded===!1?r=!0:ti(n)&&Wo(n)&&qt(n.childNodes,t,o));return t},mi=e=>{let t=_o(e),o=_o(e),r=_o(qt(e)),[,n]=vd({});e!==t.current&&(t.current=e,o.current=e,r.current=qt(e));let a=i=>{o.current=i,r.current=qt(i),n({})};return{data:o.current,indexPositions:r.current,setData:a}};import{useCallback as ft,useRef as pi}from"react";var yd={},Sd=e=>e&&e.hasAttribute("aria-expanded"),fi=({collapsibleHeaders:e,highlightedIdx:t,treeNodes:o,setVisibleData:r,source:n})=>{let a=pi(n),i=pi(a.current),l=ft(f=>{r(i.current=f)},[r]),c=ft((f,{id:p})=>Wt(f,p,{expanded:!0}),[]),s=ft((f,{id:p})=>Wt(f,p,{expanded:!1}),[]),m=ft(f=>{if(f.key===ni||f.key===Gt){let p=o[t];p&&p.expanded===!1&&(f.preventDefault(),l(c(i.current,p)))}if(f.key===Ze||f.key===Gt){let p=o[t];p&&p.expanded&&(f.preventDefault(),l(s(i.current,p)))}},[s,c,t,o,l]),d=e?{onKeyDown:m}:yd,g={onClick:ft(f=>{let p=Bo(f.target);if(Sd(p)){f.stopPropagation(),f.preventDefault();let x=Ke(n,p.id);(x==null?void 0:x.expanded)===!1?l(c(n,x)):(x==null?void 0:x.expanded)===!0&&l(s(n,x))}},[s,c,l,n])};return{listHandlers:d,listItemHandlers:g}};import{useCallback as Td}from"react";var gi=({highlightedIdx:e,hiliteItemAtIndex:t,indexPositions:o,source:r})=>({listHandlers:{onKeyDown:Td(i=>{if(i.key===Ze){let l=o[e],c=ei(l);if(c){i.preventDefault();let s=Ke(r,c);if(s){let m=_t(o,s);m!==void 0&&t(m)}}}},[e,t,o,r])}});var wd=[],xi=({defaultSelected:e,sourceWithIds:t,onChange:o,onHighlight:r,selected:n,selection:a})=>{let i=Cd(wd),l=mi(t),c=(I,v)=>{var L,w;(w=(L=u.listHandlers).onKeyboardNavigation)==null||w.call(L,I,v)},{highlightedIdx:s,...m}=di({treeNodes:l.indexPositions,onHighlight:r,onKeyboardNavigation:c,selected:i.current}),d=fi({collapsibleHeaders:!0,highlightedIdx:s,treeNodes:l.indexPositions,setVisibleData:l.setData,source:l.data}),u=qs({defaultSelected:e,highlightedIdx:s,treeNodes:l.indexPositions,onChange:o,selected:n,selection:a}),g=gi({source:l.data,highlightedIdx:s,hiliteItemAtIndex:m.hiliteItemAtIndex,indexPositions:l.indexPositions}),f=hi(I=>{var v,L,w;(v=d.listItemHandlers)==null||v.onClick(I),I.defaultPrevented||(w=(L=u.listItemHandlers)==null?void 0:L.onClick)==null||w.call(L,I)},[d,u]),p=hi(I=>{var v,L,w,M,h,E,H,O;(L=(v=m.listProps).onKeyDown)==null||L.call(v,I),I.defaultPrevented||(M=(w=u.listHandlers).onKeyDown)==null||M.call(w,I),I.defaultPrevented||(E=(h=d.listHandlers).onKeyDown)==null||E.call(h,I),I.defaultPrevented||(O=(H=g.listHandlers).onKeyDown)==null||O.call(H,I)},[d.listHandlers,m.listProps,u.listHandlers,g.listHandlers]),x=()=>{var I;return s===void 0||s===-1||(I=l.indexPositions[s])==null?void 0:I.id};i.current=u.selected;let y={"aria-activedescendant":x(),onBlur:m.listProps.onBlur,onFocus:m.listProps.onFocus,onKeyDown:p,onMouseDownCapture:m.listProps.onMouseDownCapture,onMouseLeave:m.listProps.onMouseLeave,onMouseMove:m.listProps.onMouseMove},D={onClick:f};return{focusVisible:m.focusVisible,highlightedIdx:s,hiliteItemAtIndex:m.hiliteItemAtIndex,listProps:y,listItemHandlers:D,selected:u.selected,visibleData:l.data}};import{jsx as Ee,jsxs as Go}from"react/jsx-runtime";import{createElement as Hd}from"react";var Me="vuuTree",Wo=e=>e.expanded===!0,bi=({children:e,idx:t,...o})=>Ee("li",{...o,children:e}),Ii=Ld(function({allowDragDrop:t,className:o,defaultSelected:r,groupSelection:n="none",id:a,onHighlight:i,onSelectionChange:l,revealSelected:c,selected:s,selection:m="single",source:d,...u},g){var k;let f=Ed(a),p=Dd(null),[,x,y]=Us(d,f,{revealSelected:c?(k=s!=null?s:r)!=null?k:!1:void 0}),D=(C,T)=>{if(l){let R=T.map(A=>y(A)).filter(A=>A!==void 0);l(R)}},{focusVisible:I,highlightedIdx:v,hiliteItemAtIndex:L,listProps:w,listItemHandlers:M,selected:h,visibleData:E}=xi({defaultSelected:r,groupSelection:n,onChange:D,onHighlight:i,selected:s,selection:m,sourceWithIds:x});Qs(p,v);let O={...{onMouseEnter:C=>{let T=C.target,R=Vs(T);L(R)}},...M,role:"treeitem"},b=Gs(n);function S(C,T,R){C.push(Go(bi,{...O,...Nd(T,R,v,h,I),children:[T.icon?Ee("span",{className:`${Me}Node-icon`,"data-icon":T.icon}):null,Ee("span",{children:T.label})]})),R.value+=1}function N(C,T,R,A,F){let{value:V}=R;R.value+=1,C.push(Hd(bi,{...M,"aria-expanded":T.expanded,"aria-level":T.level,"aria-selected":h.includes(A)||void 0,className:qo(`${Me}Node`,{focusVisible:I===V,[`${Me}Node-toggle`]:!b}),"data-idx":V,"data-highlighted":V===v||void 0,"data-selectable":!0,id:A,key:`header-${V}`},b?Go("div",{className:`${Me}Node-label`,children:[Ee("span",{className:`${Me}Node-toggle`}),F]}):Go("div",{className:`${Me}Node-label`,children:[T.icon?Ee("span",{className:`${Me}Node-icon`,"data-icon":T.icon}):null,Ee("span",{children:F})]}),Ee("ul",{role:"group",children:Wo(T)?P(T.childNodes,R):""})))}function P(C,T={value:0}){if((C==null?void 0:C.length)>0){let R=[];for(let A of C)A.childNodes?N(R,A,T,A.id,A.label):S(R,A,T);return R}}return Ee("ul",{...u,...w,className:qo(Me,o),id:`Tree-${f}`,ref:Md(p,g),role:"tree",tabIndex:0,children:P(E)})}),Nd=(e,t,o,r,n,a)=>({id:e.id,key:e.id,"aria-level":e.level,"aria-selected":r.includes(e.id)||void 0,"data-idx":t.value,"data-highlighted":t.value===o||void 0,className:qo("vuuTreeNode",a,{focusVisible:n===t.value})});Ii.displayName="Tree";var Pd=Ii;export{Od as DragDropProvider,ys as EditableLabel,Yo as NOT_HIDDEN,ht as NOT_OVERFLOWED,Ml as Tab,wl as Tabstrip,Pd as Tree,bi as TreeNode,Xo as cloneElement,tr as constrainRect,se as dimensions,$d as dropTargetsDebugString,uu as getElementIndex,Qe as getIndexOfDraggedItem,Ms as getIndexOfEditedItem,Ro as getIndexOfSelectedTab,Qo as getItemById,Ve as getNextDropTarget,Wo as isExpanded,$e as measureDropTargets,Li as measureElementSizeAndPosition,Bd as moveItem,Xt as mutateDropTargetsSwitchDropTargetPosition,er as removeDraggedItem,xs as useDragDropNext,jo as useDragDropProvider,Us as useItemsWithIds};
6
+ `);d===null?console.log("[useViewportTracking], is this virtualised ? we're going to have to know rowHeight"):s(d)}},[t,e,s]),vr(()=>{},[n]);let c=hn(({height:d,scrollHeight:f})=>{l.current=d,i.current=f},[]);return Oe(e,la,c,!0),r};import{useCallback as _r,useRef as ya}from"react";import{useCallback as st,useMemo as Pr,useRef as Or}from"react";var wr=({id:e})=>{let t=e.lastIndexOf("-");if(t!==-1){let o=e.slice(t+1).split(".");return o.length===1?null:(o.pop(),`${e.slice(0,t)}-${o.join(".")}`)}else if((t=e.lastIndexOf("/"))!==-1)return e.slice(0,t)},Hr=e=>e.childNodes!==void 0;var xn=e=>e.header===!0,ia=new Set([".","/"]),Mr=(e,t)=>t.startsWith(e.id)?ia.has(t.charAt(e.id.length)):!1,Ke=(e,t)=>{for(let n of e){if(n.id===t)return n;if(Mr(n,t))return Ke(n.childNodes,t)}},Kt=(e,t)=>{let n=typeof t=="string"?t:t.id;for(let o=0;o<e.length;o++)if(e[o].id===n)return o},Ft=(e,t,n)=>{let o;return e.map(l=>l.id===t?{...l,...n}:Mr(l,t)?(o=Ft(l.childNodes,t,n),{...l,childNodes:o}):l)};import{useControlled as pa}from"@salt-ds/core";function aa(e,...t){let n=new Set(e);for(let o of t)for(let r of o)n.add(r);return n}var Sn="ArrowUp",Cr="ArrowDown",Ue="ArrowLeft";var Nr="ArrowRight",$t="Enter";var ca="Delete",ua=new Set([$t,ca]),da=new Set(["Tab"]),ma=new Set(["ArrowRight","ArrowLeft"]),Lr=new Set(["Home","End","ArrowDown","ArrowUp"]),Rr=new Set(["Home","End","ArrowRight","ArrowLeft"]),fa=new Set(["F1","F2","F3","F4","F5","F6","F7","F8","F9","F10","F11","F12"]),yg=aa(ua,Rr,Lr,ma,fa,da);var kr=({key:e},t="vertical")=>(t==="vertical"?Lr:Rr).has(e);function Ar(e,t,n){return t===Sn||t===Ue?n>0?n-1:n:n===null?0:n===e-1?n:n+1}var ga=e=>!e.header&&!e.childNodes,ba=e=>ga(e)||e.expanded!==void 0,Kr=({defaultHighlightedIdx:e=-1,highlightedIdx:t,treeNodes:n,onHighlight:o,onKeyboardNavigation:r,selected:l=[]})=>{let{bwd:i,fwd:s}=Pr(()=>({bwd:Sn,fwd:Cr}),[]),[a,c,d]=pa({controlled:t,default:e,name:"highlightedIdx"}),f=st(x=>{o==null||o(x),c(x)},[o,c]),u=st((x=s,T=x===s?-1:n.length)=>{let N=Ar(n.length,x,T);for(;N!==-1&&(x===s&&N<n.length||x===i&&N>0)&&!ba(n[N]);)N=Ar(n.length,x,N);return N},[i,s,n]),I=Or(!0),m=Or(!1),p=x=>m.current=x,g=st(()=>{if(m.current)m.current=!1;else if(l.length>0){let x=Ke(n,l[0]);if(x){let T=Kt(n,x);f(T)}}else f(u())},[n,u,l,f]),S=st(x=>{let T=u(x.key,a);T!==a&&(f(T),r==null||r(x,T))},[a,u,r,f]),E=st(x=>{n.length>0&&kr(x,"vertical")&&(x.preventDefault(),x.stopPropagation(),I.current=!0,S(x))},[n,S]),v=Pr(()=>({onBlur:()=>{f(-1)},onFocus:g,onKeyDown:E,onMouseDownCapture:()=>{I.current=!1,p(!0)},onMouseMove:()=>{I.current&&(I.current=!1)},onMouseLeave:()=>{I.current=!0,p(!1),f(-1)}}),[g,E,f]);return{focusVisible:I.current?a:-1,controlledHighlighting:d,highlightedIdx:a,hiliteItemAtIndex:f,keyBoardNavigation:I,listProps:v,setIgnoreFocus:p}};import{useRef as yn,useState as Ia}from"react";var zt=(e,t=[],n={value:0})=>{let o=!1;for(let r of e)o&&!xn(r)||(t[n.value]=r,n.value+=1,o=!1,xn(r)&&r.expanded===!1?o=!0:Hr(r)&&Tn(r)&&zt(r.childNodes,t,n));return t},Fr=e=>{let t=yn(e),n=yn(e),o=yn(zt(e)),[,r]=Ia({});e!==t.current&&(t.current=e,n.current=e,o.current=zt(e));let l=i=>{n.current=i,o.current=zt(i),r({})};return{data:n.current,indexPositions:o.current,setData:l}};import{useCallback as lt,useRef as $r}from"react";var ha={},xa=e=>e&&e.hasAttribute("aria-expanded"),zr=({collapsibleHeaders:e,highlightedIdx:t,treeNodes:n,setVisibleData:o,source:r})=>{let l=$r(r),i=$r(l.current),s=lt(m=>{o(i.current=m)},[o]),a=lt((m,{id:p})=>Ft(m,p,{expanded:!0}),[]),c=lt((m,{id:p})=>Ft(m,p,{expanded:!1}),[]),d=lt(m=>{if(m.key===Nr||m.key===$t){let p=n[t];p&&p.expanded===!1&&(m.preventDefault(),s(a(i.current,p)))}if(m.key===Ue||m.key===$t){let p=n[t];p&&p.expanded&&(m.preventDefault(),s(c(i.current,p)))}},[c,a,t,n,s]),f=e?{onKeyDown:d}:ha,I={onClick:lt(m=>{let p=bn(m.target);if(xa(p)){m.stopPropagation(),m.preventDefault();let g=Ke(r,p.id);(g==null?void 0:g.expanded)===!1?s(a(r,g)):(g==null?void 0:g.expanded)===!0&&s(c(r,g))}},[c,a,s,r])};return{listHandlers:f,listItemHandlers:I}};import{useCallback as Sa}from"react";var Br=({highlightedIdx:e,hiliteItemAtIndex:t,indexPositions:n,source:o})=>({listHandlers:{onKeyDown:Sa(i=>{if(i.key===Ue){let s=n[e],a=wr(s);if(a){i.preventDefault();let c=Ke(o,a);if(c){let d=Kt(n,c);d!==void 0&&t(d)}}}},[e,t,n,o])}});var Ta=[],Vr=({defaultSelected:e,sourceWithIds:t,onChange:n,onHighlight:o,selected:r,selection:l})=>{let i=ya(Ta),s=Fr(t),a=(v,x)=>{var T,N;(N=(T=u.listHandlers).onKeyboardNavigation)==null||N.call(T,v,x)},{highlightedIdx:c,...d}=Kr({treeNodes:s.indexPositions,onHighlight:o,onKeyboardNavigation:a,selected:i.current}),f=zr({collapsibleHeaders:!0,highlightedIdx:c,treeNodes:s.indexPositions,setVisibleData:s.setData,source:s.data}),u=Er({defaultSelected:e,highlightedIdx:c,treeNodes:s.indexPositions,onChange:n,selected:r,selection:l}),I=Br({source:s.data,highlightedIdx:c,hiliteItemAtIndex:d.hiliteItemAtIndex,indexPositions:s.indexPositions}),m=_r(v=>{var x,T,N;(x=f.listItemHandlers)==null||x.onClick(v),v.defaultPrevented||(N=(T=u.listItemHandlers)==null?void 0:T.onClick)==null||N.call(T,v)},[f,u]),p=_r(v=>{var x,T,N,P,H,k,O,$;(T=(x=d.listProps).onKeyDown)==null||T.call(x,v),v.defaultPrevented||(P=(N=u.listHandlers).onKeyDown)==null||P.call(N,v),v.defaultPrevented||(k=(H=f.listHandlers).onKeyDown)==null||k.call(H,v),v.defaultPrevented||($=(O=I.listHandlers).onKeyDown)==null||$.call(O,v)},[f.listHandlers,d.listProps,u.listHandlers,I.listHandlers]),g=()=>{var v;return c===void 0||c===-1||(v=s.indexPositions[c])==null?void 0:v.id};i.current=u.selected;let S={"aria-activedescendant":g(),onBlur:d.listProps.onBlur,onFocus:d.listProps.onFocus,onKeyDown:p,onMouseDownCapture:d.listProps.onMouseDownCapture,onMouseLeave:d.listProps.onMouseLeave,onMouseMove:d.listProps.onMouseMove},E={onClick:m};return{focusVisible:d.focusVisible,highlightedIdx:c,hiliteItemAtIndex:d.hiliteItemAtIndex,listProps:S,listItemHandlers:E,selected:u.selected,visibleData:s.data}};import{jsx as Ne,jsxs as En}from"react/jsx-runtime";import{createElement as Ca}from"react";var Ce="vuuTree",Tn=e=>e.expanded===!0,Gr=({children:e,idx:t,...n})=>Ne("li",{...n,children:e}),Wr=Da(function({allowDragDrop:t,className:n,defaultSelected:o,groupSelection:r="none",id:l,onHighlight:i,onSelectionChange:s,revealSelected:a,selected:c,selection:d="single",source:f,...u},I){var D;let m=va(l),p=wa(null),[,g,S]=xr(f,m,{revealSelected:a?(D=c!=null?c:o)!=null?D:!1:void 0}),E=(h,y)=>{if(s){let L=y.map(w=>S(w)).filter(w=>w!==void 0);s(L)}},{focusVisible:v,highlightedIdx:x,hiliteItemAtIndex:T,listProps:N,listItemHandlers:P,selected:H,visibleData:k}=Vr({defaultSelected:o,groupSelection:r,onChange:E,onHighlight:i,selected:c,selection:d,sourceWithIds:g});Dr(p,x);let $={...{onMouseEnter:h=>{let y=h.target,L=Ir(y);T(L)}},...P,role:"treeitem"},b=Tr(r);function M(h,y,L){h.push(En(Gr,{...$,...Ha(y,L,x,H,v),children:[y.icon?Ne("span",{className:`${Ce}Node-icon`,"data-icon":y.icon}):null,Ne("span",{children:y.label})]})),L.value+=1}function C(h,y,L,w,A){let{value:z}=L;L.value+=1,h.push(Ca(Gr,{...P,"aria-expanded":y.expanded,"aria-level":y.level,"aria-selected":H.includes(w)||void 0,className:vn(`${Ce}Node`,{focusVisible:v===z,[`${Ce}Node-toggle`]:!b}),"data-idx":z,"data-highlighted":z===x||void 0,"data-selectable":!0,id:w,key:`header-${z}`},b?En("div",{className:`${Ce}Node-label`,children:[Ne("span",{className:`${Ce}Node-toggle`}),A]}):En("div",{className:`${Ce}Node-label`,children:[y.icon?Ne("span",{className:`${Ce}Node-icon`,"data-icon":y.icon}):null,Ne("span",{children:A})]}),Ne("ul",{role:"group",children:Tn(y)?R(y.childNodes,L):""})))}function R(h,y={value:0}){if((h==null?void 0:h.length)>0){let L=[];for(let w of h)w.childNodes?C(L,w,y,w.id,w.label):M(L,w,y);return L}}return Ne("ul",{...u,...N,className:vn(Ce,n),id:`Tree-${m}`,ref:Ea(p,I),role:"tree",tabIndex:0,children:R(k)})}),Ha=(e,t,n,o,r,l)=>({id:e.id,key:e.id,"aria-level":e.level,"aria-selected":o.includes(e.id)||void 0,"data-idx":t.value,"data-highlighted":t.value===n||void 0,className:vn("vuuTreeNode",l,{focusVisible:r===t.value})});Wr.displayName="Tree";var Ma=Wr;export{La as BWD,Aa as DragDropProvider,Yn as EditableLabel,Na as FWD,Jn as Highlighter,Ym as List,It as ListItem,go as ListItemGroup,bo as ListItemHeader,bt as ListItemProxy,Nn as NOT_HIDDEN,ut as NOT_OVERFLOWED,Qp as Tab,Dp as Tabstrip,Ma as Tree,Gr as TreeNode,Tf as VirtualizedList,Ln as cloneElement,Pn as constrainRect,be as dimensions,za as dropTargetsDebugString,ai as getElementIndex,$e as getIndexOfDraggedItem,nr as getIndexOfEditedItem,dn as getIndexOfSelectedTab,Rn as getItemById,ze as getNextDropTarget,Tn as isExpanded,Fe as measureDropTargets,ls as measureElementSizeAndPosition,$a as moveItem,Bt as mutateDropTargetsSwitchDropTargetPosition,kn as removeDraggedItem,ft as useDragDropNext,Cn as useDragDropProvider,xr as useItemsWithIds,Ht as useList};
217
7
  //# sourceMappingURL=index.js.map