@vuu-ui/vuu-table 0.8.22 → 0.8.23

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