@vuu-ui/vuu-table 0.8.23 → 0.8.24
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/cjs/index.js.map +4 -4
- package/esm/index.js +1 -1
- package/esm/index.js.map +4 -4
- package/index.css +1 -1
- package/index.css.map +2 -2
- package/package.json +9 -9
- package/types/Row.d.ts +6 -2
- package/types/Table.d.ts +9 -0
- package/types/useRowClassNameGenerators.d.ts +3 -0
- package/types/useRowHeight.d.ts +8 -0
- package/types/useTable.d.ts +1 -0
- package/types/useTableModel.d.ts +1 -1
- package/types/useTableScroll.d.ts +1 -1
package/cjs/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var nr=Object.create;var Xe=Object.defineProperty;var rr=Object.getOwnPropertyDescriptor;var lr=Object.getOwnPropertyNames;var ir=Object.getPrototypeOf,sr=Object.prototype.hasOwnProperty;var ar=(e,o)=>{for(var t in o)Xe(e,t,{get:o[t],enumerable:!0})},ot=(e,o,t,r)=>{if(o&&typeof o=="object"||typeof o=="function")for(let n of lr(o))!sr.call(e,n)&&n!==t&&Xe(e,n,{get:()=>o[n],enumerable:!(r=rr(o,n))||r.enumerable});return e};var ae=(e,o,t)=>(t=e!=null?nr(ir(e)):{},ot(o||!e||!e.__esModule?Xe(t,"default",{value:e,enumerable:!0}):t,e)),ur=e=>ot(Xe({},"__esModule",{value:!0}),e);var dl={};ar(dl,{CheckboxCell:()=>Vo,GroupHeaderCellNext:()=>Ye,HeaderCell:()=>vo,InputCell:()=>Dn,Table:()=>ul,TableCell:()=>wo,TableGroupCell:()=>Ro,ToggleCell:()=>Sn,isShowColumnSettings:()=>No,isShowTableSettings:()=>Fo,noScrolling:()=>un,updateTableConfig:()=>So,useControlledTableNavigation:()=>pl,useTableModel:()=>Ko,useTableScroll:()=>Oo,useTableViewport:()=>$o});module.exports=ur(dl);var pt=require("@vuu-ui/vuu-ui-controls"),dt=require("@vuu-ui/vuu-utils"),bt=ae(require("clsx")),Ie=require("react");var nt=ae(require("clsx")),rt=require("react");var Qe=require("react/jsx-runtime"),tt="vuuColumnHeaderPill",Se=({children:e,className:o,column:t,onRemove:r,removable:n,...l})=>{if(n&&typeof r!="function")throw Error("ColumnHeaderPill onRemove prop must be provided if Pill is removable");let s=(0,rt.useCallback)(i=>{i.preventDefault(),i.stopPropagation(),r==null||r(t)},[t,r]);return(0,Qe.jsxs)("div",{...l,className:(0,nt.default)(tt,o),children:[e,n?(0,Qe.jsx)("span",{className:`${tt}-removeButton`,role:"button","data-icon":"cross",onClick:s}):null]})};var ke=require("react/jsx-runtime"),lt=({column:e,...o})=>{let{name:t,sorted:r}=e,n=typeof r=="number"?r<0?"arrow-down":"arrow-up":r==="A"?"arrow-up":r==="D"?"arrow-down":void 0;return(0,ke.jsxs)(Se,{...o,column:e,children:[(0,ke.jsx)("span",{className:"vuuGroupColumnPill-label",children:t}),n!==void 0?(0,ke.jsx)("span",{"data-icon":n}):null,typeof r=="number"?(0,ke.jsx)("span",{className:"vuuSortPosition",children:Math.abs(r)}):null]})};var Ve=require("react/jsx-runtime"),it=({column:e})=>{if(!e.sorted)return null;let o=typeof e.sorted=="number"?e.sorted<0?"arrow-down":"arrow-up":e.sorted==="A"?"arrow-up":"arrow-down";return(0,Ve.jsxs)(Se,{column:e,children:[(0,Ve.jsx)("span",{"data-icon":o}),typeof e.sorted=="number"?(0,Ve.jsx)("span",{className:"vuuSortPosition",children:Math.abs(e.sorted)}):null]})};var Le=require("react");var at=require("react/jsx-runtime"),st=()=>{},cr="vuuColumnResizerNext",Je=({onDrag:e,onDragEnd:o=st,onDragStart:t=st})=>{let r=(0,Le.useRef)({start:0,now:0}),n=(0,Le.useCallback)(i=>{i.stopPropagation&&i.stopPropagation(),i.preventDefault&&i.preventDefault();let{current:a}=r,u=Math.round(i.clientX),c=u-a.now,p=a.now-a.start;r.current.now=u,c!==0&&e(i,c,p)},[e]),l=(0,Le.useCallback)(i=>{window.removeEventListener("mouseup",l),window.removeEventListener("mousemove",n);let{current:a}=r,u=a.now-a.start;o(i,u)},[o,n]),s=(0,Le.useCallback)(i=>{let{current:a}=r;t(i),a.now=a.start=Math.round(i.clientX),window.addEventListener("mouseup",l),window.addEventListener("mousemove",n),i.stopPropagation&&i.stopPropagation(),i.preventDefault&&i.preventDefault()},[t,n,l]);return(0,at.jsx)("div",{className:cr,onMouseDown:s})};var he=require("react"),Ze=({column:e,onResize:o,rootRef:t})=>{let r=(0,he.useRef)({start:0,now:0}),[n,l]=(0,he.useState)(!1),{name:s}=e,i=(0,he.useCallback)(()=>{if(o&&t.current){let{current:c}=r,{width:p}=t.current.getBoundingClientRect();c.start=c.now=Math.round(p),l(!0),o==null||o("begin",s)}},[s,o,t]),a=(0,he.useCallback)((c,p,f)=>{if(t.current&&o){let{current:g}=r,C=g.start+f;C!==g.now&&C>0&&(o("resize",s,C),g.now=C)}},[s,o,t]),u=(0,he.useCallback)(()=>{if(o){let{current:c}=r;o("end",s,c.now),setTimeout(()=>{l(!1)},80)}},[s,o]);return{isResizing:n,onDrag:a,onDragStart:i,onDragEnd:u}};var ut=require("@vuu-ui/vuu-utils"),ct=ae(require("clsx")),mt=require("react"),xe=(e,o,t)=>(0,mt.useMemo)(()=>{let r=(0,ct.default)(o,{vuuPinFloating:e.pin==="floating",vuuPinLeft:e.pin==="left",vuuPinRight:e.pin==="right",vuuEndPin:t&&e.endPin,[`${o}-editable`]:e.editable,[`${o}-right`]:e.align==="right"}),n=(0,ut.getColumnStyle)(e);return{className:r,style:n}},[e,o,t]);var Ae=require("react/jsx-runtime"),ft=require("react"),Co="vuuTableGroupHeaderCell",mr=(e,o)=>e===o?e:o,Ye=({column:e,className:o,onMoveColumn:t,onRemoveColumn:r,onResize:n,...l})=>{let s=(0,Ie.useRef)(null),{isResizing:i,...a}=Ze({column:e,onResize:n,rootRef:s}),[u,c]=(0,Ie.useState)(e.columns),{className:p,style:f}=xe(e,Co,!0),g=u.length>1?{removable:!0,onRemove:r}:void 0,C=(0,Ie.useCallback)((T,m)=>{c(h=>{let x=h.slice(),[k]=x.splice(T,1);if(m===-1){let L=x.concat(k);return t==null||t(L),L}else return x.splice(m,0,k),t==null||t(x),x})},[t]);return(0,dt.useLayoutEffectSkipFirst)(()=>{c(T=>mr(T,e.columns))},[e.columns]),(0,Ae.jsxs)("div",{...l,className:(0,bt.default)(p,o,{[`${Co}-pending`]:e.groupConfirmed===!1}),ref:s,role:"columnheader",style:f,children:[(0,Ae.jsx)(pt.OverflowContainer,{allowDragDrop:!0,className:`${Co}-inner`,height:24,onMoveItem:C,overflowPosition:"start",children:u.map(T=>(0,ft.createElement)(lt,{...g,column:T,key:T.name}))}),(0,Ae.jsx)(Se,{column:e,removable:!0,onRemove:r}),e.resizeable!==!1?(0,Ae.jsx)(Je,{...a}):null]})};var xt=ae(require("clsx")),qe=require("react");var gt=require("@vuu-ui/vuu-popups"),Ct=ae(require("clsx")),ye=require("react");var ht=require("react/jsx-runtime"),pr=e=>{if(e){let{bottom:o,left:t}=e.getBoundingClientRect();return{x:t,y:o+6}}},vt=({className:e,column:o,...t})=>{let r=(0,ye.useRef)(null),[n,l]=(0,ye.useState)(!1),[s]=(0,gt.useContextMenu)(),i=(0,ye.useCallback)(()=>{l(!1)},[]),a=(0,ye.useCallback)(u=>{l(!0),s(u,"column-menu",{column:o,ContextMenuProps:{onClose:i,position:pr(r.current)}})},[o,i,s]);return(0,ht.jsx)("span",{...t,className:(0,Ct.default)("vuuTable-columnMenu",e,{"vuuTable-columnMenu-open":n}),"data-icon":"more-vert",onClick:a,ref:r})};var de=require("react/jsx-runtime"),je="vuuTableHeaderCell",vo=({className:e,column:o,onClick:t,onResize:r,...n})=>{var x;let{HeaderCellContentRenderer:l,HeaderCellLabelRenderer:s}=o,i=(0,qe.useRef)(null),{isResizing:a,...u}=Ze({column:o,onResize:r,rootRef:i}),c=(0,qe.useCallback)(k=>{!a&&(t==null||t(k))},[a,t]),{className:p,style:f}=xe(o,je,!0),g=(0,de.jsx)(vt,{column:o}),C=s?(0,de.jsx)(s,{className:`${je}-label`,column:o}):(0,de.jsx)("div",{className:`${je}-label`,children:(x=o.label)!=null?x:o.name}),T=l?[(0,de.jsx)(l,{column:o},"content")]:[],m=(0,de.jsx)(it,{column:o}),h=o.align==="right"?[m,C].concat(T).concat(g):[g,C,m].concat(T);return(0,de.jsxs)("div",{...n,className:(0,xt.default)(p,e,{[`${je}-resizing`]:a}),onClick:c,ref:i,role:"columnheader",style:f,children:[...h,o.resizeable!==!1?(0,de.jsx)(Je,{...u}):null]})};var Cn=require("@vuu-ui/vuu-popups"),vn=require("@vuu-ui/vuu-ui-controls"),io=require("@vuu-ui/vuu-utils"),hn=require("@salt-ds/core"),Go=ae(require("clsx")),$e=require("react");var ee=require("@vuu-ui/vuu-utils"),yt=ae(require("clsx")),We=require("react");var wt=require("@vuu-ui/vuu-utils"),ho=require("react");var xo=require("react/jsx-runtime"),dr="vuuTableCell",wo=({column:e,columnMap:o,onClick:t,onDataEdited:r,row:n})=>{let{className:l,style:s}=xe(e,dr),{CellRenderer:i,index:a,name:u,valueFormatter:c}=e,p=o[u],f=(0,ho.useCallback)(C=>{if(r){let T=C;return(0,wt.isNumericColumn)(e)&&typeof C=="string"&&(T=e.serverDataType==="double"?parseFloat(C):parseInt(C)),r==null?void 0:r(n,u,T)}else throw Error("TableCell onDataEdited prop not supplied for an editable cell")},[e,u,r,n]),g=(0,ho.useCallback)(C=>{t==null||t(C,e)},[e,t]);return(0,xo.jsx)("div",{"aria-colindex":a,className:l,onClick:t?g:void 0,role:"cell",style:s,children:i?(0,xo.jsx)(i,{column:e,columnMap:o,onCommit:f,row:n}):c(n[p])})};var eo=require("@vuu-ui/vuu-utils"),Tt=require("react");var Rt=ae(require("clsx"));var ze=require("react/jsx-runtime"),{IS_LEAF:br}=eo.metadataKeys,To="vuuTableGroupCell",Ro=({column:e,columnMap:o,onClick:t,row:r})=>{let{columns:n}=e,[l,s]=(0,eo.getGroupValueAndOffset)(n,r,o),{className:i,style:a}=xe(e,To),u=(0,Tt.useCallback)(f=>{t==null||t(f,e)},[e,t]),c=r[br],p=Array(s).fill(0).map((f,g)=>(0,ze.jsx)("span",{className:`${To}-spacer`},g));return(0,ze.jsxs)("div",{className:(0,Rt.default)(i,"vuuTableCell"),role:"cell",style:a,onClick:c?void 0:u,children:[p,c?null:(0,ze.jsx)("span",{className:`${To}-toggle`,"data-icon":"triangle-right"}),(0,ze.jsx)("span",{children:l})]})};var De=require("react/jsx-runtime"),{IDX:fr,IS_EXPANDED:gr,SELECTED:Cr}=ee.metadataKeys,be="vuuTableRow",yo=(0,We.memo)(({className:e,columnMap:o,columns:t,highlighted:r,row:n,offset:l,onClick:s,onDataEdited:i,onToggleGroup:a,virtualColSpan:u=0,zebraStripes:c=!1,...p})=>{let{[fr]:f,[gr]:g,[Cr]:C}=n,T=(0,We.useCallback)(E=>{let I=E.shiftKey,O=E.ctrlKey||E.metaKey;s==null||s(n,I,O)},[s,n]),{True:m,First:h,Last:x}=ee.RowSelected,k=(0,yt.default)(be,e,{[`${be}-even`]:c&&f%2===0,[`${be}-expanded`]:g,[`${be}-highlighted`]:r,[`${be}-selected`]:C&m,[`${be}-selectedStart`]:C&h,[`${be}-selectedEnd`]:C&x}),L={transform:`translate3d(0px, ${l}px, 0px)`},S=(0,We.useCallback)((E,I)=>{((0,ee.isGroupColumn)(I)||(0,ee.isJsonGroup)(I,n,o))&&(E.stopPropagation(),a==null||a(n,I))},[o,a,n]);return(0,De.jsxs)("div",{...p,role:"row",className:k,onClick:T,style:L,children:[(0,De.jsx)("span",{className:`${be}-selectionDecorator vuuStickyLeft`}),u>0?(0,De.jsx)("div",{className:"vuuTableCell",style:{width:u}}):null,t.filter(ee.isNotHidden).map(E=>{let I=(0,ee.isGroupColumn)(E),O=(0,ee.isJsonColumn)(E);return(0,De.jsx)(I?Ro:wo,{column:E,columnMap:o,onClick:I||O?S:void 0,onDataEdited:i,row:n},E.name)}),(0,De.jsx)("span",{className:`${be}-selectionDecorator vuuStickyRight`})]})});yo.displayName="Row";var oo=require("@vuu-ui/vuu-utils"),Ht=ae(require("clsx")),Pt=require("react");var Dt=require("@vuu-ui/vuu-ui-controls"),Ne=require("@vuu-ui/vuu-utils"),Me=require("react"),Mt=({columns:e,onMoveColumn:o,onSortColumn:t,tableConfig:r})=>{let n=(0,Me.useRef)(null),l=(0,Me.useRef)(null),s=(0,Me.useCallback)(f=>{n.current=f,f?l.current=f.closest(".vuuTable-contentContainer"):l.current=null},[]),i=(0,Me.useCallback)(({fromIndex:f,toIndex:g})=>{let C=e[f],T=(0,Ne.moveColumnTo)(e,C,g),m=({name:L})=>S=>S.name===L,h=T.findIndex(m(C)),x=T[h+1],k=x?r.columns.findIndex(m(x)):-1;g>f&&k!==-1?o((0,Ne.moveColumnTo)(r.columns,C,k-1)):o((0,Ne.moveColumnTo)(r.columns,C,k))},[e,o,r.columns]),a=(0,Me.useCallback)(f=>{var x;let C=f.target.closest(".vuuTableHeaderCell"),T=parseInt((x=C==null?void 0:C.dataset.index)!=null?x:"-1"),m=(0,Ne.visibleColumnAtIndex)(e,T),h=f.shiftKey;m&&t(m,h)},[e,t]),{onMouseDown:u,draggable:c,...p}=(0,Dt.useDragDrop)({allowDragDrop:!0,containerRef:n,draggableClassName:"vuuTable",itemQuery:".vuuTableHeaderCell",onDrop:i,orientation:"horizontal",scrollingContainerRef:l});return{draggableColumn:c,draggedColumnIndex:p.draggedItemIndex,onClick:a,onMouseDown:u,setContainerRef:s}};var fe=require("react/jsx-runtime"),Do=(0,Pt.memo)(({classBase:e="vuuTable",columns:o,headings:t,onMoveColumn:r,onMoveGroupColumn:n,onRemoveGroupColumn:l,onResizeColumn:s,onSortColumn:i,tableConfig:a,tableId:u,virtualColSpan:c=0})=>{let{draggableColumn:p,draggedColumnIndex:f,onClick:g,onMouseDown:C,setContainerRef:T}=Mt({columns:o,onMoveColumn:r,onSortColumn:i,tableConfig:a});return(0,fe.jsxs)("div",{className:`${e}-col-headings`,ref:T,children:[t.map((m,h)=>(0,fe.jsx)("div",{className:"vuuTable-heading",children:m.map(({label:x,width:k},L)=>(0,fe.jsx)("div",{className:"vuuTable-headingCell",style:{width:k},children:x},L))},h)),(0,fe.jsxs)("div",{className:`${e}-col-headers`,role:"row",children:[c>0?(0,fe.jsx)("div",{role:"cell",className:"vuuTableCell",style:{width:c}}):null,o.filter(oo.isNotHidden).map((m,h)=>(0,oo.isGroupColumn)(m)?(0,fe.jsx)(Ye,{"aria-colindex":m.index,column:m,"data-index":h,onMoveColumn:n,onRemoveColumn:l,onResize:s},m.name):(0,fe.jsx)(vo,{"aria-colindex":m.index,className:(0,Ht.default)({"vuuDraggable-dragAway":h===f}),column:m,"data-index":h,id:`${u}-col-${h}`,onClick:g,onMouseDown:C,onResize:s},m.name)),p]})]})});Do.displayName="TableHeader";var fn=require("@vuu-ui/vuu-ui-controls"),W=require("@vuu-ui/vuu-utils"),H=require("react");var Et=require("@vuu-ui/vuu-utils"),St=e=>(o,t)=>{let r=[];return e===void 0||(o==="header"||o==="column-menu")&&(r.push(...vr(t,e)),r.push(...wr(t,e)),r.push(...hr(t,e)),r.push(...xr(t)),r.push({action:"column-settings",icon:"cog",label:"Column Settings",options:t}),r.push({action:"table-settings",icon:"cog",label:"DataGrid Settings",options:t})),r};function vr(e,{sort:{sortDefs:o}}){let{column:t}=e,r=[];if(t===void 0)return r;let n=o.length>0;return t.sorted==="A"?r.push({label:"Reverse Sort (DSC)",action:"sort-dsc",options:e}):t.sorted==="D"?r.push({label:"Reverse Sort (ASC)",action:"sort-asc",options:e}):typeof t.sorted=="number"?(t.sorted>0?r.push({label:"Reverse Sort (DSC)",action:"sort-add-dsc",options:e}):r.push({label:"Reverse Sort (ASC)",action:"sort-add-asc",options:e}),n&&Math.abs(t.sorted)<o.length&&r.push({label:"Remove from sort",action:"sort-remove",options:e}),r.push({label:"New Sort",children:[{label:"Ascending",action:"sort-asc",options:e},{label:"Descending",action:"sort-dsc",options:e}]})):n?(r.push({label:"Add to sort",children:[{label:"Ascending",action:"sort-add-asc",options:e},{label:"Descending",action:"sort-add-dsc",options:e}]}),r.push({label:"New Sort",children:[{label:"Ascending",action:"sort-asc",options:e},{label:"Descending",action:"sort-dsc",options:e}]})):r.push({label:"Sort",children:[{label:"Ascending",action:"sort-asc",options:e},{label:"Descending",action:"sort-dsc",options:e}]}),r}function hr(e,o){let{column:t}=e;if(t===void 0||o.groupBy.length===0)return[];let{name:r,label:n=r}=t;return[{label:`Aggregate ${n}`,children:[{label:"Count",action:"agg-count",options:e},{label:"Distinct",action:"agg-distinct",options:e}].concat((0,Et.isNumericColumn)(t)?[{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 Eo=(e,o)=>({label:`Pin ${o}`,action:`column-pin-${o}`,options:e}),Mo=e=>Eo(e,"left"),Ho=e=>Eo(e,"floating"),Po=e=>Eo(e,"right");function xr(e){let{column:o}=e;if(o===void 0)return[];let{pin:t}=o,r=[{label:"Hide column",action:"column-hide",options:e},{label:"Remove column",action:"column-remove",options:e}];return t===void 0?r.push({label:"Pin column",children:[Mo(e),Ho(e),Po(e)]}):t==="left"?r.push({label:"Unpin column",action:"column-unpin",options:e},{label:"Pin column",children:[Ho(e),Po(e)]}):t==="right"?r.push({label:"Unpin column",action:"column-unpin",options:e},{label:"Pin column",children:[Mo(e),Ho(e)]}):t==="floating"&&r.push({label:"Unpin column",action:"column-unpin",options:e},{label:"Pin column",children:[Mo(e),Po(e)]}),r}function wr(e,{groupBy:o}){let{column:t}=e,r=[];if(t===void 0)return r;let{name:n,label:l=n}=t;return o.length===0?r.push({label:`Group by ${l}`,action:"group",options:e}):r.push({label:`Add ${l} to group by`,action:"group-add",options:e}),r}var kt=require("@vuu-ui/vuu-utils"),V=require("@vuu-ui/vuu-utils"),Tr=(e,o)=>{if(e.filterStruct&&o){let[t,r]=(0,kt.removeColumnFromFilter)(o,e.filterStruct);return{filter:r,filterStruct:t}}else return e},{Average:Rr,Count:yr,Distinct:Dr,High:Mr,Low:Hr,Sum:Pr}=V.AggregationType,Lt=({dataSource:e,onPersistentColumnOperation:o})=>r=>{let n=r.options;if(n.column&&e){let{column:l}=n;switch(r.menuId){case"sort-asc":return e.sort=(0,V.setSortColumn)(e.sort,l,"A"),!0;case"sort-dsc":return e.sort=(0,V.setSortColumn)(e.sort,l,"D"),!0;case"sort-add-asc":return e.sort=(0,V.addSortColumn)(e.sort,l,"A"),!0;case"sort-add-dsc":return e.sort=(0,V.addSortColumn)(e.sort,l,"D"),!0;case"group":return e.groupBy=(0,V.addGroupColumn)(e.groupBy,l),!0;case"group-add":return e.groupBy=(0,V.addGroupColumn)(e.groupBy,l),!0;case"column-hide":return o({type:"hideColumns",columns:[l]}),!0;case"column-remove":return e.columns=e.columns.filter(s=>s!==l.name),!0;case"filter-remove-column":return e.filter=Tr(e.filter,l),!0;case"remove-filters":return e.filter={filter:""},!0;case"agg-avg":return e.aggregations=(0,V.setAggregations)(e.aggregations,l,Rr),!0;case"agg-high":return e.aggregations=(0,V.setAggregations)(e.aggregations,l,Mr),!0;case"agg-low":return e.aggregations=(0,V.setAggregations)(e.aggregations,l,Hr),!0;case"agg-count":return e.aggregations=(0,V.setAggregations)(e.aggregations,l,yr),!0;case"agg-distinct":return e.aggregations=(0,V.setAggregations)(e.aggregations,l,Dr),!0;case"agg-sum":return e.aggregations=(0,V.setAggregations)(e.aggregations,l,Pr),!0;case"column-pin-floating":return o({type:"pinColumn",column:l,pin:"floating"}),!0;case"column-pin-left":return o({type:"pinColumn",column:l,pin:"left"}),!0;case"column-pin-right":return o({type:"pinColumn",column:l,pin:"right"}),!0;case"column-unpin":return o({type:"pinColumn",column:l,pin:void 0}),!0;case"column-settings":return o({type:"columnSettings",column:l}),!0;case"table-settings":return o({type:"tableSettings"}),!0;default:}}return!1};var So=(e,o)=>{switch(o.type){case"col-size":return{...e,columns:e.columns.map(t=>t.name===o.column.name?{...t,width:o.width}:t)};case"column-prop":return{...e,columns:e.columns.map(t=>t.name===o.column.name?{...t,[o.property]:o.value}:t)};default:return e}};var Ft=require("@vuu-ui/vuu-utils"),we=require("react");var ko=e=>`.vuuTable-col-headers .vuuTableHeaderCell:nth-child(${e})`,Lo=(e,o)=>`.vuuTable-body > [aria-rowindex='${e+1}'] > [role='cell']:nth-child(${o+1})`,At=(e,[o,t])=>{var l;let r=o===-1?ko(t):Lo(o,t),n=(l=e.current)==null?void 0:l.querySelector(r);return Er(n)&&n.querySelector("button")||n},Er=e=>e==null?void 0:e.classList.contains("vuuTableCell-editable"),It=e=>e.querySelector(".vuuTableInputCell")!==null;function Sr(e){if(e){let o=e.ariaRowIndex;if(o!==null)return parseInt(o,10)-1}return-1}var kr=e=>e.closest('[role="row"]'),zt=e=>Sr(kr(e)),Lr=[void 0,void 0],Nt=(e,o,t=e.closest(".vuuTable-contentContainer"))=>{if(t){let r=t==null?void 0:t.getBoundingClientRect(),n=r.top+o,l=e.getBoundingClientRect();if(l)return l.bottom>r.bottom?["down",l.bottom-r.bottom]:l.top<n?["up",l.top-n]:Lr;throw Error("Whats going on, row not found")}else throw Error("Whats going on, scrollbar container not found")};var Kt=({navigate:e})=>{let o=(0,we.useCallback)(()=>{e()},[e]),t=(0,we.useCallback)(a=>{let u=a.target,c=u.matches("input")?u:u.querySelector("input");c&&(c.focus(),c.select())},[]),r=(0,we.useCallback)(a=>{let c=a.target.querySelector("input");c&&(c.focus(),c.select())},[]),n=(0,we.useCallback)(a=>{let u=a.target;It(u)&&((0,Ft.isCharacterKey)(a.key)?t(a):a.key==="Enter"&&r(a))},[t,r]),l=(0,we.useCallback)(a=>{let u=a.target;(u.matches("input")||u.querySelector("input"))&&(t(a),a.stopPropagation())},[t]),s=(0,we.useCallback)(a=>{a.target.removeEventListener("vuu-commit",o,!0)},[o]),i=(0,we.useCallback)(a=>{a.target.addEventListener("vuu-commit",o,!0)},[o]);return{onBlur:s,onDoubleClick:l,onFocus:i,onKeyDown:n}};var Te=require("@vuu-ui/vuu-utils"),U=require("react");var Fe=require("@vuu-ui/vuu-utils"),{SELECTED:Ao}=Fe.metadataKeys,to=class{constructor({from:o,to:t}){this.rowCount=0;this.setRowCount=o=>{o<this.data.length&&(this.data.length=o),this.rowCount=o};this.range=new Fe.WindowRange(o,t),this.data=new Array(Math.max(0,t-o)),this.rowCount=0}add(o){let[t]=o;if(this.isWithinRange(t)){let r=t-this.range.from;if(this.data[r]=o,o[Ao]){let n=this.data[r-1];(0,Fe.isRowSelectedLast)(n)&&(this.data[r-1]=n.slice(),this.data[r-1][Ao]-=4)}}}getAtIndex(o){return this.range.isWithin(o)&&this.data[o-this.range.from]!=null?this.data[o-this.range.from]:void 0}isWithinRange(o){return this.range.isWithin(o)}setRange({from:o,to:t}){if(o!==this.range.from||t!==this.range.to){let[r,n]=this.range.overlap(o,t),l=new Array(Math.max(0,t-o));for(let s=r;s<n;s++){let i=this.getAtIndex(s);if(i){let a=s-o;l[a]=i}}this.data=l,this.range.from=o,this.range.to=t}}getSelectedRows(){return this.data.filter(o=>o[Ao]!==0)}};var Ar=e=>e.type==="vuu-link-created"||e.type==="vuu-link-removed",Ot=({dataSource:e,onFeatureInvocation:o,onSizeChange:t,onSubscribed:r,range:n=Te.NULL_RANGE,renderBufferSize:l=0})=>{let[,s]=(0,U.useState)(null),i=(0,U.useRef)([]),a=(0,U.useRef)(!0),u=(0,U.useRef)(!1),c=(0,U.useRef)(n),p=(0,U.useMemo)(()=>new to((0,Te.getFullRange)(n,l)),[]),f=(0,U.useCallback)(m=>{for(let h of m)p.add(h);i.current=p.data,a.current?s({}):console.log("ignore update as we're not mounted")},[p]),g=(0,U.useCallback)(m=>{m.type==="subscribed"?r==null||r(m):m.type==="viewport-update"?(typeof m.size=="number"&&(t==null||t(m.size),p.setRowCount(m.size)),m.rows?f(m.rows):typeof m.size=="number"&&(i.current=p.data,u.current=!0)):Ar(m)?o==null||o(m):console.log(`useDataSource unexpected message ${m.type}`)},[p,o,t,r,f]),C=(0,U.useCallback)(()=>p.getSelectedRows(),[p]);(0,U.useEffect)(()=>{var m;return a.current=!0,(m=e.resume)==null||m.call(e),()=>{var h;a.current=!1,(h=e.suspend)==null||h.call(e)}},[e]),(0,U.useEffect)(()=>{var m;e.status==="disabled"?(m=e.enable)==null||m.call(e,g):e==null||e.subscribe({range:(0,Te.getFullRange)(n,l)},g)},[e,g,n,l]);let T=(0,U.useCallback)(m=>{if(!(0,Te.rangesAreSame)(m,c.current)){let h=(0,Te.getFullRange)(m,l);p.setRange(h),e.range=c.current=h,e.emit("range",m)}},[e,p,l]);return{data:i.current,dataRef:i,getSelectedRows:C,range:c.current,setRange:T}};var no=require("react"),$t=e=>{let o=(0,no.useRef)(e);return(0,no.useMemo)(()=>o.current,[])};var Vt=require("@vuu-ui/vuu-utils"),Wt=require("@salt-ds/core"),K=require("react");var Ut=new Set(["Home","End","PageUp","PageDown","ArrowDown","ArrowUp"]),Io=new Set(Ut);Io.add("ArrowLeft");Io.add("ArrowRight");var Ir=(e,o)=>{switch(o){case"cell":return Io.has(e);case"row":return Ut.has(e);default:return!1}},zr=["Home","End","PageUp","PageDown"],Gt=e=>zr.includes(e),Nr=[-1,-1];function Bt(e,[o,t],r,n){return e==="ArrowUp"?o>-1?[o-1,t]:[o,t]:e==="ArrowDown"?o===-1?[0,t]:o===n-1?[o,t]:[o+1,t]:e==="ArrowRight"?t<r?[o,t+1]:[o,t]:e==="ArrowLeft"?t>1?[o,t-1]:[o,t]:[o,t]}var _t=({columnCount:e=0,containerRef:o,disableFocus:t=!1,defaultHighlightedIndex:r,disableHighlightOnFocus:n,highlightedIndex:l,navigationStyle:s,requestScroll:i,onHighlight:a,rowCount:u=0,viewportRowCount:c})=>{var F;let p=(0,K.useRef)([-1,-1]),f=(0,K.useRef)(),g=(0,K.useRef)([-1,0]),C=(0,K.useRef)(),[T,m]=(0,Wt.useControlled)({controlled:l,default:r,name:"UseKeyboardNavigation"});C.current=T;let h=(0,K.useCallback)((v,w=!1)=>{a==null||a(v),m(v)},[a,m]),x=v=>v==null?void 0:v.closest("[role='columnHeader'],[role='cell']"),k=v=>{var w;if(v.role==="columnHeader")return[-1,parseInt((w=v.dataset.idx)!=null?w:"-1",10)];{let b=v.closest("[role='row']");if(b){let y=(0,Vt.getIndexFromRowElement)(b),D=Array.from(b.childNodes).indexOf(v);return[y,D]}}return Nr},L=(0,K.useCallback)(v=>{var w;if(o.current){let b=At(o,v);b&&(b!==f.current&&((w=f.current)==null||w.removeAttribute("tabindex"),f.current=b,b.setAttribute("tabindex","0")),i==null||i({type:"scroll-row",rowIndex:v[0]}),b.focus({preventScroll:!0}))}},[o,i]),S=(0,K.useCallback)((v,w,b=!1)=>{let y=[v,w];g.current=y,s==="row"?m(v):L(y),b&&(p.current=y)},[L,s,m]),E=(0,K.useCallback)((v,[w,b])=>new Promise(y=>{let D=w;switch(v){case"PageDown":{D=Math.min(u-1,w+c),D!==w&&(i==null||i({type:"scroll-page",direction:"down"}));break}case"PageUp":{D=Math.max(0,w-c),D!==w&&(i==null||i({type:"scroll-page",direction:"up"}));break}case"Home":{D=0,D!==w&&(i==null||i({type:"scroll-end",direction:"home"}));break}case"End":{D=u-1,D!==w&&(i==null||i({type:"scroll-end",direction:"end"}));break}}setTimeout(()=>{y([D,b])},35)}),[i,u,c]),I=(0,K.useCallback)(()=>{var v;if(n!==!0&&(v=o.current)!=null&&v.contains(document.activeElement)){let w=x(document.activeElement);w&&(p.current=k(w),s==="row"&&m(p.current[0]))}},[n,o,s,m]),O=(0,K.useCallback)(async v=>{let[w,b]=Gt(v)?await E(v,g.current):Bt(v,g.current,e,u),[y,D]=g.current;(w!==y||b!==D)&&S(w,b,!0)},[e,E,u,S]),G=(0,K.useCallback)(v=>{i==null||i({type:"scroll-row",rowIndex:v})},[i]),_=(0,K.useCallback)(async v=>{let{current:w}=C,[b]=Gt(v)?await E(v,[w!=null?w:-1,0]):Bt(v,[w!=null?w:-1,0],e,u);b!==w&&(h(b),G(b))},[e,E,u,G,h]);(0,K.useEffect)(()=>{l!==void 0&&l!==-1&&G(l)},[l,G]);let Q=(0,K.useCallback)(v=>{u>0&&Ir(v.key,s)&&(v.preventDefault(),v.stopPropagation(),s==="row"?_(v.key):O(v.key))},[u,s,_,O]),ue=(0,K.useCallback)(v=>{let w=v.target,b=x(w);if(b){let[y,D]=k(b);S(y,D)}},[S]),z=(0,K.useCallback)(()=>{h(-1)},[h]),P=(0,K.useCallback)(v=>{let w=zt(v.target);w!==-1&&w!==C.current&&h(w)},[h]),ce=(0,K.useCallback)(()=>{O("ArrowDown")},[O]),Ce=((F=o.current)==null?void 0:F.firstChild)!=null;return(0,K.useEffect)(()=>{if(Ce&&f.current===void 0&&!t){let{current:v}=o,w=(v==null?void 0:v.querySelector(ko(0)))||(v==null?void 0:v.querySelector(Lo(0,0)));w&&(w.setAttribute("tabindex","0"),f.current=w)}},[o,t,Ce]),{highlightedIndexRef:C,navigate:ce,onClick:ue,onFocus:I,onKeyDown:Q,onMouseLeave:s==="row"?z:void 0,onMouseMove:s==="row"?P:void 0}};var me=require("@vuu-ui/vuu-utils"),He=require("react"),{IDX:Fr}=me.metadataKeys,Kr=[],Or=["Enter"," "],Xt=({highlightedIndexRef:e,selectionKeys:o=Or,selectionModel:t,onSelect:r,onSelectionChange:n})=>{let l=(0,He.useRef)(-1),s=(0,He.useRef)(Kr),i=(0,He.useCallback)(c=>o.includes(c.key),[o]),a=(0,He.useCallback)((c,p,f)=>{let{[Fr]:g}=c,{current:C}=l,{current:T}=s,h=((0,me.isRowSelected)(c)?me.deselectItem:me.selectItem)(t,T,g,p,f,C);s.current=h,l.current=g,r==null||r(c),n==null||n(h)},[r,n,t]);return{onKeyDown:(0,He.useCallback)(c=>{if(i(c)){let{current:p}=e;if(p!==void 0&&p!==-1){let f=c.target.querySelector(`[aria-rowindex="${p}"]`);f&&(0,me.dispatchMouseEvent)(f,"click")}}},[e,i]),onRowClick:a}};var Qt=require("@vuu-ui/vuu-popups"),ro=require("@vuu-ui/vuu-utils"),Jt=require("react"),$r=[],Zt=({columns:e,data:o,dataSource:t,getSelectedRows:r})=>{let[n]=(0,Qt.useContextMenu)();return(0,Jt.useCallback)(s=>{let i=s.target,a=i==null?void 0:i.closest("div[role='cell']"),u=i==null?void 0:i.closest("div[role='row']");if(a&&u){let{selectedRowsCount:c}=t,p=(0,ro.buildColumnMap)(e),f=(0,ro.getIndexFromRowElement)(u),g=Array.from(u.childNodes).indexOf(a),C=o.find(([m])=>m===f),T=e[g];n(s,"grid",{columnMap:p,columnName:T,row:C,selectedRows:c===0?$r:r(),viewport:t.viewport})}},[e,o,t,r,n])};var R=require("@vuu-ui/vuu-utils"),Yt=require("@vuu-ui/vuu-ui-controls"),jt=require("react"),{info:zo}=(0,R.logger)("useTableModel"),Gr=100,Br=({serverDataType:e})=>e===void 0,qt=(e,o)=>{let t=o==null?void 0:o.columns.find(({name:r})=>r===e.name);return t?t.serverDataType:e.serverDataType},Vr=["int","long","double"],en=e=>e===void 0?void 0:Vr.includes(e)?"right":"left",No=e=>e.type==="columnSettings",Fo=e=>e.type==="tableSettings",Wr=(e,o)=>{switch(zo==null||zo(`TableModelReducer ${o.type}`),o.type){case"init":return on(o);case"moveColumn":return _r(e,o);case"resizeColumn":return Jr(e,o);case"setTableSchema":return Zr(e,o);case"hideColumns":return Xr(e,o);case"showColumns":return Qr(e,o);case"pinColumn":return Yr(e,o);case"updateColumnProp":return Ke(e,o);case"tableConfig":return nn(e,o);default:return console.log(`unhandled action ${o.type}`),e}},Ko=(e,o)=>{let[t,r]=(0,jt.useReducer)(Wr,{tableConfig:e,dataSource:o},on),{columns:n,headings:l,tableConfig:s,...i}=t;return{columns:n,dispatchColumnAction:r,headings:l,tableAttributes:i,tableConfig:s}};function on({dataSource:e,tableConfig:o}){let{columns:t,...r}=o,{config:n,tableSchema:l}=e,s=t.filter((0,R.subscribedOnly)(n==null?void 0:n.columns)).map(tn(r,l)),i=s.some(R.isPinned)?(0,R.sortPinnedColumns)(s):s,a={columns:i,headings:(0,R.getTableHeadings)(i),tableConfig:o,...r};if(n){let{columns:u,...c}=n;a=nn(a,{type:"tableConfig",...c})}return a}var Ur=(e,o)=>o==="uppercase"?e.toUpperCase():o==="capitalize"?e[0].toUpperCase()+e.slice(1).toLowerCase():e,tn=(e,o)=>(t,r)=>{let{columnDefaultWidth:n=Gr,columnFormatHeader:l}=e,s=qt(t,o),{align:i=en(s),name:a,label:u=(0,R.getColumnLabel)(t),width:c=n,...p}=t,f={...p,align:i,CellRenderer:(0,R.getCellRenderer)(t),HeaderCellContentRenderer:(0,R.getColumnHeaderContentRenderer)(t),HeaderCellLabelRenderer:(0,R.getColumnHeaderLabelRenderer)(t),clientSideEditValidationCheck:(0,R.hasValidationRules)(t.type)?(0,Yt.buildValidationChecker)(t.type.renderer.rules):void 0,index:r+1,label:Ur(u,l),name:a,originalIdx:r,serverDataType:s,valueFormatter:(0,R.getValueFormatter)(t,s),width:c};return(0,R.isGroupColumn)(f)&&(f.columns=f.columns.map(g=>tn(e)(g,r))),f};function _r(e,{column:o,moveBy:t}){let{columns:r}=e;if(typeof t=="number"){let n=r.indexOf(o),l=r.slice(),[s]=l.splice(n,1);return l.splice(n+t,0,s),{...e,columns:l}}return e}function Xr(e,{columns:o}){return o.some(t=>t.hidden!==!0)?o.reduce((t,r)=>r.hidden!==!0?Ke(t,{type:"updateColumnProp",column:r,hidden:!0}):t,e):e}function Qr(e,{columns:o}){return o.some(t=>t.hidden)?o.reduce((t,r)=>r.hidden?Ke(t,{type:"updateColumnProp",column:r,hidden:!1}):t,e):e}function Jr(e,{column:o,phase:t,width:r}){let n="updateColumnProp",l=t!=="end";switch(t){case"begin":return Ke(e,{type:n,column:o,resizing:l});case"end":return Ke(e,{type:n,column:o,resizing:l,width:r});case"resize":return Ke(e,{type:n,column:o,width:r});default:throw Error(`useTableModel.resizeColumn, invalid resizePhase ${t}`)}}function Zr(e,{tableSchema:o}){let{columns:t}=e;if(t.some(Br)){let r=t.map(n=>{var s;let l=qt(n,o);return{...n,align:(s=n.align)!=null?s:en(l),serverDataType:l}});return{...e,columns:r}}else return e}function Yr(e,o){let{columns:t}=e,{column:r,pin:n}=o,l=t.find(s=>s.name===r.name);return l?(t=(0,R.replaceColumn)(t,{...l,pin:n}),t=(0,R.sortPinnedColumns)(t),{...e,columns:t}):e}function Ke(e,o){let{columns:t,tableConfig:r}=e,{align:n,column:l,hidden:s,label:i,resizing:a,width:u}=o,c=t.find(p=>p.name===l.name);if(c&&((n==="left"||n==="right")&&(t=(0,R.replaceColumn)(t,{...c,align:n})),typeof i=="string"&&(t=(0,R.replaceColumn)(t,{...c,label:i})),typeof a=="boolean"&&(t=(0,R.replaceColumn)(t,{...c,resizing:a})),typeof s=="boolean"&&(t=(0,R.replaceColumn)(t,{...c,hidden:s})),typeof u=="number")){t=(0,R.replaceColumn)(t,{...c,width:u});let p=r.columns.find(f=>f.name===l.name);p&&(r={...r,columns:(0,R.replaceColumn)(r.columns,{...p,width:u})})}return{...e,columns:t,tableConfig:r}}function nn(e,{confirmed:o,filter:t,groupBy:r,sort:n}){let l=r!==void 0,s=typeof(t==null?void 0:t.filter)=="string",i=n&&n.sortDefs.length>0,a=e;return l&&(a={...e,columns:(0,R.applyGroupByToColumns)(a.columns,r,o)}),i&&(a={...e,columns:(0,R.applySortToColumns)(a.columns,n)}),s?a={...e,columns:(0,R.applyFilterToColumns)(a.columns,t)}:a.columns.some(R.isFilteredColumn)&&(a={...e,columns:(0,R.stripFilterFromColumns)(a.columns)}),a}var Pe=require("@vuu-ui/vuu-utils"),M=require("react");var jr=100,rn=200,ln=e=>{let{clientHeight:o,clientWidth:t,scrollHeight:r,scrollWidth:n}=e;return[n-t,r-o]},qr=(e,o)=>{if(e!==void 0){let{scrollTop:t}=e;return o>t?"fwd":"bwd"}},sn=(e,o)=>{let{clientHeight:t,clientWidth:r,scrollHeight:n,scrollLeft:l,scrollTop:s,scrollWidth:i}=e,a=i-r,u=l/(i-r),c=n-t,p=s/(n-t),f=qr(o,s);return f==="fwd"&&p>.99?p=1:f==="bwd"&&p<.02&&(p=0),[l,u,a,s,p,c]},un={scrollToIndex:()=>{},scrollToKey:()=>{}},an=({onAttach:e,onDetach:o})=>{let t=(0,M.useRef)(null);return(0,M.useCallback)(n=>{if(n)t.current=n,e==null||e(n);else if(t.current){let{current:l}=t;t.current=n,o==null||o(l)}},[e,o])},Oo=({columns:e,getRowAtPosition:o,onHorizontalScroll:t,onVerticalScroll:r,onVerticalScrollInSitu:n,scrollingApiRef:l,setRange:s,viewportMeasurements:i})=>{let a=(0,M.useRef)(0),u=(0,M.useRef)(!1),c=(0,M.useRef)({scrollTop:0,scrollLeft:0}),p=(0,M.useRef)(!1),f=(0,M.useRef)({scrollTop:0,scrollLeft:0}),g=(0,M.useRef)(null),C=(0,M.useRef)(null),T=(0,M.useRef)(0),{appliedPageSize:m,isVirtualScroll:h,rowCount:x,totalHeaderHeight:k,viewportWidth:L}=i,S=(0,M.useRef)([]),[,E]=(0,M.useState)({}),I=(0,M.useRef)(0);(0,M.useMemo)(()=>{let[b,y]=(0,Pe.getColumnsInViewport)(e,c.current.scrollLeft,c.current.scrollLeft+L+rn);I.current=y,S.current=b},[L,e]);let O=(0,M.useCallback)(b=>{if(c.current.scrollLeft=b,t==null||t(b),Math.abs(b-T.current)>jr){T.current=b;let[y,D]=(0,Pe.getColumnsInViewport)(e,b,b+L+rn);(0,Pe.itemsChanged)(S.current,y)&&(I.current=D,S.current=y,E({}))}},[e,t,L]),G=(0,M.useCallback)((b,y)=>{c.current.scrollTop=b,r==null||r(b,y);let D=o(b);D!==a.current&&(a.current=D,s({from:D,to:D+x})),n==null||n(0)},[o,r,n,s,x]),_=(0,M.useCallback)(()=>{let{current:b}=C,{current:y}=g,{current:D}=u,{current:Z}=f;if(D)u.current=!1;else if(b&&y){p.current=!0;let[oe,Y,,J,$]=sn(y,Z);Z.scrollLeft=oe,Z.scrollTop=J;let[N,X]=ln(y),te=Math.round(Y*N),ne=$*X;b.scrollTo({left:te,top:ne,behavior:"auto"})}n==null||n(0)},[n]),Q=(0,M.useCallback)(()=>{let{current:b}=p,{current:y}=C,{current:D}=g,{current:Z}=c;if(y&&D){let[oe,Y,J,$,N,X]=sn(y);u.current=!0,b?p.current=!1:(D.scrollLeft=Math.round(Y*J),D.scrollTop=N*X),Z.scrollTop!==$&&G($,N),Z.scrollLeft!==oe&&O(oe)}},[G,O]),ue=(0,M.useCallback)(b=>{g.current=b,b.addEventListener("scroll",_,{passive:!0})},[_]),z=(0,M.useCallback)(b=>{g.current=null,b.removeEventListener("scroll",_)},[_]),P=(0,M.useCallback)(b=>{C.current=b,b.addEventListener("scroll",Q,{passive:!0})},[Q]),ce=(0,M.useCallback)(b=>{C.current=null,b.removeEventListener("scroll",Q)},[Q]),Ce=an({onAttach:P,onDetach:ce}),F=an({onAttach:ue,onDetach:z}),v=(0,M.useCallback)(b=>{let{current:y}=C;if(y){let[D,Z]=ln(y),{scrollLeft:oe,scrollTop:Y}=y;if(u.current=!1,b.type==="scroll-row"){let J=(0,Pe.getRowElementAtIndex)(y,b.rowIndex);if(J!==null){let[$,N]=Nt(J,k);if($&&N)if(h){let X=$==="down"?1:-1;n==null||n(X);let te=a.current+X;a.current=te,s({from:te,to:te+x})}else{let X=oe,te=Y;$==="up"||$==="down"?te=Math.min(Math.max(0,Y+N),Z):X=Math.min(Math.max(0,oe+N),D),y.scrollTo({top:te,left:X,behavior:"smooth"})}}}else if(b.type==="scroll-page"){let{direction:J}=b;if(h){let $=J==="down"?x:-x;n==null||n($);let N=a.current+$;a.current=N,s({from:N,to:N+x})}else{let $=J==="down"?m:-m,N=Math.min(Math.max(0,Y+$),Z);y.scrollTo({top:N,left:oe,behavior:"auto"})}}else if(b.type==="scroll-end"){let{direction:J}=b,$=J==="end"?Z:0;y.scrollTo({top:$,left:y.scrollLeft,behavior:"auto"})}}},[m,h,n,s,k,x]),w=(0,M.useMemo)(()=>({scrollToIndex:b=>{if(g.current){let y=(b-30)*20;g.current.scrollTop=y}},scrollToKey:b=>{console.log(`scrollToKey ${b}`)}}),[]);return(0,M.useImperativeHandle)(l,()=>g.current?w:un,[w]),(0,M.useEffect)(()=>{let{current:b}=a,y={from:b,to:b+x};s(y)},[s,x]),{columnsWithinViewport:S.current,scrollbarContainerRef:F,contentContainerRef:Ce,requestScroll:v,virtualColSpan:I.current}};var Oe=require("@vuu-ui/vuu-utils"),le=require("react"),el=1e7,ol={appliedPageSize:0,contentHeight:0,contentWidth:0,getRowAtPosition:()=>-1,getRowOffset:()=>-1,horizontalScrollbarHeight:0,isVirtualScroll:!1,pinnedWidthLeft:0,pinnedWidthRight:0,rowCount:0,setInSituRowOffset:()=>{},setScrollTop:()=>{},totalHeaderHeight:0,verticalScrollbarWidth:0,viewportBodyHeight:0,viewportWidth:0},$o=({columns:e,headerHeight:o,headings:t,rowCount:r,rowHeight:n,selectionEndSize:l=4,size:s})=>{let i=(0,le.useRef)(0),a=(0,le.useRef)(0),u=Math.min(n*r,el),c=r*n,p=c-u,{pinnedWidthLeft:f,pinnedWidthRight:g,unpinnedWidth:C}=(0,le.useMemo)(()=>(0,Oe.measurePinnedColumns)(e,l),[e,l]),T=(0,le.useRef)(o);(0,le.useMemo)(()=>{T.current=o*(1+t.length)},[o,t.length]);let[m,h,x]=(0,le.useMemo)(()=>{if(p){let[S,E,I]=(0,Oe.virtualRowPositioning)(n,p,a);return[G=>S(G,i.current),E,I]}else return(0,Oe.actualRowPositioning)(n)},[p,n]),k=(0,le.useCallback)((S,E)=>{a.current=E},[]),L=(0,le.useCallback)(S=>{S===0?i.current=0:i.current=Math.max(0,i.current+S)},[]);return(0,le.useMemo)(()=>{if(s){let{current:S}=T,E=15,I=f+C+g,O=I>s.width?E:0,G=(s.height-o)/n,_=Number.isInteger(G)?G:Math.ceil(G),Q=s.height-S,ue=u>Q?E:0,z=_*n*(u/c),P=s.width;return{appliedPageSize:z,contentHeight:u,contentWidth:I,getRowAtPosition:h,getRowOffset:m,isVirtualScroll:x,horizontalScrollbarHeight:O,pinnedWidthLeft:f,pinnedWidthRight:g,rowCount:_,setInSituRowOffset:L,setScrollTop:k,totalHeaderHeight:S,verticalScrollbarWidth:ue,viewportBodyHeight:Q,viewportWidth:P}}else return ol},[h,m,o,x,f,C,g,u,n,L,k,s,c])};var cn=require("@vuu-ui/vuu-layout"),mn=require("@vuu-ui/vuu-utils"),ie=require("react"),pn=({availableColumns:e,onAvailableColumnsChange:o,onConfigChange:t,onCreateCalculatedColumn:r,onDataSourceConfigChange:n,tableConfig:l})=>{let s=(0,cn.useLayoutProviderDispatch)(),i=(0,ie.useRef)(),[a,u]=(0,ie.useState)(e),c=(0,ie.useCallback)((m,h,x)=>{s({type:"set-props",path:"#context-panel",props:{expanded:!0,content:{type:m,props:x},title:h}})},[s]),p=(0,ie.useCallback)(()=>{requestAnimationFrame(()=>{var m;(m=i.current)==null||m.call(i)})},[]),f=(0,ie.useCallback)(m=>{let h=a.concat({name:m.name,serverDataType:(0,mn.getCalculatedColumnType)(m)});u(h),o==null||o(h),requestAnimationFrame(()=>{var x;(x=i.current)==null||x.call(i)}),r(m)},[a,o,r]),g=(0,ie.useCallback)(m=>{c("ColumnSettings","Column Settings",{column:m.column,onCancelCreateColumn:p,onConfigChange:t,onCreateCalculatedColumn:f,tableConfig:l,vuuTable:m.vuuTable})},[p,f,t,c,l]),C=(0,ie.useCallback)(()=>{g({column:{name:"::",serverDataType:"string"},type:"columnSettings",vuuTable:{module:"SIMUL",table:"instruments"}})},[g]),T=(0,ie.useCallback)(m=>{let h=l.columns.find(x=>x.name===m);h&&g({type:"columnSettings",column:h,vuuTable:{module:"SIMUL",table:"instruments"}})},[g,l.columns]);return i.current=(0,ie.useCallback)(()=>{c("TableSettings","DataGrid Settings",{availableColumns:a!=null?a:l.columns.map(({name:m,serverDataType:h})=>({name:m,serverDataType:h})),onAddCalculatedColumn:C,onConfigChange:t,onDataSourceConfigChange:n,onNavigateToColumn:T,tableConfig:l})},[a,C,T,t,n,c,l]),{showColumnSettingsPanel:g,showTableSettingsPanel:i.current}};var lo=e=>e,{KEY:tl,IS_EXPANDED:dn,IS_LEAF:bn}=W.metadataKeys,nl={draggable:void 0,onMouseDown:void 0},rl=()=>nl,ll=(e,o)=>({...e,columns:e.columns.concat(o)}),gn=({allowDragDrop:e=!1,availableColumns:o,config:t,containerRef:r,dataSource:n,disableFocus:l,headerHeight:s=25,highlightedIndex:i,id:a,navigationStyle:u="cell",onAvailableColumnsChange:c,onConfigChange:p,onDragStart:f,onDrop:g,onFeatureInvocation:C,onHighlight:T,onRowClick:m,onSelect:h,onSelectionChange:x,renderBufferSize:k=0,rowHeight:L=20,scrollingApiRef:S,selectionModel:E,size:I})=>{let[O,G]=(0,H.useState)(n.size);if(n===void 0)throw Error("no data source provided to Vuu Table");let _=e?fn.useDragDrop:rl,Q=(0,H.useMemo)(()=>St(n),[n]),ue=(0,H.useCallback)(d=>{G(d)},[]),{columns:z,dispatchColumnAction:P,headings:ce,tableAttributes:Ce,tableConfig:F}=Ko(t,n);(0,W.useLayoutEffectSkipFirst)(()=>{P({type:"init",tableConfig:t,dataSource:n})},[t,n,P]);let v=(0,H.useCallback)(d=>{P({type:"init",tableConfig:d,dataSource:n}),p==null||p(lo(d))},[n,P,p]),w=(0,H.useMemo)(()=>(0,W.buildColumnMap)(n.columns),[n.columns]),b=(0,H.useCallback)(({tableSchema:d})=>{d?P({type:"setTableSchema",tableSchema:d}):console.log("subscription message with no schema")},[P]),{getRowAtPosition:y,getRowOffset:D,setInSituRowOffset:Z,setScrollTop:oe,...Y}=$o({columns:z,headerHeight:s,headings:ce,rowCount:O,rowHeight:L,size:I}),J=$t({from:0,to:Y.rowCount}),{data:$,dataRef:N,getSelectedRows:X,range:te,setRange:ne}=Ot({dataSource:n,onFeatureInvocation:C,renderBufferSize:k,onSizeChange:ue,onSubscribed:b,range:J}),{requestScroll:po,...bo}=Oo({columns:z,getRowAtPosition:y,rowHeight:L,scrollingApiRef:S,setRange:ne,onVerticalScroll:oe,onVerticalScrollInSitu:Z,viewportMeasurements:Y}),_e=(0,H.useCallback)(d=>{P({type:"init",tableConfig:d,dataSource:n}),p==null||p(lo(d))},[n,P,p]),Re=(0,H.useCallback)(d=>{n.config={...n.config,...d}},[n]);(0,H.useEffect)(()=>{n.on("config",(d,A)=>{P({type:"tableConfig",...d,confirmed:A})})},[n,P]);let In=(0,H.useCallback)(d=>{n.columns=n.columns.concat(d.name),v(ll(F,d))},[n,F,v]),Wo=(0,H.useCallback)(d=>{let{columns:A}=d,B=A.map(q=>q.name),j={...F,columns:F.columns.map(q=>B.includes(q.name)?{...q,hidden:!0}:q)};v(j)},[F,v]),Uo=(0,H.useCallback)(d=>{v({...F,columns:(0,W.updateColumn)(F.columns,{...d.column,pin:d.pin})})},[F,v]),{showColumnSettingsPanel:_o,showTableSettingsPanel:Xo}=pn({availableColumns:o!=null?o:F.columns.map(({name:d,serverDataType:A="string"})=>({name:d,serverDataType:A})),onAvailableColumnsChange:c,onConfigChange:_e,onCreateCalculatedColumn:In,onDataSourceConfigChange:Re,tableConfig:F}),zn=(0,H.useCallback)(d=>{if(No(d))_o(d);else if(Fo(d))Xo();else switch(d.type){case"hideColumns":return Wo(d);case"pinColumn":return Uo(d);default:P(d)}},[P,Wo,Uo,_o,Xo]),Nn=Lt({dataSource:n,onPersistentColumnOperation:zn}),Fn=(0,H.useCallback)((d,A=!1,B)=>{n&&(n.sort=(0,W.applySort)(n.sort,d,A,B))},[n]),fo=(0,H.useRef)(),Kn=(0,H.useCallback)((d,A,B)=>{var q,Be,ve;let j=z.find(re=>re.name===A);if(j)if(d==="resize")(q=fo.current)==null||q.forEach(re=>{re.style.width=`${B}px`});else if(d==="end")fo.current=void 0,(0,W.isValidNumber)(B)&&(P({type:"resizeColumn",phase:d,column:j,width:B}),p==null||p(lo(So(F,{type:"col-size",column:j,width:B}))));else{let re=`[aria-colindex='${j.index}']`;fo.current=Array.from((ve=(Be=r.current)==null?void 0:Be.querySelectorAll(`.vuuTableCell${re},.vuuTableHeaderCell${re}`))!=null?ve:[]),P({type:"resizeColumn",phase:d,column:j,width:B})}else throw Error(`useDataTable.handleColumnResize, column ${A} not found`)},[z,P,p,F,r]),On=(0,H.useCallback)((d,A)=>{var q,Be;let B=(0,W.isJsonGroup)(A,d,w),j=d[tl];if(d[dn]){if(n.closeTreeNode(j,!0),B){let ve=z.indexOf(A),re=(q=n.getRowsAtDepth)==null?void 0:q.call(n,ve+1);re&&!re.some(Ee=>Ee[dn]||Ee[bn])&&P({type:"hideColumns",columns:z.slice(ve+2)})}}else if(n.openTreeNode(j),B){let ve=(Be=n.getChildRows)==null?void 0:Be.call(n,j),re=z.indexOf(A)+1,Ee=[z[re]];ve&&ve.some(go=>go[bn])&&Ee.push(z[re+1]),Ee.some(go=>go.hidden)&&P({type:"showColumns",columns:Ee})}},[w,z,n,P]),{highlightedIndexRef:Qo,navigate:$n,onFocus:Jo,onKeyDown:Zo,...Gn}=_t({columnCount:z.filter(d=>d.hidden!==!0).length,containerRef:r,disableFocus:l,highlightedIndex:i,navigationStyle:u,requestScroll:po,rowCount:n==null?void 0:n.size,onHighlight:T,viewportRange:te,viewportRowCount:Y.rowCount}),{onBlur:Bn,onDoubleClick:Vn,onKeyDown:Yo,onFocus:jo}=Kt({navigate:$n}),Wn=(0,H.useCallback)(d=>{Jo(),d.defaultPrevented||jo(d)},[jo,Jo]),Un=Zt({columns:z,data:$,dataSource:n,getSelectedRows:X}),_n=(0,H.useCallback)(d=>{n.groupBy=d.map(A=>A.name)},[n]),Xn=(0,H.useCallback)(d=>{(0,W.isGroupColumn)(d)?n.groupBy=[]:n&&n.groupBy.includes(d.name)&&(n.groupBy=n.groupBy.filter(A=>A!==d.name))},[n]),Qn=(0,H.useCallback)(d=>{n.select(d),x==null||x(d)},[n,x]),{onKeyDown:qo,onRowClick:et}=Xt({highlightedIndexRef:Qo,onSelect:h,onSelectionChange:Qn,selectionModel:E}),Jn=(0,H.useCallback)(d=>{Zo(d),d.defaultPrevented||Yo(d),d.defaultPrevented||qo(d)},[Zo,Yo,qo]),Zn=(0,H.useCallback)((d,A,B)=>{et(d,A,B),m==null||m(d)},[m,et]),Yn=(0,H.useCallback)(d=>{let A={...F,columns:d};P({type:"init",tableConfig:A,dataSource:n}),p==null||p(lo(A))},[n,P,p,F]),jn=(0,H.useCallback)(d=>{g==null||g(d)},[g]),qn=(0,H.useCallback)(async(d,A,B)=>n.applyEdit(d,A,B),[n]),er=(0,H.useCallback)(d=>{let{initialDragElement:A}=d,B=(0,W.getIndexFromRowElement)(A),j=N.current.find(q=>q[0]===B);j&&d.setPayload(j),f==null||f(d)},[N,f]),{onMouseDown:or,draggable:tr}=_({allowDragDrop:e,containerRef:r,draggableClassName:"vuuTable",id:a,onDragStart:er,onDrop:jn,orientation:"vertical",itemQuery:".vuuTableRow"});return{...Gn,"aria-rowcount":n.size,draggableRow:tr,onBlur:Bn,onDoubleClick:Vn,onFocus:Wn,onKeyDown:Jn,onMouseDown:or,columnMap:w,columns:z,data:$,getRowOffset:D,handleContextMenuAction:Nn,headings:ce,highlightedIndex:Qo.current,menuBuilder:Q,onContextMenu:Un,onDataEdited:qn,onMoveColumn:Yn,onMoveGroupColumn:_n,onRemoveGroupColumn:Xn,onRowClick:Zn,onSortColumn:Fn,onResizeColumn:Kn,onToggleGroup:On,scrollProps:bo,tableAttributes:Ce,tableConfig:F,viewportMeasurements:Y}};var se=require("react/jsx-runtime"),ge="vuuTable",{IDX:il,RENDER_IDX:sl}=io.metadataKeys,al=({Row:e=yo,allowDragDrop:o,availableColumns:t,config:r,containerRef:n,dataSource:l,disableFocus:s=!1,highlightedIndex:i,id:a,navigationStyle:u="cell",onAvailableColumnsChange:c,onConfigChange:p,onDragStart:f,onDrop:g,onFeatureInvocation:C,onHighlight:T,onRowClick:m,onSelect:h,onSelectionChange:x,renderBufferSize:k=5,rowHeight:L=20,scrollingApiRef:S,selectionModel:E="extended",showColumnHeaders:I=!0,headerHeight:O=I?25:0,size:G})=>{let _=(0,io.useId)(a),{columnMap:Q,columns:ue,data:z,draggableRow:P,getRowOffset:ce,handleContextMenuAction:Ce,headings:F,highlightedIndex:v,onDataEdited:w,onMoveColumn:b,onMoveGroupColumn:y,onRemoveGroupColumn:D,onResizeColumn:Z,onRowClick:oe,onSortColumn:Y,onToggleGroup:J,menuBuilder:$,scrollProps:N,tableAttributes:X,tableConfig:te,viewportMeasurements:ne,...po}=gn({allowDragDrop:o,availableColumns:t,config:r,containerRef:n,dataSource:l,disableFocus:s,headerHeight:O,highlightedIndex:i,id:_,navigationStyle:u,onAvailableColumnsChange:c,onConfigChange:p,onDragStart:f,onDrop:g,onFeatureInvocation:C,onHighlight:T,onRowClick:m,onSelect:h,onSelectionChange:x,renderBufferSize:k,rowHeight:L,scrollingApiRef:S,selectionModel:E,size:G}),bo=(0,Go.default)(`${ge}-contentContainer`,{[`${ge}-colLines`]:X.columnSeparators,[`${ge}-rowLines`]:X.rowSeparators,[`${ge}-zebra`]:X.zebraStripes}),_e={"--content-height":`${ne.contentHeight}px`,"--content-width":`${ne.contentWidth}px`,"--horizontal-scrollbar-height":`${ne.horizontalScrollbarHeight}px`,"--pinned-width-left":`${ne.pinnedWidthLeft}px`,"--pinned-width-right":`${ne.pinnedWidthRight}px`,"--header-height":`${O}px`,"--row-height":`${L}px`,"--total-header-height":`${ne.totalHeaderHeight}px`,"--vertical-scrollbar-width":`${ne.verticalScrollbarWidth}px`,"--viewport-body-height":`${ne.viewportBodyHeight}px`};return(0,se.jsxs)(Cn.ContextMenuProvider,{menuActionHandler:Ce,menuBuilder:$,children:[(0,se.jsx)("div",{className:`${ge}-scrollbarContainer`,ref:N.scrollbarContainerRef,style:_e,children:(0,se.jsx)("div",{className:`${ge}-scrollbarContent`})}),(0,se.jsx)("div",{className:bo,ref:N.contentContainerRef,style:_e,children:(0,se.jsxs)("div",{...po,className:`${ge}-table`,role:"table",tabIndex:s?void 0:-1,children:[I?(0,se.jsx)(Do,{columns:N.columnsWithinViewport,headings:F,onMoveColumn:b,onMoveGroupColumn:y,onRemoveGroupColumn:D,onResizeColumn:Z,onSortColumn:Y,tableConfig:te,tableId:_,virtualColSpan:N.virtualColSpan}):null,(0,se.jsx)("div",{className:`${ge}-body`,children:z.map(Re=>(0,se.jsx)(e,{"aria-rowindex":Re[0]+1,columnMap:Q,columns:N.columnsWithinViewport,highlighted:v===Re[il],onClick:oe,onDataEdited:w,row:Re,offset:ce(Re),onToggleGroup:J,virtualColSpan:N.virtualColSpan,zebraStripes:X.zebraStripes},Re[sl]))})]})}),P]})},ul=(0,$e.forwardRef)(function({Row:o,allowDragDrop:t,availableColumns:r,className:n,config:l,dataSource:s,disableFocus:i,highlightedIndex:a,id:u,navigationStyle:c,onAvailableColumnsChange:p,onConfigChange:f,onDragStart:g,onDrop:C,onFeatureInvocation:T,onHighlight:m,onRowClick:h,onSelect:x,onSelectionChange:k,renderBufferSize:L,rowHeight:S,scrollingApiRef:E,selectionModel:I,showColumnHeaders:O,headerHeight:G,style:_,...Q},ue){let z=(0,$e.useRef)(null),[P,ce]=(0,$e.useState)();if(l===void 0)throw Error("vuu Table requires config prop. Minimum config is list of Column Descriptors");if(s===void 0)throw Error("vuu Table requires dataSource prop");return(0,se.jsx)(vn.MeasuredContainer,{...Q,className:(0,Go.default)(ge,n),id:u,onResize:ce,ref:(0,hn.useForkRef)(z,ue),children:P?(0,se.jsx)(al,{Row:o,allowDragDrop:t,availableColumns:r,config:l,containerRef:z,dataSource:s,disableFocus:i,headerHeight:G,highlightedIndex:a,id:u,navigationStyle:c,onAvailableColumnsChange:p,onConfigChange:f,onDragStart:g,onDrop:C,onFeatureInvocation:T,onHighlight:m,onRowClick:h,onSelect:x,onSelectionChange:k,renderBufferSize:L,rowHeight:S,scrollingApiRef:E,selectionModel:I,showColumnHeaders:O,size:P}):null})});var so=require("react"),ao=require("@vuu-ui/vuu-ui-controls"),xn=require("@salt-ds/core"),Ge=require("@vuu-ui/vuu-utils"),Bo=require("react/jsx-runtime"),Vo=(0,so.memo)(({column:e,columnMap:o,onCommit:t=ao.WarnCommit,row:r})=>{let n=o[e.name],l=r[n],s=(0,so.useCallback)(i=>async a=>{let u=await t(i);return u===!0&&(0,Ge.dispatchCustomEvent)(a.target,"vuu-commit"),u},[t]);return e.editable?(0,Bo.jsx)(xn.Checkbox,{checked:l,onClick:s(!l)}):(0,Bo.jsx)(ao.CheckboxIcon,{checked:l,disabled:!0})},Ge.dataAndColumnUnchanged);Vo.displayName="CheckboxCell";(0,Ge.registerComponent)("checkbox-cell",Vo,"cell-renderer",{serverDataType:"boolean"});var wn=require("@vuu-ui/vuu-utils"),Tn=require("@salt-ds/core"),Rn=require("@vuu-ui/vuu-ui-controls"),yn=ae(require("clsx"));var co=require("react/jsx-runtime"),uo="vuuTableInputCell",cl=()=>(console.warn("onCommit handler has not been provided to InputCell cell renderer"),Promise.resolve(!0)),Dn=({column:e,columnMap:o,onCommit:t=cl,row:r})=>{let n=o[e.name],{align:l="left",clientSideEditValidationCheck:s}=e,{warningMessage:i,...a}=(0,Rn.useEditableText)({initialValue:r[n],onCommit:t,clientSideEditValidationCheck:s}),u=i&&l==="left"?(0,co.jsx)("span",{className:`${uo}-icon`,"data-icon":"error"}):void 0,c=i&&l==="right"?(0,co.jsx)("span",{className:`${uo}-icon`,"data-icon":"error"}):void 0;return(0,co.jsx)(Tn.Input,{...a,className:(0,yn.default)(uo,{[`${uo}-error`]:i!==void 0}),endAdornment:u,startAdornment:c})};(0,wn.registerComponent)("input-cell",Dn,"cell-renderer",{});var Hn=require("@vuu-ui/vuu-ui-controls"),pe=require("@vuu-ui/vuu-utils"),Pn=ae(require("clsx")),mo=require("react"),En=require("@vuu-ui/vuu-ui-controls");var kn=require("react/jsx-runtime"),Mn="vuuTableToggleCell",ml=({name:e,type:o})=>{if((0,pe.isTypeDescriptor)(o)&&(0,pe.isValueListRenderer)(o.renderer))return o.renderer.values;throw Error(`useLookupValues column ${e} has not been configured with a values list`)},Sn=(0,mo.memo)(function({column:o,columnMap:t,onCommit:r=Hn.WarnCommit,row:n}){let l=ml(o),s=t[o.name],i=n[s],a=(0,mo.useCallback)((u,c)=>r(c).then(p=>(p===!0&&(0,pe.dispatchCustomEvent)(u.target,"vuu-commit"),p)),[r]);return(0,kn.jsx)(En.CycleStateButton,{className:(0,Pn.default)(Mn,`${Mn}-${o.name}`),onCommit:a,value:i,values:l,variant:"cta",children:i})},pe.dataAndColumnUnchanged);(0,pe.registerComponent)("toggle-cell",Sn,"cell-renderer",{});var Ln=require("@vuu-ui/vuu-ui-controls"),An=require("@vuu-ui/vuu-utils"),Ue=require("react"),pl=(e,o)=>{let t=(0,Ue.useRef)(null),[r,n]=(0,Ln.useStateRef)(e),l=(0,Ue.useCallback)(i=>{var a;if(i.key==="ArrowDown")n((u=-1)=>Math.min(o-1,u+1));else if(i.key==="ArrowUp")n((u=-1)=>Math.max(0,u-1));else if(i.key==="Enter"||i.key===" "){let{current:u}=r,c=(a=t.current)==null?void 0:a.querySelector(`[aria-rowindex="${u}"]`);c&&(0,An.dispatchMouseEvent)(c,"click")}},[r,o,n]),s=(0,Ue.useCallback)(i=>{n(i)},[n]);return{highlightedIndexRef:r,onHighlight:s,onKeyDown:l,tableRef:t}};
|
|
1
|
+
"use strict";var mr=Object.create;var Ze=Object.defineProperty;var pr=Object.getOwnPropertyDescriptor;var dr=Object.getOwnPropertyNames;var br=Object.getPrototypeOf,fr=Object.prototype.hasOwnProperty;var gr=(e,o)=>{for(var t in o)Ze(e,t,{get:o[t],enumerable:!0})},rt=(e,o,t,r)=>{if(o&&typeof o=="object"||typeof o=="function")for(let n of dr(o))!fr.call(e,n)&&n!==t&&Ze(e,n,{get:()=>o[n],enumerable:!(r=pr(o,n))||r.enumerable});return e};var me=(e,o,t)=>(t=e!=null?mr(br(e)):{},rt(o||!e||!e.__esModule?Ze(t,"default",{value:e,enumerable:!0}):t,e)),Cr=e=>rt(Ze({},"__esModule",{value:!0}),e);var Tl={};gr(Tl,{CheckboxCell:()=>_o,GroupHeaderCellNext:()=>eo,HeaderCell:()=>wo,InputCell:()=>An,Table:()=>vl,TableCell:()=>Ro,TableGroupCell:()=>Do,ToggleCell:()=>Gn,isShowColumnSettings:()=>Ko,isShowTableSettings:()=>Oo,noScrolling:()=>pn,updateTableConfig:()=>Ao,useControlledTableNavigation:()=>xl,useTableModel:()=>$o,useTableScroll:()=>Bo,useTableViewport:()=>Vo});module.exports=Cr(Tl);var ft=require("@vuu-ui/vuu-ui-controls"),gt=require("@vuu-ui/vuu-utils"),Ct=me(require("clsx")),Ge=require("react");var it=me(require("clsx")),st=require("react");var Ye=require("react/jsx-runtime"),lt="vuuColumnHeaderPill",Ie=({children:e,className:o,column:t,onRemove:r,removable:n,...l})=>{if(n&&typeof r!="function")throw Error("ColumnHeaderPill onRemove prop must be provided if Pill is removable");let s=(0,st.useCallback)(i=>{i.preventDefault(),i.stopPropagation(),r==null||r(t)},[t,r]);return(0,Ye.jsxs)("div",{...l,className:(0,it.default)(lt,o),children:[e,n?(0,Ye.jsx)("span",{className:`${lt}-removeButton`,role:"button","data-icon":"cross",onClick:s}):null]})};var ze=require("react/jsx-runtime"),at=({column:e,...o})=>{let{name:t,sorted:r}=e,n=typeof r=="number"?r<0?"arrow-down":"arrow-up":r==="A"?"arrow-up":r==="D"?"arrow-down":void 0;return(0,ze.jsxs)(Ie,{...o,column:e,children:[(0,ze.jsx)("span",{className:"vuuGroupColumnPill-label",children:t}),n!==void 0?(0,ze.jsx)("span",{"data-icon":n}):null,typeof r=="number"?(0,ze.jsx)("span",{className:"vuuSortPosition",children:Math.abs(r)}):null]})};var Xe=require("react/jsx-runtime"),ut=({column:e})=>{if(!e.sorted)return null;let o=typeof e.sorted=="number"?e.sorted<0?"arrow-down":"arrow-up":e.sorted==="A"?"arrow-up":"arrow-down";return(0,Xe.jsxs)(Ie,{column:e,children:[(0,Xe.jsx)("span",{"data-icon":o}),typeof e.sorted=="number"?(0,Xe.jsx)("span",{className:"vuuSortPosition",children:Math.abs(e.sorted)}):null]})};var Ne=require("react");var mt=require("react/jsx-runtime"),ct=()=>{},vr="vuuColumnResizerNext",je=({onDrag:e,onDragEnd:o=ct,onDragStart:t=ct})=>{let r=(0,Ne.useRef)({start:0,now:0}),n=(0,Ne.useCallback)(i=>{i.stopPropagation&&i.stopPropagation(),i.preventDefault&&i.preventDefault();let{current:a}=r,u=Math.round(i.clientX),p=u-a.now,m=a.now-a.start;r.current.now=u,p!==0&&e(i,p,m)},[e]),l=(0,Ne.useCallback)(i=>{window.removeEventListener("mouseup",l),window.removeEventListener("mousemove",n);let{current:a}=r,u=a.now-a.start;o(i,u)},[o,n]),s=(0,Ne.useCallback)(i=>{let{current:a}=r;t(i),a.now=a.start=Math.round(i.clientX),window.addEventListener("mouseup",l),window.addEventListener("mousemove",n),i.stopPropagation&&i.stopPropagation(),i.preventDefault&&i.preventDefault()},[t,n,l]);return(0,mt.jsx)("div",{className:vr,onMouseDown:s})};var we=require("react"),qe=({column:e,onResize:o,rootRef:t})=>{let r=(0,we.useRef)({start:0,now:0}),[n,l]=(0,we.useState)(!1),{name:s}=e,i=(0,we.useCallback)(()=>{if(o&&t.current){let{current:p}=r,{width:m}=t.current.getBoundingClientRect();p.start=p.now=Math.round(m),l(!0),o==null||o("begin",s)}},[s,o,t]),a=(0,we.useCallback)((p,m,b)=>{if(t.current&&o){let{current:C}=r,h=C.start+b;h!==C.now&&h>0&&(o("resize",s,h),C.now=h)}},[s,o,t]),u=(0,we.useCallback)(()=>{if(o){let{current:p}=r;o("end",s,p.now),setTimeout(()=>{l(!1)},80)}},[s,o]);return{isResizing:n,onDrag:a,onDragStart:i,onDragEnd:u}};var pt=require("@vuu-ui/vuu-utils"),dt=me(require("clsx")),bt=require("react"),xe=(e,o,t)=>(0,bt.useMemo)(()=>{let r=(0,dt.default)(o,{vuuPinFloating:e.pin==="floating",vuuPinLeft:e.pin==="left",vuuPinRight:e.pin==="right",vuuEndPin:t&&e.endPin,[`${o}-editable`]:e.editable,[`${o}-right`]:e.align==="right"}),n=(0,pt.getColumnStyle)(e);return{className:r,style:n}},[e,o,t]);var Fe=require("react/jsx-runtime"),vt=require("react"),ho="vuuTableGroupHeaderCell",hr=(e,o)=>e===o?e:o,eo=({column:e,className:o,onMoveColumn:t,onRemoveColumn:r,onResize:n,...l})=>{let s=(0,Ge.useRef)(null),{isResizing:i,...a}=qe({column:e,onResize:n,rootRef:s}),[u,p]=(0,Ge.useState)(e.columns),{className:m,style:b}=xe(e,ho,!0),C=u.length>1?{removable:!0,onRemove:r}:void 0,h=(0,Ge.useCallback)((x,c)=>{p(v=>{let T=v.slice(),[k]=T.splice(x,1);if(c===-1){let y=T.concat(k);return t==null||t(y),y}else return T.splice(c,0,k),t==null||t(T),T})},[t]);return(0,gt.useLayoutEffectSkipFirst)(()=>{p(x=>hr(x,e.columns))},[e.columns]),(0,Fe.jsxs)("div",{...l,className:(0,Ct.default)(m,o,{[`${ho}-pending`]:e.groupConfirmed===!1}),ref:s,role:"columnheader",style:b,children:[(0,Fe.jsx)(ft.OverflowContainer,{allowDragDrop:!0,className:`${ho}-inner`,height:24,onMoveItem:h,overflowPosition:"start",children:u.map(x=>(0,vt.createElement)(at,{...C,column:x,key:x.name}))}),(0,Fe.jsx)(Ie,{column:e,removable:!0,onRemove:r}),e.resizeable!==!1?(0,Fe.jsx)(je,{...a}):null]})};var Rt=me(require("clsx")),to=require("react");var ht=require("@vuu-ui/vuu-popups"),wt=me(require("clsx")),Pe=require("react");var Tt=require("react/jsx-runtime"),wr=e=>{if(e){let{bottom:o,left:t}=e.getBoundingClientRect();return{x:t,y:o+6}}},xt=({className:e,column:o,...t})=>{let r=(0,Pe.useRef)(null),[n,l]=(0,Pe.useState)(!1),[s]=(0,ht.useContextMenu)(),i=(0,Pe.useCallback)(()=>{l(!1)},[]),a=(0,Pe.useCallback)(u=>{l(!0),s(u,"column-menu",{column:o,ContextMenuProps:{onClose:i,position:wr(r.current)}})},[o,i,s]);return(0,Tt.jsx)("span",{...t,className:(0,wt.default)("vuuTable-columnMenu",e,{"vuuTable-columnMenu-open":n}),"data-icon":"more-vert",onClick:a,ref:r})};var ge=require("react/jsx-runtime"),oo="vuuTableHeaderCell",wo=({className:e,column:o,onClick:t,onResize:r,...n})=>{var T;let{HeaderCellContentRenderer:l,HeaderCellLabelRenderer:s}=o,i=(0,to.useRef)(null),{isResizing:a,...u}=qe({column:o,onResize:r,rootRef:i}),p=(0,to.useCallback)(k=>{!a&&(t==null||t(k))},[a,t]),{className:m,style:b}=xe(o,oo,!0),C=(0,ge.jsx)(xt,{column:o}),h=s?(0,ge.jsx)(s,{className:`${oo}-label`,column:o}):(0,ge.jsx)("div",{className:`${oo}-label`,children:(T=o.label)!=null?T:o.name}),x=l?[(0,ge.jsx)(l,{column:o},"content")]:[],c=(0,ge.jsx)(ut,{column:o}),v=o.align==="right"?[c,h].concat(x).concat(C):[C,h,c].concat(x);return(0,ge.jsxs)("div",{...n,className:(0,Rt.default)(m,e,{[`${oo}-resizing`]:a}),onClick:p,ref:i,role:"columnheader",style:b,children:[...v,o.resizeable!==!1?(0,ge.jsx)(je,{...u}):null]})};var Dn=require("@vuu-ui/vuu-popups"),Mn=require("@vuu-ui/vuu-ui-controls"),uo=require("@vuu-ui/vuu-utils"),Hn=require("@salt-ds/core"),Wo=me(require("clsx")),We=require("react");var re=require("@vuu-ui/vuu-utils"),Mo=me(require("clsx")),Ee=require("react");var yt=require("@vuu-ui/vuu-utils"),xo=require("react");var To=require("react/jsx-runtime"),xr="vuuTableCell",Ro=({column:e,columnMap:o,onClick:t,onDataEdited:r,row:n})=>{let{className:l,style:s}=xe(e,xr),{CellRenderer:i,index:a,name:u,valueFormatter:p}=e,m=o[u],b=(0,xo.useCallback)(h=>{if(r){let x=h;return(0,yt.isNumericColumn)(e)&&typeof h=="string"&&(x=e.serverDataType==="double"?parseFloat(h):parseInt(h)),r==null?void 0:r(n,u,x)}else throw Error("TableCell onDataEdited prop not supplied for an editable cell")},[e,u,r,n]),C=(0,xo.useCallback)(h=>{t==null||t(h,e)},[e,t]);return(0,To.jsx)("div",{"aria-colindex":a,className:l,onClick:t?C:void 0,role:"cell",style:s,children:i?(0,To.jsx)(i,{column:e,columnMap:o,onCommit:b,row:n}):p(n[m])})};var no=require("@vuu-ui/vuu-utils"),Dt=require("react");var Mt=me(require("clsx"));var Ke=require("react/jsx-runtime"),{IS_LEAF:Tr}=no.metadataKeys,yo="vuuTableGroupCell",Do=({column:e,columnMap:o,onClick:t,row:r})=>{let{columns:n}=e,[l,s]=(0,no.getGroupValueAndOffset)(n,r,o),{className:i,style:a}=xe(e,yo),u=(0,Dt.useCallback)(b=>{t==null||t(b,e)},[e,t]),p=r[Tr],m=Array(s).fill(0).map((b,C)=>(0,Ke.jsx)("span",{className:`${yo}-spacer`},C));return(0,Ke.jsxs)("div",{className:(0,Mt.default)(i,"vuuTableCell"),role:"cell",style:a,onClick:p?void 0:u,children:[m,p?null:(0,Ke.jsx)("span",{className:`${yo}-toggle`,"data-icon":"triangle-right"}),(0,Ke.jsx)("span",{children:l})]})};var Te=require("react/jsx-runtime"),{IDX:Rr,IS_EXPANDED:yr,SELECTED:Dr}=re.metadataKeys,pe="vuuTableRow",Ht=(0,Ee.forwardRef)(function({height:o},t){return(0,Te.jsx)("div",{"aria-hidden":!0,className:(0,Mo.default)(pe,`${pe}-proxy`),ref:t,style:{height:o}})}),Ho=(0,Ee.memo)(({className:e,classNameGenerator:o,columnMap:t,columns:r,highlighted:n,row:l,offset:s,onClick:i,onDataEdited:a,onToggleGroup:u,virtualColSpan:p=0,zebraStripes:m=!1,...b})=>{let{[Rr]:C,[yr]:h,[Dr]:x}=l,c=(0,Ee.useCallback)(E=>{let z=E.shiftKey,G=E.ctrlKey||E.metaKey;i==null||i(l,z,G)},[i,l]),{True:v,First:T,Last:k}=re.RowSelected,y=(0,Mo.default)(pe,e,o==null?void 0:o(l,t),{[`${pe}-even`]:m&&C%2===0,[`${pe}-expanded`]:h,[`${pe}-highlighted`]:n,[`${pe}-selected`]:x&v,[`${pe}-selectedStart`]:x&T,[`${pe}-selectedEnd`]:x&k}),L={transform:`translate3d(0px, ${s}px, 0px)`},F=(0,Ee.useCallback)((E,z)=>{((0,re.isGroupColumn)(z)||(0,re.isJsonGroup)(z,l,t))&&(E.stopPropagation(),u==null||u(l,z))},[t,u,l]);return(0,Te.jsxs)("div",{...b,role:"row",className:y,onClick:c,style:L,children:[(0,Te.jsx)("span",{className:`${pe}-selectionDecorator vuuStickyLeft`}),p>0?(0,Te.jsx)("div",{className:"vuuTableCell",style:{width:p}}):null,r.filter(re.isNotHidden).map(E=>{let z=(0,re.isGroupColumn)(E),G=(0,re.isJsonColumn)(E);return(0,Te.jsx)(z?Do:Ro,{column:E,columnMap:t,onClick:z||G?F:void 0,onDataEdited:a,row:l},E.name)}),(0,Te.jsx)("span",{className:`${pe}-selectionDecorator vuuStickyRight`})]})});Ho.displayName="Row";var ro=require("@vuu-ui/vuu-utils"),kt=me(require("clsx")),St=require("react");var Pt=require("@vuu-ui/vuu-ui-controls"),Oe=require("@vuu-ui/vuu-utils"),ke=require("react"),Et=({columns:e,onMoveColumn:o,onSortColumn:t,tableConfig:r})=>{let n=(0,ke.useRef)(null),l=(0,ke.useRef)(null),s=(0,ke.useCallback)(b=>{n.current=b,b?l.current=b.closest(".vuuTable-contentContainer"):l.current=null},[]),i=(0,ke.useCallback)(({fromIndex:b,toIndex:C})=>{let h=e[b],x=(0,Oe.moveColumnTo)(e,h,C),c=({name:y})=>L=>L.name===y,v=x.findIndex(c(h)),T=x[v+1],k=T?r.columns.findIndex(c(T)):-1;C>b&&k!==-1?o((0,Oe.moveColumnTo)(r.columns,h,k-1)):o((0,Oe.moveColumnTo)(r.columns,h,k))},[e,o,r.columns]),a=(0,ke.useCallback)(b=>{var T;let h=b.target.closest(".vuuTableHeaderCell"),x=parseInt((T=h==null?void 0:h.dataset.index)!=null?T:"-1"),c=(0,Oe.visibleColumnAtIndex)(e,x),v=b.shiftKey;c&&t(c,v)},[e,t]),{onMouseDown:u,draggable:p,...m}=(0,Pt.useDragDrop)({allowDragDrop:!0,containerRef:n,draggableClassName:"vuuTable",itemQuery:".vuuTableHeaderCell",onDrop:i,orientation:"horizontal",scrollingContainerRef:l});return{draggableColumn:p,draggedColumnIndex:m.draggedItemIndex,onClick:a,onMouseDown:u,setContainerRef:s}};var Ce=require("react/jsx-runtime"),Po=(0,St.memo)(({classBase:e="vuuTable",columns:o,headings:t,onMoveColumn:r,onMoveGroupColumn:n,onRemoveGroupColumn:l,onResizeColumn:s,onSortColumn:i,tableConfig:a,tableId:u,virtualColSpan:p=0})=>{let{draggableColumn:m,draggedColumnIndex:b,onClick:C,onMouseDown:h,setContainerRef:x}=Et({columns:o,onMoveColumn:r,onSortColumn:i,tableConfig:a});return(0,Ce.jsxs)("div",{className:`${e}-col-headings`,ref:x,children:[t.map((c,v)=>(0,Ce.jsx)("div",{className:"vuuTable-heading",children:c.map(({label:T,width:k},y)=>(0,Ce.jsx)("div",{className:"vuuTable-headingCell",style:{width:k},children:T},y))},v)),(0,Ce.jsxs)("div",{className:`${e}-col-headers`,role:"row",children:[p>0?(0,Ce.jsx)("div",{role:"cell",className:"vuuTableCell",style:{width:p}}):null,o.filter(ro.isNotHidden).map((c,v)=>(0,ro.isGroupColumn)(c)?(0,Ce.jsx)(eo,{"aria-colindex":c.index,column:c,"data-index":v,onMoveColumn:n,onRemoveColumn:l,onResize:s},c.name):(0,Ce.jsx)(wo,{"aria-colindex":c.index,className:(0,kt.default)({"vuuDraggable-dragAway":v===b}),column:c,"data-index":v,id:`${u}-col-${v}`,onClick:C,onMouseDown:h,onResize:s},c.name)),m]})]})});Po.displayName="TableHeader";var xn=require("@vuu-ui/vuu-ui-controls"),_=require("@vuu-ui/vuu-utils"),H=require("react");var Lt=require("@vuu-ui/vuu-utils"),At=e=>(o,t)=>{let r=[];return e===void 0||(o==="header"||o==="column-menu")&&(r.push(...Mr(t,e)),r.push(...Er(t,e)),r.push(...Hr(t,e)),r.push(...Pr(t)),r.push({action:"column-settings",icon:"cog",label:"Column Settings",options:t}),r.push({action:"table-settings",icon:"cog",label:"DataGrid Settings",options:t})),r};function Mr(e,{sort:{sortDefs:o}}){let{column:t}=e,r=[];if(t===void 0)return r;let n=o.length>0;return t.sorted==="A"?r.push({label:"Reverse Sort (DSC)",action:"sort-dsc",options:e}):t.sorted==="D"?r.push({label:"Reverse Sort (ASC)",action:"sort-asc",options:e}):typeof t.sorted=="number"?(t.sorted>0?r.push({label:"Reverse Sort (DSC)",action:"sort-add-dsc",options:e}):r.push({label:"Reverse Sort (ASC)",action:"sort-add-asc",options:e}),n&&Math.abs(t.sorted)<o.length&&r.push({label:"Remove from sort",action:"sort-remove",options:e}),r.push({label:"New Sort",children:[{label:"Ascending",action:"sort-asc",options:e},{label:"Descending",action:"sort-dsc",options:e}]})):n?(r.push({label:"Add to sort",children:[{label:"Ascending",action:"sort-add-asc",options:e},{label:"Descending",action:"sort-add-dsc",options:e}]}),r.push({label:"New Sort",children:[{label:"Ascending",action:"sort-asc",options:e},{label:"Descending",action:"sort-dsc",options:e}]})):r.push({label:"Sort",children:[{label:"Ascending",action:"sort-asc",options:e},{label:"Descending",action:"sort-dsc",options:e}]}),r}function Hr(e,o){let{column:t}=e;if(t===void 0||o.groupBy.length===0)return[];let{name:r,label:n=r}=t;return[{label:`Aggregate ${n}`,children:[{label:"Count",action:"agg-count",options:e},{label:"Distinct",action:"agg-distinct",options:e}].concat((0,Lt.isNumericColumn)(t)?[{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 Lo=(e,o)=>({label:`Pin ${o}`,action:`column-pin-${o}`,options:e}),Eo=e=>Lo(e,"left"),ko=e=>Lo(e,"floating"),So=e=>Lo(e,"right");function Pr(e){let{column:o}=e;if(o===void 0)return[];let{pin:t}=o,r=[{label:"Hide column",action:"column-hide",options:e},{label:"Remove column",action:"column-remove",options:e}];return t===void 0?r.push({label:"Pin column",children:[Eo(e),ko(e),So(e)]}):t==="left"?r.push({label:"Unpin column",action:"column-unpin",options:e},{label:"Pin column",children:[ko(e),So(e)]}):t==="right"?r.push({label:"Unpin column",action:"column-unpin",options:e},{label:"Pin column",children:[Eo(e),ko(e)]}):t==="floating"&&r.push({label:"Unpin column",action:"column-unpin",options:e},{label:"Pin column",children:[Eo(e),So(e)]}),r}function Er(e,{groupBy:o}){let{column:t}=e,r=[];if(t===void 0)return r;let{name:n,label:l=n}=t;return o.length===0?r.push({label:`Group by ${l}`,action:"group",options:e}):r.push({label:`Add ${l} to group by`,action:"group-add",options:e}),r}var It=require("@vuu-ui/vuu-utils"),U=require("@vuu-ui/vuu-utils"),kr=(e,o)=>{if(e.filterStruct&&o){let[t,r]=(0,It.removeColumnFromFilter)(o,e.filterStruct);return{filter:r,filterStruct:t}}else return e},{Average:Sr,Count:Lr,Distinct:Ar,High:Ir,Low:zr,Sum:Nr}=U.AggregationType,zt=({dataSource:e,onPersistentColumnOperation:o})=>r=>{let n=r.options;if(n.column&&e){let{column:l}=n;switch(r.menuId){case"sort-asc":return e.sort=(0,U.setSortColumn)(e.sort,l,"A"),!0;case"sort-dsc":return e.sort=(0,U.setSortColumn)(e.sort,l,"D"),!0;case"sort-add-asc":return e.sort=(0,U.addSortColumn)(e.sort,l,"A"),!0;case"sort-add-dsc":return e.sort=(0,U.addSortColumn)(e.sort,l,"D"),!0;case"group":return e.groupBy=(0,U.addGroupColumn)(e.groupBy,l),!0;case"group-add":return e.groupBy=(0,U.addGroupColumn)(e.groupBy,l),!0;case"column-hide":return o({type:"hideColumns",columns:[l]}),!0;case"column-remove":return e.columns=e.columns.filter(s=>s!==l.name),!0;case"filter-remove-column":return e.filter=kr(e.filter,l),!0;case"remove-filters":return e.filter={filter:""},!0;case"agg-avg":return e.aggregations=(0,U.setAggregations)(e.aggregations,l,Sr),!0;case"agg-high":return e.aggregations=(0,U.setAggregations)(e.aggregations,l,Ir),!0;case"agg-low":return e.aggregations=(0,U.setAggregations)(e.aggregations,l,zr),!0;case"agg-count":return e.aggregations=(0,U.setAggregations)(e.aggregations,l,Lr),!0;case"agg-distinct":return e.aggregations=(0,U.setAggregations)(e.aggregations,l,Ar),!0;case"agg-sum":return e.aggregations=(0,U.setAggregations)(e.aggregations,l,Nr),!0;case"column-pin-floating":return o({type:"pinColumn",column:l,pin:"floating"}),!0;case"column-pin-left":return o({type:"pinColumn",column:l,pin:"left"}),!0;case"column-pin-right":return o({type:"pinColumn",column:l,pin:"right"}),!0;case"column-unpin":return o({type:"pinColumn",column:l,pin:void 0}),!0;case"column-settings":return o({type:"columnSettings",column:l}),!0;case"table-settings":return o({type:"tableSettings"}),!0;default:}}return!1};var Ao=(e,o)=>{switch(o.type){case"col-size":return{...e,columns:e.columns.map(t=>t.name===o.column.name?{...t,width:o.width}:t)};case"column-prop":return{...e,columns:e.columns.map(t=>t.name===o.column.name?{...t,[o.property]:o.value}:t)};default:return e}};var Ot=require("@vuu-ui/vuu-utils"),Re=require("react");var Io=e=>`.vuuTable-col-headers .vuuTableHeaderCell:nth-child(${e})`,zo=(e,o)=>`.vuuTable-body > [aria-rowindex='${e+1}'] > [role='cell']:nth-child(${o+1})`,Nt=(e,[o,t])=>{var l;let r=o===-1?Io(t):zo(o,t),n=(l=e.current)==null?void 0:l.querySelector(r);return Fr(n)&&n.querySelector("button")||n},Fr=e=>e==null?void 0:e.classList.contains("vuuTableCell-editable"),Ft=e=>e.querySelector(".vuuTableInputCell")!==null;function Gr(e){if(e){let o=e.ariaRowIndex;if(o!==null)return parseInt(o,10)-1}return-1}var Kr=e=>e.closest('[role="row"]'),Gt=e=>Gr(Kr(e)),Or=[void 0,void 0],Kt=(e,o,t=e.closest(".vuuTable-contentContainer"))=>{if(t){let r=t==null?void 0:t.getBoundingClientRect(),n=r.top+o,l=e.getBoundingClientRect();if(l)return l.bottom>r.bottom?["down",l.bottom-r.bottom]:l.top<n?["up",l.top-n]:Or;throw Error("Whats going on, row not found")}else throw Error("Whats going on, scrollbar container not found")};var $t=({navigate:e})=>{let o=(0,Re.useCallback)(()=>{e()},[e]),t=(0,Re.useCallback)(a=>{let u=a.target,p=u.matches("input")?u:u.querySelector("input");p&&(p.focus(),p.select())},[]),r=(0,Re.useCallback)(a=>{let p=a.target.querySelector("input");p&&(p.focus(),p.select())},[]),n=(0,Re.useCallback)(a=>{let u=a.target;Ft(u)&&((0,Ot.isCharacterKey)(a.key)?t(a):a.key==="Enter"&&r(a))},[t,r]),l=(0,Re.useCallback)(a=>{let u=a.target;(u.matches("input")||u.querySelector("input"))&&(t(a),a.stopPropagation())},[t]),s=(0,Re.useCallback)(a=>{a.target.removeEventListener("vuu-commit",o,!0)},[o]),i=(0,Re.useCallback)(a=>{a.target.addEventListener("vuu-commit",o,!0)},[o]);return{onBlur:s,onDoubleClick:l,onFocus:i,onKeyDown:n}};var ye=require("@vuu-ui/vuu-utils"),X=require("react");var $e=require("@vuu-ui/vuu-utils"),{SELECTED:No}=$e.metadataKeys,lo=class{constructor({from:o,to:t}){this.rowCount=0;this.setRowCount=o=>{o<this.data.length&&(this.data.length=o),this.rowCount=o};this.range=new $e.WindowRange(o,t),this.data=new Array(Math.max(0,t-o)),this.rowCount=0}add(o){let[t]=o;if(this.isWithinRange(t)){let r=t-this.range.from;if(this.data[r]=o,o[No]){let n=this.data[r-1];(0,$e.isRowSelectedLast)(n)&&(this.data[r-1]=n.slice(),this.data[r-1][No]-=4)}}}getAtIndex(o){return this.range.isWithin(o)&&this.data[o-this.range.from]!=null?this.data[o-this.range.from]:void 0}isWithinRange(o){return this.range.isWithin(o)}setRange({from:o,to:t}){if(o!==this.range.from||t!==this.range.to){let[r,n]=this.range.overlap(o,t),l=new Array(Math.max(0,t-o));for(let s=r;s<n;s++){let i=this.getAtIndex(s);if(i){let a=s-o;l[a]=i}}this.data=l,this.range.from=o,this.range.to=t}}getSelectedRows(){return this.data.filter(o=>o[No]!==0)}};var $r=e=>e.type==="vuu-link-created"||e.type==="vuu-link-removed",Bt=({dataSource:e,onFeatureInvocation:o,onSizeChange:t,onSubscribed:r,range:n=ye.NULL_RANGE,renderBufferSize:l=0})=>{let[,s]=(0,X.useState)(null),i=(0,X.useRef)([]),a=(0,X.useRef)(!0),u=(0,X.useRef)(!1),p=(0,X.useRef)(n),m=(0,X.useMemo)(()=>new lo((0,ye.getFullRange)(n,l)),[]),b=(0,X.useCallback)(c=>{for(let v of c)m.add(v);i.current=m.data,a.current&&s({})},[m]),C=(0,X.useCallback)(c=>{c.type==="subscribed"?r==null||r(c):c.type==="viewport-update"?(typeof c.size=="number"&&(t==null||t(c.size),m.setRowCount(c.size)),c.rows?b(c.rows):typeof c.size=="number"&&(i.current=m.data,u.current=!0)):$r(c)?o==null||o(c):console.log(`useDataSource unexpected message ${c.type}`)},[m,o,t,r,b]),h=(0,X.useCallback)(()=>m.getSelectedRows(),[m]);(0,X.useEffect)(()=>{var c;return a.current=!0,(c=e.resume)==null||c.call(e),()=>{var v;a.current=!1,(v=e.suspend)==null||v.call(e)}},[e]),(0,X.useEffect)(()=>{var c;e.status==="disabled"?(c=e.enable)==null||c.call(e,C):e==null||e.subscribe({range:(0,ye.getFullRange)(n,l)},C)},[e,C,n,l]);let x=(0,X.useCallback)(c=>{if(!(0,ye.rangesAreSame)(c,p.current)){let v=(0,ye.getFullRange)(c,l);m.setRange(v),e.range=p.current=v,e.emit("range",c)}},[e,m,l]);return{data:i.current,dataRef:i,getSelectedRows:h,range:p.current,setRange:x}};var io=require("react"),Vt=e=>{let o=(0,io.useRef)(e);return(0,io.useMemo)(()=>o.current,[])};var _t=require("@vuu-ui/vuu-utils"),Xt=require("@salt-ds/core"),O=require("react");var Qt=new Set(["Home","End","PageUp","PageDown","ArrowDown","ArrowUp"]),Fo=new Set(Qt);Fo.add("ArrowLeft");Fo.add("ArrowRight");var Br=(e,o)=>{switch(o){case"cell":return Fo.has(e);case"row":return Qt.has(e);default:return!1}},Vr=["Home","End","PageUp","PageDown"],Wt=e=>Vr.includes(e),Wr=[-1,-1];function Ut(e,[o,t],r,n){return e==="ArrowUp"?o>-1?[o-1,t]:[o,t]:e==="ArrowDown"?o===-1?[0,t]:o===n-1?[o,t]:[o+1,t]:e==="ArrowRight"?t<r?[o,t+1]:[o,t]:e==="ArrowLeft"?t>1?[o,t-1]:[o,t]:[o,t]}var Jt=({columnCount:e=0,containerRef:o,disableFocus:t=!1,defaultHighlightedIndex:r,disableHighlightOnFocus:n,highlightedIndex:l,navigationStyle:s,requestScroll:i,onHighlight:a,rowCount:u=0,viewportRowCount:p})=>{var de;let m=(0,O.useRef)([-1,-1]),b=(0,O.useRef)(),C=(0,O.useRef)([-1,0]),h=(0,O.useRef)(),[x,c]=(0,Xt.useControlled)({controlled:l,default:r,name:"UseKeyboardNavigation"});h.current=x;let v=(0,O.useCallback)((f,w=!1)=>{a==null||a(f),c(f)},[a,c]),T=f=>f==null?void 0:f.closest("[role='columnHeader'],[role='cell']"),k=f=>{var w;if(f.role==="columnHeader")return[-1,parseInt((w=f.dataset.idx)!=null?w:"-1",10)];{let M=f.closest("[role='row']");if(M){let V=(0,_t.getIndexFromRowElement)(M),g=Array.from(M.childNodes).indexOf(f);return[V,g]}}return Wr},y=(0,O.useCallback)(f=>{var w;if(o.current){let M=Nt(o,f);M&&(M!==b.current&&((w=b.current)==null||w.removeAttribute("tabindex"),b.current=M,M.setAttribute("tabindex","0")),i==null||i({type:"scroll-row",rowIndex:f[0]}),M.focus({preventScroll:!0}))}},[o,i]),L=(0,O.useCallback)((f,w,M=!1)=>{let V=[f,w];C.current=V,s==="row"?c(f):y(V),M&&(m.current=V)},[y,s,c]),F=(0,O.useCallback)((f,[w,M])=>new Promise(V=>{let g=w;switch(f){case"PageDown":{g=Math.min(u-1,w+p),g!==w&&(i==null||i({type:"scroll-page",direction:"down"}));break}case"PageUp":{g=Math.max(0,w-p),g!==w&&(i==null||i({type:"scroll-page",direction:"up"}));break}case"Home":{g=0,g!==w&&(i==null||i({type:"scroll-end",direction:"home"}));break}case"End":{g=u-1,g!==w&&(i==null||i({type:"scroll-end",direction:"end"}));break}}setTimeout(()=>{V([g,M])},35)}),[i,u,p]),E=(0,O.useCallback)(()=>{var f;if(n!==!0&&(f=o.current)!=null&&f.contains(document.activeElement)){let w=T(document.activeElement);w&&(m.current=k(w),s==="row"&&c(m.current[0]))}},[n,o,s,c]),z=(0,O.useCallback)(async f=>{let[w,M]=Wt(f)?await F(f,C.current):Ut(f,C.current,e,u),[V,g]=C.current;(w!==V||M!==g)&&L(w,M,!0)},[e,F,u,L]),G=(0,O.useCallback)(f=>{i==null||i({type:"scroll-row",rowIndex:f})},[i]),J=(0,O.useCallback)(async f=>{let{current:w}=h,[M]=Wt(f)?await F(f,[w!=null?w:-1,0]):Ut(f,[w!=null?w:-1,0],e,u);M!==w&&(v(M),G(M))},[e,F,u,G,v]);(0,O.useEffect)(()=>{l!==void 0&&l!==-1&&G(l)},[l,G]);let ee=(0,O.useCallback)(f=>{u>0&&Br(f.key,s)&&(f.preventDefault(),f.stopPropagation(),s==="row"?J(f.key):z(f.key))},[u,s,J,z]),oe=(0,O.useCallback)(f=>{let w=f.target,M=T(w);if(M){let[V,g]=k(M);L(V,g)}},[L]),Z=(0,O.useCallback)(()=>{v(-1)},[v]),K=(0,O.useCallback)(f=>{let w=Gt(f.target);w!==-1&&w!==h.current&&v(w)},[v]),S=(0,O.useCallback)(()=>{z("ArrowDown")},[z]),ie=((de=o.current)==null?void 0:de.firstChild)!=null;return(0,O.useEffect)(()=>{if(ie&&b.current===void 0&&!t){let{current:f}=o,w=(f==null?void 0:f.querySelector(Io(0)))||(f==null?void 0:f.querySelector(zo(0,0)));w&&(w.setAttribute("tabindex","0"),b.current=w)}},[o,t,ie]),{highlightedIndexRef:h,navigate:S,onClick:oe,onFocus:E,onKeyDown:ee,onMouseLeave:s==="row"?Z:void 0,onMouseMove:s==="row"?K:void 0}};var be=require("@vuu-ui/vuu-utils"),Se=require("react"),{IDX:Ur}=be.metadataKeys,_r=[],Xr=["Enter"," "],Zt=({highlightedIndexRef:e,selectionKeys:o=Xr,selectionModel:t,onSelect:r,onSelectionChange:n})=>{let l=(0,Se.useRef)(-1),s=(0,Se.useRef)(_r),i=(0,Se.useCallback)(p=>o.includes(p.key),[o]),a=(0,Se.useCallback)((p,m,b)=>{let{[Ur]:C}=p,{current:h}=l,{current:x}=s,v=((0,be.isRowSelected)(p)?be.deselectItem:be.selectItem)(t,x,C,m,b,h);s.current=v,l.current=C,r==null||r(p),n==null||n(v)},[r,n,t]);return{onKeyDown:(0,Se.useCallback)(p=>{if(i(p)){let{current:m}=e;if(m!==void 0&&m!==-1){let b=p.target.querySelector(`[aria-rowindex="${m}"]`);b&&(0,be.dispatchMouseEvent)(b,"click")}}},[e,i]),onRowClick:a}};var Yt=require("@vuu-ui/vuu-popups"),so=require("@vuu-ui/vuu-utils"),jt=require("react"),Qr=[],qt=({columns:e,data:o,dataSource:t,getSelectedRows:r})=>{let[n]=(0,Yt.useContextMenu)();return(0,jt.useCallback)(s=>{let i=s.target,a=i==null?void 0:i.closest("div[role='cell']"),u=i==null?void 0:i.closest("div[role='row']");if(a&&u){let{selectedRowsCount:p}=t,m=(0,so.buildColumnMap)(e),b=(0,so.getIndexFromRowElement)(u),C=Array.from(u.childNodes).indexOf(a),h=o.find(([c])=>c===b),x=e[C];n(s,"grid",{columnMap:m,columnName:x,row:h,selectedRows:p===0?Qr:r(),viewport:t.viewport})}},[e,o,t,r,n])};var R=require("@vuu-ui/vuu-utils"),en=require("@vuu-ui/vuu-ui-controls"),on=require("react"),{info:Go}=(0,R.logger)("useTableModel"),Jr=100,Zr=({serverDataType:e})=>e===void 0,tn=(e,o)=>{let t=o==null?void 0:o.columns.find(({name:r})=>r===e.name);return t?t.serverDataType:e.serverDataType},Yr=["int","long","double"],nn=e=>e===void 0?void 0:Yr.includes(e)?"right":"left",Ko=e=>e.type==="columnSettings",Oo=e=>e.type==="tableSettings",jr=(e,o)=>{switch(Go==null||Go(`TableModelReducer ${o.type}`),o.type){case"init":return rn(o);case"moveColumn":return el(e,o);case"resizeColumn":return nl(e,o);case"setTableSchema":return rl(e,o);case"hideColumns":return ol(e,o);case"showColumns":return tl(e,o);case"pinColumn":return ll(e,o);case"updateColumnProp":return Be(e,o);case"tableConfig":return sn(e,o);default:return console.log(`unhandled action ${o.type}`),e}},$o=(e,o)=>{let[t,r]=(0,on.useReducer)(jr,{tableConfig:e,dataSource:o},rn),{columns:n,headings:l,tableConfig:s,...i}=t;return{columns:n,dispatchTableModelAction:r,headings:l,tableAttributes:i,tableConfig:s}};function rn({dataSource:e,tableConfig:o}){let{columns:t,...r}=o,{config:n,tableSchema:l}=e,s=t.filter((0,R.subscribedOnly)(n==null?void 0:n.columns)).map(ln(r,l)),i=s.some(R.isPinned)?(0,R.sortPinnedColumns)(s):s,a={columns:i,headings:(0,R.getTableHeadings)(i),tableConfig:o,...r};if(n){let{columns:u,...p}=n;a=sn(a,{type:"tableConfig",...p})}return a}var qr=(e,o)=>o==="uppercase"?e.toUpperCase():o==="capitalize"?e[0].toUpperCase()+e.slice(1).toLowerCase():e,ln=(e,o)=>(t,r)=>{let{columnDefaultWidth:n=Jr,columnFormatHeader:l}=e,s=tn(t,o),{align:i=nn(s),name:a,label:u=(0,R.getColumnLabel)(t),width:p=n,...m}=t,b={...m,align:i,CellRenderer:(0,R.getCellRenderer)(t),HeaderCellContentRenderer:(0,R.getColumnHeaderContentRenderer)(t),HeaderCellLabelRenderer:(0,R.getColumnHeaderLabelRenderer)(t),clientSideEditValidationCheck:(0,R.hasValidationRules)(t.type)?(0,en.buildValidationChecker)(t.type.renderer.rules):void 0,index:r+1,label:qr(u,l),name:a,originalIdx:r,serverDataType:s,valueFormatter:(0,R.getValueFormatter)(t,s),width:p};return(0,R.isGroupColumn)(b)&&(b.columns=b.columns.map(C=>ln(e)(C,r))),b};function el(e,{column:o,moveBy:t}){let{columns:r}=e;if(typeof t=="number"){let n=r.indexOf(o),l=r.slice(),[s]=l.splice(n,1);return l.splice(n+t,0,s),{...e,columns:l}}return e}function ol(e,{columns:o}){return o.some(t=>t.hidden!==!0)?o.reduce((t,r)=>r.hidden!==!0?Be(t,{type:"updateColumnProp",column:r,hidden:!0}):t,e):e}function tl(e,{columns:o}){return o.some(t=>t.hidden)?o.reduce((t,r)=>r.hidden?Be(t,{type:"updateColumnProp",column:r,hidden:!1}):t,e):e}function nl(e,{column:o,phase:t,width:r}){let n="updateColumnProp",l=t!=="end";switch(t){case"begin":return Be(e,{type:n,column:o,resizing:l});case"end":return Be(e,{type:n,column:o,resizing:l,width:r});case"resize":return Be(e,{type:n,column:o,width:r});default:throw Error(`useTableModel.resizeColumn, invalid resizePhase ${t}`)}}function rl(e,{tableSchema:o}){let{columns:t}=e;if(t.some(Zr)){let r=t.map(n=>{var s;let l=tn(n,o);return{...n,align:(s=n.align)!=null?s:nn(l),serverDataType:l}});return{...e,columns:r}}else return e}function ll(e,o){let{columns:t}=e,{column:r,pin:n}=o,l=t.find(s=>s.name===r.name);return l?(t=(0,R.replaceColumn)(t,{...l,pin:n}),t=(0,R.sortPinnedColumns)(t),{...e,columns:t}):e}function Be(e,o){let{columns:t,tableConfig:r}=e,{align:n,column:l,hidden:s,label:i,resizing:a,width:u}=o,p=t.find(m=>m.name===l.name);if(p&&((n==="left"||n==="right")&&(t=(0,R.replaceColumn)(t,{...p,align:n})),typeof i=="string"&&(t=(0,R.replaceColumn)(t,{...p,label:i})),typeof a=="boolean"&&(t=(0,R.replaceColumn)(t,{...p,resizing:a})),typeof s=="boolean"&&(t=(0,R.replaceColumn)(t,{...p,hidden:s})),typeof u=="number")){t=(0,R.replaceColumn)(t,{...p,width:u});let m=r.columns.find(b=>b.name===l.name);m&&(r={...r,columns:(0,R.replaceColumn)(r.columns,{...m,width:u})})}return{...e,columns:t,tableConfig:r}}function sn(e,{confirmed:o,filter:t,groupBy:r,sort:n}){let l=r!==void 0,s=typeof(t==null?void 0:t.filter)=="string",i=n&&n.sortDefs.length>0,a=e;return l&&(a={...e,columns:(0,R.applyGroupByToColumns)(a.columns,r,o)}),i&&(a={...e,columns:(0,R.applySortToColumns)(a.columns,n)}),s?a={...e,columns:(0,R.applyFilterToColumns)(a.columns,t)}:a.columns.some(R.isFilteredColumn)&&(a={...e,columns:(0,R.stripFilterFromColumns)(a.columns)}),a}var Le=require("@vuu-ui/vuu-utils"),D=require("react");var il=100,an=200,un=e=>{let{clientHeight:o,clientWidth:t,scrollHeight:r,scrollWidth:n}=e;return[n-t,r-o]},sl=(e,o)=>{if(e!==void 0){let{scrollTop:t}=e;return o>t?"fwd":"bwd"}},cn=(e,o)=>{let{clientHeight:t,clientWidth:r,scrollHeight:n,scrollLeft:l,scrollTop:s,scrollWidth:i}=e,a=i-r,u=l/(i-r),p=n-t,m=s/(n-t),b=sl(o,s);return b==="fwd"&&m>.99?m=1:b==="bwd"&&m<.02&&(m=0),[l,u,a,s,m,p]},pn={scrollToIndex:()=>{},scrollToKey:()=>{}},mn=({onAttach:e,onDetach:o})=>{let t=(0,D.useRef)(null);return(0,D.useCallback)(n=>{if(n)t.current=n,e==null||e(n);else if(t.current){let{current:l}=t;t.current=n,o==null||o(l)}},[e,o])},Bo=({columns:e,getRowAtPosition:o,onHorizontalScroll:t,onVerticalScroll:r,onVerticalScrollInSitu:n,rowHeight:l,scrollingApiRef:s,setRange:i,viewportMeasurements:a})=>{let u=(0,D.useRef)(0),p=(0,D.useRef)(l),m=(0,D.useRef)(!1),b=(0,D.useRef)({scrollTop:0,scrollLeft:0}),C=(0,D.useRef)(!1),h=(0,D.useRef)({scrollTop:0,scrollLeft:0}),x=(0,D.useRef)(null),c=(0,D.useRef)(null),v=(0,D.useRef)(0),{appliedPageSize:T,isVirtualScroll:k,rowCount:y,totalHeaderHeight:L,viewportWidth:F}=a,E=(0,D.useRef)([]),[,z]=(0,D.useState)({}),G=(0,D.useRef)(0);(0,D.useMemo)(()=>{let[g,P]=(0,Le.getColumnsInViewport)(e,b.current.scrollLeft,b.current.scrollLeft+F+an);G.current=P,E.current=g},[F,e]);let J=(0,D.useCallback)(g=>{if(b.current.scrollLeft=g,t==null||t(g),Math.abs(g-v.current)>il){v.current=g;let[P,W]=(0,Le.getColumnsInViewport)(e,g,g+F+an);(0,Le.itemsChanged)(E.current,P)&&(G.current=W,E.current=P,z({}))}},[e,t,F]),ee=(0,D.useCallback)((g,P)=>{b.current.scrollTop=g,r==null||r(g,P);let W=o(g);W!==u.current&&(u.current=W,i({from:W,to:W+y})),n==null||n(0)},[o,r,n,i,y]),oe=(0,D.useCallback)(()=>{let{current:g}=c,{current:P}=x,{current:W}=m,{current:q}=h;if(W)m.current=!1;else if(g&&P){C.current=!0;let[Y,ce,,Q,I]=cn(P,q);q.scrollLeft=Y,q.scrollTop=Q;let[$,te]=un(P),B=Math.round(ce*$),Me=I*te;g.scrollTo({left:B,top:Me,behavior:"auto"})}n==null||n(0)},[n]),Z=(0,D.useCallback)(()=>{let{current:g}=C,{current:P}=c,{current:W}=x,{current:q}=b;if(P&&W){let[Y,ce,Q,I,$,te]=cn(P);m.current=!0,g?C.current=!1:(W.scrollLeft=Math.round(ce*Q),W.scrollTop=$*te),q.scrollTop!==I&&ee(I,$),q.scrollLeft!==Y&&J(Y)}},[ee,J]),K=(0,D.useCallback)(g=>{x.current=g,g.addEventListener("scroll",oe,{passive:!0})},[oe]),S=(0,D.useCallback)(g=>{x.current=null,g.removeEventListener("scroll",oe)},[oe]),ie=(0,D.useCallback)(g=>{c.current=g,g.addEventListener("scroll",Z,{passive:!0})},[Z]),de=(0,D.useCallback)(g=>{c.current=null,g.removeEventListener("scroll",Z)},[Z]),f=mn({onAttach:ie,onDetach:de}),w=mn({onAttach:K,onDetach:S}),M=(0,D.useCallback)(g=>{let{current:P}=c;if(P){let[W,q]=un(P),{scrollLeft:Y,scrollTop:ce}=P;if(m.current=!1,g.type==="scroll-row"){let Q=(0,Le.getRowElementAtIndex)(P,g.rowIndex);if(Q!==null){let[I,$]=Kt(Q,L);if(I&&$)if(k){let te=I==="down"?1:-1;n==null||n(te);let B=u.current+te;u.current=B,i({from:B,to:B+y})}else{let te=Y,B=ce;I==="up"||I==="down"?B=Math.min(Math.max(0,ce+$),q):te=Math.min(Math.max(0,Y+$),W),P.scrollTo({top:B,left:te,behavior:"smooth"})}}}else if(g.type==="scroll-page"){let{direction:Q}=g;if(k){let I=Q==="down"?y:-y;n==null||n(I);let $=u.current+I;u.current=$,i({from:$,to:$+y})}else{let I=Q==="down"?T:-T,$=Math.min(Math.max(0,ce+I),q);P.scrollTo({top:$,left:Y,behavior:"auto"})}}else if(g.type==="scroll-end"){let{direction:Q}=g,I=Q==="end"?q:0;P.scrollTo({top:I,left:P.scrollLeft,behavior:"auto"})}}},[T,k,n,i,L,y]),V=(0,D.useMemo)(()=>({scrollToIndex:g=>{if(x.current){let P=(g-30)*20;x.current.scrollTop=P}},scrollToKey:g=>{console.log(`scrollToKey ${g}`)}}),[]);return(0,D.useImperativeHandle)(s,()=>x.current?V:pn,[V]),(0,D.useEffect)(()=>{if(l!==p.current)p.current=l,b.current.scrollTop>0&&c.current&&(c.current.scrollTop=0);else{let{current:g}=u,P={from:g,to:g+y};i(P)}},[l,i,y]),{columnsWithinViewport:E.current,scrollbarContainerRef:w,contentContainerRef:f,requestScroll:M,virtualColSpan:G.current}};var Ve=require("@vuu-ui/vuu-utils"),ae=require("react"),al=1e7,ul={appliedPageSize:0,contentHeight:0,contentWidth:0,getRowAtPosition:()=>-1,getRowOffset:()=>-1,horizontalScrollbarHeight:0,isVirtualScroll:!1,pinnedWidthLeft:0,pinnedWidthRight:0,rowCount:0,setInSituRowOffset:()=>{},setScrollTop:()=>{},totalHeaderHeight:0,verticalScrollbarWidth:0,viewportBodyHeight:0,viewportWidth:0},Vo=({columns:e,headerHeight:o,headings:t,rowCount:r,rowHeight:n,selectionEndSize:l=4,size:s})=>{let i=(0,ae.useRef)(0),a=(0,ae.useRef)(0),u=Math.min(n*r,al),p=r*n,m=p-u,{pinnedWidthLeft:b,pinnedWidthRight:C,unpinnedWidth:h}=(0,ae.useMemo)(()=>(0,Ve.measurePinnedColumns)(e,l),[e,l]),x=(0,ae.useRef)(o);(0,ae.useMemo)(()=>{x.current=o*(1+t.length)},[o,t.length]);let[c,v,T]=(0,ae.useMemo)(()=>{if(m){let[L,F,E]=(0,Ve.virtualRowPositioning)(n,m,a);return[G=>L(G,i.current),F,E]}else return(0,Ve.actualRowPositioning)(n)},[m,n]),k=(0,ae.useCallback)((L,F)=>{a.current=F},[]),y=(0,ae.useCallback)(L=>{L===0?i.current=0:i.current=Math.max(0,i.current+L)},[]);return(0,ae.useMemo)(()=>{if(s){let{current:L}=x,F=15,E=b+h+C,z=E>s.width?F:0,G=(s.height-o)/n,J=Number.isInteger(G)?G:Math.ceil(G),ee=s.height-L,oe=u>ee?F:0,Z=J*n*(u/p),K=s.width;return{appliedPageSize:Z,contentHeight:u,contentWidth:E,getRowAtPosition:v,getRowOffset:c,isVirtualScroll:T,horizontalScrollbarHeight:z,pinnedWidthLeft:b,pinnedWidthRight:C,rowCount:J,setInSituRowOffset:y,setScrollTop:k,totalHeaderHeight:L,verticalScrollbarWidth:oe,viewportBodyHeight:ee,viewportWidth:K}}else return ul},[v,c,o,T,b,h,C,u,n,y,k,s,p])};var dn=require("@vuu-ui/vuu-layout"),bn=require("@vuu-ui/vuu-utils"),ue=require("react"),fn=({availableColumns:e,onAvailableColumnsChange:o,onConfigChange:t,onCreateCalculatedColumn:r,onDataSourceConfigChange:n,tableConfig:l})=>{let s=(0,dn.useLayoutProviderDispatch)(),i=(0,ue.useRef)(),[a,u]=(0,ue.useState)(e),p=(0,ue.useCallback)((c,v,T)=>{s({type:"set-props",path:"#context-panel",props:{expanded:!0,content:{type:c,props:T},title:v}})},[s]),m=(0,ue.useCallback)(()=>{requestAnimationFrame(()=>{var c;(c=i.current)==null||c.call(i)})},[]),b=(0,ue.useCallback)(c=>{let v=a.concat({name:c.name,serverDataType:(0,bn.getCalculatedColumnType)(c)});u(v),o==null||o(v),requestAnimationFrame(()=>{var T;(T=i.current)==null||T.call(i)}),r(c)},[a,o,r]),C=(0,ue.useCallback)(c=>{p("ColumnSettings","Column Settings",{column:c.column,onCancelCreateColumn:m,onConfigChange:t,onCreateCalculatedColumn:b,tableConfig:l,vuuTable:c.vuuTable})},[m,b,t,p,l]),h=(0,ue.useCallback)(()=>{C({column:{name:"::",serverDataType:"string"},type:"columnSettings",vuuTable:{module:"SIMUL",table:"instruments"}})},[C]),x=(0,ue.useCallback)(c=>{let v=l.columns.find(T=>T.name===c);v&&C({type:"columnSettings",column:v,vuuTable:{module:"SIMUL",table:"instruments"}})},[C,l.columns]);return i.current=(0,ue.useCallback)(()=>{p("TableSettings","DataGrid Settings",{availableColumns:a!=null?a:l.columns.map(({name:c,serverDataType:v})=>({name:c,serverDataType:v})),onAddCalculatedColumn:h,onConfigChange:t,onDataSourceConfigChange:n,onNavigateToColumn:x,tableConfig:l})},[a,h,x,t,n,p,l]),{showColumnSettingsPanel:C,showTableSettingsPanel:i.current}};var gn=require("@vuu-ui/vuu-utils"),Cn=require("react"),cl=e=>{let o=[];return e==null||e.forEach(t=>{let r=(0,gn.getRowClassNameGenerator)(t);r&&o.push(r.fn)}),(t,r)=>{let n=[];return o==null||o.forEach(l=>{let s=l(t,r);s&&n.push(s)}),n.join(" ")}},vn=({rowClassNameGenerators:e})=>(0,Cn.useMemo)(()=>cl(e),[e]);var ao=e=>e,{KEY:ml,IS_EXPANDED:hn,IS_LEAF:wn}=_.metadataKeys,pl={draggable:void 0,onMouseDown:void 0},dl=()=>pl,bl=(e,o)=>({...e,columns:e.columns.concat(o)}),Tn=({allowDragDrop:e=!1,availableColumns:o,config:t,containerRef:r,dataSource:n,disableFocus:l,headerHeight:s=25,highlightedIndex:i,id:a,navigationStyle:u="cell",onAvailableColumnsChange:p,onConfigChange:m,onDragStart:b,onDrop:C,onFeatureInvocation:h,onHighlight:x,onRowClick:c,onSelect:v,onSelectionChange:T,renderBufferSize:k=0,rowHeight:y=20,scrollingApiRef:L,selectionModel:F,size:E})=>{let[z,G]=(0,H.useState)(n.size);if(n===void 0)throw Error("no data source provided to Vuu Table");let J=vn(t),ee=e?xn.useDragDrop:dl,oe=(0,H.useMemo)(()=>At(n),[n]),Z=(0,H.useCallback)(d=>{G(d)},[]),{columns:K,dispatchTableModelAction:S,headings:ie,tableAttributes:de,tableConfig:f}=$o(t,n);(0,_.useLayoutEffectSkipFirst)(()=>{S({type:"init",tableConfig:t,dataSource:n})},[t,n,S]);let w=(0,H.useCallback)(d=>{S({type:"init",tableConfig:d,dataSource:n}),m==null||m(ao(d))},[n,S,m]),M=(0,H.useMemo)(()=>(0,_.buildColumnMap)(n.columns),[n.columns]),V=(0,H.useCallback)(({tableSchema:d})=>{d?S({type:"setTableSchema",tableSchema:d}):console.log("subscription message with no schema")},[S]),{getRowAtPosition:g,getRowOffset:P,setInSituRowOffset:W,setScrollTop:q,...Y}=Vo({columns:K,headerHeight:s,headings:ie,rowCount:z,rowHeight:y,size:E}),ce=Vt({from:0,to:Y.rowCount}),{data:Q,dataRef:I,getSelectedRows:$,range:te,setRange:B}=Bt({dataSource:n,onFeatureInvocation:h,renderBufferSize:k,onSizeChange:Z,onSubscribed:V,range:ce}),{requestScroll:Me,...go}=Bo({columns:K,getRowAtPosition:g,rowHeight:y,scrollingApiRef:L,setRange:B,onVerticalScroll:q,onVerticalScrollInSitu:W,viewportMeasurements:Y}),Je=(0,H.useCallback)(d=>{S({type:"init",tableConfig:d,dataSource:n}),m==null||m(ao(d))},[n,S,m]),He=(0,H.useCallback)(d=>{n.config={...n.config,...d}},[n]);(0,H.useEffect)(()=>{n.on("config",(d,A,N)=>{((N==null?void 0:N.filterChanged)||(N==null?void 0:N.groupByChanged))&&n.range.from>0&&Me({type:"scroll-end",direction:"home"}),S({type:"tableConfig",...d,confirmed:A})})},[n,S,Me]);let Bn=(0,H.useCallback)(d=>{n.columns=n.columns.concat(d.name),w(bl(f,d))},[n,f,w]),Xo=(0,H.useCallback)(d=>{let{columns:A}=d,N=A.map(ne=>ne.name),j={...f,columns:f.columns.map(ne=>N.includes(ne.name)?{...ne,hidden:!0}:ne)};w(j)},[f,w]),Qo=(0,H.useCallback)(d=>{w({...f,columns:(0,_.updateColumn)(f.columns,{...d.column,pin:d.pin})})},[f,w]),{showColumnSettingsPanel:Jo,showTableSettingsPanel:Zo}=fn({availableColumns:o!=null?o:f.columns.map(({name:d,serverDataType:A="string"})=>({name:d,serverDataType:A})),onAvailableColumnsChange:p,onConfigChange:Je,onCreateCalculatedColumn:Bn,onDataSourceConfigChange:He,tableConfig:f}),Vn=(0,H.useCallback)(d=>{if(Ko(d))Jo(d);else if(Oo(d))Zo();else switch(d.type){case"hideColumns":return Xo(d);case"pinColumn":return Qo(d);default:S(d)}},[S,Xo,Qo,Jo,Zo]),Wn=zt({dataSource:n,onPersistentColumnOperation:Vn}),Un=(0,H.useCallback)((d,A=!1,N)=>{n&&(n.sort=(0,_.applySort)(n.sort,d,A,N))},[n]),Co=(0,H.useRef)(),_n=(0,H.useCallback)((d,A,N)=>{var ne,_e,he;let j=K.find(se=>se.name===A);if(j)if(d==="resize")(ne=Co.current)==null||ne.forEach(se=>{se.style.width=`${N}px`});else if(d==="end")Co.current=void 0,(0,_.isValidNumber)(N)&&(S({type:"resizeColumn",phase:d,column:j,width:N}),m==null||m(ao(Ao(f,{type:"col-size",column:j,width:N}))));else{let se=`[aria-colindex='${j.index}']`;Co.current=Array.from((he=(_e=r.current)==null?void 0:_e.querySelectorAll(`.vuuTableCell${se},.vuuTableHeaderCell${se}`))!=null?he:[]),S({type:"resizeColumn",phase:d,column:j,width:N})}else throw Error(`useDataTable.handleColumnResize, column ${A} not found`)},[K,S,m,f,r]),Xn=(0,H.useCallback)((d,A)=>{var ne,_e;let N=(0,_.isJsonGroup)(A,d,M),j=d[ml];if(d[hn]){if(n.closeTreeNode(j,!0),N){let he=K.indexOf(A),se=(ne=n.getRowsAtDepth)==null?void 0:ne.call(n,he+1);se&&!se.some(Ae=>Ae[hn]||Ae[wn])&&S({type:"hideColumns",columns:K.slice(he+2)})}}else if(n.openTreeNode(j),N){let he=(_e=n.getChildRows)==null?void 0:_e.call(n,j),se=K.indexOf(A)+1,Ae=[K[se]];he&&he.some(vo=>vo[wn])&&Ae.push(K[se+1]),Ae.some(vo=>vo.hidden)&&S({type:"showColumns",columns:Ae})}},[M,K,n,S]),{highlightedIndexRef:Yo,navigate:Qn,onFocus:jo,onKeyDown:qo,...Jn}=Jt({columnCount:K.filter(d=>d.hidden!==!0).length,containerRef:r,disableFocus:l,highlightedIndex:i,navigationStyle:u,requestScroll:Me,rowCount:n==null?void 0:n.size,onHighlight:x,viewportRange:te,viewportRowCount:Y.rowCount}),{onBlur:Zn,onDoubleClick:Yn,onKeyDown:et,onFocus:ot}=$t({navigate:Qn}),jn=(0,H.useCallback)(d=>{jo(),d.defaultPrevented||ot(d)},[ot,jo]),qn=qt({columns:K,data:Q,dataSource:n,getSelectedRows:$}),er=(0,H.useCallback)(d=>{n.groupBy=d.map(A=>A.name)},[n]),or=(0,H.useCallback)(d=>{(0,_.isGroupColumn)(d)?n.groupBy=[]:n&&n.groupBy.includes(d.name)&&(n.groupBy=n.groupBy.filter(A=>A!==d.name))},[n]),tr=(0,H.useCallback)(d=>{n.select(d),T==null||T(d)},[n,T]),{onKeyDown:tt,onRowClick:nt}=Zt({highlightedIndexRef:Yo,onSelect:v,onSelectionChange:tr,selectionModel:F}),nr=(0,H.useCallback)(d=>{qo(d),d.defaultPrevented||et(d),d.defaultPrevented||tt(d)},[qo,et,tt]),rr=(0,H.useCallback)((d,A,N)=>{nt(d,A,N),c==null||c(d)},[c,nt]),lr=(0,H.useCallback)(d=>{let A={...f,columns:d};S({type:"init",tableConfig:A,dataSource:n}),m==null||m(ao(A))},[n,S,m,f]),ir=(0,H.useCallback)(d=>{C==null||C(d)},[C]),sr=(0,H.useCallback)(async(d,A,N)=>n.applyEdit(d,A,N),[n]),ar=(0,H.useCallback)(d=>{let{initialDragElement:A}=d,N=(0,_.getIndexFromRowElement)(A),j=I.current.find(ne=>ne[0]===N);j&&d.setPayload(j),b==null||b(d)},[I,b]),{onMouseDown:ur,draggable:cr}=ee({allowDragDrop:e,containerRef:r,draggableClassName:"vuuTable",id:a,onDragStart:ar,onDrop:ir,orientation:"vertical",itemQuery:".vuuTableRow"});return{...Jn,"aria-rowcount":n.size,rowClassNameGenerator:J,draggableRow:cr,onBlur:Zn,onDoubleClick:Yn,onFocus:jn,onKeyDown:nr,onMouseDown:ur,columnMap:M,columns:K,data:Q,getRowOffset:P,handleContextMenuAction:Wn,headings:ie,highlightedIndex:Yo.current,menuBuilder:oe,onContextMenu:qn,onDataEdited:sr,onMoveColumn:lr,onMoveGroupColumn:er,onRemoveGroupColumn:or,onRowClick:rr,onSortColumn:Un,onResizeColumn:_n,onToggleGroup:Xn,scrollProps:go,tableAttributes:de,tableConfig:f,viewportMeasurements:Y}};var Rn=require("@vuu-ui/vuu-utils"),De=require("react"),yn=({rowHeight:e=0})=>{let[o,t]=(0,De.useState)(e),r=(0,De.useRef)(o),n=(0,De.useMemo)(()=>new ResizeObserver(s=>{for(let i of s){let{height:a}=i.contentRect,u=Math.round(a);(0,Rn.isValidNumber)(u)&&r.current!==u&&(r.current=u,t(u))}}),[]),l=(0,De.useCallback)(s=>{if(s){if(e===0){let{height:i}=s.getBoundingClientRect();console.log(`measured rowHeight = ${i}`),n.observe(s),t(i)}}else n.disconnect()},[n,e]);return{rowHeight:o,rowRef:l}};var le=require("react/jsx-runtime"),ve="vuuTable",{IDX:fl,RENDER_IDX:gl}=uo.metadataKeys,Cl=({Row:e=Ho,allowDragDrop:o,availableColumns:t,config:r,containerRef:n,dataSource:l,disableFocus:s=!1,highlightedIndex:i,id:a,navigationStyle:u="cell",onAvailableColumnsChange:p,onConfigChange:m,onDragStart:b,onDrop:C,onFeatureInvocation:h,onHighlight:x,onRowClick:c,onSelect:v,onSelectionChange:T,renderBufferSize:k=5,rowHeight:y,scrollingApiRef:L,selectionModel:F="extended",showColumnHeaders:E=!0,headerHeight:z=E?y*1.25:0,size:G})=>{let J=(0,uo.useId)(a),{columnMap:ee,columns:oe,data:Z,draggableRow:K,getRowOffset:S,handleContextMenuAction:ie,headings:de,highlightedIndex:f,menuBuilder:w,onDataEdited:M,onMoveColumn:V,onMoveGroupColumn:g,onRemoveGroupColumn:P,onResizeColumn:W,onRowClick:q,onSortColumn:Y,onToggleGroup:ce,rowClassNameGenerator:Q,scrollProps:I,tableAttributes:$,tableConfig:te,viewportMeasurements:B,...Me}=Tn({allowDragDrop:o,availableColumns:t,config:r,containerRef:n,dataSource:l,disableFocus:s,headerHeight:z,highlightedIndex:i,id:J,navigationStyle:u,onAvailableColumnsChange:p,onConfigChange:m,onDragStart:b,onDrop:C,onFeatureInvocation:h,onHighlight:x,onRowClick:c,onSelect:v,onSelectionChange:T,renderBufferSize:k,rowHeight:y,scrollingApiRef:L,selectionModel:F,size:G}),go=(0,Wo.default)(`${ve}-contentContainer`,{[`${ve}-colLines`]:$.columnSeparators,[`${ve}-rowLines`]:$.rowSeparators,[`${ve}-zebra`]:$.zebraStripes}),Je={"--content-height":`${B.contentHeight}px`,"--content-width":`${B.contentWidth}px`,"--horizontal-scrollbar-height":`${B.horizontalScrollbarHeight}px`,"--pinned-width-left":`${B.pinnedWidthLeft}px`,"--pinned-width-right":`${B.pinnedWidthRight}px`,"--header-height":`${z}px`,"--row-height-prop":`${y}px`,"--total-header-height":`${B.totalHeaderHeight}px`,"--vertical-scrollbar-width":`${B.verticalScrollbarWidth}px`,"--viewport-body-height":`${B.viewportBodyHeight}px`};return(0,le.jsxs)(Dn.ContextMenuProvider,{menuActionHandler:ie,menuBuilder:w,children:[(0,le.jsx)("div",{className:`${ve}-scrollbarContainer`,ref:I.scrollbarContainerRef,style:Je,children:(0,le.jsx)("div",{className:`${ve}-scrollbarContent`})}),(0,le.jsx)("div",{className:go,ref:I.contentContainerRef,style:Je,children:(0,le.jsxs)("div",{...Me,className:`${ve}-table`,role:"table",tabIndex:s?void 0:-1,children:[E?(0,le.jsx)(Po,{columns:I.columnsWithinViewport,headings:de,onMoveColumn:V,onMoveGroupColumn:g,onRemoveGroupColumn:P,onResizeColumn:W,onSortColumn:Y,tableConfig:te,tableId:J,virtualColSpan:I.virtualColSpan}):null,(0,le.jsx)("div",{className:`${ve}-body`,children:Z.map(He=>(0,le.jsx)(e,{"aria-rowindex":He[0]+1,classNameGenerator:Q,columnMap:ee,columns:I.columnsWithinViewport,highlighted:f===He[fl],onClick:q,onDataEdited:M,row:He,offset:S(He),onToggleGroup:ce,virtualColSpan:I.virtualColSpan,zebraStripes:$.zebraStripes},He[gl]))})]})}),K]})},vl=(0,We.forwardRef)(function({Row:o,allowDragDrop:t,availableColumns:r,className:n,config:l,dataSource:s,disableFocus:i,highlightedIndex:a,id:u,navigationStyle:p,onAvailableColumnsChange:m,onConfigChange:b,onDragStart:C,onDrop:h,onFeatureInvocation:x,onHighlight:c,onRowClick:v,onSelect:T,onSelectionChange:k,renderBufferSize:y,rowHeight:L,scrollingApiRef:F,selectionModel:E,showColumnHeaders:z,headerHeight:G,style:J,...ee},oe){let Z=(0,We.useRef)(null),[K,S]=(0,We.useState)(),{rowHeight:ie,rowRef:de}=yn({rowHeight:L});if(l===void 0)throw Error("vuu Table requires config prop. Minimum config is list of Column Descriptors");if(s===void 0)throw Error("vuu Table requires dataSource prop");return(0,le.jsxs)(Mn.MeasuredContainer,{...ee,className:(0,Wo.default)(ve,n),id:u,onResize:S,ref:(0,Hn.useForkRef)(Z,oe),children:[(0,le.jsx)(Ht,{ref:de,height:L}),K&&ie?(0,le.jsx)(Cl,{Row:o,allowDragDrop:t,availableColumns:r,config:l,containerRef:Z,dataSource:s,disableFocus:i,headerHeight:G,highlightedIndex:a,id:u,navigationStyle:p,onAvailableColumnsChange:m,onConfigChange:b,onDragStart:C,onDrop:h,onFeatureInvocation:x,onHighlight:c,onRowClick:v,onSelect:T,onSelectionChange:k,renderBufferSize:y,rowHeight:ie,scrollingApiRef:F,selectionModel:E,showColumnHeaders:z,size:K}):null]})});var co=require("react"),mo=require("@vuu-ui/vuu-ui-controls"),Pn=require("@salt-ds/core"),Ue=require("@vuu-ui/vuu-utils"),Uo=require("react/jsx-runtime"),_o=(0,co.memo)(({column:e,columnMap:o,onCommit:t=mo.WarnCommit,row:r})=>{let n=o[e.name],l=!!r[n],s=(0,co.useCallback)(i=>async a=>{let u=await t(i);return u===!0&&(0,Ue.dispatchCustomEvent)(a.target,"vuu-commit"),u},[t]);return e.editable?(0,Uo.jsx)(Pn.Checkbox,{checked:l,onClick:s(!l)}):(0,Uo.jsx)(mo.CheckboxIcon,{checked:l,disabled:!0})},Ue.dataColumnAndKeyUnchanged);_o.displayName="CheckboxCell";(0,Ue.registerComponent)("checkbox-cell",_o,"cell-renderer",{serverDataType:"boolean"});var En=require("@vuu-ui/vuu-utils"),kn=require("@salt-ds/core"),Sn=require("@vuu-ui/vuu-ui-controls"),Ln=me(require("clsx"));var bo=require("react/jsx-runtime"),po="vuuTableInputCell",hl=()=>(console.warn("onCommit handler has not been provided to InputCell cell renderer"),Promise.resolve(!0)),An=({column:e,columnMap:o,onCommit:t=hl,row:r})=>{let n=o[e.name],l=r[n],{align:s="left",clientSideEditValidationCheck:i}=e,{warningMessage:a,...u}=(0,Sn.useEditableText)({initialValue:l,onCommit:t,clientSideEditValidationCheck:i}),p=a&&s==="left"?(0,bo.jsx)("span",{className:`${po}-icon`,"data-icon":"error"}):void 0,m=a&&s==="right"?(0,bo.jsx)("span",{className:`${po}-icon`,"data-icon":"error"}):void 0;return(0,bo.jsx)(kn.Input,{...u,className:(0,Ln.default)(po,{[`${po}-error`]:a!==void 0}),endAdornment:p,startAdornment:m})};(0,En.registerComponent)("input-cell",An,"cell-renderer",{userCanAssign:!1});var zn=require("@vuu-ui/vuu-ui-controls"),fe=require("@vuu-ui/vuu-utils"),Nn=me(require("clsx")),fo=require("react"),Fn=require("@vuu-ui/vuu-ui-controls");var Kn=require("react/jsx-runtime"),In="vuuTableToggleCell",wl=({name:e,type:o})=>{if((0,fe.isTypeDescriptor)(o)&&(0,fe.isValueListRenderer)(o.renderer))return o.renderer.values;throw Error(`useLookupValues column ${e} has not been configured with a values list`)},Gn=(0,fo.memo)(function({column:o,columnMap:t,onCommit:r=zn.WarnCommit,row:n}){let l=wl(o),s=t[o.name],i=n[s],a=(0,fo.useCallback)((u,p)=>r(p).then(m=>(m===!0&&(0,fe.dispatchCustomEvent)(u.target,"vuu-commit"),m)),[r]);return(0,Kn.jsx)(Fn.CycleStateButton,{className:(0,Nn.default)(In,`${In}-${o.name}`),onCommit:a,value:i,values:l,variant:"cta",children:i})},fe.dataColumnAndKeyUnchanged);(0,fe.registerComponent)("toggle-cell",Gn,"cell-renderer",{userCanAssign:!1});var On=require("@vuu-ui/vuu-ui-controls"),$n=require("@vuu-ui/vuu-utils"),Qe=require("react"),xl=(e,o)=>{let t=(0,Qe.useRef)(null),[r,n]=(0,On.useStateRef)(e),l=(0,Qe.useCallback)(i=>{var a;if(i.key==="ArrowDown")n((u=-1)=>Math.min(o-1,u+1));else if(i.key==="ArrowUp")n((u=-1)=>Math.max(0,u-1));else if(i.key==="Enter"||i.key===" "){let{current:u}=r,p=(a=t.current)==null?void 0:a.querySelector(`[aria-rowindex="${u}"]`);p&&(0,$n.dispatchMouseEvent)(p,"click")}},[r,o,n]),s=(0,Qe.useCallback)(i=>{n(i)},[n]);return{highlightedIndexRef:r,onHighlight:s,onKeyDown:l,tableRef:t}};
|
|
2
2
|
//# sourceMappingURL=index.js.map
|