@vuu-ui/vuu-table 0.7.6 → 0.8.0

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/esm/index.js CHANGED
@@ -1,2 +1,2 @@
1
- import{isNumericColumn as Rn}from"@vuu-ui/vuu-utils";var Be=e=>(t,n)=>{let o=[];if(e===void 0)return o;if(t==="header")o.push(...Dn(n,e)),o.push(...Pn(n,e)),o.push(...xn(n,e)),o.push(...Hn(n));else if(t==="filter"){let{column:r,filter:i}=n,s=(i==null?void 0:i.column)===(r==null?void 0:r.name);o.push({label:"Edit filter",action:"filter-edit",options:n}),o.push({label:"Remove filter",action:"filter-remove-column",options:n}),r&&!s&&o.push({label:"Remove all filters",action:"remove-filters",options:n})}return o};function Dn(e,{sort:{sortDefs:t}}){let{column:n}=e,o=[];if(n===void 0)return o;let r=t.length>0;return n.sorted==="A"?o.push({label:"Reverse Sort (DSC)",action:"sort-dsc",options:e}):n.sorted==="D"?o.push({label:"Reverse Sort (ASC)",action:"sort-asc",options:e}):typeof n.sorted=="number"?(n.sorted>0?o.push({label:"Reverse Sort (DSC)",action:"sort-add-dsc",options:e}):o.push({label:"Reverse Sort (ASC)",action:"sort-add-asc",options:e}),r&&Math.abs(n.sorted)<t.length&&o.push({label:"Remove from sort",action:"sort-remove",options:e}),o.push({label:"New Sort",children:[{label:"Ascending",action:"sort-asc",options:e},{label:"Descending",action:"sort-dsc",options:e}]})):r?(o.push({label:"Add to sort",children:[{label:"Ascending",action:"sort-add-asc",options:e},{label:"Descending",action:"sort-add-dsc",options:e}]}),o.push({label:"New Sort",children:[{label:"Ascending",action:"sort-asc",options:e},{label:"Descending",action:"sort-dsc",options:e}]})):o.push({label:"Sort",children:[{label:"Ascending",action:"sort-asc",options:e},{label:"Descending",action:"sort-dsc",options:e}]}),o}function xn(e,t){let{column:n}=e;if(n===void 0||t.groupBy.length===0)return[];let{name:o,label:r=o}=n;return[{label:`Aggregate ${r}`,children:[{label:"Count",action:"agg-count",options:e},{label:"Distinct",action:"agg-distinct",options:e}].concat(Rn(n)?[{label:"Sum",action:"agg-sum",options:e},{label:"Avg",action:"agg-avg",options:e},{label:"High",action:"agg-high",options:e},{label:"Low",action:"agg-low",options:e}]:[])}]}var Ce=(e,t)=>({label:`Pin ${t}`,action:`column-pin-${t}`,options:e}),fe=e=>Ce(e,"left"),ge=e=>Ce(e,"floating"),be=e=>Ce(e,"right");function Hn(e){let{column:t}=e;if(t===void 0)return[];let{pin:n}=t,o=[{label:"Hide column",action:"column-hide",options:e},{label:"Remove column",action:"column-remove",options:e}];return n===void 0?o.push({label:"Pin column",children:[fe(e),ge(e),be(e)]}):n==="left"?o.push({label:"Unpin column",action:"column-unpin",options:e},{label:"Pin column",children:[ge(e),be(e)]}):n==="right"?o.push({label:"Unpin column",action:"column-unpin",options:e},{label:"Pin column",children:[fe(e),ge(e)]}):n==="floating"&&o.push({label:"Unpin column",action:"column-unpin",options:e},{label:"Pin column",children:[fe(e),be(e)]}),o}function Pn(e,{groupBy:t}){let{column:n}=e,o=[];if(n===void 0)return o;let{name:r,label:i=r}=n;return t.length===0?o.push({label:`Group by ${i}`,action:"group",options:e}):o.push({label:`Add ${i} to group by`,action:"group-add",options:e}),o}import{removeColumnFromFilter as En}from"@vuu-ui/vuu-filters";import{addGroupColumn as Ue,addSortColumn as _e,AggregationType as Sn,setAggregations as Y,setSortColumn as Je}from"@vuu-ui/vuu-utils";var An=(e,t)=>{if(e.filterStruct&&t){let[n,o]=En(t,e.filterStruct);return{filter:o,filterStruct:n}}else return e},{Average:Ln,Count:kn,Distinct:Kn,High:zn,Low:Nn,Sum:Fn}=Sn,Xe=({dataSource:e,onPersistentColumnOperation:t})=>(o,r)=>{let i=r;if(i.column&&e){let{column:s}=i;switch(o){case"sort-asc":return e.sort=Je(e.sort,s,"A"),!0;case"sort-dsc":return e.sort=Je(e.sort,s,"D"),!0;case"sort-add-asc":return e.sort=_e(e.sort,s,"A"),!0;case"sort-add-dsc":return e.sort=_e(e.sort,s,"D"),!0;case"group":return e.groupBy=Ue(e.groupBy,s),!0;case"group-add":return e.groupBy=Ue(e.groupBy,s),!0;case"column-hide":return t({type:"hideColumns",columns:[s]}),!0;case"column-remove":return e.columns=e.columns.filter(l=>l!==s.name),!0;case"filter-remove-column":return e.filter=An(e.filter,s),!0;case"remove-filters":return e.filter={filter:""},!0;case"agg-avg":return e.aggregations=Y(e.aggregations,s,Ln),!0;case"agg-high":return e.aggregations=Y(e.aggregations,s,zn),!0;case"agg-low":return e.aggregations=Y(e.aggregations,s,Nn),!0;case"agg-count":return e.aggregations=Y(e.aggregations,s,kn),!0;case"agg-distinct":return e.aggregations=Y(e.aggregations,s,Kn),!0;case"agg-sum":return e.aggregations=Y(e.aggregations,s,Fn),!0;case"column-pin-floating":return t({type:"pinColumn",column:s,pin:"floating"}),!0;case"column-pin-left":return t({type:"pinColumn",column:s,pin:"left"}),!0;case"column-pin-right":return t({type:"pinColumn",column:s,pin:"right"}),!0;case"column-unpin":return t({type:"pinColumn",column:s,pin:void 0}),!0;default:}}return!1};import{ContextMenuProvider as cs}from"@vuu-ui/vuu-popups";import{Button as us,useIdMemo as ms}from"@salt-ds/core";import{buildColumnMap as Mo,getColumnStyle as To,isGroupColumn as Ro,metadataKeys as Do,notHidden as xo,visibleColumnAtIndex as Ho}from"@vuu-ui/vuu-utils";import{useCallback as gt,useMemo as bt}from"react";import{isGroupColumn as qe,isJsonColumn as jn,isJsonGroup as qn,metadataKeys as eo,notHidden as to}from"@vuu-ui/vuu-utils";import no from"classnames";import{memo as oo,useCallback as et}from"react";import{getColumnStyle as In,metadataKeys as Vn}from"@vuu-ui/vuu-utils";import{EditableLabel as Wn}from"@heswell/salt-lab";import $n from"classnames";import{memo as On,useCallback as Gn,useRef as Bn,useState as Ye}from"react";import{jsx as ie}from"react/jsx-runtime";var{KEY:Qe}=Vn,he=On(({className:e,column:t,columnMap:n,onClick:o,row:r})=>{let i=Bn(null),{align:s,CellRenderer:l,key:a,pin:u,editable:c,resizing:p,valueFormatter:d}=t,[g,h]=Ye(!1),f=d(r[a]),[T,y]=Ye(f),m=()=>{var P;(P=i.current)==null||P.focus()},C=P=>{P.key==="Enter"&&h(!0)},R=Gn(P=>{o==null||o(P,t)},[t,o]),w=()=>{h(!0)},v=(P="",b="",M=!0,E=!1)=>{var x;h(!1),E?y(P):b!==P&&y(b),M===!1&&((x=i.current)==null||x.focus())},D=$n(e,{vuuAlignRight:s==="right",vuuPinFloating:u==="floating",vuuPinLeft:u==="left",vuuPinRight:u==="right","vuuTableCell-resizing":p})||void 0,S=In(t);return c?ie("div",{className:D,"data-editable":!0,role:"cell",style:S,onKeyDown:C,children:ie(Wn,{editing:g,value:T,onChange:y,onMouseDownCapture:m,onEnterEditMode:w,onExitEditMode:v,onKeyDown:C,ref:i,tabIndex:0},"title")}):ie("div",{className:D,role:"cell",style:S,onClick:R,children:l?ie(l,{column:t,columnMap:n,row:r}):f})},Un);he.displayName="TableCell";function Un(e,t){return e.column===t.column&&e.onClick===t.onClick&&e.row[Qe]===t.row[Qe]&&e.row[e.column.key]===t.row[t.column.key]}import{getColumnStyle as _n,metadataKeys as Jn}from"@vuu-ui/vuu-utils";import{useCallback as Xn}from"react";import{jsx as ve,jsxs as Zn}from"react/jsx-runtime";var{DEPTH:Yn,IS_LEAF:Ze}=Jn,Qn=(e,t)=>{let{[Yn]:n,[Ze]:o}=t;if(o||n>e.length)return[null,n===null?0:Math.max(0,n-1)];if(n===0)return["$root",0];{let{key:r,valueFormatter:i}=e[n-1];return[i(t[r]),n-1]}},je=({column:e,onClick:t,row:n})=>{let{columns:o}=e,[r,i]=Qn(o,n),s=Xn(c=>{t==null||t(c,e)},[e,t]),l=_n(e),a=n[Ze],u=Array(i).fill(0).map((c,p)=>ve("span",{className:"vuuTableGroupCell-spacer"},p));return Zn("div",{className:"vuuTableGroupCell vuuPinLeft",onClick:a?void 0:s,role:"cell",style:l,children:[u,a?null:ve("span",{className:"vuuTableGroupCell-toggle","data-icon":"triangle-right"}),ve("span",{children:r})]})};import{jsx as tt,jsxs as lo}from"react/jsx-runtime";var{IDX:ro,IS_EXPANDED:so,SELECTED:io}=eo,le="vuuTableRow",nt=oo(function({columnMap:t,columns:n,offset:o,onClick:r,onToggleGroup:i,virtualColSpan:s=0,row:l}){let{[ro]:a,[so]:u,[io]:c}=l,p=no(le,{[`${le}-even`]:a%2===0,[`${le}-expanded`]:u,[`${le}-preSelected`]:c===2}),d=et(h=>{let f=h.shiftKey,T=h.ctrlKey||h.metaKey;r==null||r(l,f,T)},[r,l]),g=et((h,f)=>{(qe(f)||qn(f,l))&&(h.stopPropagation(),i==null||i(l,f))},[i,l]);return lo("div",{"aria-selected":c===1?!0:void 0,"aria-rowindex":a,className:p,onClick:d,role:"row",style:{transform:`translate3d(0px, ${o}px, 0px)`},children:[s>0?tt("div",{role:"cell",style:{width:s}}):null,n.filter(to).map(h=>{let f=qe(h),T=jn(h);return tt(f?je:he,{column:h,columnMap:t,onClick:f||T?g:void 0,row:l},h.name)})]})});import it from"classnames";import{useRef as mo}from"react";import{useCallback as ye,useRef as ao}from"react";import{jsx as uo}from"react/jsx-runtime";var ot=()=>{},co="vuuColumnResizer",ae=({onDrag:e,onDragEnd:t=ot,onDragStart:n=ot})=>{let o=ao(0),r=ye(l=>{l.stopPropagation&&l.stopPropagation(),l.preventDefault&&l.preventDefault();let a=Math.round(l.clientX),u=a-o.current;o.current=a,u!==0&&e(l,u)},[e]),i=ye(l=>{window.removeEventListener("mouseup",i),window.removeEventListener("mousemove",r),t(l)},[t,r]),s=ye(l=>{n(l),o.current=Math.round(l.clientX),window.addEventListener("mouseup",i),window.addEventListener("mousemove",r),l.stopPropagation&&l.stopPropagation(),l.preventDefault&&l.preventDefault()},[n,r,i]);return uo("div",{className:co,"data-align":"end",onMouseDown:s})};import{useCallback as we,useRef as rt}from"react";var ce=({column:e,onResize:t,rootRef:n})=>{let o=rt(0),r=rt(!1),{name:i}=e,s=we(()=>{if(t&&n.current){let{width:u}=n.current.getBoundingClientRect();o.current=Math.round(u),r.current=!0,t==null||t("begin",i)}},[i,t,n]),l=we((u,c)=>{if(n.current&&t){let{width:p}=n.current.getBoundingClientRect(),d=Math.round(p)+c;d!==o.current&&d>0&&(t("resize",i,d),o.current=d)}},[i,t,n]),a=we(()=>{t&&(t("end",i,o.current),setTimeout(()=>{r.current=!1},100))},[i,t]);return{isResizing:r.current,onDrag:l,onDragStart:s,onDragEnd:a}};import{jsx as G,jsxs as at}from"react/jsx-runtime";var V="vuuTable-groupHeaderCell",st=({column:e,onClick:t,...n})=>G("span",{...n,className:`${V}-close`,"data-icon":"close-circle",onClick:()=>t==null?void 0:t(e)}),po=e=>{let{children:t,column:n,className:o}=e;return at("div",{className:it(`${V}-col`,o),role:"columnheader",children:[G("span",{className:`${V}-label`,children:n.name}),t]})},lt=({column:e,className:t,onRemoveColumn:n,onResize:o,...r})=>{let i=mo(null),{isResizing:s,...l}=ce({column:e,onResize:o,rootRef:i}),a=it(V,t,{vuuPinLeft:e.pin==="left",[`${V}-right`]:e.align==="right",[`${V}-resizing`]:e.resizing,[`${V}-pending`]:e.groupConfirmed===!1}),{columns:u}=e;return G("div",{className:a,ref:i,...r,children:at("div",{className:`${V}-inner`,children:[u.map(c=>G(po,{column:c,children:u.length>1?G(st,{column:c,onClick:n}):null},c.key)),G(st,{"data-align":"end",onClick:n}),e.resizeable!==!1?G(ae,{...l}):null]})})};import vo from"classnames";import{useCallback as Me,useRef as pt}from"react";import ct from"classnames";import{jsx as ue,jsxs as fo}from"react/jsx-runtime";var ut="vuuSortIndicator",mt=({sorted:e})=>{if(!e)return null;let t=typeof e=="number"?e<0?"dsc":"asc":e==="A"?"asc":"dsc";return typeof e=="number"?fo("div",{className:ct(ut,"multi-col",t),children:[ue("span",{"data-icon":`sorted-${t}`}),ue("span",{className:"vuuSortPosition",children:Math.abs(e)})]}):ue("div",{className:ct(ut,"single-col"),children:ue("span",{"data-icon":`sorted-${t}`})})};import{useContextMenu as yo}from"@vuu-ui/vuu-popups";import{useContextMenu as go}from"@vuu-ui/vuu-popups";import bo from"classnames";import{useCallback as Co}from"react";import{jsx as ho}from"react/jsx-runtime";var dt=({column:e,filter:t})=>{let n=go(),o=Co(r=>{r.stopPropagation(),n(r,"filter",{column:e,filter:t})},[e,t,n]);return e.filter?ho("div",{className:bo("vuuFilterIndicator"),"data-icon":"filter",onClick:o}):null};import{jsx as q,jsxs as wo}from"react/jsx-runtime";var j="vuuTable-headerCell",ft=({column:e,className:t,onClick:n,onDragStart:o,onResize:r,...i})=>{let s=pt(null),{isResizing:l,...a}=ce({column:e,onResize:r,rootRef:s}),u=yo(),c=pt(null),p=T=>{u(T,"header",{column:e})},d=Me(T=>!l&&(n==null?void 0:n(T)),[l,n]),g=Me(T=>{c.current=window.setTimeout(()=>{o==null||o(T),c.current=null},500)},[o]),h=Me(()=>{c.current!==null&&(window.clearTimeout(c.current),c.current=null)},[]),f=vo(j,t,{vuuPinFloating:e.pin==="floating",vuuPinLeft:e.pin==="left",vuuPinRight:e.pin==="right",vuuEndPin:e.endPin,[`${j}-resizing`]:e.resizing,[`${j}-right`]:e.align==="right"});return q("div",{className:f,...i,onClick:d,onContextMenu:p,onMouseDown:g,onMouseUp:h,ref:s,children:wo("div",{className:`${j}-inner`,children:[q(dt,{column:e}),q("div",{className:`${j}-label`,children:e.label}),q(mt,{sorted:e.sorted}),e.resizeable!==!1?q(ae,{...a}):null]})})};import{jsx as B,jsxs as Ct}from"react/jsx-runtime";var Te="vuuTable",{RENDER_IDX:Po}=Do,ht=({columns:e,columnsWithinViewport:t,data:n,getRowOffset:o,headings:r,onColumnResize:i,onHeaderCellDragStart:s,onContextMenu:l,onRemoveColumnFromGroupBy:a,onRowClick:u,onSort:c,onToggleGroup:p,tableId:d,virtualColSpan:g=0,rowCount:h})=>{let f=gt(C=>{s==null||s(C)},[s]),T=bt(()=>e.filter(xo),[e]),y=bt(()=>Mo(e),[e]),m=gt(C=>{var P;let w=C.target.closest(".vuuTable-headerCell"),v=parseInt((P=w==null?void 0:w.dataset.idx)!=null?P:"-1"),D=Ho(e,v),S=C.shiftKey;D&&c(D,S)},[e,c]);return Ct("div",{"aria-rowcount":h,className:`${Te}-table`,role:"table",children:[Ct("div",{className:`${Te}-headers`,role:"rowGroup",children:[r.map((C,R)=>B("div",{className:"vuuTable-heading",children:C.map(({label:w,width:v},D)=>B("div",{className:"vuuTable-headingCell",style:{width:v},children:w},D))},R)),B("div",{role:"row",children:T.map((C,R)=>{let w=To(C);return Ro(C)?B(lt,{column:C,"data-idx":R,onRemoveColumn:a,onResize:i,role:"columnHeader",style:w},R):B(ft,{column:C,"data-idx":R,id:`${d}-${R}`,onClick:m,onDragStart:f,onResize:i,role:"columnHeader",style:w},R)})})]}),B("div",{className:`${Te}-body`,onContextMenu:l,role:"rowGroup",children:n==null?void 0:n.map(C=>B(nt,{columnMap:y,columns:t,offset:o(C),onClick:u,virtualColSpan:g,onToggleGroup:p,row:C},C[Po]))})]})};import{useContextMenu as qr}from"@vuu-ui/vuu-popups";import{applySort as es,buildColumnMap as ts,isJsonGroup as ns,metadataKeys as os,moveItem as rs}from"@vuu-ui/vuu-utils";import{useCallback as z,useEffect as Qt,useMemo as ss,useRef as Ie,useState as is}from"react";import{isVuuFeatureAction as Eo,isVuuFeatureInvocation as So}from"@vuu-ui/vuu-data";import{getFullRange as Re,metadataKeys as Ao,WindowRange as Lo}from"@vuu-ui/vuu-utils";import{useCallback as Q,useEffect as me,useMemo as ko,useRef as ee,useState as Ko}from"react";var{SELECTED:te}=Ao;function vt({dataSource:e,onConfigChange:t,onFeatureEnabled:n,onFeatureInvocation:o,onSizeChange:r,onSubscribed:i,range:s={from:0,to:0},renderBufferSize:l=0,viewportRowCount:a}){let[,u]=Ko(null),c=ee(!0),p=ee(!1),d=ee({from:0,to:0}),g=ee(null),h=ee([]),f=ko(()=>new De(Re(s)),[]),T=Q(v=>{for(let D of v)f.add(D);h.current=f.data,p.current=!0},[f]),y=Q(v=>{v.type==="subscribed"?i==null||i(v):v.type==="viewport-update"?(typeof v.size=="number"&&(r==null||r(v.size),f.setRowCount(v.size)),v.rows?T(v.rows):typeof v.size=="number"&&(h.current=f.data,p.current=!0)):Eo(v)?n==null||n(v):So(v)?o==null||o(v):console.log(`useDataSource unexpected message ${v.type}`)},[f,n,o,r,i,T]);me(()=>()=>{g.current&&(cancelAnimationFrame(g.current),g.current=null),c.current=!1},[]);let m=Q(()=>{c.current&&(p.current&&(u({}),p.current=!1),g.current=requestAnimationFrame(m))},[u]);me(()=>{g.current=requestAnimationFrame(m)},[m]);let C=Q(v=>{let{from:D}=e.range,S={from:D,to:D+v},P=Re(S,l);f.setRange(P),e.range=d.current=P,e.emit("range",S)},[e,f,l]),R=Q(v=>{let D=Re(v,l);f.setRange(D),e.range=d.current=D,e.emit("range",v)},[e,f,l]),w=Q(()=>f.getSelectedRows(),[f]);return me(()=>{e==null||e.subscribe({range:d.current},y)},[e,y,t]),me(()=>{C(a)},[C,a]),{data:h.current,getSelectedRows:w,range:d.current,setRange:R,dataSource:e}}var De=class{constructor({from:t,to:n}){this.rowCount=0;this.setRowCount=t=>{t<this.data.length&&(this.data.length=t),this.rowCount=t};this.range=new Lo(t,n),this.data=new Array(n-t),this.rowCount=0}add(t){var o;let[n]=t;if(this.isWithinRange(n)){let r=n-this.range.from;this.data[r]=t;let i=t[te],s=(o=this.data[r-1])==null?void 0:o[te];s===0&&i?this.data[r-1][te]=2:s===2&&!i&&(this.data[r-1][te]=0)}}getAtIndex(t){return this.range.isWithin(t)&&this.data[t-this.range.from]!=null?this.data[t-this.range.from]:void 0}isWithinRange(t){return this.range.isWithin(t)}setRange({from:t,to:n}){if(t!==this.range.from||n!==this.range.to){let[o,r]=this.range.overlap(t,n),i=new Array(Math.max(0,n-t));for(let s=o;s<r;s++){let l=this.getAtIndex(s);if(l){let a=s-t;i[a]=l}}this.data=i,this.range.from=t,this.range.to=n}}getSelectedRows(){return this.data.filter(t=>t[te]===1)}};import{useDragDrop as zo}from"@heswell/salt-lab";import{useCallback as yt,useRef as wt}from"react";var Mt=({onDrop:e})=>{let t=wt(),n=wt(null),o=yt(()=>{console.log("handleDropSettle"),t.current=void 0,n.current=null},[]),{draggable:r,draggedItemIndex:i,onMouseDown:s}=zo({allowDragDrop:!0,draggableClassName:"vuuTable-headerCell",orientation:"horizontal",containerRef:n,itemQuery:".vuuTable-headerCell",onDrop:e,onDropSettle:o}),l=yt(a=>{let{clientX:u,clientY:c}=a;console.log("useDraggableColumn handleHeaderCellDragStart means mouseDown fired on a column in RowBasedTable");let d=a.target.closest(".vuuTable-headerCell");n.current=d==null?void 0:d.closest("[role='row']");let{dataset:{idx:g="-1"}}=d;t.current={clientX:u,clientY:c,idx:g},s==null||s(a)},[s]);return{draggable:r,draggedItemIndex:i,onHeaderCellDragStart:l}};import{withinRange as Oo}from"@vuu-ui/vuu-utils";import{useCallback as I,useEffect as Go,useLayoutEffect as Bo,useMemo as Uo,useRef as Ke}from"react";function No(e,...t){let n=new Set(e);for(let o of t)for(let r of o)n.add(r);return n}var xe="ArrowUp",He="ArrowDown",Pe="ArrowLeft",Ee="ArrowRight";var Se="Home",Ae="End",Le="PageUp",ke="PageDown";var Fo=new Set(["Enter","Delete"," "]),Io=new Set(["Tab"]),Vo=new Set(["ArrowRight","ArrowLeft"]),Tt=new Set([Se,Ae,Le,ke,He,Pe,Ee,xe]),Wo=new Set(["F1","F2","F3","F4","F5","F6","F7","F8","F9","F10","F11","F12"]),El=No(Fo,Tt,Vo,Wo,Io);var $o=["Home","End","PageUp","PageDown"],Rt=e=>$o.includes(e),Dt=e=>Tt.has(e);var xt=e=>`.vuuTable-headers .vuuTable-headerCell:nth-child(${e+1})`,_o=(e,t)=>`.vuuTable-body > [aria-rowindex='${e}'] > [role='cell']:nth-child(${t+1})`,Jo=[-1,-1];function Xo(e,[t,n],o,r){return e===xe?t>-1?[t-1,n]:[t,n]:e===He?t===-1?[0,n]:t===r-1?[t,n]:[t+1,n]:e===Ee?n<o-1?[t,n+1]:[t,n]:e===Pe?n>0?[t,n-1]:[t,n]:[t,n]}var Ht=({columnCount:e=0,containerRef:t,disableHighlightOnFocus:n,data:o,requestScroll:r,rowCount:i=0,viewportRange:s})=>{var P;let{from:l,to:a}=s,u=Ke([-1,-1]),c=Ke(),p=Ke([-1,0]),d=I(([b,M])=>{var x;let E=b===-1?xt(M):_o(b,M);return(x=t.current)==null?void 0:x.querySelector(E)},[t]),g=b=>b==null?void 0:b.closest("[role='columnHeader'],[role='cell']"),h=b=>{var M,E;if(b.role==="columnHeader")return[-1,parseInt((M=b.dataset.idx)!=null?M:"-1",10)];{let x=b.closest("[role='row']");if(x){let k=parseInt((E=x.ariaRowIndex)!=null?E:"-1",10),J=Array.from(x.childNodes).indexOf(b);return[k,J]}}return Jo},f=I(b=>{var M;if(t.current){let E=d(b);E?(E!==c.current&&((M=c.current)==null||M.setAttribute("tabindex",""),c.current=E,E.setAttribute("tabindex","0")),E.focus()):Oo(b[0],s)||(c.current=void 0,r==null||r({type:"scroll-page",direction:"up"}))}},[t,d,r,s]),T=I((b,M,E=!1)=>{let x=[b,M];p.current=x,f(x),E&&(u.current=x)},[f]),y=I(()=>{var b;(b=c.current)==null||b.setAttribute("tabindex",""),c.current=void 0},[]),m=I(async(b,M)=>{switch(b){case ke:r==null||r({type:"scroll-page",direction:"down"});break;case Le:r==null||r({type:"scroll-page",direction:"up"});break;case Se:r==null||r({type:"scroll-end",direction:"home"});break;case Ae:r==null||r({type:"scroll-end",direction:"end"});break}return M},[r]),C=I(()=>{var b;if(n!==!0&&(b=t.current)!=null&&b.contains(document.activeElement)){let M=g(document.activeElement);M&&(u.current=h(M))}},[n,t]),R=I(async b=>{let[M,E]=Rt(b)?await m(b,p.current):Xo(b,p.current,e,i),[x,k]=p.current;(M!==x||E!==k)&&T(M,E,!0)},[e,m,i,T]),w=I(b=>{o.length>0&&Dt(b.key)&&(b.preventDefault(),b.stopPropagation(),R(b.key))},[o,R]),v=I(b=>{let M=b.target,E=g(M);if(E){let[x,k]=h(E);T(x,k)}},[T]),D=Uo(()=>({onClick:v,onFocus:C,onKeyDown:w}),[v,C,w]);Bo(()=>{let{current:b}=p,M=b[0]>=l&&b[0]<=a;c.current&&!M?y():!c.current&&M&&f(b)},[f,l,a,y]);let S=((P=t.current)==null?void 0:P.firstChild)!=null;return Go(()=>{var b;if(S&&c.current===void 0){let M=(b=t.current)==null?void 0:b.querySelector(xt(0));M&&(M.setAttribute("tabindex","0"),c.current=M)}},[t,S]),D};import{isValidNumber as W}from"@vuu-ui/vuu-utils";import{useCallback as Zo,useMemo as jo,useRef as qo,useState as er}from"react";import{useCallback as Yo,useEffect as Pt,useRef as Qo}from"react";var U=new Map,St=(e,t,n)=>{switch(n){case"height":return t.height;case"clientHeight":return e.clientHeight;case"clientWidth":return e.clientWidth;case"contentHeight":return t.contentHeight;case"contentWidth":return t.contentWidth;case"scrollHeight":return Math.ceil(e.scrollHeight);case"scrollWidth":return Math.ceil(e.scrollWidth);case"width":return t.width;default:return 0}},Et=new ResizeObserver(e=>{for(let t of e){let{target:n,borderBoxSize:o,contentBoxSize:r}=t,i=U.get(n);if(i){let[{blockSize:s,inlineSize:l}]=o,[{blockSize:a,inlineSize:u}]=r,{onResize:c,measurements:p}=i,d=!1;for(let[g,h]of Object.entries(p)){let f=St(n,{height:s,width:l,contentHeight:a,contentWidth:u},g);f!==h&&(d=!0,p[g]=f)}d&&c&&c(p)}}});function At(e,t,n,o=!1){let r=Qo(t),i=Yo(s=>{let{width:l,height:a}=s.getBoundingClientRect(),{clientWidth:u,clientHeight:c}=s;return r.current.reduce((p,d)=>(p[d]=St(s,{width:l,height:a,contentHeight:c,contentWidth:u},d),p),{})},[]);Pt(()=>{let s=e.current;async function l(){U.set(s,{measurements:{}}),await document.fonts.ready;let a=U.get(s);if(a){let u=i(s);a.measurements=u,Et.observe(s),o&&n(u)}else console.log("%cuseResizeObserver an target expected to be under observation wa snot found. This warrants investigation","font-weight:bold; color:red;")}if(s){if(U.has(s))throw Error("useResizeObserver attemping to observe same element twice");l()}return()=>{s&&U.has(s)&&(Et.unobserve(s),U.delete(s))}},[i,e]),Pt(()=>{let s=e.current,l=U.get(s);if(l){if(r.current!==t){r.current=t;let a=i(s);l.measurements=a}l.onResize=n}},[t,i,e,n])}var tr=["clientHeight","clientWidth"],Lt=e=>Number.isFinite(e),nr={height:"100%",width:"100%"},or=(e,t)=>W(e)&&W(t)?{height:`${e}px`,width:`${t}px`}:nr,rr=(e,t)=>{if(W(e)&&W(t))return{height:e,width:t}},kt=({defaultHeight:e=0,defaultWidth:t=0,height:n,width:o})=>{let r=qo(null),[i,s]=er({css:or(n,o),inner:rr(n,o),outer:{height:n!=null?n:"100%",width:o!=null?o:"100%"}});jo(()=>{s(a=>{let{inner:u,outer:c}=a;if(W(n)&&W(o)&&u&&c){let{height:p,width:d}=u,{height:g,width:h}=c;if(g!==n||h!==o){let f=W(g)?g-p:0,T=W(h)?h-d:0;return{...a,outer:{height:n,width:o},inner:{height:n-f,width:o-T}}}}return a})},[n,o]);let l=Zo(({clientWidth:a,clientHeight:u})=>{s(c=>{let{css:p,inner:d,outer:g}=c;return Lt(u)&&Lt(a)&&(a!==(d==null?void 0:d.width)||u!==(d==null?void 0:d.height))?{css:p,outer:g,inner:{width:Math.floor(a)||t,height:Math.floor(u)||e}}:c})},[e,t]);return At(r,tr,l,!0),{containerRef:r,cssSize:i.css,outerSize:i.outer,innerSize:i.inner}};import{deselectItem as sr,metadataKeys as ir,selectItem as lr}from"@vuu-ui/vuu-utils";import{useCallback as ar,useRef as Kt}from"react";var{IDX:cr,SELECTED:ur}=ir,mr=[],zt=({selectionModel:e,onSelectionChange:t})=>{let n=Kt(-1),o=Kt(mr);return ar((i,s,l)=>{let{[cr]:a,[ur]:u}=i,{current:c}=n,{current:p}=o,g=(u?sr:lr)(e,p,a,s,l,c);o.current=g,n.current=a,t&&t(g)},[t,e])};import{moveItem as dr}from"@heswell/salt-lab";import{applyFilterToColumns as pr,applyGroupByToColumns as fr,applySortToColumns as gr,findColumn as br,getCellRenderer as Cr,getColumnName as hr,getTableHeadings as vr,getValueFormatter as yr,isFilteredColumn as wr,isGroupColumn as Mr,isPinned as Tr,isTypeDescriptor as Rr,logger as Dr,metadataKeys as xr,sortPinnedColumns as Nt,stripFilterFromColumns as Hr}from"@vuu-ui/vuu-utils";import{useReducer as Pr}from"react";var{info:ze}=Dr("useTableModel"),Er=100,Ft=xr.count,Sr=({serverDataType:e})=>e===void 0,Ar=e=>{var t;if(Rr(e.type))return Cr((t=e.type)==null?void 0:t.renderer)},It=(e,t)=>{if(e.serverDataType)return e.serverDataType;if(t){let n=t.columns.find(o=>o.name===e.name);if(n)return n.serverDataType}return"string"},Lr=["int","long","double"],Vt=e=>e===void 0?void 0:Lr.includes(e)?"right":"left",kr=(e,t)=>{switch(ze==null||ze(`GridModelReducer ${t.type}`),t.type){case"init":return $t(t);case"moveColumn":return zr(e,t);case"resizeColumn":return Ir(e,t);case"setTableSchema":return Vr(e,t);case"hideColumns":return Nr(e,t);case"showColumns":return Fr(e,t);case"pinColumn":return Wr(e,t);case"updateColumnProp":return ne(e,t);case"tableConfig":return Ot(e,t);default:return console.log(`unhandled action ${t.type}`),e}},Wt=(e,t)=>{let[n,o]=Pr(kr,{tableConfig:e,dataSourceConfig:t},$t);return{columns:n.columns,dispatchColumnAction:o,headings:n.headings}};function $t({dataSourceConfig:e,tableConfig:t}){let n=t.columns.map(Ne(t)),o=n.some(Tr)?Nt(n):n,r={columns:o,headings:vr(o)};if(e){let{columns:i,...s}=e;return Ot(r,{type:"tableConfig",...s})}else return r}var Kr=(e,t)=>t==="uppercase"?e.toUpperCase():t==="capitalize"?e[0].toUpperCase()+e.slice(1).toLowerCase():e,Ne=e=>(t,n)=>{let o=It(t,e.tableSchema),{columnDefaultWidth:r=Er,columnFormatHeader:i}=e,{align:s=Vt(o),key:l,name:a,label:u=a,width:c=r,...p}=t,d={...p,align:s,CellRenderer:Ar(t),label:Kr(u,i),key:l!=null?l:n+Ft,name:a,originalIdx:n,serverDataType:o,valueFormatter:yr(t),width:c};return Mr(d)&&(d.columns=d.columns.map(g=>Ne(e)(g,g.key))),d};function zr(e,{column:t,moveBy:n,moveTo:o}){let{columns:r}=e;if(typeof n=="number"){let i=r.indexOf(t),s=r.slice(),[l]=s.splice(i,1);return s.splice(i+n,0,l),{...e,columns:s}}else if(typeof o=="number"){let i=r.indexOf(t);return{...e,columns:dr(r,i,o)}}return e}function Nr(e,{columns:t}){return t.some(n=>n.hidden!==!0)?t.reduce((n,o)=>o.hidden!==!0?ne(n,{type:"updateColumnProp",column:o,hidden:!0}):n,e):e}function Fr(e,{columns:t}){return t.some(n=>n.hidden)?t.reduce((n,o)=>o.hidden?ne(n,{type:"updateColumnProp",column:o,hidden:!1}):n,e):e}function Ir(e,{column:t,phase:n,width:o}){let r="updateColumnProp",i=n!=="end";switch(n){case"begin":case"end":return ne(e,{type:r,column:t,resizing:i});case"resize":return ne(e,{type:r,column:t,width:o});default:throw Error(`useTableModel.resizeColumn, invalid resizePhase ${n}`)}}function Vr(e,{tableSchema:t}){let{columns:n}=e;if(n.some(Sr)){let o=n.map(r=>{var s;let i=It(r,t);return{...r,align:(s=r.align)!=null?s:Vt(i),serverDataType:i}});return{...e,columns:o,tableSchema:t}}else return{...e,tableSchema:t}}function Wr(e,t){let{columns:n}=e,{column:o,pin:r}=t,i=n.find(s=>s.name===o.name);return i?(n=Z(n,{...i,pin:r}),n=Nt(n),{...e,columns:n}):e}function ne(e,t){let{columns:n}=e,{align:o,column:r,hidden:i,label:s,resizing:l,width:a}=t,u=n.find(c=>c.name===r.name);return u&&((o==="left"||o==="right")&&(n=Z(n,{...u,align:o})),typeof s=="string"&&(n=Z(n,{...u,label:s})),typeof l=="boolean"&&(n=Z(n,{...u,resizing:l})),typeof i=="boolean"&&(n=Z(n,{...u,hidden:i})),typeof a=="number"&&(n=Z(n,{...u,width:a}))),{...e,columns:n}}function Ot(e,{columns:t,confirmed:n,filter:o,groupBy:r,sort:i}){let s=t&&t.length>0,l=r!==void 0,a=typeof(o==null?void 0:o.filter)=="string",u=i&&i.sortDefs.length>0,c=e;return s&&(c={...e,columns:t.map((p,d)=>{let g=hr(p),h=d+Ft,f=br(c.columns,g);return f?f.key===h?f:{...f,key:h}:Ne(e)({name:p},d)})}),l&&(c={...e,columns:fr(c.columns,r,n)}),u&&(c={...e,columns:gr(c.columns,i)}),a?c={...e,columns:pr(c.columns,o)}:c.columns.some(wr)&&(c={...e,columns:Hr(c.columns)}),c}function Z(e,t){return e.map(n=>n.name===t.name?t:n)}import{useCallback as $,useRef as oe}from"react";var Gt=e=>{let{scrollLeft:t,scrollTop:n}=e,{clientHeight:o,clientWidth:r,scrollHeight:i,scrollWidth:s}=e,l=t/(s-r),a=n/(i-o);return[l,a]},$r=e=>{let{clientHeight:t,clientWidth:n,scrollHeight:o,scrollWidth:r}=e;return[r-n,o-t]},Bt=({onAttach:e,onDetach:t})=>{let n=oe(null);return $(r=>{if(r)n.current=r,e==null||e(r);else if(n.current){let{current:i}=n;n.current=r,t==null||t(i)}},[e,t])},Ut=({onHorizontalScroll:e,onVerticalScroll:t,viewport:n})=>{let o=oe(!1),r=oe({scrollTop:0,scrollLeft:0}),i=oe(null),s=oe(null),{maxScrollContainerScrollHorizontal:l,maxScrollContainerScrollVertical:a}=n,u=$(()=>{let{current:m}=s,{current:C}=i,{current:R}=o;if(R)o.current=!1;else if(m&&C){let[w,v]=Gt(C),[D,S]=$r(m),P=Math.round(w*D),b=Math.round(v*S);m.scrollTo({left:P,top:b,behavior:"auto"})}},[]),c=$(()=>{let{current:m}=s,{current:C}=i,{current:R}=r;if(m&&C){let{scrollLeft:w,scrollTop:v}=m,[D,S]=Gt(m);o.current=!0,C.scrollLeft=Math.round(D*l),C.scrollTop=Math.round(S*a),R.scrollTop!==v&&(R.scrollTop=v,t==null||t(v,S)),R.scrollLeft!==w&&(R.scrollLeft=w,e==null||e(w))}},[l,a,e,t]),p=$(m=>{i.current=m,m.addEventListener("scroll",u,{passive:!0})},[u]),d=$(m=>{i.current=null,m.removeEventListener("scroll",u)},[u]),g=$(m=>{s.current=m,m.addEventListener("scroll",c,{passive:!0})},[c]),h=$(m=>{s.current=null,m.removeEventListener("scroll",c)},[c]),f=Bt({onAttach:g,onDetach:h}),T=Bt({onAttach:p,onDetach:d}),y=$(m=>{let{current:C}=s;if(C){if(o.current=!1,m.type==="scroll-page"){let{clientHeight:R,scrollLeft:w,scrollTop:v}=C,{direction:D}=m,S=D==="down"?R:-R,P=Math.min(Math.max(0,v+S),a);C.scrollTo({top:P,left:w,behavior:"auto"})}else if(m.type==="scroll-end"){let{direction:R}=m,w=R==="end"?a:0;C.scrollTo({top:w,left:C.scrollLeft,behavior:"auto"})}}},[a]);return{scrollbarContainerRef:T,contentContainerRef:f,requestScroll:y}};import{useCallback as Or,useMemo as de,useRef as Gr}from"react";import{actualRowPositioning as Br,virtualRowPositioning as Ur}from"@vuu-ui/vuu-utils";var _r=15e5,Jr={contentHeight:0,contentWidth:0,getRowAtPosition:()=>-1,getRowOffset:()=>-1,horizontalScrollbarHeight:0,maxScrollContainerScrollHorizontal:0,maxScrollContainerScrollVertical:0,pinnedWidthLeft:0,pinnedWidthRight:0,rowCount:0,setPctScrollTop:()=>{},totalHeaderHeight:0,verticalScrollbarWidth:0,viewportBodyHeight:0},Xr=e=>{let t=0,n=0,o=0;for(let r of e){let{hidden:i,pin:s,width:l}=r,a=i?0:l;s==="left"?t+=a:s==="right"?n+=a:o+=a}return{pinnedWidthLeft:t,pinnedWidthRight:n,unpinnedWidth:o}},_t=({columns:e,headerHeight:t,headings:n,rowCount:o,rowHeight:r,size:i})=>{let s=Gr(0),a=Math.min(o,_r)*r,c=o*r-a,{pinnedWidthLeft:p,pinnedWidthRight:d,unpinnedWidth:g}=de(()=>Xr(e),[e]),[h,f]=de(()=>Br(r),[r]),[T,y]=de(()=>c?Ur(r,c,s):[h,f],[f,h,c,r]),m=Or(C=>{s.current=C},[]);return de(()=>{var C;if(i){let R=n.length,w=15,v=p+g+d,D=v>i.width?w:0,S=t*(1+R),P=a-(((C=i==null?void 0:i.height)!=null?C:0)-D)+S,b=v-i.width+p,M=(i.height-t)/r,E=Number.isInteger(M)?M+1:Math.ceil(M),x=i.height-S,k=a>x?w:0;return{contentHeight:a,getRowAtPosition:y,getRowOffset:T,horizontalScrollbarHeight:D,maxScrollContainerScrollHorizontal:b,maxScrollContainerScrollVertical:P,pinnedWidthLeft:p,pinnedWidthRight:d,rowCount:E,contentWidth:v,setPctScrollTop:m,totalHeaderHeight:S,verticalScrollbarWidth:k,viewportBodyHeight:x}}else return Jr},[i,n.length,p,g,d,a,t,r,y,T,m])};import{getColumnsInViewport as Jt,itemsChanged as Yr}from"@vuu-ui/vuu-utils";import{useCallback as Xt,useEffect as Qr,useMemo as Zr,useRef as Fe,useState as jr}from"react";var Yt=({columns:e,getRowAtPosition:t,setRange:n,viewportMeasurements:o})=>{let r=Fe(-1),{rowCount:i,contentWidth:s,maxScrollContainerScrollHorizontal:l}=o,a=s-l,u=Fe(0),[c,p]=Zr(()=>Jt(e,u.current,u.current+a),[a,e]),d=Fe(p);Qr(()=>{h(c)},[c]);let[g,h]=jr(c),f=Xt(y=>{u.current=y;let[m,C]=Jt(e,y,y+a);Yr(g,m)&&(d.current=C,h(m))},[a,e,g]),T=Xt(y=>{let m=t(y);m!==r.current&&(r.current=m,n({from:m,to:m+i}))},[t,n,i]);return{columnsWithinViewport:g,onHorizontalScroll:f,onVerticalScroll:T,virtualColSpan:d.current}};var ls=[],{KEY:as,IS_EXPANDED:Zt,IS_LEAF:jt}=os,qt=({config:e,dataSource:t,headerHeight:n,onConfigChange:o,onFeatureEnabled:r,onFeatureInvocation:i,onSelectionChange:s,renderBufferSize:l=0,rowHeight:a,selectionModel:u,...c})=>{var Oe,Ge;let[p,d]=is(t.size),g=Ie(!1),h=Ie();if(h.current=t,t===void 0)throw Error("no data source provided to Vuu Table");let f=kt(c),T=z(H=>{d(H)},[]),{columns:y,dispatchColumnAction:m,headings:C}=Wt(e,t.config),{getRowAtPosition:R,getRowOffset:w,setPctScrollTop:v,...D}=_t({columns:y,headerHeight:n,headings:C,rowCount:p,rowHeight:a,size:f.innerSize}),S=z(({tableSchema:H})=>{H?(g.current=!0,m({type:"setTableSchema",tableSchema:H})):console.log("usbscription message with no schema")},[m]),P=z(H=>{t.select(H),s==null||s(H)},[t,s]),b=zt({onSelectionChange:P,selectionModel:u}),{data:M,getSelectedRows:E,range:x,setRange:k}=vt({dataSource:t,onFeatureEnabled:r,onFeatureInvocation:i,onSubscribed:S,onSizeChange:T,renderBufferSize:l,viewportRowCount:D.rowCount}),J=Ie();J.current=M;let pe=z(H=>{g.current=!0,m(H)},[m]),tn=Xe({dataSource:t,onPersistentColumnOperation:pe}),nn=z((H,A=!1,K)=>{t&&(t.sort=es(t.sort,H,A,K))},[t]),on=z((H,A,K)=>{let L=y.find(N=>N.name===A);if(L)H==="end"&&(g.current=!0),m({type:"resizeColumn",phase:H,column:L,width:K});else throw Error(`useDataTable.handleColumnResize, column ${A} not found`)},[y,m]),rn=z((H,A)=>{let K=ns(A,H),L=H[as];if(H[Zt]){if(t.closeTreeNode(L,!0),K){let N=y.indexOf(A);t.getRowsAtDepth(N+1).some(F=>F[Zt]||F[jt])||m({type:"hideColumns",columns:y.slice(N+2)})}}else if(t.openTreeNode(L),K){let N=t.getChildRows(L),O=y.indexOf(A)+1,F=[y[O]];N.some(X=>X[jt])&&F.push(y[O+1]),F.some(X=>X.hidden)&&m({type:"showColumns",columns:F})}},[y,t,m]),{onVerticalScroll:We,onHorizontalScroll:sn,columnsWithinViewport:ln,virtualColSpan:an}=Yt({columns:y,getRowAtPosition:R,setRange:k,viewportMeasurements:D}),cn=z((H,A)=>{v(A),We(H)},[We,v]),{requestScroll:un,...mn}=Ut({onHorizontalScroll:sn,onVerticalScroll:cn,viewport:D,viewportHeight:((Ge=(Oe=f.innerSize)==null?void 0:Oe.height)!=null?Ge:0)-n}),dn=Ht({columnCount:y.length,containerRef:f.containerRef,data:M,requestScroll:un,rowCount:t==null?void 0:t.size,viewportRange:x}),pn=z(H=>{H?t&&t.groupBy.includes(H.name)&&(t.groupBy=t.groupBy.filter(A=>A!==H.name)):t.groupBy=[]},[t]),fn=z((H,A)=>{let K=t.columns[H],L=rs(t.columns,K,A);L!==t.columns&&(t.columns=L,m({type:"tableConfig",columns:L}))},[t,m]),gn=Mt({onDrop:fn});Qt(()=>{h.current&&(g.current=!0,m({type:"init",tableConfig:e,dataSourceConfig:h.current.config}))},[e,m]),Qt(()=>{t.on("config",(H,A)=>{g.current=!0,m({type:"tableConfig",...H,confirmed:A})})},[t,m]),ss(()=>{g.current&&(o==null||o({...e,columns:y}),g.current=!1)},[y,e,o]);let $e=qr(),bn=z(H=>{var F;let{current:A}=J,{current:K}=h,L=H.target,N=L==null?void 0:L.closest("div[role='cell']"),O=L==null?void 0:L.closest(".vuuTableRow");if(N&&O&&A&&K){let{columns:X,selectedRowsCount:Cn}=K,hn=ts(X),vn=parseInt((F=O.ariaRowIndex)!=null?F:"-1"),yn=Array.from(O.childNodes).indexOf(N),wn=A.find(([Tn])=>Tn===vn),Mn=X[yn];$e(H,"grid",{columnMap:hn,columnName:Mn,row:wn,selectedRows:Cn===0?ls:E(),viewport:t==null?void 0:t.viewport})}},[t==null?void 0:t.viewport,E,$e]);return{columns:y,columnsWithinViewport:ln,containerMeasurements:f,containerProps:dn,data:M,dispatchColumnAction:m,getRowOffset:w,handleContextMenuAction:tn,headings:C,onColumnResize:on,onContextMenu:bn,onRemoveColumnFromGroupBy:pn,onRowClick:b,onSort:nn,onToggleGroup:rn,virtualColSpan:an,scrollProps:mn,rowCount:p,viewportMeasurements:D,...gn}};import ds from"classnames";import{isDataLoading as ps}from"@vuu-ui/vuu-utils";import{jsx as re,jsxs as en}from"react/jsx-runtime";var _="vuuTable",Ua=({allowConfigEditing:e=!1,className:t,config:n,dataSource:o,headerHeight:r=25,height:i,id:s,onConfigChange:l,onFeatureEnabled:a,onFeatureInvocation:u,onSelectionChange:c,onShowConfigEditor:p,renderBufferSize:d=0,rowHeight:g=20,selectionModel:h="extended",style:f,width:T,zebraStripes:y=!1,...m})=>{let C=ms(s),{containerMeasurements:{containerRef:R,innerSize:w,outerSize:v},containerProps:D,dispatchColumnAction:S,draggable:P,draggedItemIndex:b,handleContextMenuAction:M,scrollProps:E,viewportMeasurements:x,...k}=qt({config:n,dataSource:o,renderBufferSize:d,headerHeight:r,height:i,onConfigChange:l,onFeatureEnabled:a,onFeatureInvocation:u,onSelectionChange:c,rowHeight:g,selectionModel:h,width:T}),J={...v,"--content-height":`${x.contentHeight}px`,"--horizontal-scrollbar-height":`${x.horizontalScrollbarHeight}px`,"--content-width":`${x.contentWidth}px`,"--pinned-width-left":`${x.pinnedWidthLeft}px`,"--pinned-width-right":`${x.pinnedWidthRight}px`,"--header-height":`${r}px`,"--row-height":`${g}px`,"--table-height":`${w==null?void 0:w.height}px`,"--table-width":`${w==null?void 0:w.width}px`,"--total-header-height":`${x.totalHeaderHeight}px`,"--vertical-scrollbar-width":`${x.verticalScrollbarWidth}px`,"--viewport-body-height":`${x.viewportBodyHeight}px`},pe=ds(_,t,{[`${_}-zebra`]:y,[`${_}-loading`]:ps(k.columns)});return re(cs,{menuActionHandler:M,menuBuilder:Be(o),children:en("div",{...m,...D,className:pe,id:C,ref:R,style:J,tabIndex:-1,children:[w?re("div",{className:`${_}-scrollbarContainer`,ref:E.scrollbarContainerRef,children:re("div",{className:`${_}-scrollbarContent`})}):null,w?en("div",{className:`${_}-contentContainer`,ref:E.contentContainerRef,children:[re(ht,{...k,headerHeight:r,tableId:C}),P]}):null,e&&w?re(us,{className:`${_}-settings`,"data-icon":"settings",onClick:p,variant:"secondary"}):null]})})};import fs from"classnames";import{isJsonAttribute as gs,metadataKeys as bs,registerComponent as Cs}from"@vuu-ui/vuu-utils";import{jsx as Ve,jsxs as Ms}from"react/jsx-runtime";var se="vuuJsonCell",{IS_EXPANDED:hs,KEY:vs}=bs,ys=e=>{let t=e.lastIndexOf("|");return t===-1?"":e.slice(t+1)},ws=({column:e,row:t})=>{let{key:n}=e,o=t[n],r=!1;gs(o)&&(o=o.slice(0,-1),r=!0);let i=ys(t[vs]),s=fs({[`${se}-name`]:i===o,[`${se}-value`]:i!==o,[`${se}-group`]:r});if(r){let l=t[hs]?"minus-box":"plus-box";return Ms("span",{className:s,children:[Ve("span",{className:`${se}-value`,children:o}),Ve("span",{className:`${se}-toggle`,"data-icon":l})]})}else return o?Ve("span",{className:s,children:o}):null};Cs("json",ws,"cell-renderer",{});export{Ua as Table,Be as buildContextMenuDescriptors,kt as useMeasuredContainer,Xe as useTableContextMenu,Wt as useTableModel,_t as useTableViewport};
1
+ var Ft=(r,e,t)=>{if(!e.has(r))throw TypeError("Cannot "+t)};var X=(r,e,t)=>(Ft(r,e,"read from private field"),t?t.call(r):e.get(r)),zt=(r,e,t)=>{if(e.has(r))throw TypeError("Cannot add the same private member more than once");e instanceof WeakSet?e.add(r):e.set(r,t)},Ye=(r,e,t,n)=>(Ft(r,e,"write to private field"),n?n.call(r,t):e.set(r,t),t);import{useCallback as Je,useRef as Dr}from"react";import{jsx as Ar}from"react/jsx-runtime";var Wt=()=>{},Or="vuuColumnResizer",Ne=({onDrag:r,onDragEnd:e=Wt,onDragStart:t=Wt})=>{let n=Dr(0),s=Je(l=>{l.stopPropagation&&l.stopPropagation(),l.preventDefault&&l.preventDefault();let a=Math.round(l.clientX),u=a-n.current;n.current=a,u!==0&&r(l,u)},[r]),o=Je(l=>{window.removeEventListener("mouseup",o),window.removeEventListener("mousemove",s),e(l)},[e,s]),i=Je(l=>{t(l),n.current=Math.round(l.clientX),window.addEventListener("mouseup",o),window.addEventListener("mousemove",s),l.stopPropagation&&l.stopPropagation(),l.preventDefault&&l.preventDefault()},[t,s,o]);return Ar("div",{className:Or,"data-align":"end",onMouseDown:i})};import{isNumericColumn as Er}from"@vuu-ui/vuu-utils";var Kt=r=>(e,t)=>{let n=[];if(r===void 0)return n;if(e==="header")n.push(...Hr(t,r)),n.push(...Lr(t,r)),n.push(...Vr(t,r)),n.push(...Ir(t)),n.push({action:"column-settings",icon:"cog",label:"Column Settings",options:t});else if(e==="filter"){let{column:s,filter:o}=t,i=(o==null?void 0:o.column)===(s==null?void 0:s.name);n.push({label:"Edit filter",action:"filter-edit",options:t}),n.push({label:"Remove filter",action:"filter-remove-column",options:t}),s&&!i&&n.push({label:"Remove all filters",action:"remove-filters",options:t})}return n};function Hr(r,{sort:{sortDefs:e}}){let{column:t}=r,n=[];if(t===void 0)return n;let s=e.length>0;return t.sorted==="A"?n.push({label:"Reverse Sort (DSC)",action:"sort-dsc",options:r}):t.sorted==="D"?n.push({label:"Reverse Sort (ASC)",action:"sort-asc",options:r}):typeof t.sorted=="number"?(t.sorted>0?n.push({label:"Reverse Sort (DSC)",action:"sort-add-dsc",options:r}):n.push({label:"Reverse Sort (ASC)",action:"sort-add-asc",options:r}),s&&Math.abs(t.sorted)<e.length&&n.push({label:"Remove from sort",action:"sort-remove",options:r}),n.push({label:"New Sort",children:[{label:"Ascending",action:"sort-asc",options:r},{label:"Descending",action:"sort-dsc",options:r}]})):s?(n.push({label:"Add to sort",children:[{label:"Ascending",action:"sort-add-asc",options:r},{label:"Descending",action:"sort-add-dsc",options:r}]}),n.push({label:"New Sort",children:[{label:"Ascending",action:"sort-asc",options:r},{label:"Descending",action:"sort-dsc",options:r}]})):n.push({label:"Sort",children:[{label:"Ascending",action:"sort-asc",options:r},{label:"Descending",action:"sort-dsc",options:r}]}),n}function Vr(r,e){let{column:t}=r;if(t===void 0||e.groupBy.length===0)return[];let{name:n,label:s=n}=t;return[{label:`Aggregate ${s}`,children:[{label:"Count",action:"agg-count",options:r},{label:"Distinct",action:"agg-distinct",options:r}].concat(Er(t)?[{label:"Sum",action:"agg-sum",options:r},{label:"Avg",action:"agg-avg",options:r},{label:"High",action:"agg-high",options:r},{label:"Low",action:"agg-low",options:r}]:[])}]}var tt=(r,e)=>({label:`Pin ${e}`,action:`column-pin-${e}`,options:r}),Ze=r=>tt(r,"left"),qe=r=>tt(r,"floating"),et=r=>tt(r,"right");function Ir(r){let{column:e}=r;if(e===void 0)return[];let{pin:t}=e,n=[{label:"Hide column",action:"column-hide",options:r},{label:"Remove column",action:"column-remove",options:r}];return t===void 0?n.push({label:"Pin column",children:[Ze(r),qe(r),et(r)]}):t==="left"?n.push({label:"Unpin column",action:"column-unpin",options:r},{label:"Pin column",children:[qe(r),et(r)]}):t==="right"?n.push({label:"Unpin column",action:"column-unpin",options:r},{label:"Pin column",children:[Ze(r),qe(r)]}):t==="floating"&&n.push({label:"Unpin column",action:"column-unpin",options:r},{label:"Pin column",children:[Ze(r),et(r)]}),n}function Lr(r,{groupBy:e}){let{column:t}=r,n=[];if(t===void 0)return n;let{name:s,label:o=s}=t;return e.length===0?n.push({label:`Group by ${o}`,action:"group",options:r}):n.push({label:`Add ${o} to group by`,action:"group-add",options:r}),n}import{removeColumnFromFilter as Nr}from"@vuu-ui/vuu-utils";import{addGroupColumn as Bt,addSortColumn as _t,AggregationType as Fr,setAggregations as me,setSortColumn as $t}from"@vuu-ui/vuu-utils";var zr=(r,e)=>{if(r.filterStruct&&e){let[t,n]=Nr(e,r.filterStruct);return{filter:n,filterStruct:t}}else return r},{Average:Wr,Count:Kr,Distinct:Br,High:_r,Low:$r,Sum:Qr}=Fr,Qt=({dataSource:r,onPersistentColumnOperation:e})=>(n,s)=>{let o=s;if(o.column&&r){let{column:i}=o;switch(n){case"sort-asc":return r.sort=$t(r.sort,i,"A"),!0;case"sort-dsc":return r.sort=$t(r.sort,i,"D"),!0;case"sort-add-asc":return r.sort=_t(r.sort,i,"A"),!0;case"sort-add-dsc":return r.sort=_t(r.sort,i,"D"),!0;case"group":return r.groupBy=Bt(r.groupBy,i),!0;case"group-add":return r.groupBy=Bt(r.groupBy,i),!0;case"column-hide":return e({type:"hideColumns",columns:[i]}),!0;case"column-remove":return r.columns=r.columns.filter(l=>l!==i.name),!0;case"filter-remove-column":return r.filter=zr(r.filter,i),!0;case"remove-filters":return r.filter={filter:""},!0;case"agg-avg":return r.aggregations=me(r.aggregations,i,Wr),!0;case"agg-high":return r.aggregations=me(r.aggregations,i,_r),!0;case"agg-low":return r.aggregations=me(r.aggregations,i,$r),!0;case"agg-count":return r.aggregations=me(r.aggregations,i,Kr),!0;case"agg-distinct":return r.aggregations=me(r.aggregations,i,Br),!0;case"agg-sum":return r.aggregations=me(r.aggregations,i,Qr),!0;case"column-pin-floating":return e({type:"pinColumn",column:i,pin:"floating"}),!0;case"column-pin-left":return e({type:"pinColumn",column:i,pin:"left"}),!0;case"column-pin-right":return e({type:"pinColumn",column:i,pin:"right"}),!0;case"column-unpin":return e({type:"pinColumn",column:i,pin:void 0}),!0;case"column-settings":return e({type:"columnSettings",column:i}),!0;default:}}return!1};import{ContextMenuProvider as ko}from"@vuu-ui/vuu-popups";import{Button as So,useIdMemo as To}from"@salt-ds/core";import{buildColumnMap as ks,getColumnStyle as Ss,isGroupColumn as Ts,metadataKeys as Ds,notHidden as Os,visibleColumnAtIndex as As}from"@vuu-ui/vuu-utils";import{useCallback as hn,useMemo as fn}from"react";import{isGroupColumn as Xt,isJsonColumn as os,isJsonGroup as ls,metadataKeys as as,notHidden as us}from"@vuu-ui/vuu-utils";import cs from"classnames";import{memo as hs,useCallback as Yt}from"react";import{getColumnStyle as Ur,metadataKeys as Gr}from"@vuu-ui/vuu-utils";import{EditableLabel as jr}from"@heswell/salt-lab";import Xr from"classnames";import{memo as Yr,useCallback as Jr,useRef as Zr,useState as Ut}from"react";import{jsx as Fe}from"react/jsx-runtime";var{KEY:Gt}=Gr,nt=Yr(({className:r,column:e,columnMap:t,onClick:n,row:s})=>{let o=Zr(null),{align:i,CellRenderer:l,key:a,pin:u,editable:c,resizing:h,valueFormatter:f}=e,[m,g]=Ut(!1),C=f(s[a]),[D,R]=Ut(C),b=()=>{var M;(M=o.current)==null||M.focus()},x=M=>{M.key==="Enter"&&g(!0)},P=Jr(M=>{n==null||n(M,e)},[e,n]),w=()=>{g(!0)},p=(M="",d="",v=!0,T=!1)=>{var k;g(!1),T?R(M):d!==M&&R(d),v===!1&&((k=o.current)==null||k.focus())},y=Xr(r,{vuuAlignRight:i==="right",vuuPinFloating:u==="floating",vuuPinLeft:u==="left",vuuPinRight:u==="right","vuuTableCell-resizing":h})||void 0,S=Ur(e);return c?Fe("div",{className:y,"data-editable":!0,role:"cell",style:S,onKeyDown:x,children:Fe(jr,{editing:m,value:D,onChange:R,onMouseDownCapture:b,onEnterEditMode:w,onExitEditMode:p,onKeyDown:x,ref:o,tabIndex:0},"title")}):Fe("div",{className:y,role:"cell",style:S,onClick:P,children:l?Fe(l,{column:e,columnMap:t,row:s}):C})},qr);nt.displayName="TableCell";function qr(r,e){return r.column===e.column&&r.onClick===e.onClick&&r.row[Gt]===e.row[Gt]&&r.row[r.column.key]===e.row[e.column.key]}import{getColumnStyle as es,getGroupValueAndOffset as ts,metadataKeys as ns}from"@vuu-ui/vuu-utils";import{useCallback as rs}from"react";import{jsx as rt,jsxs as is}from"react/jsx-runtime";var{IS_LEAF:ss}=ns,jt=({column:r,onClick:e,row:t})=>{let{columns:n}=r,[s,o]=ts(n,t),i=rs(c=>{e==null||e(c,r)},[r,e]),l=es(r),a=t[ss],u=Array(o).fill(0).map((c,h)=>rt("span",{className:"vuuTableGroupCell-spacer"},h));return is("div",{className:"vuuTableGroupCell vuuPinLeft",onClick:a?void 0:i,role:"cell",style:l,children:[u,a?null:rt("span",{className:"vuuTableGroupCell-toggle","data-icon":"triangle-right"}),rt("span",{children:s})]})};import{jsx as Jt,jsxs as ms}from"react/jsx-runtime";var{IDX:fs,IS_EXPANDED:ps,SELECTED:ds}=as,ze="vuuTableRow",Zt=hs(function({columnMap:e,columns:t,offset:n,onClick:s,onToggleGroup:o,virtualColSpan:i=0,row:l}){let{[fs]:a,[ps]:u,[ds]:c}=l,h=cs(ze,{[`${ze}-even`]:a%2===0,[`${ze}-expanded`]:u,[`${ze}-preSelected`]:c===2}),f=Yt(g=>{let C=g.shiftKey,D=g.ctrlKey||g.metaKey;s==null||s(l,C,D)},[s,l]),m=Yt((g,C)=>{(Xt(C)||ls(C,l))&&(g.stopPropagation(),o==null||o(l,C))},[o,l]);return ms("div",{"aria-selected":c===1?!0:void 0,"aria-rowindex":a,className:h,onClick:f,role:"row",style:{transform:`translate3d(0px, ${n}px, 0px)`},children:[i>0?Jt("div",{role:"cell",style:{width:i}}):null,t.filter(us).map(g=>{let C=Xt(g),D=os(g);return Jt(C?jt:nt,{column:g,columnMap:e,onClick:C||D?m:void 0,row:l},g.name)})]})});import tn from"classnames";import{useRef as gs}from"react";import{useCallback as st,useRef as qt}from"react";var We=({column:r,onResize:e,rootRef:t})=>{let n=qt(0),s=qt(!1),{name:o}=r,i=st(()=>{if(e&&t.current){console.log("handleResizeStart");let{width:u}=t.current.getBoundingClientRect();n.current=Math.round(u),s.current=!0,e==null||e("begin",o)}},[o,e,t]),l=st((u,c)=>{if(t.current&&e){let{width:h}=t.current.getBoundingClientRect(),f=Math.round(h)+c;f!==n.current&&f>0&&(e("resize",o,f),n.current=f)}},[o,e,t]),a=st(()=>{e&&(e("end",o,n.current),setTimeout(()=>{s.current=!1},100))},[o,e]);return{isResizing:s.current,onDrag:l,onDragStart:i,onDragEnd:a}};import{jsx as ae,jsxs as rn}from"react/jsx-runtime";var re="vuuTable-groupHeaderCell",en=({column:r,onClick:e,...t})=>ae("span",{...t,className:`${re}-close`,"data-icon":"close-circle",onClick:()=>e==null?void 0:e(r)}),bs=r=>{let{children:e,column:t,className:n}=r;return rn("div",{className:tn(`${re}-col`,n),role:"columnheader",children:[ae("span",{className:`${re}-label`,children:t.name}),e]})},nn=({column:r,className:e,onRemoveColumn:t,onResize:n,...s})=>{let o=gs(null),{isResizing:i,...l}=We({column:r,onResize:n,rootRef:o}),a=tn(re,e,{vuuPinLeft:r.pin==="left",[`${re}-right`]:r.align==="right",[`${re}-resizing`]:r.resizing,[`${re}-pending`]:r.groupConfirmed===!1}),{columns:u}=r;return ae("div",{className:a,ref:o,...s,children:rn("div",{className:`${re}-inner`,children:[u.map(c=>ae(bs,{column:c,children:u.length>1?ae(en,{column:c,onClick:t}):null},c.key)),ae(en,{"data-align":"end",onClick:t}),r.resizeable!==!1?ae(Ne,{...l}):null]})})};import Ps from"classnames";import{useCallback as it,useRef as un}from"react";import sn from"classnames";import{jsx as Ke,jsxs as Cs}from"react/jsx-runtime";var on="vuuSortIndicator",ln=({sorted:r})=>{if(!r)return null;let e=typeof r=="number"?r<0?"dsc":"asc":r==="A"?"asc":"dsc";return typeof r=="number"?Cs("div",{className:sn(on,"multi-col",e),children:[Ke("span",{"data-icon":`sorted-${e}`}),Ke("span",{className:"vuuSortPosition",children:Math.abs(r)})]}):Ke("div",{className:sn(on,"single-col"),children:Ke("span",{"data-icon":`sorted-${e}`})})};import{useContextMenu as Ms}from"@vuu-ui/vuu-popups";import{useContextMenu as xs}from"@vuu-ui/vuu-popups";import ws from"classnames";import{useCallback as ys}from"react";import{jsx as vs}from"react/jsx-runtime";var an=({column:r,filter:e})=>{let t=xs(),n=ys(s=>{s.stopPropagation(),t(s,"filter",{column:r,filter:e})},[r,e,t]);return r.filter?vs("div",{className:ws("vuuFilterIndicator"),"data-icon":"filter",onClick:n}):null};import{jsx as Re,jsxs as Rs}from"react/jsx-runtime";var Me="vuuTable-headerCell",cn=({column:r,className:e,onClick:t,onDragStart:n,onResize:s,...o})=>{let i=un(null),{isResizing:l,...a}=We({column:r,onResize:s,rootRef:i}),u=Ms(),c=un(null),h=D=>{u(D,"header",{column:r})},f=it(D=>!l&&(t==null?void 0:t(D)),[l,t]),m=it(D=>{c.current=window.setTimeout(()=>{n==null||n(D),c.current=null},500)},[n]),g=it(()=>{c.current!==null&&(window.clearTimeout(c.current),c.current=null)},[]),C=Ps(Me,e,{vuuPinFloating:r.pin==="floating",vuuPinLeft:r.pin==="left",vuuPinRight:r.pin==="right",vuuEndPin:r.endPin,[`${Me}-resizing`]:r.resizing,[`${Me}-right`]:r.align==="right"});return Re("div",{className:C,...o,onClick:f,onContextMenu:h,onMouseDown:m,onMouseUp:g,ref:i,children:Rs("div",{className:`${Me}-inner`,children:[Re(an,{column:r}),Re("div",{className:`${Me}-label`,children:r.label}),Re(ln,{sorted:r.sorted}),r.resizeable!==!1?Re(Ne,{...a}):null]})})};import{jsx as ue,jsxs as pn}from"react/jsx-runtime";var ot="vuuTable",{RENDER_IDX:Es}=Ds,dn=({columns:r,columnsWithinViewport:e,data:t,getRowOffset:n,headings:s,onColumnResize:o,onHeaderCellDragStart:i,onContextMenu:l,onRemoveColumnFromGroupBy:a,onRowClick:u,onSort:c,onToggleGroup:h,tableId:f,virtualColSpan:m=0,rowCount:g})=>{let C=hn(x=>{i==null||i(x)},[i]),D=fn(()=>r.filter(Os),[r]),R=fn(()=>ks(r),[r]),b=hn(x=>{var M;let w=x.target.closest(".vuuTable-headerCell"),p=parseInt((M=w==null?void 0:w.dataset.idx)!=null?M:"-1"),y=As(r,p),S=x.shiftKey;y&&c(y,S)},[r,c]);return pn("div",{"aria-rowcount":g,className:`${ot}-table`,role:"table",children:[pn("div",{className:`${ot}-headers`,role:"rowGroup",children:[s.map((x,P)=>ue("div",{className:"vuuTable-heading",children:x.map(({label:w,width:p},y)=>ue("div",{className:"vuuTable-headingCell",style:{width:p},children:w},y))},P)),ue("div",{role:"row",children:D.map((x,P)=>{let w=Ss(x);return Ts(x)?ue(nn,{column:x,"data-idx":P,onRemoveColumn:a,onResize:o,role:"columnHeader",style:w},P):ue(cn,{column:x,"data-idx":P,id:`${f}-${P}`,onClick:b,onDragStart:C,onResize:o,role:"columnHeader",style:w},P)})})]}),ue("div",{className:`${ot}-body`,onContextMenu:l,role:"rowGroup",children:t==null?void 0:t.map(x=>ue(Zt,{columnMap:R,columns:e,offset:n(x),onClick:u,virtualColSpan:m,onToggleGroup:h,row:x},x[Es]))})]})};import{useContextMenu as go}from"@vuu-ui/vuu-popups";import{applySort as bo,buildColumnMap as Co,isJsonGroup as xo,metadataKeys as wo,moveItem as yo}from"@vuu-ui/vuu-utils";import{useCallback as U,useEffect as ur,useMemo as vo,useRef as Ht,useState as Po}from"react";import{getFullRange as Ha,metadataKeys as Hs,WindowRange as Va}from"@vuu-ui/vuu-utils";import{useCallback as La,useEffect as Na,useMemo as Fa,useRef as za,useState as Wa}from"react";var{SELECTED:Ka}=Hs;import{useCallback as $a,useEffect as Qa,useState as Ua}from"react";import{ConnectionManager as ja}from"@vuu-ui/vuu-data";import{useCallback as Za,useEffect as qa,useState as eu}from"react";import{ConnectionManager as nu}from"@vuu-ui/vuu-data";import{useCallback as iu}from"react";import{makeRpcCall as lu}from"@vuu-ui/vuu-data";var Vs=0,ke=class{constructor(e,t){this.from=e,this.to=t}},A=class{constructor(e={}){this.id=Vs++,this.perNode=!!e.perNode,this.deserialize=e.deserialize||(()=>{throw new Error("This node type doesn't define a deserialize function")})}add(e){if(this.perNode)throw new RangeError("Can't add per-node props to node types");return typeof e!="function"&&(e=F.match(e)),t=>{let n=e(t);return n===void 0?null:[this,n]}}};A.closedBy=new A({deserialize:r=>r.split(" ")});A.openedBy=new A({deserialize:r=>r.split(" ")});A.group=new A({deserialize:r=>r.split(" ")});A.contextHash=new A({perNode:!0});A.lookAhead=new A({perNode:!0});A.mounted=new A({perNode:!0});var Is=Object.create(null),F=class{constructor(e,t,n,s=0){this.name=e,this.props=t,this.id=n,this.flags=s}static define(e){let t=e.props&&e.props.length?Object.create(null):Is,n=(e.top?1:0)|(e.skipped?2:0)|(e.error?4:0)|(e.name==null?8:0),s=new F(e.name||"",t,e.id,n);if(e.props){for(let o of e.props)if(Array.isArray(o)||(o=o(s)),o){if(o[0].perNode)throw new RangeError("Can't store a per-node prop on a node type");t[o[0].id]=o[1]}}return s}prop(e){return this.props[e.id]}get isTop(){return(this.flags&1)>0}get isSkipped(){return(this.flags&2)>0}get isError(){return(this.flags&4)>0}get isAnonymous(){return(this.flags&8)>0}is(e){if(typeof e=="string"){if(this.name==e)return!0;let t=this.prop(A.group);return t?t.indexOf(e)>-1:!1}return this.id==e}static match(e){let t=Object.create(null);for(let n in e)for(let s of n.split(" "))t[s]=e[n];return n=>{for(let s=n.prop(A.group),o=-1;o<(s?s.length:0);o++){let i=t[o<0?n.name:s[o]];if(i)return i}}}};F.none=new F("",Object.create(null),0,8);var ge=class{constructor(e){this.types=e;for(let t=0;t<e.length;t++)if(e[t].id!=t)throw new RangeError("Node type ids should correspond to array positions when creating a node set")}extend(...e){let t=[];for(let n of this.types){let s=null;for(let o of e){let i=o(n);i&&(s||(s=Object.assign({},n.props)),s[i[0].id]=i[1])}t.push(s?new F(n.name,s,n.id,n.flags):n)}return new ge(t)}},Be=new WeakMap,mn=new WeakMap,V;(function(r){r[r.ExcludeBuffers=1]="ExcludeBuffers",r[r.IncludeAnonymous=2]="IncludeAnonymous",r[r.IgnoreMounts=4]="IgnoreMounts",r[r.IgnoreOverlays=8]="IgnoreOverlays"})(V||(V={}));var L=class{constructor(e,t,n,s,o){if(this.type=e,this.children=t,this.positions=n,this.length=s,this.props=null,o&&o.length){this.props=Object.create(null);for(let[i,l]of o)this.props[typeof i=="number"?i:i.id]=l}}toString(){let e=this.prop(A.mounted);if(e&&!e.overlay)return e.tree.toString();let t="";for(let n of this.children){let s=n.toString();s&&(t&&(t+=","),t+=s)}return this.type.name?(/\W/.test(this.type.name)&&!this.type.isError?JSON.stringify(this.type.name):this.type.name)+(t.length?"("+t+")":""):t}cursor(e=0){return new Ce(this.topNode,e)}cursorAt(e,t=0,n=0){let s=Be.get(this)||this.topNode,o=new Ce(s);return o.moveTo(e,t),Be.set(this,o._tree),o}get topNode(){return new $(this,0,0,null)}resolve(e,t=0){let n=be(Be.get(this)||this.topNode,e,t,!1);return Be.set(this,n),n}resolveInner(e,t=0){let n=be(mn.get(this)||this.topNode,e,t,!0);return mn.set(this,n),n}iterate(e){let{enter:t,leave:n,from:s=0,to:o=this.length}=e,i=e.mode||0,l=(i&V.IncludeAnonymous)>0;for(let a=this.cursor(i|V.IncludeAnonymous);;){let u=!1;if(a.from<=o&&a.to>=s&&(!l&&a.type.isAnonymous||t(a)!==!1)){if(a.firstChild())continue;u=!0}for(;u&&n&&(l||!a.type.isAnonymous)&&n(a),!a.nextSibling();){if(!a.parent())return;u=!0}}}prop(e){return e.perNode?this.props?this.props[e.id]:void 0:this.type.prop(e)}get propValues(){let e=[];if(this.props)for(let t in this.props)e.push([+t,this.props[t]]);return e}balance(e={}){return this.children.length<=8?this:ct(F.none,this.children,this.positions,0,this.children.length,0,this.length,(t,n,s)=>new L(this.type,t,n,s,this.propValues),e.makeTree||((t,n,s)=>new L(F.none,t,n,s)))}static build(e){return Ls(e)}};L.empty=new L(F.none,[],[],0);var Se=class{constructor(e,t){this.buffer=e,this.index=t}get id(){return this.buffer[this.index-4]}get start(){return this.buffer[this.index-3]}get end(){return this.buffer[this.index-2]}get size(){return this.buffer[this.index-1]}get pos(){return this.index}next(){this.index-=4}fork(){return new Se(this.buffer,this.index)}},q=class{constructor(e,t,n){this.buffer=e,this.length=t,this.set=n}get type(){return F.none}toString(){let e=[];for(let t=0;t<this.buffer.length;)e.push(this.childString(t)),t=this.buffer[t+3];return e.join(",")}childString(e){let t=this.buffer[e],n=this.buffer[e+3],s=this.set.types[t],o=s.name;if(/\W/.test(o)&&!s.isError&&(o=JSON.stringify(o)),e+=4,n==e)return o;let i=[];for(;e<n;)i.push(this.childString(e)),e=this.buffer[e+3];return o+"("+i.join(",")+")"}findChild(e,t,n,s,o){let{buffer:i}=this,l=-1;for(let a=e;a!=t&&!(bn(o,s,i[a+1],i[a+2])&&(l=a,n>0));a=i[a+3]);return l}slice(e,t,n){let s=this.buffer,o=new Uint16Array(t-e),i=0;for(let l=e,a=0;l<t;){o[a++]=s[l++],o[a++]=s[l++]-n;let u=o[a++]=s[l++]-n;o[a++]=s[l++]-e,i=Math.max(i,u)}return new q(o,i,this.set)}};function bn(r,e,t,n){switch(r){case-2:return t<e;case-1:return n>=e&&t<e;case 0:return t<e&&n>e;case 1:return t<=e&&n>e;case 2:return n>e;case 4:return!0}}function Cn(r,e){let t=r.childBefore(e);for(;t;){let n=t.lastChild;if(!n||n.to!=t.to)break;n.type.isError&&n.from==n.to?(r=t,t=n.prevSibling):t=n}return r}function be(r,e,t,n){for(var s;r.from==r.to||(t<1?r.from>=e:r.from>e)||(t>-1?r.to<=e:r.to<e);){let i=!n&&r instanceof $&&r.index<0?null:r.parent;if(!i)return r;r=i}let o=n?0:V.IgnoreOverlays;if(n)for(let i=r,l=i.parent;l;i=l,l=i.parent)i instanceof $&&i.index<0&&((s=l.enter(e,t,o))===null||s===void 0?void 0:s.from)!=i.from&&(r=l);for(;;){let i=r.enter(e,t,o);if(!i)return r;r=i}}var $=class{constructor(e,t,n,s){this._tree=e,this.from=t,this.index=n,this._parent=s}get type(){return this._tree.type}get name(){return this._tree.type.name}get to(){return this.from+this._tree.length}nextChild(e,t,n,s,o=0){for(let i=this;;){for(let{children:l,positions:a}=i._tree,u=t>0?l.length:-1;e!=u;e+=t){let c=l[e],h=a[e]+i.from;if(bn(s,n,h,h+c.length)){if(c instanceof q){if(o&V.ExcludeBuffers)continue;let f=c.findChild(0,c.buffer.length,t,n-h,s);if(f>-1)return new Y(new lt(i,c,e,h),null,f)}else if(o&V.IncludeAnonymous||!c.type.isAnonymous||ut(c)){let f;if(!(o&V.IgnoreMounts)&&c.props&&(f=c.prop(A.mounted))&&!f.overlay)return new $(f.tree,h,e,i);let m=new $(c,h,e,i);return o&V.IncludeAnonymous||!m.type.isAnonymous?m:m.nextChild(t<0?c.children.length-1:0,t,n,s)}}}if(o&V.IncludeAnonymous||!i.type.isAnonymous||(i.index>=0?e=i.index+t:e=t<0?-1:i._parent._tree.children.length,i=i._parent,!i))return null}}get firstChild(){return this.nextChild(0,1,0,4)}get lastChild(){return this.nextChild(this._tree.children.length-1,-1,0,4)}childAfter(e){return this.nextChild(0,1,e,2)}childBefore(e){return this.nextChild(this._tree.children.length-1,-1,e,-2)}enter(e,t,n=0){let s;if(!(n&V.IgnoreOverlays)&&(s=this._tree.prop(A.mounted))&&s.overlay){let o=e-this.from;for(let{from:i,to:l}of s.overlay)if((t>0?i<=o:i<o)&&(t<0?l>=o:l>o))return new $(s.tree,s.overlay[0].from+this.from,-1,this)}return this.nextChild(0,1,e,t,n)}nextSignificantParent(){let e=this;for(;e.type.isAnonymous&&e._parent;)e=e._parent;return e}get parent(){return this._parent?this._parent.nextSignificantParent():null}get nextSibling(){return this._parent&&this.index>=0?this._parent.nextChild(this.index+1,1,0,4):null}get prevSibling(){return this._parent&&this.index>=0?this._parent.nextChild(this.index-1,-1,0,4):null}cursor(e=0){return new Ce(this,e)}get tree(){return this._tree}toTree(){return this._tree}resolve(e,t=0){return be(this,e,t,!1)}resolveInner(e,t=0){return be(this,e,t,!0)}enterUnfinishedNodesBefore(e){return Cn(this,e)}getChild(e,t=null,n=null){let s=$e(this,e,t,n);return s.length?s[0]:null}getChildren(e,t=null,n=null){return $e(this,e,t,n)}toString(){return this._tree.toString()}get node(){return this}matchContext(e){return Qe(this,e)}};function $e(r,e,t,n){let s=r.cursor(),o=[];if(!s.firstChild())return o;if(t!=null){for(;!s.type.is(t);)if(!s.nextSibling())return o}for(;;){if(n!=null&&s.type.is(n))return o;if(s.type.is(e)&&o.push(s.node),!s.nextSibling())return n==null?o:[]}}function Qe(r,e,t=e.length-1){for(let n=r.parent;t>=0;n=n.parent){if(!n)return!1;if(!n.type.isAnonymous){if(e[t]&&e[t]!=n.name)return!1;t--}}return!0}var lt=class{constructor(e,t,n,s){this.parent=e,this.buffer=t,this.index=n,this.start=s}},Y=class{get name(){return this.type.name}get from(){return this.context.start+this.context.buffer.buffer[this.index+1]}get to(){return this.context.start+this.context.buffer.buffer[this.index+2]}constructor(e,t,n){this.context=e,this._parent=t,this.index=n,this.type=e.buffer.set.types[e.buffer.buffer[n]]}child(e,t,n){let{buffer:s}=this.context,o=s.findChild(this.index+4,s.buffer[this.index+3],e,t-this.context.start,n);return o<0?null:new Y(this.context,this,o)}get firstChild(){return this.child(1,0,4)}get lastChild(){return this.child(-1,0,4)}childAfter(e){return this.child(1,e,2)}childBefore(e){return this.child(-1,e,-2)}enter(e,t,n=0){if(n&V.ExcludeBuffers)return null;let{buffer:s}=this.context,o=s.findChild(this.index+4,s.buffer[this.index+3],t>0?1:-1,e-this.context.start,t);return o<0?null:new Y(this.context,this,o)}get parent(){return this._parent||this.context.parent.nextSignificantParent()}externalSibling(e){return this._parent?null:this.context.parent.nextChild(this.context.index+e,e,0,4)}get nextSibling(){let{buffer:e}=this.context,t=e.buffer[this.index+3];return t<(this._parent?e.buffer[this._parent.index+3]:e.buffer.length)?new Y(this.context,this._parent,t):this.externalSibling(1)}get prevSibling(){let{buffer:e}=this.context,t=this._parent?this._parent.index+4:0;return this.index==t?this.externalSibling(-1):new Y(this.context,this._parent,e.findChild(t,this.index,-1,0,4))}cursor(e=0){return new Ce(this,e)}get tree(){return null}toTree(){let e=[],t=[],{buffer:n}=this.context,s=this.index+4,o=n.buffer[this.index+3];if(o>s){let i=n.buffer[this.index+1];e.push(n.slice(s,o,i)),t.push(0)}return new L(this.type,e,t,this.to-this.from)}resolve(e,t=0){return be(this,e,t,!1)}resolveInner(e,t=0){return be(this,e,t,!0)}enterUnfinishedNodesBefore(e){return Cn(this,e)}toString(){return this.context.buffer.childString(this.index)}getChild(e,t=null,n=null){let s=$e(this,e,t,n);return s.length?s[0]:null}getChildren(e,t=null,n=null){return $e(this,e,t,n)}get node(){return this}matchContext(e){return Qe(this,e)}},Ce=class{get name(){return this.type.name}constructor(e,t=0){if(this.mode=t,this.buffer=null,this.stack=[],this.index=0,this.bufferNode=null,e instanceof $)this.yieldNode(e);else{this._tree=e.context.parent,this.buffer=e.context;for(let n=e._parent;n;n=n._parent)this.stack.unshift(n.index);this.bufferNode=e,this.yieldBuf(e.index)}}yieldNode(e){return e?(this._tree=e,this.type=e.type,this.from=e.from,this.to=e.to,!0):!1}yieldBuf(e,t){this.index=e;let{start:n,buffer:s}=this.buffer;return this.type=t||s.set.types[s.buffer[e]],this.from=n+s.buffer[e+1],this.to=n+s.buffer[e+2],!0}yield(e){return e?e instanceof $?(this.buffer=null,this.yieldNode(e)):(this.buffer=e.context,this.yieldBuf(e.index,e.type)):!1}toString(){return this.buffer?this.buffer.buffer.childString(this.index):this._tree.toString()}enterChild(e,t,n){if(!this.buffer)return this.yield(this._tree.nextChild(e<0?this._tree._tree.children.length-1:0,e,t,n,this.mode));let{buffer:s}=this.buffer,o=s.findChild(this.index+4,s.buffer[this.index+3],e,t-this.buffer.start,n);return o<0?!1:(this.stack.push(this.index),this.yieldBuf(o))}firstChild(){return this.enterChild(1,0,4)}lastChild(){return this.enterChild(-1,0,4)}childAfter(e){return this.enterChild(1,e,2)}childBefore(e){return this.enterChild(-1,e,-2)}enter(e,t,n=this.mode){return this.buffer?n&V.ExcludeBuffers?!1:this.enterChild(1,e,t):this.yield(this._tree.enter(e,t,n))}parent(){if(!this.buffer)return this.yieldNode(this.mode&V.IncludeAnonymous?this._tree._parent:this._tree.parent);if(this.stack.length)return this.yieldBuf(this.stack.pop());let e=this.mode&V.IncludeAnonymous?this.buffer.parent:this.buffer.parent.nextSignificantParent();return this.buffer=null,this.yieldNode(e)}sibling(e){if(!this.buffer)return this._tree._parent?this.yield(this._tree.index<0?null:this._tree._parent.nextChild(this._tree.index+e,e,0,4,this.mode)):!1;let{buffer:t}=this.buffer,n=this.stack.length-1;if(e<0){let s=n<0?0:this.stack[n]+4;if(this.index!=s)return this.yieldBuf(t.findChild(s,this.index,-1,0,4))}else{let s=t.buffer[this.index+3];if(s<(n<0?t.buffer.length:t.buffer[this.stack[n]+3]))return this.yieldBuf(s)}return n<0?this.yield(this.buffer.parent.nextChild(this.buffer.index+e,e,0,4,this.mode)):!1}nextSibling(){return this.sibling(1)}prevSibling(){return this.sibling(-1)}atLastNode(e){let t,n,{buffer:s}=this;if(s){if(e>0){if(this.index<s.buffer.buffer.length)return!1}else for(let o=0;o<this.index;o++)if(s.buffer.buffer[o+3]<this.index)return!1;({index:t,parent:n}=s)}else({index:t,_parent:n}=this._tree);for(;n;{index:t,_parent:n}=n)if(t>-1)for(let o=t+e,i=e<0?-1:n._tree.children.length;o!=i;o+=e){let l=n._tree.children[o];if(this.mode&V.IncludeAnonymous||l instanceof q||!l.type.isAnonymous||ut(l))return!1}return!0}move(e,t){if(t&&this.enterChild(e,0,4))return!0;for(;;){if(this.sibling(e))return!0;if(this.atLastNode(e)||!this.parent())return!1}}next(e=!0){return this.move(1,e)}prev(e=!0){return this.move(-1,e)}moveTo(e,t=0){for(;(this.from==this.to||(t<1?this.from>=e:this.from>e)||(t>-1?this.to<=e:this.to<e))&&this.parent(););for(;this.enterChild(1,e,t););return this}get node(){if(!this.buffer)return this._tree;let e=this.bufferNode,t=null,n=0;if(e&&e.context==this.buffer)e:for(let s=this.index,o=this.stack.length;o>=0;){for(let i=e;i;i=i._parent)if(i.index==s){if(s==this.index)return i;t=i,n=o+1;break e}s=this.stack[--o]}for(let s=n;s<this.stack.length;s++)t=new Y(this.buffer,t,this.stack[s]);return this.bufferNode=new Y(this.buffer,t,this.index)}get tree(){return this.buffer?null:this._tree._tree}iterate(e,t){for(let n=0;;){let s=!1;if(this.type.isAnonymous||e(this)!==!1){if(this.firstChild()){n++;continue}this.type.isAnonymous||(s=!0)}for(;s&&t&&t(this),s=this.type.isAnonymous,!this.nextSibling();){if(!n)return;this.parent(),n--,s=!0}}}matchContext(e){if(!this.buffer)return Qe(this.node,e);let{buffer:t}=this.buffer,{types:n}=t.set;for(let s=e.length-1,o=this.stack.length-1;s>=0;o--){if(o<0)return Qe(this.node,e,s);let i=n[t.buffer[this.stack[o]]];if(!i.isAnonymous){if(e[s]&&e[s]!=i.name)return!1;s--}}return!0}};function ut(r){return r.children.some(e=>e instanceof q||!e.type.isAnonymous||ut(e))}function Ls(r){var e;let{buffer:t,nodeSet:n,maxBufferLength:s=1024,reused:o=[],minRepeatType:i=n.types.length}=r,l=Array.isArray(t)?new Se(t,t.length):t,a=n.types,u=0,c=0;function h(P,w,p,y,S){let{id:M,start:d,end:v,size:T}=l,k=c;for(;T<0;)if(l.next(),T==-1){let G=o[M];p.push(G),y.push(d-P);return}else if(T==-3){u=M;return}else if(T==-4){c=M;return}else throw new RangeError(`Unrecognized record size: ${T}`);let E=a[M],N,W,Ie=d-P;if(v-d<=s&&(W=C(l.pos-w,S))){let G=new Uint16Array(W.size-W.skip),K=l.pos-W.size,B=G.length;for(;l.pos>K;)B=D(W.start,G,B);N=new q(G,v-W.start,n),Ie=W.start-P}else{let G=l.pos-T;l.next();let K=[],B=[],j=M>=i?M:-1,ne=0,pe=v;for(;l.pos>G;)j>=0&&l.id==j&&l.size>=0?(l.end<=pe-s&&(m(K,B,d,ne,l.end,pe,j,k),ne=K.length,pe=l.end),l.next()):h(d,G,K,B,j);if(j>=0&&ne>0&&ne<K.length&&m(K,B,d,ne,d,pe,j,k),K.reverse(),B.reverse(),j>-1&&ne>0){let Le=f(E);N=ct(E,K,B,0,K.length,0,v-d,Le,Le)}else N=g(E,K,B,v-d,k-v)}p.push(N),y.push(Ie)}function f(P){return(w,p,y)=>{let S=0,M=w.length-1,d,v;if(M>=0&&(d=w[M])instanceof L){if(!M&&d.type==P&&d.length==y)return d;(v=d.prop(A.lookAhead))&&(S=p[M]+d.length+v)}return g(P,w,p,y,S)}}function m(P,w,p,y,S,M,d,v){let T=[],k=[];for(;P.length>y;)T.push(P.pop()),k.push(w.pop()+p-S);P.push(g(n.types[d],T,k,M-S,v-M)),w.push(S-p)}function g(P,w,p,y,S=0,M){if(u){let d=[A.contextHash,u];M=M?[d].concat(M):[d]}if(S>25){let d=[A.lookAhead,S];M=M?[d].concat(M):[d]}return new L(P,w,p,y,M)}function C(P,w){let p=l.fork(),y=0,S=0,M=0,d=p.end-s,v={size:0,start:0,skip:0};e:for(let T=p.pos-P;p.pos>T;){let k=p.size;if(p.id==w&&k>=0){v.size=y,v.start=S,v.skip=M,M+=4,y+=4,p.next();continue}let E=p.pos-k;if(k<0||E<T||p.start<d)break;let N=p.id>=i?4:0,W=p.start;for(p.next();p.pos>E;){if(p.size<0)if(p.size==-3)N+=4;else break e;else p.id>=i&&(N+=4);p.next()}S=W,y+=k,M+=N}return(w<0||y==P)&&(v.size=y,v.start=S,v.skip=M),v.size>4?v:void 0}function D(P,w,p){let{id:y,start:S,end:M,size:d}=l;if(l.next(),d>=0&&y<i){let v=p;if(d>4){let T=l.pos-(d-4);for(;l.pos>T;)p=D(P,w,p)}w[--p]=v,w[--p]=M-P,w[--p]=S-P,w[--p]=y}else d==-3?u=y:d==-4&&(c=y);return p}let R=[],b=[];for(;l.pos>0;)h(r.start||0,r.bufferStart||0,R,b,-1);let x=(e=r.length)!==null&&e!==void 0?e:R.length?b[0]+R[0].length:0;return new L(a[r.topID],R.reverse(),b.reverse(),x)}var gn=new WeakMap;function _e(r,e){if(!r.isAnonymous||e instanceof q||e.type!=r)return 1;let t=gn.get(e);if(t==null){t=1;for(let n of e.children){if(n.type!=r||!(n instanceof L)){t=1;break}t+=_e(r,n)}gn.set(e,t)}return t}function ct(r,e,t,n,s,o,i,l,a){let u=0;for(let g=n;g<s;g++)u+=_e(r,e[g]);let c=Math.ceil(u*1.5/8),h=[],f=[];function m(g,C,D,R,b){for(let x=D;x<R;){let P=x,w=C[x],p=_e(r,g[x]);for(x++;x<R;x++){let y=_e(r,g[x]);if(p+y>=c)break;p+=y}if(x==P+1){if(p>c){let y=g[P];m(y.children,y.positions,0,y.children.length,C[P]+b);continue}h.push(g[P])}else{let y=C[x-1]+g[x-1].length-w;h.push(ct(r,g,C,P,x,w,y,null,a))}f.push(w+b-o)}}return m(e,t,n,s,0),(l||a)(h,f,i)}var Ue=class{startParse(e,t,n){return typeof e=="string"&&(e=new at(e)),n=n?n.length?n.map(s=>new ke(s.from,s.to)):[new ke(0,0)]:[new ke(0,e.length)],this.createParse(e,t||[],n)}parse(e,t,n){let s=this.startParse(e,t,n);for(;;){let o=s.advance();if(o)return o}}},at=class{constructor(e){this.string=e}get length(){return this.string.length}chunk(e){return this.string.slice(e)}get lineChunks(){return!1}read(e,t){return this.string.slice(e,t)}};var uu=new A({perNode:!0});var we=class{constructor(e,t,n,s,o,i,l,a,u,c=0,h){this.p=e,this.stack=t,this.state=n,this.reducePos=s,this.pos=o,this.score=i,this.buffer=l,this.bufferBase=a,this.curContext=u,this.lookAhead=c,this.parent=h}toString(){return`[${this.stack.filter((e,t)=>t%3==0).concat(this.state)}]@${this.pos}${this.score?"!"+this.score:""}`}static start(e,t,n=0){let s=e.parser.context;return new we(e,[],t,n,n,0,[],0,s?new Ge(s,s.start):null,0,null)}get context(){return this.curContext?this.curContext.context:null}pushState(e,t){this.stack.push(this.state,t,this.bufferBase+this.buffer.length),this.state=e}reduce(e){var t;let n=e>>19,s=e&65535,{parser:o}=this.p,i=o.dynamicPrecedence(s);if(i&&(this.score+=i),n==0){this.pushState(o.getGoto(this.state,s,!0),this.reducePos),s<o.minRepeatTerm&&this.storeNode(s,this.reducePos,this.reducePos,4,!0),this.reduceContext(s,this.reducePos);return}let l=this.stack.length-(n-1)*3-(e&262144?6:0),a=l?this.stack[l-2]:this.p.ranges[0].from,u=this.reducePos-a;u>=2e3&&!(!((t=this.p.parser.nodeSet.types[s])===null||t===void 0)&&t.isAnonymous)&&(a==this.p.lastBigReductionStart?(this.p.bigReductionCount++,this.p.lastBigReductionSize=u):this.p.lastBigReductionSize<u&&(this.p.bigReductionCount=1,this.p.lastBigReductionStart=a,this.p.lastBigReductionSize=u));let c=l?this.stack[l-1]:0,h=this.bufferBase+this.buffer.length-c;if(s<o.minRepeatTerm||e&131072){let f=o.stateFlag(this.state,1)?this.pos:this.reducePos;this.storeNode(s,a,f,h+4,!0)}if(e&262144)this.state=this.stack[l];else{let f=this.stack[l-3];this.state=o.getGoto(f,s,!0)}for(;this.stack.length>l;)this.stack.pop();this.reduceContext(s,a)}storeNode(e,t,n,s=4,o=!1){if(e==0&&(!this.stack.length||this.stack[this.stack.length-1]<this.buffer.length+this.bufferBase)){let i=this,l=this.buffer.length;if(l==0&&i.parent&&(l=i.bufferBase-i.parent.bufferBase,i=i.parent),l>0&&i.buffer[l-4]==0&&i.buffer[l-1]>-1){if(t==n)return;if(i.buffer[l-2]>=t){i.buffer[l-2]=n;return}}}if(!o||this.pos==n)this.buffer.push(e,t,n,s);else{let i=this.buffer.length;if(i>0&&this.buffer[i-4]!=0)for(;i>0&&this.buffer[i-2]>n;)this.buffer[i]=this.buffer[i-4],this.buffer[i+1]=this.buffer[i-3],this.buffer[i+2]=this.buffer[i-2],this.buffer[i+3]=this.buffer[i-1],i-=4,s>4&&(s-=4);this.buffer[i]=e,this.buffer[i+1]=t,this.buffer[i+2]=n,this.buffer[i+3]=s}}shift(e,t,n){let s=this.pos;if(e&131072)this.pushState(e&65535,this.pos);else if(e&262144)this.pos=n,this.shiftContext(t,s),t<=this.p.parser.maxNode&&this.buffer.push(t,s,n,4);else{let o=e,{parser:i}=this.p;(n>this.pos||t<=i.maxNode)&&(this.pos=n,i.stateFlag(o,1)||(this.reducePos=n)),this.pushState(o,s),this.shiftContext(t,s),t<=i.maxNode&&this.buffer.push(t,s,n,4)}}apply(e,t,n){e&65536?this.reduce(e):this.shift(e,t,n)}useNode(e,t){let n=this.p.reused.length-1;(n<0||this.p.reused[n]!=e)&&(this.p.reused.push(e),n++);let s=this.pos;this.reducePos=this.pos=s+e.length,this.pushState(t,s),this.buffer.push(n,s,this.reducePos,-1),this.curContext&&this.updateContext(this.curContext.tracker.reuse(this.curContext.context,e,this,this.p.stream.reset(this.pos-e.length)))}split(){let e=this,t=e.buffer.length;for(;t>0&&e.buffer[t-2]>e.reducePos;)t-=4;let n=e.buffer.slice(t),s=e.bufferBase+t;for(;e&&s==e.bufferBase;)e=e.parent;return new we(this.p,this.stack.slice(),this.state,this.reducePos,this.pos,this.score,n,s,this.curContext,this.lookAhead,e)}recoverByDelete(e,t){let n=e<=this.p.parser.maxNode;n&&this.storeNode(e,this.pos,t,4),this.storeNode(0,this.pos,t,n?8:4),this.pos=this.reducePos=t,this.score-=190}canShift(e){for(let t=new ft(this);;){let n=this.p.parser.stateSlot(t.state,4)||this.p.parser.hasAction(t.state,e);if(n==0)return!1;if(!(n&65536))return!0;t.reduce(n)}}recoverByInsert(e){if(this.stack.length>=300)return[];let t=this.p.parser.nextStates(this.state);if(t.length>4<<1||this.stack.length>=120){let s=[];for(let o=0,i;o<t.length;o+=2)(i=t[o+1])!=this.state&&this.p.parser.hasAction(i,e)&&s.push(t[o],i);if(this.stack.length<120)for(let o=0;s.length<4<<1&&o<t.length;o+=2){let i=t[o+1];s.some((l,a)=>a&1&&l==i)||s.push(t[o],i)}t=s}let n=[];for(let s=0;s<t.length&&n.length<4;s+=2){let o=t[s+1];if(o==this.state)continue;let i=this.split();i.pushState(o,this.pos),i.storeNode(0,i.pos,i.pos,4,!0),i.shiftContext(t[s],this.pos),i.score-=200,n.push(i)}return n}forceReduce(){let e=this.p.parser.stateSlot(this.state,5);if(!(e&65536))return!1;let{parser:t}=this.p;if(!t.validAction(this.state,e)){let n=e>>19,s=e&65535,o=this.stack.length-n*3;if(o<0||t.getGoto(this.stack[o],s,!1)<0)return!1;this.storeNode(0,this.reducePos,this.reducePos,4,!0),this.score-=100}return this.reducePos=this.pos,this.reduce(e),!0}forceAll(){for(;!this.p.parser.stateFlag(this.state,2);)if(!this.forceReduce()){this.storeNode(0,this.pos,this.pos,4,!0);break}return this}get deadEnd(){if(this.stack.length!=3)return!1;let{parser:e}=this.p;return e.data[e.stateSlot(this.state,1)]==65535&&!e.stateSlot(this.state,4)}restart(){this.state=this.stack[0],this.stack.length=0}sameState(e){if(this.state!=e.state||this.stack.length!=e.stack.length)return!1;for(let t=0;t<this.stack.length;t+=3)if(this.stack[t]!=e.stack[t])return!1;return!0}get parser(){return this.p.parser}dialectEnabled(e){return this.p.parser.dialect.flags[e]}shiftContext(e,t){this.curContext&&this.updateContext(this.curContext.tracker.shift(this.curContext.context,e,this,this.p.stream.reset(t)))}reduceContext(e,t){this.curContext&&this.updateContext(this.curContext.tracker.reduce(this.curContext.context,e,this,this.p.stream.reset(t)))}emitContext(){let e=this.buffer.length-1;(e<0||this.buffer[e]!=-3)&&this.buffer.push(this.curContext.hash,this.reducePos,this.reducePos,-3)}emitLookAhead(){let e=this.buffer.length-1;(e<0||this.buffer[e]!=-4)&&this.buffer.push(this.lookAhead,this.reducePos,this.reducePos,-4)}updateContext(e){if(e!=this.curContext.context){let t=new Ge(this.curContext.tracker,e);t.hash!=this.curContext.hash&&this.emitContext(),this.curContext=t}}setLookAhead(e){e>this.lookAhead&&(this.emitLookAhead(),this.lookAhead=e)}close(){this.curContext&&this.curContext.tracker.strict&&this.emitContext(),this.lookAhead>0&&this.emitLookAhead()}},Ge=class{constructor(e,t){this.tracker=e,this.context=t,this.hash=e.strict?e.hash(t):0}},xn;(function(r){r[r.Insert=200]="Insert",r[r.Delete=190]="Delete",r[r.Reduce=100]="Reduce",r[r.MaxNext=4]="MaxNext",r[r.MaxInsertStackDepth=300]="MaxInsertStackDepth",r[r.DampenInsertStackDepth=120]="DampenInsertStackDepth",r[r.MinBigReduction=2e3]="MinBigReduction"})(xn||(xn={}));var ft=class{constructor(e){this.start=e,this.state=e.state,this.stack=e.stack,this.base=this.stack.length}reduce(e){let t=e&65535,n=e>>19;n==0?(this.stack==this.start.stack&&(this.stack=this.stack.slice()),this.stack.push(this.state,0,0),this.base+=3):this.base-=(n-1)*3;let s=this.start.p.parser.getGoto(this.stack[this.base-3],t,!0);this.state=s}},ye=class{constructor(e,t,n){this.stack=e,this.pos=t,this.index=n,this.buffer=e.buffer,this.index==0&&this.maybeNext()}static create(e,t=e.bufferBase+e.buffer.length){return new ye(e,t,t-e.bufferBase)}maybeNext(){let e=this.stack.parent;e!=null&&(this.index=this.stack.bufferBase-e.bufferBase,this.stack=e,this.buffer=e.buffer)}get id(){return this.buffer[this.index-4]}get start(){return this.buffer[this.index-3]}get end(){return this.buffer[this.index-2]}get size(){return this.buffer[this.index-1]}next(){this.index-=4,this.pos-=4,this.index==0&&this.maybeNext()}fork(){return new ye(this.stack,this.pos,this.index)}};function Te(r,e=Uint16Array){if(typeof r!="string")return r;let t=null;for(let n=0,s=0;n<r.length;){let o=0;for(;;){let i=r.charCodeAt(n++),l=!1;if(i==126){o=65535;break}i>=92&&i--,i>=34&&i--;let a=i-32;if(a>=46&&(a-=46,l=!0),o+=a,l)break;o*=46}t?t[s++]=o:t=new e(o)}return t}var xe=class{constructor(){this.start=-1,this.value=-1,this.end=-1,this.extended=-1,this.lookAhead=0,this.mask=0,this.context=0}},wn=new xe,pt=class{constructor(e,t){this.input=e,this.ranges=t,this.chunk="",this.chunkOff=0,this.chunk2="",this.chunk2Pos=0,this.next=-1,this.token=wn,this.rangeIndex=0,this.pos=this.chunkPos=t[0].from,this.range=t[0],this.end=t[t.length-1].to,this.readNext()}resolveOffset(e,t){let n=this.range,s=this.rangeIndex,o=this.pos+e;for(;o<n.from;){if(!s)return null;let i=this.ranges[--s];o-=n.from-i.to,n=i}for(;t<0?o>n.to:o>=n.to;){if(s==this.ranges.length-1)return null;let i=this.ranges[++s];o+=i.from-n.to,n=i}return o}clipPos(e){if(e>=this.range.from&&e<this.range.to)return e;for(let t of this.ranges)if(t.to>e)return Math.max(e,t.from);return this.end}peek(e){let t=this.chunkOff+e,n,s;if(t>=0&&t<this.chunk.length)n=this.pos+e,s=this.chunk.charCodeAt(t);else{let o=this.resolveOffset(e,1);if(o==null)return-1;if(n=o,n>=this.chunk2Pos&&n<this.chunk2Pos+this.chunk2.length)s=this.chunk2.charCodeAt(n-this.chunk2Pos);else{let i=this.rangeIndex,l=this.range;for(;l.to<=n;)l=this.ranges[++i];this.chunk2=this.input.chunk(this.chunk2Pos=n),n+this.chunk2.length>l.to&&(this.chunk2=this.chunk2.slice(0,l.to-n)),s=this.chunk2.charCodeAt(0)}}return n>=this.token.lookAhead&&(this.token.lookAhead=n+1),s}acceptToken(e,t=0){let n=t?this.resolveOffset(t,-1):this.pos;if(n==null||n<this.token.start)throw new RangeError("Token end out of bounds");this.token.value=e,this.token.end=n}getChunk(){if(this.pos>=this.chunk2Pos&&this.pos<this.chunk2Pos+this.chunk2.length){let{chunk:e,chunkPos:t}=this;this.chunk=this.chunk2,this.chunkPos=this.chunk2Pos,this.chunk2=e,this.chunk2Pos=t,this.chunkOff=this.pos-this.chunkPos}else{this.chunk2=this.chunk,this.chunk2Pos=this.chunkPos;let e=this.input.chunk(this.pos),t=this.pos+e.length;this.chunk=t>this.range.to?e.slice(0,this.range.to-this.pos):e,this.chunkPos=this.pos,this.chunkOff=0}}readNext(){return this.chunkOff>=this.chunk.length&&(this.getChunk(),this.chunkOff==this.chunk.length)?this.next=-1:this.next=this.chunk.charCodeAt(this.chunkOff)}advance(e=1){for(this.chunkOff+=e;this.pos+e>=this.range.to;){if(this.rangeIndex==this.ranges.length-1)return this.setDone();e-=this.range.to-this.pos,this.range=this.ranges[++this.rangeIndex],this.pos=this.range.from}return this.pos+=e,this.pos>=this.token.lookAhead&&(this.token.lookAhead=this.pos+1),this.readNext()}setDone(){return this.pos=this.chunkPos=this.end,this.range=this.ranges[this.rangeIndex=this.ranges.length-1],this.chunk="",this.next=-1}reset(e,t){if(t?(this.token=t,t.start=e,t.lookAhead=e+1,t.value=t.extended=-1):this.token=wn,this.pos!=e){if(this.pos=e,e==this.end)return this.setDone(),this;for(;e<this.range.from;)this.range=this.ranges[--this.rangeIndex];for(;e>=this.range.to;)this.range=this.ranges[++this.rangeIndex];e>=this.chunkPos&&e<this.chunkPos+this.chunk.length?this.chunkOff=e-this.chunkPos:(this.chunk="",this.chunkOff=0),this.readNext()}return this}read(e,t){if(e>=this.chunkPos&&t<=this.chunkPos+this.chunk.length)return this.chunk.slice(e-this.chunkPos,t-this.chunkPos);if(e>=this.chunk2Pos&&t<=this.chunk2Pos+this.chunk2.length)return this.chunk2.slice(e-this.chunk2Pos,t-this.chunk2Pos);if(e>=this.range.from&&t<=this.range.to)return this.input.read(e,t);let n="";for(let s of this.ranges){if(s.from>=t)break;s.to>e&&(n+=this.input.read(Math.max(s.from,e),Math.min(s.to,t)))}return n}},se=class{constructor(e,t){this.data=e,this.id=t}token(e,t){let{parser:n}=t.p;Sn(this.data,e,t,this.id,n.data,n.tokenPrecTable)}};se.prototype.contextual=se.prototype.fallback=se.prototype.extend=!1;var dt=class{constructor(e,t,n){this.precTable=t,this.elseToken=n,this.data=typeof e=="string"?Te(e):e}token(e,t){let n=e.pos,s=0;for(;Sn(this.data,e,t,0,this.data,this.precTable),!(e.token.value>-1);){if(this.elseToken==null)return;if(e.next<0)break;e.advance(),e.reset(e.pos,e.token),s++}s&&(e.reset(n,e.token),e.acceptToken(this.elseToken,s))}};dt.prototype.contextual=se.prototype.fallback=se.prototype.extend=!1;function Sn(r,e,t,n,s,o){let i=0,l=1<<n,{dialect:a}=t.p.parser;e:for(;l&r[i];){let u=r[i+1];for(let m=i+3;m<u;m+=2)if((r[m+1]&l)>0){let g=r[m];if(a.allows(g)&&(e.token.value==-1||e.token.value==g||Fs(g,e.token.value,s,o))){e.acceptToken(g);break}}let c=e.next,h=0,f=r[i+2];if(e.next<0&&f>h&&r[u+f*3-3]==65535&&r[u+f*3-3]==65535){i=r[u+f*3-1];continue e}for(;h<f;){let m=h+f>>1,g=u+m+(m<<1),C=r[g],D=r[g+1]||65536;if(c<C)f=m;else if(c>=D)h=m+1;else{i=r[g+2],e.advance();continue e}}break}}function yn(r,e,t){for(let n=e,s;(s=r[n])!=65535;n++)if(s==t)return n-e;return-1}function Fs(r,e,t,n){let s=yn(t,n,e);return s<0||yn(t,n,r)<s}var Q=typeof process<"u"&&process.env&&/\bparse\b/.test(process.env.LOG),ht=null,vn;(function(r){r[r.Margin=25]="Margin"})(vn||(vn={}));function Pn(r,e,t){let n=r.cursor(V.IncludeAnonymous);for(n.moveTo(e);;)if(!(t<0?n.childBefore(e):n.childAfter(e)))for(;;){if((t<0?n.to<e:n.from>e)&&!n.type.isError)return t<0?Math.max(0,Math.min(n.to-1,e-25)):Math.min(r.length,Math.max(n.from+1,e+25));if(t<0?n.prevSibling():n.nextSibling())break;if(!n.parent())return t<0?0:r.length}}var mt=class{constructor(e,t){this.fragments=e,this.nodeSet=t,this.i=0,this.fragment=null,this.safeFrom=-1,this.safeTo=-1,this.trees=[],this.start=[],this.index=[],this.nextFragment()}nextFragment(){let e=this.fragment=this.i==this.fragments.length?null:this.fragments[this.i++];if(e){for(this.safeFrom=e.openStart?Pn(e.tree,e.from+e.offset,1)-e.offset:e.from,this.safeTo=e.openEnd?Pn(e.tree,e.to+e.offset,-1)-e.offset:e.to;this.trees.length;)this.trees.pop(),this.start.pop(),this.index.pop();this.trees.push(e.tree),this.start.push(-e.offset),this.index.push(0),this.nextStart=this.safeFrom}else this.nextStart=1e9}nodeAt(e){if(e<this.nextStart)return null;for(;this.fragment&&this.safeTo<=e;)this.nextFragment();if(!this.fragment)return null;for(;;){let t=this.trees.length-1;if(t<0)return this.nextFragment(),null;let n=this.trees[t],s=this.index[t];if(s==n.children.length){this.trees.pop(),this.start.pop(),this.index.pop();continue}let o=n.children[s],i=this.start[t]+n.positions[s];if(i>e)return this.nextStart=i,null;if(o instanceof L){if(i==e){if(i<this.safeFrom)return null;let l=i+o.length;if(l<=this.safeTo){let a=o.prop(A.lookAhead);if(!a||l+a<this.fragment.to)return o}}this.index[t]++,i+o.length>=Math.max(this.safeFrom,e)&&(this.trees.push(o),this.start.push(i),this.index.push(0))}else this.index[t]++,this.nextStart=i+o.length}}},gt=class{constructor(e,t){this.stream=t,this.tokens=[],this.mainToken=null,this.actions=[],this.tokens=e.tokenizers.map(n=>new xe)}getActions(e){let t=0,n=null,{parser:s}=e.p,{tokenizers:o}=s,i=s.stateSlot(e.state,3),l=e.curContext?e.curContext.hash:0,a=0;for(let u=0;u<o.length;u++){if(!(1<<u&i))continue;let c=o[u],h=this.tokens[u];if(!(n&&!c.fallback)&&((c.contextual||h.start!=e.pos||h.mask!=i||h.context!=l)&&(this.updateCachedToken(h,c,e),h.mask=i,h.context=l),h.lookAhead>h.end+25&&(a=Math.max(h.lookAhead,a)),h.value!=0)){let f=t;if(h.extended>-1&&(t=this.addActions(e,h.extended,h.end,t)),t=this.addActions(e,h.value,h.end,t),!c.extend&&(n=h,t>f))break}}for(;this.actions.length>t;)this.actions.pop();return a&&e.setLookAhead(a),!n&&e.pos==this.stream.end&&(n=new xe,n.value=e.p.parser.eofTerm,n.start=n.end=e.pos,t=this.addActions(e,n.value,n.end,t)),this.mainToken=n,this.actions}getMainToken(e){if(this.mainToken)return this.mainToken;let t=new xe,{pos:n,p:s}=e;return t.start=n,t.end=Math.min(n+1,s.stream.end),t.value=n==s.stream.end?s.parser.eofTerm:0,t}updateCachedToken(e,t,n){let s=this.stream.clipPos(n.pos);if(t.token(this.stream.reset(s,e),n),e.value>-1){let{parser:o}=n.p;for(let i=0;i<o.specialized.length;i++)if(o.specialized[i]==e.value){let l=o.specializers[i](this.stream.read(e.start,e.end),n);if(l>=0&&n.p.parser.dialect.allows(l>>1)){l&1?e.extended=l>>1:e.value=l>>1;break}}}else e.value=0,e.end=this.stream.clipPos(s+1)}putAction(e,t,n,s){for(let o=0;o<s;o+=3)if(this.actions[o]==e)return s;return this.actions[s++]=e,this.actions[s++]=t,this.actions[s++]=n,s}addActions(e,t,n,s){let{state:o}=e,{parser:i}=e.p,{data:l}=i;for(let a=0;a<2;a++)for(let u=i.stateSlot(o,a?2:1);;u+=3){if(l[u]==65535)if(l[u+1]==1)u=ee(l,u+2);else{s==0&&l[u+1]==2&&(s=this.putAction(ee(l,u+2),t,n,s));break}l[u]==t&&(s=this.putAction(ee(l,u+1),t,n,s))}return s}},Mn;(function(r){r[r.Distance=5]="Distance",r[r.MaxRemainingPerStep=3]="MaxRemainingPerStep",r[r.MinBufferLengthPrune=500]="MinBufferLengthPrune",r[r.ForceReduceLimit=10]="ForceReduceLimit",r[r.CutDepth=15e3]="CutDepth",r[r.CutTo=9e3]="CutTo",r[r.MaxLeftAssociativeReductionCount=300]="MaxLeftAssociativeReductionCount",r[r.MaxStackCount=12]="MaxStackCount"})(Mn||(Mn={}));var bt=class{constructor(e,t,n,s){this.parser=e,this.input=t,this.ranges=s,this.recovering=0,this.nextStackID=9812,this.minStackPos=0,this.reused=[],this.stoppedAt=null,this.lastBigReductionStart=-1,this.lastBigReductionSize=0,this.bigReductionCount=0,this.stream=new pt(t,s),this.tokens=new gt(e,this.stream),this.topTerm=e.top[1];let{from:o}=s[0];this.stacks=[we.start(this,e.top[0],o)],this.fragments=n.length&&this.stream.end-o>e.bufferLength*4?new mt(n,e.nodeSet):null}get parsedPos(){return this.minStackPos}advance(){let e=this.stacks,t=this.minStackPos,n=this.stacks=[],s,o;if(this.bigReductionCount>300&&e.length==1){let[i]=e;for(;i.forceReduce()&&i.stack.length&&i.stack[i.stack.length-2]>=this.lastBigReductionStart;);this.bigReductionCount=this.lastBigReductionSize=0}for(let i=0;i<e.length;i++){let l=e[i];for(;;){if(this.tokens.mainToken=null,l.pos>t)n.push(l);else{if(this.advanceStack(l,n,e))continue;{s||(s=[],o=[]),s.push(l);let a=this.tokens.getMainToken(l);o.push(a.value,a.end)}}break}}if(!n.length){let i=s&&zs(s);if(i)return this.stackToTree(i);if(this.parser.strict)throw Q&&s&&console.log("Stuck with token "+(this.tokens.mainToken?this.parser.getName(this.tokens.mainToken.value):"none")),new SyntaxError("No parse at "+t);this.recovering||(this.recovering=5)}if(this.recovering&&s){let i=this.stoppedAt!=null&&s[0].pos>this.stoppedAt?s[0]:this.runRecovery(s,o,n);if(i)return this.stackToTree(i.forceAll())}if(this.recovering){let i=this.recovering==1?1:this.recovering*3;if(n.length>i)for(n.sort((l,a)=>a.score-l.score);n.length>i;)n.pop();n.some(l=>l.reducePos>t)&&this.recovering--}else if(n.length>1){e:for(let i=0;i<n.length-1;i++){let l=n[i];for(let a=i+1;a<n.length;a++){let u=n[a];if(l.sameState(u)||l.buffer.length>500&&u.buffer.length>500)if((l.score-u.score||l.buffer.length-u.buffer.length)>0)n.splice(a--,1);else{n.splice(i--,1);continue e}}}n.length>12&&n.splice(12,n.length-12)}this.minStackPos=n[0].pos;for(let i=1;i<n.length;i++)n[i].pos<this.minStackPos&&(this.minStackPos=n[i].pos);return null}stopAt(e){if(this.stoppedAt!=null&&this.stoppedAt<e)throw new RangeError("Can't move stoppedAt forward");this.stoppedAt=e}advanceStack(e,t,n){let s=e.pos,{parser:o}=this,i=Q?this.stackID(e)+" -> ":"";if(this.stoppedAt!=null&&s>this.stoppedAt)return e.forceReduce()?e:null;if(this.fragments){let u=e.curContext&&e.curContext.tracker.strict,c=u?e.curContext.hash:0;for(let h=this.fragments.nodeAt(s);h;){let f=this.parser.nodeSet.types[h.type.id]==h.type?o.getGoto(e.state,h.type.id):-1;if(f>-1&&h.length&&(!u||(h.prop(A.contextHash)||0)==c))return e.useNode(h,f),Q&&console.log(i+this.stackID(e)+` (via reuse of ${o.getName(h.type.id)})`),!0;if(!(h instanceof L)||h.children.length==0||h.positions[0]>0)break;let m=h.children[0];if(m instanceof L&&h.positions[0]==0)h=m;else break}}let l=o.stateSlot(e.state,4);if(l>0)return e.reduce(l),Q&&console.log(i+this.stackID(e)+` (via always-reduce ${o.getName(l&65535)})`),!0;if(e.stack.length>=15e3)for(;e.stack.length>9e3&&e.forceReduce(););let a=this.tokens.getActions(e);for(let u=0;u<a.length;){let c=a[u++],h=a[u++],f=a[u++],m=u==a.length||!n,g=m?e:e.split();if(g.apply(c,h,f),Q&&console.log(i+this.stackID(g)+` (via ${c&65536?`reduce of ${o.getName(c&65535)}`:"shift"} for ${o.getName(h)} @ ${s}${g==e?"":", split"})`),m)return!0;g.pos>s?t.push(g):n.push(g)}return!1}advanceFully(e,t){let n=e.pos;for(;;){if(!this.advanceStack(e,null,null))return!1;if(e.pos>n)return Rn(e,t),!0}}runRecovery(e,t,n){let s=null,o=!1;for(let i=0;i<e.length;i++){let l=e[i],a=t[i<<1],u=t[(i<<1)+1],c=Q?this.stackID(l)+" -> ":"";if(l.deadEnd&&(o||(o=!0,l.restart(),Q&&console.log(c+this.stackID(l)+" (restarted)"),this.advanceFully(l,n))))continue;let h=l.split(),f=c;for(let m=0;h.forceReduce()&&m<10&&(Q&&console.log(f+this.stackID(h)+" (via force-reduce)"),!this.advanceFully(h,n));m++)Q&&(f=this.stackID(h)+" -> ");for(let m of l.recoverByInsert(a))Q&&console.log(c+this.stackID(m)+" (via recover-insert)"),this.advanceFully(m,n);this.stream.end>l.pos?(u==l.pos&&(u++,a=0),l.recoverByDelete(a,u),Q&&console.log(c+this.stackID(l)+` (via recover-delete ${this.parser.getName(a)})`),Rn(l,n)):(!s||s.score<l.score)&&(s=l)}return s}stackToTree(e){return e.close(),L.build({buffer:ye.create(e),nodeSet:this.parser.nodeSet,topID:this.topTerm,maxBufferLength:this.parser.bufferLength,reused:this.reused,start:this.ranges[0].from,length:e.pos-this.ranges[0].from,minRepeatType:this.parser.minRepeatTerm})}stackID(e){let t=(ht||(ht=new WeakMap)).get(e);return t||ht.set(e,t=String.fromCodePoint(this.nextStackID++)),t+e}};function Rn(r,e){for(let t=0;t<e.length;t++){let n=e[t];if(n.pos==r.pos&&n.sameState(r)){e[t].score<r.score&&(e[t]=r);return}}e.push(r)}var Ct=class{constructor(e,t,n){this.source=e,this.flags=t,this.disabled=n}allows(e){return!this.disabled||this.disabled[e]==0}};var ce=class extends Ue{constructor(e){if(super(),this.wrappers=[],e.version!=14)throw new RangeError(`Parser version (${e.version}) doesn't match runtime version (14)`);let t=e.nodeNames.split(" ");this.minRepeatTerm=t.length;for(let l=0;l<e.repeatNodeCount;l++)t.push("");let n=Object.keys(e.topRules).map(l=>e.topRules[l][1]),s=[];for(let l=0;l<t.length;l++)s.push([]);function o(l,a,u){s[l].push([a,a.deserialize(String(u))])}if(e.nodeProps)for(let l of e.nodeProps){let a=l[0];typeof a=="string"&&(a=A[a]);for(let u=1;u<l.length;){let c=l[u++];if(c>=0)o(c,a,l[u++]);else{let h=l[u+-c];for(let f=-c;f>0;f--)o(l[u++],a,h);u++}}}this.nodeSet=new ge(t.map((l,a)=>F.define({name:a>=this.minRepeatTerm?void 0:l,id:a,props:s[a],top:n.indexOf(a)>-1,error:a==0,skipped:e.skippedNodes&&e.skippedNodes.indexOf(a)>-1}))),e.propSources&&(this.nodeSet=this.nodeSet.extend(...e.propSources)),this.strict=!1,this.bufferLength=1024;let i=Te(e.tokenData);this.context=e.context,this.specializerSpecs=e.specialized||[],this.specialized=new Uint16Array(this.specializerSpecs.length);for(let l=0;l<this.specializerSpecs.length;l++)this.specialized[l]=this.specializerSpecs[l].term;this.specializers=this.specializerSpecs.map(kn),this.states=Te(e.states,Uint32Array),this.data=Te(e.stateData),this.goto=Te(e.goto),this.maxTerm=e.maxTerm,this.tokenizers=e.tokenizers.map(l=>typeof l=="number"?new se(i,l):l),this.topRules=e.topRules,this.dialects=e.dialects||{},this.dynamicPrecedences=e.dynamicPrecedences||null,this.tokenPrecTable=e.tokenPrec,this.termNames=e.termNames||null,this.maxNode=this.nodeSet.types.length-1,this.dialect=this.parseDialect(),this.top=this.topRules[Object.keys(this.topRules)[0]]}createParse(e,t,n){let s=new bt(this,e,t,n);for(let o of this.wrappers)s=o(s,e,t,n);return s}getGoto(e,t,n=!1){let s=this.goto;if(t>=s[0])return-1;for(let o=s[t+1];;){let i=s[o++],l=i&1,a=s[o++];if(l&&n)return a;for(let u=o+(i>>1);o<u;o++)if(s[o]==e)return a;if(l)return-1}}hasAction(e,t){let n=this.data;for(let s=0;s<2;s++)for(let o=this.stateSlot(e,s?2:1),i;;o+=3){if((i=n[o])==65535)if(n[o+1]==1)i=n[o=ee(n,o+2)];else{if(n[o+1]==2)return ee(n,o+2);break}if(i==t||i==0)return ee(n,o+1)}return 0}stateSlot(e,t){return this.states[e*6+t]}stateFlag(e,t){return(this.stateSlot(e,0)&t)>0}validAction(e,t){if(t==this.stateSlot(e,4))return!0;for(let n=this.stateSlot(e,1);;n+=3){if(this.data[n]==65535)if(this.data[n+1]==1)n=ee(this.data,n+2);else return!1;if(t==ee(this.data,n+1))return!0}}nextStates(e){let t=[];for(let n=this.stateSlot(e,1);;n+=3){if(this.data[n]==65535)if(this.data[n+1]==1)n=ee(this.data,n+2);else break;if(!(this.data[n+2]&1)){let s=this.data[n+1];t.some((o,i)=>i&1&&o==s)||t.push(this.data[n],s)}}return t}configure(e){let t=Object.assign(Object.create(ce.prototype),this);if(e.props&&(t.nodeSet=this.nodeSet.extend(...e.props)),e.top){let n=this.topRules[e.top];if(!n)throw new RangeError(`Invalid top rule name ${e.top}`);t.top=n}return e.tokenizers&&(t.tokenizers=this.tokenizers.map(n=>{let s=e.tokenizers.find(o=>o.from==n);return s?s.to:n})),e.specializers&&(t.specializers=this.specializers.slice(),t.specializerSpecs=this.specializerSpecs.map((n,s)=>{let o=e.specializers.find(l=>l.from==n.external);if(!o)return n;let i=Object.assign(Object.assign({},n),{external:o.to});return t.specializers[s]=kn(i),i})),e.contextTracker&&(t.context=e.contextTracker),e.dialect&&(t.dialect=this.parseDialect(e.dialect)),e.strict!=null&&(t.strict=e.strict),e.wrap&&(t.wrappers=t.wrappers.concat(e.wrap)),e.bufferLength!=null&&(t.bufferLength=e.bufferLength),t}hasWrappers(){return this.wrappers.length>0}getName(e){return this.termNames?this.termNames[e]:String(e<=this.maxNode&&this.nodeSet.types[e].name||e)}get eofTerm(){return this.maxNode+1}get topNode(){return this.nodeSet.types[this.top[1]]}dynamicPrecedence(e){let t=this.dynamicPrecedences;return t==null?0:t[e]||0}parseDialect(e){let t=Object.keys(this.dialects),n=t.map(()=>!1);if(e)for(let o of e.split(" ")){let i=t.indexOf(o);i>=0&&(n[i]=!0)}let s=null;for(let o=0;o<t.length;o++)if(!n[o])for(let i=this.dialects[t[o]],l;(l=this.data[i++])!=65535;)(s||(s=new Uint8Array(this.maxTerm+1)))[l]=1;return new Ct(e,n,s)}static deserialize(e){return new ce(e)}};function ee(r,e){return r[e]|r[e+1]<<16}function zs(r){let e=null;for(let t of r){let n=t.p.stoppedAt;(t.pos==t.p.stream.end||n!=null&&t.pos>n)&&t.p.parser.stateFlag(t.state,2)&&(!e||e.score<t.score)&&(e=t)}return e}function kn(r){if(r.external){let e=r.extend?1:0;return(t,n)=>r.external(t,n)<<1|e}return r.get}var xt=ce.deserialize({version:14,states:"%QOVQPOOOOQO'#C_'#C_O_QQO'#C^OOQO'#DO'#DOOvQQO'#C|OOQO'#DR'#DROVQPO'#CuOOQO'#C}'#C}QOQPOOOOQO'#C`'#C`O!UQQO,58xO!dQPO,59VOVQPO,59]OVQPO,59_O!iQPO,59hO!nQQO,59aOOQO'#DQ'#DQOOQO1G.d1G.dO!UQQO1G.qO!yQQO1G.wOOQO1G.y1G.yOOQO'#Cw'#CwOOQO1G/S1G/SOOQO1G.{1G.{O#[QPO'#CnO#dQPO7+$]O!UQQO'#CxO#iQPO,59YOOQO<<Gw<<GwOOQO,59d,59dOOQO-E6v-E6v",stateData:"#q~OoOS~OsPOvUO~OTXOUXOVXOWXOXXOYXO`ZO~Of[Oh]Oj^OmpX~OZ`O[`O]`O^`O~OabO~OseO~Of[Oh]OwgO~Oh]Ofeijeimeiwei~OcjOdbX~OdlO~OcjOdba~O",goto:"#YvPPw}!TPPPPPPPPPPwPP!WPP!ZP!ZP!aP!g!jPPP!p!s!aP#P!aXROU[]XQOU[]RYQRibXTOU[]XVOU[]Rf^QkhRnkRWOQSOQ_UQc[Rd]QaYQhbRmj",nodeNames:"\u26A0 Filter ColumnValueExpression Column Operator Eq NotEq Gt Lt Starts Ends Number String True False ColumnSetExpression In LBrack Values Comma RBrack AndExpression And OrExpression Or ParenthesizedExpression As FilterName",maxTerm:39,skippedNodes:[0],repeatNodeCount:1,tokenData:"6p~RnXY#PYZ#P]^#Ppq#Pqr#brs#mxy$eyz$j|}$o!O!P$t!Q![%S!^!_%_!_!`%d!`!a%i!c!}%n!}#O&V#P#Q&[#R#S%n#T#U&a#U#X%n#X#Y(w#Y#Z+]#Z#]%n#]#^.]#^#c%n#c#d/e#d#g%n#g#h0m#h#i4[#i#o%n~#USo~XY#PYZ#P]^#Ppq#P~#eP!_!`#h~#mOU~~#pWOX#mZ]#m^r#mrs$Ys#O#m#P;'S#m;'S;=`$_<%lO#m~$_O[~~$bP;=`<%l#m~$jOv~~$oOw~~$tOc~~$wP!Q![$z~%PPZ~!Q![$z~%XQZ~!O!P$t!Q![%S~%dOW~~%iOT~~%nOV~P%sUsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#o%n~&[Oa~~&aOd~R&fYsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#b%n#b#c'U#c#g%n#g#h(^#h#o%nR'ZWsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#W%n#W#X's#X#o%nR'zUfQsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#o%nR(eUjQsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#o%nR(|WsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#b%n#b#c)f#c#o%nR)kWsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#W%n#W#X*T#X#o%nR*YWsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#g%n#g#h*r#h#o%nR*yUYQsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#o%nR+bVsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#U+w#U#o%nR+|WsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#`%n#`#a,f#a#o%nR,kWsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#g%n#g#h-T#h#o%nR-YWsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#X%n#X#Y-r#Y#o%nR-yU^QsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#o%nR.bWsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#b%n#b#c.z#c#o%nR/RU`QsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#o%nR/jWsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#f%n#f#g0S#g#o%nR0ZUhQsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#o%nR0rWsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#h%n#h#i1[#i#o%nR1aVsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#U1v#U#o%nR1{WsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#f%n#f#g2e#g#o%nR2jWsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#h%n#h#i3S#i#o%nR3XWsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#g%n#g#h3q#h#o%nR3xUXQsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#o%nR4aWsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#f%n#f#g4y#g#o%nR5OWsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#i%n#i#j5h#j#o%nR5mWsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#X%n#X#Y6V#Y#o%nR6^U]QsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#o%n",tokenizers:[0,1],topRules:{Filter:[0,1]},tokenPrec:0});import{isMultiClauseFilter as De,isMultiValueFilter as Ws,isSingleValueFilter as Ks}from"@vuu-ui/vuu-utils";var z,Tn=class{constructor(){zt(this,z,void 0)}setFilterCombinatorOp(e,t=X(this,z)){De(t)&&t.op===e||Ye(this,z,{op:e,filters:[X(this,z)]})}add(e){if(X(this,z)===void 0)Ye(this,z,e);else if(De(X(this,z)))X(this,z).filters.push(e);else throw Error("Invalid filter passed to FilterExpression")}setColumn(e,t=X(this,z)){if(De(t)){let n=t.filters.at(-1);n&&this.setColumn(e,n)}else t&&(t.column=e)}setOp(e,t=X(this,z)){if(De(t)){let n=t.filters.at(-1);n&&this.setOp(e,n)}else t&&(t.op=e)}setValue(e,t=X(this,z)){var n;if(De(t)){let s=t.filters.at(-1);s&&this.setValue(e,s)}else Ws(t)?((n=t.values)!=null||(t.values=[]),t.values.push(e)):Ks(t)&&(t.value=e)}toJSON(e=X(this,z)){return this.name?{...e,name:this.name}:e}};z=new WeakMap;var wu=xt.configure({strict:!0});import{getRowRecord as Hu,isGroupMenuItemDescriptor as Vu,metadataKeys as $s}from"@vuu-ui/vuu-utils";import{useCallback as Lu}from"react";var{KEY:Nu}=$s;var Qs=r=>r.type==="vuu-links";var Us=r=>r.type==="vuu-menu",Dn=r=>Us(r)||Qs(r),On=r=>r.type==="vuu-link-created"||r.type==="vuu-link-removed";import{useCallback as Wu,useEffect as Ku,useState as Bu}from"react";import{getServerAPI as $u}from"@vuu-ui/vuu-data";import{getFullRange as wt,metadataKeys as Gs,WindowRange as js}from"@vuu-ui/vuu-utils";import{useCallback as ve,useEffect as je,useMemo as Xs,useRef as Oe,useState as Ys}from"react";var{SELECTED:Ae}=Gs;function An({dataSource:r,onConfigChange:e,onFeatureEnabled:t,onFeatureInvocation:n,onSizeChange:s,onSubscribed:o,range:i={from:0,to:0},renderBufferSize:l=0,viewportRowCount:a}){let[,u]=Ys(null),c=Oe(!0),h=Oe(!1),f=Oe({from:0,to:0}),m=Oe(null),g=Oe([]),C=Xs(()=>new yt(wt(i)),[]),D=ve(p=>{for(let y of p)C.add(y);g.current=C.data,h.current=!0},[C]),R=ve(p=>{p.type==="subscribed"?o==null||o(p):p.type==="viewport-update"?(typeof p.size=="number"&&(s==null||s(p.size),C.setRowCount(p.size)),p.rows?D(p.rows):typeof p.size=="number"&&(g.current=C.data,h.current=!0)):Dn(p)?t==null||t(p):On(p)?n==null||n(p):console.log(`useDataSource unexpected message ${p.type}`)},[C,t,n,s,o,D]);je(()=>()=>{m.current&&(cancelAnimationFrame(m.current),m.current=null),c.current=!1},[]);let b=ve(()=>{c.current&&(h.current&&(u({}),h.current=!1),m.current=requestAnimationFrame(b))},[u]);je(()=>{m.current=requestAnimationFrame(b)},[b]);let x=ve(p=>{let{from:y}=r.range,S={from:y,to:y+p},M=wt(S,l);C.setRange(M),r.range=f.current=M,r.emit("range",S)},[r,C,l]),P=ve(p=>{let y=wt(p,l);C.setRange(y),r.range=f.current=y,r.emit("range",p)},[r,C,l]),w=ve(()=>C.getSelectedRows(),[C]);return je(()=>{r==null||r.subscribe({range:f.current},R)},[r,R,e]),je(()=>{x(a)},[x,a]),{data:g.current,getSelectedRows:w,range:f.current,setRange:P,dataSource:r}}var yt=class{constructor({from:e,to:t}){this.rowCount=0;this.setRowCount=e=>{e<this.data.length&&(this.data.length=e),this.rowCount=e};this.range=new js(e,t),this.data=new Array(t-e),this.rowCount=0}add(e){var n;let[t]=e;if(this.isWithinRange(t)){let s=t-this.range.from;this.data[s]=e;let o=e[Ae],i=(n=this.data[s-1])==null?void 0:n[Ae];i===0&&o?this.data[s-1][Ae]=2:i===2&&!o&&(this.data[s-1][Ae]=0)}}getAtIndex(e){return this.range.isWithin(e)&&this.data[e-this.range.from]!=null?this.data[e-this.range.from]:void 0}isWithinRange(e){return this.range.isWithin(e)}setRange({from:e,to:t}){if(e!==this.range.from||t!==this.range.to){let[n,s]=this.range.overlap(e,t),o=new Array(Math.max(0,t-e));for(let i=n;i<s;i++){let l=this.getAtIndex(i);if(l){let a=i-e;o[a]=l}}this.data=o,this.range.from=e,this.range.to=t}}getSelectedRows(){return this.data.filter(e=>e[Ae]===1)}};import{useDragDrop as Js}from"@heswell/salt-lab";import{useCallback as En,useRef as Hn}from"react";var Vn=({onDrop:r})=>{let e=Hn(),t=Hn(null),n=En(()=>{console.log("handleDropSettle"),e.current=void 0,t.current=null},[]),{draggable:s,draggedItemIndex:o,onMouseDown:i}=Js({allowDragDrop:!0,draggableClassName:"vuuTable-headerCell",orientation:"horizontal",containerRef:t,itemQuery:".vuuTable-headerCell",onDrop:r,onDropSettle:n}),l=En(a=>{let{clientX:u,clientY:c}=a;console.log("useDraggableColumn handleHeaderCellDragStart means mouseDown fired on a column in RowBasedTable");let f=a.target.closest(".vuuTable-headerCell");t.current=f==null?void 0:f.closest("[role='row']");let{dataset:{idx:m="-1"}}=f;e.current={clientX:u,clientY:c,idx:m},i==null||i(a)},[i]);return{draggable:s,draggedItemIndex:o,onHeaderCellDragStart:l}};import{withinRange as si}from"@vuu-ui/vuu-utils";import{useCallback as te,useEffect as ii,useLayoutEffect as oi,useMemo as li,useRef as Ot}from"react";function Zs(r,...e){let t=new Set(r);for(let n of e)for(let s of n)t.add(s);return t}var vt="ArrowUp",Pt="ArrowDown",Mt="ArrowLeft",Rt="ArrowRight";var kt="Home",St="End",Tt="PageUp",Dt="PageDown";var qs=new Set(["Enter","Delete"," "]),ei=new Set(["Tab"]),ti=new Set(["ArrowRight","ArrowLeft"]),In=new Set([kt,St,Tt,Dt,Pt,Mt,Rt,vt]),ni=new Set(["F1","F2","F3","F4","F5","F6","F7","F8","F9","F10","F11","F12"]),cc=Zs(qs,In,ti,ni,ei);var ri=["Home","End","PageUp","PageDown"],Ln=r=>ri.includes(r),Nn=r=>In.has(r);var Fn=r=>`.vuuTable-headers .vuuTable-headerCell:nth-child(${r+1})`,ai=(r,e)=>`.vuuTable-body > [aria-rowindex='${r}'] > [role='cell']:nth-child(${e+1})`,ui=[-1,-1];function ci(r,[e,t],n,s){return r===vt?e>-1?[e-1,t]:[e,t]:r===Pt?e===-1?[0,t]:e===s-1?[e,t]:[e+1,t]:r===Rt?t<n-1?[e,t+1]:[e,t]:r===Mt?t>0?[e,t-1]:[e,t]:[e,t]}var zn=({columnCount:r=0,containerRef:e,disableHighlightOnFocus:t,data:n,requestScroll:s,rowCount:o=0,viewportRange:i})=>{var M;let{from:l,to:a}=i,u=Ot([-1,-1]),c=Ot(),h=Ot([-1,0]),f=te(([d,v])=>{var k;let T=d===-1?Fn(v):ai(d,v);return(k=e.current)==null?void 0:k.querySelector(T)},[e]),m=d=>d==null?void 0:d.closest("[role='columnHeader'],[role='cell']"),g=d=>{var v,T;if(d.role==="columnHeader")return[-1,parseInt((v=d.dataset.idx)!=null?v:"-1",10)];{let k=d.closest("[role='row']");if(k){let E=parseInt((T=k.ariaRowIndex)!=null?T:"-1",10),N=Array.from(k.childNodes).indexOf(d);return[E,N]}}return ui},C=te(d=>{var v;if(e.current){let T=f(d);T?(T!==c.current&&((v=c.current)==null||v.setAttribute("tabindex",""),c.current=T,T.setAttribute("tabindex","0")),T.focus()):si(d[0],i)||(c.current=void 0,s==null||s({type:"scroll-page",direction:"up"}))}},[e,f,s,i]),D=te((d,v,T=!1)=>{let k=[d,v];h.current=k,C(k),T&&(u.current=k)},[C]),R=te(()=>{var d;(d=c.current)==null||d.setAttribute("tabindex",""),c.current=void 0},[]),b=te(async(d,v)=>{switch(d){case Dt:s==null||s({type:"scroll-page",direction:"down"});break;case Tt:s==null||s({type:"scroll-page",direction:"up"});break;case kt:s==null||s({type:"scroll-end",direction:"home"});break;case St:s==null||s({type:"scroll-end",direction:"end"});break}return v},[s]),x=te(()=>{var d;if(t!==!0&&(d=e.current)!=null&&d.contains(document.activeElement)){let v=m(document.activeElement);v&&(u.current=g(v))}},[t,e]),P=te(async d=>{let[v,T]=Ln(d)?await b(d,h.current):ci(d,h.current,r,o),[k,E]=h.current;(v!==k||T!==E)&&D(v,T,!0)},[r,b,o,D]),w=te(d=>{n.length>0&&Nn(d.key)&&(d.preventDefault(),d.stopPropagation(),P(d.key))},[n,P]),p=te(d=>{let v=d.target,T=m(v);if(T){let[k,E]=g(T);D(k,E)}},[D]),y=li(()=>({onClick:p,onFocus:x,onKeyDown:w}),[p,x,w]);oi(()=>{let{current:d}=h,v=d[0]>=l&&d[0]<=a;c.current&&!v?R():!c.current&&v&&C(d)},[C,l,a,R]);let S=((M=e.current)==null?void 0:M.firstChild)!=null;return ii(()=>{var d;if(S&&c.current===void 0){let v=(d=e.current)==null?void 0:d.querySelector(Fn(0));v&&(v.setAttribute("tabindex","0"),c.current=v)}},[e,S]),y};import{isValidNumber as ie}from"@vuu-ui/vuu-utils";import{useCallback as pi,useMemo as di,useRef as mi,useState as gi}from"react";import{useCallback as hi,useEffect as Wn,useRef as fi}from"react";var he=new Map,Bn=(r,e,t)=>{switch(t){case"height":return e.height;case"clientHeight":return r.clientHeight;case"clientWidth":return r.clientWidth;case"contentHeight":return e.contentHeight;case"contentWidth":return e.contentWidth;case"scrollHeight":return Math.ceil(r.scrollHeight);case"scrollWidth":return Math.ceil(r.scrollWidth);case"width":return e.width;default:return 0}},Kn=new ResizeObserver(r=>{for(let e of r){let{target:t,borderBoxSize:n,contentBoxSize:s}=e,o=he.get(t);if(o){let[{blockSize:i,inlineSize:l}]=n,[{blockSize:a,inlineSize:u}]=s,{onResize:c,measurements:h}=o,f=!1;for(let[m,g]of Object.entries(h)){let C=Bn(t,{height:i,width:l,contentHeight:a,contentWidth:u},m);C!==g&&(f=!0,h[m]=C)}f&&c&&c(h)}}});function _n(r,e,t,n=!1){let s=fi(e),o=hi(i=>{let{width:l,height:a}=i.getBoundingClientRect(),{clientWidth:u,clientHeight:c}=i;return s.current.reduce((h,f)=>(h[f]=Bn(i,{width:l,height:a,contentHeight:c,contentWidth:u},f),h),{})},[]);Wn(()=>{let i=r.current;async function l(){he.set(i,{measurements:{}}),await document.fonts.ready;let a=he.get(i);if(a){let u=o(i);a.measurements=u,Kn.observe(i),n&&t(u)}else console.log("%cuseResizeObserver an target expected to be under observation wa snot found. This warrants investigation","font-weight:bold; color:red;")}if(i){if(he.has(i))throw Error("useResizeObserver attemping to observe same element twice");l()}return()=>{i&&he.has(i)&&(Kn.unobserve(i),he.delete(i))}},[o,r]),Wn(()=>{let i=r.current,l=he.get(i);if(l){if(s.current!==e){s.current=e;let a=o(i);l.measurements=a}l.onResize=t}},[e,o,r,t])}var bi=["clientHeight","clientWidth"],$n=r=>Number.isFinite(r),Ci={height:"100%",width:"100%"},xi=(r,e)=>ie(r)&&ie(e)?{height:`${r}px`,width:`${e}px`}:Ci,wi=(r,e)=>{if(ie(r)&&ie(e))return{height:r,width:e}},Qn=({defaultHeight:r=0,defaultWidth:e=0,height:t,width:n})=>{let s=mi(null),[o,i]=gi({css:xi(t,n),inner:wi(t,n),outer:{height:t!=null?t:"100%",width:n!=null?n:"100%"}});di(()=>{i(a=>{let{inner:u,outer:c}=a;if(ie(t)&&ie(n)&&u&&c){let{height:h,width:f}=u,{height:m,width:g}=c;if(m!==t||g!==n){let C=ie(m)?m-h:0,D=ie(g)?g-f:0;return{...a,outer:{height:t,width:n},inner:{height:t-C,width:n-D}}}}return a})},[t,n]);let l=pi(({clientWidth:a,clientHeight:u})=>{i(c=>{let{css:h,inner:f,outer:m}=c;return $n(u)&&$n(a)&&(a!==(f==null?void 0:f.width)||u!==(f==null?void 0:f.height))?{css:h,outer:m,inner:{width:Math.floor(a)||e,height:Math.floor(u)||r}}:c})},[r,e]);return _n(s,bi,l,!0),{containerRef:s,cssSize:o.css,outerSize:o.outer,innerSize:o.inner}};import{deselectItem as yi,isRowSelected as vi,metadataKeys as Pi,selectItem as Mi}from"@vuu-ui/vuu-utils";import{useCallback as Ri,useRef as Un}from"react";var{IDX:ki}=Pi,Si=[],Gn=({selectionModel:r,onSelectionChange:e})=>{let t=Un(-1),n=Un(Si);return Ri((o,i,l)=>{let{[ki]:a}=o,{current:u}=t,{current:c}=n,f=(vi(o)?yi:Mi)(r,c,a,i,l,u);n.current=f,t.current=a,e&&e(f)},[e,r])};import{moveItem as Ti}from"@heswell/salt-lab";import{applyFilterToColumns as Di,applyGroupByToColumns as Oi,applySortToColumns as Ai,findColumn as Ei,getCellRenderer as Hi,getColumnName as Vi,getTableHeadings as Ii,getValueFormatter as Li,isFilteredColumn as Ni,isGroupColumn as Fi,isPinned as zi,isTypeDescriptor as Wi,logger as Ki,metadataKeys as Bi,updateColumn as jn,sortPinnedColumns as Xn,stripFilterFromColumns as _i}from"@vuu-ui/vuu-utils";import{useReducer as $i}from"react";var{info:Nc}=Ki("useTableModel"),Qi=100,Yn=Bi.count,Ui=({serverDataType:r})=>r===void 0,Gi=r=>{var e;if(Wi(r.type))return Hi((e=r.type)==null?void 0:e.renderer)},Jn=(r,e)=>{if(r.serverDataType)return r.serverDataType;if(e){let t=e.columns.find(n=>n.name===r.name);if(t)return t.serverDataType}return"string"},ji=["int","long","double"],Zn=r=>r===void 0?void 0:ji.includes(r)?"right":"left",Fc=r=>r.type==="columnSettings",Xi=(r,e)=>{switch(e.type){case"init":return er(e);case"moveColumn":return Ji(r,e);case"resizeColumn":return eo(r,e);case"setTableSchema":return to(r,e);case"hideColumns":return Zi(r,e);case"showColumns":return qi(r,e);case"pinColumn":return no(r,e);case"updateColumnProp":return Pe(r,e);case"tableConfig":return tr(r,e);default:return console.log(`unhandled action ${e.type}`),r}},qn=(r,e)=>{let[t,n]=$i(Xi,{tableConfig:r,dataSourceConfig:e},er);return{columns:t.columns,dispatchColumnAction:n,headings:t.headings}};function er({dataSourceConfig:r,tableConfig:e}){let t=e.columns.map(At(e)),n=t.some(zi)?Xn(t):t,s={columns:n,headings:Ii(n)};if(r){let{columns:o,...i}=r;return tr(s,{type:"tableConfig",...i})}else return s}var Yi=(r,e)=>e==="uppercase"?r.toUpperCase():e==="capitalize"?r[0].toUpperCase()+r.slice(1).toLowerCase():r,At=r=>(e,t)=>{let n=Jn(e,r.tableSchema),{columnDefaultWidth:s=Qi,columnFormatHeader:o}=r,{align:i=Zn(n),key:l,name:a,label:u=a,width:c=s,...h}=e,f={...h,align:i,CellRenderer:Gi(e),label:Yi(u,o),key:l!=null?l:t+Yn,name:a,originalIdx:t,serverDataType:n,valueFormatter:Li(e),width:c};return Fi(f)&&(f.columns=f.columns.map(m=>At(r)(m,m.key))),f};function Ji(r,{column:e,moveBy:t,moveTo:n}){let{columns:s}=r;if(typeof t=="number"){let o=s.indexOf(e),i=s.slice(),[l]=i.splice(o,1);return i.splice(o+t,0,l),{...r,columns:i}}else if(typeof n=="number"){let o=s.indexOf(e);return{...r,columns:Ti(s,o,n)}}return r}function Zi(r,{columns:e}){return e.some(t=>t.hidden!==!0)?e.reduce((t,n)=>n.hidden!==!0?Pe(t,{type:"updateColumnProp",column:n,hidden:!0}):t,r):r}function qi(r,{columns:e}){return e.some(t=>t.hidden)?e.reduce((t,n)=>n.hidden?Pe(t,{type:"updateColumnProp",column:n,hidden:!1}):t,r):r}function eo(r,{column:e,phase:t,width:n}){let s="updateColumnProp",o=t!=="end";switch(t){case"begin":return Pe(r,{type:s,column:e,resizing:o});case"end":return Pe(r,{type:s,column:e,resizing:o,width:n});case"resize":return Pe(r,{type:s,column:e,width:n});default:throw Error(`useTableModel.resizeColumn, invalid resizePhase ${t}`)}}function to(r,{tableSchema:e}){let{columns:t}=r;if(t.some(Ui)){let n=t.map(s=>{var i;let o=Jn(s,e);return{...s,align:(i=s.align)!=null?i:Zn(o),serverDataType:o}});return{...r,columns:n,tableSchema:e}}else return{...r,tableSchema:e}}function no(r,e){let{columns:t}=r,{column:n,pin:s}=e;return t=jn(t,n.name,{pin:s}),t=Xn(t),console.log({withPins:t}),{...r,columns:t}}function Pe(r,e){let{columns:t}=r,{align:n,column:s,hidden:o,label:i,resizing:l,width:a}=e,u={};return(n==="left"||n==="right")&&(u.align=n),typeof i=="string"&&(u.label=i),typeof l=="boolean"&&(u.resizing=l),typeof o=="boolean"&&(u.hidden=o),typeof a=="number"&&(u.width=a),t=jn(t,s.name,u),{...r,columns:t}}function tr(r,{columns:e,confirmed:t,filter:n,groupBy:s,sort:o}){let i=e&&e.length>0,l=s!==void 0,a=typeof(n==null?void 0:n.filter)=="string",u=o&&o.sortDefs.length>0,c=r;return i&&(c={...r,columns:e.map((h,f)=>{let m=Vi(h),g=f+Yn,C=Ei(c.columns,m);return C?C.key===g?C:{...C,key:g}:At(r)({name:h},f)})}),l&&(c={...r,columns:Oi(c.columns,s,t)}),u&&(c={...r,columns:Ai(c.columns,o)}),a?c={...r,columns:Di(c.columns,n)}:c.columns.some(Ni)&&(c={...r,columns:_i(c.columns)}),c}import{useCallback as oe,useRef as Ee}from"react";var nr=r=>{let{scrollLeft:e,scrollTop:t}=r,{clientHeight:n,clientWidth:s,scrollHeight:o,scrollWidth:i}=r,l=e/(i-s),a=t/(o-n);return[l,a]},ro=r=>{let{clientHeight:e,clientWidth:t,scrollHeight:n,scrollWidth:s}=r;return[s-t,n-e]},rr=({onAttach:r,onDetach:e})=>{let t=Ee(null);return oe(s=>{if(s)t.current=s,r==null||r(s);else if(t.current){let{current:o}=t;t.current=s,e==null||e(o)}},[r,e])},sr=({onHorizontalScroll:r,onVerticalScroll:e,viewport:t})=>{let n=Ee(!1),s=Ee({scrollTop:0,scrollLeft:0}),o=Ee(null),i=Ee(null),{maxScrollContainerScrollHorizontal:l,maxScrollContainerScrollVertical:a}=t,u=oe(()=>{let{current:b}=i,{current:x}=o,{current:P}=n;if(P)n.current=!1;else if(b&&x){let[w,p]=nr(x),[y,S]=ro(b),M=Math.round(w*y),d=Math.round(p*S);console.log(`pctScrollTop ${p}, maxScrollTop ${S} rootScrollTop ${d}`),b.scrollTo({left:M,top:d,behavior:"auto"})}},[]),c=oe(()=>{let{current:b}=i,{current:x}=o,{current:P}=s;if(b&&x){let{scrollLeft:w,scrollTop:p}=b,[y,S]=nr(b);n.current=!0,x.scrollLeft=Math.round(y*l),x.scrollTop=Math.round(S*a),P.scrollTop!==p&&(P.scrollTop=p,e==null||e(p,S)),P.scrollLeft!==w&&(P.scrollLeft=w,r==null||r(w))}},[l,a,r,e]),h=oe(b=>{o.current=b,b.addEventListener("scroll",u,{passive:!0})},[u]),f=oe(b=>{o.current=null,b.removeEventListener("scroll",u)},[u]),m=oe(b=>{i.current=b,b.addEventListener("scroll",c,{passive:!0})},[c]),g=oe(b=>{i.current=null,b.removeEventListener("scroll",c)},[c]),C=rr({onAttach:m,onDetach:g}),D=rr({onAttach:h,onDetach:f}),R=oe(b=>{let{current:x}=i;if(x){if(n.current=!1,b.type==="scroll-page"){let{clientHeight:P,scrollLeft:w,scrollTop:p}=x,{direction:y}=b,S=y==="down"?P:-P,M=Math.min(Math.max(0,p+S),a);x.scrollTo({top:M,left:w,behavior:"auto"})}else if(b.type==="scroll-end"){let{direction:P}=b,w=P==="end"?a:0;x.scrollTo({top:w,left:x.scrollLeft,behavior:"auto"})}}},[a]);return{scrollbarContainerRef:D,contentContainerRef:C,requestScroll:R}};import{useCallback as so,useMemo as Xe,useRef as io}from"react";import{actualRowPositioning as oo,virtualRowPositioning as lo}from"@vuu-ui/vuu-utils";var ao=15e5,uo={contentHeight:0,contentWidth:0,getRowAtPosition:()=>-1,getRowOffset:()=>-1,horizontalScrollbarHeight:0,maxScrollContainerScrollHorizontal:0,maxScrollContainerScrollVertical:0,pinnedWidthLeft:0,pinnedWidthRight:0,rowCount:0,setPctScrollTop:()=>{},totalHeaderHeight:0,verticalScrollbarWidth:0,viewportBodyHeight:0},co=r=>{let e=0,t=0,n=0;for(let s of r){let{hidden:o,pin:i,width:l}=s,a=o?0:l;i==="left"?e+=a:i==="right"?t+=a:n+=a}return{pinnedWidthLeft:e+4,pinnedWidthRight:t+4,unpinnedWidth:n}},ir=({columns:r,headerHeight:e,headings:t,rowCount:n,rowHeight:s,size:o})=>{let i=io(0),a=Math.min(n,ao)*s,c=n*s-a,{pinnedWidthLeft:h,pinnedWidthRight:f,unpinnedWidth:m}=Xe(()=>co(r),[r]),[g,C]=Xe(()=>oo(s),[s]),[D,R]=Xe(()=>c?lo(s,c,i):[g,C],[C,g,c,s]),b=so(x=>{i.current=x},[]);return Xe(()=>{var x;if(o){let P=t.length,w=15,p=h+m+f,y=p>o.width?w:0,S=e*(1+P),M=a-(((x=o==null?void 0:o.height)!=null?x:0)-y)+S,d=p-o.width+h,v=(o.height-e)/s,T=Number.isInteger(v)?v+1:Math.ceil(v),k=o.height-S,E=a>k?w:0;return{contentHeight:a,getRowAtPosition:R,getRowOffset:D,horizontalScrollbarHeight:y,maxScrollContainerScrollHorizontal:d,maxScrollContainerScrollVertical:M,pinnedWidthLeft:h,pinnedWidthRight:f,rowCount:T,contentWidth:p,setPctScrollTop:b,totalHeaderHeight:S,verticalScrollbarWidth:E,viewportBodyHeight:k}}else return uo},[o,t.length,h,m,f,a,e,s,R,D,b])};import{getColumnsInViewport as or,itemsChanged as ho}from"@vuu-ui/vuu-utils";import{useCallback as lr,useEffect as fo,useMemo as po,useRef as Et,useState as mo}from"react";var ar=({columns:r,getRowAtPosition:e,setRange:t,viewportMeasurements:n})=>{let s=Et(-1),{rowCount:o,contentWidth:i,maxScrollContainerScrollHorizontal:l}=n,a=i-l,u=Et(0),[c,h]=po(()=>or(r,u.current,u.current+a),[a,r]),f=Et(h);fo(()=>{g(c)},[c]);let[m,g]=mo(c),C=lr(R=>{u.current=R;let[b,x]=or(r,R,R+a);ho(m,b)&&(f.current=x,g(b))},[a,r,m]),D=lr(R=>{let b=e(R);b!==s.current&&(s.current=b,t({from:b,to:b+o}))},[e,t,o]);return{columnsWithinViewport:m,onHorizontalScroll:C,onVerticalScroll:D,virtualColSpan:f.current}};var Mo=[],{KEY:Ro,IS_EXPANDED:cr,IS_LEAF:hr}=wo,fr=({config:r,dataSource:e,headerHeight:t,onConfigChange:n,onFeatureEnabled:s,onFeatureInvocation:o,onSelectionChange:i,renderBufferSize:l=0,rowHeight:a,selectionModel:u,...c})=>{var Lt,Nt;let[h,f]=Po(e.size),m=Ht(!1),g=Ht();if(g.current=e,e===void 0)throw Error("no data source provided to Vuu Table");let C=Qn(c),D=U(O=>{f(O)},[]),{columns:R,dispatchColumnAction:b,headings:x}=qn(r,e.config),{getRowAtPosition:P,getRowOffset:w,setPctScrollTop:p,...y}=ir({columns:R,headerHeight:t,headings:x,rowCount:h,rowHeight:a,size:C.innerSize}),S=U(({tableSchema:O})=>{O?(m.current=!0,b({type:"setTableSchema",tableSchema:O})):console.log("usbscription message with no schema")},[b]),M=U(O=>{e.select(O),i==null||i(O)},[e,i]),d=Gn({onSelectionChange:M,selectionModel:u}),{data:v,getSelectedRows:T,range:k,setRange:E}=An({dataSource:e,onFeatureEnabled:s,onFeatureInvocation:o,onSubscribed:S,onSizeChange:D,renderBufferSize:l,viewportRowCount:y.rowCount}),N=Ht();N.current=v;let W=U(O=>{m.current=!0,b(O)},[b]),Ie=Qt({dataSource:e,onPersistentColumnOperation:W}),G=U((O,H=!1,_)=>{e&&(e.sort=bo(e.sort,O,H,_))},[e]),K=U((O,H,_)=>{let I=R.find(J=>J.name===H);if(I)O==="end"&&(m.current=!0),b({type:"resizeColumn",phase:O,column:I,width:_});else throw Error(`useDataTable.handleColumnResize, column ${H} not found`)},[R,b]),B=U((O,H)=>{let _=xo(H,O),I=O[Ro];if(O[cr]){if(e.closeTreeNode(I,!0),_){let J=R.indexOf(H);e.getRowsAtDepth(J+1).some(Z=>Z[cr]||Z[hr])||b({type:"hideColumns",columns:R.slice(J+2)})}}else if(e.openTreeNode(I),_){let J=e.getChildRows(I),le=R.indexOf(H)+1,Z=[R[le]];J.some(de=>de[hr])&&Z.push(R[le+1]),Z.some(de=>de.hidden)&&b({type:"showColumns",columns:Z})}},[R,e,b]),{onVerticalScroll:j,onHorizontalScroll:ne,columnsWithinViewport:pe,virtualColSpan:Le}=ar({columns:R,getRowAtPosition:P,setRange:E,viewportMeasurements:y}),dr=U((O,H)=>{p(H),j(O)},[j,p]),{requestScroll:mr,...gr}=sr({onHorizontalScroll:ne,onVerticalScroll:dr,viewport:y,viewportHeight:((Nt=(Lt=C.innerSize)==null?void 0:Lt.height)!=null?Nt:0)-t}),br=zn({columnCount:R.length,containerRef:C.containerRef,data:v,requestScroll:mr,rowCount:e==null?void 0:e.size,viewportRange:k}),Cr=U(O=>{O?e&&e.groupBy.includes(O.name)&&(e.groupBy=e.groupBy.filter(H=>H!==O.name)):e.groupBy=[]},[e]),xr=U((O,H)=>{let _=e.columns[O],I=yo(e.columns,_,H);I!==e.columns&&(e.columns=I,b({type:"tableConfig",columns:I}))},[e,b]),wr=Vn({onDrop:xr});ur(()=>{g.current&&(m.current=!0,b({type:"init",tableConfig:r,dataSourceConfig:g.current.config}))},[r,b]),ur(()=>{e.on("config",(O,H)=>{m.current=!0,b({type:"tableConfig",...O,confirmed:H})})},[e,b]),vo(()=>{m.current&&(n==null||n({...r,columns:R}),m.current=!1)},[R,r,n]);let It=go(),yr=U(O=>{var Z;let{current:H}=N,{current:_}=g,I=O.target,J=I==null?void 0:I.closest("div[role='cell']"),le=I==null?void 0:I.closest(".vuuTableRow");if(J&&le&&H&&_){let{columns:de,selectedRowsCount:vr}=_,Pr=Co(de),Mr=parseInt((Z=le.ariaRowIndex)!=null?Z:"-1"),Rr=Array.from(le.childNodes).indexOf(J),kr=H.find(([Tr])=>Tr===Mr),Sr=de[Rr];It(O,"grid",{columnMap:Pr,columnName:Sr,row:kr,selectedRows:vr===0?Mo:T(),viewport:e==null?void 0:e.viewport})}},[e==null?void 0:e.viewport,T,It]);return{columns:R,columnsWithinViewport:pe,containerMeasurements:C,containerProps:br,data:v,dispatchColumnAction:b,getRowOffset:w,handleContextMenuAction:Ie,headings:x,onColumnResize:K,onContextMenu:yr,onRemoveColumnFromGroupBy:Cr,onRowClick:d,onSort:G,onToggleGroup:B,virtualColSpan:Le,scrollProps:gr,rowCount:h,viewportMeasurements:y,...wr}};import Do from"classnames";import{isDataLoading as Oo}from"@vuu-ui/vuu-utils";import{jsx as He,jsxs as pr}from"react/jsx-runtime";var fe="vuuTable",Th=({allowConfigEditing:r=!1,className:e,config:t,dataSource:n,headerHeight:s=25,height:o,id:i,onConfigChange:l,onFeatureEnabled:a,onFeatureInvocation:u,onSelectionChange:c,onShowConfigEditor:h,renderBufferSize:f=0,rowHeight:m=20,selectionModel:g="extended",style:C,width:D,zebraStripes:R=!1,...b})=>{let x=To(i),{containerMeasurements:{containerRef:P,innerSize:w,outerSize:p},containerProps:y,dispatchColumnAction:S,draggable:M,draggedItemIndex:d,handleContextMenuAction:v,scrollProps:T,viewportMeasurements:k,...E}=fr({config:t,dataSource:n,renderBufferSize:f,headerHeight:s,height:o,onConfigChange:l,onFeatureEnabled:a,onFeatureInvocation:u,onSelectionChange:c,rowHeight:m,selectionModel:g,width:D}),N={...p,"--content-height":`${k.contentHeight}px`,"--horizontal-scrollbar-height":`${k.horizontalScrollbarHeight}px`,"--content-width":`${k.contentWidth}px`,"--pinned-width-left":`${k.pinnedWidthLeft}px`,"--pinned-width-right":`${k.pinnedWidthRight}px`,"--header-height":`${s}px`,"--row-height":`${m}px`,"--table-height":`${w==null?void 0:w.height}px`,"--table-width":`${w==null?void 0:w.width}px`,"--total-header-height":`${k.totalHeaderHeight}px`,"--vertical-scrollbar-width":`${k.verticalScrollbarWidth}px`,"--viewport-body-height":`${k.viewportBodyHeight}px`},W=Do(fe,e,{[`${fe}-zebra`]:R,[`${fe}-loading`]:Oo(E.columns)});return He(ko,{menuActionHandler:v,menuBuilder:Kt(n),children:pr("div",{...b,...y,className:W,id:x,ref:P,style:N,tabIndex:-1,children:[w?He("div",{className:`${fe}-scrollbarContainer`,ref:T.scrollbarContainerRef,children:He("div",{className:`${fe}-scrollbarContent`})}):null,w?pr("div",{className:`${fe}-contentContainer`,ref:T.contentContainerRef,children:[He(dn,{...E,headerHeight:s,tableId:x}),M]}):null,r&&w?He(So,{className:`${fe}-settings`,"data-icon":"settings",onClick:h,variant:"secondary"}):null]})})};import Ao from"classnames";import{isJsonAttribute as Eo,metadataKeys as Ho,registerComponent as Vo}from"@vuu-ui/vuu-utils";import{jsx as Vt,jsxs as zo}from"react/jsx-runtime";var Ve="vuuJsonCell",{IS_EXPANDED:Io,KEY:Lo}=Ho,No=r=>{let e=r.lastIndexOf("|");return e===-1?"":r.slice(e+1)},Fo=({column:r,row:e})=>{let{key:t}=r,n=e[t],s=!1;Eo(n)&&(n=n.slice(0,-1),s=!0);let o=No(e[Lo]),i=Ao({[`${Ve}-name`]:o===n,[`${Ve}-value`]:o!==n,[`${Ve}-group`]:s});if(s){let l=e[Io]?"minus-box":"plus-box";return zo("span",{className:i,children:[Vt("span",{className:`${Ve}-value`,children:n}),Vt("span",{className:`${Ve}-toggle`,"data-icon":l})]})}else return n?Vt("span",{className:i,children:n}):null};Vo("json",Fo,"cell-renderer",{});export{Ne as ColumnResizer,Th as Table,Kt as buildContextMenuDescriptors,Fc as isShowSettings,Qn as useMeasuredContainer,Gn as useSelection,We as useTableColumnResize,Qt as useTableContextMenu,qn as useTableModel,ir as useTableViewport};
2
2
  //# sourceMappingURL=index.js.map