@vuu-ui/vuu-datatable 0.5.17 → 0.5.19
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 +1 -1
- package/package.json +3 -3
package/cjs/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
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?void 0: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?void 0: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 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
|
|
2
2
|
keys: ${Object.entries(this.keys).map((o,r)=>`${o}=>${r}`).join(", ")}
|
|
3
3
|
free : ${this.free.join(",")}
|
|
4
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]})})};
|
package/package.json
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vuu-ui/vuu-datatable",
|
|
3
|
-
"version": "0.5.
|
|
3
|
+
"version": "0.5.19",
|
|
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
9
|
"@heswell/salt-lab": "1.0.0-alpha.0",
|
|
10
|
-
"@vuu-ui/vuu-filters": "0.5.
|
|
11
|
-
"@vuu-ui/vuu-utils": "0.5.
|
|
10
|
+
"@vuu-ui/vuu-filters": "0.5.19",
|
|
11
|
+
"@vuu-ui/vuu-utils": "0.5.19",
|
|
12
12
|
"classnames": "^2.2.6",
|
|
13
13
|
"react": "^17.0.2",
|
|
14
14
|
"react-dom": "^17.0.2"
|