@vuu-ui/vuu-utils 0.8.29 → 0.8.31-debug

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/cjs/index.js CHANGED
@@ -1,9 +1,3872 @@
1
- "use strict";var ce=Object.defineProperty;var gn=Object.getOwnPropertyDescriptor;var yn=Object.getOwnPropertyNames;var Cn=Object.prototype.hasOwnProperty;var Dn=(e,t)=>{for(var n in t)ce(e,n,{get:t[n],enumerable:!0})},$n=(e,t,n,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of yn(t))!Cn.call(e,o)&&o!==n&&ce(e,o,{get:()=>t[o],enumerable:!(r=gn(t,o))||r.enumerable});return e};var bn=e=>$n(ce({},"__esModule",{value:!0}),e);var xn=(e,t,n)=>{if(!t.has(e))throw TypeError("Cannot "+n)};var b=(e,t,n)=>(xn(e,t,"read from private field"),n?n.call(e):t.get(e)),Ze=(e,t,n)=>{if(t.has(e))throw TypeError("Cannot add the same private member more than once");t instanceof WeakSet?t.add(e):t.set(e,n)};var As={};Dn(As,{AggregationType:()=>Jn,ArrowDown:()=>$a,ArrowLeft:()=>ba,ArrowRight:()=>xa,ArrowUp:()=>Da,DEFAULT_DENSITY:()=>cn,DEFAULT_THEME:()=>fn,DEFAULT_THEME_MODE:()=>mn,DOWN1:()=>q,DOWN2:()=>K,DataWindow:()=>xe,End:()=>wa,Enter:()=>Ta,Escape:()=>Ea,EventEmitter:()=>Ge,Home:()=>Ma,KeySet:()=>qe,MEASURES:()=>Ao,NO_CONFIG_CHANGES:()=>Te,NULL_RANGE:()=>Eo,NoFilter:()=>Ct,NoSort:()=>Dt,PageDown:()=>va,PageUp:()=>Ra,RangeMonitor:()=>He,RowSelected:()=>x,Space:()=>Sa,Tab:()=>Aa,ThemeContext:()=>ue,ThemeProvider:()=>dn,UP1:()=>j,UP2:()=>Q,WindowRange:()=>O,actualRowPositioning:()=>Ha,addColumnToSubscribedColumns:()=>Gr,addGroupColumn:()=>sa,addSortColumn:()=>gs,applyDefaultColumnConfig:()=>zr,applyFilterToColumns:()=>Er,applyGroupByToColumns:()=>$r,applySortToColumns:()=>br,applyWidthToColumns:()=>to,asDataSourceRowObject:()=>Ja,asReactElements:()=>ka,assertModuleExportsAtLeastOneComponent:()=>La,boxContainsPoint:()=>Sn,buildColumnMap:()=>lr,createEl:()=>Bi,dataAndColumnUnchanged:()=>no,dataColumnAndKeyUnchanged:()=>ro,dateTimePattern:()=>ne,debounce:()=>Oa,defaultPatternsByType:()=>Ue,defaultValueFormatter:()=>je,deselectItem:()=>Ka,dispatchCustomEvent:()=>Zi,dispatchMouseEvent:()=>Ki,existingSort:()=>Tr,expandSelection:()=>cs,extractFilterForColumn:()=>ye,extractGroupColumn:()=>it,fallbackDateTimePattern:()=>We,filterAsQuery:()=>P,findColumn:()=>ut,flattenColumnGroup:()=>B,focusFirstFocusableElement:()=>ji,formatDate:()=>_e,fromServerDataType:()=>zn,getAddedItems:()=>Rn,getCalculatedColumnDetails:()=>Y,getCalculatedColumnExpression:()=>jr,getCalculatedColumnName:()=>lt,getCalculatedColumnType:()=>Jr,getCellConfigPanelRenderer:()=>xo,getCellRenderer:()=>go,getCellRendererOptions:()=>ho,getClosest:()=>Xt,getClosestIndexItem:()=>Yi,getColumnByName:()=>eo,getColumnHeaderContentRenderer:()=>yo,getColumnHeaderLabelRenderer:()=>Co,getColumnLabel:()=>Sr,getColumnName:()=>vr,getColumnStyle:()=>yr,getColumnsInViewport:()=>Pr,getConfigurationEditor:()=>bo,getCookieValue:()=>$e,getDateFormatter:()=>Gt,getDefaultAlignment:()=>qn,getDefaultColumnType:()=>Ce,getEditRuleValidator:()=>To,getElementByDataIndex:()=>Ji,getElementDataIndex:()=>Gi,getFocusableElement:()=>Kt,getFullRange:()=>wo,getGroupValueAndOffset:()=>_r,getIndexFromRowElement:()=>Ya,getLoggingConfigForWorker:()=>Wi,getMissingItems:()=>vn,getMovingValueDirection:()=>Lo,getRegisteredCellRenderers:()=>po,getRowClassNameGenerator:()=>Do,getRowElementAtIndex:()=>Ga,getRowRecord:()=>Fr,getScrollbarSize:()=>qi,getSelectionStatus:()=>us,getTableHeadings:()=>gr,getTypeFormattingFromColumn:()=>Hr,getUniqueId:()=>aa,getUrlParameter:()=>Ms,getValueFormatter:()=>ia,hasAction:()=>ni,hasFilter:()=>Qo,hasGroupBy:()=>jo,hasHeadings:()=>ot,hasSort:()=>qo,hasUrlParameter:()=>ws,hasValidationRules:()=>ur,invariant:()=>ca,isAndFilter:()=>_n,isCalculatedColumn:()=>De,isCharacterKey:()=>ua,isColumnTypeRenderer:()=>G,isCompleteFilter:()=>Wn,isConfigChanged:()=>Ee,isConnectionQualityMetrics:()=>zo,isConnectionStatusMessage:()=>Xo,isDataLoading:()=>Lr,isDateTimeColumn:()=>V,isDateTimePattern:()=>te,isErrorResponse:()=>ti,isFilterChanged:()=>$t,isFilterClause:()=>de,isFilteredColumn:()=>Mr,isGroupByChanged:()=>bt,isGroupColumn:()=>at,isGroupMenuItemDescriptor:()=>Fa,isInFilter:()=>On,isJsonAttribute:()=>st,isJsonColumn:()=>dr,isJsonGroup:()=>mr,isLookupRenderer:()=>ar,isMappedValueTypeRenderer:()=>ge,isModule:()=>an,isMultiClauseFilter:()=>I,isMultiValueFilter:()=>H,isNamedFilter:()=>kn,isNotHidden:()=>he,isNotNullOrUndefined:()=>Oe,isNumericColumn:()=>er,isOrFilter:()=>Un,isPinned:()=>tr,isQuoteKey:()=>la,isResizing:()=>nr,isRowSelected:()=>ja,isRowSelectedLast:()=>Qa,isSelectableElement:()=>Qi,isSelected:()=>ls,isSingleValueFilter:()=>me,isTableSchema:()=>Zo,isTextColumn:()=>rr,isTypeDescriptor:()=>T,isTypeaheadSuggestionProvider:()=>Ko,isValidColumnAlignment:()=>rt,isValidFilterClauseOp:()=>Vn,isValidNumber:()=>Io,isValidPinLocation:()=>Kn,isValueListRenderer:()=>sr,isViewportMenusAction:()=>yt,isViewporttMessage:()=>ri,isVisualLinkCreatedAction:()=>Po,isVisualLinkRemovedAction:()=>Vo,isVisualLinksAction:()=>gt,isVuuColumnDataType:()=>Xn,isVuuFeatureAction:()=>ko,itemToString:()=>ma,itemsChanged:()=>En,itemsOrOrderChanged:()=>Mn,jsonToDataSourceRows:()=>Ca,lastWord:()=>ys,logger:()=>Ne,mapSortCriteria:()=>jn,measurePinnedColumns:()=>hr,messageHasResult:()=>ei,metadataKeys:()=>E,moveColumnTo:()=>Zr,moveItem:()=>fe,moveItemDeprecated:()=>wn,numericFormatter:()=>nn,partition:()=>Tn,projectUpdates:()=>cr,queryClosest:()=>Zt,rangeNewItems:()=>vo,rangesAreSame:()=>Mo,registerComponent:()=>fo,registerConfigurationEditor:()=>mo,removeColumnFromFilter:()=>Nn,removeSort:()=>xr,replaceColumn:()=>Xr,resetRange:()=>Ro,roundDecimal:()=>Je,selectItem:()=>za,setAggregations:()=>Cr,setCalculatedColumnExpression:()=>Kr,setCalculatedColumnName:()=>Qr,setCalculatedColumnType:()=>qr,setSortColumn:()=>hs,shallowEquals:()=>Fo,sortPinnedColumns:()=>pr,stripFilterFromColumns:()=>wr,subscribedOnly:()=>Br,supportedDateTimePatterns:()=>jt,throttle:()=>_a,toCalendarDate:()=>Qt,toColumnDescriptor:()=>or,toDataSourceColumns:()=>Ir,toggleOrApplySort:()=>ps,updateColumn:()=>Ar,updateColumnFormatting:()=>Ur,updateColumnRenderProps:()=>Nr,updateColumnType:()=>Wr,useId:()=>vs,useLayoutEffectSkipFirst:()=>Ss,useThemeAttributes:()=>Ts,uuid:()=>Pa,vanillaConfig:()=>Oo,virtualRowPositioning:()=>Ba,visibleColumnAtIndex:()=>Vr,withConfigDefaults:()=>oi,withinRange:()=>pt,wordify:()=>$s});module.exports=bn(As);function Tn(e,t,n=[],r=[]){for(let o=0,i=e.length;o<i;o++)(t(e[o],o)?n:r).push(e[o]);return[n,r]}function En(e,t,n){return e.length!==t.length?!0:n===void 0?!e.every(r=>t.includes(r)):e.some(r=>t.findIndex(o=>o[n]===r[n])===-1)}function Mn(e,t,n){return e.length!==t.length?!0:n===void 0?e.some((r,o)=>t[o]!==r):e.some((r,o)=>t[o][n]!==r[n])}var wn=(e,t,n)=>{let r=e.indexOf(t);if(r===n)return e;let o=e.slice();if(r===-1)throw Error("moveItem, item to be moved not found");if(o.splice(r,1),n===-1)o.push(t);else{let i=(n>r,0);o.splice(n+i,0,t)}return o},fe=(e,t,n)=>{if(t===n)return e;{let r=e.slice(),[o]=r.splice(t,1);if(n===-1)return r.concat(o);{let i=(n>t,0);return r.splice(n+i,0,o),r}}},Rn=(e,t)=>{let n=r=>!(e!=null&&e.includes(r));return e===void 0?t:t.some(n)?t.filter(n):[]},vn=(e,t,n)=>t.filter(r=>e.findIndex(o=>n(o)===r)===-1);function Sn(e,t,n){if(e)return t>=e.left&&t<e.right&&n>=e.top&&n<e.bottom}var An=e=>typeof e=="string"?`"${e}"`:e,In=e=>typeof e=="string"?`"${e}"`:e,Fn=e=>e.replace(/^\((.*)\)$/,"$1"),P=(e,t)=>Fn(N(e,t)),N=(e,t)=>I(e)?`(${e.filters.map(r=>N(r,t)).join(` ${e.op} `)})`:H(e)?`${e.column} ${e.op} [${e.values.map(In).join(",")}]`:Ln(e,t);function Ln(e,t){var r;let n=(r=t==null?void 0:t.columnsByName)==null?void 0:r[e.column];return n&&V(n)?Pn(e):ze(e)}var Xe=1e3*60*60*24;function Pn(e){switch(e.op){case"=":{let t=[{op:">=",column:e.column,value:e.value},{op:"<",column:e.column,value:e.value+Xe}];return N({op:"and",filters:t})}case"!=":{let t=[{op:"<",column:e.column,value:e.value},{op:">=",column:e.column,value:e.value+Xe}];return N({op:"or",filters:t})}default:return ze(e)}}var ze=e=>`${e.column} ${e.op} ${An(e.value)}`;var et=new Set(["=","!=",">",">=","<","<=","starts","ends"]),Vn=e=>e==="in"||et.has(e),kn=e=>e!==void 0&&e.name!==void 0,me=e=>e!==void 0&&et.has(e.op),de=e=>e!==void 0&&(me(e)||H(e)),H=e=>e!==void 0&&e.op==="in",On=e=>e.op==="in",_n=e=>e.op==="and",Un=e=>e.op==="or",Wn=e=>me(e)&&e.column!==void 0&&e.op!==void 0&&e.value!==void 0;function I(e){return e!==void 0&&(e.op==="and"||e.op==="or")}var Nn=(e,t)=>{if(I(t)){let[n,r]=t.filters;if(n.column===e.name)return[r,P(r)];if(r.column===e.name)return[n,P(n)]}return[void 0,""]};var Hn="asc",tt=[],Bn=100,Gn=250,Yn=50,Jn={Average:2,Count:3,Distinct:6,Sum:1,High:4,Low:5};function jn(e,t,n=0){return e.map(r=>{if(typeof r=="string")return[t[r]+n,"asc"];if(Array.isArray(r)){let[o,i]=r;return[t[o]+n,i||Hn]}else throw Error("columnUtils.mapSortCriteria invalid input")})}var Qn=["int","long","double"],qn=e=>e===void 0?"left":Qn.includes(e)?"right":"left",rt=e=>e==="left"||e==="right",Kn=e=>rt(e)||e==="floating"||e==="",Zn=["long","double","int","string","char","boolean"],Xn=e=>Zn.includes(e),zn=e=>{switch(e){case"double":case"int":case"long":return"number";case"boolean":return"boolean";default:return"string"}},er=({serverDataType:e,type:t})=>e==="int"||e==="long"||e==="double"?!0:typeof t=="string"?t==="number":typeof(t==null?void 0:t.name)=="string"?(t==null?void 0:t.name)==="number":!1,V=e=>(T(e.type)?e.type.name:e.type)==="date/time",tr=e=>typeof e.pin=="string",ot=e=>Array.isArray(e.heading)&&e.heading.length>0,nr=e=>e.resizing,rr=({serverDataType:e})=>e===void 0?!1:e==="char"||e==="string",or=e=>({name:e}),T=e=>typeof e<"u"&&typeof e!="string",ir={},G=e=>typeof(e==null?void 0:e.name)<"u",ar=e=>typeof(e==null?void 0:e.name)<"u"&&"lookup"in e,sr=e=>typeof(e==null?void 0:e.name)<"u"&&Array.isArray(e.values),ur=e=>T(e)&&G(e.renderer)&&Array.isArray(e.renderer.rules)&&e.renderer.rules.length>0,ge=e=>e!==void 0&&typeof(e==null?void 0:e.map)<"u";function lr(e){let t=E.count;return e?e.reduce((n,r,o)=>(typeof r=="string"?n[r]=t+o:n[r.name]=t+o,n),{}):ir}function cr(e){let t=[],n=E.count-2;for(let r=0;r<e.length;r+=3)t[r]=e[r]+n,t[r+1]=e[r+1],t[r+2]=e[r+2];return t}var pe=6,E={IDX:0,RENDER_IDX:1,IS_LEAF:2,IS_EXPANDED:3,DEPTH:4,COUNT:5,KEY:pe,SELECTED:7,count:8,PARENT_IDX:"parent_idx",IDX_POINTER:"idx_pointer",FILTER_COUNT:"filter_count",NEXT_FILTER_IDX:"next_filter_idx"},fr=(e,t)=>{let{originalIdx:n}=t;if(typeof n=="number")for(let r=0;r<e.length;r++){let{originalIdx:o=-1}=e[r];if(o>n)return e.splice(r,0,t),e}return e.push(t),e},B=e=>{var t;if((t=e[0])!=null&&t.isGroup){let[n,...r]=e;return n.columns.forEach(o=>{fr(r,o)}),r}else return e};function it(e,t,n=!0){if(t&&t.length>0){let r=B(e),[o,i]=r.reduce((l,f,g)=>{let[p,d]=l;return t.includes(f.name)?p.push({...f,originalIdx:g}):d.push(f),l},[[],[]]);if(o.length!==t.length)throw Error(`extractGroupColumn: no column definition found for all groupBy cols ${JSON.stringify(t)} `);let a=t.length,s=t.map((l,f)=>({...o.find(p=>p.name===l),groupLevel:a-f}));return[{name:"group-col",heading:["group-col"],isGroup:!0,columns:s,groupConfirmed:n,width:s.map(l=>l.width).reduce((l,f)=>l+f)+100},i]}return[null,B(e)]}var at=e=>e.isGroup===!0,st=e=>typeof e=="string"&&e.endsWith("+"),mr=(e,t,n)=>{var r;return((r=e.type)==null?void 0:r.name)==="json"&&st(t[n[e.name]])},dr=e=>{var t;return((t=e.type)==null?void 0:t.name)==="json"},pr=e=>{let t=[],n=[],r=[],o=4;for(let a of e)switch(a.pin){case"left":t.push({...a,endPin:void 0,pinnedOffset:o}),o+=a.width;break;case"right":n.unshift(a);break;default:r.push(a)}t.length&&t.push({...t.pop(),endPin:!0});let i=t.length?t.concat(r):r;if(n.length){let a=[],s=0;for(let u of n)a.unshift({...u,pinnedOffset:s}),s+=u.width;return a[0].endPin=!0,i.concat(a)}else return i},hr=(e,t)=>{let n=0,r=0,o=0;for(let i of e){let{hidden:a,pin:s,width:u}=i,l=a?0:u;s==="left"?n+=l:s==="right"?r+=l:o+=l}return{pinnedWidthLeft:n+t,pinnedWidthRight:r+t,unpinnedWidth:o}},gr=e=>{if(e.some(ot)){let t=e.reduce((i,{heading:a})=>{var s;return Math.max(i,(s=a==null?void 0:a.length)!=null?s:0)},0),n,r=[],o;for(let i=0;i<t;i++)o=[],e.forEach(({heading:a=tt,width:s})=>{var l;let u=(l=a[i])!=null?l:"";n&&n.label===u?n.width+=s:(n={label:u,width:s},o.push(n))}),r.push(o);return r}return tt},yr=({pin:e,pinnedOffset:t=e==="left"?0:4,width:n})=>e==="left"?{left:t,width:n,"--pin-width":`${t+n-3}px`}:e==="right"?{right:t,width:n,"--pin-width":`${t+n}px`}:{width:n},Cr=(e,t,n)=>e.filter(r=>r.column!==t.name).concat({column:t.name,aggType:n}),ye=(e,t)=>{if(I(e))return Dr(e,t);if(de(e))return e.column===t?e:void 0},Dr=(e,t)=>{let{filters:n,op:r}=e,o=[];if(n.forEach(i=>{let a=ye(i,t);a&&o.push(a)}),o.length!==0)return o.length===1?o[0]:{op:r,filters:o}},$r=(e,t,n=!0)=>{var r;if(t.length){let[o,i]=it(e,t,n);if(o)return[o].concat(i)}else if((r=e[0])!=null&&r.isGroup)return B(e);return e},br=(e,t)=>e.map(n=>{let r=Rr(n,t);return r!==void 0?{...n,sorted:r}:n.sorted?{...n,sorted:void 0}:n}),xr=e=>e.map(t=>t.sorted?{...t,sorted:void 0}:t),Tr=e=>e.some(t=>t.sorted),Er=(e,{filterStruct:t})=>e.map(n=>{let r=ye(t,n.name);return r!==void 0?{...n,filter:r}:n.filter?{...n,filter:void 0}:n}),Mr=e=>e.filter!==void 0,wr=e=>e.map(t=>{let{filter:n,...r}=t;return n?r:t}),Rr=(e,{sortDefs:t})=>{let n=t.find(r=>r.column===e.name);if(n)return t.length>1?(t.indexOf(n)+1)*(n.sortType==="A"?1:-1):n.sortType},vr=e=>{let t=e.indexOf(":");return t===-1?e:e.slice(0,t)},Sr=e=>e.label?e.label:De(e.name)?lt(e):e.name,ut=(e,t)=>{let n=e.find(r=>r.name===t);if(n)return n;{let r=e.find(o=>o.isGroup);if(r)return ut(r.columns,t)}};function Ar(e,t,n){let r=typeof t=="string"?e.find(o=>o.name===t):t;if(r){let o=n?{...r,...n}:r;return e.map(i=>i.name===o.name?o:i)}else throw Error("column-utils.replaceColun, column not found")}var Ir=e=>e.name,Fr=(e,t)=>Object.entries(t).reduce((n,[r,o])=>(n[r]=e[o],n),{}),Lr=e=>at(e[0])&&e[0].groupConfirmed===!1,Pr=(e,t,n)=>{var a;let r=[],o=0,i=!1;for(let s=0,u=0;u<e.length;u++){let l=e[u];l.hidden||(i?l.pin==="right"&&r.push(l):s+l.width<t?l.pin==="left"||s+l.width+((a=e[u+1])==null?void 0:a.width)>t?r.push(l):o+=l.width:s>n?i=!0:r.push(l),s+=l.width)}return[r,o]},he=e=>e.hidden!==!0,Vr=(e,t)=>e.every(he)?e[t]:e.filter(he).at(t),{DEPTH:kr,IS_LEAF:Or}=E,_r=(e,t,n)=>{let{[kr]:r,[Or]:o}=t;if(o||r>e.length)return[null,r===null?0:Math.max(0,r-1)];if(r===0)return["$root",0];{let{name:i,valueFormatter:a}=e[r-1];return[a(t[n[i]]),r-1]}},Ce=e=>{switch(e){case"int":case"long":case"double":return"number";case"boolean":return"boolean";default:return"string"}},Ur=(e,t)=>{let{serverDataType:n,type:r=Ce(n)}=e;return T(r)?{...e,type:{...r,formatting:t}}:{...e,type:{name:r,formatting:t}}};function Wr(e,t){return T(e.type)?{...e,type:{...e.type,name:t}}:{...e,type:t}}var Nr=(e,t)=>{let{serverDataType:n,type:r=Ce(n)}=e;return T(r)?{...e,type:{...r,renderer:t}}:{...e,type:{name:r,renderer:t}}},nt={},Hr=e=>{var t;return T(e.type)&&(t=e.type.formatting)!=null?t:nt},Br=e=>t=>e==null?void 0:e.includes(t.name),Gr=(e,t,n)=>{let r=(s=n)=>u=>u.name===s;if(e.findIndex(r())!==-1)throw Error(`column-utils, addColumnToSubscribedColumns column ${n} is already subscribed`);let o=t.findIndex(r());if(o===-1)throw Error(`column-utils, addColumnToSubscribedColumns column ${n} is not available`);let i={...t[o]},a=-1;for(let s=o-1;s>=0;s--){let{name:u}=t[s];if(a=e.findIndex(r(u)),a!==-1)break}if(a===-1)return[i].concat(e);{let s=[];for(let u=0;u<e.length;u++)s.push(e[u]),u===a&&(s.push(i),a=Number.MAX_SAFE_INTEGER);return s}},Yr=/.*:.*:.*/,De=e=>e!==void 0&&Yr.test(e),Y=e=>{if(De(e.name))return e.name.split(/:=?/);throw Error(`column-utils, getCalculatedColumnDetails column name ${e.name} is not valid calculated column`)},lt=e=>Y(e)[0],Jr=e=>Y(e)[1],jr=e=>Y(e)[2],Qr=(e,t)=>{let[,n,r]=e.name.split(":");return{...e,name:`${t}:${n}:${r}`}},qr=(e,t)=>{let[n,,r]=e.name.split(":");return{...e,name:`${n}:${t}:${r}`}},Kr=(e,t)=>{let[n,r]=e.name.split(":");return{...e,name:`${n}:${r}:=${t}`}},Zr=(e,t,n)=>{let r=e.findIndex(o=>o.name===t.name);return fe(e,r,n)};function Xr(e,t){return e.map(n=>n.name===t.name?t:n)}var zr=({columns:e,table:t},n)=>typeof n=="function"?e.map(r=>{let o=n(t.table,r.name);return o?{...r,...o}:r}):e,eo=(e,t)=>{if(t!==void 0){let n=e.columns.find(r=>r.name===t);if(n)return n;throw Error(`getColumnByName no column '${t}' in schema for ${e.table.table}`)}};function to(e,t){let{availableWidth:n=0,columnLayout:r="Static",defaultWidth:o=Bn,defaultMinWidth:i=Yn,defaultMaxWidth:a=Gn}=t;if(r==="Static")return e.map(s=>typeof s.width=="number"?s:{...s,width:o});if(r==="Fit"){let{totalMinWidth:s,totalMaxWidth:u,totalWidth:l,flexCount:f}=e.reduce((g,p)=>{let{totalMinWidth:d,totalMaxWidth:y,totalWidth:D,flexCount:$}=g,{minWidth:c=i,maxWidth:h=a,width:w=o,flex:R=0}=p;return{totalMinWidth:d+c,totalMaxWidth:y+h,totalWidth:D+w,flexCount:$+R}},{totalMinWidth:0,totalMaxWidth:0,totalWidth:0,flexCount:0});if(s>n||u<n)return e;if(l>n){let g=l-n,p=f>0,d=g/(f||e.length),y=e.length,D=0,$=e.map(c=>{let{minWidth:h=i,width:w=o,flex:R=0}=c;if(p&&R===0)return c;let A=w-d;return A<h?(y-=1,D+=h-A,{...c,width:h}):{...c,width:A}});return D===0||(d=D/y,$=$.map(c=>{let h=c.width-d;return c.width!==c.minWidth?{...c,width:h}:c})),$}else if(l<n){let g=n-l,p=f>0,d=g/(f||e.length),y=e.map(c=>{let{maxWidth:h=a,width:w=o,flex:R=0}=c;if(p&&R===0)return c;let A=w+d;return A>h?{...c,width:h}:{...c,width:A,canStretch:!0}}),D=g-y.reduce((c,h)=>c+h.width,0),$=y.filter(c=>c.canStretch).length;return D>$&&(d=D/$,y=y.map(c=>{if(c.canStretch){let h=Math.min(c.width+d);return{...c,width:h}}else return c})),y.map(({canStretch:c,...h})=>h)}}return e}var no=(e,t)=>e.column===t.column&&e.column.valueFormatter(e.row[e.columnMap[e.column.name]])===t.column.valueFormatter(t.row[t.columnMap[t.column.name]]),ro=(e,t)=>e.column===t.column&&e.row[pe]===t.row[pe]&&e.column.valueFormatter(e.row[e.columnMap[e.column.name]])===t.column.valueFormatter(t.row[t.columnMap[t.column.name]]);var $e=e=>{var t,n;if(((t=globalThis.document)==null?void 0:t.cookie)!==void 0)return(n=globalThis.document.cookie.split("; ").find(r=>r.startsWith(`${e}=`)))==null?void 0:n.split("=")[1]};var k=new Map,J=new Map,ct=new Map,ft=new Map,mt=new Map,be=new Map,dt=new Map,oo=(e,t)=>e===void 0||e==="private"?!0:Array.isArray(e)?e.includes(t):e===t,io=(e,t)=>t!==void 0&&e==="cell-renderer",ao=(e,t)=>e==="column-header-content-renderer",so=(e,t)=>e==="column-header-label-renderer",uo=(e,t)=>e==="cell-config-panel",lo=(e,t)=>e==="data-edit-validator",co=(e,t)=>e==="row-class-generator";function fo(e,t,n="cell-renderer",r){io(n,t)?k.set(e,t):ao(n,t)||so(n,t)?J.set(e,t):uo(n,t)?ft.set(e,t):lo(n,t)?mt.set(e,t):co(n,t)&&(console.log(`register ${e}`),dt.set(e,t)),r&&be.set(e,r)}var mo=(e,t)=>{ct.set(e,t)},po=e=>{let n=Array.from(k.keys()).map(r=>({name:r,...be.get(r)})).filter(({userCanAssign:r})=>r!==!1);return e?n.filter(r=>oo(r.serverDataType,e)):n},ho=e=>be.get(e);function go(e){return $o(e)}function yo(e){if(e.colHeaderContentRenderer)return J.get(e.colHeaderContentRenderer)}function Co(e){if(e.colHeaderLabelRenderer)return J.get(e.colHeaderLabelRenderer)}var Do=e=>dt.get(e);function $o(e){if(T(e.type)){let{renderer:t}=e.type;if(G(t))return k.get(t.name)}else{if(e.serverDataType==="boolean")return k.get("checkbox-cell");if(e.editable)return k.get("input-cell")}}function bo(e=""){return ct.get(e)}function xo(e){return ft.get(e)}function To(e){return mt.get(e)}var Eo={from:0,to:0},Mo=(e,t)=>(e==null?void 0:e.from)===(t==null?void 0:t.from)&&(e==null?void 0:e.to)===(t==null?void 0:t.to);function wo({from:e,to:t},n=0,r=Number.MAX_SAFE_INTEGER){if(e===0&&t===0)return{from:e,to:t};if(n===0)return r<e?{from:0,to:0}:{from:e,to:Math.min(t,r)};if(e===0)return{from:e,to:Math.min(t+n,r)};{let o=e-n<0,i=r-(t+n)<0;return o&&i?{from:0,to:r}:o?{from:0,to:t+n}:i?{from:Math.max(0,e-n),to:r}:{from:e-n,to:t+n}}}function Ro({from:e,to:t,bufferSize:n=0}){return{from:0,to:t-e,bufferSize:n,reset:!0}}var pt=(e,{from:t,to:n})=>e>=t&&e<n,vo=({from:e,to:t},n)=>{let{from:r,to:o}=n,i=r>=t||o<=e,a=r<e&&o>t;return i||a?n:o>t?{from:t,to:o}:{from:r,to:e}},O=class e{constructor(t,n){this.from=t,this.to=n}isWithin(t){return pt(t,this)}overlap(t,n){return t>=this.to||n<this.from?[0,0]:[Math.max(t,this.from),Math.min(n,this.to)]}copy(){return new e(this.from,this.to)}};var{KEY:So}=E,xe=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 O(t,n),this.data=new Array(n-t)}add(t){let[n]=t;if(this.isWithinRange(n)){let r=n-this.range.from,o=this.data[r]!==void 0;return this.data[r]=t,o}else return!1}getAtIndex(t){return this.range.isWithin(t)&&this.data[t-this.range.from]!=null?this.data[t-this.range.from]:void 0}getByKey(t){return this.data.find(n=>n[So]===t)}isWithinRange(t){return this.range.isWithin(t)&&t<=this.rowCount}setRange(t,n){if(t!==this.range.from||n!==this.range.to){let[r,o]=this.range.overlap(t,n),i=new Array(n-t);for(let a=r;a<o;a++){let s=this.getAtIndex(a);if(s){let u=a-t;i[u]=s}}this.data=i,this.range.from=t,this.range.to=n}}hasData(t,n){let r=this.range.from,o=t-r,i=Math.min(n-r-1,this.rowCount-1);return this.data[o]!==void 0&&this.data[i]!==void 0}getData(t,n){var a;let{from:r}=this.range,o=Math.max(0,t-r),i=Math.min(n-r,(a=this.rowCount)!=null?a:n);return this.data.slice(o,i)}};var Ao={horizontal:{positionProp:"left",sizeProp:"width"},vertical:{positionProp:"top",sizeProp:"height"}};var j="up1",Q="up2",q="down1",K="down2",Io=e=>typeof e=="number"&&isFinite(e),ht={},Fo=(e=ht,t=ht)=>{let n=Object.keys(e),r=Object.keys(t);return n.length===r.length&&n.every(o=>e[o]===t[o])};function Lo(e,t,n,r){if(e===void 0||!isFinite(e)||n===void 0||t===void 0)return"";{let o=e-n;return o&&typeof r=="number"&&(o=+e.toFixed(r)-+n.toFixed(r)),o?t===""?o<0?q:j:o>0?t===q||t===K||t===Q?j:Q:t===j||t===Q||t===K?q:K:""}}var gt=e=>e.type==="vuu-links",Po=e=>e.type==="vuu-link-created",Vo=e=>e.type==="vuu-link-removed",yt=e=>e.type==="vuu-menu",ko=e=>yt(e)||gt(e);var Ct={filter:""},Dt={sortDefs:[]},Oo={aggregations:[],columns:[],filter:Ct,groupBy:[],sort:Dt},_o=({aggregations:e},{aggregations:t})=>e===void 0&&(t==null?void 0:t.length)===0||t===void 0&&(e==null?void 0:e.length)===0,Uo=({columns:e},{columns:t})=>e===void 0&&(t==null?void 0:t.length)===0||t===void 0&&(e==null?void 0:e.length)===0,Wo=({filter:e},{filter:t})=>e===void 0&&(t==null?void 0:t.filter)===""||t===void 0&&(e==null?void 0:e.filter)==="",No=({groupBy:e},{groupBy:t})=>e===void 0&&(t==null?void 0:t.length)===0||t===void 0&&(e==null?void 0:e.length)===0,Ho=({sort:e},{sort:t})=>e===void 0&&(t==null?void 0:t.sortDefs.length)===0||t===void 0&&(e==null?void 0:e.sortDefs.length)===0,_=(e,t)=>e===t?!0:e===void 0&&t===void 0,Bo=(e,t)=>{let{aggregations:n}=e,{aggregations:r}=t;return _(n,r)||_o(e,t)?!1:n===void 0||r===void 0||n.length!==r.length?!0:n.some(({column:o,aggType:i},a)=>o!==r[a].column||i!==r[a].aggType)},Go=(e,t)=>{let{columns:n}=e,{columns:r}=t;return _(n,r)||Uo(e,t)?!1:n===void 0||r===void 0||(n==null?void 0:n.length)!==(r==null?void 0:r.length)?!0:n.some((o,i)=>o!==(r==null?void 0:r[i]))},$t=(e,t)=>{var n,r;return Wo(e,t)?!1:((n=e.filter)==null?void 0:n.filter)!==((r=t.filter)==null?void 0:r.filter)},bt=(e,t)=>{let{groupBy:n}=e,{groupBy:r}=t;return _(n,r)||No(e,t)?!1:n===void 0||r===void 0||(n==null?void 0:n.length)!==(r==null?void 0:r.length)?!0:n.some((o,i)=>o!==(r==null?void 0:r[i]))},Yo=(e,t)=>{let{sort:n}=e,{sort:r}=t;return _(n,r)||Ho(e,t)?!1:n===void 0||r===void 0||(n==null?void 0:n.sortDefs.length)!==(r==null?void 0:r.sortDefs.length)?!0:n.sortDefs.some(({column:o,sortType:i},a)=>o!==r.sortDefs[a].column||i!==r.sortDefs[a].sortType)},Jo=()=>!1,Te={aggregationsChanged:!1,columnsChanged:!1,filterChanged:!1,groupByChanged:!1,noChanges:!0,sortChanged:!1,visualLinkChanged:!1},Ee=(e,t)=>{if(_(e,t)||e===void 0&&t==null)return Te;if(e===void 0)return Ee({},t);if(t===void 0)return Ee(e,{});let n=Bo(e,t),r=Go(e,t),o=$t(e,t),i=bt(e,t),a=Yo(e,t),s=Jo(e,t);return{aggregationsChanged:n,columnsChanged:r,filterChanged:o,groupByChanged:i,noChanges:!(n||r||o||i||a||s),sortChanged:a,visualLinkChanged:s}},jo=e=>e!==void 0&&e.groupBy!==void 0&&e.groupBy.length>0,Qo=e=>(e==null?void 0:e.filter)!==void 0&&e.filter.filter.length>0,qo=e=>{var t;return(e==null?void 0:e.sort)!==void 0&&Array.isArray((t=e.sort)==null?void 0:t.sortDefs)&&e.sort.sortDefs.length>0},Ko=e=>typeof e.getTypeaheadSuggestions=="function",Zo=e=>e.type==="TABLE_META_RESP",Xo=e=>e.type==="connection-status",zo=e=>e.type==="connection-metrics",ei=e=>typeof e.result<"u",ti=e=>e!==void 0&&"error"in e,ni=e=>e!=null&&"action"in e,ri=e=>"viewport"in e,oi=e=>{if(e.aggregations&&e.columns&&e.filter&&e.groupBy&&e.sort)return e;{let{aggregations:t=[],columns:n=[],filter:r={filter:""},groupBy:o=[],sort:i={sortDefs:[]},visualLink:a}=e;return{aggregations:t,columns:n,filter:r,groupBy:o,sort:i,visualLink:a}}};function xt(e,t){if(t.has(e))throw new TypeError("Cannot initialize the same private elements twice on an object")}function Me(e,t,n){xt(e,t),t.set(e,n)}function we(e,t){return e-t*Math.floor(e/t)}var vt=1721426;function Z(e,t,n,r){t=Pe(e,t);let o=t-1,i=-2;return n<=2?i=0:z(t)&&(i=-1),vt-1+365*o+Math.floor(o/4)-Math.floor(o/100)+Math.floor(o/400)+Math.floor((367*n-362)/12+i+r)}function z(e){return e%4===0&&(e%100!==0||e%400===0)}function Pe(e,t){return e==="BC"?1-t:t}function ii(e){let t="AD";return e<=0&&(t="BC",e=1-e),[t,e]}var ai={standard:[31,28,31,30,31,30,31,31,30,31,30,31],leapyear:[31,29,31,30,31,30,31,31,30,31,30,31]},F=class{fromJulianDay(t){let n=t,r=n-vt,o=Math.floor(r/146097),i=we(r,146097),a=Math.floor(i/36524),s=we(i,36524),u=Math.floor(s/1461),l=we(s,1461),f=Math.floor(l/365),g=o*400+a*100+u*4+f+(a!==4&&f!==4?1:0),[p,d]=ii(g),y=n-Z(p,d,1,1),D=2;n<Z(p,d,3,1)?D=0:z(d)&&(D=1);let $=Math.floor(((y+D)*12+373)/367),c=n-Z(p,d,$,1)+1;return new U(p,d,$,c)}toJulianDay(t){return Z(t.era,t.year,t.month,t.day)}getDaysInMonth(t){return ai[z(t.year)?"leapyear":"standard"][t.month-1]}getMonthsInYear(t){return 12}getDaysInYear(t){return z(t.year)?366:365}getYearsInEra(t){return 9999}getEras(){return["BC","AD"]}isInverseEra(t){return t.era==="BC"}balanceDate(t){t.year<=0&&(t.era=t.era==="BC"?"AD":"BC",t.year=1-t.year)}constructor(){this.identifier="gregory"}};function St(e,t){return e.calendar.toJulianDay(e)-t.calendar.toJulianDay(t)}function si(e,t){return Tt(e)-Tt(t)}function Tt(e){return e.hour*36e5+e.minute*6e4+e.second*1e3+e.millisecond}var Re=null;function At(){return Re==null&&(Re=new Intl.DateTimeFormat().resolvedOptions().timeZone),Re}function Et(e){e=Ve(e,new F);let t=Pe(e.era,e.year);return It(t,e.month,e.day,e.hour,e.minute,e.second,e.millisecond)}function It(e,t,n,r,o,i,a){let s=new Date;return s.setUTCHours(r,o,i,a),s.setUTCFullYear(e,t-1,n),s.getTime()}function Mt(e,t){if(t==="UTC")return 0;if(e>0&&t===At())return new Date(e).getTimezoneOffset()*-6e4;let{year:n,month:r,day:o,hour:i,minute:a,second:s}=Ft(e,t);return It(n,r,o,i,a,s,0)-Math.floor(e/1e3)*1e3}var wt=new Map;function Ft(e,t){let n=wt.get(t);n||(n=new Intl.DateTimeFormat("en-US",{timeZone:t,hour12:!1,era:"short",year:"numeric",month:"numeric",day:"numeric",hour:"numeric",minute:"numeric",second:"numeric"}),wt.set(t,n));let r=n.formatToParts(new Date(e)),o={};for(let i of r)i.type!=="literal"&&(o[i.type]=i.value);return{year:o.era==="BC"||o.era==="B"?-o.year+1:+o.year,month:+o.month,day:+o.day,hour:o.hour==="24"?0:+o.hour,minute:+o.minute,second:+o.second}}var Rt=864e5;function ui(e,t,n,r){return(n===r?[n]:[n,r]).filter(i=>li(e,t,i))}function li(e,t,n){let r=Ft(n,t);return e.year===r.year&&e.month===r.month&&e.day===r.day&&e.hour===r.hour&&e.minute===r.minute&&e.second===r.second}function ci(e,t,n="compatible"){let r=Pt(e);if(t==="UTC")return Et(r);if(t===At()&&n==="compatible"){r=Ve(r,new F);let u=new Date,l=Pe(r.era,r.year);return u.setFullYear(l,r.month-1,r.day),u.setHours(r.hour,r.minute,r.second,r.millisecond),u.getTime()}let o=Et(r),i=Mt(o-Rt,t),a=Mt(o+Rt,t),s=ui(r,t,o-i,o-a);if(s.length===1)return s[0];if(s.length>1)switch(n){case"compatible":case"earlier":return s[0];case"later":return s[s.length-1];case"reject":throw new RangeError("Multiple possible absolute times found")}switch(n){case"earlier":return Math.min(o-i,o-a);case"compatible":case"later":return Math.max(o-i,o-a);case"reject":throw new RangeError("No such absolute time found")}}function Lt(e,t,n="compatible"){return new Date(ci(e,t,n))}function Pt(e,t){let n=0,r=0,o=0,i=0;if("timeZone"in e)({hour:n,minute:r,second:o,millisecond:i}=e);else if("hour"in e&&!t)return e;return t&&({hour:n,minute:r,second:o,millisecond:i}=t),new Le(e.calendar,e.era,e.year,e.month,e.day,n,r,o,i)}function Ve(e,t){if(e.calendar.identifier===t.identifier)return e;let n=t.fromJulianDay(e.calendar.toJulianDay(e)),r=e.copy();return r.calendar=t,r.era=n.era,r.year=n.year,r.month=n.month,r.day=n.day,L(r),r}function ke(e,t){let n=e.copy(),r="hour"in n?gi(n,t):0;Ie(n,t.years||0),n.calendar.balanceYearMonth&&n.calendar.balanceYearMonth(n,e),n.month+=t.months||0,Fe(n),Vt(n),n.day+=(t.weeks||0)*7,n.day+=t.days||0,n.day+=r,fi(n),n.calendar.balanceDate&&n.calendar.balanceDate(n),n.year<1&&(n.year=1,n.month=1,n.day=1);let o=n.calendar.getYearsInEra(n);if(n.year>o){var i,a;let u=(a=(i=n.calendar).isInverseEra)===null||a===void 0?void 0:a.call(i,n);n.year=o,n.month=u?1:n.calendar.getMonthsInYear(n),n.day=u?1:n.calendar.getDaysInMonth(n)}n.month<1&&(n.month=1,n.day=1);let s=n.calendar.getMonthsInYear(n);return n.month>s&&(n.month=s,n.day=n.calendar.getDaysInMonth(n)),n.day=Math.max(1,Math.min(n.calendar.getDaysInMonth(n),n.day)),n}function Ie(e,t){var n,r;!((r=(n=e.calendar).isInverseEra)===null||r===void 0)&&r.call(n,e)&&(t=-t),e.year+=t}function Fe(e){for(;e.month<1;)Ie(e,-1),e.month+=e.calendar.getMonthsInYear(e);let t=0;for(;e.month>(t=e.calendar.getMonthsInYear(e));)e.month-=t,Ie(e,1)}function fi(e){for(;e.day<1;)e.month--,Fe(e),e.day+=e.calendar.getDaysInMonth(e);for(;e.day>e.calendar.getDaysInMonth(e);)e.day-=e.calendar.getDaysInMonth(e),e.month++,Fe(e)}function Vt(e){e.month=Math.max(1,Math.min(e.calendar.getMonthsInYear(e),e.month)),e.day=Math.max(1,Math.min(e.calendar.getDaysInMonth(e),e.day))}function L(e){e.calendar.constrainDate&&e.calendar.constrainDate(e),e.year=Math.max(1,Math.min(e.calendar.getYearsInEra(e),e.year)),Vt(e)}function mi(e){let t={};for(let n in e)typeof e[n]=="number"&&(t[n]=-e[n]);return t}function kt(e,t){return ke(e,mi(t))}function Ot(e,t){let n=e.copy();return t.era!=null&&(n.era=t.era),t.year!=null&&(n.year=t.year),t.month!=null&&(n.month=t.month),t.day!=null&&(n.day=t.day),L(n),n}function di(e,t){let n=e.copy();return t.hour!=null&&(n.hour=t.hour),t.minute!=null&&(n.minute=t.minute),t.second!=null&&(n.second=t.second),t.millisecond!=null&&(n.millisecond=t.millisecond),hi(n),n}function pi(e){e.second+=Math.floor(e.millisecond/1e3),e.millisecond=X(e.millisecond,1e3),e.minute+=Math.floor(e.second/60),e.second=X(e.second,60),e.hour+=Math.floor(e.minute/60),e.minute=X(e.minute,60);let t=Math.floor(e.hour/24);return e.hour=X(e.hour,24),t}function hi(e){e.millisecond=Math.max(0,Math.min(e.millisecond,1e3)),e.second=Math.max(0,Math.min(e.second,59)),e.minute=Math.max(0,Math.min(e.minute,59)),e.hour=Math.max(0,Math.min(e.hour,23))}function X(e,t){let n=e%t;return n<0&&(n+=t),n}function gi(e,t){return e.hour+=t.hours||0,e.minute+=t.minutes||0,e.second+=t.seconds||0,e.millisecond+=t.milliseconds||0,pi(e)}function _t(e,t,n,r){let o=e.copy();switch(t){case"era":{let s=e.calendar.getEras(),u=s.indexOf(e.era);if(u<0)throw new Error("Invalid era: "+e.era);u=v(u,n,0,s.length-1,r==null?void 0:r.round),o.era=s[u],L(o);break}case"year":var i,a;!((a=(i=o.calendar).isInverseEra)===null||a===void 0)&&a.call(i,o)&&(n=-n),o.year=v(e.year,n,-1/0,9999,r==null?void 0:r.round),o.year===-1/0&&(o.year=1),o.calendar.balanceYearMonth&&o.calendar.balanceYearMonth(o,e);break;case"month":o.month=v(e.month,n,1,e.calendar.getMonthsInYear(e),r==null?void 0:r.round);break;case"day":o.day=v(e.day,n,1,e.calendar.getDaysInMonth(e),r==null?void 0:r.round);break;default:throw new Error("Unsupported field "+t)}return e.calendar.balanceDate&&e.calendar.balanceDate(o),L(o),o}function yi(e,t,n,r){let o=e.copy();switch(t){case"hour":{let i=e.hour,a=0,s=23;if((r==null?void 0:r.hourCycle)===12){let u=i>=12;a=u?12:0,s=u?23:11}o.hour=v(i,n,a,s,r==null?void 0:r.round);break}case"minute":o.minute=v(e.minute,n,0,59,r==null?void 0:r.round);break;case"second":o.second=v(e.second,n,0,59,r==null?void 0:r.round);break;case"millisecond":o.millisecond=v(e.millisecond,n,0,999,r==null?void 0:r.round);break;default:throw new Error("Unsupported field "+t)}return o}function v(e,t,n,r,o=!1){if(o){e+=Math.sign(t),e<n&&(e=r);let i=Math.abs(t);t>0?e=Math.ceil(e/i)*i:e=Math.floor(e/i)*i,e>r&&(e=n)}else e+=t,e<n?e=r-(n-e-1):e>r&&(e=n+(e-r-1));return e}var Ci=["hours","minutes","seconds"],ou=["years","months","weeks","days",...Ci];function Di(e){return`${String(e.hour).padStart(2,"0")}:${String(e.minute).padStart(2,"0")}:${String(e.second).padStart(2,"0")}${e.millisecond?String(e.millisecond/1e3).slice(1):""}`}function Ut(e){let t=Ve(e,new F);return`${String(t.year).padStart(4,"0")}-${String(t.month).padStart(2,"0")}-${String(t.day).padStart(2,"0")}`}function $i(e){return`${Ut(e)}T${Di(e)}`}function Wt(e){let t=typeof e[0]=="object"?e.shift():new F,n;if(typeof e[0]=="string")n=e.shift();else{let a=t.getEras();n=a[a.length-1]}let r=e.shift(),o=e.shift(),i=e.shift();return[t,n,r,o,i]}var bi=new WeakMap,U=class e{copy(){return this.era?new e(this.calendar,this.era,this.year,this.month,this.day):new e(this.calendar,this.year,this.month,this.day)}add(t){return ke(this,t)}subtract(t){return kt(this,t)}set(t){return Ot(this,t)}cycle(t,n,r){return _t(this,t,n,r)}toDate(t){return Lt(this,t)}toString(){return Ut(this)}compare(t){return St(this,t)}constructor(...t){Me(this,bi,{writable:!0,value:void 0});let[n,r,o,i,a]=Wt(t);this.calendar=n,this.era=r,this.year=o,this.month=i,this.day=a,L(this)}};var xi=new WeakMap,Le=class e{copy(){return this.era?new e(this.calendar,this.era,this.year,this.month,this.day,this.hour,this.minute,this.second,this.millisecond):new e(this.calendar,this.year,this.month,this.day,this.hour,this.minute,this.second,this.millisecond)}add(t){return ke(this,t)}subtract(t){return kt(this,t)}set(t){return Ot(di(this,t),t)}cycle(t,n,r){switch(t){case"era":case"year":case"month":case"day":return _t(this,t,n,r);default:return yi(this,t,n,r)}}toDate(t,n){return Lt(this,t,n)}toString(){return $i(this)}compare(t){let n=St(this,t);return n===0?si(this,Pt(t)):n}constructor(...t){Me(this,xi,{writable:!0,value:void 0});let[n,r,o,i,a]=Wt(t);this.calendar=n,this.era=r,this.year=o,this.month=i,this.day=a,this.hour=t.shift()||0,this.minute=t.shift()||0,this.second=t.shift()||0,this.millisecond=t.shift()||0,L(this)}};var Nt=1080,Ti=24*Nt,Ei=29,Mi=12*Nt+793,iu=Ei*Ti+Mi;var ve=new Map,ee=class{format(t){return this.formatter.format(t)}formatToParts(t){return this.formatter.formatToParts(t)}formatRange(t,n){if(typeof this.formatter.formatRange=="function")return this.formatter.formatRange(t,n);if(n<t)throw new RangeError("End date must be >= start date");return`${this.formatter.format(t)} \u2013 ${this.formatter.format(n)}`}formatRangeToParts(t,n){if(typeof this.formatter.formatRangeToParts=="function")return this.formatter.formatRangeToParts(t,n);if(n<t)throw new RangeError("End date must be >= start date");let r=this.formatter.formatToParts(t),o=this.formatter.formatToParts(n);return[...r.map(i=>({...i,source:"startRange"})),{type:"literal",value:" \u2013 ",source:"shared"},...o.map(i=>({...i,source:"endRange"}))]}resolvedOptions(){let t=this.formatter.resolvedOptions();return vi()&&(this.resolvedHourCycle||(this.resolvedHourCycle=Si(t.locale,this.options)),t.hourCycle=this.resolvedHourCycle,t.hour12=this.resolvedHourCycle==="h11"||this.resolvedHourCycle==="h12"),t.calendar==="ethiopic-amete-alem"&&(t.calendar="ethioaa"),t}constructor(t,n={}){this.formatter=Ht(t,n),this.options=n}},wi={true:{ja:"h11"},false:{}};function Ht(e,t={}){if(typeof t.hour12=="boolean"&&Ri()){t={...t};let o=wi[String(t.hour12)][e.split("-")[0]],i=t.hour12?"h12":"h23";t.hourCycle=o!=null?o:i,delete t.hour12}let n=e+(t?Object.entries(t).sort((o,i)=>o[0]<i[0]?-1:1).join():"");if(ve.has(n))return ve.get(n);let r=new Intl.DateTimeFormat(e,t);return ve.set(n,r),r}var Se=null;function Ri(){return Se==null&&(Se=new Intl.DateTimeFormat("en-US",{hour:"numeric",hour12:!1}).format(new Date(2020,2,3,0))==="24"),Se}var Ae=null;function vi(){return Ae==null&&(Ae=new Intl.DateTimeFormat("fr",{hour:"numeric",hour12:!1}).resolvedOptions().hourCycle==="h12"),Ae}function Si(e,t){if(!t.timeStyle&&!t.hour)return;e=e.replace(/(-u-)?-nu-[a-zA-Z0-9]+/,""),e+=(e.includes("-u-")?"":"-u")+"-nu-latn";let n=Ht(e,{...t,timeZone:void 0}),r=parseInt(n.formatToParts(new Date(2020,2,3,0)).find(i=>i.type==="hour").value,10),o=parseInt(n.formatToParts(new Date(2020,2,3,23)).find(i=>i.type==="hour").value,10);if(r===0&&o===23)return"h23";if(r===24&&o===23)return"h24";if(r===0&&o===11)return"h11";if(r===12&&o===11)return"h12";throw new Error("Unexpected hour cycle result")}function Oe(e){return e!=null}var Bt={hour:"2-digit",minute:"2-digit",second:"2-digit"},Ai={"hh:mm:ss":{locale:"en-GB",options:{...Bt,hour12:!1}},"hh:mm:ss a":{locale:"en-GB",options:{...Bt,hour12:!0}}},S={day:"2-digit",month:"2-digit",year:"numeric"},Ii={"dd.mm.yyyy":{locale:"de-De",options:{...S}},"dd/mm/yyyy":{locale:"en-GB",options:{...S}},"dd MMM yyyy":{locale:"en-GB",options:{...S,month:"short"}},"dd MMMM yyyy":{locale:"en-GB",options:{...S,month:"long"}},"mm/dd/yyyy":{locale:"en-US",options:{...S}},"MMM dd, yyyy":{locale:"en-US",options:{...S,month:"short"}},"MMMM dd, yyyy":{locale:"en-US",options:{...S,month:"long"}}};function Fi(e){return[e.date?Ii[e.date]:null,e.time?Ai[e.time]:null]}function _e(e){let t=Fi(e).filter(Oe).map(n=>Gt(n.locale,n.options));return n=>t.map(r=>r.format(n)).join(" ")}function Gt(e,t){return new ee(e,t)}var Yt=["dd.mm.yyyy","dd/mm/yyyy","dd MMM yyyy","dd MMMM yyyy","mm/dd/yyyy","MMM dd, yyyy","MMMM dd, yyyy"],Jt=["hh:mm:ss","hh:mm:ss a"],jt={date:Yt,time:Jt},Li=e=>Yt.includes(e),Pi=e=>Jt.includes(e),te=e=>Li(e==null?void 0:e.date)||Pi(e==null?void 0:e.time);function Qt(e){return new U(e.getFullYear(),e.getMonth()+1,e.getDate())}var Ue={time:"hh:mm:ss",date:"dd.mm.yyyy"},We={date:Ue.date};function ne(e){return T(e)&&e.formatting&&te(e.formatting.pattern)?e.formatting.pattern:We}var Vi=["error","warn","info","debug"],ki=e=>typeof e=="string"&&Vi.includes(e),Oi="error",re=()=>{},_i="error",{loggingLevel:oe=_i}=Ui(),Ne=e=>{let t=oe==="debug",n=t||oe==="info",r=n||oe==="warn",o=r||oe==="error",i=n?l=>console.info(`[${e}] ${l}`):re,a=r?l=>console.warn(`[${e}] ${l}`):re,s=t?l=>console.debug(`[${e}] ${l}`):re;return{errorEnabled:o,error:o?l=>console.error(`[${e}] ${l}`):re}};function Ui(){return typeof loggingSettings<"u"?loggingSettings:{loggingLevel:qt()}}function qt(){let e=$e("vuu-logging-level");return ki(e)?e:Oi}var Wi=()=>`const loggingSettings = { loggingLevel: "${qt()}"};`;var{debug:Ni,debugEnabled:Hi}=Ne("range-monitor"),He=class{constructor(t){this.source=t;this.range={from:0,to:0};this.timestamp=0}isSet(){return this.timestamp!==0}set({from:t,to:n}){let{timestamp:r}=this;if(this.range.from=t,this.range.to=n,this.timestamp=performance.now(),r)Hi&&Ni(`<${this.source}> [${t}-${n}], ${(this.timestamp-r).toFixed(0)} ms elapsed`);else return 0}};var Bi=(e,t,n)=>{let r=document.createElement(e);return t&&(r.className=t),n&&(r.textContent=n),r},Kt=(e,t)=>{if(e){if(e.hasAttribute("tabindex")){let r=parseInt(e.getAttribute("tabindex"));if(!isNaN(r)&&(t===void 0||r===t))return e}let n=typeof t=="number"?e.querySelector(`[tabindex="${t}"]`):e.querySelector("[tabindex]");if(n)return n}},Gi=e=>{if(e){let t=parseInt(e.dataset.index||"");if(!isNaN(t))return t}return-1},Zt=(e,t)=>e===null?null:e.closest(t),Xt=(e,t)=>Zt(e,`[data-${t}]`),Yi=e=>Xt(e,"index");function Ji(e,t,n=!1){if(e===null&&n)throw Error("html-utils getElementByDataIndex, container is null");let r=e==null?void 0:e.querySelector(`[data-index="${t}"]`);if(r)return r;if(n)throw Error("html-utils getElementByDataIndex, Item not found with data-index='${index}'")}var ji=(e,t)=>{requestAnimationFrame(()=>{let n=Kt(e,t);n&&n.focus()})},Qi=e=>{let t=e==null?void 0:e.closest("[data-index]");return!(!t||t.ariaDisabled||t.dataset.selectable==="false"||t.querySelector('[data-selectable="false"],[aria-disabled="true"]'))},Be;function qi(){if(Be===void 0){let e=document.createElement("div");e.className="scrollable-content",e.style.width="50px",e.style.height="50px",e.style.overflowY="scroll",e.style.position="absolute",e.style.top="-200px",e.style.left="-200px";let t=document.createElement("div");t.style.height="100px",t.style.width="100%",e.appendChild(t),document.body.appendChild(e);let n=e.offsetWidth,r=t.offsetWidth;document.body.removeChild(e),Be=n-r,e=null}return Be}var Ki=(e,t)=>{let n=new MouseEvent(t,{view:window,bubbles:!0,cancelable:!0});e.dispatchEvent(n)},Zi=(e,t)=>{let n=new Event(t,{bubbles:!0,cancelable:!0});e.dispatchEvent(n)};function zt(e){return Array.isArray(e)}function Xi(e){return!Array.isArray(e)}var C,Ge=class{constructor(){Ze(this,C,new Map)}addListener(t,n){let r=b(this,C).get(t);r?zt(r)?r.push(n):Xi(r)&&b(this,C).set(t,[r,n]):b(this,C).set(t,n)}removeListener(t,n){if(!b(this,C).has(t))return;let r=b(this,C).get(t),o=-1;if(r===n)b(this,C).delete(t);else if(Array.isArray(r)){for(let i=length;i-- >0;)if(r[i]===n){o=i;break}if(o<0)return;r.length===1?(r.length=0,b(this,C).delete(t)):r.splice(o,1)}}removeAllListeners(t){t&&b(this,C).has(t)?b(this,C).delete(t):t===void 0&&b(this,C).clear()}emit(t,...n){if(b(this,C)){let r=b(this,C).get(t);r&&this.invokeHandler(r,n)}}once(t,n){let r=(...o)=>{this.removeListener(t,r),n(...o)};this.on(t,r)}on(t,n){this.addListener(t,n)}hasListener(t,n){let r=b(this,C).get(t);return Array.isArray(r)?r.includes(n):r===n}invokeHandler(t,n){if(zt(t))t.slice().forEach(r=>this.invokeHandler(r,n));else switch(n.length){case 0:t();break;case 1:t(n[0]);break;case 2:t(n[0],n[1]);break;default:t.call(null,...n)}}};C=new WeakMap;var ie="\u2008",m="\u2007";var en={DIGIT:m,TWO_DIGITS:m+m,THREE_DIGITS:m+m+m,FULL_PADDING:[null,ie+m,ie+m+m,ie+m+m+m,ie+m+m+m+m]},zi={DIGIT:"0",TWO_DIGITS:"00",THREE_DIGITS:"000",FULL_PADDING:[null,"0","00","000","0000"]};function ea(e,t=6){return(ta+e).slice(-t)}var ta=m+m+m+m+m+m+m+m+m,Ye={Right:"right",Center:"center",Left:"left"};function tn(e,t,n){let r=e.length,o=t-r;if(o>0)o===1?e=e+n.DIGIT:o===2?e=e+n.TWO_DIGITS:o===3&&(e=e+n.THREE_DIGITS);else if(o<0&&(e=e.slice(0,t),r=t),n===en&&e.charAt(r-1)==="0")return e=e.replace(/0+$/,""),tn(e,t,n);return e}function Je(e,t=Ye.Right,n=4,r,o){if(e===void 0||typeof e!="number"||isNaN(e))return"";let i,a,s,[u,l=""]=e.toString().split("."),f=l.length;return i=parseFloat(u).toLocaleString(),t===Ye.Left&&o&&(i=ea(i)),n===-1||f===n?a=l:f>n?a=parseFloat("0."+l).toFixed(n).slice(2):(s=r?zi:o&&t!==Ye.Left?en:null)?f===0?a=s.FULL_PADDING[n]:a=tn(l,n,s):a=l,i+(a?"."+a:"")}var na={},je=e=>e==null?"":typeof e=="string"?e:e.toString(),ra=e=>{let t=ne(e.type),n=_e(t);return r=>typeof r=="number"&&r!==0?n(new Date(r)):""},nn=({align:e="right",type:t})=>{var n;if(t===void 0||typeof t=="string")return je;{let{alignOnDecimals:r=!1,decimals:o,zeroPad:i=!1}=(n=t.formatting)!=null?n:na;return a=>{if(typeof a=="string"&&(a.startsWith("\u03A3")||a.startsWith("[")))return a;let s=typeof a=="number"?a:typeof a=="string"?parseFloat(a):void 0;return Je(s,e,o,i,r)}}},oa=e=>t=>{var n;return(n=e[t])!=null?n:""},ia=(e,t=e.serverDataType)=>{if(V(e))return ra(e);let{type:n}=e;return T(n)&&ge(n==null?void 0:n.renderer)?oa(n.renderer.map):t==="string"||t==="char"?r=>r:t==="double"?nn(e):je};var aa=()=>`hw-${Math.round(Math.random()*1e5)}`;function sa(e,t){return e?e.concat(t.name):[t.name]}var ua=e=>e.length===1,la=e=>e.key==='"'||e.key==="'";function ca(e,t){if(!e){let n=new Error(t);throw n.name="Invariant Violation",n.framesToPop=1,n}}var fa=e=>Object.prototype.toString.call(e)==="[object Object]";function ma(e){return typeof e=="string"?e:fa(e)?Object.prototype.hasOwnProperty.call(e,"label")?String(e.label):(console.warn(["itemToString: you've likely forgotten to set the label prop on the item object.","You can also provide your own `itemToString` implementation."].join(`
2
- `)),""):String(e)}var{COUNT:da}=E,rn=e=>typeof e=="object"&&e!==null,pa=["boolean","number","string"],ha=e=>pa.includes(typeof e),ga=e=>typeof e=="boolean"?"boolean":typeof e=="number"?"number":"string",ya=(e,t)=>{if(rn(t))return{attribute:`${e}+`,attributeValue:"",type:"json"};if(t===void 0)return{attribute:e,attributeValue:"undefined",type:"string"};if(ha(t))return{attribute:e,attributeValue:t,type:ga(t)};throw Error(`unsupported type ${typeof t} in JSON`)},Qe={name:"json",renderer:{name:"json"}},Ca=e=>{let t=[];t.push({name:"col 1",type:Qe},{name:"col 2",type:Qe});let n=[];return on(n,e,t),[t,n]},on=(e,t,n,r={value:0},o="$root",i=0)=>{let a=0,s=0;i===n.length-1&&n.push({name:`col ${n.length+1}`,hidden:!0,type:Qe});let u=Object.entries(t);for(let l=0;l<u.length;l++,r.value+=1){let[f,g]=u[l],{attribute:p,attributeValue:d,type:y}=ya(f,g),D=y!=="json",$=Array(i).fill(""),c=`${o}|${f}`,h=[r.value,r.value,D,!1,i,0,c,0,...$,p,d];if(e.push(h),s+=1,rn(g)){let[w,R]=on(e,g,n,{value:r.value+1},c,i+1);h[da]=w,a+=w,s+=R,r.value+=R}else a+=1}return[a,s]};var Da="ArrowUp",$a="ArrowDown",ba="ArrowLeft",xa="ArrowRight",Ta="Enter",Ea="Escape",Ma="Home",wa="End",Ra="PageUp",va="PageDown",Sa=" ",Aa="Tab";var Ia=[],qe=class{constructor(t){this.keys=new Map;this.nextKeyValue=0;this.range=t,this.init(t)}next(t=Ia){return t.length>0?t.shift():this.nextKeyValue++}init({from:t,to:n}){this.keys.clear(),this.nextKeyValue=0;for(let r=t;r<n;r++){let o=this.next();this.keys.set(r,o)}return!0}reset(t){let{from:n,to:r}=t,o=r-n,i=this.range.to-this.range.from;if(this.range=t,i>o)return this.init(t);let a=[];this.keys.forEach((s,u)=>{(u<n||u>=r)&&(a.push(s),this.keys.delete(u))});for(let s=n;s<r;s++)if(!this.keys.has(s)){let u=this.next(a);this.keys.set(s,u)}return!1}keyFor(t){let n=this.keys.get(t);if(n===void 0)throw console.log(`key not found
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var __accessCheck = (obj, member, msg) => {
20
+ if (!member.has(obj))
21
+ throw TypeError("Cannot " + msg);
22
+ };
23
+ var __privateGet = (obj, member, getter) => {
24
+ __accessCheck(obj, member, "read from private field");
25
+ return getter ? getter.call(obj) : member.get(obj);
26
+ };
27
+ var __privateAdd = (obj, member, value) => {
28
+ if (member.has(obj))
29
+ throw TypeError("Cannot add the same private member more than once");
30
+ member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
31
+ };
32
+
33
+ // src/index.ts
34
+ var src_exports = {};
35
+ __export(src_exports, {
36
+ AggregationType: () => AggregationType,
37
+ ArrowDown: () => ArrowDown,
38
+ ArrowLeft: () => ArrowLeft,
39
+ ArrowRight: () => ArrowRight,
40
+ ArrowUp: () => ArrowUp,
41
+ DEFAULT_DENSITY: () => DEFAULT_DENSITY,
42
+ DEFAULT_THEME: () => DEFAULT_THEME,
43
+ DEFAULT_THEME_MODE: () => DEFAULT_THEME_MODE,
44
+ DOWN1: () => DOWN1,
45
+ DOWN2: () => DOWN2,
46
+ DataWindow: () => DataWindow,
47
+ End: () => End,
48
+ Enter: () => Enter,
49
+ Escape: () => Escape,
50
+ EventEmitter: () => EventEmitter,
51
+ Home: () => Home,
52
+ KeySet: () => KeySet,
53
+ MEASURES: () => MEASURES,
54
+ NO_CONFIG_CHANGES: () => NO_CONFIG_CHANGES,
55
+ NULL_RANGE: () => NULL_RANGE,
56
+ NoFilter: () => NoFilter,
57
+ NoSort: () => NoSort,
58
+ PageDown: () => PageDown,
59
+ PageUp: () => PageUp,
60
+ RangeMonitor: () => RangeMonitor,
61
+ RowSelected: () => RowSelected,
62
+ Space: () => Space2,
63
+ Tab: () => Tab,
64
+ ThemeContext: () => ThemeContext,
65
+ ThemeProvider: () => ThemeProvider,
66
+ UP1: () => UP1,
67
+ UP2: () => UP2,
68
+ WindowRange: () => WindowRange,
69
+ actualRowPositioning: () => actualRowPositioning,
70
+ addColumnToSubscribedColumns: () => addColumnToSubscribedColumns,
71
+ addGroupColumn: () => addGroupColumn,
72
+ addSortColumn: () => addSortColumn,
73
+ applyDefaultColumnConfig: () => applyDefaultColumnConfig,
74
+ applyFilterToColumns: () => applyFilterToColumns,
75
+ applyGroupByToColumns: () => applyGroupByToColumns,
76
+ applySortToColumns: () => applySortToColumns,
77
+ applyWidthToColumns: () => applyWidthToColumns,
78
+ asDataSourceRowObject: () => asDataSourceRowObject,
79
+ asReactElements: () => asReactElements,
80
+ assertModuleExportsAtLeastOneComponent: () => assertModuleExportsAtLeastOneComponent,
81
+ boxContainsPoint: () => boxContainsPoint,
82
+ buildColumnMap: () => buildColumnMap,
83
+ createEl: () => createEl,
84
+ dataAndColumnUnchanged: () => dataAndColumnUnchanged,
85
+ dataColumnAndKeyUnchanged: () => dataColumnAndKeyUnchanged,
86
+ dateTimePattern: () => dateTimePattern,
87
+ debounce: () => debounce,
88
+ defaultPatternsByType: () => defaultPatternsByType,
89
+ defaultValueFormatter: () => defaultValueFormatter,
90
+ deselectItem: () => deselectItem,
91
+ dispatchCustomEvent: () => dispatchCustomEvent,
92
+ dispatchMouseEvent: () => dispatchMouseEvent,
93
+ existingSort: () => existingSort,
94
+ expandSelection: () => expandSelection,
95
+ extractFilterForColumn: () => extractFilterForColumn,
96
+ extractGroupColumn: () => extractGroupColumn,
97
+ fallbackDateTimePattern: () => fallbackDateTimePattern,
98
+ filterAsQuery: () => filterAsQuery,
99
+ findColumn: () => findColumn,
100
+ flattenColumnGroup: () => flattenColumnGroup,
101
+ focusFirstFocusableElement: () => focusFirstFocusableElement,
102
+ formatDate: () => formatDate,
103
+ fromServerDataType: () => fromServerDataType,
104
+ getAddedItems: () => getAddedItems,
105
+ getAllLocalEntity: () => getAllLocalEntity,
106
+ getCalculatedColumnDetails: () => getCalculatedColumnDetails,
107
+ getCalculatedColumnExpression: () => getCalculatedColumnExpression,
108
+ getCalculatedColumnName: () => getCalculatedColumnName,
109
+ getCalculatedColumnType: () => getCalculatedColumnType,
110
+ getCellConfigPanelRenderer: () => getCellConfigPanelRenderer,
111
+ getCellRenderer: () => getCellRenderer,
112
+ getCellRendererOptions: () => getCellRendererOptions,
113
+ getClosest: () => getClosest,
114
+ getClosestIndexItem: () => getClosestIndexItem,
115
+ getColumnByName: () => getColumnByName,
116
+ getColumnHeaderContentRenderer: () => getColumnHeaderContentRenderer,
117
+ getColumnHeaderLabelRenderer: () => getColumnHeaderLabelRenderer,
118
+ getColumnLabel: () => getColumnLabel,
119
+ getColumnName: () => getColumnName,
120
+ getColumnStyle: () => getColumnStyle,
121
+ getColumnsInViewport: () => getColumnsInViewport,
122
+ getConfigurationEditor: () => getConfigurationEditor,
123
+ getCookieValue: () => getCookieValue,
124
+ getDateFormatter: () => getDateFormatter,
125
+ getDefaultAlignment: () => getDefaultAlignment,
126
+ getDefaultColumnType: () => getDefaultColumnType,
127
+ getEditRuleValidator: () => getEditRuleValidator,
128
+ getElementByDataIndex: () => getElementByDataIndex,
129
+ getElementDataIndex: () => getElementDataIndex,
130
+ getFocusableElement: () => getFocusableElement,
131
+ getFullRange: () => getFullRange,
132
+ getGroupValueAndOffset: () => getGroupValueAndOffset,
133
+ getIndexFromRowElement: () => getIndexFromRowElement,
134
+ getLocalEntity: () => getLocalEntity,
135
+ getLoggingConfigForWorker: () => getLoggingConfigForWorker,
136
+ getMissingItems: () => getMissingItems,
137
+ getMovingValueDirection: () => getMovingValueDirection,
138
+ getRegisteredCellRenderers: () => getRegisteredCellRenderers,
139
+ getRowClassNameGenerator: () => getRowClassNameGenerator,
140
+ getRowElementAtIndex: () => getRowElementAtIndex,
141
+ getRowRecord: () => getRowRecord,
142
+ getScrollbarSize: () => getScrollbarSize,
143
+ getSelectionStatus: () => getSelectionStatus,
144
+ getTableHeadings: () => getTableHeadings,
145
+ getTypeFormattingFromColumn: () => getTypeFormattingFromColumn,
146
+ getUniqueId: () => getUniqueId,
147
+ getUrlParameter: () => getUrlParameter,
148
+ getValueFormatter: () => getValueFormatter,
149
+ hasAction: () => hasAction,
150
+ hasFilter: () => hasFilter,
151
+ hasGroupBy: () => hasGroupBy,
152
+ hasHeadings: () => hasHeadings,
153
+ hasSort: () => hasSort,
154
+ hasUrlParameter: () => hasUrlParameter,
155
+ hasValidationRules: () => hasValidationRules,
156
+ invariant: () => invariant,
157
+ isAndFilter: () => isAndFilter,
158
+ isCalculatedColumn: () => isCalculatedColumn,
159
+ isCharacterKey: () => isCharacterKey,
160
+ isColumnTypeRenderer: () => isColumnTypeRenderer,
161
+ isCompleteFilter: () => isCompleteFilter,
162
+ isConfigChanged: () => isConfigChanged,
163
+ isConnectionQualityMetrics: () => isConnectionQualityMetrics,
164
+ isConnectionStatusMessage: () => isConnectionStatusMessage,
165
+ isDataLoading: () => isDataLoading,
166
+ isDateTimeColumn: () => isDateTimeColumn,
167
+ isDateTimePattern: () => isDateTimePattern,
168
+ isErrorResponse: () => isErrorResponse,
169
+ isFilterChanged: () => isFilterChanged,
170
+ isFilterClause: () => isFilterClause,
171
+ isFilteredColumn: () => isFilteredColumn,
172
+ isGroupByChanged: () => isGroupByChanged,
173
+ isGroupColumn: () => isGroupColumn,
174
+ isGroupMenuItemDescriptor: () => isGroupMenuItemDescriptor,
175
+ isInFilter: () => isInFilter,
176
+ isJsonAttribute: () => isJsonAttribute,
177
+ isJsonColumn: () => isJsonColumn,
178
+ isJsonGroup: () => isJsonGroup,
179
+ isLookupRenderer: () => isLookupRenderer,
180
+ isMappedValueTypeRenderer: () => isMappedValueTypeRenderer,
181
+ isModule: () => isModule,
182
+ isMultiClauseFilter: () => isMultiClauseFilter,
183
+ isMultiValueFilter: () => isMultiValueFilter,
184
+ isNamedFilter: () => isNamedFilter,
185
+ isNotHidden: () => isNotHidden,
186
+ isNotNullOrUndefined: () => isNotNullOrUndefined,
187
+ isNumericColumn: () => isNumericColumn,
188
+ isOrFilter: () => isOrFilter,
189
+ isPinned: () => isPinned,
190
+ isQuoteKey: () => isQuoteKey,
191
+ isResizing: () => isResizing,
192
+ isRowSelected: () => isRowSelected,
193
+ isRowSelectedLast: () => isRowSelectedLast,
194
+ isSelectableElement: () => isSelectableElement,
195
+ isSelected: () => isSelected,
196
+ isSingleValueFilter: () => isSingleValueFilter,
197
+ isTableSchema: () => isTableSchema,
198
+ isTextColumn: () => isTextColumn,
199
+ isTypeDescriptor: () => isTypeDescriptor,
200
+ isTypeaheadSuggestionProvider: () => isTypeaheadSuggestionProvider,
201
+ isValidColumnAlignment: () => isValidColumnAlignment,
202
+ isValidFilterClauseOp: () => isValidFilterClauseOp,
203
+ isValidNumber: () => isValidNumber,
204
+ isValidPinLocation: () => isValidPinLocation,
205
+ isValueListRenderer: () => isValueListRenderer,
206
+ isViewportMenusAction: () => isViewportMenusAction,
207
+ isViewporttMessage: () => isViewporttMessage,
208
+ isVisualLinkCreatedAction: () => isVisualLinkCreatedAction,
209
+ isVisualLinkRemovedAction: () => isVisualLinkRemovedAction,
210
+ isVisualLinksAction: () => isVisualLinksAction,
211
+ isVuuColumnDataType: () => isVuuColumnDataType,
212
+ isVuuFeatureAction: () => isVuuFeatureAction,
213
+ itemToString: () => itemToString,
214
+ itemsChanged: () => itemsChanged,
215
+ itemsOrOrderChanged: () => itemsOrOrderChanged,
216
+ jsonToDataSourceRows: () => jsonToDataSourceRows,
217
+ lastWord: () => lastWord,
218
+ logger: () => logger,
219
+ mapSortCriteria: () => mapSortCriteria,
220
+ measurePinnedColumns: () => measurePinnedColumns,
221
+ messageHasResult: () => messageHasResult,
222
+ metadataKeys: () => metadataKeys,
223
+ moveColumnTo: () => moveColumnTo,
224
+ moveItem: () => moveItem,
225
+ moveItemDeprecated: () => moveItemDeprecated,
226
+ numericFormatter: () => numericFormatter,
227
+ partition: () => partition,
228
+ projectUpdates: () => projectUpdates,
229
+ queryClosest: () => queryClosest,
230
+ rangeNewItems: () => rangeNewItems,
231
+ rangesAreSame: () => rangesAreSame,
232
+ registerComponent: () => registerComponent,
233
+ registerConfigurationEditor: () => registerConfigurationEditor,
234
+ removeColumnFromFilter: () => removeColumnFromFilter,
235
+ removeSort: () => removeSort,
236
+ replaceColumn: () => replaceColumn,
237
+ resetRange: () => resetRange,
238
+ roundDecimal: () => roundDecimal,
239
+ saveLocalEntity: () => saveLocalEntity,
240
+ selectItem: () => selectItem,
241
+ setAggregations: () => setAggregations,
242
+ setCalculatedColumnExpression: () => setCalculatedColumnExpression,
243
+ setCalculatedColumnName: () => setCalculatedColumnName,
244
+ setCalculatedColumnType: () => setCalculatedColumnType,
245
+ setSortColumn: () => setSortColumn,
246
+ shallowEquals: () => shallowEquals,
247
+ sortPinnedColumns: () => sortPinnedColumns,
248
+ stripFilterFromColumns: () => stripFilterFromColumns,
249
+ subscribedOnly: () => subscribedOnly,
250
+ supportedDateTimePatterns: () => supportedDateTimePatterns,
251
+ throttle: () => throttle,
252
+ toCalendarDate: () => toCalendarDate,
253
+ toColumnDescriptor: () => toColumnDescriptor,
254
+ toDataSourceColumns: () => toDataSourceColumns,
255
+ toggleOrApplySort: () => toggleOrApplySort,
256
+ updateColumn: () => updateColumn,
257
+ updateColumnFormatting: () => updateColumnFormatting,
258
+ updateColumnRenderProps: () => updateColumnRenderProps,
259
+ updateColumnType: () => updateColumnType,
260
+ useId: () => useId,
261
+ useLayoutEffectSkipFirst: () => useLayoutEffectSkipFirst,
262
+ useThemeAttributes: () => useThemeAttributes,
263
+ uuid: () => uuid,
264
+ vanillaConfig: () => vanillaConfig,
265
+ virtualRowPositioning: () => virtualRowPositioning,
266
+ visibleColumnAtIndex: () => visibleColumnAtIndex,
267
+ withConfigDefaults: () => withConfigDefaults,
268
+ withinRange: () => withinRange,
269
+ wordify: () => wordify
270
+ });
271
+ module.exports = __toCommonJS(src_exports);
272
+
273
+ // src/array-utils.ts
274
+ function partition(array, test, pass = [], fail = []) {
275
+ for (let i = 0, len = array.length; i < len; i++) {
276
+ (test(array[i], i) ? pass : fail).push(array[i]);
277
+ }
278
+ return [pass, fail];
279
+ }
280
+ function itemsChanged(currentItems, newItems, identityProperty) {
281
+ if (currentItems.length !== newItems.length) {
282
+ return true;
283
+ }
284
+ if (identityProperty === void 0) {
285
+ return !currentItems.every((item) => newItems.includes(item));
286
+ } else {
287
+ return currentItems.some(
288
+ (currentItem) => newItems.findIndex(
289
+ (newItem) => newItem[identityProperty] === currentItem[identityProperty]
290
+ ) === -1
291
+ );
292
+ }
293
+ }
294
+ function itemsOrOrderChanged(currentItems, newItems, identityProperty) {
295
+ if (currentItems.length !== newItems.length) {
296
+ return true;
297
+ }
298
+ if (identityProperty === void 0) {
299
+ return currentItems.some((item, index) => newItems[index] !== item);
300
+ } else {
301
+ return currentItems.some(
302
+ (currentItem, index) => newItems[index][identityProperty] !== currentItem[identityProperty]
303
+ );
304
+ }
305
+ }
306
+ var moveItemDeprecated = (items, item, moveTo) => {
307
+ const fromIndex = items.indexOf(item);
308
+ if (fromIndex === moveTo) {
309
+ return items;
310
+ }
311
+ const newItems = items.slice();
312
+ if (fromIndex === -1) {
313
+ throw Error("moveItem, item to be moved not found");
314
+ }
315
+ newItems.splice(fromIndex, 1);
316
+ if (moveTo === -1) {
317
+ newItems.push(item);
318
+ } else {
319
+ const offset = moveTo > fromIndex ? 0 : 0;
320
+ newItems.splice(moveTo + offset, 0, item);
321
+ }
322
+ return newItems;
323
+ };
324
+ var moveItem = (items, fromIndex, toIndex) => {
325
+ if (fromIndex === toIndex) {
326
+ return items;
327
+ } else {
328
+ const newItems = items.slice();
329
+ const [item] = newItems.splice(fromIndex, 1);
330
+ if (toIndex === -1) {
331
+ return newItems.concat(item);
332
+ } else {
333
+ const offset = toIndex > fromIndex ? 0 : 0;
334
+ newItems.splice(toIndex + offset, 0, item);
335
+ return newItems;
336
+ }
337
+ }
338
+ };
339
+ var getAddedItems = (values, newValues) => {
340
+ const isNew = (v) => !(values == null ? void 0 : values.includes(v));
341
+ if (values === void 0) {
342
+ return newValues;
343
+ } else if (newValues.some(isNew)) {
344
+ return newValues.filter(isNew);
345
+ } else {
346
+ return [];
347
+ }
348
+ };
349
+ var getMissingItems = (sourceItems, items, identity) => items.filter((i) => sourceItems.findIndex((s) => identity(s) === i) === -1);
350
+
351
+ // src/box-utils.ts
352
+ function boxContainsPoint(rect, x, y) {
353
+ if (rect) {
354
+ return x >= rect.left && x < rect.right && y >= rect.top && y < rect.bottom;
355
+ }
356
+ }
357
+
358
+ // src/filters/filterAsQuery.ts
359
+ var filterValue = (value) => typeof value === "string" ? `"${value}"` : value;
360
+ var quotedStrings = (value) => typeof value === "string" ? `"${value}"` : value;
361
+ var removeOuterMostParentheses = (s) => s.replace(/^\((.*)\)$/, "$1");
362
+ var filterAsQuery = (f, opts) => {
363
+ return removeOuterMostParentheses(filterAsQueryCore(f, opts));
364
+ };
365
+ var filterAsQueryCore = (f, opts) => {
366
+ if (isMultiClauseFilter(f)) {
367
+ const multiClauseFilter = f.filters.map((filter) => filterAsQueryCore(filter, opts)).join(` ${f.op} `);
368
+ return `(${multiClauseFilter})`;
369
+ } else if (isMultiValueFilter(f)) {
370
+ return `${f.column} ${f.op} [${f.values.map(quotedStrings).join(",")}]`;
371
+ } else {
372
+ return singleValueFilterAsQuery(f, opts);
373
+ }
374
+ };
375
+ function singleValueFilterAsQuery(f, opts) {
376
+ var _a;
377
+ const column = (_a = opts == null ? void 0 : opts.columnsByName) == null ? void 0 : _a[f.column];
378
+ if (column && isDateTimeColumn(column)) {
379
+ return dateFilterAsQuery(f);
380
+ } else {
381
+ return defaultSingleValueFilterAsQuery(f);
382
+ }
383
+ }
384
+ var ONE_DAY_IN_MILIS = 1e3 * 60 * 60 * 24;
385
+ function dateFilterAsQuery(f) {
386
+ switch (f.op) {
387
+ case "=": {
388
+ const filters = [
389
+ { op: ">=", column: f.column, value: f.value },
390
+ {
391
+ op: "<",
392
+ column: f.column,
393
+ value: f.value + ONE_DAY_IN_MILIS
394
+ }
395
+ ];
396
+ return filterAsQueryCore({ op: "and", filters });
397
+ }
398
+ case "!=": {
399
+ const filters = [
400
+ { op: "<", column: f.column, value: f.value },
401
+ {
402
+ op: ">=",
403
+ column: f.column,
404
+ value: f.value + ONE_DAY_IN_MILIS
405
+ }
406
+ ];
407
+ return filterAsQueryCore({ op: "or", filters });
408
+ }
409
+ default:
410
+ return defaultSingleValueFilterAsQuery(f);
411
+ }
412
+ }
413
+ var defaultSingleValueFilterAsQuery = (f) => `${f.column} ${f.op} ${filterValue(f.value)}`;
414
+
415
+ // src/filters/utils.ts
416
+ var singleValueFilterOps = /* @__PURE__ */ new Set([
417
+ "=",
418
+ "!=",
419
+ ">",
420
+ ">=",
421
+ "<",
422
+ "<=",
423
+ "starts",
424
+ "ends"
425
+ ]);
426
+ var isValidFilterClauseOp = (op) => op === "in" || singleValueFilterOps.has(op);
427
+ var isNamedFilter = (f) => f !== void 0 && f.name !== void 0;
428
+ var isSingleValueFilter = (f) => f !== void 0 && singleValueFilterOps.has(f.op);
429
+ var isFilterClause = (f) => f !== void 0 && (isSingleValueFilter(f) || isMultiValueFilter(f));
430
+ var isMultiValueFilter = (f) => f !== void 0 && f.op === "in";
431
+ var isInFilter = (f) => f.op === "in";
432
+ var isAndFilter = (f) => f.op === "and";
433
+ var isOrFilter = (f) => f.op === "or";
434
+ var isCompleteFilter = (filter) => isSingleValueFilter(filter) && filter.column !== void 0 && filter.op !== void 0 && filter.value !== void 0;
435
+ function isMultiClauseFilter(f) {
436
+ return f !== void 0 && (f.op === "and" || f.op === "or");
437
+ }
438
+ var removeColumnFromFilter = (column, filter) => {
439
+ if (isMultiClauseFilter(filter)) {
440
+ const [clause1, clause2] = filter.filters;
441
+ if (clause1.column === column.name) {
442
+ return [clause2, filterAsQuery(clause2)];
443
+ }
444
+ if (clause2.column === column.name) {
445
+ return [clause1, filterAsQuery(clause1)];
446
+ }
447
+ }
448
+ return [void 0, ""];
449
+ };
450
+
451
+ // src/column-utils.ts
452
+ var SORT_ASC = "asc";
453
+ var NO_HEADINGS = [];
454
+ var DEFAULT_COL_WIDTH = 100;
455
+ var DEFAULT_MAX_WIDTH = 250;
456
+ var DEFAULT_MIN_WIDTH = 50;
457
+ var AggregationType = {
458
+ Average: 2,
459
+ Count: 3,
460
+ Distinct: 6,
461
+ Sum: 1,
462
+ High: 4,
463
+ Low: 5
464
+ };
465
+ function mapSortCriteria(sortCriteria, columnMap, metadataOffset = 0) {
466
+ return sortCriteria.map((s) => {
467
+ if (typeof s === "string") {
468
+ return [columnMap[s] + metadataOffset, "asc"];
469
+ } else if (Array.isArray(s)) {
470
+ const [columnName, sortDir] = s;
471
+ return [columnMap[columnName] + metadataOffset, sortDir || SORT_ASC];
472
+ } else {
473
+ throw Error("columnUtils.mapSortCriteria invalid input");
474
+ }
475
+ });
476
+ }
477
+ var numericTypes = ["int", "long", "double"];
478
+ var getDefaultAlignment = (serverDataType) => serverDataType === void 0 ? "left" : numericTypes.includes(serverDataType) ? "right" : "left";
479
+ var isValidColumnAlignment = (v) => v === "left" || v === "right";
480
+ var isValidPinLocation = (v) => isValidColumnAlignment(v) || v === "floating" || v === "";
481
+ var VUU_COLUMN_DATA_TYPES = [
482
+ "long",
483
+ "double",
484
+ "int",
485
+ "string",
486
+ "char",
487
+ "boolean"
488
+ ];
489
+ var isVuuColumnDataType = (value) => VUU_COLUMN_DATA_TYPES.includes(value);
490
+ var fromServerDataType = (serverDataType) => {
491
+ switch (serverDataType) {
492
+ case "double":
493
+ case "int":
494
+ case "long":
495
+ return "number";
496
+ case "boolean":
497
+ return "boolean";
498
+ default:
499
+ return "string";
500
+ }
501
+ };
502
+ var isNumericColumn = ({ serverDataType, type }) => {
503
+ if (serverDataType === "int" || serverDataType === "long" || serverDataType === "double") {
504
+ return true;
505
+ }
506
+ if (typeof type === "string") {
507
+ return type === "number";
508
+ }
509
+ if (typeof (type == null ? void 0 : type.name) === "string") {
510
+ return (type == null ? void 0 : type.name) === "number";
511
+ }
512
+ return false;
513
+ };
514
+ var isDateTimeColumn = (column) => (isTypeDescriptor(column.type) ? column.type.name : column.type) === "date/time";
515
+ var isPinned = (column) => typeof column.pin === "string";
516
+ var hasHeadings = (column) => Array.isArray(column.heading) && column.heading.length > 0;
517
+ var isResizing = (column) => column.resizing;
518
+ var isTextColumn = ({ serverDataType }) => serverDataType === void 0 ? false : serverDataType === "char" || serverDataType === "string";
519
+ var toColumnDescriptor = (name) => ({
520
+ name
521
+ });
522
+ var isTypeDescriptor = (type) => typeof type !== "undefined" && typeof type !== "string";
523
+ var EMPTY_COLUMN_MAP = {};
524
+ var isColumnTypeRenderer = (renderer) => typeof (renderer == null ? void 0 : renderer.name) !== "undefined";
525
+ var isLookupRenderer = (renderer) => typeof (renderer == null ? void 0 : renderer.name) !== "undefined" && "lookup" in renderer;
526
+ var isValueListRenderer = (renderer) => typeof (renderer == null ? void 0 : renderer.name) !== "undefined" && Array.isArray(renderer.values);
527
+ var hasValidationRules = (type) => isTypeDescriptor(type) && isColumnTypeRenderer(type.renderer) && Array.isArray(type.renderer.rules) && type.renderer.rules.length > 0;
528
+ var isMappedValueTypeRenderer = (renderer) => renderer !== void 0 && typeof (renderer == null ? void 0 : renderer.map) !== "undefined";
529
+ function buildColumnMap(columns) {
530
+ const start = metadataKeys.count;
531
+ if (columns) {
532
+ return columns.reduce((map, column, i) => {
533
+ if (typeof column === "string") {
534
+ map[column] = start + i;
535
+ } else {
536
+ map[column.name] = start + i;
537
+ }
538
+ return map;
539
+ }, {});
540
+ } else {
541
+ return EMPTY_COLUMN_MAP;
542
+ }
543
+ }
544
+ function projectUpdates(updates) {
545
+ const results = [];
546
+ const metadataOffset = metadataKeys.count - 2;
547
+ for (let i = 0; i < updates.length; i += 3) {
548
+ results[i] = updates[i] + metadataOffset;
549
+ results[i + 1] = updates[i + 1];
550
+ results[i + 2] = updates[i + 2];
551
+ }
552
+ return results;
553
+ }
554
+ var KEY = 6;
555
+ var metadataKeys = {
556
+ IDX: 0,
557
+ RENDER_IDX: 1,
558
+ IS_LEAF: 2,
559
+ IS_EXPANDED: 3,
560
+ DEPTH: 4,
561
+ COUNT: 5,
562
+ KEY,
563
+ SELECTED: 7,
564
+ count: 8,
565
+ // TODO following only used in datamodel
566
+ PARENT_IDX: "parent_idx",
567
+ IDX_POINTER: "idx_pointer",
568
+ FILTER_COUNT: "filter_count",
569
+ NEXT_FILTER_IDX: "next_filter_idx"
570
+ };
571
+ var insertColumn = (columns, column) => {
572
+ const { originalIdx } = column;
573
+ if (typeof originalIdx === "number") {
574
+ for (let i = 0; i < columns.length; i++) {
575
+ const { originalIdx: colIdx = -1 } = columns[i];
576
+ if (colIdx > originalIdx) {
577
+ columns.splice(i, 0, column);
578
+ return columns;
579
+ }
580
+ }
581
+ }
582
+ columns.push(column);
583
+ return columns;
584
+ };
585
+ var flattenColumnGroup = (columns) => {
586
+ var _a;
587
+ if ((_a = columns[0]) == null ? void 0 : _a.isGroup) {
588
+ const [groupColumn, ...nonGroupedColumns] = columns;
589
+ groupColumn.columns.forEach((groupColumn2) => {
590
+ insertColumn(nonGroupedColumns, groupColumn2);
591
+ });
592
+ return nonGroupedColumns;
593
+ } else {
594
+ return columns;
595
+ }
596
+ };
597
+ function extractGroupColumn(columns, groupBy, confirmed = true) {
598
+ if (groupBy && groupBy.length > 0) {
599
+ const flattenedColumns = flattenColumnGroup(columns);
600
+ const [groupedColumns, rest] = flattenedColumns.reduce(
601
+ (result, column, i) => {
602
+ const [g, r2] = result;
603
+ if (groupBy.includes(column.name)) {
604
+ g.push({
605
+ ...column,
606
+ originalIdx: i
607
+ });
608
+ } else {
609
+ r2.push(column);
610
+ }
611
+ return result;
612
+ },
613
+ [[], []]
614
+ );
615
+ if (groupedColumns.length !== groupBy.length) {
616
+ throw Error(
617
+ `extractGroupColumn: no column definition found for all groupBy cols ${JSON.stringify(
618
+ groupBy
619
+ )} `
620
+ );
621
+ }
622
+ const groupCount = groupBy.length;
623
+ const groupCols = groupBy.map((name, idx) => {
624
+ const column = groupedColumns.find(
625
+ (col) => col.name === name
626
+ );
627
+ return {
628
+ ...column,
629
+ groupLevel: groupCount - idx
630
+ };
631
+ });
632
+ const groupCol = {
633
+ name: "group-col",
634
+ heading: ["group-col"],
635
+ isGroup: true,
636
+ columns: groupCols,
637
+ groupConfirmed: confirmed,
638
+ width: groupCols.map((c) => c.width).reduce((a, b) => a + b) + 100
639
+ };
640
+ return [groupCol, rest];
641
+ }
642
+ return [null, flattenColumnGroup(columns)];
643
+ }
644
+ var isGroupColumn = (column) => column.isGroup === true;
645
+ var isJsonAttribute = (value) => typeof value === "string" && value.endsWith("+");
646
+ var isJsonGroup = (column, row, columnMap) => {
647
+ var _a;
648
+ return ((_a = column.type) == null ? void 0 : _a.name) === "json" && isJsonAttribute(row[columnMap[column.name]]);
649
+ };
650
+ var isJsonColumn = (column) => {
651
+ var _a;
652
+ return ((_a = column.type) == null ? void 0 : _a.name) === "json";
653
+ };
654
+ var sortPinnedColumns = (columns) => {
655
+ const leftPinnedColumns = [];
656
+ const rightPinnedColumns = [];
657
+ const restColumns = [];
658
+ let pinnedWidthLeft = 4;
659
+ for (const column of columns) {
660
+ switch (column.pin) {
661
+ case "left":
662
+ {
663
+ leftPinnedColumns.push({
664
+ ...column,
665
+ endPin: void 0,
666
+ pinnedOffset: pinnedWidthLeft
667
+ });
668
+ pinnedWidthLeft += column.width;
669
+ }
670
+ break;
671
+ case "right":
672
+ rightPinnedColumns.unshift(column);
673
+ break;
674
+ default:
675
+ restColumns.push(column);
676
+ }
677
+ }
678
+ if (leftPinnedColumns.length) {
679
+ leftPinnedColumns.push({
680
+ ...leftPinnedColumns.pop(),
681
+ endPin: true
682
+ });
683
+ }
684
+ const allColumns = leftPinnedColumns.length ? leftPinnedColumns.concat(restColumns) : restColumns;
685
+ if (rightPinnedColumns.length) {
686
+ const measuredRightPinnedColumns = [];
687
+ let pinnedWidthRight = 0;
688
+ for (const column of rightPinnedColumns) {
689
+ measuredRightPinnedColumns.unshift({
690
+ ...column,
691
+ pinnedOffset: pinnedWidthRight
692
+ });
693
+ pinnedWidthRight += column.width;
694
+ }
695
+ measuredRightPinnedColumns[0].endPin = true;
696
+ return allColumns.concat(measuredRightPinnedColumns);
697
+ } else {
698
+ return allColumns;
699
+ }
700
+ };
701
+ var measurePinnedColumns = (columns, selectionEndSize) => {
702
+ let pinnedWidthLeft = 0;
703
+ let pinnedWidthRight = 0;
704
+ let unpinnedWidth = 0;
705
+ for (const column of columns) {
706
+ const { hidden, pin, width } = column;
707
+ const visibleWidth = hidden ? 0 : width;
708
+ if (pin === "left") {
709
+ pinnedWidthLeft += visibleWidth;
710
+ } else if (pin === "right") {
711
+ pinnedWidthRight += visibleWidth;
712
+ } else {
713
+ unpinnedWidth += visibleWidth;
714
+ }
715
+ }
716
+ return {
717
+ pinnedWidthLeft: pinnedWidthLeft + selectionEndSize,
718
+ pinnedWidthRight: pinnedWidthRight + selectionEndSize,
719
+ unpinnedWidth
720
+ };
721
+ };
722
+ var getTableHeadings = (columns) => {
723
+ if (columns.some(hasHeadings)) {
724
+ const maxHeadingDepth = columns.reduce(
725
+ (max, { heading: heading2 }) => {
726
+ var _a;
727
+ return Math.max(max, (_a = heading2 == null ? void 0 : heading2.length) != null ? _a : 0);
728
+ },
729
+ 0
730
+ );
731
+ let heading = void 0;
732
+ const tableHeadings = [];
733
+ let tableHeadingsRow;
734
+ for (let level = 0; level < maxHeadingDepth; level++) {
735
+ tableHeadingsRow = [];
736
+ columns.forEach(({ heading: columnHeading = NO_HEADINGS, width }) => {
737
+ var _a;
738
+ const label = (_a = columnHeading[level]) != null ? _a : "";
739
+ if (heading && heading.label === label) {
740
+ heading.width += width;
741
+ } else {
742
+ heading = { label, width };
743
+ tableHeadingsRow.push(heading);
744
+ }
745
+ });
746
+ tableHeadings.push(tableHeadingsRow);
747
+ }
748
+ return tableHeadings;
749
+ }
750
+ return NO_HEADINGS;
751
+ };
752
+ var getColumnStyle = ({
753
+ pin,
754
+ // the 4 is `selectionEndSize`, unfortunate if we need to be passed it from cell
755
+ // need to think about how to make this available
756
+ pinnedOffset = pin === "left" ? 0 : 4,
757
+ width
758
+ }) => pin === "left" ? {
759
+ left: pinnedOffset,
760
+ width,
761
+ "--pin-width": `${pinnedOffset + width - 3}px`
762
+ } : pin === "right" ? {
763
+ right: pinnedOffset,
764
+ width,
765
+ "--pin-width": `${pinnedOffset + width}px`
766
+ } : { width };
767
+ var setAggregations = (aggregations, column, aggType) => {
768
+ return aggregations.filter((agg) => agg.column !== column.name).concat({ column: column.name, aggType });
769
+ };
770
+ var extractFilterForColumn = (filter, columnName) => {
771
+ if (isMultiClauseFilter(filter)) {
772
+ return collectFiltersForColumn(filter, columnName);
773
+ }
774
+ if (isFilterClause(filter)) {
775
+ return filter.column === columnName ? filter : void 0;
776
+ }
777
+ return void 0;
778
+ };
779
+ var collectFiltersForColumn = (filter, columnName) => {
780
+ const { filters, op } = filter;
781
+ const results = [];
782
+ filters.forEach((filter2) => {
783
+ const ffc = extractFilterForColumn(filter2, columnName);
784
+ if (ffc) {
785
+ results.push(ffc);
786
+ }
787
+ });
788
+ if (results.length === 0) {
789
+ return void 0;
790
+ } else if (results.length === 1) {
791
+ return results[0];
792
+ }
793
+ return {
794
+ op,
795
+ filters: results
796
+ };
797
+ };
798
+ var applyGroupByToColumns = (columns, groupBy, confirmed = true) => {
799
+ var _a;
800
+ if (groupBy.length) {
801
+ const [groupColumn, nonGroupedColumns] = extractGroupColumn(
802
+ columns,
803
+ groupBy,
804
+ confirmed
805
+ );
806
+ if (groupColumn) {
807
+ return [groupColumn].concat(nonGroupedColumns);
808
+ }
809
+ } else if ((_a = columns[0]) == null ? void 0 : _a.isGroup) {
810
+ return flattenColumnGroup(columns);
811
+ }
812
+ return columns;
813
+ };
814
+ var applySortToColumns = (columns, sort) => columns.map((column) => {
815
+ const sorted = getSortType(column, sort);
816
+ if (sorted !== void 0) {
817
+ return {
818
+ ...column,
819
+ sorted
820
+ };
821
+ } else if (column.sorted) {
822
+ return {
823
+ ...column,
824
+ sorted: void 0
825
+ };
826
+ } else {
827
+ return column;
828
+ }
829
+ });
830
+ var removeSort = (columns) => columns.map((col) => col.sorted ? { ...col, sorted: void 0 } : col);
831
+ var existingSort = (columns) => columns.some((col) => col.sorted);
832
+ var applyFilterToColumns = (columns, { filterStruct }) => columns.map((column) => {
833
+ const filter = extractFilterForColumn(filterStruct, column.name);
834
+ if (filter !== void 0) {
835
+ return {
836
+ ...column,
837
+ filter
838
+ };
839
+ } else if (column.filter) {
840
+ return {
841
+ ...column,
842
+ filter: void 0
843
+ };
844
+ } else {
845
+ return column;
846
+ }
847
+ });
848
+ var isFilteredColumn = (column) => column.filter !== void 0;
849
+ var stripFilterFromColumns = (columns) => columns.map((col) => {
850
+ const { filter, ...rest } = col;
851
+ return filter ? rest : col;
852
+ });
853
+ var getSortType = (column, { sortDefs }) => {
854
+ const sortDef = sortDefs.find((sortCol) => sortCol.column === column.name);
855
+ if (sortDef) {
856
+ return sortDefs.length > 1 ? (sortDefs.indexOf(sortDef) + 1) * (sortDef.sortType === "A" ? 1 : -1) : sortDef.sortType;
857
+ }
858
+ };
859
+ var getColumnName = (name) => {
860
+ const pos = name.indexOf(":");
861
+ if (pos === -1) {
862
+ return name;
863
+ } else {
864
+ return name.slice(0, pos);
865
+ }
866
+ };
867
+ var getColumnLabel = (column) => {
868
+ if (column.label) {
869
+ return column.label;
870
+ } else if (isCalculatedColumn(column.name)) {
871
+ return getCalculatedColumnName(column);
872
+ } else {
873
+ return column.name;
874
+ }
875
+ };
876
+ var findColumn = (columns, columnName) => {
877
+ const column = columns.find((col) => col.name === columnName);
878
+ if (column) {
879
+ return column;
880
+ } else {
881
+ const groupColumn = columns.find(
882
+ (col) => col.isGroup
883
+ );
884
+ if (groupColumn) {
885
+ return findColumn(groupColumn.columns, columnName);
886
+ }
887
+ }
888
+ };
889
+ function updateColumn(columns, column, options) {
890
+ const targetColumn = typeof column === "string" ? columns.find((col) => col.name === column) : column;
891
+ if (targetColumn) {
892
+ const replacementColumn = options ? { ...targetColumn, ...options } : targetColumn;
893
+ return columns.map(
894
+ (col) => col.name === replacementColumn.name ? replacementColumn : col
895
+ );
896
+ } else {
897
+ throw Error("column-utils.replaceColun, column not found");
898
+ }
899
+ }
900
+ var toDataSourceColumns = (column) => column.name;
901
+ var getRowRecord = (row, columnMap) => {
902
+ return Object.entries(columnMap).reduce(
903
+ (map, [colName, key]) => {
904
+ map[colName] = row[key];
905
+ return map;
906
+ },
907
+ {}
908
+ );
909
+ };
910
+ var isDataLoading = (columns) => {
911
+ return isGroupColumn(columns[0]) && columns[0].groupConfirmed === false;
912
+ };
913
+ var getColumnsInViewport = (columns, vpStart, vpEnd) => {
914
+ var _a;
915
+ const visibleColumns = [];
916
+ let preSpan = 0;
917
+ let rightPinnedOnly = false;
918
+ for (let columnOffset = 0, i = 0; i < columns.length; i++) {
919
+ const column = columns[i];
920
+ if (column.hidden) {
921
+ continue;
922
+ } else if (rightPinnedOnly) {
923
+ if (column.pin === "right") {
924
+ visibleColumns.push(column);
925
+ }
926
+ } else if (columnOffset + column.width < vpStart) {
927
+ if (column.pin === "left") {
928
+ visibleColumns.push(column);
929
+ } else if (columnOffset + column.width + ((_a = columns[i + 1]) == null ? void 0 : _a.width) > vpStart) {
930
+ visibleColumns.push(column);
931
+ } else {
932
+ preSpan += column.width;
933
+ }
934
+ } else if (columnOffset > vpEnd) {
935
+ rightPinnedOnly = true;
936
+ } else {
937
+ visibleColumns.push(column);
938
+ }
939
+ columnOffset += column.width;
940
+ }
941
+ return [visibleColumns, preSpan];
942
+ };
943
+ var isNotHidden = (column) => column.hidden !== true;
944
+ var visibleColumnAtIndex = (columns, index) => {
945
+ if (columns.every(isNotHidden)) {
946
+ return columns[index];
947
+ } else {
948
+ return columns.filter(isNotHidden).at(index);
949
+ }
950
+ };
951
+ var { DEPTH, IS_LEAF } = metadataKeys;
952
+ var getGroupValueAndOffset = (columns, row, columnMap) => {
953
+ const { [DEPTH]: depth, [IS_LEAF]: isLeaf } = row;
954
+ if (isLeaf || depth > columns.length) {
955
+ return [null, depth === null ? 0 : Math.max(0, depth - 1)];
956
+ } else if (depth === 0) {
957
+ return ["$root", 0];
958
+ } else {
959
+ const { name, valueFormatter } = columns[depth - 1];
960
+ const value = valueFormatter(row[columnMap[name]]);
961
+ return [value, depth - 1];
962
+ }
963
+ };
964
+ var getDefaultColumnType = (serverDataType) => {
965
+ switch (serverDataType) {
966
+ case "int":
967
+ case "long":
968
+ case "double":
969
+ return "number";
970
+ case "boolean":
971
+ return "boolean";
972
+ default:
973
+ return "string";
974
+ }
975
+ };
976
+ var updateColumnFormatting = (column, formatting) => {
977
+ const { serverDataType, type = getDefaultColumnType(serverDataType) } = column;
978
+ if (isTypeDescriptor(type)) {
979
+ return { ...column, type: { ...type, formatting } };
980
+ } else {
981
+ return { ...column, type: { name: type, formatting } };
982
+ }
983
+ };
984
+ function updateColumnType(column, type) {
985
+ return isTypeDescriptor(column.type) ? { ...column, type: { ...column.type, name: type } } : { ...column, type };
986
+ }
987
+ var updateColumnRenderProps = (column, renderer) => {
988
+ const { serverDataType, type = getDefaultColumnType(serverDataType) } = column;
989
+ if (isTypeDescriptor(type)) {
990
+ return {
991
+ ...column,
992
+ type: {
993
+ ...type,
994
+ // TODO do we need to preserve any existing attributes from renderer ?
995
+ renderer
996
+ }
997
+ };
998
+ } else {
999
+ return { ...column, type: { name: type, renderer } };
1000
+ }
1001
+ };
1002
+ var NO_TYPE_SETTINGS = {};
1003
+ var getTypeFormattingFromColumn = (column) => {
1004
+ var _a;
1005
+ if (isTypeDescriptor(column.type)) {
1006
+ return (_a = column.type.formatting) != null ? _a : NO_TYPE_SETTINGS;
1007
+ } else {
1008
+ return NO_TYPE_SETTINGS;
1009
+ }
1010
+ };
1011
+ var subscribedOnly = (columnNames) => (column) => columnNames == null ? void 0 : columnNames.includes(column.name);
1012
+ var addColumnToSubscribedColumns = (subscribedColumns, availableColumns, columnName) => {
1013
+ const byColName = (n = columnName) => (column) => column.name === n;
1014
+ if (subscribedColumns.findIndex(byColName()) !== -1) {
1015
+ throw Error(
1016
+ `column-utils, addColumnToSubscribedColumns column ${columnName} is already subscribed`
1017
+ );
1018
+ }
1019
+ const indexOfAvailableColumn = availableColumns.findIndex(byColName());
1020
+ if (indexOfAvailableColumn === -1) {
1021
+ throw Error(
1022
+ `column-utils, addColumnToSubscribedColumns column ${columnName} is not available`
1023
+ );
1024
+ }
1025
+ const newColumn = {
1026
+ ...availableColumns[indexOfAvailableColumn]
1027
+ };
1028
+ let index = -1;
1029
+ for (let i = indexOfAvailableColumn - 1; i >= 0; i--) {
1030
+ const { name } = availableColumns[i];
1031
+ index = subscribedColumns.findIndex(byColName(name));
1032
+ if (index !== -1) {
1033
+ break;
1034
+ }
1035
+ }
1036
+ if (index === -1) {
1037
+ return [newColumn].concat(subscribedColumns);
1038
+ } else {
1039
+ const results = [];
1040
+ for (let i = 0; i < subscribedColumns.length; i++) {
1041
+ results.push(subscribedColumns[i]);
1042
+ if (i === index) {
1043
+ results.push(newColumn);
1044
+ index = Number.MAX_SAFE_INTEGER;
1045
+ }
1046
+ }
1047
+ return results;
1048
+ }
1049
+ };
1050
+ var CalculatedColumnPattern = /.*:.*:.*/;
1051
+ var isCalculatedColumn = (columnName) => columnName !== void 0 && CalculatedColumnPattern.test(columnName);
1052
+ var getCalculatedColumnDetails = (column) => {
1053
+ if (isCalculatedColumn(column.name)) {
1054
+ return column.name.split(/:=?/);
1055
+ } else {
1056
+ throw Error(
1057
+ `column-utils, getCalculatedColumnDetails column name ${column.name} is not valid calculated column`
1058
+ );
1059
+ }
1060
+ };
1061
+ var getCalculatedColumnName = (column) => getCalculatedColumnDetails(column)[0];
1062
+ var getCalculatedColumnType = (column) => getCalculatedColumnDetails(column)[1];
1063
+ var getCalculatedColumnExpression = (column) => getCalculatedColumnDetails(column)[2];
1064
+ var setCalculatedColumnName = (column, name) => {
1065
+ const [, type, expression] = column.name.split(":");
1066
+ return {
1067
+ ...column,
1068
+ name: `${name}:${type}:${expression}`
1069
+ };
1070
+ };
1071
+ var setCalculatedColumnType = (column, type) => {
1072
+ const [name, , expression] = column.name.split(":");
1073
+ return {
1074
+ ...column,
1075
+ name: `${name}:${type}:${expression}`
1076
+ };
1077
+ };
1078
+ var setCalculatedColumnExpression = (column, expression) => {
1079
+ const [name, type] = column.name.split(":");
1080
+ return {
1081
+ ...column,
1082
+ name: `${name}:${type}:=${expression}`
1083
+ };
1084
+ };
1085
+ var moveColumnTo = (columns, column, newIndex) => {
1086
+ const index = columns.findIndex((col) => col.name === column.name);
1087
+ return moveItem(columns, index, newIndex);
1088
+ };
1089
+ function replaceColumn(columns, column) {
1090
+ return columns.map((col) => col.name === column.name ? column : col);
1091
+ }
1092
+ var applyDefaultColumnConfig = ({ columns, table }, getDefaultColumnConfig) => {
1093
+ if (typeof getDefaultColumnConfig === "function") {
1094
+ return columns.map((column) => {
1095
+ const config = getDefaultColumnConfig(table.table, column.name);
1096
+ if (config) {
1097
+ return {
1098
+ ...column,
1099
+ ...config
1100
+ };
1101
+ } else {
1102
+ return column;
1103
+ }
1104
+ });
1105
+ } else {
1106
+ return columns;
1107
+ }
1108
+ };
1109
+ var getColumnByName = (schema, name) => {
1110
+ if (name === void 0) {
1111
+ return void 0;
1112
+ } else {
1113
+ const column = schema.columns.find((col) => col.name === name);
1114
+ if (column) {
1115
+ return column;
1116
+ } else {
1117
+ throw Error(
1118
+ `getColumnByName no column '${name}' in schema for ${schema.table.table}`
1119
+ );
1120
+ }
1121
+ }
1122
+ };
1123
+ function applyWidthToColumns(columns, options) {
1124
+ const {
1125
+ availableWidth = 0,
1126
+ columnLayout = "Static",
1127
+ defaultWidth = DEFAULT_COL_WIDTH,
1128
+ defaultMinWidth = DEFAULT_MIN_WIDTH,
1129
+ defaultMaxWidth = DEFAULT_MAX_WIDTH
1130
+ // defaultFlex = DEFAULT_FLEX,
1131
+ } = options;
1132
+ if (columnLayout === "Static") {
1133
+ return columns.map((column) => {
1134
+ if (typeof column.width === "number") {
1135
+ return column;
1136
+ } else {
1137
+ return {
1138
+ ...column,
1139
+ width: defaultWidth
1140
+ };
1141
+ }
1142
+ });
1143
+ } else if (columnLayout === "Fit") {
1144
+ const { totalMinWidth, totalMaxWidth, totalWidth, flexCount } = columns.reduce(
1145
+ (aggregated, column) => {
1146
+ const { totalMinWidth: totalMinWidth2, totalMaxWidth: totalMaxWidth2, totalWidth: totalWidth2, flexCount: flexCount2 } = aggregated;
1147
+ const {
1148
+ minWidth = defaultMinWidth,
1149
+ maxWidth = defaultMaxWidth,
1150
+ width = defaultWidth,
1151
+ flex = 0
1152
+ } = column;
1153
+ return {
1154
+ totalMinWidth: totalMinWidth2 + minWidth,
1155
+ totalMaxWidth: totalMaxWidth2 + maxWidth,
1156
+ totalWidth: totalWidth2 + width,
1157
+ flexCount: flexCount2 + flex
1158
+ };
1159
+ },
1160
+ { totalMinWidth: 0, totalMaxWidth: 0, totalWidth: 0, flexCount: 0 }
1161
+ );
1162
+ if (totalMinWidth > availableWidth || totalMaxWidth < availableWidth) {
1163
+ return columns;
1164
+ } else if (totalWidth > availableWidth) {
1165
+ const excessWidth = totalWidth - availableWidth;
1166
+ const inFlexMode = flexCount > 0;
1167
+ let excessWidthPerColumn = excessWidth / (flexCount || columns.length);
1168
+ let columnsNotYetAtMinWidth = columns.length;
1169
+ let unassignedExcess = 0;
1170
+ let newColumns = columns.map((column) => {
1171
+ const {
1172
+ minWidth = defaultMinWidth,
1173
+ width = defaultWidth,
1174
+ flex = 0
1175
+ } = column;
1176
+ if (inFlexMode && flex === 0) {
1177
+ return column;
1178
+ }
1179
+ const adjustedWidth = width - excessWidthPerColumn;
1180
+ if (adjustedWidth < minWidth) {
1181
+ columnsNotYetAtMinWidth -= 1;
1182
+ unassignedExcess += minWidth - adjustedWidth;
1183
+ return { ...column, width: minWidth };
1184
+ } else {
1185
+ return { ...column, width: adjustedWidth };
1186
+ }
1187
+ });
1188
+ if (unassignedExcess === 0) {
1189
+ return newColumns;
1190
+ } else {
1191
+ excessWidthPerColumn = unassignedExcess / columnsNotYetAtMinWidth;
1192
+ newColumns = newColumns.map((column) => {
1193
+ const adjustedWidth = column.width - excessWidthPerColumn;
1194
+ if (column.width !== column.minWidth) {
1195
+ return { ...column, width: adjustedWidth };
1196
+ } else {
1197
+ return column;
1198
+ }
1199
+ });
1200
+ return newColumns;
1201
+ }
1202
+ } else if (totalWidth < availableWidth) {
1203
+ {
1204
+ const additionalWidth = availableWidth - totalWidth;
1205
+ const inFlexMode = flexCount > 0;
1206
+ let additionalWidthPerColumn = additionalWidth / (flexCount || columns.length);
1207
+ let newColumns = columns.map((column) => {
1208
+ const {
1209
+ maxWidth = defaultMaxWidth,
1210
+ width = defaultWidth,
1211
+ flex = 0
1212
+ } = column;
1213
+ if (inFlexMode && flex === 0) {
1214
+ return column;
1215
+ }
1216
+ const adjustedWidth = width + additionalWidthPerColumn;
1217
+ if (adjustedWidth > maxWidth) {
1218
+ return { ...column, width: maxWidth };
1219
+ } else {
1220
+ return { ...column, width: adjustedWidth, canStretch: true };
1221
+ }
1222
+ });
1223
+ const unassignedAdditionalColumnWidth = additionalWidth - newColumns.reduce((sum, col) => sum + col.width, 0);
1224
+ const columnsNotYetAtMaxWidth = newColumns.filter(
1225
+ (col) => col.canStretch
1226
+ ).length;
1227
+ if (unassignedAdditionalColumnWidth > columnsNotYetAtMaxWidth) {
1228
+ additionalWidthPerColumn = unassignedAdditionalColumnWidth / columnsNotYetAtMaxWidth;
1229
+ newColumns = newColumns.map((column) => {
1230
+ if (column.canStretch) {
1231
+ const adjustedWidth = Math.min(
1232
+ column.width + additionalWidthPerColumn
1233
+ );
1234
+ return { ...column, width: adjustedWidth };
1235
+ } else {
1236
+ return column;
1237
+ }
1238
+ });
1239
+ }
1240
+ return newColumns.map(({ canStretch, ...column }) => column);
1241
+ }
1242
+ }
1243
+ }
1244
+ return columns;
1245
+ }
1246
+ var dataAndColumnUnchanged = (p, p1) => p.column === p1.column && p.column.valueFormatter(p.row[p.columnMap[p.column.name]]) === p1.column.valueFormatter(p1.row[p1.columnMap[p1.column.name]]);
1247
+ var dataColumnAndKeyUnchanged = (p, p1) => p.column === p1.column && p.row[KEY] === p1.row[KEY] && p.column.valueFormatter(p.row[p.columnMap[p.column.name]]) === p1.column.valueFormatter(p1.row[p1.columnMap[p1.column.name]]);
1248
+
1249
+ // src/cookie-utils.ts
1250
+ var getCookieValue = (name) => {
1251
+ var _a, _b;
1252
+ if (((_a = globalThis.document) == null ? void 0 : _a.cookie) !== void 0) {
1253
+ return (_b = globalThis.document.cookie.split("; ").find((row) => row.startsWith(`${name}=`))) == null ? void 0 : _b.split("=")[1];
1254
+ }
1255
+ };
1256
+
1257
+ // src/component-registry.ts
1258
+ var cellRenderersMap = /* @__PURE__ */ new Map();
1259
+ var columnHeaderRenderersMap = /* @__PURE__ */ new Map();
1260
+ var configEditorsMap = /* @__PURE__ */ new Map();
1261
+ var cellConfigPanelsMap = /* @__PURE__ */ new Map();
1262
+ var editRuleValidatorsMap = /* @__PURE__ */ new Map();
1263
+ var optionsMap = /* @__PURE__ */ new Map();
1264
+ var rowClassGeneratorsMap = /* @__PURE__ */ new Map();
1265
+ var isTypeCompatible = (rendererType, serverDataType) => {
1266
+ if (rendererType === void 0 || rendererType === "private") {
1267
+ return true;
1268
+ } else if (Array.isArray(rendererType)) {
1269
+ return rendererType.includes(serverDataType);
1270
+ } else {
1271
+ return rendererType === serverDataType;
1272
+ }
1273
+ };
1274
+ var isCellRenderer = (type, component) => component !== void 0 && type === "cell-renderer";
1275
+ var isColumnHeaderContentRenderer = (type, component) => type === "column-header-content-renderer";
1276
+ var isColumnHeaderLabelRenderer = (type, component) => type === "column-header-label-renderer";
1277
+ var isCellConfigPanel = (type, component) => type === "cell-config-panel";
1278
+ var isEditRuleValidator = (type, component) => type === "data-edit-validator";
1279
+ var isRowClassGenerator = (type, component) => type === "row-class-generator";
1280
+ function registerComponent(componentName, component, type = "cell-renderer", options) {
1281
+ if (isCellRenderer(type, component)) {
1282
+ cellRenderersMap.set(componentName, component);
1283
+ } else if (isColumnHeaderContentRenderer(type, component)) {
1284
+ columnHeaderRenderersMap.set(componentName, component);
1285
+ } else if (isColumnHeaderLabelRenderer(type, component)) {
1286
+ columnHeaderRenderersMap.set(componentName, component);
1287
+ } else if (isCellConfigPanel(type, component)) {
1288
+ cellConfigPanelsMap.set(componentName, component);
1289
+ } else if (isEditRuleValidator(type, component)) {
1290
+ editRuleValidatorsMap.set(componentName, component);
1291
+ } else if (isRowClassGenerator(type, component)) {
1292
+ console.log(`register ${componentName}`);
1293
+ rowClassGeneratorsMap.set(componentName, component);
1294
+ }
1295
+ if (options) {
1296
+ optionsMap.set(componentName, options);
1297
+ }
1298
+ }
1299
+ var registerConfigurationEditor = (componentName, configurationEditor) => {
1300
+ configEditorsMap.set(componentName, configurationEditor);
1301
+ };
1302
+ var getRegisteredCellRenderers = (serverDataType) => {
1303
+ const rendererNames = Array.from(cellRenderersMap.keys());
1304
+ const allRenderers = rendererNames.map((name) => ({
1305
+ name,
1306
+ ...optionsMap.get(name)
1307
+ })).filter(({ userCanAssign }) => userCanAssign !== false);
1308
+ if (serverDataType) {
1309
+ return allRenderers.filter(
1310
+ (renderer) => isTypeCompatible(renderer.serverDataType, serverDataType)
1311
+ );
1312
+ } else {
1313
+ return allRenderers;
1314
+ }
1315
+ };
1316
+ var getCellRendererOptions = (renderName) => optionsMap.get(renderName);
1317
+ function getCellRenderer(column) {
1318
+ return dataCellRenderer(column);
1319
+ }
1320
+ function getColumnHeaderContentRenderer(column) {
1321
+ if (column.colHeaderContentRenderer) {
1322
+ return columnHeaderRenderersMap.get(column.colHeaderContentRenderer);
1323
+ }
1324
+ }
1325
+ function getColumnHeaderLabelRenderer(column) {
1326
+ if (column.colHeaderLabelRenderer) {
1327
+ return columnHeaderRenderersMap.get(column.colHeaderLabelRenderer);
1328
+ }
1329
+ }
1330
+ var getRowClassNameGenerator = (generatorId) => rowClassGeneratorsMap.get(generatorId);
1331
+ function dataCellRenderer(column) {
1332
+ if (isTypeDescriptor(column.type)) {
1333
+ const { renderer } = column.type;
1334
+ if (isColumnTypeRenderer(renderer)) {
1335
+ return cellRenderersMap.get(renderer.name);
1336
+ }
1337
+ } else if (column.serverDataType === "boolean") {
1338
+ return cellRenderersMap.get("checkbox-cell");
1339
+ } else if (column.editable) {
1340
+ return cellRenderersMap.get("input-cell");
1341
+ }
1342
+ }
1343
+ function getConfigurationEditor(configEditor = "") {
1344
+ return configEditorsMap.get(configEditor);
1345
+ }
1346
+ function getCellConfigPanelRenderer(name) {
1347
+ return cellConfigPanelsMap.get(name);
1348
+ }
1349
+ function getEditRuleValidator(name) {
1350
+ return editRuleValidatorsMap.get(name);
1351
+ }
1352
+
1353
+ // src/range-utils.ts
1354
+ var NULL_RANGE = { from: 0, to: 0 };
1355
+ var rangesAreSame = (r1, r2) => {
1356
+ return (r1 == null ? void 0 : r1.from) === (r2 == null ? void 0 : r2.from) && (r1 == null ? void 0 : r1.to) === (r2 == null ? void 0 : r2.to);
1357
+ };
1358
+ function getFullRange({ from, to }, bufferSize = 0, totalRowCount = Number.MAX_SAFE_INTEGER) {
1359
+ if (from === 0 && to === 0) {
1360
+ return { from, to };
1361
+ } else if (bufferSize === 0) {
1362
+ if (totalRowCount < from) {
1363
+ return { from: 0, to: 0 };
1364
+ } else {
1365
+ return { from, to: Math.min(to, totalRowCount) };
1366
+ }
1367
+ } else if (from === 0) {
1368
+ return { from, to: Math.min(to + bufferSize, totalRowCount) };
1369
+ } else {
1370
+ const shortfallBefore = from - bufferSize < 0;
1371
+ const shortfallAfter = totalRowCount - (to + bufferSize) < 0;
1372
+ if (shortfallBefore && shortfallAfter) {
1373
+ return { from: 0, to: totalRowCount };
1374
+ } else if (shortfallBefore) {
1375
+ return { from: 0, to: to + bufferSize };
1376
+ } else if (shortfallAfter) {
1377
+ return {
1378
+ from: Math.max(0, from - bufferSize),
1379
+ to: totalRowCount
1380
+ };
1381
+ } else {
1382
+ return { from: from - bufferSize, to: to + bufferSize };
1383
+ }
1384
+ }
1385
+ }
1386
+ function resetRange({ from, to, bufferSize = 0 }) {
1387
+ return {
1388
+ from: 0,
1389
+ to: to - from,
1390
+ bufferSize,
1391
+ reset: true
1392
+ };
1393
+ }
1394
+ var withinRange = (value, { from, to }) => value >= from && value < to;
1395
+ var rangeNewItems = ({ from: from1, to: to1 }, newRange) => {
1396
+ const { from: from2, to: to2 } = newRange;
1397
+ const noOverlap = from2 >= to1 || to2 <= from1;
1398
+ const newFullySubsumesOld = from2 < from1 && to2 > to1;
1399
+ return noOverlap || newFullySubsumesOld ? newRange : to2 > to1 ? { from: to1, to: to2 } : { from: from2, to: from1 };
1400
+ };
1401
+ var WindowRange = class _WindowRange {
1402
+ constructor(from, to) {
1403
+ this.from = from;
1404
+ this.to = to;
1405
+ }
1406
+ isWithin(index) {
1407
+ return withinRange(index, this);
1408
+ }
1409
+ //find the overlap of this range and a new one
1410
+ overlap(from, to) {
1411
+ return from >= this.to || to < this.from ? [0, 0] : [Math.max(from, this.from), Math.min(to, this.to)];
1412
+ }
1413
+ copy() {
1414
+ return new _WindowRange(this.from, this.to);
1415
+ }
1416
+ };
1417
+
1418
+ // src/DataWindow.ts
1419
+ var { KEY: KEY2 } = metadataKeys;
1420
+ var DataWindow = class {
1421
+ constructor({ from, to }) {
1422
+ this.rowCount = 0;
1423
+ this.setRowCount = (rowCount) => {
1424
+ if (rowCount < this.data.length) {
1425
+ this.data.length = rowCount;
1426
+ }
1427
+ this.rowCount = rowCount;
1428
+ };
1429
+ this.range = new WindowRange(from, to);
1430
+ this.data = new Array(to - from);
1431
+ }
1432
+ // return true if existing row was updated
1433
+ add(data) {
1434
+ const [index] = data;
1435
+ if (this.isWithinRange(index)) {
1436
+ const internalIndex = index - this.range.from;
1437
+ const isUpdate = this.data[internalIndex] !== void 0;
1438
+ this.data[internalIndex] = data;
1439
+ return isUpdate;
1440
+ } else {
1441
+ return false;
1442
+ }
1443
+ }
1444
+ getAtIndex(index) {
1445
+ return this.range.isWithin(index) && this.data[index - this.range.from] != null ? this.data[index - this.range.from] : void 0;
1446
+ }
1447
+ getByKey(key) {
1448
+ return this.data.find((row) => row[KEY2] === key);
1449
+ }
1450
+ isWithinRange(index) {
1451
+ return this.range.isWithin(index) && index <= this.rowCount;
1452
+ }
1453
+ setRange(from, to) {
1454
+ if (from !== this.range.from || to !== this.range.to) {
1455
+ const [overlapFrom, overlapTo] = this.range.overlap(from, to);
1456
+ const newData = new Array(to - from);
1457
+ for (let i = overlapFrom; i < overlapTo; i++) {
1458
+ const data = this.getAtIndex(i);
1459
+ if (data) {
1460
+ const index = i - from;
1461
+ newData[index] = data;
1462
+ }
1463
+ }
1464
+ this.data = newData;
1465
+ this.range.from = from;
1466
+ this.range.to = to;
1467
+ }
1468
+ }
1469
+ hasData(from, to) {
1470
+ const offset = this.range.from;
1471
+ const start = from - offset;
1472
+ const end = Math.min(to - offset - 1, this.rowCount - 1);
1473
+ return this.data[start] !== void 0 && this.data[end] !== void 0;
1474
+ }
1475
+ getData(from, to) {
1476
+ var _a;
1477
+ const { from: clientFrom } = this.range;
1478
+ const startOffset = Math.max(0, from - clientFrom);
1479
+ const endOffset = Math.min(to - clientFrom, (_a = this.rowCount) != null ? _a : to);
1480
+ return this.data.slice(startOffset, endOffset);
1481
+ }
1482
+ };
1483
+
1484
+ // src/common-types.ts
1485
+ var MEASURES = {
1486
+ horizontal: {
1487
+ positionProp: "left",
1488
+ sizeProp: "width"
1489
+ },
1490
+ vertical: {
1491
+ positionProp: "top",
1492
+ sizeProp: "height"
1493
+ }
1494
+ };
1495
+
1496
+ // src/data-utils.ts
1497
+ var UP1 = "up1";
1498
+ var UP2 = "up2";
1499
+ var DOWN1 = "down1";
1500
+ var DOWN2 = "down2";
1501
+ var isValidNumber = (n) => typeof n === "number" && isFinite(n);
1502
+ var EMPTY = {};
1503
+ var shallowEquals = (o1 = EMPTY, o2 = EMPTY) => {
1504
+ const props1 = Object.keys(o1);
1505
+ const props2 = Object.keys(o2);
1506
+ return props1.length === props2.length && props1.every((key) => o1[key] === o2[key]);
1507
+ };
1508
+ function getMovingValueDirection(newValue, direction, prevValue, decimalPlaces) {
1509
+ if (newValue === void 0) {
1510
+ return "";
1511
+ }
1512
+ if (!isFinite(newValue) || prevValue === void 0 || direction === void 0) {
1513
+ return "";
1514
+ } else {
1515
+ let diff = newValue - prevValue;
1516
+ if (diff) {
1517
+ if (typeof decimalPlaces === "number") {
1518
+ diff = +newValue.toFixed(decimalPlaces) - +prevValue.toFixed(decimalPlaces);
1519
+ }
1520
+ }
1521
+ if (diff) {
1522
+ if (direction === "") {
1523
+ if (diff < 0) {
1524
+ return DOWN1;
1525
+ } else {
1526
+ return UP1;
1527
+ }
1528
+ } else if (diff > 0) {
1529
+ if (direction === DOWN1 || direction === DOWN2 || direction === UP2) {
1530
+ return UP1;
1531
+ } else {
1532
+ return UP2;
1533
+ }
1534
+ } else if (direction === UP1 || direction === UP2 || direction === DOWN2) {
1535
+ return DOWN1;
1536
+ } else {
1537
+ return DOWN2;
1538
+ }
1539
+ } else {
1540
+ return "";
1541
+ }
1542
+ }
1543
+ }
1544
+
1545
+ // src/datasource-action-utils.ts
1546
+ var isVisualLinksAction = (action) => action.type === "vuu-links";
1547
+ var isVisualLinkCreatedAction = (action) => action.type === "vuu-link-created";
1548
+ var isVisualLinkRemovedAction = (action) => action.type === "vuu-link-removed";
1549
+ var isViewportMenusAction = (action) => action.type === "vuu-menu";
1550
+ var isVuuFeatureAction = (action) => isViewportMenusAction(action) || isVisualLinksAction(action);
1551
+
1552
+ // src/datasource-utils.ts
1553
+ var NoFilter = { filter: "" };
1554
+ var NoSort = { sortDefs: [] };
1555
+ var vanillaConfig = {
1556
+ aggregations: [],
1557
+ columns: [],
1558
+ filter: NoFilter,
1559
+ groupBy: [],
1560
+ sort: NoSort
1561
+ };
1562
+ var equivalentAggregations = ({ aggregations: agg1 }, { aggregations: agg2 }) => agg1 === void 0 && (agg2 == null ? void 0 : agg2.length) === 0 || agg2 === void 0 && (agg1 == null ? void 0 : agg1.length) === 0;
1563
+ var equivalentColumns = ({ columns: cols1 }, { columns: cols2 }) => cols1 === void 0 && (cols2 == null ? void 0 : cols2.length) === 0 || cols2 === void 0 && (cols1 == null ? void 0 : cols1.length) === 0;
1564
+ var equivalentFilter = ({ filter: f1 }, { filter: f2 }) => f1 === void 0 && (f2 == null ? void 0 : f2.filter) === "" || f2 === void 0 && (f1 == null ? void 0 : f1.filter) === "";
1565
+ var equivalentGroupBy = ({ groupBy: val1 }, { groupBy: val2 }) => val1 === void 0 && (val2 == null ? void 0 : val2.length) === 0 || val2 === void 0 && (val1 == null ? void 0 : val1.length) === 0;
1566
+ var equivalentSort = ({ sort: s1 }, { sort: s2 }) => s1 === void 0 && (s2 == null ? void 0 : s2.sortDefs.length) === 0 || s2 === void 0 && (s1 == null ? void 0 : s1.sortDefs.length) === 0;
1567
+ var exactlyTheSame = (a, b) => {
1568
+ if (a === b) {
1569
+ return true;
1570
+ } else if (a === void 0 && b === void 0) {
1571
+ return true;
1572
+ } else {
1573
+ return false;
1574
+ }
1575
+ };
1576
+ var isAggregationsChanged = (config, newConfig) => {
1577
+ const { aggregations: agg1 } = config;
1578
+ const { aggregations: agg2 } = newConfig;
1579
+ if (exactlyTheSame(agg1, agg2) || equivalentAggregations(config, newConfig)) {
1580
+ return false;
1581
+ } else if (agg1 === void 0 || agg2 === void 0) {
1582
+ return true;
1583
+ } else if (agg1.length !== agg2.length) {
1584
+ return true;
1585
+ }
1586
+ return agg1.some(
1587
+ ({ column, aggType }, i) => column !== agg2[i].column || aggType !== agg2[i].aggType
1588
+ );
1589
+ };
1590
+ var isColumnsChanged = (config, newConfig) => {
1591
+ const { columns: cols1 } = config;
1592
+ const { columns: cols2 } = newConfig;
1593
+ if (exactlyTheSame(cols1, cols2) || equivalentColumns(config, newConfig)) {
1594
+ return false;
1595
+ } else if (cols1 === void 0 || cols2 === void 0) {
1596
+ return true;
1597
+ } else if ((cols1 == null ? void 0 : cols1.length) !== (cols2 == null ? void 0 : cols2.length)) {
1598
+ return true;
1599
+ }
1600
+ return cols1.some((column, i) => column !== (cols2 == null ? void 0 : cols2[i]));
1601
+ };
1602
+ var isFilterChanged = (c1, c2) => {
1603
+ var _a, _b;
1604
+ if (equivalentFilter(c1, c2)) {
1605
+ return false;
1606
+ } else {
1607
+ return ((_a = c1.filter) == null ? void 0 : _a.filter) !== ((_b = c2.filter) == null ? void 0 : _b.filter);
1608
+ }
1609
+ };
1610
+ var isGroupByChanged = (config, newConfig) => {
1611
+ const { groupBy: g1 } = config;
1612
+ const { groupBy: g2 } = newConfig;
1613
+ if (exactlyTheSame(g1, g2) || equivalentGroupBy(config, newConfig)) {
1614
+ return false;
1615
+ } else if (g1 === void 0 || g2 === void 0) {
1616
+ return true;
1617
+ } else if ((g1 == null ? void 0 : g1.length) !== (g2 == null ? void 0 : g2.length)) {
1618
+ return true;
1619
+ }
1620
+ return g1.some((column, i) => column !== (g2 == null ? void 0 : g2[i]));
1621
+ };
1622
+ var isSortChanged = (config, newConfig) => {
1623
+ const { sort: s1 } = config;
1624
+ const { sort: s2 } = newConfig;
1625
+ if (exactlyTheSame(s1, s2) || equivalentSort(config, newConfig)) {
1626
+ return false;
1627
+ } else if (s1 === void 0 || s2 === void 0) {
1628
+ return true;
1629
+ } else if ((s1 == null ? void 0 : s1.sortDefs.length) !== (s2 == null ? void 0 : s2.sortDefs.length)) {
1630
+ return true;
1631
+ }
1632
+ return s1.sortDefs.some(
1633
+ ({ column, sortType }, i) => column !== s2.sortDefs[i].column || sortType !== s2.sortDefs[i].sortType
1634
+ );
1635
+ };
1636
+ var isVisualLinkChanged = () => {
1637
+ return false;
1638
+ };
1639
+ var NO_CONFIG_CHANGES = {
1640
+ aggregationsChanged: false,
1641
+ columnsChanged: false,
1642
+ filterChanged: false,
1643
+ groupByChanged: false,
1644
+ noChanges: true,
1645
+ sortChanged: false,
1646
+ visualLinkChanged: false
1647
+ };
1648
+ var isConfigChanged = (config, newConfig) => {
1649
+ if (exactlyTheSame(config, newConfig)) {
1650
+ return NO_CONFIG_CHANGES;
1651
+ }
1652
+ if (config === void 0 && newConfig == void 0) {
1653
+ return NO_CONFIG_CHANGES;
1654
+ } else if (config === void 0) {
1655
+ return isConfigChanged({}, newConfig);
1656
+ } else if (newConfig === void 0) {
1657
+ return isConfigChanged(config, {});
1658
+ }
1659
+ const aggregationsChanged = isAggregationsChanged(config, newConfig);
1660
+ const columnsChanged = isColumnsChanged(config, newConfig);
1661
+ const filterChanged = isFilterChanged(config, newConfig);
1662
+ const groupByChanged = isGroupByChanged(config, newConfig);
1663
+ const sortChanged = isSortChanged(config, newConfig);
1664
+ const visualLinkChanged = isVisualLinkChanged(config, newConfig);
1665
+ const noChanges = !(aggregationsChanged || columnsChanged || filterChanged || groupByChanged || sortChanged || visualLinkChanged);
1666
+ return {
1667
+ aggregationsChanged,
1668
+ columnsChanged,
1669
+ filterChanged,
1670
+ groupByChanged,
1671
+ noChanges,
1672
+ sortChanged,
1673
+ visualLinkChanged
1674
+ };
1675
+ };
1676
+ var hasGroupBy = (config) => config !== void 0 && config.groupBy !== void 0 && config.groupBy.length > 0;
1677
+ var hasFilter = (config) => (config == null ? void 0 : config.filter) !== void 0 && config.filter.filter.length > 0;
1678
+ var hasSort = (config) => {
1679
+ var _a;
1680
+ return (config == null ? void 0 : config.sort) !== void 0 && Array.isArray((_a = config.sort) == null ? void 0 : _a.sortDefs) && config.sort.sortDefs.length > 0;
1681
+ };
1682
+ var isTypeaheadSuggestionProvider = (source) => typeof source["getTypeaheadSuggestions"] === "function";
1683
+ var isTableSchema = (message) => message.type === "TABLE_META_RESP";
1684
+ var isConnectionStatusMessage = (msg) => msg.type === "connection-status";
1685
+ var isConnectionQualityMetrics = (msg) => msg.type === "connection-metrics";
1686
+ var messageHasResult = (msg) => typeof msg.result !== "undefined";
1687
+ var isErrorResponse = (response) => response !== void 0 && "error" in response;
1688
+ var hasAction = (response) => response != void 0 && "action" in response;
1689
+ var isViewporttMessage = (msg) => "viewport" in msg;
1690
+ var withConfigDefaults = (config) => {
1691
+ if (config.aggregations && config.columns && config.filter && config.groupBy && config.sort) {
1692
+ return config;
1693
+ } else {
1694
+ const {
1695
+ aggregations = [],
1696
+ columns = [],
1697
+ filter = { filter: "" },
1698
+ groupBy = [],
1699
+ sort = { sortDefs: [] },
1700
+ visualLink
1701
+ } = config;
1702
+ return {
1703
+ aggregations,
1704
+ columns,
1705
+ filter,
1706
+ groupBy,
1707
+ sort,
1708
+ visualLink
1709
+ };
1710
+ }
1711
+ };
1712
+
1713
+ // ../../node_modules/@internationalized/date/node_modules/@swc/helpers/esm/_check_private_redeclaration.js
1714
+ function _check_private_redeclaration(obj, privateCollection) {
1715
+ if (privateCollection.has(obj)) {
1716
+ throw new TypeError("Cannot initialize the same private elements twice on an object");
1717
+ }
1718
+ }
1719
+
1720
+ // ../../node_modules/@internationalized/date/node_modules/@swc/helpers/esm/_class_private_field_init.js
1721
+ function _class_private_field_init(obj, privateMap, value) {
1722
+ _check_private_redeclaration(obj, privateMap);
1723
+ privateMap.set(obj, value);
1724
+ }
1725
+
1726
+ // ../../node_modules/@internationalized/date/dist/import.mjs
1727
+ function $2b4dce13dd5a17fa$export$842a2cf37af977e1(amount, numerator) {
1728
+ return amount - numerator * Math.floor(amount / numerator);
1729
+ }
1730
+ var $3b62074eb05584b2$var$EPOCH = 1721426;
1731
+ function $3b62074eb05584b2$export$f297eb839006d339(era, year, month, day) {
1732
+ year = $3b62074eb05584b2$export$c36e0ecb2d4fa69d(era, year);
1733
+ let y1 = year - 1;
1734
+ let monthOffset = -2;
1735
+ if (month <= 2)
1736
+ monthOffset = 0;
1737
+ else if ($3b62074eb05584b2$export$553d7fa8e3805fc0(year))
1738
+ monthOffset = -1;
1739
+ return $3b62074eb05584b2$var$EPOCH - 1 + 365 * y1 + Math.floor(y1 / 4) - Math.floor(y1 / 100) + Math.floor(y1 / 400) + Math.floor((367 * month - 362) / 12 + monthOffset + day);
1740
+ }
1741
+ function $3b62074eb05584b2$export$553d7fa8e3805fc0(year) {
1742
+ return year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0);
1743
+ }
1744
+ function $3b62074eb05584b2$export$c36e0ecb2d4fa69d(era, year) {
1745
+ return era === "BC" ? 1 - year : year;
1746
+ }
1747
+ function $3b62074eb05584b2$export$4475b7e617eb123c(year) {
1748
+ let era = "AD";
1749
+ if (year <= 0) {
1750
+ era = "BC";
1751
+ year = 1 - year;
1752
+ }
1753
+ return [
1754
+ era,
1755
+ year
1756
+ ];
1757
+ }
1758
+ var $3b62074eb05584b2$var$daysInMonth = {
1759
+ standard: [
1760
+ 31,
1761
+ 28,
1762
+ 31,
1763
+ 30,
1764
+ 31,
1765
+ 30,
1766
+ 31,
1767
+ 31,
1768
+ 30,
1769
+ 31,
1770
+ 30,
1771
+ 31
1772
+ ],
1773
+ leapyear: [
1774
+ 31,
1775
+ 29,
1776
+ 31,
1777
+ 30,
1778
+ 31,
1779
+ 30,
1780
+ 31,
1781
+ 31,
1782
+ 30,
1783
+ 31,
1784
+ 30,
1785
+ 31
1786
+ ]
1787
+ };
1788
+ var $3b62074eb05584b2$export$80ee6245ec4f29ec = class {
1789
+ fromJulianDay(jd) {
1790
+ let jd0 = jd;
1791
+ let depoch = jd0 - $3b62074eb05584b2$var$EPOCH;
1792
+ let quadricent = Math.floor(depoch / 146097);
1793
+ let dqc = (0, $2b4dce13dd5a17fa$export$842a2cf37af977e1)(depoch, 146097);
1794
+ let cent = Math.floor(dqc / 36524);
1795
+ let dcent = (0, $2b4dce13dd5a17fa$export$842a2cf37af977e1)(dqc, 36524);
1796
+ let quad = Math.floor(dcent / 1461);
1797
+ let dquad = (0, $2b4dce13dd5a17fa$export$842a2cf37af977e1)(dcent, 1461);
1798
+ let yindex = Math.floor(dquad / 365);
1799
+ let extendedYear = quadricent * 400 + cent * 100 + quad * 4 + yindex + (cent !== 4 && yindex !== 4 ? 1 : 0);
1800
+ let [era, year] = $3b62074eb05584b2$export$4475b7e617eb123c(extendedYear);
1801
+ let yearDay = jd0 - $3b62074eb05584b2$export$f297eb839006d339(era, year, 1, 1);
1802
+ let leapAdj = 2;
1803
+ if (jd0 < $3b62074eb05584b2$export$f297eb839006d339(era, year, 3, 1))
1804
+ leapAdj = 0;
1805
+ else if ($3b62074eb05584b2$export$553d7fa8e3805fc0(year))
1806
+ leapAdj = 1;
1807
+ let month = Math.floor(((yearDay + leapAdj) * 12 + 373) / 367);
1808
+ let day = jd0 - $3b62074eb05584b2$export$f297eb839006d339(era, year, month, 1) + 1;
1809
+ return new (0, $35ea8db9cb2ccb90$export$99faa760c7908e4f)(era, year, month, day);
1810
+ }
1811
+ toJulianDay(date) {
1812
+ return $3b62074eb05584b2$export$f297eb839006d339(date.era, date.year, date.month, date.day);
1813
+ }
1814
+ getDaysInMonth(date) {
1815
+ return $3b62074eb05584b2$var$daysInMonth[$3b62074eb05584b2$export$553d7fa8e3805fc0(date.year) ? "leapyear" : "standard"][date.month - 1];
1816
+ }
1817
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
1818
+ getMonthsInYear(date) {
1819
+ return 12;
1820
+ }
1821
+ getDaysInYear(date) {
1822
+ return $3b62074eb05584b2$export$553d7fa8e3805fc0(date.year) ? 366 : 365;
1823
+ }
1824
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
1825
+ getYearsInEra(date) {
1826
+ return 9999;
1827
+ }
1828
+ getEras() {
1829
+ return [
1830
+ "BC",
1831
+ "AD"
1832
+ ];
1833
+ }
1834
+ isInverseEra(date) {
1835
+ return date.era === "BC";
1836
+ }
1837
+ balanceDate(date) {
1838
+ if (date.year <= 0) {
1839
+ date.era = date.era === "BC" ? "AD" : "BC";
1840
+ date.year = 1 - date.year;
1841
+ }
1842
+ }
1843
+ constructor() {
1844
+ this.identifier = "gregory";
1845
+ }
1846
+ };
1847
+ function $14e0f24ef4ac5c92$export$68781ddf31c0090f(a, b) {
1848
+ return a.calendar.toJulianDay(a) - b.calendar.toJulianDay(b);
1849
+ }
1850
+ function $14e0f24ef4ac5c92$export$c19a80a9721b80f6(a, b) {
1851
+ return $14e0f24ef4ac5c92$var$timeToMs(a) - $14e0f24ef4ac5c92$var$timeToMs(b);
1852
+ }
1853
+ function $14e0f24ef4ac5c92$var$timeToMs(a) {
1854
+ return a.hour * 36e5 + a.minute * 6e4 + a.second * 1e3 + a.millisecond;
1855
+ }
1856
+ var $14e0f24ef4ac5c92$var$localTimeZone = null;
1857
+ function $14e0f24ef4ac5c92$export$aa8b41735afcabd2() {
1858
+ if ($14e0f24ef4ac5c92$var$localTimeZone == null)
1859
+ $14e0f24ef4ac5c92$var$localTimeZone = new Intl.DateTimeFormat().resolvedOptions().timeZone;
1860
+ return $14e0f24ef4ac5c92$var$localTimeZone;
1861
+ }
1862
+ function $11d87f3f76e88657$export$bd4fb2bc8bb06fb(date) {
1863
+ date = $11d87f3f76e88657$export$b4a036af3fc0b032(date, new (0, $3b62074eb05584b2$export$80ee6245ec4f29ec)());
1864
+ let year = (0, $3b62074eb05584b2$export$c36e0ecb2d4fa69d)(date.era, date.year);
1865
+ return $11d87f3f76e88657$var$epochFromParts(year, date.month, date.day, date.hour, date.minute, date.second, date.millisecond);
1866
+ }
1867
+ function $11d87f3f76e88657$var$epochFromParts(year, month, day, hour, minute, second, millisecond) {
1868
+ let date = /* @__PURE__ */ new Date();
1869
+ date.setUTCHours(hour, minute, second, millisecond);
1870
+ date.setUTCFullYear(year, month - 1, day);
1871
+ return date.getTime();
1872
+ }
1873
+ function $11d87f3f76e88657$export$59c99f3515d3493f(ms, timeZone) {
1874
+ if (timeZone === "UTC")
1875
+ return 0;
1876
+ if (ms > 0 && timeZone === (0, $14e0f24ef4ac5c92$export$aa8b41735afcabd2)())
1877
+ return new Date(ms).getTimezoneOffset() * -6e4;
1878
+ let { year, month, day, hour, minute, second } = $11d87f3f76e88657$var$getTimeZoneParts(ms, timeZone);
1879
+ let utc = $11d87f3f76e88657$var$epochFromParts(year, month, day, hour, minute, second, 0);
1880
+ return utc - Math.floor(ms / 1e3) * 1e3;
1881
+ }
1882
+ var $11d87f3f76e88657$var$formattersByTimeZone = /* @__PURE__ */ new Map();
1883
+ function $11d87f3f76e88657$var$getTimeZoneParts(ms, timeZone) {
1884
+ let formatter = $11d87f3f76e88657$var$formattersByTimeZone.get(timeZone);
1885
+ if (!formatter) {
1886
+ formatter = new Intl.DateTimeFormat("en-US", {
1887
+ timeZone,
1888
+ hour12: false,
1889
+ era: "short",
1890
+ year: "numeric",
1891
+ month: "numeric",
1892
+ day: "numeric",
1893
+ hour: "numeric",
1894
+ minute: "numeric",
1895
+ second: "numeric"
1896
+ });
1897
+ $11d87f3f76e88657$var$formattersByTimeZone.set(timeZone, formatter);
1898
+ }
1899
+ let parts = formatter.formatToParts(new Date(ms));
1900
+ let namedParts = {};
1901
+ for (let part of parts)
1902
+ if (part.type !== "literal")
1903
+ namedParts[part.type] = part.value;
1904
+ return {
1905
+ // Firefox returns B instead of BC... https://bugzilla.mozilla.org/show_bug.cgi?id=1752253
1906
+ year: namedParts.era === "BC" || namedParts.era === "B" ? -namedParts.year + 1 : +namedParts.year,
1907
+ month: +namedParts.month,
1908
+ day: +namedParts.day,
1909
+ hour: namedParts.hour === "24" ? 0 : +namedParts.hour,
1910
+ minute: +namedParts.minute,
1911
+ second: +namedParts.second
1912
+ };
1913
+ }
1914
+ var $11d87f3f76e88657$var$DAYMILLIS = 864e5;
1915
+ function $11d87f3f76e88657$var$getValidWallTimes(date, timeZone, earlier, later) {
1916
+ let found = earlier === later ? [
1917
+ earlier
1918
+ ] : [
1919
+ earlier,
1920
+ later
1921
+ ];
1922
+ return found.filter((absolute) => $11d87f3f76e88657$var$isValidWallTime(date, timeZone, absolute));
1923
+ }
1924
+ function $11d87f3f76e88657$var$isValidWallTime(date, timeZone, absolute) {
1925
+ let parts = $11d87f3f76e88657$var$getTimeZoneParts(absolute, timeZone);
1926
+ return date.year === parts.year && date.month === parts.month && date.day === parts.day && date.hour === parts.hour && date.minute === parts.minute && date.second === parts.second;
1927
+ }
1928
+ function $11d87f3f76e88657$export$5107c82f94518f5c(date, timeZone, disambiguation = "compatible") {
1929
+ let dateTime = $11d87f3f76e88657$export$b21e0b124e224484(date);
1930
+ if (timeZone === "UTC")
1931
+ return $11d87f3f76e88657$export$bd4fb2bc8bb06fb(dateTime);
1932
+ if (timeZone === (0, $14e0f24ef4ac5c92$export$aa8b41735afcabd2)() && disambiguation === "compatible") {
1933
+ dateTime = $11d87f3f76e88657$export$b4a036af3fc0b032(dateTime, new (0, $3b62074eb05584b2$export$80ee6245ec4f29ec)());
1934
+ let date2 = /* @__PURE__ */ new Date();
1935
+ let year = (0, $3b62074eb05584b2$export$c36e0ecb2d4fa69d)(dateTime.era, dateTime.year);
1936
+ date2.setFullYear(year, dateTime.month - 1, dateTime.day);
1937
+ date2.setHours(dateTime.hour, dateTime.minute, dateTime.second, dateTime.millisecond);
1938
+ return date2.getTime();
1939
+ }
1940
+ let ms = $11d87f3f76e88657$export$bd4fb2bc8bb06fb(dateTime);
1941
+ let offsetBefore = $11d87f3f76e88657$export$59c99f3515d3493f(ms - $11d87f3f76e88657$var$DAYMILLIS, timeZone);
1942
+ let offsetAfter = $11d87f3f76e88657$export$59c99f3515d3493f(ms + $11d87f3f76e88657$var$DAYMILLIS, timeZone);
1943
+ let valid = $11d87f3f76e88657$var$getValidWallTimes(dateTime, timeZone, ms - offsetBefore, ms - offsetAfter);
1944
+ if (valid.length === 1)
1945
+ return valid[0];
1946
+ if (valid.length > 1)
1947
+ switch (disambiguation) {
1948
+ case "compatible":
1949
+ case "earlier":
1950
+ return valid[0];
1951
+ case "later":
1952
+ return valid[valid.length - 1];
1953
+ case "reject":
1954
+ throw new RangeError("Multiple possible absolute times found");
1955
+ }
1956
+ switch (disambiguation) {
1957
+ case "earlier":
1958
+ return Math.min(ms - offsetBefore, ms - offsetAfter);
1959
+ case "compatible":
1960
+ case "later":
1961
+ return Math.max(ms - offsetBefore, ms - offsetAfter);
1962
+ case "reject":
1963
+ throw new RangeError("No such absolute time found");
1964
+ }
1965
+ }
1966
+ function $11d87f3f76e88657$export$e67a095c620b86fe(dateTime, timeZone, disambiguation = "compatible") {
1967
+ return new Date($11d87f3f76e88657$export$5107c82f94518f5c(dateTime, timeZone, disambiguation));
1968
+ }
1969
+ function $11d87f3f76e88657$export$b21e0b124e224484(date, time) {
1970
+ let hour = 0, minute = 0, second = 0, millisecond = 0;
1971
+ if ("timeZone" in date)
1972
+ ({ hour, minute, second, millisecond } = date);
1973
+ else if ("hour" in date && !time)
1974
+ return date;
1975
+ if (time)
1976
+ ({ hour, minute, second, millisecond } = time);
1977
+ return new (0, $35ea8db9cb2ccb90$export$ca871e8dbb80966f)(date.calendar, date.era, date.year, date.month, date.day, hour, minute, second, millisecond);
1978
+ }
1979
+ function $11d87f3f76e88657$export$b4a036af3fc0b032(date, calendar) {
1980
+ if (date.calendar.identifier === calendar.identifier)
1981
+ return date;
1982
+ let calendarDate = calendar.fromJulianDay(date.calendar.toJulianDay(date));
1983
+ let copy = date.copy();
1984
+ copy.calendar = calendar;
1985
+ copy.era = calendarDate.era;
1986
+ copy.year = calendarDate.year;
1987
+ copy.month = calendarDate.month;
1988
+ copy.day = calendarDate.day;
1989
+ (0, $735220c2d4774dd3$export$c4e2ecac49351ef2)(copy);
1990
+ return copy;
1991
+ }
1992
+ function $735220c2d4774dd3$export$e16d8520af44a096(date, duration) {
1993
+ let mutableDate = date.copy();
1994
+ let days = "hour" in mutableDate ? $735220c2d4774dd3$var$addTimeFields(mutableDate, duration) : 0;
1995
+ $735220c2d4774dd3$var$addYears(mutableDate, duration.years || 0);
1996
+ if (mutableDate.calendar.balanceYearMonth)
1997
+ mutableDate.calendar.balanceYearMonth(mutableDate, date);
1998
+ mutableDate.month += duration.months || 0;
1999
+ $735220c2d4774dd3$var$balanceYearMonth(mutableDate);
2000
+ $735220c2d4774dd3$var$constrainMonthDay(mutableDate);
2001
+ mutableDate.day += (duration.weeks || 0) * 7;
2002
+ mutableDate.day += duration.days || 0;
2003
+ mutableDate.day += days;
2004
+ $735220c2d4774dd3$var$balanceDay(mutableDate);
2005
+ if (mutableDate.calendar.balanceDate)
2006
+ mutableDate.calendar.balanceDate(mutableDate);
2007
+ if (mutableDate.year < 1) {
2008
+ mutableDate.year = 1;
2009
+ mutableDate.month = 1;
2010
+ mutableDate.day = 1;
2011
+ }
2012
+ let maxYear = mutableDate.calendar.getYearsInEra(mutableDate);
2013
+ if (mutableDate.year > maxYear) {
2014
+ var _mutableDate_calendar, _mutableDate_calendar_isInverseEra;
2015
+ let isInverseEra = (_mutableDate_calendar_isInverseEra = (_mutableDate_calendar = mutableDate.calendar).isInverseEra) === null || _mutableDate_calendar_isInverseEra === void 0 ? void 0 : _mutableDate_calendar_isInverseEra.call(_mutableDate_calendar, mutableDate);
2016
+ mutableDate.year = maxYear;
2017
+ mutableDate.month = isInverseEra ? 1 : mutableDate.calendar.getMonthsInYear(mutableDate);
2018
+ mutableDate.day = isInverseEra ? 1 : mutableDate.calendar.getDaysInMonth(mutableDate);
2019
+ }
2020
+ if (mutableDate.month < 1) {
2021
+ mutableDate.month = 1;
2022
+ mutableDate.day = 1;
2023
+ }
2024
+ let maxMonth = mutableDate.calendar.getMonthsInYear(mutableDate);
2025
+ if (mutableDate.month > maxMonth) {
2026
+ mutableDate.month = maxMonth;
2027
+ mutableDate.day = mutableDate.calendar.getDaysInMonth(mutableDate);
2028
+ }
2029
+ mutableDate.day = Math.max(1, Math.min(mutableDate.calendar.getDaysInMonth(mutableDate), mutableDate.day));
2030
+ return mutableDate;
2031
+ }
2032
+ function $735220c2d4774dd3$var$addYears(date, years) {
2033
+ var _date_calendar, _date_calendar_isInverseEra;
2034
+ if ((_date_calendar_isInverseEra = (_date_calendar = date.calendar).isInverseEra) === null || _date_calendar_isInverseEra === void 0 ? void 0 : _date_calendar_isInverseEra.call(_date_calendar, date))
2035
+ years = -years;
2036
+ date.year += years;
2037
+ }
2038
+ function $735220c2d4774dd3$var$balanceYearMonth(date) {
2039
+ while (date.month < 1) {
2040
+ $735220c2d4774dd3$var$addYears(date, -1);
2041
+ date.month += date.calendar.getMonthsInYear(date);
2042
+ }
2043
+ let monthsInYear = 0;
2044
+ while (date.month > (monthsInYear = date.calendar.getMonthsInYear(date))) {
2045
+ date.month -= monthsInYear;
2046
+ $735220c2d4774dd3$var$addYears(date, 1);
2047
+ }
2048
+ }
2049
+ function $735220c2d4774dd3$var$balanceDay(date) {
2050
+ while (date.day < 1) {
2051
+ date.month--;
2052
+ $735220c2d4774dd3$var$balanceYearMonth(date);
2053
+ date.day += date.calendar.getDaysInMonth(date);
2054
+ }
2055
+ while (date.day > date.calendar.getDaysInMonth(date)) {
2056
+ date.day -= date.calendar.getDaysInMonth(date);
2057
+ date.month++;
2058
+ $735220c2d4774dd3$var$balanceYearMonth(date);
2059
+ }
2060
+ }
2061
+ function $735220c2d4774dd3$var$constrainMonthDay(date) {
2062
+ date.month = Math.max(1, Math.min(date.calendar.getMonthsInYear(date), date.month));
2063
+ date.day = Math.max(1, Math.min(date.calendar.getDaysInMonth(date), date.day));
2064
+ }
2065
+ function $735220c2d4774dd3$export$c4e2ecac49351ef2(date) {
2066
+ if (date.calendar.constrainDate)
2067
+ date.calendar.constrainDate(date);
2068
+ date.year = Math.max(1, Math.min(date.calendar.getYearsInEra(date), date.year));
2069
+ $735220c2d4774dd3$var$constrainMonthDay(date);
2070
+ }
2071
+ function $735220c2d4774dd3$export$3e2544e88a25bff8(duration) {
2072
+ let inverseDuration = {};
2073
+ for (let key in duration)
2074
+ if (typeof duration[key] === "number")
2075
+ inverseDuration[key] = -duration[key];
2076
+ return inverseDuration;
2077
+ }
2078
+ function $735220c2d4774dd3$export$4e2d2ead65e5f7e3(date, duration) {
2079
+ return $735220c2d4774dd3$export$e16d8520af44a096(date, $735220c2d4774dd3$export$3e2544e88a25bff8(duration));
2080
+ }
2081
+ function $735220c2d4774dd3$export$adaa4cf7ef1b65be(date, fields) {
2082
+ let mutableDate = date.copy();
2083
+ if (fields.era != null)
2084
+ mutableDate.era = fields.era;
2085
+ if (fields.year != null)
2086
+ mutableDate.year = fields.year;
2087
+ if (fields.month != null)
2088
+ mutableDate.month = fields.month;
2089
+ if (fields.day != null)
2090
+ mutableDate.day = fields.day;
2091
+ $735220c2d4774dd3$export$c4e2ecac49351ef2(mutableDate);
2092
+ return mutableDate;
2093
+ }
2094
+ function $735220c2d4774dd3$export$e5d5e1c1822b6e56(value, fields) {
2095
+ let mutableValue = value.copy();
2096
+ if (fields.hour != null)
2097
+ mutableValue.hour = fields.hour;
2098
+ if (fields.minute != null)
2099
+ mutableValue.minute = fields.minute;
2100
+ if (fields.second != null)
2101
+ mutableValue.second = fields.second;
2102
+ if (fields.millisecond != null)
2103
+ mutableValue.millisecond = fields.millisecond;
2104
+ $735220c2d4774dd3$export$7555de1e070510cb(mutableValue);
2105
+ return mutableValue;
2106
+ }
2107
+ function $735220c2d4774dd3$var$balanceTime(time) {
2108
+ time.second += Math.floor(time.millisecond / 1e3);
2109
+ time.millisecond = $735220c2d4774dd3$var$nonNegativeMod(time.millisecond, 1e3);
2110
+ time.minute += Math.floor(time.second / 60);
2111
+ time.second = $735220c2d4774dd3$var$nonNegativeMod(time.second, 60);
2112
+ time.hour += Math.floor(time.minute / 60);
2113
+ time.minute = $735220c2d4774dd3$var$nonNegativeMod(time.minute, 60);
2114
+ let days = Math.floor(time.hour / 24);
2115
+ time.hour = $735220c2d4774dd3$var$nonNegativeMod(time.hour, 24);
2116
+ return days;
2117
+ }
2118
+ function $735220c2d4774dd3$export$7555de1e070510cb(time) {
2119
+ time.millisecond = Math.max(0, Math.min(time.millisecond, 1e3));
2120
+ time.second = Math.max(0, Math.min(time.second, 59));
2121
+ time.minute = Math.max(0, Math.min(time.minute, 59));
2122
+ time.hour = Math.max(0, Math.min(time.hour, 23));
2123
+ }
2124
+ function $735220c2d4774dd3$var$nonNegativeMod(a, b) {
2125
+ let result = a % b;
2126
+ if (result < 0)
2127
+ result += b;
2128
+ return result;
2129
+ }
2130
+ function $735220c2d4774dd3$var$addTimeFields(time, duration) {
2131
+ time.hour += duration.hours || 0;
2132
+ time.minute += duration.minutes || 0;
2133
+ time.second += duration.seconds || 0;
2134
+ time.millisecond += duration.milliseconds || 0;
2135
+ return $735220c2d4774dd3$var$balanceTime(time);
2136
+ }
2137
+ function $735220c2d4774dd3$export$d52ced6badfb9a4c(value, field, amount, options) {
2138
+ let mutable = value.copy();
2139
+ switch (field) {
2140
+ case "era": {
2141
+ let eras = value.calendar.getEras();
2142
+ let eraIndex = eras.indexOf(value.era);
2143
+ if (eraIndex < 0)
2144
+ throw new Error("Invalid era: " + value.era);
2145
+ eraIndex = $735220c2d4774dd3$var$cycleValue(eraIndex, amount, 0, eras.length - 1, options === null || options === void 0 ? void 0 : options.round);
2146
+ mutable.era = eras[eraIndex];
2147
+ $735220c2d4774dd3$export$c4e2ecac49351ef2(mutable);
2148
+ break;
2149
+ }
2150
+ case "year":
2151
+ var _mutable_calendar, _mutable_calendar_isInverseEra;
2152
+ if ((_mutable_calendar_isInverseEra = (_mutable_calendar = mutable.calendar).isInverseEra) === null || _mutable_calendar_isInverseEra === void 0 ? void 0 : _mutable_calendar_isInverseEra.call(_mutable_calendar, mutable))
2153
+ amount = -amount;
2154
+ mutable.year = $735220c2d4774dd3$var$cycleValue(value.year, amount, -Infinity, 9999, options === null || options === void 0 ? void 0 : options.round);
2155
+ if (mutable.year === -Infinity)
2156
+ mutable.year = 1;
2157
+ if (mutable.calendar.balanceYearMonth)
2158
+ mutable.calendar.balanceYearMonth(mutable, value);
2159
+ break;
2160
+ case "month":
2161
+ mutable.month = $735220c2d4774dd3$var$cycleValue(value.month, amount, 1, value.calendar.getMonthsInYear(value), options === null || options === void 0 ? void 0 : options.round);
2162
+ break;
2163
+ case "day":
2164
+ mutable.day = $735220c2d4774dd3$var$cycleValue(value.day, amount, 1, value.calendar.getDaysInMonth(value), options === null || options === void 0 ? void 0 : options.round);
2165
+ break;
2166
+ default:
2167
+ throw new Error("Unsupported field " + field);
2168
+ }
2169
+ if (value.calendar.balanceDate)
2170
+ value.calendar.balanceDate(mutable);
2171
+ $735220c2d4774dd3$export$c4e2ecac49351ef2(mutable);
2172
+ return mutable;
2173
+ }
2174
+ function $735220c2d4774dd3$export$dd02b3e0007dfe28(value, field, amount, options) {
2175
+ let mutable = value.copy();
2176
+ switch (field) {
2177
+ case "hour": {
2178
+ let hours = value.hour;
2179
+ let min = 0;
2180
+ let max = 23;
2181
+ if ((options === null || options === void 0 ? void 0 : options.hourCycle) === 12) {
2182
+ let isPM = hours >= 12;
2183
+ min = isPM ? 12 : 0;
2184
+ max = isPM ? 23 : 11;
2185
+ }
2186
+ mutable.hour = $735220c2d4774dd3$var$cycleValue(hours, amount, min, max, options === null || options === void 0 ? void 0 : options.round);
2187
+ break;
2188
+ }
2189
+ case "minute":
2190
+ mutable.minute = $735220c2d4774dd3$var$cycleValue(value.minute, amount, 0, 59, options === null || options === void 0 ? void 0 : options.round);
2191
+ break;
2192
+ case "second":
2193
+ mutable.second = $735220c2d4774dd3$var$cycleValue(value.second, amount, 0, 59, options === null || options === void 0 ? void 0 : options.round);
2194
+ break;
2195
+ case "millisecond":
2196
+ mutable.millisecond = $735220c2d4774dd3$var$cycleValue(value.millisecond, amount, 0, 999, options === null || options === void 0 ? void 0 : options.round);
2197
+ break;
2198
+ default:
2199
+ throw new Error("Unsupported field " + field);
2200
+ }
2201
+ return mutable;
2202
+ }
2203
+ function $735220c2d4774dd3$var$cycleValue(value, amount, min, max, round = false) {
2204
+ if (round) {
2205
+ value += Math.sign(amount);
2206
+ if (value < min)
2207
+ value = max;
2208
+ let div = Math.abs(amount);
2209
+ if (amount > 0)
2210
+ value = Math.ceil(value / div) * div;
2211
+ else
2212
+ value = Math.floor(value / div) * div;
2213
+ if (value > max)
2214
+ value = min;
2215
+ } else {
2216
+ value += amount;
2217
+ if (value < min)
2218
+ value = max - (min - value - 1);
2219
+ else if (value > max)
2220
+ value = min + (value - max - 1);
2221
+ }
2222
+ return value;
2223
+ }
2224
+ var $fae977aafc393c5c$var$requiredDurationTimeGroups = [
2225
+ "hours",
2226
+ "minutes",
2227
+ "seconds"
2228
+ ];
2229
+ var $fae977aafc393c5c$var$requiredDurationGroups = [
2230
+ "years",
2231
+ "months",
2232
+ "weeks",
2233
+ "days",
2234
+ ...$fae977aafc393c5c$var$requiredDurationTimeGroups
2235
+ ];
2236
+ function $fae977aafc393c5c$export$f59dee82248f5ad4(time) {
2237
+ return `${String(time.hour).padStart(2, "0")}:${String(time.minute).padStart(2, "0")}:${String(time.second).padStart(2, "0")}${time.millisecond ? String(time.millisecond / 1e3).slice(1) : ""}`;
2238
+ }
2239
+ function $fae977aafc393c5c$export$60dfd74aa96791bd(date) {
2240
+ let gregorianDate = (0, $11d87f3f76e88657$export$b4a036af3fc0b032)(date, new (0, $3b62074eb05584b2$export$80ee6245ec4f29ec)());
2241
+ return `${String(gregorianDate.year).padStart(4, "0")}-${String(gregorianDate.month).padStart(2, "0")}-${String(gregorianDate.day).padStart(2, "0")}`;
2242
+ }
2243
+ function $fae977aafc393c5c$export$4223de14708adc63(date) {
2244
+ return `${$fae977aafc393c5c$export$60dfd74aa96791bd(date)}T${$fae977aafc393c5c$export$f59dee82248f5ad4(date)}`;
2245
+ }
2246
+ function $35ea8db9cb2ccb90$var$shiftArgs(args) {
2247
+ let calendar = typeof args[0] === "object" ? args.shift() : new (0, $3b62074eb05584b2$export$80ee6245ec4f29ec)();
2248
+ let era;
2249
+ if (typeof args[0] === "string")
2250
+ era = args.shift();
2251
+ else {
2252
+ let eras = calendar.getEras();
2253
+ era = eras[eras.length - 1];
2254
+ }
2255
+ let year = args.shift();
2256
+ let month = args.shift();
2257
+ let day = args.shift();
2258
+ return [
2259
+ calendar,
2260
+ era,
2261
+ year,
2262
+ month,
2263
+ day
2264
+ ];
2265
+ }
2266
+ var $35ea8db9cb2ccb90$var$_type = /* @__PURE__ */ new WeakMap();
2267
+ var $35ea8db9cb2ccb90$export$99faa760c7908e4f = class _$35ea8db9cb2ccb90$export$99faa760c7908e4f {
2268
+ /** Returns a copy of this date. */
2269
+ copy() {
2270
+ if (this.era)
2271
+ return new _$35ea8db9cb2ccb90$export$99faa760c7908e4f(this.calendar, this.era, this.year, this.month, this.day);
2272
+ else
2273
+ return new _$35ea8db9cb2ccb90$export$99faa760c7908e4f(this.calendar, this.year, this.month, this.day);
2274
+ }
2275
+ /** Returns a new `CalendarDate` with the given duration added to it. */
2276
+ add(duration) {
2277
+ return (0, $735220c2d4774dd3$export$e16d8520af44a096)(this, duration);
2278
+ }
2279
+ /** Returns a new `CalendarDate` with the given duration subtracted from it. */
2280
+ subtract(duration) {
2281
+ return (0, $735220c2d4774dd3$export$4e2d2ead65e5f7e3)(this, duration);
2282
+ }
2283
+ /** Returns a new `CalendarDate` with the given fields set to the provided values. Other fields will be constrained accordingly. */
2284
+ set(fields) {
2285
+ return (0, $735220c2d4774dd3$export$adaa4cf7ef1b65be)(this, fields);
2286
+ }
2287
+ /**
2288
+ * Returns a new `CalendarDate` with the given field adjusted by a specified amount.
2289
+ * When the resulting value reaches the limits of the field, it wraps around.
2290
+ */
2291
+ cycle(field, amount, options) {
2292
+ return (0, $735220c2d4774dd3$export$d52ced6badfb9a4c)(this, field, amount, options);
2293
+ }
2294
+ /** Converts the date to a native JavaScript Date object, with the time set to midnight in the given time zone. */
2295
+ toDate(timeZone) {
2296
+ return (0, $11d87f3f76e88657$export$e67a095c620b86fe)(this, timeZone);
2297
+ }
2298
+ /** Converts the date to an ISO 8601 formatted string. */
2299
+ toString() {
2300
+ return (0, $fae977aafc393c5c$export$60dfd74aa96791bd)(this);
2301
+ }
2302
+ /** Compares this date with another. A negative result indicates that this date is before the given one, and a positive date indicates that it is after. */
2303
+ compare(b) {
2304
+ return (0, $14e0f24ef4ac5c92$export$68781ddf31c0090f)(this, b);
2305
+ }
2306
+ constructor(...args) {
2307
+ (0, _class_private_field_init)(this, $35ea8db9cb2ccb90$var$_type, {
2308
+ writable: true,
2309
+ value: void 0
2310
+ });
2311
+ let [calendar, era, year, month, day] = $35ea8db9cb2ccb90$var$shiftArgs(args);
2312
+ this.calendar = calendar;
2313
+ this.era = era;
2314
+ this.year = year;
2315
+ this.month = month;
2316
+ this.day = day;
2317
+ (0, $735220c2d4774dd3$export$c4e2ecac49351ef2)(this);
2318
+ }
2319
+ };
2320
+ var $35ea8db9cb2ccb90$var$_type2 = /* @__PURE__ */ new WeakMap();
2321
+ var $35ea8db9cb2ccb90$export$ca871e8dbb80966f = class _$35ea8db9cb2ccb90$export$ca871e8dbb80966f {
2322
+ /** Returns a copy of this date. */
2323
+ copy() {
2324
+ if (this.era)
2325
+ return new _$35ea8db9cb2ccb90$export$ca871e8dbb80966f(this.calendar, this.era, this.year, this.month, this.day, this.hour, this.minute, this.second, this.millisecond);
2326
+ else
2327
+ return new _$35ea8db9cb2ccb90$export$ca871e8dbb80966f(this.calendar, this.year, this.month, this.day, this.hour, this.minute, this.second, this.millisecond);
2328
+ }
2329
+ /** Returns a new `CalendarDateTime` with the given duration added to it. */
2330
+ add(duration) {
2331
+ return (0, $735220c2d4774dd3$export$e16d8520af44a096)(this, duration);
2332
+ }
2333
+ /** Returns a new `CalendarDateTime` with the given duration subtracted from it. */
2334
+ subtract(duration) {
2335
+ return (0, $735220c2d4774dd3$export$4e2d2ead65e5f7e3)(this, duration);
2336
+ }
2337
+ /** Returns a new `CalendarDateTime` with the given fields set to the provided values. Other fields will be constrained accordingly. */
2338
+ set(fields) {
2339
+ return (0, $735220c2d4774dd3$export$adaa4cf7ef1b65be)((0, $735220c2d4774dd3$export$e5d5e1c1822b6e56)(this, fields), fields);
2340
+ }
2341
+ /**
2342
+ * Returns a new `CalendarDateTime` with the given field adjusted by a specified amount.
2343
+ * When the resulting value reaches the limits of the field, it wraps around.
2344
+ */
2345
+ cycle(field, amount, options) {
2346
+ switch (field) {
2347
+ case "era":
2348
+ case "year":
2349
+ case "month":
2350
+ case "day":
2351
+ return (0, $735220c2d4774dd3$export$d52ced6badfb9a4c)(this, field, amount, options);
2352
+ default:
2353
+ return (0, $735220c2d4774dd3$export$dd02b3e0007dfe28)(this, field, amount, options);
2354
+ }
2355
+ }
2356
+ /** Converts the date to a native JavaScript Date object in the given time zone. */
2357
+ toDate(timeZone, disambiguation) {
2358
+ return (0, $11d87f3f76e88657$export$e67a095c620b86fe)(this, timeZone, disambiguation);
2359
+ }
2360
+ /** Converts the date to an ISO 8601 formatted string. */
2361
+ toString() {
2362
+ return (0, $fae977aafc393c5c$export$4223de14708adc63)(this);
2363
+ }
2364
+ /** Compares this date with another. A negative result indicates that this date is before the given one, and a positive date indicates that it is after. */
2365
+ compare(b) {
2366
+ let res = (0, $14e0f24ef4ac5c92$export$68781ddf31c0090f)(this, b);
2367
+ if (res === 0)
2368
+ return (0, $14e0f24ef4ac5c92$export$c19a80a9721b80f6)(this, (0, $11d87f3f76e88657$export$b21e0b124e224484)(b));
2369
+ return res;
2370
+ }
2371
+ constructor(...args) {
2372
+ (0, _class_private_field_init)(this, $35ea8db9cb2ccb90$var$_type2, {
2373
+ writable: true,
2374
+ value: void 0
2375
+ });
2376
+ let [calendar, era, year, month, day] = $35ea8db9cb2ccb90$var$shiftArgs(args);
2377
+ this.calendar = calendar;
2378
+ this.era = era;
2379
+ this.year = year;
2380
+ this.month = month;
2381
+ this.day = day;
2382
+ this.hour = args.shift() || 0;
2383
+ this.minute = args.shift() || 0;
2384
+ this.second = args.shift() || 0;
2385
+ this.millisecond = args.shift() || 0;
2386
+ (0, $735220c2d4774dd3$export$c4e2ecac49351ef2)(this);
2387
+ }
2388
+ };
2389
+ var $7c5f6fbf42389787$var$HOUR_PARTS = 1080;
2390
+ var $7c5f6fbf42389787$var$DAY_PARTS = 24 * $7c5f6fbf42389787$var$HOUR_PARTS;
2391
+ var $7c5f6fbf42389787$var$MONTH_DAYS = 29;
2392
+ var $7c5f6fbf42389787$var$MONTH_FRACT = 12 * $7c5f6fbf42389787$var$HOUR_PARTS + 793;
2393
+ var $7c5f6fbf42389787$var$MONTH_PARTS = $7c5f6fbf42389787$var$MONTH_DAYS * $7c5f6fbf42389787$var$DAY_PARTS + $7c5f6fbf42389787$var$MONTH_FRACT;
2394
+ var $fb18d541ea1ad717$var$formatterCache = /* @__PURE__ */ new Map();
2395
+ var $fb18d541ea1ad717$export$ad991b66133851cf = class {
2396
+ /** Formats a date as a string according to the locale and format options passed to the constructor. */
2397
+ format(value) {
2398
+ return this.formatter.format(value);
2399
+ }
2400
+ /** Formats a date to an array of parts such as separators, numbers, punctuation, and more. */
2401
+ formatToParts(value) {
2402
+ return this.formatter.formatToParts(value);
2403
+ }
2404
+ /** Formats a date range as a string. */
2405
+ formatRange(start, end) {
2406
+ if (typeof this.formatter.formatRange === "function")
2407
+ return this.formatter.formatRange(start, end);
2408
+ if (end < start)
2409
+ throw new RangeError("End date must be >= start date");
2410
+ return `${this.formatter.format(start)} \u2013 ${this.formatter.format(end)}`;
2411
+ }
2412
+ /** Formats a date range as an array of parts. */
2413
+ formatRangeToParts(start, end) {
2414
+ if (typeof this.formatter.formatRangeToParts === "function")
2415
+ return this.formatter.formatRangeToParts(start, end);
2416
+ if (end < start)
2417
+ throw new RangeError("End date must be >= start date");
2418
+ let startParts = this.formatter.formatToParts(start);
2419
+ let endParts = this.formatter.formatToParts(end);
2420
+ return [
2421
+ ...startParts.map((p) => ({
2422
+ ...p,
2423
+ source: "startRange"
2424
+ })),
2425
+ {
2426
+ type: "literal",
2427
+ value: " \u2013 ",
2428
+ source: "shared"
2429
+ },
2430
+ ...endParts.map((p) => ({
2431
+ ...p,
2432
+ source: "endRange"
2433
+ }))
2434
+ ];
2435
+ }
2436
+ /** Returns the resolved formatting options based on the values passed to the constructor. */
2437
+ resolvedOptions() {
2438
+ let resolvedOptions = this.formatter.resolvedOptions();
2439
+ if ($fb18d541ea1ad717$var$hasBuggyResolvedHourCycle()) {
2440
+ if (!this.resolvedHourCycle)
2441
+ this.resolvedHourCycle = $fb18d541ea1ad717$var$getResolvedHourCycle(resolvedOptions.locale, this.options);
2442
+ resolvedOptions.hourCycle = this.resolvedHourCycle;
2443
+ resolvedOptions.hour12 = this.resolvedHourCycle === "h11" || this.resolvedHourCycle === "h12";
2444
+ }
2445
+ if (resolvedOptions.calendar === "ethiopic-amete-alem")
2446
+ resolvedOptions.calendar = "ethioaa";
2447
+ return resolvedOptions;
2448
+ }
2449
+ constructor(locale, options = {}) {
2450
+ this.formatter = $fb18d541ea1ad717$var$getCachedDateFormatter(locale, options);
2451
+ this.options = options;
2452
+ }
2453
+ };
2454
+ var $fb18d541ea1ad717$var$hour12Preferences = {
2455
+ true: {
2456
+ // Only Japanese uses the h11 style for 12 hour time. All others use h12.
2457
+ ja: "h11"
2458
+ },
2459
+ false: {}
2460
+ };
2461
+ function $fb18d541ea1ad717$var$getCachedDateFormatter(locale, options = {}) {
2462
+ if (typeof options.hour12 === "boolean" && $fb18d541ea1ad717$var$hasBuggyHour12Behavior()) {
2463
+ options = {
2464
+ ...options
2465
+ };
2466
+ let pref = $fb18d541ea1ad717$var$hour12Preferences[String(options.hour12)][locale.split("-")[0]];
2467
+ let defaultHourCycle = options.hour12 ? "h12" : "h23";
2468
+ options.hourCycle = pref !== null && pref !== void 0 ? pref : defaultHourCycle;
2469
+ delete options.hour12;
2470
+ }
2471
+ let cacheKey = locale + (options ? Object.entries(options).sort((a, b) => a[0] < b[0] ? -1 : 1).join() : "");
2472
+ if ($fb18d541ea1ad717$var$formatterCache.has(cacheKey))
2473
+ return $fb18d541ea1ad717$var$formatterCache.get(cacheKey);
2474
+ let numberFormatter = new Intl.DateTimeFormat(locale, options);
2475
+ $fb18d541ea1ad717$var$formatterCache.set(cacheKey, numberFormatter);
2476
+ return numberFormatter;
2477
+ }
2478
+ var $fb18d541ea1ad717$var$_hasBuggyHour12Behavior = null;
2479
+ function $fb18d541ea1ad717$var$hasBuggyHour12Behavior() {
2480
+ if ($fb18d541ea1ad717$var$_hasBuggyHour12Behavior == null)
2481
+ $fb18d541ea1ad717$var$_hasBuggyHour12Behavior = new Intl.DateTimeFormat("en-US", {
2482
+ hour: "numeric",
2483
+ hour12: false
2484
+ }).format(new Date(2020, 2, 3, 0)) === "24";
2485
+ return $fb18d541ea1ad717$var$_hasBuggyHour12Behavior;
2486
+ }
2487
+ var $fb18d541ea1ad717$var$_hasBuggyResolvedHourCycle = null;
2488
+ function $fb18d541ea1ad717$var$hasBuggyResolvedHourCycle() {
2489
+ if ($fb18d541ea1ad717$var$_hasBuggyResolvedHourCycle == null)
2490
+ $fb18d541ea1ad717$var$_hasBuggyResolvedHourCycle = new Intl.DateTimeFormat("fr", {
2491
+ hour: "numeric",
2492
+ hour12: false
2493
+ }).resolvedOptions().hourCycle === "h12";
2494
+ return $fb18d541ea1ad717$var$_hasBuggyResolvedHourCycle;
2495
+ }
2496
+ function $fb18d541ea1ad717$var$getResolvedHourCycle(locale, options) {
2497
+ if (!options.timeStyle && !options.hour)
2498
+ return void 0;
2499
+ locale = locale.replace(/(-u-)?-nu-[a-zA-Z0-9]+/, "");
2500
+ locale += (locale.includes("-u-") ? "" : "-u") + "-nu-latn";
2501
+ let formatter = $fb18d541ea1ad717$var$getCachedDateFormatter(locale, {
2502
+ ...options,
2503
+ timeZone: void 0
2504
+ // use local timezone
2505
+ });
2506
+ let min = parseInt(formatter.formatToParts(new Date(2020, 2, 3, 0)).find((p) => p.type === "hour").value, 10);
2507
+ let max = parseInt(formatter.formatToParts(new Date(2020, 2, 3, 23)).find((p) => p.type === "hour").value, 10);
2508
+ if (min === 0 && max === 23)
2509
+ return "h23";
2510
+ if (min === 24 && max === 23)
2511
+ return "h24";
2512
+ if (min === 0 && max === 11)
2513
+ return "h11";
2514
+ if (min === 12 && max === 11)
2515
+ return "h12";
2516
+ throw new Error("Unexpected hour cycle result");
2517
+ }
2518
+
2519
+ // src/ts-utils.ts
2520
+ function isNotNullOrUndefined(value) {
2521
+ return value !== void 0 && value !== null;
2522
+ }
2523
+
2524
+ // src/date/formatter.ts
2525
+ var baseTimeFormatOptions = {
2526
+ hour: "2-digit",
2527
+ minute: "2-digit",
2528
+ second: "2-digit"
2529
+ };
2530
+ var formatConfigByTimePatterns = {
2531
+ "hh:mm:ss": {
2532
+ locale: "en-GB",
2533
+ options: { ...baseTimeFormatOptions, hour12: false }
2534
+ },
2535
+ "hh:mm:ss a": {
2536
+ locale: "en-GB",
2537
+ options: { ...baseTimeFormatOptions, hour12: true }
2538
+ }
2539
+ };
2540
+ var baseDateFormatOptions = {
2541
+ day: "2-digit",
2542
+ month: "2-digit",
2543
+ year: "numeric"
2544
+ };
2545
+ var formatConfigByDatePatterns = {
2546
+ "dd.mm.yyyy": {
2547
+ locale: "de-De",
2548
+ options: { ...baseDateFormatOptions }
2549
+ },
2550
+ "dd/mm/yyyy": { locale: "en-GB", options: { ...baseDateFormatOptions } },
2551
+ "dd MMM yyyy": {
2552
+ locale: "en-GB",
2553
+ options: { ...baseDateFormatOptions, month: "short" }
2554
+ },
2555
+ "dd MMMM yyyy": {
2556
+ locale: "en-GB",
2557
+ options: { ...baseDateFormatOptions, month: "long" }
2558
+ },
2559
+ "mm/dd/yyyy": { locale: "en-US", options: { ...baseDateFormatOptions } },
2560
+ "MMM dd, yyyy": {
2561
+ locale: "en-US",
2562
+ options: { ...baseDateFormatOptions, month: "short" }
2563
+ },
2564
+ "MMMM dd, yyyy": {
2565
+ locale: "en-US",
2566
+ options: { ...baseDateFormatOptions, month: "long" }
2567
+ }
2568
+ };
2569
+ function getFormatConfigs(pattern) {
2570
+ return [
2571
+ pattern.date ? formatConfigByDatePatterns[pattern.date] : null,
2572
+ pattern.time ? formatConfigByTimePatterns[pattern.time] : null
2573
+ ];
2574
+ }
2575
+ function formatDate(pattern) {
2576
+ const formatters = getFormatConfigs(pattern).filter(isNotNullOrUndefined).map((c) => getDateFormatter(c.locale, c.options));
2577
+ return (d) => formatters.map((f) => f.format(d)).join(" ");
2578
+ }
2579
+ function getDateFormatter(locale, options) {
2580
+ return new $fb18d541ea1ad717$export$ad991b66133851cf(locale, options);
2581
+ }
2582
+
2583
+ // src/date/types.ts
2584
+ var supportedDatePatterns = [
2585
+ "dd.mm.yyyy",
2586
+ "dd/mm/yyyy",
2587
+ "dd MMM yyyy",
2588
+ "dd MMMM yyyy",
2589
+ "mm/dd/yyyy",
2590
+ "MMM dd, yyyy",
2591
+ "MMMM dd, yyyy"
2592
+ ];
2593
+ var supportedTimePatterns = ["hh:mm:ss", "hh:mm:ss a"];
2594
+ var supportedDateTimePatterns = {
2595
+ date: supportedDatePatterns,
2596
+ time: supportedTimePatterns
2597
+ };
2598
+ var isDatePattern = (pattern) => supportedDatePatterns.includes(pattern);
2599
+ var isTimePattern = (pattern) => supportedTimePatterns.includes(pattern);
2600
+ var isDateTimePattern = (pattern) => isDatePattern(pattern == null ? void 0 : pattern.date) || isTimePattern(pattern == null ? void 0 : pattern.time);
2601
+
2602
+ // src/date/utils.ts
2603
+ function toCalendarDate(d) {
2604
+ return new $35ea8db9cb2ccb90$export$99faa760c7908e4f(d.getFullYear(), d.getMonth() + 1, d.getDate());
2605
+ }
2606
+
2607
+ // src/date/dateTimePattern.ts
2608
+ var defaultPatternsByType = {
2609
+ time: "hh:mm:ss",
2610
+ date: "dd.mm.yyyy"
2611
+ };
2612
+ var fallbackDateTimePattern = {
2613
+ date: defaultPatternsByType["date"]
2614
+ };
2615
+ function dateTimePattern(type) {
2616
+ if (isTypeDescriptor(type)) {
2617
+ if (type.formatting && isDateTimePattern(type.formatting.pattern)) {
2618
+ return type.formatting.pattern;
2619
+ }
2620
+ }
2621
+ return fallbackDateTimePattern;
2622
+ }
2623
+
2624
+ // src/logging-utils.ts
2625
+ var logLevels = ["error", "warn", "info", "debug"];
2626
+ var isValidLogLevel = (value) => typeof value === "string" && logLevels.includes(value);
2627
+ var DEFAULT_LOG_LEVEL = "error";
2628
+ var NO_OP = () => void 0;
2629
+ var DEFAULT_DEBUG_LEVEL = false ? "error" : "info";
2630
+ var { loggingLevel = DEFAULT_DEBUG_LEVEL } = getLoggingSettings();
2631
+ var logger = (category) => {
2632
+ const debugEnabled2 = loggingLevel === "debug";
2633
+ const infoEnabled = debugEnabled2 || loggingLevel === "info";
2634
+ const warnEnabled = infoEnabled || loggingLevel === "warn";
2635
+ const errorEnabled = warnEnabled || loggingLevel === "error";
2636
+ const info = infoEnabled ? (message) => console.info(`[${category}] ${message}`) : NO_OP;
2637
+ const warn = warnEnabled ? (message) => console.warn(`[${category}] ${message}`) : NO_OP;
2638
+ const debug2 = debugEnabled2 ? (message) => console.debug(`[${category}] ${message}`) : NO_OP;
2639
+ const error = errorEnabled ? (message) => console.error(`[${category}] ${message}`) : NO_OP;
2640
+ if (false) {
2641
+ return {
2642
+ errorEnabled,
2643
+ error
2644
+ };
2645
+ } else {
2646
+ return {
2647
+ debugEnabled: debugEnabled2,
2648
+ infoEnabled,
2649
+ warnEnabled,
2650
+ errorEnabled,
2651
+ info,
2652
+ warn,
2653
+ debug: debug2,
2654
+ error
2655
+ };
2656
+ }
2657
+ };
2658
+ function getLoggingSettings() {
2659
+ if (typeof loggingSettings !== "undefined") {
2660
+ return loggingSettings;
2661
+ } else {
2662
+ return {
2663
+ loggingLevel: getLoggingLevelFromCookie()
2664
+ };
2665
+ }
2666
+ }
2667
+ function getLoggingLevelFromCookie() {
2668
+ const value = getCookieValue("vuu-logging-level");
2669
+ if (isValidLogLevel(value)) {
2670
+ return value;
2671
+ } else {
2672
+ return DEFAULT_LOG_LEVEL;
2673
+ }
2674
+ }
2675
+ var getLoggingConfigForWorker = () => {
2676
+ return `const loggingSettings = { loggingLevel: "${getLoggingLevelFromCookie()}"};`;
2677
+ };
2678
+
2679
+ // src/debug-utils.ts
2680
+ var { debug, debugEnabled } = logger("range-monitor");
2681
+ var RangeMonitor = class {
2682
+ constructor(source) {
2683
+ this.source = source;
2684
+ this.range = { from: 0, to: 0 };
2685
+ this.timestamp = 0;
2686
+ }
2687
+ isSet() {
2688
+ return this.timestamp !== 0;
2689
+ }
2690
+ set({ from, to }) {
2691
+ const { timestamp } = this;
2692
+ this.range.from = from;
2693
+ this.range.to = to;
2694
+ this.timestamp = performance.now();
2695
+ if (timestamp) {
2696
+ debugEnabled && debug(
2697
+ `<${this.source}> [${from}-${to}], ${(this.timestamp - timestamp).toFixed(0)} ms elapsed`
2698
+ );
2699
+ } else {
2700
+ return 0;
2701
+ }
2702
+ }
2703
+ };
2704
+
2705
+ // src/html-utils.ts
2706
+ var createEl = (elementType, className, textContent) => {
2707
+ const el = document.createElement(elementType);
2708
+ if (className) {
2709
+ el.className = className;
2710
+ }
2711
+ if (textContent) {
2712
+ el.textContent = textContent;
2713
+ }
2714
+ return el;
2715
+ };
2716
+ var getFocusableElement = (el, tabIndex) => {
2717
+ if (el) {
2718
+ if (el.hasAttribute("tabindex")) {
2719
+ const rootTabIndex = parseInt(el.getAttribute("tabindex"));
2720
+ if (!isNaN(rootTabIndex) && (tabIndex === void 0 || rootTabIndex === tabIndex)) {
2721
+ return el;
2722
+ }
2723
+ }
2724
+ const focusableEl = typeof tabIndex === "number" ? el.querySelector(`[tabindex="${tabIndex}"]`) : el.querySelector("[tabindex]");
2725
+ if (focusableEl) {
2726
+ return focusableEl;
2727
+ }
2728
+ }
2729
+ };
2730
+ var getElementDataIndex = (el) => {
2731
+ if (el) {
2732
+ const index = parseInt(el.dataset.index || "");
2733
+ if (!isNaN(index)) {
2734
+ return index;
2735
+ }
2736
+ }
2737
+ return -1;
2738
+ };
2739
+ var queryClosest = (el, cssQueryString) => el === null ? null : el.closest(cssQueryString);
2740
+ var getClosest = (el, dataProperty) => queryClosest(el, `[data-${dataProperty}]`);
2741
+ var getClosestIndexItem = (el) => getClosest(el, "index");
2742
+ function getElementByDataIndex(container, index, throwIfNotFound = false) {
2743
+ if (container === null && throwIfNotFound) {
2744
+ throw Error("html-utils getElementByDataIndex, container is null");
2745
+ }
2746
+ const element = container == null ? void 0 : container.querySelector(
2747
+ `[data-index="${index}"]`
2748
+ );
2749
+ if (element) {
2750
+ return element;
2751
+ } else if (throwIfNotFound) {
2752
+ throw Error(
2753
+ "html-utils getElementByDataIndex, Item not found with data-index='${index}'"
2754
+ );
2755
+ } else {
2756
+ return void 0;
2757
+ }
2758
+ }
2759
+ var focusFirstFocusableElement = (el, tabIndex) => {
2760
+ requestAnimationFrame(() => {
2761
+ const focusableElement = getFocusableElement(el, tabIndex);
2762
+ if (focusableElement) {
2763
+ focusableElement.focus();
2764
+ }
2765
+ });
2766
+ };
2767
+ var isSelectableElement = (el) => {
2768
+ const item = el == null ? void 0 : el.closest("[data-index]");
2769
+ if (!item || item.ariaDisabled || item.dataset.selectable === "false" || item.querySelector('[data-selectable="false"],[aria-disabled="true"]')) {
2770
+ return false;
2771
+ } else {
2772
+ return true;
2773
+ }
2774
+ };
2775
+ var size;
2776
+ function getScrollbarSize() {
2777
+ if (size === void 0) {
2778
+ let outer = document.createElement("div");
2779
+ outer.className = "scrollable-content";
2780
+ outer.style.width = "50px";
2781
+ outer.style.height = "50px";
2782
+ outer.style.overflowY = "scroll";
2783
+ outer.style.position = "absolute";
2784
+ outer.style.top = "-200px";
2785
+ outer.style.left = "-200px";
2786
+ const inner = document.createElement("div");
2787
+ inner.style.height = "100px";
2788
+ inner.style.width = "100%";
2789
+ outer.appendChild(inner);
2790
+ document.body.appendChild(outer);
2791
+ const outerWidth = outer.offsetWidth;
2792
+ const innerWidth = inner.offsetWidth;
2793
+ document.body.removeChild(outer);
2794
+ size = outerWidth - innerWidth;
2795
+ outer = null;
2796
+ }
2797
+ return size;
2798
+ }
2799
+ var dispatchMouseEvent = (el, type) => {
2800
+ const evt = new MouseEvent(type, {
2801
+ view: window,
2802
+ bubbles: true,
2803
+ cancelable: true
2804
+ });
2805
+ el.dispatchEvent(evt);
2806
+ };
2807
+ var dispatchCustomEvent = (el, type) => {
2808
+ const evt = new Event(type, {
2809
+ bubbles: true,
2810
+ cancelable: true
2811
+ });
2812
+ el.dispatchEvent(evt);
2813
+ };
2814
+
2815
+ // src/event-emitter.ts
2816
+ function isArrayOfListeners(listeners) {
2817
+ return Array.isArray(listeners);
2818
+ }
2819
+ function isOnlyListener(listeners) {
2820
+ return !Array.isArray(listeners);
2821
+ }
2822
+ var _events;
2823
+ var EventEmitter = class {
2824
+ constructor() {
2825
+ __privateAdd(this, _events, /* @__PURE__ */ new Map());
2826
+ }
2827
+ addListener(event, listener) {
2828
+ const listeners = __privateGet(this, _events).get(event);
2829
+ if (!listeners) {
2830
+ __privateGet(this, _events).set(event, listener);
2831
+ } else if (isArrayOfListeners(listeners)) {
2832
+ listeners.push(listener);
2833
+ } else if (isOnlyListener(listeners)) {
2834
+ __privateGet(this, _events).set(event, [listeners, listener]);
2835
+ }
2836
+ }
2837
+ removeListener(event, listener) {
2838
+ if (!__privateGet(this, _events).has(event)) {
2839
+ return;
2840
+ }
2841
+ const listenerOrListeners = __privateGet(this, _events).get(event);
2842
+ let position = -1;
2843
+ if (listenerOrListeners === listener) {
2844
+ __privateGet(this, _events).delete(event);
2845
+ } else if (Array.isArray(listenerOrListeners)) {
2846
+ for (let i = length; i-- > 0; ) {
2847
+ if (listenerOrListeners[i] === listener) {
2848
+ position = i;
2849
+ break;
2850
+ }
2851
+ }
2852
+ if (position < 0) {
2853
+ return;
2854
+ }
2855
+ if (listenerOrListeners.length === 1) {
2856
+ listenerOrListeners.length = 0;
2857
+ __privateGet(this, _events).delete(event);
2858
+ } else {
2859
+ listenerOrListeners.splice(position, 1);
2860
+ }
2861
+ }
2862
+ }
2863
+ removeAllListeners(event) {
2864
+ if (event && __privateGet(this, _events).has(event)) {
2865
+ __privateGet(this, _events).delete(event);
2866
+ } else if (event === void 0) {
2867
+ __privateGet(this, _events).clear();
2868
+ }
2869
+ }
2870
+ emit(event, ...args) {
2871
+ if (__privateGet(this, _events)) {
2872
+ const handler = __privateGet(this, _events).get(event);
2873
+ if (handler) {
2874
+ this.invokeHandler(handler, args);
2875
+ }
2876
+ }
2877
+ }
2878
+ once(event, listener) {
2879
+ const handler = (...args) => {
2880
+ this.removeListener(event, handler);
2881
+ listener(...args);
2882
+ };
2883
+ this.on(event, handler);
2884
+ }
2885
+ on(event, listener) {
2886
+ this.addListener(event, listener);
2887
+ }
2888
+ hasListener(event, listener) {
2889
+ const listeners = __privateGet(this, _events).get(event);
2890
+ if (Array.isArray(listeners)) {
2891
+ return listeners.includes(listener);
2892
+ } else {
2893
+ return listeners === listener;
2894
+ }
2895
+ }
2896
+ invokeHandler(handler, args) {
2897
+ if (isArrayOfListeners(handler)) {
2898
+ handler.slice().forEach((listener) => this.invokeHandler(listener, args));
2899
+ } else {
2900
+ switch (args.length) {
2901
+ case 0:
2902
+ handler();
2903
+ break;
2904
+ case 1:
2905
+ handler(args[0]);
2906
+ break;
2907
+ case 2:
2908
+ handler(args[0], args[1]);
2909
+ break;
2910
+ default:
2911
+ handler.call(null, ...args);
2912
+ }
2913
+ }
2914
+ }
2915
+ };
2916
+ _events = new WeakMap();
2917
+
2918
+ // src/round-decimal.ts
2919
+ var PUNCTUATION_STR = String.fromCharCode(8200);
2920
+ var DIGIT_STR = String.fromCharCode(8199);
2921
+ var DECIMALS_AUTO = -1;
2922
+ var Space = {
2923
+ DIGIT: DIGIT_STR,
2924
+ TWO_DIGITS: DIGIT_STR + DIGIT_STR,
2925
+ THREE_DIGITS: DIGIT_STR + DIGIT_STR + DIGIT_STR,
2926
+ FULL_PADDING: [
2927
+ null,
2928
+ PUNCTUATION_STR + DIGIT_STR,
2929
+ PUNCTUATION_STR + DIGIT_STR + DIGIT_STR,
2930
+ PUNCTUATION_STR + DIGIT_STR + DIGIT_STR + DIGIT_STR,
2931
+ PUNCTUATION_STR + DIGIT_STR + DIGIT_STR + DIGIT_STR + DIGIT_STR
2932
+ ]
2933
+ };
2934
+ var Zero = {
2935
+ DIGIT: "0",
2936
+ TWO_DIGITS: "00",
2937
+ THREE_DIGITS: "000",
2938
+ FULL_PADDING: [null, "0", "00", "000", "0000"]
2939
+ };
2940
+ function padLeft(value, maxLength = 6) {
2941
+ return (LEADING_FILL + value).slice(-maxLength);
2942
+ }
2943
+ var LEADING_FILL = DIGIT_STR + DIGIT_STR + DIGIT_STR + DIGIT_STR + DIGIT_STR + DIGIT_STR + DIGIT_STR + DIGIT_STR + DIGIT_STR;
2944
+ var Align = {
2945
+ Right: "right",
2946
+ Center: "center",
2947
+ Left: "left"
2948
+ };
2949
+ function pad(n, dp, Pad) {
2950
+ let len = n.length;
2951
+ const diff = dp - len;
2952
+ if (diff > 0) {
2953
+ if (diff === 1) {
2954
+ n = n + Pad.DIGIT;
2955
+ } else if (diff === 2) {
2956
+ n = n + Pad.TWO_DIGITS;
2957
+ } else if (diff === 3) {
2958
+ n = n + Pad.THREE_DIGITS;
2959
+ }
2960
+ } else {
2961
+ if (diff < 0) {
2962
+ n = n.slice(0, dp);
2963
+ len = dp;
2964
+ }
2965
+ if (Pad === Space && n.charAt(len - 1) === "0") {
2966
+ n = n.replace(/0+$/, "");
2967
+ return pad(n, dp, Pad);
2968
+ }
2969
+ }
2970
+ return n;
2971
+ }
2972
+ function roundDecimal(value, align = Align.Right, decimals = 4, zeroPad, alignOnDecimals) {
2973
+ if (value === void 0 || typeof value !== "number" || isNaN(value)) {
2974
+ return "";
2975
+ }
2976
+ let integral, fraction, Pad;
2977
+ const [part1, part2 = ""] = value.toString().split(".");
2978
+ const actualDecimals = part2.length;
2979
+ integral = parseFloat(part1).toLocaleString();
2980
+ if (align === Align.Left && alignOnDecimals) {
2981
+ integral = padLeft(integral);
2982
+ }
2983
+ if (decimals === DECIMALS_AUTO || actualDecimals === decimals) {
2984
+ fraction = part2;
2985
+ } else if (actualDecimals > decimals) {
2986
+ fraction = parseFloat("0." + part2).toFixed(decimals).slice(2);
2987
+ } else {
2988
+ if (Pad = zeroPad ? Zero : alignOnDecimals && align !== Align.Left ? Space : null) {
2989
+ if (actualDecimals === 0) {
2990
+ fraction = Pad.FULL_PADDING[decimals];
2991
+ } else {
2992
+ fraction = pad(part2, decimals, Pad);
2993
+ }
2994
+ } else {
2995
+ fraction = part2;
2996
+ }
2997
+ }
2998
+ return integral + (fraction ? "." + fraction : "");
2999
+ }
3000
+
3001
+ // src/formatting-utils.ts
3002
+ var DEFAULT_NUMERIC_FORMAT = {};
3003
+ var defaultValueFormatter = (value) => value == null ? "" : typeof value === "string" ? value : value.toString();
3004
+ var dateFormatter = (column) => {
3005
+ const pattern = dateTimePattern(column.type);
3006
+ const formatter = formatDate(pattern);
3007
+ return (value) => {
3008
+ if (typeof value === "number" && value !== 0) {
3009
+ return formatter(new Date(value));
3010
+ } else {
3011
+ return "";
3012
+ }
3013
+ };
3014
+ };
3015
+ var numericFormatter = ({
3016
+ align = "right",
3017
+ type
3018
+ }) => {
3019
+ var _a;
3020
+ if (type === void 0 || typeof type === "string") {
3021
+ return defaultValueFormatter;
3022
+ } else {
3023
+ const {
3024
+ alignOnDecimals = false,
3025
+ decimals,
3026
+ zeroPad = false
3027
+ } = (_a = type.formatting) != null ? _a : DEFAULT_NUMERIC_FORMAT;
3028
+ return (value) => {
3029
+ if (typeof value === "string" && (value.startsWith("\u03A3") || value.startsWith("["))) {
3030
+ return value;
3031
+ }
3032
+ const number = typeof value === "number" ? value : typeof value === "string" ? parseFloat(value) : void 0;
3033
+ return roundDecimal(number, align, decimals, zeroPad, alignOnDecimals);
3034
+ };
3035
+ }
3036
+ };
3037
+ var mapFormatter = (map) => {
3038
+ return (value) => {
3039
+ var _a;
3040
+ return (_a = map[value]) != null ? _a : "";
3041
+ };
3042
+ };
3043
+ var getValueFormatter = (column, serverDataType = column.serverDataType) => {
3044
+ if (isDateTimeColumn(column)) {
3045
+ return dateFormatter(column);
3046
+ }
3047
+ const { type } = column;
3048
+ if (isTypeDescriptor(type) && isMappedValueTypeRenderer(type == null ? void 0 : type.renderer)) {
3049
+ return mapFormatter(type.renderer.map);
3050
+ } else if (serverDataType === "string" || serverDataType === "char") {
3051
+ return (value) => value;
3052
+ } else if (serverDataType === "double") {
3053
+ return numericFormatter(column);
3054
+ }
3055
+ return defaultValueFormatter;
3056
+ };
3057
+
3058
+ // src/getUniqueId.ts
3059
+ var getUniqueId = () => `hw-${Math.round(Math.random() * 1e5)}`;
3060
+
3061
+ // src/group-utils.ts
3062
+ function addGroupColumn(groupBy, column) {
3063
+ if (groupBy) {
3064
+ return groupBy.concat(column.name);
3065
+ } else {
3066
+ return [column.name];
3067
+ }
3068
+ }
3069
+
3070
+ // src/input-utils.ts
3071
+ var isCharacterKey = (key) => key.length === 1;
3072
+ var isQuoteKey = (evt) => {
3073
+ return evt.key === '"' || evt.key === "'";
3074
+ };
3075
+
3076
+ // src/invariant.ts
3077
+ function invariant(condition, message) {
3078
+ if (!condition) {
3079
+ const error = new Error(message);
3080
+ error.name = "Invariant Violation";
3081
+ error.framesToPop = 1;
3082
+ throw error;
3083
+ }
3084
+ }
3085
+
3086
+ // src/itemToString.ts
3087
+ var isPlainObject = (obj) => Object.prototype.toString.call(obj) === "[object Object]";
3088
+ function itemToString(item) {
3089
+ if (typeof item === "string") {
3090
+ return item;
3091
+ } else if (!isPlainObject(item)) {
3092
+ return String(item);
3093
+ }
3094
+ if (Object.prototype.hasOwnProperty.call(item, "label")) {
3095
+ return String(item.label);
3096
+ }
3097
+ console.warn(
3098
+ [
3099
+ "itemToString: you've likely forgotten to set the label prop on the item object.",
3100
+ "You can also provide your own `itemToString` implementation."
3101
+ ].join("\n")
3102
+ );
3103
+ return "";
3104
+ }
3105
+
3106
+ // src/json-utils.ts
3107
+ var { COUNT } = metadataKeys;
3108
+ var isJsonData = (value) => typeof value === "object" && value !== null;
3109
+ var vuuRowDataItemTypes = ["boolean", "number", "string"];
3110
+ var isVuuRowDataItem = (value) => vuuRowDataItemTypes.includes(typeof value);
3111
+ var typeofVuuDataItem = (value) => typeof value === "boolean" ? "boolean" : typeof value === "number" ? "number" : "string";
3112
+ var getCellValue = (attribute, attributeValue) => {
3113
+ if (isJsonData(attributeValue)) {
3114
+ return { attribute: `${attribute}+`, attributeValue: "", type: "json" };
3115
+ } else if (attributeValue === void 0) {
3116
+ return {
3117
+ attribute,
3118
+ attributeValue: "undefined",
3119
+ type: "string"
3120
+ };
3121
+ } else if (isVuuRowDataItem(attributeValue)) {
3122
+ return {
3123
+ attribute,
3124
+ attributeValue,
3125
+ type: typeofVuuDataItem(attributeValue)
3126
+ };
3127
+ } else {
3128
+ throw Error(`unsupported type ${typeof attributeValue} in JSON`);
3129
+ }
3130
+ };
3131
+ var jsonColumnType = {
3132
+ name: "json",
3133
+ renderer: {
3134
+ name: "json"
3135
+ }
3136
+ };
3137
+ var jsonToDataSourceRows = (json) => {
3138
+ const cols = [];
3139
+ cols.push(
3140
+ {
3141
+ name: "col 1",
3142
+ type: jsonColumnType
3143
+ },
3144
+ {
3145
+ name: "col 2",
3146
+ type: jsonColumnType
3147
+ }
3148
+ );
3149
+ const rows = [];
3150
+ addChildValues(rows, json, cols);
3151
+ return [cols, rows];
3152
+ };
3153
+ var addChildValues = (rows, json, cols, index = { value: 0 }, keyBase = "$root", depth = 0) => {
3154
+ let leafCount = 0;
3155
+ let rowCount = 0;
3156
+ if (depth === cols.length - 1) {
3157
+ cols.push({
3158
+ name: `col ${cols.length + 1}`,
3159
+ hidden: true,
3160
+ type: jsonColumnType
3161
+ });
3162
+ }
3163
+ const columnEntries = Object.entries(json);
3164
+ for (let i = 0; i < columnEntries.length; i++, index.value += 1) {
3165
+ const [key, value] = columnEntries[i];
3166
+ const { attribute, attributeValue, type } = getCellValue(key, value);
3167
+ const isLeaf = type !== "json";
3168
+ const blanks = Array(depth).fill("");
3169
+ const fullKey = `${keyBase}|${key}`;
3170
+ const row = [index.value, index.value, isLeaf, false, depth, 0, fullKey, 0, ...blanks, attribute, attributeValue];
3171
+ rows.push(row);
3172
+ rowCount += 1;
3173
+ if (isJsonData(value)) {
3174
+ const [nestedLeafCount, nestedRowCount] = addChildValues(
3175
+ rows,
3176
+ value,
3177
+ cols,
3178
+ { value: index.value + 1 },
3179
+ fullKey,
3180
+ depth + 1
3181
+ );
3182
+ row[COUNT] = nestedLeafCount;
3183
+ leafCount += nestedLeafCount;
3184
+ rowCount += nestedRowCount;
3185
+ index.value += nestedRowCount;
3186
+ } else {
3187
+ leafCount += 1;
3188
+ }
3189
+ }
3190
+ return [leafCount, rowCount];
3191
+ };
3192
+
3193
+ // src/keyboard-utils.ts
3194
+ var ArrowUp = "ArrowUp";
3195
+ var ArrowDown = "ArrowDown";
3196
+ var ArrowLeft = "ArrowLeft";
3197
+ var ArrowRight = "ArrowRight";
3198
+ var Enter = "Enter";
3199
+ var Escape = "Escape";
3200
+ var Home = "Home";
3201
+ var End = "End";
3202
+ var PageUp = "PageUp";
3203
+ var PageDown = "PageDown";
3204
+ var Space2 = " ";
3205
+ var Tab = "Tab";
3206
+
3207
+ // src/keyset.ts
3208
+ var EMPTY2 = [];
3209
+ var KeySet = class {
3210
+ constructor(range) {
3211
+ this.keys = /* @__PURE__ */ new Map();
3212
+ this.nextKeyValue = 0;
3213
+ this.range = range;
3214
+ this.init(range);
3215
+ }
3216
+ next(free = EMPTY2) {
3217
+ if (free.length > 0) {
3218
+ return free.shift();
3219
+ } else {
3220
+ return this.nextKeyValue++;
3221
+ }
3222
+ }
3223
+ init({ from, to }) {
3224
+ this.keys.clear();
3225
+ this.nextKeyValue = 0;
3226
+ for (let rowIndex = from; rowIndex < to; rowIndex++) {
3227
+ const nextKeyValue = this.next();
3228
+ this.keys.set(rowIndex, nextKeyValue);
3229
+ }
3230
+ return true;
3231
+ }
3232
+ reset(range) {
3233
+ const { from, to } = range;
3234
+ const newSize = to - from;
3235
+ const currentSize = this.range.to - this.range.from;
3236
+ this.range = range;
3237
+ if (currentSize > newSize) {
3238
+ return this.init(range);
3239
+ }
3240
+ const freeKeys = [];
3241
+ this.keys.forEach((keyValue, rowIndex) => {
3242
+ if (rowIndex < from || rowIndex >= to) {
3243
+ freeKeys.push(keyValue);
3244
+ this.keys.delete(rowIndex);
3245
+ }
3246
+ });
3247
+ for (let rowIndex = from; rowIndex < to; rowIndex++) {
3248
+ if (!this.keys.has(rowIndex)) {
3249
+ const nextKeyValue = this.next(freeKeys);
3250
+ this.keys.set(rowIndex, nextKeyValue);
3251
+ }
3252
+ }
3253
+ return false;
3254
+ }
3255
+ keyFor(rowIndex) {
3256
+ const key = this.keys.get(rowIndex);
3257
+ if (key === void 0) {
3258
+ console.log(`key not found
3
3259
  keys: ${this.toDebugString()}
4
- `),Error(`KeySet, no key found for rowIndex ${t}`);return n}toDebugString(){return`${this.keys.size} keys
5
- ${Array.from(this.keys.entries()).sort(([t],[n])=>t-n).map(([t,n])=>`${t}=>${n}`).join(",")}]
6
- `}};var Fa=e=>e!==void 0&&"children"in e;var an=e=>e!==void 0&&typeof e!="function",La=e=>{if(e&&Object.values(e).every(t=>an(t)))throw Error("module file, no components")};var Pa=(e=21)=>{let t="",n=crypto.getRandomValues(new Uint8Array(e));for(;e--;){let r=n[e]&63;r<36?t+=r.toString(36):r<62?t+=(r-26).toString(36).toUpperCase():r<63?t+="_":t+="-"}return t};var W=require("react"),Va=[],ka=e=>{let t=Array.isArray(e),n=t?e.length:W.Children.count(e);return t&&e.every(W.isValidElement)?e:n===1&&!t&&(0,W.isValidElement)(e)?[e]:n>1?e:Va};function Oa(e,t){let n;return(...r)=>{clearTimeout(n),n=window.setTimeout(()=>e(...r),t)}}function _a(e,t){let n=!1,r;function o(){r==null?n=!1:(e(...r),r=void 0,setTimeout(o,t))}return(...i)=>{n?r=i:(e(...i),n=!0,setTimeout(o,t))}}var{IS_LEAF:Ua,KEY:Wa,IDX:Ke,SELECTED:Na}=E,Ha=e=>[t=>t[Ke]*e,t=>Math.floor(t/e),!1],Ba=(e,t,n)=>[(r,o=0)=>{let i=n.current*t;return(r[Ke]-o)*e-i},r=>{let o=n.current*t;return Math.round((r+o)/e)},!0],Ga=(e,t)=>{if(t===-1)return null;{let n=e.querySelector(`[aria-rowindex="${t+1}"]`);if(n)return n;throw Error(`getRowElementAtIndex no row found for index index ${t}`)}},Ya=e=>{let t=e.ariaRowIndex;if(t!=null){let n=parseInt(t)-1;if(isNaN(n))throw Error(`getIndexFromRowElement row element aria rowindex invalid ${t}`);return n}else throw Error("getIndexFromRowElement row element does not have aria rowindex")},Ja=(e,t)=>{console.log({columnMap:t});let{[Ua]:n,[Wa]:r,[Ke]:o,[Na]:i}=e,a={key:r,index:o,isGroupRow:!n,isSelected:i>0,data:{}};for(let[s,u]of Object.entries(t))a.data[s]=e[u];return a};var ae=[],{SELECTED:sn}=E,x={False:0,True:1,First:2,Last:4},ja=e=>(e[sn]&x.True)===x.True,Qa=e=>e!==void 0&&(e[sn]&x.Last)===x.Last,qa=(e,t)=>{let n=typeof e=="number"?e:e[0],r=typeof t=="number"?t:t[0];return n-r},Ka=(e,t,n,r,o=!1)=>e==="single"||(e==="extended"||e==="checkbox")&&!o&&!r||!r&&!o?ae:!r&&o?es(t,n):ae,Za=(e,t)=>{for(let n=0;n<e.length;n++){let r=e[n];if(typeof r=="number"){if(r===t-1)return!0;if(r>t)return!1}else{if(r[0]===t+1||r[1]===t-1)return!0;if(r[0]>t)return!1}}return!1},Xa=(e,t)=>{for(let n=0;n<e.length;n++){let r=e[n];if(typeof r=="number"){if(r===t-1){let o=e[n+1];if(o===t+1){let i=[r,o];return e.slice(0,n).concat([i]).concat(e.slice(n+2))}else{let i=[r,t];return e.slice(0,n).concat([i]).concat(e.slice(n+1))}}else if(r>t)break}else if(r[0]===t+1){let o=[t,r[1]];return e.slice(0,n).concat([o]).concat(e.slice(n+1))}else if(r[1]===t-1){let o=e[n+1];if(Array.isArray(o)&&o[0]===t+1){let i=[r[0],o[1]];return e.slice(0,n).concat([i]).concat(e.slice(n+2))}else if(typeof o=="number"&&o===t+1){let i=[r[0],o];return e.slice(0,n).concat([i]).concat(e.slice(n+2))}else{let i=[r[0],t];return e.slice(0,n).concat([i]).concat(e.slice(n+1))}}}return e},za=(e,t,n,r,o=!1,i=-1)=>{let a=e==="single",s=e==="extended"||e==="checkbox",u=a||s&&!o&&!r;if(e==="none")return ae;if(u)return[n];if(r){if(t.length===0)return[n];{let l=n>i?[i,n]:[n,i];return ts(t,l)}}else if(!r)return Za(t,n)?Xa(t,n):t==null?void 0:t.concat(n).sort(qa);return ae};function es(e,t){if(e.includes(t))return e.filter(n=>n!==t);{let n=[];for(let r of e)Array.isArray(r)&&se(r,t)?n.push(...fs(r,t)):n.push(r);return n}}function ts(e,t){let[n,r]=t;return e.reduce((o,i)=>(typeof i=="number"?i<n||i>r?o.push(i):os(o.at(-1),i)||o.push(t):ns(i,t)?o.push(rs(i,t)):(t[1]<i[0]&&o.push(t),o.push(i)),o),[])}var ns=(e,t)=>e[1]>=t[0]&&e[1]<=t[1]||e[0]>=t[0]&&e[0]<=t[1],rs=(e,t)=>[Math.min(e[0],t[0]),Math.max(e[1],t[1])],os=(e,t)=>typeof e>"u"||typeof e=="number"?!1:se(e,t),se=(e,t)=>t>=e[0]&&t<=e[1],is=x.True+x.First+x.Last,as=x.True+x.First,ss=x.True+x.Last,us=(e,t)=>{for(let n of e)if(typeof n=="number"){if(n===t)return is}else if(se(n,t))return t===n[0]?as:t===n[1]?ss:x.True;return x.False},ls=(e,t)=>{for(let n of e)if(typeof n=="number"){if(n===t)return!0;if(n>t)return!1}else{if(se(n,t))return!0;if(n[0]>t)return!1}return!1},cs=e=>{if(e.every(n=>typeof n=="number"))return e;let t=[];for(let n of e)if(typeof n=="number")t.push(n);else for(let r=n[0];r<=n[1];r++)t.push(r);return t};function fs([e,t],n){return n===e?[[e+1,t]]:n===t?[[e,t-1]]:t-e===2?[e,t]:n===t-1?[[e,t-2],t]:[[e,n-1],[n+1,t]]}var ms=e=>e==="A"?"D":e==="D"?void 0:"A",ds={sortDefs:[]},ps=({sortDefs:e},{name:t},n=!1,r)=>{if(n)return e.find(a=>a.column===t)?{sortDefs:e.map(a=>a.column===t?{column:t,sortType:a.sortType==="A"?"D":"A"}:a)}:{sortDefs:e.concat({column:t,sortType:r!=null?r:"A"})};let o=typeof r=="string"?r:e.length===1&&e[0].column===t?ms(e[0].sortType):"A";return o?{sortDefs:[{column:t,sortType:o}]}:ds},hs=({sortDefs:e},t,n)=>{if(n===void 0){let r=e.find(o=>o.column===t.name);if(r)return{sortDefs:[{column:t.name,sortType:r.sortType==="A"?"D":"A"}]}}return{sortDefs:[{column:t.name,sortType:n!=null?n:"A"}]}},gs=({sortDefs:e},t,n="A")=>{let r={column:t.name,sortType:n};return e.length>0?{sortDefs:e.concat(r)}:{sortDefs:[r]}};var ys=e=>{let t=e.trim(),n=t.lastIndexOf(" ");return n===-1?t:t.slice(n+1)},Cs=e=>e.length===0?"":e[0].toUpperCase()+e.slice(1),Ds=/(?<!(^|[A-Z]))(?=[A-Z])|(?<!^)(?=[A-Z][a-z])/,$s=e=>{let[t,...n]=e.split(Ds);return`${Cs(t)} ${n.join(" ")}`};var M=require("react");function un(e){var t,n,r="";if(typeof e=="string"||typeof e=="number")r+=e;else if(typeof e=="object")if(Array.isArray(e))for(t=0;t<e.length;t++)e[t]&&(n=un(e[t]))&&(r&&(r+=" "),r+=n);else for(t in e)e[t]&&(r&&(r+=" "),r+=t);return r}function bs(){for(var e,t,n=0,r="";n<arguments.length;)(e=arguments[n++])&&(t=un(e))&&(r&&(r+=" "),r+=t);return r}var ln=bs;var pn=require("react/jsx-runtime"),cn="medium",fn="salt-theme",mn="light",ue=(0,M.createContext)({density:"high",theme:"vuu",themeMode:"light"}),xs=["vuu","vuu-density-high","light"],Ts=e=>{let t=(0,M.useContext)(ue);return e?[e.themeClass,e.densityClass,e.dataMode]:t?[`${t.theme}-theme`,`${t.theme}-density-${t.density}`,t.themeMode]:xs},Es=(e,t,n,r)=>{var o;return(0,M.isValidElement)(e)?(0,M.cloneElement)(e,{className:ln((o=e.props)==null?void 0:o.className,`${t}-theme`,`${t}-density-${r}`),"data-mode":n}):(console.warn(`
3260
+ `);
3261
+ throw Error(`KeySet, no key found for rowIndex ${rowIndex}`);
3262
+ }
3263
+ return key;
3264
+ }
3265
+ toDebugString() {
3266
+ return `${this.keys.size} keys
3267
+ ${Array.from(this.keys.entries()).sort(([key1], [key2]) => key1 - key2).map(([k, v]) => `${k}=>${v}`).join(",")}]
3268
+ `;
3269
+ }
3270
+ };
3271
+
3272
+ // src/local-config.ts
3273
+ var getLocalEntity = (url) => {
3274
+ const data = localStorage.getItem(url);
3275
+ return data ? JSON.parse(data) : void 0;
3276
+ };
3277
+ var getAllLocalEntity = (url) => Object.entries(localStorage).filter(([key]) => key.includes(url)).map(([, value]) => JSON.parse(value));
3278
+ var saveLocalEntity = (url, data) => {
3279
+ try {
3280
+ localStorage.setItem(url, JSON.stringify(data));
3281
+ return data;
3282
+ } catch {
3283
+ return void 0;
3284
+ }
3285
+ };
3286
+
3287
+ // src/menu-utils.ts
3288
+ var isGroupMenuItemDescriptor = (menuItem) => menuItem !== void 0 && "children" in menuItem;
3289
+
3290
+ // src/module-utils.ts
3291
+ var isModule = (entity) => entity !== void 0 && typeof entity !== "function";
3292
+ var assertModuleExportsAtLeastOneComponent = (module2) => {
3293
+ if (module2 && Object.values(module2).every((item) => isModule(item))) {
3294
+ throw Error("module file, no components");
3295
+ }
3296
+ };
3297
+
3298
+ // src/nanoid/index.ts
3299
+ var uuid = (size2 = 21) => {
3300
+ let id = "";
3301
+ const bytes = crypto.getRandomValues(new Uint8Array(size2));
3302
+ while (size2--) {
3303
+ const byte = bytes[size2] & 63;
3304
+ if (byte < 36) {
3305
+ id += byte.toString(36);
3306
+ } else if (byte < 62) {
3307
+ id += (byte - 26).toString(36).toUpperCase();
3308
+ } else if (byte < 63) {
3309
+ id += "_";
3310
+ } else {
3311
+ id += "-";
3312
+ }
3313
+ }
3314
+ return id;
3315
+ };
3316
+
3317
+ // src/react-utils.ts
3318
+ var import_react = require("react");
3319
+ var EMPTY_ARRAY = [];
3320
+ var asReactElements = (children) => {
3321
+ const isArray = Array.isArray(children);
3322
+ const count = isArray ? children.length : import_react.Children.count(children);
3323
+ if (isArray && children.every(import_react.isValidElement)) {
3324
+ return children;
3325
+ } else if (count === 1 && !isArray && (0, import_react.isValidElement)(children)) {
3326
+ return [children];
3327
+ } else if (count > 1) {
3328
+ return children;
3329
+ } else {
3330
+ return EMPTY_ARRAY;
3331
+ }
3332
+ };
3333
+
3334
+ // src/perf-utils.ts
3335
+ function debounce(callback, timeInterval) {
3336
+ let timeout;
3337
+ return (...args) => {
3338
+ clearTimeout(timeout);
3339
+ timeout = window.setTimeout(() => callback(...args), timeInterval);
3340
+ };
3341
+ }
3342
+ function throttle(callback, limit) {
3343
+ let wait = false;
3344
+ let lastArgs = void 0;
3345
+ function checkLastArgs() {
3346
+ if (lastArgs == void 0) {
3347
+ wait = false;
3348
+ } else {
3349
+ callback(...lastArgs);
3350
+ lastArgs = void 0;
3351
+ setTimeout(checkLastArgs, limit);
3352
+ }
3353
+ }
3354
+ return (...args) => {
3355
+ if (wait) {
3356
+ lastArgs = args;
3357
+ } else {
3358
+ callback(...args);
3359
+ wait = true;
3360
+ setTimeout(checkLastArgs, limit);
3361
+ }
3362
+ };
3363
+ }
3364
+
3365
+ // src/row-utils.ts
3366
+ var { IS_LEAF: IS_LEAF2, KEY: KEY3, IDX, SELECTED } = metadataKeys;
3367
+ var actualRowPositioning = (rowHeight) => [
3368
+ (row) => row[IDX] * rowHeight,
3369
+ (position) => Math.floor(position / rowHeight),
3370
+ false
3371
+ ];
3372
+ var virtualRowPositioning = (rowHeight, virtualisedExtent, pctScrollTop) => [
3373
+ (row, offset = 0) => {
3374
+ const rowOffset = pctScrollTop.current * virtualisedExtent;
3375
+ return (row[IDX] - offset) * rowHeight - rowOffset;
3376
+ },
3377
+ /*
3378
+ Return index position of closest row
3379
+ */
3380
+ (position) => {
3381
+ const rowOffset = pctScrollTop.current * virtualisedExtent;
3382
+ return Math.round((position + rowOffset) / rowHeight);
3383
+ },
3384
+ true
3385
+ ];
3386
+ var getRowElementAtIndex = (container, rowIndex) => {
3387
+ if (rowIndex === -1) {
3388
+ return null;
3389
+ } else {
3390
+ const activeRow = container.querySelector(
3391
+ `[aria-rowindex="${rowIndex + 1}"]`
3392
+ );
3393
+ if (activeRow) {
3394
+ return activeRow;
3395
+ } else {
3396
+ throw Error(
3397
+ `getRowElementAtIndex no row found for index index ${rowIndex}`
3398
+ );
3399
+ }
3400
+ }
3401
+ };
3402
+ var getIndexFromRowElement = (rowElement) => {
3403
+ const rowIndex = rowElement.ariaRowIndex;
3404
+ if (rowIndex != null) {
3405
+ const index = parseInt(rowIndex) - 1;
3406
+ if (!isNaN(index)) {
3407
+ return index;
3408
+ } else {
3409
+ throw Error(
3410
+ `getIndexFromRowElement row element aria rowindex invalid ${rowIndex}`
3411
+ );
3412
+ }
3413
+ } else {
3414
+ throw Error(
3415
+ "getIndexFromRowElement row element does not have aria rowindex"
3416
+ );
3417
+ }
3418
+ };
3419
+ var asDataSourceRowObject = (row, columnMap) => {
3420
+ console.log({ columnMap });
3421
+ const {
3422
+ [IS_LEAF2]: isLeaf,
3423
+ [KEY3]: key,
3424
+ [IDX]: index,
3425
+ [SELECTED]: selected
3426
+ } = row;
3427
+ const rowObject = {
3428
+ key,
3429
+ index,
3430
+ isGroupRow: !isLeaf,
3431
+ isSelected: selected > 0,
3432
+ data: {}
3433
+ };
3434
+ for (const [colName, colIdx] of Object.entries(columnMap)) {
3435
+ rowObject.data[colName] = row[colIdx];
3436
+ }
3437
+ return rowObject;
3438
+ };
3439
+
3440
+ // src/selection-utils.ts
3441
+ var NO_SELECTION = [];
3442
+ var { SELECTED: SELECTED2 } = metadataKeys;
3443
+ var RowSelected = {
3444
+ False: 0,
3445
+ True: 1,
3446
+ First: 2,
3447
+ Last: 4
3448
+ };
3449
+ var isRowSelected = (row) => (row[SELECTED2] & RowSelected.True) === RowSelected.True;
3450
+ var isRowSelectedLast = (row) => row !== void 0 && (row[SELECTED2] & RowSelected.Last) === RowSelected.Last;
3451
+ var inAscendingOrder = (item1, item2) => {
3452
+ const n1 = typeof item1 === "number" ? item1 : item1[0];
3453
+ const n2 = typeof item2 === "number" ? item2 : item2[0];
3454
+ return n1 - n2;
3455
+ };
3456
+ var deselectItem = (selectionModel, selected, itemIndex, rangeSelect, keepExistingSelection = false) => {
3457
+ const singleSelect = selectionModel === "single";
3458
+ const multiSelect = selectionModel === "extended" || selectionModel === "checkbox";
3459
+ const actsLikeSingleSelect = singleSelect || multiSelect && !keepExistingSelection && !rangeSelect;
3460
+ if (actsLikeSingleSelect || !rangeSelect && !keepExistingSelection) {
3461
+ return NO_SELECTION;
3462
+ } else if (!rangeSelect && keepExistingSelection) {
3463
+ return removeSelectedItem(selected, itemIndex);
3464
+ }
3465
+ return NO_SELECTION;
3466
+ };
3467
+ var newSelectedFillsGapOrExtends = (selection, itemIndex) => {
3468
+ for (let i = 0; i < selection.length; i++) {
3469
+ const item = selection[i];
3470
+ if (typeof item === "number") {
3471
+ if (item === itemIndex - 1) {
3472
+ return true;
3473
+ } else if (item > itemIndex) {
3474
+ return false;
3475
+ }
3476
+ } else if (item[0] === itemIndex + 1 || item[1] === itemIndex - 1) {
3477
+ return true;
3478
+ } else if (item[0] > itemIndex) {
3479
+ return false;
3480
+ }
3481
+ }
3482
+ return false;
3483
+ };
3484
+ var fillGapOrExtendSelection = (selection, itemIndex) => {
3485
+ for (let i = 0; i < selection.length; i++) {
3486
+ const item = selection[i];
3487
+ if (typeof item === "number") {
3488
+ if (item === itemIndex - 1) {
3489
+ const nextSelectionItem = selection[i + 1];
3490
+ if (nextSelectionItem === itemIndex + 1) {
3491
+ const newRange = [item, nextSelectionItem];
3492
+ return selection.slice(0, i).concat([newRange]).concat(selection.slice(i + 2));
3493
+ } else {
3494
+ const newRange = [item, itemIndex];
3495
+ return selection.slice(0, i).concat([newRange]).concat(selection.slice(i + 1));
3496
+ }
3497
+ } else if (item > itemIndex) {
3498
+ break;
3499
+ }
3500
+ } else if (item[0] === itemIndex + 1) {
3501
+ const newRange = [itemIndex, item[1]];
3502
+ return selection.slice(0, i).concat([newRange]).concat(selection.slice(i + 1));
3503
+ } else if (item[1] === itemIndex - 1) {
3504
+ const nextItem = selection[i + 1];
3505
+ if (Array.isArray(nextItem) && nextItem[0] === itemIndex + 1) {
3506
+ const newRange = [item[0], nextItem[1]];
3507
+ return selection.slice(0, i).concat([newRange]).concat(selection.slice(i + 2));
3508
+ } else if (typeof nextItem === "number" && nextItem === itemIndex + 1) {
3509
+ const newRange = [item[0], nextItem];
3510
+ return selection.slice(0, i).concat([newRange]).concat(selection.slice(i + 2));
3511
+ } else {
3512
+ const newRange = [item[0], itemIndex];
3513
+ return selection.slice(0, i).concat([newRange]).concat(selection.slice(i + 1));
3514
+ }
3515
+ }
3516
+ }
3517
+ return selection;
3518
+ };
3519
+ var selectItem = (selectionModel, selected, itemIndex, rangeSelect, keepExistingSelection = false, activeItemIndex = -1) => {
3520
+ const singleSelect = selectionModel === "single";
3521
+ const multiSelect = selectionModel === "extended" || selectionModel === "checkbox";
3522
+ const actsLikeSingleSelect = singleSelect || multiSelect && !keepExistingSelection && !rangeSelect;
3523
+ if (selectionModel === "none") {
3524
+ return NO_SELECTION;
3525
+ } else if (actsLikeSingleSelect) {
3526
+ return [itemIndex];
3527
+ } else if (rangeSelect) {
3528
+ if (selected.length === 0) {
3529
+ return [itemIndex];
3530
+ } else {
3531
+ const range = itemIndex > activeItemIndex ? [activeItemIndex, itemIndex] : [itemIndex, activeItemIndex];
3532
+ return insertRange(selected, range);
3533
+ }
3534
+ } else if (!rangeSelect) {
3535
+ if (newSelectedFillsGapOrExtends(selected, itemIndex)) {
3536
+ return fillGapOrExtendSelection(selected, itemIndex);
3537
+ } else {
3538
+ return selected == null ? void 0 : selected.concat(itemIndex).sort(inAscendingOrder);
3539
+ }
3540
+ } else if (multiSelect) {
3541
+ }
3542
+ return NO_SELECTION;
3543
+ };
3544
+ function removeSelectedItem(selected, itemIndex) {
3545
+ if (selected.includes(itemIndex)) {
3546
+ return selected.filter((selectedItem) => selectedItem !== itemIndex);
3547
+ } else {
3548
+ const newSelected = [];
3549
+ for (const selectedItem of selected) {
3550
+ if (Array.isArray(selectedItem)) {
3551
+ if (rangeIncludes(selectedItem, itemIndex)) {
3552
+ newSelected.push(...splitRange(selectedItem, itemIndex));
3553
+ } else {
3554
+ newSelected.push(selectedItem);
3555
+ }
3556
+ } else {
3557
+ newSelected.push(selectedItem);
3558
+ }
3559
+ }
3560
+ return newSelected;
3561
+ }
3562
+ }
3563
+ function insertRange(selected, range) {
3564
+ const [from, to] = range;
3565
+ return selected.reduce((newSelected, selectedItem) => {
3566
+ if (typeof selectedItem === "number") {
3567
+ if (selectedItem < from || selectedItem > to) {
3568
+ newSelected.push(selectedItem);
3569
+ } else if (!includedInRange(newSelected.at(-1), selectedItem)) {
3570
+ newSelected.push(range);
3571
+ }
3572
+ } else if (overlappingRange(selectedItem, range)) {
3573
+ newSelected.push(mergeRanges(selectedItem, range));
3574
+ } else {
3575
+ if (range[1] < selectedItem[0]) {
3576
+ newSelected.push(range);
3577
+ }
3578
+ newSelected.push(selectedItem);
3579
+ }
3580
+ return newSelected;
3581
+ }, []);
3582
+ }
3583
+ var overlappingRange = (r1, r2) => r1[1] >= r2[0] && r1[1] <= r2[1] || r1[0] >= r2[0] && r1[0] <= r2[1];
3584
+ var mergeRanges = (r1, r2) => [
3585
+ Math.min(r1[0], r2[0]),
3586
+ Math.max(r1[1], r2[1])
3587
+ ];
3588
+ var includedInRange = (selectedItem, index) => {
3589
+ if (typeof selectedItem === "undefined" || typeof selectedItem === "number") {
3590
+ return false;
3591
+ } else
3592
+ return rangeIncludes(selectedItem, index);
3593
+ };
3594
+ var rangeIncludes = (range, index) => index >= range[0] && index <= range[1];
3595
+ var SINGLE_SELECTED_ROW = RowSelected.True + RowSelected.First + RowSelected.Last;
3596
+ var FIRST_SELECTED_ROW_OF_BLOCK = RowSelected.True + RowSelected.First;
3597
+ var LAST_SELECTED_ROW_OF_BLOCK = RowSelected.True + RowSelected.Last;
3598
+ var getSelectionStatus = (selected, itemIndex) => {
3599
+ for (const item of selected) {
3600
+ if (typeof item === "number") {
3601
+ if (item === itemIndex) {
3602
+ return SINGLE_SELECTED_ROW;
3603
+ }
3604
+ } else if (rangeIncludes(item, itemIndex)) {
3605
+ if (itemIndex === item[0]) {
3606
+ return FIRST_SELECTED_ROW_OF_BLOCK;
3607
+ } else if (itemIndex === item[1]) {
3608
+ return LAST_SELECTED_ROW_OF_BLOCK;
3609
+ } else {
3610
+ return RowSelected.True;
3611
+ }
3612
+ }
3613
+ }
3614
+ return RowSelected.False;
3615
+ };
3616
+ var isSelected = (selected, itemIndex) => {
3617
+ for (const item of selected) {
3618
+ if (typeof item === "number") {
3619
+ if (item === itemIndex) {
3620
+ return true;
3621
+ } else if (item > itemIndex) {
3622
+ return false;
3623
+ }
3624
+ } else if (rangeIncludes(item, itemIndex)) {
3625
+ return true;
3626
+ } else if (item[0] > itemIndex) {
3627
+ return false;
3628
+ }
3629
+ }
3630
+ return false;
3631
+ };
3632
+ var expandSelection = (selected) => {
3633
+ if (selected.every((selectedItem) => typeof selectedItem === "number")) {
3634
+ return selected;
3635
+ }
3636
+ const expandedSelected = [];
3637
+ for (const selectedItem of selected) {
3638
+ if (typeof selectedItem === "number") {
3639
+ expandedSelected.push(selectedItem);
3640
+ } else {
3641
+ for (let i = selectedItem[0]; i <= selectedItem[1]; i++) {
3642
+ expandedSelected.push(i);
3643
+ }
3644
+ }
3645
+ }
3646
+ return expandedSelected;
3647
+ };
3648
+ function splitRange([from, to], itemIndex) {
3649
+ if (itemIndex === from) {
3650
+ return [[from + 1, to]];
3651
+ } else if (itemIndex === to) {
3652
+ return [[from, to - 1]];
3653
+ } else if (to - from === 2) {
3654
+ return [from, to];
3655
+ } else if (itemIndex === to - 1) {
3656
+ return [[from, to - 2], to];
3657
+ } else {
3658
+ return [
3659
+ [from, itemIndex - 1],
3660
+ [itemIndex + 1, to]
3661
+ ];
3662
+ }
3663
+ }
3664
+
3665
+ // src/sort-utils.ts
3666
+ var cycleSortType = (sortType) => sortType === "A" ? "D" : sortType === "D" ? void 0 : "A";
3667
+ var NO_SORT = { sortDefs: [] };
3668
+ var toggleOrApplySort = ({ sortDefs }, { name: column }, extendSort = false, sortType) => {
3669
+ if (extendSort) {
3670
+ const existingDef = sortDefs.find((sortDef) => sortDef.column === column);
3671
+ if (existingDef) {
3672
+ return {
3673
+ sortDefs: sortDefs.map(
3674
+ (sortDef) => sortDef.column === column ? {
3675
+ column,
3676
+ sortType: sortDef.sortType === "A" ? "D" : "A"
3677
+ } : sortDef
3678
+ )
3679
+ };
3680
+ } else {
3681
+ return {
3682
+ sortDefs: sortDefs.concat({
3683
+ column,
3684
+ sortType: sortType != null ? sortType : "A"
3685
+ })
3686
+ };
3687
+ }
3688
+ }
3689
+ const newSortType = typeof sortType === "string" ? sortType : sortDefs.length === 1 && sortDefs[0].column === column ? cycleSortType(sortDefs[0].sortType) : "A";
3690
+ return newSortType ? {
3691
+ sortDefs: [{ column, sortType: newSortType }]
3692
+ } : NO_SORT;
3693
+ };
3694
+ var setSortColumn = ({ sortDefs }, column, sortType) => {
3695
+ if (sortType === void 0) {
3696
+ const columnSort = sortDefs.find((item) => item.column === column.name);
3697
+ if (columnSort) {
3698
+ return {
3699
+ sortDefs: [
3700
+ {
3701
+ column: column.name,
3702
+ sortType: columnSort.sortType === "A" ? "D" : "A"
3703
+ }
3704
+ ]
3705
+ };
3706
+ }
3707
+ }
3708
+ return { sortDefs: [{ column: column.name, sortType: sortType != null ? sortType : "A" }] };
3709
+ };
3710
+ var addSortColumn = ({ sortDefs }, column, sortType = "A") => {
3711
+ const sortEntry = { column: column.name, sortType };
3712
+ if (sortDefs.length > 0) {
3713
+ return {
3714
+ sortDefs: sortDefs.concat(sortEntry)
3715
+ };
3716
+ } else {
3717
+ return { sortDefs: [sortEntry] };
3718
+ }
3719
+ };
3720
+
3721
+ // src/text-utils.ts
3722
+ var lastWord = (text) => {
3723
+ const trimmedText = text.trim();
3724
+ const pos = trimmedText.lastIndexOf(" ");
3725
+ if (pos === -1) {
3726
+ return trimmedText;
3727
+ } else {
3728
+ return trimmedText.slice(pos + 1);
3729
+ }
3730
+ };
3731
+ var capitalize = (text) => text.length === 0 ? "" : text[0].toUpperCase() + text.slice(1);
3732
+ var regexp_worfify = /(?<!(^|[A-Z]))(?=[A-Z])|(?<!^)(?=[A-Z][a-z])/;
3733
+ var wordify = (text) => {
3734
+ const [firstWord, ...rest] = text.split(regexp_worfify);
3735
+ return `${capitalize(firstWord)} ${rest.join(" ")}`;
3736
+ };
3737
+
3738
+ // src/ThemeProvider.tsx
3739
+ var import_react2 = require("react");
3740
+
3741
+ // ../../node_modules/clsx/dist/clsx.mjs
3742
+ function r(e) {
3743
+ var t, f, n = "";
3744
+ if ("string" == typeof e || "number" == typeof e)
3745
+ n += e;
3746
+ else if ("object" == typeof e)
3747
+ if (Array.isArray(e))
3748
+ for (t = 0; t < e.length; t++)
3749
+ e[t] && (f = r(e[t])) && (n && (n += " "), n += f);
3750
+ else
3751
+ for (t in e)
3752
+ e[t] && (n && (n += " "), n += t);
3753
+ return n;
3754
+ }
3755
+ function clsx() {
3756
+ for (var e, t, f = 0, n = ""; f < arguments.length; )
3757
+ (e = arguments[f++]) && (t = r(e)) && (n && (n += " "), n += t);
3758
+ return n;
3759
+ }
3760
+ var clsx_default = clsx;
3761
+
3762
+ // src/ThemeProvider.tsx
3763
+ var import_jsx_runtime = require("react/jsx-runtime");
3764
+ var DEFAULT_DENSITY = "medium";
3765
+ var DEFAULT_THEME = "salt-theme";
3766
+ var DEFAULT_THEME_MODE = "light";
3767
+ var ThemeContext = (0, import_react2.createContext)({
3768
+ density: "high",
3769
+ theme: "vuu",
3770
+ themeMode: "light"
3771
+ });
3772
+ var DEFAULT_THEME_ATTRIBUTES = [
3773
+ "vuu",
3774
+ "vuu-density-high",
3775
+ "light"
3776
+ ];
3777
+ var useThemeAttributes = (themeAttributes) => {
3778
+ const context = (0, import_react2.useContext)(ThemeContext);
3779
+ if (themeAttributes) {
3780
+ return [
3781
+ themeAttributes.themeClass,
3782
+ themeAttributes.densityClass,
3783
+ themeAttributes.dataMode
3784
+ ];
3785
+ } else if (context) {
3786
+ return [
3787
+ `${context.theme}-theme`,
3788
+ `${context.theme}-density-${context.density}`,
3789
+ context.themeMode
3790
+ ];
3791
+ }
3792
+ return DEFAULT_THEME_ATTRIBUTES;
3793
+ };
3794
+ var createThemedChildren = (children, theme, themeMode, density) => {
3795
+ var _a;
3796
+ if ((0, import_react2.isValidElement)(children)) {
3797
+ return (0, import_react2.cloneElement)(children, {
3798
+ className: clsx_default(
3799
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
3800
+ (_a = children.props) == null ? void 0 : _a.className,
3801
+ `${theme}-theme`,
3802
+ `${theme}-density-${density}`
3803
+ ),
3804
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
3805
+ // @ts-expect-error
3806
+ "data-mode": themeMode
3807
+ });
3808
+ } else {
3809
+ console.warn(
3810
+ `
7
3811
  ThemeProvider can only apply CSS classes for theming to a single nested child element of the ThemeProvider.
8
- Wrap elements with a single container`),e)},dn=({applyThemeClasses:e=!1,children:t,theme:n,themeMode:r,density:o})=>{var p,d,y;let{density:i,themeMode:a,theme:s}=(0,M.useContext)(ue),u=(p=o!=null?o:i)!=null?p:cn,l=(d=r!=null?r:a)!=null?d:mn,f=(y=n!=null?n:s)!=null?y:fn,g=e?Es(t,f,l,u):t;return(0,pn.jsx)(ue.Provider,{value:{themeMode:l,density:u,theme:f},children:g})};dn.displayName="ThemeProvider";var Ms=(e,t)=>{let n=new URL(document.location.href),r=n.searchParams.get(e);if(r)return r;let o=n.hash,a=new RegExp(`${e}=([a-zA-Z]*)`).exec(o);return a?a[1]:t},ws=e=>new URL(document.location.href).searchParams.has(e);var hn=require("react"),Rs=0,vs=e=>(0,hn.useMemo)(()=>e!=null?e:`vuu-${++Rs}`,[e]);var le=require("react"),Ss=(e,t)=>{let n=(0,le.useRef)(!1);(0,le.useLayoutEffect)(()=>{n.current?e():n.current=!0},t)};
3812
+ Wrap elements with a single container`
3813
+ );
3814
+ return children;
3815
+ }
3816
+ };
3817
+ var ThemeProvider = ({
3818
+ applyThemeClasses = false,
3819
+ children,
3820
+ theme: themeProp,
3821
+ themeMode: themeModeProp,
3822
+ density: densityProp
3823
+ }) => {
3824
+ var _a, _b, _c;
3825
+ const {
3826
+ density: inheritedDensity,
3827
+ themeMode: inheritedThemeMode,
3828
+ theme: inheritedTheme
3829
+ } = (0, import_react2.useContext)(ThemeContext);
3830
+ const density = (_a = densityProp != null ? densityProp : inheritedDensity) != null ? _a : DEFAULT_DENSITY;
3831
+ const themeMode = (_b = themeModeProp != null ? themeModeProp : inheritedThemeMode) != null ? _b : DEFAULT_THEME_MODE;
3832
+ const theme = (_c = themeProp != null ? themeProp : inheritedTheme) != null ? _c : DEFAULT_THEME;
3833
+ const themedChildren = applyThemeClasses ? createThemedChildren(children, theme, themeMode, density) : children;
3834
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ThemeContext.Provider, { value: { themeMode, density, theme }, children: themedChildren });
3835
+ };
3836
+ ThemeProvider.displayName = "ThemeProvider";
3837
+
3838
+ // src/url-utils.ts
3839
+ var getUrlParameter = (paramName, defaultValue) => {
3840
+ const url = new URL(document.location.href);
3841
+ const parameter = url.searchParams.get(paramName);
3842
+ if (parameter) {
3843
+ return parameter;
3844
+ }
3845
+ const hashParams = url.hash;
3846
+ const regex = new RegExp(`${paramName}=([a-zA-Z]*)`);
3847
+ const result = regex.exec(hashParams);
3848
+ if (result) {
3849
+ return result[1];
3850
+ }
3851
+ return defaultValue;
3852
+ };
3853
+ var hasUrlParameter = (paramName) => new URL(document.location.href).searchParams.has(paramName);
3854
+
3855
+ // src/useId.ts
3856
+ var import_react3 = require("react");
3857
+ var vuuComponentIdCount = 0;
3858
+ var useId = (id) => (0, import_react3.useMemo)(() => id != null ? id : `vuu-${++vuuComponentIdCount}`, [id]);
3859
+
3860
+ // src/useLayoutEffectSkipFirst.ts
3861
+ var import_react4 = require("react");
3862
+ var useLayoutEffectSkipFirst = (func, deps) => {
3863
+ const goodToGo = (0, import_react4.useRef)(false);
3864
+ (0, import_react4.useLayoutEffect)(() => {
3865
+ if (goodToGo.current) {
3866
+ func();
3867
+ } else {
3868
+ goodToGo.current = true;
3869
+ }
3870
+ }, deps);
3871
+ };
9
3872
  //# sourceMappingURL=index.js.map