@vuu-ui/vuu-datatable 0.5.20 → 0.6.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/cjs/index.js CHANGED
@@ -1,5 +1,5 @@
1
- "use strict";var lo=Object.create;var Re=Object.defineProperty;var uo=Object.getOwnPropertyDescriptor;var ao=Object.getOwnPropertyNames;var co=Object.getPrototypeOf,mo=Object.prototype.hasOwnProperty;var po=(e,t)=>{for(var n in t)Re(e,n,{get:t[n],enumerable:!0})},wt=(e,t,n,o)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of ao(t))!mo.call(e,r)&&r!==n&&Re(e,r,{get:()=>t[r],enumerable:!(o=uo(t,r))||o.enumerable});return e};var F=(e,t,n)=>(n=e!=null?lo(co(e)):{},wt(t||!e||!e.__esModule?Re(n,"default",{value:e,enumerable:!0}):n,e)),fo=e=>wt(Re({},"__esModule",{value:!0}),e);var Ar={};po(Ar,{DataTable:()=>Ir,useMeasuredContainer:()=>yt});module.exports=fo(Ar);var Qe=require("@heswell/salt-lab"),Co=require("@salt-ds/core"),yo=F(require("classnames")),Je=require("react");var ye=require("react"),St=F(require("react-dom"));var Tt=F(require("react-dom")),Rt=require("@salt-ds/core"),Et=require("react/jsx-runtime"),bo=1,go=(e=0,t=0,n=window)=>{let o=n.document.createElement("div");return o.className="vuuPopup "+bo++,o.style.cssText=`left:${e}px; top:${t}px;`,n.document.body.appendChild(o),o},ho=(e,t)=>go(e,t),Pe=(e,t,n,o,r)=>{t.style.cssText=`left:${n}px; top:${o}px;position: absolute;`,Tt.render((0,Et.jsx)(Rt.SaltProvider,{applyClassesTo:"child",children:e}),t,r)},Pt=ho;var Ye=function({children:t,x:n=0,y:o=0,onRender:r}){let s=(0,ye.useMemo)(()=>Pt(),[]);return(0,ye.useLayoutEffect)(()=>{Pe(t,s,n,o,r)},[t,r,s,n,o]),(0,ye.useLayoutEffect)(()=>()=>{var i;s&&(St.unmountComponentAtNode(s),s.classList.contains("vuuPopup")&&((i=s.parentElement)==null||i.removeChild(s)))},[s]),null};var Ht=require("react/jsx-runtime");var qt=require("@salt-ds/core"),ne=require("react");var J=F(require("react")),je=F(require("classnames")),Ot=require("@salt-ds/core");var $=require("react");var Lt=e=>e.closest("[data-root='true']")!==null,kt=(e,t)=>{var n;return e.ariaHasPopup==="true"&&((n=e.dataset)==null?void 0:n.idx)===`${t}`||e.querySelector(`:scope > [data-idx='${t}'][aria-haspopup='true']`)!==null};function Mo(e,...t){let n=new Set(e);for(let o of t)for(let r of o)n.add(r);return n}var xo="Enter";var vo="Delete",Do=new Set([xo,vo]),wo=new Set(["Tab"]),To=new Set(["ArrowRight","ArrowLeft"]),It=new Set(["Home","End","ArrowDown","ArrowUp"]),At=new Set(["Home","End","ArrowRight","ArrowLeft"]),Ro=new Set(["F1","F2","F3","F4","F5","F6","F7","F8","F9","F10","F11","F12"]),es=Mo(Do,At,It,To,Ro,wo);var Kt=({key:e},t="vertical")=>(t==="vertical"?It:At).has(e);var Ft=({autoHighlightFirstItem:e=!1,count:t,highlightedIndex:n,onActivate:o,onHighlight:r,onCloseMenu:s,onOpenMenu:i})=>{let l=(0,$.useRef)((n!=null?n:e)?0:-1),[,u]=(0,$.useState)(null),a=n!==void 0,m=(0,$.useCallback)(g=>{l.current=g,r==null||r(g),u({})},[r]),c=(0,$.useCallback)(g=>{g!==l.current&&(a||m(g))},[a,m]),p=(0,$.useRef)(!0),x=(0,$.useRef)(!1),C=g=>x.current=g,b=a?n:l.current,d=(0,$.useCallback)(g=>{let M=Po(t,g.key,l.current);M!==l.current&&c(M)},[t,c]),D=(0,$.useCallback)(g=>{Kt(g)?(g.preventDefault(),g.stopPropagation(),p.current=!0,d(g)):(g.key==="ArrowRight"||g.key==="Enter")&&kt(g.target,b)?i(b):g.key==="ArrowLeft"&&!Lt(g.target)?s(b):g.key==="Enter"&&o&&o(b)},[b,d,o,s,i]),v=(0,$.useMemo)(()=>({onFocus:()=>{b===-1&&m(0)},onKeyDown:D,onMouseDownCapture:()=>{p.current=!1,C(!0)},onMouseMove:()=>{p.current&&(p.current=!1)},onMouseLeave:()=>{p.current=!0,C(!1),c(-1)}}),[b,c,d,o,s,i,m]);return{focusVisible:p.current?b:-1,controlledHighlighting:a,highlightedIndex:b,setHighlightedIndex:c,listProps:v,setIgnoreFocus:C}};function Po(e,t,n){return t==="ArrowUp"?n>0?n-1:n:n===null?0:n===e-1?n:n+1}var te=F(require("react"));var Ze=e=>e.type===Ee||!!e.props["data-group"],Nt=e=>{let t=(0,te.useCallback)(()=>{let r=(i,l="root",u={},a={})=>{let m=u[l]=[],c=0,p=!1;return te.default.Children.forEach(i,x=>{if(x.type===zt)p=!0;else{let C=Ze(x),b=l==="root"?`${c}`:`${l}.${c}`,{props:{action:d,options:D}}=x,{childWithId:v,grandChildren:g}=s(x,b,C,p);m.push(v),g?r(g,b,u,a):a[b]={action:d,options:D},c+=1,p=!1}}),[u,a]},s=(i,l,u,a=!1)=>{let{props:{children:m}}=i;return{childWithId:te.default.cloneElement(i,{hasSeparator:a,id:`${l}`,key:l,children:u?void 0:m}),grandChildren:u?m:void 0}};return r(e)},[e]),[n,o]=(0,te.useMemo)(()=>t(),[t]);return[n,o]};var ae=require("react/jsx-runtime"),$t="vuuMenuList",zt=()=>(0,ae.jsx)("li",{className:"vuuMenuItem-divider"}),Ee=()=>null,et=({children:e,idx:t,...n})=>(0,ae.jsx)("div",{...n,children:e}),Eo=e=>e.props["data-icon"],Bt=({activatedByKeyboard:e,childMenuShowing:t=-1,children:n,className:o,highlightedIdx:r,id:s,isRoot:i,listItemProps:l,menuId:u,onHighlightMenuItem:a,onActivate:m,onCloseMenu:c,onOpenMenu:p,...x})=>{let C=(0,Ot.useIdMemo)(s),b=(0,J.useRef)(null),d=(0,J.useMemo)(()=>new Map,[]),D=w=>{var E;let T=(E=b.current)==null?void 0:E.querySelector(`:scope > [data-idx='${w}']`);T!=null&&T.id&&(p==null||p(T.id))},v=w=>{var E;let T=(E=b.current)==null?void 0:E.querySelector(`:scope > [data-idx='${w}']`);T!=null&&T.id&&(m==null||m(T.id))},{focusVisible:g,highlightedIndex:M,listProps:h}=Ft({count:J.default.Children.count(n),highlightedIndex:r,onActivate:v,onHighlight:a,onOpenMenu:D,onCloseMenu:c}),f=t==-1?g:-1;return(0,J.useLayoutEffect)(()=>{var w;t===-1&&e&&((w=b.current)==null||w.focus())},[e,t]),(0,ae.jsx)("div",{...x,...h,"aria-activedescendant":(()=>M===void 0||M===-1?void 0:d.get(M))(),className:(0,je.default)($t,o,{[`${$t}-childMenuShowing`]:t!==-1}),"data-root":i||void 0,id:`${C}-${u}`,ref:b,role:"menu",tabIndex:0,children:R()});function R(){let w={...l,role:"menuitem"},T=(S,N,O)=>N?[(0,ae.jsx)("span",{className:"vuuIconContainer","data-icon":O},"icon")].concat(S):S;function E(S,N,O,j){var Dt;let{children:P,className:H,"data-icon":B,id:X,hasSeparator:ee,label:Xe,...so}=N.props,qe=Ze(N),vt=qe&&t===O,io=vt?`${C}-${X}`:void 0;S.push((0,ae.jsx)(et,{...so,...w,...So(`${C}-${u}`,X,O,(Dt=N.key)!=null?Dt:X,M,f,H,ee),"aria-controls":io,"aria-haspopup":qe||void 0,"aria-expanded":vt||void 0,children:T(qe?Xe:P,j,B)}))}let k=[];if(n.length>0){let S=n.some(Eo);n.forEach((N,O)=>{E(k,N,O,S)})}return k}},So=(e,t,n,o,r,s,i,l)=>({id:`${e}-${t}`,key:o!=null?o:n,"data-idx":n,"data-highlighted":n===r||void 0,className:(0,je.default)("vuuMenuItem",i,{"vuuMenuItem-separator":l,focusVisible:s===n})});Bt.displayName="MenuList";var Gt=Bt;var I=require("react");function Vt(e){if(e){let t=e.dataset.idx;if(t)return parseInt(t,10);if(e.ariaPosInSet)return parseInt(e.ariaPosInSet,10)-1}}var tt=e=>e==null?void 0:e.closest("[data-idx],[aria-posinset]");var Wt=(e,t,n)=>e.map((o,r)=>r===e.length-1?{...o,[n]:o[n]-t}:o),Ho=(e,t)=>Wt(e,t,"left"),Lo=(e,t)=>Wt(e,t,"top"),ko=(e,t)=>{let[n,o]=t.slice(-2),r=document.getElementById(`${e}-${o.id}`);if(r===null)throw Error(`useCascade.flipSides element with id ${o.id} not found`);let{width:s}=r.getBoundingClientRect();return t.map(i=>i===o?{...i,left:n.left-(s-2)}:i)},Io=(e,t)=>{let[{left:n,top:o}]=t.slice(-1),{offsetWidth:r,offsetTop:s}=e;return{left:n+r,top:s+o}},Me=e=>{let t=e.lastIndexOf("-");return t===-1?e:e.slice(t+1)},Se=e=>{let t=Me(e),n=t.lastIndexOf(".");return n>-1?t.slice(0,n):"root"},Ao=e=>{let t=0,n=e.indexOf(".",0);for(;n!==-1;)t+=1,n=e.indexOf(".",n+1);return t},Ko=e=>({menuId:Se(e.id),itemId:Me(e.id),isGroup:e.ariaHasPopup==="true",isOpen:e.ariaExpanded==="true",level:Ao(e.id)}),Ut=({id:e,onActivate:t,onMouseEnterItem:n,position:{x:o,y:r}})=>{let[,s]=(0,I.useState)({}),i=(0,I.useRef)([{id:"root",left:o,top:r}]),l=(0,I.useCallback)(g=>{i.current=g,s({})},[]),u=(0,I.useRef)(),a=(0,I.useRef)(),m=(0,I.useRef)({root:"no-popup"}),c=(0,I.useRef)(0),p=(0,I.useCallback)((g="root",M=null,h=null)=>{if(g==="root"&&M===null)l([{id:"root",left:o,top:r}]);else{m.current[g]="popup-open";let y=(h?h.ownerDocument:document).getElementById(`${e}-${g}-${M}`),{left:R,top:w}=Io(y,i.current);l(i.current.concat({id:M,left:R,top:w}))}},[e,o,r,l]),x=(0,I.useCallback)(g=>{l(g==="root"?[]:i.current.slice(0,-1))},[l]),C=(0,I.useCallback)((g,M)=>{let h=i.current.slice(),{id:f}=h[h.length-1];for(;h.length>1&&!M.startsWith(f);){let y=Se(f);h.pop(),m.current[f]="no-popup",m.current[y]="no-popup",{id:f}=h[h.length-1]}h.length<i.current.length&&l(h)},[l]),b=(0,I.useCallback)((g,M,h)=>{u.current&&clearTimeout(u.current),u.current=window.setTimeout(()=>{console.log(`scheduleOpen timed out opening ${M}`),C(g,M),m.current[g]="popup-open",m.current[M]="no-popup",p(g,M,h)},400)},[C,p]),d=(0,I.useCallback)((g,M,h)=>{console.log(`scheduleClose openMenuId ${g} menuId ${M} itemId ${h}`),m.current[g]="pending-close",a.current=window.setTimeout(()=>{C(M,h)},400)},[C]),D=(0,I.useCallback)(()=>{let{current:g}=i,[M]=g.slice(-1),h=document.getElementById(`${e}-${M.id}`);if(h){let{right:f,bottom:y}=h.getBoundingClientRect(),{clientHeight:R,clientWidth:w}=document.body;if(f>w){let T=g.length>1?ko(e,g):Ho(g,f-w);l(T)}else if(y>R){let T=Lo(g,y-R);l(T)}}},[e,l]),v=(0,I.useMemo)(()=>({onMouseEnter:g=>{let M=tt(g.target),{menuId:h,itemId:f,isGroup:y,isOpen:R,level:w}=Ko(M),T=c.current===w,{current:{[h]:E}}=m;if(c.current=w,E==="no-popup"&&y)m.current[h]="popup-pending",b(h,f,M);else if(E==="popup-pending"&&!y)m.current[h]="no-popup",clearTimeout(u.current),u.current=void 0;else if(E==="popup-pending"&&y)clearTimeout(u.current),b(h,f,M);else if(E==="popup-open"){let[{id:k},{id:S}]=i.current.slice(-2);k===h&&m.current[S]!=="pending-close"&&T?(d(S,h,f),y&&!R&&b(h,f,M)):k===h&&y&&f!==S&&m.current[S]==="pending-close"?b(h,f,M):y?(C(h,f),b(h,f,M)):m.current[S]==="pending-close"&&T||C(h,f)}E==="pending-close"&&(u.current&&(clearTimeout(u.current),u.current=void 0),clearTimeout(a.current),a.current=void 0,m.current[h]="popup-open"),n(g,f)},onClick:g=>{let M=g.target,h=tt(M),f=Vt(h);console.log(`list item click [${f}] hasPopup ${h.ariaHasPopup}`),h.ariaHasPopup==="true"?h.ariaExpanded!=="true"&&p(f):t(Me(h.id))}}),[C,t,n,p,d,b]);return{closeMenu:x,handleRender:D,listItemProps:v,openMenu:p,openMenus:i.current}};var _t=require("react"),Xt=({containerClassName:e,isOpen:t,onClose:n})=>{(0,_t.useEffect)(()=>{let o;return t&&(o=r=>{r.target.closest(`.${e}`)===null&&(n==null||n("root"))},document.body.addEventListener("click",o,!0)),()=>{o&&document.body.removeEventListener("click",o,!0)}},[e,t,n])};var xe=require("react/jsx-runtime"),Yt=require("react"),Fo=()=>{},nt=({activatedByKeyboard:e,children:t,className:n,id:o,onClose:r=()=>{},position:s={x:0,y:0},style:i,...l})=>{let u=(0,qt.useIdMemo)(o),a=(0,ne.useRef)(Fo),[m,c]=Nt(t),p=(0,ne.useRef)(e),x=(0,ne.useCallback)(()=>{p.current=!1},[]),C=(0,ne.useCallback)(T=>{let{action:E,options:k}=c[T];a.current("root"),r(E,k)},[c,r]),{closeMenu:b,listItemProps:d,openMenu:D,openMenus:v,handleRender:g}=Ut({id:u,onActivate:C,onMouseEnterItem:x,position:s});a.current=b,console.log({openMenus:v});let M=(0,ne.useCallback)(()=>{b(),r()},[b,r]);Xt({containerClassName:"vuuMenuList",onClose:M,isOpen:v.length>0});let h=T=>{let E=Me(T),k=Se(E);p.current=!0,D(k,E)},f=()=>{p.current=!0,b()},y=()=>{},R=v.length-1,w=T=>{if(T>=R)return-1;{let{id:E}=v[T+1],k=E.lastIndexOf(".");return parseInt(k===-1?E:E.slice(-k),10)}};return(0,xe.jsx)(xe.Fragment,{children:v.map(({id:T,left:E,top:k},S)=>{let N=w(S);return(0,xe.jsx)(Ye,{x:E,y:k,onRender:g,children:(0,Yt.createElement)(Gt,{...l,activatedByKeyboard:p.current,childMenuShowing:N,className:n,id:u,menuId:T,isRoot:S===0,key:S,listItemProps:d,onActivate:C,onHighlightMenuItem:y,onCloseMenu:f,onOpenMenu:h,style:i},m[T])},S)})})};nt.displayName="ContextMenu";var ce=require("react"),He=require("react/jsx-runtime"),Le=(0,ce.createContext)(null),Qt=e=>"children"in e,No=({children:e,context:t,menuActionHandler:n,menuBuilder:o})=>{let r=(0,ce.useMemo)(()=>t!=null&&t.menuBuilders&&o?t.menuBuilders.concat(o):o?[o]:(t==null?void 0:t.menuBuilders)||[],[t,o]),s=(0,ce.useCallback)((i,l)=>{var u;if(n!=null&&n(i,l)||(u=t==null?void 0:t.menuActionHandler)!=null&&u.call(t,i,l))return!0},[t,n]);return(0,He.jsx)(Le.Provider,{value:{menuActionHandler:s,menuBuilders:r},children:e})},Jt=({children:e,label:t,menuActionHandler:n,menuBuilder:o})=>(0,He.jsx)(Le.Consumer,{children:r=>(0,He.jsx)(No,{context:r,label:t,menuActionHandler:n,menuBuilder:o,children:e})});var ve=require("react");var Zt=F(require("classnames")),me=F(require("react")),ke=F(require("react-dom"));var ot=!1,V=[];function jt(e){if(e.key==="Esc"){if(V.length)tn();else if(ot){let t=document.body.querySelector(".vuuDialog");t&&ke.default.unmountComponentAtNode(t)}}}function en(e){if(V.length){let t=document.body.querySelectorAll(".vuuPopup");for(let n=0;n<t.length;n++)if(t[n].contains(e.target))return;tn()}}function tn(){if(V.length){let e=document.body.querySelectorAll(".vuuPopup");for(let t=0;t<e.length;t++)ke.default.unmountComponentAtNode(e[t]);nn("*")}}function zo(e){V.indexOf(e)===-1&&(V.push(e),ot===!1&&(window.addEventListener("keydown",jt,!0),window.addEventListener("click",en,!0)))}function nn(e){if(V.length){if(e==="*")V.length=0;else{let t=V.indexOf(e);t!==-1&&V.splice(t,1)}V.length===0&&ot===!1&&(window.removeEventListener("keydown",jt,!0),window.removeEventListener("click",en,!0))}}var $o=({children:e,position:t,style:n})=>{let o=(0,Zt.default)("hwPopup","hwPopupContainer",t);return(0,me.createElement)("div",{className:o,style:n},e)},Oo=1,oe=class{static showPopup({name:t="anon",group:n="all",position:o="",left:r=0,right:s="auto",top:i=0,width:l="auto",component:u}){if(!u)throw Error("PopupService showPopup, no component supplied");zo(t);let a=document.body.querySelector(".vuuPopup."+n);a===null&&(a=document.createElement("div"),a.className="vuuPopup "+n,document.body.appendChild(a));let m={width:l};Pe((0,me.createElement)($o,{key:Oo++,position:o,style:m},u),a,r,i,()=>{oe.keepWithinThePage(a,s)})}static hidePopup(t="anon",n="all"){if(V.indexOf(t)!==-1){nn(t);let o=document.body.querySelector(`.vuuPopup.${n}`);o&&ke.default.unmountComponentAtNode(o)}}static keepWithinThePage(t,n="auto"){let o=t.querySelector(".vuuPopupContainer > *");if(o){let{top:r,left:s,width:i,height:l,right:u}=o.getBoundingClientRect(),a=window.innerWidth,c=window.innerHeight-(r+l);c<0&&(o.style.top=Math.round(r)+c+"px");let p=a-(s+i);if(p<0&&(o.style.left=Math.round(s)+p+"px"),typeof n=="number"&&n!==u){let x=n-u;o.style.left=s+x+"px"}}}};var Ie=require("react/jsx-runtime"),Ae=()=>{let e=(0,ve.useContext)(Le),t=(0,ve.useCallback)((o,r,s)=>{let i=[];for(let l of o)i=i.concat(l(r,s));return i},[]);return(0,ve.useCallback)((o,r,s)=>{var u;o.stopPropagation(),o.preventDefault();let i=(u=e==null?void 0:e.menuBuilders)!=null?u:[],l=t(i,r,s);console.log({menuItemDescriptors:l}),l.length&&(e!=null&&e.menuActionHandler)&&(console.log(`showContextMenu ${r}`,{options:s}),Bo(o,l,e.menuActionHandler))},[t,e])},Bo=(e,t,n)=>{let{clientX:o,clientY:r}=e,l=(0,Ie.jsx)(nt,{onClose:(u,a)=>{u&&(n(u,a),oe.hidePopup())},position:{x:o,y:r},children:(u=>{let a=(m,c)=>Qt(m)?(0,Ie.jsx)(Ee,{label:m.label,children:m.children.map(a)},c):(0,Ie.jsx)(et,{action:m.action,"data-icon":m.icon,options:m.options,children:m.label},c);return u.map(a)})(t)});oe.showPopup({left:0,top:0,component:l})};var _e=require("@salt-ds/core"),ro=require("react");var Mn=require("@vuu-ui/vuu-utils"),xn=require("react"),vn=F(require("classnames"));var Ke=require("@vuu-ui/vuu-utils"),an=F(require("classnames")),Fe=require("react");var on=F(require("classnames"));var rt=require("react/jsx-runtime"),Go=e=>e==null?"":typeof e=="string"?e:e.toString(),rn=({className:e,column:t,row:n,valueFormatter:o=Go})=>{let r=(0,on.default)(e,{vuuAlignRight:t.align==="right",vuuPinLeft:t.pin==="left","vuuTableCell-resizing":t.resizing}),s=o(n[t.key]);return t.pin==="left"?(0,rt.jsx)("td",{className:r,style:{left:t.pinnedLeftOffset},children:s}):(0,rt.jsx)("td",{className:r,children:s})};var sn=require("@vuu-ui/vuu-utils");var pe=require("react/jsx-runtime"),{DEPTH:Vo,IS_LEAF:ln}=sn.metadataKeys,Wo=(e,t)=>{let{[Vo]:n,[ln]:o}=t;if(o||n>e.length)return[null,n===null?0:n-1];if(n===0)return["$root",0];{let r=e[n-1];return[t[r.key],n-1]}},un=({column:e,onClick:t,row:n})=>{let{columns:o}=e,[r,s]=Wo(o,n),i={left:e.pin=="left"?e.pinnedLeftOffset:void 0},l=n[ln],u=Array(s).fill(0).map((a,m)=>(0,pe.jsx)("span",{className:"vuuTableGroupCell-spacer"},m));return(0,pe.jsxs)("td",{className:"vuuTableGroupCell vuuPinLeft",onClick:l?void 0:t,style:i,children:[u,l?null:(0,pe.jsx)("span",{className:"vuuTableGroupCell-toggle","data-icon":"triangle-right"}),(0,pe.jsx)("span",{children:r})]})};var it=require("react/jsx-runtime"),{IDX:Uo,IS_EXPANDED:_o}=Ke.metadataKeys,st="vuuDataTableRow",Ne=(0,Fe.memo)(function({columns:t,height:n,index:o,onToggleGroup:r,row:s,valueFormatters:i}){let{[Uo]:l,[_o]:u}=s,a=(0,an.default)(st,{[`${st}-even`]:l%2===0,[`${st}-expanded`]:u}),m=l-o,c=(0,Fe.useCallback)(()=>r==null?void 0:r(s),[r,s]);return(0,it.jsx)("tr",{"data-idx":l,className:a,style:{transform:`translate3d(0px, ${m*n}px, 0px)`},children:t.map(p=>{let x=(0,Ke.isGroupColumn)(p);return(0,it.jsx)(x?un:rn,{column:p,onClick:x?c:void 0,row:s,valueFormatter:i==null?void 0:i[p.name]},p.name)})})});var Cn=F(require("classnames")),fe=require("react");var de=require("react");var mn=require("react/jsx-runtime"),cn=()=>{},Xo="vuuColumnResizer",ze=({onDrag:e,onDragEnd:t=cn,onDragStart:n=cn})=>{let o=(0,de.useRef)(0),r=(0,de.useCallback)(l=>{l.stopPropagation&&l.stopPropagation(),l.preventDefault&&l.preventDefault();let u=Math.round(l.clientX),a=u-o.current;o.current=u,a!==0&&e(l,a)},[e]),s=(0,de.useCallback)(l=>{window.removeEventListener("mouseup",s),window.removeEventListener("mousemove",r),t(l)},[t,r]),i=(0,de.useCallback)(l=>{n(l),o.current=Math.round(l.clientX),window.addEventListener("mouseup",s),window.addEventListener("mousemove",r),l.stopPropagation&&l.stopPropagation(),l.preventDefault&&l.preventDefault()},[n,r,s]);return(0,mn.jsx)("div",{className:Xo,onMouseDown:i})};var lt=F(require("classnames"));var re=require("react/jsx-runtime"),pn="vuuSortIndicator",dn=({sorted:e})=>{if(!e)return null;let t=typeof e=="number"?e<0?"dsc":"asc":e==="A"?"asc":"dsc";return typeof e=="number"?(0,re.jsxs)("div",{className:(0,lt.default)(pn,"multi-col",t),children:[(0,re.jsx)("span",{"data-icon":`sorted-${t}`}),(0,re.jsx)("span",{className:"vuuSortPosition",children:Math.abs(e)})]}):(0,re.jsx)("div",{className:(0,lt.default)(pn,"single-col"),children:(0,re.jsx)("span",{"data-icon":`sorted-${t}`})})};var se=require("react"),$e=({column:e,onResize:t,rootRef:n})=>{let o=(0,se.useRef)(0),r=(0,se.useRef)(!1),{name:s}=e,i=(0,se.useCallback)(()=>{if(t&&n.current){let{width:a}=n.current.getBoundingClientRect();o.current=Math.round(a),r.current=!0,t==null||t("begin",s)}},[s,t,n]),l=(0,se.useCallback)((a,m)=>{if(n.current&&t){let{width:c}=n.current.getBoundingClientRect(),p=Math.round(c)+m;p!==o.current&&p>0&&(t("resize",s,p),o.current=p)}},[s,t,n]),u=(0,se.useCallback)(()=>{t&&(t("end",s,o.current),r.current=!1)},[s,t]);return{isResizing:r.current,onDrag:l,onDragStart:i,onDragEnd:u}};var fn=F(require("classnames")),bn=require("react");var hn=require("react/jsx-runtime");var gn=({column:e,filter:t})=>{let n=Ae(),o=(0,bn.useCallback)(r=>{r.stopPropagation(),n(r,"filter",{column:e,filter:t})},[e,t,n]);return e.filter?(0,hn.jsx)("div",{className:(0,fn.default)("vuuFilterIndicator"),"data-icon":"filter",onClick:o}):null};var Z=require("react/jsx-runtime"),De="vuuTable-headerCell",Oe=({column:e,className:t,onClick:n,onDragEnd:o,onDragStart:r,onResize:s,...i})=>{let l=(0,fe.useRef)(null),{isResizing:u,...a}=$e({column:e,onResize:s,rootRef:l}),m=Ae(),c=d=>{m(d,"header",{column:e})},p=(0,fe.useCallback)(d=>!u&&(n==null?void 0:n(d)),[u,n]),x=(0,fe.useCallback)(d=>{r==null||r(d)},[r]),C=(0,fe.useCallback)(()=>{o==null||o()},[o]),b=(0,Cn.default)(De,t,{vuuPinLeft:e.pin==="left",vuuEndPin:e.endPin,[`${De}-resizing`]:e.resizing,[`${De}-right`]:e.align==="right"});return(0,Z.jsx)("th",{className:b,...i,onClick:p,onContextMenu:c,onMouseDown:x,onMouseUp:C,ref:l,children:(0,Z.jsxs)("div",{className:`${De}-inner`,children:[(0,Z.jsx)(gn,{column:e}),(0,Z.jsx)("div",{className:`${De}-label`,children:e.label}),(0,Z.jsx)(dn,{sorted:e.sorted}),e.resizeable!==!1?(0,Z.jsx)(ze,{...a}):null]})})};var W=require("react/jsx-runtime"),yn="vuuDataTable",{RENDER_IDX:qo}=Mn.metadataKeys,Dn=({columns:e,data:t,headerHeight:n,onHeaderCellDragEnd:o,rowHeight:r})=>{let s=(0,xn.useCallback)(()=>{o==null||o()},[o]);return(0,W.jsx)(W.Fragment,{children:e.map((i,l)=>(0,W.jsx)("table",{className:(0,vn.default)(`${yn}-table`,`${yn}-columnBased`,{vuuPinLeft:i.pin==="left"}),"data-idx":l,id:`col-${l}`,style:{width:i.width,left:i.pinnedLeftOffset,"--vuuTableHeaderHeight":`${n}px`,"--row-height":`${r}px`},children:(0,W.jsxs)("tbody",{children:[(0,W.jsx)("tr",{children:(0,W.jsx)(Oe,{column:i,"data-idx":l,onDragEnd:s},l)},"header"),t.map((u,a)=>(0,W.jsx)(Ne,{columns:[i],height:r,index:a,row:u},u[qo])),(0,W.jsx)("tr",{className:"vuuTable-filler"})]})},i.name))})};var wn=require("@vuu-ui/vuu-utils"),Tn=e=>(t,n)=>{let o=[];if(e===void 0)return o;if(t==="header")o.push(...Yo(n,e)),o.push(...Zo(n,e)),o.push(...Qo(n,e)),o.push(...Jo(n,e));else if(t==="filter"){let{column:r,filter:s}=n,i=(s==null?void 0:s.column)===(r==null?void 0:r.name);o.push({label:"Edit filter",action:"filter-edit",options:n}),o.push({label:"Remove filter",action:"filter-remove-column",options:n}),r&&!i&&o.push({label:"Remove all filters",action:"remove-filters",options:n})}return o};function Yo(e,{sort:{sortDefs:t}}){let{column:n}=e,o=[];if(n===void 0)return o;let r=t.length>0;return n.sorted==="A"?o.push({label:"Reverse Sort (DSC)",action:"sort-dsc",options:e}):n.sorted==="D"?o.push({label:"Reverse Sort (ASC)",action:"sort-asc",options:e}):typeof n.sorted=="number"?(n.sorted>0?o.push({label:"Reverse Sort (DSC)",action:"sort-add-dsc",options:e}):o.push({label:"Reverse Sort (ASC)",action:"sort-add-asc",options:e}),r&&Math.abs(n.sorted)<t.length&&o.push({label:"Remove from sort",action:"sort-remove",options:e}),o.push({label:"New Sort",children:[{label:"Ascending",action:"sort-asc",options:e},{label:"Descending",action:"sort-dsc",options:e}]})):r?(o.push({label:"Add to sort",children:[{label:"Ascending",action:"sort-add-asc",options:e},{label:"Descending",action:"sort-add-dsc",options:e}]}),o.push({label:"New Sort",children:[{label:"Ascending",action:"sort-asc",options:e},{label:"Descending",action:"sort-dsc",options:e}]})):o.push({label:"Sort",children:[{label:"Ascending",action:"sort-asc",options:e},{label:"Descending",action:"sort-dsc",options:e}]}),o}function Qo(e,t){let{column:n}=e;if(n===void 0||t.groupBy.length===0)return[];let{name:o,label:r=o}=n;return[{label:`Aggregate ${r}`,children:[{label:"Count",action:"agg-count",options:e}].concat((0,wn.isNumericColumn)(n)?[{label:"Sum",action:"agg-sum",options:e},{label:"Avg",action:"agg-avg",options:e},{label:"High",action:"agg-high",options:e},{label:"Low",action:"agg-low",options:e}]:[])}]}var mt=(e,t)=>({label:`Pin ${t}`,action:`column-pin-${t}`,options:e}),ut=e=>mt(e,"left"),at=e=>mt(e,"floating"),ct=e=>mt(e,"right");function Jo(e,t){let{column:n}=e;if(n===void 0)return[];let{name:o,label:r=o,pin:s}=n,i=[{label:"Hide column",action:"column-hide",options:e}];return s===void 0?i.push({label:"Pin column",children:[ut(e),at(e),ct(e)]}):s==="left"?i.push({label:"Unpin column",action:"column-unpin",options:e},{label:"Pin column",children:[at(e),ct(e)]}):s==="right"?i.push({label:"Unpin column",action:"column-unpin",options:e},{label:"Pin column",children:[ut(e),at(e)]}):s==="floating"&&i.push({label:"Unpin column",action:"column-unpin",options:e},{label:"Pin column",children:[ut(e),ct(e)]}),i}function Zo(e,{groupBy:t}){let{column:n}=e,o=[];if(n===void 0)return o;let{name:r,label:s=r}=n;return t.length===0?o.push({label:`Group by ${s}`,action:"group",options:e}):o.push({label:`Add ${s} to group by`,action:"group-add",options:e}),o}var Rn=require("@vuu-ui/vuu-filters"),q=require("@vuu-ui/vuu-utils"),jo=(e,t)=>{if(e.filterStruct&&t){let[n,o]=(0,Rn.removeColumnFromFilter)(t,e.filterStruct);return{filter:o,filterStruct:n}}else return e},Pn=({dataSource:e,dispatchColumnAction:t})=>(o,r)=>{let s=r;if(s.column&&e){let{column:i}=s;switch(o){case"sort-asc":return e.sort=(0,q.setSortColumn)(e.sort,i,"A"),!0;case"sort-dsc":return e.sort=(0,q.setSortColumn)(e.sort,i,"D"),!0;case"sort-add-asc":return e.sort=(0,q.addSortColumn)(e.sort,i,"A"),!0;case"sort-add-dsc":return e.sort=(0,q.addSortColumn)(e.sort,i,"D"),!0;case"group":return e.groupBy=(0,q.addGroupColumn)(e.groupBy,i),!0;case"group-add":return e.groupBy=(0,q.addGroupColumn)(e.groupBy,i),!0;case"filter-remove-column":return e.filter=jo(e.filter,i),!0;case"remove-filters":return e.filter={filter:""},!0;case"column-pin-left":return t({type:"updateColumnProp",column:i,pin:"left"}),!0;case"column-unpin":return t({type:"updateColumnProp",column:i,pin:void 0}),!0;default:}}return!1};var Be=require("@vuu-ui/vuu-utils"),dt=require("react");var pt=F(require("classnames")),En=require("react");var Y=require("react/jsx-runtime"),be="vuuTable-groupHeaderCell",er=e=>{let{column:t,className:n,onRemoveColumn:o}=e;return(0,Y.jsxs)("div",{className:(0,pt.default)(`${be}-col`,n),role:"columnheader",children:[(0,Y.jsx)("span",{className:`${be}-label`,children:t.name}),(0,Y.jsx)("span",{className:`${be}-close`,"data-icon":"close-circle",onClick:()=>o==null?void 0:o(t)})]})},Sn=({column:e,className:t,onRemoveColumn:n,onResize:o,...r})=>{let s=(0,En.useRef)(null),{isResizing:i,...l}=$e({column:e,onResize:o,rootRef:s}),u=(0,pt.default)(be,t,{vuuPinLeft:e.pin==="left",[`${be}-right`]:e.align==="right"}),{columns:a}=e;return(0,Y.jsx)("th",{className:u,...r,children:(0,Y.jsxs)("div",{className:`${be}-inner`,children:[a.map(m=>(0,Y.jsx)(er,{column:m,onRemoveColumn:n},m.key)),e.resizeable!==!1?(0,Y.jsx)(ze,{...l}):null]})})};var G=require("react/jsx-runtime"),Hn="vuuDataTable",{RENDER_IDX:tr}=Be.metadataKeys,Ln=({columns:e,data:t,onColumnResize:n,onHeaderCellDragStart:o,onRemoveColumnFromGroupBy:r,onSort:s,onToggleGroup:i,rowHeight:l,valueFormatters:u})=>{let a=(0,dt.useCallback)(c=>{console.log("handkleDRagSTart",{evt:c,onHeaderCellDragStart:o})},[o]),m=(0,dt.useCallback)(c=>{var D;let x=c.target.closest(".vuuTable-headerCell"),C=parseInt((D=x==null?void 0:x.dataset.idx)!=null?D:"-1"),b=e[C],d=c.shiftKey;b&&s(b,d)},[e,s]);return(0,G.jsxs)("table",{className:`${Hn}-table`,children:[(0,G.jsx)("colgroup",{children:e.map((c,p)=>(0,G.jsx)("col",{width:`${c.width}px`},p))}),(0,G.jsx)("thead",{children:(0,G.jsx)("tr",{children:e.map((c,p)=>(0,Be.isGroupColumn)(c)?(0,G.jsx)(Sn,{column:c,"data-idx":p,onRemoveColumn:r,onResize:n,style:{left:c.pinnedLeftOffset}},p):(0,G.jsx)(Oe,{column:c,"data-idx":p,onClick:m,onDragStart:a,onResize:n,style:{left:c.pinnedLeftOffset}},p))})}),(0,G.jsxs)("tbody",{children:[t==null?void 0:t.map((c,p)=>(0,G.jsx)(Ne,{columns:e,height:l,index:p,onToggleGroup:i,row:c,valueFormatters:u},c[tr])),(0,G.jsx)("tr",{className:`${Hn}-filler`})]})]})};var Ce=require("@vuu-ui/vuu-utils"),K=require("react");var nr=([,e],[,t])=>e-t,Ge=class{constructor(t){this.keys=new Map,this.free=[],this.nextKeyValue=0,this.reset(t)}next(){return this.free.length>0?this.free.pop():this.nextKeyValue++}reset({from:t,to:n}){this.keys.forEach((r,s)=>{(s<t||s>=n)&&(this.free.push(r),this.keys.delete(s))});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 s=this.next();this.keys.set(r,s)}}keyFor(t){let n=this.keys.get(t);if(n===void 0)throw console.log(`key not found
1
+ "use strict";var po=Object.create;var Ee=Object.defineProperty;var fo=Object.getOwnPropertyDescriptor;var go=Object.getOwnPropertyNames;var bo=Object.getPrototypeOf,ho=Object.prototype.hasOwnProperty;var Co=(e,t)=>{for(var n in t)Ee(e,n,{get:t[n],enumerable:!0})},Rt=(e,t,n,o)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of go(t))!ho.call(e,r)&&r!==n&&Ee(e,r,{get:()=>t[r],enumerable:!(o=fo(t,r))||o.enumerable});return e};var z=(e,t,n)=>(n=e!=null?po(bo(e)):{},Rt(t||!e||!e.__esModule?Ee(n,"default",{value:e,enumerable:!0}):n,e)),yo=e=>Rt(Ee({},"__esModule",{value:!0}),e);var Ur={};Co(Ur,{DataTable:()=>Wr,useMeasuredContainer:()=>vt});module.exports=yo(Ur);var Qe=require("@heswell/salt-lab"),wo=require("@salt-ds/core"),Do=z(require("classnames")),qe=require("react");var ve=require("react"),Lt=z(require("react-dom"));var Pt=z(require("react-dom")),Et=require("@salt-ds/core"),St=require("react/jsx-runtime"),Mo=1,vo=(e=0,t=0,n=window)=>{let o=n.document.createElement("div");return o.className="vuuPopup "+Mo++,o.style.cssText=`left:${e}px; top:${t}px;`,n.document.body.appendChild(o),o},xo=(e,t)=>vo(e,t),He=(e,t,n,o,r)=>{t.style.cssText=`left:${n}px; top:${o}px;position: absolute;`,Pt.render((0,St.jsx)(Et.SaltProvider,{applyClassesTo:"child",children:e}),t,r)},Ht=xo;var Ye=function({children:t,x:n=0,y:o=0,onRender:r}){let i=(0,ve.useMemo)(()=>Ht(),[]);return(0,ve.useLayoutEffect)(()=>{He(t,i,n,o,r)},[t,r,i,n,o]),(0,ve.useLayoutEffect)(()=>()=>{var s;i&&(Lt.unmountComponentAtNode(i),i.classList.contains("vuuPopup")&&((s=i.parentElement)==null||s.removeChild(i)))},[i]),null};var It=require("react/jsx-runtime");var qt=require("@salt-ds/core"),ne=require("react");var J=z(require("react")),Ze=z(require("classnames")),Vt=require("@salt-ds/core");var V=require("react");var kt=e=>e.closest("[data-root='true']")!==null,At=(e,t)=>{var n;return e.ariaHasPopup==="true"&&((n=e.dataset)==null?void 0:n.idx)===`${t}`||e.querySelector(`:scope > [data-idx='${t}'][aria-haspopup='true']`)!==null};function To(e,...t){let n=new Set(e);for(let o of t)for(let r of o)n.add(r);return n}var Ro="Enter";var Po="Delete",Eo=new Set([Ro,Po]),Ho=new Set(["Tab"]),So=new Set(["ArrowRight","ArrowLeft"]),Kt=new Set(["Home","End","ArrowDown","ArrowUp"]),Nt=new Set(["Home","End","ArrowRight","ArrowLeft"]),Lo=new Set(["F1","F2","F3","F4","F5","F6","F7","F8","F9","F10","F11","F12"]),ms=To(Eo,Nt,Kt,So,Lo,Ho);var Ft=({key:e},t="vertical")=>(t==="vertical"?Kt:Nt).has(e);var zt=({autoHighlightFirstItem:e=!1,count:t,highlightedIndex:n,onActivate:o,onHighlight:r,onCloseMenu:i,onOpenMenu:s})=>{let l=(0,V.useRef)((n!=null?n:e)?0:-1),[,u]=(0,V.useState)(null),a=n!==void 0,m=(0,V.useCallback)(f=>{l.current=f,r==null||r(f),u({})},[r]),c=(0,V.useCallback)(f=>{f!==l.current&&(a||m(f))},[a,m]),p=(0,V.useRef)(!0),v=(0,V.useRef)(!1),y=f=>v.current=f,b=a?n:l.current,g=(0,V.useCallback)(f=>{let M=Io(t,f.key,l.current);M!==l.current&&c(M)},[t,c]),x=(0,V.useCallback)(f=>{Ft(f)?(f.preventDefault(),f.stopPropagation(),p.current=!0,g(f)):(f.key==="ArrowRight"||f.key==="Enter")&&At(f.target,b)?s(b):f.key==="ArrowLeft"&&!kt(f.target)?i(b):f.key==="Enter"&&o&&o(b)},[b,g,o,i,s]),D=(0,V.useMemo)(()=>({onFocus:()=>{b===-1&&m(0)},onKeyDown:x,onMouseDownCapture:()=>{p.current=!1,y(!0)},onMouseMove:()=>{p.current&&(p.current=!1)},onMouseLeave:()=>{p.current=!0,y(!1),c(-1)}}),[b,c,g,o,i,s,m]);return{focusVisible:p.current?b:-1,controlledHighlighting:a,highlightedIndex:b,setHighlightedIndex:c,listProps:D,setIgnoreFocus:y}};function Io(e,t,n){return t==="ArrowUp"?n>0?n-1:n:n===null?0:n===e-1?n:n+1}var te=z(require("react"));var Je=e=>e.type===Se||!!e.props["data-group"],$t=e=>{let t=(0,te.useCallback)(()=>{let r=(s,l="root",u={},a={})=>{let m=u[l]=[],c=0,p=!1;return te.default.Children.forEach(s,v=>{if(v.type===Ot)p=!0;else{let y=Je(v),b=l==="root"?`${c}`:`${l}.${c}`,{props:{action:g,options:x}}=v,{childWithId:D,grandChildren:f}=i(v,b,y,p);m.push(D),f?r(f,b,u,a):a[b]={action:g,options:x},c+=1,p=!1}}),[u,a]},i=(s,l,u,a=!1)=>{let{props:{children:m}}=s;return{childWithId:te.default.cloneElement(s,{hasSeparator:a,id:`${l}`,key:l,children:u?void 0:m}),grandChildren:u?m:void 0}};return r(e)},[e]),[n,o]=(0,te.useMemo)(()=>t(),[t]);return[n,o]};var ce=require("react/jsx-runtime"),Bt="vuuMenuList",Ot=()=>(0,ce.jsx)("li",{className:"vuuMenuItem-divider"}),Se=()=>null,je=({children:e,idx:t,...n})=>(0,ce.jsx)("div",{...n,children:e}),ko=e=>e.props["data-icon"],Gt=({activatedByKeyboard:e,childMenuShowing:t=-1,children:n,className:o,highlightedIdx:r,id:i,isRoot:s,listItemProps:l,menuId:u,onHighlightMenuItem:a,onActivate:m,onCloseMenu:c,onOpenMenu:p,...v})=>{let y=(0,Vt.useIdMemo)(i),b=(0,J.useRef)(null),g=(0,J.useMemo)(()=>new Map,[]),x=S=>{var C;let d=(C=b.current)==null?void 0:C.querySelector(`:scope > [data-idx='${S}']`);d!=null&&d.id&&(p==null||p(d.id))},D=S=>{var C;let d=(C=b.current)==null?void 0:C.querySelector(`:scope > [data-idx='${S}']`);d!=null&&d.id&&(m==null||m(d.id))},{focusVisible:f,highlightedIndex:M,listProps:h}=zt({count:J.default.Children.count(n),highlightedIndex:r,onActivate:D,onHighlight:a,onOpenMenu:x,onCloseMenu:c}),w=t==-1?f:-1;return(0,J.useLayoutEffect)(()=>{var S;t===-1&&e&&((S=b.current)==null||S.focus())},[e,t]),(0,ce.jsx)("div",{...v,...h,"aria-activedescendant":(()=>M===void 0||M===-1?void 0:g.get(M))(),className:(0,Ze.default)(Bt,o,{[`${Bt}-childMenuShowing`]:t!==-1}),"data-root":s||void 0,id:`${y}-${u}`,ref:b,role:"menu",tabIndex:0,children:H()});function H(){let S={...l,role:"menuitem"},d=(T,k,O)=>k?[(0,ce.jsx)("span",{className:"vuuIconContainer","data-icon":O},"icon")].concat(T):T;function C(T,k,O,q){var Tt;let{children:ae,className:P,"data-icon":L,id:B,hasSeparator:j,label:ee,..._e}=k.props,Xe=Je(k),Dt=Xe&&t===O,mo=Dt?`${y}-${B}`:void 0;T.push((0,ce.jsx)(je,{..._e,...S,...Ao(`${y}-${u}`,B,O,(Tt=k.key)!=null?Tt:B,M,w,P,j),"aria-controls":mo,"aria-haspopup":Xe||void 0,"aria-expanded":Dt||void 0,children:d(Xe?ee:ae,q,L)}))}let R=[];if(n.length>0){let T=n.some(ko);n.forEach((k,O)=>{C(R,k,O,T)})}return R}},Ao=(e,t,n,o,r,i,s,l)=>({id:`${e}-${t}`,key:o!=null?o:n,"data-idx":n,"data-highlighted":n===r||void 0,className:(0,Ze.default)("vuuMenuItem",s,{"vuuMenuItem-separator":l,focusVisible:i===n})});Gt.displayName="MenuList";var Wt=Gt;var K=require("react");function Ut(e){if(e){let t=e.dataset.idx;if(t)return parseInt(t,10);if(e.ariaPosInSet)return parseInt(e.ariaPosInSet,10)-1}}var et=e=>e==null?void 0:e.closest("[data-idx],[aria-posinset]");var _t=(e,t,n)=>e.map((o,r)=>r===e.length-1?{...o,[n]:o[n]-t}:o),Ko=(e,t)=>_t(e,t,"left"),No=(e,t)=>_t(e,t,"top"),Fo=(e,t)=>{let[n,o]=t.slice(-2),r=document.getElementById(`${e}-${o.id}`);if(r===null)throw Error(`useCascade.flipSides element with id ${o.id} not found`);let{width:i}=r.getBoundingClientRect();return t.map(s=>s===o?{...s,left:n.left-(i-2)}:s)},zo=(e,t)=>{let[{left:n,top:o}]=t.slice(-1),{offsetWidth:r,offsetTop:i}=e;return{left:n+r,top:i+o}},xe=e=>{let t=e.lastIndexOf("-");return t===-1?e:e.slice(t+1)},Le=e=>{let t=xe(e),n=t.lastIndexOf(".");return n>-1?t.slice(0,n):"root"},$o=e=>{let t=0,n=e.indexOf(".",0);for(;n!==-1;)t+=1,n=e.indexOf(".",n+1);return t},Oo=e=>({menuId:Le(e.id),itemId:xe(e.id),isGroup:e.ariaHasPopup==="true",isOpen:e.ariaExpanded==="true",level:$o(e.id)}),Xt=({id:e,onActivate:t,onMouseEnterItem:n,position:{x:o,y:r}})=>{let[,i]=(0,K.useState)({}),s=(0,K.useRef)([{id:"root",left:o,top:r}]),l=(0,K.useCallback)(f=>{s.current=f,i({})},[]),u=(0,K.useRef)(),a=(0,K.useRef)(),m=(0,K.useRef)({root:"no-popup"}),c=(0,K.useRef)(0),p=(0,K.useCallback)((f="root",M=null,h=null)=>{if(f==="root"&&M===null)l([{id:"root",left:o,top:r}]);else{m.current[f]="popup-open";let E=(h?h.ownerDocument:document).getElementById(`${e}-${f}-${M}`),{left:H,top:S}=zo(E,s.current);l(s.current.concat({id:M,left:H,top:S}))}},[e,o,r,l]),v=(0,K.useCallback)(f=>{l(f==="root"?[]:s.current.slice(0,-1))},[l]),y=(0,K.useCallback)((f,M)=>{let h=s.current.slice(),{id:w}=h[h.length-1];for(;h.length>1&&!M.startsWith(w);){let E=Le(w);h.pop(),m.current[w]="no-popup",m.current[E]="no-popup",{id:w}=h[h.length-1]}h.length<s.current.length&&l(h)},[l]),b=(0,K.useCallback)((f,M,h)=>{u.current&&clearTimeout(u.current),u.current=window.setTimeout(()=>{console.log(`scheduleOpen timed out opening ${M}`),y(f,M),m.current[f]="popup-open",m.current[M]="no-popup",p(f,M,h)},400)},[y,p]),g=(0,K.useCallback)((f,M,h)=>{console.log(`scheduleClose openMenuId ${f} menuId ${M} itemId ${h}`),m.current[f]="pending-close",a.current=window.setTimeout(()=>{y(M,h)},400)},[y]),x=(0,K.useCallback)(()=>{let{current:f}=s,[M]=f.slice(-1),h=document.getElementById(`${e}-${M.id}`);if(h){let{right:w,bottom:E}=h.getBoundingClientRect(),{clientHeight:H,clientWidth:S}=document.body;if(w>S){let d=f.length>1?Fo(e,f):Ko(f,w-S);l(d)}else if(E>H){let d=No(f,E-H);l(d)}}},[e,l]),D=(0,K.useMemo)(()=>({onMouseEnter:f=>{let M=et(f.target),{menuId:h,itemId:w,isGroup:E,isOpen:H,level:S}=Oo(M),d=c.current===S,{current:{[h]:C}}=m;if(c.current=S,C==="no-popup"&&E)m.current[h]="popup-pending",b(h,w,M);else if(C==="popup-pending"&&!E)m.current[h]="no-popup",clearTimeout(u.current),u.current=void 0;else if(C==="popup-pending"&&E)clearTimeout(u.current),b(h,w,M);else if(C==="popup-open"){let[{id:R},{id:T}]=s.current.slice(-2);R===h&&m.current[T]!=="pending-close"&&d?(g(T,h,w),E&&!H&&b(h,w,M)):R===h&&E&&w!==T&&m.current[T]==="pending-close"?b(h,w,M):E?(y(h,w),b(h,w,M)):m.current[T]==="pending-close"&&d||y(h,w)}C==="pending-close"&&(u.current&&(clearTimeout(u.current),u.current=void 0),clearTimeout(a.current),a.current=void 0,m.current[h]="popup-open"),n(f,w)},onClick:f=>{let M=f.target,h=et(M),w=Ut(h);console.log(`list item click [${w}] hasPopup ${h.ariaHasPopup}`),h.ariaHasPopup==="true"?h.ariaExpanded!=="true"&&p(w):t(xe(h.id))}}),[y,t,n,p,g,b]);return{closeMenu:v,handleRender:x,listItemProps:D,openMenu:p,openMenus:s.current}};var Yt=require("react"),Qt=({containerClassName:e,isOpen:t,onClose:n})=>{(0,Yt.useEffect)(()=>{let o;return t&&(o=r=>{r.target.closest(`.${e}`)===null&&(n==null||n("root"))},document.body.addEventListener("click",o,!0)),()=>{o&&document.body.removeEventListener("click",o,!0)}},[e,t,n])};var we=require("react/jsx-runtime"),Jt=require("react"),Bo=()=>{},tt=({activatedByKeyboard:e,children:t,className:n,id:o,onClose:r=()=>{},position:i={x:0,y:0},style:s,...l})=>{let u=(0,qt.useIdMemo)(o),a=(0,ne.useRef)(Bo),[m,c]=$t(t),p=(0,ne.useRef)(e),v=(0,ne.useCallback)(()=>{p.current=!1},[]),y=(0,ne.useCallback)(d=>{let{action:C,options:R}=c[d];a.current("root"),r(C,R)},[c,r]),{closeMenu:b,listItemProps:g,openMenu:x,openMenus:D,handleRender:f}=Xt({id:u,onActivate:y,onMouseEnterItem:v,position:i});a.current=b,console.log({openMenus:D});let M=(0,ne.useCallback)(()=>{b(),r()},[b,r]);Qt({containerClassName:"vuuMenuList",onClose:M,isOpen:D.length>0});let h=d=>{let C=xe(d),R=Le(C);p.current=!0,x(R,C)},w=()=>{p.current=!0,b()},E=()=>{},H=D.length-1,S=d=>{if(d>=H)return-1;{let{id:C}=D[d+1],R=C.lastIndexOf(".");return parseInt(R===-1?C:C.slice(-R),10)}};return(0,we.jsx)(we.Fragment,{children:D.map(({id:d,left:C,top:R},T)=>{let k=S(T);return(0,we.jsx)(Ye,{x:C,y:R,onRender:f,children:(0,Jt.createElement)(Wt,{...l,activatedByKeyboard:p.current,childMenuShowing:k,className:n,id:u,menuId:d,isRoot:T===0,key:T,listItemProps:g,onActivate:y,onHighlightMenuItem:E,onCloseMenu:w,onOpenMenu:h,style:s},m[d])},T)})})};tt.displayName="ContextMenu";var me=require("react"),Ie=require("react/jsx-runtime"),ke=(0,me.createContext)(null),Zt=e=>"children"in e,Vo=({children:e,context:t,menuActionHandler:n,menuBuilder:o})=>{let r=(0,me.useMemo)(()=>t!=null&&t.menuBuilders&&o?t.menuBuilders.concat(o):o?[o]:(t==null?void 0:t.menuBuilders)||[],[t,o]),i=(0,me.useCallback)((s,l)=>{var u;if(n!=null&&n(s,l)||(u=t==null?void 0:t.menuActionHandler)!=null&&u.call(t,s,l))return!0},[t,n]);return(0,Ie.jsx)(ke.Provider,{value:{menuActionHandler:i,menuBuilders:r},children:e})},jt=({children:e,label:t,menuActionHandler:n,menuBuilder:o})=>(0,Ie.jsx)(ke.Consumer,{children:r=>(0,Ie.jsx)(Vo,{context:r,label:t,menuActionHandler:n,menuBuilder:o,children:e})});var De=require("react");var en=z(require("classnames")),pe=z(require("react")),Ae=z(require("react-dom"));var nt=!1,W=[];function tn(e){if(e.key==="Esc"){if(W.length)on();else if(nt){let t=document.body.querySelector(".vuuDialog");t&&Ae.default.unmountComponentAtNode(t)}}}function nn(e){if(W.length){let t=document.body.querySelectorAll(".vuuPopup");for(let n=0;n<t.length;n++)if(t[n].contains(e.target))return;on()}}function on(){if(W.length){let e=document.body.querySelectorAll(".vuuPopup");for(let t=0;t<e.length;t++)Ae.default.unmountComponentAtNode(e[t]);rn("*")}}function Go(e){W.indexOf(e)===-1&&(W.push(e),nt===!1&&(window.addEventListener("keydown",tn,!0),window.addEventListener("click",nn,!0)))}function rn(e){if(W.length){if(e==="*")W.length=0;else{let t=W.indexOf(e);t!==-1&&W.splice(t,1)}W.length===0&&nt===!1&&(window.removeEventListener("keydown",tn,!0),window.removeEventListener("click",nn,!0))}}var Wo=({children:e,position:t,style:n})=>{let o=(0,en.default)("hwPopup","hwPopupContainer",t);return(0,pe.createElement)("div",{className:o,style:n},e)},Uo=1,oe=class{static showPopup({name:t="anon",group:n="all",position:o="",left:r=0,right:i="auto",top:s=0,width:l="auto",component:u}){if(!u)throw Error("PopupService showPopup, no component supplied");Go(t);let a=document.body.querySelector(".vuuPopup."+n);a===null&&(a=document.createElement("div"),a.className="vuuPopup "+n,document.body.appendChild(a));let m={width:l};He((0,pe.createElement)(Wo,{key:Uo++,position:o,style:m},u),a,r,s,()=>{oe.keepWithinThePage(a,i)})}static hidePopup(t="anon",n="all"){if(W.indexOf(t)!==-1){rn(t);let o=document.body.querySelector(`.vuuPopup.${n}`);o&&Ae.default.unmountComponentAtNode(o)}}static keepWithinThePage(t,n="auto"){let o=t.querySelector(".vuuPopupContainer > *");if(o){let{top:r,left:i,width:s,height:l,right:u}=o.getBoundingClientRect(),a=window.innerWidth,c=window.innerHeight-(r+l);c<0&&(o.style.top=Math.round(r)+c+"px");let p=a-(i+s);if(p<0&&(o.style.left=Math.round(i)+p+"px"),typeof n=="number"&&n!==u){let v=n-u;o.style.left=i+v+"px"}}}};var Ke=require("react/jsx-runtime"),Ne=()=>{let e=(0,De.useContext)(ke),t=(0,De.useCallback)((o,r,i)=>{let s=[];for(let l of o)s=s.concat(l(r,i));return s},[]);return(0,De.useCallback)((o,r,i)=>{var u;o.stopPropagation(),o.preventDefault();let s=(u=e==null?void 0:e.menuBuilders)!=null?u:[],l=t(s,r,i);console.log({menuItemDescriptors:l}),l.length&&(e!=null&&e.menuActionHandler)&&(console.log(`showContextMenu ${r}`,{options:i}),_o(o,l,e.menuActionHandler))},[t,e])},_o=(e,t,n)=>{let{clientX:o,clientY:r}=e,l=(0,Ke.jsx)(tt,{onClose:(u,a)=>{u&&(n(u,a),oe.hidePopup())},position:{x:o,y:r},children:(u=>{let a=(m,c)=>Zt(m)?(0,Ke.jsx)(Se,{label:m.label,children:m.children.map(a)},c):(0,Ke.jsx)(je,{action:m.action,"data-icon":m.icon,options:m.options,children:m.label},c);return u.map(a)})(t)});oe.showPopup({left:0,top:0,component:l})};var Ue=require("@salt-ds/core"),co=require("react");var Dn=require("@vuu-ui/vuu-utils"),Tn=require("react"),Rn=z(require("classnames"));var ze=require("@vuu-ui/vuu-utils"),dn=z(require("classnames")),$e=require("react");var sn=require("@vuu-ui/vuu-utils"),ln=require("@heswell/salt-lab"),un=z(require("classnames")),Te=require("react");var Fe=require("react/jsx-runtime"),Xo=e=>e==null?"":typeof e=="string"?e:e.toString(),an=({className:e,column:t,row:n,valueFormatter:o=Xo})=>{let r=(0,Te.useRef)(null),{align:i,key:s,pin:l,editable:u,pinnedOffset:a,resizing:m}=t,[c,p]=(0,Te.useState)(!1),v=o(n[s]),[y,b]=(0,Te.useState)(v),g=()=>{var w;(w=r.current)==null||w.focus()},x=w=>{w.key==="Enter"&&p(!0)},D=()=>{p(!0)},f=(w="",E="",H=!0,S=!1)=>{var d;p(!1),S?b(w):E!==w&&b(E),H===!1&&((d=r.current)==null||d.focus())},M=(0,un.default)(e,{vuuAlignRight:i==="right",vuuPinFloating:l==="floating",vuuPinLeft:l==="left",vuuPinRight:l==="right","vuuTableCell-resizing":m})||void 0,h=(0,sn.getColumnPinStyle)(t);return u?(0,Fe.jsx)("td",{className:M,"data-editable":!0,style:h,onKeyDown:x,children:(0,Fe.jsx)(ln.EditableLabel,{editing:c,value:y,onChange:b,onMouseDownCapture:g,onEnterEditMode:D,onExitEditMode:f,onKeyDown:x,ref:r,tabIndex:0},"title")}):(0,Fe.jsx)("td",{className:M,style:h,children:v})};var cn=require("@vuu-ui/vuu-utils");var de=require("react/jsx-runtime"),{DEPTH:Yo,IS_LEAF:mn}=cn.metadataKeys,Qo=(e,t)=>{let{[Yo]:n,[mn]:o}=t;if(o||n>e.length)return[null,n===null?0:n-1];if(n===0)return["$root",0];{let r=e[n-1];return[t[r.key],n-1]}},pn=({column:e,onClick:t,row:n})=>{let{columns:o}=e,[r,i]=Qo(o,n),s={left:e.pin=="left"?e.pinnedOffset:void 0},l=n[mn],u=Array(i).fill(0).map((a,m)=>(0,de.jsx)("span",{className:"vuuTableGroupCell-spacer"},m));return(0,de.jsxs)("td",{className:"vuuTableGroupCell vuuPinLeft",onClick:l?void 0:t,style:s,children:[u,l?null:(0,de.jsx)("span",{className:"vuuTableGroupCell-toggle","data-icon":"triangle-right"}),(0,de.jsx)("span",{children:r})]})};var rt=require("react/jsx-runtime"),{IDX:qo,IS_EXPANDED:Jo}=ze.metadataKeys,ot="vuuDataTableRow",Oe=(0,$e.memo)(function({columns:t,height:n,index:o,onToggleGroup:r,row:i,valueFormatters:s}){let{[qo]:l,[Jo]:u}=i,a=(0,dn.default)(ot,{[`${ot}-even`]:l%2===0,[`${ot}-expanded`]:u}),m=l-o,c=(0,$e.useCallback)(()=>r==null?void 0:r(i),[r,i]);return(0,rt.jsx)("tr",{"data-idx":l,className:a,style:{transform:`translate3d(0px, ${m*n}px, 0px)`},children:t.map(p=>{let v=(0,ze.isGroupColumn)(p);return(0,rt.jsx)(v?pn:an,{column:p,onClick:v?c:void 0,row:i,valueFormatter:s==null?void 0:s[p.name]},p.name)})})});var xn=z(require("classnames")),ge=require("react");var fe=require("react");var gn=require("react/jsx-runtime"),fn=()=>{},Zo="vuuColumnResizer",Be=({onDrag:e,onDragEnd:t=fn,onDragStart:n=fn})=>{let o=(0,fe.useRef)(0),r=(0,fe.useCallback)(l=>{l.stopPropagation&&l.stopPropagation(),l.preventDefault&&l.preventDefault();let u=Math.round(l.clientX),a=u-o.current;o.current=u,a!==0&&e(l,a)},[e]),i=(0,fe.useCallback)(l=>{window.removeEventListener("mouseup",i),window.removeEventListener("mousemove",r),t(l)},[t,r]),s=(0,fe.useCallback)(l=>{n(l),o.current=Math.round(l.clientX),window.addEventListener("mouseup",i),window.addEventListener("mousemove",r),l.stopPropagation&&l.stopPropagation(),l.preventDefault&&l.preventDefault()},[n,r,i]);return(0,gn.jsx)("div",{className:Zo,onMouseDown:s})};var st=z(require("classnames"));var re=require("react/jsx-runtime"),bn="vuuSortIndicator",hn=({sorted:e})=>{if(!e)return null;let t=typeof e=="number"?e<0?"dsc":"asc":e==="A"?"asc":"dsc";return typeof e=="number"?(0,re.jsxs)("div",{className:(0,st.default)(bn,"multi-col",t),children:[(0,re.jsx)("span",{"data-icon":`sorted-${t}`}),(0,re.jsx)("span",{className:"vuuSortPosition",children:Math.abs(e)})]}):(0,re.jsx)("div",{className:(0,st.default)(bn,"single-col"),children:(0,re.jsx)("span",{"data-icon":`sorted-${t}`})})};var se=require("react"),Ve=({column:e,onResize:t,rootRef:n})=>{let o=(0,se.useRef)(0),r=(0,se.useRef)(!1),{name:i}=e,s=(0,se.useCallback)(()=>{if(t&&n.current){let{width:a}=n.current.getBoundingClientRect();o.current=Math.round(a),r.current=!0,t==null||t("begin",i)}},[i,t,n]),l=(0,se.useCallback)((a,m)=>{if(n.current&&t){let{width:c}=n.current.getBoundingClientRect(),p=Math.round(c)+m;p!==o.current&&p>0&&(t("resize",i,p),o.current=p)}},[i,t,n]),u=(0,se.useCallback)(()=>{t&&(t("end",i,o.current),r.current=!1)},[i,t]);return{isResizing:r.current,onDrag:l,onDragStart:s,onDragEnd:u}};var Cn=z(require("classnames")),yn=require("react");var vn=require("react/jsx-runtime");var Mn=({column:e,filter:t})=>{let n=Ne(),o=(0,yn.useCallback)(r=>{r.stopPropagation(),n(r,"filter",{column:e,filter:t})},[e,t,n]);return e.filter?(0,vn.jsx)("div",{className:(0,Cn.default)("vuuFilterIndicator"),"data-icon":"filter",onClick:o}):null};var Z=require("react/jsx-runtime"),Re="vuuTable-headerCell",Ge=({column:e,className:t,onClick:n,onDragEnd:o,onDragStart:r,onResize:i,...s})=>{let l=(0,ge.useRef)(null),{isResizing:u,...a}=Ve({column:e,onResize:i,rootRef:l}),m=Ne(),c=g=>{m(g,"header",{column:e})},p=(0,ge.useCallback)(g=>!u&&(n==null?void 0:n(g)),[u,n]),v=(0,ge.useCallback)(g=>{r==null||r(g)},[r]),y=(0,ge.useCallback)(()=>{o==null||o()},[o]),b=(0,xn.default)(Re,t,{vuuPinFloating:e.pin==="floating",vuuPinLeft:e.pin==="left",vuuPinRight:e.pin==="right",vuuEndPin:e.endPin,[`${Re}-resizing`]:e.resizing,[`${Re}-right`]:e.align==="right"});return(0,Z.jsx)("th",{className:b,...s,onClick:p,onContextMenu:c,onMouseDown:v,onMouseUp:y,ref:l,children:(0,Z.jsxs)("div",{className:`${Re}-inner`,children:[(0,Z.jsx)(Mn,{column:e}),(0,Z.jsx)("div",{className:`${Re}-label`,children:e.label}),(0,Z.jsx)(hn,{sorted:e.sorted}),e.resizeable!==!1?(0,Z.jsx)(Be,{...a}):null]})})};var U=require("react/jsx-runtime"),wn="vuuDataTable",{RENDER_IDX:jo}=Dn.metadataKeys,Pn=({columns:e,data:t,headerHeight:n,onHeaderCellDragEnd:o,rowHeight:r})=>{let i=(0,Tn.useCallback)(()=>{o==null||o()},[o]);return(0,U.jsx)(U.Fragment,{children:e.map((s,l)=>(0,U.jsx)("table",{className:(0,Rn.default)(`${wn}-table`,`${wn}-columnBased`,{vuuPinLeft:s.pin==="left"}),"data-idx":l,id:`col-${l}`,style:{width:s.width,left:s.pinnedOffset,"--vuuTableHeaderHeight":`${n}px`,"--row-height":`${r}px`},children:(0,U.jsxs)("tbody",{children:[(0,U.jsx)("tr",{children:(0,U.jsx)(Ge,{column:s,"data-idx":l,onDragEnd:i},l)},"header"),t.map((u,a)=>(0,U.jsx)(Oe,{columns:[s],height:r,index:a,row:u},u[jo])),(0,U.jsx)("tr",{className:"vuuTable-filler"})]})},s.name))})};var En=require("@vuu-ui/vuu-utils"),Hn=e=>(t,n)=>{let o=[];if(e===void 0)return o;if(t==="header")o.push(...er(n,e)),o.push(...or(n,e)),o.push(...tr(n,e)),o.push(...nr(n,e));else if(t==="filter"){let{column:r,filter:i}=n,s=(i==null?void 0:i.column)===(r==null?void 0:r.name);o.push({label:"Edit filter",action:"filter-edit",options:n}),o.push({label:"Remove filter",action:"filter-remove-column",options:n}),r&&!s&&o.push({label:"Remove all filters",action:"remove-filters",options:n})}return o};function er(e,{sort:{sortDefs:t}}){let{column:n}=e,o=[];if(n===void 0)return o;let r=t.length>0;return n.sorted==="A"?o.push({label:"Reverse Sort (DSC)",action:"sort-dsc",options:e}):n.sorted==="D"?o.push({label:"Reverse Sort (ASC)",action:"sort-asc",options:e}):typeof n.sorted=="number"?(n.sorted>0?o.push({label:"Reverse Sort (DSC)",action:"sort-add-dsc",options:e}):o.push({label:"Reverse Sort (ASC)",action:"sort-add-asc",options:e}),r&&Math.abs(n.sorted)<t.length&&o.push({label:"Remove from sort",action:"sort-remove",options:e}),o.push({label:"New Sort",children:[{label:"Ascending",action:"sort-asc",options:e},{label:"Descending",action:"sort-dsc",options:e}]})):r?(o.push({label:"Add to sort",children:[{label:"Ascending",action:"sort-add-asc",options:e},{label:"Descending",action:"sort-add-dsc",options:e}]}),o.push({label:"New Sort",children:[{label:"Ascending",action:"sort-asc",options:e},{label:"Descending",action:"sort-dsc",options:e}]})):o.push({label:"Sort",children:[{label:"Ascending",action:"sort-asc",options:e},{label:"Descending",action:"sort-dsc",options:e}]}),o}function tr(e,t){let{column:n}=e;if(n===void 0||t.groupBy.length===0)return[];let{name:o,label:r=o}=n;return[{label:`Aggregate ${r}`,children:[{label:"Count",action:"agg-count",options:e}].concat((0,En.isNumericColumn)(n)?[{label:"Sum",action:"agg-sum",options:e},{label:"Avg",action:"agg-avg",options:e},{label:"High",action:"agg-high",options:e},{label:"Low",action:"agg-low",options:e}]:[])}]}var at=(e,t)=>({label:`Pin ${t}`,action:`column-pin-${t}`,options:e}),it=e=>at(e,"left"),lt=e=>at(e,"floating"),ut=e=>at(e,"right");function nr(e,t){let{column:n}=e;if(n===void 0)return[];let{name:o,label:r=o,pin:i}=n,s=[{label:"Hide column",action:"column-hide",options:e}];return i===void 0?s.push({label:"Pin column",children:[it(e),lt(e),ut(e)]}):i==="left"?s.push({label:"Unpin column",action:"column-unpin",options:e},{label:"Pin column",children:[lt(e),ut(e)]}):i==="right"?s.push({label:"Unpin column",action:"column-unpin",options:e},{label:"Pin column",children:[it(e),lt(e)]}):i==="floating"&&s.push({label:"Unpin column",action:"column-unpin",options:e},{label:"Pin column",children:[it(e),ut(e)]}),s}function or(e,{groupBy:t}){let{column:n}=e,o=[];if(n===void 0)return o;let{name:r,label:i=r}=n;return t.length===0?o.push({label:`Group by ${i}`,action:"group",options:e}):o.push({label:`Add ${i} to group by`,action:"group-add",options:e}),o}var Sn=require("@vuu-ui/vuu-filters"),N=require("@vuu-ui/vuu-utils"),rr=(e,t)=>{if(e.filterStruct&&t){let[n,o]=(0,Sn.removeColumnFromFilter)(t,e.filterStruct);return{filter:o,filterStruct:n}}else return e},{Average:sr,Count:ir,High:lr,Low:ur,Sum:ar}=N.AggregationType,Ln=({dataSource:e,dispatchColumnAction:t})=>(o,r)=>{let i=r;if(i.column&&e){let{column:s}=i;switch(o){case"sort-asc":return e.sort=(0,N.setSortColumn)(e.sort,s,"A"),!0;case"sort-dsc":return e.sort=(0,N.setSortColumn)(e.sort,s,"D"),!0;case"sort-add-asc":return e.sort=(0,N.addSortColumn)(e.sort,s,"A"),!0;case"sort-add-dsc":return e.sort=(0,N.addSortColumn)(e.sort,s,"D"),!0;case"group":return e.groupBy=(0,N.addGroupColumn)(e.groupBy,s),!0;case"group-add":return e.groupBy=(0,N.addGroupColumn)(e.groupBy,s),!0;case"filter-remove-column":return e.filter=rr(e.filter,s),!0;case"remove-filters":return e.filter={filter:""},!0;case"agg-avg":return e.aggregations=(0,N.setAggregations)(e.aggregations,s,sr),!0;case"agg-high":return e.aggregations=(0,N.setAggregations)(e.aggregations,s,lr),!0;case"agg-low":return e.aggregations=(0,N.setAggregations)(e.aggregations,s,ur),!0;case"agg-count":return e.aggregations=(0,N.setAggregations)(e.aggregations,s,ir),!0;case"agg-sum":return e.aggregations=(0,N.setAggregations)(e.aggregations,s,ar),!0;case"column-pin-floating":return t({type:"updateColumnProp",column:s,pin:"floating"}),!0;case"column-pin-left":return t({type:"updateColumnProp",column:s,pin:"left"}),!0;case"column-pin-right":return t({type:"updateColumnProp",column:s,pin:"right"}),!0;case"column-unpin":return t({type:"updateColumnProp",column:s,pin:void 0}),!0;default:}}return!1};var he=require("@vuu-ui/vuu-utils"),mt=require("react");var ct=z(require("classnames")),In=require("react");var Y=require("react/jsx-runtime"),be="vuuTable-groupHeaderCell",cr=e=>{let{column:t,className:n,onRemoveColumn:o}=e;return(0,Y.jsxs)("div",{className:(0,ct.default)(`${be}-col`,n),role:"columnheader",children:[(0,Y.jsx)("span",{className:`${be}-label`,children:t.name}),(0,Y.jsx)("span",{className:`${be}-close`,"data-icon":"close-circle",onClick:()=>o==null?void 0:o(t)})]})},kn=({column:e,className:t,onRemoveColumn:n,onResize:o,...r})=>{let i=(0,In.useRef)(null),{isResizing:s,...l}=Ve({column:e,onResize:o,rootRef:i}),u=(0,ct.default)(be,t,{vuuPinLeft:e.pin==="left",[`${be}-right`]:e.align==="right"}),{columns:a}=e;return(0,Y.jsx)("th",{className:u,...r,children:(0,Y.jsxs)("div",{className:`${be}-inner`,children:[a.map(m=>(0,Y.jsx)(cr,{column:m,onRemoveColumn:n},m.key)),e.resizeable!==!1?(0,Y.jsx)(Be,{...l}):null]})})};var G=require("react/jsx-runtime"),An="vuuDataTable",{RENDER_IDX:mr}=he.metadataKeys,Kn=({columns:e,data:t,onColumnResize:n,onHeaderCellDragStart:o,onRemoveColumnFromGroupBy:r,onSort:i,onToggleGroup:s,rowHeight:l,valueFormatters:u})=>{let a=(0,mt.useCallback)(c=>{console.log("handkleDRagSTart",{evt:c,onHeaderCellDragStart:o})},[o]),m=(0,mt.useCallback)(c=>{var x;let v=c.target.closest(".vuuTable-headerCell"),y=parseInt((x=v==null?void 0:v.dataset.idx)!=null?x:"-1"),b=e[y],g=c.shiftKey;b&&i(b,g)},[e,i]);return(0,G.jsxs)("table",{className:`${An}-table`,children:[(0,G.jsx)("colgroup",{children:e.map((c,p)=>(0,G.jsx)("col",{width:`${c.width}px`},p))}),(0,G.jsx)("thead",{children:(0,G.jsx)("tr",{children:e.map((c,p)=>{let v=(0,he.getColumnPinStyle)(c);return(0,he.isGroupColumn)(c)?(0,G.jsx)(kn,{column:c,"data-idx":p,onRemoveColumn:r,onResize:n,style:v},p):(0,G.jsx)(Ge,{column:c,"data-idx":p,onClick:m,onDragStart:a,onResize:n,style:v},p)})})}),(0,G.jsxs)("tbody",{children:[t==null?void 0:t.map((c,p)=>(0,G.jsx)(Oe,{columns:e,height:l,index:p,onToggleGroup:s,row:c,valueFormatters:u},c[mr])),(0,G.jsx)("tr",{className:`${An}-filler`})]})]})};var Me=require("@vuu-ui/vuu-utils"),F=require("react");var pr=([,e],[,t])=>e-t,We=class{constructor(t){this.keys=new Map,this.free=[],this.nextKeyValue=0,this.reset(t)}next(){return this.free.length>0?this.free.pop():this.nextKeyValue++}reset({from:t,to:n}){this.keys.forEach((r,i)=>{(i<t||i>=n)&&(this.free.push(r),this.keys.delete(i))});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 i=this.next();this.keys.set(r,i)}}keyFor(t){let n=this.keys.get(t);if(n===void 0)throw console.log(`key not found
2
2
  keys: ${Object.entries(this.keys).map((o,r)=>`${o}=>${r}`).join(", ")}
3
3
  free : ${this.free.join(",")}
4
- `),Error(`KeySet, no key found for rowIndex ${t}`);return n}withKeys(t){for(let n of t)n[1]=this.keyFor(n[0]);return t.sort(nr)}};var ge=require("@vuu-ui/vuu-utils"),L=require("react"),{RENDER_IDX:kn}=ge.metadataKeys,In=(e,t)=>e[kn]-t[kn],or=e=>["aggregate","filter","groupBy","sort"].includes(e.type);function An({dataSource:e,onConfigChange:t,onSizeChange:n,onSubscribed:o,range:r={from:0,to:0}}){let[,s]=(0,L.useState)(null),i=(0,L.useRef)(!0),l=(0,L.useRef)(!1),u=(0,L.useRef)({from:0,to:0}),a=(0,L.useRef)(null),m=(0,L.useRef)([]),c=(0,L.useMemo)(()=>new ft((0,ge.getFullRange)(r)),[]),p=(0,L.useCallback)(d=>{for(let D of d)c.add(D);m.current=c.data.slice().sort(In),l.current=!0},[c]),x=(0,L.useCallback)(d=>{d.type==="subscribed"?o==null||o(d):d.type==="viewport-update"?(typeof d.size=="number"&&(n==null||n(d.size),c.setRowCount(d.size)),d.rows?p(d.rows):typeof d.size=="number"&&(m.current=c.data.slice().sort(In),l.current=!0)):or(d)&&(t==null||t(d))},[c,t,n,o,p]);(0,L.useEffect)(()=>()=>{a.current&&(cancelAnimationFrame(a.current),a.current=null),i.current=!1},[]);let C=(0,L.useCallback)(()=>{i.current&&(l.current&&(s({}),l.current=!1),a.current=requestAnimationFrame(C))},[s]);(0,L.useEffect)(()=>{a.current=requestAnimationFrame(C)},[C]);let b=(0,L.useCallback)((d,D)=>{u.current={from:d,to:D},e==null||e.setRange(d,D),c.setRange(d,D)},[e,c]);return(0,L.useEffect)(()=>(e==null||e.subscribe({range:u.current},x),()=>{e==null||e.unsubscribe()}),[e,x]),{data:m.current,setRange:b,dataSource:e}}var ft=class{constructor({from:t,to:n}){this.rowCount=0;this.setRowCount=t=>{t<this.data.length&&(this.data.length=t),this.rowCount=t};this.range=new ge.WindowRange(t,n),this.data=new Array(n-t),this.rowCount=0}add(t){let[n]=t;if(this.isWithinRange(n)){let o=n-this.range.from;this.data[o]=t}}getAtIndex(t){return this.range.isWithin(t)&&this.data[t-this.range.from]!=null?this.data[t-this.range.from]:void 0}isWithinRange(t){return this.range.isWithin(t)}setRange(t,n){if(t!==this.range.from||n!==this.range.to){let[o,r]=this.range.overlap(t,n),s=new Array(n-t);for(let i=o;i<r;i++){let l=this.getAtIndex(i);if(l){let u=i-t;s[u]=l}}this.data=s,this.range.from=t,this.range.to=n}}};var A=require("react");function rr(e,...t){let n=new Set(e);for(let o of t)for(let r of o)n.add(r);return n}var bt="ArrowUp",gt="ArrowDown",ht="ArrowLeft",Ct="ArrowRight";var Ve="Home",we="End",We="PageUp",Ue="PageDown";var sr=new Set(["Enter","Delete"," "]),ir=new Set(["Tab"]),lr=new Set(["ArrowRight","ArrowLeft"]),Kn=new Set([Ve,we,We,Ue,gt,ht,Ct,bt]),ur=new Set(["F1","F2","F3","F4","F5","F6","F7","F8","F9","F10","F11","F12"]),yl=rr(sr,Kn,lr,ur,ir);var Fn=({key:e})=>Kn.has(e);var Nn=e=>`thead th:nth-child(${e+1})`,ar=(e,t)=>`tbody > tr[data-idx='${e}'] > td:nth-child(${t+1})`;function cr(e,[t,n],o,r){return e===bt||e===we?t>-1?[t-1,n]:[t,n]:e===gt?t===-1?[0,n]:t===r-1?[t,n]:[t+1,n]:e===Ct?n<o-1?[t,n+1]:[t,n]:e===ht?n>0?[t,n-1]:[t,n]:[t,n]}var zn=({columnCount:e=0,containerRef:t,disableHighlightOnFocus:n,data:o,requestScroll:r,rowCount:s=0})=>{var h;let i=(0,A.useRef)([-1,-1]),l=(0,A.useRef)(),u=(0,A.useRef)([-1,0]),a=(0,A.useCallback)(([f,y])=>{var w;let R=f===-1?Nn(y):ar(f,y);return(w=t.current)==null?void 0:w.querySelector(R)},[t]),m=f=>f==null?void 0:f.closest("th,td"),c=f=>{var y,R;if(f.tagName==="TH")return[-1,parseInt((y=f.dataset.idx)!=null?y:"-1",10)];{let w=f.closest("tr");if(w){let T=parseInt((R=w.dataset.idx)!=null?R:"-1",10),E=Array.from(w.childNodes).indexOf(f);return[T,E]}}return[-1,-1]},p=(0,A.useCallback)(f=>{var y;if(t.current){let R=a(f);R&&(R!==l.current&&((y=l.current)==null||y.setAttribute("tabindex",""),l.current=R,R.setAttribute("tabindex","0")),R.focus())}},[t,a]),x=(0,A.useCallback)((f,y,R=!1)=>{let w=[f,y];u.current=w,p(w),R&&(i.current=w)},[p]),C=(0,A.useCallback)(async(f,y)=>{switch(f){case Ue:r==null||r({type:"scroll-page",direction:"down"});break;case We:r==null||r({type:"scroll-page",direction:"up"});break;case Ve:r==null||r({type:"scroll-end",direction:"home"});break;case we:r==null||r({type:"scroll-end",direction:"end"});break}return y},[r]),b=(0,A.useCallback)(()=>{var f;if(n!==!0&&(f=t.current)!=null&&f.contains(document.activeElement)){let y=m(document.activeElement);y&&(i.current=c(y))}},[n,t]),d=(0,A.useCallback)(async f=>{let[y,R]=f.key===Ue||f.key===We||f.key===we||f.key===Ve?await C(f.key,u.current):cr(f.key,u.current,e,s);(y!==u.current[0]||R!==u.current[1])&&x(y,R,!0)},[e,C,s,x]),D=(0,A.useCallback)(f=>{o.length>0&&Fn(f)&&(f.preventDefault(),f.stopPropagation(),d(f))},[o,d]),v=(0,A.useCallback)(f=>{let y=f.target,R=m(y),[w,T]=c(R);x(w,T)},[x]),g=(0,A.useMemo)(()=>({onClick:v,onFocus:b,onKeyDown:D}),[v,b,D]),M=((h=t.current)==null?void 0:h.firstChild)!=null;return(0,A.useEffect)(()=>{var f;if(M&&l.current===void 0){let y=(f=t.current)==null?void 0:f.querySelector(Nn(0));y&&(y.setAttribute("tabindex","0"),l.current=y)}},[t,M]),g};var he=require("react");var le=require("react");var ie=new Map,On=(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}},$n=new ResizeObserver(e=>{for(let t of e){let{target:n,borderBoxSize:o,contentBoxSize:r}=t,s=ie.get(n);if(s){let[{blockSize:i,inlineSize:l}]=o,[{blockSize:u,inlineSize:a}]=r,{onResize:m,measurements:c}=s,p=!1;for(let[x,C]of Object.entries(c)){let b=On(n,{height:i,width:l,contentHeight:u,contentWidth:a},x);b!==C&&(p=!0,c[x]=b)}p&&m&&m(c)}}});function Bn(e,t,n,o=!1){let r=(0,le.useRef)(t),s=(0,le.useCallback)(i=>{let{width:l,height:u}=i.getBoundingClientRect(),{clientWidth:a,clientHeight:m}=i;return r.current.reduce((c,p)=>(c[p]=On(i,{width:l,height:u,contentHeight:m,contentWidth:a},p),c),{})},[]);(0,le.useEffect)(()=>{let i=e.current;async function l(){ie.set(i,{measurements:{}}),await document.fonts.ready;let u=ie.get(i);if(u){let a=s(i);u.measurements=a,$n.observe(i),o&&n(a)}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(ie.has(i))throw Error("useResizeObserver attemping to observe same element twice");l()}return()=>{i&&ie.has(i)&&($n.unobserve(i),ie.delete(i))}},[s,e]),(0,le.useEffect)(()=>{let i=e.current,l=ie.get(i);if(l){if(r.current!==t){r.current=t;let u=s(i);l.measurements=u}l.onResize=n}},[t,s,e,n])}var mr=["clientHeight","clientWidth"],Gn=e=>Number.isFinite(e),yt=({defaultHeight:e=0,defaultWidth:t=0,height:n,width:o})=>{let r=(0,he.useRef)(null),[s,i]=(0,he.useState)({outer:{height:n!=null?n:"100%",width:o!=null?o:"100%"}}),l=(0,he.useCallback)(({clientWidth:u,clientHeight:a})=>{i(m=>{let{inner:c,outer:p}=m;return Gn(a)&&Gn(u)&&(u!==(c==null?void 0:c.width)||a!==(c==null?void 0:c.height))?{outer:p,inner:{width:Math.floor(u)||t,height:Math.floor(a)||e}}:m})},[e,t]);return Bn(r,mr,l,!0),{containerRef:r,outerSize:s.outer,innerSize:s.inner}};var Wn=require("@heswell/salt-lab"),U=require("@vuu-ui/vuu-utils"),Un=require("@vuu-ui/vuu-filters"),_n=require("react"),pr=100,dr=U.metadataKeys.count,fr=({serverDataType:e})=>e===void 0,br=(e,t,n)=>{var r;let o=t.indexOf(e.name);return o!==-1&&n[o]?n[o]:(r=e.serverDataType)!=null?r:"string"},gr=["int","long","double"],Xn=e=>e===void 0?void 0:gr.includes(e)?"right":"left",hr=(e,t)=>{switch(t.type){case"init":return Yn(t.config);case"moveColumn":return Cr(e,t);case"resizeColumn":return yr(e,t);case"setTypes":return Mr(e,t);case"updateColumnProp":return Mt(e,t);case"tableConfig":return xr(e,t);default:return console.log(`unhandled action ${t.type}`),e}},qn=e=>{let[t,n]=(0,_n.useReducer)(hr,e,Yn);return{columns:t.columns,dispatchColumnAction:n}};function Yn(e){let t=e.columns.map(Vn);return t.some(U.isPinned)?{columns:(0,U.sortPinnedColumns)(t)}:{columns:e.columns.map(Vn)}}var Vn=(e,t)=>{let{align:n=Xn(e.serverDataType),name:o,label:r=o,width:s=pr,...i}=e;return{...i,align:n,label:r,key:t+dr,name:o,originalIdx:t,width:s}};function Cr(e,{column:t,moveBy:n,moveTo:o}){let{columns:r}=e;if(typeof n=="number"){let s=r.indexOf(t),i=r.slice(),[l]=i.splice(s,1);return i.splice(s+n,0,l),{...e,columns:i}}else if(typeof o=="number"){let s=r.indexOf(t);return{...e,columns:(0,Wn.moveItem)(r,s,o)}}return e}function yr(e,{column:t,phase:n,width:o}){let r="updateColumnProp",s=n!=="end";switch(n){case"begin":case"end":return Mt(e,{type:r,column:t,resizing:s});case"resize":return Mt(e,{type:r,column:t,width:o});default:throw Error(`useTableModel.resizeColumn, invalid resizePhase ${n}`)}}function Mr(e,{columnNames:t,serverDataTypes:n}){console.log("setTypes, existing columns",{state:e});let{columns:o}=e;if(o.some(fr)){let r=o.map(s=>{var l;let i=br(s,t,n);return{...s,align:(l=s.align)!=null?l:Xn(i),serverDataType:i}});return{...e,columns:r}}else return e}function Mt(e,t){let{columns:n}=e,{align:o,column:r,label:s,pin:i,resizing:l,width:u}=t,a=n.find(m=>m.name===r.name);return a&&((o==="left"||o==="right")&&(n=Te(n,{...a,align:o})),typeof s=="string"&&(n=Te(n,{...a,label:s})),typeof l=="boolean"&&(n=Te(n,{...a,resizing:l})),typeof u=="number"&&(n=Te(n,{...a,width:u})),"pin"in t&&(n=Te(n,{...a,pin:i}),n=(0,U.sortPinnedColumns)(n))),{...e,columns:n}}function xr(e,{filter:t,groupBy:n,sort:o}){let r=n!==void 0,s=typeof(t==null?void 0:t.filter)=="string",i=o&&o.sortDefs.length>0,l=e;return r&&(l={...e,columns:vr(e.columns,n)}),i&&(l={...e,columns:Dr(e.columns,o)}),s&&(l={...e,columns:wr(e.columns,t)}),l}function Te(e,t){return e.map(n=>n.name===t.name?t:n)}var vr=(e,t)=>{var n;if(t.length){let[o,r]=(0,U.extractGroupColumn)(e,t);if(o)return[o].concat(r)}else if((n=e[0])!=null&&n.isGroup)return(0,U.flattenColumnGroup)(e);return e},Dr=(e,t)=>e.map(n=>{let o=Tr(n,t);return o!==void 0?{...n,sorted:o}:n.sorted?{...n,sorted:void 0}:n}),wr=(e,{filterStruct:t})=>e.map(n=>{let o=(0,Un.extractFilterForColumn)(t,n.name);return o!==void 0?{...n,filter:o}:n.filter?{...n,filter:void 0}:n}),Tr=(e,{sortDefs:t})=>{let n=t.find(o=>o.column===e.name);if(n)return t.length>1?(t.indexOf(n)+1)*(n.sortType==="A"?1:-1):n.sortType};var z=require("react"),Qn=e=>{let{scrollLeft:t,scrollTop:n}=e,{clientHeight:o,clientWidth:r,scrollHeight:s,scrollWidth:i}=e,l=t/(i-r),u=n/(s-o);return[l,u,t,n]},Rr=e=>{let{clientHeight:t,clientWidth:n,scrollHeight:o,scrollWidth:r}=e;return[r-n,o-t]},Jn=({onRangeChange:e,rowHeight:t,viewport:n})=>{let o=(0,z.useRef)(null),r=(0,z.useRef)(null),s=(0,z.useRef)(null),i=(0,z.useRef)(!1),l=(0,z.useRef)(-1),{rowCount:u,maxScrollContainerScrollHorizontal:a,maxScrollContainerScrollVertical:m}=n,c=(0,z.useCallback)((d,D)=>{let{current:v}=s;v&&(v.scrollLeft=d,v.scrollTop=D)},[s]),p=(0,z.useCallback)(()=>{let{current:d}=s;if(d){let{scrollTop:D}=d,v=Math.floor(D/t);v!==l.current&&(l.current=v,e(v,v+u))}},[e,t,u]),x=(0,z.useCallback)(()=>{let{current:d}=r,{current:D}=o;if(d&&D){let[v,g,M,h]=Qn(d);i.current=!0,D.scrollLeft=Math.round(v*a),D.scrollTop=Math.round(g*m),c(M,h)}},[a,m,r,o,c]),C=(0,z.useCallback)(()=>{let{current:d}=r,{current:D}=o,{current:v}=i;if(v)i.current=!1;else if(d&&D){let[g,M]=Qn(D),[h,f]=Rr(d),y=Math.round(g*h),R=Math.round(M*f);d.scrollLeft=y,d.scrollTop=R,c(y,R)}},[r,o,c]),b=(0,z.useCallback)(d=>{let{current:D}=o;if(D){if(i.current=!1,d.type==="scroll-page"){let{clientHeight:v,scrollTop:g}=D,{direction:M}=d,h=M==="down"?v:-v;D.scrollTop=Math.min(Math.max(0,g+h),n.maxScrollContainerScrollVertical)}else if(d.type==="scroll-end"){let{direction:v}=d,g=v==="end"?n.maxScrollContainerScrollVertical:0;D.scrollTop=g}}},[n.maxScrollContainerScrollVertical]);return(0,z.useLayoutEffect)(()=>{p()},[p]),{onScrollbarContainerScroll:C,onContentContainerScroll:x,onTableContainerScroll:p,requestScroll:b,contentContainerRef:r,scrollbarContainerRef:o,tableContainerRef:s}};var xt=require("react"),Pr={fillerHeight:0,maxScrollContainerScrollHorizontal:0,maxScrollContainerScrollVertical:0,pinnedWidthLeft:0,rowCount:0,scrollContentHeight:0,scrollbarSize:0,scrollContentWidth:0},Er=e=>{let t=0,n=0;for(let o of e){let{pin:r,width:s}=o;r==="left"?t+=s:n+=s}return{pinnedWidthLeft:t,unpinnedWidth:n}},Zn=({columns:e,headerHeight:t,rowCount:n,rowHeight:o,size:r})=>{let{pinnedWidthLeft:s,unpinnedWidth:i}=(0,xt.useMemo)(()=>Er(e),[e]);return(0,xt.useMemo)(()=>{var u;if(r){let m=n*o,c=s+i,p=m+t-(((u=r==null?void 0:r.height)!=null?u:0)-t-15),x=c-r.width+s,C=(r.height-t)/o,b=Number.isInteger(C)?C+1:Math.ceil(C);return{fillerHeight:(n-b)*o,maxScrollContainerScrollHorizontal:x,maxScrollContainerScrollVertical:p,pinnedWidthLeft:s,rowCount:b,scrollContentHeight:t+m+15,scrollbarSize:15,scrollContentWidth:c}}else return Pr},[t,s,n,o,r,i])};var{KEY:jn,IS_EXPANDED:Sr}=Ce.metadataKeys,Hr={},eo=e=>e==null?"":typeof e=="string"?e:e.toString(),Lr=({align:e="right",type:t})=>{var n;if(t===void 0||typeof t=="string")return eo;{let{alignOnDecimals:o=!1,decimals:r,zeroPad:s=!1}=(n=t.formatting)!=null?n:Hr;return i=>{if(typeof i=="string"&&(i.startsWith("\u03A3")||i.startsWith("[")))return i;let l=typeof i=="number"?i:typeof i=="string"?parseFloat(i):void 0;return(0,Ce.roundDecimal)(l,e,r,s,o)}}},kr=e=>{let{serverDataType:t}=e;return t==="string"||t==="char"?n=>n:t==="double"?Lr(e):eo},to=({config:e,data:t,dataSource:n,headerHeight:o,onConfigChange:r,rowHeight:s,...i})=>{var N,O,j;let l=(0,K.useMemo)(()=>new Ge({from:0,to:0}),[]),[u,a]=(0,K.useState)([]),[m,c]=(0,K.useState)((N=t==null?void 0:t.length)!=null?N:0);if(t===void 0&&n===void 0)throw Error("no data source provided to DataTable");let p=yt(i),x=(0,K.useCallback)(P=>{c(P)},[]),{columns:C,dispatchColumnAction:b}=qn(e),d=Zn({columns:C,headerHeight:o,rowCount:m,rowHeight:s,size:p.innerSize}),D=(0,K.useCallback)(P=>{if(P.tableMeta){let{columns:H,dataTypes:B}=P.tableMeta;b({type:"setTypes",columnNames:H,serverDataTypes:B})}},[b]),v=(0,K.useMemo)(()=>C.reduce((P,H)=>(P[H.name]=kr(H),P),{}),[C]);(0,K.useMemo)(()=>{r==null||r({...e,columns:C})},[C,e,r]),(0,K.useMemo)(()=>{b({type:"init",config:e})},[e,b]);let g=(0,K.useCallback)(P=>{switch(P.type){case"groupBy":return b({type:"tableConfig",groupBy:P.groupBy});case"filter":return b({type:"tableConfig",filter:P.filter});case"sort":return b({type:"tableConfig",sort:P.sort})}},[b]),{data:M,setRange:h}=An({dataSource:n,onConfigChange:g,onSubscribed:D,onSizeChange:x}),f=(0,K.useCallback)((P,H)=>{if(n)h(P,H);else{l.reset({from:P,to:H});let B=t?l.withKeys(t.slice(P,H)):[];a(B)}},[t,n,l,h]),y=(0,K.useCallback)((P,H=!1,B)=>{n&&(n.sort=(0,Ce.applySort)(n.sort,P,H,B))},[n]),R=(0,K.useCallback)((P,H,B)=>{let X=C.find(ee=>ee.name===H);if(X)b({type:"resizeColumn",phase:P,column:X,width:B});else throw Error(`useDataTable.handleColumnResize, column ${H} not found`)},[C,b]),w=(0,K.useCallback)(P=>{n&&(P[Sr]?n.closeTreeNode(P[jn]):n.openTreeNode(P[jn]))},[n]),T=(0,K.useCallback)(P=>{n&&n.groupBy.includes(P.name)&&(n.groupBy=n.groupBy.filter(H=>H!==P.name))},[n]),{requestScroll:E,...k}=Jn({onRangeChange:f,rowHeight:s,viewport:d,viewportHeight:((j=(O=p.innerSize)==null?void 0:O.height)!=null?j:0)-o}),S=zn({columnCount:C.length,containerRef:p.containerRef,data:n?M:u,requestScroll:E,rowCount:n==null?void 0:n.size});return{containerMeasurements:p,containerProps:S,columns:C,data:n?M:u,dispatchColumnAction:b,onColumnResize:R,onRemoveColumnFromGroupBy:T,onSort:y,onToggleGroup:w,scrollProps:k,setRangeVertical:f,rowCount:m,valueFormatters:v,viewportMeasurements:d}};var no=require("@heswell/salt-lab"),Q=require("react"),oo=({onDrop:e,tableContainerRef:t,tableLayout:n})=>{let[o,r]=(0,Q.useState)(n),s=(0,Q.useRef)(),i=(0,Q.useCallback)(()=>{console.log("handleDropSettle"),s.current=void 0,r("row")},[]),{draggable:l,draggedItemIndex:u,onMouseDown:a}=(0,no.useDragDrop)({allowDragDrop:!0,draggableClassName:"table-column",orientation:"horizontal",containerRef:t,itemQuery:".vuuDataTable-table",onDrop:e,onDropSettle:i}),m=(0,Q.useCallback)(c=>{let{clientX:p,clientY:x}=c,b=c.target.closest(".vuuTable-headerCell"),{dataset:{idx:d="-1"}}=b;s.current={clientX:p,clientY:x,idx:d},r("column")},[]);return(0,Q.useLayoutEffect)(()=>{var c;if(o==="column"&&s.current&&!l){let{clientX:p,clientY:x,idx:C}=s.current,b=(c=t.current)==null?void 0:c.querySelector(`.vuuDataTable-table[data-idx="${C}"]`);if(b){let d={persist:()=>{},nativeEvent:{clientX:p,clientY:x,target:b}};a==null||a(d)}}},[l,a,t,o]),{draggable:l,draggedItemIndex:u,tableLayout:o,handleHeaderCellDragStart:m}};var _=require("react/jsx-runtime"),ue="vuuDataTable",Ir=({config:e,data:t,dataSource:n,headerHeight:o=25,height:r,id:s,onConfigChange:i,onShowConfigEditor:l,rowHeight:u=20,allowConfigEditing:a=!1,style:m,tableLayout:c="row",width:p,...x})=>{let C=(0,_e.useIdMemo)(s),{columns:b,dispatchColumnAction:d,containerMeasurements:{containerRef:D,innerSize:v,outerSize:g},containerProps:M,setRangeVertical:h,rowCount:f,scrollProps:y,valueFormatters:R,viewportMeasurements:w,...T}=to({config:e,data:t,dataSource:n,headerHeight:o,height:r,onConfigChange:i,rowHeight:u,width:p}),E=Pn({dataSource:n,dispatchColumnAction:d}),k=(0,ro.useCallback)((X,ee)=>{let Xe=b[X];d({type:"moveColumn",column:Xe,moveTo:ee})},[b,d]),{draggable:S,draggedItemIndex:N,tableLayout:O,handleHeaderCellDragStart:j}=oo({onDrop:k,tableContainerRef:y.tableContainerRef,tableLayout:c}),P={...g,"--content-height":`${w.scrollContentHeight}px`,"--content-width":`${w.scrollContentWidth}px`,"--filler-height":`${w.fillerHeight}px`,"--pinned-width-left":`${w.pinnedWidthLeft}px`,"--header-height":`${o}px`,"--row-height":`${u}px`,"--scrollbar-size":`${w.scrollbarSize}px`,"--table-height":`${v==null?void 0:v.height}px`,"--table-width":`${v==null?void 0:v.width}px`},H={left:w.pinnedWidthLeft-1,top:o-1},B=O==="column"?Dn:Ln;return(0,_.jsx)(Jt,{menuActionHandler:E,menuBuilder:Tn(n),children:(0,_.jsxs)("div",{...M,className:ue,id:C,ref:D,style:P,tabIndex:-1,children:[v?(0,_.jsx)("div",{className:`${ue}-scrollbarContainer`,onScroll:y.onScrollbarContainerScroll,ref:y.scrollbarContainerRef,style:H,children:(0,_.jsx)("div",{className:`${ue}-scrollContent`})}):null,v?(0,_.jsxs)("div",{className:`${ue}-contentContainer`,onScroll:y.onContentContainerScroll,ref:y.contentContainerRef,...x,children:[(0,_.jsx)("div",{className:`${ue}-scrollContent`}),(0,_.jsx)("div",{className:`${ue}-tableContainer`,onScroll:y.onTableContainerScroll,ref:y.tableContainerRef,children:(0,_.jsx)(B,{...T,columns:b.filter((X,ee)=>ee!==N),headerHeight:o,onHeaderCellDragStart:O==="row"?j:void 0,rowHeight:u,valueFormatters:R})}),S]}):null,a&&v?(0,_.jsx)(_e.Button,{className:`${ue}-settings`,"data-icon":"settings",onClick:l,variant:"secondary"}):null]})})};
4
+ `),Error(`KeySet, no key found for rowIndex ${t}`);return n}withKeys(t){for(let n of t)n[1]=this.keyFor(n[0]);return t.sort(pr)}};var Ce=require("@vuu-ui/vuu-utils"),A=require("react"),{RENDER_IDX:Nn}=Ce.metadataKeys,Fn=(e,t)=>e[Nn]-t[Nn],dr=e=>["aggregate","filter","groupBy","sort"].includes(e.type);function zn({dataSource:e,onConfigChange:t,onSizeChange:n,onSubscribed:o,range:r={from:0,to:0}}){let[,i]=(0,A.useState)(null),s=(0,A.useRef)(!0),l=(0,A.useRef)(!1),u=(0,A.useRef)({from:0,to:0}),a=(0,A.useRef)(null),m=(0,A.useRef)([]),c=(0,A.useMemo)(()=>new pt((0,Ce.getFullRange)(r)),[]),p=(0,A.useCallback)(g=>{for(let x of g)c.add(x);m.current=c.data.slice().sort(Fn),l.current=!0},[c]),v=(0,A.useCallback)(g=>{g.type==="subscribed"?o==null||o(g):g.type==="viewport-update"?(typeof g.size=="number"&&(n==null||n(g.size),c.setRowCount(g.size)),g.rows?p(g.rows):typeof g.size=="number"&&(m.current=c.data.slice().sort(Fn),l.current=!0)):dr(g)&&(t==null||t(g))},[c,t,n,o,p]);(0,A.useEffect)(()=>()=>{a.current&&(cancelAnimationFrame(a.current),a.current=null),s.current=!1},[]);let y=(0,A.useCallback)(()=>{s.current&&(l.current&&(i({}),l.current=!1),a.current=requestAnimationFrame(y))},[i]);(0,A.useEffect)(()=>{a.current=requestAnimationFrame(y)},[y]);let b=(0,A.useCallback)((g,x)=>{e&&(e.range=u.current={from:g,to:x},c.setRange(g,x))},[e,c]);return(0,A.useEffect)(()=>(e==null||e.subscribe({range:u.current},v),()=>{e==null||e.unsubscribe()}),[e,v]),{data:m.current,range:u.current,setRange:b,dataSource:e}}var pt=class{constructor({from:t,to:n}){this.rowCount=0;this.setRowCount=t=>{t<this.data.length&&(this.data.length=t),this.rowCount=t};this.range=new Ce.WindowRange(t,n),this.data=new Array(n-t),this.rowCount=0}add(t){let[n]=t;if(this.isWithinRange(n)){let o=n-this.range.from;this.data[o]=t}}getAtIndex(t){return this.range.isWithin(t)&&this.data[t-this.range.from]!=null?this.data[t-this.range.from]:void 0}isWithinRange(t){return this.range.isWithin(t)}setRange(t,n){if(t!==this.range.from||n!==this.range.to){let[o,r]=this.range.overlap(t,n),i=new Array(n-t);for(let s=o;s<r;s++){let l=this.getAtIndex(s);if(l){let u=s-t;i[u]=l}}this.data=i,this.range.from=t,this.range.to=n}}};var Gn=require("@vuu-ui/vuu-utils"),I=require("react");function fr(e,...t){let n=new Set(e);for(let o of t)for(let r of o)n.add(r);return n}var dt="ArrowUp",ft="ArrowDown",gt="ArrowLeft",bt="ArrowRight";var ht="Home",Ct="End",yt="PageUp",Mt="PageDown";var gr=new Set(["Enter","Delete"," "]),br=new Set(["Tab"]),hr=new Set(["ArrowRight","ArrowLeft"]),$n=new Set([ht,Ct,yt,Mt,ft,gt,bt,dt]),Cr=new Set(["F1","F2","F3","F4","F5","F6","F7","F8","F9","F10","F11","F12"]),Il=fr(gr,$n,hr,Cr,br);var yr=["Home","End","PageUp","PageDown"],On=e=>yr.includes(e),Bn=e=>$n.has(e);var Vn=e=>`thead th:nth-child(${e+1})`,Mr=(e,t)=>`tbody > tr[data-idx='${e}'] > td:nth-child(${t+1})`;function vr(e,[t,n],o,r){return e===dt?t>-1?[t-1,n]:[t,n]:e===ft?t===-1?[0,n]:t===r-1?[t,n]:[t+1,n]:e===bt?n<o-1?[t,n+1]:[t,n]:e===gt?n>0?[t,n-1]:[t,n]:[t,n]}var Wn=({columnCount:e=0,containerRef:t,disableHighlightOnFocus:n,data:o,requestScroll:r,rowCount:i=0,viewportRange:s})=>{var S;let{from:l,to:u}=s,a=(0,I.useRef)([-1,-1]),m=(0,I.useRef)(),c=(0,I.useRef)([-1,0]),p=(0,I.useCallback)(([d,C])=>{var T;let R=d===-1?Vn(C):Mr(d,C);return(T=t.current)==null?void 0:T.querySelector(R)},[t]),v=d=>d==null?void 0:d.closest("th,td"),y=d=>{var C,R;if(d.tagName==="TH")return[-1,parseInt((C=d.dataset.idx)!=null?C:"-1",10)];{let T=d.closest("tr");if(T){let k=parseInt((R=T.dataset.idx)!=null?R:"-1",10),O=Array.from(T.childNodes).indexOf(d);return[k,O]}}return[-1,-1]},b=(0,I.useCallback)(d=>{var C;if(t.current){let R=p(d);R?(R!==m.current&&((C=m.current)==null||C.setAttribute("tabindex",""),m.current=R,R.setAttribute("tabindex","0")),R.focus()):(0,Gn.withinRange)(d[0],s)||(m.current=void 0,r==null||r({type:"scroll-page",direction:"up"}))}},[t,p,r,s]),g=(0,I.useCallback)((d,C,R=!1)=>{let T=[d,C];c.current=T,b(T),R&&(a.current=T)},[b]),x=(0,I.useCallback)(()=>{var d;(d=m.current)==null||d.setAttribute("tabindex",""),m.current=void 0},[]),D=(0,I.useCallback)(async(d,C)=>{switch(d){case Mt:r==null||r({type:"scroll-page",direction:"down"});break;case yt:r==null||r({type:"scroll-page",direction:"up"});break;case ht:r==null||r({type:"scroll-end",direction:"home"});break;case Ct:r==null||r({type:"scroll-end",direction:"end"});break}return C},[r]),f=(0,I.useCallback)(()=>{var d;if(n!==!0&&(d=t.current)!=null&&d.contains(document.activeElement)){let C=v(document.activeElement);C&&(a.current=y(C))}},[n,t]),M=(0,I.useCallback)(async d=>{let[C,R]=On(d)?await D(d,c.current):vr(d,c.current,e,i),[T,k]=c.current;(C!==T||R!==k)&&g(C,R,!0)},[e,D,i,g]),h=(0,I.useCallback)(d=>{o.length>0&&Bn(d.key)&&(d.preventDefault(),d.stopPropagation(),M(d.key))},[o,M]),w=(0,I.useCallback)(d=>{let C=d.target,R=v(C),[T,k]=y(R);g(T,k)},[g]),E=(0,I.useMemo)(()=>({onClick:w,onFocus:f,onKeyDown:h}),[w,f,h]);(0,I.useLayoutEffect)(()=>{let{current:d}=c,C=d[0]>=l&&d[0]<=u;m.current&&!C?x():!m.current&&C&&b(d)},[b,l,u,x]);let H=((S=t.current)==null?void 0:S.firstChild)!=null;return(0,I.useEffect)(()=>{var d;if(H&&m.current===void 0){let C=(d=t.current)==null?void 0:d.querySelector(Vn(0));C&&(C.setAttribute("tabindex","0"),m.current=C)}},[t,H]),E};var ye=require("react");var le=require("react");var ie=new Map,_n=(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}},Un=new ResizeObserver(e=>{for(let t of e){let{target:n,borderBoxSize:o,contentBoxSize:r}=t,i=ie.get(n);if(i){let[{blockSize:s,inlineSize:l}]=o,[{blockSize:u,inlineSize:a}]=r,{onResize:m,measurements:c}=i,p=!1;for(let[v,y]of Object.entries(c)){let b=_n(n,{height:s,width:l,contentHeight:u,contentWidth:a},v);b!==y&&(p=!0,c[v]=b)}p&&m&&m(c)}}});function Xn(e,t,n,o=!1){let r=(0,le.useRef)(t),i=(0,le.useCallback)(s=>{let{width:l,height:u}=s.getBoundingClientRect(),{clientWidth:a,clientHeight:m}=s;return r.current.reduce((c,p)=>(c[p]=_n(s,{width:l,height:u,contentHeight:m,contentWidth:a},p),c),{})},[]);(0,le.useEffect)(()=>{let s=e.current;async function l(){ie.set(s,{measurements:{}}),await document.fonts.ready;let u=ie.get(s);if(u){let a=i(s);u.measurements=a,Un.observe(s),o&&n(a)}else console.log("%cuseResizeObserver an target expected to be under observation wa snot found. This warrants investigation","font-weight:bold; color:red;")}if(s){if(ie.has(s))throw Error("useResizeObserver attemping to observe same element twice");l()}return()=>{s&&ie.has(s)&&(Un.unobserve(s),ie.delete(s))}},[i,e]),(0,le.useEffect)(()=>{let s=e.current,l=ie.get(s);if(l){if(r.current!==t){r.current=t;let u=i(s);l.measurements=u}l.onResize=n}},[t,i,e,n])}var xr=["clientHeight","clientWidth"],Yn=e=>Number.isFinite(e),vt=({defaultHeight:e=0,defaultWidth:t=0,height:n,width:o})=>{let r=(0,ye.useRef)(null),[i,s]=(0,ye.useState)({outer:{height:n!=null?n:"100%",width:o!=null?o:"100%"}}),l=(0,ye.useCallback)(({clientWidth:u,clientHeight:a})=>{s(m=>{let{inner:c,outer:p}=m;return Yn(a)&&Yn(u)&&(u!==(c==null?void 0:c.width)||a!==(c==null?void 0:c.height))?{outer:p,inner:{width:Math.floor(u)||t,height:Math.floor(a)||e}}:m})},[e,t]);return Xn(r,xr,l,!0),{containerRef:r,outerSize:i.outer,innerSize:i.inner}};var qn=require("@heswell/salt-lab"),_=require("@vuu-ui/vuu-utils"),Jn=require("@vuu-ui/vuu-filters"),Zn=require("react"),wr=100,Dr=_.metadataKeys.count,Tr=({serverDataType:e})=>e===void 0,Rr=(e,t,n)=>{var r;let o=t.indexOf(e.name);return o!==-1&&n[o]?n[o]:(r=e.serverDataType)!=null?r:"string"},Pr=["int","long","double"],jn=e=>e===void 0?void 0:Pr.includes(e)?"right":"left",Er=(e,t)=>{switch(t.type){case"init":return to(t.config);case"moveColumn":return Hr(e,t);case"resizeColumn":return Sr(e,t);case"setTypes":return Lr(e,t);case"updateColumnProp":return xt(e,t);case"tableConfig":return Ir(e,t);default:return console.log(`unhandled action ${t.type}`),e}},eo=e=>{let[t,n]=(0,Zn.useReducer)(Er,e,to);return{columns:t.columns,dispatchColumnAction:n}};function to(e){let t=e.columns.map(Qn);return t.some(_.isPinned)?{columns:(0,_.sortPinnedColumns)(t)}:{columns:e.columns.map(Qn)}}var Qn=(e,t)=>{let{align:n=jn(e.serverDataType),name:o,label:r=o,width:i=wr,...s}=e;return{...s,align:n,label:r,key:t+Dr,name:o,originalIdx:t,width:i}};function Hr(e,{column:t,moveBy:n,moveTo:o}){let{columns:r}=e;if(typeof n=="number"){let i=r.indexOf(t),s=r.slice(),[l]=s.splice(i,1);return s.splice(i+n,0,l),{...e,columns:s}}else if(typeof o=="number"){let i=r.indexOf(t);return{...e,columns:(0,qn.moveItem)(r,i,o)}}return e}function Sr(e,{column:t,phase:n,width:o}){let r="updateColumnProp",i=n!=="end";switch(n){case"begin":case"end":return xt(e,{type:r,column:t,resizing:i});case"resize":return xt(e,{type:r,column:t,width:o});default:throw Error(`useTableModel.resizeColumn, invalid resizePhase ${n}`)}}function Lr(e,{columnNames:t,serverDataTypes:n}){console.log("setTypes, existing columns",{state:e});let{columns:o}=e;if(o.some(Tr)){let r=o.map(i=>{var l;let s=Rr(i,t,n);return{...i,align:(l=i.align)!=null?l:jn(s),serverDataType:s}});return{...e,columns:r}}else return e}function xt(e,t){let{columns:n}=e,{align:o,column:r,label:i,pin:s,resizing:l,width:u}=t,a=n.find(m=>m.name===r.name);return a&&((o==="left"||o==="right")&&(n=Pe(n,{...a,align:o})),typeof i=="string"&&(n=Pe(n,{...a,label:i})),typeof l=="boolean"&&(n=Pe(n,{...a,resizing:l})),typeof u=="number"&&(n=Pe(n,{...a,width:u})),"pin"in t&&(n=Pe(n,{...a,pin:s}),n=(0,_.sortPinnedColumns)(n))),{...e,columns:n}}function Ir(e,{filter:t,groupBy:n,sort:o}){let r=n!==void 0,i=typeof(t==null?void 0:t.filter)=="string",s=o&&o.sortDefs.length>0,l=e;return r&&(l={...e,columns:kr(e.columns,n)}),s&&(l={...e,columns:Ar(e.columns,o)}),i&&(l={...e,columns:Kr(e.columns,t)}),l}function Pe(e,t){return e.map(n=>n.name===t.name?t:n)}var kr=(e,t)=>{var n;if(t.length){let[o,r]=(0,_.extractGroupColumn)(e,t);if(o)return[o].concat(r)}else if((n=e[0])!=null&&n.isGroup)return(0,_.flattenColumnGroup)(e);return e},Ar=(e,t)=>e.map(n=>{let o=Nr(n,t);return o!==void 0?{...n,sorted:o}:n.sorted?{...n,sorted:void 0}:n}),Kr=(e,{filterStruct:t})=>e.map(n=>{let o=(0,Jn.extractFilterForColumn)(t,n.name);return o!==void 0?{...n,filter:o}:n.filter?{...n,filter:void 0}:n}),Nr=(e,{sortDefs:t})=>{let n=t.find(o=>o.column===e.name);if(n)return t.length>1?(t.indexOf(n)+1)*(n.sortType==="A"?1:-1):n.sortType};var $=require("react"),no=e=>{let{scrollLeft:t,scrollTop:n}=e,{clientHeight:o,clientWidth:r,scrollHeight:i,scrollWidth:s}=e,l=t/(s-r),u=n/(i-o);return[l,u,t,n]},Fr=e=>{let{clientHeight:t,clientWidth:n,scrollHeight:o,scrollWidth:r}=e;return[r-n,o-t]},oo=({onRangeChange:e,rowHeight:t,viewport:n})=>{let o=(0,$.useRef)(null),r=(0,$.useRef)(null),i=(0,$.useRef)(null),s=(0,$.useRef)(!1),l=(0,$.useRef)(-1),{rowCount:u,maxScrollContainerScrollHorizontal:a,maxScrollContainerScrollVertical:m}=n,c=(0,$.useCallback)((g,x)=>{let{current:D}=i;D&&(D.scrollLeft=g,D.scrollTop=x)},[i]),p=(0,$.useCallback)(()=>{let{current:g}=i;if(g){let{scrollTop:x}=g,D=Math.floor(x/t);D!==l.current&&(l.current=D,e(D,D+u))}},[e,t,u]),v=(0,$.useCallback)(()=>{let{current:g}=r,{current:x}=o;if(g&&x){let[D,f,M,h]=no(g);s.current=!0,x.scrollLeft=Math.round(D*a),x.scrollTop=Math.round(f*m),c(M,h)}},[a,m,r,o,c]),y=(0,$.useCallback)(()=>{let{current:g}=r,{current:x}=o,{current:D}=s;if(D)s.current=!1;else if(g&&x){let[f,M]=no(x),[h,w]=Fr(g),E=Math.round(f*h),H=Math.round(M*w);g.scrollLeft=E,g.scrollTop=H,c(E,H)}},[r,o,c]),b=(0,$.useCallback)(g=>{let{current:x}=o;if(x){if(s.current=!1,g.type==="scroll-page"){let{clientHeight:D,scrollTop:f}=x,{direction:M}=g,h=M==="down"?D:-D;x.scrollTop=Math.min(Math.max(0,f+h),n.maxScrollContainerScrollVertical)}else if(g.type==="scroll-end"){let{direction:D}=g,f=D==="end"?n.maxScrollContainerScrollVertical:0;x.scrollTop=f}}},[n.maxScrollContainerScrollVertical]);return(0,$.useLayoutEffect)(()=>{p()},[p]),{onScrollbarContainerScroll:y,onContentContainerScroll:v,onTableContainerScroll:p,requestScroll:b,contentContainerRef:r,scrollbarContainerRef:o,tableContainerRef:i}};var wt=require("react"),zr={fillerHeight:0,maxScrollContainerScrollHorizontal:0,maxScrollContainerScrollVertical:0,pinnedWidthLeft:0,pinnedWidthRight:0,rowCount:0,scrollContentHeight:0,scrollbarSize:0,scrollContentWidth:0},$r=e=>{let t=0,n=0,o=0;for(let r of e){let{pin:i,width:s}=r;i==="left"?t+=s:i==="right"?n+=s:o+=s}return{pinnedWidthLeft:t,pinnedWidthRight:n,unpinnedWidth:o}},ro=({columns:e,headerHeight:t,rowCount:n,rowHeight:o,size:r})=>{let{pinnedWidthLeft:i,pinnedWidthRight:s,unpinnedWidth:l}=(0,wt.useMemo)(()=>$r(e),[e]);return(0,wt.useMemo)(()=>{var a;if(r){let c=n*o,p=i+l+s,v=c+t-(((a=r==null?void 0:r.height)!=null?a:0)-t-15),y=p-r.width+i,b=(r.height-t)/o,g=Number.isInteger(b)?b+1:Math.ceil(b);return{fillerHeight:(n-g)*o,maxScrollContainerScrollHorizontal:y,maxScrollContainerScrollVertical:v,pinnedWidthLeft:i,pinnedWidthRight:s,rowCount:g,scrollContentHeight:t+c+15,scrollbarSize:15,scrollContentWidth:p}}else return zr},[t,i,s,n,o,r,l])};var{KEY:so,IS_EXPANDED:Or}=Me.metadataKeys,Br={},io=e=>e==null?"":typeof e=="string"?e:e.toString(),Vr=({align:e="right",type:t})=>{var n;if(t===void 0||typeof t=="string")return io;{let{alignOnDecimals:o=!1,decimals:r,zeroPad:i=!1}=(n=t.formatting)!=null?n:Br;return s=>{if(typeof s=="string"&&(s.startsWith("\u03A3")||s.startsWith("[")))return s;let l=typeof s=="number"?s:typeof s=="string"?parseFloat(s):void 0;return(0,Me.roundDecimal)(l,e,r,i,o)}}},Gr=e=>{let{serverDataType:t}=e;return t==="string"||t==="char"?n=>n:t==="double"?Vr(e):io},lo=({config:e,data:t,dataSource:n,headerHeight:o,onConfigChange:r,rowHeight:i,...s})=>{var O,q,ae;let l=(0,F.useMemo)(()=>new We({from:0,to:0}),[]),[u,a]=(0,F.useState)([]),[m,c]=(0,F.useState)((O=t==null?void 0:t.length)!=null?O:0);if(t===void 0&&n===void 0)throw Error("no data source provided to DataTable");let p=vt(s),v=(0,F.useCallback)(P=>{c(P)},[]),{columns:y,dispatchColumnAction:b}=eo(e),g=ro({columns:y,headerHeight:o,rowCount:m,rowHeight:i,size:p.innerSize}),x=(0,F.useCallback)(P=>{if(P.tableMeta){let{columns:L,dataTypes:B}=P.tableMeta;b({type:"setTypes",columnNames:L,serverDataTypes:B})}},[b]),D=(0,F.useMemo)(()=>y.reduce((P,L)=>(P[L.name]=Gr(L),P),{}),[y]);(0,F.useMemo)(()=>{r==null||r({...e,columns:y})},[y,e,r]),(0,F.useMemo)(()=>{b({type:"init",config:e})},[e,b]);let f=(0,F.useCallback)(P=>{switch(P.type){case"groupBy":return b({type:"tableConfig",groupBy:P.groupBy});case"filter":return b({type:"tableConfig",filter:P.filter});case"sort":return b({type:"tableConfig",sort:P.sort})}},[b]),{data:M,range:h,setRange:w}=zn({dataSource:n,onConfigChange:f,onSubscribed:x,onSizeChange:v}),E=(0,F.useCallback)((P,L)=>{if(n)w(P,L);else{l.reset({from:P,to:L});let B=t?l.withKeys(t.slice(P,L)):[];a(B)}},[t,n,l,w]),H=(0,F.useCallback)((P,L=!1,B)=>{n&&(n.sort=(0,Me.applySort)(n.sort,P,L,B))},[n]),S=(0,F.useCallback)((P,L,B)=>{let j=y.find(ee=>ee.name===L);if(j)b({type:"resizeColumn",phase:P,column:j,width:B});else throw Error(`useDataTable.handleColumnResize, column ${L} not found`)},[y,b]),d=(0,F.useCallback)(P=>{n&&(P[Or]?n.closeTreeNode(P[so]):n.openTreeNode(P[so]))},[n]),C=(0,F.useCallback)(P=>{n&&n.groupBy.includes(P.name)&&(n.groupBy=n.groupBy.filter(L=>L!==P.name))},[n]),{requestScroll:R,...T}=oo({onRangeChange:E,rowHeight:i,viewport:g,viewportHeight:((ae=(q=p.innerSize)==null?void 0:q.height)!=null?ae:0)-o}),k=Wn({columnCount:y.length,containerRef:p.containerRef,data:n?M:u,requestScroll:R,rowCount:n==null?void 0:n.size,viewportRange:h});return{containerMeasurements:p,containerProps:k,columns:y,data:n?M:u,dispatchColumnAction:b,onColumnResize:S,onRemoveColumnFromGroupBy:C,onSort:H,onToggleGroup:d,scrollProps:T,setRangeVertical:E,rowCount:m,valueFormatters:D,viewportMeasurements:g}};var uo=require("@heswell/salt-lab"),Q=require("react"),ao=({onDrop:e,tableContainerRef:t,tableLayout:n})=>{let[o,r]=(0,Q.useState)(n),i=(0,Q.useRef)(),s=(0,Q.useCallback)(()=>{console.log("handleDropSettle"),i.current=void 0,r("row")},[]),{draggable:l,draggedItemIndex:u,onMouseDown:a}=(0,uo.useDragDrop)({allowDragDrop:!0,draggableClassName:"table-column",orientation:"horizontal",containerRef:t,itemQuery:".vuuDataTable-table",onDrop:e,onDropSettle:s}),m=(0,Q.useCallback)(c=>{let{clientX:p,clientY:v}=c,b=c.target.closest(".vuuTable-headerCell"),{dataset:{idx:g="-1"}}=b;i.current={clientX:p,clientY:v,idx:g},r("column")},[]);return(0,Q.useLayoutEffect)(()=>{var c;if(o==="column"&&i.current&&!l){let{clientX:p,clientY:v,idx:y}=i.current,b=(c=t.current)==null?void 0:c.querySelector(`.vuuDataTable-table[data-idx="${y}"]`);if(b){let g={persist:()=>{},nativeEvent:{clientX:p,clientY:v,target:b}};a==null||a(g)}}},[l,a,t,o]),{draggable:l,draggedItemIndex:u,tableLayout:o,handleHeaderCellDragStart:m}};var X=require("react/jsx-runtime"),ue="vuuDataTable",Wr=({className:e,config:t,data:n,dataSource:o,headerHeight:r=25,height:i,id:s,onConfigChange:l,onShowConfigEditor:u,rowHeight:a=20,allowConfigEditing:m=!1,style:c,tableLayout:p="row",width:v,...y})=>{let b=(0,Ue.useIdMemo)(s),{columns:g,dispatchColumnAction:x,containerMeasurements:{containerRef:D,innerSize:f,outerSize:M},containerProps:h,setRangeVertical:w,rowCount:E,scrollProps:H,valueFormatters:S,viewportMeasurements:d,...C}=lo({config:t,data:n,dataSource:o,headerHeight:r,height:i,onConfigChange:l,rowHeight:a,width:v}),R=Ln({dataSource:o,dispatchColumnAction:x}),T=(0,co.useCallback)((j,ee)=>{let _e=g[j];x({type:"moveColumn",column:_e,moveTo:ee})},[g,x]),{draggable:k,draggedItemIndex:O,tableLayout:q,handleHeaderCellDragStart:ae}=ao({onDrop:T,tableContainerRef:H.tableContainerRef,tableLayout:p}),P={...M,"--content-height":`${d.scrollContentHeight}px`,"--content-width":`${d.scrollContentWidth}px`,"--filler-height":`${d.fillerHeight}px`,"--pinned-width-left":`${d.pinnedWidthLeft}px`,"--pinned-width-right":`${d.pinnedWidthRight}px`,"--header-height":`${r}px`,"--row-height":`${a}px`,"--scrollbar-size":`${d.scrollbarSize}px`,"--table-height":`${f==null?void 0:f.height}px`,"--table-width":`${f==null?void 0:f.width}px`},L={left:d.pinnedWidthLeft-1,top:r-1},B=q==="column"?Pn:Kn;return(0,X.jsx)(jt,{menuActionHandler:R,menuBuilder:Hn(o),children:(0,X.jsxs)("div",{...h,className:ue,id:b,ref:D,style:P,tabIndex:-1,children:[f?(0,X.jsx)("div",{className:`${ue}-scrollbarContainer`,onScroll:H.onScrollbarContainerScroll,ref:H.scrollbarContainerRef,style:L,children:(0,X.jsx)("div",{className:`${ue}-scrollContent`})}):null,f?(0,X.jsxs)("div",{className:`${ue}-contentContainer`,onScroll:H.onContentContainerScroll,ref:H.contentContainerRef,...y,children:[(0,X.jsx)("div",{className:`${ue}-scrollContent`}),(0,X.jsx)("div",{className:`${ue}-tableContainer`,onScroll:H.onTableContainerScroll,ref:H.tableContainerRef,children:(0,X.jsx)(B,{...C,columns:g.filter((j,ee)=>ee!==O),headerHeight:r,onHeaderCellDragStart:q==="row"?ae:void 0,rowHeight:a,valueFormatters:S})}),k]}):null,m&&f?(0,X.jsx)(Ue.Button,{className:`${ue}-settings`,"data-icon":"settings",onClick:u,variant:"secondary"}):null]})})};
5
5
  //# sourceMappingURL=index.js.map
package/index.css CHANGED
@@ -1,2 +1,2 @@
1
- .vuuDialog{background:var(--salt-container-primary-background);border:var(--vuuDialog-border, solid 1px #ccc);border-radius:5px;padding:var(--vuuDialog-padding, 0);box-shadow:var(--salt-overlayable-shadow, none);height:var(--vuuDialog-height, fit-content);width:var(--vuuDialog-width, fit-content)}.vuuDialog-header{--saltButton-height: 28px;--saltButton-width: 28px;--saltToolbar-background: transparent;--saltToolbar-height: calc(var(--salt-size-base) + 5px);border-bottom:solid 1px var(--salt-container-primary-borderColor)}.vuuDialog-header>.Responsive-inner{align-items:center}.vuuDialog-header>.Responsive-inner>:last-child{right:2px}.vuuMenuList{--context-menu-color: #161616;--context-menu-padding: var(--hw-list-item-padding, 0 6px);--context-menu-shadow: var(--hw-dialog-shadow, 0 6px 12px rgba(0, 0, 0, .175));--focus-visible-border-color: var(--hw-focus-visible-border-color, rgb(141, 154, 179));--context-menu-highlight-bg: #a4d5f4;--context-menu-blur-focus-bg: #e0e4e9;--menu-item-height: var(--hw-list-item-height, 24px);--menu-item-icon-color: black;--menu-item-twisty-color: black;--menu-item-twisty-content: "";--menu-item-twisty-top: 50%;--menu-item-twisty-left: auto;--menu-item-twisty-right: 0px;--menu-icon-size: 12px;background-clip:padding-box;background-color:#fff;border-radius:4px;border:solid 1px rgba(0,0,0,.15);box-shadow:var(--context-menu-shadow);font-size:var(--salt-text-label-fontSize);font-weight:var(--salt-typography-fontWeight-semiBold);list-style:none;margin:2px 0 0;outline:0;padding:0;position:absolute}.vuuMenuItem{align-items:center;color:var(--context-menu-color);display:flex;gap:6px;height:var(--menu-item-height);padding:var(--context-menu-padding);padding-right:24px;position:relative;white-space:nowrap}.vuuIconContainer{display:inline-block;flex:12px 0 0;height:var(--menu-icon-size);mask-repeat:no-repeat;width:var(--menu-icon-size)}.vuuMenuItem[aria-expanded=true]{background-color:var(--context-menu-blur-focus-bg)}.vuuMenuItem-separator{border-top:solid 1px var(--context-menu-blur-focus-bg)}.vuuMenuItem[aria-haspopup=true]:after{content:var(--menu-item-twisty-content);-webkit-mask:var(--svg-chevron-right) center center/12px 12px;mask:var(--svg-chevron-down) center center/12px 12px;mask-repeat:no-repeat;background-color:var(--menu-item-twisty-color);height:16px;left:var(--menu-item-twisty-left);right:var(--menu-item-twisty-right);margin-top:-8px;position:absolute;top:var(--menu-item-twisty-top);transition:transform .3s;width:16px}.vuuMenuItem[data-highlighted]{background-color:var(--context-menu-highlight-bg)}.vuuMenuItem:hover{background-color:var(--context-menu-highlight-bg);cursor:default}.vuuMenuList-childMenuShowing .hwMenuItem[data-highlighted]{background-color:var(--context-menu-blur-focus-bg)}.vuuMenuItem.focusVisible:before{content:"";position:absolute;top:0;left:0;right:0;bottom:0px;border:dotted var(--focus-visible-border-color) 2px}.vuuPopupContainer.top-bottom-right-right .popup-menu{left:auto;right:0}.popup-menu .menu-item.showing>button,.popup-menu .menu-item>button:focus,.popup-menu .menu-item>button:hover{text-decoration:none;color:#000;background-color:#dcdcdc}.vuuMenuItem-button:active,.hwMenuItem-button:hover{outline:0}.popup-menu .menu-item.disabled>button{clear:both;font-weight:400;line-height:1.5;color:#787878;white-space:nowrap;text-decoration:none;cursor:default}.vuuPopup{box-shadow:0 6px 12px #0000002d;position:absolute;top:0;left:0;width:0;height:0;overflow:visible;z-index:1000}.vuuPopup{position:absolute}.vuuDataTable{--cell-outline-width: 2px}.vuuDataTable th:focus,.vuuDataTable td:focus{outline:dotted var(--salt-color-blue-400) var(--cell-outline-width);outline-offset:calc(var(--cell-outline-width) * -1);box-shadow:inset 0 0 0 var(--cell-outline-width) #fff;border-bottom:none}.vuuDataTable th:focus .vuuTable-headerCell-inner{--columnResizer-color: transparent;padding-bottom:var(--cell-outline-width)}.vuuDataTable td:focus{border-right:none;padding-bottom:1px}.vuuTableGroupCell{--spacer-width: 20px;--toggle-icon-transform: var(--row-toggle-icon-transform, none);--vuu-icon-width: 18px;display:flex;align-items:center}.vuuTableGroupCell-spacer{height:100%;position:relative;width:var(--spacer-width)}.vuuTableGroupCell-spacer:after{background:var(--salt-container-primary-borderColor);content:"";position:absolute;top:0;bottom:-1px;left:9px;width:1px}.vuuTableGroupCell-toggle{transition:transform .25s;transform:var(--toggle-icon-transform)}.vuuDataTableRow-even{--row-background: var(--salt-container-secondary-background)}.vuuDataTableRow:not(.vuuDataTableRow-even){--row-background: var(--vuuTableRow-backgroundColor-odd, var(--table-background))}.vuuDataTableRow{background:var(--row-background)}.vuuDataTableRow .vuuPinLeft{background-color:var(--row-background)}.vuuDataTableRow-expanded{--row-toggle-icon-transform: rotate(90deg)}.vuuColumnResizer{cursor:col-resize;width:4px}.vuuColumnResizer:after{content:"";position:absolute;width:var(--columnResizer-width, 1px);top:0;bottom:0;right:0;background-color:var(--columnResizer-color, var(--salt-separable-tertiary-borderColor));height:var(--columnResizer-height, 100%)}.vuuSortIndicator{--menu-icon-size: 18px;--menu-item-icon-color: black;display:flex;flex-direction:column;position:relative;width:18px}.vuuSortPosition{font-size:10px;line-height:10px;text-align:center}.vuuTable-headerCell{--cell-align: "flex-start";text-align:left;background:var(--table-background);border-bottom:2px solid var(--salt-separable-tertiary-borderColor);color:var(--salt-text-secondary-foreground);cursor:default;padding:0!important;position:sticky;top:0;height:var(--vuuTableHeaderHeight);z-index:1}.vuuTable-headerCell-right{--cell-align: flex-end}.vuuTable-headerCell-inner{align-items:stretch;display:flex;height:100%;padding:0 0 0 3px}.vuuTable-headerCell-inner:has(.vuuFilterIndicator){padding-left:0}.vuuTable-headerCell-label{align-items:center;justify-content:var(--cell-align);display:flex;flex:1 1 auto}.vuuTable-headerCell-resizing{--columnResizer-color: var(--salt-color-blue-500);--columnResizer-height: var(--table-height);--columnResizer-width: 2px}.vuuFilterIndicator{--menu-icon-size: 12px;--menu-item-icon-color: black;align-items:center;cursor:pointer;display:flex;flex:0 0 18px;flex-direction:column;justify-content:center;position:relative}.vuuFilterIndicator+.vuuTable-headerCell-inner{padding-left:0}.vuuTable-groupHeaderCell{--cell-align: "flex-start";text-align:left;background:var(--table-background);border-right:1px solid var(--salt-separable-tertiary-borderColor);border-bottom:2px solid var(--salt-separable-tertiary-borderColor);color:var(--salt-text-secondary-foreground);cursor:default;padding:0!important;position:sticky;top:0;height:var(--vuuTableHeaderHeight);z-index:1}.vuuTable-groupHeaderCell-inner{display:flex;height:100%}.vuuTable-groupHeaderCell-label{align-items:center;display:flex;flex:0 0 auto}.vuuTable-groupHeaderCell-col{align-items:center;background-color:inherit;display:inline-flex;flex:0 1 auto;height:calc(var(--vuuTableHeaderHeight) - 4px);justify-content:space-between;padding-right:8px;position:relative}.vuuTable-groupHeaderCell-close{--vuu-icon-height: 18px;--vuu-icon-width: 18px;cursor:pointer;left:3px}.vuuTable-groupHeaderCell-col:nth-child(odd){background-color:var(--salt-color-gray-50)}.vuuTable-groupHeaderCell-col:nth-child(even){background-color:var(--salt-color-gray-40)}.vuuTable-groupHeaderCell-col:first-child{clip-path:polygon(0 0,calc(100% - 8px) 0,100% 50%,calc(100% - 8px) 100%,0 100%);padding-left:3px;z-index:1}.vuuTable-groupHeaderCell-col:not(:first-child){margin-left:-6px;padding-left:12px;clip-path:polygon(0 0,calc(100% - 8px) 0,100% 50%,calc(100% - 8px) 100%,0 100%,8px 50%)}.vuuDataTable{background-color:var(--salt-container-primary-background, inherit);position:relative}.vuuDataTable-contentContainer{--table-background: var(--salt-container-primary-background, inherit);--vuuTable-contentHeight: var(--content-height, "auto");--vuuTable-contentWidth: var(--content-width, "auto");--vuuTableHeaderHeight: var(--header-height, 30px);--vuuTable-height: calc(var(--table-height) - var(--scrollbar-size));--vuuTable-pinnedWidthLeft: var(--pinned-width-left, 0pxs);--vuuTable-scrollbarSize: var(--scrollbar-size, 15px);--vuuTable-width: calc(var(--table-width) - var(--scrollbar-size));background-color:var(--salt-container-primary-background);height:var(--vuuTable-height);position:relative;overflow:auto;overscroll-behavior:none;width:var(--vuuTable-width)}.vuuDataTable-contentContainer::-webkit-scrollbar{display:none}.vuuDataTable-scrollbarContainer{--scroll-content-width: calc(var(--content-width) - var(--pinned-width-left));border-left:solid 1px var(--salt-container-primary-borderColor);border-top:solid 1px var(--salt-container-primary-borderColor);overflow:auto;position:absolute;height:calc(var(--table-height) - var(--header-height) + 1px);width:calc(var(--table-width) - var(--pinned-width-left) + 1px)}.vuuDataTable-scrollContainerHeader{background:#777;height:var(--header-height);position:fixed;top:0;right:0;width:var(--vuuTable-scrollbarSize)}.vuuDataTable-scrollContainerFooter{background-color:green;height:var(--vuuTable-scrollbarSize);position:fixed;bottom:0;left:0;width:var(--pinned-width-left)}.vuuDataTable-scrollContent{position:absolute;height:var(--content-height);width:var(--scroll-content-width, var(--content-width))}.vuuDataTable-tableContainer{background-color:var(--table-background);border-bottom:solid 1px var(--salt-container-primary-borderColor);height:calc(var(--table-height) - var(--scrollbar-size));left:0px;overflow:hidden;position:sticky;top:0px;width:calc(var(--table-width) - var(--scrollbar-size));white-space:nowrap}.vuuDataTable-table{--vuuTable-rowHeight: var(--row-height);--vuuTableCell-border-bottomColor: transparent;--vuuTableCell-border-rightColor: var(--salt-separable-tertiary-borderColor);position:absolute;top:0;left:0;background-color:#fff;border-collapse:separate;border-spacing:0;border-left:1px solid #ccc;border:none;font-size:var(--vuuDataTable-font-size, 10px);margin:0;table-layout:fixed;width:var(--vuuTable-contentWidth)}.vuuDataTable-columnBased{display:inline-table;height:var(--vuuTable-height);position:static}.vuuDataTable-filler{height:var(--filler-height)}.vuuDataTable-table td{border-right:1px solid var(--vuuTableCell-border-rightColor);border-bottom:1px solid var(--vuuTableCell-border-bottomColor);line-height:calc(var(--vuuTable-rowHeight) - 1px);padding:0 5px}.vuuDataTable-table td{color:var(--salt-text-primary-foreground);cursor:default;height:var(--vuuTable-rowHeight)}.vuuPinLeft{position:sticky}.vuuAlignRight{text-align:right}th.vuuPinLeft{top:0;z-index:2}table.vuuPinLeft{z-index:10}.vuuDataTable-settings{height:var(--header-height);position:absolute;right:0;top:0}.vuuDataTable:has(.vuuTable-headerCell-resizing) *{cursor:col-resize}
1
+ .vuuDialog{background:var(--salt-container-primary-background);border:var(--vuuDialog-border, solid 1px #ccc);border-radius:5px;padding:var(--vuuDialog-padding, 0);box-shadow:var(--salt-overlayable-shadow, none);height:var(--vuuDialog-height, fit-content);width:var(--vuuDialog-width, fit-content)}.vuuDialog-header{--saltButton-height: 28px;--saltButton-width: 28px;--saltToolbar-background: transparent;--saltToolbar-height: calc(var(--salt-size-base) + 5px);border-bottom:solid 1px var(--salt-container-primary-borderColor)}.vuuDialog-header>.Responsive-inner{align-items:center}.vuuDialog-header>.Responsive-inner>:last-child{right:2px}.vuuMenuList{--context-menu-color: #161616;--context-menu-padding: var(--hw-list-item-padding, 0 6px);--context-menu-shadow: var(--hw-dialog-shadow, 0 6px 12px rgba(0, 0, 0, .175));--focus-visible-border-color: var(--hw-focus-visible-border-color, rgb(141, 154, 179));--context-menu-highlight-bg: #a4d5f4;--context-menu-blur-focus-bg: #e0e4e9;--menu-item-height: var(--hw-list-item-height, 24px);--menu-item-icon-color: black;--menu-item-twisty-color: black;--menu-item-twisty-content: "";--menu-item-twisty-top: 50%;--menu-item-twisty-left: auto;--menu-item-twisty-right: 0px;--menu-icon-size: 12px;background-clip:padding-box;background-color:#fff;border-radius:4px;border:solid 1px rgba(0,0,0,.15);box-shadow:var(--context-menu-shadow);font-size:var(--salt-text-label-fontSize);font-weight:var(--salt-typography-fontWeight-semiBold);list-style:none;margin:2px 0 0;outline:0;padding:0;position:absolute}.vuuMenuItem{align-items:center;color:var(--context-menu-color);display:flex;gap:6px;height:var(--menu-item-height);padding:var(--context-menu-padding);padding-right:24px;position:relative;white-space:nowrap}.vuuIconContainer{display:inline-block;flex:12px 0 0;height:var(--menu-icon-size);mask-repeat:no-repeat;width:var(--menu-icon-size)}.vuuMenuItem[aria-expanded=true]{background-color:var(--context-menu-blur-focus-bg)}.vuuMenuItem-separator{border-top:solid 1px var(--context-menu-blur-focus-bg)}.vuuMenuItem[aria-haspopup=true]:after{content:var(--menu-item-twisty-content);-webkit-mask:var(--svg-chevron-right) center center/12px 12px;mask:var(--svg-chevron-down) center center/12px 12px;mask-repeat:no-repeat;background-color:var(--menu-item-twisty-color);height:16px;left:var(--menu-item-twisty-left);right:var(--menu-item-twisty-right);margin-top:-8px;position:absolute;top:var(--menu-item-twisty-top);transition:transform .3s;width:16px}.vuuMenuItem[data-highlighted]{background-color:var(--context-menu-highlight-bg)}.vuuMenuItem:hover{background-color:var(--context-menu-highlight-bg);cursor:default}.vuuMenuList-childMenuShowing .hwMenuItem[data-highlighted]{background-color:var(--context-menu-blur-focus-bg)}.vuuMenuItem.focusVisible:before{content:"";position:absolute;top:0;left:0;right:0;bottom:0px;border:dotted var(--focus-visible-border-color) 2px}.vuuPopupContainer.top-bottom-right-right .popup-menu{left:auto;right:0}.popup-menu .menu-item.showing>button,.popup-menu .menu-item>button:focus,.popup-menu .menu-item>button:hover{text-decoration:none;color:#000;background-color:#dcdcdc}.vuuMenuItem-button:active,.hwMenuItem-button:hover{outline:0}.popup-menu .menu-item.disabled>button{clear:both;font-weight:400;line-height:1.5;color:#787878;white-space:nowrap;text-decoration:none;cursor:default}.vuuPopup{box-shadow:0 6px 12px #0000002d;position:absolute;top:0;left:0;width:0;height:0;overflow:visible;z-index:1000}.vuuPopup{position:absolute}.vuuDataTable{--cell-outline-width: 2px}.vuuDataTable th:focus,.vuuDataTable td:focus{outline:var(--vuuTableCell-outline, dotted var(--salt-color-blue-400) var(--cell-outline-width));outline-offset:calc(var(--cell-outline-width) * -1);box-shadow:inset 0 0 0 var(--cell-outline-width) #fff;border-bottom:none}.vuuDataTable th:focus .vuuTable-headerCell-inner{padding-bottom:var(--cell-outline-width)}.vuuDataTable th:not(.vuuTable-headerCell-resizing):focus .vuuTable-headerCell-inner{--columnResizer-color: transparent}.vuuDataTable td:focus{border-right:none;padding-bottom:1px}.vuuDataTable td{--saltEditableLabel-height: 17px;--saltInput-height: 17px;--saltInput-minHeight: 17px;overflow:hidden}td[data-editable=true]{--salt-text-fontSize: 10px;--vuu-icon-size: 5px;position:relative}td[data-editable=true]:after{top:0;content:"";background-color:var(--salt-text-secondary-foreground, black);left:0;height:var(--vuu-icon-height, var(--vuu-icon-size, 12px));-webkit-mask:var(--svg-corner-triangle) center center/var(--vuu-icon-size) var(--vuu-icon-size);mask:var(--svg-corner-triangle) center center/var(--vuu-icon-size) var(--vuu-icon-size);mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;position:absolute;transform:rotate(180deg);width:var(--vuu-icon-width, var(--vuu-icon-size, 12px))}td:focus[data-editable],td:focus-within[data-editable],td:has(.saltEditableLabel-editing){outline:solid var(--salt-color-blue-400) 1px;background-color:#fff;outline-offset:-1px}td:focus[data-editable=true]:after,td:has(.saltEditableLabel):after{background-color:var(--salt-color-blue-400);left:1px;top:1px}.vuuTableGroupCell{--spacer-width: 20px;--toggle-icon-transform: var(--row-toggle-icon-transform, none);--vuu-icon-width: 18px;display:flex;align-items:center}.vuuTableGroupCell-spacer{height:100%;position:relative;width:var(--spacer-width)}.vuuTableGroupCell-spacer:after{background:var(--salt-container-primary-borderColor);content:"";position:absolute;top:0;bottom:-1px;left:9px;width:1px}.vuuTableGroupCell-toggle{transition:transform .25s;transform:var(--toggle-icon-transform)}.vuuDataTableRow-even{--row-background: var(--salt-container-secondary-background)}.vuuDataTableRow:not(.vuuDataTableRow-even){--row-background: var(--vuuTableRow-backgroundColor-odd, var(--table-background))}.vuuDataTableRow{background:var(--row-background)}.vuuDataTableRow :is(.vuuPinFloating,.vuuPinLeft,.vuuPinRight){background-color:var(--row-background)}.vuuDataTableRow-expanded{--row-toggle-icon-transform: rotate(90deg)}.vuuColumnResizer{cursor:col-resize;width:4px}.vuuColumnResizer:after{content:"";position:absolute;width:var(--columnResizer-width, 1px);top:0;bottom:0;right:0;background-color:var(--columnResizer-color, var(--salt-separable-tertiary-borderColor));height:var(--columnResizer-height, 100%)}.vuuSortIndicator{--menu-icon-size: 18px;--menu-item-icon-color: black;display:flex;flex-direction:column;position:relative;width:18px}.vuuSortPosition{font-size:10px;line-height:10px;text-align:center}.vuuTable-headerCell{--cell-align: "flex-start";text-align:left;background:var(--table-background);border-bottom:2px solid var(--salt-separable-tertiary-borderColor);color:var(--salt-text-secondary-foreground);cursor:default;padding:0!important;position:sticky;top:0;height:var(--vuuTableHeaderHeight);z-index:1}.vuuTable-headerCell-right{--cell-align: flex-end}.vuuTable-headerCell-inner{align-items:stretch;display:flex;height:100%;padding:0 0 0 3px}.vuuTable-headerCell-inner:has(.vuuFilterIndicator){padding-left:0}.vuuTable-headerCell-label{align-items:center;justify-content:var(--cell-align);display:flex;flex:1 1 auto}.vuuTable-headerCell-resizing{--columnResizer-color: var(--salt-color-blue-500);--columnResizer-height: var(--table-height);--columnResizer-width: 2px}.vuuTable-headerCell.vuuPinLeft.vuuEndPin:after{box-shadow:2px 0 5px #0006;content:"";position:absolute;width:1px;background-color:transparent;height:var(--table-height);top:0;right:0px}.vuuTable-headerCell.vuuPinRight.vuuEndPin:after{box-shadow:-2px 0 5px #0000004d;content:"";position:absolute;width:1px;background-color:transparent;height:var(--table-height);top:0;left:0px}.vuuFilterIndicator{--menu-icon-size: 12px;--menu-item-icon-color: black;align-items:center;cursor:pointer;display:flex;flex:0 0 18px;flex-direction:column;justify-content:center;position:relative}.vuuFilterIndicator+.vuuTable-headerCell-inner{padding-left:0}.vuuTable-groupHeaderCell{--cell-align: "flex-start";text-align:left;background:var(--table-background);border-right:1px solid var(--salt-separable-tertiary-borderColor);border-bottom:2px solid var(--salt-separable-tertiary-borderColor);color:var(--salt-text-secondary-foreground);cursor:default;padding:0!important;position:sticky;top:0;height:var(--vuuTableHeaderHeight);z-index:1}.vuuTable-groupHeaderCell-inner{display:flex;height:100%}.vuuTable-groupHeaderCell-label{align-items:center;display:flex;flex:0 0 auto}.vuuTable-groupHeaderCell-col{align-items:center;background-color:inherit;display:inline-flex;flex:0 1 auto;height:calc(var(--vuuTableHeaderHeight) - 4px);justify-content:space-between;padding-right:8px;position:relative}.vuuTable-groupHeaderCell-close{--vuu-icon-height: 18px;--vuu-icon-width: 18px;cursor:pointer;left:3px}.vuuTable-groupHeaderCell-col:nth-child(odd){background-color:var(--salt-color-gray-50)}.vuuTable-groupHeaderCell-col:nth-child(even){background-color:var(--salt-color-gray-40)}.vuuTable-groupHeaderCell-col:first-child{clip-path:polygon(0 0,calc(100% - 8px) 0,100% 50%,calc(100% - 8px) 100%,0 100%);padding-left:3px;z-index:1}.vuuTable-groupHeaderCell-col:not(:first-child){margin-left:-6px;padding-left:12px;clip-path:polygon(0 0,calc(100% - 8px) 0,100% 50%,calc(100% - 8px) 100%,0 100%,8px 50%)}.vuuDataTable{background-color:var(--salt-container-primary-background, inherit);position:relative}.vuuDataTable-contentContainer{--table-background: var(--salt-container-primary-background, inherit);--vuuTable-contentHeight: var(--content-height, "auto");--vuuTable-contentWidth: var(--content-width, "auto");--vuuTableHeaderHeight: var(--header-height, 30px);--vuuTable-height: calc(var(--table-height) - var(--scrollbar-size));--vuuTable-pinnedWidthLeft: var(--pinned-width-left, 0pxs);--vuuTable-scrollbarSize: var(--scrollbar-size, 15px);--vuuTable-width: calc(var(--table-width) - var(--scrollbar-size));background-color:var(--salt-container-primary-background);height:var(--vuuTable-height);position:relative;overflow:auto;overscroll-behavior:none;width:var(--vuuTable-width)}.vuuDataTable-contentContainer::-webkit-scrollbar{display:none}.vuuDataTable-scrollbarContainer{--scroll-content-width: calc(var(--content-width) - var(--pinned-width-left));border-left:solid 1px var(--salt-container-primary-borderColor);border-top:solid 1px var(--salt-container-primary-borderColor);overflow:auto;position:absolute;height:calc(var(--table-height) - var(--header-height) + 1px);width:calc(var(--table-width) - var(--pinned-width-left) + 1px)}.vuuDataTable-scrollContainerHeader{background:#777;height:var(--header-height);position:fixed;top:0;right:0;width:var(--vuuTable-scrollbarSize)}.vuuDataTable-scrollContainerFooter{background-color:green;height:var(--vuuTable-scrollbarSize);position:fixed;bottom:0;left:0;width:var(--pinned-width-left)}.vuuDataTable-scrollContent{position:absolute;height:var(--content-height);width:var(--scroll-content-width, var(--content-width))}.vuuDataTable-tableContainer{background-color:var(--table-background);border-bottom:solid 1px var(--salt-container-primary-borderColor);height:calc(var(--table-height) - var(--scrollbar-size));left:0px;overflow:hidden;position:sticky;top:0px;width:calc(var(--table-width) - var(--scrollbar-size));white-space:nowrap}.vuuDataTable-table{--vuuTable-rowHeight: var(--row-height);--vuuTableCell-border-bottomColor: transparent;--vuuTableCell-border-rightColor: var(--salt-separable-tertiary-borderColor);position:absolute;top:0;left:0;background-color:#fff;border-collapse:separate;border-spacing:0;border-left:1px solid #ccc;border:none;font-size:var(--vuuDataTable-font-size, 10px);margin:0;table-layout:fixed;width:var(--vuuTable-contentWidth)}.vuuDataTable-columnBased{display:inline-table;height:var(--vuuTable-height);position:static}.vuuDataTable-filler{height:var(--filler-height)}.vuuDataTable-table td{border-right:1px solid var(--vuuTableCell-border-rightColor);border-bottom:1px solid var(--vuuTableCell-border-bottomColor);line-height:calc(var(--vuuTable-rowHeight) - 1px);padding:0 5px}.vuuDataTable-table td{color:var(--salt-text-primary-foreground);cursor:default;height:var(--vuuTable-rowHeight)}:is(.vuuPinLeft,.vuuPinRight,.vuuPinFloating){position:sticky}.vuuAlignRight{text-align:right}th:is(.vuuPinLeft,.vuuPinRight,.vuuPinFloating){top:0;z-index:2}table:is(.vuuPinLeft,.vuuPinRight,.vuuPinFloating){z-index:10}.vuuDataTable-settings{height:var(--header-height);position:absolute;right:0;top:0}.vuuDataTable:has(.vuuTable-headerCell-resizing) *{cursor:col-resize}
2
2
  /*# sourceMappingURL=index.css.map */
package/index.css.map CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../packages/vuu-popups/src/dialog/Dialog.css", "../../../packages/vuu-popups/src/menu/MenuList.css", "../../../packages/vuu-popups/src/popup/popup-service.css", "../../../packages/vuu-datatable/src/TableCell.css", "../../../packages/vuu-datatable/src/TableGroupCell.css", "../../../packages/vuu-datatable/src/TableRow.css", "../../../packages/vuu-datatable/src/ColumnResizer.css", "../../../packages/vuu-datatable/src/SortIndicator.css", "../../../packages/vuu-datatable/src/TableHeaderCell.css", "../../../packages/vuu-datatable/src/filter-indicator.css", "../../../packages/vuu-datatable/src/TableGroupHeaderCell.css", "../../../packages/vuu-datatable/src/DataTable.css"],
4
- "sourcesContent": [".vuuDialog {\n background: var(--salt-container-primary-background);\n border: var(--vuuDialog-border, solid 1px #ccc);\n border-radius: 5px;\n padding: var(--vuuDialog-padding, 0);\n box-shadow: var(--salt-overlayable-shadow, none);\n height: var(--vuuDialog-height, fit-content);\n width: var(--vuuDialog-width, fit-content);\n}\n\n.vuuDialog-header {\n --saltButton-height: 28px;\n --saltButton-width: 28px;\n\n --saltToolbar-background: transparent;\n --saltToolbar-height: calc(var(--salt-size-base) + 5px);\n border-bottom: solid 1px var(--salt-container-primary-borderColor);\n}\n\n.vuuDialog-header > .Responsive-inner {\n align-items: center;\n}\n\n.vuuDialog-header > .Responsive-inner > :last-child{\n right: 2px;\n}\n\n\n", ".vuuMenuList {\n --context-menu-color: #161616;\n --context-menu-padding: var(--hw-list-item-padding, 0 6px);\n --context-menu-shadow: var(--hw-dialog-shadow, 0 6px 12px rgba(0, 0, 0, 0.175));\n --focus-visible-border-color: var(--hw-focus-visible-border-color, rgb(141, 154, 179));\n --context-menu-highlight-bg: #a4d5f4;\n --context-menu-blur-focus-bg: #e0e4e9;\n --menu-item-height: var(--hw-list-item-height, 24px);\n --menu-item-icon-color: black;\n --menu-item-twisty-color: black;\n --menu-item-twisty-content: '';\n --menu-item-twisty-top: 50%;\n --menu-item-twisty-left: auto;\n --menu-item-twisty-right: 0px;\n --menu-icon-size: 12px;\n\n background-clip: padding-box;\n background-color: white;\n border-radius: 4px;\n border: solid 1px rgba(0, 0, 0, 0.15);\n box-shadow: var(--context-menu-shadow);\n font-size: var(--salt-text-label-fontSize);\n font-weight: var(--salt-typography-fontWeight-semiBold);\n list-style: none;\n margin: 2px 0 0;\n outline: 0;\n padding: 0;\n position: absolute;\n}\n\n.vuuMenuItem {\n align-items: center;\n color: var(--context-menu-color);\n display: flex;\n gap: 6px;\n height: var(--menu-item-height);\n padding: var(--context-menu-padding);\n padding-right: 24px;\n position: relative;\n white-space: nowrap;\n}\n\n.vuuIconContainer {\n display: inline-block;\n flex: 12px 0 0;\n height: var(--menu-icon-size);\n mask-repeat: no-repeat;\n width: var(--menu-icon-size);\n}\n\n.vuuMenuItem[aria-expanded='true'] {\n background-color: var(--context-menu-blur-focus-bg);\n}\n\n.vuuMenuItem-separator {\n border-top: solid 1px var(--context-menu-blur-focus-bg);\n}\n\n.vuuMenuItem[aria-haspopup='true']:after {\n content: var(--menu-item-twisty-content);\n -webkit-mask: var(--svg-chevron-right) center center/12px 12px;\n mask: var(--svg-chevron-down) center center/12px 12px;\n mask-repeat: no-repeat;\n background-color: var(--menu-item-twisty-color);\n height: 16px;\n left: var(--menu-item-twisty-left);\n right: var(--menu-item-twisty-right);\n margin-top: -8px;\n position: absolute;\n top: var(--menu-item-twisty-top);\n transition: transform 0.3s;\n width: 16px;\n}\n\n.vuuMenuItem[data-highlighted] {\n background-color: var(--context-menu-highlight-bg);\n}\n\n.vuuMenuItem:hover {\n background-color: var(--context-menu-highlight-bg);\n cursor: default;\n}\n\n.vuuMenuList-childMenuShowing .hwMenuItem[data-highlighted] {\n background-color: var(--context-menu-blur-focus-bg);\n}\n\n.vuuMenuItem.focusVisible:before {\n content: '';\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0px;\n border: dotted var(--focus-visible-border-color) 2px;\n}\n\n.vuuPopupContainer.top-bottom-right-right .popup-menu {\n left: auto;\n right: 0;\n}\n\n.popup-menu .menu-item.showing > button,\n.popup-menu .menu-item > button:focus,\n.popup-menu .menu-item > button:hover {\n text-decoration: none;\n color: rgb(0, 0, 0);\n background-color: rgb(220, 220, 220);\n}\n.vuuMenuItem-button:active,\n.hwMenuItem-button:hover {\n outline: 0;\n}\n\n.popup-menu .menu-item.disabled > button {\n clear: both;\n font-weight: normal;\n line-height: 1.5;\n color: rgb(120, 120, 120);\n white-space: nowrap;\n text-decoration: none;\n cursor: default;\n}\n", ".vuuPopup {\n box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);\n position: absolute;\n top: 0;\n left: 0;\n width: 0;\n height: 0;\n overflow: visible;\n z-index: 1000;\n}\n\n.vuuPopup {\n position: absolute;\n}\n", ".vuuDataTable {\n --cell-outline-width: 2px;\n}\n\n.vuuDataTable th:focus,\n.vuuDataTable td:focus {\n outline: dotted var(--salt-color-blue-400) var(--cell-outline-width);\n outline-offset: calc(var(--cell-outline-width) * -1);\n /** This is to achieve a white background to outline dashes */\n box-shadow: inset 0 0 0 var(--cell-outline-width) white;\n border-bottom: none;\n}\n\n.vuuDataTable th:focus .vuuTable-headerCell-inner{\n --columnResizer-color: transparent;\n /** This is to achieve a white background to outline dashes */\n padding-bottom: var(--cell-outline-width);\n}\n\n.vuuDataTable td:focus {\n /** This is to achieve a white background to outline dashes */\n border-right: none;\n padding-bottom: 1px;\n}", ".vuuTableGroupCell {\n --spacer-width: 20px;\n --toggle-icon-transform: var(--row-toggle-icon-transform, none);\n --vuu-icon-width: 18px;\n display: flex;\n align-items: center;\n}\n\n.vuuTableGroupCell-spacer {\n height: 100%;\n position: relative;\n width: var(--spacer-width);\n}\n\n.vuuTableGroupCell-spacer:after {\n background: var(--salt-container-primary-borderColor);\n content: '';\n position: absolute;\n top:0;\n bottom: -1px;\n /* left: calc(var(--spacer-width / 2)); */\n left: 9px;\n width: 1px;\n}\n\n.vuuTableGroupCell-toggle {\n transition: transform 0.25s;\n transform: var(--toggle-icon-transform);\n}\n\n\n/* .vuuTableGroupCell-toggle[data-icon='triangle-right']{\n --vuu-icon-svg: var(--svg-plus-box);\n}\n\n.vuuDataTableRow-expanded .vuuTableGroupCell-toggle[data-icon='triangle-right']{\n --vuu-icon-svg: var(--svg-minus-box);\n} */\n", ".vuuDataTableRow-even {\n --row-background: var(--salt-container-secondary-background);\n }\n \n .vuuDataTableRow:not(.vuuDataTableRow-even) {\n --row-background: var(--vuuTableRow-backgroundColor-odd, var(--table-background));\n }\n\n .vuuDataTableRow {\n background: var(--row-background);\n }\n\n .vuuDataTableRow .vuuPinLeft {\n background-color: var(--row-background);\n }\n \n .vuuDataTableRow-expanded {\n --row-toggle-icon-transform: rotate(90deg);\n }\n ", ".vuuColumnResizer {\n cursor: col-resize;\n width: 4px;\n}\n\n.vuuColumnResizer:after {\n content: '';\n position: absolute;\n width: var(--columnResizer-width, 1px);\n top:0;\n bottom:0;\n right: 0;\n background-color: var(--columnResizer-color, var(--salt-separable-tertiary-borderColor));\n height: var(--columnResizer-height, 100%);\n}", ".vuuSortIndicator {\n --menu-icon-size: 18px;\n --menu-item-icon-color: black;\n display: flex;\n flex-direction: column;\n position: relative;\n width: 18px;\n}\n\n.vuuSortPosition {\n font-size: 10px;\n line-height: 10px;\n text-align: center;\n}\n\n", ".vuuTable-headerCell {\n --cell-align: 'flex-start';\n text-align: left;\n background: var(--table-background);\n /* border-right: var(--header-border-rightWidth, 1px) solid var(--header-border-rightColor, var(--salt-separable-tertiary-borderColor)); */\n border-bottom: 2px solid var(--salt-separable-tertiary-borderColor);\n color: var(--salt-text-secondary-foreground);\n cursor: default;\n padding: 0 !important;\n position: sticky;\n top: 0;\n height: var(--vuuTableHeaderHeight);\n /* ensure header row sits atop everything else when scrolling down */\n z-index: 1;\n }\n\n .vuuTable-headerCell-right {\n --cell-align: flex-end;\n }\n \n .vuuTable-headerCell-inner {\n align-items: stretch;\n display: flex;\n height: 100%;\n padding: 0 0 0 3px;\n }\n\n .vuuTable-headerCell-inner:has(.vuuFilterIndicator){\n padding-left: 0;\n }\n\n .vuuTable-headerCell-label {\n align-items: center;\n justify-content: var(--cell-align);\n display: flex;\n flex: 1 1 auto;\n }\n\n .vuuTable-headerCell-resizing {\n --columnResizer-color: var(--salt-color-blue-500);\n --columnResizer-height: var(--table-height);\n --columnResizer-width: 2px;\n }", ".vuuFilterIndicator {\n --menu-icon-size: 12px;\n --menu-item-icon-color: black;\n align-items: center;\n cursor: pointer;\n display: flex;\n flex: 0 0 18px;\n flex-direction: column;\n justify-content: center;\n position: relative;\n}\n\n.vuuFilterIndicator + .vuuTable-headerCell-inner {\n padding-left: 0;\n}\n", ".vuuTable-groupHeaderCell {\n --cell-align: 'flex-start';\n text-align: left;\n background: var(--table-background);\n border-right: 1px solid var(--salt-separable-tertiary-borderColor);\n border-bottom: 2px solid var(--salt-separable-tertiary-borderColor);\n color: var(--salt-text-secondary-foreground);\n cursor: default;\n padding: 0 !important;\n position: sticky;\n top: 0;\n height: var(--vuuTableHeaderHeight);\n /* ensure header row sits atop everything else when scrolling down */\n z-index: 1;\n }\n\n\n .vuuTable-groupHeaderCell-inner {\n display: flex;\n height: 100%;\n }\n\n .vuuTable-groupHeaderCell-label {\n align-items: center;\n display: flex;\n flex: 0 0 auto;\n }\n\n .vuuTable-groupHeaderCell-col {\n align-items: center;\n background-color: inherit;\n display: inline-flex;\n flex: 0 1 auto;\n height: calc(var(--vuuTableHeaderHeight) - 4px);\n justify-content: space-between;\n padding-right: 8px;\n position: relative;\n }\n\n .vuuTable-groupHeaderCell-close {\n --vuu-icon-height: 18px;\n --vuu-icon-width: 18px;\n cursor: pointer;\n left: 3px;\n }\n\n .vuuTable-groupHeaderCell-col:nth-child(odd) {\n background-color: var(--salt-color-gray-50);\n }\n .vuuTable-groupHeaderCell-col:nth-child(even) {\n background-color: var(--salt-color-gray-40);\n }\n\n .vuuTable-groupHeaderCell-col:first-child {\n clip-path: polygon(0 0, calc(100% - 8px) 0, 100% 50%, calc(100% - 8px) 100%, 0 100%);\n padding-left: 3px;\n z-index: 1;\n }\n \n .vuuTable-groupHeaderCell-col:not(:first-child) {\n margin-left: -6px;\n padding-left: 12px;\n clip-path: polygon(0 0, calc(100% - 8px) 0, 100% 50%, calc(100% - 8px) 100%, 0 100%, 8px 50%);\n }\n \n ", "\n.vuuDataTable {\n background-color: var(--salt-container-primary-background, inherit);\n position: relative;\n}\n.vuuDataTable-contentContainer {\n \n --table-background: var(--salt-container-primary-background, inherit);\n\n --vuuTable-contentHeight: var(--content-height, 'auto');\n --vuuTable-contentWidth: var(--content-width, 'auto');\n --vuuTableHeaderHeight: var(--header-height, 30px);\n --vuuTable-height: calc(var(--table-height) - var(--scrollbar-size));\n --vuuTable-pinnedWidthLeft: var(--pinned-width-left, 0pxs);\n --vuuTable-scrollbarSize: var(--scrollbar-size, 15px);\n --vuuTable-width: calc(var(--table-width) - var(--scrollbar-size));\n\n background-color: var(--salt-container-primary-background);\n\n height: var(--vuuTable-height);\n position: relative;\n overflow: auto;\n overscroll-behavior: none;\n width: var(--vuuTable-width);\n}\n\n.vuuDataTable-contentContainer::-webkit-scrollbar {\n display: none;\n}\n\n.vuuDataTable-scrollbarContainer {\n --scroll-content-width: calc(var(--content-width) - var(--pinned-width-left));\n border-left: solid 1px var(--salt-container-primary-borderColor);\n border-top: solid 1px var(--salt-container-primary-borderColor);\n overflow: auto;\n position: absolute;\n height: calc(var(--table-height) - var(--header-height) + 1px);\n width: calc(var(--table-width) - var(--pinned-width-left) + 1px);\n}\n\n.vuuDataTable-scrollContainerHeader {\n background: #777;\n height: var(--header-height);\n position: fixed;\n top:0;\n right:0;\n width: var(--vuuTable-scrollbarSize);\n}\n.vuuDataTable-scrollContainerFooter {\n background-color: green;\n height: var(--vuuTable-scrollbarSize);\n position: fixed;\n bottom:0;\n left:0;\n width: var(--pinned-width-left);\n\n}\n\n.vuuDataTable-scrollContent {\n position: absolute;\n height: var(--content-height);\n width: var(--scroll-content-width, var(--content-width));\n}\n\n.vuuDataTable-tableContainer {\n background-color: var(--table-background);\n border-bottom: solid 1px var(--salt-container-primary-borderColor);\n height: calc(var(--table-height) - var(--scrollbar-size));\n left: 0px;\n overflow: hidden;\n position: sticky;\n top: 0px;\n width: calc(var(--table-width) - var(--scrollbar-size));\n white-space: nowrap;\n\n}\n\n\n.vuuDataTable-table {\n --vuuTable-rowHeight: var(--row-height);\n --vuuTableCell-border-bottomColor: transparent;\n --vuuTableCell-border-rightColor: var(--salt-separable-tertiary-borderColor);\n\n position: absolute;\n top: 0;\n left: 0;\n\n background-color: #fff;\n border-collapse: separate;\n border-spacing: 0;\n border-left: 1px solid #ccc;\n border: none;\n font-size: var(--vuuDataTable-font-size, 10px);\n margin: 0;\n table-layout: fixed;\n width: var(--vuuTable-contentWidth);\n}\n\n.vuuDataTable-columnBased {\n display: inline-table;\n height: var(--vuuTable-height);\n position: static;\n}\n\n/* .vuuDataTable-columnBased .vuuDataTable-headerCell{\n background-color: darkmagenta;\n} */\n\n.vuuDataTable-filler {\n height: var(--filler-height);\n}\n\n\n.vuuDataTable-table td {\n border-right: 1px solid var(--vuuTableCell-border-rightColor);\n border-bottom: 1px solid var(--vuuTableCell-border-bottomColor);\n line-height: calc(var(--vuuTable-rowHeight) - 1px);\n padding: 0 5px;\n}\n\n.vuuDataTable-table td {\n color: var(--salt-text-primary-foreground);\n cursor: default;\n height: var(--vuuTable-rowHeight);\n}\n\n.vuuPinLeft {\n position: sticky;\n}\n\n.vuuAlignRight {\n text-align: right;\n}\n\nth.vuuPinLeft {\n top:0;\n z-index: 2;\n}\n\ntable.vuuPinLeft {\n z-index: 10;\n}\n\n/* .vuuDataTable-row {\n transform: translate3d(0px, 25px, 0px);\n} */\n\n.vuuDataTable-settings {\n height: var(--header-height);\n position: absolute;\n right: 0;\n top:0;\n}\n\n.vuuDataTable:has(.vuuTable-headerCell-resizing) * {\n cursor: col-resize;\n}\n\n"],
5
- "mappings": "AAAA,WACE,oDACA,+CAFF,kBAIE,oCACA,gDACA,4CACA,0CAGF,kBACE,0BACA,yBAEA,sCACA,wDACA,kEAGF,oCACE,mBAGF,gDACE,UCxBF,aACE,8BACA,2DACA,+EACA,uFACA,qCACA,sCACA,qDACA,8BACA,gCACA,+BACA,4BACA,8BACA,8BACA,uBAEA,4BACA,sBAjBF,kBAmBE,iCACA,sCACA,0CACA,uDACA,gBAvBF,eAyBE,UAzBF,UA2BE,kBAGF,aACE,mBACA,gCACA,aACA,QACA,+BACA,oCACA,mBACA,kBACA,mBAGF,kBACE,qBACA,cACA,6BACA,sBACA,4BAGF,iCACE,mDAGF,uBACE,uDAGF,uCACE,wCACA,8DACA,qDACA,sBACA,+CACA,YACA,kCACA,oCACA,gBACA,kBACA,gCACA,yBACA,WAGF,+BACE,kDAGF,mBACE,kDACA,eAGF,4DACE,mDAGF,iCACE,WACA,kBACA,MACA,OACA,QACA,WACA,oDAGF,sDACE,UACA,QAGF,8GAGE,qBACA,WACA,yBAEF,oDAEE,UAGF,uCACE,WACA,gBACA,gBACA,cACA,mBACA,qBACA,eCzHF,UACE,gCACA,kBACA,MACA,OACA,QACA,SACA,iBACA,aAGF,UACE,kBCZF,cACI,0BAGJ,8CAEI,oEACA,oDAEA,sDACA,mBAGJ,kDACI,mCAEA,yCAGJ,uBAEI,kBACA,mBCtBJ,mBACI,qBACA,gEACA,uBACA,aACA,mBAGJ,0BACI,YACA,kBACA,0BAGJ,gCACI,qDACA,WACA,kBACA,MACA,YAEA,SACA,UAGJ,0BACI,0BACA,uCC3BJ,sBACI,6DAGF,4CACE,kFAGF,iBACE,iCAGF,6BACE,uCAGF,0BACE,2CCjBJ,kBACI,kBACA,UAGJ,wBACI,WACA,kBACA,sCACA,MACA,SACA,QACA,wFACA,yCCbJ,kBACE,uBACA,8BACA,aACA,sBACA,kBACA,WAGF,iBACE,eACA,iBACA,kBCZF,qBACE,2BACA,gBACE,mCAEA,mEACA,4CACA,eAPJ,oBASI,gBACA,MACA,mCAEA,UAGF,2BACE,uBAGF,2BACE,oBACA,aACA,YAvBJ,kBA2BE,oDACE,eAGF,2BACE,mBACA,kCACA,aACA,cAGF,8BACE,kDACA,4CACA,2BCzCJ,oBACE,uBACA,8BACA,mBACA,eACA,aACA,cACA,sBACA,uBACA,kBAGF,+CACE,eCbF,0BACE,2BACA,gBACE,mCACA,kEACA,mEACA,4CACA,eAPJ,oBASI,gBACA,MACA,mCAEA,UAIF,gCACE,aACA,YAGF,gCACE,mBACA,aACA,cAGF,8BACE,mBACA,yBACA,oBACA,cACA,+CACA,8BACA,kBACA,kBAGF,gCACE,wBACA,uBACA,eACA,SAGF,6CACE,2CAEF,8CACE,2CAGF,0CACE,gFACA,iBACA,UAGF,gDACE,iBACA,kBACA,wFC7DJ,cACE,mEACA,kBAEF,+BAEE,sEAEA,wDACA,sDACA,mDACA,qEACA,2DACA,sDACA,mEAEA,0DAEA,8BACA,kBACA,cACA,yBACA,4BAGF,kDACE,aAGF,iCACE,8EACA,gEACA,+DACA,cACA,kBACA,8DACA,gEAGF,oCACE,gBACA,4BACA,eACA,MACA,QACA,oCAEF,oCACE,uBACA,qCACA,eACA,SACA,OACA,+BAIF,4BACE,kBACA,6BACA,wDAGF,6BACE,yCACA,kEACA,yDACA,SACA,gBACA,gBACA,QACA,uDACA,mBAKF,oBACE,wCACA,+CACA,6EAEA,kBACA,MACA,OAEA,sBACA,yBACA,iBACA,2BACA,YACA,8CA5FF,SA8FE,mBACA,mCAGF,0BACE,qBACA,8BACA,gBAOF,qBACE,4BAIF,uBACE,6DACA,+DACA,kDApHF,cAwHA,uBACE,0CACA,eACA,iCAGF,YACE,gBAGF,eACE,iBAGF,cACE,MACA,UAGF,iBACE,WAOF,uBACE,4BACA,kBACA,QACA,MAGF,mDACE",
4
+ "sourcesContent": [".vuuDialog {\n background: var(--salt-container-primary-background);\n border: var(--vuuDialog-border, solid 1px #ccc);\n border-radius: 5px;\n padding: var(--vuuDialog-padding, 0);\n box-shadow: var(--salt-overlayable-shadow, none);\n height: var(--vuuDialog-height, fit-content);\n width: var(--vuuDialog-width, fit-content);\n}\n\n.vuuDialog-header {\n --saltButton-height: 28px;\n --saltButton-width: 28px;\n\n --saltToolbar-background: transparent;\n --saltToolbar-height: calc(var(--salt-size-base) + 5px);\n border-bottom: solid 1px var(--salt-container-primary-borderColor);\n}\n\n.vuuDialog-header > .Responsive-inner {\n align-items: center;\n}\n\n.vuuDialog-header > .Responsive-inner > :last-child{\n right: 2px;\n}\n\n\n", ".vuuMenuList {\n --context-menu-color: #161616;\n --context-menu-padding: var(--hw-list-item-padding, 0 6px);\n --context-menu-shadow: var(--hw-dialog-shadow, 0 6px 12px rgba(0, 0, 0, 0.175));\n --focus-visible-border-color: var(--hw-focus-visible-border-color, rgb(141, 154, 179));\n --context-menu-highlight-bg: #a4d5f4;\n --context-menu-blur-focus-bg: #e0e4e9;\n --menu-item-height: var(--hw-list-item-height, 24px);\n --menu-item-icon-color: black;\n --menu-item-twisty-color: black;\n --menu-item-twisty-content: '';\n --menu-item-twisty-top: 50%;\n --menu-item-twisty-left: auto;\n --menu-item-twisty-right: 0px;\n --menu-icon-size: 12px;\n\n background-clip: padding-box;\n background-color: white;\n border-radius: 4px;\n border: solid 1px rgba(0, 0, 0, 0.15);\n box-shadow: var(--context-menu-shadow);\n font-size: var(--salt-text-label-fontSize);\n font-weight: var(--salt-typography-fontWeight-semiBold);\n list-style: none;\n margin: 2px 0 0;\n outline: 0;\n padding: 0;\n position: absolute;\n}\n\n.vuuMenuItem {\n align-items: center;\n color: var(--context-menu-color);\n display: flex;\n gap: 6px;\n height: var(--menu-item-height);\n padding: var(--context-menu-padding);\n padding-right: 24px;\n position: relative;\n white-space: nowrap;\n}\n\n.vuuIconContainer {\n display: inline-block;\n flex: 12px 0 0;\n height: var(--menu-icon-size);\n mask-repeat: no-repeat;\n width: var(--menu-icon-size);\n}\n\n.vuuMenuItem[aria-expanded='true'] {\n background-color: var(--context-menu-blur-focus-bg);\n}\n\n.vuuMenuItem-separator {\n border-top: solid 1px var(--context-menu-blur-focus-bg);\n}\n\n.vuuMenuItem[aria-haspopup='true']:after {\n content: var(--menu-item-twisty-content);\n -webkit-mask: var(--svg-chevron-right) center center/12px 12px;\n mask: var(--svg-chevron-down) center center/12px 12px;\n mask-repeat: no-repeat;\n background-color: var(--menu-item-twisty-color);\n height: 16px;\n left: var(--menu-item-twisty-left);\n right: var(--menu-item-twisty-right);\n margin-top: -8px;\n position: absolute;\n top: var(--menu-item-twisty-top);\n transition: transform 0.3s;\n width: 16px;\n}\n\n.vuuMenuItem[data-highlighted] {\n background-color: var(--context-menu-highlight-bg);\n}\n\n.vuuMenuItem:hover {\n background-color: var(--context-menu-highlight-bg);\n cursor: default;\n}\n\n.vuuMenuList-childMenuShowing .hwMenuItem[data-highlighted] {\n background-color: var(--context-menu-blur-focus-bg);\n}\n\n.vuuMenuItem.focusVisible:before {\n content: '';\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0px;\n border: dotted var(--focus-visible-border-color) 2px;\n}\n\n.vuuPopupContainer.top-bottom-right-right .popup-menu {\n left: auto;\n right: 0;\n}\n\n.popup-menu .menu-item.showing > button,\n.popup-menu .menu-item > button:focus,\n.popup-menu .menu-item > button:hover {\n text-decoration: none;\n color: rgb(0, 0, 0);\n background-color: rgb(220, 220, 220);\n}\n.vuuMenuItem-button:active,\n.hwMenuItem-button:hover {\n outline: 0;\n}\n\n.popup-menu .menu-item.disabled > button {\n clear: both;\n font-weight: normal;\n line-height: 1.5;\n color: rgb(120, 120, 120);\n white-space: nowrap;\n text-decoration: none;\n cursor: default;\n}\n", ".vuuPopup {\n box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);\n position: absolute;\n top: 0;\n left: 0;\n width: 0;\n height: 0;\n overflow: visible;\n z-index: 1000;\n}\n\n.vuuPopup {\n position: absolute;\n}\n", ".vuuDataTable {\n --cell-outline-width: 2px;\n}\n\n.vuuDataTable th:focus,\n.vuuDataTable td:focus {\n outline: var(--vuuTableCell-outline, dotted var(--salt-color-blue-400) var(--cell-outline-width));\n outline-offset: calc(var(--cell-outline-width) * -1);\n /** This is to achieve a white background to outline dashes */\n box-shadow: inset 0 0 0 var(--cell-outline-width) white;\n border-bottom: none;\n}\n\n.vuuDataTable th:focus .vuuTable-headerCell-inner{\n /** This is to achieve a white background to outline dashes */\n padding-bottom: var(--cell-outline-width);\n}\n\n.vuuDataTable th:not(.vuuTable-headerCell-resizing):focus .vuuTable-headerCell-inner{\n --columnResizer-color: transparent;\n}\n\n\n.vuuDataTable td:focus {\n /** This is to achieve a white background to outline dashes */\n border-right: none;\n padding-bottom: 1px;\n}\n\n.vuuDataTable td {\n --saltEditableLabel-height: 17px;\n --saltInput-height: 17px;\n --saltInput-minHeight: 17px;\n overflow: hidden;\n}\n\ntd[data-editable=\"true\"] {\n --salt-text-fontSize: 10px;\n --vuu-icon-size: 5px;\n position: relative;\n}\n\ntd[data-editable=\"true\"]:after {\n top: 0;\n content: \"\";\n background-color: var(--salt-text-secondary-foreground, black);\n left: 0;\n height: var(--vuu-icon-height, var(--vuu-icon-size, 12px));\n -webkit-mask: var(--svg-corner-triangle) center center/var(--vuu-icon-size) var(--vuu-icon-size);\n mask: var(--svg-corner-triangle) center center/var(--vuu-icon-size) var(--vuu-icon-size);\n mask-repeat: no-repeat;\n -webkit-mask-repeat: no-repeat;\n position: absolute;\n transform: rotate(180deg);\n width: var(--vuu-icon-width, var(--vuu-icon-size, 12px));\n }\n \ntd:focus[data-editable],\ntd:focus-within[data-editable],\ntd:has(.saltEditableLabel-editing) {\n outline: solid var(--salt-color-blue-400) 1px;\n background-color: white;\n outline-offset: -1px;\n}\n\ntd:focus[data-editable=\"true\"]:after,\ntd:has(.saltEditableLabel):after {\n /* background-color: black; */\n background-color: var(--salt-color-blue-400);\n left: 1px;\n top: 1px;\n}\n", ".vuuTableGroupCell {\n --spacer-width: 20px;\n --toggle-icon-transform: var(--row-toggle-icon-transform, none);\n --vuu-icon-width: 18px;\n display: flex;\n align-items: center;\n}\n\n.vuuTableGroupCell-spacer {\n height: 100%;\n position: relative;\n width: var(--spacer-width);\n}\n\n.vuuTableGroupCell-spacer:after {\n background: var(--salt-container-primary-borderColor);\n content: '';\n position: absolute;\n top:0;\n bottom: -1px;\n /* left: calc(var(--spacer-width / 2)); */\n left: 9px;\n width: 1px;\n}\n\n.vuuTableGroupCell-toggle {\n transition: transform 0.25s;\n transform: var(--toggle-icon-transform);\n}\n\n\n/* .vuuTableGroupCell-toggle[data-icon='triangle-right']{\n --vuu-icon-svg: var(--svg-plus-box);\n}\n\n.vuuDataTableRow-expanded .vuuTableGroupCell-toggle[data-icon='triangle-right']{\n --vuu-icon-svg: var(--svg-minus-box);\n} */\n", ".vuuDataTableRow-even {\n --row-background: var(--salt-container-secondary-background);\n }\n \n .vuuDataTableRow:not(.vuuDataTableRow-even) {\n --row-background: var(--vuuTableRow-backgroundColor-odd, var(--table-background));\n }\n\n .vuuDataTableRow {\n background: var(--row-background);\n }\n\n .vuuDataTableRow :is(.vuuPinFloating, .vuuPinLeft, .vuuPinRight) {\n background-color: var(--row-background);\n }\n \n .vuuDataTableRow-expanded {\n --row-toggle-icon-transform: rotate(90deg);\n }\n ", ".vuuColumnResizer {\n cursor: col-resize;\n width: 4px;\n}\n\n.vuuColumnResizer:after {\n content: '';\n position: absolute;\n width: var(--columnResizer-width, 1px);\n top:0;\n bottom:0;\n right: 0;\n background-color: var(--columnResizer-color, var(--salt-separable-tertiary-borderColor));\n height: var(--columnResizer-height, 100%);\n}", ".vuuSortIndicator {\n --menu-icon-size: 18px;\n --menu-item-icon-color: black;\n display: flex;\n flex-direction: column;\n position: relative;\n width: 18px;\n}\n\n.vuuSortPosition {\n font-size: 10px;\n line-height: 10px;\n text-align: center;\n}\n\n", ".vuuTable-headerCell {\n --cell-align: 'flex-start';\n text-align: left;\n background: var(--table-background);\n /* border-right: var(--header-border-rightWidth, 1px) solid var(--header-border-rightColor, var(--salt-separable-tertiary-borderColor)); */\n border-bottom: 2px solid var(--salt-separable-tertiary-borderColor);\n color: var(--salt-text-secondary-foreground);\n cursor: default;\n padding: 0 !important;\n position: sticky;\n top: 0;\n height: var(--vuuTableHeaderHeight);\n /* ensure header row sits atop everything else when scrolling down */\n z-index: 1;\n }\n\n .vuuTable-headerCell-right {\n --cell-align: flex-end;\n }\n \n .vuuTable-headerCell-inner {\n align-items: stretch;\n display: flex;\n height: 100%;\n padding: 0 0 0 3px;\n }\n\n .vuuTable-headerCell-inner:has(.vuuFilterIndicator){\n padding-left: 0;\n }\n\n .vuuTable-headerCell-label {\n align-items: center;\n justify-content: var(--cell-align);\n display: flex;\n flex: 1 1 auto;\n }\n\n .vuuTable-headerCell-resizing {\n --columnResizer-color: var(--salt-color-blue-500);\n --columnResizer-height: var(--table-height);\n --columnResizer-width: 2px;\n }\n\n .vuuTable-headerCell.vuuPinLeft.vuuEndPin:after {\n box-shadow: 2px 0px 5px rgba(0,0,0,0.4);\n content: \"\";\n position: absolute;\n width: 1px;\n background-color: transparent;\n height: var(--table-height);\n top:0;\n right: 0px;\n }\n\n .vuuTable-headerCell.vuuPinRight.vuuEndPin:after {\n box-shadow: -2px 0px 5px rgba(0,0,0,0.3);\n content: \"\";\n position: absolute;\n width: 1px;\n background-color: transparent;\n height: var(--table-height);\n top:0;\n left: 0px;\n }", ".vuuFilterIndicator {\n --menu-icon-size: 12px;\n --menu-item-icon-color: black;\n align-items: center;\n cursor: pointer;\n display: flex;\n flex: 0 0 18px;\n flex-direction: column;\n justify-content: center;\n position: relative;\n}\n\n.vuuFilterIndicator + .vuuTable-headerCell-inner {\n padding-left: 0;\n}\n", ".vuuTable-groupHeaderCell {\n --cell-align: 'flex-start';\n text-align: left;\n background: var(--table-background);\n border-right: 1px solid var(--salt-separable-tertiary-borderColor);\n border-bottom: 2px solid var(--salt-separable-tertiary-borderColor);\n color: var(--salt-text-secondary-foreground);\n cursor: default;\n padding: 0 !important;\n position: sticky;\n top: 0;\n height: var(--vuuTableHeaderHeight);\n /* ensure header row sits atop everything else when scrolling down */\n z-index: 1;\n }\n\n\n .vuuTable-groupHeaderCell-inner {\n display: flex;\n height: 100%;\n }\n\n .vuuTable-groupHeaderCell-label {\n align-items: center;\n display: flex;\n flex: 0 0 auto;\n }\n\n .vuuTable-groupHeaderCell-col {\n align-items: center;\n background-color: inherit;\n display: inline-flex;\n flex: 0 1 auto;\n height: calc(var(--vuuTableHeaderHeight) - 4px);\n justify-content: space-between;\n padding-right: 8px;\n position: relative;\n }\n\n .vuuTable-groupHeaderCell-close {\n --vuu-icon-height: 18px;\n --vuu-icon-width: 18px;\n cursor: pointer;\n left: 3px;\n }\n\n .vuuTable-groupHeaderCell-col:nth-child(odd) {\n background-color: var(--salt-color-gray-50);\n }\n .vuuTable-groupHeaderCell-col:nth-child(even) {\n background-color: var(--salt-color-gray-40);\n }\n\n .vuuTable-groupHeaderCell-col:first-child {\n clip-path: polygon(0 0, calc(100% - 8px) 0, 100% 50%, calc(100% - 8px) 100%, 0 100%);\n padding-left: 3px;\n z-index: 1;\n }\n \n .vuuTable-groupHeaderCell-col:not(:first-child) {\n margin-left: -6px;\n padding-left: 12px;\n clip-path: polygon(0 0, calc(100% - 8px) 0, 100% 50%, calc(100% - 8px) 100%, 0 100%, 8px 50%);\n }\n \n ", "\n.vuuDataTable {\n background-color: var(--salt-container-primary-background, inherit);\n position: relative;\n}\n.vuuDataTable-contentContainer {\n \n --table-background: var(--salt-container-primary-background, inherit);\n\n --vuuTable-contentHeight: var(--content-height, 'auto');\n --vuuTable-contentWidth: var(--content-width, 'auto');\n --vuuTableHeaderHeight: var(--header-height, 30px);\n --vuuTable-height: calc(var(--table-height) - var(--scrollbar-size));\n --vuuTable-pinnedWidthLeft: var(--pinned-width-left, 0pxs);\n --vuuTable-scrollbarSize: var(--scrollbar-size, 15px);\n --vuuTable-width: calc(var(--table-width) - var(--scrollbar-size));\n\n background-color: var(--salt-container-primary-background);\n\n height: var(--vuuTable-height);\n position: relative;\n overflow: auto;\n overscroll-behavior: none;\n width: var(--vuuTable-width);\n}\n\n.vuuDataTable-contentContainer::-webkit-scrollbar {\n display: none;\n}\n\n.vuuDataTable-scrollbarContainer {\n --scroll-content-width: calc(var(--content-width) - var(--pinned-width-left));\n border-left: solid 1px var(--salt-container-primary-borderColor);\n border-top: solid 1px var(--salt-container-primary-borderColor);\n overflow: auto;\n position: absolute;\n height: calc(var(--table-height) - var(--header-height) + 1px);\n width: calc(var(--table-width) - var(--pinned-width-left) + 1px);\n}\n\n.vuuDataTable-scrollContainerHeader {\n background: #777;\n height: var(--header-height);\n position: fixed;\n top:0;\n right:0;\n width: var(--vuuTable-scrollbarSize);\n}\n.vuuDataTable-scrollContainerFooter {\n background-color: green;\n height: var(--vuuTable-scrollbarSize);\n position: fixed;\n bottom:0;\n left:0;\n width: var(--pinned-width-left);\n\n}\n\n.vuuDataTable-scrollContent {\n position: absolute;\n height: var(--content-height);\n width: var(--scroll-content-width, var(--content-width));\n}\n\n.vuuDataTable-tableContainer {\n background-color: var(--table-background);\n border-bottom: solid 1px var(--salt-container-primary-borderColor);\n height: calc(var(--table-height) - var(--scrollbar-size));\n left: 0px;\n overflow: hidden;\n position: sticky;\n top: 0px;\n width: calc(var(--table-width) - var(--scrollbar-size));\n white-space: nowrap;\n\n}\n\n\n.vuuDataTable-table {\n --vuuTable-rowHeight: var(--row-height);\n --vuuTableCell-border-bottomColor: transparent;\n --vuuTableCell-border-rightColor: var(--salt-separable-tertiary-borderColor);\n\n position: absolute;\n top: 0;\n left: 0;\n\n background-color: #fff;\n border-collapse: separate;\n border-spacing: 0;\n border-left: 1px solid #ccc;\n border: none;\n font-size: var(--vuuDataTable-font-size, 10px);\n margin: 0;\n table-layout: fixed;\n width: var(--vuuTable-contentWidth);\n}\n\n.vuuDataTable-columnBased {\n display: inline-table;\n height: var(--vuuTable-height);\n position: static;\n}\n\n/* .vuuDataTable-columnBased .vuuDataTable-headerCell{\n background-color: darkmagenta;\n} */\n\n.vuuDataTable-filler {\n height: var(--filler-height);\n}\n\n\n.vuuDataTable-table td {\n border-right: 1px solid var(--vuuTableCell-border-rightColor);\n border-bottom: 1px solid var(--vuuTableCell-border-bottomColor);\n line-height: calc(var(--vuuTable-rowHeight) - 1px);\n padding: 0 5px;\n}\n\n.vuuDataTable-table td {\n color: var(--salt-text-primary-foreground);\n cursor: default;\n height: var(--vuuTable-rowHeight);\n}\n\n:is(.vuuPinLeft, .vuuPinRight, .vuuPinFloating) {\n position: sticky;\n}\n\n.vuuAlignRight {\n text-align: right;\n}\n\nth:is(.vuuPinLeft, .vuuPinRight, .vuuPinFloating) {\n top:0;\n z-index: 2;\n}\n\ntable:is(.vuuPinLeft, .vuuPinRight, .vuuPinFloating) {\n z-index: 10;\n}\n\n/* .vuuDataTable-row {\n transform: translate3d(0px, 25px, 0px);\n} */\n\n.vuuDataTable-settings {\n height: var(--header-height);\n position: absolute;\n right: 0;\n top:0;\n}\n\n.vuuDataTable:has(.vuuTable-headerCell-resizing) * {\n cursor: col-resize;\n}\n\n"],
5
+ "mappings": "AAAA,WACE,oDACA,+CAFF,kBAIE,oCACA,gDACA,4CACA,0CAGF,kBACE,0BACA,yBAEA,sCACA,wDACA,kEAGF,oCACE,mBAGF,gDACE,UCxBF,aACE,8BACA,2DACA,+EACA,uFACA,qCACA,sCACA,qDACA,8BACA,gCACA,+BACA,4BACA,8BACA,8BACA,uBAEA,4BACA,sBAjBF,kBAmBE,iCACA,sCACA,0CACA,uDACA,gBAvBF,eAyBE,UAzBF,UA2BE,kBAGF,aACE,mBACA,gCACA,aACA,QACA,+BACA,oCACA,mBACA,kBACA,mBAGF,kBACE,qBACA,cACA,6BACA,sBACA,4BAGF,iCACE,mDAGF,uBACE,uDAGF,uCACE,wCACA,8DACA,qDACA,sBACA,+CACA,YACA,kCACA,oCACA,gBACA,kBACA,gCACA,yBACA,WAGF,+BACE,kDAGF,mBACE,kDACA,eAGF,4DACE,mDAGF,iCACE,WACA,kBACA,MACA,OACA,QACA,WACA,oDAGF,sDACE,UACA,QAGF,8GAGE,qBACA,WACA,yBAEF,oDAEE,UAGF,uCACE,WACA,gBACA,gBACA,cACA,mBACA,qBACA,eCzHF,UACE,gCACA,kBACA,MACA,OACA,QACA,SACA,iBACA,aAGF,UACE,kBCZF,cACI,0BAGJ,8CAEI,iGACA,oDAEA,sDACA,mBAGJ,kDAEI,yCAGJ,qFACI,mCAIJ,uBAEI,kBACA,mBAGJ,iBACI,iCACA,yBACA,4BACA,gBAGJ,uBACI,2BACA,qBACA,kBAGJ,6BACI,MACA,WACA,8DACA,OACA,0DACA,gGACA,wFACA,sBACA,8BACA,kBACA,yBACA,wDAGJ,0FAGI,6CACA,sBACA,oBAGJ,oEAGI,4CACA,SACA,QCtEJ,mBACI,qBACA,gEACA,uBACA,aACA,mBAGJ,0BACI,YACA,kBACA,0BAGJ,gCACI,qDACA,WACA,kBACA,MACA,YAEA,SACA,UAGJ,0BACI,0BACA,uCC3BJ,sBACI,6DAGF,4CACE,kFAGF,iBACE,iCAGF,+DACE,uCAGF,0BACE,2CCjBJ,kBACI,kBACA,UAGJ,wBACI,WACA,kBACA,sCACA,MACA,SACA,QACA,wFACA,yCCbJ,kBACE,uBACA,8BACA,aACA,sBACA,kBACA,WAGF,iBACE,eACA,iBACA,kBCZF,qBACE,2BACA,gBACE,mCAEA,mEACA,4CACA,eAPJ,oBASI,gBACA,MACA,mCAEA,UAGF,2BACE,uBAGF,2BACE,oBACA,aACA,YAvBJ,kBA2BE,oDACE,eAGF,2BACE,mBACA,kCACA,aACA,cAGF,8BACE,kDACA,4CACA,2BAGF,gDACE,2BACA,WACA,kBACA,UACA,6BACA,2BACA,MACA,UAGF,iDACE,gCACA,WACA,kBACA,UACA,6BACA,2BACA,MACA,SC/DJ,oBACE,uBACA,8BACA,mBACA,eACA,aACA,cACA,sBACA,uBACA,kBAGF,+CACE,eCbF,0BACE,2BACA,gBACE,mCACA,kEACA,mEACA,4CACA,eAPJ,oBASI,gBACA,MACA,mCAEA,UAIF,gCACE,aACA,YAGF,gCACE,mBACA,aACA,cAGF,8BACE,mBACA,yBACA,oBACA,cACA,+CACA,8BACA,kBACA,kBAGF,gCACE,wBACA,uBACA,eACA,SAGF,6CACE,2CAEF,8CACE,2CAGF,0CACE,gFACA,iBACA,UAGF,gDACE,iBACA,kBACA,wFC7DJ,cACE,mEACA,kBAEF,+BAEE,sEAEA,wDACA,sDACA,mDACA,qEACA,2DACA,sDACA,mEAEA,0DAEA,8BACA,kBACA,cACA,yBACA,4BAGF,kDACE,aAGF,iCACE,8EACA,gEACA,+DACA,cACA,kBACA,8DACA,gEAGF,oCACE,gBACA,4BACA,eACA,MACA,QACA,oCAEF,oCACE,uBACA,qCACA,eACA,SACA,OACA,+BAIF,4BACE,kBACA,6BACA,wDAGF,6BACE,yCACA,kEACA,yDACA,SACA,gBACA,gBACA,QACA,uDACA,mBAKF,oBACE,wCACA,+CACA,6EAEA,kBACA,MACA,OAEA,sBACA,yBACA,iBACA,2BACA,YACA,8CA5FF,SA8FE,mBACA,mCAGF,0BACE,qBACA,8BACA,gBAOF,qBACE,4BAIF,uBACE,6DACA,+DACA,kDApHF,cAwHA,uBACE,0CACA,eACA,iCAGF,8CACE,gBAGF,eACE,iBAGF,gDACE,MACA,UAGF,mDACE,WAOF,uBACE,4BACA,kBACA,QACA,MAGF,mDACE",
6
6
  "names": []
7
7
  }
package/package.json CHANGED
@@ -1,14 +1,14 @@
1
1
  {
2
2
  "name": "@vuu-ui/vuu-datatable",
3
- "version": "0.5.20",
3
+ "version": "0.6.1",
4
4
  "author": "heswell",
5
5
  "license": "Apache-2.0",
6
6
  "peerDependencies": {
7
7
  "@salt-ds/core": "1.0.0",
8
8
  "@salt-ds/icons": "1.0.0",
9
- "@heswell/salt-lab": "1.0.0-alpha.0",
10
- "@vuu-ui/vuu-filters": "0.5.20",
11
- "@vuu-ui/vuu-utils": "0.5.20",
9
+ "@heswell/salt-lab": "1.0.0-alpha.0-vuu.1",
10
+ "@vuu-ui/vuu-filters": "0.6.1",
11
+ "@vuu-ui/vuu-utils": "0.6.1",
12
12
  "classnames": "^2.2.6",
13
13
  "react": "^17.0.2",
14
14
  "react-dom": "^17.0.2"
@@ -1,4 +1,4 @@
1
1
  /// <reference types="react" />
2
2
  import { TableProps } from "./dataTableTypes";
3
3
  import "./DataTable.css";
4
- export declare const DataTable: ({ config, data: dataProp, dataSource, headerHeight, height, id: idProp, onConfigChange, onShowConfigEditor: onShowSettings, rowHeight, allowConfigEditing: showSettings, style: styleProp, tableLayout: tableLayoutProp, width, ...props }: TableProps) => JSX.Element;
4
+ export declare const DataTable: ({ className, config, data: dataProp, dataSource, headerHeight, height, id: idProp, onConfigChange, onShowConfigEditor: onShowSettings, rowHeight, allowConfigEditing: showSettings, style: styleProp, tableLayout: tableLayoutProp, width, ...props }: TableProps) => JSX.Element;
@@ -12,4 +12,8 @@ export declare const PageDown = "PageDown";
12
12
  export declare const Space = " ";
13
13
  export declare const Tab = "Tab";
14
14
  export declare const isCharacterKey: (evt: React.KeyboardEvent) => boolean;
15
- export declare const isNavigationKey: ({ key }: React.KeyboardEvent) => boolean;
15
+ export declare type ArrowKey = "ArrowUp" | "ArrowDown" | "ArrowLeft" | "ArrowRight";
16
+ export declare type PageKey = "Home" | "End" | "PageUp" | "PageDown";
17
+ export declare type NavigationKey = PageKey | ArrowKey;
18
+ export declare const isPagingKey: (key: string) => key is PageKey;
19
+ export declare const isNavigationKey: (key: string) => key is NavigationKey;
@@ -17,6 +17,7 @@ export interface DataSourceHookProps {
17
17
  }
18
18
  export declare function useDataSource({ dataSource, onConfigChange, onSizeChange, onSubscribed, range, }: DataSourceHookProps): {
19
19
  data: DataSourceRow[];
20
+ range: VuuRange;
20
21
  setRange: (from: any, to: any) => void;
21
22
  dataSource: DataSource | undefined;
22
23
  };
@@ -42,6 +42,7 @@ export declare const useDataTable: ({ config, data: dataProp, dataSource, header
42
42
  maxScrollContainerScrollHorizontal: number;
43
43
  maxScrollContainerScrollVertical: number;
44
44
  pinnedWidthLeft: number;
45
+ pinnedWidthRight: number;
45
46
  rowCount: number;
46
47
  scrollContentHeight: number;
47
48
  scrollbarSize: number;
@@ -1,4 +1,5 @@
1
1
  import { DataSourceRow } from "@vuu-ui/vuu-data";
2
+ import { VuuRange } from "@vuu-ui/vuu-protocol-types";
2
3
  import { KeyboardEvent, MouseEvent, RefObject } from "react";
3
4
  import { ScrollRequestHandler } from "./useTableScroll";
4
5
  export declare type CellPos = [number, number];
@@ -8,12 +9,13 @@ export interface NavigationHookProps {
8
9
  data: DataSourceRow[];
9
10
  disableHighlightOnFocus?: boolean;
10
11
  label?: string;
12
+ viewportRange: VuuRange;
11
13
  requestScroll?: ScrollRequestHandler;
12
14
  restoreLastFocus?: boolean;
13
15
  rowCount?: number;
14
16
  selected?: unknown;
15
17
  }
16
- export declare const useKeyboardNavigation: ({ columnCount, containerRef, disableHighlightOnFocus, data, requestScroll, rowCount, }: NavigationHookProps) => {
18
+ export declare const useKeyboardNavigation: ({ columnCount, containerRef, disableHighlightOnFocus, data, requestScroll, rowCount, viewportRange, }: NavigationHookProps) => {
17
19
  onClick: (evt: MouseEvent) => void;
18
20
  onFocus: () => void;
19
21
  onKeyDown: (e: KeyboardEvent) => void;
@@ -13,12 +13,14 @@ export declare type FullSize = {
13
13
  height: "100%";
14
14
  width: "100%";
15
15
  };
16
- export declare type MeasuredSize = {
16
+ export declare type ClientSize = {
17
17
  clientHeight: number;
18
18
  clientWidth: number;
19
+ };
20
+ export declare type MeasuredSize = ClientSize & {
19
21
  height: number | "100%";
20
22
  width: number | "100%";
21
23
  };
22
24
  export declare const isMeasured: (size: Size | MeasuredSize) => size is MeasuredSize;
23
25
  export declare const isFullSize: (size: Size | MeasuredSize | FullSize) => size is FullSize;
24
- export declare const useMeasuredSize: (containerRef: RefObject<HTMLDivElement>, height?: number, width?: number) => Size;
26
+ export declare const useMeasuredSize: (containerRef: RefObject<HTMLDivElement>, height?: number | "100%", width?: number | "100%") => Size;
@@ -17,6 +17,7 @@ export interface ViewportMeasurements {
17
17
  maxScrollContainerScrollHorizontal: number;
18
18
  maxScrollContainerScrollVertical: number;
19
19
  pinnedWidthLeft: number;
20
+ pinnedWidthRight: number;
20
21
  rowCount: number;
21
22
  scrollContentHeight: number;
22
23
  scrollbarSize: number;
@@ -27,6 +28,7 @@ export declare const useTableViewport: ({ columns, headerHeight, rowCount, rowHe
27
28
  maxScrollContainerScrollHorizontal: number;
28
29
  maxScrollContainerScrollVertical: number;
29
30
  pinnedWidthLeft: number;
31
+ pinnedWidthRight: number;
30
32
  rowCount: number;
31
33
  scrollContentHeight: number;
32
34
  scrollbarSize: number;