@vuu-ui/vuu-table 0.7.2 → 0.7.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/cjs/index.js CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";var On=Object.create;var Se=Object.defineProperty;var Gn=Object.getOwnPropertyDescriptor;var Bn=Object.getOwnPropertyNames;var Un=Object.getPrototypeOf,_n=Object.prototype.hasOwnProperty;var Jn=(e,t)=>{for(var n in t)Se(e,n,{get:t[n],enumerable:!0})},pt=(e,t,n,o)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of Bn(t))!_n.call(e,r)&&r!==n&&Se(e,r,{get:()=>t[r],enumerable:!(o=Gn(t,r))||o.enumerable});return e};var q=(e,t,n)=>(n=e!=null?On(Un(e)):{},pt(t||!e||!e.__esModule?Se(n,"default",{value:e,enumerable:!0}):n,e)),Xn=e=>pt(Se({},"__esModule",{value:!0}),e);var tr={};Jn(tr,{Table:()=>Qo,buildContextMenuDescriptors:()=>Ge,useMeasuredContainer:()=>st,useTableContextMenu:()=>Ue,useTableModel:()=>lt,useTableViewport:()=>ct});module.exports=Xn(tr);var ft=require("@vuu-ui/vuu-utils"),Ge=e=>(t,n)=>{let o=[];if(e===void 0)return o;if(t==="header")o.push(...Yn(n,e)),o.push(...jn(n,e)),o.push(...Qn(n,e)),o.push(...Zn(n));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 Yn(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 Qn(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,ft.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 Be=(e,t)=>({label:`Pin ${t}`,action:`column-pin-${t}`,options:e}),We=e=>Be(e,"left"),$e=e=>Be(e,"floating"),Oe=e=>Be(e,"right");function Zn(e){let{column:t}=e;if(t===void 0)return[];let{pin:n}=t,o=[{label:"Hide column",action:"column-hide",options:e},{label:"Remove column",action:"column-remove",options:e}];return n===void 0?o.push({label:"Pin column",children:[We(e),$e(e),Oe(e)]}):n==="left"?o.push({label:"Unpin column",action:"column-unpin",options:e},{label:"Pin column",children:[$e(e),Oe(e)]}):n==="right"?o.push({label:"Unpin column",action:"column-unpin",options:e},{label:"Pin column",children:[We(e),$e(e)]}):n==="floating"&&o.push({label:"Unpin column",action:"column-unpin",options:e},{label:"Pin column",children:[We(e),Oe(e)]}),o}function jn(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 gt=require("@vuu-ui/vuu-filters"),I=require("@vuu-ui/vuu-utils"),qn=(e,t)=>{if(e.filterStruct&&t){let[n,o]=(0,gt.removeColumnFromFilter)(t,e.filterStruct);return{filter:o,filterStruct:n}}else return e},{Average:eo,Count:to,High:no,Low:oo,Sum:ro}=I.AggregationType,Ue=({dataSource:e,onPersistentColumnOperation:t})=>(o,r)=>{let i=r;if(i.column&&e){let{column:s}=i;switch(o){case"sort-asc":return e.sort=(0,I.setSortColumn)(e.sort,s,"A"),!0;case"sort-dsc":return e.sort=(0,I.setSortColumn)(e.sort,s,"D"),!0;case"sort-add-asc":return e.sort=(0,I.addSortColumn)(e.sort,s,"A"),!0;case"sort-add-dsc":return e.sort=(0,I.addSortColumn)(e.sort,s,"D"),!0;case"group":return e.groupBy=(0,I.addGroupColumn)(e.groupBy,s),!0;case"group-add":return e.groupBy=(0,I.addGroupColumn)(e.groupBy,s),!0;case"column-hide":return t({type:"hideColumns",columns:[s]}),!0;case"column-remove":return e.columns=e.columns.filter(l=>l!==s.name),!0;case"filter-remove-column":return e.filter=qn(e.filter,s),!0;case"remove-filters":return e.filter={filter:""},!0;case"agg-avg":return e.aggregations=(0,I.setAggregations)(e.aggregations,s,eo),!0;case"agg-high":return e.aggregations=(0,I.setAggregations)(e.aggregations,s,no),!0;case"agg-low":return e.aggregations=(0,I.setAggregations)(e.aggregations,s,oo),!0;case"agg-count":return e.aggregations=(0,I.setAggregations)(e.aggregations,s,to),!0;case"agg-sum":return e.aggregations=(0,I.setAggregations)(e.aggregations,s,ro),!0;case"column-pin-floating":return t({type:"pinColumn",column:s,pin:"floating"}),!0;case"column-pin-left":return t({type:"pinColumn",column:s,pin:"left"}),!0;case"column-pin-right":return t({type:"pinColumn",column:s,pin:"right"}),!0;case"column-unpin":return t({type:"pinColumn",column:s,pin:void 0}),!0;default:}}return!1};var Cn=require("@vuu-ui/vuu-popups"),Fe=require("@salt-ds/core");var O=require("@vuu-ui/vuu-utils"),ge=require("react");var G=require("@vuu-ui/vuu-utils"),Mt=q(require("classnames")),Me=require("react");var Ae=require("@vuu-ui/vuu-utils"),bt=require("@heswell/salt-lab"),ht=q(require("classnames")),Y=require("react");var we=require("react/jsx-runtime"),{KEY:Ct}=Ae.metadataKeys,_e=(0,Y.memo)(({className:e,column:t,columnMap:n,onClick:o,row:r})=>{let i=(0,Y.useRef)(null),{align:s,CellRenderer:l,key:a,pin:u,editable:c,resizing:p,valueFormatter:d}=t,[g,h]=(0,Y.useState)(!1),f=d(r[a]),[R,y]=(0,Y.useState)(f),m=()=>{var E;(E=i.current)==null||E.focus()},b=E=>{E.key==="Enter"&&h(!0)},T=(0,Y.useCallback)(E=>{o==null||o(E,t)},[t,o]),w=()=>{h(!0)},v=(E="",C="",M=!0,S=!1)=>{var H;h(!1),S?y(E):C!==E&&y(C),M===!1&&((H=i.current)==null||H.focus())},D=(0,ht.default)(e,{vuuAlignRight:s==="right",vuuPinFloating:u==="floating",vuuPinLeft:u==="left",vuuPinRight:u==="right","vuuTableCell-resizing":p})||void 0,A=(0,Ae.getColumnStyle)(t);return c?(0,we.jsx)("div",{className:D,"data-editable":!0,role:"cell",style:A,onKeyDown:b,children:(0,we.jsx)(bt.EditableLabel,{editing:g,value:R,onChange:y,onMouseDownCapture:m,onEnterEditMode:w,onExitEditMode:v,onKeyDown:b,ref:i,tabIndex:0},"title")}):(0,we.jsx)("div",{className:D,role:"cell",style:A,onClick:T,children:l?(0,we.jsx)(l,{column:t,columnMap:n,row:r}):f})},so);_e.displayName="TableCell";function so(e,t){return e.column===t.column&&e.onClick===t.onClick&&e.row[Ct]===t.row[Ct]&&e.row[e.column.key]===t.row[t.column.key]}var Le=require("@vuu-ui/vuu-utils"),vt=require("react");var pe=require("react/jsx-runtime"),{DEPTH:io,IS_LEAF:yt}=Le.metadataKeys,lo=(e,t)=>{let{[io]:n,[yt]:o}=t;if(o||n>e.length)return[null,n===null?0:n-1];if(n===0)return["$root",0];{let{key:r,valueFormatter:i}=e[n-1];return[i(t[r]),n-1]}},wt=({column:e,onClick:t,row:n})=>{let{columns:o}=e,[r,i]=lo(o,n),s=(0,vt.useCallback)(c=>{t==null||t(c,e)},[e,t]),l=(0,Le.getColumnStyle)(e),a=n[yt],u=Array(i).fill(0).map((c,p)=>(0,pe.jsx)("span",{className:"vuuTableGroupCell-spacer"},p));return(0,pe.jsxs)("div",{className:"vuuTableGroupCell vuuPinLeft",onClick:a?void 0:s,role:"cell",style:l,children:[u,a?null:(0,pe.jsx)("span",{className:"vuuTableGroupCell-toggle","data-icon":"triangle-right"}),(0,pe.jsx)("span",{children:r})]})};var Re=require("react/jsx-runtime"),{IDX:co,IS_EXPANDED:ao,SELECTED:uo}=G.metadataKeys,ke="vuuTableRow",Rt=(0,Me.memo)(function({columnMap:t,columns:n,offset:o,onClick:r,onToggleGroup:i,virtualColSpan:s=0,row:l}){let{[co]:a,[ao]:u,[uo]:c}=l,p=(0,Mt.default)(ke,{[`${ke}-even`]:a%2===0,[`${ke}-expanded`]:u,[`${ke}-preSelected`]:c===2}),d=(0,Me.useCallback)(h=>{let f=h.shiftKey,R=h.ctrlKey||h.metaKey;r==null||r(l,f,R)},[r,l]),g=(0,Me.useCallback)((h,f)=>{((0,G.isGroupColumn)(f)||(0,G.isJsonGroup)(f,l))&&(h.stopPropagation(),i==null||i(l,f))},[i,l]);return(0,Re.jsxs)("div",{"aria-selected":c===1?!0:void 0,"aria-rowindex":a,className:p,onClick:d,role:"row",style:{transform:`translate3d(0px, ${o}px, 0px)`},children:[s>0?(0,Re.jsx)("div",{role:"cell",style:{width:s}}):null,n.filter(G.notHidden).map(h=>{let f=(0,G.isGroupColumn)(h),R=(0,G.isJsonColumn)(h);return(0,Re.jsx)(f?wt:_e,{column:h,columnMap:t,onClick:f||R?g:void 0,row:l},h.name)})]})});var Je=q(require("classnames")),Ht=require("react");var fe=require("react");var Dt=require("react/jsx-runtime"),Tt=()=>{},mo="vuuColumnResizer",Ke=({onDrag:e,onDragEnd:t=Tt,onDragStart:n=Tt})=>{let o=(0,fe.useRef)(0),r=(0,fe.useCallback)(l=>{l.stopPropagation&&l.stopPropagation(),l.preventDefault&&l.preventDefault();let a=Math.round(l.clientX),u=a-o.current;o.current=a,u!==0&&e(l,u)},[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,Dt.jsx)("div",{className:mo,"data-align":"end",onMouseDown:s})};var se=require("react"),ze=({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:u}=n.current.getBoundingClientRect();o.current=Math.round(u),r.current=!0,t==null||t("begin",i)}},[i,t,n]),l=(0,se.useCallback)((u,c)=>{if(n.current&&t){let{width:p}=n.current.getBoundingClientRect(),d=Math.round(p)+c;d!==o.current&&d>0&&(t("resize",i,d),o.current=d)}},[i,t,n]),a=(0,se.useCallback)(()=>{t&&(t("end",i,o.current),setTimeout(()=>{r.current=!1},100))},[i,t]);return{isResizing:r.current,onDrag:l,onDragStart:s,onDragEnd:a}};var B=require("react/jsx-runtime"),ee="vuuTable-groupHeaderCell",xt=({column:e,onClick:t,...n})=>(0,B.jsx)("span",{...n,className:`${ee}-close`,"data-icon":"close-circle",onClick:()=>t==null?void 0:t(e)}),po=e=>{let{children:t,column:n,className:o}=e;return(0,B.jsxs)("div",{className:(0,Je.default)(`${ee}-col`,o),role:"columnheader",children:[(0,B.jsx)("span",{className:`${ee}-label`,children:n.name}),t]})},Pt=({column:e,className:t,onRemoveColumn:n,onResize:o,...r})=>{let i=(0,Ht.useRef)(null),{isResizing:s,...l}=ze({column:e,onResize:o,rootRef:i}),a=(0,Je.default)(ee,t,{vuuPinLeft:e.pin==="left",[`${ee}-right`]:e.align==="right",[`${ee}-resizing`]:e.resizing,[`${ee}-pending`]:e.groupConfirmed===!1}),{columns:u}=e;return(0,B.jsx)("div",{className:a,ref:i,...r,children:(0,B.jsxs)("div",{className:`${ee}-inner`,children:[u.map(c=>(0,B.jsx)(po,{column:c,children:u.length>1?(0,B.jsx)(xt,{column:c,onClick:n}):null},c.key)),(0,B.jsx)(xt,{"data-align":"end",onClick:n}),e.resizeable!==!1?(0,B.jsx)(Ke,{...l}):null]})})};var Nt=q(require("classnames")),le=require("react");var Xe=q(require("classnames"));var ie=require("react/jsx-runtime"),Et="vuuSortIndicator",St=({sorted:e})=>{if(!e)return null;let t=typeof e=="number"?e<0?"dsc":"asc":e==="A"?"asc":"dsc";return typeof e=="number"?(0,ie.jsxs)("div",{className:(0,Xe.default)(Et,"multi-col",t),children:[(0,ie.jsx)("span",{"data-icon":`sorted-${t}`}),(0,ie.jsx)("span",{className:"vuuSortPosition",children:Math.abs(e)})]}):(0,ie.jsx)("div",{className:(0,Xe.default)(Et,"single-col"),children:(0,ie.jsx)("span",{"data-icon":`sorted-${t}`})})};var It=require("@vuu-ui/vuu-popups");var At=require("@vuu-ui/vuu-popups"),Lt=q(require("classnames")),kt=require("react");var zt=require("react/jsx-runtime");var Kt=({column:e,filter:t})=>{let n=(0,At.useContextMenu)(),o=(0,kt.useCallback)(r=>{r.stopPropagation(),n(r,"filter",{column:e,filter:t})},[e,t,n]);return e.filter?(0,zt.jsx)("div",{className:(0,Lt.default)("vuuFilterIndicator"),"data-icon":"filter",onClick:o}):null};var te=require("react/jsx-runtime"),Te="vuuTable-headerCell",Ft=({column:e,className:t,onClick:n,onDragStart:o,onResize:r,...i})=>{let s=(0,le.useRef)(null),{isResizing:l,...a}=ze({column:e,onResize:r,rootRef:s}),u=(0,It.useContextMenu)(),c=(0,le.useRef)(null),p=R=>{u(R,"header",{column:e})},d=(0,le.useCallback)(R=>!l&&(n==null?void 0:n(R)),[l,n]),g=(0,le.useCallback)(R=>{c.current=window.setTimeout(()=>{o==null||o(R),c.current=null},500)},[o]),h=(0,le.useCallback)(()=>{c.current!==null&&(window.clearTimeout(c.current),c.current=null)},[]),f=(0,Nt.default)(Te,t,{vuuPinFloating:e.pin==="floating",vuuPinLeft:e.pin==="left",vuuPinRight:e.pin==="right",vuuEndPin:e.endPin,[`${Te}-resizing`]:e.resizing,[`${Te}-right`]:e.align==="right"});return(0,te.jsx)("div",{className:f,...i,onClick:d,onContextMenu:p,onMouseDown:g,onMouseUp:h,ref:s,children:(0,te.jsxs)("div",{className:`${Te}-inner`,children:[(0,te.jsx)(Kt,{column:e}),(0,te.jsx)("div",{className:`${Te}-label`,children:e.label}),(0,te.jsx)(St,{sorted:e.sorted}),e.resizeable!==!1?(0,te.jsx)(Ke,{...a}):null]})})};var U=require("react/jsx-runtime"),Ye="vuuTable",{RENDER_IDX:fo}=O.metadataKeys,Vt=({columns:e,columnsWithinViewport:t,data:n,getRowOffset:o,headings:r,onColumnResize:i,onHeaderCellDragStart:s,onContextMenu:l,onRemoveColumnFromGroupBy:a,onRowClick:u,onSort:c,onToggleGroup:p,tableId:d,virtualColSpan:g=0,rowCount:h})=>{let f=(0,ge.useCallback)(b=>{s==null||s(b)},[s]),R=(0,ge.useMemo)(()=>e.filter(O.notHidden),[e]),y=(0,ge.useMemo)(()=>(0,O.buildColumnMap)(e),[e]),m=(0,ge.useCallback)(b=>{var E;let w=b.target.closest(".vuuTable-headerCell"),v=parseInt((E=w==null?void 0:w.dataset.idx)!=null?E:"-1"),D=(0,O.visibleColumnAtIndex)(e,v),A=b.shiftKey;D&&c(D,A)},[e,c]);return(0,U.jsxs)("div",{"aria-rowcount":h,className:`${Ye}-table`,role:"table",children:[(0,U.jsxs)("div",{className:`${Ye}-headers`,role:"rowGroup",children:[r.map((b,T)=>(0,U.jsx)("div",{className:"vuuTable-heading",children:b.map(({label:w,width:v},D)=>(0,U.jsx)("div",{className:"vuuTable-headingCell",style:{width:v},children:w},D))},T)),(0,U.jsx)("div",{role:"row",children:R.map((b,T)=>{let w=(0,O.getColumnStyle)(b);return(0,O.isGroupColumn)(b)?(0,U.jsx)(Pt,{column:b,"data-idx":T,onRemoveColumn:a,onResize:i,role:"columnHeader",style:w},T):(0,U.jsx)(Ft,{column:b,"data-idx":T,id:`${d}-${T}`,onClick:m,onDragStart:f,onResize:i,role:"columnHeader",style:w},T)})})]}),(0,U.jsx)("div",{className:`${Ye}-body`,onContextMenu:l,role:"rowGroup",children:n==null?void 0:n.map(b=>(0,U.jsx)(Rt,{columnMap:y,columns:t,offset:o(b),onClick:u,virtualColSpan:g,onToggleGroup:p,row:b},b[fo]))})]})};var fn=require("@vuu-ui/vuu-popups"),_=require("@vuu-ui/vuu-utils"),L=require("react");var Ne=require("@vuu-ui/vuu-data"),ne=require("@vuu-ui/vuu-utils"),k=require("react"),{SELECTED:De}=ne.metadataKeys;function Wt({dataSource:e,onConfigChange:t,onFeatureEnabled:n,onFeatureInvocation:o,onSizeChange:r,onSubscribed:i,range:s={from:0,to:0},renderBufferSize:l=0,viewportRowCount:a}){let[,u]=(0,k.useState)(null),c=(0,k.useRef)(!0),p=(0,k.useRef)(!1),d=(0,k.useRef)({from:0,to:0}),g=(0,k.useRef)(null),h=(0,k.useRef)([]),f=(0,k.useMemo)(()=>new Qe((0,ne.getFullRange)(s)),[]),R=(0,k.useCallback)(v=>{for(let D of v)f.add(D);h.current=f.data,p.current=!0},[f]),y=(0,k.useCallback)(v=>{v.type==="subscribed"?i==null||i(v):v.type==="viewport-update"?(typeof v.size=="number"&&(r==null||r(v.size),f.setRowCount(v.size)),v.rows?R(v.rows):typeof v.size=="number"&&(h.current=f.data,p.current=!0)):(0,Ne.isVuuFeatureAction)(v)?n==null||n(v):(0,Ne.isVuuFeatureInvocation)(v)?o==null||o(v):console.log(`useDataSource unexpected message ${v.type}`)},[f,n,o,r,i,R]);(0,k.useEffect)(()=>()=>{g.current&&(cancelAnimationFrame(g.current),g.current=null),c.current=!1},[]);let m=(0,k.useCallback)(()=>{c.current&&(p.current&&(u({}),p.current=!1),g.current=requestAnimationFrame(m))},[u]);(0,k.useEffect)(()=>{g.current=requestAnimationFrame(m)},[m]);let b=(0,k.useCallback)(v=>{let{from:D}=e.range,A={from:D,to:D+v},E=(0,ne.getFullRange)(A,l);f.setRange(E),e.range=d.current=E,e.emit("range",A)},[e,f,l]),T=(0,k.useCallback)(v=>{let D=(0,ne.getFullRange)(v,l);f.setRange(D),e.range=d.current=D,e.emit("range",v)},[e,f,l]),w=(0,k.useCallback)(()=>f.getSelectedRows(),[f]);return(0,k.useEffect)(()=>{e==null||e.subscribe({range:d.current},y)},[e,y,t]),(0,k.useEffect)(()=>{b(a)},[b,a]),{data:h.current,getSelectedRows:w,range:d.current,setRange:T,dataSource:e}}var Qe=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 ne.WindowRange(t,n),this.data=new Array(n-t),this.rowCount=0}add(t){var o;let[n]=t;if(this.isWithinRange(n)){let r=n-this.range.from;this.data[r]=t;let i=t[De],s=(o=this.data[r-1])==null?void 0:o[De];s===0&&i?this.data[r-1][De]=2:s===2&&!i&&(this.data[r-1][De]=0)}}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({from:t,to:n}){if(t!==this.range.from||n!==this.range.to){let[o,r]=this.range.overlap(t,n),i=new Array(Math.max(0,n-t));for(let s=o;s<r;s++){let l=this.getAtIndex(s);if(l){let a=s-t;i[a]=l}}this.data=i,this.range.from=t,this.range.to=n}}getSelectedRows(){return this.data.filter(t=>t[De]===1)}};var $t=require("@heswell/salt-lab"),Ce=require("react"),Ot=({onDrop:e})=>{let t=(0,Ce.useRef)(),n=(0,Ce.useRef)(null),o=(0,Ce.useCallback)(()=>{console.log("handleDropSettle"),t.current=void 0,n.current=null},[]),{draggable:r,draggedItemIndex:i,onMouseDown:s}=(0,$t.useDragDrop)({allowDragDrop:!0,draggableClassName:"vuuTable-headerCell",orientation:"horizontal",containerRef:n,itemQuery:".vuuTable-headerCell",onDrop:e,onDropSettle:o}),l=(0,Ce.useCallback)(a=>{let{clientX:u,clientY:c}=a;console.log("useDraggableColumn handleHeaderCellDragStart means mouseDown fired on a column in RowBasedTable");let d=a.target.closest(".vuuTable-headerCell");n.current=d==null?void 0:d.closest("[role='row']");let{dataset:{idx:g="-1"}}=d;t.current={clientX:u,clientY:c,idx:g},s==null||s(a)},[s]);return{draggable:r,draggedItemIndex:i,onHeaderCellDragStart:l}};var Jt=require("@vuu-ui/vuu-utils"),z=require("react");function go(e,...t){let n=new Set(e);for(let o of t)for(let r of o)n.add(r);return n}var Ze="ArrowUp",je="ArrowDown",qe="ArrowLeft",et="ArrowRight";var tt="Home",nt="End",ot="PageUp",rt="PageDown";var Co=new Set(["Enter","Delete"," "]),bo=new Set(["Tab"]),ho=new Set(["ArrowRight","ArrowLeft"]),Gt=new Set([tt,nt,ot,rt,je,qe,et,Ze]),vo=new Set(["F1","F2","F3","F4","F5","F6","F7","F8","F9","F10","F11","F12"]),Ts=go(Co,Gt,ho,vo,bo);var yo=["Home","End","PageUp","PageDown"],Bt=e=>yo.includes(e),Ut=e=>Gt.has(e);var _t=e=>`.vuuTable-headers .vuuTable-headerCell:nth-child(${e+1})`,wo=(e,t)=>`.vuuTable-body > [aria-rowindex='${e}'] > [role='cell']:nth-child(${t+1})`,Mo=[-1,-1];function Ro(e,[t,n],o,r){return e===Ze?t>-1?[t-1,n]:[t,n]:e===je?t===-1?[0,n]:t===r-1?[t,n]:[t+1,n]:e===et?n<o-1?[t,n+1]:[t,n]:e===qe?n>0?[t,n-1]:[t,n]:[t,n]}var Xt=({columnCount:e=0,containerRef:t,disableHighlightOnFocus:n,data:o,requestScroll:r,rowCount:i=0,viewportRange:s})=>{var E;let{from:l,to:a}=s,u=(0,z.useRef)([-1,-1]),c=(0,z.useRef)(),p=(0,z.useRef)([-1,0]),d=(0,z.useCallback)(([C,M])=>{var H;let S=C===-1?_t(M):wo(C,M);return(H=t.current)==null?void 0:H.querySelector(S)},[t]),g=C=>C==null?void 0:C.closest("[role='columnHeader'],[role='cell']"),h=C=>{var M,S;if(C.role==="columnHeader")return[-1,parseInt((M=C.dataset.idx)!=null?M:"-1",10)];{let H=C.closest("[role='row']");if(H){let $=parseInt((S=H.ariaRowIndex)!=null?S:"-1",10),me=Array.from(H.childNodes).indexOf(C);return[$,me]}}return Mo},f=(0,z.useCallback)(C=>{var M;if(t.current){let S=d(C);S?(S!==c.current&&((M=c.current)==null||M.setAttribute("tabindex",""),c.current=S,S.setAttribute("tabindex","0")),S.focus()):(0,Jt.withinRange)(C[0],s)||(c.current=void 0,r==null||r({type:"scroll-page",direction:"up"}))}},[t,d,r,s]),R=(0,z.useCallback)((C,M,S=!1)=>{let H=[C,M];p.current=H,f(H),S&&(u.current=H)},[f]),y=(0,z.useCallback)(()=>{var C;(C=c.current)==null||C.setAttribute("tabindex",""),c.current=void 0},[]),m=(0,z.useCallback)(async(C,M)=>{switch(C){case rt:r==null||r({type:"scroll-page",direction:"down"});break;case ot:r==null||r({type:"scroll-page",direction:"up"});break;case tt:r==null||r({type:"scroll-end",direction:"home"});break;case nt:r==null||r({type:"scroll-end",direction:"end"});break}return M},[r]),b=(0,z.useCallback)(()=>{var C;if(n!==!0&&(C=t.current)!=null&&C.contains(document.activeElement)){let M=g(document.activeElement);M&&(u.current=h(M))}},[n,t]),T=(0,z.useCallback)(async C=>{let[M,S]=Bt(C)?await m(C,p.current):Ro(C,p.current,e,i),[H,$]=p.current;(M!==H||S!==$)&&R(M,S,!0)},[e,m,i,R]),w=(0,z.useCallback)(C=>{o.length>0&&Ut(C.key)&&(C.preventDefault(),C.stopPropagation(),T(C.key))},[o,T]),v=(0,z.useCallback)(C=>{let M=C.target,S=g(M);if(S){let[H,$]=h(S);R(H,$)}},[R]),D=(0,z.useMemo)(()=>({onClick:v,onFocus:b,onKeyDown:w}),[v,b,w]);(0,z.useLayoutEffect)(()=>{let{current:C}=p,M=C[0]>=l&&C[0]<=a;c.current&&!M?y():!c.current&&M&&f(C)},[f,l,a,y]);let A=((E=t.current)==null?void 0:E.firstChild)!=null;return(0,z.useEffect)(()=>{var C;if(A&&c.current===void 0){let M=(C=t.current)==null?void 0:C.querySelector(_t(0));M&&(M.setAttribute("tabindex","0"),c.current=M)}},[t,A]),D};var Q=require("@vuu-ui/vuu-utils"),oe=require("react");var ae=require("react");var ce=new Map,Qt=(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}},Yt=new ResizeObserver(e=>{for(let t of e){let{target:n,borderBoxSize:o,contentBoxSize:r}=t,i=ce.get(n);if(i){let[{blockSize:s,inlineSize:l}]=o,[{blockSize:a,inlineSize:u}]=r,{onResize:c,measurements:p}=i,d=!1;for(let[g,h]of Object.entries(p)){let f=Qt(n,{height:s,width:l,contentHeight:a,contentWidth:u},g);f!==h&&(d=!0,p[g]=f)}d&&c&&c(p)}}});function Zt(e,t,n,o=!1){let r=(0,ae.useRef)(t),i=(0,ae.useCallback)(s=>{let{width:l,height:a}=s.getBoundingClientRect(),{clientWidth:u,clientHeight:c}=s;return r.current.reduce((p,d)=>(p[d]=Qt(s,{width:l,height:a,contentHeight:c,contentWidth:u},d),p),{})},[]);(0,ae.useEffect)(()=>{let s=e.current;async function l(){ce.set(s,{measurements:{}}),await document.fonts.ready;let a=ce.get(s);if(a){let u=i(s);a.measurements=u,Yt.observe(s),o&&n(u)}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(ce.has(s))throw Error("useResizeObserver attemping to observe same element twice");l()}return()=>{s&&ce.has(s)&&(Yt.unobserve(s),ce.delete(s))}},[i,e]),(0,ae.useEffect)(()=>{let s=e.current,l=ce.get(s);if(l){if(r.current!==t){r.current=t;let a=i(s);l.measurements=a}l.onResize=n}},[t,i,e,n])}var To=["clientHeight","clientWidth"],jt=e=>Number.isFinite(e),Do={height:"100%",width:"100%"},xo=(e,t)=>(0,Q.isValidNumber)(e)&&(0,Q.isValidNumber)(t)?{height:`${e}px`,width:`${t}px`}:Do,Ho=(e,t)=>{if((0,Q.isValidNumber)(e)&&(0,Q.isValidNumber)(t))return{height:e,width:t}},st=({defaultHeight:e=0,defaultWidth:t=0,height:n,width:o})=>{let r=(0,oe.useRef)(null),[i,s]=(0,oe.useState)({css:xo(n,o),inner:Ho(n,o),outer:{height:n!=null?n:"100%",width:o!=null?o:"100%"}});(0,oe.useMemo)(()=>{s(a=>{let{inner:u,outer:c}=a;if((0,Q.isValidNumber)(n)&&(0,Q.isValidNumber)(o)&&u&&c){let{height:p,width:d}=u,{height:g,width:h}=c;if(g!==n||h!==o){let f=(0,Q.isValidNumber)(g)?g-p:0,R=(0,Q.isValidNumber)(h)?h-d:0;return{...a,outer:{height:n,width:o},inner:{height:n-f,width:o-R}}}}return a})},[n,o]);let l=(0,oe.useCallback)(({clientWidth:a,clientHeight:u})=>{s(c=>{let{css:p,inner:d,outer:g}=c;return jt(u)&&jt(a)&&(a!==(d==null?void 0:d.width)||u!==(d==null?void 0:d.height))?{css:p,outer:g,inner:{width:Math.floor(a)||t,height:Math.floor(u)||e}}:c})},[e,t]);return Zt(r,To,l,!0),{containerRef:r,cssSize:i.css,outerSize:i.outer,innerSize:i.inner}};var be=require("@vuu-ui/vuu-utils"),xe=require("react"),{IDX:Po,SELECTED:Eo}=be.metadataKeys,So=[],qt=({selectionModel:e,onSelectionChange:t})=>{let n=(0,xe.useRef)(-1),o=(0,xe.useRef)(So);return(0,xe.useCallback)((i,s,l)=>{let{[Po]:a,[Eo]:u}=i,{current:c}=n,{current:p}=o,g=(u?be.deselectItem:be.selectItem)(e,p,a,s,l,c);o.current=g,n.current=a,t&&t(g)},[t,e])};var en=require("@heswell/salt-lab"),x=require("@vuu-ui/vuu-utils"),tn=require("react"),{info:it}=(0,x.logger)("useTableModel"),Ao=100,nn=x.metadataKeys.count,Lo=({serverDataType:e})=>e===void 0,ko=e=>{var t;if((0,x.isTypeDescriptor)(e.type))return(0,x.getCellRenderer)((t=e.type)==null?void 0:t.renderer)},Ko=(e,t,n)=>{var r;let o=t.indexOf(e.name);return o!==-1&&n[o]?n[o]:(r=e.serverDataType)!=null?r:"string"},zo=["int","long","double"],on=e=>e===void 0?void 0:zo.includes(e)?"right":"left",No=(e,t)=>{switch(it==null||it(`GridModelReducer ${t.type}`),t.type){case"init":return rn(t);case"moveColumn":return Fo(e,t);case"resizeColumn":return $o(e,t);case"setTypes":return Oo(e,t);case"hideColumns":return Vo(e,t);case"showColumns":return Wo(e,t);case"pinColumn":return Go(e,t);case"updateColumnProp":return He(e,t);case"tableConfig":return ln(e,t);default:return console.log(`unhandled action ${t.type}`),e}},lt=(e,t)=>{let[n,o]=(0,tn.useReducer)(No,{tableConfig:e,dataSourceConfig:t},rn);return{columns:n.columns,dispatchColumnAction:o,headings:n.headings}};function rn({dataSourceConfig:e,tableConfig:t}){let n=t.columns.map(sn(t)),o=n.some(x.isPinned)?(0,x.sortPinnedColumns)(n):n,r={columns:o,headings:(0,x.getTableHeadings)(o)};if(e){let{columns:i,...s}=e;return ln(r,{type:"tableConfig",...s})}else return r}var Io=(e,t)=>t==="uppercase"?e.toUpperCase():t==="capitalize"?e[0].toUpperCase()+e.slice(1).toLowerCase():e,sn=e=>(t,n)=>{let{columnDefaultWidth:o=Ao,columnFormatHeader:r}=e,{align:i=on(t.serverDataType),key:s,name:l,label:a=l,width:u=o,...c}=t,p={...c,align:i,CellRenderer:ko(t),label:Io(a,r),key:s!=null?s:n+nn,name:l,originalIdx:n,valueFormatter:(0,x.getValueFormatter)(t),width:u};return(0,x.isGroupColumn)(p)&&(p.columns=p.columns.map(d=>sn(e)(d,d.key))),p};function Fo(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,en.moveItem)(r,i,o)}}return e}function Vo(e,{columns:t}){return t.some(n=>n.hidden!==!0)?t.reduce((n,o)=>o.hidden!==!0?He(n,{type:"updateColumnProp",column:o,hidden:!0}):n,e):e}function Wo(e,{columns:t}){return t.some(n=>n.hidden)?t.reduce((n,o)=>o.hidden?He(n,{type:"updateColumnProp",column:o,hidden:!1}):n,e):e}function $o(e,{column:t,phase:n,width:o}){let r="updateColumnProp",i=n!=="end";switch(n){case"begin":case"end":return He(e,{type:r,column:t,resizing:i});case"resize":return He(e,{type:r,column:t,width:o});default:throw Error(`useTableModel.resizeColumn, invalid resizePhase ${n}`)}}function Oo(e,{columnNames:t,serverDataTypes:n}){let{columns:o}=e;if(o.some(Lo)){let r=o.map(i=>{var l;let s=Ko(i,t,n);return{...i,align:(l=i.align)!=null?l:on(s),serverDataType:s}});return{...e,columns:r}}else return e}function Go(e,t){let{columns:n}=e,{column:o,pin:r}=t,i=n.find(s=>s.name===o.name);return i?(n=he(n,{...i,pin:r}),n=(0,x.sortPinnedColumns)(n),{...e,columns:n}):e}function He(e,t){let{columns:n}=e,{align:o,column:r,hidden:i,label:s,resizing:l,width:a}=t,u=n.find(c=>c.name===r.name);return u&&((o==="left"||o==="right")&&(n=he(n,{...u,align:o})),typeof s=="string"&&(n=he(n,{...u,label:s})),typeof l=="boolean"&&(n=he(n,{...u,resizing:l})),typeof i=="boolean"&&(n=he(n,{...u,hidden:i})),typeof a=="number"&&(n=he(n,{...u,width:a}))),{...e,columns:n}}function ln(e,{columns:t,confirmed:n,filter:o,groupBy:r,sort:i}){let s=t&&t.length>0,l=r!==void 0,a=typeof(o==null?void 0:o.filter)=="string",u=i&&i.sortDefs.length>0,c=e;return s&&(c={...e,columns:t.map((p,d)=>{let g=(0,x.getColumnName)(p),h=d+nn,f=(0,x.findColumn)(c.columns,g);if(f)return f.key===h?f:{...f,key:h};throw Error(`useTableModel column ${p} not found`)})}),l&&(c={...e,columns:(0,x.applyGroupByToColumns)(c.columns,r,n)}),u&&(c={...e,columns:(0,x.applySortToColumns)(c.columns,i)}),a?c={...e,columns:(0,x.applyFilterToColumns)(c.columns,o)}:c.columns.some(x.isFilteredColumn)&&(c={...e,columns:(0,x.stripFilterFromColumns)(c.columns)}),c}function he(e,t){return e.map(n=>n.name===t.name?t:n)}var F=require("react"),cn=e=>{let{scrollLeft:t,scrollTop:n}=e,{clientHeight:o,clientWidth:r,scrollHeight:i,scrollWidth:s}=e,l=t/(s-r),a=n/(i-o);return[l,a]},Bo=e=>{let{clientHeight:t,clientWidth:n,scrollHeight:o,scrollWidth:r}=e;return[r-n,o-t]},an=({onAttach:e,onDetach:t})=>{let n=(0,F.useRef)(null);return(0,F.useCallback)(r=>{if(r)n.current=r,e==null||e(r);else if(n.current){let{current:i}=n;n.current=r,t==null||t(i)}},[e,t])},un=({onHorizontalScroll:e,onVerticalScroll:t,viewport:n})=>{let o=(0,F.useRef)(!1),r=(0,F.useRef)({scrollTop:0,scrollLeft:0}),i=(0,F.useRef)(null),s=(0,F.useRef)(null),{maxScrollContainerScrollHorizontal:l,maxScrollContainerScrollVertical:a}=n,u=(0,F.useCallback)(()=>{let{current:m}=s,{current:b}=i,{current:T}=o;if(T)o.current=!1;else if(m&&b){let[w,v]=cn(b),[D,A]=Bo(m),E=Math.round(w*D),C=Math.round(v*A);m.scrollTo({left:E,top:C,behavior:"auto"})}},[]),c=(0,F.useCallback)(()=>{let{current:m}=s,{current:b}=i,{current:T}=r;if(m&&b){let{scrollLeft:w,scrollTop:v}=m,[D,A]=cn(m);o.current=!0,b.scrollLeft=Math.round(D*l),b.scrollTop=Math.round(A*a),T.scrollTop!==v&&(T.scrollTop=v,t==null||t(v,A)),T.scrollLeft!==w&&(T.scrollLeft=w,e==null||e(w))}},[l,a,e,t]),p=(0,F.useCallback)(m=>{i.current=m,m.addEventListener("scroll",u,{passive:!0})},[u]),d=(0,F.useCallback)(m=>{i.current=null,m.removeEventListener("scroll",u)},[u]),g=(0,F.useCallback)(m=>{s.current=m,m.addEventListener("scroll",c,{passive:!0})},[c]),h=(0,F.useCallback)(m=>{s.current=null,m.removeEventListener("scroll",c)},[c]),f=an({onAttach:g,onDetach:h}),R=an({onAttach:p,onDetach:d}),y=(0,F.useCallback)(m=>{let{current:b}=s;if(b){if(o.current=!1,m.type==="scroll-page"){let{clientHeight:T,scrollLeft:w,scrollTop:v}=b,{direction:D}=m,A=D==="down"?T:-T,E=Math.min(Math.max(0,v+A),a);b.scrollTo({top:E,left:w,behavior:"auto"})}else if(m.type==="scroll-end"){let{direction:T}=m,w=T==="end"?a:0;b.scrollTo({top:w,left:b.scrollLeft,behavior:"auto"})}}},[a]);return{scrollbarContainerRef:R,contentContainerRef:f,requestScroll:y}};var Z=require("react"),Ie=require("@vuu-ui/vuu-utils"),Uo=15e5,_o={contentHeight:0,contentWidth:0,getRowAtPosition:()=>-1,getRowOffset:()=>-1,horizontalScrollbarHeight:0,maxScrollContainerScrollHorizontal:0,maxScrollContainerScrollVertical:0,pinnedWidthLeft:0,pinnedWidthRight:0,rowCount:0,setPctScrollTop:()=>{},totalHeaderHeight:0,verticalScrollbarWidth:0,viewportBodyHeight:0},Jo=e=>{let t=0,n=0,o=0;for(let r of e){let{hidden:i,pin:s,width:l}=r,a=i?0:l;s==="left"?t+=a:s==="right"?n+=a:o+=a}return{pinnedWidthLeft:t,pinnedWidthRight:n,unpinnedWidth:o}},ct=({columns:e,headerHeight:t,headings:n,rowCount:o,rowHeight:r,size:i})=>{let s=(0,Z.useRef)(0),a=Math.min(o,Uo)*r,c=o*r-a,{pinnedWidthLeft:p,pinnedWidthRight:d,unpinnedWidth:g}=(0,Z.useMemo)(()=>Jo(e),[e]),[h,f]=(0,Z.useMemo)(()=>(0,Ie.actualRowPositioning)(r),[r]),[R,y]=(0,Z.useMemo)(()=>c?(0,Ie.virtualRowPositioning)(r,c,s):[h,f],[f,h,c,r]),m=(0,Z.useCallback)(b=>{s.current=b},[]);return(0,Z.useMemo)(()=>{var b;if(i){let T=n.length,w=15,v=p+g+d,D=v>i.width?w:0,A=t*(1+T),E=a-(((b=i==null?void 0:i.height)!=null?b:0)-D)+A,C=v-i.width+p,M=(i.height-t)/r,S=Number.isInteger(M)?M+1:Math.ceil(M),H=i.height-A,$=a>H?w:0;return{contentHeight:a,getRowAtPosition:y,getRowOffset:R,horizontalScrollbarHeight:D,maxScrollContainerScrollHorizontal:C,maxScrollContainerScrollVertical:E,pinnedWidthLeft:p,pinnedWidthRight:d,rowCount:S,contentWidth:v,setPctScrollTop:m,totalHeaderHeight:A,verticalScrollbarWidth:$,viewportBodyHeight:H}}else return _o},[i,n.length,p,g,d,a,t,r,y,R,m])};var Pe=require("@vuu-ui/vuu-utils"),W=require("react"),mn=({columns:e,getRowAtPosition:t,setRange:n,viewportMeasurements:o})=>{let r=(0,W.useRef)(-1),{rowCount:i,contentWidth:s,maxScrollContainerScrollHorizontal:l}=o,a=s-l,u=(0,W.useRef)(0),[c,p]=(0,W.useMemo)(()=>(0,Pe.getColumnsInViewport)(e,u.current,u.current+a),[a,e]),d=(0,W.useRef)(p);(0,W.useEffect)(()=>{h(c)},[c]);let[g,h]=(0,W.useState)(c),f=(0,W.useCallback)(y=>{u.current=y;let[m,b]=(0,Pe.getColumnsInViewport)(e,y,y+a);(0,Pe.itemsChanged)(g,m)&&(d.current=b,h(m))},[a,e,g]),R=(0,W.useCallback)(y=>{let m=t(y);m!==r.current&&(r.current=m,n({from:m,to:m+i}))},[t,n,i]);return{columnsWithinViewport:g,onHorizontalScroll:f,onVerticalScroll:R,virtualColSpan:d.current}};var Xo=[],{KEY:Yo,IS_EXPANDED:dn,IS_LEAF:pn}=_.metadataKeys,gn=({config:e,dataSource:t,headerHeight:n,onConfigChange:o,onFeatureEnabled:r,onFeatureInvocation:i,onSelectionChange:s,renderBufferSize:l=0,rowHeight:a,selectionModel:u,...c})=>{var mt,dt;let[p,d]=(0,L.useState)(t.size),g=(0,L.useRef)(!1),h=(0,L.useRef)();if(h.current=t,t===void 0)throw Error("no data source provided to Vuu Table");let f=st(c),R=(0,L.useCallback)(P=>{d(P)},[]),{columns:y,dispatchColumnAction:m,headings:b}=lt(e,t.config),{getRowAtPosition:T,getRowOffset:w,setPctScrollTop:v,...D}=ct({columns:y,headerHeight:n,headings:b,rowCount:p,rowHeight:a,size:f.innerSize}),A=(0,L.useCallback)(P=>{if(P.tableMeta){let{columns:K,dataTypes:V}=P.tableMeta;g.current=!0,m({type:"setTypes",columnNames:K,serverDataTypes:V})}},[m]),E=(0,L.useCallback)(P=>{t.select(P),s==null||s(P)},[t,s]),C=qt({onSelectionChange:E,selectionModel:u}),{data:M,getSelectedRows:S,range:H,setRange:$}=Wt({dataSource:t,onFeatureEnabled:r,onFeatureInvocation:i,onSubscribed:A,onSizeChange:R,renderBufferSize:l,viewportRowCount:D.rowCount}),me=(0,L.useRef)();me.current=M;let Ve=(0,L.useCallback)(P=>{g.current=!0,m(P)},[m]),yn=Ue({dataSource:t,onPersistentColumnOperation:Ve}),wn=(0,L.useCallback)((P,K=!1,V)=>{t&&(t.sort=(0,_.applySort)(t.sort,P,K,V))},[t]),Mn=(0,L.useCallback)((P,K,V)=>{let N=y.find(J=>J.name===K);if(N)P==="end"&&(g.current=!0),m({type:"resizeColumn",phase:P,column:N,width:V});else throw Error(`useDataTable.handleColumnResize, column ${K} not found`)},[y,m]),Rn=(0,L.useCallback)((P,K)=>{let V=(0,_.isJsonGroup)(K,P),N=P[Yo];if(P[dn]){if(t.closeTreeNode(N,!0),V){let J=y.indexOf(K);t.getRowsAtDepth(J+1).some(X=>X[dn]||X[pn])||m({type:"hideColumns",columns:y.slice(J+2)})}}else if(t.openTreeNode(N),V){let J=t.getChildRows(N),re=y.indexOf(K)+1,X=[y[re]];J.some(de=>de[pn])&&X.push(y[re+1]),X.some(de=>de.hidden)&&m({type:"showColumns",columns:X})}},[y,t,m]),{onVerticalScroll:at,onHorizontalScroll:Tn,columnsWithinViewport:Dn,virtualColSpan:xn}=mn({columns:y,getRowAtPosition:T,setRange:$,viewportMeasurements:D}),Hn=(0,L.useCallback)((P,K)=>{v(K),at(P)},[at,v]),{requestScroll:Pn,...En}=un({onHorizontalScroll:Tn,onVerticalScroll:Hn,viewport:D,viewportHeight:((dt=(mt=f.innerSize)==null?void 0:mt.height)!=null?dt:0)-n}),Sn=Xt({columnCount:y.length,containerRef:f.containerRef,data:M,requestScroll:Pn,rowCount:t==null?void 0:t.size,viewportRange:H}),An=(0,L.useCallback)(P=>{P?t&&t.groupBy.includes(P.name)&&(t.groupBy=t.groupBy.filter(K=>K!==P.name)):t.groupBy=[]},[t]),Ln=(0,L.useCallback)((P,K)=>{let V=t.columns[P],N=(0,_.moveItem)(t.columns,V,K);N!==t.columns&&(t.columns=N,m({type:"tableConfig",columns:N}))},[t,m]),kn=Ot({onDrop:Ln});(0,L.useEffect)(()=>{h.current&&(g.current=!0,m({type:"init",tableConfig:e,dataSourceConfig:h.current.config}))},[e,m]),(0,L.useEffect)(()=>{t.on("config",(P,K)=>{g.current=!0,m({type:"tableConfig",...P,confirmed:K})})},[t,m]),(0,L.useMemo)(()=>{g.current&&(o==null||o({...e,columns:y}),g.current=!1)},[y,e,o]);let ut=(0,fn.useContextMenu)(),Kn=(0,L.useCallback)(P=>{var X;let{current:K}=me,{current:V}=h,N=P.target,J=N==null?void 0:N.closest("div[role='cell']"),re=N==null?void 0:N.closest(".vuuTableRow");if(J&&re&&K&&V){let{columns:de,selectedRowsCount:zn}=V,Nn=(0,_.buildColumnMap)(de),In=parseInt((X=re.ariaRowIndex)!=null?X:"-1"),Fn=Array.from(re.childNodes).indexOf(J),Vn=K.find(([$n])=>$n===In),Wn=de[Fn];ut(P,"grid",{columnMap:Nn,columnName:Wn,row:Vn,selectedRows:zn===0?Xo:S(),viewport:t==null?void 0:t.viewport})}},[t==null?void 0:t.viewport,S,ut]);return{columns:y,columnsWithinViewport:Dn,containerMeasurements:f,containerProps:Sn,data:M,dispatchColumnAction:m,getRowOffset:w,handleContextMenuAction:yn,headings:b,onColumnResize:Mn,onContextMenu:Kn,onRemoveColumnFromGroupBy:An,onRowClick:C,onSort:wn,onToggleGroup:Rn,virtualColSpan:xn,scrollProps:En,rowCount:p,viewportMeasurements:D,...kn}};var bn=q(require("classnames"));var hn=require("@vuu-ui/vuu-utils"),j=require("react/jsx-runtime"),ue="vuuTable",Qo=({allowConfigEditing:e=!1,className:t,config:n,dataSource:o,headerHeight:r=25,height:i,id:s,onConfigChange:l,onFeatureEnabled:a,onFeatureInvocation:u,onSelectionChange:c,onShowConfigEditor:p,renderBufferSize:d=0,rowHeight:g=20,selectionModel:h="extended",style:f,width:R,zebraStripes:y=!1,...m})=>{let b=(0,Fe.useIdMemo)(s),{containerMeasurements:{containerRef:T,innerSize:w,outerSize:v},containerProps:D,dispatchColumnAction:A,draggable:E,draggedItemIndex:C,handleContextMenuAction:M,scrollProps:S,viewportMeasurements:H,...$}=gn({config:n,dataSource:o,renderBufferSize:d,headerHeight:r,height:i,onConfigChange:l,onFeatureEnabled:a,onFeatureInvocation:u,onSelectionChange:c,rowHeight:g,selectionModel:h,width:R}),me={...v,"--content-height":`${H.contentHeight}px`,"--horizontal-scrollbar-height":`${H.horizontalScrollbarHeight}px`,"--content-width":`${H.contentWidth}px`,"--pinned-width-left":`${H.pinnedWidthLeft}px`,"--pinned-width-right":`${H.pinnedWidthRight}px`,"--header-height":`${r}px`,"--row-height":`${g}px`,"--table-height":`${w==null?void 0:w.height}px`,"--table-width":`${w==null?void 0:w.width}px`,"--total-header-height":`${H.totalHeaderHeight}px`,"--vertical-scrollbar-width":`${H.verticalScrollbarWidth}px`,"--viewport-body-height":`${H.viewportBodyHeight}px`},Ve=(0,bn.default)(ue,t,{[`${ue}-zebra`]:y,[`${ue}-loading`]:(0,hn.isDataLoading)($.columns)});return(0,j.jsx)(Cn.ContextMenuProvider,{menuActionHandler:M,menuBuilder:Ge(o),children:(0,j.jsxs)("div",{...m,...D,className:Ve,id:b,ref:T,style:me,tabIndex:-1,children:[w?(0,j.jsx)("div",{className:`${ue}-scrollbarContainer`,ref:S.scrollbarContainerRef,children:(0,j.jsx)("div",{className:`${ue}-scrollbarContent`})}):null,w?(0,j.jsxs)("div",{className:`${ue}-contentContainer`,ref:S.contentContainerRef,children:[(0,j.jsx)(Vt,{...$,headerHeight:r,tableId:b}),E]}):null,e&&w?(0,j.jsx)(Fe.Button,{className:`${ue}-settings`,"data-icon":"settings",onClick:p,variant:"secondary"}):null]})})};var vn=q(require("classnames")),ye=require("@vuu-ui/vuu-utils");var ve=require("react/jsx-runtime"),Ee="vuuJsonCell",{IS_EXPANDED:Zo,KEY:jo}=ye.metadataKeys,qo=e=>{let t=e.lastIndexOf("|");return t===-1?"":e.slice(t+1)},er=({column:e,row:t})=>{let{key:n}=e,o=t[n],r=!1;(0,ye.isJsonAttribute)(o)&&(o=o.slice(0,-1),r=!0);let i=qo(t[jo]),s=(0,vn.default)({[`${Ee}-name`]:i===o,[`${Ee}-value`]:i!==o,[`${Ee}-group`]:r});if(r){let l=t[Zo]?"minus-box":"plus-box";return(0,ve.jsxs)("span",{className:s,children:[(0,ve.jsx)("span",{className:`${Ee}-value`,children:o}),(0,ve.jsx)("span",{className:`${Ee}-toggle`,"data-icon":l})]})}else return o?(0,ve.jsx)("span",{className:s,children:o}):null};(0,ye.registerComponent)("json",er,"cell-renderer",{});
1
+ "use strict";var Gn=Object.create;var Se=Object.defineProperty;var Bn=Object.getOwnPropertyDescriptor;var Un=Object.getOwnPropertyNames;var _n=Object.getPrototypeOf,Jn=Object.prototype.hasOwnProperty;var Xn=(e,t)=>{for(var n in t)Se(e,n,{get:t[n],enumerable:!0})},ft=(e,t,n,o)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of Un(t))!Jn.call(e,r)&&r!==n&&Se(e,r,{get:()=>t[r],enumerable:!(o=Bn(t,r))||o.enumerable});return e};var q=(e,t,n)=>(n=e!=null?Gn(_n(e)):{},ft(t||!e||!e.__esModule?Se(n,"default",{value:e,enumerable:!0}):n,e)),Yn=e=>ft(Se({},"__esModule",{value:!0}),e);var nr={};Xn(nr,{Table:()=>Zo,buildContextMenuDescriptors:()=>Ge,useMeasuredContainer:()=>st,useTableContextMenu:()=>Ue,useTableModel:()=>lt,useTableViewport:()=>ct});module.exports=Yn(nr);var gt=require("@vuu-ui/vuu-utils"),Ge=e=>(t,n)=>{let o=[];if(e===void 0)return o;if(t==="header")o.push(...Qn(n,e)),o.push(...qn(n,e)),o.push(...Zn(n,e)),o.push(...jn(n));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 Qn(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 Zn(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},{label:"Distinct",action:"agg-distinct",options:e}].concat((0,gt.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 Be=(e,t)=>({label:`Pin ${t}`,action:`column-pin-${t}`,options:e}),We=e=>Be(e,"left"),$e=e=>Be(e,"floating"),Oe=e=>Be(e,"right");function jn(e){let{column:t}=e;if(t===void 0)return[];let{pin:n}=t,o=[{label:"Hide column",action:"column-hide",options:e},{label:"Remove column",action:"column-remove",options:e}];return n===void 0?o.push({label:"Pin column",children:[We(e),$e(e),Oe(e)]}):n==="left"?o.push({label:"Unpin column",action:"column-unpin",options:e},{label:"Pin column",children:[$e(e),Oe(e)]}):n==="right"?o.push({label:"Unpin column",action:"column-unpin",options:e},{label:"Pin column",children:[We(e),$e(e)]}):n==="floating"&&o.push({label:"Unpin column",action:"column-unpin",options:e},{label:"Pin column",children:[We(e),Oe(e)]}),o}function qn(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 bt=require("@vuu-ui/vuu-filters"),N=require("@vuu-ui/vuu-utils"),eo=(e,t)=>{if(e.filterStruct&&t){let[n,o]=(0,bt.removeColumnFromFilter)(t,e.filterStruct);return{filter:o,filterStruct:n}}else return e},{Average:to,Count:no,Distinct:oo,High:ro,Low:so,Sum:io}=N.AggregationType,Ue=({dataSource:e,onPersistentColumnOperation: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"column-hide":return t({type:"hideColumns",columns:[s]}),!0;case"column-remove":return e.columns=e.columns.filter(l=>l!==s.name),!0;case"filter-remove-column":return e.filter=eo(e.filter,s),!0;case"remove-filters":return e.filter={filter:""},!0;case"agg-avg":return e.aggregations=(0,N.setAggregations)(e.aggregations,s,to),!0;case"agg-high":return e.aggregations=(0,N.setAggregations)(e.aggregations,s,ro),!0;case"agg-low":return e.aggregations=(0,N.setAggregations)(e.aggregations,s,so),!0;case"agg-count":return e.aggregations=(0,N.setAggregations)(e.aggregations,s,no),!0;case"agg-distinct":return e.aggregations=(0,N.setAggregations)(e.aggregations,s,oo),!0;case"agg-sum":return e.aggregations=(0,N.setAggregations)(e.aggregations,s,io),!0;case"column-pin-floating":return t({type:"pinColumn",column:s,pin:"floating"}),!0;case"column-pin-left":return t({type:"pinColumn",column:s,pin:"left"}),!0;case"column-pin-right":return t({type:"pinColumn",column:s,pin:"right"}),!0;case"column-unpin":return t({type:"pinColumn",column:s,pin:void 0}),!0;default:}}return!1};var Cn=require("@vuu-ui/vuu-popups"),Ie=require("@salt-ds/core");var $=require("@vuu-ui/vuu-utils"),ge=require("react");var G=require("@vuu-ui/vuu-utils"),Tt=q(require("classnames")),Me=require("react");var Ae=require("@vuu-ui/vuu-utils"),ht=require("@heswell/salt-lab"),vt=q(require("classnames")),Y=require("react");var we=require("react/jsx-runtime"),{KEY:Ct}=Ae.metadataKeys,_e=(0,Y.memo)(({className:e,column:t,columnMap:n,onClick:o,row:r})=>{let i=(0,Y.useRef)(null),{align:s,CellRenderer:l,key:a,pin:u,editable:c,resizing:p,valueFormatter:d}=t,[g,h]=(0,Y.useState)(!1),f=d(r[a]),[T,y]=(0,Y.useState)(f),m=()=>{var E;(E=i.current)==null||E.focus()},C=E=>{E.key==="Enter"&&h(!0)},R=(0,Y.useCallback)(E=>{o==null||o(E,t)},[t,o]),w=()=>{h(!0)},v=(E="",b="",M=!0,S=!1)=>{var H;h(!1),S?y(E):b!==E&&y(b),M===!1&&((H=i.current)==null||H.focus())},D=(0,vt.default)(e,{vuuAlignRight:s==="right",vuuPinFloating:u==="floating",vuuPinLeft:u==="left",vuuPinRight:u==="right","vuuTableCell-resizing":p})||void 0,A=(0,Ae.getColumnStyle)(t);return c?(0,we.jsx)("div",{className:D,"data-editable":!0,role:"cell",style:A,onKeyDown:C,children:(0,we.jsx)(ht.EditableLabel,{editing:g,value:T,onChange:y,onMouseDownCapture:m,onEnterEditMode:w,onExitEditMode:v,onKeyDown:C,ref:i,tabIndex:0},"title")}):(0,we.jsx)("div",{className:D,role:"cell",style:A,onClick:R,children:l?(0,we.jsx)(l,{column:t,columnMap:n,row:r}):f})},lo);_e.displayName="TableCell";function lo(e,t){return e.column===t.column&&e.onClick===t.onClick&&e.row[Ct]===t.row[Ct]&&e.row[e.column.key]===t.row[t.column.key]}var Le=require("@vuu-ui/vuu-utils"),yt=require("react");var pe=require("react/jsx-runtime"),{DEPTH:ao,IS_LEAF:wt}=Le.metadataKeys,co=(e,t)=>{let{[ao]:n,[wt]:o}=t;if(o||n>e.length)return[null,n===null?0:Math.max(0,n-1)];if(n===0)return["$root",0];{let{key:r,valueFormatter:i}=e[n-1];return[i(t[r]),n-1]}},Mt=({column:e,onClick:t,row:n})=>{let{columns:o}=e,[r,i]=co(o,n),s=(0,yt.useCallback)(c=>{t==null||t(c,e)},[e,t]),l=(0,Le.getColumnStyle)(e),a=n[wt],u=Array(i).fill(0).map((c,p)=>(0,pe.jsx)("span",{className:"vuuTableGroupCell-spacer"},p));return(0,pe.jsxs)("div",{className:"vuuTableGroupCell vuuPinLeft",onClick:a?void 0:s,role:"cell",style:l,children:[u,a?null:(0,pe.jsx)("span",{className:"vuuTableGroupCell-toggle","data-icon":"triangle-right"}),(0,pe.jsx)("span",{children:r})]})};var Te=require("react/jsx-runtime"),{IDX:uo,IS_EXPANDED:mo,SELECTED:po}=G.metadataKeys,ke="vuuTableRow",Rt=(0,Me.memo)(function({columnMap:t,columns:n,offset:o,onClick:r,onToggleGroup:i,virtualColSpan:s=0,row:l}){let{[uo]:a,[mo]:u,[po]:c}=l,p=(0,Tt.default)(ke,{[`${ke}-even`]:a%2===0,[`${ke}-expanded`]:u,[`${ke}-preSelected`]:c===2}),d=(0,Me.useCallback)(h=>{let f=h.shiftKey,T=h.ctrlKey||h.metaKey;r==null||r(l,f,T)},[r,l]),g=(0,Me.useCallback)((h,f)=>{((0,G.isGroupColumn)(f)||(0,G.isJsonGroup)(f,l))&&(h.stopPropagation(),i==null||i(l,f))},[i,l]);return(0,Te.jsxs)("div",{"aria-selected":c===1?!0:void 0,"aria-rowindex":a,className:p,onClick:d,role:"row",style:{transform:`translate3d(0px, ${o}px, 0px)`},children:[s>0?(0,Te.jsx)("div",{role:"cell",style:{width:s}}):null,n.filter(G.notHidden).map(h=>{let f=(0,G.isGroupColumn)(h),T=(0,G.isJsonColumn)(h);return(0,Te.jsx)(f?Mt:_e,{column:h,columnMap:t,onClick:f||T?g:void 0,row:l},h.name)})]})});var Je=q(require("classnames")),Pt=require("react");var fe=require("react");var xt=require("react/jsx-runtime"),Dt=()=>{},fo="vuuColumnResizer",Ke=({onDrag:e,onDragEnd:t=Dt,onDragStart:n=Dt})=>{let o=(0,fe.useRef)(0),r=(0,fe.useCallback)(l=>{l.stopPropagation&&l.stopPropagation(),l.preventDefault&&l.preventDefault();let a=Math.round(l.clientX),u=a-o.current;o.current=a,u!==0&&e(l,u)},[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,xt.jsx)("div",{className:fo,"data-align":"end",onMouseDown:s})};var se=require("react"),ze=({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:u}=n.current.getBoundingClientRect();o.current=Math.round(u),r.current=!0,t==null||t("begin",i)}},[i,t,n]),l=(0,se.useCallback)((u,c)=>{if(n.current&&t){let{width:p}=n.current.getBoundingClientRect(),d=Math.round(p)+c;d!==o.current&&d>0&&(t("resize",i,d),o.current=d)}},[i,t,n]),a=(0,se.useCallback)(()=>{t&&(t("end",i,o.current),setTimeout(()=>{r.current=!1},100))},[i,t]);return{isResizing:r.current,onDrag:l,onDragStart:s,onDragEnd:a}};var B=require("react/jsx-runtime"),ee="vuuTable-groupHeaderCell",Ht=({column:e,onClick:t,...n})=>(0,B.jsx)("span",{...n,className:`${ee}-close`,"data-icon":"close-circle",onClick:()=>t==null?void 0:t(e)}),go=e=>{let{children:t,column:n,className:o}=e;return(0,B.jsxs)("div",{className:(0,Je.default)(`${ee}-col`,o),role:"columnheader",children:[(0,B.jsx)("span",{className:`${ee}-label`,children:n.name}),t]})},Et=({column:e,className:t,onRemoveColumn:n,onResize:o,...r})=>{let i=(0,Pt.useRef)(null),{isResizing:s,...l}=ze({column:e,onResize:o,rootRef:i}),a=(0,Je.default)(ee,t,{vuuPinLeft:e.pin==="left",[`${ee}-right`]:e.align==="right",[`${ee}-resizing`]:e.resizing,[`${ee}-pending`]:e.groupConfirmed===!1}),{columns:u}=e;return(0,B.jsx)("div",{className:a,ref:i,...r,children:(0,B.jsxs)("div",{className:`${ee}-inner`,children:[u.map(c=>(0,B.jsx)(go,{column:c,children:u.length>1?(0,B.jsx)(Ht,{column:c,onClick:n}):null},c.key)),(0,B.jsx)(Ht,{"data-align":"end",onClick:n}),e.resizeable!==!1?(0,B.jsx)(Ke,{...l}):null]})})};var Ft=q(require("classnames")),le=require("react");var Xe=q(require("classnames"));var ie=require("react/jsx-runtime"),St="vuuSortIndicator",At=({sorted:e})=>{if(!e)return null;let t=typeof e=="number"?e<0?"dsc":"asc":e==="A"?"asc":"dsc";return typeof e=="number"?(0,ie.jsxs)("div",{className:(0,Xe.default)(St,"multi-col",t),children:[(0,ie.jsx)("span",{"data-icon":`sorted-${t}`}),(0,ie.jsx)("span",{className:"vuuSortPosition",children:Math.abs(e)})]}):(0,ie.jsx)("div",{className:(0,Xe.default)(St,"single-col"),children:(0,ie.jsx)("span",{"data-icon":`sorted-${t}`})})};var It=require("@vuu-ui/vuu-popups");var Lt=require("@vuu-ui/vuu-popups"),kt=q(require("classnames")),Kt=require("react");var Nt=require("react/jsx-runtime");var zt=({column:e,filter:t})=>{let n=(0,Lt.useContextMenu)(),o=(0,Kt.useCallback)(r=>{r.stopPropagation(),n(r,"filter",{column:e,filter:t})},[e,t,n]);return e.filter?(0,Nt.jsx)("div",{className:(0,kt.default)("vuuFilterIndicator"),"data-icon":"filter",onClick:o}):null};var te=require("react/jsx-runtime"),Re="vuuTable-headerCell",Vt=({column:e,className:t,onClick:n,onDragStart:o,onResize:r,...i})=>{let s=(0,le.useRef)(null),{isResizing:l,...a}=ze({column:e,onResize:r,rootRef:s}),u=(0,It.useContextMenu)(),c=(0,le.useRef)(null),p=T=>{u(T,"header",{column:e})},d=(0,le.useCallback)(T=>!l&&(n==null?void 0:n(T)),[l,n]),g=(0,le.useCallback)(T=>{c.current=window.setTimeout(()=>{o==null||o(T),c.current=null},500)},[o]),h=(0,le.useCallback)(()=>{c.current!==null&&(window.clearTimeout(c.current),c.current=null)},[]),f=(0,Ft.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,te.jsx)("div",{className:f,...i,onClick:d,onContextMenu:p,onMouseDown:g,onMouseUp:h,ref:s,children:(0,te.jsxs)("div",{className:`${Re}-inner`,children:[(0,te.jsx)(zt,{column:e}),(0,te.jsx)("div",{className:`${Re}-label`,children:e.label}),(0,te.jsx)(At,{sorted:e.sorted}),e.resizeable!==!1?(0,te.jsx)(Ke,{...a}):null]})})};var U=require("react/jsx-runtime"),Ye="vuuTable",{RENDER_IDX:bo}=$.metadataKeys,Wt=({columns:e,columnsWithinViewport:t,data:n,getRowOffset:o,headings:r,onColumnResize:i,onHeaderCellDragStart:s,onContextMenu:l,onRemoveColumnFromGroupBy:a,onRowClick:u,onSort:c,onToggleGroup:p,tableId:d,virtualColSpan:g=0,rowCount:h})=>{let f=(0,ge.useCallback)(C=>{s==null||s(C)},[s]),T=(0,ge.useMemo)(()=>e.filter($.notHidden),[e]),y=(0,ge.useMemo)(()=>(0,$.buildColumnMap)(e),[e]),m=(0,ge.useCallback)(C=>{var E;let w=C.target.closest(".vuuTable-headerCell"),v=parseInt((E=w==null?void 0:w.dataset.idx)!=null?E:"-1"),D=(0,$.visibleColumnAtIndex)(e,v),A=C.shiftKey;D&&c(D,A)},[e,c]);return(0,U.jsxs)("div",{"aria-rowcount":h,className:`${Ye}-table`,role:"table",children:[(0,U.jsxs)("div",{className:`${Ye}-headers`,role:"rowGroup",children:[r.map((C,R)=>(0,U.jsx)("div",{className:"vuuTable-heading",children:C.map(({label:w,width:v},D)=>(0,U.jsx)("div",{className:"vuuTable-headingCell",style:{width:v},children:w},D))},R)),(0,U.jsx)("div",{role:"row",children:T.map((C,R)=>{let w=(0,$.getColumnStyle)(C);return(0,$.isGroupColumn)(C)?(0,U.jsx)(Et,{column:C,"data-idx":R,onRemoveColumn:a,onResize:i,role:"columnHeader",style:w},R):(0,U.jsx)(Vt,{column:C,"data-idx":R,id:`${d}-${R}`,onClick:m,onDragStart:f,onResize:i,role:"columnHeader",style:w},R)})})]}),(0,U.jsx)("div",{className:`${Ye}-body`,onContextMenu:l,role:"rowGroup",children:n==null?void 0:n.map(C=>(0,U.jsx)(Rt,{columnMap:y,columns:t,offset:o(C),onClick:u,virtualColSpan:g,onToggleGroup:p,row:C},C[bo]))})]})};var gn=require("@vuu-ui/vuu-popups"),_=require("@vuu-ui/vuu-utils"),L=require("react");var Ne=require("@vuu-ui/vuu-data"),ne=require("@vuu-ui/vuu-utils"),k=require("react"),{SELECTED:De}=ne.metadataKeys;function $t({dataSource:e,onConfigChange:t,onFeatureEnabled:n,onFeatureInvocation:o,onSizeChange:r,onSubscribed:i,range:s={from:0,to:0},renderBufferSize:l=0,viewportRowCount:a}){let[,u]=(0,k.useState)(null),c=(0,k.useRef)(!0),p=(0,k.useRef)(!1),d=(0,k.useRef)({from:0,to:0}),g=(0,k.useRef)(null),h=(0,k.useRef)([]),f=(0,k.useMemo)(()=>new Qe((0,ne.getFullRange)(s)),[]),T=(0,k.useCallback)(v=>{for(let D of v)f.add(D);h.current=f.data,p.current=!0},[f]),y=(0,k.useCallback)(v=>{v.type==="subscribed"?i==null||i(v):v.type==="viewport-update"?(typeof v.size=="number"&&(r==null||r(v.size),f.setRowCount(v.size)),v.rows?T(v.rows):typeof v.size=="number"&&(h.current=f.data,p.current=!0)):(0,Ne.isVuuFeatureAction)(v)?n==null||n(v):(0,Ne.isVuuFeatureInvocation)(v)?o==null||o(v):console.log(`useDataSource unexpected message ${v.type}`)},[f,n,o,r,i,T]);(0,k.useEffect)(()=>()=>{g.current&&(cancelAnimationFrame(g.current),g.current=null),c.current=!1},[]);let m=(0,k.useCallback)(()=>{c.current&&(p.current&&(u({}),p.current=!1),g.current=requestAnimationFrame(m))},[u]);(0,k.useEffect)(()=>{g.current=requestAnimationFrame(m)},[m]);let C=(0,k.useCallback)(v=>{let{from:D}=e.range,A={from:D,to:D+v},E=(0,ne.getFullRange)(A,l);f.setRange(E),e.range=d.current=E,e.emit("range",A)},[e,f,l]),R=(0,k.useCallback)(v=>{let D=(0,ne.getFullRange)(v,l);f.setRange(D),e.range=d.current=D,e.emit("range",v)},[e,f,l]),w=(0,k.useCallback)(()=>f.getSelectedRows(),[f]);return(0,k.useEffect)(()=>{e==null||e.subscribe({range:d.current},y)},[e,y,t]),(0,k.useEffect)(()=>{C(a)},[C,a]),{data:h.current,getSelectedRows:w,range:d.current,setRange:R,dataSource:e}}var Qe=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 ne.WindowRange(t,n),this.data=new Array(n-t),this.rowCount=0}add(t){var o;let[n]=t;if(this.isWithinRange(n)){let r=n-this.range.from;this.data[r]=t;let i=t[De],s=(o=this.data[r-1])==null?void 0:o[De];s===0&&i?this.data[r-1][De]=2:s===2&&!i&&(this.data[r-1][De]=0)}}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({from:t,to:n}){if(t!==this.range.from||n!==this.range.to){let[o,r]=this.range.overlap(t,n),i=new Array(Math.max(0,n-t));for(let s=o;s<r;s++){let l=this.getAtIndex(s);if(l){let a=s-t;i[a]=l}}this.data=i,this.range.from=t,this.range.to=n}}getSelectedRows(){return this.data.filter(t=>t[De]===1)}};var Ot=require("@heswell/salt-lab"),be=require("react"),Gt=({onDrop:e})=>{let t=(0,be.useRef)(),n=(0,be.useRef)(null),o=(0,be.useCallback)(()=>{console.log("handleDropSettle"),t.current=void 0,n.current=null},[]),{draggable:r,draggedItemIndex:i,onMouseDown:s}=(0,Ot.useDragDrop)({allowDragDrop:!0,draggableClassName:"vuuTable-headerCell",orientation:"horizontal",containerRef:n,itemQuery:".vuuTable-headerCell",onDrop:e,onDropSettle:o}),l=(0,be.useCallback)(a=>{let{clientX:u,clientY:c}=a;console.log("useDraggableColumn handleHeaderCellDragStart means mouseDown fired on a column in RowBasedTable");let d=a.target.closest(".vuuTable-headerCell");n.current=d==null?void 0:d.closest("[role='row']");let{dataset:{idx:g="-1"}}=d;t.current={clientX:u,clientY:c,idx:g},s==null||s(a)},[s]);return{draggable:r,draggedItemIndex:i,onHeaderCellDragStart:l}};var Xt=require("@vuu-ui/vuu-utils"),K=require("react");function Co(e,...t){let n=new Set(e);for(let o of t)for(let r of o)n.add(r);return n}var Ze="ArrowUp",je="ArrowDown",qe="ArrowLeft",et="ArrowRight";var tt="Home",nt="End",ot="PageUp",rt="PageDown";var ho=new Set(["Enter","Delete"," "]),vo=new Set(["Tab"]),yo=new Set(["ArrowRight","ArrowLeft"]),Bt=new Set([tt,nt,ot,rt,je,qe,et,Ze]),wo=new Set(["F1","F2","F3","F4","F5","F6","F7","F8","F9","F10","F11","F12"]),Ds=Co(ho,Bt,yo,wo,vo);var Mo=["Home","End","PageUp","PageDown"],Ut=e=>Mo.includes(e),_t=e=>Bt.has(e);var Jt=e=>`.vuuTable-headers .vuuTable-headerCell:nth-child(${e+1})`,To=(e,t)=>`.vuuTable-body > [aria-rowindex='${e}'] > [role='cell']:nth-child(${t+1})`,Ro=[-1,-1];function Do(e,[t,n],o,r){return e===Ze?t>-1?[t-1,n]:[t,n]:e===je?t===-1?[0,n]:t===r-1?[t,n]:[t+1,n]:e===et?n<o-1?[t,n+1]:[t,n]:e===qe?n>0?[t,n-1]:[t,n]:[t,n]}var Yt=({columnCount:e=0,containerRef:t,disableHighlightOnFocus:n,data:o,requestScroll:r,rowCount:i=0,viewportRange:s})=>{var E;let{from:l,to:a}=s,u=(0,K.useRef)([-1,-1]),c=(0,K.useRef)(),p=(0,K.useRef)([-1,0]),d=(0,K.useCallback)(([b,M])=>{var H;let S=b===-1?Jt(M):To(b,M);return(H=t.current)==null?void 0:H.querySelector(S)},[t]),g=b=>b==null?void 0:b.closest("[role='columnHeader'],[role='cell']"),h=b=>{var M,S;if(b.role==="columnHeader")return[-1,parseInt((M=b.dataset.idx)!=null?M:"-1",10)];{let H=b.closest("[role='row']");if(H){let W=parseInt((S=H.ariaRowIndex)!=null?S:"-1",10),me=Array.from(H.childNodes).indexOf(b);return[W,me]}}return Ro},f=(0,K.useCallback)(b=>{var M;if(t.current){let S=d(b);S?(S!==c.current&&((M=c.current)==null||M.setAttribute("tabindex",""),c.current=S,S.setAttribute("tabindex","0")),S.focus()):(0,Xt.withinRange)(b[0],s)||(c.current=void 0,r==null||r({type:"scroll-page",direction:"up"}))}},[t,d,r,s]),T=(0,K.useCallback)((b,M,S=!1)=>{let H=[b,M];p.current=H,f(H),S&&(u.current=H)},[f]),y=(0,K.useCallback)(()=>{var b;(b=c.current)==null||b.setAttribute("tabindex",""),c.current=void 0},[]),m=(0,K.useCallback)(async(b,M)=>{switch(b){case rt:r==null||r({type:"scroll-page",direction:"down"});break;case ot:r==null||r({type:"scroll-page",direction:"up"});break;case tt:r==null||r({type:"scroll-end",direction:"home"});break;case nt:r==null||r({type:"scroll-end",direction:"end"});break}return M},[r]),C=(0,K.useCallback)(()=>{var b;if(n!==!0&&(b=t.current)!=null&&b.contains(document.activeElement)){let M=g(document.activeElement);M&&(u.current=h(M))}},[n,t]),R=(0,K.useCallback)(async b=>{let[M,S]=Ut(b)?await m(b,p.current):Do(b,p.current,e,i),[H,W]=p.current;(M!==H||S!==W)&&T(M,S,!0)},[e,m,i,T]),w=(0,K.useCallback)(b=>{o.length>0&&_t(b.key)&&(b.preventDefault(),b.stopPropagation(),R(b.key))},[o,R]),v=(0,K.useCallback)(b=>{let M=b.target,S=g(M);if(S){let[H,W]=h(S);T(H,W)}},[T]),D=(0,K.useMemo)(()=>({onClick:v,onFocus:C,onKeyDown:w}),[v,C,w]);(0,K.useLayoutEffect)(()=>{let{current:b}=p,M=b[0]>=l&&b[0]<=a;c.current&&!M?y():!c.current&&M&&f(b)},[f,l,a,y]);let A=((E=t.current)==null?void 0:E.firstChild)!=null;return(0,K.useEffect)(()=>{var b;if(A&&c.current===void 0){let M=(b=t.current)==null?void 0:b.querySelector(Jt(0));M&&(M.setAttribute("tabindex","0"),c.current=M)}},[t,A]),D};var Q=require("@vuu-ui/vuu-utils"),oe=require("react");var ce=require("react");var ae=new Map,Zt=(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}},Qt=new ResizeObserver(e=>{for(let t of e){let{target:n,borderBoxSize:o,contentBoxSize:r}=t,i=ae.get(n);if(i){let[{blockSize:s,inlineSize:l}]=o,[{blockSize:a,inlineSize:u}]=r,{onResize:c,measurements:p}=i,d=!1;for(let[g,h]of Object.entries(p)){let f=Zt(n,{height:s,width:l,contentHeight:a,contentWidth:u},g);f!==h&&(d=!0,p[g]=f)}d&&c&&c(p)}}});function jt(e,t,n,o=!1){let r=(0,ce.useRef)(t),i=(0,ce.useCallback)(s=>{let{width:l,height:a}=s.getBoundingClientRect(),{clientWidth:u,clientHeight:c}=s;return r.current.reduce((p,d)=>(p[d]=Zt(s,{width:l,height:a,contentHeight:c,contentWidth:u},d),p),{})},[]);(0,ce.useEffect)(()=>{let s=e.current;async function l(){ae.set(s,{measurements:{}}),await document.fonts.ready;let a=ae.get(s);if(a){let u=i(s);a.measurements=u,Qt.observe(s),o&&n(u)}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(ae.has(s))throw Error("useResizeObserver attemping to observe same element twice");l()}return()=>{s&&ae.has(s)&&(Qt.unobserve(s),ae.delete(s))}},[i,e]),(0,ce.useEffect)(()=>{let s=e.current,l=ae.get(s);if(l){if(r.current!==t){r.current=t;let a=i(s);l.measurements=a}l.onResize=n}},[t,i,e,n])}var xo=["clientHeight","clientWidth"],qt=e=>Number.isFinite(e),Ho={height:"100%",width:"100%"},Po=(e,t)=>(0,Q.isValidNumber)(e)&&(0,Q.isValidNumber)(t)?{height:`${e}px`,width:`${t}px`}:Ho,Eo=(e,t)=>{if((0,Q.isValidNumber)(e)&&(0,Q.isValidNumber)(t))return{height:e,width:t}},st=({defaultHeight:e=0,defaultWidth:t=0,height:n,width:o})=>{let r=(0,oe.useRef)(null),[i,s]=(0,oe.useState)({css:Po(n,o),inner:Eo(n,o),outer:{height:n!=null?n:"100%",width:o!=null?o:"100%"}});(0,oe.useMemo)(()=>{s(a=>{let{inner:u,outer:c}=a;if((0,Q.isValidNumber)(n)&&(0,Q.isValidNumber)(o)&&u&&c){let{height:p,width:d}=u,{height:g,width:h}=c;if(g!==n||h!==o){let f=(0,Q.isValidNumber)(g)?g-p:0,T=(0,Q.isValidNumber)(h)?h-d:0;return{...a,outer:{height:n,width:o},inner:{height:n-f,width:o-T}}}}return a})},[n,o]);let l=(0,oe.useCallback)(({clientWidth:a,clientHeight:u})=>{s(c=>{let{css:p,inner:d,outer:g}=c;return qt(u)&&qt(a)&&(a!==(d==null?void 0:d.width)||u!==(d==null?void 0:d.height))?{css:p,outer:g,inner:{width:Math.floor(a)||t,height:Math.floor(u)||e}}:c})},[e,t]);return jt(r,xo,l,!0),{containerRef:r,cssSize:i.css,outerSize:i.outer,innerSize:i.inner}};var Ce=require("@vuu-ui/vuu-utils"),xe=require("react"),{IDX:So,SELECTED:Ao}=Ce.metadataKeys,Lo=[],en=({selectionModel:e,onSelectionChange:t})=>{let n=(0,xe.useRef)(-1),o=(0,xe.useRef)(Lo);return(0,xe.useCallback)((i,s,l)=>{let{[So]:a,[Ao]:u}=i,{current:c}=n,{current:p}=o,g=(u?Ce.deselectItem:Ce.selectItem)(e,p,a,s,l,c);o.current=g,n.current=a,t&&t(g)},[t,e])};var tn=require("@heswell/salt-lab"),x=require("@vuu-ui/vuu-utils"),nn=require("react"),{info:it}=(0,x.logger)("useTableModel"),ko=100,on=x.metadataKeys.count,Ko=({serverDataType:e})=>e===void 0,zo=e=>{var t;if((0,x.isTypeDescriptor)(e.type))return(0,x.getCellRenderer)((t=e.type)==null?void 0:t.renderer)},rn=(e,t)=>{if(e.serverDataType)return e.serverDataType;if(t){let n=t.columns.find(o=>o.name===e.name);if(n)return n.serverDataType}return"string"},No=["int","long","double"],sn=e=>e===void 0?void 0:No.includes(e)?"right":"left",Fo=(e,t)=>{switch(it==null||it(`GridModelReducer ${t.type}`),t.type){case"init":return ln(t);case"moveColumn":return Vo(e,t);case"resizeColumn":return Oo(e,t);case"setTableSchema":return Go(e,t);case"hideColumns":return Wo(e,t);case"showColumns":return $o(e,t);case"pinColumn":return Bo(e,t);case"updateColumnProp":return He(e,t);case"tableConfig":return an(e,t);default:return console.log(`unhandled action ${t.type}`),e}},lt=(e,t)=>{let[n,o]=(0,nn.useReducer)(Fo,{tableConfig:e,dataSourceConfig:t},ln);return{columns:n.columns,dispatchColumnAction:o,headings:n.headings}};function ln({dataSourceConfig:e,tableConfig:t}){let n=t.columns.map(at(t)),o=n.some(x.isPinned)?(0,x.sortPinnedColumns)(n):n,r={columns:o,headings:(0,x.getTableHeadings)(o)};if(e){let{columns:i,...s}=e;return an(r,{type:"tableConfig",...s})}else return r}var Io=(e,t)=>t==="uppercase"?e.toUpperCase():t==="capitalize"?e[0].toUpperCase()+e.slice(1).toLowerCase():e,at=e=>(t,n)=>{let o=rn(t,e.tableSchema),{columnDefaultWidth:r=ko,columnFormatHeader:i}=e,{align:s=sn(o),key:l,name:a,label:u=a,width:c=r,...p}=t,d={...p,align:s,CellRenderer:zo(t),label:Io(u,i),key:l!=null?l:n+on,name:a,originalIdx:n,serverDataType:o,valueFormatter:(0,x.getValueFormatter)(t),width:c};return(0,x.isGroupColumn)(d)&&(d.columns=d.columns.map(g=>at(e)(g,g.key))),d};function Vo(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,tn.moveItem)(r,i,o)}}return e}function Wo(e,{columns:t}){return t.some(n=>n.hidden!==!0)?t.reduce((n,o)=>o.hidden!==!0?He(n,{type:"updateColumnProp",column:o,hidden:!0}):n,e):e}function $o(e,{columns:t}){return t.some(n=>n.hidden)?t.reduce((n,o)=>o.hidden?He(n,{type:"updateColumnProp",column:o,hidden:!1}):n,e):e}function Oo(e,{column:t,phase:n,width:o}){let r="updateColumnProp",i=n!=="end";switch(n){case"begin":case"end":return He(e,{type:r,column:t,resizing:i});case"resize":return He(e,{type:r,column:t,width:o});default:throw Error(`useTableModel.resizeColumn, invalid resizePhase ${n}`)}}function Go(e,{tableSchema:t}){let{columns:n}=e;if(n.some(Ko)){let o=n.map(r=>{var s;let i=rn(r,t);return{...r,align:(s=r.align)!=null?s:sn(i),serverDataType:i}});return{...e,columns:o,tableSchema:t}}else return{...e,tableSchema:t}}function Bo(e,t){let{columns:n}=e,{column:o,pin:r}=t,i=n.find(s=>s.name===o.name);return i?(n=he(n,{...i,pin:r}),n=(0,x.sortPinnedColumns)(n),{...e,columns:n}):e}function He(e,t){let{columns:n}=e,{align:o,column:r,hidden:i,label:s,resizing:l,width:a}=t,u=n.find(c=>c.name===r.name);return u&&((o==="left"||o==="right")&&(n=he(n,{...u,align:o})),typeof s=="string"&&(n=he(n,{...u,label:s})),typeof l=="boolean"&&(n=he(n,{...u,resizing:l})),typeof i=="boolean"&&(n=he(n,{...u,hidden:i})),typeof a=="number"&&(n=he(n,{...u,width:a}))),{...e,columns:n}}function an(e,{columns:t,confirmed:n,filter:o,groupBy:r,sort:i}){let s=t&&t.length>0,l=r!==void 0,a=typeof(o==null?void 0:o.filter)=="string",u=i&&i.sortDefs.length>0,c=e;return s&&(c={...e,columns:t.map((p,d)=>{let g=(0,x.getColumnName)(p),h=d+on,f=(0,x.findColumn)(c.columns,g);return f?f.key===h?f:{...f,key:h}:at(e)({name:p},d)})}),l&&(c={...e,columns:(0,x.applyGroupByToColumns)(c.columns,r,n)}),u&&(c={...e,columns:(0,x.applySortToColumns)(c.columns,i)}),a?c={...e,columns:(0,x.applyFilterToColumns)(c.columns,o)}:c.columns.some(x.isFilteredColumn)&&(c={...e,columns:(0,x.stripFilterFromColumns)(c.columns)}),c}function he(e,t){return e.map(n=>n.name===t.name?t:n)}var I=require("react"),cn=e=>{let{scrollLeft:t,scrollTop:n}=e,{clientHeight:o,clientWidth:r,scrollHeight:i,scrollWidth:s}=e,l=t/(s-r),a=n/(i-o);return[l,a]},Uo=e=>{let{clientHeight:t,clientWidth:n,scrollHeight:o,scrollWidth:r}=e;return[r-n,o-t]},un=({onAttach:e,onDetach:t})=>{let n=(0,I.useRef)(null);return(0,I.useCallback)(r=>{if(r)n.current=r,e==null||e(r);else if(n.current){let{current:i}=n;n.current=r,t==null||t(i)}},[e,t])},mn=({onHorizontalScroll:e,onVerticalScroll:t,viewport:n})=>{let o=(0,I.useRef)(!1),r=(0,I.useRef)({scrollTop:0,scrollLeft:0}),i=(0,I.useRef)(null),s=(0,I.useRef)(null),{maxScrollContainerScrollHorizontal:l,maxScrollContainerScrollVertical:a}=n,u=(0,I.useCallback)(()=>{let{current:m}=s,{current:C}=i,{current:R}=o;if(R)o.current=!1;else if(m&&C){let[w,v]=cn(C),[D,A]=Uo(m),E=Math.round(w*D),b=Math.round(v*A);m.scrollTo({left:E,top:b,behavior:"auto"})}},[]),c=(0,I.useCallback)(()=>{let{current:m}=s,{current:C}=i,{current:R}=r;if(m&&C){let{scrollLeft:w,scrollTop:v}=m,[D,A]=cn(m);o.current=!0,C.scrollLeft=Math.round(D*l),C.scrollTop=Math.round(A*a),R.scrollTop!==v&&(R.scrollTop=v,t==null||t(v,A)),R.scrollLeft!==w&&(R.scrollLeft=w,e==null||e(w))}},[l,a,e,t]),p=(0,I.useCallback)(m=>{i.current=m,m.addEventListener("scroll",u,{passive:!0})},[u]),d=(0,I.useCallback)(m=>{i.current=null,m.removeEventListener("scroll",u)},[u]),g=(0,I.useCallback)(m=>{s.current=m,m.addEventListener("scroll",c,{passive:!0})},[c]),h=(0,I.useCallback)(m=>{s.current=null,m.removeEventListener("scroll",c)},[c]),f=un({onAttach:g,onDetach:h}),T=un({onAttach:p,onDetach:d}),y=(0,I.useCallback)(m=>{let{current:C}=s;if(C){if(o.current=!1,m.type==="scroll-page"){let{clientHeight:R,scrollLeft:w,scrollTop:v}=C,{direction:D}=m,A=D==="down"?R:-R,E=Math.min(Math.max(0,v+A),a);C.scrollTo({top:E,left:w,behavior:"auto"})}else if(m.type==="scroll-end"){let{direction:R}=m,w=R==="end"?a:0;C.scrollTo({top:w,left:C.scrollLeft,behavior:"auto"})}}},[a]);return{scrollbarContainerRef:T,contentContainerRef:f,requestScroll:y}};var Z=require("react"),Fe=require("@vuu-ui/vuu-utils"),_o=15e5,Jo={contentHeight:0,contentWidth:0,getRowAtPosition:()=>-1,getRowOffset:()=>-1,horizontalScrollbarHeight:0,maxScrollContainerScrollHorizontal:0,maxScrollContainerScrollVertical:0,pinnedWidthLeft:0,pinnedWidthRight:0,rowCount:0,setPctScrollTop:()=>{},totalHeaderHeight:0,verticalScrollbarWidth:0,viewportBodyHeight:0},Xo=e=>{let t=0,n=0,o=0;for(let r of e){let{hidden:i,pin:s,width:l}=r,a=i?0:l;s==="left"?t+=a:s==="right"?n+=a:o+=a}return{pinnedWidthLeft:t,pinnedWidthRight:n,unpinnedWidth:o}},ct=({columns:e,headerHeight:t,headings:n,rowCount:o,rowHeight:r,size:i})=>{let s=(0,Z.useRef)(0),a=Math.min(o,_o)*r,c=o*r-a,{pinnedWidthLeft:p,pinnedWidthRight:d,unpinnedWidth:g}=(0,Z.useMemo)(()=>Xo(e),[e]),[h,f]=(0,Z.useMemo)(()=>(0,Fe.actualRowPositioning)(r),[r]),[T,y]=(0,Z.useMemo)(()=>c?(0,Fe.virtualRowPositioning)(r,c,s):[h,f],[f,h,c,r]),m=(0,Z.useCallback)(C=>{s.current=C},[]);return(0,Z.useMemo)(()=>{var C;if(i){let R=n.length,w=15,v=p+g+d,D=v>i.width?w:0,A=t*(1+R),E=a-(((C=i==null?void 0:i.height)!=null?C:0)-D)+A,b=v-i.width+p,M=(i.height-t)/r,S=Number.isInteger(M)?M+1:Math.ceil(M),H=i.height-A,W=a>H?w:0;return{contentHeight:a,getRowAtPosition:y,getRowOffset:T,horizontalScrollbarHeight:D,maxScrollContainerScrollHorizontal:b,maxScrollContainerScrollVertical:E,pinnedWidthLeft:p,pinnedWidthRight:d,rowCount:S,contentWidth:v,setPctScrollTop:m,totalHeaderHeight:A,verticalScrollbarWidth:W,viewportBodyHeight:H}}else return Jo},[i,n.length,p,g,d,a,t,r,y,T,m])};var Pe=require("@vuu-ui/vuu-utils"),V=require("react"),dn=({columns:e,getRowAtPosition:t,setRange:n,viewportMeasurements:o})=>{let r=(0,V.useRef)(-1),{rowCount:i,contentWidth:s,maxScrollContainerScrollHorizontal:l}=o,a=s-l,u=(0,V.useRef)(0),[c,p]=(0,V.useMemo)(()=>(0,Pe.getColumnsInViewport)(e,u.current,u.current+a),[a,e]),d=(0,V.useRef)(p);(0,V.useEffect)(()=>{h(c)},[c]);let[g,h]=(0,V.useState)(c),f=(0,V.useCallback)(y=>{u.current=y;let[m,C]=(0,Pe.getColumnsInViewport)(e,y,y+a);(0,Pe.itemsChanged)(g,m)&&(d.current=C,h(m))},[a,e,g]),T=(0,V.useCallback)(y=>{let m=t(y);m!==r.current&&(r.current=m,n({from:m,to:m+i}))},[t,n,i]);return{columnsWithinViewport:g,onHorizontalScroll:f,onVerticalScroll:T,virtualColSpan:d.current}};var Yo=[],{KEY:Qo,IS_EXPANDED:pn,IS_LEAF:fn}=_.metadataKeys,bn=({config:e,dataSource:t,headerHeight:n,onConfigChange:o,onFeatureEnabled:r,onFeatureInvocation:i,onSelectionChange:s,renderBufferSize:l=0,rowHeight:a,selectionModel:u,...c})=>{var dt,pt;let[p,d]=(0,L.useState)(t.size),g=(0,L.useRef)(!1),h=(0,L.useRef)();if(h.current=t,t===void 0)throw Error("no data source provided to Vuu Table");let f=st(c),T=(0,L.useCallback)(P=>{d(P)},[]),{columns:y,dispatchColumnAction:m,headings:C}=lt(e,t.config),{getRowAtPosition:R,getRowOffset:w,setPctScrollTop:v,...D}=ct({columns:y,headerHeight:n,headings:C,rowCount:p,rowHeight:a,size:f.innerSize}),A=(0,L.useCallback)(({tableSchema:P})=>{P?(g.current=!0,m({type:"setTableSchema",tableSchema:P})):console.log("usbscription message with no schema")},[m]),E=(0,L.useCallback)(P=>{t.select(P),s==null||s(P)},[t,s]),b=en({onSelectionChange:E,selectionModel:u}),{data:M,getSelectedRows:S,range:H,setRange:W}=$t({dataSource:t,onFeatureEnabled:r,onFeatureInvocation:i,onSubscribed:A,onSizeChange:T,renderBufferSize:l,viewportRowCount:D.rowCount}),me=(0,L.useRef)();me.current=M;let Ve=(0,L.useCallback)(P=>{g.current=!0,m(P)},[m]),wn=Ue({dataSource:t,onPersistentColumnOperation:Ve}),Mn=(0,L.useCallback)((P,z=!1,O)=>{t&&(t.sort=(0,_.applySort)(t.sort,P,z,O))},[t]),Tn=(0,L.useCallback)((P,z,O)=>{let F=y.find(J=>J.name===z);if(F)P==="end"&&(g.current=!0),m({type:"resizeColumn",phase:P,column:F,width:O});else throw Error(`useDataTable.handleColumnResize, column ${z} not found`)},[y,m]),Rn=(0,L.useCallback)((P,z)=>{let O=(0,_.isJsonGroup)(z,P),F=P[Qo];if(P[pn]){if(t.closeTreeNode(F,!0),O){let J=y.indexOf(z);t.getRowsAtDepth(J+1).some(X=>X[pn]||X[fn])||m({type:"hideColumns",columns:y.slice(J+2)})}}else if(t.openTreeNode(F),O){let J=t.getChildRows(F),re=y.indexOf(z)+1,X=[y[re]];J.some(de=>de[fn])&&X.push(y[re+1]),X.some(de=>de.hidden)&&m({type:"showColumns",columns:X})}},[y,t,m]),{onVerticalScroll:ut,onHorizontalScroll:Dn,columnsWithinViewport:xn,virtualColSpan:Hn}=dn({columns:y,getRowAtPosition:R,setRange:W,viewportMeasurements:D}),Pn=(0,L.useCallback)((P,z)=>{v(z),ut(P)},[ut,v]),{requestScroll:En,...Sn}=mn({onHorizontalScroll:Dn,onVerticalScroll:Pn,viewport:D,viewportHeight:((pt=(dt=f.innerSize)==null?void 0:dt.height)!=null?pt:0)-n}),An=Yt({columnCount:y.length,containerRef:f.containerRef,data:M,requestScroll:En,rowCount:t==null?void 0:t.size,viewportRange:H}),Ln=(0,L.useCallback)(P=>{P?t&&t.groupBy.includes(P.name)&&(t.groupBy=t.groupBy.filter(z=>z!==P.name)):t.groupBy=[]},[t]),kn=(0,L.useCallback)((P,z)=>{let O=t.columns[P],F=(0,_.moveItem)(t.columns,O,z);F!==t.columns&&(t.columns=F,m({type:"tableConfig",columns:F}))},[t,m]),Kn=Gt({onDrop:kn});(0,L.useEffect)(()=>{h.current&&(g.current=!0,m({type:"init",tableConfig:e,dataSourceConfig:h.current.config}))},[e,m]),(0,L.useEffect)(()=>{t.on("config",(P,z)=>{g.current=!0,m({type:"tableConfig",...P,confirmed:z})})},[t,m]),(0,L.useMemo)(()=>{g.current&&(o==null||o({...e,columns:y}),g.current=!1)},[y,e,o]);let mt=(0,gn.useContextMenu)(),zn=(0,L.useCallback)(P=>{var X;let{current:z}=me,{current:O}=h,F=P.target,J=F==null?void 0:F.closest("div[role='cell']"),re=F==null?void 0:F.closest(".vuuTableRow");if(J&&re&&z&&O){let{columns:de,selectedRowsCount:Nn}=O,Fn=(0,_.buildColumnMap)(de),In=parseInt((X=re.ariaRowIndex)!=null?X:"-1"),Vn=Array.from(re.childNodes).indexOf(J),Wn=z.find(([On])=>On===In),$n=de[Vn];mt(P,"grid",{columnMap:Fn,columnName:$n,row:Wn,selectedRows:Nn===0?Yo:S(),viewport:t==null?void 0:t.viewport})}},[t==null?void 0:t.viewport,S,mt]);return{columns:y,columnsWithinViewport:xn,containerMeasurements:f,containerProps:An,data:M,dispatchColumnAction:m,getRowOffset:w,handleContextMenuAction:wn,headings:C,onColumnResize:Tn,onContextMenu:zn,onRemoveColumnFromGroupBy:Ln,onRowClick:b,onSort:Mn,onToggleGroup:Rn,virtualColSpan:Hn,scrollProps:Sn,rowCount:p,viewportMeasurements:D,...Kn}};var hn=q(require("classnames"));var vn=require("@vuu-ui/vuu-utils"),j=require("react/jsx-runtime"),ue="vuuTable",Zo=({allowConfigEditing:e=!1,className:t,config:n,dataSource:o,headerHeight:r=25,height:i,id:s,onConfigChange:l,onFeatureEnabled:a,onFeatureInvocation:u,onSelectionChange:c,onShowConfigEditor:p,renderBufferSize:d=0,rowHeight:g=20,selectionModel:h="extended",style:f,width:T,zebraStripes:y=!1,...m})=>{let C=(0,Ie.useIdMemo)(s),{containerMeasurements:{containerRef:R,innerSize:w,outerSize:v},containerProps:D,dispatchColumnAction:A,draggable:E,draggedItemIndex:b,handleContextMenuAction:M,scrollProps:S,viewportMeasurements:H,...W}=bn({config:n,dataSource:o,renderBufferSize:d,headerHeight:r,height:i,onConfigChange:l,onFeatureEnabled:a,onFeatureInvocation:u,onSelectionChange:c,rowHeight:g,selectionModel:h,width:T}),me={...v,"--content-height":`${H.contentHeight}px`,"--horizontal-scrollbar-height":`${H.horizontalScrollbarHeight}px`,"--content-width":`${H.contentWidth}px`,"--pinned-width-left":`${H.pinnedWidthLeft}px`,"--pinned-width-right":`${H.pinnedWidthRight}px`,"--header-height":`${r}px`,"--row-height":`${g}px`,"--table-height":`${w==null?void 0:w.height}px`,"--table-width":`${w==null?void 0:w.width}px`,"--total-header-height":`${H.totalHeaderHeight}px`,"--vertical-scrollbar-width":`${H.verticalScrollbarWidth}px`,"--viewport-body-height":`${H.viewportBodyHeight}px`},Ve=(0,hn.default)(ue,t,{[`${ue}-zebra`]:y,[`${ue}-loading`]:(0,vn.isDataLoading)(W.columns)});return(0,j.jsx)(Cn.ContextMenuProvider,{menuActionHandler:M,menuBuilder:Ge(o),children:(0,j.jsxs)("div",{...m,...D,className:Ve,id:C,ref:R,style:me,tabIndex:-1,children:[w?(0,j.jsx)("div",{className:`${ue}-scrollbarContainer`,ref:S.scrollbarContainerRef,children:(0,j.jsx)("div",{className:`${ue}-scrollbarContent`})}):null,w?(0,j.jsxs)("div",{className:`${ue}-contentContainer`,ref:S.contentContainerRef,children:[(0,j.jsx)(Wt,{...W,headerHeight:r,tableId:C}),E]}):null,e&&w?(0,j.jsx)(Ie.Button,{className:`${ue}-settings`,"data-icon":"settings",onClick:p,variant:"secondary"}):null]})})};var yn=q(require("classnames")),ye=require("@vuu-ui/vuu-utils");var ve=require("react/jsx-runtime"),Ee="vuuJsonCell",{IS_EXPANDED:jo,KEY:qo}=ye.metadataKeys,er=e=>{let t=e.lastIndexOf("|");return t===-1?"":e.slice(t+1)},tr=({column:e,row:t})=>{let{key:n}=e,o=t[n],r=!1;(0,ye.isJsonAttribute)(o)&&(o=o.slice(0,-1),r=!0);let i=er(t[qo]),s=(0,yn.default)({[`${Ee}-name`]:i===o,[`${Ee}-value`]:i!==o,[`${Ee}-group`]:r});if(r){let l=t[jo]?"minus-box":"plus-box";return(0,ve.jsxs)("span",{className:s,children:[(0,ve.jsx)("span",{className:`${Ee}-value`,children:o}),(0,ve.jsx)("span",{className:`${Ee}-toggle`,"data-icon":l})]})}else return o?(0,ve.jsx)("span",{className:s,children:o}):null};(0,ye.registerComponent)("json",tr,"cell-renderer",{});
2
2
  //# sourceMappingURL=index.js.map