argus-table 0.0.1 → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/argus-table.js +38 -13
- package/dist/argus-table.js.map +1 -1
- package/dist/cdn/argus-table.js +260 -434
- package/dist/cdn/argus-table.js.map +1 -1
- package/dist/controllers/pin-scroll-controller.js +78 -0
- package/dist/controllers/pin-scroll-controller.js.map +1 -0
- package/dist/custom-elements.json +61 -1
- package/dist/render/body.js +0 -1
- package/dist/render/body.js.map +1 -1
- package/dist/render/header.js +0 -1
- package/dist/render/header.js.map +1 -1
- package/dist/styles/base.js +1 -225
- package/dist/styles/base.js.map +1 -1
- package/package.json +2 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"argus-table.js","names":["t","e","s","o","n","r","i","S","c","i","e","h","r","o","n","a","c","l","p","d","u","f","b","y","t","s","t","i","s","e","h","o","n","r","l","c","u","d","f","v","m","p","M","j","s","i","t","e","r","o","t","o","e","t","r","n","t","e","i","n","i","e","r","s","t","memo","orderByColumnPinning","orderByColumnPinning","o","c","u","s","t","r","l","p","h","v","o","i","n","f","e","nothing","styleMap","repeat","nothing","repeat","repeat","nothing","LitElement","styleMap","_decorate","property","customElement","t$4","e$4","s$3","o$5","n$5","o","t","e","s","r$4","i$6","S$1","n","c$4","i$5","e$3","h$2","r$3","o$4","n$4","a$1","c$3","l$2","p$2","d$2","u$3","i","f$2","b$1","y$1","h","r","t$3","i$4","s$2","e$2","h$1","o$3","n$3","r$2","l$1","c$2","a","u$2","d$1","f$1","v$1","_","m$1","p$1","g","$","y","b","A","C","P","V","N","l","c","u","d","f","x","S","v","I","L","z","H","M$1","R","k","Z","j$1","B","D","s$1","i$3","\"finalized\"","o$2","t$2","o$1","r$1","n$2","t$1","e$1","i$2","n$1","i$1","pathCache","readPath","keys","path","value","source","key","finite","resolveColumns","seen","defs","def","index","minWidth","maxWidth","clamp","px","pin","flex","width","base","getValue","accessor","row","functionalUpdate","updater","input","cloneState","proto","copy","makeObjectMap","copyInstancePropertiesWithoutMemos","targetRecord","target","hasOwn","obj","makeStateUpdater","instance","old","isPlainContainer","getEnumerableOwnKeys","MAX_STATE_COMPARE_DEPTH","stateSlicesEqual","stateSlicesEqualAtDepth","depth","keysA","keysB","recordA","recordB","setStateSlice","onChangeKey","onChange","next","current","isEqual","isFunction","flattenBy","flat","recurse","item","children","getChildren","arr","memo$1","deps","result","newDeps","memoDeps","depArgs","depsChanged","onAfterCompare","onBeforeUpdate","fn","onAfterUpdate","skipFirstRun","hasRun","tableMemo","memoOptions","debugOptions","table","untrack","getFunctionNameInfo","parentName","fnKey","staticFnName","splitBy","assignTableAPIs","apis","assignPrototypeAPIs","memoKey","args","self","callMemoOrStaticFn","staticFn","cell_getValue","cell","cell_renderValue","cell_getContext","coreCellsFeature","prototype","getColumnPrototype","features","constructColumn","resolvedColumnDef","columnDef","accessorKey","accessorKeyString","id","accessorFn","originalRow","columnPrototype","column","parent","initFns","getIsColumnVisible","getVisibleLeafColumns","getVisibleCells","getVisibleCellsByColumnId","orderLeafColumns","orderedTable","leafColumns","columns","orderByColumnPinning$1","items","getColumnId","getItemsByColumnId","getPinnedVisibleLeafColumns","position","expandRowModel","rowModel","autoResetExpanded","autoResetPageIndex","autoResetSorting","autoResetCellSelection","column_getFlatColumns","col","column_getLeafColumns","table_getDefaultColumnDef","props","feature","constructColumns","columnDefs","groupingColumnDef","table_getAllColumns","table_getAllFlatColumns","table_getAllFlatColumnsById","flatColumns","table_getAllLeafColumns","table_getAllLeafColumnsById","table_getColumn","columnId","coreColumnsFeature","getHeaderPrototype","constructHeader","headerPrototype","header","options","getMaxHeaderDepth","maxDepth","formatHeaderGroupId","headerFamily","formatHeaderId","childHeaderId","countPendingHeadersForColumn","count","headers","constructHeaderGroup","headerGroup","pendingParentHeaders","headersToGroup","headerToGroup","latestPendingParentHeader","isLeafHeader","isPlaceholder","headerGroupInitFns","headerGroups","updateHeaderSpans","colSpan","j","child","rowSpan","chainChild","buildHeaderGroups","allColumns","bottomHeaders","columnsToGroup","collectLeafHeaders","leafHeaders","header_getLeafHeaders","header_getContext","table_getHeaderGroups","table_getFooterGroups","table_getFlatHeaders","table_getLeafHeaders","topHeaders","coreHeadersFeature","getRowPrototype","constructRow","rowPrototype","rowIndex","original","parentId","subRows","createCoreRowModel","_createCoreRowModel","accessRows","rows","originalRows","parentRow","data","table_getCoreRowModel","table_getPreFilteredRowModel","table_getFilteredRowModel","table_getPreGroupedRowModel","table_getGroupedRowModel","table_getPreSortedRowModel","table_getSortedRowModel","table_getPreExpandedRowModel","table_getExpandedRowModel","table_getPrePaginatedRowModel","table_getPaginatedRowModel","table_getRowModel","coreRowModelsFeature","getCellPrototype","constructCell","cellPrototype","row_getDisplayIndex","displayIndex","table_getRowsInDisplayOrder","row_getValue","row_getUniqueValues","row_renderValue","row_getLeafRows","table_getMaxSubRowDepth","row_getParentRow","row_getParentRows","parentRows","currentRow","row_getAllCells","cache","cells","row_getAllCellsByColumnId","table_getRowId","table_getRow","searchAll","rowId","coreRowsFeature","table_syncExternalStateToBaseAtoms","currentState","externalState","state","capturedState","baseAtom","rawExternalState","compare","table_publishExternalState","table_reset","snap","table_mergeOptions","newOptions","mergedOptions","descriptors","atoms","initialState","table_setOptions","coreFeatures","tableFeatures","atomToStore","store","atom","createReactiveSystem","link","prevDep","sub","dep","nextDep","version","prevSub","newLink","unlink","nextSub","unwatched","propagate","stack","flags","isValidLink","notify","subSubs","checkDirty","checkDepth","dirty","update","subs","shallowPropagate","firstSub","hasMultipleSubs","checkLink","toObserver","isObserver","nextHandler","errorHandler","completionHandler","queuedEffects","cycle","effect","purgeDeps","notifyIndex","queuedEffectsLength","activeSub","batchDepth","batch","flush","depsTail","createAtom","isComputed","valueOrFn","getter","obs","observerOrFn","observed","oldValue","newValue","run","effectObj","shallow","objA","objB","getOwnKeys","getInitialTableState","constructTable","_reactivity","tableOptions","_columnMeta","_filterMeta","_tableMeta","featuresList","atomKey","_atom","wrappedAtom","syncExternal","syncAtomToWrappedSub","syncWrappedToAtomSub","stateKeys","externalAtom","reactiveState","controlledState","controlledValue","snapshot","getDefaultColumnPinningState","column_pin","columnIds","column_getCanPin","leafColumn","column_getIsPinned","start","end","column_getPinnedIndex","row_getCenterVisibleCells","allCells","startAndEnd","row_getStartVisibleCells","allVisibleCells","row_getEndVisibleCells","table_setColumnPinning","table_resetColumnPinning","defaultState","table_getIsSomeColumnsPinned","pinningState","table_getStartHeaderGroups","leafColumnsById","orderedLeafColumns","table_getEndHeaderGroups","table_getCenterHeaderGroups","table_getStartFooterGroups","table_getEndFooterGroups","table_getCenterFooterGroups","table_getStartFlatHeaders","leftHeaderGroups","table_getEndFlatHeaders","rightHeaderGroups","table_getCenterFlatHeaders","centerHeaderGroups","table_getStartLeafHeaders","table_getEndLeafHeaders","table_getCenterLeafHeaders","table_getStartLeafColumns","table_getEndLeafColumns","table_getCenterLeafColumns","table_getPinnedLeafColumns","table_getStartVisibleLeafColumns","table_getEndVisibleLeafColumns","table_getCenterVisibleLeafColumns","table_getPinnedVisibleLeafColumns","orderByColumnPinning","columnPinning","itemsByColumnId","ordered","columnPinningFeature","getDefaultColumnSizingState","getDefaultColumnSizingColumnDef","column_getSize","defaultSizes","columnSizing","columnSize","buildColumnOffsets","starts","afters","sizes","size","after","table_getColumnOffsets","toOffsetsKey","column_getStart","column_getAfter","column_resetSize","rest","sumHeaderSize","sum","header_getSize","header_getStart","prevSiblingHeader","table_setColumnSizing","table_resetColumnSizing","sumColumnSizes","table_getTotalSize","table_getStartTotalSize","table_getCenterTotalSize","table_getEndTotalSize","columnSizingFeature","reSplitAlphaNumeric","constructSortFn","sortFn","dataValueA","rowA","dataValueB","rowB","resolveDataValue","sortFn_alphanumeric","toString","dataValue","compareAlphanumeric","sortFn_text","compareBasic","sortFn_datetime","toDateSortValue","sortFn_basic","ai","bi","aLen","aStr","bLen","bStr","aIsNumeric","isDigit","bIsNumeric","aEnd","findChunkEnd","bEnd","stringComparison","compareStringChunks","numericComparison","compareNumericChunks","countRemainingChunks","charCode","str","isNumeric","aLength","aStart","bLength","bStart","minLength","aCode","bCode","aSignificantStart","bSignificantStart","aSignificantLength","bSignificantLength","an","parseSmallInt","bn","getDefaultSortingState","table_setSorting","table_resetSorting","table_autoResetSorting","column_getAutoSortFn","sortFns","firstRows","sortFnName","isString","column_getAutoSortDir","column_getSortFn","column_toggleSorting","nextSortingOrder","column_getNextSortingOrder","multi","column_getCanMultiSort","hasManualValue","desc","existingIndex","existingSorting","newSorting","sortAction","nextDesc","isMultiMode","column_getFirstSortDir","firstSortDirection","isSorted","column_getIsSorted","column_getCanSort","columnSort","column_getSortIndex","column_clearSorting","column_getToggleSortingHandler","canSort","rowSortingFeature","createSortedRowModel","_table","_createSortedRowModel","preSortedRowModel","sorting","sortedFlatRows","availableSorting","sort","resolvedSorting","sortEntry","compareRows","sortUndefined","isDesc","sortInt","aValue","bValue","aUndefined","bUndefined","sortData","sortedData","changed","flatIndex","sortedSubRows","cloned","storeReactivityBindings","defaultRowId","toTanStack","createTableModel","initial","resolved","byId","tanStackColumns","views","rowViews","indexById","buildViews","center","view","merged","prev","clamped","controllable","controlled","RowPool","#size","#pinned","#slots","keep","ids","slot","#free","entries","startResizeDrag","startX","down","frame","pending","onWidth","move","startWidth","event","direction","handle","TableController","getMeasurementKey","createLazyMeasurementsView","prop","receiver","memo","opts","isInitial","memoizedFunction","getDeps","notUndefined","msg","approxEqual","debounce","timeoutId","targetWindow","ms","classifyScrollEvent","isScrolling","pendingWrite","offset","scrollOffset","elementMax","holdOffset","max","clampedMaxAtWrite","isAnimating","phase","externalRetiresCommand","kind","command","FLING_WINDOW_MS","flingSpedUp","last","samples","mid","first","recent","before","flingCaught","from","_isIOSResult","isIOSWebKit","mtp","_iosMomentumOverridesWritesResult","iosMomentumOverridesWrites","momentumOverridesWrites","touchListenerOptions","IosGesture","host","ownReadBack","external","moved","win","onTouchStart","onTouchEnd","tail","getRect","element","clientWidth","clientHeight","createFrameQueue","defaultKeyExtractor","defaultRangeExtractor","overscan","range","len","observeElementRect","handler","rect","height","frames","observer","addEventListenerOptions","supportsScrollend","observeOffset","registerScrollendEvent","fallback","cb","readOffset","createHandler","endHandler","observeElementOffset","horizontal","el","isRtl","measureElement","entry","box","cachedSize","elementScroll","_a","adjustedOffset","adjustments","isRtlElement","scrollElement","initialScrollPhase","behavior","atTarget","isSmoothScroll","isAppendWithTrim","nextCount","firstKey","getNextKey","removedKeys","removedCount","prevCount","getPreviousKey","retainedCount","Virtualizer","now","_b","_ro","_frames","delivering","observeQueued","pendingObservations","get","measureEntry","node","cacheKey","cachedNode","opts2","prevOptions","anchor","followOnAppend","edgeKeysChanged","measurements","previousItems","prevFirstKey","prevLastKey","anchorDelta","anchorKey","anchorOffset","newMeasurements","idx","getItemKey","anchorItem","newOffset","sync","cached","wasOverscrolled","elementOffset","prevOffset","prevDirection","queued","sample","maxAtWrite","lanes","itemSizeCache","enabled","min","need","runningStart","paddingStart","scrollMargin","prevIdx","gap","measuredSize","laneLastIndex","laneEnds","filledLanes","m","cachedLane","lane","shouldCacheLane","laneAssignmentMode","prevIndex","prevInLane","bestLane","bestEnd","bestIdx","outerSize","maxScrollOffset","listEnd","calculateRangeImpl","startIndex","endIndex","rangeExtractor","attributeName","indexStr","scrollIndex","bufferSize","minIndex","maxIndex","key2","prevNode","_c","itemStart","itemSize","delta","wasAtEnd","prevTotalSize","defaultShouldAdjust","shouldAdjustScroll","adjustedSync","virtualItems","indexes","measurement","hold","useFlat","findNearestBinarySearch","write","lowMaxes","doc","scroller","done","property","style","priority","crossSize","crossSizeBefore","stop","threshold","align","toOffset","maxOffset","toOffset2","initialAlign","offsetInfo","lastIdx","endByLane","val","writtenOffset","targetOffset","STABLE_FRAMES","targetChanged","viewport","distance","keepSmooth","low","high","middle","currentValue","getCurrentValue","findNearestBinarySearchFlat","lastIndex","startIndex2","endIndex2","limit","endPerLane","pos","startPerLane","VirtualizerControllerBase","partial","VirtualizerController","VirtualController","#virtual","#config","#pool","RANGE_CHANGE","SORT_CHANGE","COLUMN_RESIZE","ROW_CLICK","CELL_CLICK","fire","name","u$1","p","M","p$3","h$3","v$2","w","toChild","content","formatValue","cellSlot","colIndex","headerSlot","cellParts","parts","ariaSort","sorted","pinStyle","renderBody","totalSize","renderRow","active","activeCol","renderLightDom","model","headerContent","cellContent","context","renderHeader","handlers","resizeHandle","baseStyles","__decorate","decorators","attachGridInternals","internals","sortColumnOf","RESIZE_STEP","gridCell","role","rowIndexOf","track","ArgusTable","_args","#sorting","#sizing","#internals","#table","#rowPx","#window","#focusPending","#lastRange","#headerHandlers","#requestSort","#direction","#requestResize","#onKeydown","inHeader","towardEnd","#currentWidth","#activate","#moveTo","#onFocusin","#active","#onClick","#observeProbe","#probeObserver","#reconcileActive","pinned","side","bodyActive","#measureRowHeight","#focusActive","#appliedResize","detail","#appliedSort","selector","found","sized","applied","probe"],"sources":["../../../../node_modules/.pnpm/@lit+reactive-element@2.1.2/node_modules/@lit/reactive-element/css-tag.js","../../../../node_modules/.pnpm/@lit+reactive-element@2.1.2/node_modules/@lit/reactive-element/reactive-element.js","../../../../node_modules/.pnpm/lit-html@3.3.3/node_modules/lit-html/lit-html.js","../../../../node_modules/.pnpm/lit-element@4.2.2/node_modules/lit-element/lit-element.js","../../../../node_modules/.pnpm/@lit+reactive-element@2.1.2/node_modules/@lit/reactive-element/decorators/custom-element.js","../../../../node_modules/.pnpm/@lit+reactive-element@2.1.2/node_modules/@lit/reactive-element/decorators/property.js","../../../../node_modules/.pnpm/lit-html@3.3.3/node_modules/lit-html/directive.js","../../../../node_modules/.pnpm/lit-html@3.3.3/node_modules/lit-html/directives/style-map.js","../../../core/src/columns/resolve-columns.ts","../../../../node_modules/.pnpm/@tanstack+table-core@9.3.1/node_modules/@tanstack/table-core/dist/utils.js","../../../../node_modules/.pnpm/@tanstack+table-core@9.3.1/node_modules/@tanstack/table-core/dist/core/cells/coreCellsFeature.utils.js","../../../../node_modules/.pnpm/@tanstack+table-core@9.3.1/node_modules/@tanstack/table-core/dist/core/cells/coreCellsFeature.js","../../../../node_modules/.pnpm/@tanstack+table-core@9.3.1/node_modules/@tanstack/table-core/dist/core/columns/constructColumn.js","../../../../node_modules/.pnpm/@tanstack+table-core@9.3.1/node_modules/@tanstack/table-core/dist/core/featureStubs.js","../../../../node_modules/.pnpm/@tanstack+table-core@9.3.1/node_modules/@tanstack/table-core/dist/core/columns/coreColumnsFeature.utils.js","../../../../node_modules/.pnpm/@tanstack+table-core@9.3.1/node_modules/@tanstack/table-core/dist/core/columns/coreColumnsFeature.js","../../../../node_modules/.pnpm/@tanstack+table-core@9.3.1/node_modules/@tanstack/table-core/dist/core/headers/constructHeader.js","../../../../node_modules/.pnpm/@tanstack+table-core@9.3.1/node_modules/@tanstack/table-core/dist/core/headers/buildHeaderGroups.js","../../../../node_modules/.pnpm/@tanstack+table-core@9.3.1/node_modules/@tanstack/table-core/dist/core/headers/coreHeadersFeature.utils.js","../../../../node_modules/.pnpm/@tanstack+table-core@9.3.1/node_modules/@tanstack/table-core/dist/core/headers/coreHeadersFeature.js","../../../../node_modules/.pnpm/@tanstack+table-core@9.3.1/node_modules/@tanstack/table-core/dist/core/rows/constructRow.js","../../../../node_modules/.pnpm/@tanstack+table-core@9.3.1/node_modules/@tanstack/table-core/dist/core/row-models/createCoreRowModel.js","../../../../node_modules/.pnpm/@tanstack+table-core@9.3.1/node_modules/@tanstack/table-core/dist/core/row-models/coreRowModelsFeature.utils.js","../../../../node_modules/.pnpm/@tanstack+table-core@9.3.1/node_modules/@tanstack/table-core/dist/core/row-models/coreRowModelsFeature.js","../../../../node_modules/.pnpm/@tanstack+table-core@9.3.1/node_modules/@tanstack/table-core/dist/core/cells/constructCell.js","../../../../node_modules/.pnpm/@tanstack+table-core@9.3.1/node_modules/@tanstack/table-core/dist/core/rows/coreRowsFeature.utils.js","../../../../node_modules/.pnpm/@tanstack+table-core@9.3.1/node_modules/@tanstack/table-core/dist/core/rows/coreRowsFeature.js","../../../../node_modules/.pnpm/@tanstack+table-core@9.3.1/node_modules/@tanstack/table-core/dist/core/table/coreTablesFeature.utils.js","../../../../node_modules/.pnpm/@tanstack+table-core@9.3.1/node_modules/@tanstack/table-core/dist/core/table/coreTablesFeature.js","../../../../node_modules/.pnpm/@tanstack+table-core@9.3.1/node_modules/@tanstack/table-core/dist/core/coreFeatures.js","../../../../node_modules/.pnpm/@tanstack+table-core@9.3.1/node_modules/@tanstack/table-core/dist/helpers/tableFeatures.js","../../../../node_modules/.pnpm/@tanstack+table-core@9.3.1/node_modules/@tanstack/table-core/dist/core/reactivity/coreReactivityFeature.utils.js","../../../../node_modules/.pnpm/@tanstack+store@0.11.2/node_modules/@tanstack/store/dist/alien.js","../../../../node_modules/.pnpm/@tanstack+store@0.11.2/node_modules/@tanstack/store/dist/atom.js","../../../../node_modules/.pnpm/@tanstack+store@0.11.2/node_modules/@tanstack/store/dist/shallow.js","../../../../node_modules/.pnpm/@tanstack+table-core@9.3.1/node_modules/@tanstack/table-core/dist/core/table/constructTable.js","../../../../node_modules/.pnpm/@tanstack+table-core@9.3.1/node_modules/@tanstack/table-core/dist/features/column-pinning/columnPinningFeature.utils.js","../../../../node_modules/.pnpm/@tanstack+table-core@9.3.1/node_modules/@tanstack/table-core/dist/features/column-pinning/orderByColumnPinning.js","../../../../node_modules/.pnpm/@tanstack+table-core@9.3.1/node_modules/@tanstack/table-core/dist/features/column-pinning/columnPinningFeature.js","../../../../node_modules/.pnpm/@tanstack+table-core@9.3.1/node_modules/@tanstack/table-core/dist/features/column-sizing/columnSizingFeature.utils.js","../../../../node_modules/.pnpm/@tanstack+table-core@9.3.1/node_modules/@tanstack/table-core/dist/features/column-sizing/columnSizingFeature.js","../../../../node_modules/.pnpm/@tanstack+table-core@9.3.1/node_modules/@tanstack/table-core/dist/features/row-sorting/sortFns.js","../../../../node_modules/.pnpm/@tanstack+table-core@9.3.1/node_modules/@tanstack/table-core/dist/features/row-sorting/rowSortingFeature.utils.js","../../../../node_modules/.pnpm/@tanstack+table-core@9.3.1/node_modules/@tanstack/table-core/dist/features/row-sorting/rowSortingFeature.js","../../../../node_modules/.pnpm/@tanstack+table-core@9.3.1/node_modules/@tanstack/table-core/dist/features/row-sorting/createSortedRowModel.js","../../../../node_modules/.pnpm/@tanstack+table-core@9.3.1/node_modules/@tanstack/table-core/dist/store-reactivity-bindings.js","../../../core/src/table/create-table.ts","../../../core/src/state/controllable.ts","../../../core/src/virtual/row-pool.ts","../../src/controllers/resize-drag.ts","../../src/controllers/table-controller.ts","../../../../node_modules/.pnpm/@tanstack+virtual-core@3.19.11/node_modules/@tanstack/virtual-core/dist/esm/lazy-measurements.js","../../../../node_modules/.pnpm/@tanstack+virtual-core@3.19.11/node_modules/@tanstack/virtual-core/dist/esm/utils.js","../../../../node_modules/.pnpm/@tanstack+virtual-core@3.19.11/node_modules/@tanstack/virtual-core/dist/esm/scroll-classifier.js","../../../../node_modules/.pnpm/@tanstack+virtual-core@3.19.11/node_modules/@tanstack/virtual-core/dist/esm/ios-gesture.js","../../../../node_modules/.pnpm/@tanstack+virtual-core@3.19.11/node_modules/@tanstack/virtual-core/dist/esm/index.js","../../../../node_modules/.pnpm/@tanstack+lit-virtual@3.15.3_lit@3.3.3/node_modules/@tanstack/lit-virtual/dist/esm/index.js","../../src/controllers/virtual-controller.ts","../../src/events.ts","../../../../node_modules/.pnpm/lit-html@3.3.3/node_modules/lit-html/directive-helpers.js","../../../../node_modules/.pnpm/lit-html@3.3.3/node_modules/lit-html/directives/repeat.js","../../src/render/content.ts","../../src/render/body.ts","../../src/render/cells.ts","../../src/render/header.ts","../../src/styles/base.ts","../../src/argus-table.ts"],"sourcesContent":["/**\n * @license\n * Copyright 2019 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst t=globalThis,e=t.ShadowRoot&&(void 0===t.ShadyCSS||t.ShadyCSS.nativeShadow)&&\"adoptedStyleSheets\"in Document.prototype&&\"replace\"in CSSStyleSheet.prototype,s=Symbol(),o=new WeakMap;class n{constructor(t,e,o){if(this._$cssResult$=!0,o!==s)throw Error(\"CSSResult is not constructable. Use `unsafeCSS` or `css` instead.\");this.cssText=t,this.t=e}get styleSheet(){let t=this.o;const s=this.t;if(e&&void 0===t){const e=void 0!==s&&1===s.length;e&&(t=o.get(s)),void 0===t&&((this.o=t=new CSSStyleSheet).replaceSync(this.cssText),e&&o.set(s,t))}return t}toString(){return this.cssText}}const r=t=>new n(\"string\"==typeof t?t:t+\"\",void 0,s),i=(t,...e)=>{const o=1===t.length?t[0]:e.reduce((e,s,o)=>e+(t=>{if(!0===t._$cssResult$)return t.cssText;if(\"number\"==typeof t)return t;throw Error(\"Value passed to 'css' function must be a 'css' function result: \"+t+\". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.\")})(s)+t[o+1],t[0]);return new n(o,t,s)},S=(s,o)=>{if(e)s.adoptedStyleSheets=o.map(t=>t instanceof CSSStyleSheet?t:t.styleSheet);else for(const e of o){const o=document.createElement(\"style\"),n=t.litNonce;void 0!==n&&o.setAttribute(\"nonce\",n),o.textContent=e.cssText,s.appendChild(o)}},c=e?t=>t:t=>t instanceof CSSStyleSheet?(t=>{let e=\"\";for(const s of t.cssRules)e+=s.cssText;return r(e)})(t):t;export{n as CSSResult,S as adoptStyles,i as css,c as getCompatibleStyle,e as supportsAdoptingStyleSheets,r as unsafeCSS};\n//# sourceMappingURL=css-tag.js.map\n","import{getCompatibleStyle as t,adoptStyles as s}from\"./css-tag.js\";export{CSSResult,css,supportsAdoptingStyleSheets,unsafeCSS}from\"./css-tag.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */const{is:i,defineProperty:e,getOwnPropertyDescriptor:h,getOwnPropertyNames:r,getOwnPropertySymbols:o,getPrototypeOf:n}=Object,a=globalThis,c=a.trustedTypes,l=c?c.emptyScript:\"\",p=a.reactiveElementPolyfillSupport,d=(t,s)=>t,u={toAttribute(t,s){switch(s){case Boolean:t=t?l:null;break;case Object:case Array:t=null==t?t:JSON.stringify(t)}return t},fromAttribute(t,s){let i=t;switch(s){case Boolean:i=null!==t;break;case Number:i=null===t?null:Number(t);break;case Object:case Array:try{i=JSON.parse(t)}catch(t){i=null}}return i}},f=(t,s)=>!i(t,s),b={attribute:!0,type:String,converter:u,reflect:!1,useDefault:!1,hasChanged:f};Symbol.metadata??=Symbol(\"metadata\"),a.litPropertyMetadata??=new WeakMap;class y extends HTMLElement{static addInitializer(t){this._$Ei(),(this.l??=[]).push(t)}static get observedAttributes(){return this.finalize(),this._$Eh&&[...this._$Eh.keys()]}static createProperty(t,s=b){if(s.state&&(s.attribute=!1),this._$Ei(),this.prototype.hasOwnProperty(t)&&((s=Object.create(s)).wrapped=!0),this.elementProperties.set(t,s),!s.noAccessor){const i=Symbol(),h=this.getPropertyDescriptor(t,i,s);void 0!==h&&e(this.prototype,t,h)}}static getPropertyDescriptor(t,s,i){const{get:e,set:r}=h(this.prototype,t)??{get(){return this[s]},set(t){this[s]=t}};return{get:e,set(s){const h=e?.call(this);r?.call(this,s),this.requestUpdate(t,h,i)},configurable:!0,enumerable:!0}}static getPropertyOptions(t){return this.elementProperties.get(t)??b}static _$Ei(){if(this.hasOwnProperty(d(\"elementProperties\")))return;const t=n(this);t.finalize(),void 0!==t.l&&(this.l=[...t.l]),this.elementProperties=new Map(t.elementProperties)}static finalize(){if(this.hasOwnProperty(d(\"finalized\")))return;if(this.finalized=!0,this._$Ei(),this.hasOwnProperty(d(\"properties\"))){const t=this.properties,s=[...r(t),...o(t)];for(const i of s)this.createProperty(i,t[i])}const t=this[Symbol.metadata];if(null!==t){const s=litPropertyMetadata.get(t);if(void 0!==s)for(const[t,i]of s)this.elementProperties.set(t,i)}this._$Eh=new Map;for(const[t,s]of this.elementProperties){const i=this._$Eu(t,s);void 0!==i&&this._$Eh.set(i,t)}this.elementStyles=this.finalizeStyles(this.styles)}static finalizeStyles(s){const i=[];if(Array.isArray(s)){const e=new Set(s.flat(1/0).reverse());for(const s of e)i.unshift(t(s))}else void 0!==s&&i.push(t(s));return i}static _$Eu(t,s){const i=s.attribute;return!1===i?void 0:\"string\"==typeof i?i:\"string\"==typeof t?t.toLowerCase():void 0}constructor(){super(),this._$Ep=void 0,this.isUpdatePending=!1,this.hasUpdated=!1,this._$Em=null,this._$Ev()}_$Ev(){this._$ES=new Promise(t=>this.enableUpdating=t),this._$AL=new Map,this._$E_(),this.requestUpdate(),this.constructor.l?.forEach(t=>t(this))}addController(t){(this._$EO??=new Set).add(t),void 0!==this.renderRoot&&this.isConnected&&t.hostConnected?.()}removeController(t){this._$EO?.delete(t)}_$E_(){const t=new Map,s=this.constructor.elementProperties;for(const i of s.keys())this.hasOwnProperty(i)&&(t.set(i,this[i]),delete this[i]);t.size>0&&(this._$Ep=t)}createRenderRoot(){const t=this.shadowRoot??this.attachShadow(this.constructor.shadowRootOptions);return s(t,this.constructor.elementStyles),t}connectedCallback(){this.renderRoot??=this.createRenderRoot(),this.enableUpdating(!0),this._$EO?.forEach(t=>t.hostConnected?.())}enableUpdating(t){}disconnectedCallback(){this._$EO?.forEach(t=>t.hostDisconnected?.())}attributeChangedCallback(t,s,i){this._$AK(t,i)}_$ET(t,s){const i=this.constructor.elementProperties.get(t),e=this.constructor._$Eu(t,i);if(void 0!==e&&!0===i.reflect){const h=(void 0!==i.converter?.toAttribute?i.converter:u).toAttribute(s,i.type);this._$Em=t,null==h?this.removeAttribute(e):this.setAttribute(e,h),this._$Em=null}}_$AK(t,s){const i=this.constructor,e=i._$Eh.get(t);if(void 0!==e&&this._$Em!==e){const t=i.getPropertyOptions(e),h=\"function\"==typeof t.converter?{fromAttribute:t.converter}:void 0!==t.converter?.fromAttribute?t.converter:u;this._$Em=e;const r=h.fromAttribute(s,t.type);this[e]=r??this._$Ej?.get(e)??r,this._$Em=null}}requestUpdate(t,s,i,e=!1,h){if(void 0!==t){const r=this.constructor;if(!1===e&&(h=this[t]),i??=r.getPropertyOptions(t),!((i.hasChanged??f)(h,s)||i.useDefault&&i.reflect&&h===this._$Ej?.get(t)&&!this.hasAttribute(r._$Eu(t,i))))return;this.C(t,s,i)}!1===this.isUpdatePending&&(this._$ES=this._$EP())}C(t,s,{useDefault:i,reflect:e,wrapped:h},r){i&&!(this._$Ej??=new Map).has(t)&&(this._$Ej.set(t,r??s??this[t]),!0!==h||void 0!==r)||(this._$AL.has(t)||(this.hasUpdated||i||(s=void 0),this._$AL.set(t,s)),!0===e&&this._$Em!==t&&(this._$Eq??=new Set).add(t))}async _$EP(){this.isUpdatePending=!0;try{await this._$ES}catch(t){Promise.reject(t)}const t=this.scheduleUpdate();return null!=t&&await t,!this.isUpdatePending}scheduleUpdate(){return this.performUpdate()}performUpdate(){if(!this.isUpdatePending)return;if(!this.hasUpdated){if(this.renderRoot??=this.createRenderRoot(),this._$Ep){for(const[t,s]of this._$Ep)this[t]=s;this._$Ep=void 0}const t=this.constructor.elementProperties;if(t.size>0)for(const[s,i]of t){const{wrapped:t}=i,e=this[s];!0!==t||this._$AL.has(s)||void 0===e||this.C(s,void 0,i,e)}}let t=!1;const s=this._$AL;try{t=this.shouldUpdate(s),t?(this.willUpdate(s),this._$EO?.forEach(t=>t.hostUpdate?.()),this.update(s)):this._$EM()}catch(s){throw t=!1,this._$EM(),s}t&&this._$AE(s)}willUpdate(t){}_$AE(t){this._$EO?.forEach(t=>t.hostUpdated?.()),this.hasUpdated||(this.hasUpdated=!0,this.firstUpdated(t)),this.updated(t)}_$EM(){this._$AL=new Map,this.isUpdatePending=!1}get updateComplete(){return this.getUpdateComplete()}getUpdateComplete(){return this._$ES}shouldUpdate(t){return!0}update(t){this._$Eq&&=this._$Eq.forEach(t=>this._$ET(t,this[t])),this._$EM()}updated(t){}firstUpdated(t){}}y.elementStyles=[],y.shadowRootOptions={mode:\"open\"},y[d(\"elementProperties\")]=new Map,y[d(\"finalized\")]=new Map,p?.({ReactiveElement:y}),(a.reactiveElementVersions??=[]).push(\"2.1.2\");export{y as ReactiveElement,s as adoptStyles,u as defaultConverter,t as getCompatibleStyle,f as notEqual};\n//# sourceMappingURL=reactive-element.js.map\n","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst t=globalThis,i=t=>t,s=t.trustedTypes,e=s?s.createPolicy(\"lit-html\",{createHTML:t=>t}):void 0,h=\"$lit$\",o=`lit$${Math.random().toFixed(9).slice(2)}$`,n=\"?\"+o,r=`<${n}>`,l=document,c=()=>l.createComment(\"\"),a=t=>null===t||\"object\"!=typeof t&&\"function\"!=typeof t,u=Array.isArray,d=t=>u(t)||\"function\"==typeof t?.[Symbol.iterator],f=\"[ \\t\\n\\f\\r]\",v=/<(?:(!--|\\/[^a-zA-Z])|(\\/?[a-zA-Z][^>\\s]*)|(\\/?$))/g,_=/-->/g,m=/>/g,p=RegExp(`>|${f}(?:([^\\\\s\"'>=/]+)(${f}*=${f}*(?:[^ \\t\\n\\f\\r\"'\\`<>=]|(\"|')|))|$)`,\"g\"),g=/'/g,$=/\"/g,y=/^(?:script|style|textarea|title)$/i,x=t=>(i,...s)=>({_$litType$:t,strings:i,values:s}),b=x(1),w=x(2),T=x(3),E=Symbol.for(\"lit-noChange\"),A=Symbol.for(\"lit-nothing\"),C=new WeakMap,P=l.createTreeWalker(l,129);function V(t,i){if(!u(t)||!t.hasOwnProperty(\"raw\"))throw Error(\"invalid template strings array\");return void 0!==e?e.createHTML(i):i}const N=(t,i)=>{const s=t.length-1,e=[];let n,l=2===i?\"<svg>\":3===i?\"<math>\":\"\",c=v;for(let i=0;i<s;i++){const s=t[i];let a,u,d=-1,f=0;for(;f<s.length&&(c.lastIndex=f,u=c.exec(s),null!==u);)f=c.lastIndex,c===v?\"!--\"===u[1]?c=_:void 0!==u[1]?c=m:void 0!==u[2]?(y.test(u[2])&&(n=RegExp(\"</\"+u[2],\"g\")),c=p):void 0!==u[3]&&(c=p):c===p?\">\"===u[0]?(c=n??v,d=-1):void 0===u[1]?d=-2:(d=c.lastIndex-u[2].length,a=u[1],c=void 0===u[3]?p:'\"'===u[3]?$:g):c===$||c===g?c=p:c===_||c===m?c=v:(c=p,n=void 0);const x=c===p&&t[i+1].startsWith(\"/>\")?\" \":\"\";l+=c===v?s+r:d>=0?(e.push(a),s.slice(0,d)+h+s.slice(d)+o+x):s+o+(-2===d?i:x)}return[V(t,l+(t[s]||\"<?>\")+(2===i?\"</svg>\":3===i?\"</math>\":\"\")),e]};class S{constructor({strings:t,_$litType$:i},e){let r;this.parts=[];let l=0,a=0;const u=t.length-1,d=this.parts,[f,v]=N(t,i);if(this.el=S.createElement(f,e),P.currentNode=this.el.content,2===i||3===i){const t=this.el.content.firstChild;t.replaceWith(...t.childNodes)}for(;null!==(r=P.nextNode())&&d.length<u;){if(1===r.nodeType){if(r.hasAttributes())for(const t of r.getAttributeNames())if(t.endsWith(h)){const i=v[a++],s=r.getAttribute(t).split(o),e=/([.?@])?(.*)/.exec(i);d.push({type:1,index:l,name:e[2],strings:s,ctor:\".\"===e[1]?I:\"?\"===e[1]?L:\"@\"===e[1]?z:H}),r.removeAttribute(t)}else t.startsWith(o)&&(d.push({type:6,index:l}),r.removeAttribute(t));if(y.test(r.tagName)){const t=r.textContent.split(o),i=t.length-1;if(i>0){r.textContent=s?s.emptyScript:\"\";for(let s=0;s<i;s++)r.append(t[s],c()),P.nextNode(),d.push({type:2,index:++l});r.append(t[i],c())}}}else if(8===r.nodeType)if(r.data===n)d.push({type:2,index:l});else{let t=-1;for(;-1!==(t=r.data.indexOf(o,t+1));)d.push({type:7,index:l}),t+=o.length-1}l++}}static createElement(t,i){const s=l.createElement(\"template\");return s.innerHTML=t,s}}function M(t,i,s=t,e){if(i===E)return i;let h=void 0!==e?s._$Co?.[e]:s._$Cl;const o=a(i)?void 0:i._$litDirective$;return h?.constructor!==o&&(h?._$AO?.(!1),void 0===o?h=void 0:(h=new o(t),h._$AT(t,s,e)),void 0!==e?(s._$Co??=[])[e]=h:s._$Cl=h),void 0!==h&&(i=M(t,h._$AS(t,i.values),h,e)),i}class R{constructor(t,i){this._$AV=[],this._$AN=void 0,this._$AD=t,this._$AM=i}get parentNode(){return this._$AM.parentNode}get _$AU(){return this._$AM._$AU}u(t){const{el:{content:i},parts:s}=this._$AD,e=(t?.creationScope??l).importNode(i,!0);P.currentNode=e;let h=P.nextNode(),o=0,n=0,r=s[0];for(;void 0!==r;){if(o===r.index){let i;2===r.type?i=new k(h,h.nextSibling,this,t):1===r.type?i=new r.ctor(h,r.name,r.strings,this,t):6===r.type&&(i=new Z(h,this,t)),this._$AV.push(i),r=s[++n]}o!==r?.index&&(h=P.nextNode(),o++)}return P.currentNode=l,e}p(t){let i=0;for(const s of this._$AV)void 0!==s&&(void 0!==s.strings?(s._$AI(t,s,i),i+=s.strings.length-2):s._$AI(t[i])),i++}}class k{get _$AU(){return this._$AM?._$AU??this._$Cv}constructor(t,i,s,e){this.type=2,this._$AH=A,this._$AN=void 0,this._$AA=t,this._$AB=i,this._$AM=s,this.options=e,this._$Cv=e?.isConnected??!0}get parentNode(){let t=this._$AA.parentNode;const i=this._$AM;return void 0!==i&&11===t?.nodeType&&(t=i.parentNode),t}get startNode(){return this._$AA}get endNode(){return this._$AB}_$AI(t,i=this){t=M(this,t,i),a(t)?t===A||null==t||\"\"===t?(this._$AH!==A&&this._$AR(),this._$AH=A):t!==this._$AH&&t!==E&&this._(t):void 0!==t._$litType$?this.$(t):void 0!==t.nodeType?this.T(t):d(t)?this.k(t):this._(t)}O(t){return this._$AA.parentNode.insertBefore(t,this._$AB)}T(t){this._$AH!==t&&(this._$AR(),this._$AH=this.O(t))}_(t){this._$AH!==A&&a(this._$AH)?this._$AA.nextSibling.data=t:this.T(l.createTextNode(t)),this._$AH=t}$(t){const{values:i,_$litType$:s}=t,e=\"number\"==typeof s?this._$AC(t):(void 0===s.el&&(s.el=S.createElement(V(s.h,s.h[0]),this.options)),s);if(this._$AH?._$AD===e)this._$AH.p(i);else{const t=new R(e,this),s=t.u(this.options);t.p(i),this.T(s),this._$AH=t}}_$AC(t){let i=C.get(t.strings);return void 0===i&&C.set(t.strings,i=new S(t)),i}k(t){u(this._$AH)||(this._$AH=[],this._$AR());const i=this._$AH;let s,e=0;for(const h of t)e===i.length?i.push(s=new k(this.O(c()),this.O(c()),this,this.options)):s=i[e],s._$AI(h),e++;e<i.length&&(this._$AR(s&&s._$AB.nextSibling,e),i.length=e)}_$AR(t=this._$AA.nextSibling,s){for(this._$AP?.(!1,!0,s);t!==this._$AB;){const s=i(t).nextSibling;i(t).remove(),t=s}}setConnected(t){void 0===this._$AM&&(this._$Cv=t,this._$AP?.(t))}}class H{get tagName(){return this.element.tagName}get _$AU(){return this._$AM._$AU}constructor(t,i,s,e,h){this.type=1,this._$AH=A,this._$AN=void 0,this.element=t,this.name=i,this._$AM=e,this.options=h,s.length>2||\"\"!==s[0]||\"\"!==s[1]?(this._$AH=Array(s.length-1).fill(new String),this.strings=s):this._$AH=A}_$AI(t,i=this,s,e){const h=this.strings;let o=!1;if(void 0===h)t=M(this,t,i,0),o=!a(t)||t!==this._$AH&&t!==E,o&&(this._$AH=t);else{const e=t;let n,r;for(t=h[0],n=0;n<h.length-1;n++)r=M(this,e[s+n],i,n),r===E&&(r=this._$AH[n]),o||=!a(r)||r!==this._$AH[n],r===A?t=A:t!==A&&(t+=(r??\"\")+h[n+1]),this._$AH[n]=r}o&&!e&&this.j(t)}j(t){t===A?this.element.removeAttribute(this.name):this.element.setAttribute(this.name,t??\"\")}}class I extends H{constructor(){super(...arguments),this.type=3}j(t){this.element[this.name]=t===A?void 0:t}}class L extends H{constructor(){super(...arguments),this.type=4}j(t){this.element.toggleAttribute(this.name,!!t&&t!==A)}}class z extends H{constructor(t,i,s,e,h){super(t,i,s,e,h),this.type=5}_$AI(t,i=this){if((t=M(this,t,i,0)??A)===E)return;const s=this._$AH,e=t===A&&s!==A||t.capture!==s.capture||t.once!==s.once||t.passive!==s.passive,h=t!==A&&(s===A||e);e&&this.element.removeEventListener(this.name,this,s),h&&this.element.addEventListener(this.name,this,t),this._$AH=t}handleEvent(t){\"function\"==typeof this._$AH?this._$AH.call(this.options?.host??this.element,t):this._$AH.handleEvent(t)}}class Z{constructor(t,i,s){this.element=t,this.type=6,this._$AN=void 0,this._$AM=i,this.options=s}get _$AU(){return this._$AM._$AU}_$AI(t){M(this,t)}}const j={M:h,P:o,A:n,C:1,L:N,R,D:d,V:M,I:k,H,N:L,U:z,B:I,F:Z},B=t.litHtmlPolyfillSupport;B?.(S,k),(t.litHtmlVersions??=[]).push(\"3.3.3\");const D=(t,i,s)=>{const e=s?.renderBefore??i;let h=e._$litPart$;if(void 0===h){const t=s?.renderBefore??null;e._$litPart$=h=new k(i.insertBefore(c(),t),t,void 0,s??{})}return h._$AI(t),h};export{j as _$LH,b as html,T as mathml,E as noChange,A as nothing,D as render,w as svg};\n//# sourceMappingURL=lit-html.js.map\n","import{ReactiveElement as t}from\"@lit/reactive-element\";export*from\"@lit/reactive-element\";import{render as e,noChange as r}from\"lit-html\";export*from\"lit-html\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */const s=globalThis;class i extends t{constructor(){super(...arguments),this.renderOptions={host:this},this._$Do=void 0}createRenderRoot(){const t=super.createRenderRoot();return this.renderOptions.renderBefore??=t.firstChild,t}update(t){const r=this.render();this.hasUpdated||(this.renderOptions.isConnected=this.isConnected),super.update(t),this._$Do=e(r,this.renderRoot,this.renderOptions)}connectedCallback(){super.connectedCallback(),this._$Do?.setConnected(!0)}disconnectedCallback(){super.disconnectedCallback(),this._$Do?.setConnected(!1)}render(){return r}}i._$litElement$=!0,i[\"finalized\"]=!0,s.litElementHydrateSupport?.({LitElement:i});const o=s.litElementPolyfillSupport;o?.({LitElement:i});const n={_$AK:(t,e,r)=>{t._$AK(e,r)},_$AL:t=>t._$AL};(s.litElementVersions??=[]).push(\"4.2.2\");export{i as LitElement,n as _$LE};\n//# sourceMappingURL=lit-element.js.map\n","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst t=t=>(e,o)=>{void 0!==o?o.addInitializer(()=>{customElements.define(t,e)}):customElements.define(t,e)};export{t as customElement};\n//# sourceMappingURL=custom-element.js.map\n","import{notEqual as t,defaultConverter as e}from\"../reactive-element.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */const o={attribute:!0,type:String,converter:e,reflect:!1,hasChanged:t},r=(t=o,e,r)=>{const{kind:n,metadata:i}=r;let s=globalThis.litPropertyMetadata.get(i);if(void 0===s&&globalThis.litPropertyMetadata.set(i,s=new Map),\"setter\"===n&&((t=Object.create(t)).wrapped=!0),s.set(r.name,t),\"accessor\"===n){const{name:o}=r;return{set(r){const n=e.get.call(this);e.set.call(this,r),this.requestUpdate(o,n,t,!0,r)},init(e){return void 0!==e&&this.C(o,void 0,t,e),e}}}if(\"setter\"===n){const{name:o}=r;return function(r){const n=this[o];e.call(this,r),this.requestUpdate(o,n,t,!0,r)}}throw Error(\"Unsupported decorator location: \"+n)};function n(t){return(e,o)=>\"object\"==typeof o?r(t,e,o):((t,e,o)=>{const r=e.hasOwnProperty(o);return e.constructor.createProperty(o,t),r?Object.getOwnPropertyDescriptor(e,o):void 0})(t,e,o)}export{n as property,r as standardProperty};\n//# sourceMappingURL=property.js.map\n","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst t={ATTRIBUTE:1,CHILD:2,PROPERTY:3,BOOLEAN_ATTRIBUTE:4,EVENT:5,ELEMENT:6},e=t=>(...e)=>({_$litDirective$:t,values:e});class i{constructor(t){}get _$AU(){return this._$AM._$AU}_$AT(t,e,i){this._$Ct=t,this._$AM=e,this._$Ci=i}_$AS(t,e){return this.update(t,e)}update(t,e){return this.render(...e)}}export{i as Directive,t as PartType,e as directive};\n//# sourceMappingURL=directive.js.map\n","import{noChange as t}from\"../lit-html.js\";import{directive as e,Directive as r,PartType as s}from\"../directive.js\";\n/**\n * @license\n * Copyright 2018 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */const n=\"important\",i=\" !\"+n,o=e(class extends r{constructor(t){if(super(t),t.type!==s.ATTRIBUTE||\"style\"!==t.name||t.strings?.length>2)throw Error(\"The `styleMap` directive must be used in the `style` attribute and must be the only part in the attribute.\")}render(t){return Object.keys(t).reduce((e,r)=>{const s=t[r];return null==s?e:e+`${r=r.includes(\"-\")?r:r.replace(/(?:^(webkit|moz|ms|o)|)(?=[A-Z])/g,\"-$&\").toLowerCase()}:${s};`},\"\")}update(e,[r]){const{style:s}=e.element;if(void 0===this.ft)return this.ft=new Set(Object.keys(r)),this.render(r);for(const t of this.ft)null==r[t]&&(this.ft.delete(t),t.includes(\"-\")?s.removeProperty(t):s[t]=null);for(const t in r){const e=r[t];if(null!=e){this.ft.add(t);const r=\"string\"==typeof e&&e.endsWith(i);t.includes(\"-\")||r?s.setProperty(t,r?e.slice(0,-11):e,r?n:\"\"):s[t]=e}}return t}});export{o as styleMap};\n//# sourceMappingURL=style-map.js.map\n","import type { ColumnAlign, ColumnDef, ColumnPin } from '../types.js';\n\n/** Width used when a column sets none. */\nexport const DEFAULT_WIDTH = 150;\n/** Lower bound used when a column sets no `minWidth`. */\nexport const DEFAULT_MIN_WIDTH = 40;\n\n/** A column after defaults, bounds and the accessor have been resolved. */\nexport interface ResolvedColumn<TData, TContent> {\n id: string;\n /** Position in the `columns` array. */\n index: number;\n header: ColumnDef<TData, TContent>['header'];\n cell: ColumnDef<TData, TContent>['cell'];\n /** Reads the cell value; returns `undefined` when the column has no accessor. */\n getValue: (row: TData, index: number) => unknown;\n hasAccessor: boolean;\n /** Base width in px. For a flex column this is its minimum track size. */\n width: number;\n /** Share of free space for `{ flex }` columns, otherwise `undefined`. Pinned columns never flex. */\n flex: number | undefined;\n minWidth: number;\n maxWidth: number;\n pin: ColumnPin | undefined;\n sortable: boolean;\n resizable: boolean;\n align: ColumnAlign;\n}\n\nconst pathCache = new Map<string, readonly string[]>();\n\n/**\n * Reads a dotted property path such as `'customer.name'`. Returns `undefined`\n * as soon as a step is `null` or `undefined`, like optional chaining.\n */\nexport function readPath(source: unknown, path: string): unknown {\n let keys = pathCache.get(path);\n if (!keys) {\n keys = path.split('.');\n pathCache.set(path, keys);\n }\n let value: unknown = source;\n for (const key of keys) {\n if (value === null || value === undefined) return undefined;\n value = (value as Record<string, unknown>)[key];\n }\n return value;\n}\n\nfunction finite(value: number | undefined): number | undefined {\n return value !== undefined && Number.isFinite(value) ? value : undefined;\n}\n\n/**\n * Normalizes `ColumnDef`s: checks ids, applies defaults and clamps widths.\n *\n * @throws if an id is empty or used twice, because state and events are keyed by id.\n */\nexport function resolveColumns<TData, TContent>(\n defs: readonly ColumnDef<TData, TContent>[],\n): ResolvedColumn<TData, TContent>[] {\n const seen = new Set<string>();\n return defs.map((def, index) => {\n if (typeof def.id !== 'string' || def.id === '') {\n throw new Error(`argus-table: column at index ${String(index)} needs a non-empty string id.`);\n }\n if (seen.has(def.id)) {\n throw new Error(`argus-table: column id '${def.id}' is used more than once.`);\n }\n seen.add(def.id);\n\n const minWidth = Math.max(0, finite(def.minWidth) ?? DEFAULT_MIN_WIDTH);\n const maxWidth = Math.max(minWidth, finite(def.maxWidth) ?? Number.POSITIVE_INFINITY);\n const clamp = (px: number) => Math.min(maxWidth, Math.max(minWidth, px));\n\n const pin = def.pin === 'start' || def.pin === 'end' ? def.pin : undefined;\n const { width } = def;\n // Pinned columns need a known width for their sticky offsets, so they never flex.\n const flex =\n pin === undefined &&\n typeof width === 'object' &&\n Number.isFinite(width.flex) &&\n width.flex > 0\n ? width.flex\n : undefined;\n const base = flex !== undefined ? minWidth : clamp(finite(width as number) ?? DEFAULT_WIDTH);\n\n const { accessor } = def;\n const getValue: ResolvedColumn<TData, TContent>['getValue'] =\n typeof accessor === 'function'\n ? accessor\n : typeof accessor === 'string'\n ? (row) => readPath(row, accessor)\n : () => undefined;\n\n return {\n id: def.id,\n index,\n header: def.header,\n cell: def.cell,\n getValue,\n hasAccessor: accessor !== undefined,\n width: base,\n flex,\n minWidth,\n maxWidth,\n pin,\n sortable: def.sortable === true,\n resizable: def.resizable !== false,\n align: def.align ?? 'start',\n };\n });\n}\n","//#region src/utils.ts\n/**\n* Applies a TanStack updater to a value.\n*\n* If the updater is a function it is called with the previous value; otherwise the updater value is returned directly.\n*/\nfunction functionalUpdate(updater, input) {\n\treturn typeof updater === \"function\" ? updater(input) : updater;\n}\n/**\n* Clones table state values while preserving non-plain objects.\n*\n* Plain objects and arrays are copied recursively so state updates can avoid mutating existing references.\n*/\nfunction cloneState(value) {\n\tif (Array.isArray(value)) return value.map(cloneState);\n\tif (value && typeof value === \"object\") {\n\t\tconst proto = Object.getPrototypeOf(value);\n\t\tif (proto !== Object.prototype && proto !== null) return value;\n\t\tconst copy = proto === null ? makeObjectMap() : {};\n\t\tconst keys = Object.keys(value);\n\t\tfor (let i = 0; i < keys.length; i++) {\n\t\t\tconst key = keys[i];\n\t\t\tObject.defineProperty(copy, key, {\n\t\t\t\tconfigurable: true,\n\t\t\t\tenumerable: true,\n\t\t\t\tvalue: cloneState(value[key]),\n\t\t\t\twritable: true\n\t\t\t});\n\t\t}\n\t\treturn copy;\n\t}\n\treturn value;\n}\n/**\n* Copies prototype-instance own properties without carrying over lazy memo\n* closures or the per-row cell cache, both of which are bound to the source\n* instance (cached cells reference the source row).\n*/\nfunction copyInstancePropertiesWithoutMemos(target, source) {\n\tconst keys = Object.keys(source);\n\tconst targetRecord = target;\n\tfor (let i = 0; i < keys.length; i++) {\n\t\tconst key = keys[i];\n\t\tif (!key.startsWith(\"_memo_\") && key !== \"_cellsCache\") targetRecord[key] = source[key];\n\t}\n\treturn target;\n}\n/**\n* Creates an object intended only for string-keyed dictionary lookups.\n*\n* The null prototype keeps user-controlled ids such as `__proto__` and\n* `hasOwnProperty` as plain data keys.\n*/\nfunction makeObjectMap() {\n\treturn Object.create(null);\n}\n/**\n* Checks whether an object owns a key, including null-prototype dictionaries.\n*/\nfunction hasOwn(obj, key) {\n\treturn Object.prototype.hasOwnProperty.call(obj, key);\n}\n/**\n* Creates a table state updater for a single state slice.\n*\n* The updater writes through the table base atom for the slice and supports both value and functional updater forms.\n*/\nfunction makeStateUpdater(key, instance) {\n\treturn (updater) => {\n\t\t(instance.options.atoms?.[key] ?? instance.baseAtoms[key]).set((old) => functionalUpdate(updater, old));\n\t};\n}\n/**\n* Checks whether a value is an array or a plain (or null-prototype) object.\n* Class instances, dates, and other exotic values compare by reference only,\n* mirroring the `cloneState` plain-object policy.\n*/\nfunction isPlainContainer(value) {\n\tif (typeof value !== \"object\" || value === null) return false;\n\tif (Array.isArray(value)) return true;\n\tconst proto = Object.getPrototypeOf(value);\n\treturn proto === Object.prototype || proto === null;\n}\n/**\n* Returns every enumerable own key, including symbols and non-index array\n* properties. Keeping key presence explicit distinguishes sparse array holes\n* from entries whose value is `undefined`.\n*/\nfunction getEnumerableOwnKeys(value) {\n\treturn Reflect.ownKeys(value).filter((key) => Object.prototype.propertyIsEnumerable.call(value, key));\n}\nconst MAX_STATE_COMPARE_DEPTH = 3;\n/**\n* Structurally compares two state slice values as deeply as stock feature\n* state can nest and no deeper.\n*\n* Three container levels cover flat maps and arrays, arrays of state objects,\n* array-valued filter values, and `columnResizing.columnSizingStart` tuples.\n* Deeper containers and non-plain values compare by reference. A `false`\n* result is always safe: the state update simply proceeds.\n*/\nfunction stateSlicesEqual(a, b) {\n\treturn stateSlicesEqualAtDepth(a, b, MAX_STATE_COMPARE_DEPTH);\n}\nfunction stateSlicesEqualAtDepth(a, b, depth) {\n\tif (Object.is(a, b)) return true;\n\tif (depth <= 0 || !isPlainContainer(a) || !isPlainContainer(b)) return false;\n\tif (Array.isArray(a) || Array.isArray(b)) {\n\t\tif (!Array.isArray(a) || !Array.isArray(b) || a.length !== b.length) return false;\n\t}\n\tconst keysA = getEnumerableOwnKeys(a);\n\tconst keysB = getEnumerableOwnKeys(b);\n\tif (keysA.length !== keysB.length) return false;\n\tconst recordA = a;\n\tconst recordB = b;\n\tfor (let i = 0; i < keysA.length; i++) {\n\t\tconst key = keysA[i];\n\t\tif (!Object.prototype.propertyIsEnumerable.call(b, key)) return false;\n\t\tif (!stateSlicesEqualAtDepth(recordA[key], recordB[key], depth - 1)) return false;\n\t}\n\treturn true;\n}\n/**\n* Routes a state slice update through the slice's `on<State>Change` handler,\n* preserving the owner's current reference for structural no-ops.\n*\n* Equality is evaluated inside the updater received by the state owner, never\n* against the table's potentially stale controlled snapshot. This keeps\n* same-tick updates composable in queued host containers such as React state,\n* evaluates the original updater only when the owner applies it, and lets atom\n* owners suppress notifications by returning their existing reference.\n*\n* A user-provided change handler is still invoked for a no-op because only that\n* handler's state container can know its latest queued value. The guarded\n* updater returns that container's previous reference, preventing a state write\n* or render in state containers with identity bailout semantics.\n*\n* Hot-path slices that skip guarding entirely (selection maps that scale with\n* row count, pointer-frequency resize state) call their change handler\n* directly instead of routing through this util. Custom feature slices with a\n* cheaper or semantic-aware comparison can pass `isEqual` to override the\n* structural default.\n*/\nfunction setStateSlice(instance, key, updater, isEqual = stateSlicesEqual) {\n\tconst onChangeKey = `on${key.charAt(0).toUpperCase()}${key.slice(1)}Change`;\n\tconst onChange = instance.options[onChangeKey];\n\tif (!onChange) return;\n\tonChange((current) => {\n\t\tconst next = functionalUpdate(updater, current);\n\t\treturn isEqual(current, next) ? current : next;\n\t});\n}\n/**\n* Returns whether a value is a function.\n*/\nfunction isFunction(d) {\n\treturn d instanceof Function;\n}\n/**\n* Flattens a tree of nodes by recursively reading child nodes.\n*\n* The original nodes are preserved in depth-first order.\n*/\nfunction flattenBy(arr, getChildren) {\n\tconst flat = [];\n\tconst recurse = (subArr) => {\n\t\tsubArr.forEach((item) => {\n\t\t\tflat.push(item);\n\t\t\tconst children = getChildren(item);\n\t\t\tif (children.length) recurse(children);\n\t\t});\n\t};\n\trecurse(arr);\n\treturn flat;\n}\n/**\n* Creates a dependency-tracked memoized function for table internals.\n*\n* The memo recomputes only when its dependency tuple changes and can emit debug timing information.\n*/\nconst memo = ({ fn, memoDeps, onAfterCompare, onAfterUpdate, onBeforeCompare, onBeforeUpdate }) => {\n\tlet deps = [];\n\tlet result;\n\tconst memoizedFn = (depArgs) => {\n\t\tonBeforeCompare?.();\n\t\tconst newDeps = memoDeps?.(depArgs);\n\t\tlet depsChanged = !newDeps || newDeps.length !== deps?.length;\n\t\tif (!depsChanged && newDeps) {\n\t\t\tfor (let i = 0; i < newDeps.length; i++) if (newDeps[i] !== deps[i]) {\n\t\t\t\tdepsChanged = true;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tonAfterCompare?.(depsChanged);\n\t\tif (!depsChanged) return result;\n\t\tdeps = newDeps;\n\t\tonBeforeUpdate?.();\n\t\tresult = fn(...newDeps ?? []);\n\t\tonAfterUpdate?.(result);\n\t\treturn result;\n\t};\n\treturn memoizedFn;\n};\n/**\n* Wraps a callback so that its first invocation is skipped.\n*\n* Row-model `onAfterUpdate` hooks schedule auto-resets when their inputs\n* change. The initial computation of a row model is not a change, so state\n* resets must not fire for it — otherwise merely reading a row model on mount\n* would wipe initial or controlled state.\n*/\nfunction skipFirstRun(fn) {\n\tlet hasRun = false;\n\treturn () => {\n\t\tif (!hasRun) {\n\t\t\thasRun = true;\n\t\t\treturn;\n\t\t}\n\t\tfn();\n\t};\n}\nconst pad = (str, num) => {\n\tstr = String(str);\n\twhile (str.length < num) str = \" \" + str;\n\treturn str;\n};\n/**\n* Creates a table-aware memoized function.\n*\n* This wraps `memo` with table debug options and feature metadata so row models and derived APIs can share consistent diagnostics.\n*/\nfunction tableMemo({ feature, fnName, objectId, onAfterUpdate, table, ...memoOptions }) {\n\tlet startCalcTime;\n\tlet endCalcTime;\n\tlet runCount = 0;\n\tlet debug;\n\tif (process.env.NODE_ENV === \"development\") {\n\t\tconst { debugAll } = table.options;\n\t\tconst { parentName } = getFunctionNameInfo(fnName, \".\");\n\t\tconst debugByParent = table.options[`debug${(parentName != \"table\" ? parentName + \"s\" : parentName).replace(parentName, parentName.charAt(0).toUpperCase() + parentName.slice(1))}`];\n\t\tconst debugByFeature = feature ? table.options[`debug${feature.charAt(0).toUpperCase() + feature.slice(1)}`] : false;\n\t\tdebug = debugAll || debugByParent || debugByFeature;\n\t}\n\tfunction logTime(time, depsChanged) {\n\t\tconst runType = runCount === 0 ? \"(1st run)\" : depsChanged ? \"(rerun #\" + runCount + \")\" : \"(cache)\";\n\t\trunCount++;\n\t\tconsole.groupCollapsed(`%c⏱ ${pad(`${time.toFixed(1)} ms`, 12)} %c${runType}%c ${fnName}%c ${objectId ? `(${fnName.split(\".\")[0]}Id: ${objectId})` : \"\"}`, `font-size: .6rem; font-weight: bold; ${depsChanged ? `color: hsl(\n ${Math.max(0, Math.min(120 - Math.log10(time) * 60, 120))}deg 100% 31%);` : \"\"} `, `color: ${runCount < 2 ? \"#FF00FF\" : \"#FF1493\"}`, \"color: #666\", \"color: #87CEEB\");\n\t\tconsole.info({\n\t\t\tfeature,\n\t\t\tstate: table.store.state,\n\t\t\tdeps: memoOptions.memoDeps?.toString()\n\t\t});\n\t\tconsole.trace();\n\t\tconsole.groupEnd();\n\t}\n\tconst onAfterUpdateHandler = onAfterUpdate ? () => {\n\t\tconst { schedule, untrack } = table._reactivity;\n\t\tschedule(() => untrack(() => onAfterUpdate()));\n\t} : void 0;\n\tconst debugOptions = process.env.NODE_ENV === \"development\" ? {\n\t\tonBeforeCompare: () => {},\n\t\tonAfterCompare: (depsChanged) => {},\n\t\tonBeforeUpdate: () => {\n\t\t\tif (debug) startCalcTime = performance.now();\n\t\t},\n\t\tonAfterUpdate: () => {\n\t\t\tif (debug) {\n\t\t\t\tendCalcTime = performance.now();\n\t\t\t\tlogTime(Math.round((endCalcTime - startCalcTime) * 100) / 100, true);\n\t\t\t}\n\t\t\tonAfterUpdateHandler?.();\n\t\t}\n\t} : { onAfterUpdate: onAfterUpdateHandler };\n\treturn memo({\n\t\t...memoOptions,\n\t\t...debugOptions\n\t});\n}\n/**\n* Assumes that a function name is in the format of `parentName_fnKey` and returns the `fnKey` and `fnName` in the format of `parentName.fnKey`.\n*\n* Splits on the first separator only, so an internal API name such as\n* `table__expandRows` has the `fnKey` `_expandRows`.\n*/\nfunction getFunctionNameInfo(staticFnName, splitBy = \"_\") {\n\tconst [parentName, fnKey] = staticFnName.replace(splitBy, \" \").split(\" \");\n\treturn {\n\t\tfnKey,\n\t\tfnName: `${parentName}.${fnKey}`,\n\t\tparentName\n\t};\n}\n/**\n* Assigns Table API methods directly to the table instance.\n* Unlike row/cell/column/header, the table is a singleton so methods are assigned directly.\n*/\nfunction assignTableAPIs(feature, table, apis) {\n\tfor (const [staticFnName, { fn, memoDeps }] of Object.entries(apis)) {\n\t\tconst { fnKey, fnName } = getFunctionNameInfo(staticFnName);\n\t\ttable[fnKey] = memoDeps ? tableMemo({\n\t\t\tmemoDeps,\n\t\t\tfn,\n\t\t\tfnName,\n\t\t\ttable,\n\t\t\tfeature\n\t\t}) : fn;\n\t}\n}\n/**\n* Assigns API methods to a prototype object for memory-efficient method sharing.\n* All instances created with this prototype will share the same method references.\n*\n* For memoized methods, the memo state is lazily created and stored on each instance.\n* This provides the best of both worlds: shared method code + per-instance caching.\n*/\nfunction assignPrototypeAPIs(feature, prototype, table, apis) {\n\tfor (const [staticFnName, { fn, memoDeps }] of Object.entries(apis)) {\n\t\tconst { fnKey, fnName } = getFunctionNameInfo(staticFnName);\n\t\tif (memoDeps) {\n\t\t\tconst memoKey = `_memo_${fnKey}`;\n\t\t\tprototype[fnKey] = function(...args) {\n\t\t\t\tif (!this[memoKey]) {\n\t\t\t\t\tconst self = this;\n\t\t\t\t\tthis[memoKey] = tableMemo({\n\t\t\t\t\t\tmemoDeps: (depArgs) => memoDeps(self, depArgs),\n\t\t\t\t\t\tfn: (...deps) => fn(self, ...deps),\n\t\t\t\t\t\tfnName,\n\t\t\t\t\t\tobjectId: self.id,\n\t\t\t\t\t\ttable,\n\t\t\t\t\t\tfeature\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\treturn this[memoKey](...args);\n\t\t\t};\n\t\t} else prototype[fnKey] = function(...args) {\n\t\t\treturn fn(this, ...args);\n\t\t};\n\t}\n}\n/**\n* Looks to run the memoized function with the builder pattern on the object if it exists, otherwise fall back to the static method passed in.\n*/\nfunction callMemoOrStaticFn(obj, fnKey, staticFn, ...args) {\n\treturn obj[fnKey]?.(...args) ?? staticFn(obj, ...args);\n}\n\n//#endregion\nexport { assignPrototypeAPIs, assignTableAPIs, callMemoOrStaticFn, cloneState, copyInstancePropertiesWithoutMemos, flattenBy, functionalUpdate, getFunctionNameInfo, hasOwn, isFunction, makeObjectMap, makeStateUpdater, memo, setStateSlice, skipFirstRun, stateSlicesEqual, tableMemo };","//#region src/core/cells/coreCellsFeature.utils.ts\n/**\n* Reads this cell's accessor value from its owning row and column.\n*\n* This is the standalone implementation behind `cell.getValue()`, useful when\n* importing static APIs instead of calling methods from the cell prototype.\n*\n* @example\n* ```ts\n* const value = cell_getValue(cell)\n* ```\n*/\nfunction cell_getValue(cell) {\n\treturn cell.row.getValue(cell.column.id);\n}\n/**\n* Reads the value that should be rendered for this cell.\n*\n* Nullish accessor values are replaced with `table.options.renderFallbackValue`,\n* matching the behavior of `cell.renderValue()`.\n*\n* @example\n* ```ts\n* const rendered = cell_renderValue(cell)\n* ```\n*/\nfunction cell_renderValue(cell) {\n\treturn cell.getValue() ?? cell.table.options.renderFallbackValue;\n}\n/**\n* Builds the render context passed to a column's `cell` template.\n*\n* The returned object includes stable references to the table, row, column, and\n* cell, plus bound `getValue` and `renderValue` helpers for render functions.\n*\n* @example\n* ```ts\n* const context = cell_getContext(cell)\n* ```\n*/\nfunction cell_getContext(cell) {\n\treturn {\n\t\ttable: cell.table,\n\t\tcolumn: cell.column,\n\t\trow: cell.row,\n\t\tcell,\n\t\tgetValue: () => cell.getValue(),\n\t\trenderValue: () => cell.renderValue()\n\t};\n}\n\n//#endregion\nexport { cell_getContext, cell_getValue, cell_renderValue };","import { assignPrototypeAPIs } from \"../../utils.js\";\nimport { cell_getContext, cell_getValue, cell_renderValue } from \"./coreCellsFeature.utils.js\";\n\n//#region src/core/cells/coreCellsFeature.ts\n/**\n* Core feature that adds cell value, render, and context APIs.\n*/\nconst coreCellsFeature = { assignCellPrototype: (prototype, table) => {\n\tassignPrototypeAPIs(\"coreCellsFeature\", prototype, table, {\n\t\tcell_getValue: { fn: (cell) => cell_getValue(cell) },\n\t\tcell_renderValue: { fn: (cell) => cell_renderValue(cell) },\n\t\tcell_getContext: {\n\t\t\tfn: (cell) => cell_getContext(cell),\n\t\t\tmemoDeps: (cell) => [cell]\n\t\t}\n\t});\n} };\n\n//#endregion\nexport { coreCellsFeature };","//#region src/core/columns/constructColumn.ts\n/**\n* Creates or retrieves the column prototype for a table.\n* The prototype is cached on the table and shared by all column instances.\n*/\nfunction getColumnPrototype(table) {\n\tif (!table._columnPrototype) {\n\t\ttable._columnPrototype = { table };\n\t\tconst features = Object.values(table._features);\n\t\tfor (let i = 0; i < features.length; i++) features[i].assignColumnPrototype?.(table._columnPrototype, table);\n\t}\n\treturn table._columnPrototype;\n}\n/**\n* Constructs a column instance from normalized table internals.\n*\n* This wires core properties, feature prototype APIs, and instance data used by table rendering and row-model operations.\n*/\nfunction constructColumn(table, columnDef, depth, parent) {\n\tconst resolvedColumnDef = {\n\t\t...table.getDefaultColumnDef(),\n\t\t...columnDef\n\t};\n\tconst accessorKey = resolvedColumnDef.accessorKey;\n\tconst accessorKeyString = accessorKey === void 0 ? void 0 : String(accessorKey);\n\tconst id = resolvedColumnDef.id ?? accessorKeyString?.replaceAll(\".\", \"_\") ?? (typeof resolvedColumnDef.header === \"string\" ? resolvedColumnDef.header : void 0);\n\tlet accessorFn;\n\tif (resolvedColumnDef.accessorFn) accessorFn = resolvedColumnDef.accessorFn;\n\telse if (accessorKey !== void 0) {\n\t\tif (typeof accessorKey === \"string\" && accessorKey.includes(\".\")) {\n\t\t\tconst keys = accessorKey.split(\".\");\n\t\t\taccessorFn = (originalRow) => {\n\t\t\t\tlet result = originalRow;\n\t\t\t\tfor (let i = 0; i < keys.length; i++) {\n\t\t\t\t\tconst key = keys[i];\n\t\t\t\t\tresult = result?.[key];\n\t\t\t\t\tif (process.env.NODE_ENV === \"development\" && result === void 0) console.warn(`\"${key}\" in deeply nested key \"${accessorKey}\" returned undefined.`);\n\t\t\t\t}\n\t\t\t\treturn result;\n\t\t\t};\n\t\t} else accessorFn = (originalRow) => originalRow[resolvedColumnDef.accessorKey];\n\t}\n\tif (!id) {\n\t\tif (process.env.NODE_ENV === \"development\") throw new Error(resolvedColumnDef.accessorFn ? `coreColumnsFeature require an id when using an accessorFn` : `coreColumnsFeature require an id when using a non-string header`);\n\t\tthrow new Error();\n\t}\n\tconst columnPrototype = getColumnPrototype(table);\n\tconst column = Object.create(columnPrototype);\n\tcolumn.accessorFn = accessorFn;\n\tcolumn.columnDef = resolvedColumnDef;\n\tcolumn.columns = [];\n\tcolumn.depth = depth;\n\tcolumn.id = `${String(id)}`;\n\tcolumn.parent = parent;\n\tconst initFns = table._columnInstanceInitFns;\n\tfor (let i = 0; i < initFns.length; i++) initFns[i](column);\n\treturn column;\n}\n\n//#endregion\nexport { constructColumn };","//#region src/core/featureStubs.ts\n/**\n* Stubs for optional features, used by the core and by any feature or row\n* model that reads another feature.\n*\n* Importing a feature's code from shared code would bundle that feature into\n* every table that uses the shared code, registered or not. A stub instead\n* calls a member the feature declares on its table, column, or row type and\n* assigns when it is registered, and otherwise behaves as if the feature were\n* absent. Members that only other features use are `_`-prefixed and marked\n* `@internal`, such as `table._expandRows`.\n*\n* How code in this package reaches other code:\n*\n* - Its own feature: call the static function, or `callMemoOrStaticFn` to use\n* the feature's memoized API.\n* - The core: import it. Every table bundles the core.\n* - Another feature's state: read `table.atoms.<slice>?.get()`.\n* - Another feature's APIs: call a stub from this file, adding one if needed.\n* - A feature it requires, such as column resizing requiring column sizing:\n* import it.\n*\n* Features assign functions, internal ones included, with `assignTableAPIs` or\n* `assignPrototypeAPIs`, and keep the `init*InstanceData` hooks for mutable\n* per-instance state. The `import/no-restricted-paths` lint rule rejects value\n* imports between feature folders outside an explicit list.\n*\n* Internal: not exported from any package entry point.\n*/\n/** Whether a column is visible; every column is without the feature. */\nfunction getIsColumnVisible(column) {\n\treturn column.getIsVisible?.() ?? true;\n}\n/** Visible leaf columns; all leaf columns without the feature. */\nfunction getVisibleLeafColumns(table) {\n\treturn table.getVisibleLeafColumns?.() ?? table.getAllLeafColumns();\n}\n/**\n* A row's visible cells; all cells, in leaf column order, without the\n* feature.\n*/\nfunction getVisibleCells(row) {\n\treturn row.getVisibleCells?.() ?? row.getAllCells();\n}\n/** A row's visible cells by column id; all cells without the feature. */\nfunction getVisibleCellsByColumnId(row) {\n\treturn row.getVisibleCellsByColumnId?.() ?? row.getAllCellsByColumnId();\n}\n/**\n* Orders leaf columns for display. The column ordering feature applies\n* `columnOrder` and moves grouped columns. Without it, the grouping feature\n* still moves grouped columns, and without either the order is unchanged.\n*/\nfunction orderLeafColumns(table, columns) {\n\tconst orderedTable = table;\n\tconst leafColumns = columns;\n\treturn orderedTable.getOrderColumnsFn?.()(leafColumns) ?? orderedTable._orderGroupedColumns?.(leafColumns) ?? columns;\n}\n/**\n* Orders items that each belong to a leaf column, such as visible leaf columns\n* or a row's visible cells, with start-pinned items first and end-pinned items\n* last. Without the feature, nothing is pinned and the order is unchanged.\n*/\nfunction orderByColumnPinning(table, items, getColumnId, getItemsByColumnId) {\n\treturn table._orderByColumnPinning?.(items, getColumnId, getItemsByColumnId) ?? items;\n}\n/**\n* Visible leaf columns in a pinning region. Without the feature, nothing is\n* pinned: the start and end regions are empty, and the center region and the\n* full list (`position` omitted) hold every visible leaf column.\n*/\nfunction getPinnedVisibleLeafColumns(table, position) {\n\treturn table.getPinnedVisibleLeafColumns?.(position) ?? (position && position !== \"center\" ? [] : getVisibleLeafColumns(table));\n}\n/** The resolved global filter function, if the feature is registered. */\nfunction getGlobalFilterFn(table) {\n\treturn table.getGlobalFilterFn?.();\n}\n/** Whether a column takes part in global filtering; none do without the feature. */\nfunction getCanGlobalFilter(column) {\n\treturn column.getCanGlobalFilter?.() ?? false;\n}\n/**\n* Lists expanded sub-rows inline below their parents. Without the feature no\n* row is expanded, so the row model is returned as is.\n*/\nfunction expandRowModel(table, rowModel) {\n\treturn table._expandRows?.(rowModel) ?? rowModel;\n}\n/**\n* Whether every parent of a row is expanded. Without the feature no row is\n* expanded, so only a top-level row qualifies.\n*/\nfunction getIsAllParentsExpanded(row) {\n\treturn row.getIsAllParentsExpanded?.() ?? !row.parentId;\n}\n/** Resets expanded state if row expanding is registered. */\nfunction autoResetExpanded(table) {\n\ttable.autoResetExpanded?.();\n}\n/** Resets the page index if row pagination is registered. */\nfunction autoResetPageIndex(table) {\n\ttable.autoResetPageIndex?.();\n}\n/** Resets sorting if row sorting is registered. */\nfunction autoResetSorting(table) {\n\ttable.autoResetSorting?.();\n}\n/** Resets cell selection if cell selection is registered. */\nfunction autoResetCellSelection(table) {\n\ttable.autoResetCellSelection?.();\n}\n/**\n* The aggregation executor `rowAggregationFeature` assigns to the table, or\n* `undefined` when the feature is not registered.\n*/\nfunction getAggregateColumnValue(table) {\n\treturn table._aggregateColumnValue;\n}\n\n//#endregion\nexport { autoResetCellSelection, autoResetExpanded, autoResetPageIndex, autoResetSorting, expandRowModel, getAggregateColumnValue, getCanGlobalFilter, getGlobalFilterFn, getIsAllParentsExpanded, getIsColumnVisible, getPinnedVisibleLeafColumns, getVisibleCells, getVisibleCellsByColumnId, getVisibleLeafColumns, orderByColumnPinning, orderLeafColumns };","import { makeObjectMap } from \"../../utils.js\";\nimport { orderLeafColumns } from \"../featureStubs.js\";\nimport { constructColumn } from \"./constructColumn.js\";\n\n//#region src/core/columns/coreColumnsFeature.utils.ts\n/**\n* Flattens this column and every descendant column into a single array.\n*\n* Group columns appear before their child columns, which matches the normalized\n* column hierarchy produced during table construction.\n*\n* @example\n* ```ts\n* const flatColumns = column_getFlatColumns(column)\n* ```\n*/\nfunction column_getFlatColumns(column) {\n\treturn [column, ...column.columns.flatMap((col) => col.getFlatColumns())];\n}\n/**\n* Collects the terminal leaf columns below this column.\n*\n* Group columns return their ordered descendants. Non-group columns return an\n* array containing only the column itself.\n*\n* @example\n* ```ts\n* const leafColumns = column_getLeafColumns(column)\n* ```\n*/\nfunction column_getLeafColumns(column) {\n\tif (column.columns.length) {\n\t\tconst leafColumns = column.columns.flatMap((col) => col.getLeafColumns());\n\t\treturn orderLeafColumns(column.table, leafColumns);\n\t}\n\treturn [column];\n}\n/**\n* Merges built-in, feature, and user default column definitions.\n*\n* Built-in defaults provide a header and fallback cell renderer, feature\n* defaults can add feature-specific column options, and\n* `options.defaultColumn` wins last.\n*\n* @example\n* ```ts\n* const defaultColumn = table_getDefaultColumnDef(table)\n* ```\n*/\nfunction table_getDefaultColumnDef(table) {\n\treturn {\n\t\theader: (props) => {\n\t\t\tconst resolvedColumnDef = props.header.column.columnDef;\n\t\t\tif (resolvedColumnDef.accessorKey) return resolvedColumnDef.accessorKey;\n\t\t\tif (resolvedColumnDef.accessorFn) return resolvedColumnDef.id;\n\t\t\treturn null;\n\t\t},\n\t\tcell: (props) => props.renderValue()?.toString?.() ?? null,\n\t\t...Object.values(table._features).reduce((obj, feature) => {\n\t\t\treturn Object.assign(obj, feature.getDefaultColumnDef?.());\n\t\t}, {}),\n\t\t...table.options.defaultColumn\n\t};\n}\nfunction constructColumns(table, columnDefs, parent, depth = 0) {\n\tconst columns = new Array(columnDefs.length);\n\tfor (let i = 0; i < columnDefs.length; i++) {\n\t\tif (!(i in columnDefs)) continue;\n\t\tconst columnDef = columnDefs[i];\n\t\tconst column = constructColumn(table, columnDef, depth, parent);\n\t\tconst groupingColumnDef = columnDef;\n\t\tcolumn.columns = groupingColumnDef.columns ? constructColumns(table, groupingColumnDef.columns, column, depth + 1) : [];\n\t\tcolumns[i] = column;\n\t}\n\treturn columns;\n}\n/**\n* Normalizes `options.columns` into the table's nested column tree.\n*\n* Each column definition is constructed with its parent and depth, and group\n* column children are recursively constructed.\n*\n* @example\n* ```ts\n* const columns = table_getAllColumns(table)\n* ```\n*/\nfunction table_getAllColumns(table) {\n\treturn constructColumns(table, table.options.columns);\n}\n/**\n* Flattens every table column, including group columns and leaf columns.\n*\n* Use this when parent/group columns must be included in addition to data leaf\n* columns.\n*\n* @example\n* ```ts\n* const flatColumns = table_getAllFlatColumns(table)\n* ```\n*/\nfunction table_getAllFlatColumns(table) {\n\treturn table.getAllColumns().flatMap((column) => column.getFlatColumns());\n}\n/**\n* Builds an id lookup for every flat column in the table.\n*\n* Group columns and leaf columns are included. Later columns with the same id\n* replace earlier entries.\n*\n* @example\n* ```ts\n* const columnsById = table_getAllFlatColumnsById(table)\n* ```\n*/\nfunction table_getAllFlatColumnsById(table) {\n\tconst result = makeObjectMap();\n\tconst flatColumns = table.getAllFlatColumns();\n\tfor (let i = 0; i < flatColumns.length; i++) {\n\t\tconst column = flatColumns[i];\n\t\tresult[column.id] = column;\n\t}\n\treturn result;\n}\n/**\n* Collects all terminal leaf columns in their current table order.\n*\n* Column ordering features can reorder the collected leaves before the result\n* is returned.\n*\n* @example\n* ```ts\n* const leafColumns = table_getAllLeafColumns(table)\n* ```\n*/\nfunction table_getAllLeafColumns(table) {\n\tconst leafColumns = table.getAllColumns().flatMap((c) => c.getLeafColumns());\n\treturn orderLeafColumns(table, leafColumns);\n}\n/**\n* Builds an id lookup for terminal leaf columns only.\n*\n* Parent/group columns are excluded, making this lookup appropriate for row\n* cells and feature state keyed by data columns.\n*\n* @example\n* ```ts\n* const leavesById = table_getAllLeafColumnsById(table)\n* ```\n*/\nfunction table_getAllLeafColumnsById(table) {\n\tconst result = makeObjectMap();\n\tconst leafColumns = table.getAllLeafColumns();\n\tfor (let i = 0; i < leafColumns.length; i++) {\n\t\tconst column = leafColumns[i];\n\t\tresult[column.id] = column;\n\t}\n\treturn result;\n}\n/**\n* Looks up a column by id from the flat column map.\n*\n* The lookup can return group columns or leaf columns. In development, a\n* missing id logs a warning to help catch stale column references.\n*\n* @example\n* ```ts\n* const column = table_getColumn(table, 'firstName')\n* ```\n*/\nfunction table_getColumn(table, columnId) {\n\tconst column = table.getAllFlatColumnsById()[columnId];\n\tif (process.env.NODE_ENV === \"development\" && !column) console.warn(`[Table] Column with id '${columnId}' does not exist.`);\n\treturn column;\n}\n\n//#endregion\nexport { column_getFlatColumns, column_getLeafColumns, table_getAllColumns, table_getAllFlatColumns, table_getAllFlatColumnsById, table_getAllLeafColumns, table_getAllLeafColumnsById, table_getColumn, table_getDefaultColumnDef };","import { assignPrototypeAPIs, assignTableAPIs } from \"../../utils.js\";\nimport { column_getFlatColumns, column_getLeafColumns, table_getAllColumns, table_getAllFlatColumns, table_getAllFlatColumnsById, table_getAllLeafColumns, table_getAllLeafColumnsById, table_getColumn, table_getDefaultColumnDef } from \"./coreColumnsFeature.utils.js\";\n\n//#region src/core/columns/coreColumnsFeature.ts\n/**\n* Core feature that builds the column tree and exposes table/column APIs.\n*/\nconst coreColumnsFeature = {\n\tassignColumnPrototype: (prototype, table) => {\n\t\tassignPrototypeAPIs(\"coreColumnsFeature\", prototype, table, {\n\t\t\tcolumn_getFlatColumns: {\n\t\t\t\tfn: (column) => column_getFlatColumns(column),\n\t\t\t\tmemoDeps: (column) => [column.table.options.columns]\n\t\t\t},\n\t\t\tcolumn_getLeafColumns: {\n\t\t\t\tfn: (column) => column_getLeafColumns(column),\n\t\t\t\tmemoDeps: (column) => [\n\t\t\t\t\tcolumn.table.atoms.columnOrder?.get(),\n\t\t\t\t\tcolumn.table.atoms.grouping?.get(),\n\t\t\t\t\tcolumn.table.options.columns,\n\t\t\t\t\tcolumn.table.options.groupedColumnMode\n\t\t\t\t]\n\t\t\t}\n\t\t});\n\t},\n\tconstructTableAPIs: (table) => {\n\t\tassignTableAPIs(\"coreColumnsFeature\", table, {\n\t\t\ttable_getDefaultColumnDef: {\n\t\t\t\tfn: () => table_getDefaultColumnDef(table),\n\t\t\t\tmemoDeps: () => [table.options.defaultColumn]\n\t\t\t},\n\t\t\ttable_getAllColumns: {\n\t\t\t\tfn: () => table_getAllColumns(table),\n\t\t\t\tmemoDeps: () => [table.options.columns]\n\t\t\t},\n\t\t\ttable_getAllFlatColumns: {\n\t\t\t\tfn: () => table_getAllFlatColumns(table),\n\t\t\t\tmemoDeps: () => [table.options.columns]\n\t\t\t},\n\t\t\ttable_getAllFlatColumnsById: {\n\t\t\t\tfn: () => table_getAllFlatColumnsById(table),\n\t\t\t\tmemoDeps: () => [table.options.columns]\n\t\t\t},\n\t\t\ttable_getAllLeafColumns: {\n\t\t\t\tfn: () => table_getAllLeafColumns(table),\n\t\t\t\tmemoDeps: () => [\n\t\t\t\t\ttable.atoms.columnOrder?.get(),\n\t\t\t\t\ttable.atoms.grouping?.get(),\n\t\t\t\t\ttable.options.columns,\n\t\t\t\t\ttable.options.groupedColumnMode\n\t\t\t\t]\n\t\t\t},\n\t\t\ttable_getAllLeafColumnsById: {\n\t\t\t\tfn: () => table_getAllLeafColumnsById(table),\n\t\t\t\tmemoDeps: () => [table.getAllLeafColumns()]\n\t\t\t},\n\t\t\ttable_getColumn: { fn: (columnId) => table_getColumn(table, columnId) }\n\t\t});\n\t}\n};\n\n//#endregion\nexport { coreColumnsFeature };","//#region src/core/headers/constructHeader.ts\n/**\n* Creates or retrieves the header prototype for a table.\n* The prototype is cached on the table and shared by all header instances.\n*/\nfunction getHeaderPrototype(table) {\n\tif (!table._headerPrototype) {\n\t\ttable._headerPrototype = { table };\n\t\tconst features = Object.values(table._features);\n\t\tfor (let i = 0; i < features.length; i++) features[i].assignHeaderPrototype?.(table._headerPrototype, table);\n\t}\n\treturn table._headerPrototype;\n}\n/**\n* Constructs a header instance from normalized table internals.\n*\n* This wires core properties, feature prototype APIs, and instance data used by table rendering and row-model operations.\n*/\nfunction constructHeader(table, column, options) {\n\tconst headerPrototype = getHeaderPrototype(table);\n\tconst header = Object.create(headerPrototype);\n\theader.colSpan = 0;\n\theader.column = column;\n\theader.depth = options.depth;\n\theader.headerGroup = null;\n\theader.id = options.id ?? column.id;\n\theader.index = options.index;\n\theader.isPlaceholder = !!options.isPlaceholder;\n\theader.placeholderId = options.placeholderId;\n\theader.rowSpan = 0;\n\theader.subHeaders = [];\n\tconst initFns = table._headerInstanceInitFns;\n\tfor (let i = 0; i < initFns.length; i++) initFns[i](header);\n\treturn header;\n}\n\n//#endregion\nexport { constructHeader };","import { getIsColumnVisible } from \"../featureStubs.js\";\nimport { constructHeader } from \"./constructHeader.js\";\n\n//#region src/core/headers/buildHeaderGroups.ts\nfunction getMaxHeaderDepth(columns, depth = 1) {\n\tlet maxDepth = depth;\n\tfor (let i = 0; i < columns.length; i++) {\n\t\tconst column = columns[i];\n\t\tif (getIsColumnVisible(column) && column.columns.length) maxDepth = Math.max(maxDepth, getMaxHeaderDepth(column.columns, depth + 1));\n\t}\n\treturn maxDepth;\n}\nfunction formatHeaderGroupId(headerFamily, depth) {\n\treturn headerFamily ? `${headerFamily}_${depth}` : String(depth);\n}\nfunction formatHeaderId(headerFamily, depth, columnId, childHeaderId) {\n\tlet id = headerFamily ?? \"\";\n\tif (depth) id = id ? `${id}_${depth}` : String(depth);\n\tif (columnId) id = id ? `${id}_${columnId}` : columnId;\n\tif (childHeaderId) id = id ? `${id}_${childHeaderId}` : childHeaderId;\n\treturn id;\n}\nfunction countPendingHeadersForColumn(headers, column) {\n\tlet count = 0;\n\tfor (let i = 0; i < headers.length; i++) if (headers[i].column === column) count++;\n\treturn count;\n}\nfunction constructHeaderGroup(headersToGroup, depth, table, headerFamily, headerGroups, headerGroupInitFns) {\n\tconst headerGroup = {\n\t\tdepth,\n\t\tid: formatHeaderGroupId(headerFamily, depth),\n\t\theaders: []\n\t};\n\tconst pendingParentHeaders = [];\n\tfor (let i = 0; i < headersToGroup.length; i++) {\n\t\tif (!(i in headersToGroup)) continue;\n\t\tconst headerToGroup = headersToGroup[i];\n\t\tconst latestPendingParentHeader = pendingParentHeaders[pendingParentHeaders.length - 1];\n\t\tconst isLeafHeader = headerToGroup.column.depth === headerGroup.depth;\n\t\tlet column;\n\t\tlet isPlaceholder = false;\n\t\tif (isLeafHeader && headerToGroup.column.parent) column = headerToGroup.column.parent;\n\t\telse {\n\t\t\tcolumn = headerToGroup.column;\n\t\t\tisPlaceholder = true;\n\t\t}\n\t\tif (latestPendingParentHeader && latestPendingParentHeader.column === column) latestPendingParentHeader.subHeaders.push(headerToGroup);\n\t\telse {\n\t\t\tconst header = constructHeader(table, column, {\n\t\t\t\tid: formatHeaderId(headerFamily, depth, column.id, headerToGroup.id),\n\t\t\t\tisPlaceholder,\n\t\t\t\tplaceholderId: isPlaceholder ? String(countPendingHeadersForColumn(pendingParentHeaders, column)) : void 0,\n\t\t\t\tdepth,\n\t\t\t\tindex: pendingParentHeaders.length\n\t\t\t});\n\t\t\theader.subHeaders.push(headerToGroup);\n\t\t\tpendingParentHeaders.push(header);\n\t\t}\n\t\theaderGroup.headers.push(headerToGroup);\n\t\theaderToGroup.headerGroup = headerGroup;\n\t}\n\tfor (let i = 0; i < headerGroupInitFns.length; i++) headerGroupInitFns[i](headerGroup);\n\theaderGroups.push(headerGroup);\n\tif (depth > 0) constructHeaderGroup(pendingParentHeaders, depth - 1, table, headerFamily, headerGroups, headerGroupInitFns);\n}\nfunction updateHeaderSpans(headers) {\n\tfor (let i = 0; i < headers.length; i++) {\n\t\tconst header = headers[i];\n\t\tif (!getIsColumnVisible(header.column)) continue;\n\t\tlet colSpan = 0;\n\t\tif (header.subHeaders.length) {\n\t\t\tupdateHeaderSpans(header.subHeaders);\n\t\t\tfor (let j = 0; j < header.subHeaders.length; j++) {\n\t\t\t\tconst child = header.subHeaders[j];\n\t\t\t\tif (!getIsColumnVisible(child.column)) continue;\n\t\t\t\tcolSpan += child.colSpan;\n\t\t\t}\n\t\t} else colSpan = 1;\n\t\theader.colSpan = colSpan;\n\t\tif (header.isPlaceholder && header.subHeaders.length === 1 && header.subHeaders[0].column === header.column) {\n\t\t\tlet rowSpan = 1;\n\t\t\tlet chainChild = header.subHeaders[0];\n\t\t\twhile (chainChild) {\n\t\t\t\tchainChild.rowSpan = 0;\n\t\t\t\trowSpan++;\n\t\t\t\tchainChild = chainChild.subHeaders.length === 1 && chainChild.subHeaders[0].column === header.column ? chainChild.subHeaders[0] : void 0;\n\t\t\t}\n\t\t\theader.rowSpan = rowSpan;\n\t\t} else header.rowSpan = 1;\n\t}\n}\n/**\n* Builds the nested header group structure for a table.\n*\n* The result accounts for visible leaf columns, pinned column groups, and placeholder headers needed to render multi-level headers.\n*/\nfunction buildHeaderGroups(allColumns, columnsToGroup, table, headerFamily) {\n\tconst maxDepth = getMaxHeaderDepth(allColumns);\n\tconst headerGroups = [];\n\tconst headerGroupInitFns = table._headerGroupInstanceInitFns;\n\tconst bottomHeaders = new Array(columnsToGroup.length);\n\tfor (let i = 0; i < columnsToGroup.length; i++) {\n\t\tif (!(i in columnsToGroup)) continue;\n\t\tbottomHeaders[i] = constructHeader(table, columnsToGroup[i], {\n\t\t\tdepth: maxDepth,\n\t\t\tindex: i\n\t\t});\n\t}\n\tconstructHeaderGroup(bottomHeaders, maxDepth - 1, table, headerFamily, headerGroups, headerGroupInitFns);\n\theaderGroups.reverse();\n\tupdateHeaderSpans(headerGroups[0]?.headers ?? []);\n\treturn headerGroups;\n}\n\n//#endregion\nexport { buildHeaderGroups };","import { getVisibleLeafColumns, orderByColumnPinning } from \"../featureStubs.js\";\nimport { buildHeaderGroups } from \"./buildHeaderGroups.js\";\n\n//#region src/core/headers/coreHeadersFeature.utils.ts\nfunction collectLeafHeaders(header, leafHeaders) {\n\tfor (let i = 0; i < header.subHeaders.length; i++) collectLeafHeaders(header.subHeaders[i], leafHeaders);\n\tleafHeaders.push(header);\n}\n/**\n* Walks a header tree and collects all descendant leaf headers.\n*\n* The header itself is included after its descendants, matching the recursive\n* shape used by nested header groups.\n*\n* @example\n* ```ts\n* const leafHeaders = header_getLeafHeaders(header)\n* ```\n*/\nfunction header_getLeafHeaders(header) {\n\tconst leafHeaders = [];\n\tcollectLeafHeaders(header, leafHeaders);\n\treturn leafHeaders;\n}\n/**\n* Builds the render context passed to a column's `header` or `footer` template.\n*\n* The context contains the header, its column, and the owning table instance.\n*\n* @example\n* ```ts\n* const context = header_getContext(header)\n* ```\n*/\nfunction header_getContext(header) {\n\treturn {\n\t\tcolumn: header.column,\n\t\theader,\n\t\ttable: header.column.table\n\t};\n}\n/**\n* Builds visible header groups for the current column tree.\n*\n* Column visibility and pinning are applied before groups are built. When no\n* columns are pinned, the fast path skips pin partitioning.\n*\n* @example\n* ```ts\n* const headerGroups = table_getHeaderGroups(table)\n* ```\n*/\nfunction table_getHeaderGroups(table) {\n\treturn buildHeaderGroups(table.getAllColumns(), orderByColumnPinning(table, getVisibleLeafColumns(table), (column) => column.id), table);\n}\n/**\n* Builds footer groups by reversing the current header groups.\n*\n* Footer rendering uses the same header objects and grouping structure, but\n* renders them from leaf level back toward the root.\n*\n* @example\n* ```ts\n* const footerGroups = table_getFooterGroups(table)\n* ```\n*/\nfunction table_getFooterGroups(table) {\n\treturn [...table.getHeaderGroups()].reverse();\n}\n/**\n* Flattens every header from every header group into one array.\n*\n* The result includes parent headers and placeholder headers, in header-group\n* order from top to bottom.\n*\n* @example\n* ```ts\n* const flatHeaders = table_getFlatHeaders(table)\n* ```\n*/\nfunction table_getFlatHeaders(table) {\n\tconst headerGroups = table.getHeaderGroups();\n\tconst result = [];\n\tfor (let i = 0; i < headerGroups.length; i++) {\n\t\tconst headers = headerGroups[i].headers;\n\t\tfor (let j = 0; j < headers.length; j++) result.push(headers[j]);\n\t}\n\treturn result;\n}\n/**\n* Collects only the leaf headers from the current header tree.\n*\n* Parent/group headers are skipped, making the result suitable for rendering\n* one header per visible leaf column.\n*\n* @example\n* ```ts\n* const leafHeaders = table_getLeafHeaders(table)\n* ```\n*/\nfunction table_getLeafHeaders(table) {\n\tconst topHeaders = table.getHeaderGroups()[0]?.headers ?? [];\n\tconst result = [];\n\tfor (let i = 0; i < topHeaders.length; i++) {\n\t\tconst leafHeaders = topHeaders[i].getLeafHeaders();\n\t\tfor (let j = 0; j < leafHeaders.length; j++) result.push(leafHeaders[j]);\n\t}\n\treturn result;\n}\n\n//#endregion\nexport { header_getContext, header_getLeafHeaders, table_getFlatHeaders, table_getFooterGroups, table_getHeaderGroups, table_getLeafHeaders };","import { assignPrototypeAPIs, assignTableAPIs } from \"../../utils.js\";\nimport { header_getContext, header_getLeafHeaders, table_getFlatHeaders, table_getFooterGroups, table_getHeaderGroups, table_getLeafHeaders } from \"./coreHeadersFeature.utils.js\";\n\n//#region src/core/headers/coreHeadersFeature.ts\n/**\n* Core feature that builds header groups and exposes header context APIs.\n*/\nconst coreHeadersFeature = {\n\tassignHeaderPrototype: (prototype, table) => {\n\t\tassignPrototypeAPIs(\"coreHeadersFeature\", prototype, table, {\n\t\t\theader_getLeafHeaders: {\n\t\t\t\tfn: (header) => header_getLeafHeaders(header),\n\t\t\t\tmemoDeps: (header) => [header.column.table.options.columns]\n\t\t\t},\n\t\t\theader_getContext: {\n\t\t\t\tfn: (header) => header_getContext(header),\n\t\t\t\tmemoDeps: (header) => [header.column.table.options.columns]\n\t\t\t}\n\t\t});\n\t},\n\tconstructTableAPIs: (table) => {\n\t\tassignTableAPIs(\"coreHeadersFeature\", table, {\n\t\t\ttable_getHeaderGroups: {\n\t\t\t\tfn: () => table_getHeaderGroups(table),\n\t\t\t\tmemoDeps: () => [\n\t\t\t\t\ttable.options.columns,\n\t\t\t\t\ttable.atoms.columnOrder?.get(),\n\t\t\t\t\ttable.atoms.grouping?.get(),\n\t\t\t\t\ttable.atoms.columnPinning?.get(),\n\t\t\t\t\ttable.atoms.columnVisibility?.get(),\n\t\t\t\t\ttable.options.groupedColumnMode\n\t\t\t\t]\n\t\t\t},\n\t\t\ttable_getFooterGroups: {\n\t\t\t\tfn: () => table_getFooterGroups(table),\n\t\t\t\tmemoDeps: () => [table.getHeaderGroups()]\n\t\t\t},\n\t\t\ttable_getFlatHeaders: {\n\t\t\t\tfn: () => table_getFlatHeaders(table),\n\t\t\t\tmemoDeps: () => [table.getHeaderGroups()]\n\t\t\t},\n\t\t\ttable_getLeafHeaders: {\n\t\t\t\tfn: () => table_getLeafHeaders(table),\n\t\t\t\tmemoDeps: () => [table.getHeaderGroups()]\n\t\t\t}\n\t\t});\n\t}\n};\n\n//#endregion\nexport { coreHeadersFeature };","import { makeObjectMap } from \"../../utils.js\";\n\n//#region src/core/rows/constructRow.ts\n/**\n* Creates or retrieves the row prototype for a table.\n* The prototype is cached on the table and shared by all row instances.\n*/\nfunction getRowPrototype(table) {\n\tif (!table._rowPrototype) {\n\t\ttable._rowPrototype = { table };\n\t\tconst features = Object.values(table._features);\n\t\tfor (let i = 0; i < features.length; i++) features[i].assignRowPrototype?.(table._rowPrototype, table);\n\t}\n\treturn table._rowPrototype;\n}\n/**\n* Constructs a row instance from normalized table internals.\n*\n* This wires core properties, feature prototype APIs, and instance data used by table rendering and row-model operations.\n*/\nconst constructRow = (table, id, original, rowIndex, depth, subRows, parentId) => {\n\tconst rowPrototype = getRowPrototype(table);\n\tconst row = Object.create(rowPrototype);\n\trow._displayIndexCache = -1;\n\trow._uniqueValuesCache = makeObjectMap();\n\trow._valuesCache = makeObjectMap();\n\trow.depth = depth;\n\trow.id = id;\n\trow.index = rowIndex;\n\trow.original = original;\n\trow.parentId = parentId;\n\trow.subRows = subRows ?? [];\n\tconst initFns = table._rowInstanceInitFns;\n\tfor (let i = 0; i < initFns.length; i++) initFns[i](row);\n\treturn row;\n};\n\n//#endregion\nexport { constructRow };","import { makeObjectMap, skipFirstRun, tableMemo } from \"../../utils.js\";\nimport { autoResetCellSelection, autoResetExpanded, autoResetPageIndex, autoResetSorting } from \"../featureStubs.js\";\nimport { constructRow } from \"../rows/constructRow.js\";\n\n//#region src/core/row-models/createCoreRowModel.ts\n/**\n* Creates a memoized core row model factory.\n*\n* The factory reads the relevant table state atoms and options, then returns a row model function used by the table row-model pipeline.\n*/\nfunction createCoreRowModel() {\n\treturn (table) => {\n\t\treturn tableMemo({\n\t\t\tfeature: \"coreRowModelsFeature\",\n\t\t\ttable,\n\t\t\tfnName: \"table.getCoreRowModel\",\n\t\t\tmemoDeps: () => [table.options.data],\n\t\t\tfn: () => _createCoreRowModel(table, table.options.data),\n\t\t\tonAfterUpdate: skipFirstRun(() => {\n\t\t\t\tautoResetExpanded(table);\n\t\t\t\tautoResetPageIndex(table);\n\t\t\t\tautoResetSorting(table);\n\t\t\t\tautoResetCellSelection(table);\n\t\t\t})\n\t\t});\n\t};\n}\nfunction accessRows(table, rowModel, originalRows, depth = 0, parentRow) {\n\tconst rows = [];\n\tfor (let i = 0; i < originalRows.length; i++) {\n\t\tconst originalRow = originalRows[i];\n\t\tconst row = constructRow(table, table.getRowId(originalRow, i, parentRow), originalRow, i, depth, void 0, parentRow?.id);\n\t\trowModel.flatRows.push(row);\n\t\trowModel.rowsById[row.id] = row;\n\t\trows.push(row);\n\t\tif (table.options.getSubRows) {\n\t\t\trow.originalSubRows = table.options.getSubRows(originalRow, i);\n\t\t\tif (row.originalSubRows?.length) row.subRows = accessRows(table, rowModel, row.originalSubRows, depth + 1, row);\n\t\t}\n\t}\n\treturn rows;\n}\nfunction _createCoreRowModel(table, data) {\n\tconst rowModel = {\n\t\trows: [],\n\t\tflatRows: [],\n\t\trowsById: makeObjectMap()\n\t};\n\trowModel.rows = accessRows(table, rowModel, data);\n\treturn rowModel;\n}\n\n//#endregion\nexport { createCoreRowModel };","import { createCoreRowModel } from \"./createCoreRowModel.js\";\n\n//#region src/core/row-models/coreRowModelsFeature.utils.ts\n/**\n* Resolves the table's unmodified core row model.\n*\n* The factory is created once per table, either from the `coreRowModel` slot on the `features` option\n* or the built-in `createCoreRowModel()`, then reused for later calls.\n*\n* @example\n* ```ts\n* const coreRows = table_getCoreRowModel(table)\n* ```\n*/\nfunction table_getCoreRowModel(table) {\n\tif (!table._rowModels.coreRowModel) table._rowModels.coreRowModel = table.options.features.coreRowModel?.(table) ?? createCoreRowModel()(table);\n\treturn table._rowModels.coreRowModel();\n}\n/**\n* Reads the row model immediately before column/global filtering.\n*\n* Filtering is the first derived row-model stage, so this currently aliases\n* `table.getCoreRowModel()`.\n*\n* @example\n* ```ts\n* const rowsBeforeFiltering = table_getPreFilteredRowModel(table)\n* ```\n*/\nfunction table_getPreFilteredRowModel(table) {\n\treturn table.getCoreRowModel();\n}\n/**\n* Resolves the row model after column and global filtering.\n*\n* When `manualFiltering` is enabled, or no filtered row-model factory was\n* registered, this returns the pre-filtered row model because filtering is\n* expected to happen outside the table.\n*\n* @example\n* ```ts\n* const filteredRows = table_getFilteredRowModel(table)\n* ```\n*/\nfunction table_getFilteredRowModel(table) {\n\tif (!table._rowModels.filteredRowModel) table._rowModels.filteredRowModel = table.options.features.filteredRowModel?.(table);\n\tif (table.options.manualFiltering || !table._rowModels.filteredRowModel) return table.getPreFilteredRowModel();\n\treturn table._rowModels.filteredRowModel();\n}\n/**\n* Reads the row model immediately before grouping.\n*\n* Grouping runs after filtering, so this aliases `table.getFilteredRowModel()`.\n*\n* @example\n* ```ts\n* const rowsBeforeGrouping = table_getPreGroupedRowModel(table)\n* ```\n*/\nfunction table_getPreGroupedRowModel(table) {\n\treturn table.getFilteredRowModel();\n}\n/**\n* Resolves the row model after grouping has produced grouped rows.\n*\n* When `manualGrouping` is enabled, or no grouped row-model factory was\n* registered, this returns the pre-grouped row model unchanged.\n*\n* @example\n* ```ts\n* const groupedRows = table_getGroupedRowModel(table)\n* ```\n*/\nfunction table_getGroupedRowModel(table) {\n\tif (!table._rowModels.groupedRowModel) table._rowModels.groupedRowModel = table.options.features.groupedRowModel?.(table);\n\tif (table.options.manualGrouping || !table._rowModels.groupedRowModel) return table.getPreGroupedRowModel();\n\treturn table._rowModels.groupedRowModel();\n}\n/**\n* Reads the row model immediately before sorting.\n*\n* Sorting runs after grouping, so this aliases `table.getGroupedRowModel()`.\n*\n* @example\n* ```ts\n* const rowsBeforeSorting = table_getPreSortedRowModel(table)\n* ```\n*/\nfunction table_getPreSortedRowModel(table) {\n\treturn table.getGroupedRowModel();\n}\n/**\n* Resolves the row model after sorting has been applied.\n*\n* When `manualSorting` is enabled, or no sorted row-model factory was\n* registered, this returns the pre-sorted row model because sorted data is\n* expected to be supplied by the caller.\n*\n* @example\n* ```ts\n* const sortedRows = table_getSortedRowModel(table)\n* ```\n*/\nfunction table_getSortedRowModel(table) {\n\tif (!table._rowModels.sortedRowModel) table._rowModels.sortedRowModel = table.options.features.sortedRowModel?.(table);\n\tif (table.options.manualSorting || !table._rowModels.sortedRowModel) return table.getPreSortedRowModel();\n\treturn table._rowModels.sortedRowModel();\n}\n/**\n* Reads the row model immediately before row expansion.\n*\n* Expansion runs after sorting, so this aliases `table.getSortedRowModel()`.\n*\n* @example\n* ```ts\n* const rowsBeforeExpansion = table_getPreExpandedRowModel(table)\n* ```\n*/\nfunction table_getPreExpandedRowModel(table) {\n\treturn table.getSortedRowModel();\n}\n/**\n* Resolves the row model after expanded rows have been flattened into view.\n*\n* When `manualExpanding` is enabled, or no expanded row-model factory was\n* registered, this returns the pre-expanded row model unchanged.\n*\n* @example\n* ```ts\n* const expandedRows = table_getExpandedRowModel(table)\n* ```\n*/\nfunction table_getExpandedRowModel(table) {\n\tif (!table._rowModels.expandedRowModel) table._rowModels.expandedRowModel = table.options.features.expandedRowModel?.(table);\n\tif (table.options.manualExpanding || !table._rowModels.expandedRowModel) return table.getPreExpandedRowModel();\n\treturn table._rowModels.expandedRowModel();\n}\n/**\n* Reads the row model immediately before pagination.\n*\n* Pagination is the final built-in row-model stage, so this aliases\n* `table.getExpandedRowModel()`.\n*\n* @example\n* ```ts\n* const rowsBeforePagination = table_getPrePaginatedRowModel(table)\n* ```\n*/\nfunction table_getPrePaginatedRowModel(table) {\n\treturn table.getExpandedRowModel();\n}\n/**\n* Resolves the row model after pagination has sliced rows for the current page.\n*\n* When `manualPagination` is enabled, or no paginated row-model factory was\n* registered, this returns the pre-paginated row model because pagination is\n* expected to happen before data reaches the table.\n*\n* @example\n* ```ts\n* const pageRows = table_getPaginatedRowModel(table)\n* ```\n*/\nfunction table_getPaginatedRowModel(table) {\n\tif (!table._rowModels.paginatedRowModel) table._rowModels.paginatedRowModel = table.options.features.paginatedRowModel?.(table);\n\tif (table.options.manualPagination || !table._rowModels.paginatedRowModel) return table.getPrePaginatedRowModel();\n\treturn table._rowModels.paginatedRowModel();\n}\n/**\n* Resolves the final row model consumed by renderers.\n*\n* This is the end of the built-in row-model pipeline: core -> filtering ->\n* grouping -> sorting -> expanding -> pagination.\n*\n* @example\n* ```ts\n* const visibleRows = table_getRowModel(table)\n* ```\n*/\nfunction table_getRowModel(table) {\n\treturn table.getPaginatedRowModel();\n}\n\n//#endregion\nexport { table_getCoreRowModel, table_getExpandedRowModel, table_getFilteredRowModel, table_getGroupedRowModel, table_getPaginatedRowModel, table_getPreExpandedRowModel, table_getPreFilteredRowModel, table_getPreGroupedRowModel, table_getPrePaginatedRowModel, table_getPreSortedRowModel, table_getRowModel, table_getSortedRowModel };","import { assignTableAPIs } from \"../../utils.js\";\nimport { table_getCoreRowModel, table_getExpandedRowModel, table_getFilteredRowModel, table_getGroupedRowModel, table_getPaginatedRowModel, table_getPreExpandedRowModel, table_getPreFilteredRowModel, table_getPreGroupedRowModel, table_getPrePaginatedRowModel, table_getPreSortedRowModel, table_getRowModel, table_getSortedRowModel } from \"./coreRowModelsFeature.utils.js\";\n\n//#region src/core/row-models/coreRowModelsFeature.ts\n/**\n* Core feature that wires table row-model accessors and row-model caches.\n*/\nconst coreRowModelsFeature = { constructTableAPIs: (table) => {\n\tassignTableAPIs(\"coreRowModelsFeature\", table, {\n\t\ttable_getCoreRowModel: { fn: () => table_getCoreRowModel(table) },\n\t\ttable_getPreFilteredRowModel: { fn: () => table_getPreFilteredRowModel(table) },\n\t\ttable_getFilteredRowModel: { fn: () => table_getFilteredRowModel(table) },\n\t\ttable_getPreGroupedRowModel: { fn: () => table_getPreGroupedRowModel(table) },\n\t\ttable_getGroupedRowModel: { fn: () => table_getGroupedRowModel(table) },\n\t\ttable_getPreSortedRowModel: { fn: () => table_getPreSortedRowModel(table) },\n\t\ttable_getSortedRowModel: { fn: () => table_getSortedRowModel(table) },\n\t\ttable_getPreExpandedRowModel: { fn: () => table_getPreExpandedRowModel(table) },\n\t\ttable_getExpandedRowModel: { fn: () => table_getExpandedRowModel(table) },\n\t\ttable_getPrePaginatedRowModel: { fn: () => table_getPrePaginatedRowModel(table) },\n\t\ttable_getPaginatedRowModel: { fn: () => table_getPaginatedRowModel(table) },\n\t\ttable_getRowModel: { fn: () => table_getRowModel(table) }\n\t});\n} };\n\n//#endregion\nexport { coreRowModelsFeature };","//#region src/core/cells/constructCell.ts\n/**\n* Creates or retrieves the cell prototype for a table.\n* The prototype is cached on the table and shared by all cell instances.\n*/\nfunction getCellPrototype(table) {\n\tif (!table._cellPrototype) {\n\t\ttable._cellPrototype = { table };\n\t\tconst features = Object.values(table._features);\n\t\tfor (let i = 0; i < features.length; i++) features[i].assignCellPrototype?.(table._cellPrototype, table);\n\t}\n\treturn table._cellPrototype;\n}\n/**\n* Constructs a cell instance from normalized table internals.\n*\n* This wires core properties, feature prototype APIs, and instance data used by table rendering and row-model operations.\n*/\nfunction constructCell(column, row, table) {\n\tconst cellPrototype = getCellPrototype(table);\n\tconst cell = Object.create(cellPrototype);\n\tcell.column = column;\n\tcell.id = `${row.id}_${column.id}`;\n\tcell.row = row;\n\tconst initFns = table._cellInstanceInitFns;\n\tfor (let i = 0; i < initFns.length; i++) initFns[i](cell);\n\treturn cell;\n}\n\n//#endregion\nexport { constructCell };","import { flattenBy, hasOwn, makeObjectMap } from \"../../utils.js\";\nimport { expandRowModel } from \"../featureStubs.js\";\nimport { constructCell } from \"../cells/constructCell.js\";\n\n//#region src/core/rows/coreRowsFeature.utils.ts\n/**\n* Returns this row's zero-based position in the current pre-pagination row\n* model. Rows outside that model return `-1`.\n*/\nfunction row_getDisplayIndex(row) {\n\tconst rows = row.table.getRowsInDisplayOrder();\n\tconst displayIndex = row._displayIndexCache;\n\treturn rows[displayIndex] === row ? displayIndex : -1;\n}\n/**\n* Returns the rows in the current display order after assigning their\n* zero-based display indexes.\n*\n* When expanded rows bypass pagination, expanded descendants are inserted into\n* the returned order even though they are absent from the pre-pagination row\n* model.\n*/\nfunction table_getRowsInDisplayOrder(table) {\n\tconst rowModel = table.getPrePaginatedRowModel();\n\tconst rows = table.options.paginateExpandedRows === false ? expandRowModel(table, rowModel).rows : rowModel.rows;\n\tfor (let i = 0; i < rows.length; i++) rows[i]._displayIndexCache = i;\n\treturn rows;\n}\n/**\n* Reads and caches this row's value for a column.\n*\n* The value is produced by the column accessor. Missing columns or display\n* columns without an accessor return `undefined`.\n*\n* @example\n* ```ts\n* const firstName = row_getValue(row, 'firstName')\n* ```\n*/\nfunction row_getValue(row, columnId) {\n\tif (hasOwn(row._valuesCache, columnId)) return row._valuesCache[columnId];\n\tconst column = row.table.getColumn(columnId);\n\tif (!column?.accessorFn) return;\n\trow._valuesCache[columnId] = column.accessorFn(row.original, row.index);\n\treturn row._valuesCache[columnId];\n}\n/**\n* Reads and caches the values used by faceting/grouping for a column.\n*\n* If the column defines `getUniqueValues`, that result is used. Otherwise the\n* row's accessor value is wrapped in a single-item array.\n*\n* @example\n* ```ts\n* const values = row_getUniqueValues(row, 'tags')\n* ```\n*/\nfunction row_getUniqueValues(row, columnId) {\n\tif (hasOwn(row._uniqueValuesCache, columnId)) return row._uniqueValuesCache[columnId];\n\tconst column = row.table.getColumn(columnId);\n\tif (!column?.accessorFn) return;\n\tif (!column.columnDef.getUniqueValues) {\n\t\trow._uniqueValuesCache[columnId] = [row.getValue(columnId)];\n\t\treturn row._uniqueValuesCache[columnId];\n\t}\n\trow._uniqueValuesCache[columnId] = column.columnDef.getUniqueValues(row.original, row.index);\n\treturn row._uniqueValuesCache[columnId];\n}\n/**\n* Returns a renderable row value for a column.\n*\n* If the accessor value is nullish, the table's `renderFallbackValue` is used\n* instead.\n*\n* @example\n* ```ts\n* const value = row_renderValue(row, 'firstName')\n* ```\n*/\nfunction row_renderValue(row, columnId) {\n\treturn row.getValue(columnId) ?? row.table.options.renderFallbackValue;\n}\n/**\n* Flattens this row's descendant tree into leaf rows.\n*\n* The row itself is not included; only nested `subRows` are walked.\n*\n* @example\n* ```ts\n* const descendants = row_getLeafRows(row)\n* ```\n*/\nfunction row_getLeafRows(row) {\n\treturn flattenBy(row.subRows, (d) => d.subRows);\n}\n/**\n* Returns the deepest structural row depth in the core row model.\n* Root rows are depth `0`, their direct sub-rows are depth `1`, and so on.\n*/\nfunction table_getMaxSubRowDepth(table) {\n\tconst rows = table.getCoreRowModel().flatRows;\n\tlet maxDepth = 0;\n\tfor (let i = 0; i < rows.length; i++) maxDepth = Math.max(maxDepth, rows[i].depth);\n\treturn maxDepth;\n}\n/**\n* Looks up this row's direct parent, if it has one.\n*\n* Parent lookup prefers the core row model for structural parents, then falls\n* back to the pre-pagination row model for generated parent rows.\n*\n* @example\n* ```ts\n* const parent = row_getParentRow(row)\n* ```\n*/\nfunction row_getParentRow(row) {\n\tif (!row.parentId) return;\n\treturn row.table.getCoreRowModel().rowsById[row.parentId] ?? row.table.getRow(row.parentId, true);\n}\n/**\n* Collects this row's ancestor chain from root to direct parent.\n*\n* The current row is not included. Rows without a parent return an empty array.\n*\n* @example\n* ```ts\n* const ancestors = row_getParentRows(row)\n* ```\n*/\nfunction row_getParentRows(row) {\n\tconst parentRows = [];\n\tlet currentRow = row;\n\twhile (true) {\n\t\tconst parentRow = currentRow.getParentRow();\n\t\tif (!parentRow) break;\n\t\tparentRows.push(parentRow);\n\t\tcurrentRow = parentRow;\n\t}\n\treturn parentRows.reverse();\n}\n/**\n* Constructs one cell for each leaf column in this row.\n*\n* The result follows `table.getAllLeafColumns()` order and includes hidden\n* columns; visibility-specific APIs filter this list later.\n*\n* @example\n* ```ts\n* const cells = row_getAllCells(row)\n* ```\n*/\nfunction row_getAllCells(row) {\n\tconst columns = row.table.getAllLeafColumns();\n\tlet cache = row._cellsCache;\n\tif (!cache) cache = row._cellsCache = /* @__PURE__ */ new WeakMap();\n\tconst cells = new Array(columns.length);\n\tfor (let i = 0; i < columns.length; i++) {\n\t\tconst column = columns[i];\n\t\tlet cell = cache.get(column);\n\t\tif (!cell) {\n\t\t\tcell = constructCell(column, row, row.table);\n\t\t\tcache.set(column, cell);\n\t\t}\n\t\tcells[i] = cell;\n\t}\n\treturn cells;\n}\n/**\n* Builds a lookup map of this row's cells keyed by column id.\n*\n* This is the static implementation behind `row.getAllCellsByColumnId()`.\n*\n* @example\n* ```ts\n* const cellsById = row_getAllCellsByColumnId(row)\n* ```\n*/\nfunction row_getAllCellsByColumnId(row) {\n\tconst result = makeObjectMap();\n\tconst cells = row.getAllCells();\n\tfor (let i = 0; i < cells.length; i++) {\n\t\tconst cell = cells[i];\n\t\tresult[cell.column.id] = cell;\n\t}\n\treturn result;\n}\n/**\n* Resolves the stable id for a row.\n*\n* `options.getRowId` wins when provided. Otherwise root rows use their index\n* and child rows append their index to the parent id, such as `0.2`.\n*\n* @example\n* ```ts\n* const id = table_getRowId(originalRow, table, index, parentRow)\n* ```\n*/\nfunction table_getRowId(originalRow, table, index, parent) {\n\treturn table.options.getRowId?.(originalRow, index, parent) ?? (parent ? `${parent.id}.${index}` : String(index));\n}\n/**\n* Looks up a row by id from the current or full row model.\n*\n* By default this searches `table.getRowModel()`. Passing `searchAll` searches\n* the pre-pagination model first, then falls back to the core model.\n*\n* @example\n* ```ts\n* const row = table_getRow(table, rowId, true)\n* ```\n*/\nfunction table_getRow(table, rowId, searchAll) {\n\tlet row = (searchAll ? table.getPrePaginatedRowModel() : table.getRowModel()).rowsById[rowId];\n\tif (!row) {\n\t\trow = table.getCoreRowModel().rowsById[rowId];\n\t\tif (!row) {\n\t\t\tif (process.env.NODE_ENV === \"development\") throw new Error(`getRow could not find row with ID: ${rowId}`);\n\t\t\tthrow new Error();\n\t\t}\n\t}\n\treturn row;\n}\n\n//#endregion\nexport { row_getAllCells, row_getAllCellsByColumnId, row_getDisplayIndex, row_getLeafRows, row_getParentRow, row_getParentRows, row_getUniqueValues, row_getValue, row_renderValue, table_getMaxSubRowDepth, table_getRow, table_getRowId, table_getRowsInDisplayOrder };","import { assignPrototypeAPIs, assignTableAPIs } from \"../../utils.js\";\nimport { row_getAllCells, row_getAllCellsByColumnId, row_getDisplayIndex, row_getLeafRows, row_getParentRow, row_getParentRows, row_getUniqueValues, row_getValue, row_renderValue, table_getMaxSubRowDepth, table_getRow, table_getRowId, table_getRowsInDisplayOrder } from \"./coreRowsFeature.utils.js\";\n\n//#region src/core/rows/coreRowsFeature.ts\n/**\n* Core feature that creates row APIs for values, cells, and tree traversal.\n*/\nconst coreRowsFeature = {\n\tassignRowPrototype: (prototype, table) => {\n\t\tassignPrototypeAPIs(\"coreRowsFeature\", prototype, table, {\n\t\t\trow_getDisplayIndex: { fn: (row) => row_getDisplayIndex(row) },\n\t\t\trow_getAllCellsByColumnId: {\n\t\t\t\tfn: (row) => row_getAllCellsByColumnId(row),\n\t\t\t\tmemoDeps: (row) => [row.getAllCells()]\n\t\t\t},\n\t\t\trow_getAllCells: {\n\t\t\t\tfn: (row) => row_getAllCells(row),\n\t\t\t\tmemoDeps: (row) => [row.table.getAllLeafColumns()]\n\t\t\t},\n\t\t\trow_getLeafRows: {\n\t\t\t\tfn: (row) => row_getLeafRows(row),\n\t\t\t\tmemoDeps: (row) => [row.subRows]\n\t\t\t},\n\t\t\trow_getParentRow: { fn: (row) => row_getParentRow(row) },\n\t\t\trow_getParentRows: { fn: (row) => row_getParentRows(row) },\n\t\t\trow_getUniqueValues: { fn: (row, columnId) => row_getUniqueValues(row, columnId) },\n\t\t\trow_getValue: { fn: (row, columnId) => row_getValue(row, columnId) },\n\t\t\trow_renderValue: { fn: (row, columnId) => row_renderValue(row, columnId) }\n\t\t});\n\t},\n\tconstructTableAPIs: (table) => {\n\t\tassignTableAPIs(\"coreRowsFeature\", table, {\n\t\t\ttable_getRowsInDisplayOrder: {\n\t\t\t\tfn: () => table_getRowsInDisplayOrder(table),\n\t\t\t\tmemoDeps: () => [\n\t\t\t\t\ttable.getPrePaginatedRowModel().rows,\n\t\t\t\t\ttable.options.paginateExpandedRows,\n\t\t\t\t\ttable.options.paginateExpandedRows === false ? table.atoms.expanded?.get() : void 0\n\t\t\t\t]\n\t\t\t},\n\t\t\ttable_getRowId: { fn: (originalRow, index, parent) => table_getRowId(originalRow, table, index, parent) },\n\t\t\ttable_getRow: { fn: (id, searchAll) => table_getRow(table, id, searchAll) },\n\t\t\ttable_getMaxSubRowDepth: {\n\t\t\t\tfn: () => table_getMaxSubRowDepth(table),\n\t\t\t\tmemoDeps: () => [table.getCoreRowModel()]\n\t\t\t}\n\t\t});\n\t}\n};\n\n//#endregion\nexport { coreRowsFeature };","import { cloneState, functionalUpdate } from \"../../utils.js\";\n\n//#region src/core/table/coreTablesFeature.utils.ts\n/**\n* Synchronizes externally controlled state slices into the table's base atoms.\n*\n* This keeps `options.state` values mirrored in the atom graph so derived\n* atoms, stores, and table APIs read a consistent snapshot.\n*\n* Adapters that update options during their host's render phase pass the\n* state snapshot captured by the committed render as `capturedState` — the\n* shared options object may already hold values from a newer render that\n* never commits. Pass `null` to publish nothing (a captured \"no controlled\n* state\"); omitting the argument reads the current `table.options.state`\n* instead. An optional `compare` suppresses semantically unchanged slice\n* writes; the default remains reference equality.\n*\n* @example\n* ```ts\n* table_syncExternalStateToBaseAtoms(table)\n* table_syncExternalStateToBaseAtoms(table, capturedState ?? null, shallow)\n* ```\n*/\nfunction table_syncExternalStateToBaseAtoms(table, capturedState, compare = (currentState, externalState) => currentState === externalState) {\n\tconst state = capturedState === void 0 ? table.options.state : capturedState;\n\ttable._reactivity.batch(() => {\n\t\tif (state) for (const key in state) {\n\t\t\tconst baseAtom = table.baseAtoms[key];\n\t\t\tif (!baseAtom) continue;\n\t\t\tconst rawExternalState = state[key];\n\t\t\tconst externalState = rawExternalState === void 0 ? table.initialState[key] : rawExternalState;\n\t\t\tif (!compare(table._reactivity.untrack(() => baseAtom.get()), externalState)) baseAtom.set(() => externalState);\n\t\t}\n\t});\n}\n/**\n* Publishes captured controlled state after a host framework commits.\n*\n* Render-phase adapters stage options without synchronizing base atoms, then\n* pass the state captured by the committed render here. The commit signal also\n* invalidates ownership changes when no base atom was written.\n*/\nfunction table_publishExternalState(table, state, compare = (currentState, externalState) => currentState === externalState) {\n\ttable._reactivity.batch(() => {\n\t\ttable_syncExternalStateToBaseAtoms(table, state, compare);\n\t\ttable._reactivity.commit?.();\n\t});\n}\n/**\n* Resets all internal table base atoms to `table.initialState`, then clears\n* transient instance data through registered feature reset hooks.\n*\n* This resets internally owned state slices in a single reactivity batch. Use\n* feature-specific reset APIs when a slice may be externally owned.\n*\n* @example\n* ```ts\n* table_reset(table)\n* ```\n*/\nfunction table_reset(table) {\n\tconst snap = cloneState(table.initialState);\n\ttable._reactivity.batch(() => {\n\t\tconst keys = Object.keys(snap);\n\t\tfor (let i = 0; i < keys.length; i++) {\n\t\t\tconst key = keys[i];\n\t\t\ttable.baseAtoms[key].set(snap[key]);\n\t\t}\n\t});\n\tconst features = Object.values(table._features);\n\tfor (let i = 0; i < features.length; i++) features[i].resetTableInstanceData?.(table);\n}\n/**\n* Merges new table options with the current resolved options.\n*\n* If `options.mergeOptions` is provided, it owns the merge behavior; otherwise\n* options are shallow-merged. Static options that should never change after\n* initialization are restored on a fresh object so framework merge helpers may\n* return readonly getter/proxy objects.\n*\n* @example\n* ```ts\n* const options = table_mergeOptions(table, nextOptions)\n* ```\n*/\nfunction table_mergeOptions(table, newOptions) {\n\tconst { features, atoms, initialState } = table.options;\n\tif (!table.options.mergeOptions) return {\n\t\t...table.options,\n\t\t...newOptions,\n\t\tfeatures,\n\t\tatoms,\n\t\tinitialState\n\t};\n\tconst mergedOptions = table.options.mergeOptions(table.options, newOptions);\n\tconst descriptors = { ...Object.getOwnPropertyDescriptors(mergedOptions) };\n\treturn Object.defineProperties(Object.create(Object.getPrototypeOf(mergedOptions)), {\n\t\t...descriptors,\n\t\tfeatures: {\n\t\t\tvalue: features,\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true,\n\t\t\twritable: true\n\t\t},\n\t\tatoms: {\n\t\t\tvalue: atoms,\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true,\n\t\t\twritable: true\n\t\t},\n\t\tinitialState: {\n\t\t\tvalue: initialState,\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true,\n\t\t\twritable: true\n\t\t}\n\t});\n}\n/**\n* Updates the table options object.\n*\n* The updater receives the current resolved options and the merged result is\n* immediately assigned to the table instance.\n*\n* @example\n* ```ts\n* table_setOptions(table, (old) => old)\n* table_setOptions(table, (old) => old, { syncExternalState: false })\n* ```\n*/\nfunction table_setOptions(table, updater, options) {\n\tconst mergedOptions = table_mergeOptions(table, functionalUpdate(updater, table.options));\n\tif (table.optionsStore) table.optionsStore.set(() => mergedOptions);\n\telse table.options = mergedOptions;\n\tif (options?.syncExternalState !== false) table_publishExternalState(table, mergedOptions.state ?? null);\n}\n\n//#endregion\nexport { table_mergeOptions, table_publishExternalState, table_reset, table_setOptions, table_syncExternalStateToBaseAtoms };","import { assignTableAPIs } from \"../../utils.js\";\nimport { table_reset, table_setOptions } from \"./coreTablesFeature.utils.js\";\n\n//#region src/core/table/coreTablesFeature.ts\n/**\n* Core feature that adds base table instance APIs such as reset and setOptions.\n*/\nconst coreTablesFeature = { constructTableAPIs: (table) => {\n\tassignTableAPIs(\"coreTablesFeature\", table, {\n\t\ttable_reset: { fn: () => table_reset(table) },\n\t\ttable_setOptions: { fn: (updater) => table_setOptions(table, updater) }\n\t});\n} };\n\n//#endregion\nexport { coreTablesFeature };","import { coreCellsFeature } from \"./cells/coreCellsFeature.js\";\nimport { coreColumnsFeature } from \"./columns/coreColumnsFeature.js\";\nimport { coreHeadersFeature } from \"./headers/coreHeadersFeature.js\";\nimport { coreRowModelsFeature } from \"./row-models/coreRowModelsFeature.js\";\nimport { coreRowsFeature } from \"./rows/coreRowsFeature.js\";\nimport { coreTablesFeature } from \"./table/coreTablesFeature.js\";\n\n//#region src/core/coreFeatures.ts\n/**\n* The built-in core feature set required by every table.\n*\n* These features provide table, column, row, header, cell, and core row-model behavior before optional feature plugins are added.\n*/\nconst coreFeatures = {\n\tcoreCellsFeature,\n\tcoreColumnsFeature,\n\tcoreHeadersFeature,\n\tcoreRowModelsFeature,\n\tcoreRowsFeature,\n\tcoreTablesFeature\n};\n\n//#endregion\nexport { coreFeatures };","//#region src/helpers/tableFeatures.ts\n/**\n* A helper function to help define the features that are to be imported and applied to a table instance.\n* Use this utility to make it easier to have the correct type inference for the features that are being imported.\n* **Note:** It is recommended to use this utility statically outside of a component.\n*\n* Alongside feature modules, this object carries everything else that is\n* statically stitched into the table:\n*\n* - Row model factories (`sortedRowModel`, `filteredRowModel`, etc.)\n* - Row model function registries (`sortFns`, `filterFns`, `aggregationFns`),\n* whose keys become the valid string values for `sortFn`, `filterFn`,\n* `globalFilterFn`, and `aggregationFn` with full inference\n* - Type-only `tableMeta`/`columnMeta` slots for declaring per-table meta types\n* instead of using global declaration merging. The values are phantom\n* (ignored and stripped at runtime); only their types are used.\n* @example\n* ```\n* import {\n* columnFilteringFeature,\n* createFilteredRowModel,\n* createSortedRowModel,\n* filterFn_includesString,\n* rowSortingFeature,\n* sortFn_alphanumeric,\n* sortFn_text,\n* tableFeatures,\n* } from '@tanstack/react-table'\n* const features = tableFeatures({\n* columnFilteringFeature,\n* rowSortingFeature,\n* filteredRowModel: createFilteredRowModel(),\n* sortedRowModel: createSortedRowModel(),\n* filterFns: { includesString: filterFn_includesString, myCustomFilterFn },\n* sortFns: { alphanumeric: sortFn_alphanumeric, text: sortFn_text },\n* tableMeta: {} as { updateData: (rowIndex: number, columnId: string, value: unknown) => void },\n* columnMeta: {} as { align?: 'left' | 'right' },\n* });\n* const table = useTable({ features, columns, data });\n* ```\n*/\nfunction tableFeatures(features) {\n\treturn features;\n}\n\n//#endregion\nexport { tableFeatures };","//#region src/core/reactivity/coreReactivityFeature.utils.ts\n/**\n* Bridges atom instances to the `Store`/`ReadonlyStore` API by exposing\n* a `state` getter backed by `atom.get()`, and wiring `setState` for\n* writable atoms.\n*\n* @example\n* ```ts\n* const store = atomToStore(atom)\n* ```\n*/\nfunction atomToStore(atom) {\n\tconst store = atom;\n\tObject.defineProperty(atom, \"state\", { get() {\n\t\treturn atom.get();\n\t} });\n\tif (\"set\" in atom) store.setState = atom.set.bind(atom);\n\treturn store;\n}\n\n//#endregion\nexport { atomToStore };","//#region src/alien.ts\nconst NONE = 0;\nconst MUTABLE = 1;\nconst WATCHING = 2;\nconst RECURSED_CHECK = 4;\nconst RECURSED = 8;\nconst DIRTY = 16;\nconst PENDING = 32;\n/* @__NO_SIDE_EFFECTS__ */\nfunction createReactiveSystem({ update, notify, unwatched }) {\n\treturn {\n\t\tlink,\n\t\tunlink,\n\t\tpropagate,\n\t\tcheckDirty,\n\t\tshallowPropagate\n\t};\n\tfunction link(dep, sub, version) {\n\t\tconst prevDep = sub.depsTail;\n\t\tif (prevDep !== void 0 && prevDep.dep === dep) return;\n\t\tconst nextDep = prevDep !== void 0 ? prevDep.nextDep : sub.deps;\n\t\tif (nextDep !== void 0 && nextDep.dep === dep) {\n\t\t\tnextDep.version = version;\n\t\t\tsub.depsTail = nextDep;\n\t\t\treturn;\n\t\t}\n\t\tconst prevSub = dep.subsTail;\n\t\tif (prevSub !== void 0 && prevSub.version === version && prevSub.sub === sub) return;\n\t\tconst newLink = sub.depsTail = dep.subsTail = {\n\t\t\tversion,\n\t\t\tdep,\n\t\t\tsub,\n\t\t\tprevDep,\n\t\t\tnextDep,\n\t\t\tprevSub,\n\t\t\tnextSub: void 0\n\t\t};\n\t\tif (nextDep !== void 0) nextDep.prevDep = newLink;\n\t\tif (prevDep !== void 0) prevDep.nextDep = newLink;\n\t\telse sub.deps = newLink;\n\t\tif (prevSub !== void 0) prevSub.nextSub = newLink;\n\t\telse dep.subs = newLink;\n\t}\n\tfunction unlink(link, sub = link.sub) {\n\t\tconst dep = link.dep;\n\t\tconst prevDep = link.prevDep;\n\t\tconst nextDep = link.nextDep;\n\t\tconst nextSub = link.nextSub;\n\t\tconst prevSub = link.prevSub;\n\t\tif (nextDep !== void 0) nextDep.prevDep = prevDep;\n\t\telse sub.depsTail = prevDep;\n\t\tif (prevDep !== void 0) prevDep.nextDep = nextDep;\n\t\telse sub.deps = nextDep;\n\t\tif (nextSub !== void 0) nextSub.prevSub = prevSub;\n\t\telse dep.subsTail = prevSub;\n\t\tif (prevSub !== void 0) prevSub.nextSub = nextSub;\n\t\telse if ((dep.subs = nextSub) === void 0) unwatched(dep);\n\t\treturn nextDep;\n\t}\n\tfunction propagate(link) {\n\t\tlet next = link.nextSub;\n\t\tlet stack;\n\t\ttop: do {\n\t\t\tconst sub = link.sub;\n\t\t\tlet flags = sub.flags;\n\t\t\tif (!(flags & 60)) sub.flags = flags | 32;\n\t\t\telse if (!(flags & (4 | 8))) flags = 0;\n\t\t\telse if (!(flags & 4)) sub.flags = flags & ~8 | 32;\n\t\t\telse if (!(flags & (16 | 32)) && isValidLink(link, sub)) {\n\t\t\t\tsub.flags = flags | (8 | 32);\n\t\t\t\tflags &= 1;\n\t\t\t} else flags = 0;\n\t\t\tif (flags & 2) notify(sub);\n\t\t\tif (flags & 1) {\n\t\t\t\tconst subSubs = sub.subs;\n\t\t\t\tif (subSubs !== void 0) {\n\t\t\t\t\tconst nextSub = (link = subSubs).nextSub;\n\t\t\t\t\tif (nextSub !== void 0) {\n\t\t\t\t\t\tstack = {\n\t\t\t\t\t\t\tvalue: next,\n\t\t\t\t\t\t\tprev: stack\n\t\t\t\t\t\t};\n\t\t\t\t\t\tnext = nextSub;\n\t\t\t\t\t}\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ((link = next) !== void 0) {\n\t\t\t\tnext = link.nextSub;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\twhile (stack !== void 0) {\n\t\t\t\tlink = stack.value;\n\t\t\t\tstack = stack.prev;\n\t\t\t\tif (link !== void 0) {\n\t\t\t\t\tnext = link.nextSub;\n\t\t\t\t\tcontinue top;\n\t\t\t\t}\n\t\t\t}\n\t\t\tbreak;\n\t\t} while (true);\n\t}\n\tfunction checkDirty(link, sub) {\n\t\tlet stack;\n\t\tlet checkDepth = 0;\n\t\tlet dirty = false;\n\t\ttop: do {\n\t\t\tconst dep = link.dep;\n\t\t\tconst flags = dep.flags;\n\t\t\tif (sub.flags & 16) dirty = true;\n\t\t\telse if ((flags & (1 | 16)) === (1 | 16)) {\n\t\t\t\tif (update(dep)) {\n\t\t\t\t\tconst subs = dep.subs;\n\t\t\t\t\tif (subs.nextSub !== void 0) shallowPropagate(subs);\n\t\t\t\t\tdirty = true;\n\t\t\t\t}\n\t\t\t} else if ((flags & (1 | 32)) === (1 | 32)) {\n\t\t\t\tif (link.nextSub !== void 0 || link.prevSub !== void 0) stack = {\n\t\t\t\t\tvalue: link,\n\t\t\t\t\tprev: stack\n\t\t\t\t};\n\t\t\t\tlink = dep.deps;\n\t\t\t\tsub = dep;\n\t\t\t\t++checkDepth;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (!dirty) {\n\t\t\t\tconst nextDep = link.nextDep;\n\t\t\t\tif (nextDep !== void 0) {\n\t\t\t\t\tlink = nextDep;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\t\t\twhile (checkDepth--) {\n\t\t\t\tconst firstSub = sub.subs;\n\t\t\t\tconst hasMultipleSubs = firstSub.nextSub !== void 0;\n\t\t\t\tif (hasMultipleSubs) {\n\t\t\t\t\tlink = stack.value;\n\t\t\t\t\tstack = stack.prev;\n\t\t\t\t} else link = firstSub;\n\t\t\t\tif (dirty) {\n\t\t\t\t\tif (update(sub)) {\n\t\t\t\t\t\tif (hasMultipleSubs) shallowPropagate(firstSub);\n\t\t\t\t\t\tsub = link.sub;\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\tdirty = false;\n\t\t\t\t} else sub.flags &= ~32;\n\t\t\t\tsub = link.sub;\n\t\t\t\tconst nextDep = link.nextDep;\n\t\t\t\tif (nextDep !== void 0) {\n\t\t\t\t\tlink = nextDep;\n\t\t\t\t\tcontinue top;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn dirty;\n\t\t} while (true);\n\t}\n\tfunction shallowPropagate(link) {\n\t\tdo {\n\t\t\tconst sub = link.sub;\n\t\t\tconst flags = sub.flags;\n\t\t\tif ((flags & (32 | 16)) === 32) {\n\t\t\t\tsub.flags = flags | 16;\n\t\t\t\tif ((flags & (2 | 4)) === 2) notify(sub);\n\t\t\t}\n\t\t} while ((link = link.nextSub) !== void 0);\n\t}\n\tfunction isValidLink(checkLink, sub) {\n\t\tlet link = sub.depsTail;\n\t\twhile (link !== void 0) {\n\t\t\tif (link === checkLink) return true;\n\t\t\tlink = link.prevDep;\n\t\t}\n\t\treturn false;\n\t}\n}\n\n//#endregion\nexport { createReactiveSystem };\n//# sourceMappingURL=alien.js.map","import { createReactiveSystem } from \"./alien.js\";\n\n//#region src/atom.ts\nfunction toObserver(nextHandler, errorHandler, completionHandler) {\n\tconst isObserver = typeof nextHandler === \"object\";\n\tconst self = isObserver ? nextHandler : void 0;\n\treturn {\n\t\tnext: (isObserver ? nextHandler.next : nextHandler)?.bind(self),\n\t\terror: (isObserver ? nextHandler.error : errorHandler)?.bind(self),\n\t\tcomplete: (isObserver ? nextHandler.complete : completionHandler)?.bind(self)\n\t};\n}\nconst queuedEffects = [];\nlet cycle = 0;\nconst { link, unlink, propagate, checkDirty, shallowPropagate } = /* @__PURE__ */ createReactiveSystem({\n\tupdate(atom) {\n\t\treturn atom._update();\n\t},\n\tnotify(effect) {\n\t\tqueuedEffects[queuedEffectsLength++] = effect;\n\t\teffect.flags &= ~2;\n\t},\n\tunwatched(atom) {\n\t\tif (atom.depsTail !== void 0) {\n\t\t\tatom.depsTail = void 0;\n\t\t\tatom.flags = 1 | 16;\n\t\t\tpurgeDeps(atom);\n\t\t}\n\t}\n});\nlet notifyIndex = 0;\nlet queuedEffectsLength = 0;\nlet activeSub;\nlet batchDepth = 0;\nfunction batch(fn) {\n\ttry {\n\t\t++batchDepth;\n\t\tfn();\n\t} finally {\n\t\tif (!--batchDepth) flush();\n\t}\n}\nfunction purgeDeps(sub) {\n\tconst depsTail = sub.depsTail;\n\tlet dep = depsTail !== void 0 ? depsTail.nextDep : sub.deps;\n\twhile (dep !== void 0) dep = unlink(dep, sub);\n}\nfunction flush() {\n\tif (batchDepth > 0) return;\n\twhile (notifyIndex < queuedEffectsLength) {\n\t\tconst effect = queuedEffects[notifyIndex];\n\t\tqueuedEffects[notifyIndex++] = void 0;\n\t\teffect.notify();\n\t}\n\tnotifyIndex = 0;\n\tqueuedEffectsLength = 0;\n}\nfunction createAsyncAtom(getValue, options) {\n\tconst ref = {};\n\tconst atom = createAtom(() => {\n\t\tgetValue().then((data) => {\n\t\t\tconst internalAtom = ref.current;\n\t\t\tif (internalAtom._update({\n\t\t\t\tstatus: \"done\",\n\t\t\t\tdata\n\t\t\t})) {\n\t\t\t\tconst subs = internalAtom.subs;\n\t\t\t\tif (subs !== void 0) {\n\t\t\t\t\tpropagate(subs);\n\t\t\t\t\tshallowPropagate(subs);\n\t\t\t\t\tflush();\n\t\t\t\t}\n\t\t\t}\n\t\t}, (error) => {\n\t\t\tconst internalAtom = ref.current;\n\t\t\tif (internalAtom._update({\n\t\t\t\tstatus: \"error\",\n\t\t\t\terror\n\t\t\t})) {\n\t\t\t\tconst subs = internalAtom.subs;\n\t\t\t\tif (subs !== void 0) {\n\t\t\t\t\tpropagate(subs);\n\t\t\t\t\tshallowPropagate(subs);\n\t\t\t\t\tflush();\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\treturn { status: \"pending\" };\n\t}, options);\n\tref.current = atom;\n\treturn atom;\n}\nfunction createAtom(valueOrFn, options) {\n\tconst isComputed = typeof valueOrFn === \"function\";\n\tconst getter = valueOrFn;\n\tconst atom = {\n\t\t_snapshot: isComputed ? void 0 : valueOrFn,\n\t\tsubs: void 0,\n\t\tsubsTail: void 0,\n\t\tdeps: void 0,\n\t\tdepsTail: void 0,\n\t\tflags: isComputed ? 0 : 1,\n\t\tget() {\n\t\t\tif (activeSub !== void 0) link(atom, activeSub, cycle);\n\t\t\treturn atom._snapshot;\n\t\t},\n\t\tsubscribe(observerOrFn) {\n\t\t\tconst obs = toObserver(observerOrFn);\n\t\t\tconst observed = { current: false };\n\t\t\tconst e = effect(() => {\n\t\t\t\tatom.get();\n\t\t\t\tif (!observed.current) observed.current = true;\n\t\t\t\telse {\n\t\t\t\t\tactiveSub = void 0;\n\t\t\t\t\tobs.next?.(atom._snapshot);\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn { unsubscribe: () => {\n\t\t\t\te.stop();\n\t\t\t} };\n\t\t},\n\t\t_update(getValue) {\n\t\t\tconst prevSub = activeSub;\n\t\t\tconst compare = options?.compare ?? Object.is;\n\t\t\tif (isComputed) {\n\t\t\t\tactiveSub = atom;\n\t\t\t\t++cycle;\n\t\t\t\tatom.depsTail = void 0;\n\t\t\t} else if (getValue === void 0) return false;\n\t\t\tif (isComputed) atom.flags = 1 | 4;\n\t\t\ttry {\n\t\t\t\tconst oldValue = atom._snapshot;\n\t\t\t\tconst newValue = typeof getValue === \"function\" ? getValue(oldValue) : getValue === void 0 && isComputed ? getter(oldValue) : getValue;\n\t\t\t\tif (oldValue === void 0 || !compare(oldValue, newValue)) {\n\t\t\t\t\tatom._snapshot = newValue;\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t} finally {\n\t\t\t\tactiveSub = prevSub;\n\t\t\t\tif (isComputed) atom.flags &= ~4;\n\t\t\t\tpurgeDeps(atom);\n\t\t\t}\n\t\t}\n\t};\n\tif (isComputed) {\n\t\tatom.flags = 1 | 16;\n\t\tatom.get = function() {\n\t\t\tconst flags = atom.flags;\n\t\t\tif (flags & 16 || flags & 32 && checkDirty(atom.deps, atom)) {\n\t\t\t\tif (atom._update()) {\n\t\t\t\t\tconst subs = atom.subs;\n\t\t\t\t\tif (subs !== void 0) shallowPropagate(subs);\n\t\t\t\t}\n\t\t\t} else if (flags & 32) atom.flags = flags & ~32;\n\t\t\tif (activeSub !== void 0) link(atom, activeSub, cycle);\n\t\t\treturn atom._snapshot;\n\t\t};\n\t} else atom.set = function(valueOrFn) {\n\t\tif (atom._update(valueOrFn)) {\n\t\t\tconst subs = atom.subs;\n\t\t\tif (subs !== void 0) {\n\t\t\t\tpropagate(subs);\n\t\t\t\tshallowPropagate(subs);\n\t\t\t\tflush();\n\t\t\t}\n\t\t}\n\t};\n\treturn atom;\n}\nfunction effect(fn) {\n\tconst run = () => {\n\t\tconst prevSub = activeSub;\n\t\tactiveSub = effectObj;\n\t\t++cycle;\n\t\teffectObj.depsTail = void 0;\n\t\teffectObj.flags = 2 | 4;\n\t\ttry {\n\t\t\treturn fn();\n\t\t} finally {\n\t\t\tactiveSub = prevSub;\n\t\t\teffectObj.flags &= ~4;\n\t\t\tpurgeDeps(effectObj);\n\t\t}\n\t};\n\tconst effectObj = {\n\t\tdeps: void 0,\n\t\tdepsTail: void 0,\n\t\tsubs: void 0,\n\t\tsubsTail: void 0,\n\t\tflags: 2 | 4,\n\t\tnotify() {\n\t\t\tconst flags = this.flags;\n\t\t\tif (flags & 16 || flags & 32 && checkDirty(this.deps, this)) run();\n\t\t\telse this.flags = 2;\n\t\t},\n\t\tstop() {\n\t\t\tthis.flags = 0;\n\t\t\tthis.depsTail = void 0;\n\t\t\tpurgeDeps(this);\n\t\t}\n\t};\n\trun();\n\treturn effectObj;\n}\n\n//#endregion\nexport { batch, createAsyncAtom, createAtom, flush, toObserver };\n//# sourceMappingURL=atom.js.map","//#region src/shallow.ts\nfunction shallow(objA, objB) {\n\tif (Object.is(objA, objB)) return true;\n\tif (typeof objA !== \"object\" || objA === null || typeof objB !== \"object\" || objB === null) return false;\n\tif (objA instanceof Map && objB instanceof Map) {\n\t\tif (objA.size !== objB.size) return false;\n\t\tfor (const [k, v] of objA) if (!objB.has(k) || !Object.is(v, objB.get(k))) return false;\n\t\treturn true;\n\t}\n\tif (objA instanceof Set && objB instanceof Set) {\n\t\tif (objA.size !== objB.size) return false;\n\t\tfor (const v of objA) if (!objB.has(v)) return false;\n\t\treturn true;\n\t}\n\tif (objA instanceof Date && objB instanceof Date) {\n\t\tif (objA.getTime() !== objB.getTime()) return false;\n\t\treturn true;\n\t}\n\tconst keysA = getOwnKeys(objA);\n\tif (keysA.length !== getOwnKeys(objB).length) return false;\n\tfor (let i = 0; i < keysA.length; i++) if (!Object.prototype.hasOwnProperty.call(objB, keysA[i]) || !Object.is(objA[keysA[i]], objB[keysA[i]])) return false;\n\treturn true;\n}\nfunction getOwnKeys(obj) {\n\treturn Object.keys(obj).concat(Object.getOwnPropertySymbols(obj));\n}\n\n//#endregion\nexport { shallow };\n//# sourceMappingURL=shallow.js.map","import { cloneState, hasOwn } from \"../../utils.js\";\nimport { table_syncExternalStateToBaseAtoms } from \"./coreTablesFeature.utils.js\";\nimport { coreFeatures } from \"../coreFeatures.js\";\nimport { atomToStore } from \"../reactivity/coreReactivityFeature.utils.js\";\nimport { shallow } from \"@tanstack/store\";\n\n//#region src/core/table/constructTable.ts\n/**\n* Builds the initial table state from registered features and user initial state.\n*\n* Each feature contributes its default state before user-provided `initialState` values are merged in.\n*/\nfunction getInitialTableState(features, initialState = {}) {\n\tObject.values(features).forEach((feature) => {\n\t\tinitialState = feature.getInitialState?.(initialState) ?? initialState;\n\t});\n\treturn cloneState(initialState);\n}\n/**\n* Constructs a table instance from normalized table internals.\n*\n* This wires core properties, feature prototype APIs, and instance data used by table rendering and row-model operations.\n*/\nfunction constructTable(tableOptions) {\n\tconst _reactivity = tableOptions.features.coreReactivityFeature;\n\tconst { aggregationFns, columnMeta: _columnMeta, coreRowModel, expandedRowModel, facetedMinMaxValues, facetedRowModel, facetedUniqueValues, filterFns, filterMeta: _filterMeta, filteredRowModel, groupedRowModel, paginatedRowModel, sortFns, sortedRowModel, tableMeta: _tableMeta, ...features } = tableOptions.features;\n\tconst table = {\n\t\t_cellInstanceInitFns: [],\n\t\t_columnInstanceInitFns: [],\n\t\t_features: {\n\t\t\t...coreFeatures,\n\t\t\t...features\n\t\t},\n\t\t_headerGroupInstanceInitFns: [],\n\t\t_headerInstanceInitFns: [],\n\t\t_reactivity,\n\t\t_rowInstanceInitFns: [],\n\t\t_rowModelFns: {\n\t\t\taggregationFns,\n\t\t\tfilterFns,\n\t\t\tsortFns\n\t\t},\n\t\t_rowModels: {},\n\t\tatoms: {},\n\t\tbaseAtoms: {}\n\t};\n\tconst featuresList = Object.values(table._features);\n\tconst mergedOptions = {\n\t\t...featuresList.reduce((obj, feature) => {\n\t\t\treturn Object.assign(obj, feature.getDefaultTableOptions?.(table));\n\t\t}, {}),\n\t\t...tableOptions\n\t};\n\tif (_reactivity.wrapExternalAtoms && mergedOptions.atoms) for (const [atomKey, _atom] of Object.entries(mergedOptions.atoms)) {\n\t\tconst atom = _atom;\n\t\tconst wrappedAtom = _reactivity.createWritableAtom(atom.get(), { debugName: `externalAtom/${atomKey}` });\n\t\tmergedOptions.atoms[atomKey] = wrappedAtom;\n\t\tlet syncExternal = false;\n\t\tconst syncAtomToWrappedSub = atom.subscribe((value) => {\n\t\t\tif (syncExternal) return;\n\t\t\twrappedAtom.set(value);\n\t\t});\n\t\tconst syncWrappedToAtomSub = wrappedAtom.subscribe((value) => {\n\t\t\tsyncExternal = true;\n\t\t\tatom.set(value);\n\t\t\tsyncExternal = false;\n\t\t});\n\t\t_reactivity.addSubscription(syncAtomToWrappedSub);\n\t\t_reactivity.addSubscription(syncWrappedToAtomSub);\n\t}\n\tif (_reactivity.createOptionsStore) {\n\t\ttable.optionsStore = _reactivity.createWritableAtom(mergedOptions, { debugName: \"table/optionsStore\" });\n\t\tObject.defineProperty(table, \"options\", {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: true,\n\t\t\tget() {\n\t\t\t\treturn table.optionsStore.get();\n\t\t\t},\n\t\t\tset(value) {\n\t\t\t\ttable.optionsStore.set(() => value);\n\t\t\t}\n\t\t});\n\t} else table.options = mergedOptions;\n\ttable.initialState = getInitialTableState(table._features, table.options.initialState);\n\tconst stateKeys = Object.keys(table.initialState);\n\tfor (let i = 0; i < stateKeys.length; i++) {\n\t\tconst key = stateKeys[i];\n\t\ttable.baseAtoms[key] = _reactivity.createWritableAtom(table.initialState[key], { debugName: `table/baseAtoms/${key}` });\n\t\ttable.atoms[key] = _reactivity.createReadonlyAtom(() => {\n\t\t\tconst options = table.options;\n\t\t\tconst externalAtom = options.atoms?.[key];\n\t\t\tconst reactiveState = externalAtom ? externalAtom.get() : table.baseAtoms[key].get();\n\t\t\tif (externalAtom) return reactiveState;\n\t\t\tconst controlledState = options.state;\n\t\t\tif (controlledState && hasOwn(controlledState, key)) {\n\t\t\t\tconst controlledValue = controlledState[key];\n\t\t\t\treturn controlledValue === void 0 ? table.initialState[key] : controlledValue;\n\t\t\t}\n\t\t\treturn reactiveState;\n\t\t}, { debugName: `table/atoms/${key}` });\n\t}\n\ttable_syncExternalStateToBaseAtoms(table);\n\ttable.store = atomToStore(_reactivity.createReadonlyAtom(() => {\n\t\tconst snapshot = {};\n\t\tfor (let i = 0; i < stateKeys.length; i++) {\n\t\t\tconst key = stateKeys[i];\n\t\t\tsnapshot[key] = table.atoms[key].get();\n\t\t}\n\t\treturn snapshot;\n\t}, {\n\t\tcompare: shallow,\n\t\tdebugName: \"table/store\"\n\t}));\n\tfor (let i = 0; i < featuresList.length; i++) {\n\t\tconst feature = featuresList[i];\n\t\tfeature.initTableInstanceData?.(table);\n\t\tif (feature.initCellInstanceData) table._cellInstanceInitFns.push(feature.initCellInstanceData.bind(feature));\n\t\tif (feature.initColumnInstanceData) table._columnInstanceInitFns.push(feature.initColumnInstanceData.bind(feature));\n\t\tif (feature.initHeaderGroupInstanceData) table._headerGroupInstanceInitFns.push(feature.initHeaderGroupInstanceData.bind(feature));\n\t\tif (feature.initHeaderInstanceData) table._headerInstanceInitFns.push(feature.initHeaderInstanceData.bind(feature));\n\t\tif (feature.initRowInstanceData) table._rowInstanceInitFns.push(feature.initRowInstanceData.bind(feature));\n\t\tfeature.constructTableAPIs?.(table);\n\t}\n\tif (process.env.NODE_ENV === \"development\" && (tableOptions.debugAll || tableOptions.debugTable)) {\n\t\tconst features = Object.keys(table._features);\n\t\tconst rowModels = Object.entries({\n\t\t\tcoreRowModel,\n\t\t\tfilteredRowModel,\n\t\t\tgroupedRowModel,\n\t\t\tsortedRowModel,\n\t\t\texpandedRowModel,\n\t\t\tpaginatedRowModel,\n\t\t\tfacetedRowModel,\n\t\t\tfacetedMinMaxValues,\n\t\t\tfacetedUniqueValues\n\t\t}).filter(([, factory]) => factory).map(([key]) => key);\n\t\tconst states = Object.keys(table.initialState);\n\t\tconsole.log(`Constructing Table Instance\n\n Features: ${features.join(\"\\n \")}\n\n Row Models: ${rowModels.length ? rowModels.join(\"\\n \") : \"(none)\"}\n\n States: ${states.join(\"\\n \")}\\n`, { table });\n\t}\n\treturn table;\n}\n\n//#endregion\nexport { constructTable, getInitialTableState };","import { callMemoOrStaticFn, cloneState, setStateSlice } from \"../../utils.js\";\nimport { getIsColumnVisible, getVisibleCells, getVisibleCellsByColumnId, getVisibleLeafColumns } from \"../../core/featureStubs.js\";\nimport { buildHeaderGroups } from \"../../core/headers/buildHeaderGroups.js\";\n\n//#region src/features/column-pinning/columnPinningFeature.utils.ts\n/**\n* Creates the default column pinning state.\n*\n* Both pinning regions start empty. Reset APIs use this value when\n* `defaultState` is `true`.\n*\n* @example\n* ```ts\n* const pinning = getDefaultColumnPinningState()\n* ```\n*/\nfunction getDefaultColumnPinningState() {\n\treturn {\n\t\tstart: [],\n\t\tend: []\n\t};\n}\n/**\n* Moves this column's leaf column ids into a pinning region.\n*\n* Pinning a group column pins all of its leaves. The leaf ids are first removed\n* from both regions, then appended to the requested `'start'` or `'end'`\n* region. Passing `false` unpins them back to the center.\n*\n* `start` and `end` are logical positions. In LTR languages/layouts, `start`\n* usually corresponds to left and `end` to right. In RTL languages/layouts,\n* `start` usually corresponds to right and `end` to left.\n*\n* @example\n* ```ts\n* column_pin(column, 'start')\n* ```\n*/\nfunction column_pin(column, position) {\n\tconst leafColumns = column.getLeafColumns();\n\tconst columnIds = [];\n\tfor (let i = 0; i < leafColumns.length; i++) {\n\t\tconst id = leafColumns[i].id;\n\t\tif (id) columnIds.push(id);\n\t}\n\ttable_setColumnPinning(column.table, (old) => {\n\t\tif (position === \"end\") return {\n\t\t\tstart: old.start.filter((d) => !columnIds.includes(d)),\n\t\t\tend: [...old.end.filter((d) => !columnIds.includes(d)), ...columnIds]\n\t\t};\n\t\tif (position === \"start\") return {\n\t\t\tstart: [...old.start.filter((d) => !columnIds.includes(d)), ...columnIds],\n\t\t\tend: old.end.filter((d) => !columnIds.includes(d))\n\t\t};\n\t\treturn {\n\t\t\tstart: old.start.filter((d) => !columnIds.includes(d)),\n\t\t\tend: old.end.filter((d) => !columnIds.includes(d))\n\t\t};\n\t});\n}\n/**\n* Checks whether this column or any of its leaf columns can be pinned.\n*\n* Column-level `enablePinning` and table `enableColumnPinning` both default to\n* `true`; at least one leaf column must allow pinning.\n*\n* @example\n* ```ts\n* const canPin = column_getCanPin(column)\n* ```\n*/\nfunction column_getCanPin(column) {\n\treturn column.getLeafColumns().some((leafColumn) => (leafColumn.columnDef.enablePinning ?? true) && (column.table.options.enableColumnPinning ?? true));\n}\n/**\n* Reads this column's current pinning region.\n*\n* Group columns report `'start'` or `'end'` when any leaf column is pinned in\n* that region. Unpinned columns return `false`.\n*\n* `start` and `end` are logical positions. In LTR languages/layouts, `start`\n* usually corresponds to left and `end` to right. In RTL languages/layouts,\n* `start` usually corresponds to right and `end` to left.\n*\n* @example\n* ```ts\n* const position = column_getIsPinned(column)\n* ```\n*/\nfunction column_getIsPinned(column) {\n\tconst leafColumns = column.getLeafColumns();\n\tconst { start, end } = column.table.atoms.columnPinning?.get() ?? getDefaultColumnPinningState();\n\tfor (let i = 0; i < leafColumns.length; i++) if (start.includes(leafColumns[i].id)) return \"start\";\n\tfor (let i = 0; i < leafColumns.length; i++) if (end.includes(leafColumns[i].id)) return \"end\";\n\treturn false;\n}\n/**\n* Finds this column's index within its pinned region.\n*\n* Unpinned columns return `0`; pinned columns return their position in\n* `state.columnPinning.start` or `state.columnPinning.end`.\n*\n* @example\n* ```ts\n* const index = column_getPinnedIndex(column)\n* ```\n*/\nfunction column_getPinnedIndex(column) {\n\tconst position = column_getIsPinned(column);\n\treturn position ? column.table.atoms.columnPinning?.get()?.[position].indexOf(column.id) ?? -1 : 0;\n}\n/**\n* Collects visible cells whose columns are not pinned start or end.\n*\n* The result preserves the row's visible-cell order for center columns.\n*\n* @example\n* ```ts\n* const centerCells = row_getCenterVisibleCells(row)\n* ```\n*/\nfunction row_getCenterVisibleCells(row) {\n\tconst allCells = getVisibleCells(row);\n\tconst { start, end } = row.table.atoms.columnPinning?.get() ?? getDefaultColumnPinningState();\n\tif (!start.length && !end.length) return allCells;\n\tconst startAndEnd = [...start, ...end];\n\treturn allCells.filter((d) => !startAndEnd.includes(d.column.id));\n}\n/**\n* Collects visible cells for columns pinned to the start region.\n*\n* Cells are returned in `state.columnPinning.start` order and are marked with\n* `cell.position = 'start'`.\n*\n* @example\n* ```ts\n* const startCells = row_getStartVisibleCells(row)\n* ```\n*/\nfunction row_getStartVisibleCells(row) {\n\tconst { start } = row.table.atoms.columnPinning?.get() ?? getDefaultColumnPinningState();\n\tif (!start.length) return [];\n\tconst allVisibleCells = getVisibleCellsByColumnId(row);\n\tconst cells = [];\n\tfor (let i = 0; i < start.length; i++) {\n\t\tconst cell = allVisibleCells[start[i]];\n\t\tif (cell) {\n\t\t\tcell.position = \"start\";\n\t\t\tcells.push(cell);\n\t\t}\n\t}\n\treturn cells;\n}\n/**\n* Collects visible cells for columns pinned to the end region.\n*\n* Cells are returned in `state.columnPinning.end` order and are marked with\n* `cell.position = 'end'`.\n*\n* @example\n* ```ts\n* const endCells = row_getEndVisibleCells(row)\n* ```\n*/\nfunction row_getEndVisibleCells(row) {\n\tconst { end } = row.table.atoms.columnPinning?.get() ?? getDefaultColumnPinningState();\n\tif (!end.length) return [];\n\tconst allVisibleCells = getVisibleCellsByColumnId(row);\n\tconst cells = [];\n\tfor (let i = 0; i < end.length; i++) {\n\t\tconst cell = allVisibleCells[end[i]];\n\t\tif (cell) {\n\t\t\tcell.position = \"end\";\n\t\t\tcells.push(cell);\n\t\t}\n\t}\n\treturn cells;\n}\n/**\n* Routes a column pinning updater through the table's pinning change handler.\n*\n* The updater may be a next `{ start, end }` state or a function of the\n* previous state, matching the instance `table.setColumnPinning` behavior.\n*\n* @example\n* ```ts\n* table_setColumnPinning(table, (old) => ({ ...old, start: ['select'] }))\n* ```\n*/\nfunction table_setColumnPinning(table, updater) {\n\tsetStateSlice(table, \"columnPinning\", updater);\n}\n/**\n* Resets `columnPinning` to the configured initial state or feature default.\n*\n* With no argument, the reset clones `table.initialState.columnPinning` when it\n* exists. Passing `true` ignores initial state and resets to empty start/end\n* arrays.\n*\n* @example\n* ```ts\n* table_resetColumnPinning(table)\n* table_resetColumnPinning(table, true)\n* ```\n*/\nfunction table_resetColumnPinning(table, defaultState) {\n\ttable_setColumnPinning(table, defaultState ? getDefaultColumnPinningState() : cloneState(table.initialState.columnPinning ?? getDefaultColumnPinningState()));\n}\n/**\n* Checks whether any columns are pinned.\n*\n* Omit `position` to check both sides, or pass `'start'`/`'end'` to inspect a\n* single pinning region.\n*\n* @example\n* ```ts\n* const hasPinnedColumns = table_getIsSomeColumnsPinned(table)\n* ```\n*/\nfunction table_getIsSomeColumnsPinned(table, position) {\n\tconst pinningState = table.atoms.columnPinning?.get();\n\tif (!position) return Boolean(pinningState?.start.length || pinningState?.end.length);\n\treturn Boolean(pinningState?.[position].length);\n}\n/**\n* Builds header groups for visible columns pinned to the start region.\n*\n* The leaf columns are read in `state.columnPinning.start` order and then passed\n* through the same header-group builder as the unpinned table.\n*\n* @example\n* ```ts\n* const headerGroups = table_getStartHeaderGroups(table)\n* ```\n*/\nfunction table_getStartHeaderGroups(table) {\n\tconst allColumns = table.getAllColumns();\n\tconst leafColumnsById = table.getAllLeafColumnsById();\n\tconst { start } = table.atoms.columnPinning?.get() ?? getDefaultColumnPinningState();\n\tconst orderedLeafColumns = [];\n\tfor (let i = 0; i < start.length; i++) {\n\t\tconst column = leafColumnsById[start[i]];\n\t\tif (column && getIsColumnVisible(column)) orderedLeafColumns.push(column);\n\t}\n\treturn buildHeaderGroups(allColumns, orderedLeafColumns, table, \"start\");\n}\n/**\n* Builds header groups for visible columns pinned to the end region.\n*\n* The leaf columns are read in `state.columnPinning.end` order and then\n* passed through the same header-group builder as the unpinned table.\n*\n* @example\n* ```ts\n* const headerGroups = table_getEndHeaderGroups(table)\n* ```\n*/\nfunction table_getEndHeaderGroups(table) {\n\tconst allColumns = table.getAllColumns();\n\tconst leafColumnsById = table.getAllLeafColumnsById();\n\tconst { end } = table.atoms.columnPinning?.get() ?? getDefaultColumnPinningState();\n\tconst orderedLeafColumns = [];\n\tfor (let i = 0; i < end.length; i++) {\n\t\tconst column = leafColumnsById[end[i]];\n\t\tif (column && getIsColumnVisible(column)) orderedLeafColumns.push(column);\n\t}\n\treturn buildHeaderGroups(allColumns, orderedLeafColumns, table, \"end\");\n}\n/**\n* Builds header groups for visible columns that are not pinned.\n*\n* Start- and end-pinned column ids are removed from the visible leaf column\n* list before header groups are built for the center region.\n*\n* @example\n* ```ts\n* const headerGroups = table_getCenterHeaderGroups(table)\n* ```\n*/\nfunction table_getCenterHeaderGroups(table) {\n\tconst allColumns = table.getAllColumns();\n\tlet leafColumns = getVisibleLeafColumns(table);\n\tconst { start, end } = table.atoms.columnPinning?.get() ?? getDefaultColumnPinningState();\n\tif (start.length || end.length) {\n\t\tconst startAndEnd = [...start, ...end];\n\t\tleafColumns = leafColumns.filter((column) => !startAndEnd.includes(column.id));\n\t}\n\treturn buildHeaderGroups(allColumns, leafColumns, table, \"center\");\n}\n/**\n* Builds footer groups for the start pinned region.\n*\n* Footer groups reuse the start header groups in reverse order.\n*\n* @example\n* ```ts\n* const footerGroups = table_getStartFooterGroups(table)\n* ```\n*/\nfunction table_getStartFooterGroups(table) {\n\treturn [...callMemoOrStaticFn(table, \"getStartHeaderGroups\", table_getStartHeaderGroups)].reverse();\n}\n/**\n* Builds footer groups for the end pinned region.\n*\n* Footer groups reuse the end header groups in reverse order.\n*\n* @example\n* ```ts\n* const footerGroups = table_getEndFooterGroups(table)\n* ```\n*/\nfunction table_getEndFooterGroups(table) {\n\treturn [...callMemoOrStaticFn(table, \"getEndHeaderGroups\", table_getEndHeaderGroups)].reverse();\n}\n/**\n* Builds footer groups for the center, unpinned region.\n*\n* Footer groups reuse the center header groups in reverse order.\n*\n* @example\n* ```ts\n* const footerGroups = table_getCenterFooterGroups(table)\n* ```\n*/\nfunction table_getCenterFooterGroups(table) {\n\treturn [...callMemoOrStaticFn(table, \"getCenterHeaderGroups\", table_getCenterHeaderGroups)].reverse();\n}\n/**\n* Flattens every header from the start pinned header groups.\n*\n* Parent headers and placeholder headers are included.\n*\n* @example\n* ```ts\n* const headers = table_getStartFlatHeaders(table)\n* ```\n*/\nfunction table_getStartFlatHeaders(table) {\n\tconst leftHeaderGroups = callMemoOrStaticFn(table, \"getStartHeaderGroups\", table_getStartHeaderGroups);\n\tconst result = [];\n\tfor (let i = 0; i < leftHeaderGroups.length; i++) {\n\t\tconst headers = leftHeaderGroups[i].headers;\n\t\tfor (let j = 0; j < headers.length; j++) result.push(headers[j]);\n\t}\n\treturn result;\n}\n/**\n* Flattens every header from the end pinned header groups.\n*\n* Parent headers and placeholder headers are included.\n*\n* @example\n* ```ts\n* const headers = table_getEndFlatHeaders(table)\n* ```\n*/\nfunction table_getEndFlatHeaders(table) {\n\tconst rightHeaderGroups = callMemoOrStaticFn(table, \"getEndHeaderGroups\", table_getEndHeaderGroups);\n\tconst result = [];\n\tfor (let i = 0; i < rightHeaderGroups.length; i++) {\n\t\tconst headers = rightHeaderGroups[i].headers;\n\t\tfor (let j = 0; j < headers.length; j++) result.push(headers[j]);\n\t}\n\treturn result;\n}\n/**\n* Flattens every header from the center header groups.\n*\n* Parent headers and placeholder headers are included.\n*\n* @example\n* ```ts\n* const headers = table_getCenterFlatHeaders(table)\n* ```\n*/\nfunction table_getCenterFlatHeaders(table) {\n\tconst centerHeaderGroups = callMemoOrStaticFn(table, \"getCenterHeaderGroups\", table_getCenterHeaderGroups);\n\tconst result = [];\n\tfor (let i = 0; i < centerHeaderGroups.length; i++) {\n\t\tconst headers = centerHeaderGroups[i].headers;\n\t\tfor (let j = 0; j < headers.length; j++) result.push(headers[j]);\n\t}\n\treturn result;\n}\n/**\n* Collects leaf headers for the start pinned region.\n*\n* Parent headers are filtered out from the start flat header list.\n*\n* @example\n* ```ts\n* const headers = table_getStartLeafHeaders(table)\n* ```\n*/\nfunction table_getStartLeafHeaders(table) {\n\treturn callMemoOrStaticFn(table, \"getStartFlatHeaders\", table_getStartFlatHeaders).filter((header) => !header.subHeaders.length);\n}\n/**\n* Collects leaf headers for the end pinned region.\n*\n* Parent headers are filtered out from the end flat header list.\n*\n* @example\n* ```ts\n* const headers = table_getEndLeafHeaders(table)\n* ```\n*/\nfunction table_getEndLeafHeaders(table) {\n\treturn callMemoOrStaticFn(table, \"getEndFlatHeaders\", table_getEndFlatHeaders).filter((header) => !header.subHeaders.length);\n}\n/**\n* Collects leaf headers for the center, unpinned region.\n*\n* Parent headers are filtered out from the center flat header list.\n*\n* @example\n* ```ts\n* const headers = table_getCenterLeafHeaders(table)\n* ```\n*/\nfunction table_getCenterLeafHeaders(table) {\n\treturn callMemoOrStaticFn(table, \"getCenterFlatHeaders\", table_getCenterFlatHeaders).filter((header) => !header.subHeaders.length);\n}\n/**\n* Resolves leaf columns pinned to the start region.\n*\n* The result follows `state.columnPinning.start` order and skips stale ids that\n* no longer correspond to a leaf column.\n*\n* @example\n* ```ts\n* const columns = table_getStartLeafColumns(table)\n* ```\n*/\nfunction table_getStartLeafColumns(table) {\n\tconst { start } = table.atoms.columnPinning?.get() ?? getDefaultColumnPinningState();\n\tconst leafColumnsById = table.getAllLeafColumnsById();\n\tconst result = [];\n\tfor (let i = 0; i < start.length; i++) {\n\t\tconst column = leafColumnsById[start[i]];\n\t\tif (column) result.push(column);\n\t}\n\treturn result;\n}\n/**\n* Resolves leaf columns pinned to the end region.\n*\n* The result follows `state.columnPinning.end` order and skips stale ids that\n* no longer correspond to a leaf column.\n*\n* @example\n* ```ts\n* const columns = table_getEndLeafColumns(table)\n* ```\n*/\nfunction table_getEndLeafColumns(table) {\n\tconst { end } = table.atoms.columnPinning?.get() ?? getDefaultColumnPinningState();\n\tconst leafColumnsById = table.getAllLeafColumnsById();\n\tconst result = [];\n\tfor (let i = 0; i < end.length; i++) {\n\t\tconst column = leafColumnsById[end[i]];\n\t\tif (column) result.push(column);\n\t}\n\treturn result;\n}\n/**\n* Resolves leaf columns that are not pinned to either logical side.\n*\n* Start- and end-pinned ids are removed from `table.getAllLeafColumns()`.\n*\n* @example\n* ```ts\n* const columns = table_getCenterLeafColumns(table)\n* ```\n*/\nfunction table_getCenterLeafColumns(table) {\n\tconst { start, end } = table.atoms.columnPinning?.get() ?? getDefaultColumnPinningState();\n\tif (!start.length && !end.length) return table.getAllLeafColumns();\n\tconst startAndEnd = [...start, ...end];\n\treturn table.getAllLeafColumns().filter((d) => !startAndEnd.includes(d.id));\n}\n/**\n* Resolves leaf columns for a requested pinning region.\n*\n* Pass `'start'`, `'center'`, or `'end'` for a partition, or pass `false` to\n* read all leaf columns without partitioning.\n*\n* @example\n* ```ts\n* const columns = table_getPinnedLeafColumns(table, 'center')\n* ```\n*/\nfunction table_getPinnedLeafColumns(table, position) {\n\treturn !position ? table.getAllLeafColumns() : position === \"start\" ? callMemoOrStaticFn(table, \"getStartLeafColumns\", table_getStartLeafColumns) : position === \"end\" ? callMemoOrStaticFn(table, \"getEndLeafColumns\", table_getEndLeafColumns) : callMemoOrStaticFn(table, \"getCenterLeafColumns\", table_getCenterLeafColumns);\n}\n/**\n* Resolves visible leaf columns pinned to the start region.\n*\n* Hidden pinned columns are filtered out after the start pin order is applied.\n*\n* @example\n* ```ts\n* const columns = table_getStartVisibleLeafColumns(table)\n* ```\n*/\nfunction table_getStartVisibleLeafColumns(table) {\n\treturn callMemoOrStaticFn(table, \"getStartLeafColumns\", table_getStartLeafColumns).filter((column) => getIsColumnVisible(column));\n}\n/**\n* Resolves visible leaf columns pinned to the end region.\n*\n* Hidden pinned columns are filtered out after the end pin order is applied.\n*\n* @example\n* ```ts\n* const columns = table_getEndVisibleLeafColumns(table)\n* ```\n*/\nfunction table_getEndVisibleLeafColumns(table) {\n\treturn callMemoOrStaticFn(table, \"getEndLeafColumns\", table_getEndLeafColumns).filter((column) => getIsColumnVisible(column));\n}\n/**\n* Resolves visible leaf columns that are not pinned.\n*\n* This is the center partition used by layouts that render pinned columns\n* separately from the scrollable middle region.\n*\n* @example\n* ```ts\n* const columns = table_getCenterVisibleLeafColumns(table)\n* ```\n*/\nfunction table_getCenterVisibleLeafColumns(table) {\n\treturn callMemoOrStaticFn(table, \"getCenterLeafColumns\", table_getCenterLeafColumns).filter((column) => getIsColumnVisible(column));\n}\n/**\n* Resolves visible leaf columns for a requested pinning region.\n*\n* Omit `position` to get all visible leaf columns, or pass `'start'`, `'center'`,\n* or `'end'` to get one partition.\n*\n* @example\n* ```ts\n* const columns = table_getPinnedVisibleLeafColumns(table, 'start')\n* ```\n*/\nfunction table_getPinnedVisibleLeafColumns(table, position) {\n\treturn !position ? getVisibleLeafColumns(table) : position === \"start\" ? callMemoOrStaticFn(table, \"getStartVisibleLeafColumns\", table_getStartVisibleLeafColumns) : position === \"end\" ? callMemoOrStaticFn(table, \"getEndVisibleLeafColumns\", table_getEndVisibleLeafColumns) : callMemoOrStaticFn(table, \"getCenterVisibleLeafColumns\", table_getCenterVisibleLeafColumns);\n}\n\n//#endregion\nexport { column_getCanPin, column_getIsPinned, column_getPinnedIndex, column_pin, getDefaultColumnPinningState, row_getCenterVisibleCells, row_getEndVisibleCells, row_getStartVisibleCells, table_getCenterFlatHeaders, table_getCenterFooterGroups, table_getCenterHeaderGroups, table_getCenterLeafColumns, table_getCenterLeafHeaders, table_getCenterVisibleLeafColumns, table_getEndFlatHeaders, table_getEndFooterGroups, table_getEndHeaderGroups, table_getEndLeafColumns, table_getEndLeafHeaders, table_getEndVisibleLeafColumns, table_getIsSomeColumnsPinned, table_getPinnedLeafColumns, table_getPinnedVisibleLeafColumns, table_getStartFlatHeaders, table_getStartFooterGroups, table_getStartHeaderGroups, table_getStartLeafColumns, table_getStartLeafHeaders, table_getStartVisibleLeafColumns, table_resetColumnPinning, table_setColumnPinning };","import { makeObjectMap } from \"../../utils.js\";\n\n//#region src/features/column-pinning/orderByColumnPinning.ts\n/**\n* Display order for column pinning, shared through the `orderByColumnPinning`\n* feature stub so that the core headers, row visible cells, and cell selection\n* don't bundle it when the column pinning feature is not registered.\n*\n* Internal: not exported from any package entry point.\n*/\n/**\n* Orders items that each belong to a leaf column, such as visible leaf\n* columns or a row's visible cells: start-pinned items in pinning order, then\n* unpinned items in their given order, then end-pinned items in pinning order.\n* Pinned ids that match no item are skipped.\n*\n* `getItemsByColumnId` can return an existing lookup of the same items, which\n* is only read when something is pinned.\n*/\nfunction orderByColumnPinning(table, items, getColumnId, getItemsByColumnId) {\n\tconst columnPinning = table.atoms.columnPinning?.get();\n\tif (!columnPinning || !columnPinning.start.length && !columnPinning.end.length) return items;\n\tconst { start, end } = columnPinning;\n\tlet itemsByColumnId = getItemsByColumnId?.();\n\tif (!itemsByColumnId) {\n\t\titemsByColumnId = makeObjectMap();\n\t\tfor (let i = 0; i < items.length; i++) itemsByColumnId[getColumnId(items[i])] = items[i];\n\t}\n\tconst ordered = [];\n\tfor (let i = 0; i < start.length; i++) {\n\t\tconst item = itemsByColumnId[start[i]];\n\t\tif (item) ordered.push(item);\n\t}\n\tfor (let i = 0; i < items.length; i++) {\n\t\tconst columnId = getColumnId(items[i]);\n\t\tif (!start.includes(columnId) && !end.includes(columnId)) ordered.push(items[i]);\n\t}\n\tfor (let i = 0; i < end.length; i++) {\n\t\tconst item = itemsByColumnId[end[i]];\n\t\tif (item) ordered.push(item);\n\t}\n\treturn ordered;\n}\n\n//#endregion\nexport { orderByColumnPinning };","import { assignPrototypeAPIs, assignTableAPIs, callMemoOrStaticFn, makeStateUpdater } from \"../../utils.js\";\nimport { getVisibleLeafColumns } from \"../../core/featureStubs.js\";\nimport { column_getCanPin, column_getIsPinned, column_getPinnedIndex, column_pin, getDefaultColumnPinningState, row_getCenterVisibleCells, row_getEndVisibleCells, row_getStartVisibleCells, table_getCenterFlatHeaders, table_getCenterFooterGroups, table_getCenterHeaderGroups, table_getCenterLeafColumns, table_getCenterLeafHeaders, table_getCenterVisibleLeafColumns, table_getEndFlatHeaders, table_getEndFooterGroups, table_getEndHeaderGroups, table_getEndLeafColumns, table_getEndLeafHeaders, table_getEndVisibleLeafColumns, table_getIsSomeColumnsPinned, table_getPinnedLeafColumns, table_getPinnedVisibleLeafColumns, table_getStartFlatHeaders, table_getStartFooterGroups, table_getStartHeaderGroups, table_getStartLeafColumns, table_getStartLeafHeaders, table_getStartVisibleLeafColumns, table_resetColumnPinning, table_setColumnPinning } from \"./columnPinningFeature.utils.js\";\nimport { orderByColumnPinning } from \"./orderByColumnPinning.js\";\n\n//#region src/features/column-pinning/columnPinningFeature.ts\n/**\n* Feature that adds column pinning state and APIs for logical start, center,\n* and end regions.\n*\n* In LTR languages/layouts, start usually corresponds to left and end to\n* right. In RTL languages/layouts, start usually corresponds to right and end\n* to left.\n*/\nconst columnPinningFeature = {\n\tgetInitialState: (initialState) => {\n\t\treturn {\n\t\t\tcolumnPinning: {\n\t\t\t\t...getDefaultColumnPinningState(),\n\t\t\t\t...initialState.columnPinning\n\t\t\t},\n\t\t\t...initialState\n\t\t};\n\t},\n\tgetDefaultTableOptions: (table) => {\n\t\treturn { onColumnPinningChange: makeStateUpdater(\"columnPinning\", table) };\n\t},\n\tassignColumnPrototype: (prototype, table) => {\n\t\tassignPrototypeAPIs(\"columnPinningFeature\", prototype, table, {\n\t\t\tcolumn_pin: { fn: (column, position) => column_pin(column, position) },\n\t\t\tcolumn_getCanPin: { fn: (column) => column_getCanPin(column) },\n\t\t\tcolumn_getPinnedIndex: { fn: (column) => column_getPinnedIndex(column) },\n\t\t\tcolumn_getIsPinned: { fn: (column) => column_getIsPinned(column) }\n\t\t});\n\t},\n\tassignRowPrototype: (prototype, table) => {\n\t\tassignPrototypeAPIs(\"columnPinningFeature\", prototype, table, {\n\t\t\trow_getCenterVisibleCells: {\n\t\t\t\tfn: (row) => row_getCenterVisibleCells(row),\n\t\t\t\tmemoDeps: (row) => [\n\t\t\t\t\trow.getAllCells(),\n\t\t\t\t\trow.table.atoms.columnPinning?.get(),\n\t\t\t\t\trow.table.atoms.columnVisibility?.get()\n\t\t\t\t]\n\t\t\t},\n\t\t\trow_getStartVisibleCells: {\n\t\t\t\tfn: (row) => row_getStartVisibleCells(row),\n\t\t\t\tmemoDeps: (row) => [\n\t\t\t\t\trow.getAllCells(),\n\t\t\t\t\trow.table.atoms.columnPinning?.get()?.start,\n\t\t\t\t\trow.table.atoms.columnVisibility?.get()\n\t\t\t\t]\n\t\t\t},\n\t\t\trow_getEndVisibleCells: {\n\t\t\t\tfn: (row) => row_getEndVisibleCells(row),\n\t\t\t\tmemoDeps: (row) => [\n\t\t\t\t\trow.getAllCells(),\n\t\t\t\t\trow.table.atoms.columnPinning?.get()?.end,\n\t\t\t\t\trow.table.atoms.columnVisibility?.get()\n\t\t\t\t]\n\t\t\t}\n\t\t});\n\t},\n\tconstructTableAPIs: (table) => {\n\t\tassignTableAPIs(\"columnPinningFeature\", table, {\n\t\t\ttable_setColumnPinning: { fn: (updater) => table_setColumnPinning(table, updater) },\n\t\t\ttable_resetColumnPinning: { fn: (defaultState) => table_resetColumnPinning(table, defaultState) },\n\t\t\ttable_getIsSomeColumnsPinned: { fn: (position) => table_getIsSomeColumnsPinned(table, position) },\n\t\t\ttable__orderByColumnPinning: { fn: (items, getColumnId, getItemsByColumnId) => orderByColumnPinning(table, items, getColumnId, getItemsByColumnId) },\n\t\t\ttable_getStartHeaderGroups: {\n\t\t\t\tfn: () => table_getStartHeaderGroups(table),\n\t\t\t\tmemoDeps: () => [\n\t\t\t\t\ttable.getAllColumns(),\n\t\t\t\t\tgetVisibleLeafColumns(table),\n\t\t\t\t\ttable.atoms.columnPinning?.get()?.start,\n\t\t\t\t\ttable.atoms.columnOrder?.get()\n\t\t\t\t]\n\t\t\t},\n\t\t\ttable_getCenterHeaderGroups: {\n\t\t\t\tfn: () => table_getCenterHeaderGroups(table),\n\t\t\t\tmemoDeps: () => [\n\t\t\t\t\ttable.getAllColumns(),\n\t\t\t\t\tgetVisibleLeafColumns(table),\n\t\t\t\t\ttable.atoms.columnPinning?.get(),\n\t\t\t\t\ttable.atoms.columnOrder?.get()\n\t\t\t\t]\n\t\t\t},\n\t\t\ttable_getEndHeaderGroups: {\n\t\t\t\tfn: () => table_getEndHeaderGroups(table),\n\t\t\t\tmemoDeps: () => [\n\t\t\t\t\ttable.getAllColumns(),\n\t\t\t\t\tgetVisibleLeafColumns(table),\n\t\t\t\t\ttable.atoms.columnPinning?.get()?.end,\n\t\t\t\t\ttable.atoms.columnOrder?.get()\n\t\t\t\t]\n\t\t\t},\n\t\t\ttable_getStartFooterGroups: {\n\t\t\t\tfn: () => table_getStartFooterGroups(table),\n\t\t\t\tmemoDeps: () => [callMemoOrStaticFn(table, \"getStartHeaderGroups\", table_getStartHeaderGroups)]\n\t\t\t},\n\t\t\ttable_getCenterFooterGroups: {\n\t\t\t\tfn: () => table_getCenterFooterGroups(table),\n\t\t\t\tmemoDeps: () => [callMemoOrStaticFn(table, \"getCenterHeaderGroups\", table_getCenterHeaderGroups)]\n\t\t\t},\n\t\t\ttable_getEndFooterGroups: {\n\t\t\t\tfn: () => table_getEndFooterGroups(table),\n\t\t\t\tmemoDeps: () => [callMemoOrStaticFn(table, \"getEndHeaderGroups\", table_getEndHeaderGroups)]\n\t\t\t},\n\t\t\ttable_getStartFlatHeaders: {\n\t\t\t\tfn: () => table_getStartFlatHeaders(table),\n\t\t\t\tmemoDeps: () => [callMemoOrStaticFn(table, \"getStartHeaderGroups\", table_getStartHeaderGroups)]\n\t\t\t},\n\t\t\ttable_getEndFlatHeaders: {\n\t\t\t\tfn: () => table_getEndFlatHeaders(table),\n\t\t\t\tmemoDeps: () => [callMemoOrStaticFn(table, \"getEndHeaderGroups\", table_getEndHeaderGroups)]\n\t\t\t},\n\t\t\ttable_getCenterFlatHeaders: {\n\t\t\t\tfn: () => table_getCenterFlatHeaders(table),\n\t\t\t\tmemoDeps: () => [callMemoOrStaticFn(table, \"getCenterHeaderGroups\", table_getCenterHeaderGroups)]\n\t\t\t},\n\t\t\ttable_getStartLeafHeaders: {\n\t\t\t\tfn: () => table_getStartLeafHeaders(table),\n\t\t\t\tmemoDeps: () => [callMemoOrStaticFn(table, \"getStartHeaderGroups\", table_getStartHeaderGroups)]\n\t\t\t},\n\t\t\ttable_getEndLeafHeaders: {\n\t\t\t\tfn: () => table_getEndLeafHeaders(table),\n\t\t\t\tmemoDeps: () => [callMemoOrStaticFn(table, \"getEndHeaderGroups\", table_getEndHeaderGroups)]\n\t\t\t},\n\t\t\ttable_getCenterLeafHeaders: {\n\t\t\t\tfn: () => table_getCenterLeafHeaders(table),\n\t\t\t\tmemoDeps: () => [callMemoOrStaticFn(table, \"getCenterHeaderGroups\", table_getCenterHeaderGroups)]\n\t\t\t},\n\t\t\ttable_getStartLeafColumns: {\n\t\t\t\tfn: () => table_getStartLeafColumns(table),\n\t\t\t\tmemoDeps: () => [\n\t\t\t\t\ttable.options.columns,\n\t\t\t\t\ttable.atoms.columnPinning?.get(),\n\t\t\t\t\ttable.atoms.columnOrder?.get(),\n\t\t\t\t\ttable.atoms.grouping?.get(),\n\t\t\t\t\ttable.options.groupedColumnMode\n\t\t\t\t]\n\t\t\t},\n\t\t\ttable_getEndLeafColumns: {\n\t\t\t\tfn: () => table_getEndLeafColumns(table),\n\t\t\t\tmemoDeps: () => [\n\t\t\t\t\ttable.options.columns,\n\t\t\t\t\ttable.atoms.columnPinning?.get(),\n\t\t\t\t\ttable.atoms.columnOrder?.get(),\n\t\t\t\t\ttable.atoms.grouping?.get(),\n\t\t\t\t\ttable.options.groupedColumnMode\n\t\t\t\t]\n\t\t\t},\n\t\t\ttable_getCenterLeafColumns: {\n\t\t\t\tfn: () => table_getCenterLeafColumns(table),\n\t\t\t\tmemoDeps: () => [\n\t\t\t\t\ttable.options.columns,\n\t\t\t\t\ttable.atoms.columnPinning?.get(),\n\t\t\t\t\ttable.atoms.columnOrder?.get(),\n\t\t\t\t\ttable.atoms.grouping?.get(),\n\t\t\t\t\ttable.options.groupedColumnMode\n\t\t\t\t]\n\t\t\t},\n\t\t\ttable_getPinnedLeafColumns: { fn: (position) => table_getPinnedLeafColumns(table, position) },\n\t\t\ttable_getStartVisibleLeafColumns: {\n\t\t\t\tfn: () => table_getStartVisibleLeafColumns(table),\n\t\t\t\tmemoDeps: () => [\n\t\t\t\t\ttable.options.columns,\n\t\t\t\t\ttable.atoms.columnPinning?.get(),\n\t\t\t\t\ttable.atoms.columnVisibility?.get(),\n\t\t\t\t\ttable.atoms.columnOrder?.get(),\n\t\t\t\t\ttable.atoms.grouping?.get(),\n\t\t\t\t\ttable.options.groupedColumnMode\n\t\t\t\t]\n\t\t\t},\n\t\t\ttable_getCenterVisibleLeafColumns: {\n\t\t\t\tfn: () => table_getCenterVisibleLeafColumns(table),\n\t\t\t\tmemoDeps: () => [\n\t\t\t\t\ttable.options.columns,\n\t\t\t\t\ttable.atoms.columnPinning?.get(),\n\t\t\t\t\ttable.atoms.columnVisibility?.get(),\n\t\t\t\t\ttable.atoms.columnOrder?.get(),\n\t\t\t\t\ttable.atoms.grouping?.get(),\n\t\t\t\t\ttable.options.groupedColumnMode\n\t\t\t\t]\n\t\t\t},\n\t\t\ttable_getEndVisibleLeafColumns: {\n\t\t\t\tfn: () => table_getEndVisibleLeafColumns(table),\n\t\t\t\tmemoDeps: () => [\n\t\t\t\t\ttable.options.columns,\n\t\t\t\t\ttable.atoms.columnPinning?.get(),\n\t\t\t\t\ttable.atoms.columnVisibility?.get(),\n\t\t\t\t\ttable.atoms.columnOrder?.get(),\n\t\t\t\t\ttable.atoms.grouping?.get(),\n\t\t\t\t\ttable.options.groupedColumnMode\n\t\t\t\t]\n\t\t\t},\n\t\t\ttable_getPinnedVisibleLeafColumns: { fn: (position) => table_getPinnedVisibleLeafColumns(table, position) }\n\t\t});\n\t}\n};\n\n//#endregion\nexport { columnPinningFeature };","import { callMemoOrStaticFn, cloneState, hasOwn, makeObjectMap } from \"../../utils.js\";\nimport { getPinnedVisibleLeafColumns } from \"../../core/featureStubs.js\";\n\n//#region src/features/column-sizing/columnSizingFeature.utils.ts\n/**\n* Creates the default committed column sizing state.\n*\n* The feature default is an empty map, so columns fall back to their column def\n* size or the built-in sizing defaults.\n*\n* @example\n* ```ts\n* const sizing = getDefaultColumnSizingState()\n* ```\n*/\nfunction getDefaultColumnSizingState() {\n\treturn makeObjectMap();\n}\n/**\n* Creates the built-in sizing defaults for column definitions.\n*\n* Columns default to `size: 150`, `minSize: 20`, and\n* `maxSize: Number.MAX_SAFE_INTEGER` unless overridden by column definitions or\n* table defaults.\n*\n* @example\n* ```ts\n* const defaults = getDefaultColumnSizingColumnDef()\n* ```\n*/\nfunction getDefaultColumnSizingColumnDef() {\n\treturn {\n\t\tsize: 150,\n\t\tminSize: 20,\n\t\tmaxSize: Number.MAX_SAFE_INTEGER\n\t};\n}\n/**\n* Resolves a column's current pixel size.\n*\n* Committed `state.columnSizing[column.id]` wins over `columnDef.size`, then the\n* built-in default size. The result is clamped between min and max size.\n*\n* @example\n* ```ts\n* const width = column_getSize(column)\n* ```\n*/\nfunction column_getSize(column) {\n\tconst defaultSizes = getDefaultColumnSizingColumnDef();\n\tconst columnSizing = column.table.atoms.columnSizing?.get();\n\tconst columnSize = columnSizing && hasOwn(columnSizing, column.id) ? columnSizing[column.id] : void 0;\n\treturn Math.min(Math.max(column.columnDef.minSize ?? defaultSizes.minSize, columnSize ?? column.columnDef.size ?? defaultSizes.size), column.columnDef.maxSize ?? defaultSizes.maxSize);\n}\nfunction buildColumnOffsets(columns) {\n\tconst starts = makeObjectMap();\n\tconst afters = makeObjectMap();\n\tconst sizes = new Array(columns.length);\n\tlet start = 0;\n\tfor (let i = 0; i < columns.length; i++) {\n\t\tconst column = columns[i];\n\t\tconst size = callMemoOrStaticFn(column, \"getSize\", column_getSize);\n\t\tsizes[i] = size;\n\t\tstarts[column.id] = start;\n\t\tstart += size;\n\t}\n\tlet after = 0;\n\tfor (let i = columns.length - 1; i >= 0; i--) {\n\t\tafters[columns[i].id] = after;\n\t\tafter += sizes[i];\n\t}\n\treturn {\n\t\tstarts,\n\t\tafters\n\t};\n}\n/**\n* Builds start and after offset maps for every visible leaf column, computed\n* once per pinning region plus the full visible list.\n*\n* A single table-level memo of this result backs all `column.getStart()` and\n* `column.getAfter()` calls with O(1) lookups.\n*\n* @example\n* ```ts\n* const offsets = table_getColumnOffsets(table)\n* const startOffset = offsets.start.starts[column.id]\n* ```\n*/\nfunction table_getColumnOffsets(table) {\n\treturn {\n\t\tall: buildColumnOffsets(getPinnedVisibleLeafColumns(table)),\n\t\tcenter: buildColumnOffsets(getPinnedVisibleLeafColumns(table, \"center\")),\n\t\tstart: buildColumnOffsets(getPinnedVisibleLeafColumns(table, \"start\")),\n\t\tend: buildColumnOffsets(getPinnedVisibleLeafColumns(table, \"end\"))\n\t};\n}\nfunction toOffsetsKey(position) {\n\treturn position === \"start\" ? \"start\" : position === \"end\" ? \"end\" : position === \"center\" ? \"center\" : \"all\";\n}\n/**\n* Computes the offset from the start edge of a pinning region to this column.\n*\n* The value is the sum of all previous visible leaf column sizes in the\n* requested `'start'`, `'center'`, or `'end'` region.\n*\n* `start` and `end` are logical positions. In LTR languages/layouts, `start`\n* usually corresponds to left and `end` to right. In RTL languages/layouts,\n* `start` usually corresponds to right and `end` to left.\n*\n* @example\n* ```ts\n* const startOffset = column_getStart(column, 'start')\n* ```\n*/\nfunction column_getStart(column, position) {\n\treturn callMemoOrStaticFn(column.table, \"getColumnOffsets\", table_getColumnOffsets)[toOffsetsKey(position)].starts[column.id] ?? 0;\n}\n/**\n* Computes the offset from the end edge of a pinning region after this column.\n*\n* The value is the sum of all following visible leaf column sizes in the\n* requested region.\n*\n* @example\n* ```ts\n* const endOffset = column_getAfter(column, 'end')\n* ```\n*/\nfunction column_getAfter(column, position) {\n\treturn callMemoOrStaticFn(column.table, \"getColumnOffsets\", table_getColumnOffsets)[toOffsetsKey(position)].afters[column.id] ?? 0;\n}\n/**\n* Removes this column's committed size override.\n*\n* After reset, the column resolves size from `columnDef.size` or built-in\n* defaults again.\n*\n* @example\n* ```ts\n* column_resetSize(column)\n* ```\n*/\nfunction column_resetSize(column) {\n\ttable_setColumnSizing(column.table, (old) => {\n\t\tconst rest = makeObjectMap();\n\t\tconst columnIds = Object.keys(old);\n\t\tfor (let i = 0; i < columnIds.length; i++) {\n\t\t\tconst columnId = columnIds[i];\n\t\t\tif (columnId !== column.id) rest[columnId] = old[columnId];\n\t\t}\n\t\treturn rest;\n\t});\n}\nfunction sumHeaderSize(header) {\n\tif (!header.subHeaders.length) return column_getSize(header.column);\n\tlet sum = 0;\n\tfor (let i = 0; i < header.subHeaders.length; i++) sum += sumHeaderSize(header.subHeaders[i]);\n\treturn sum;\n}\n/**\n* Computes a header's rendered size from its leaf headers.\n*\n* Group headers sum the sizes of all descendant leaf columns. Leaf headers use\n* their column's current size.\n*\n* @example\n* ```ts\n* const width = header_getSize(header)\n* ```\n*/\nfunction header_getSize(header) {\n\treturn sumHeaderSize(header);\n}\n/**\n* Computes a header's offset from the start of its header group.\n*\n* The offset is the previous sibling header's start plus size, or `0` for the\n* first header in the group.\n*\n* @example\n* ```ts\n* const offset = header_getStart(header)\n* ```\n*/\nfunction header_getStart(header) {\n\tif (header.index > 0) {\n\t\tconst prevSiblingHeader = header.headerGroup?.headers[header.index - 1];\n\t\tif (prevSiblingHeader) return callMemoOrStaticFn(prevSiblingHeader, \"getStart\", header_getStart) + callMemoOrStaticFn(prevSiblingHeader, \"getSize\", header_getSize);\n\t}\n\treturn 0;\n}\n/**\n* Routes a committed column sizing updater through the table's sizing handler.\n*\n* The updater may be a next size map or a function of the previous map,\n* matching the instance `table.setColumnSizing` behavior.\n*\n* @example\n* ```ts\n* table_setColumnSizing(table, (old) => ({ ...old, age: 96 }))\n* ```\n*/\nfunction table_setColumnSizing(table, updater) {\n\ttable.options.onColumnSizingChange?.(updater);\n}\n/**\n* Resets `columnSizing` to the configured initial state or feature default.\n*\n* With no argument, the reset clones `table.initialState.columnSizing` when it\n* exists. Passing `true` ignores initial state and resets to `{}`.\n*\n* @example\n* ```ts\n* table_resetColumnSizing(table)\n* table_resetColumnSizing(table, true)\n* ```\n*/\nfunction table_resetColumnSizing(table, defaultState) {\n\ttable_setColumnSizing(table, defaultState ? makeObjectMap() : Object.assign(makeObjectMap(), cloneState(table.initialState.columnSizing ?? {})));\n}\nfunction sumColumnSizes(columns) {\n\tlet sum = 0;\n\tfor (let i = 0; i < columns.length; i++) sum += callMemoOrStaticFn(columns[i], \"getSize\", column_getSize);\n\treturn sum;\n}\n/**\n* Sums the rendered size of the full table header row.\n*\n* This includes start, center, and end columns in the main header group.\n*\n* @example\n* ```ts\n* const width = table_getTotalSize(table)\n* ```\n*/\nfunction table_getTotalSize(table) {\n\treturn table.getHeaderGroups()[0]?.headers.reduce((sum, header) => {\n\t\treturn sum + header_getSize(header);\n\t}, 0) ?? 0;\n}\n/**\n* Sums the sizes of the visible leaf columns pinned to the logical start\n* region.\n*\n* An empty start pinning region returns `0`.\n*\n* @example\n* ```ts\n* const width = table_getStartTotalSize(table)\n* ```\n*/\nfunction table_getStartTotalSize(table) {\n\treturn sumColumnSizes(getPinnedVisibleLeafColumns(table, \"start\"));\n}\n/**\n* Sums the sizes of the visible leaf columns that are not pinned.\n*\n* An empty center region returns `0`.\n*\n* @example\n* ```ts\n* const width = table_getCenterTotalSize(table)\n* ```\n*/\nfunction table_getCenterTotalSize(table) {\n\treturn sumColumnSizes(getPinnedVisibleLeafColumns(table, \"center\"));\n}\n/**\n* Sums the sizes of the visible leaf columns pinned to the logical end region.\n*\n* An empty end pinning region returns `0`.\n*\n* @example\n* ```ts\n* const width = table_getEndTotalSize(table)\n* ```\n*/\nfunction table_getEndTotalSize(table) {\n\treturn sumColumnSizes(getPinnedVisibleLeafColumns(table, \"end\"));\n}\n\n//#endregion\nexport { column_getAfter, column_getSize, column_getStart, column_resetSize, getDefaultColumnSizingColumnDef, getDefaultColumnSizingState, header_getSize, header_getStart, table_getCenterTotalSize, table_getColumnOffsets, table_getEndTotalSize, table_getStartTotalSize, table_getTotalSize, table_resetColumnSizing, table_setColumnSizing };","import { assignPrototypeAPIs, assignTableAPIs, makeStateUpdater } from \"../../utils.js\";\nimport { column_getAfter, column_getSize, column_getStart, column_resetSize, getDefaultColumnSizingColumnDef, getDefaultColumnSizingState, header_getSize, header_getStart, table_getCenterTotalSize, table_getColumnOffsets, table_getEndTotalSize, table_getStartTotalSize, table_getTotalSize, table_resetColumnSizing, table_setColumnSizing } from \"./columnSizingFeature.utils.js\";\n\n//#region src/features/column-sizing/columnSizingFeature.ts\n/**\n* Feature that adds column sizing state, defaults, and size measurement APIs.\n*/\nconst columnSizingFeature = {\n\tgetInitialState: (initialState) => {\n\t\treturn {\n\t\t\tcolumnSizing: getDefaultColumnSizingState(),\n\t\t\t...initialState\n\t\t};\n\t},\n\tgetDefaultColumnDef: () => {\n\t\treturn getDefaultColumnSizingColumnDef();\n\t},\n\tgetDefaultTableOptions: (table) => {\n\t\treturn { onColumnSizingChange: makeStateUpdater(\"columnSizing\", table) };\n\t},\n\tassignColumnPrototype: (prototype, table) => {\n\t\tassignPrototypeAPIs(\"columnSizingFeature\", prototype, table, {\n\t\t\tcolumn_getSize: {\n\t\t\t\tfn: (column) => column_getSize(column),\n\t\t\t\tmemoDeps: (column) => [table.options.columns, table.atoms.columnSizing?.get()?.[column.id]]\n\t\t\t},\n\t\t\tcolumn_getStart: { fn: (column, position) => column_getStart(column, position) },\n\t\t\tcolumn_getAfter: { fn: (column, position) => column_getAfter(column, position) },\n\t\t\tcolumn_resetSize: { fn: (column) => column_resetSize(column) }\n\t\t});\n\t},\n\tassignHeaderPrototype: (prototype, table) => {\n\t\tassignPrototypeAPIs(\"columnSizingFeature\", prototype, table, {\n\t\t\theader_getSize: {\n\t\t\t\tfn: (header) => header_getSize(header),\n\t\t\t\tmemoDeps: (header) => [table.options.columns, header.column.columns.length > 0 ? table.atoms.columnSizing?.get() : table.atoms.columnSizing?.get()?.[header.column.id]]\n\t\t\t},\n\t\t\theader_getStart: {\n\t\t\t\tfn: (header) => header_getStart(header),\n\t\t\t\tmemoDeps: () => [\n\t\t\t\t\ttable.options.columns,\n\t\t\t\t\ttable.atoms.columnSizing?.get(),\n\t\t\t\t\ttable.atoms.columnOrder?.get(),\n\t\t\t\t\ttable.atoms.columnPinning?.get(),\n\t\t\t\t\ttable.atoms.columnVisibility?.get(),\n\t\t\t\t\ttable.atoms.grouping?.get(),\n\t\t\t\t\ttable.options.groupedColumnMode\n\t\t\t\t]\n\t\t\t}\n\t\t});\n\t},\n\tconstructTableAPIs: (table) => {\n\t\tassignTableAPIs(\"columnSizingFeature\", table, {\n\t\t\ttable_getColumnOffsets: {\n\t\t\t\tfn: () => table_getColumnOffsets(table),\n\t\t\t\tmemoDeps: () => [\n\t\t\t\t\ttable.options.columns,\n\t\t\t\t\ttable.atoms.columnSizing?.get(),\n\t\t\t\t\ttable.atoms.columnOrder?.get(),\n\t\t\t\t\ttable.atoms.columnPinning?.get(),\n\t\t\t\t\ttable.atoms.columnVisibility?.get(),\n\t\t\t\t\ttable.atoms.grouping?.get(),\n\t\t\t\t\ttable.options.groupedColumnMode\n\t\t\t\t]\n\t\t\t},\n\t\t\ttable_setColumnSizing: { fn: (updater) => table_setColumnSizing(table, updater) },\n\t\t\ttable_resetColumnSizing: { fn: (defaultState) => table_resetColumnSizing(table, defaultState) },\n\t\t\ttable_getTotalSize: {\n\t\t\t\tfn: () => table_getTotalSize(table),\n\t\t\t\tmemoDeps: () => [table.atoms.columnSizing?.get(), table.getHeaderGroups()]\n\t\t\t},\n\t\t\ttable_getStartTotalSize: {\n\t\t\t\tfn: () => table_getStartTotalSize(table),\n\t\t\t\tmemoDeps: () => [table.atoms.columnSizing?.get(), table.getHeaderGroups()]\n\t\t\t},\n\t\t\ttable_getCenterTotalSize: {\n\t\t\t\tfn: () => table_getCenterTotalSize(table),\n\t\t\t\tmemoDeps: () => [table.atoms.columnSizing?.get(), table.getHeaderGroups()]\n\t\t\t},\n\t\t\ttable_getEndTotalSize: {\n\t\t\t\tfn: () => table_getEndTotalSize(table),\n\t\t\t\tmemoDeps: () => [table.atoms.columnSizing?.get(), table.getHeaderGroups()]\n\t\t\t}\n\t\t});\n\t}\n};\n\n//#endregion\nexport { columnSizingFeature };","//#region src/features/row-sorting/sortFns.ts\n/**\n* Regular expression used to split mixed text and numeric chunks.\n*\n* The alphanumeric sort functions use these chunks for natural sorting of\n* strings like `item2` before `item10`.\n*/\nconst reSplitAlphaNumeric = /([0-9]+)/gm;\n/**\n* Builds a `SortFn` from a value-level comparator plus an optional\n* `resolveDataValue` normalizer.\n*\n* The `sort` comparator receives both rows' data values, each already passed\n* through `resolveDataValue` when one is defined. Keeping normalization in the\n* resolver means a variant of an existing sorting function only has to swap\n* the resolver, not re-implement the comparison.\n*\n* The definition is attached to the returned function, so a variant can be\n* created by spreading a built-in sorting function and overriding what\n* differs:\n*\n* ```ts\n* const stripDiacritics = (value: string) =>\n* value.normalize('NFD').replace(/\\p{Diacritic}/gu, '')\n*\n* const alphanumericIgnoreDiacritics = constructSortFn({\n* ...sortFn_alphanumeric,\n* resolveDataValue: (value) =>\n* stripDiacritics(sortFn_alphanumeric.resolveDataValue!(value)),\n* })\n* ```\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction constructSortFn(def) {\n\tconst sortFn = Object.assign((rowA, rowB, columnId) => {\n\t\tlet dataValueA = rowA.getValue(columnId);\n\t\tlet dataValueB = rowB.getValue(columnId);\n\t\tconst resolveDataValue = sortFn.resolveDataValue;\n\t\tif (resolveDataValue) {\n\t\t\tdataValueA = resolveDataValue(dataValueA);\n\t\t\tdataValueB = resolveDataValue(dataValueB);\n\t\t}\n\t\treturn sortFn.sort(dataValueA, dataValueB, rowA, rowB, columnId);\n\t}, def);\n\treturn sortFn;\n}\n/**\n* Sorts rows with the built-in alphanumeric strategy.\n*\n* This comparator returns ascending-order results; descending order is applied by the sorting row model.\n*/\nconst sortFn_alphanumeric = /* @__PURE__ */ constructSortFn({\n\tresolveDataValue: (dataValue) => toString(dataValue).toLowerCase(),\n\tsort: (dataValueA, dataValueB) => compareAlphanumeric(dataValueA, dataValueB)\n});\n/**\n* Sorts rows with the built-in alphanumeric case sensitive strategy.\n*\n* This comparator returns ascending-order results; descending order is applied by the sorting row model.\n*/\nconst sortFn_alphanumericCaseSensitive = /* @__PURE__ */ constructSortFn({\n\tresolveDataValue: (dataValue) => toString(dataValue),\n\tsort: (dataValueA, dataValueB) => compareAlphanumeric(dataValueA, dataValueB)\n});\n/**\n* Sorts rows with the built-in text strategy.\n*\n* This comparator returns ascending-order results; descending order is applied by the sorting row model.\n*/\nconst sortFn_text = /* @__PURE__ */ constructSortFn({\n\tresolveDataValue: (dataValue) => toString(dataValue).toLowerCase(),\n\tsort: (dataValueA, dataValueB) => compareBasic(dataValueA, dataValueB)\n});\n/**\n* Sorts rows with the built-in text case sensitive strategy.\n*\n* This comparator returns ascending-order results; descending order is applied by the sorting row model.\n*/\nconst sortFn_textCaseSensitive = /* @__PURE__ */ constructSortFn({\n\tresolveDataValue: (dataValue) => toString(dataValue),\n\tsort: (dataValueA, dataValueB) => compareBasic(dataValueA, dataValueB)\n});\n/**\n* Sorts rows with the built-in datetime strategy.\n*\n* This comparator returns ascending-order results; descending order is applied by the sorting row model.\n*/\nconst sortFn_datetime = /* @__PURE__ */ constructSortFn({\n\tresolveDataValue: (dataValue) => toDateSortValue(dataValue),\n\tsort: (dataValueA, dataValueB) => dataValueA > dataValueB ? 1 : dataValueA < dataValueB ? -1 : 0\n});\n/**\n* Sorts rows with the built-in basic strategy.\n*\n* This comparator returns ascending-order results; descending order is applied by the sorting row model.\n*/\nconst sortFn_basic = /* @__PURE__ */ constructSortFn({ sort: (dataValueA, dataValueB) => compareBasic(dataValueA, dataValueB) });\nfunction compareBasic(a, b) {\n\treturn a === b ? 0 : a > b ? 1 : -1;\n}\nfunction toDateSortValue(value) {\n\treturn value instanceof Date ? value.getTime() : value;\n}\nfunction toString(a) {\n\tif (typeof a === \"number\") {\n\t\tif (isNaN(a) || a === Infinity || a === -Infinity) return \"\";\n\t\treturn String(a);\n\t}\n\tif (typeof a === \"string\") return a;\n\treturn \"\";\n}\nfunction compareAlphanumeric(aStr, bStr) {\n\tlet ai = 0;\n\tlet bi = 0;\n\tconst aLen = aStr.length;\n\tconst bLen = bStr.length;\n\twhile (ai < aLen && bi < bLen) {\n\t\tconst aIsNumeric = isDigit(aStr.charCodeAt(ai));\n\t\tconst bIsNumeric = isDigit(bStr.charCodeAt(bi));\n\t\tconst aEnd = findChunkEnd(aStr, ai, aIsNumeric);\n\t\tconst bEnd = findChunkEnd(bStr, bi, bIsNumeric);\n\t\tif (!aIsNumeric && !bIsNumeric) {\n\t\t\tconst stringComparison = compareStringChunks(aStr, ai, aEnd, bStr, bi, bEnd);\n\t\t\tif (stringComparison) return stringComparison;\n\t\t\tai = aEnd;\n\t\t\tbi = bEnd;\n\t\t\tcontinue;\n\t\t}\n\t\tif (aIsNumeric !== bIsNumeric) return aIsNumeric ? 1 : -1;\n\t\tconst numericComparison = compareNumericChunks(aStr, ai, aEnd, bStr, bi, bEnd);\n\t\tif (numericComparison) return numericComparison;\n\t\tai = aEnd;\n\t\tbi = bEnd;\n\t}\n\treturn countRemainingChunks(aStr, ai) - countRemainingChunks(bStr, bi);\n}\nfunction isDigit(charCode) {\n\treturn charCode >= 48 && charCode <= 57;\n}\nfunction findChunkEnd(str, start, isNumeric) {\n\tlet end = start + 1;\n\twhile (end < str.length && isDigit(str.charCodeAt(end)) === isNumeric) end++;\n\treturn end;\n}\nfunction compareStringChunks(aStr, aStart, aEnd, bStr, bStart, bEnd) {\n\tconst aLength = aEnd - aStart;\n\tconst bLength = bEnd - bStart;\n\tconst minLength = aLength < bLength ? aLength : bLength;\n\tfor (let i = 0; i < minLength; i++) {\n\t\tconst aCode = aStr.charCodeAt(aStart + i);\n\t\tconst bCode = bStr.charCodeAt(bStart + i);\n\t\tif (aCode > bCode) return 1;\n\t\tif (bCode > aCode) return -1;\n\t}\n\tif (aLength > bLength) return 1;\n\tif (bLength > aLength) return -1;\n\treturn 0;\n}\nfunction compareNumericChunks(aStr, aStart, aEnd, bStr, bStart, bEnd) {\n\tlet aSignificantStart = aStart;\n\twhile (aSignificantStart < aEnd && aStr.charCodeAt(aSignificantStart) === 48) aSignificantStart++;\n\tlet bSignificantStart = bStart;\n\twhile (bSignificantStart < bEnd && bStr.charCodeAt(bSignificantStart) === 48) bSignificantStart++;\n\tconst aSignificantLength = aEnd - aSignificantStart;\n\tconst bSignificantLength = bEnd - bSignificantStart;\n\tif (aSignificantLength === 0 && bSignificantLength === 0) return 0;\n\tif (aSignificantLength <= 15 && bSignificantLength <= 15) {\n\t\tconst an = parseSmallInt(aStr, aSignificantStart, aEnd);\n\t\tconst bn = parseSmallInt(bStr, bSignificantStart, bEnd);\n\t\tif (an > bn) return 1;\n\t\tif (bn > an) return -1;\n\t\treturn 0;\n\t}\n\tconst an = parseInt(aStr.slice(aStart, aEnd), 10);\n\tconst bn = parseInt(bStr.slice(bStart, bEnd), 10);\n\tif (an > bn) return 1;\n\tif (bn > an) return -1;\n\treturn 0;\n}\nfunction parseSmallInt(str, start, end) {\n\tlet result = 0;\n\tfor (let i = start; i < end; i++) result = result * 10 + str.charCodeAt(i) - 48;\n\treturn result;\n}\nfunction countRemainingChunks(str, start) {\n\tlet count = 0;\n\tlet index = start;\n\twhile (index < str.length) {\n\t\tcount++;\n\t\tindex = findChunkEnd(str, index, isDigit(str.charCodeAt(index)));\n\t}\n\treturn count;\n}\n/**\n* The built-in sorting function registry.\n*\n* Registering this full object opts out of tree-shaking: every built-in\n* sorting function ends up in your bundle. Prefer importing the `sortFn_*`\n* functions you actually use and registering just those in the `sortFns`\n* slot, or passing them directly to the `sortFn` column option.\n*\n* @deprecated Import individual `sortFn_*` functions instead for a smaller\n* bundle. This export still works and is not going away in v9, but built-in\n* name resolution (including `sortFn: 'auto'`) only finds functions you\n* register yourself.\n*/\nconst sortFns = {\n\talphanumeric: sortFn_alphanumeric,\n\talphanumericCaseSensitive: sortFn_alphanumericCaseSensitive,\n\tbasic: sortFn_basic,\n\tdatetime: sortFn_datetime,\n\ttext: sortFn_text,\n\ttextCaseSensitive: sortFn_textCaseSensitive\n};\n\n//#endregion\nexport { constructSortFn, reSplitAlphaNumeric, sortFn_alphanumeric, sortFn_alphanumericCaseSensitive, sortFn_basic, sortFn_datetime, sortFn_text, sortFn_textCaseSensitive, sortFns };","import { cloneState, isFunction, setStateSlice } from \"../../utils.js\";\nimport { reSplitAlphaNumeric, sortFn_basic } from \"./sortFns.js\";\n\n//#region src/features/row-sorting/rowSortingFeature.utils.ts\n/**\n* Creates the default sorting state.\n*\n* The feature default is an empty array, meaning no columns are sorted. Reset\n* APIs use this value when `defaultState` is `true`.\n*\n* @example\n* ```ts\n* const sorting = getDefaultSortingState()\n* ```\n*/\nfunction getDefaultSortingState() {\n\treturn [];\n}\n/**\n* Routes a sorting updater through the table's sorting change handler.\n*\n* The updater may be a next `SortingState` array or a function of the previous\n* sorting state, matching the instance `table.setSorting` behavior. State\n* owners receive an equality-guarded updater so structurally equal sorting\n* values preserve the owner's existing reference.\n*\n* @example\n* ```ts\n* table_setSorting(table, (old) => [...old, { id: 'age', desc: true }])\n* ```\n*/\nfunction table_setSorting(table, updater) {\n\tsetStateSlice(table, \"sorting\", updater);\n}\n/**\n* Resets `sorting` to the configured initial state or feature default.\n*\n* With no argument, the reset clones `table.initialState.sorting` when it\n* exists. Passing `true` ignores initial state and resets to `[]`.\n*\n* @example\n* ```ts\n* table_resetSorting(table)\n* table_resetSorting(table, true)\n* ```\n*/\nfunction table_resetSorting(table, defaultState) {\n\ttable_setSorting(table, defaultState ? [] : cloneState(table.initialState.sorting ?? []));\n}\n/**\n* Resets sorting after the table data changes when explicitly enabled.\n*\n* Unlike other auto-reset behaviors, sorting is preserved by default. An\n* explicit `autoResetAll` value takes precedence over `autoResetSorting`.\n*\n* @example\n* ```ts\n* table_autoResetSorting(table)\n* ```\n*/\nfunction table_autoResetSorting(table) {\n\tif (!table.atoms.sorting) return;\n\tif (table.options.autoResetAll ?? table.options.autoResetSorting ?? false) table_resetSorting(table);\n}\n/**\n* Chooses a built-in sorting function from sampled filtered row values.\n*\n* Date-like values use `datetime`, mixed text/numeric strings use\n* `alphanumeric`, plain strings use `text`, and unknown values fall back to\n* `basic`.\n*\n* @example\n* ```ts\n* const sortFn = column_getAutoSortFn(column)\n* ```\n*/\nfunction column_getAutoSortFn(column) {\n\tconst sortFns = column.table._rowModelFns.sortFns;\n\tconst firstRows = column.table.getFilteredRowModel().flatRows.slice(0, 10);\n\tlet sortFnName;\n\tlet isString = false;\n\tfor (let i = 0; i < firstRows.length; i++) {\n\t\tconst value = firstRows[i].getValue(column.id);\n\t\tif (Object.prototype.toString.call(value) === \"[object Date]\") {\n\t\t\tsortFnName = \"datetime\";\n\t\t\tbreak;\n\t\t}\n\t\tif (typeof value === \"string\") {\n\t\t\tisString = true;\n\t\t\tif (value.split(reSplitAlphaNumeric).length > 1) {\n\t\t\t\tsortFnName = \"alphanumeric\";\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\tif (!sortFnName && isString) sortFnName = \"text\";\n\tif (sortFnName) {\n\t\tlet sortFn = sortFns?.[sortFnName];\n\t\tif (!sortFn) {\n\t\t\tif (process.env.NODE_ENV === \"development\") console.warn(`sortFn '${sortFnName}' (auto) for column '${column.id}' is not registered`);\n\t\t\tif (sortFnName === \"alphanumeric\") sortFn = sortFns?.text;\n\t\t}\n\t\tif (sortFn) return sortFn;\n\t}\n\treturn sortFn_basic;\n}\n/**\n* Chooses the default first sort direction from sampled filtered row values.\n*\n* The first non-nullish value among the sampled rows decides: string columns\n* start ascending so alphabetical order is natural; other value types (or\n* columns with no non-nullish sample) start descending. Sampling past leading\n* nullish values keeps the toggle cycle stable when sorting or a data swap\n* moves an empty value into the first row.\n*\n* @example\n* ```ts\n* const direction = column_getAutoSortDir(column)\n* ```\n*/\nfunction column_getAutoSortDir(column) {\n\tconst firstRows = column.table.getFilteredRowModel().flatRows.slice(0, 10);\n\tfor (let i = 0; i < firstRows.length; i++) {\n\t\tconst value = firstRows[i].getValue(column.id);\n\t\tif (value == null) continue;\n\t\treturn typeof value === \"string\" ? \"asc\" : \"desc\";\n\t}\n\treturn \"desc\";\n}\n/**\n* Resolves the sorting function configured for a column.\n*\n* Function-valued `columnDef.sortFn` is returned directly, `'auto'` delegates\n* to `column_getAutoSortFn`, and string values are looked up in the table's\n* sorting function registry before falling back to `basic`.\n*\n* @example\n* ```ts\n* const sortFn = column_getSortFn(column)\n* ```\n*/\nfunction column_getSortFn(column) {\n\tconst sortFns = column.table._rowModelFns.sortFns;\n\tif (isFunction(column.columnDef.sortFn)) return column.columnDef.sortFn;\n\tif (column.columnDef.sortFn === \"auto\") return column_getAutoSortFn(column);\n\tconst sortFn = sortFns?.[column.columnDef.sortFn];\n\tif (process.env.NODE_ENV === \"development\" && !sortFn) console.warn(`sortFn '${String(column.columnDef.sortFn)}' for column '${column.id}' is not registered`);\n\treturn sortFn ?? sortFn_basic;\n}\n/**\n* Applies the next sorting state for this column.\n*\n* The toggle can add, replace, flip, or remove this column's sort entry. Multi\n* sorting respects `enableMultiSort`, `enableMultiRemove`,\n* `maxMultiSortColCount`, and the `multi` argument.\n*\n* @example\n* ```ts\n* column_toggleSorting(column, undefined, true)\n* ```\n*/\nfunction column_toggleSorting(column, desc, multi) {\n\tconst nextSortingOrder = column_getNextSortingOrder(column, multi && column_getCanMultiSort(column));\n\tconst hasManualValue = typeof desc !== \"undefined\";\n\ttable_setSorting(column.table, (old) => {\n\t\tconst existingIndex = old.findIndex((d) => d.id === column.id);\n\t\tconst existingSorting = existingIndex === -1 ? void 0 : old[existingIndex];\n\t\tlet newSorting = [];\n\t\tlet sortAction;\n\t\tconst nextDesc = hasManualValue ? desc : nextSortingOrder === \"desc\";\n\t\tconst isMultiMode = !!(old.length && column_getCanMultiSort(column) && multi);\n\t\tif (isMultiMode) {\n\t\t\tif (existingSorting) sortAction = \"toggle\";\n\t\t\telse sortAction = \"add\";\n\t\t} else if (existingSorting) sortAction = \"toggle\";\n\t\telse sortAction = \"replace\";\n\t\tif (sortAction === \"toggle\") {\n\t\t\tif (!hasManualValue) {\n\t\t\t\tif (!nextSortingOrder) sortAction = \"remove\";\n\t\t\t}\n\t\t}\n\t\tif (sortAction === \"add\") {\n\t\t\tnewSorting = [...old, {\n\t\t\t\tid: column.id,\n\t\t\t\tdesc: nextDesc\n\t\t\t}];\n\t\t\tnewSorting.splice(0, newSorting.length - (column.table.options.maxMultiSortColCount ?? Number.MAX_SAFE_INTEGER));\n\t\t} else if (sortAction === \"toggle\") newSorting = isMultiMode ? old.map((d) => {\n\t\t\tif (d.id === column.id) return {\n\t\t\t\t...d,\n\t\t\t\tdesc: nextDesc\n\t\t\t};\n\t\t\treturn d;\n\t\t}) : [{\n\t\t\tid: column.id,\n\t\t\tdesc: nextDesc\n\t\t}];\n\t\telse if (sortAction === \"remove\") newSorting = isMultiMode ? old.filter((d) => d.id !== column.id) : [];\n\t\telse newSorting = [{\n\t\t\tid: column.id,\n\t\t\tdesc: nextDesc\n\t\t}];\n\t\treturn newSorting;\n\t});\n}\n/**\n* Resolves the first direction used when this column begins sorting.\n*\n* Column-level `sortDescFirst` wins, then table-level `sortDescFirst`, then the\n* auto direction inferred from sampled values.\n*\n* @example\n* ```ts\n* const firstDirection = column_getFirstSortDir(column)\n* ```\n*/\nfunction column_getFirstSortDir(column) {\n\treturn column.columnDef.sortDescFirst ?? column.table.options.sortDescFirst ?? column_getAutoSortDir(column) === \"desc\" ? \"desc\" : \"asc\";\n}\n/**\n* Resolves the next sort order for this column's toggle cycle.\n*\n* The cycle starts with the first sort direction, flips between `asc` and\n* `desc`, and can return `false` when sorting removal is enabled.\n*\n* @example\n* ```ts\n* const nextOrder = column_getNextSortingOrder(column)\n* ```\n*/\nfunction column_getNextSortingOrder(column, multi) {\n\tconst firstSortDirection = column_getFirstSortDir(column);\n\tconst isSorted = column_getIsSorted(column);\n\tif (!isSorted) return firstSortDirection;\n\tif (isSorted !== firstSortDirection && (column.table.options.enableSortingRemoval ?? true) && (multi ? column.table.options.enableMultiRemove ?? true : true)) return false;\n\treturn isSorted === \"desc\" ? \"asc\" : \"desc\";\n}\n/**\n* Checks whether this accessor column can participate in sorting.\n*\n* The column must have an accessor and sorting must be enabled by both the\n* column definition and table options.\n*\n* @example\n* ```ts\n* const canSort = column_getCanSort(column)\n* ```\n*/\nfunction column_getCanSort(column) {\n\treturn (column.columnDef.enableSorting ?? true) && (column.table.options.enableSorting ?? true) && !!column.accessorFn;\n}\n/**\n* Checks whether this column can be added to a multi-sort state.\n*\n* Column-level `enableMultiSort` wins over table-level `enableMultiSort`; if\n* neither is set, accessor columns can multi-sort by default.\n*\n* @example\n* ```ts\n* const canMultiSort = column_getCanMultiSort(column)\n* ```\n*/\nfunction column_getCanMultiSort(column) {\n\treturn column.columnDef.enableMultiSort ?? column.table.options.enableMultiSort ?? !!column.accessorFn;\n}\n/**\n* Reads this column's current sort direction.\n*\n* The result is `false` when the column is not sorted, otherwise `'asc'` or\n* `'desc'` based on the column's entry in `state.sorting`.\n*\n* @example\n* ```ts\n* const direction = column_getIsSorted(column)\n* ```\n*/\nfunction column_getIsSorted(column) {\n\tconst columnSort = column.table.atoms.sorting?.get()?.find((d) => d.id === column.id);\n\treturn !columnSort ? false : columnSort.desc ? \"desc\" : \"asc\";\n}\n/**\n* Finds this column's position in the ordered `state.sorting` array.\n*\n* The result is `-1` when the column is not sorted.\n*\n* @example\n* ```ts\n* const index = column_getSortIndex(column)\n* ```\n*/\nfunction column_getSortIndex(column) {\n\treturn column.table.atoms.sorting?.get()?.findIndex((d) => d.id === column.id) ?? -1;\n}\n/**\n* Removes this column from the sorting state.\n*\n* Other sorted columns are preserved, including their relative order.\n*\n* @example\n* ```ts\n* column_clearSorting(column)\n* ```\n*/\nfunction column_clearSorting(column) {\n\ttable_setSorting(column.table, (old) => old.length ? old.filter((d) => d.id !== column.id) : []);\n}\n/**\n* Creates a header event handler that toggles this column's sorting.\n*\n* The handler ignores events when the column cannot sort, and asks\n* `options.isMultiSortEvent` whether the event should add to a multi-sort.\n*\n* @example\n* ```ts\n* const onClick = column_getToggleSortingHandler(column)\n* ```\n*/\nfunction column_getToggleSortingHandler(column) {\n\tconst canSort = column_getCanSort(column);\n\treturn (e) => {\n\t\tif (!canSort) return;\n\t\tcolumn_toggleSorting(column, void 0, column_getCanMultiSort(column) ? column.table.options.isMultiSortEvent?.(e) : false);\n\t};\n}\n\n//#endregion\nexport { column_clearSorting, column_getAutoSortDir, column_getAutoSortFn, column_getCanMultiSort, column_getCanSort, column_getFirstSortDir, column_getIsSorted, column_getNextSortingOrder, column_getSortFn, column_getSortIndex, column_getToggleSortingHandler, column_toggleSorting, getDefaultSortingState, table_autoResetSorting, table_resetSorting, table_setSorting };","import { assignPrototypeAPIs, assignTableAPIs, makeStateUpdater } from \"../../utils.js\";\nimport { column_clearSorting, column_getAutoSortDir, column_getAutoSortFn, column_getCanMultiSort, column_getCanSort, column_getFirstSortDir, column_getIsSorted, column_getNextSortingOrder, column_getSortFn, column_getSortIndex, column_getToggleSortingHandler, column_toggleSorting, getDefaultSortingState, table_autoResetSorting, table_resetSorting, table_setSorting } from \"./rowSortingFeature.utils.js\";\n\n//#region src/features/row-sorting/rowSortingFeature.ts\n/**\n* Feature that adds row sorting state, defaults, and column/table sorting APIs.\n*/\nconst rowSortingFeature = {\n\tgetInitialState(initialState) {\n\t\treturn {\n\t\t\tsorting: getDefaultSortingState(),\n\t\t\t...initialState\n\t\t};\n\t},\n\tgetDefaultColumnDef() {\n\t\treturn {\n\t\t\tsortFn: \"auto\",\n\t\t\tsortUndefined: 1\n\t\t};\n\t},\n\tgetDefaultTableOptions(table) {\n\t\treturn {\n\t\t\tautoResetSorting: false,\n\t\t\tonSortingChange: makeStateUpdater(\"sorting\", table),\n\t\t\tisMultiSortEvent: (e) => {\n\t\t\t\treturn e.shiftKey;\n\t\t\t}\n\t\t};\n\t},\n\tassignColumnPrototype(prototype, table) {\n\t\tassignPrototypeAPIs(\"rowSortingFeature\", prototype, table, {\n\t\t\tcolumn_getAutoSortFn: { fn: (column) => column_getAutoSortFn(column) },\n\t\t\tcolumn_getAutoSortDir: { fn: (column) => column_getAutoSortDir(column) },\n\t\t\tcolumn_getSortFn: { fn: (column) => column_getSortFn(column) },\n\t\t\tcolumn_toggleSorting: { fn: (column, desc, multi) => column_toggleSorting(column, desc, multi) },\n\t\t\tcolumn_getFirstSortDir: { fn: (column) => column_getFirstSortDir(column) },\n\t\t\tcolumn_getNextSortingOrder: { fn: (column, multi) => column_getNextSortingOrder(column, multi) },\n\t\t\tcolumn_getCanSort: { fn: (column) => column_getCanSort(column) },\n\t\t\tcolumn_getCanMultiSort: { fn: (column) => column_getCanMultiSort(column) },\n\t\t\tcolumn_getIsSorted: { fn: (column) => column_getIsSorted(column) },\n\t\t\tcolumn_getSortIndex: { fn: (column) => column_getSortIndex(column) },\n\t\t\tcolumn_clearSorting: { fn: (column) => column_clearSorting(column) },\n\t\t\tcolumn_getToggleSortingHandler: { fn: (column) => column_getToggleSortingHandler(column) }\n\t\t});\n\t},\n\tconstructTableAPIs(table) {\n\t\tassignTableAPIs(\"rowSortingFeature\", table, {\n\t\t\ttable_autoResetSorting: { fn: () => table_autoResetSorting(table) },\n\t\t\ttable_setSorting: { fn: (updater) => table_setSorting(table, updater) },\n\t\t\ttable_resetSorting: { fn: (defaultState) => table_resetSorting(table, defaultState) }\n\t\t});\n\t}\n};\n\n//#endregion\nexport { rowSortingFeature };","import { copyInstancePropertiesWithoutMemos, skipFirstRun, tableMemo } from \"../../utils.js\";\nimport { autoResetPageIndex } from \"../../core/featureStubs.js\";\nimport { column_getCanSort, column_getSortFn } from \"./rowSortingFeature.utils.js\";\n\n//#region src/features/row-sorting/createSortedRowModel.ts\n/**\n* Creates a memoized sorted row model factory.\n*\n* The factory reads the relevant table state atoms and options, then returns a row model function used by the table row-model pipeline.\n*\n* Register the sorting functions you use with the `sortFns` slot on the\n* `features` option:\n* `tableFeatures({ rowSortingFeature, sortedRowModel: createSortedRowModel(), sortFns: { alphanumeric: sortFn_alphanumeric } })`.\n* Importing individual `sortFn_*` functions keeps unused built-ins out of\n* your bundle; sorting functions passed directly to the `sortFn` column\n* option need no registration at all.\n*/\nfunction createSortedRowModel() {\n\treturn (_table) => {\n\t\tconst table = _table;\n\t\treturn tableMemo({\n\t\t\tfeature: \"rowSortingFeature\",\n\t\t\ttable,\n\t\t\tfnName: \"table.getSortedRowModel\",\n\t\t\tmemoDeps: () => [table.atoms.sorting?.get(), table.getPreSortedRowModel()],\n\t\t\tfn: () => _createSortedRowModel(table),\n\t\t\tonAfterUpdate: skipFirstRun(() => autoResetPageIndex(table))\n\t\t});\n\t};\n}\nfunction _createSortedRowModel(table) {\n\tconst preSortedRowModel = table.getPreSortedRowModel();\n\tconst sorting = table.atoms.sorting?.get();\n\tif (!preSortedRowModel.rows.length || !sorting?.length) return preSortedRowModel;\n\tconst sortedFlatRows = [];\n\tconst availableSorting = sorting.filter((sort) => {\n\t\tconst column = table.getColumn(sort.id);\n\t\treturn column ? column_getCanSort(column) : false;\n\t});\n\tif (!availableSorting.length) return preSortedRowModel;\n\tconst resolvedSorting = [];\n\tfor (let i = 0; i < availableSorting.length; i++) {\n\t\tconst sortEntry = availableSorting[i];\n\t\tconst column = table.getColumn(sortEntry.id);\n\t\tif (!column) continue;\n\t\tresolvedSorting.push({\n\t\t\tid: sortEntry.id,\n\t\t\tdesc: sortEntry.desc,\n\t\t\tsortUndefined: column.columnDef.sortUndefined,\n\t\t\tinvertSorting: column.columnDef.invertSorting,\n\t\t\tsortFn: column_getSortFn(column)\n\t\t});\n\t}\n\tconst compareRows = (rowA, rowB) => {\n\t\tfor (let i = 0; i < resolvedSorting.length; i++) {\n\t\t\tconst sortEntry = resolvedSorting[i];\n\t\t\tconst sortUndefined = sortEntry.sortUndefined;\n\t\t\tconst isDesc = sortEntry.desc;\n\t\t\tlet sortInt = 0;\n\t\t\tif (sortUndefined) {\n\t\t\t\tconst aValue = rowA.getValue(sortEntry.id);\n\t\t\t\tconst bValue = rowB.getValue(sortEntry.id);\n\t\t\t\tconst aUndefined = aValue === void 0;\n\t\t\t\tconst bUndefined = bValue === void 0;\n\t\t\t\tif (aUndefined && bUndefined) continue;\n\t\t\t\tif (aUndefined || bUndefined) {\n\t\t\t\t\tif (sortUndefined === \"first\") return aUndefined ? -1 : 1;\n\t\t\t\t\tif (sortUndefined === \"last\") return aUndefined ? 1 : -1;\n\t\t\t\t\tsortInt = aUndefined ? sortUndefined : -sortUndefined;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (sortInt === 0) sortInt = sortEntry.sortFn(rowA, rowB, sortEntry.id);\n\t\t\tif (sortInt !== 0) {\n\t\t\t\tif (isDesc) sortInt *= -1;\n\t\t\t\tif (sortEntry.invertSorting) sortInt *= -1;\n\t\t\t\treturn sortInt;\n\t\t\t}\n\t\t}\n\t\treturn rowA.index - rowB.index;\n\t};\n\tconst sortData = (rows) => {\n\t\tconst sortedData = rows.slice();\n\t\tsortedData.sort(compareRows);\n\t\tlet changed = false;\n\t\tfor (let i = 0; i < sortedData.length; i++) {\n\t\t\tconst row = sortedData[i];\n\t\t\tif (row !== rows[i]) changed = true;\n\t\t\tconst flatIndex = sortedFlatRows.length;\n\t\t\tsortedFlatRows.push(row);\n\t\t\tif (row.subRows.length) {\n\t\t\t\tconst sortedSubRows = sortData(row.subRows);\n\t\t\t\tif (sortedSubRows.changed) {\n\t\t\t\t\tconst cloned = Object.create(Object.getPrototypeOf(row));\n\t\t\t\t\tcopyInstancePropertiesWithoutMemos(cloned, row);\n\t\t\t\t\tcloned.subRows = sortedSubRows.rows;\n\t\t\t\t\tsortedData[i] = cloned;\n\t\t\t\t\tsortedFlatRows[flatIndex] = cloned;\n\t\t\t\t\tchanged = true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn {\n\t\t\trows: sortedData,\n\t\t\tchanged\n\t\t};\n\t};\n\treturn {\n\t\trows: sortData(preSortedRowModel.rows).rows,\n\t\tflatRows: sortedFlatRows,\n\t\trowsById: preSortedRowModel.rowsById\n\t};\n}\n\n//#endregion\nexport { createSortedRowModel };","import { batch, createAtom } from \"@tanstack/store\";\n\n//#region src/store-reactivity-bindings.ts\n/**\n* TanStack Store–based reactivity for vanilla / non-framework use of `constructTable`,\n* with `createOptionsStore: true` so `table.optionsStore` is available for subscriptions.\n*\n* @example\n* ```ts\n* import { constructTable, tableFeatures } from '@tanstack/table-core'\n* import { storeReactivityBindings } from '@tanstack/table-core/store-reactivity-bindings'\n*\n* const table = constructTable({\n* features: tableFeatures({ coreReactivityFeature: storeReactivityBindings() }),\n* // ...\n* })\n* ```\n*/\nfunction storeReactivityBindings() {\n\treturn {\n\t\tcreateOptionsStore: true,\n\t\twrapExternalAtoms: false,\n\t\taddSubscription: () => {\n\t\t\tthrow new Error(\"Feature not supported in current reactivity implementation\");\n\t\t},\n\t\tunmount: () => {\n\t\t\tthrow new Error(\"Feature not supported in current reactivity implementation\");\n\t\t},\n\t\tbatch,\n\t\tschedule: (fn) => queueMicrotask(fn),\n\t\tuntrack: (fn) => fn(),\n\t\tcreateReadonlyAtom: (fn, options) => {\n\t\t\treturn createAtom(() => fn(), { compare: options?.compare });\n\t\t},\n\t\tcreateWritableAtom: (value, options) => {\n\t\t\treturn createAtom(value, { compare: options?.compare });\n\t\t}\n\t};\n}\n\n//#endregion\nexport { storeReactivityBindings };","import {\n columnPinningFeature,\n columnSizingFeature,\n constructTable,\n createSortedRowModel,\n rowSortingFeature,\n sortFn_alphanumeric,\n sortFn_basic,\n sortFn_datetime,\n sortFn_text,\n tableFeatures,\n type Column,\n type ColumnDef as TanStackColumnDef,\n type Row,\n type Table,\n type TableOptions,\n} from '@tanstack/table-core';\nimport { storeReactivityBindings } from '@tanstack/table-core/store-reactivity-bindings';\nimport { resolveColumns, type ResolvedColumn } from '../columns/resolve-columns.js';\nimport type {\n CellContext,\n ColumnAlign,\n ColumnDef,\n ColumnPin,\n ColumnSizingState,\n SortState,\n} from '../types.js';\n\n// The TanStack adapter. Everything TanStack stays in this module: callers only see\n// the view types below, so TanStack can be upgraded or replaced without touching\n// `argus-table`'s public API.\n\nconst features = tableFeatures({\n // Vanilla (framework-free) reactivity; required by `constructTable`.\n coreReactivityFeature: storeReactivityBindings(),\n columnPinningFeature,\n columnSizingFeature,\n rowSortingFeature,\n sortedRowModel: createSortedRowModel(),\n // Registered by name so `sortFn: 'auto'` can pick one by value type.\n sortFns: {\n alphanumeric: sortFn_alphanumeric,\n basic: sortFn_basic,\n datetime: sortFn_datetime,\n text: sortFn_text,\n },\n});\ntype Features = typeof features;\ntype AnyRow = Record<string, unknown>;\n\n/** Sort direction of a column, or `false` when it isn't sorted. */\nexport type SortDirection = 'asc' | 'desc' | false;\n\n/** A column as the renderer sees it, in visual order: start-pinned, scrolling, end-pinned. */\nexport interface ColumnView<TData, TContent> {\n id: string;\n /** 1-based position in visual order, for `aria-colindex`. */\n colIndex: number;\n pin: ColumnPin | undefined;\n /**\n * Sticky inset in px: from the start edge for `'start'` columns, from the end edge\n * for `'end'` columns. For scrolling columns, the start within the scrolling area.\n */\n offset: number;\n /** `true` on the pinned column next to the scrolling area (one per pinned side). */\n pinEdge: boolean;\n /** Current width in px (a resized width wins over the column's own). */\n width: number;\n /** Share of free space, or `undefined` for a fixed width. A resized column stops flexing. */\n flex: number | undefined;\n minWidth: number;\n maxWidth: number;\n sortable: boolean;\n resizable: boolean;\n align: ColumnAlign;\n sorted: SortDirection;\n header: ColumnDef<TData, TContent>['header'];\n cell: ColumnDef<TData, TContent>['cell'];\n hasAccessor: boolean;\n}\n\n/** A row of the current (sorted) row model. */\nexport interface RowView<TData> {\n id: string;\n /** Index in the current row model, 0-based. */\n index: number;\n original: TData;\n}\n\nexport interface TableModelOptions<TData, TContent> {\n columns: readonly ColumnDef<TData, TContent>[];\n data: readonly TData[];\n /** Row id function. Default: the row's index in `data`, as a string. */\n getRowId: ((row: TData, index: number) => string) | undefined;\n /** Current sort state; its owner is the caller (see `controllable`). */\n sorting: SortState;\n /** Current resized widths; its owner is the caller. */\n columnSizing: ColumnSizingState;\n}\n\nexport interface TableModel<TData, TContent> {\n /** Updates any subset of the options. Unchanged references are ignored. */\n update(options: Partial<TableModelOptions<TData, TContent>>): void;\n /** Columns in visual order. */\n readonly columns: readonly ColumnView<TData, TContent>[];\n /** Number of rows in the current row model. */\n readonly rowCount: number;\n /** Sum of all column widths in px (flex columns count their minimum). */\n readonly totalWidth: number;\n /** The row at an index of the current row model. */\n rowAt(index: number): RowView<TData> | undefined;\n /** The index of a row id in the current row model (after sorting), or `undefined`. */\n indexOf(rowId: string): number | undefined;\n /** The value a column reads from the row at `index`. */\n valueAt(index: number, columnId: string): unknown;\n /** What a column's `cell` function receives for the row at `index`. */\n cellContext(index: number, columnId: string): CellContext<TData> | undefined;\n /**\n * The sort state that clicking this column's header would produce:\n * asc → desc → unsorted, one column at a time. `undefined` if it can't sort.\n */\n nextSorting(columnId: string): SortState | undefined;\n /**\n * The sizing state after setting a column to `width` px, clamped to its bounds.\n * `undefined` if the column can't be resized.\n */\n nextSizing(columnId: string, width: number): ColumnSizingState | undefined;\n}\n\nconst defaultRowId = (_row: unknown, index: number) => String(index);\n\nfunction toTanStack<TData, TContent>(\n column: ResolvedColumn<TData, TContent>,\n): TanStackColumnDef<Features, AnyRow> {\n return {\n id: column.id,\n accessorFn: column.getValue as (row: AnyRow, index: number) => unknown,\n size: column.width,\n minSize: column.minWidth,\n maxSize: column.maxWidth,\n enableSorting: column.sortable,\n sortUndefined: 'last',\n };\n}\n\n/**\n * Creates the table model over TanStack Table. It owns no state: sorting and sizing\n * come in through `update()`, and `nextSorting()`/`nextSizing()` only propose\n * changes, so the caller decides (controlled or uncontrolled) whether to apply them.\n */\nexport function createTableModel<TData, TContent>(\n initial: TableModelOptions<TData, TContent>,\n): TableModel<TData, TContent> {\n let options = initial;\n let resolved = resolveColumns(options.columns);\n let byId = new Map(resolved.map((c) => [c.id, c]));\n // Kept stable between updates: a new array would make TanStack rebuild columns and rows.\n let tanStackColumns = resolved.map(toTanStack);\n let views: ColumnView<TData, TContent>[] | undefined;\n const rowViews = new WeakMap<Row<Features, AnyRow>, RowView<TData>>();\n // Built lazily per row model (sorting or new data gives a new array).\n let indexById: { rows: readonly Row<Features, AnyRow>[]; map: Map<string, number> } | undefined;\n\n const tableOptions = (): TableOptions<Features, AnyRow> => ({\n features,\n columns: tanStackColumns,\n data: options.data as AnyRow[],\n getRowId: (options.getRowId ?? defaultRowId) as (row: AnyRow, index: number) => string,\n state: {\n sorting: options.sorting,\n columnSizing: options.columnSizing,\n columnPinning: {\n start: resolved.filter((c) => c.pin === 'start').map((c) => c.id),\n end: resolved.filter((c) => c.pin === 'end').map((c) => c.id),\n },\n },\n // State is owned by the caller; TanStack's own setters must not change it.\n onSortingChange: () => undefined,\n onColumnSizingChange: () => undefined,\n onColumnPinningChange: () => undefined,\n });\n\n const table: Table<Features, AnyRow> = constructTable(tableOptions());\n\n const rows = () => table.getRowModel().rows;\n\n const buildViews = (): ColumnView<TData, TContent>[] => {\n const start = table.getStartLeafColumns();\n const center = table.getCenterLeafColumns();\n const end = table.getEndLeafColumns();\n const sorting = options.sorting;\n const view = (\n column: Column<Features, AnyRow>,\n colIndex: number,\n offset: number,\n pinEdge: boolean,\n ): ColumnView<TData, TContent> => {\n const def = byId.get(column.id);\n if (!def) throw new Error(`argus-table: unknown column '${column.id}'.`);\n const sort = sorting.find((s) => s.id === column.id);\n return {\n id: def.id,\n colIndex,\n pin: def.pin,\n offset,\n pinEdge,\n width: column.getSize(),\n flex: options.columnSizing[def.id] === undefined ? def.flex : undefined,\n minWidth: def.minWidth,\n maxWidth: def.maxWidth,\n sortable: def.sortable,\n resizable: def.resizable,\n align: def.align,\n sorted: sort ? (sort.desc ? 'desc' : 'asc') : false,\n header: def.header,\n cell: def.cell,\n hasAccessor: def.hasAccessor,\n };\n };\n return [\n ...start.map((c, i) => view(c, i + 1, c.getStart('start'), i === start.length - 1)),\n ...center.map((c, i) => view(c, start.length + i + 1, c.getStart('center'), false)),\n ...end.map((c, i) =>\n view(c, start.length + center.length + i + 1, c.getAfter('end'), i === 0),\n ),\n ];\n };\n\n return {\n update(next) {\n const merged = { ...options, ...next };\n const changed = (Object.keys(next) as (keyof typeof next)[]).some(\n (key) => next[key] !== options[key],\n );\n if (!changed) return;\n if (next.columns && next.columns !== options.columns) {\n resolved = resolveColumns(next.columns);\n byId = new Map(resolved.map((c) => [c.id, c]));\n tanStackColumns = resolved.map(toTanStack);\n }\n options = merged;\n views = undefined;\n table.setOptions((prev) => ({ ...prev, ...tableOptions() }));\n },\n\n get columns() {\n return (views ??= buildViews());\n },\n\n get rowCount() {\n return rows().length;\n },\n\n get totalWidth() {\n return table.getTotalSize();\n },\n\n rowAt(index) {\n const row = rows()[index];\n if (!row) return undefined;\n let view = rowViews.get(row);\n if (view?.index !== index) {\n view = { id: row.id, index, original: row.original as TData };\n rowViews.set(row, view);\n }\n return view;\n },\n\n indexOf(rowId) {\n const current = rows();\n if (indexById?.rows !== current) {\n indexById = { rows: current, map: new Map(current.map((r, i) => [r.id, i])) };\n }\n return indexById.map.get(rowId);\n },\n\n valueAt(index, columnId) {\n return rows()[index]?.getValue(columnId);\n },\n\n cellContext(index, columnId) {\n const row = rows()[index];\n if (!row || !byId.has(columnId)) return undefined;\n return {\n row: row.original as TData,\n rowId: row.id,\n index,\n columnId,\n value: row.getValue(columnId),\n };\n },\n\n nextSorting(columnId) {\n if (byId.get(columnId)?.sortable !== true) return undefined;\n const current = options.sorting.find((s) => s.id === columnId);\n if (!current) return [{ id: columnId, desc: false }];\n return current.desc ? [] : [{ id: columnId, desc: true }];\n },\n\n nextSizing(columnId, width) {\n const column = byId.get(columnId);\n if (!column?.resizable || !Number.isFinite(width)) return undefined;\n const clamped = Math.round(Math.min(column.maxWidth, Math.max(column.minWidth, width)));\n return { ...options.columnSizing, [columnId]: clamped };\n },\n };\n}\n","/**\n * State that works like a form input: uncontrolled until the host sets it,\n * controlled from then on. See `docs/plan/code-architecture/04-state-and-events.md`.\n *\n * - **Uncontrolled:** `request()` applies the change. The caller then fires the change event.\n * - **Controlled:** `request()` changes nothing and returns the proposed value for the\n * event. The value only changes when the host calls `set()` again.\n * - `set(undefined)` hands ownership back to the table and keeps the last value.\n */\nexport interface Controllable<T> {\n /** The current value. */\n readonly value: T;\n /** `true` once the host has set a value (and not handed it back with `undefined`). */\n readonly controlled: boolean;\n /** Called when the host sets the property. */\n set(value: T | undefined): void;\n /**\n * Called when the table wants to change the state, for example after a header click.\n * Returns the proposed value and whether it was applied.\n */\n request(next: T): { value: T; applied: boolean };\n}\n\nexport function controllable<T>(initial: T): Controllable<T> {\n let value = initial;\n let controlled = false;\n return {\n get value() {\n return value;\n },\n get controlled() {\n return controlled;\n },\n set(next) {\n if (next === undefined) {\n controlled = false;\n return;\n }\n controlled = true;\n value = next;\n },\n request(next) {\n if (!controlled) value = next;\n return { value: next, applied: !controlled };\n },\n };\n}\n","/** A rendered row and the pool slot whose DOM it uses. */\nexport interface PoolEntry {\n id: string;\n slot: number;\n}\n\n/**\n * Assigns pool slots to rendered rows (ADR 0001).\n *\n * A row keeps its slot while it stays rendered. A row entering the window takes a\n * slot freed by a row that left, so its DOM is updated in place rather than created.\n * Rows are returned in slot order (\"pool order\"); the ADR 0001 addendum ruled out\n * re-sorting them by row index, so assistive tech gets row positions from\n * `aria-rowindex` instead.\n */\nexport class RowPool {\n #slots = new Map<string, number>();\n #free: number[] = [];\n #size = 0;\n #pinned: string | undefined;\n\n /** Number of slots created so far: the most rows rendered at once. */\n get size(): number {\n return this.#size;\n }\n\n /** The row id whose slot is kept while it is out of range, if any. */\n get pinned(): string | undefined {\n return this.#pinned;\n }\n\n /**\n * Keeps one row's slot, and keeps it rendered, while it is outside the rendered\n * range. Used for the row holding focus. `undefined` releases it.\n */\n pin(id: string | undefined): void {\n this.#pinned = id;\n }\n\n /** The slot a row holds, or `undefined` when it isn't rendered. */\n slotOf(id: string): number | undefined {\n return this.#slots.get(id);\n }\n\n /**\n * Updates the pool for the rows that should be rendered and returns them, plus the\n * pinned row if it isn't among them, in slot order.\n */\n update(ids: Iterable<string>): PoolEntry[] {\n const keep = new Set(ids);\n if (this.#pinned !== undefined) keep.add(this.#pinned);\n\n for (const [id, slot] of this.#slots) {\n if (!keep.has(id)) {\n this.#slots.delete(id);\n this.#free.push(slot);\n }\n }\n for (const id of keep) {\n if (!this.#slots.has(id)) this.#slots.set(id, this.#free.pop() ?? this.#size++);\n }\n\n const entries: PoolEntry[] = [];\n for (const [id, slot] of this.#slots) entries.push({ id, slot });\n return entries.sort((a, b) => a.slot - b.slot);\n }\n\n /** Frees every slot, for example when the data is replaced. */\n clear(): void {\n this.#slots.clear();\n this.#free = [];\n this.#size = 0;\n this.#pinned = undefined;\n }\n}\n","/**\n * One pointer drag on a resize handle. The pointer is captured, so the drag keeps\n * working outside the handle, and moves are batched to one `onWidth` call per\n * animation frame (TanStack's `onChange` mode: the width updates while dragging).\n *\n * `direction` is 1 in LTR and -1 in RTL: the handle sits on the inline-end edge,\n * so moving toward the inline end always grows the column.\n */\nexport function startResizeDrag(\n handle: HTMLElement,\n down: PointerEvent,\n startWidth: number,\n direction: 1 | -1,\n onWidth: (width: number) => void,\n): void {\n const startX = down.clientX;\n let frame = 0;\n let pending: number | undefined;\n\n const flush = () => {\n frame = 0;\n if (pending !== undefined) onWidth(pending);\n pending = undefined;\n };\n const move = (event: PointerEvent) => {\n pending = startWidth + (event.clientX - startX) * direction;\n frame ||= requestAnimationFrame(flush);\n };\n const end = (event: PointerEvent) => {\n if (event.type === 'pointerup') move(event);\n if (frame) cancelAnimationFrame(frame);\n flush();\n handle.removeAttribute('data-active');\n handle.removeEventListener('pointermove', move);\n handle.removeEventListener('pointerup', end);\n handle.removeEventListener('pointercancel', end);\n if (handle.hasPointerCapture(event.pointerId)) handle.releasePointerCapture(event.pointerId);\n };\n\n down.preventDefault();\n try {\n handle.setPointerCapture(down.pointerId);\n } catch {\n // Synthetic or already released pointers can't be captured; moves on the handle still work.\n }\n handle.setAttribute('data-active', '');\n handle.addEventListener('pointermove', move);\n handle.addEventListener('pointerup', end);\n handle.addEventListener('pointercancel', end);\n}\n","import { createTableModel, type TableModel, type TableModelOptions } from '@argus-table/core';\nimport type { CellContent } from '../types.js';\n\n/**\n * Owns the table model (core's TanStack adapter). The element pushes its\n * properties in from `willUpdate`; render functions read `model`. It needs no\n * lifecycle hooks yet: the model is pull-based and owns no state.\n */\nexport class TableController<T> {\n readonly model: TableModel<T, CellContent>;\n\n constructor() {\n this.model = createTableModel<T, CellContent>({\n columns: [],\n data: [],\n getRowId: undefined,\n sorting: [],\n columnSizing: {},\n });\n }\n\n update(options: Partial<TableModelOptions<T, CellContent>>): void {\n this.model.update(options);\n }\n}\n","function getMeasurementKey(item) {\n return typeof item === \"object\" ? item.key : item;\n}\nfunction createLazyMeasurementsView(cache, flat) {\n const count = cache.length;\n return new Proxy(cache, {\n get(target, prop, receiver) {\n if (typeof prop === \"string\") {\n const c = prop.charCodeAt(0);\n if (c >= 48 && c <= 57) {\n const i = +prop;\n if (Number.isInteger(i) && i >= 0 && i < count) {\n let v = target[i];\n if (typeof v !== \"object\") {\n const s = flat[i * 2];\n v = target[i] = {\n index: i,\n key: v,\n start: s,\n size: flat[i * 2 + 1],\n end: s + flat[i * 2 + 1],\n lane: 0\n };\n }\n return v;\n }\n }\n if (prop === \"length\") return count;\n }\n return Reflect.get(target, prop, receiver);\n }\n });\n}\nexport {\n createLazyMeasurementsView,\n getMeasurementKey\n};\n//# sourceMappingURL=lazy-measurements.js.map\n","function memo(getDeps, fn, opts) {\n let deps = opts.initialDeps ?? [];\n let result;\n let isInitial = true;\n function memoizedFunction() {\n var _a;\n const debugEnabled = process.env.NODE_ENV !== \"production\" && !!opts.key && !!((_a = opts.debug) == null ? void 0 : _a.call(opts));\n let depTime = 0;\n if (debugEnabled) depTime = Date.now();\n const newDeps = getDeps();\n const depsChanged = newDeps.length !== deps.length || newDeps.some((dep, index) => deps[index] !== dep);\n if (!depsChanged) {\n return result;\n }\n deps = newDeps;\n let resultTime = 0;\n if (debugEnabled) resultTime = Date.now();\n result = fn(...newDeps);\n if (debugEnabled) {\n const depEndTime = Math.round((Date.now() - depTime) * 100) / 100;\n const resultEndTime = Math.round((Date.now() - resultTime) * 100) / 100;\n const resultFpsPercentage = resultEndTime / 16;\n const pad = (str, num) => {\n str = String(str);\n while (str.length < num) {\n str = \" \" + str;\n }\n return str;\n };\n console.info(\n `%c⏱ ${pad(resultEndTime, 5)} /${pad(depEndTime, 5)} ms`,\n `\n font-size: .6rem;\n font-weight: bold;\n color: hsl(${Math.max(\n 0,\n Math.min(120 - 120 * resultFpsPercentage, 120)\n )}deg 100% 31%);`,\n opts == null ? void 0 : opts.key\n );\n }\n if ((opts == null ? void 0 : opts.onChange) && !(isInitial && opts.skipInitialOnChange)) {\n opts.onChange(result);\n }\n isInitial = false;\n return result;\n }\n memoizedFunction.updateDeps = (newDeps) => {\n deps = newDeps;\n };\n return memoizedFunction;\n}\nfunction notUndefined(value, msg) {\n if (value === void 0) {\n throw new Error(`Unexpected undefined${msg ? `: ${msg}` : \"\"}`);\n } else {\n return value;\n }\n}\nconst approxEqual = (a, b) => Math.abs(a - b) < 1.01;\nconst debounce = (targetWindow, fn, ms) => {\n let timeoutId;\n return Object.assign(\n function(...args) {\n targetWindow.clearTimeout(timeoutId);\n timeoutId = targetWindow.setTimeout(() => fn.apply(this, args), ms);\n },\n {\n // The handle is closure-local, so a caller that has already\n // unsubscribed has no way to stop a queued call. Teardown paths use\n // this to drop the pending invocation instead of letting it land.\n cancel: () => {\n targetWindow.clearTimeout(timeoutId);\n }\n }\n );\n};\nexport {\n approxEqual,\n debounce,\n memo,\n notUndefined\n};\n//# sourceMappingURL=utils.js.map\n","import { approxEqual } from \"./utils.js\";\nfunction classifyScrollEvent({\n offset,\n isScrolling,\n elementMax,\n holdOffset,\n scrollOffset,\n pendingWrite,\n clampedMaxAtWrite\n}) {\n var _a;\n if (isScrolling && pendingWrite === null && offset === scrollOffset) {\n return \"spurious\";\n }\n if (pendingWrite !== null && Math.abs(offset - pendingWrite.target) < 1.5) {\n return \"readBack\";\n }\n if (pendingWrite !== null && !pendingWrite.smooth && elementMax !== null && pendingWrite.target > elementMax + holdOffset + 0.5 && Math.abs(offset - (elementMax + holdOffset)) < 1.5) {\n return \"clampedReadBack\";\n }\n if (pendingWrite !== null && !pendingWrite.smooth && ((_a = pendingWrite.lowMaxes) == null ? void 0 : _a.some((max) => Math.abs(offset - max) < 1.5))) {\n return \"clampedReadBack\";\n }\n if (clampedMaxAtWrite !== null && Math.abs(offset - clampedMaxAtWrite) < 1.5) {\n return \"clampedEcho\";\n }\n return \"external\";\n}\nconst isAnimating = (phase) => phase === \"smooth\" || phase === \"smoothFinishing\";\nfunction externalRetiresCommand({\n kind,\n offset,\n command,\n target\n}) {\n return kind !== \"spurious\" && kind !== \"readBack\" && // Our own write, clamped (`clampedReadBack`, #1310): the command is not\n // retired by it, and reconcile retargets below the new max.\n kind !== \"clampedReadBack\" && (command == null ? void 0 : command.index) != null && // Nothing has been written for a command waiting for the tail; these\n // are the fling's events.\n command.phase !== \"queued\" && // A non-smooth write lands at once, so any other scroll event is the\n // user's, even before reconcile saw the target reached (the target may\n // keep moving, or iOS ignored the write under a finger). A write the\n // browser clamped because the sizer hasn't grown yet reads back at the\n // max, which is also where the fresh target clamps, so the check below\n // keeps it reconciling (#1294). While a smooth scroll's animation may\n // still report, its events look like a user's, so it yields only once it\n // has landed.\n !isAnimating(command.phase) && !approxEqual(offset, command.lastTargetOffset) && !approxEqual(offset, target()) && // A compensation write's clamped echo (#1258) keeps the command. The\n // order is deliberate, not tidiness: this clause stays after `target()`\n // (and `clampedReadBack` before it) because `target()` can rebuild the\n // measurements, so it must run for exactly the events it always did.\n kind !== \"clampedEcho\";\n}\nconst FLING_WINDOW_MS = 40;\nfunction flingSpedUp(samples) {\n const last = samples[samples.length - 1];\n if (last === void 0) return false;\n let j = samples.length - 2;\n while (j >= 0 && last.t - samples[j].t < FLING_WINDOW_MS) j--;\n if (j < 0) return false;\n const mid = samples[j];\n let k = j - 1;\n while (k >= 0 && mid.t - samples[k].t < FLING_WINDOW_MS) k--;\n if (k < 0) return false;\n const first = samples[k];\n const recent = (last.offset - mid.offset) / (last.t - mid.t);\n const before = (mid.offset - first.offset) / (mid.t - first.t);\n return recent * before >= 0 && Math.abs(recent) >= 2 * Math.abs(before) && Math.abs(recent) - Math.abs(before) >= 0.8;\n}\nfunction flingCaught(samples) {\n const last = samples[samples.length - 1];\n if (last === void 0) return false;\n let j = samples.length - 2;\n while (j >= 0 && last.t - samples[j].t < FLING_WINDOW_MS) j--;\n if (j < 0) return false;\n const from = samples[j];\n return Math.abs(last.offset - from.offset) / (last.t - from.t) >= 0.05;\n}\nexport {\n classifyScrollEvent,\n externalRetiresCommand,\n flingCaught,\n flingSpedUp\n};\n//# sourceMappingURL=scroll-classifier.js.map\n","let _isIOSResult;\nconst isIOSWebKit = () => {\n if (_isIOSResult !== void 0) return _isIOSResult;\n if (typeof navigator === \"undefined\") return _isIOSResult = false;\n if (/iP(hone|od|ad)/.test(navigator.userAgent)) return _isIOSResult = true;\n const mtp = navigator.maxTouchPoints;\n return _isIOSResult = navigator.platform === \"MacIntel\" && mtp !== void 0 && mtp > 0;\n};\nlet _iosMomentumOverridesWritesResult;\nconst iosMomentumOverridesWrites = () => {\n if (_iosMomentumOverridesWritesResult !== void 0) {\n return _iosMomentumOverridesWritesResult;\n }\n return _iosMomentumOverridesWritesResult = isIOSWebKit() && typeof CSS !== \"undefined\" && typeof CSS.supports === \"function\" && CSS.supports(\"overflow-anchor: auto\");\n};\nconst momentumOverridesWrites = () => !isIOSWebKit() || iosMomentumOverridesWrites();\nconst _resetIOSDetectionForTests = () => {\n _isIOSResult = void 0;\n _iosMomentumOverridesWritesResult = void 0;\n};\nconst touchListenerOptions = {\n capture: true,\n passive: true\n};\nclass IosGesture {\n constructor(host) {\n this.host = host;\n this._touch = null;\n this.inMotion = () => this._touch !== null && this._touch.phase !== \"lateFling\";\n this.dragging = () => {\n var _a;\n return ((_a = this._touch) == null ? void 0 : _a.phase) === \"down\" && this._touch.moved;\n };\n this.tail = () => {\n var _a;\n return ((_a = this._touch) == null ? void 0 : _a.phase) === \"tail\" ? this._touch.moved ? \"fling\" : \"tap\" : null;\n };\n this.onScroll = ({\n isScrolling,\n ownReadBack,\n moved,\n external\n }) => {\n var _a, _b, _c;\n if (isScrolling && ((_a = this._touch) == null ? void 0 : _a.phase) === \"tail\") {\n this._openTail(this._touch.moved || !ownReadBack, false);\n } else if (((_b = this._touch) == null ? void 0 : _b.phase) === \"lateFling\") {\n if (this.host.now() > this._touch.until) {\n this._touch = null;\n } else if (external && isScrolling && moved) {\n this._openTail(true, false);\n }\n }\n if (!ownReadBack && isScrolling && moved && ((_c = this._touch) == null ? void 0 : _c.phase) === \"down\") {\n this._touch.moved = true;\n return true;\n }\n return false;\n };\n this.touchStart = () => {\n this.end();\n this._touch = { phase: \"down\", moved: false };\n };\n this.touchEnd = () => {\n var _a;\n const moved = ((_a = this._touch) == null ? void 0 : _a.phase) === \"down\" && this._touch.moved;\n this.end();\n this._openTail(moved, moved);\n };\n this.end = () => {\n var _a;\n const win = this.host.getWindow();\n if (((_a = this._touch) == null ? void 0 : _a.phase) === \"tail\" && win != null) {\n win.clearTimeout(this._touch.timerId);\n }\n this._touch = null;\n };\n this.listen = (target) => {\n const onTouchStart = () => this.touchStart();\n const onTouchEnd = () => this.touchEnd();\n target.addEventListener(\"touchstart\", onTouchStart, touchListenerOptions);\n target.addEventListener(\"touchend\", onTouchEnd, touchListenerOptions);\n target.addEventListener(\"touchcancel\", onTouchEnd, touchListenerOptions);\n return () => {\n target.removeEventListener(\n \"touchstart\",\n onTouchStart,\n touchListenerOptions\n );\n target.removeEventListener(\"touchend\", onTouchEnd, touchListenerOptions);\n target.removeEventListener(\n \"touchcancel\",\n onTouchEnd,\n touchListenerOptions\n );\n this.end();\n };\n };\n this._openTail = (moved, awaitingFling) => {\n const win = this.host.getWindow();\n if (win == null) return;\n this.end();\n const tail = {\n phase: \"tail\",\n moved,\n awaitingFling,\n // Only fires while this tail is current: `end` clears it otherwise.\n timerId: win.setTimeout(() => {\n if (this.host.tailStillMoving()) {\n this._openTail(tail.moved, tail.awaitingFling);\n return;\n }\n this._touch = tail.awaitingFling ? { phase: \"lateFling\", until: this.host.now() + 1e3 } : null;\n this.host.onTailClosed();\n }, 150)\n };\n this._touch = tail;\n };\n }\n get touch() {\n return this._touch;\n }\n}\nexport {\n IosGesture,\n _resetIOSDetectionForTests,\n iosMomentumOverridesWrites,\n isIOSWebKit,\n momentumOverridesWrites\n};\n//# sourceMappingURL=ios-gesture.js.map\n","import { createLazyMeasurementsView, getMeasurementKey } from \"./lazy-measurements.js\";\nimport { memo, approxEqual, notUndefined, debounce } from \"./utils.js\";\nimport { flingCaught, externalRetiresCommand, flingSpedUp, classifyScrollEvent } from \"./scroll-classifier.js\";\nimport { IosGesture, isIOSWebKit, momentumOverridesWrites } from \"./ios-gesture.js\";\nimport { _resetIOSDetectionForTests } from \"./ios-gesture.js\";\nconst getRect = (element) => {\n const { clientWidth, clientHeight } = element;\n return { width: clientWidth, height: clientHeight };\n};\nconst createFrameQueue = (targetWindow) => {\n const ids = /* @__PURE__ */ new Set();\n return {\n schedule: (fn) => {\n const id = targetWindow.requestAnimationFrame(() => {\n ids.delete(id);\n fn();\n });\n ids.add(id);\n },\n cancel: () => {\n ids.forEach((id) => targetWindow.cancelAnimationFrame(id));\n ids.clear();\n }\n };\n};\nconst defaultKeyExtractor = (index) => index;\nconst defaultRangeExtractor = (range) => {\n const overscan = range.overscan * Math.max(range.lanes ?? 1, 1);\n const start = Math.max(range.startIndex - overscan, 0);\n const end = Math.min(range.endIndex + overscan, range.count - 1);\n const len = end - start + 1;\n const arr = new Array(len);\n for (let i = 0; i < len; i++) {\n arr[i] = start + i;\n }\n return arr;\n};\nconst observeElementRect = (instance, cb) => {\n const element = instance.scrollElement;\n if (!element) {\n return;\n }\n const targetWindow = instance.targetWindow;\n if (!targetWindow) {\n return;\n }\n const handler = (rect) => {\n const { width, height } = rect;\n cb({ width: Math.round(width), height: Math.round(height) });\n };\n handler(getRect(element));\n if (!targetWindow.ResizeObserver) {\n return () => {\n };\n }\n const frames = createFrameQueue(targetWindow);\n const observer = new targetWindow.ResizeObserver(() => {\n const run = () => {\n handler(getRect(element));\n };\n instance.options.useAnimationFrameWithResizeObserver ? frames.schedule(run) : run();\n });\n observer.observe(element, { box: \"content-box\" });\n return () => {\n observer.unobserve(element);\n frames.cancel();\n };\n};\nconst addEventListenerOptions = {\n passive: true\n};\nconst observeWindowRect = (instance, cb) => {\n const element = instance.scrollElement;\n if (!element) {\n return;\n }\n const handler = () => {\n cb({ width: element.innerWidth, height: element.innerHeight });\n };\n handler();\n element.addEventListener(\"resize\", handler, addEventListenerOptions);\n return () => {\n element.removeEventListener(\"resize\", handler);\n };\n};\nconst supportsScrollend = typeof window == \"undefined\" ? true : \"onscrollend\" in window;\nconst observeOffset = (instance, cb, readOffset) => {\n const element = instance.scrollElement;\n if (!element) {\n return;\n }\n const targetWindow = instance.targetWindow;\n if (!targetWindow) {\n return;\n }\n const registerScrollendEvent = instance.options.useScrollendEvent && supportsScrollend;\n let offset = 0;\n const fallback = registerScrollendEvent ? null : debounce(\n targetWindow,\n () => cb(readOffset(element), false),\n instance.options.isScrollingResetDelay\n );\n const createHandler = (isScrolling) => () => {\n offset = readOffset(element);\n fallback == null ? void 0 : fallback();\n cb(offset, isScrolling);\n };\n const handler = createHandler(true);\n const endHandler = createHandler(false);\n element.addEventListener(\"scroll\", handler, addEventListenerOptions);\n if (registerScrollendEvent) {\n element.addEventListener(\"scrollend\", endHandler, addEventListenerOptions);\n }\n return () => {\n element.removeEventListener(\"scroll\", handler);\n if (registerScrollendEvent) {\n element.removeEventListener(\"scrollend\", endHandler);\n }\n fallback == null ? void 0 : fallback.cancel();\n };\n};\nconst observeElementOffset = (instance, cb) => observeOffset(instance, cb, (el) => {\n const { horizontal, isRtl } = instance.options;\n return horizontal ? el.scrollLeft * (isRtl && -1 || 1) : el.scrollTop;\n});\nconst observeWindowOffset = (instance, cb) => observeOffset(\n instance,\n cb,\n (win) => instance.options.horizontal ? win.scrollX : win.scrollY\n);\nconst measureElement = (element, entry, instance) => {\n if (instance.options.useCachedMeasurements) {\n const index = instance.indexFromElement(element);\n const key = instance.options.getItemKey(index);\n return instance.itemSizeCache.get(key) ?? instance.options.estimateSize(index);\n }\n if (entry == null ? void 0 : entry.borderBoxSize) {\n const box = entry.borderBoxSize[0];\n if (box) {\n const size = Math.round(\n box[instance.options.horizontal ? \"inlineSize\" : \"blockSize\"]\n );\n return size;\n }\n }\n if (!entry) {\n const index = instance.indexFromElement(element);\n const key = instance.options.getItemKey(index);\n const cachedSize = instance.itemSizeCache.get(key);\n if (cachedSize !== void 0) {\n return cachedSize;\n }\n }\n return element[instance.options.horizontal ? \"offsetWidth\" : \"offsetHeight\"];\n};\nconst scrollWithAdjustments = (offset, {\n adjustments = 0,\n behavior\n}, instance) => {\n var _a;\n const { scrollElement, options } = instance;\n const adjustedOffset = offset + adjustments;\n const isRtlElement = options.horizontal && options.isRtl && scrollElement !== null && \"ownerDocument\" in scrollElement;\n (_a = scrollElement == null ? void 0 : scrollElement.scrollTo) == null ? void 0 : _a.call(scrollElement, {\n [options.horizontal ? \"left\" : \"top\"]: isRtlElement ? -adjustedOffset : adjustedOffset,\n behavior\n });\n};\nconst windowScroll = scrollWithAdjustments;\nconst elementScroll = scrollWithAdjustments;\nconst initialScrollPhase = (behavior, atTarget) => behavior === \"smooth\" ? atTarget ? \"smoothLanded\" : \"smooth\" : \"instant\";\nconst isSmoothScroll = (state) => (state == null ? void 0 : state.phase) === \"smooth\" || (state == null ? void 0 : state.phase) === \"smoothLanded\";\nfunction isAppendWithTrim(prevCount, nextCount, getPreviousKey, getNextKey) {\n if (nextCount === 0) return false;\n const firstKey = getNextKey(0);\n const removedKeys = /* @__PURE__ */ new Set();\n let removedCount = 0;\n while (removedCount < prevCount) {\n const key = getPreviousKey(removedCount);\n if (key === firstKey) break;\n removedKeys.add(key);\n removedCount++;\n }\n const retainedCount = prevCount - removedCount;\n if (retainedCount === 0 || retainedCount >= nextCount) return false;\n for (let i = 0; i < retainedCount; i++) {\n if (getNextKey(i) !== getPreviousKey(removedCount + i)) return false;\n }\n for (let i = retainedCount; i < nextCount; i++) {\n if (removedKeys.has(getNextKey(i))) return false;\n }\n return true;\n}\nclass Virtualizer {\n constructor(opts) {\n this.unsubs = [];\n this.scrollElement = null;\n this.targetWindow = null;\n this.isScrolling = false;\n this.scrollState = null;\n this.measurementsCache = [];\n this._singleLaneMeasurements = null;\n this.itemSizeCache = /* @__PURE__ */ new Map();\n this.itemSizeCacheVersion = 0;\n this.laneAssignments = /* @__PURE__ */ new Map();\n this.pendingMin = null;\n this.prevLanes = void 0;\n this.lanesChangedFlag = false;\n this.lanesSettling = false;\n this.pendingScrollAnchor = null;\n this.scrollRect = null;\n this.scrollOffset = null;\n this.scrollDirection = null;\n this._holdOffset = 0;\n this._reportedOverscroll = false;\n this._iosGesture = new IosGesture({\n getWindow: () => this.targetWindow,\n now: () => this.now(),\n // The end of a fling can move less than a pixel per scroll event, so\n // events can stop for 150ms while the fling is still running (seen on\n // an iPhone, 27.0.1). A command waiting for it would then be written\n // into the fling and overridden. The element having moved since the\n // last event means it has not ended: wait again. Not while our own\n // write has yet to report: that moved it.\n tailStillMoving: () => {\n const state = this.scrollState;\n if ((state == null ? void 0 : state.phase) !== \"queued\" || this.pendingWrite !== null) {\n return false;\n }\n const now = this._readElementOffset();\n if (now === null || this._lastElementOffset === null || Math.abs(now - this._lastElementOffset) < 1) {\n return false;\n }\n this._lastElementOffset = now;\n state.samples = [...state.samples ?? [], { t: this.now(), offset: now }];\n return true;\n },\n onTailClosed: () => {\n const state = this.scrollState;\n if ((state == null ? void 0 : state.phase) === \"queued\" && flingCaught(state.samples ?? [])) {\n this.scrollState = null;\n }\n this._flushHoldIfReady(true);\n this._writeAwaitingCommand();\n this._retryClampedAdjustment();\n }\n });\n this._lastElementOffset = null;\n this.pendingWrite = null;\n this._clampedAdjustment = null;\n this.elementsCache = /* @__PURE__ */ new Map();\n this._resizeBatch = null;\n this.now = () => {\n var _a, _b, _c;\n return ((_c = (_b = (_a = this.targetWindow) == null ? void 0 : _a.performance) == null ? void 0 : _b.now) == null ? void 0 : _c.call(_b)) ?? Date.now();\n };\n this.observer = /* @__PURE__ */ (() => {\n let _ro = null;\n let _frames = null;\n let delivering = false;\n let observeQueued = false;\n const pendingObservations = /* @__PURE__ */ new Set();\n const get = () => {\n if (_ro) {\n return _ro;\n }\n const targetWindow = this.targetWindow;\n if (!targetWindow || !targetWindow.ResizeObserver) {\n return null;\n }\n const frames = _frames = createFrameQueue(targetWindow);\n return _ro = new targetWindow.ResizeObserver((entries) => {\n const run = () => {\n const batch = { sync: false };\n this._resizeBatch = batch;\n try {\n entries.forEach(measureEntry);\n } finally {\n this._resizeBatch = null;\n if (batch.notify) {\n this.notify(batch.sync);\n this._noteClampMax();\n this._flushHoldIfReady(true);\n this._retryClampedAdjustment();\n this.measureElement(null);\n }\n }\n };\n if (this.options.useAnimationFrameWithResizeObserver) {\n frames.schedule(run);\n } else {\n delivering = true;\n try {\n run();\n } finally {\n delivering = false;\n }\n }\n });\n };\n const measureEntry = (entry) => {\n const node = entry.target;\n const index = this.indexFromElement(node);\n if (!node.isConnected) {\n this.observer.unobserve(node);\n for (const [cacheKey, cachedNode] of this.elementsCache) {\n if (cachedNode === node) {\n this.elementsCache.delete(cacheKey);\n break;\n }\n }\n return;\n }\n if (!this.isIndexInRange(index)) return;\n if (this.shouldMeasureDuringScroll(index)) {\n this.resizeItem(index, this.options.measureElement(node, entry, this));\n }\n };\n return {\n disconnect: () => {\n var _a;\n (_a = get()) == null ? void 0 : _a.disconnect();\n _frames == null ? void 0 : _frames.cancel();\n pendingObservations.clear();\n observeQueued = false;\n _ro = null;\n _frames = null;\n },\n observe: (target) => {\n const observer = get();\n if (!observer) return;\n if (!delivering) {\n observer.observe(target, { box: \"border-box\" });\n return;\n }\n pendingObservations.add(target);\n if (!observeQueued) {\n observeQueued = true;\n _frames == null ? void 0 : _frames.schedule(() => {\n observeQueued = false;\n pendingObservations.forEach((node) => {\n if (node.isConnected) _ro == null ? void 0 : _ro.observe(node, { box: \"border-box\" });\n });\n pendingObservations.clear();\n });\n }\n },\n unobserve: (target) => {\n var _a;\n pendingObservations.delete(target);\n (_a = get()) == null ? void 0 : _a.unobserve(target);\n }\n };\n })();\n this.range = null;\n this.setOptions = (opts2) => {\n var _a;\n const merged = {\n debug: false,\n initialOffset: 0,\n overscan: 1,\n paddingStart: 0,\n paddingEnd: 0,\n scrollPaddingStart: 0,\n scrollPaddingEnd: 0,\n horizontal: false,\n getItemKey: defaultKeyExtractor,\n rangeExtractor: defaultRangeExtractor,\n onChange: () => {\n },\n measureElement,\n initialRect: { width: 0, height: 0 },\n scrollMargin: 0,\n gap: 0,\n indexAttribute: \"data-index\",\n initialMeasurementsCache: [],\n lanes: 1,\n anchorTo: \"start\",\n followOnAppend: false,\n scrollEndThreshold: 1,\n isScrollingResetDelay: 150,\n enabled: true,\n isRtl: false,\n useScrollendEvent: false,\n useAnimationFrameWithResizeObserver: false,\n laneAssignmentMode: \"estimate\",\n useCachedMeasurements: false\n };\n for (const key in opts2) {\n const v = opts2[key];\n if (v !== void 0) merged[key] = v;\n }\n const prevOptions = this.options;\n let anchor = null;\n let followOnAppend = null;\n let edgeKeysChanged = false;\n if (prevOptions !== void 0 && prevOptions.enabled && merged.enabled && merged.anchorTo === \"end\" && this.scrollElement !== null) {\n const prevCount = prevOptions.count;\n const nextCount = merged.count;\n const measurements = this.getMeasurements();\n const previousItems = ((_a = this._singleLaneMeasurements) == null ? void 0 : _a.items) ?? measurements;\n const getPreviousKey = (index) => getMeasurementKey(previousItems[index]);\n const prevFirstKey = prevCount > 0 ? getPreviousKey(0) : null;\n const prevLastKey = prevCount > 0 ? getPreviousKey(prevCount - 1) : null;\n const didCountChange = nextCount !== prevCount;\n const didEdgeKeysChange = didCountChange || prevCount > 0 && nextCount > 0 && (merged.getItemKey(0) !== prevFirstKey || merged.getItemKey(nextCount - 1) !== prevLastKey);\n if (didEdgeKeysChange) {\n edgeKeysChanged = true;\n const item = prevCount > 0 ? this.getVirtualItemForOffset(this.getScrollOffset()) ?? measurements[0] : null;\n if (item) {\n anchor = [item.key, this.getScrollOffset() - item.start];\n }\n const behavior = merged.followOnAppend === true ? \"auto\" : merged.followOnAppend || null;\n if (behavior && nextCount > 0 && this.isAtEnd(prevOptions.scrollEndThreshold) && (prevCount === 0 || merged.getItemKey(nextCount - 1) !== prevLastKey)) {\n if (nextCount > prevCount || isAppendWithTrim(\n prevCount,\n nextCount,\n getPreviousKey,\n merged.getItemKey\n )) {\n followOnAppend = behavior;\n }\n }\n }\n }\n this.options = merged;\n if (edgeKeysChanged) {\n this.pendingMin = 0;\n this.itemSizeCacheVersion++;\n }\n let anchorDelta = null;\n if (anchor && this.scrollOffset !== null && !this._awaitingCommandReadBack()) {\n const [anchorKey, anchorOffset] = anchor;\n const newMeasurements = this.getMeasurements();\n const { count, getItemKey } = this.options;\n let idx = 0;\n while (idx < count && getItemKey(idx) !== anchorKey) {\n idx++;\n }\n if (idx < count) {\n const anchorItem = newMeasurements[idx];\n if (anchorItem) {\n const newOffset = Math.max(0, anchorItem.start + anchorOffset);\n if (!followOnAppend && newOffset !== this.scrollOffset) {\n anchorDelta = newOffset - this.scrollOffset;\n this.scrollOffset = newOffset;\n }\n }\n }\n }\n if (followOnAppend) {\n this.pendingScrollAnchor = { kind: \"follow\", behavior: followOnAppend };\n } else if (anchorDelta !== null) {\n if (this._canWriteScroll()) {\n this.pendingScrollAnchor = { kind: \"anchor\", delta: anchorDelta };\n } else {\n this._holdOffset += anchorDelta;\n this._followOffsetTarget(anchorDelta);\n }\n }\n };\n this.notify = (sync) => {\n var _a, _b;\n (_b = (_a = this.options).onChange) == null ? void 0 : _b.call(_a, this, sync);\n };\n this.maybeNotify = memo(\n () => {\n this.calculateRange();\n return [\n this.isScrolling,\n this.range ? this.range.startIndex : null,\n this.range ? this.range.endIndex : null\n ];\n },\n (isScrolling) => {\n this.notify(isScrolling);\n },\n {\n key: process.env.NODE_ENV !== \"production\" && \"maybeNotify\",\n debug: () => this.options.debug,\n initialDeps: [\n this.isScrolling,\n this.range ? this.range.startIndex : null,\n this.range ? this.range.endIndex : null\n ]\n }\n );\n this.cleanup = () => {\n var _a;\n this.unsubs.filter(Boolean).forEach((d) => d());\n this.unsubs = [];\n this.observer.disconnect();\n if (this.rafId != null && this.targetWindow) {\n this.targetWindow.cancelAnimationFrame(this.rafId);\n this.rafId = null;\n }\n this.scrollState = null;\n (_a = this._momentumStop) == null ? void 0 : _a.restore();\n this._momentumStop = null;\n this.isScrolling = false;\n this.scrollDirection = null;\n this._holdOffset = 0;\n this._reportedOverscroll = false;\n this._clampedAdjustment = null;\n this.pendingWrite = null;\n this.scrollElement = null;\n this.targetWindow = null;\n };\n this._didMount = () => {\n return () => {\n this.cleanup();\n };\n };\n this._willUpdate = () => {\n var _a;\n const scrollElement = this.options.enabled ? this.options.getScrollElement() : null;\n if (this.scrollElement !== scrollElement) {\n this.cleanup();\n if (!scrollElement) {\n this.maybeNotify();\n return;\n }\n this.scrollElement = scrollElement;\n if (this.scrollElement && \"ownerDocument\" in this.scrollElement) {\n this.targetWindow = this.scrollElement.ownerDocument.defaultView;\n } else {\n this.targetWindow = ((_a = this.scrollElement) == null ? void 0 : _a.window) ?? null;\n }\n this.elementsCache.forEach((cached) => {\n this.observer.observe(cached);\n });\n this.unsubs.push(\n this.options.observeElementRect(this, (rect) => {\n this.scrollRect = rect;\n this.maybeNotify();\n })\n );\n this.unsubs.push(\n this.options.observeElementOffset(this, (offset, isScrolling) => {\n var _a2, _b, _c, _d;\n const elementMax = isScrolling ? this._elementMaxScrollOffset() : null;\n const wasOverscrolled = this._reportedOverscroll;\n this._reportedOverscroll = offset < 0 || elementMax !== null && offset > elementMax + 1;\n const elementOffset = offset;\n this._lastElementOffset = elementOffset;\n offset = this._toLayoutOffset(offset);\n const kind = this._classifyScrollEvent(\n offset,\n isScrolling,\n elementMax\n );\n if (kind === \"spurious\") return;\n if (kind === \"readBack\") {\n offset = this.pendingWrite.target;\n } else if (kind === \"clampedReadBack\" && ((_a2 = this.scrollState) == null ? void 0 : _a2.index) != null && // Not `elementMax`: an adapter can report the read-back at rest.\n offset < this.getMaxScrollOffset() - 1.5) {\n this.scrollState.lastTargetOffset = offset;\n } else if (externalRetiresCommand({\n kind,\n offset,\n command: this.scrollState,\n target: () => this.getScrollStateTarget(this.scrollState)\n })) {\n this.scrollState = null;\n }\n this.pendingWrite = null;\n if (this._clampedAdjustment !== null && Math.abs(offset - this._clampedAdjustment.maxAtWrite) >= 1.5) {\n this._clampedAdjustment = null;\n }\n const prevOffset = this.getScrollOffset();\n const prevDirection = this.scrollDirection;\n this.scrollDirection = isScrolling ? prevOffset === offset ? this.scrollDirection : prevOffset < offset ? \"forward\" : \"backward\" : null;\n this.scrollOffset = offset;\n this.isScrolling = isScrolling;\n const queued = this.scrollState;\n if ((queued == null ? void 0 : queued.phase) === \"queued\" && kind === \"external\" && isScrolling) {\n if (wasOverscrolled || this._reportedOverscroll) {\n queued.samples = [];\n } else {\n const t = this.now();\n queued.samples = [\n ...(queued.samples ?? []).filter(\n (sample) => t - sample.t <= 200\n ),\n { t, offset: elementOffset }\n ];\n if (prevDirection !== null && this.scrollDirection !== prevDirection || flingSpedUp(queued.samples)) {\n this.scrollState = null;\n }\n }\n }\n if (this._iosGesture.onScroll({\n isScrolling,\n ownReadBack: kind === \"readBack\",\n moved: offset !== prevOffset,\n // Neither our write's read-back nor a frame of our smooth\n // animation: the user or a fling moved it.\n external: kind === \"external\" && ((_b = this.scrollState) == null ? void 0 : _b.phase) !== \"smooth\" && ((_c = this.scrollState) == null ? void 0 : _c.phase) !== \"smoothFinishing\"\n }) && // The user scrolls: a command still waiting for the tail is\n // theirs to override, like a written one would be.\n ((_d = this.scrollState) == null ? void 0 : _d.phase) === \"queued\") {\n this.scrollState = null;\n }\n this._flushHoldIfReady(true);\n if (this.scrollState) {\n this.scheduleScrollReconcile();\n }\n this.maybeNotify();\n })\n );\n if (\"addEventListener\" in this.scrollElement) {\n this.unsubs.push(\n this._iosGesture.listen(this.scrollElement)\n );\n }\n this._scrollToOffset(this.getScrollOffset());\n }\n this._noteClampMax();\n const anchor = this.pendingScrollAnchor;\n this.pendingScrollAnchor = null;\n if (anchor && this.scrollElement && this.options.enabled) {\n if (anchor.kind === \"anchor\") {\n if (!this._canWriteScroll()) {\n this._holdOffset += anchor.delta;\n this._followOffsetTarget(anchor.delta);\n this.notify(false);\n } else if (isSmoothScroll(this.scrollState) && !approxEqual(\n this.getScrollOffset() - anchor.delta,\n this.scrollState.lastTargetOffset\n )) ;\n else {\n this._followOffsetTarget(anchor.delta);\n this._scrollToOffset(this.getScrollOffset());\n }\n } else {\n this.scrollToEnd({ behavior: anchor.behavior });\n }\n }\n this._flushHoldIfReady(false);\n this._retryClampedAdjustment();\n };\n this._classifyScrollEvent = (offset, isScrolling, elementMax) => {\n var _a;\n return classifyScrollEvent({\n offset,\n isScrolling,\n elementMax,\n holdOffset: this._holdOffset,\n scrollOffset: this.scrollOffset,\n pendingWrite: this.pendingWrite,\n clampedMaxAtWrite: ((_a = this._clampedAdjustment) == null ? void 0 : _a.maxAtWrite) ?? null\n });\n };\n this._retryClampedAdjustment = () => {\n if (this._clampedAdjustment === null || !this.scrollElement || !this.options.enabled || !this._canWriteScroll()) {\n return;\n }\n const { target, maxAtWrite } = this._clampedAdjustment;\n const max = this.getMaxScrollOffset();\n if (max > maxAtWrite + 0.5) {\n this._clampedAdjustment = target > max + 0.5 ? { target, maxAtWrite: max } : null;\n this._scrollToOffset(target);\n }\n };\n this._writeAwaitingCommand = () => {\n const state = this.scrollState;\n if (state === null || state.phase !== \"queued\") return;\n const { behavior } = state;\n this.getMeasurements();\n const offset = this.getScrollStateTarget(state);\n state.lastTargetOffset = offset;\n this._clampedAdjustment = null;\n state.phase = initialScrollPhase(\n behavior,\n state.index != null && approxEqual(offset, this.getScrollOffset())\n );\n this._scrollToOffset(offset, { behavior });\n this.scheduleScrollReconcile();\n };\n this._readElementOffset = () => {\n const el = this.scrollElement;\n if (el == null) return null;\n const { horizontal, isRtl } = this.options;\n if (typeof el.scrollTop === \"number\") {\n return horizontal ? el.scrollLeft * (isRtl && -1 || 1) : el.scrollTop;\n }\n if (typeof el.scrollY === \"number\") {\n return horizontal ? el.scrollX : el.scrollY;\n }\n return null;\n };\n this._canWriteScroll = () => !(isIOSWebKit() && this._iosGesture.inMotion()) && !this._reportedOverscroll;\n this._flushHoldIfReady = (sync) => {\n var _a;\n if (this._holdOffset === 0) return;\n if (!this.scrollElement || !this.options.enabled) return;\n if (!this._canWriteScroll()) return;\n if (((_a = this.scrollState) == null ? void 0 : _a.phase) === \"smooth\") return;\n this._holdOffset = 0;\n if (this.scrollOffset !== null && this.scrollOffset < 0) {\n this.scrollOffset = 0;\n }\n this.notify(sync);\n const target = this.getCommandWrittenOffset() ?? this.getScrollOffset();\n this._clampedAdjustment = this._clampedBy(target);\n this._scrollToOffset(target);\n };\n this.rafId = null;\n this.getSize = () => {\n if (!this.options.enabled) {\n this.scrollRect = null;\n return 0;\n }\n this.scrollRect = this.scrollRect ?? this.options.initialRect;\n return this.scrollRect[this.options.horizontal ? \"width\" : \"height\"];\n };\n this.getScrollOffset = () => {\n if (!this.options.enabled) {\n this.scrollOffset = null;\n return 0;\n }\n this.scrollOffset = this.scrollOffset ?? (typeof this.options.initialOffset === \"function\" ? this.options.initialOffset() : this.options.initialOffset);\n return this.scrollOffset;\n };\n this.getMeasurementOptions = memo(\n () => [\n this.options.count,\n this.options.paddingStart,\n this.options.scrollMargin,\n this.options.getItemKey,\n this.options.enabled,\n this.options.lanes,\n this.options.laneAssignmentMode,\n this.options.gap\n ],\n (count, paddingStart, scrollMargin, getItemKey, enabled, lanes, laneAssignmentMode, gap) => {\n const lanesChanged = this.prevLanes !== void 0 && this.prevLanes !== lanes;\n if (lanesChanged) {\n this.lanesChangedFlag = true;\n }\n this.prevLanes = lanes;\n this.pendingMin = null;\n return {\n count,\n paddingStart,\n scrollMargin,\n getItemKey,\n enabled,\n lanes,\n laneAssignmentMode,\n gap\n };\n },\n {\n key: false\n }\n );\n this.isIndexInRange = (index) => index >= 0 && index < this.options.count;\n this.getMeasurements = memo(\n () => [this.getMeasurementOptions(), this.itemSizeCacheVersion],\n ({\n count,\n paddingStart,\n scrollMargin,\n getItemKey,\n enabled,\n lanes,\n laneAssignmentMode,\n gap\n }, _itemSizeCacheVersion) => {\n var _a;\n const itemSizeCache = this.itemSizeCache;\n if (!enabled) {\n this.measurementsCache = [];\n this._singleLaneMeasurements = null;\n this.itemSizeCache.clear();\n this.laneAssignments.clear();\n return [];\n }\n if (this.laneAssignments.size > count) {\n for (const index of this.laneAssignments.keys()) {\n if (index >= count) {\n this.laneAssignments.delete(index);\n }\n }\n }\n if (this.lanesChangedFlag) {\n this.lanesChangedFlag = false;\n this.lanesSettling = true;\n this.measurementsCache = [];\n this._singleLaneMeasurements = null;\n this.itemSizeCache.clear();\n this.laneAssignments.clear();\n this.pendingMin = null;\n }\n if (this.measurementsCache.length === 0 && !this.lanesSettling) {\n this.measurementsCache = this.options.initialMeasurementsCache;\n this.measurementsCache.forEach((item) => {\n this.itemSizeCache.set(item.key, item.size);\n });\n }\n const min = this.lanesSettling ? 0 : this.pendingMin ?? 0;\n this.pendingMin = null;\n if (this.lanesSettling && this.measurementsCache.length === count) {\n this.lanesSettling = false;\n }\n if (lanes === 1) {\n const need = count * 2;\n let flat = (_a = this._singleLaneMeasurements) == null ? void 0 : _a.flat;\n if (!flat || flat.length < need) {\n const next = new Float64Array(need);\n if (flat && min > 0) next.set(flat.subarray(0, min * 2));\n flat = next;\n }\n const items = min === 0 ? new Array(count) : this._singleLaneMeasurements.items.slice();\n let runningStart;\n if (min === 0) {\n runningStart = paddingStart + scrollMargin;\n } else {\n const prevIdx = min - 1;\n runningStart = flat[prevIdx * 2] + flat[prevIdx * 2 + 1] + gap;\n }\n for (let i = min; i < count; i++) {\n const key = getItemKey(i);\n items[i] = key;\n const measuredSize = itemSizeCache.get(key);\n const size = typeof measuredSize === \"number\" ? measuredSize : this.options.estimateSize(i);\n flat[i * 2] = runningStart;\n flat[i * 2 + 1] = size;\n runningStart += size + gap;\n }\n this._singleLaneMeasurements = { flat, items };\n const view = createLazyMeasurementsView(items, flat);\n this.measurementsCache = view;\n return view;\n }\n const measurements = this.measurementsCache.slice(0, min);\n const laneLastIndex = new Array(lanes).fill(\n void 0\n );\n const laneEnds = new Float64Array(lanes);\n let filledLanes = 0;\n for (let m = 0; m < min; m++) {\n const item = measurements[m];\n if (item) {\n if (laneLastIndex[item.lane] === void 0) filledLanes++;\n laneLastIndex[item.lane] = m;\n laneEnds[item.lane] = item.end;\n }\n }\n for (let i = min; i < count; i++) {\n const key = getItemKey(i);\n const cachedLane = this.laneAssignments.get(i);\n let lane;\n let start;\n const shouldCacheLane = laneAssignmentMode === \"estimate\" || itemSizeCache.has(key);\n if (cachedLane !== void 0 && this.options.lanes > 1) {\n lane = cachedLane;\n const prevIndex = laneLastIndex[lane];\n const prevInLane = prevIndex !== void 0 ? measurements[prevIndex] : void 0;\n start = prevInLane ? prevInLane.end + gap : paddingStart + scrollMargin;\n } else if (filledLanes === lanes) {\n let bestLane = 0;\n let bestEnd = laneEnds[0];\n let bestIdx = laneLastIndex[0];\n for (let l = 1; l < lanes; l++) {\n const e = laneEnds[l];\n if (e < bestEnd || e === bestEnd && laneLastIndex[l] < bestIdx) {\n bestLane = l;\n bestEnd = e;\n bestIdx = laneLastIndex[l];\n }\n }\n lane = bestLane;\n start = bestEnd + gap;\n if (shouldCacheLane) {\n this.laneAssignments.set(i, lane);\n }\n } else {\n lane = i % this.options.lanes;\n start = paddingStart + scrollMargin;\n if (shouldCacheLane) {\n this.laneAssignments.set(i, lane);\n }\n }\n const measuredSize = itemSizeCache.get(key);\n const size = typeof measuredSize === \"number\" ? measuredSize : this.options.estimateSize(i);\n const end = start + size;\n measurements[i] = {\n index: i,\n start,\n size,\n end,\n key,\n lane\n };\n if (laneLastIndex[lane] === void 0) filledLanes++;\n laneLastIndex[lane] = i;\n laneEnds[lane] = end;\n }\n this.measurementsCache = measurements;\n return measurements;\n },\n {\n key: process.env.NODE_ENV !== \"production\" && \"getMeasurements\",\n debug: () => this.options.debug\n }\n );\n this.calculateRange = memo(\n () => [\n this.getMeasurements(),\n this.getSize(),\n this.getScrollOffset(),\n this.options.lanes,\n // scrollOffset is measured in the scroll element and the layout total\n // from the list start, so the list ends scrollMargin further down.\n this._getLayoutTotalSize() + this.options.scrollMargin\n ],\n (measurements, outerSize, scrollOffset, lanes, listEnd) => {\n if (measurements.length === 0 || outerSize === 0) {\n this.range = null;\n return null;\n }\n const maxScrollOffset = Math.max(listEnd - outerSize, 0);\n this.range = calculateRangeImpl(\n measurements,\n outerSize,\n Math.min(scrollOffset, maxScrollOffset),\n lanes,\n // Pass the typed array so binary search + forward-walk can read\n // start/end directly from Float64Array, skipping the Proxy traps.\n lanes === 1 && this._singleLaneMeasurements !== null ? this._singleLaneMeasurements.flat : null\n );\n return this.range;\n },\n {\n key: process.env.NODE_ENV !== \"production\" && \"calculateRange\",\n debug: () => this.options.debug\n }\n );\n this.getVirtualIndexes = memo(\n () => {\n let startIndex = null;\n let endIndex = null;\n const range = this.calculateRange();\n if (range) {\n startIndex = range.startIndex;\n endIndex = range.endIndex;\n }\n this.maybeNotify.updateDeps([this.isScrolling, startIndex, endIndex]);\n return [\n this.options.rangeExtractor,\n this.options.overscan,\n this.options.count,\n startIndex,\n endIndex,\n this.options.lanes\n ];\n },\n (rangeExtractor, overscan, count, startIndex, endIndex, lanes) => {\n return startIndex === null || endIndex === null ? [] : rangeExtractor({\n startIndex,\n endIndex,\n overscan,\n count,\n lanes\n });\n },\n {\n key: process.env.NODE_ENV !== \"production\" && \"getVirtualIndexes\",\n debug: () => this.options.debug\n }\n );\n this.indexFromElement = (node) => {\n const attributeName = this.options.indexAttribute;\n const indexStr = node.getAttribute(attributeName);\n if (!indexStr) {\n console.warn(\n `Missing attribute name '${attributeName}={index}' on measured element.`\n );\n return -1;\n }\n return parseInt(indexStr, 10);\n };\n this.shouldMeasureDuringScroll = (index) => {\n var _a;\n if (!isSmoothScroll(this.scrollState)) {\n return true;\n }\n const scrollIndex = this.scrollState.index ?? ((_a = this.getVirtualItemForOffset(this.scrollState.lastTargetOffset)) == null ? void 0 : _a.index);\n if (scrollIndex !== void 0 && this.range) {\n const bufferSize = Math.max(\n this.options.overscan,\n Math.ceil((this.range.endIndex - this.range.startIndex) / 2)\n );\n const minIndex = Math.max(0, scrollIndex - bufferSize);\n const maxIndex = Math.min(\n this.options.count - 1,\n scrollIndex + bufferSize\n );\n return index >= minIndex && index <= maxIndex;\n }\n return true;\n };\n this.measureElement = (node) => {\n if (!node) {\n this.elementsCache.forEach((cached, key2) => {\n if (!cached.isConnected) {\n this.observer.unobserve(cached);\n this.elementsCache.delete(key2);\n }\n });\n return;\n }\n const index = this.indexFromElement(node);\n if (!this.isIndexInRange(index)) return;\n const key = this.options.getItemKey(index);\n const prevNode = this.elementsCache.get(key);\n if (prevNode !== node) {\n if (prevNode) {\n this.observer.unobserve(prevNode);\n }\n this.observer.observe(node);\n this.elementsCache.set(key, node);\n }\n if (node.isConnected && (!this.isScrolling || this.scrollState) && this.shouldMeasureDuringScroll(index)) {\n this.resizeItem(index, this.options.measureElement(node, void 0, this));\n }\n };\n this.resizeItem = (index, size) => {\n var _a, _b, _c;\n if (!this.isIndexInRange(index)) return;\n if ((_a = this._resizeBatch) == null ? void 0 : _a.sync) this.getMeasurements();\n let cachedSize;\n let itemStart;\n let key;\n const flat = (_b = this._singleLaneMeasurements) == null ? void 0 : _b.flat;\n if (this.options.lanes === 1 && flat != null) {\n key = this.options.getItemKey(index);\n itemStart = flat[index * 2];\n cachedSize = flat[index * 2 + 1];\n } else {\n const item = this.measurementsCache[index];\n if (!item) return;\n key = item.key;\n itemStart = item.start;\n cachedSize = item.size;\n }\n const itemSize = this.itemSizeCache.get(key) ?? cachedSize;\n const delta = size - itemSize;\n if (delta !== 0) {\n const wasAtEnd = this.options.anchorTo === \"end\" && !isSmoothScroll(this.scrollState) && this.getVirtualDistanceFromEnd() <= this.options.scrollEndThreshold;\n const prevTotalSize = wasAtEnd ? this._getLayoutTotalSize() : 0;\n const scrollOffset = this.getScrollOffset();\n const isFirstMeasure = !this.itemSizeCache.has(key);\n const defaultShouldAdjust = isFirstMeasure ? (\n // First measurement: compensate any item whose top sits above the\n // fold — the estimate→actual delta must be corrected regardless of\n // scroll direction, since the whole estimated block was above it.\n itemStart < scrollOffset\n ) : (\n // Re-measurement: only compensate an item that is ENTIRELY above the\n // fold. An item that merely *spans* the fold (top above, bottom\n // below — e.g. a streaming chat message growing at its bottom)\n // changes size *below* the anchor point, so shifting scrollTop by the\n // delta would drag the viewport downward on every growth (#1218).\n // Also skip during backward scroll to avoid the \"items jump while\n // scrolling up\" cascade.\n itemStart + itemSize <= scrollOffset && this.scrollDirection !== \"backward\"\n );\n const shouldAdjustScroll = !isSmoothScroll(this.scrollState) && (this.shouldAdjustScrollPositionOnItemSizeChange !== void 0 ? this.shouldAdjustScrollPositionOnItemSizeChange(\n // The callback expects a VirtualItem; build one lazily only\n // when the consumer actually supplied a custom predicate.\n this.measurementsCache[index] ?? {\n index,\n key,\n start: itemStart,\n size: cachedSize,\n end: itemStart + cachedSize,\n lane: 0\n },\n delta,\n this\n ) : defaultShouldAdjust);\n if (this.pendingMin === null || index < this.pendingMin) {\n this.pendingMin = index;\n }\n this.itemSizeCache.set(key, size);\n this.itemSizeCacheVersion++;\n let adjustedSync = false;\n if (!this._awaitingCommandReadBack()) {\n if (wasAtEnd) {\n adjustedSync = this.applyScrollAdjustment(\n this._getLayoutTotalSize() - prevTotalSize\n );\n } else if (shouldAdjustScroll) {\n adjustedSync = this.applyScrollAdjustment(delta);\n }\n }\n if (this._resizeBatch) {\n this._resizeBatch.notify = true;\n (_c = this._resizeBatch).sync || (_c.sync = adjustedSync);\n return;\n }\n this.notify(adjustedSync);\n this._noteClampMax();\n this._flushHoldIfReady(true);\n this._retryClampedAdjustment();\n }\n };\n this.getVirtualItems = memo(\n () => [this.getVirtualIndexes(), this.getMeasurements(), this._holdOffset],\n (indexes, measurements, hold) => {\n const virtualItems = [];\n for (let k = 0, len = indexes.length; k < len; k++) {\n const i = indexes[k];\n const measurement = measurements[i];\n virtualItems.push(\n hold === 0 ? measurement : {\n ...measurement,\n start: measurement.start - hold,\n end: measurement.end - hold\n }\n );\n }\n return virtualItems;\n },\n {\n key: process.env.NODE_ENV !== \"production\" && \"getVirtualItems\",\n debug: () => this.options.debug\n }\n );\n this.getVirtualItemForOffset = (offset) => {\n var _a;\n const measurements = this.getMeasurements();\n if (measurements.length === 0) {\n return void 0;\n }\n const flat = (_a = this._singleLaneMeasurements) == null ? void 0 : _a.flat;\n const useFlat = this.options.lanes === 1 && flat != null;\n const idx = findNearestBinarySearch(\n 0,\n measurements.length - 1,\n useFlat ? (i) => flat[i * 2] : (i) => notUndefined(measurements[i]).start,\n offset\n );\n return notUndefined(measurements[idx]);\n };\n this._noteClampMax = () => {\n if (!this._awaitingCommandReadBack()) return;\n const elementMax = this._elementMaxScrollOffset();\n if (elementMax === null) return;\n const write = this.pendingWrite;\n const max = Math.max(elementMax, 0) + this._holdOffset;\n if (max >= write.target) return;\n const lowMaxes = write.lowMaxes ?? (write.lowMaxes = []);\n if (lowMaxes[lowMaxes.length - 1] !== max) lowMaxes.push(max);\n };\n this.getMaxScrollOffset = () => (this._elementMaxScrollOffset() ?? 0) + this._holdOffset;\n this._toLayoutOffset = (elementOffset) => {\n var _a;\n let offset = elementOffset + this._holdOffset;\n if (((_a = this.pendingScrollAnchor) == null ? void 0 : _a.kind) === \"anchor\") {\n offset += this.pendingScrollAnchor.delta;\n }\n return offset;\n };\n this._elementMaxScrollOffset = () => {\n const el = this.scrollElement;\n if (el === null) return null;\n if (\"scrollHeight\" in el) {\n return this.options.horizontal ? el.scrollWidth - el.clientWidth : el.scrollHeight - el.clientHeight;\n }\n if (\"document\" in el) {\n const doc = el.document.documentElement;\n return this.options.horizontal ? doc.scrollWidth - el.innerWidth : doc.scrollHeight - el.innerHeight;\n }\n return null;\n };\n this._momentumStop = null;\n this._stopMomentum = (done) => {\n const el = this.scrollElement;\n const win = this.targetWindow;\n if (el === null || win === null) return;\n const scroller = \"document\" in el ? el.document.scrollingElement : el;\n if (!(scroller == null ? void 0 : scroller.style)) return;\n if (this._momentumStop) {\n this._momentumStop.done = done;\n return;\n }\n const { style } = scroller;\n const property = this.options.horizontal ? \"overflow-x\" : \"overflow-y\";\n const value = style.getPropertyValue(property);\n const priority = style.getPropertyPriority(property);\n const crossSize = () => this.options.horizontal ? scroller.clientHeight : scroller.clientWidth;\n const crossSizeBefore = crossSize();\n style.setProperty(property, \"hidden\", \"important\");\n if (crossSize() !== crossSizeBefore) {\n style.setProperty(property, value, priority);\n return;\n }\n const stop = {\n // False when the app replaced the hidden value: the fling may not\n // have stopped.\n restore: () => {\n if (style.getPropertyValue(property) !== \"hidden\" || style.getPropertyPriority(property) !== \"important\") {\n return false;\n }\n style.setProperty(property, value, priority);\n return true;\n },\n done\n };\n this._momentumStop = stop;\n win.requestAnimationFrame(\n () => win.requestAnimationFrame(() => {\n if (this._momentumStop !== stop) return;\n this._momentumStop = null;\n if (stop.restore()) stop.done();\n })\n );\n };\n this._clampedBy = (target) => {\n const elementMax = this._elementMaxScrollOffset();\n if (elementMax === null) return null;\n const maxAtWrite = elementMax + this._holdOffset;\n return target > maxAtWrite + 0.5 ? { target, maxAtWrite } : null;\n };\n this.getVirtualDistanceFromEnd = () => {\n return Math.max(\n this._getLayoutTotalSize() + this.options.scrollMargin - this.getSize() - this.getScrollOffset(),\n 0\n );\n };\n this.getDistanceFromEnd = () => {\n return Math.max(this.getMaxScrollOffset() - this.getScrollOffset(), 0);\n };\n this.isAtEnd = (threshold = this.options.scrollEndThreshold) => {\n return this.getDistanceFromEnd() <= threshold;\n };\n this.getOffsetForAlignment = (toOffset, align, itemSize = 0) => {\n if (!this.scrollElement) return 0;\n const size = this.getSize();\n const scrollOffset = this.getScrollOffset();\n if (align === \"auto\") {\n align = toOffset >= scrollOffset + size ? \"end\" : \"start\";\n }\n if (align === \"center\") {\n toOffset += (itemSize - size) / 2;\n } else if (align === \"end\") {\n toOffset -= size;\n }\n const maxOffset = this.getMaxScrollOffset();\n return Math.max(Math.min(maxOffset, toOffset), 0);\n };\n this.getOffsetForIndex = (index, align = \"auto\") => {\n index = Math.max(0, Math.min(index, this.options.count - 1));\n const size = this.getSize();\n const scrollOffset = this.getScrollOffset();\n const item = this.getMeasurements()[index];\n if (!item) return;\n if (align === \"auto\") {\n if (item.end >= scrollOffset + size - this.options.scrollPaddingEnd) {\n align = \"end\";\n } else if (item.start <= scrollOffset + this.options.scrollPaddingStart) {\n align = \"start\";\n } else {\n return [scrollOffset, align];\n }\n }\n if (align === \"end\" && index === this.options.count - 1) {\n const maxOffset = this.getMaxScrollOffset();\n const toOffset2 = maxOffset - this.options.paddingEnd + this.options.scrollPaddingEnd;\n return [Math.max(Math.min(toOffset2, maxOffset), 0), align];\n }\n const toOffset = align === \"end\" ? item.end + this.options.scrollPaddingEnd : item.start - this.options.scrollPaddingStart;\n return [\n this.getOffsetForAlignment(toOffset, align, item.size),\n align\n ];\n };\n this.scrollToOffset = (toOffset, { align = \"start\", behavior = \"auto\" } = {}) => {\n this._startScroll(\n { index: null, align },\n this.getOffsetForAlignment(toOffset, align),\n behavior,\n \"absolute\"\n );\n };\n this.scrollToIndex = (index, {\n align: initialAlign = \"auto\",\n behavior = \"auto\"\n } = {}) => {\n index = Math.max(0, Math.min(index, this.options.count - 1));\n const offsetInfo = this.getOffsetForIndex(index, initialAlign);\n if (!offsetInfo) return;\n const [offset, align] = offsetInfo;\n this._startScroll({ index, align }, offset, behavior, \"absolute\");\n };\n this.scrollBy = (delta, { behavior = \"auto\" } = {}) => {\n const offset = this.getOffsetForAlignment(\n (this.getCommandWrittenOffset() ?? this.getScrollOffset()) + delta,\n \"start\"\n );\n this._startScroll(\n { index: null, align: \"start\" },\n offset,\n behavior,\n \"relative\"\n );\n };\n this.scrollToEnd = ({ behavior = \"auto\" } = {}) => {\n if (this.options.count > 0) {\n this._startScroll(\n { index: this.options.count - 1, align: \"end\", toEnd: true },\n Math.max(this.getMaxScrollOffset(), 0),\n behavior,\n \"absolute\"\n );\n return;\n }\n this.scrollToOffset(Math.max(this.getTotalSize() - this.getSize(), 0), {\n behavior\n });\n };\n this.cancelScroll = () => {\n if (this.rafId != null && this.targetWindow) {\n this.targetWindow.cancelAnimationFrame(this.rafId);\n this.rafId = null;\n }\n this.scrollState = null;\n };\n this.getTotalSize = () => Math.max(this._getLayoutTotalSize() - this._holdOffset, 0);\n this._getLayoutTotalSize = () => {\n var _a, _b;\n const measurements = this.getMeasurements();\n let end;\n if (measurements.length === 0) {\n end = this.options.paddingStart;\n } else if (this.options.lanes === 1) {\n const lastIdx = measurements.length - 1;\n const flat = (_a = this._singleLaneMeasurements) == null ? void 0 : _a.flat;\n if (flat != null) {\n end = flat[lastIdx * 2] + flat[lastIdx * 2 + 1];\n } else {\n end = ((_b = measurements[lastIdx]) == null ? void 0 : _b.end) ?? 0;\n }\n } else {\n const endByLane = Array(this.options.lanes).fill(null);\n let endIndex = measurements.length - 1;\n while (endIndex >= 0 && endByLane.some((val) => val === null)) {\n const item = measurements[endIndex];\n if (endByLane[item.lane] === null) {\n endByLane[item.lane] = item.end;\n }\n endIndex--;\n }\n end = Math.max(...endByLane.filter((val) => val !== null));\n }\n return Math.max(\n end - this.options.scrollMargin + this.options.paddingEnd,\n 0\n );\n };\n this.takeSnapshot = () => {\n const snapshot = [];\n if (this.itemSizeCache.size === 0) return snapshot;\n const m = this.getMeasurements();\n for (const item of m) {\n if (item && this.itemSizeCache.has(item.key)) {\n snapshot.push({\n index: item.index,\n key: item.key,\n start: item.start,\n size: item.size,\n end: item.end,\n lane: item.lane\n });\n }\n }\n return snapshot;\n };\n this._scrollToOffset = (offset, {\n adjustments,\n behavior\n } = {}) => {\n const write = {\n target: offset + (adjustments ?? 0),\n smooth: behavior === \"smooth\"\n };\n this.pendingWrite = write;\n this.options.scrollToFn(\n offset - this._holdOffset,\n { behavior, adjustments },\n this\n );\n return write;\n };\n this.getCommandWrittenOffset = () => this.scrollState !== null && this.pendingWrite !== null && !this.pendingWrite.smooth ? this.pendingWrite.target : null;\n this._awaitingCommandReadBack = () => {\n const writtenOffset = this.getCommandWrittenOffset();\n return !(isIOSWebKit() && this._iosGesture.dragging()) && writtenOffset !== null && !approxEqual(writtenOffset, this.getScrollOffset());\n };\n this._followOffsetTarget = (delta) => {\n if (this.scrollState !== null && this.scrollState.index == null) {\n this.scrollState.lastTargetOffset += delta;\n }\n };\n this.measure = () => {\n this.pendingMin = null;\n this.itemSizeCache.clear();\n this.laneAssignments.clear();\n this.itemSizeCacheVersion++;\n this.notify(false);\n };\n this.setOptions(opts);\n }\n /**\n * @deprecated Always 0: a scroll correction is folded into `scrollOffset`\n * at once, so there is never an outstanding adjustment to add to it. Read\n * `scrollOffset` alone.\n */\n get scrollAdjustments() {\n return 0;\n }\n // Returns `true` when it performed a synchronous `scrollTop` write this\n // tick, `false` when the delta was zero or the write was deferred (iOS).\n // `resizeItem` uses that to decide whether the follow-up `notify` must be\n // synchronous so the grown transforms commit in the same paint (#1227).\n applyScrollAdjustment(delta, behavior) {\n if (delta === 0) return false;\n if (process.env.NODE_ENV !== \"production\" && this.options.debug) {\n console.info(\"correction\", delta);\n }\n this._followOffsetTarget(delta);\n if (!this._canWriteScroll()) {\n this._holdOffset += delta;\n if (this.scrollOffset !== null) this.scrollOffset += delta;\n return true;\n } else {\n const offset = this.getScrollOffset();\n this._clampedAdjustment = this._clampedBy(offset + delta);\n const write = this._scrollToOffset(offset, {\n adjustments: delta,\n behavior\n });\n if (this.scrollOffset !== null) {\n if (this.pendingWrite === write) this.scrollOffset += delta;\n if (this.scrollOffset < 0) this.scrollOffset = 0;\n }\n return true;\n }\n }\n scheduleScrollReconcile() {\n if (!this.targetWindow) {\n this.scrollState = null;\n return;\n }\n if (this.rafId != null) return;\n this.rafId = this.targetWindow.requestAnimationFrame(() => {\n this.rafId = null;\n this.reconcileScroll();\n });\n }\n getScrollStateTarget(state) {\n const offsetInfo = state.toEnd ? [Math.max(this.getMaxScrollOffset(), 0)] : state.index != null ? this.getOffsetForIndex(state.index, state.align) : void 0;\n return offsetInfo ? offsetInfo[0] : state.lastTargetOffset;\n }\n reconcileScroll() {\n if (!this.scrollState) return;\n const el = this.scrollElement;\n if (!el) return;\n const MAX_RECONCILE_MS = 5e3;\n if (this.now() - this.scrollState.startedAt > MAX_RECONCILE_MS) {\n this.scrollState = null;\n return;\n }\n if (this.scrollState.phase === \"queued\") {\n this.scheduleScrollReconcile();\n return;\n }\n this.getMeasurements();\n const targetOffset = this.getScrollStateTarget(this.scrollState);\n const STABLE_FRAMES = this.scrollState.index == null ? 1 : this.options.useAnimationFrameWithResizeObserver ? 3 : 2;\n const targetChanged = targetOffset !== this.scrollState.lastTargetOffset;\n if (!targetChanged && approxEqual(targetOffset, this.getScrollOffset())) {\n if (this.scrollState.phase === \"smooth\") {\n this.scrollState.phase = \"smoothLanded\";\n } else if (this.scrollState.phase === \"smoothFinishing\") {\n this.scrollState.phase = \"instant\";\n }\n this.scrollState.stableFrames++;\n if (this.scrollState.stableFrames >= STABLE_FRAMES) {\n if (this.getScrollOffset() !== targetOffset) {\n this._scrollToOffset(targetOffset, { behavior: \"auto\" });\n }\n this.scrollState = null;\n return;\n }\n } else {\n this.scrollState.stableFrames = 0;\n if (targetChanged) {\n const viewport = this.getSize() || 600;\n const distance = Math.abs(targetOffset - this.getScrollOffset());\n const keepSmooth = isSmoothScroll(this.scrollState) && distance > viewport;\n this.scrollState.lastTargetOffset = targetOffset;\n if (keepSmooth) {\n this.scrollState.phase = \"smooth\";\n } else if (this.scrollState.phase === \"smooth\") {\n this.scrollState.phase = \"smoothFinishing\";\n } else if (this.scrollState.phase === \"smoothLanded\") {\n this.scrollState.phase = \"instant\";\n }\n this._scrollToOffset(targetOffset, {\n behavior: keepSmooth ? \"smooth\" : \"auto\"\n });\n }\n }\n this.scheduleScrollReconcile();\n }\n // Every scroll command starts here: it becomes the in-flight command,\n // writes its first target and leaves reconcile to retarget and retire it.\n //\n // Targets are layout offsets. A held correction is not dropped by a\n // command: the write lands the element `_holdOffset` short of the target,\n // under the rows exposed shifted by the same amount, and the flush moves\n // both together once a write is possible.\n //\n // An index or end target that is already at its offset starts a smooth\n // scroll as landed; an offset target never does, so its first scroll\n // event is read as the user's (see the scroll handler in `_willUpdate`).\n _startScroll(target, offset, behavior, kind) {\n this.pendingScrollAnchor = null;\n this._clampedAdjustment = null;\n const tail = this._iosGesture.tail();\n if (kind === \"absolute\" && tail !== null) {\n if (tail === \"fling\" && momentumOverridesWrites()) {\n this._stopMomentum(() => {\n const state = this.scrollState;\n if ((state == null ? void 0 : state.phase) !== \"queued\" || // A finger came down: it owns the scroll until it lifts.\n this._iosGesture.tail() !== \"fling\" || // In a bounce WebKit can drop the write (#1287): the tail\n // decides, as without the stop. (Not `flingCaught`: our stop\n // also ends the fling at speed, so a slow frame would read as\n // a catch and the tail would drop the command.)\n this._reportedOverscroll) {\n return;\n }\n this._iosGesture.end();\n this._flushHoldIfReady(true);\n this._writeAwaitingCommand();\n });\n this.scrollState = {\n ...target,\n startedAt: this.now(),\n lastTargetOffset: offset,\n stableFrames: 0,\n phase: \"queued\",\n behavior,\n samples: []\n };\n this.scheduleScrollReconcile();\n return;\n }\n this._iosGesture.end();\n }\n this.scrollState = {\n ...target,\n startedAt: this.now(),\n lastTargetOffset: offset,\n stableFrames: 0,\n behavior,\n phase: initialScrollPhase(\n behavior,\n target.index != null && approxEqual(offset, this.getScrollOffset())\n )\n };\n this._scrollToOffset(offset, { behavior });\n this.scheduleScrollReconcile();\n }\n}\nconst findNearestBinarySearch = (low, high, getCurrentValue, value) => {\n while (low <= high) {\n const middle = (low + high) / 2 | 0;\n const currentValue = getCurrentValue(middle);\n if (currentValue < value) {\n low = middle + 1;\n } else if (currentValue > value) {\n high = middle - 1;\n } else {\n return middle;\n }\n }\n if (low > 0) {\n return low - 1;\n } else {\n return 0;\n }\n};\nfunction findNearestBinarySearchFlat(flat, high, value) {\n let low = 0;\n while (low <= high) {\n const middle = (low + high) / 2 | 0;\n const currentValue = flat[middle * 2];\n if (currentValue < value) {\n low = middle + 1;\n } else if (currentValue > value) {\n high = middle - 1;\n } else {\n return middle;\n }\n }\n return low > 0 ? low - 1 : 0;\n}\nfunction calculateRangeImpl(measurements, outerSize, scrollOffset, lanes, flat) {\n const lastIndex = measurements.length - 1;\n if (measurements.length <= lanes) {\n return { startIndex: 0, endIndex: lastIndex };\n }\n if (lanes === 1 && flat !== null) {\n const startIndex2 = findNearestBinarySearchFlat(\n flat,\n lastIndex,\n scrollOffset\n );\n let endIndex2 = startIndex2;\n const limit = scrollOffset + outerSize;\n while (endIndex2 < lastIndex && flat[endIndex2 * 2] + flat[endIndex2 * 2 + 1] < limit) {\n endIndex2++;\n }\n return { startIndex: startIndex2, endIndex: endIndex2 };\n }\n const getStart = (index) => measurements[index].start;\n let startIndex = findNearestBinarySearch(0, lastIndex, getStart, scrollOffset);\n let endIndex = startIndex;\n if (lanes === 1) {\n while (endIndex < lastIndex && measurements[endIndex].end < scrollOffset + outerSize) {\n endIndex++;\n }\n } else if (lanes > 1) {\n const endPerLane = Array(lanes).fill(0);\n while (endIndex < lastIndex && endPerLane.some((pos) => pos < scrollOffset + outerSize)) {\n const item = measurements[endIndex];\n endPerLane[item.lane] = item.end;\n endIndex++;\n }\n const startPerLane = Array(lanes).fill(scrollOffset + outerSize);\n while (startIndex >= 0 && startPerLane.some((pos) => pos >= scrollOffset)) {\n const item = measurements[startIndex];\n startPerLane[item.lane] = item.start;\n startIndex--;\n }\n startIndex = Math.max(0, startIndex - startIndex % lanes);\n endIndex = Math.min(lastIndex, endIndex + (lanes - 1 - endIndex % lanes));\n }\n return { startIndex, endIndex };\n}\nexport {\n Virtualizer,\n _resetIOSDetectionForTests,\n approxEqual,\n debounce,\n defaultKeyExtractor,\n defaultRangeExtractor,\n elementScroll,\n measureElement,\n memo,\n notUndefined,\n observeElementOffset,\n observeElementRect,\n observeWindowOffset,\n observeWindowRect,\n windowScroll\n};\n//# sourceMappingURL=index.js.map\n","import { elementScroll, observeElementOffset, observeElementRect, windowScroll, observeWindowOffset, observeWindowRect, Virtualizer } from \"@tanstack/virtual-core\";\nexport * from \"@tanstack/virtual-core\";\nclass VirtualizerControllerBase {\n constructor(host, options) {\n this.cleanup = () => {\n };\n this.host = host;\n this.options = { ...options };\n this.virtualizer = new Virtualizer(this.resolveOptions(this.options));\n this.host.addController(this);\n }\n getVirtualizer() {\n return this.virtualizer;\n }\n /**\n * Merge a partial options update into the options this controller already\n * holds, push them to the virtualizer, and request a host update. Lit folds\n * a request made from `willUpdate` into the update already in progress.\n *\n * Keys set to `undefined` are ignored, matching core `setOptions`, so a\n * partial update cannot wipe an option stored earlier. Defaults supplied by\n * `VirtualizerController` / `WindowVirtualizerController` stay in place\n * unless a later call replaces them.\n */\n setOptions(options) {\n if (!this.applyOptions(options)) return;\n this.virtualizer.setOptions(this.resolveOptions(this.options));\n this.virtualizer._willUpdate();\n this.host.requestUpdate();\n }\n hostConnected() {\n this.cleanup = this.virtualizer._didMount();\n this.virtualizer._willUpdate();\n this.host.requestUpdate();\n }\n hostUpdated() {\n this.virtualizer._willUpdate();\n }\n hostDisconnected() {\n this.cleanup();\n }\n applyOptions(partial) {\n const next = {\n ...this.options\n };\n let changed = false;\n for (const key in partial) {\n if (!Object.prototype.hasOwnProperty.call(partial, key)) continue;\n const value = partial[key];\n if (value === void 0) continue;\n if (!Object.is(next[key], value)) {\n changed = true;\n Object.assign(next, { [key]: value });\n }\n }\n if (changed) this.options = next;\n return changed;\n }\n resolveOptions(options) {\n return {\n ...options,\n onChange: (instance, sync) => {\n var _a;\n this.host.updateComplete.then(() => this.host.requestUpdate());\n (_a = options.onChange) == null ? void 0 : _a.call(options, instance, sync);\n }\n };\n }\n}\nclass VirtualizerController extends VirtualizerControllerBase {\n constructor(host, options) {\n super(host, {\n observeElementRect,\n observeElementOffset,\n scrollToFn: elementScroll,\n ...options\n });\n }\n}\nclass WindowVirtualizerController extends VirtualizerControllerBase {\n constructor(host, options) {\n super(host, {\n getScrollElement: () => typeof document !== \"undefined\" ? window : null,\n observeElementRect: observeWindowRect,\n observeElementOffset: observeWindowOffset,\n scrollToFn: windowScroll,\n initialOffset: () => typeof document !== \"undefined\" ? window.scrollY : 0,\n ...options\n });\n }\n}\nexport {\n VirtualizerController,\n WindowVirtualizerController\n};\n//# sourceMappingURL=index.js.map\n","import type { ReactiveControllerHost } from 'lit';\nimport { VirtualizerController } from '@tanstack/lit-virtual';\nimport { RowPool } from '@argus-table/core';\n\n/** A rendered body row: its pool slot, its index in the row model and its offset. */\nexport interface WindowRow {\n slot: number;\n index: number;\n start: number;\n}\n\nexport interface VirtualWindow {\n /** Rendered rows, in pool order (ADR 0001 addendum). */\n rows: WindowRow[];\n /** Height of all rows in px. */\n totalSize: number;\n /** Visible rows, without overscan; `null` before the first layout. */\n range: { start: number; end: number } | null;\n}\n\nexport interface VirtualConfig {\n count: number;\n rowHeight: number;\n overscan: number;\n /** Row id at an index of the row model; pool slots follow row ids. */\n rowIdAt: (index: number) => string;\n /**\n * The row to keep rendered outside the range (the one holding the grid's tab\n * stop), so its DOM and focus survive scrolling. `undefined`: none.\n */\n keep?: { id: string; index: number } | undefined;\n}\n\n/**\n * Row virtualization (TanStack Virtual) plus the row pool: which rows render,\n * where, and which pool slot's DOM each one uses. The virtualizer registers itself\n * with the host and requests updates on scroll.\n */\nexport class VirtualController {\n readonly #virtual: VirtualizerController<HTMLElement, Element>;\n readonly #pool = new RowPool();\n #config: VirtualConfig = { count: 0, rowHeight: 40, overscan: 6, rowIdAt: String };\n\n constructor(host: ReactiveControllerHost, getScrollElement: () => HTMLElement | null) {\n this.#virtual = new VirtualizerController<HTMLElement, Element>(host, {\n count: 0,\n getScrollElement,\n estimateSize: () => this.#config.rowHeight,\n overscan: this.#config.overscan,\n });\n }\n\n configure(next: VirtualConfig): void {\n const prev = this.#config;\n this.#config = next;\n if (\n next.count !== prev.count ||\n next.overscan !== prev.overscan ||\n next.rowHeight !== prev.rowHeight\n ) {\n this.#virtual.setOptions({ count: next.count, overscan: next.overscan });\n if (next.rowHeight !== prev.rowHeight) this.#virtual.getVirtualizer().measure();\n }\n }\n\n /**\n * Computes the rendered window and updates the pool. Call once per render.\n */\n computeWindow(): VirtualWindow {\n const v = this.#virtual.getVirtualizer();\n const items = v.getVirtualItems();\n const byId = new Map<string, { index: number; start: number }>();\n for (const item of items) {\n byId.set(this.#config.rowIdAt(item.index), { index: item.index, start: item.start });\n }\n const { keep } = this.#config;\n this.#pool.pin(keep?.id);\n if (keep && !byId.has(keep.id)) {\n // Fixed row heights: the virtualizer would place it here too.\n byId.set(keep.id, { index: keep.index, start: keep.index * this.#config.rowHeight });\n }\n const rows: WindowRow[] = [];\n for (const { id, slot } of this.#pool.update(byId.keys())) {\n const item = byId.get(id);\n if (item) rows.push({ slot, ...item });\n }\n const range = v.range;\n return {\n rows,\n totalSize: v.getTotalSize(),\n range: range ? { start: range.startIndex, end: range.endIndex } : null,\n };\n }\n\n /** Number of pool slots created so far: bounded by the most rows rendered at once. */\n get poolSize(): number {\n return this.#pool.size;\n }\n\n /** `'start'` puts the row at the top; `'auto'` scrolls only as far as needed to show it. */\n scrollToIndex(index: number, align: 'start' | 'auto' = 'start'): void {\n this.#virtual.getVirtualizer().scrollToIndex(index, { align });\n }\n}\n","import type {\n CellClickDetail,\n ColumnResizeDetail,\n RangeChangeDetail,\n RowClickDetail,\n SortChangeDetail,\n} from '@argus-table/core';\n\n/** Fired after an update when the visible row range changed. */\nexport const RANGE_CHANGE = 'argus-range-change';\n\n/** Fired after the sort order changed (uncontrolled), or with the proposed order (controlled). */\nexport const SORT_CHANGE = 'argus-sort-change';\n\n/** Fired when a column was resized (uncontrolled), or with the proposed widths (controlled). */\nexport const COLUMN_RESIZE = 'argus-column-resize';\n\n/** Fired when a body row was clicked, after `argus-cell-click`. */\nexport const ROW_CLICK = 'argus-row-click';\n\n/** Fired when a body cell was clicked, before `argus-row-click`. */\nexport const CELL_CLICK = 'argus-cell-click';\n\ndeclare global {\n interface HTMLElementEventMap {\n 'argus-range-change': CustomEvent<RangeChangeDetail>;\n 'argus-sort-change': CustomEvent<SortChangeDetail>;\n 'argus-column-resize': CustomEvent<ColumnResizeDetail>;\n 'argus-row-click': CustomEvent<RowClickDetail<unknown>>;\n 'argus-cell-click': CustomEvent<CellClickDetail<unknown>>;\n }\n}\n\n/** Dispatches a bubbling, composed `CustomEvent`, the shape of every public event. */\nexport function fire(host: HTMLElement, name: string, detail: unknown): boolean {\n return host.dispatchEvent(new CustomEvent(name, { detail, bubbles: true, composed: true }));\n}\n","import{_$LH as o}from\"./lit-html.js\";\n/**\n * @license\n * Copyright 2020 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */const{I:t}=o,i=o=>o,n=o=>null===o||\"object\"!=typeof o&&\"function\"!=typeof o,e={HTML:1,SVG:2,MATHML:3},l=(o,t)=>void 0===t?void 0!==o?._$litType$:o?._$litType$===t,d=o=>null!=o?._$litType$?.h,c=o=>void 0!==o?._$litDirective$,f=o=>o?._$litDirective$,r=o=>void 0===o.strings,s=()=>document.createComment(\"\"),v=(o,n,e)=>{const l=o._$AA.parentNode,d=void 0===n?o._$AB:n._$AA;if(void 0===e){const i=l.insertBefore(s(),d),n=l.insertBefore(s(),d);e=new t(i,n,o,o.options)}else{const t=e._$AB.nextSibling,n=e._$AM,c=n!==o;if(c){let t;e._$AQ?.(o),e._$AM=o,void 0!==e._$AP&&(t=o._$AU)!==n._$AU&&e._$AP(t)}if(t!==d||c){let o=e._$AA;for(;o!==t;){const t=i(o).nextSibling;i(l).insertBefore(o,d),o=t}}}return e},u=(o,t,i=o)=>(o._$AI(t,i),o),m={},p=(o,t=m)=>o._$AH=t,M=o=>o._$AH,h=o=>{o._$AR(),o._$AA.remove()},j=o=>{o._$AR()};export{e as TemplateResultType,j as clearPart,M as getCommittedValue,f as getDirectiveClass,v as insertPart,d as isCompiledTemplateResult,c as isDirectiveResult,n as isPrimitive,r as isSingleExpression,l as isTemplateResult,h as removePart,u as setChildPartValue,p as setCommittedValue};\n//# sourceMappingURL=directive-helpers.js.map\n","import{noChange as e}from\"../lit-html.js\";import{directive as s,Directive as t,PartType as r}from\"../directive.js\";import{getCommittedValue as l,setChildPartValue as o,insertPart as i,removePart as n,setCommittedValue as f}from\"../directive-helpers.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst u=(e,s,t)=>{const r=new Map;for(let l=s;l<=t;l++)r.set(e[l],l);return r},c=s(class extends t{constructor(e){if(super(e),e.type!==r.CHILD)throw Error(\"repeat() can only be used in text expressions\")}dt(e,s,t){let r;void 0===t?t=s:void 0!==s&&(r=s);const l=[],o=[];let i=0;for(const s of e)l[i]=r?r(s,i):i,o[i]=t(s,i),i++;return{values:o,keys:l}}render(e,s,t){return this.dt(e,s,t).values}update(s,[t,r,c]){const d=l(s),{values:p,keys:a}=this.dt(t,r,c);if(!Array.isArray(d))return this.ut=a,p;const h=this.ut??=[],v=[];let m,y,x=0,j=d.length-1,k=0,w=p.length-1;for(;x<=j&&k<=w;)if(null===d[x])x++;else if(null===d[j])j--;else if(h[x]===a[k])v[k]=o(d[x],p[k]),x++,k++;else if(h[j]===a[w])v[w]=o(d[j],p[w]),j--,w--;else if(h[x]===a[w])v[w]=o(d[x],p[w]),i(s,v[w+1],d[x]),x++,w--;else if(h[j]===a[k])v[k]=o(d[j],p[k]),i(s,d[x],d[j]),j--,k++;else if(void 0===m&&(m=u(a,k,w),y=u(h,x,j)),m.has(h[x]))if(m.has(h[j])){const e=y.get(a[k]),t=void 0!==e?d[e]:null;if(null===t){const e=i(s,d[x]);o(e,p[k]),v[k]=e}else v[k]=o(t,p[k]),i(s,d[x],t),d[e]=null;k++}else n(d[j]),j--;else n(d[x]),x++;for(;k<=w;){const e=i(s,v[w+1]);o(e,p[k]),v[k++]=e}for(;x<=j;){const e=d[x++];null!==e&&n(e)}return this.ut=a,f(s,v),e}});export{c as repeat};\n//# sourceMappingURL=repeat.js.map\n","import { nothing } from 'lit';\nimport type { CellContent } from '../types.js';\n\n/** Turns header or cell content into a Lit child. */\nexport function toChild(content: CellContent | null | undefined): unknown {\n if (content === null || content === undefined) return nothing;\n return typeof content === 'number' ? String(content) : content;\n}\n\n/** Default cell text for an accessor value. */\nexport function formatValue(value: unknown): string {\n if (value === null || value === undefined) return '';\n if (value instanceof Date) return value.toLocaleString();\n // eslint-disable-next-line @typescript-eslint/no-base-to-string -- objects are handled above\n return typeof value === 'object' ? JSON.stringify(value) : String(value);\n}\n\n/** Private slot names (ADR 0001): cells by pool slot and column, headers by column. */\nexport const cellSlot = (slot: number, colIndex: number) => `c-${String(slot)}-${String(colIndex)}`;\nexport const headerSlot = (colIndex: number) => `h-${String(colIndex)}`;\n\ninterface Pinnable {\n pin: 'start' | 'end' | undefined;\n pinEdge: boolean;\n}\n\n/** Part list of a body cell: state is in the part name (`::part()` can't take attribute selectors). */\nexport function cellParts(column: Pinnable & { sorted: 'asc' | 'desc' | false }): string {\n let parts = 'cell';\n if (column.pin) parts += column.pinEdge ? ' cell-pinned cell-pinned-edge' : ' cell-pinned';\n if (column.sorted) parts += ' cell-sorted';\n return parts;\n}\n\n/** `aria-sort` for a header: only the sorted column carries it (WAI-ARIA APG). */\nexport function ariaSort(sorted: 'asc' | 'desc' | false): 'ascending' | 'descending' | undefined {\n if (!sorted) return undefined;\n return sorted === 'asc' ? 'ascending' : 'descending';\n}\n\n/** Inline style of a pinned cell: its sticky inset, from the start or the end edge. */\nexport function pinStyle(column: Pinnable & { offset: number }): string | undefined {\n return column.pin ? `--_pin-offset: ${String(column.offset)}px` : undefined;\n}\n","import { html, nothing } from 'lit';\nimport { repeat } from 'lit/directives/repeat.js';\nimport { styleMap } from 'lit/directives/style-map.js';\nimport type { ColumnView } from '@argus-table/core';\nimport type { WindowRow } from '../controllers/virtual-controller.js';\nimport type { CellContent } from '../types.js';\nimport { cellParts, cellSlot, pinStyle } from './content.js';\n\ntype Columns<T> = readonly ColumnView<T, CellContent>[];\n\n/** The cell holding the grid's tab stop: a row index and a column id. */\nexport interface ActiveCell {\n index: number;\n col: string;\n}\n\n/**\n * The virtualized body. Rows are keyed by pool slot, so a row entering the window\n * reuses the DOM of one that left (ADR 0001), and they stay in pool order: screen\n * readers get the position from `aria-rowindex` (the header row is 1).\n */\nexport function renderBody<T>(\n rows: readonly WindowRow[],\n columns: Columns<T>,\n totalSize: number,\n active: ActiveCell | undefined,\n) {\n return html`<div\n part=\"body\"\n role=\"rowgroup\"\n style=${styleMap({ blockSize: `${String(totalSize)}px` })}\n >\n ${repeat(\n rows,\n (r) => r.slot,\n (r) => renderRow(r, columns, r.index === active?.index ? active.col : undefined),\n )}\n </div>`;\n}\n\n/**\n * One body row. Every cell is focusable (`tabindex=-1`) so clicks focus it; the\n * active one is the grid's single tab stop (roving tabindex).\n */\nfunction renderRow<T>(row: WindowRow, columns: Columns<T>, activeCol: string | undefined) {\n return html`<div\n part=${row.index % 2 === 0 ? 'row row-even' : 'row row-odd'}\n class=\"row\"\n role=\"row\"\n aria-rowindex=${row.index + 2}\n style=${styleMap({ transform: `translateY(${String(row.start)}px)` })}\n >\n ${repeat(\n columns,\n (c) => c.id,\n (c) =>\n html`<div\n part=${cellParts(c)}\n role=\"gridcell\"\n aria-colindex=${c.colIndex}\n tabindex=${c.id === activeCol ? 0 : -1}\n data-col=${c.id}\n data-align=${c.align}\n data-pin=${c.pin ?? nothing}\n ?data-pin-edge=${c.pinEdge}\n style=${pinStyle(c) ?? nothing}\n >\n <slot name=${cellSlot(row.slot, c.colIndex)}></slot>\n </div>`,\n )}\n </div>`;\n}\n","import { html, render } from 'lit';\nimport { repeat } from 'lit/directives/repeat.js';\nimport type { ColumnView, TableModel } from '@argus-table/core';\nimport type { WindowRow } from '../controllers/virtual-controller.js';\nimport type { CellContent } from '../types.js';\nimport { cellSlot, formatValue, headerSlot, toChild } from './content.js';\n\ntype Column<T> = ColumnView<T, CellContent>;\n\n/**\n * Renders header and cell content into the host's light DOM, as direct children\n * (a slot only takes the host's own children). Keyed and ordered by pool slot,\n * so recycled content updates in place instead of moving (ADR 0001).\n */\nexport function renderLightDom<T>(\n host: HTMLElement,\n model: TableModel<T, CellContent>,\n rows: readonly WindowRow[],\n): void {\n const columns = model.columns;\n render(\n html`${repeat(\n columns,\n (c) => c.id,\n (c) => html`<div slot=${headerSlot(c.colIndex)}>${headerContent(c)}</div>`,\n )}${repeat(\n rows,\n (r) => r.slot,\n (r) =>\n repeat(\n columns,\n (c) => c.id,\n (c) =>\n html`<div slot=${cellSlot(r.slot, c.colIndex)}>${cellContent(model, r.index, c)}</div>`,\n ),\n )}`,\n host,\n { host },\n );\n}\n\nfunction headerContent<T>(column: Column<T>): unknown {\n const { header } = column;\n return toChild(typeof header === 'function' ? header() : header);\n}\n\nfunction cellContent<T>(model: TableModel<T, CellContent>, index: number, column: Column<T>) {\n if (column.cell) {\n const context = model.cellContext(index, column.id);\n return context ? toChild(column.cell(context.row, context)) : '';\n }\n return column.hasAccessor ? formatValue(model.valueAt(index, column.id)) : '';\n}\n","import { html, nothing } from 'lit';\nimport { repeat } from 'lit/directives/repeat.js';\nimport type { ColumnView } from '@argus-table/core';\nimport type { CellContent } from '../types.js';\nimport { ariaSort, headerSlot, pinStyle } from './content.js';\n\nexport interface HeaderHandlers {\n click: (event: MouseEvent) => void;\n pointerdown: (event: PointerEvent) => void;\n}\n\n/**\n * The sticky header row. Header content is slotted from the light DOM. Pinned\n * header cells use the same private `data-pin` hooks as body cells, but no parts.\n * Every header carries `data-col` (its column id) and sortable ones also\n * `data-sort-col`; the element's delegated handlers read them. Headers take part\n * in the grid's roving tabindex: the active one is the tab stop (`activeCol`).\n * Resizable columns get a `resize-handle` on the header's inline-end edge. It is\n * not focusable: the focused header resizes with Alt+Arrow.\n */\nexport function renderHeader<T>(\n columns: readonly ColumnView<T, CellContent>[],\n handlers: HeaderHandlers,\n activeCol: string | undefined,\n) {\n return html`<div part=\"header\" role=\"rowgroup\">\n <div\n part=\"header-row\"\n class=\"row\"\n role=\"row\"\n aria-rowindex=\"1\"\n @click=${handlers.click}\n @pointerdown=${handlers.pointerdown}\n >\n ${repeat(\n columns,\n (c) => c.id,\n (c) =>\n html`<div\n part=${c.sorted ? 'header-cell header-cell-sorted' : 'header-cell'}\n role=\"columnheader\"\n aria-colindex=${c.colIndex}\n aria-sort=${ariaSort(c.sorted) ?? nothing}\n data-col=${c.id}\n data-sort-col=${c.sortable ? c.id : nothing}\n tabindex=${c.id === activeCol ? 0 : -1}\n data-align=${c.align}\n data-pin=${c.pin ?? nothing}\n ?data-pin-edge=${c.pinEdge}\n style=${pinStyle(c) ?? nothing}\n >\n <slot name=${headerSlot(c.colIndex)}></slot>\n ${c.sortable ? html`<span class=\"sort-indicator\" aria-hidden=\"true\"></span>` : nothing}\n ${c.resizable ? resizeHandle(c) : nothing}\n </div>`,\n )}\n </div>\n </div>`;\n}\n\n/**\n * A vertical separator with the column's width as its value. A flex column has no\n * fixed width until it is resized, so it reports none.\n */\nfunction resizeHandle<T>(c: ColumnView<T, CellContent>) {\n return html`<div\n part=\"resize-handle\"\n role=\"separator\"\n aria-orientation=\"vertical\"\n aria-label=\"Resize column\"\n aria-valuenow=${c.flex === undefined ? Math.round(c.width) : nothing}\n aria-valuemin=${c.minWidth}\n aria-valuemax=${Number.isFinite(c.maxWidth) ? c.maxWidth : nothing}\n data-resize-col=${c.id}\n ></div>`;\n}\n","import { css } from 'lit';\n\n/**\n * Base styles. Everything sits in `@layer argus-base`, and every value reads a\n * public token with a neutral fallback, so themes and page CSS always win.\n * `--_*` properties are private.\n */\nexport const baseStyles = css`\n @layer argus-base {\n :host {\n display: block;\n /* A table that virtualizes needs a bounded height; set your own on the element. */\n block-size: 400px;\n box-sizing: border-box;\n contain: content;\n color-scheme: light dark;\n color: var(--argus-fg, CanvasText);\n background: var(--argus-bg, Canvas);\n font: var(--argus-font, inherit);\n --_row-height: var(--argus-row-height, 40px);\n --_pad: var(--argus-cell-padding-inline, 12px);\n --_border: var(--argus-border-width, 1px) solid\n var(--argus-border-color, light-dark(#e5e7eb, #374151));\n /* 1 in LTR, -1 in RTL: mirrors the pinned-edge shadow. */\n --_dir: 1;\n }\n :host(:dir(rtl)) {\n --_dir: -1;\n }\n :host([density='compact']) {\n --_row-height: var(--argus-row-height, 32px);\n --_pad: var(--argus-cell-padding-inline, 8px);\n }\n :host([density='spacious']) {\n --_row-height: var(--argus-row-height, 52px);\n --_pad: var(--argus-cell-padding-inline, 16px);\n }\n :host([hidden]) {\n display: none;\n }\n\n [part~='table'] {\n position: relative;\n block-size: 100%;\n overflow: auto;\n overscroll-behavior: contain;\n /* A cell moved to by keyboard scrolls clear of the sticky header and pinned columns. */\n scroll-padding-block-start: var(--_row-height);\n scroll-padding-inline: var(--_pin-start, 0) var(--_pin-end, 0);\n }\n\n .row {\n display: grid;\n grid-template-columns: var(--_cols);\n inline-size: var(--_width);\n min-inline-size: 100%;\n block-size: var(--_row-height);\n box-sizing: border-box;\n }\n\n [part~='header'] {\n position: sticky;\n inset-block-start: 0;\n z-index: 2;\n }\n\n [part~='body'] {\n position: relative;\n contain: layout;\n }\n [part~='row'] {\n position: absolute;\n inset-block-start: 0;\n inset-inline-start: 0;\n --_row-bg: var(--argus-bg, Canvas);\n --_row-surface: var(--_row-bg);\n background: var(--_row-surface);\n }\n [part~='row-odd'] {\n --_row-bg: var(--argus-row-stripe-bg, var(--argus-bg, Canvas));\n }\n [part~='row']:hover {\n --_row-surface: var(--argus-row-hover-bg, var(--_row-bg));\n }\n\n [part~='cell'],\n [part~='header-cell'] {\n display: flex;\n align-items: center;\n min-inline-size: 0;\n box-sizing: border-box;\n padding-inline: var(--_pad);\n overflow: hidden;\n white-space: nowrap;\n border-block-end: var(--_border);\n }\n [part~='header-cell'] {\n background: var(--argus-header-bg, light-dark(#f9fafb, #111827));\n color: var(--argus-header-fg, inherit);\n font-weight: 600;\n }\n [part~='header-cell'] {\n position: relative;\n }\n [part~='resize-handle'] {\n position: absolute;\n inset-block: 0;\n inset-inline-end: 0;\n inline-size: 8px;\n z-index: 1;\n cursor: col-resize;\n touch-action: none;\n }\n [part~='resize-handle']::after {\n content: '';\n position: absolute;\n inset-block: 25%;\n inset-inline-end: 0;\n inline-size: 2px;\n background: var(--argus-resize-handle-color, light-dark(#9ca3af, #6b7280));\n opacity: 0;\n }\n [part~='header-cell']:hover [part~='resize-handle']::after,\n [part~='header-cell']:focus-visible [part~='resize-handle']::after,\n [part~='resize-handle'][data-active]::after {\n opacity: 1;\n }\n [data-sort-col] {\n cursor: pointer;\n user-select: none;\n }\n [part~='header-cell']:focus-visible,\n [part~='cell']:focus-visible {\n outline: var(--argus-focus-ring, 2px solid Highlight);\n outline-offset: -2px;\n }\n /* A small chevron after the header content; only the sorted column shows it. */\n .sort-indicator {\n flex: none;\n inline-size: 0.35em;\n block-size: 0.35em;\n margin-inline-start: 0.4em;\n /* Physical sides on purpose: the chevron is rotated, so it must not mirror in RTL. */\n border-right: 0.12em solid currentColor;\n border-bottom: 0.12em solid currentColor;\n visibility: hidden;\n }\n [aria-sort] .sort-indicator {\n visibility: visible;\n }\n [aria-sort='ascending'] .sort-indicator {\n transform: translateY(0.1em) rotate(-135deg);\n }\n [aria-sort='descending'] .sort-indicator {\n transform: translateY(-0.1em) rotate(45deg);\n }\n [data-align='end'] .sort-indicator {\n order: -1;\n margin-inline: 0 0.4em;\n }\n /*\n * Pinned columns: sticky inside the scroll container, with offsets from the\n * table model. Logical insets make RTL work without extra rules.\n */\n [data-pin] {\n position: sticky;\n z-index: 1;\n /* Visible so the edge shadow isn't clipped; slotted content still clips itself. */\n overflow: visible;\n }\n [data-pin='start'] {\n inset-inline-start: var(--_pin-offset);\n }\n [data-pin='end'] {\n inset-inline-end: var(--_pin-offset);\n }\n [part~='cell-pinned'] {\n background: var(--_row-surface);\n }\n /*\n * The edge shadow. --argus-pinned-shadow is written for a shadow falling\n * toward the end side; the start edge in RTL and the end edge in LTR mirror it.\n */\n [data-pin-edge]::after {\n content: '';\n position: absolute;\n inset: 0;\n pointer-events: none;\n box-shadow: var(\n --argus-pinned-shadow,\n 4px 0 6px -4px light-dark(rgb(0 0 0 / 0.2), rgb(0 0 0 / 0.6))\n );\n transform: scaleX(var(--_dir));\n }\n [data-pin='end'][data-pin-edge]::after {\n transform: scaleX(calc(-1 * var(--_dir)));\n }\n\n [data-align='center'] {\n justify-content: center;\n text-align: center;\n }\n [data-align='end'] {\n justify-content: flex-end;\n text-align: end;\n }\n ::slotted(*) {\n min-inline-size: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n\n [part~='empty'] {\n display: flex;\n align-items: center;\n justify-content: center;\n min-block-size: calc(100% - var(--_row-height));\n padding: var(--_pad);\n box-sizing: border-box;\n }\n\n /* Measures the resolved row height in px for the virtualizer. */\n .probe {\n position: absolute;\n inset-block-start: 0;\n inline-size: 0;\n block-size: var(--_row-height);\n visibility: hidden;\n pointer-events: none;\n }\n }\n`;\n","import {\n LitElement,\n html,\n type CSSResultGroup,\n type PropertyValues,\n type TemplateResult,\n} from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { styleMap } from 'lit/directives/style-map.js';\nimport {\n controllable,\n type ColumnResizeDetail,\n type ColumnView,\n type TableModel,\n} from '@argus-table/core';\nimport { startResizeDrag } from './controllers/resize-drag.js';\nimport { TableController } from './controllers/table-controller.js';\nimport { VirtualController, type VirtualWindow } from './controllers/virtual-controller.js';\nimport { CELL_CLICK, COLUMN_RESIZE, fire, RANGE_CHANGE, ROW_CLICK, SORT_CHANGE } from './events.js';\nimport { renderBody, type ActiveCell } from './render/body.js';\nimport { renderLightDom } from './render/cells.js';\nimport { renderHeader } from './render/header.js';\nimport { baseStyles } from './styles/base.js';\nimport type { CellContent, ColumnDef, ColumnSizingState, Density, SortState } from './types.js';\n\n/**\n * The host carries the grid role, so rows rendered in the shadow root become\n * its children in the accessibility tree. ElementInternals sets the default;\n * `connectedCallback` also adds a `role` attribute, because tools such as\n * axe-core can't see the ElementInternals role. A `role` the page sets wins.\n */\nfunction attachGridInternals(host: HTMLElement): ElementInternals {\n const internals = host.attachInternals();\n internals.role = 'grid';\n return internals;\n}\n\n/**\n * The sortable column a header click came from, if any. Works for slotted content\n * too. Clicks on a resize handle never sort, so a click that ends a drag doesn't.\n */\nfunction sortColumnOf(event: Event): string | undefined {\n for (const target of event.composedPath()) {\n if (!(target instanceof HTMLElement)) continue;\n if (target.dataset.resizeCol !== undefined) return undefined;\n if (target.dataset.sortCol !== undefined) return target.dataset.sortCol;\n if (target.getAttribute('part') === 'header-row') return undefined;\n }\n return undefined;\n}\n\nconst RESIZE_STEP = 10;\n\n/**\n * The cell holding the grid's single tab stop. `index` is the row's index in the\n * row model, `-1` for the header row; `rowId` keeps it on the same row when the\n * order changes.\n */\ninterface Active {\n index: number;\n rowId: string | undefined;\n col: string;\n}\n\n/** The grid cell or column header an element is, if any. */\nfunction gridCell(target: EventTarget): HTMLElement | undefined {\n if (!(target instanceof HTMLElement) || target.dataset.col === undefined) return undefined;\n const role = target.getAttribute('role');\n return role === 'gridcell' || role === 'columnheader' ? target : undefined;\n}\n\n/** Row index of a rendered row element (`aria-rowindex` minus the header); `-1` for the header. */\nfunction rowIndexOf(row: Element | null): number {\n return Number(row?.getAttribute('aria-rowindex') ?? 1) - 2;\n}\n\n/** CSS grid track for a column: fixed px, or a flex share with the min width as floor. */\nfunction track<T>(column: ColumnView<T, CellContent>): string {\n return column.flex === undefined\n ? `${String(column.width)}px`\n : `minmax(${String(column.minWidth)}px, ${String(column.flex)}fr)`;\n}\n\n/**\n * A virtualized data table.\n *\n * Set `columns` and `data` as properties. Header and cell content is rendered\n * into the element's light DOM and slotted into the cells, so page CSS and the\n * page's own components work inside cells.\n *\n * @summary Data table with pinned rows and columns and infinite loading.\n *\n * @fires argus-sort-change - A sortable header was clicked, or activated with Enter or Space. `detail: { sorting }`: the new order, or the proposed one when `sorting` is controlled.\n * @fires argus-column-resize - A column was resized by dragging its handle or with Alt+Arrow on its header. `detail: { columnId, width, sizing }`: the new widths, or the proposed ones when `columnSizing` is controlled. Fires on every frame of a drag.\n * @fires argus-cell-click - A body cell was clicked, or Enter was pressed on it. `detail: { row, columnId, value }`. Fires before `argus-row-click`.\n * @fires argus-row-click - A body row was clicked, or Enter was pressed on one of its cells. `detail: { row, rowId, index }`.\n * @fires argus-range-change - The visible rows changed. `detail: { start, end }` (row indices, inclusive).\n *\n * @slot empty - Shown instead of the body when there are no rows. Default: \"No rows\".\n *\n * @csspart table - The scroll container that holds header and body.\n * @csspart header - The sticky header row group.\n * @csspart header-row - The header row.\n * @csspart header-cell - Every header cell.\n * @csspart header-cell-sorted - The header of the sorted column. The direction is in `aria-sort`.\n * @csspart resize-handle - The drag handle on the inline-end edge of a resizable column's header.\n * @csspart body - The row group holding the rendered body rows.\n * @csspart row - Every body row.\n * @csspart row-even - Body rows with an even index (0-based).\n * @csspart row-odd - Body rows with an odd index.\n * @csspart cell - Every body cell.\n * @csspart cell-sorted - Body cells in the sorted column.\n * @csspart cell-pinned - Body cells in a pinned column, on either side.\n * @csspart cell-pinned-edge - The pinned body cell next to the scrolling columns (one per pinned side).\n * @csspart empty - The empty-state container.\n *\n * @cssprop [--argus-bg=Canvas] - Background of the table and rows.\n * @cssprop [--argus-fg=CanvasText] - Text colour.\n * @cssprop [--argus-font=inherit] - Font shorthand for the table.\n * @cssprop [--argus-header-bg] - Header background.\n * @cssprop [--argus-header-fg=inherit] - Header text colour.\n * @cssprop [--argus-border-color] - Colour of the row borders.\n * @cssprop [--argus-border-width=1px] - Width of the row borders.\n * @cssprop [--argus-row-height] - Height of a row. Default per density: 32px, 40px, 52px.\n * @cssprop [--argus-cell-padding-inline] - Inline padding of cells. Default per density: 8px, 12px, 16px.\n * @cssprop [--argus-row-stripe-bg] - Background of odd rows. Default: no stripes.\n * @cssprop [--argus-pinned-shadow] - Shadow on the pinned edge, as a `box-shadow` falling toward the end side (`4px 0 6px -4px …`). Mirrored for the end edge and in RTL; `none` removes it.\n * @cssprop [--argus-resize-handle-color] - Colour of the resize handle's line, shown on hover, focus and drag.\n * @cssprop [--argus-focus-ring=2px solid Highlight] - Outline of the focused header or cell.\n * @cssprop [--argus-row-hover-bg] - Background of the hovered row. Default: no change.\n * @cssprop [--argus-row-selected-bg] - Reserved for row selection, which comes after v0.1. The table doesn't read it yet.\n */\n@customElement('argus-table')\nexport class ArgusTable<T = unknown> extends LitElement {\n static override styles: CSSResultGroup = baseStyles;\n\n /** Column definitions. Property only: functions can't be attributes. */\n @property({ attribute: false })\n columns: readonly ColumnDef<T>[] = [];\n\n /** The rows to show. Replace the array to update; changes inside it aren't detected. */\n @property({ attribute: false })\n data: readonly T[] = [];\n\n /** Returns a stable id for a row. Default: the row's index in `data`. */\n @property({ attribute: false })\n getRowId?: (row: T, index: number) => string;\n\n /** Row height in px. Unset: the density (or the `--argus-row-height` token) decides. */\n @property({ attribute: 'row-height', type: Number })\n rowHeight?: number;\n\n /** Row density: `compact`, `comfortable` or `spacious`. */\n @property({ reflect: true })\n density: Density = 'comfortable';\n\n /** Rows rendered above and below the visible ones. */\n @property({ type: Number })\n overscan = 6;\n\n /**\n * The sort order, e.g. `[{ id: 'total', desc: true }]`; `[]` when unsorted. Unset,\n * the table keeps it itself and header clicks change it. Once set, it is\n * controlled: a click only fires `argus-sort-change` with the proposed order,\n * and nothing changes until you set the property. Set `undefined` to hand it back.\n */\n @property({ attribute: false })\n get sorting(): SortState {\n return this.#sorting.value;\n }\n set sorting(value: SortState | undefined) {\n // Lit wraps this accessor and requests the update with the old value.\n this.#sorting.set(value);\n }\n\n /**\n * Resized widths in px by column id, e.g. `{ name: 240 }`. A resized flex column\n * becomes fixed. Uncontrolled until set, like `sorting`: once set, a resize only\n * fires `argus-column-resize` with the proposed widths. `undefined` hands it back.\n */\n @property({ attribute: false })\n get columnSizing(): ColumnSizingState {\n return this.#sizing.value;\n }\n set columnSizing(value: ColumnSizingState | undefined) {\n this.#sizing.set(value);\n }\n\n readonly #sorting = controllable<SortState>([]);\n readonly #sizing = controllable<ColumnSizingState>({});\n /** A resize the table applied itself; its event fires once the update is done. */\n #appliedResize: ColumnResizeDetail | undefined;\n /** A sort the table applied itself; its event fires once the update is done. */\n #appliedSort: SortState | undefined;\n readonly #internals = attachGridInternals(this);\n readonly #table = new TableController<T>();\n // Looked up lazily: the virtualizer's hostUpdated runs before firstUpdated.\n readonly #virtual = new VirtualController(this, () =>\n this.renderRoot.querySelector<HTMLElement>('[part~=\"table\"]'),\n );\n #rowPx = 40;\n #probeObserver?: ResizeObserver;\n #window: VirtualWindow = { rows: [], totalSize: 0, range: null };\n #active: Active | undefined;\n /** Move focus to the active cell after the next update (keyboard navigation). */\n #focusPending = false;\n #lastRange = '';\n\n override connectedCallback(): void {\n super.connectedCallback();\n if (!this.hasAttribute('role')) this.setAttribute('role', 'grid');\n if (this.hasUpdated) this.#observeProbe();\n }\n\n override disconnectedCallback(): void {\n super.disconnectedCallback();\n this.#probeObserver?.disconnect();\n }\n\n /** Scrolls so that the row at `index` (in the current row order) is at the top. */\n async scrollToRow(index: number): Promise<void> {\n await this.updateComplete;\n this.#virtual.scrollToIndex(index);\n await this.updateComplete;\n }\n\n protected override willUpdate(changed: PropertyValues<this>): void {\n if (\n changed.has('columns') ||\n changed.has('data') ||\n changed.has('getRowId') ||\n changed.has('sorting') ||\n changed.has('columnSizing')\n ) {\n this.#table.update({\n columns: this.columns,\n data: this.data,\n getRowId: this.getRowId,\n sorting: this.#sorting.value,\n columnSizing: this.#sizing.value,\n });\n }\n const model = this.#table.model;\n this.#reconcileActive(model);\n const active = this.#active;\n this.#internals.ariaRowCount = String(model.rowCount + 1);\n this.#internals.ariaColCount = String(model.columns.length);\n this.#virtual.configure({\n count: model.rowCount,\n rowHeight: this.#rowPx,\n overscan: Math.max(0, this.overscan),\n rowIdAt: (index) => model.rowAt(index)?.id ?? String(index),\n // The active row stays rendered, so the tab stop and focus survive scrolling.\n keep: active?.rowId === undefined ? undefined : { id: active.rowId, index: active.index },\n });\n }\n\n protected override render(): TemplateResult {\n const model = this.#table.model;\n const columns = model.columns;\n this.#window = this.#virtual.computeWindow();\n const pinned = (side: 'start' | 'end') =>\n `${String(columns.reduce((sum, c) => (c.pin === side ? sum + c.width : sum), 0))}px`;\n const style: Record<string, string> = {\n '--_cols': columns.map(track).join(' '),\n '--_width': `${String(model.totalWidth)}px`,\n '--_pin-start': pinned('start'),\n '--_pin-end': pinned('end'),\n };\n const active = this.#active;\n const bodyActive: ActiveCell | undefined =\n active && active.index >= 0 ? { index: active.index, col: active.col } : undefined;\n if (this.rowHeight !== undefined && this.rowHeight > 0) {\n style['--_row-height'] = `${String(this.rowHeight)}px`;\n }\n return html`<div\n part=\"table\"\n role=\"presentation\"\n style=${styleMap(style)}\n @keydown=${this.#onKeydown}\n @focusin=${this.#onFocusin}\n @click=${this.#onClick}\n >\n ${renderHeader(columns, this.#headerHandlers, active?.index === -1 ? active.col : undefined)}\n ${\n model.rowCount === 0\n ? html`<div part=\"empty\"><slot name=\"empty\">No rows</slot></div>`\n : renderBody(this.#window.rows, columns, this.#window.totalSize, bodyActive)\n }\n <div class=\"probe\" aria-hidden=\"true\"></div>\n </div>`;\n }\n\n protected override firstUpdated(): void {\n this.#observeProbe();\n this.#measureRowHeight();\n }\n\n protected override updated(changed: PropertyValues<this>): void {\n renderLightDom(this, this.#table.model, this.#window.rows);\n if (this.#focusPending) {\n this.#focusPending = false;\n this.#focusActive();\n }\n if (changed.has('density') || changed.has('rowHeight')) this.#measureRowHeight();\n if (this.#appliedResize) {\n const detail = this.#appliedResize;\n this.#appliedResize = undefined;\n fire(this, COLUMN_RESIZE, detail);\n }\n if (this.#appliedSort) {\n const sorting = this.#appliedSort;\n this.#appliedSort = undefined;\n fire(this, SORT_CHANGE, { sorting });\n }\n const { range } = this.#window;\n const key = range ? `${String(range.start)}:${String(range.end)}` : '';\n if (range && key !== this.#lastRange) {\n this.#lastRange = key;\n fire(this, RANGE_CHANGE, { start: range.start, end: range.end });\n }\n }\n\n readonly #headerHandlers = {\n click: (event: MouseEvent) => {\n const id = sortColumnOf(event);\n if (id !== undefined) this.#requestSort(id);\n },\n pointerdown: (event: PointerEvent) => {\n if (event.button !== 0) return;\n const handle = event.composedPath()[0];\n if (!(handle instanceof HTMLElement)) return;\n const id = handle.dataset.resizeCol;\n const cell = handle.parentElement;\n if (id === undefined || !cell) return;\n startResizeDrag(handle, event, cell.getBoundingClientRect().width, this.#direction(), (w) => {\n this.#requestResize(id, w);\n });\n },\n };\n\n /**\n * Keys on a focused cell or header. Keys from content inside a cell (an input,\n * a button) are left to that content.\n */\n readonly #onKeydown = (event: KeyboardEvent) => {\n const cell = gridCell(event.composedPath()[0] ?? event.target ?? this);\n const id = cell?.dataset.col;\n if (!cell || id === undefined) return;\n if (event.key === 'Tab' && event.shiftKey) {\n // Firefox makes the scroll container a tab stop, so Shift+Tab would stop\n // on it before leaving the grid. Take it out of the tab order for this\n // one move only: a tabindex there for good would expose it as a node of\n // its own between the grid and its rows.\n const scroller = event.currentTarget as HTMLElement;\n scroller.tabIndex = -1;\n // Put it back once focus has actually moved (a timer can run first).\n cell.addEventListener(\n 'focusout',\n () => {\n scroller.removeAttribute('tabindex');\n },\n { once: true },\n );\n return;\n }\n const inHeader = cell.getAttribute('role') === 'columnheader';\n const { key } = event;\n if (inHeader && event.altKey && (key === 'ArrowLeft' || key === 'ArrowRight')) {\n event.preventDefault();\n // Logical: the arrow pointing toward the inline end grows the column.\n const towardEnd = (key === 'ArrowRight') === (this.#direction() === 1);\n this.#requestResize(\n id,\n this.#currentWidth(id, cell) + (towardEnd ? RESIZE_STEP : -RESIZE_STEP),\n );\n return;\n }\n if (inHeader && (key === 'Enter' || key === ' ') && cell.dataset.sortCol !== undefined) {\n event.preventDefault();\n this.#requestSort(id);\n return;\n }\n if (event.altKey || event.ctrlKey || event.metaKey || event.shiftKey) return;\n if (!inHeader && key === 'Enter') {\n // Enter on a body cell does what a click does.\n event.preventDefault();\n this.#activate(event.composedPath());\n return;\n }\n const model = this.#table.model;\n const columns = model.columns;\n let row = inHeader ? -1 : rowIndexOf(cell.parentElement);\n let col = columns.findIndex((c) => c.id === id);\n switch (key) {\n case 'ArrowDown':\n row = Math.min(row + 1, model.rowCount - 1);\n break;\n case 'ArrowUp':\n row = Math.max(row - 1, -1);\n break;\n case 'ArrowRight':\n col += this.#direction();\n break;\n case 'ArrowLeft':\n col -= this.#direction();\n break;\n case 'Home':\n col = 0;\n break;\n case 'End':\n col = columns.length - 1;\n break;\n default:\n return;\n }\n event.preventDefault();\n const target = columns[Math.min(Math.max(col, 0), columns.length - 1)];\n if (target) this.#moveTo(row, target.id, model);\n };\n\n /** Focus that lands in a cell (a click, or content inside it) makes that cell active. */\n readonly #onFocusin = (event: FocusEvent) => {\n // Tab into the grid landed on the scroll container (Firefox makes it a tab\n // stop): move on to the grid's one tab stop, the active cell. Only when focus\n // came from outside the grid: coming from inside means the user is leaving,\n // and sending them back would trap the keyboard.\n const scroller = event.currentTarget as HTMLElement;\n if (event.composedPath()[0] === scroller) {\n const from = event.relatedTarget;\n if (!(from instanceof Node && scroller.contains(from))) {\n this.#focusPending = true;\n this.requestUpdate();\n }\n return;\n }\n for (const target of event.composedPath()) {\n const cell = gridCell(target);\n if (cell?.dataset.col !== undefined) {\n const index =\n cell.getAttribute('role') === 'columnheader' ? -1 : rowIndexOf(cell.parentElement);\n const { col } = cell.dataset;\n if (index !== this.#active?.index || col !== this.#active.col) {\n this.#active = { index, rowId: this.#table.model.rowAt(index)?.id, col };\n this.requestUpdate();\n }\n return;\n }\n if (target === event.currentTarget) return;\n }\n };\n\n /** `argus-cell-click`, then `argus-row-click`, for clicks in the body. */\n readonly #onClick = (event: MouseEvent) => {\n this.#activate(event.composedPath());\n };\n\n /**\n * Fires `argus-cell-click` (when a cell is on the path), then `argus-row-click`,\n * for the body row on an event path. Clicks and Enter on a body cell use it.\n */\n #activate(path: EventTarget[]): void {\n let columnId: string | undefined;\n for (const target of path) {\n if (!(target instanceof HTMLElement)) continue;\n const role = target.getAttribute('role');\n if (role === 'gridcell') columnId = target.dataset.col;\n if (role !== 'row') continue;\n const model = this.#table.model;\n const index = rowIndexOf(target);\n const row = index >= 0 ? model.rowAt(index) : undefined;\n if (!row) return;\n if (columnId !== undefined) {\n fire(this, CELL_CLICK, {\n row: row.original,\n columnId,\n value: model.valueAt(index, columnId),\n });\n }\n fire(this, ROW_CLICK, { row: row.original, rowId: row.id, index });\n return;\n }\n }\n\n /** Makes a cell active and focuses it after the update. The keep-rendered rule renders its row. */\n #moveTo(index: number, col: string, model: TableModel<T, CellContent>): void {\n this.#active = { index, rowId: index >= 0 ? model.rowAt(index)?.id : undefined, col };\n this.#focusPending = true;\n this.requestUpdate();\n }\n\n #focusActive(): void {\n const active = this.#active;\n if (!active) return;\n const col = CSS.escape(active.col);\n const selector =\n active.index === -1\n ? `[part~='header-row'] > [data-col=\"${col}\"]`\n : `[part~='body'] > [aria-rowindex=\"${String(active.index + 2)}\"] > [data-col=\"${col}\"]`;\n const cell = this.renderRoot.querySelector<HTMLElement>(selector);\n if (!cell) return;\n cell.scrollIntoView({ block: 'nearest', inline: 'nearest' });\n cell.focus({ preventScroll: true });\n }\n\n /**\n * Keeps the active cell valid after columns or rows change: on the same row id\n * when it still exists (it may have moved), else at the same index, clamped.\n * Defaults to the first header. If its row went away while the grid had focus,\n * focus follows to the replacement.\n */\n #reconcileActive(model: TableModel<T, CellContent>): void {\n const columns = model.columns;\n const first = columns[0];\n if (!first) {\n this.#active = undefined;\n return;\n }\n const prev = this.#active ?? { index: -1, rowId: undefined, col: first.id };\n const col = columns.some((c) => c.id === prev.col) ? prev.col : first.id;\n let { index, rowId } = prev;\n if (rowId !== undefined) {\n const found = model.indexOf(rowId);\n if (found === undefined) {\n index = Math.min(index, model.rowCount - 1);\n rowId = model.rowAt(index)?.id;\n if (this.matches(':focus-within')) this.#focusPending = true;\n } else {\n index = found;\n }\n }\n if (index !== prev.index || rowId !== prev.rowId || col !== prev.col || !this.#active) {\n this.#active = { index, rowId, col };\n }\n }\n\n /**\n * The width a resize starts from: the latest requested width (key presses can\n * come faster than renders), else the model's fixed width, else the rendered\n * width of a flex column.\n */\n #currentWidth(columnId: string, cell: HTMLElement): number {\n const sized = this.#sizing.value[columnId];\n if (sized !== undefined) return sized;\n const view = this.#table.model.columns.find((c) => c.id === columnId);\n return view && view.flex === undefined ? view.width : cell.getBoundingClientRect().width;\n }\n\n #direction(): 1 | -1 {\n return getComputedStyle(this).direction === 'rtl' ? -1 : 1;\n }\n\n /** Sets one column's width (clamped by core), through the controlled/uncontrolled rules. */\n #requestResize(columnId: string, width: number): void {\n const next = this.#table.model.nextSizing(columnId, width);\n const target = next?.[columnId];\n if (!next || target === undefined || target === this.#sizing.value[columnId]) return;\n const old = this.#sizing.value;\n const { value, applied } = this.#sizing.request(next);\n const detail = { columnId, width: target, sizing: value };\n if (applied) {\n this.#appliedResize = detail;\n this.requestUpdate('columnSizing', old);\n } else {\n fire(this, COLUMN_RESIZE, detail);\n }\n }\n\n /** asc → desc → unsorted, through the controlled/uncontrolled rules. */\n #requestSort(columnId: string): void {\n const next = this.#table.model.nextSorting(columnId);\n if (!next) return;\n const old = this.#sorting.value;\n const { value, applied } = this.#sorting.request(next);\n if (applied) {\n this.#appliedSort = value;\n this.requestUpdate('sorting', old);\n } else {\n fire(this, SORT_CHANGE, { sorting: value });\n }\n }\n\n #observeProbe(): void {\n const probe = this.renderRoot.querySelector('.probe');\n if (!probe) return;\n this.#probeObserver ??= new ResizeObserver(() => {\n this.#measureRowHeight();\n });\n this.#probeObserver.observe(probe);\n }\n\n /** Reads the resolved row height, so themes and density change the virtualizer too. */\n #measureRowHeight(): void {\n const probe = this.renderRoot.querySelector('.probe');\n const px = probe?.getBoundingClientRect().height ?? 0;\n if (px > 0 && Math.abs(px - this.#rowPx) > 0.01) {\n this.#rowPx = px;\n this.requestUpdate();\n }\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'argus-table': ArgusTable;\n }\n}\n"],"ignoreList":[0,1,2,3,4,5,6,7,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,51,52,53,54,55,56,59,60],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"argus-table.js","names":["t","e","s","o","n","r","i","S","c","i","e","h","r","o","n","a","c","l","p","d","u","f","b","y","t","s","t","i","s","e","h","o","n","r","l","c","u","d","f","v","m","p","M","j","s","i","t","e","r","o","t","o","e","t","r","n","t","e","i","n","i","e","r","s","t","memo","orderByColumnPinning","orderByColumnPinning","o","c","u","s","t","r","l","p","h","v","o","i","n","f","e","nothing","styleMap","repeat","nothing","repeat","repeat","nothing","nothing","styleMap","LitElement","_decorate","property","customElement","t$4","e$4","s$3","o$5","n$5","o","t","e","s","r$4","i$6","S$1","n","c$4","i$5","e$3","h$2","r$3","o$4","n$4","a$1","c$3","l$2","p$2","d$2","u$3","i","f$2","b$1","y$1","h","r","t$3","i$4","s$2","e$2","h$1","o$3","n$3","r$2","l$1","c$2","a","u$2","d$1","f$1","v$1","_","m$1","p$1","g","$","y","b","A","C","P","V","N","l","c","u","d","f","x","S","v","I","L","z","H","M$1","R","k","Z","j$1","B","D","s$1","i$3","\"finalized\"","o$2","t$2","o$1","r$1","n$2","t$1","e$1","i$2","n$1","i$1","pathCache","readPath","keys","path","value","source","key","finite","resolveColumns","seen","defs","def","index","minWidth","maxWidth","clamp","px","pin","flex","width","base","getValue","accessor","row","functionalUpdate","updater","input","cloneState","proto","copy","makeObjectMap","copyInstancePropertiesWithoutMemos","targetRecord","target","hasOwn","obj","makeStateUpdater","instance","old","isPlainContainer","getEnumerableOwnKeys","MAX_STATE_COMPARE_DEPTH","stateSlicesEqual","stateSlicesEqualAtDepth","depth","keysA","keysB","recordA","recordB","setStateSlice","onChangeKey","onChange","next","current","isEqual","isFunction","flattenBy","flat","recurse","item","children","getChildren","arr","memo$1","deps","result","newDeps","memoDeps","depArgs","depsChanged","onAfterCompare","onBeforeUpdate","fn","onAfterUpdate","skipFirstRun","hasRun","tableMemo","memoOptions","debugOptions","table","untrack","getFunctionNameInfo","parentName","fnKey","staticFnName","splitBy","assignTableAPIs","apis","assignPrototypeAPIs","memoKey","args","self","callMemoOrStaticFn","staticFn","cell_getValue","cell","cell_renderValue","cell_getContext","coreCellsFeature","prototype","getColumnPrototype","features","constructColumn","resolvedColumnDef","columnDef","accessorKey","accessorKeyString","id","accessorFn","originalRow","columnPrototype","column","parent","initFns","getIsColumnVisible","getVisibleLeafColumns","getVisibleCells","getVisibleCellsByColumnId","orderLeafColumns","orderedTable","leafColumns","columns","orderByColumnPinning$1","items","getColumnId","getItemsByColumnId","getPinnedVisibleLeafColumns","position","expandRowModel","rowModel","autoResetExpanded","autoResetPageIndex","autoResetSorting","autoResetCellSelection","column_getFlatColumns","col","column_getLeafColumns","table_getDefaultColumnDef","props","feature","constructColumns","columnDefs","groupingColumnDef","table_getAllColumns","table_getAllFlatColumns","table_getAllFlatColumnsById","flatColumns","table_getAllLeafColumns","table_getAllLeafColumnsById","table_getColumn","columnId","coreColumnsFeature","getHeaderPrototype","constructHeader","headerPrototype","header","options","getMaxHeaderDepth","maxDepth","formatHeaderGroupId","headerFamily","formatHeaderId","childHeaderId","countPendingHeadersForColumn","count","headers","constructHeaderGroup","headerGroup","pendingParentHeaders","headersToGroup","headerToGroup","latestPendingParentHeader","isLeafHeader","isPlaceholder","headerGroupInitFns","headerGroups","updateHeaderSpans","colSpan","j","child","rowSpan","chainChild","buildHeaderGroups","allColumns","bottomHeaders","columnsToGroup","collectLeafHeaders","leafHeaders","header_getLeafHeaders","header_getContext","table_getHeaderGroups","table_getFooterGroups","table_getFlatHeaders","table_getLeafHeaders","topHeaders","coreHeadersFeature","getRowPrototype","constructRow","rowPrototype","rowIndex","original","parentId","subRows","createCoreRowModel","_createCoreRowModel","accessRows","rows","originalRows","parentRow","data","table_getCoreRowModel","table_getPreFilteredRowModel","table_getFilteredRowModel","table_getPreGroupedRowModel","table_getGroupedRowModel","table_getPreSortedRowModel","table_getSortedRowModel","table_getPreExpandedRowModel","table_getExpandedRowModel","table_getPrePaginatedRowModel","table_getPaginatedRowModel","table_getRowModel","coreRowModelsFeature","getCellPrototype","constructCell","cellPrototype","row_getDisplayIndex","displayIndex","table_getRowsInDisplayOrder","row_getValue","row_getUniqueValues","row_renderValue","row_getLeafRows","table_getMaxSubRowDepth","row_getParentRow","row_getParentRows","parentRows","currentRow","row_getAllCells","cache","cells","row_getAllCellsByColumnId","table_getRowId","table_getRow","searchAll","rowId","coreRowsFeature","table_syncExternalStateToBaseAtoms","currentState","externalState","state","capturedState","baseAtom","rawExternalState","compare","table_publishExternalState","table_reset","snap","table_mergeOptions","newOptions","mergedOptions","descriptors","atoms","initialState","table_setOptions","coreFeatures","tableFeatures","atomToStore","store","atom","createReactiveSystem","link","prevDep","sub","dep","nextDep","version","prevSub","newLink","unlink","nextSub","unwatched","propagate","stack","flags","isValidLink","notify","subSubs","checkDirty","checkDepth","dirty","update","subs","shallowPropagate","firstSub","hasMultipleSubs","checkLink","toObserver","isObserver","nextHandler","errorHandler","completionHandler","queuedEffects","cycle","effect","purgeDeps","notifyIndex","queuedEffectsLength","activeSub","batchDepth","batch","flush","depsTail","createAtom","isComputed","valueOrFn","getter","obs","observerOrFn","observed","oldValue","newValue","run","effectObj","shallow","objA","objB","getOwnKeys","getInitialTableState","constructTable","_reactivity","tableOptions","_columnMeta","_filterMeta","_tableMeta","featuresList","atomKey","_atom","wrappedAtom","syncExternal","syncAtomToWrappedSub","syncWrappedToAtomSub","stateKeys","externalAtom","reactiveState","controlledState","controlledValue","snapshot","getDefaultColumnPinningState","column_pin","columnIds","column_getCanPin","leafColumn","column_getIsPinned","start","end","column_getPinnedIndex","row_getCenterVisibleCells","allCells","startAndEnd","row_getStartVisibleCells","allVisibleCells","row_getEndVisibleCells","table_setColumnPinning","table_resetColumnPinning","defaultState","table_getIsSomeColumnsPinned","pinningState","table_getStartHeaderGroups","leafColumnsById","orderedLeafColumns","table_getEndHeaderGroups","table_getCenterHeaderGroups","table_getStartFooterGroups","table_getEndFooterGroups","table_getCenterFooterGroups","table_getStartFlatHeaders","leftHeaderGroups","table_getEndFlatHeaders","rightHeaderGroups","table_getCenterFlatHeaders","centerHeaderGroups","table_getStartLeafHeaders","table_getEndLeafHeaders","table_getCenterLeafHeaders","table_getStartLeafColumns","table_getEndLeafColumns","table_getCenterLeafColumns","table_getPinnedLeafColumns","table_getStartVisibleLeafColumns","table_getEndVisibleLeafColumns","table_getCenterVisibleLeafColumns","table_getPinnedVisibleLeafColumns","orderByColumnPinning","columnPinning","itemsByColumnId","ordered","columnPinningFeature","getDefaultColumnSizingState","getDefaultColumnSizingColumnDef","column_getSize","defaultSizes","columnSizing","columnSize","buildColumnOffsets","starts","afters","sizes","size","after","table_getColumnOffsets","toOffsetsKey","column_getStart","column_getAfter","column_resetSize","rest","sumHeaderSize","sum","header_getSize","header_getStart","prevSiblingHeader","table_setColumnSizing","table_resetColumnSizing","sumColumnSizes","table_getTotalSize","table_getStartTotalSize","table_getCenterTotalSize","table_getEndTotalSize","columnSizingFeature","reSplitAlphaNumeric","constructSortFn","sortFn","dataValueA","rowA","dataValueB","rowB","resolveDataValue","sortFn_alphanumeric","toString","dataValue","compareAlphanumeric","sortFn_text","compareBasic","sortFn_datetime","toDateSortValue","sortFn_basic","ai","bi","aLen","aStr","bLen","bStr","aIsNumeric","isDigit","bIsNumeric","aEnd","findChunkEnd","bEnd","stringComparison","compareStringChunks","numericComparison","compareNumericChunks","countRemainingChunks","charCode","str","isNumeric","aLength","aStart","bLength","bStart","minLength","aCode","bCode","aSignificantStart","bSignificantStart","aSignificantLength","bSignificantLength","an","parseSmallInt","bn","getDefaultSortingState","table_setSorting","table_resetSorting","table_autoResetSorting","column_getAutoSortFn","sortFns","firstRows","sortFnName","isString","column_getAutoSortDir","column_getSortFn","column_toggleSorting","nextSortingOrder","column_getNextSortingOrder","multi","column_getCanMultiSort","hasManualValue","desc","existingIndex","existingSorting","newSorting","sortAction","nextDesc","isMultiMode","column_getFirstSortDir","firstSortDirection","isSorted","column_getIsSorted","column_getCanSort","columnSort","column_getSortIndex","column_clearSorting","column_getToggleSortingHandler","canSort","rowSortingFeature","createSortedRowModel","_table","_createSortedRowModel","preSortedRowModel","sorting","sortedFlatRows","availableSorting","sort","resolvedSorting","sortEntry","compareRows","sortUndefined","isDesc","sortInt","aValue","bValue","aUndefined","bUndefined","sortData","sortedData","changed","flatIndex","sortedSubRows","cloned","storeReactivityBindings","defaultRowId","toTanStack","createTableModel","initial","resolved","byId","tanStackColumns","views","rowViews","indexById","buildViews","center","view","merged","prev","clamped","controllable","controlled","RowPool","#size","#pinned","#slots","keep","ids","slot","#free","entries","SETTLE_MS","PinScrollController","#scroller","scroller","host","#attach","#attached","#onScroll","#resize","#timer","shadow","#left","startResizeDrag","startX","down","frame","pending","onWidth","move","startWidth","event","direction","handle","TableController","getMeasurementKey","createLazyMeasurementsView","prop","receiver","memo","opts","isInitial","memoizedFunction","getDeps","notUndefined","msg","approxEqual","debounce","timeoutId","targetWindow","ms","classifyScrollEvent","isScrolling","pendingWrite","offset","scrollOffset","elementMax","holdOffset","max","clampedMaxAtWrite","isAnimating","phase","externalRetiresCommand","kind","command","FLING_WINDOW_MS","flingSpedUp","last","samples","mid","first","recent","before","flingCaught","from","_isIOSResult","isIOSWebKit","mtp","_iosMomentumOverridesWritesResult","iosMomentumOverridesWrites","momentumOverridesWrites","touchListenerOptions","IosGesture","ownReadBack","external","moved","win","onTouchStart","onTouchEnd","tail","getRect","element","clientWidth","clientHeight","createFrameQueue","defaultKeyExtractor","defaultRangeExtractor","overscan","range","len","observeElementRect","handler","rect","height","frames","observer","addEventListenerOptions","supportsScrollend","observeOffset","registerScrollendEvent","fallback","cb","readOffset","createHandler","endHandler","observeElementOffset","horizontal","el","isRtl","measureElement","entry","box","cachedSize","elementScroll","_a","adjustedOffset","adjustments","isRtlElement","scrollElement","initialScrollPhase","behavior","atTarget","isSmoothScroll","isAppendWithTrim","nextCount","firstKey","getNextKey","removedKeys","removedCount","prevCount","getPreviousKey","retainedCount","Virtualizer","now","_b","_ro","_frames","delivering","observeQueued","pendingObservations","get","measureEntry","node","cacheKey","cachedNode","opts2","prevOptions","anchor","followOnAppend","edgeKeysChanged","measurements","previousItems","prevFirstKey","prevLastKey","anchorDelta","anchorKey","anchorOffset","newMeasurements","idx","getItemKey","anchorItem","newOffset","sync","cached","wasOverscrolled","elementOffset","prevOffset","prevDirection","queued","sample","maxAtWrite","lanes","itemSizeCache","enabled","min","need","runningStart","paddingStart","scrollMargin","prevIdx","gap","measuredSize","laneLastIndex","laneEnds","filledLanes","m","cachedLane","lane","shouldCacheLane","laneAssignmentMode","prevIndex","prevInLane","bestLane","bestEnd","bestIdx","outerSize","maxScrollOffset","listEnd","calculateRangeImpl","startIndex","endIndex","rangeExtractor","attributeName","indexStr","scrollIndex","bufferSize","minIndex","maxIndex","key2","prevNode","_c","itemStart","itemSize","delta","wasAtEnd","prevTotalSize","defaultShouldAdjust","shouldAdjustScroll","adjustedSync","virtualItems","indexes","measurement","hold","useFlat","findNearestBinarySearch","write","lowMaxes","doc","done","property","style","priority","crossSize","crossSizeBefore","stop","threshold","align","toOffset","maxOffset","toOffset2","initialAlign","offsetInfo","lastIdx","endByLane","val","writtenOffset","targetOffset","STABLE_FRAMES","targetChanged","viewport","distance","keepSmooth","low","high","middle","currentValue","getCurrentValue","findNearestBinarySearchFlat","lastIndex","startIndex2","endIndex2","limit","endPerLane","pos","startPerLane","VirtualizerControllerBase","partial","VirtualizerController","VirtualController","#virtual","#config","#pool","RANGE_CHANGE","SORT_CHANGE","COLUMN_RESIZE","ROW_CLICK","CELL_CLICK","fire","name","u$1","p","M","p$3","h$3","v$2","w","toChild","content","formatValue","cellSlot","colIndex","headerSlot","cellParts","parts","ariaSort","sorted","pinStyle","renderBody","totalSize","renderRow","active","activeCol","renderLightDom","model","headerContent","cellContent","context","renderHeader","handlers","resizeHandle","baseStyles","__decorate","decorators","attachGridInternals","internals","sortColumnOf","RESIZE_STEP","gridCell","role","rowIndexOf","pinShadow","side","rowPx","track","ArgusTable","_args","#sorting","#sizing","#internals","#table","#pinScroll","#rowPx","#window","#focusPending","#lastRange","#headerHandlers","#requestSort","#direction","#requestResize","#onKeydown","inHeader","towardEnd","#currentWidth","#activate","#moveTo","#onFocusin","#active","#onClick","#observeProbe","#probeObserver","#reconcileActive","pinnedWidth","pinned","bodyActive","#measureRowHeight","#focusActive","#appliedResize","detail","#appliedSort","selector","found","sized","applied","probe"],"sources":["../../../../node_modules/.pnpm/@lit+reactive-element@2.1.2/node_modules/@lit/reactive-element/css-tag.js","../../../../node_modules/.pnpm/@lit+reactive-element@2.1.2/node_modules/@lit/reactive-element/reactive-element.js","../../../../node_modules/.pnpm/lit-html@3.3.3/node_modules/lit-html/lit-html.js","../../../../node_modules/.pnpm/lit-element@4.2.2/node_modules/lit-element/lit-element.js","../../../../node_modules/.pnpm/@lit+reactive-element@2.1.2/node_modules/@lit/reactive-element/decorators/custom-element.js","../../../../node_modules/.pnpm/@lit+reactive-element@2.1.2/node_modules/@lit/reactive-element/decorators/property.js","../../../../node_modules/.pnpm/lit-html@3.3.3/node_modules/lit-html/directive.js","../../../../node_modules/.pnpm/lit-html@3.3.3/node_modules/lit-html/directives/style-map.js","../../../core/src/columns/resolve-columns.ts","../../../../node_modules/.pnpm/@tanstack+table-core@9.3.1/node_modules/@tanstack/table-core/dist/utils.js","../../../../node_modules/.pnpm/@tanstack+table-core@9.3.1/node_modules/@tanstack/table-core/dist/core/cells/coreCellsFeature.utils.js","../../../../node_modules/.pnpm/@tanstack+table-core@9.3.1/node_modules/@tanstack/table-core/dist/core/cells/coreCellsFeature.js","../../../../node_modules/.pnpm/@tanstack+table-core@9.3.1/node_modules/@tanstack/table-core/dist/core/columns/constructColumn.js","../../../../node_modules/.pnpm/@tanstack+table-core@9.3.1/node_modules/@tanstack/table-core/dist/core/featureStubs.js","../../../../node_modules/.pnpm/@tanstack+table-core@9.3.1/node_modules/@tanstack/table-core/dist/core/columns/coreColumnsFeature.utils.js","../../../../node_modules/.pnpm/@tanstack+table-core@9.3.1/node_modules/@tanstack/table-core/dist/core/columns/coreColumnsFeature.js","../../../../node_modules/.pnpm/@tanstack+table-core@9.3.1/node_modules/@tanstack/table-core/dist/core/headers/constructHeader.js","../../../../node_modules/.pnpm/@tanstack+table-core@9.3.1/node_modules/@tanstack/table-core/dist/core/headers/buildHeaderGroups.js","../../../../node_modules/.pnpm/@tanstack+table-core@9.3.1/node_modules/@tanstack/table-core/dist/core/headers/coreHeadersFeature.utils.js","../../../../node_modules/.pnpm/@tanstack+table-core@9.3.1/node_modules/@tanstack/table-core/dist/core/headers/coreHeadersFeature.js","../../../../node_modules/.pnpm/@tanstack+table-core@9.3.1/node_modules/@tanstack/table-core/dist/core/rows/constructRow.js","../../../../node_modules/.pnpm/@tanstack+table-core@9.3.1/node_modules/@tanstack/table-core/dist/core/row-models/createCoreRowModel.js","../../../../node_modules/.pnpm/@tanstack+table-core@9.3.1/node_modules/@tanstack/table-core/dist/core/row-models/coreRowModelsFeature.utils.js","../../../../node_modules/.pnpm/@tanstack+table-core@9.3.1/node_modules/@tanstack/table-core/dist/core/row-models/coreRowModelsFeature.js","../../../../node_modules/.pnpm/@tanstack+table-core@9.3.1/node_modules/@tanstack/table-core/dist/core/cells/constructCell.js","../../../../node_modules/.pnpm/@tanstack+table-core@9.3.1/node_modules/@tanstack/table-core/dist/core/rows/coreRowsFeature.utils.js","../../../../node_modules/.pnpm/@tanstack+table-core@9.3.1/node_modules/@tanstack/table-core/dist/core/rows/coreRowsFeature.js","../../../../node_modules/.pnpm/@tanstack+table-core@9.3.1/node_modules/@tanstack/table-core/dist/core/table/coreTablesFeature.utils.js","../../../../node_modules/.pnpm/@tanstack+table-core@9.3.1/node_modules/@tanstack/table-core/dist/core/table/coreTablesFeature.js","../../../../node_modules/.pnpm/@tanstack+table-core@9.3.1/node_modules/@tanstack/table-core/dist/core/coreFeatures.js","../../../../node_modules/.pnpm/@tanstack+table-core@9.3.1/node_modules/@tanstack/table-core/dist/helpers/tableFeatures.js","../../../../node_modules/.pnpm/@tanstack+table-core@9.3.1/node_modules/@tanstack/table-core/dist/core/reactivity/coreReactivityFeature.utils.js","../../../../node_modules/.pnpm/@tanstack+store@0.11.2/node_modules/@tanstack/store/dist/alien.js","../../../../node_modules/.pnpm/@tanstack+store@0.11.2/node_modules/@tanstack/store/dist/atom.js","../../../../node_modules/.pnpm/@tanstack+store@0.11.2/node_modules/@tanstack/store/dist/shallow.js","../../../../node_modules/.pnpm/@tanstack+table-core@9.3.1/node_modules/@tanstack/table-core/dist/core/table/constructTable.js","../../../../node_modules/.pnpm/@tanstack+table-core@9.3.1/node_modules/@tanstack/table-core/dist/features/column-pinning/columnPinningFeature.utils.js","../../../../node_modules/.pnpm/@tanstack+table-core@9.3.1/node_modules/@tanstack/table-core/dist/features/column-pinning/orderByColumnPinning.js","../../../../node_modules/.pnpm/@tanstack+table-core@9.3.1/node_modules/@tanstack/table-core/dist/features/column-pinning/columnPinningFeature.js","../../../../node_modules/.pnpm/@tanstack+table-core@9.3.1/node_modules/@tanstack/table-core/dist/features/column-sizing/columnSizingFeature.utils.js","../../../../node_modules/.pnpm/@tanstack+table-core@9.3.1/node_modules/@tanstack/table-core/dist/features/column-sizing/columnSizingFeature.js","../../../../node_modules/.pnpm/@tanstack+table-core@9.3.1/node_modules/@tanstack/table-core/dist/features/row-sorting/sortFns.js","../../../../node_modules/.pnpm/@tanstack+table-core@9.3.1/node_modules/@tanstack/table-core/dist/features/row-sorting/rowSortingFeature.utils.js","../../../../node_modules/.pnpm/@tanstack+table-core@9.3.1/node_modules/@tanstack/table-core/dist/features/row-sorting/rowSortingFeature.js","../../../../node_modules/.pnpm/@tanstack+table-core@9.3.1/node_modules/@tanstack/table-core/dist/features/row-sorting/createSortedRowModel.js","../../../../node_modules/.pnpm/@tanstack+table-core@9.3.1/node_modules/@tanstack/table-core/dist/store-reactivity-bindings.js","../../../core/src/table/create-table.ts","../../../core/src/state/controllable.ts","../../../core/src/virtual/row-pool.ts","../../src/controllers/pin-scroll-controller.ts","../../src/controllers/resize-drag.ts","../../src/controllers/table-controller.ts","../../../../node_modules/.pnpm/@tanstack+virtual-core@3.19.11/node_modules/@tanstack/virtual-core/dist/esm/lazy-measurements.js","../../../../node_modules/.pnpm/@tanstack+virtual-core@3.19.11/node_modules/@tanstack/virtual-core/dist/esm/utils.js","../../../../node_modules/.pnpm/@tanstack+virtual-core@3.19.11/node_modules/@tanstack/virtual-core/dist/esm/scroll-classifier.js","../../../../node_modules/.pnpm/@tanstack+virtual-core@3.19.11/node_modules/@tanstack/virtual-core/dist/esm/ios-gesture.js","../../../../node_modules/.pnpm/@tanstack+virtual-core@3.19.11/node_modules/@tanstack/virtual-core/dist/esm/index.js","../../../../node_modules/.pnpm/@tanstack+lit-virtual@3.15.3_lit@3.3.3/node_modules/@tanstack/lit-virtual/dist/esm/index.js","../../src/controllers/virtual-controller.ts","../../src/events.ts","../../../../node_modules/.pnpm/lit-html@3.3.3/node_modules/lit-html/directive-helpers.js","../../../../node_modules/.pnpm/lit-html@3.3.3/node_modules/lit-html/directives/repeat.js","../../src/render/content.ts","../../src/render/body.ts","../../src/render/cells.ts","../../src/render/header.ts","../../src/styles/base.ts","../../src/argus-table.ts"],"sourcesContent":["/**\n * @license\n * Copyright 2019 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst t=globalThis,e=t.ShadowRoot&&(void 0===t.ShadyCSS||t.ShadyCSS.nativeShadow)&&\"adoptedStyleSheets\"in Document.prototype&&\"replace\"in CSSStyleSheet.prototype,s=Symbol(),o=new WeakMap;class n{constructor(t,e,o){if(this._$cssResult$=!0,o!==s)throw Error(\"CSSResult is not constructable. Use `unsafeCSS` or `css` instead.\");this.cssText=t,this.t=e}get styleSheet(){let t=this.o;const s=this.t;if(e&&void 0===t){const e=void 0!==s&&1===s.length;e&&(t=o.get(s)),void 0===t&&((this.o=t=new CSSStyleSheet).replaceSync(this.cssText),e&&o.set(s,t))}return t}toString(){return this.cssText}}const r=t=>new n(\"string\"==typeof t?t:t+\"\",void 0,s),i=(t,...e)=>{const o=1===t.length?t[0]:e.reduce((e,s,o)=>e+(t=>{if(!0===t._$cssResult$)return t.cssText;if(\"number\"==typeof t)return t;throw Error(\"Value passed to 'css' function must be a 'css' function result: \"+t+\". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.\")})(s)+t[o+1],t[0]);return new n(o,t,s)},S=(s,o)=>{if(e)s.adoptedStyleSheets=o.map(t=>t instanceof CSSStyleSheet?t:t.styleSheet);else for(const e of o){const o=document.createElement(\"style\"),n=t.litNonce;void 0!==n&&o.setAttribute(\"nonce\",n),o.textContent=e.cssText,s.appendChild(o)}},c=e?t=>t:t=>t instanceof CSSStyleSheet?(t=>{let e=\"\";for(const s of t.cssRules)e+=s.cssText;return r(e)})(t):t;export{n as CSSResult,S as adoptStyles,i as css,c as getCompatibleStyle,e as supportsAdoptingStyleSheets,r as unsafeCSS};\n//# sourceMappingURL=css-tag.js.map\n","import{getCompatibleStyle as t,adoptStyles as s}from\"./css-tag.js\";export{CSSResult,css,supportsAdoptingStyleSheets,unsafeCSS}from\"./css-tag.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */const{is:i,defineProperty:e,getOwnPropertyDescriptor:h,getOwnPropertyNames:r,getOwnPropertySymbols:o,getPrototypeOf:n}=Object,a=globalThis,c=a.trustedTypes,l=c?c.emptyScript:\"\",p=a.reactiveElementPolyfillSupport,d=(t,s)=>t,u={toAttribute(t,s){switch(s){case Boolean:t=t?l:null;break;case Object:case Array:t=null==t?t:JSON.stringify(t)}return t},fromAttribute(t,s){let i=t;switch(s){case Boolean:i=null!==t;break;case Number:i=null===t?null:Number(t);break;case Object:case Array:try{i=JSON.parse(t)}catch(t){i=null}}return i}},f=(t,s)=>!i(t,s),b={attribute:!0,type:String,converter:u,reflect:!1,useDefault:!1,hasChanged:f};Symbol.metadata??=Symbol(\"metadata\"),a.litPropertyMetadata??=new WeakMap;class y extends HTMLElement{static addInitializer(t){this._$Ei(),(this.l??=[]).push(t)}static get observedAttributes(){return this.finalize(),this._$Eh&&[...this._$Eh.keys()]}static createProperty(t,s=b){if(s.state&&(s.attribute=!1),this._$Ei(),this.prototype.hasOwnProperty(t)&&((s=Object.create(s)).wrapped=!0),this.elementProperties.set(t,s),!s.noAccessor){const i=Symbol(),h=this.getPropertyDescriptor(t,i,s);void 0!==h&&e(this.prototype,t,h)}}static getPropertyDescriptor(t,s,i){const{get:e,set:r}=h(this.prototype,t)??{get(){return this[s]},set(t){this[s]=t}};return{get:e,set(s){const h=e?.call(this);r?.call(this,s),this.requestUpdate(t,h,i)},configurable:!0,enumerable:!0}}static getPropertyOptions(t){return this.elementProperties.get(t)??b}static _$Ei(){if(this.hasOwnProperty(d(\"elementProperties\")))return;const t=n(this);t.finalize(),void 0!==t.l&&(this.l=[...t.l]),this.elementProperties=new Map(t.elementProperties)}static finalize(){if(this.hasOwnProperty(d(\"finalized\")))return;if(this.finalized=!0,this._$Ei(),this.hasOwnProperty(d(\"properties\"))){const t=this.properties,s=[...r(t),...o(t)];for(const i of s)this.createProperty(i,t[i])}const t=this[Symbol.metadata];if(null!==t){const s=litPropertyMetadata.get(t);if(void 0!==s)for(const[t,i]of s)this.elementProperties.set(t,i)}this._$Eh=new Map;for(const[t,s]of this.elementProperties){const i=this._$Eu(t,s);void 0!==i&&this._$Eh.set(i,t)}this.elementStyles=this.finalizeStyles(this.styles)}static finalizeStyles(s){const i=[];if(Array.isArray(s)){const e=new Set(s.flat(1/0).reverse());for(const s of e)i.unshift(t(s))}else void 0!==s&&i.push(t(s));return i}static _$Eu(t,s){const i=s.attribute;return!1===i?void 0:\"string\"==typeof i?i:\"string\"==typeof t?t.toLowerCase():void 0}constructor(){super(),this._$Ep=void 0,this.isUpdatePending=!1,this.hasUpdated=!1,this._$Em=null,this._$Ev()}_$Ev(){this._$ES=new Promise(t=>this.enableUpdating=t),this._$AL=new Map,this._$E_(),this.requestUpdate(),this.constructor.l?.forEach(t=>t(this))}addController(t){(this._$EO??=new Set).add(t),void 0!==this.renderRoot&&this.isConnected&&t.hostConnected?.()}removeController(t){this._$EO?.delete(t)}_$E_(){const t=new Map,s=this.constructor.elementProperties;for(const i of s.keys())this.hasOwnProperty(i)&&(t.set(i,this[i]),delete this[i]);t.size>0&&(this._$Ep=t)}createRenderRoot(){const t=this.shadowRoot??this.attachShadow(this.constructor.shadowRootOptions);return s(t,this.constructor.elementStyles),t}connectedCallback(){this.renderRoot??=this.createRenderRoot(),this.enableUpdating(!0),this._$EO?.forEach(t=>t.hostConnected?.())}enableUpdating(t){}disconnectedCallback(){this._$EO?.forEach(t=>t.hostDisconnected?.())}attributeChangedCallback(t,s,i){this._$AK(t,i)}_$ET(t,s){const i=this.constructor.elementProperties.get(t),e=this.constructor._$Eu(t,i);if(void 0!==e&&!0===i.reflect){const h=(void 0!==i.converter?.toAttribute?i.converter:u).toAttribute(s,i.type);this._$Em=t,null==h?this.removeAttribute(e):this.setAttribute(e,h),this._$Em=null}}_$AK(t,s){const i=this.constructor,e=i._$Eh.get(t);if(void 0!==e&&this._$Em!==e){const t=i.getPropertyOptions(e),h=\"function\"==typeof t.converter?{fromAttribute:t.converter}:void 0!==t.converter?.fromAttribute?t.converter:u;this._$Em=e;const r=h.fromAttribute(s,t.type);this[e]=r??this._$Ej?.get(e)??r,this._$Em=null}}requestUpdate(t,s,i,e=!1,h){if(void 0!==t){const r=this.constructor;if(!1===e&&(h=this[t]),i??=r.getPropertyOptions(t),!((i.hasChanged??f)(h,s)||i.useDefault&&i.reflect&&h===this._$Ej?.get(t)&&!this.hasAttribute(r._$Eu(t,i))))return;this.C(t,s,i)}!1===this.isUpdatePending&&(this._$ES=this._$EP())}C(t,s,{useDefault:i,reflect:e,wrapped:h},r){i&&!(this._$Ej??=new Map).has(t)&&(this._$Ej.set(t,r??s??this[t]),!0!==h||void 0!==r)||(this._$AL.has(t)||(this.hasUpdated||i||(s=void 0),this._$AL.set(t,s)),!0===e&&this._$Em!==t&&(this._$Eq??=new Set).add(t))}async _$EP(){this.isUpdatePending=!0;try{await this._$ES}catch(t){Promise.reject(t)}const t=this.scheduleUpdate();return null!=t&&await t,!this.isUpdatePending}scheduleUpdate(){return this.performUpdate()}performUpdate(){if(!this.isUpdatePending)return;if(!this.hasUpdated){if(this.renderRoot??=this.createRenderRoot(),this._$Ep){for(const[t,s]of this._$Ep)this[t]=s;this._$Ep=void 0}const t=this.constructor.elementProperties;if(t.size>0)for(const[s,i]of t){const{wrapped:t}=i,e=this[s];!0!==t||this._$AL.has(s)||void 0===e||this.C(s,void 0,i,e)}}let t=!1;const s=this._$AL;try{t=this.shouldUpdate(s),t?(this.willUpdate(s),this._$EO?.forEach(t=>t.hostUpdate?.()),this.update(s)):this._$EM()}catch(s){throw t=!1,this._$EM(),s}t&&this._$AE(s)}willUpdate(t){}_$AE(t){this._$EO?.forEach(t=>t.hostUpdated?.()),this.hasUpdated||(this.hasUpdated=!0,this.firstUpdated(t)),this.updated(t)}_$EM(){this._$AL=new Map,this.isUpdatePending=!1}get updateComplete(){return this.getUpdateComplete()}getUpdateComplete(){return this._$ES}shouldUpdate(t){return!0}update(t){this._$Eq&&=this._$Eq.forEach(t=>this._$ET(t,this[t])),this._$EM()}updated(t){}firstUpdated(t){}}y.elementStyles=[],y.shadowRootOptions={mode:\"open\"},y[d(\"elementProperties\")]=new Map,y[d(\"finalized\")]=new Map,p?.({ReactiveElement:y}),(a.reactiveElementVersions??=[]).push(\"2.1.2\");export{y as ReactiveElement,s as adoptStyles,u as defaultConverter,t as getCompatibleStyle,f as notEqual};\n//# sourceMappingURL=reactive-element.js.map\n","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst t=globalThis,i=t=>t,s=t.trustedTypes,e=s?s.createPolicy(\"lit-html\",{createHTML:t=>t}):void 0,h=\"$lit$\",o=`lit$${Math.random().toFixed(9).slice(2)}$`,n=\"?\"+o,r=`<${n}>`,l=document,c=()=>l.createComment(\"\"),a=t=>null===t||\"object\"!=typeof t&&\"function\"!=typeof t,u=Array.isArray,d=t=>u(t)||\"function\"==typeof t?.[Symbol.iterator],f=\"[ \\t\\n\\f\\r]\",v=/<(?:(!--|\\/[^a-zA-Z])|(\\/?[a-zA-Z][^>\\s]*)|(\\/?$))/g,_=/-->/g,m=/>/g,p=RegExp(`>|${f}(?:([^\\\\s\"'>=/]+)(${f}*=${f}*(?:[^ \\t\\n\\f\\r\"'\\`<>=]|(\"|')|))|$)`,\"g\"),g=/'/g,$=/\"/g,y=/^(?:script|style|textarea|title)$/i,x=t=>(i,...s)=>({_$litType$:t,strings:i,values:s}),b=x(1),w=x(2),T=x(3),E=Symbol.for(\"lit-noChange\"),A=Symbol.for(\"lit-nothing\"),C=new WeakMap,P=l.createTreeWalker(l,129);function V(t,i){if(!u(t)||!t.hasOwnProperty(\"raw\"))throw Error(\"invalid template strings array\");return void 0!==e?e.createHTML(i):i}const N=(t,i)=>{const s=t.length-1,e=[];let n,l=2===i?\"<svg>\":3===i?\"<math>\":\"\",c=v;for(let i=0;i<s;i++){const s=t[i];let a,u,d=-1,f=0;for(;f<s.length&&(c.lastIndex=f,u=c.exec(s),null!==u);)f=c.lastIndex,c===v?\"!--\"===u[1]?c=_:void 0!==u[1]?c=m:void 0!==u[2]?(y.test(u[2])&&(n=RegExp(\"</\"+u[2],\"g\")),c=p):void 0!==u[3]&&(c=p):c===p?\">\"===u[0]?(c=n??v,d=-1):void 0===u[1]?d=-2:(d=c.lastIndex-u[2].length,a=u[1],c=void 0===u[3]?p:'\"'===u[3]?$:g):c===$||c===g?c=p:c===_||c===m?c=v:(c=p,n=void 0);const x=c===p&&t[i+1].startsWith(\"/>\")?\" \":\"\";l+=c===v?s+r:d>=0?(e.push(a),s.slice(0,d)+h+s.slice(d)+o+x):s+o+(-2===d?i:x)}return[V(t,l+(t[s]||\"<?>\")+(2===i?\"</svg>\":3===i?\"</math>\":\"\")),e]};class S{constructor({strings:t,_$litType$:i},e){let r;this.parts=[];let l=0,a=0;const u=t.length-1,d=this.parts,[f,v]=N(t,i);if(this.el=S.createElement(f,e),P.currentNode=this.el.content,2===i||3===i){const t=this.el.content.firstChild;t.replaceWith(...t.childNodes)}for(;null!==(r=P.nextNode())&&d.length<u;){if(1===r.nodeType){if(r.hasAttributes())for(const t of r.getAttributeNames())if(t.endsWith(h)){const i=v[a++],s=r.getAttribute(t).split(o),e=/([.?@])?(.*)/.exec(i);d.push({type:1,index:l,name:e[2],strings:s,ctor:\".\"===e[1]?I:\"?\"===e[1]?L:\"@\"===e[1]?z:H}),r.removeAttribute(t)}else t.startsWith(o)&&(d.push({type:6,index:l}),r.removeAttribute(t));if(y.test(r.tagName)){const t=r.textContent.split(o),i=t.length-1;if(i>0){r.textContent=s?s.emptyScript:\"\";for(let s=0;s<i;s++)r.append(t[s],c()),P.nextNode(),d.push({type:2,index:++l});r.append(t[i],c())}}}else if(8===r.nodeType)if(r.data===n)d.push({type:2,index:l});else{let t=-1;for(;-1!==(t=r.data.indexOf(o,t+1));)d.push({type:7,index:l}),t+=o.length-1}l++}}static createElement(t,i){const s=l.createElement(\"template\");return s.innerHTML=t,s}}function M(t,i,s=t,e){if(i===E)return i;let h=void 0!==e?s._$Co?.[e]:s._$Cl;const o=a(i)?void 0:i._$litDirective$;return h?.constructor!==o&&(h?._$AO?.(!1),void 0===o?h=void 0:(h=new o(t),h._$AT(t,s,e)),void 0!==e?(s._$Co??=[])[e]=h:s._$Cl=h),void 0!==h&&(i=M(t,h._$AS(t,i.values),h,e)),i}class R{constructor(t,i){this._$AV=[],this._$AN=void 0,this._$AD=t,this._$AM=i}get parentNode(){return this._$AM.parentNode}get _$AU(){return this._$AM._$AU}u(t){const{el:{content:i},parts:s}=this._$AD,e=(t?.creationScope??l).importNode(i,!0);P.currentNode=e;let h=P.nextNode(),o=0,n=0,r=s[0];for(;void 0!==r;){if(o===r.index){let i;2===r.type?i=new k(h,h.nextSibling,this,t):1===r.type?i=new r.ctor(h,r.name,r.strings,this,t):6===r.type&&(i=new Z(h,this,t)),this._$AV.push(i),r=s[++n]}o!==r?.index&&(h=P.nextNode(),o++)}return P.currentNode=l,e}p(t){let i=0;for(const s of this._$AV)void 0!==s&&(void 0!==s.strings?(s._$AI(t,s,i),i+=s.strings.length-2):s._$AI(t[i])),i++}}class k{get _$AU(){return this._$AM?._$AU??this._$Cv}constructor(t,i,s,e){this.type=2,this._$AH=A,this._$AN=void 0,this._$AA=t,this._$AB=i,this._$AM=s,this.options=e,this._$Cv=e?.isConnected??!0}get parentNode(){let t=this._$AA.parentNode;const i=this._$AM;return void 0!==i&&11===t?.nodeType&&(t=i.parentNode),t}get startNode(){return this._$AA}get endNode(){return this._$AB}_$AI(t,i=this){t=M(this,t,i),a(t)?t===A||null==t||\"\"===t?(this._$AH!==A&&this._$AR(),this._$AH=A):t!==this._$AH&&t!==E&&this._(t):void 0!==t._$litType$?this.$(t):void 0!==t.nodeType?this.T(t):d(t)?this.k(t):this._(t)}O(t){return this._$AA.parentNode.insertBefore(t,this._$AB)}T(t){this._$AH!==t&&(this._$AR(),this._$AH=this.O(t))}_(t){this._$AH!==A&&a(this._$AH)?this._$AA.nextSibling.data=t:this.T(l.createTextNode(t)),this._$AH=t}$(t){const{values:i,_$litType$:s}=t,e=\"number\"==typeof s?this._$AC(t):(void 0===s.el&&(s.el=S.createElement(V(s.h,s.h[0]),this.options)),s);if(this._$AH?._$AD===e)this._$AH.p(i);else{const t=new R(e,this),s=t.u(this.options);t.p(i),this.T(s),this._$AH=t}}_$AC(t){let i=C.get(t.strings);return void 0===i&&C.set(t.strings,i=new S(t)),i}k(t){u(this._$AH)||(this._$AH=[],this._$AR());const i=this._$AH;let s,e=0;for(const h of t)e===i.length?i.push(s=new k(this.O(c()),this.O(c()),this,this.options)):s=i[e],s._$AI(h),e++;e<i.length&&(this._$AR(s&&s._$AB.nextSibling,e),i.length=e)}_$AR(t=this._$AA.nextSibling,s){for(this._$AP?.(!1,!0,s);t!==this._$AB;){const s=i(t).nextSibling;i(t).remove(),t=s}}setConnected(t){void 0===this._$AM&&(this._$Cv=t,this._$AP?.(t))}}class H{get tagName(){return this.element.tagName}get _$AU(){return this._$AM._$AU}constructor(t,i,s,e,h){this.type=1,this._$AH=A,this._$AN=void 0,this.element=t,this.name=i,this._$AM=e,this.options=h,s.length>2||\"\"!==s[0]||\"\"!==s[1]?(this._$AH=Array(s.length-1).fill(new String),this.strings=s):this._$AH=A}_$AI(t,i=this,s,e){const h=this.strings;let o=!1;if(void 0===h)t=M(this,t,i,0),o=!a(t)||t!==this._$AH&&t!==E,o&&(this._$AH=t);else{const e=t;let n,r;for(t=h[0],n=0;n<h.length-1;n++)r=M(this,e[s+n],i,n),r===E&&(r=this._$AH[n]),o||=!a(r)||r!==this._$AH[n],r===A?t=A:t!==A&&(t+=(r??\"\")+h[n+1]),this._$AH[n]=r}o&&!e&&this.j(t)}j(t){t===A?this.element.removeAttribute(this.name):this.element.setAttribute(this.name,t??\"\")}}class I extends H{constructor(){super(...arguments),this.type=3}j(t){this.element[this.name]=t===A?void 0:t}}class L extends H{constructor(){super(...arguments),this.type=4}j(t){this.element.toggleAttribute(this.name,!!t&&t!==A)}}class z extends H{constructor(t,i,s,e,h){super(t,i,s,e,h),this.type=5}_$AI(t,i=this){if((t=M(this,t,i,0)??A)===E)return;const s=this._$AH,e=t===A&&s!==A||t.capture!==s.capture||t.once!==s.once||t.passive!==s.passive,h=t!==A&&(s===A||e);e&&this.element.removeEventListener(this.name,this,s),h&&this.element.addEventListener(this.name,this,t),this._$AH=t}handleEvent(t){\"function\"==typeof this._$AH?this._$AH.call(this.options?.host??this.element,t):this._$AH.handleEvent(t)}}class Z{constructor(t,i,s){this.element=t,this.type=6,this._$AN=void 0,this._$AM=i,this.options=s}get _$AU(){return this._$AM._$AU}_$AI(t){M(this,t)}}const j={M:h,P:o,A:n,C:1,L:N,R,D:d,V:M,I:k,H,N:L,U:z,B:I,F:Z},B=t.litHtmlPolyfillSupport;B?.(S,k),(t.litHtmlVersions??=[]).push(\"3.3.3\");const D=(t,i,s)=>{const e=s?.renderBefore??i;let h=e._$litPart$;if(void 0===h){const t=s?.renderBefore??null;e._$litPart$=h=new k(i.insertBefore(c(),t),t,void 0,s??{})}return h._$AI(t),h};export{j as _$LH,b as html,T as mathml,E as noChange,A as nothing,D as render,w as svg};\n//# sourceMappingURL=lit-html.js.map\n","import{ReactiveElement as t}from\"@lit/reactive-element\";export*from\"@lit/reactive-element\";import{render as e,noChange as r}from\"lit-html\";export*from\"lit-html\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */const s=globalThis;class i extends t{constructor(){super(...arguments),this.renderOptions={host:this},this._$Do=void 0}createRenderRoot(){const t=super.createRenderRoot();return this.renderOptions.renderBefore??=t.firstChild,t}update(t){const r=this.render();this.hasUpdated||(this.renderOptions.isConnected=this.isConnected),super.update(t),this._$Do=e(r,this.renderRoot,this.renderOptions)}connectedCallback(){super.connectedCallback(),this._$Do?.setConnected(!0)}disconnectedCallback(){super.disconnectedCallback(),this._$Do?.setConnected(!1)}render(){return r}}i._$litElement$=!0,i[\"finalized\"]=!0,s.litElementHydrateSupport?.({LitElement:i});const o=s.litElementPolyfillSupport;o?.({LitElement:i});const n={_$AK:(t,e,r)=>{t._$AK(e,r)},_$AL:t=>t._$AL};(s.litElementVersions??=[]).push(\"4.2.2\");export{i as LitElement,n as _$LE};\n//# sourceMappingURL=lit-element.js.map\n","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst t=t=>(e,o)=>{void 0!==o?o.addInitializer(()=>{customElements.define(t,e)}):customElements.define(t,e)};export{t as customElement};\n//# sourceMappingURL=custom-element.js.map\n","import{notEqual as t,defaultConverter as e}from\"../reactive-element.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */const o={attribute:!0,type:String,converter:e,reflect:!1,hasChanged:t},r=(t=o,e,r)=>{const{kind:n,metadata:i}=r;let s=globalThis.litPropertyMetadata.get(i);if(void 0===s&&globalThis.litPropertyMetadata.set(i,s=new Map),\"setter\"===n&&((t=Object.create(t)).wrapped=!0),s.set(r.name,t),\"accessor\"===n){const{name:o}=r;return{set(r){const n=e.get.call(this);e.set.call(this,r),this.requestUpdate(o,n,t,!0,r)},init(e){return void 0!==e&&this.C(o,void 0,t,e),e}}}if(\"setter\"===n){const{name:o}=r;return function(r){const n=this[o];e.call(this,r),this.requestUpdate(o,n,t,!0,r)}}throw Error(\"Unsupported decorator location: \"+n)};function n(t){return(e,o)=>\"object\"==typeof o?r(t,e,o):((t,e,o)=>{const r=e.hasOwnProperty(o);return e.constructor.createProperty(o,t),r?Object.getOwnPropertyDescriptor(e,o):void 0})(t,e,o)}export{n as property,r as standardProperty};\n//# sourceMappingURL=property.js.map\n","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst t={ATTRIBUTE:1,CHILD:2,PROPERTY:3,BOOLEAN_ATTRIBUTE:4,EVENT:5,ELEMENT:6},e=t=>(...e)=>({_$litDirective$:t,values:e});class i{constructor(t){}get _$AU(){return this._$AM._$AU}_$AT(t,e,i){this._$Ct=t,this._$AM=e,this._$Ci=i}_$AS(t,e){return this.update(t,e)}update(t,e){return this.render(...e)}}export{i as Directive,t as PartType,e as directive};\n//# sourceMappingURL=directive.js.map\n","import{noChange as t}from\"../lit-html.js\";import{directive as e,Directive as r,PartType as s}from\"../directive.js\";\n/**\n * @license\n * Copyright 2018 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */const n=\"important\",i=\" !\"+n,o=e(class extends r{constructor(t){if(super(t),t.type!==s.ATTRIBUTE||\"style\"!==t.name||t.strings?.length>2)throw Error(\"The `styleMap` directive must be used in the `style` attribute and must be the only part in the attribute.\")}render(t){return Object.keys(t).reduce((e,r)=>{const s=t[r];return null==s?e:e+`${r=r.includes(\"-\")?r:r.replace(/(?:^(webkit|moz|ms|o)|)(?=[A-Z])/g,\"-$&\").toLowerCase()}:${s};`},\"\")}update(e,[r]){const{style:s}=e.element;if(void 0===this.ft)return this.ft=new Set(Object.keys(r)),this.render(r);for(const t of this.ft)null==r[t]&&(this.ft.delete(t),t.includes(\"-\")?s.removeProperty(t):s[t]=null);for(const t in r){const e=r[t];if(null!=e){this.ft.add(t);const r=\"string\"==typeof e&&e.endsWith(i);t.includes(\"-\")||r?s.setProperty(t,r?e.slice(0,-11):e,r?n:\"\"):s[t]=e}}return t}});export{o as styleMap};\n//# sourceMappingURL=style-map.js.map\n","import type { ColumnAlign, ColumnDef, ColumnPin } from '../types.js';\n\n/** Width used when a column sets none. */\nexport const DEFAULT_WIDTH = 150;\n/** Lower bound used when a column sets no `minWidth`. */\nexport const DEFAULT_MIN_WIDTH = 40;\n\n/** A column after defaults, bounds and the accessor have been resolved. */\nexport interface ResolvedColumn<TData, TContent> {\n id: string;\n /** Position in the `columns` array. */\n index: number;\n header: ColumnDef<TData, TContent>['header'];\n cell: ColumnDef<TData, TContent>['cell'];\n /** Reads the cell value; returns `undefined` when the column has no accessor. */\n getValue: (row: TData, index: number) => unknown;\n hasAccessor: boolean;\n /** Base width in px. For a flex column this is its minimum track size. */\n width: number;\n /** Share of free space for `{ flex }` columns, otherwise `undefined`. Pinned columns never flex. */\n flex: number | undefined;\n minWidth: number;\n maxWidth: number;\n pin: ColumnPin | undefined;\n sortable: boolean;\n resizable: boolean;\n align: ColumnAlign;\n}\n\nconst pathCache = new Map<string, readonly string[]>();\n\n/**\n * Reads a dotted property path such as `'customer.name'`. Returns `undefined`\n * as soon as a step is `null` or `undefined`, like optional chaining.\n */\nexport function readPath(source: unknown, path: string): unknown {\n let keys = pathCache.get(path);\n if (!keys) {\n keys = path.split('.');\n pathCache.set(path, keys);\n }\n let value: unknown = source;\n for (const key of keys) {\n if (value === null || value === undefined) return undefined;\n value = (value as Record<string, unknown>)[key];\n }\n return value;\n}\n\nfunction finite(value: number | undefined): number | undefined {\n return value !== undefined && Number.isFinite(value) ? value : undefined;\n}\n\n/**\n * Normalizes `ColumnDef`s: checks ids, applies defaults and clamps widths.\n *\n * @throws if an id is empty or used twice, because state and events are keyed by id.\n */\nexport function resolveColumns<TData, TContent>(\n defs: readonly ColumnDef<TData, TContent>[],\n): ResolvedColumn<TData, TContent>[] {\n const seen = new Set<string>();\n return defs.map((def, index) => {\n if (typeof def.id !== 'string' || def.id === '') {\n throw new Error(`argus-table: column at index ${String(index)} needs a non-empty string id.`);\n }\n if (seen.has(def.id)) {\n throw new Error(`argus-table: column id '${def.id}' is used more than once.`);\n }\n seen.add(def.id);\n\n const minWidth = Math.max(0, finite(def.minWidth) ?? DEFAULT_MIN_WIDTH);\n const maxWidth = Math.max(minWidth, finite(def.maxWidth) ?? Number.POSITIVE_INFINITY);\n const clamp = (px: number) => Math.min(maxWidth, Math.max(minWidth, px));\n\n const pin = def.pin === 'start' || def.pin === 'end' ? def.pin : undefined;\n const { width } = def;\n // Pinned columns need a known width for their sticky offsets, so they never flex.\n const flex =\n pin === undefined &&\n typeof width === 'object' &&\n Number.isFinite(width.flex) &&\n width.flex > 0\n ? width.flex\n : undefined;\n const base = flex !== undefined ? minWidth : clamp(finite(width as number) ?? DEFAULT_WIDTH);\n\n const { accessor } = def;\n const getValue: ResolvedColumn<TData, TContent>['getValue'] =\n typeof accessor === 'function'\n ? accessor\n : typeof accessor === 'string'\n ? (row) => readPath(row, accessor)\n : () => undefined;\n\n return {\n id: def.id,\n index,\n header: def.header,\n cell: def.cell,\n getValue,\n hasAccessor: accessor !== undefined,\n width: base,\n flex,\n minWidth,\n maxWidth,\n pin,\n sortable: def.sortable === true,\n resizable: def.resizable !== false,\n align: def.align ?? 'start',\n };\n });\n}\n","//#region src/utils.ts\n/**\n* Applies a TanStack updater to a value.\n*\n* If the updater is a function it is called with the previous value; otherwise the updater value is returned directly.\n*/\nfunction functionalUpdate(updater, input) {\n\treturn typeof updater === \"function\" ? updater(input) : updater;\n}\n/**\n* Clones table state values while preserving non-plain objects.\n*\n* Plain objects and arrays are copied recursively so state updates can avoid mutating existing references.\n*/\nfunction cloneState(value) {\n\tif (Array.isArray(value)) return value.map(cloneState);\n\tif (value && typeof value === \"object\") {\n\t\tconst proto = Object.getPrototypeOf(value);\n\t\tif (proto !== Object.prototype && proto !== null) return value;\n\t\tconst copy = proto === null ? makeObjectMap() : {};\n\t\tconst keys = Object.keys(value);\n\t\tfor (let i = 0; i < keys.length; i++) {\n\t\t\tconst key = keys[i];\n\t\t\tObject.defineProperty(copy, key, {\n\t\t\t\tconfigurable: true,\n\t\t\t\tenumerable: true,\n\t\t\t\tvalue: cloneState(value[key]),\n\t\t\t\twritable: true\n\t\t\t});\n\t\t}\n\t\treturn copy;\n\t}\n\treturn value;\n}\n/**\n* Copies prototype-instance own properties without carrying over lazy memo\n* closures or the per-row cell cache, both of which are bound to the source\n* instance (cached cells reference the source row).\n*/\nfunction copyInstancePropertiesWithoutMemos(target, source) {\n\tconst keys = Object.keys(source);\n\tconst targetRecord = target;\n\tfor (let i = 0; i < keys.length; i++) {\n\t\tconst key = keys[i];\n\t\tif (!key.startsWith(\"_memo_\") && key !== \"_cellsCache\") targetRecord[key] = source[key];\n\t}\n\treturn target;\n}\n/**\n* Creates an object intended only for string-keyed dictionary lookups.\n*\n* The null prototype keeps user-controlled ids such as `__proto__` and\n* `hasOwnProperty` as plain data keys.\n*/\nfunction makeObjectMap() {\n\treturn Object.create(null);\n}\n/**\n* Checks whether an object owns a key, including null-prototype dictionaries.\n*/\nfunction hasOwn(obj, key) {\n\treturn Object.prototype.hasOwnProperty.call(obj, key);\n}\n/**\n* Creates a table state updater for a single state slice.\n*\n* The updater writes through the table base atom for the slice and supports both value and functional updater forms.\n*/\nfunction makeStateUpdater(key, instance) {\n\treturn (updater) => {\n\t\t(instance.options.atoms?.[key] ?? instance.baseAtoms[key]).set((old) => functionalUpdate(updater, old));\n\t};\n}\n/**\n* Checks whether a value is an array or a plain (or null-prototype) object.\n* Class instances, dates, and other exotic values compare by reference only,\n* mirroring the `cloneState` plain-object policy.\n*/\nfunction isPlainContainer(value) {\n\tif (typeof value !== \"object\" || value === null) return false;\n\tif (Array.isArray(value)) return true;\n\tconst proto = Object.getPrototypeOf(value);\n\treturn proto === Object.prototype || proto === null;\n}\n/**\n* Returns every enumerable own key, including symbols and non-index array\n* properties. Keeping key presence explicit distinguishes sparse array holes\n* from entries whose value is `undefined`.\n*/\nfunction getEnumerableOwnKeys(value) {\n\treturn Reflect.ownKeys(value).filter((key) => Object.prototype.propertyIsEnumerable.call(value, key));\n}\nconst MAX_STATE_COMPARE_DEPTH = 3;\n/**\n* Structurally compares two state slice values as deeply as stock feature\n* state can nest and no deeper.\n*\n* Three container levels cover flat maps and arrays, arrays of state objects,\n* array-valued filter values, and `columnResizing.columnSizingStart` tuples.\n* Deeper containers and non-plain values compare by reference. A `false`\n* result is always safe: the state update simply proceeds.\n*/\nfunction stateSlicesEqual(a, b) {\n\treturn stateSlicesEqualAtDepth(a, b, MAX_STATE_COMPARE_DEPTH);\n}\nfunction stateSlicesEqualAtDepth(a, b, depth) {\n\tif (Object.is(a, b)) return true;\n\tif (depth <= 0 || !isPlainContainer(a) || !isPlainContainer(b)) return false;\n\tif (Array.isArray(a) || Array.isArray(b)) {\n\t\tif (!Array.isArray(a) || !Array.isArray(b) || a.length !== b.length) return false;\n\t}\n\tconst keysA = getEnumerableOwnKeys(a);\n\tconst keysB = getEnumerableOwnKeys(b);\n\tif (keysA.length !== keysB.length) return false;\n\tconst recordA = a;\n\tconst recordB = b;\n\tfor (let i = 0; i < keysA.length; i++) {\n\t\tconst key = keysA[i];\n\t\tif (!Object.prototype.propertyIsEnumerable.call(b, key)) return false;\n\t\tif (!stateSlicesEqualAtDepth(recordA[key], recordB[key], depth - 1)) return false;\n\t}\n\treturn true;\n}\n/**\n* Routes a state slice update through the slice's `on<State>Change` handler,\n* preserving the owner's current reference for structural no-ops.\n*\n* Equality is evaluated inside the updater received by the state owner, never\n* against the table's potentially stale controlled snapshot. This keeps\n* same-tick updates composable in queued host containers such as React state,\n* evaluates the original updater only when the owner applies it, and lets atom\n* owners suppress notifications by returning their existing reference.\n*\n* A user-provided change handler is still invoked for a no-op because only that\n* handler's state container can know its latest queued value. The guarded\n* updater returns that container's previous reference, preventing a state write\n* or render in state containers with identity bailout semantics.\n*\n* Hot-path slices that skip guarding entirely (selection maps that scale with\n* row count, pointer-frequency resize state) call their change handler\n* directly instead of routing through this util. Custom feature slices with a\n* cheaper or semantic-aware comparison can pass `isEqual` to override the\n* structural default.\n*/\nfunction setStateSlice(instance, key, updater, isEqual = stateSlicesEqual) {\n\tconst onChangeKey = `on${key.charAt(0).toUpperCase()}${key.slice(1)}Change`;\n\tconst onChange = instance.options[onChangeKey];\n\tif (!onChange) return;\n\tonChange((current) => {\n\t\tconst next = functionalUpdate(updater, current);\n\t\treturn isEqual(current, next) ? current : next;\n\t});\n}\n/**\n* Returns whether a value is a function.\n*/\nfunction isFunction(d) {\n\treturn d instanceof Function;\n}\n/**\n* Flattens a tree of nodes by recursively reading child nodes.\n*\n* The original nodes are preserved in depth-first order.\n*/\nfunction flattenBy(arr, getChildren) {\n\tconst flat = [];\n\tconst recurse = (subArr) => {\n\t\tsubArr.forEach((item) => {\n\t\t\tflat.push(item);\n\t\t\tconst children = getChildren(item);\n\t\t\tif (children.length) recurse(children);\n\t\t});\n\t};\n\trecurse(arr);\n\treturn flat;\n}\n/**\n* Creates a dependency-tracked memoized function for table internals.\n*\n* The memo recomputes only when its dependency tuple changes and can emit debug timing information.\n*/\nconst memo = ({ fn, memoDeps, onAfterCompare, onAfterUpdate, onBeforeCompare, onBeforeUpdate }) => {\n\tlet deps = [];\n\tlet result;\n\tconst memoizedFn = (depArgs) => {\n\t\tonBeforeCompare?.();\n\t\tconst newDeps = memoDeps?.(depArgs);\n\t\tlet depsChanged = !newDeps || newDeps.length !== deps?.length;\n\t\tif (!depsChanged && newDeps) {\n\t\t\tfor (let i = 0; i < newDeps.length; i++) if (newDeps[i] !== deps[i]) {\n\t\t\t\tdepsChanged = true;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tonAfterCompare?.(depsChanged);\n\t\tif (!depsChanged) return result;\n\t\tdeps = newDeps;\n\t\tonBeforeUpdate?.();\n\t\tresult = fn(...newDeps ?? []);\n\t\tonAfterUpdate?.(result);\n\t\treturn result;\n\t};\n\treturn memoizedFn;\n};\n/**\n* Wraps a callback so that its first invocation is skipped.\n*\n* Row-model `onAfterUpdate` hooks schedule auto-resets when their inputs\n* change. The initial computation of a row model is not a change, so state\n* resets must not fire for it — otherwise merely reading a row model on mount\n* would wipe initial or controlled state.\n*/\nfunction skipFirstRun(fn) {\n\tlet hasRun = false;\n\treturn () => {\n\t\tif (!hasRun) {\n\t\t\thasRun = true;\n\t\t\treturn;\n\t\t}\n\t\tfn();\n\t};\n}\nconst pad = (str, num) => {\n\tstr = String(str);\n\twhile (str.length < num) str = \" \" + str;\n\treturn str;\n};\n/**\n* Creates a table-aware memoized function.\n*\n* This wraps `memo` with table debug options and feature metadata so row models and derived APIs can share consistent diagnostics.\n*/\nfunction tableMemo({ feature, fnName, objectId, onAfterUpdate, table, ...memoOptions }) {\n\tlet startCalcTime;\n\tlet endCalcTime;\n\tlet runCount = 0;\n\tlet debug;\n\tif (process.env.NODE_ENV === \"development\") {\n\t\tconst { debugAll } = table.options;\n\t\tconst { parentName } = getFunctionNameInfo(fnName, \".\");\n\t\tconst debugByParent = table.options[`debug${(parentName != \"table\" ? parentName + \"s\" : parentName).replace(parentName, parentName.charAt(0).toUpperCase() + parentName.slice(1))}`];\n\t\tconst debugByFeature = feature ? table.options[`debug${feature.charAt(0).toUpperCase() + feature.slice(1)}`] : false;\n\t\tdebug = debugAll || debugByParent || debugByFeature;\n\t}\n\tfunction logTime(time, depsChanged) {\n\t\tconst runType = runCount === 0 ? \"(1st run)\" : depsChanged ? \"(rerun #\" + runCount + \")\" : \"(cache)\";\n\t\trunCount++;\n\t\tconsole.groupCollapsed(`%c⏱ ${pad(`${time.toFixed(1)} ms`, 12)} %c${runType}%c ${fnName}%c ${objectId ? `(${fnName.split(\".\")[0]}Id: ${objectId})` : \"\"}`, `font-size: .6rem; font-weight: bold; ${depsChanged ? `color: hsl(\n ${Math.max(0, Math.min(120 - Math.log10(time) * 60, 120))}deg 100% 31%);` : \"\"} `, `color: ${runCount < 2 ? \"#FF00FF\" : \"#FF1493\"}`, \"color: #666\", \"color: #87CEEB\");\n\t\tconsole.info({\n\t\t\tfeature,\n\t\t\tstate: table.store.state,\n\t\t\tdeps: memoOptions.memoDeps?.toString()\n\t\t});\n\t\tconsole.trace();\n\t\tconsole.groupEnd();\n\t}\n\tconst onAfterUpdateHandler = onAfterUpdate ? () => {\n\t\tconst { schedule, untrack } = table._reactivity;\n\t\tschedule(() => untrack(() => onAfterUpdate()));\n\t} : void 0;\n\tconst debugOptions = process.env.NODE_ENV === \"development\" ? {\n\t\tonBeforeCompare: () => {},\n\t\tonAfterCompare: (depsChanged) => {},\n\t\tonBeforeUpdate: () => {\n\t\t\tif (debug) startCalcTime = performance.now();\n\t\t},\n\t\tonAfterUpdate: () => {\n\t\t\tif (debug) {\n\t\t\t\tendCalcTime = performance.now();\n\t\t\t\tlogTime(Math.round((endCalcTime - startCalcTime) * 100) / 100, true);\n\t\t\t}\n\t\t\tonAfterUpdateHandler?.();\n\t\t}\n\t} : { onAfterUpdate: onAfterUpdateHandler };\n\treturn memo({\n\t\t...memoOptions,\n\t\t...debugOptions\n\t});\n}\n/**\n* Assumes that a function name is in the format of `parentName_fnKey` and returns the `fnKey` and `fnName` in the format of `parentName.fnKey`.\n*\n* Splits on the first separator only, so an internal API name such as\n* `table__expandRows` has the `fnKey` `_expandRows`.\n*/\nfunction getFunctionNameInfo(staticFnName, splitBy = \"_\") {\n\tconst [parentName, fnKey] = staticFnName.replace(splitBy, \" \").split(\" \");\n\treturn {\n\t\tfnKey,\n\t\tfnName: `${parentName}.${fnKey}`,\n\t\tparentName\n\t};\n}\n/**\n* Assigns Table API methods directly to the table instance.\n* Unlike row/cell/column/header, the table is a singleton so methods are assigned directly.\n*/\nfunction assignTableAPIs(feature, table, apis) {\n\tfor (const [staticFnName, { fn, memoDeps }] of Object.entries(apis)) {\n\t\tconst { fnKey, fnName } = getFunctionNameInfo(staticFnName);\n\t\ttable[fnKey] = memoDeps ? tableMemo({\n\t\t\tmemoDeps,\n\t\t\tfn,\n\t\t\tfnName,\n\t\t\ttable,\n\t\t\tfeature\n\t\t}) : fn;\n\t}\n}\n/**\n* Assigns API methods to a prototype object for memory-efficient method sharing.\n* All instances created with this prototype will share the same method references.\n*\n* For memoized methods, the memo state is lazily created and stored on each instance.\n* This provides the best of both worlds: shared method code + per-instance caching.\n*/\nfunction assignPrototypeAPIs(feature, prototype, table, apis) {\n\tfor (const [staticFnName, { fn, memoDeps }] of Object.entries(apis)) {\n\t\tconst { fnKey, fnName } = getFunctionNameInfo(staticFnName);\n\t\tif (memoDeps) {\n\t\t\tconst memoKey = `_memo_${fnKey}`;\n\t\t\tprototype[fnKey] = function(...args) {\n\t\t\t\tif (!this[memoKey]) {\n\t\t\t\t\tconst self = this;\n\t\t\t\t\tthis[memoKey] = tableMemo({\n\t\t\t\t\t\tmemoDeps: (depArgs) => memoDeps(self, depArgs),\n\t\t\t\t\t\tfn: (...deps) => fn(self, ...deps),\n\t\t\t\t\t\tfnName,\n\t\t\t\t\t\tobjectId: self.id,\n\t\t\t\t\t\ttable,\n\t\t\t\t\t\tfeature\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\treturn this[memoKey](...args);\n\t\t\t};\n\t\t} else prototype[fnKey] = function(...args) {\n\t\t\treturn fn(this, ...args);\n\t\t};\n\t}\n}\n/**\n* Looks to run the memoized function with the builder pattern on the object if it exists, otherwise fall back to the static method passed in.\n*/\nfunction callMemoOrStaticFn(obj, fnKey, staticFn, ...args) {\n\treturn obj[fnKey]?.(...args) ?? staticFn(obj, ...args);\n}\n\n//#endregion\nexport { assignPrototypeAPIs, assignTableAPIs, callMemoOrStaticFn, cloneState, copyInstancePropertiesWithoutMemos, flattenBy, functionalUpdate, getFunctionNameInfo, hasOwn, isFunction, makeObjectMap, makeStateUpdater, memo, setStateSlice, skipFirstRun, stateSlicesEqual, tableMemo };","//#region src/core/cells/coreCellsFeature.utils.ts\n/**\n* Reads this cell's accessor value from its owning row and column.\n*\n* This is the standalone implementation behind `cell.getValue()`, useful when\n* importing static APIs instead of calling methods from the cell prototype.\n*\n* @example\n* ```ts\n* const value = cell_getValue(cell)\n* ```\n*/\nfunction cell_getValue(cell) {\n\treturn cell.row.getValue(cell.column.id);\n}\n/**\n* Reads the value that should be rendered for this cell.\n*\n* Nullish accessor values are replaced with `table.options.renderFallbackValue`,\n* matching the behavior of `cell.renderValue()`.\n*\n* @example\n* ```ts\n* const rendered = cell_renderValue(cell)\n* ```\n*/\nfunction cell_renderValue(cell) {\n\treturn cell.getValue() ?? cell.table.options.renderFallbackValue;\n}\n/**\n* Builds the render context passed to a column's `cell` template.\n*\n* The returned object includes stable references to the table, row, column, and\n* cell, plus bound `getValue` and `renderValue` helpers for render functions.\n*\n* @example\n* ```ts\n* const context = cell_getContext(cell)\n* ```\n*/\nfunction cell_getContext(cell) {\n\treturn {\n\t\ttable: cell.table,\n\t\tcolumn: cell.column,\n\t\trow: cell.row,\n\t\tcell,\n\t\tgetValue: () => cell.getValue(),\n\t\trenderValue: () => cell.renderValue()\n\t};\n}\n\n//#endregion\nexport { cell_getContext, cell_getValue, cell_renderValue };","import { assignPrototypeAPIs } from \"../../utils.js\";\nimport { cell_getContext, cell_getValue, cell_renderValue } from \"./coreCellsFeature.utils.js\";\n\n//#region src/core/cells/coreCellsFeature.ts\n/**\n* Core feature that adds cell value, render, and context APIs.\n*/\nconst coreCellsFeature = { assignCellPrototype: (prototype, table) => {\n\tassignPrototypeAPIs(\"coreCellsFeature\", prototype, table, {\n\t\tcell_getValue: { fn: (cell) => cell_getValue(cell) },\n\t\tcell_renderValue: { fn: (cell) => cell_renderValue(cell) },\n\t\tcell_getContext: {\n\t\t\tfn: (cell) => cell_getContext(cell),\n\t\t\tmemoDeps: (cell) => [cell]\n\t\t}\n\t});\n} };\n\n//#endregion\nexport { coreCellsFeature };","//#region src/core/columns/constructColumn.ts\n/**\n* Creates or retrieves the column prototype for a table.\n* The prototype is cached on the table and shared by all column instances.\n*/\nfunction getColumnPrototype(table) {\n\tif (!table._columnPrototype) {\n\t\ttable._columnPrototype = { table };\n\t\tconst features = Object.values(table._features);\n\t\tfor (let i = 0; i < features.length; i++) features[i].assignColumnPrototype?.(table._columnPrototype, table);\n\t}\n\treturn table._columnPrototype;\n}\n/**\n* Constructs a column instance from normalized table internals.\n*\n* This wires core properties, feature prototype APIs, and instance data used by table rendering and row-model operations.\n*/\nfunction constructColumn(table, columnDef, depth, parent) {\n\tconst resolvedColumnDef = {\n\t\t...table.getDefaultColumnDef(),\n\t\t...columnDef\n\t};\n\tconst accessorKey = resolvedColumnDef.accessorKey;\n\tconst accessorKeyString = accessorKey === void 0 ? void 0 : String(accessorKey);\n\tconst id = resolvedColumnDef.id ?? accessorKeyString?.replaceAll(\".\", \"_\") ?? (typeof resolvedColumnDef.header === \"string\" ? resolvedColumnDef.header : void 0);\n\tlet accessorFn;\n\tif (resolvedColumnDef.accessorFn) accessorFn = resolvedColumnDef.accessorFn;\n\telse if (accessorKey !== void 0) {\n\t\tif (typeof accessorKey === \"string\" && accessorKey.includes(\".\")) {\n\t\t\tconst keys = accessorKey.split(\".\");\n\t\t\taccessorFn = (originalRow) => {\n\t\t\t\tlet result = originalRow;\n\t\t\t\tfor (let i = 0; i < keys.length; i++) {\n\t\t\t\t\tconst key = keys[i];\n\t\t\t\t\tresult = result?.[key];\n\t\t\t\t\tif (process.env.NODE_ENV === \"development\" && result === void 0) console.warn(`\"${key}\" in deeply nested key \"${accessorKey}\" returned undefined.`);\n\t\t\t\t}\n\t\t\t\treturn result;\n\t\t\t};\n\t\t} else accessorFn = (originalRow) => originalRow[resolvedColumnDef.accessorKey];\n\t}\n\tif (!id) {\n\t\tif (process.env.NODE_ENV === \"development\") throw new Error(resolvedColumnDef.accessorFn ? `coreColumnsFeature require an id when using an accessorFn` : `coreColumnsFeature require an id when using a non-string header`);\n\t\tthrow new Error();\n\t}\n\tconst columnPrototype = getColumnPrototype(table);\n\tconst column = Object.create(columnPrototype);\n\tcolumn.accessorFn = accessorFn;\n\tcolumn.columnDef = resolvedColumnDef;\n\tcolumn.columns = [];\n\tcolumn.depth = depth;\n\tcolumn.id = `${String(id)}`;\n\tcolumn.parent = parent;\n\tconst initFns = table._columnInstanceInitFns;\n\tfor (let i = 0; i < initFns.length; i++) initFns[i](column);\n\treturn column;\n}\n\n//#endregion\nexport { constructColumn };","//#region src/core/featureStubs.ts\n/**\n* Stubs for optional features, used by the core and by any feature or row\n* model that reads another feature.\n*\n* Importing a feature's code from shared code would bundle that feature into\n* every table that uses the shared code, registered or not. A stub instead\n* calls a member the feature declares on its table, column, or row type and\n* assigns when it is registered, and otherwise behaves as if the feature were\n* absent. Members that only other features use are `_`-prefixed and marked\n* `@internal`, such as `table._expandRows`.\n*\n* How code in this package reaches other code:\n*\n* - Its own feature: call the static function, or `callMemoOrStaticFn` to use\n* the feature's memoized API.\n* - The core: import it. Every table bundles the core.\n* - Another feature's state: read `table.atoms.<slice>?.get()`.\n* - Another feature's APIs: call a stub from this file, adding one if needed.\n* - A feature it requires, such as column resizing requiring column sizing:\n* import it.\n*\n* Features assign functions, internal ones included, with `assignTableAPIs` or\n* `assignPrototypeAPIs`, and keep the `init*InstanceData` hooks for mutable\n* per-instance state. The `import/no-restricted-paths` lint rule rejects value\n* imports between feature folders outside an explicit list.\n*\n* Internal: not exported from any package entry point.\n*/\n/** Whether a column is visible; every column is without the feature. */\nfunction getIsColumnVisible(column) {\n\treturn column.getIsVisible?.() ?? true;\n}\n/** Visible leaf columns; all leaf columns without the feature. */\nfunction getVisibleLeafColumns(table) {\n\treturn table.getVisibleLeafColumns?.() ?? table.getAllLeafColumns();\n}\n/**\n* A row's visible cells; all cells, in leaf column order, without the\n* feature.\n*/\nfunction getVisibleCells(row) {\n\treturn row.getVisibleCells?.() ?? row.getAllCells();\n}\n/** A row's visible cells by column id; all cells without the feature. */\nfunction getVisibleCellsByColumnId(row) {\n\treturn row.getVisibleCellsByColumnId?.() ?? row.getAllCellsByColumnId();\n}\n/**\n* Orders leaf columns for display. The column ordering feature applies\n* `columnOrder` and moves grouped columns. Without it, the grouping feature\n* still moves grouped columns, and without either the order is unchanged.\n*/\nfunction orderLeafColumns(table, columns) {\n\tconst orderedTable = table;\n\tconst leafColumns = columns;\n\treturn orderedTable.getOrderColumnsFn?.()(leafColumns) ?? orderedTable._orderGroupedColumns?.(leafColumns) ?? columns;\n}\n/**\n* Orders items that each belong to a leaf column, such as visible leaf columns\n* or a row's visible cells, with start-pinned items first and end-pinned items\n* last. Without the feature, nothing is pinned and the order is unchanged.\n*/\nfunction orderByColumnPinning(table, items, getColumnId, getItemsByColumnId) {\n\treturn table._orderByColumnPinning?.(items, getColumnId, getItemsByColumnId) ?? items;\n}\n/**\n* Visible leaf columns in a pinning region. Without the feature, nothing is\n* pinned: the start and end regions are empty, and the center region and the\n* full list (`position` omitted) hold every visible leaf column.\n*/\nfunction getPinnedVisibleLeafColumns(table, position) {\n\treturn table.getPinnedVisibleLeafColumns?.(position) ?? (position && position !== \"center\" ? [] : getVisibleLeafColumns(table));\n}\n/** The resolved global filter function, if the feature is registered. */\nfunction getGlobalFilterFn(table) {\n\treturn table.getGlobalFilterFn?.();\n}\n/** Whether a column takes part in global filtering; none do without the feature. */\nfunction getCanGlobalFilter(column) {\n\treturn column.getCanGlobalFilter?.() ?? false;\n}\n/**\n* Lists expanded sub-rows inline below their parents. Without the feature no\n* row is expanded, so the row model is returned as is.\n*/\nfunction expandRowModel(table, rowModel) {\n\treturn table._expandRows?.(rowModel) ?? rowModel;\n}\n/**\n* Whether every parent of a row is expanded. Without the feature no row is\n* expanded, so only a top-level row qualifies.\n*/\nfunction getIsAllParentsExpanded(row) {\n\treturn row.getIsAllParentsExpanded?.() ?? !row.parentId;\n}\n/** Resets expanded state if row expanding is registered. */\nfunction autoResetExpanded(table) {\n\ttable.autoResetExpanded?.();\n}\n/** Resets the page index if row pagination is registered. */\nfunction autoResetPageIndex(table) {\n\ttable.autoResetPageIndex?.();\n}\n/** Resets sorting if row sorting is registered. */\nfunction autoResetSorting(table) {\n\ttable.autoResetSorting?.();\n}\n/** Resets cell selection if cell selection is registered. */\nfunction autoResetCellSelection(table) {\n\ttable.autoResetCellSelection?.();\n}\n/**\n* The aggregation executor `rowAggregationFeature` assigns to the table, or\n* `undefined` when the feature is not registered.\n*/\nfunction getAggregateColumnValue(table) {\n\treturn table._aggregateColumnValue;\n}\n\n//#endregion\nexport { autoResetCellSelection, autoResetExpanded, autoResetPageIndex, autoResetSorting, expandRowModel, getAggregateColumnValue, getCanGlobalFilter, getGlobalFilterFn, getIsAllParentsExpanded, getIsColumnVisible, getPinnedVisibleLeafColumns, getVisibleCells, getVisibleCellsByColumnId, getVisibleLeafColumns, orderByColumnPinning, orderLeafColumns };","import { makeObjectMap } from \"../../utils.js\";\nimport { orderLeafColumns } from \"../featureStubs.js\";\nimport { constructColumn } from \"./constructColumn.js\";\n\n//#region src/core/columns/coreColumnsFeature.utils.ts\n/**\n* Flattens this column and every descendant column into a single array.\n*\n* Group columns appear before their child columns, which matches the normalized\n* column hierarchy produced during table construction.\n*\n* @example\n* ```ts\n* const flatColumns = column_getFlatColumns(column)\n* ```\n*/\nfunction column_getFlatColumns(column) {\n\treturn [column, ...column.columns.flatMap((col) => col.getFlatColumns())];\n}\n/**\n* Collects the terminal leaf columns below this column.\n*\n* Group columns return their ordered descendants. Non-group columns return an\n* array containing only the column itself.\n*\n* @example\n* ```ts\n* const leafColumns = column_getLeafColumns(column)\n* ```\n*/\nfunction column_getLeafColumns(column) {\n\tif (column.columns.length) {\n\t\tconst leafColumns = column.columns.flatMap((col) => col.getLeafColumns());\n\t\treturn orderLeafColumns(column.table, leafColumns);\n\t}\n\treturn [column];\n}\n/**\n* Merges built-in, feature, and user default column definitions.\n*\n* Built-in defaults provide a header and fallback cell renderer, feature\n* defaults can add feature-specific column options, and\n* `options.defaultColumn` wins last.\n*\n* @example\n* ```ts\n* const defaultColumn = table_getDefaultColumnDef(table)\n* ```\n*/\nfunction table_getDefaultColumnDef(table) {\n\treturn {\n\t\theader: (props) => {\n\t\t\tconst resolvedColumnDef = props.header.column.columnDef;\n\t\t\tif (resolvedColumnDef.accessorKey) return resolvedColumnDef.accessorKey;\n\t\t\tif (resolvedColumnDef.accessorFn) return resolvedColumnDef.id;\n\t\t\treturn null;\n\t\t},\n\t\tcell: (props) => props.renderValue()?.toString?.() ?? null,\n\t\t...Object.values(table._features).reduce((obj, feature) => {\n\t\t\treturn Object.assign(obj, feature.getDefaultColumnDef?.());\n\t\t}, {}),\n\t\t...table.options.defaultColumn\n\t};\n}\nfunction constructColumns(table, columnDefs, parent, depth = 0) {\n\tconst columns = new Array(columnDefs.length);\n\tfor (let i = 0; i < columnDefs.length; i++) {\n\t\tif (!(i in columnDefs)) continue;\n\t\tconst columnDef = columnDefs[i];\n\t\tconst column = constructColumn(table, columnDef, depth, parent);\n\t\tconst groupingColumnDef = columnDef;\n\t\tcolumn.columns = groupingColumnDef.columns ? constructColumns(table, groupingColumnDef.columns, column, depth + 1) : [];\n\t\tcolumns[i] = column;\n\t}\n\treturn columns;\n}\n/**\n* Normalizes `options.columns` into the table's nested column tree.\n*\n* Each column definition is constructed with its parent and depth, and group\n* column children are recursively constructed.\n*\n* @example\n* ```ts\n* const columns = table_getAllColumns(table)\n* ```\n*/\nfunction table_getAllColumns(table) {\n\treturn constructColumns(table, table.options.columns);\n}\n/**\n* Flattens every table column, including group columns and leaf columns.\n*\n* Use this when parent/group columns must be included in addition to data leaf\n* columns.\n*\n* @example\n* ```ts\n* const flatColumns = table_getAllFlatColumns(table)\n* ```\n*/\nfunction table_getAllFlatColumns(table) {\n\treturn table.getAllColumns().flatMap((column) => column.getFlatColumns());\n}\n/**\n* Builds an id lookup for every flat column in the table.\n*\n* Group columns and leaf columns are included. Later columns with the same id\n* replace earlier entries.\n*\n* @example\n* ```ts\n* const columnsById = table_getAllFlatColumnsById(table)\n* ```\n*/\nfunction table_getAllFlatColumnsById(table) {\n\tconst result = makeObjectMap();\n\tconst flatColumns = table.getAllFlatColumns();\n\tfor (let i = 0; i < flatColumns.length; i++) {\n\t\tconst column = flatColumns[i];\n\t\tresult[column.id] = column;\n\t}\n\treturn result;\n}\n/**\n* Collects all terminal leaf columns in their current table order.\n*\n* Column ordering features can reorder the collected leaves before the result\n* is returned.\n*\n* @example\n* ```ts\n* const leafColumns = table_getAllLeafColumns(table)\n* ```\n*/\nfunction table_getAllLeafColumns(table) {\n\tconst leafColumns = table.getAllColumns().flatMap((c) => c.getLeafColumns());\n\treturn orderLeafColumns(table, leafColumns);\n}\n/**\n* Builds an id lookup for terminal leaf columns only.\n*\n* Parent/group columns are excluded, making this lookup appropriate for row\n* cells and feature state keyed by data columns.\n*\n* @example\n* ```ts\n* const leavesById = table_getAllLeafColumnsById(table)\n* ```\n*/\nfunction table_getAllLeafColumnsById(table) {\n\tconst result = makeObjectMap();\n\tconst leafColumns = table.getAllLeafColumns();\n\tfor (let i = 0; i < leafColumns.length; i++) {\n\t\tconst column = leafColumns[i];\n\t\tresult[column.id] = column;\n\t}\n\treturn result;\n}\n/**\n* Looks up a column by id from the flat column map.\n*\n* The lookup can return group columns or leaf columns. In development, a\n* missing id logs a warning to help catch stale column references.\n*\n* @example\n* ```ts\n* const column = table_getColumn(table, 'firstName')\n* ```\n*/\nfunction table_getColumn(table, columnId) {\n\tconst column = table.getAllFlatColumnsById()[columnId];\n\tif (process.env.NODE_ENV === \"development\" && !column) console.warn(`[Table] Column with id '${columnId}' does not exist.`);\n\treturn column;\n}\n\n//#endregion\nexport { column_getFlatColumns, column_getLeafColumns, table_getAllColumns, table_getAllFlatColumns, table_getAllFlatColumnsById, table_getAllLeafColumns, table_getAllLeafColumnsById, table_getColumn, table_getDefaultColumnDef };","import { assignPrototypeAPIs, assignTableAPIs } from \"../../utils.js\";\nimport { column_getFlatColumns, column_getLeafColumns, table_getAllColumns, table_getAllFlatColumns, table_getAllFlatColumnsById, table_getAllLeafColumns, table_getAllLeafColumnsById, table_getColumn, table_getDefaultColumnDef } from \"./coreColumnsFeature.utils.js\";\n\n//#region src/core/columns/coreColumnsFeature.ts\n/**\n* Core feature that builds the column tree and exposes table/column APIs.\n*/\nconst coreColumnsFeature = {\n\tassignColumnPrototype: (prototype, table) => {\n\t\tassignPrototypeAPIs(\"coreColumnsFeature\", prototype, table, {\n\t\t\tcolumn_getFlatColumns: {\n\t\t\t\tfn: (column) => column_getFlatColumns(column),\n\t\t\t\tmemoDeps: (column) => [column.table.options.columns]\n\t\t\t},\n\t\t\tcolumn_getLeafColumns: {\n\t\t\t\tfn: (column) => column_getLeafColumns(column),\n\t\t\t\tmemoDeps: (column) => [\n\t\t\t\t\tcolumn.table.atoms.columnOrder?.get(),\n\t\t\t\t\tcolumn.table.atoms.grouping?.get(),\n\t\t\t\t\tcolumn.table.options.columns,\n\t\t\t\t\tcolumn.table.options.groupedColumnMode\n\t\t\t\t]\n\t\t\t}\n\t\t});\n\t},\n\tconstructTableAPIs: (table) => {\n\t\tassignTableAPIs(\"coreColumnsFeature\", table, {\n\t\t\ttable_getDefaultColumnDef: {\n\t\t\t\tfn: () => table_getDefaultColumnDef(table),\n\t\t\t\tmemoDeps: () => [table.options.defaultColumn]\n\t\t\t},\n\t\t\ttable_getAllColumns: {\n\t\t\t\tfn: () => table_getAllColumns(table),\n\t\t\t\tmemoDeps: () => [table.options.columns]\n\t\t\t},\n\t\t\ttable_getAllFlatColumns: {\n\t\t\t\tfn: () => table_getAllFlatColumns(table),\n\t\t\t\tmemoDeps: () => [table.options.columns]\n\t\t\t},\n\t\t\ttable_getAllFlatColumnsById: {\n\t\t\t\tfn: () => table_getAllFlatColumnsById(table),\n\t\t\t\tmemoDeps: () => [table.options.columns]\n\t\t\t},\n\t\t\ttable_getAllLeafColumns: {\n\t\t\t\tfn: () => table_getAllLeafColumns(table),\n\t\t\t\tmemoDeps: () => [\n\t\t\t\t\ttable.atoms.columnOrder?.get(),\n\t\t\t\t\ttable.atoms.grouping?.get(),\n\t\t\t\t\ttable.options.columns,\n\t\t\t\t\ttable.options.groupedColumnMode\n\t\t\t\t]\n\t\t\t},\n\t\t\ttable_getAllLeafColumnsById: {\n\t\t\t\tfn: () => table_getAllLeafColumnsById(table),\n\t\t\t\tmemoDeps: () => [table.getAllLeafColumns()]\n\t\t\t},\n\t\t\ttable_getColumn: { fn: (columnId) => table_getColumn(table, columnId) }\n\t\t});\n\t}\n};\n\n//#endregion\nexport { coreColumnsFeature };","//#region src/core/headers/constructHeader.ts\n/**\n* Creates or retrieves the header prototype for a table.\n* The prototype is cached on the table and shared by all header instances.\n*/\nfunction getHeaderPrototype(table) {\n\tif (!table._headerPrototype) {\n\t\ttable._headerPrototype = { table };\n\t\tconst features = Object.values(table._features);\n\t\tfor (let i = 0; i < features.length; i++) features[i].assignHeaderPrototype?.(table._headerPrototype, table);\n\t}\n\treturn table._headerPrototype;\n}\n/**\n* Constructs a header instance from normalized table internals.\n*\n* This wires core properties, feature prototype APIs, and instance data used by table rendering and row-model operations.\n*/\nfunction constructHeader(table, column, options) {\n\tconst headerPrototype = getHeaderPrototype(table);\n\tconst header = Object.create(headerPrototype);\n\theader.colSpan = 0;\n\theader.column = column;\n\theader.depth = options.depth;\n\theader.headerGroup = null;\n\theader.id = options.id ?? column.id;\n\theader.index = options.index;\n\theader.isPlaceholder = !!options.isPlaceholder;\n\theader.placeholderId = options.placeholderId;\n\theader.rowSpan = 0;\n\theader.subHeaders = [];\n\tconst initFns = table._headerInstanceInitFns;\n\tfor (let i = 0; i < initFns.length; i++) initFns[i](header);\n\treturn header;\n}\n\n//#endregion\nexport { constructHeader };","import { getIsColumnVisible } from \"../featureStubs.js\";\nimport { constructHeader } from \"./constructHeader.js\";\n\n//#region src/core/headers/buildHeaderGroups.ts\nfunction getMaxHeaderDepth(columns, depth = 1) {\n\tlet maxDepth = depth;\n\tfor (let i = 0; i < columns.length; i++) {\n\t\tconst column = columns[i];\n\t\tif (getIsColumnVisible(column) && column.columns.length) maxDepth = Math.max(maxDepth, getMaxHeaderDepth(column.columns, depth + 1));\n\t}\n\treturn maxDepth;\n}\nfunction formatHeaderGroupId(headerFamily, depth) {\n\treturn headerFamily ? `${headerFamily}_${depth}` : String(depth);\n}\nfunction formatHeaderId(headerFamily, depth, columnId, childHeaderId) {\n\tlet id = headerFamily ?? \"\";\n\tif (depth) id = id ? `${id}_${depth}` : String(depth);\n\tif (columnId) id = id ? `${id}_${columnId}` : columnId;\n\tif (childHeaderId) id = id ? `${id}_${childHeaderId}` : childHeaderId;\n\treturn id;\n}\nfunction countPendingHeadersForColumn(headers, column) {\n\tlet count = 0;\n\tfor (let i = 0; i < headers.length; i++) if (headers[i].column === column) count++;\n\treturn count;\n}\nfunction constructHeaderGroup(headersToGroup, depth, table, headerFamily, headerGroups, headerGroupInitFns) {\n\tconst headerGroup = {\n\t\tdepth,\n\t\tid: formatHeaderGroupId(headerFamily, depth),\n\t\theaders: []\n\t};\n\tconst pendingParentHeaders = [];\n\tfor (let i = 0; i < headersToGroup.length; i++) {\n\t\tif (!(i in headersToGroup)) continue;\n\t\tconst headerToGroup = headersToGroup[i];\n\t\tconst latestPendingParentHeader = pendingParentHeaders[pendingParentHeaders.length - 1];\n\t\tconst isLeafHeader = headerToGroup.column.depth === headerGroup.depth;\n\t\tlet column;\n\t\tlet isPlaceholder = false;\n\t\tif (isLeafHeader && headerToGroup.column.parent) column = headerToGroup.column.parent;\n\t\telse {\n\t\t\tcolumn = headerToGroup.column;\n\t\t\tisPlaceholder = true;\n\t\t}\n\t\tif (latestPendingParentHeader && latestPendingParentHeader.column === column) latestPendingParentHeader.subHeaders.push(headerToGroup);\n\t\telse {\n\t\t\tconst header = constructHeader(table, column, {\n\t\t\t\tid: formatHeaderId(headerFamily, depth, column.id, headerToGroup.id),\n\t\t\t\tisPlaceholder,\n\t\t\t\tplaceholderId: isPlaceholder ? String(countPendingHeadersForColumn(pendingParentHeaders, column)) : void 0,\n\t\t\t\tdepth,\n\t\t\t\tindex: pendingParentHeaders.length\n\t\t\t});\n\t\t\theader.subHeaders.push(headerToGroup);\n\t\t\tpendingParentHeaders.push(header);\n\t\t}\n\t\theaderGroup.headers.push(headerToGroup);\n\t\theaderToGroup.headerGroup = headerGroup;\n\t}\n\tfor (let i = 0; i < headerGroupInitFns.length; i++) headerGroupInitFns[i](headerGroup);\n\theaderGroups.push(headerGroup);\n\tif (depth > 0) constructHeaderGroup(pendingParentHeaders, depth - 1, table, headerFamily, headerGroups, headerGroupInitFns);\n}\nfunction updateHeaderSpans(headers) {\n\tfor (let i = 0; i < headers.length; i++) {\n\t\tconst header = headers[i];\n\t\tif (!getIsColumnVisible(header.column)) continue;\n\t\tlet colSpan = 0;\n\t\tif (header.subHeaders.length) {\n\t\t\tupdateHeaderSpans(header.subHeaders);\n\t\t\tfor (let j = 0; j < header.subHeaders.length; j++) {\n\t\t\t\tconst child = header.subHeaders[j];\n\t\t\t\tif (!getIsColumnVisible(child.column)) continue;\n\t\t\t\tcolSpan += child.colSpan;\n\t\t\t}\n\t\t} else colSpan = 1;\n\t\theader.colSpan = colSpan;\n\t\tif (header.isPlaceholder && header.subHeaders.length === 1 && header.subHeaders[0].column === header.column) {\n\t\t\tlet rowSpan = 1;\n\t\t\tlet chainChild = header.subHeaders[0];\n\t\t\twhile (chainChild) {\n\t\t\t\tchainChild.rowSpan = 0;\n\t\t\t\trowSpan++;\n\t\t\t\tchainChild = chainChild.subHeaders.length === 1 && chainChild.subHeaders[0].column === header.column ? chainChild.subHeaders[0] : void 0;\n\t\t\t}\n\t\t\theader.rowSpan = rowSpan;\n\t\t} else header.rowSpan = 1;\n\t}\n}\n/**\n* Builds the nested header group structure for a table.\n*\n* The result accounts for visible leaf columns, pinned column groups, and placeholder headers needed to render multi-level headers.\n*/\nfunction buildHeaderGroups(allColumns, columnsToGroup, table, headerFamily) {\n\tconst maxDepth = getMaxHeaderDepth(allColumns);\n\tconst headerGroups = [];\n\tconst headerGroupInitFns = table._headerGroupInstanceInitFns;\n\tconst bottomHeaders = new Array(columnsToGroup.length);\n\tfor (let i = 0; i < columnsToGroup.length; i++) {\n\t\tif (!(i in columnsToGroup)) continue;\n\t\tbottomHeaders[i] = constructHeader(table, columnsToGroup[i], {\n\t\t\tdepth: maxDepth,\n\t\t\tindex: i\n\t\t});\n\t}\n\tconstructHeaderGroup(bottomHeaders, maxDepth - 1, table, headerFamily, headerGroups, headerGroupInitFns);\n\theaderGroups.reverse();\n\tupdateHeaderSpans(headerGroups[0]?.headers ?? []);\n\treturn headerGroups;\n}\n\n//#endregion\nexport { buildHeaderGroups };","import { getVisibleLeafColumns, orderByColumnPinning } from \"../featureStubs.js\";\nimport { buildHeaderGroups } from \"./buildHeaderGroups.js\";\n\n//#region src/core/headers/coreHeadersFeature.utils.ts\nfunction collectLeafHeaders(header, leafHeaders) {\n\tfor (let i = 0; i < header.subHeaders.length; i++) collectLeafHeaders(header.subHeaders[i], leafHeaders);\n\tleafHeaders.push(header);\n}\n/**\n* Walks a header tree and collects all descendant leaf headers.\n*\n* The header itself is included after its descendants, matching the recursive\n* shape used by nested header groups.\n*\n* @example\n* ```ts\n* const leafHeaders = header_getLeafHeaders(header)\n* ```\n*/\nfunction header_getLeafHeaders(header) {\n\tconst leafHeaders = [];\n\tcollectLeafHeaders(header, leafHeaders);\n\treturn leafHeaders;\n}\n/**\n* Builds the render context passed to a column's `header` or `footer` template.\n*\n* The context contains the header, its column, and the owning table instance.\n*\n* @example\n* ```ts\n* const context = header_getContext(header)\n* ```\n*/\nfunction header_getContext(header) {\n\treturn {\n\t\tcolumn: header.column,\n\t\theader,\n\t\ttable: header.column.table\n\t};\n}\n/**\n* Builds visible header groups for the current column tree.\n*\n* Column visibility and pinning are applied before groups are built. When no\n* columns are pinned, the fast path skips pin partitioning.\n*\n* @example\n* ```ts\n* const headerGroups = table_getHeaderGroups(table)\n* ```\n*/\nfunction table_getHeaderGroups(table) {\n\treturn buildHeaderGroups(table.getAllColumns(), orderByColumnPinning(table, getVisibleLeafColumns(table), (column) => column.id), table);\n}\n/**\n* Builds footer groups by reversing the current header groups.\n*\n* Footer rendering uses the same header objects and grouping structure, but\n* renders them from leaf level back toward the root.\n*\n* @example\n* ```ts\n* const footerGroups = table_getFooterGroups(table)\n* ```\n*/\nfunction table_getFooterGroups(table) {\n\treturn [...table.getHeaderGroups()].reverse();\n}\n/**\n* Flattens every header from every header group into one array.\n*\n* The result includes parent headers and placeholder headers, in header-group\n* order from top to bottom.\n*\n* @example\n* ```ts\n* const flatHeaders = table_getFlatHeaders(table)\n* ```\n*/\nfunction table_getFlatHeaders(table) {\n\tconst headerGroups = table.getHeaderGroups();\n\tconst result = [];\n\tfor (let i = 0; i < headerGroups.length; i++) {\n\t\tconst headers = headerGroups[i].headers;\n\t\tfor (let j = 0; j < headers.length; j++) result.push(headers[j]);\n\t}\n\treturn result;\n}\n/**\n* Collects only the leaf headers from the current header tree.\n*\n* Parent/group headers are skipped, making the result suitable for rendering\n* one header per visible leaf column.\n*\n* @example\n* ```ts\n* const leafHeaders = table_getLeafHeaders(table)\n* ```\n*/\nfunction table_getLeafHeaders(table) {\n\tconst topHeaders = table.getHeaderGroups()[0]?.headers ?? [];\n\tconst result = [];\n\tfor (let i = 0; i < topHeaders.length; i++) {\n\t\tconst leafHeaders = topHeaders[i].getLeafHeaders();\n\t\tfor (let j = 0; j < leafHeaders.length; j++) result.push(leafHeaders[j]);\n\t}\n\treturn result;\n}\n\n//#endregion\nexport { header_getContext, header_getLeafHeaders, table_getFlatHeaders, table_getFooterGroups, table_getHeaderGroups, table_getLeafHeaders };","import { assignPrototypeAPIs, assignTableAPIs } from \"../../utils.js\";\nimport { header_getContext, header_getLeafHeaders, table_getFlatHeaders, table_getFooterGroups, table_getHeaderGroups, table_getLeafHeaders } from \"./coreHeadersFeature.utils.js\";\n\n//#region src/core/headers/coreHeadersFeature.ts\n/**\n* Core feature that builds header groups and exposes header context APIs.\n*/\nconst coreHeadersFeature = {\n\tassignHeaderPrototype: (prototype, table) => {\n\t\tassignPrototypeAPIs(\"coreHeadersFeature\", prototype, table, {\n\t\t\theader_getLeafHeaders: {\n\t\t\t\tfn: (header) => header_getLeafHeaders(header),\n\t\t\t\tmemoDeps: (header) => [header.column.table.options.columns]\n\t\t\t},\n\t\t\theader_getContext: {\n\t\t\t\tfn: (header) => header_getContext(header),\n\t\t\t\tmemoDeps: (header) => [header.column.table.options.columns]\n\t\t\t}\n\t\t});\n\t},\n\tconstructTableAPIs: (table) => {\n\t\tassignTableAPIs(\"coreHeadersFeature\", table, {\n\t\t\ttable_getHeaderGroups: {\n\t\t\t\tfn: () => table_getHeaderGroups(table),\n\t\t\t\tmemoDeps: () => [\n\t\t\t\t\ttable.options.columns,\n\t\t\t\t\ttable.atoms.columnOrder?.get(),\n\t\t\t\t\ttable.atoms.grouping?.get(),\n\t\t\t\t\ttable.atoms.columnPinning?.get(),\n\t\t\t\t\ttable.atoms.columnVisibility?.get(),\n\t\t\t\t\ttable.options.groupedColumnMode\n\t\t\t\t]\n\t\t\t},\n\t\t\ttable_getFooterGroups: {\n\t\t\t\tfn: () => table_getFooterGroups(table),\n\t\t\t\tmemoDeps: () => [table.getHeaderGroups()]\n\t\t\t},\n\t\t\ttable_getFlatHeaders: {\n\t\t\t\tfn: () => table_getFlatHeaders(table),\n\t\t\t\tmemoDeps: () => [table.getHeaderGroups()]\n\t\t\t},\n\t\t\ttable_getLeafHeaders: {\n\t\t\t\tfn: () => table_getLeafHeaders(table),\n\t\t\t\tmemoDeps: () => [table.getHeaderGroups()]\n\t\t\t}\n\t\t});\n\t}\n};\n\n//#endregion\nexport { coreHeadersFeature };","import { makeObjectMap } from \"../../utils.js\";\n\n//#region src/core/rows/constructRow.ts\n/**\n* Creates or retrieves the row prototype for a table.\n* The prototype is cached on the table and shared by all row instances.\n*/\nfunction getRowPrototype(table) {\n\tif (!table._rowPrototype) {\n\t\ttable._rowPrototype = { table };\n\t\tconst features = Object.values(table._features);\n\t\tfor (let i = 0; i < features.length; i++) features[i].assignRowPrototype?.(table._rowPrototype, table);\n\t}\n\treturn table._rowPrototype;\n}\n/**\n* Constructs a row instance from normalized table internals.\n*\n* This wires core properties, feature prototype APIs, and instance data used by table rendering and row-model operations.\n*/\nconst constructRow = (table, id, original, rowIndex, depth, subRows, parentId) => {\n\tconst rowPrototype = getRowPrototype(table);\n\tconst row = Object.create(rowPrototype);\n\trow._displayIndexCache = -1;\n\trow._uniqueValuesCache = makeObjectMap();\n\trow._valuesCache = makeObjectMap();\n\trow.depth = depth;\n\trow.id = id;\n\trow.index = rowIndex;\n\trow.original = original;\n\trow.parentId = parentId;\n\trow.subRows = subRows ?? [];\n\tconst initFns = table._rowInstanceInitFns;\n\tfor (let i = 0; i < initFns.length; i++) initFns[i](row);\n\treturn row;\n};\n\n//#endregion\nexport { constructRow };","import { makeObjectMap, skipFirstRun, tableMemo } from \"../../utils.js\";\nimport { autoResetCellSelection, autoResetExpanded, autoResetPageIndex, autoResetSorting } from \"../featureStubs.js\";\nimport { constructRow } from \"../rows/constructRow.js\";\n\n//#region src/core/row-models/createCoreRowModel.ts\n/**\n* Creates a memoized core row model factory.\n*\n* The factory reads the relevant table state atoms and options, then returns a row model function used by the table row-model pipeline.\n*/\nfunction createCoreRowModel() {\n\treturn (table) => {\n\t\treturn tableMemo({\n\t\t\tfeature: \"coreRowModelsFeature\",\n\t\t\ttable,\n\t\t\tfnName: \"table.getCoreRowModel\",\n\t\t\tmemoDeps: () => [table.options.data],\n\t\t\tfn: () => _createCoreRowModel(table, table.options.data),\n\t\t\tonAfterUpdate: skipFirstRun(() => {\n\t\t\t\tautoResetExpanded(table);\n\t\t\t\tautoResetPageIndex(table);\n\t\t\t\tautoResetSorting(table);\n\t\t\t\tautoResetCellSelection(table);\n\t\t\t})\n\t\t});\n\t};\n}\nfunction accessRows(table, rowModel, originalRows, depth = 0, parentRow) {\n\tconst rows = [];\n\tfor (let i = 0; i < originalRows.length; i++) {\n\t\tconst originalRow = originalRows[i];\n\t\tconst row = constructRow(table, table.getRowId(originalRow, i, parentRow), originalRow, i, depth, void 0, parentRow?.id);\n\t\trowModel.flatRows.push(row);\n\t\trowModel.rowsById[row.id] = row;\n\t\trows.push(row);\n\t\tif (table.options.getSubRows) {\n\t\t\trow.originalSubRows = table.options.getSubRows(originalRow, i);\n\t\t\tif (row.originalSubRows?.length) row.subRows = accessRows(table, rowModel, row.originalSubRows, depth + 1, row);\n\t\t}\n\t}\n\treturn rows;\n}\nfunction _createCoreRowModel(table, data) {\n\tconst rowModel = {\n\t\trows: [],\n\t\tflatRows: [],\n\t\trowsById: makeObjectMap()\n\t};\n\trowModel.rows = accessRows(table, rowModel, data);\n\treturn rowModel;\n}\n\n//#endregion\nexport { createCoreRowModel };","import { createCoreRowModel } from \"./createCoreRowModel.js\";\n\n//#region src/core/row-models/coreRowModelsFeature.utils.ts\n/**\n* Resolves the table's unmodified core row model.\n*\n* The factory is created once per table, either from the `coreRowModel` slot on the `features` option\n* or the built-in `createCoreRowModel()`, then reused for later calls.\n*\n* @example\n* ```ts\n* const coreRows = table_getCoreRowModel(table)\n* ```\n*/\nfunction table_getCoreRowModel(table) {\n\tif (!table._rowModels.coreRowModel) table._rowModels.coreRowModel = table.options.features.coreRowModel?.(table) ?? createCoreRowModel()(table);\n\treturn table._rowModels.coreRowModel();\n}\n/**\n* Reads the row model immediately before column/global filtering.\n*\n* Filtering is the first derived row-model stage, so this currently aliases\n* `table.getCoreRowModel()`.\n*\n* @example\n* ```ts\n* const rowsBeforeFiltering = table_getPreFilteredRowModel(table)\n* ```\n*/\nfunction table_getPreFilteredRowModel(table) {\n\treturn table.getCoreRowModel();\n}\n/**\n* Resolves the row model after column and global filtering.\n*\n* When `manualFiltering` is enabled, or no filtered row-model factory was\n* registered, this returns the pre-filtered row model because filtering is\n* expected to happen outside the table.\n*\n* @example\n* ```ts\n* const filteredRows = table_getFilteredRowModel(table)\n* ```\n*/\nfunction table_getFilteredRowModel(table) {\n\tif (!table._rowModels.filteredRowModel) table._rowModels.filteredRowModel = table.options.features.filteredRowModel?.(table);\n\tif (table.options.manualFiltering || !table._rowModels.filteredRowModel) return table.getPreFilteredRowModel();\n\treturn table._rowModels.filteredRowModel();\n}\n/**\n* Reads the row model immediately before grouping.\n*\n* Grouping runs after filtering, so this aliases `table.getFilteredRowModel()`.\n*\n* @example\n* ```ts\n* const rowsBeforeGrouping = table_getPreGroupedRowModel(table)\n* ```\n*/\nfunction table_getPreGroupedRowModel(table) {\n\treturn table.getFilteredRowModel();\n}\n/**\n* Resolves the row model after grouping has produced grouped rows.\n*\n* When `manualGrouping` is enabled, or no grouped row-model factory was\n* registered, this returns the pre-grouped row model unchanged.\n*\n* @example\n* ```ts\n* const groupedRows = table_getGroupedRowModel(table)\n* ```\n*/\nfunction table_getGroupedRowModel(table) {\n\tif (!table._rowModels.groupedRowModel) table._rowModels.groupedRowModel = table.options.features.groupedRowModel?.(table);\n\tif (table.options.manualGrouping || !table._rowModels.groupedRowModel) return table.getPreGroupedRowModel();\n\treturn table._rowModels.groupedRowModel();\n}\n/**\n* Reads the row model immediately before sorting.\n*\n* Sorting runs after grouping, so this aliases `table.getGroupedRowModel()`.\n*\n* @example\n* ```ts\n* const rowsBeforeSorting = table_getPreSortedRowModel(table)\n* ```\n*/\nfunction table_getPreSortedRowModel(table) {\n\treturn table.getGroupedRowModel();\n}\n/**\n* Resolves the row model after sorting has been applied.\n*\n* When `manualSorting` is enabled, or no sorted row-model factory was\n* registered, this returns the pre-sorted row model because sorted data is\n* expected to be supplied by the caller.\n*\n* @example\n* ```ts\n* const sortedRows = table_getSortedRowModel(table)\n* ```\n*/\nfunction table_getSortedRowModel(table) {\n\tif (!table._rowModels.sortedRowModel) table._rowModels.sortedRowModel = table.options.features.sortedRowModel?.(table);\n\tif (table.options.manualSorting || !table._rowModels.sortedRowModel) return table.getPreSortedRowModel();\n\treturn table._rowModels.sortedRowModel();\n}\n/**\n* Reads the row model immediately before row expansion.\n*\n* Expansion runs after sorting, so this aliases `table.getSortedRowModel()`.\n*\n* @example\n* ```ts\n* const rowsBeforeExpansion = table_getPreExpandedRowModel(table)\n* ```\n*/\nfunction table_getPreExpandedRowModel(table) {\n\treturn table.getSortedRowModel();\n}\n/**\n* Resolves the row model after expanded rows have been flattened into view.\n*\n* When `manualExpanding` is enabled, or no expanded row-model factory was\n* registered, this returns the pre-expanded row model unchanged.\n*\n* @example\n* ```ts\n* const expandedRows = table_getExpandedRowModel(table)\n* ```\n*/\nfunction table_getExpandedRowModel(table) {\n\tif (!table._rowModels.expandedRowModel) table._rowModels.expandedRowModel = table.options.features.expandedRowModel?.(table);\n\tif (table.options.manualExpanding || !table._rowModels.expandedRowModel) return table.getPreExpandedRowModel();\n\treturn table._rowModels.expandedRowModel();\n}\n/**\n* Reads the row model immediately before pagination.\n*\n* Pagination is the final built-in row-model stage, so this aliases\n* `table.getExpandedRowModel()`.\n*\n* @example\n* ```ts\n* const rowsBeforePagination = table_getPrePaginatedRowModel(table)\n* ```\n*/\nfunction table_getPrePaginatedRowModel(table) {\n\treturn table.getExpandedRowModel();\n}\n/**\n* Resolves the row model after pagination has sliced rows for the current page.\n*\n* When `manualPagination` is enabled, or no paginated row-model factory was\n* registered, this returns the pre-paginated row model because pagination is\n* expected to happen before data reaches the table.\n*\n* @example\n* ```ts\n* const pageRows = table_getPaginatedRowModel(table)\n* ```\n*/\nfunction table_getPaginatedRowModel(table) {\n\tif (!table._rowModels.paginatedRowModel) table._rowModels.paginatedRowModel = table.options.features.paginatedRowModel?.(table);\n\tif (table.options.manualPagination || !table._rowModels.paginatedRowModel) return table.getPrePaginatedRowModel();\n\treturn table._rowModels.paginatedRowModel();\n}\n/**\n* Resolves the final row model consumed by renderers.\n*\n* This is the end of the built-in row-model pipeline: core -> filtering ->\n* grouping -> sorting -> expanding -> pagination.\n*\n* @example\n* ```ts\n* const visibleRows = table_getRowModel(table)\n* ```\n*/\nfunction table_getRowModel(table) {\n\treturn table.getPaginatedRowModel();\n}\n\n//#endregion\nexport { table_getCoreRowModel, table_getExpandedRowModel, table_getFilteredRowModel, table_getGroupedRowModel, table_getPaginatedRowModel, table_getPreExpandedRowModel, table_getPreFilteredRowModel, table_getPreGroupedRowModel, table_getPrePaginatedRowModel, table_getPreSortedRowModel, table_getRowModel, table_getSortedRowModel };","import { assignTableAPIs } from \"../../utils.js\";\nimport { table_getCoreRowModel, table_getExpandedRowModel, table_getFilteredRowModel, table_getGroupedRowModel, table_getPaginatedRowModel, table_getPreExpandedRowModel, table_getPreFilteredRowModel, table_getPreGroupedRowModel, table_getPrePaginatedRowModel, table_getPreSortedRowModel, table_getRowModel, table_getSortedRowModel } from \"./coreRowModelsFeature.utils.js\";\n\n//#region src/core/row-models/coreRowModelsFeature.ts\n/**\n* Core feature that wires table row-model accessors and row-model caches.\n*/\nconst coreRowModelsFeature = { constructTableAPIs: (table) => {\n\tassignTableAPIs(\"coreRowModelsFeature\", table, {\n\t\ttable_getCoreRowModel: { fn: () => table_getCoreRowModel(table) },\n\t\ttable_getPreFilteredRowModel: { fn: () => table_getPreFilteredRowModel(table) },\n\t\ttable_getFilteredRowModel: { fn: () => table_getFilteredRowModel(table) },\n\t\ttable_getPreGroupedRowModel: { fn: () => table_getPreGroupedRowModel(table) },\n\t\ttable_getGroupedRowModel: { fn: () => table_getGroupedRowModel(table) },\n\t\ttable_getPreSortedRowModel: { fn: () => table_getPreSortedRowModel(table) },\n\t\ttable_getSortedRowModel: { fn: () => table_getSortedRowModel(table) },\n\t\ttable_getPreExpandedRowModel: { fn: () => table_getPreExpandedRowModel(table) },\n\t\ttable_getExpandedRowModel: { fn: () => table_getExpandedRowModel(table) },\n\t\ttable_getPrePaginatedRowModel: { fn: () => table_getPrePaginatedRowModel(table) },\n\t\ttable_getPaginatedRowModel: { fn: () => table_getPaginatedRowModel(table) },\n\t\ttable_getRowModel: { fn: () => table_getRowModel(table) }\n\t});\n} };\n\n//#endregion\nexport { coreRowModelsFeature };","//#region src/core/cells/constructCell.ts\n/**\n* Creates or retrieves the cell prototype for a table.\n* The prototype is cached on the table and shared by all cell instances.\n*/\nfunction getCellPrototype(table) {\n\tif (!table._cellPrototype) {\n\t\ttable._cellPrototype = { table };\n\t\tconst features = Object.values(table._features);\n\t\tfor (let i = 0; i < features.length; i++) features[i].assignCellPrototype?.(table._cellPrototype, table);\n\t}\n\treturn table._cellPrototype;\n}\n/**\n* Constructs a cell instance from normalized table internals.\n*\n* This wires core properties, feature prototype APIs, and instance data used by table rendering and row-model operations.\n*/\nfunction constructCell(column, row, table) {\n\tconst cellPrototype = getCellPrototype(table);\n\tconst cell = Object.create(cellPrototype);\n\tcell.column = column;\n\tcell.id = `${row.id}_${column.id}`;\n\tcell.row = row;\n\tconst initFns = table._cellInstanceInitFns;\n\tfor (let i = 0; i < initFns.length; i++) initFns[i](cell);\n\treturn cell;\n}\n\n//#endregion\nexport { constructCell };","import { flattenBy, hasOwn, makeObjectMap } from \"../../utils.js\";\nimport { expandRowModel } from \"../featureStubs.js\";\nimport { constructCell } from \"../cells/constructCell.js\";\n\n//#region src/core/rows/coreRowsFeature.utils.ts\n/**\n* Returns this row's zero-based position in the current pre-pagination row\n* model. Rows outside that model return `-1`.\n*/\nfunction row_getDisplayIndex(row) {\n\tconst rows = row.table.getRowsInDisplayOrder();\n\tconst displayIndex = row._displayIndexCache;\n\treturn rows[displayIndex] === row ? displayIndex : -1;\n}\n/**\n* Returns the rows in the current display order after assigning their\n* zero-based display indexes.\n*\n* When expanded rows bypass pagination, expanded descendants are inserted into\n* the returned order even though they are absent from the pre-pagination row\n* model.\n*/\nfunction table_getRowsInDisplayOrder(table) {\n\tconst rowModel = table.getPrePaginatedRowModel();\n\tconst rows = table.options.paginateExpandedRows === false ? expandRowModel(table, rowModel).rows : rowModel.rows;\n\tfor (let i = 0; i < rows.length; i++) rows[i]._displayIndexCache = i;\n\treturn rows;\n}\n/**\n* Reads and caches this row's value for a column.\n*\n* The value is produced by the column accessor. Missing columns or display\n* columns without an accessor return `undefined`.\n*\n* @example\n* ```ts\n* const firstName = row_getValue(row, 'firstName')\n* ```\n*/\nfunction row_getValue(row, columnId) {\n\tif (hasOwn(row._valuesCache, columnId)) return row._valuesCache[columnId];\n\tconst column = row.table.getColumn(columnId);\n\tif (!column?.accessorFn) return;\n\trow._valuesCache[columnId] = column.accessorFn(row.original, row.index);\n\treturn row._valuesCache[columnId];\n}\n/**\n* Reads and caches the values used by faceting/grouping for a column.\n*\n* If the column defines `getUniqueValues`, that result is used. Otherwise the\n* row's accessor value is wrapped in a single-item array.\n*\n* @example\n* ```ts\n* const values = row_getUniqueValues(row, 'tags')\n* ```\n*/\nfunction row_getUniqueValues(row, columnId) {\n\tif (hasOwn(row._uniqueValuesCache, columnId)) return row._uniqueValuesCache[columnId];\n\tconst column = row.table.getColumn(columnId);\n\tif (!column?.accessorFn) return;\n\tif (!column.columnDef.getUniqueValues) {\n\t\trow._uniqueValuesCache[columnId] = [row.getValue(columnId)];\n\t\treturn row._uniqueValuesCache[columnId];\n\t}\n\trow._uniqueValuesCache[columnId] = column.columnDef.getUniqueValues(row.original, row.index);\n\treturn row._uniqueValuesCache[columnId];\n}\n/**\n* Returns a renderable row value for a column.\n*\n* If the accessor value is nullish, the table's `renderFallbackValue` is used\n* instead.\n*\n* @example\n* ```ts\n* const value = row_renderValue(row, 'firstName')\n* ```\n*/\nfunction row_renderValue(row, columnId) {\n\treturn row.getValue(columnId) ?? row.table.options.renderFallbackValue;\n}\n/**\n* Flattens this row's descendant tree into leaf rows.\n*\n* The row itself is not included; only nested `subRows` are walked.\n*\n* @example\n* ```ts\n* const descendants = row_getLeafRows(row)\n* ```\n*/\nfunction row_getLeafRows(row) {\n\treturn flattenBy(row.subRows, (d) => d.subRows);\n}\n/**\n* Returns the deepest structural row depth in the core row model.\n* Root rows are depth `0`, their direct sub-rows are depth `1`, and so on.\n*/\nfunction table_getMaxSubRowDepth(table) {\n\tconst rows = table.getCoreRowModel().flatRows;\n\tlet maxDepth = 0;\n\tfor (let i = 0; i < rows.length; i++) maxDepth = Math.max(maxDepth, rows[i].depth);\n\treturn maxDepth;\n}\n/**\n* Looks up this row's direct parent, if it has one.\n*\n* Parent lookup prefers the core row model for structural parents, then falls\n* back to the pre-pagination row model for generated parent rows.\n*\n* @example\n* ```ts\n* const parent = row_getParentRow(row)\n* ```\n*/\nfunction row_getParentRow(row) {\n\tif (!row.parentId) return;\n\treturn row.table.getCoreRowModel().rowsById[row.parentId] ?? row.table.getRow(row.parentId, true);\n}\n/**\n* Collects this row's ancestor chain from root to direct parent.\n*\n* The current row is not included. Rows without a parent return an empty array.\n*\n* @example\n* ```ts\n* const ancestors = row_getParentRows(row)\n* ```\n*/\nfunction row_getParentRows(row) {\n\tconst parentRows = [];\n\tlet currentRow = row;\n\twhile (true) {\n\t\tconst parentRow = currentRow.getParentRow();\n\t\tif (!parentRow) break;\n\t\tparentRows.push(parentRow);\n\t\tcurrentRow = parentRow;\n\t}\n\treturn parentRows.reverse();\n}\n/**\n* Constructs one cell for each leaf column in this row.\n*\n* The result follows `table.getAllLeafColumns()` order and includes hidden\n* columns; visibility-specific APIs filter this list later.\n*\n* @example\n* ```ts\n* const cells = row_getAllCells(row)\n* ```\n*/\nfunction row_getAllCells(row) {\n\tconst columns = row.table.getAllLeafColumns();\n\tlet cache = row._cellsCache;\n\tif (!cache) cache = row._cellsCache = /* @__PURE__ */ new WeakMap();\n\tconst cells = new Array(columns.length);\n\tfor (let i = 0; i < columns.length; i++) {\n\t\tconst column = columns[i];\n\t\tlet cell = cache.get(column);\n\t\tif (!cell) {\n\t\t\tcell = constructCell(column, row, row.table);\n\t\t\tcache.set(column, cell);\n\t\t}\n\t\tcells[i] = cell;\n\t}\n\treturn cells;\n}\n/**\n* Builds a lookup map of this row's cells keyed by column id.\n*\n* This is the static implementation behind `row.getAllCellsByColumnId()`.\n*\n* @example\n* ```ts\n* const cellsById = row_getAllCellsByColumnId(row)\n* ```\n*/\nfunction row_getAllCellsByColumnId(row) {\n\tconst result = makeObjectMap();\n\tconst cells = row.getAllCells();\n\tfor (let i = 0; i < cells.length; i++) {\n\t\tconst cell = cells[i];\n\t\tresult[cell.column.id] = cell;\n\t}\n\treturn result;\n}\n/**\n* Resolves the stable id for a row.\n*\n* `options.getRowId` wins when provided. Otherwise root rows use their index\n* and child rows append their index to the parent id, such as `0.2`.\n*\n* @example\n* ```ts\n* const id = table_getRowId(originalRow, table, index, parentRow)\n* ```\n*/\nfunction table_getRowId(originalRow, table, index, parent) {\n\treturn table.options.getRowId?.(originalRow, index, parent) ?? (parent ? `${parent.id}.${index}` : String(index));\n}\n/**\n* Looks up a row by id from the current or full row model.\n*\n* By default this searches `table.getRowModel()`. Passing `searchAll` searches\n* the pre-pagination model first, then falls back to the core model.\n*\n* @example\n* ```ts\n* const row = table_getRow(table, rowId, true)\n* ```\n*/\nfunction table_getRow(table, rowId, searchAll) {\n\tlet row = (searchAll ? table.getPrePaginatedRowModel() : table.getRowModel()).rowsById[rowId];\n\tif (!row) {\n\t\trow = table.getCoreRowModel().rowsById[rowId];\n\t\tif (!row) {\n\t\t\tif (process.env.NODE_ENV === \"development\") throw new Error(`getRow could not find row with ID: ${rowId}`);\n\t\t\tthrow new Error();\n\t\t}\n\t}\n\treturn row;\n}\n\n//#endregion\nexport { row_getAllCells, row_getAllCellsByColumnId, row_getDisplayIndex, row_getLeafRows, row_getParentRow, row_getParentRows, row_getUniqueValues, row_getValue, row_renderValue, table_getMaxSubRowDepth, table_getRow, table_getRowId, table_getRowsInDisplayOrder };","import { assignPrototypeAPIs, assignTableAPIs } from \"../../utils.js\";\nimport { row_getAllCells, row_getAllCellsByColumnId, row_getDisplayIndex, row_getLeafRows, row_getParentRow, row_getParentRows, row_getUniqueValues, row_getValue, row_renderValue, table_getMaxSubRowDepth, table_getRow, table_getRowId, table_getRowsInDisplayOrder } from \"./coreRowsFeature.utils.js\";\n\n//#region src/core/rows/coreRowsFeature.ts\n/**\n* Core feature that creates row APIs for values, cells, and tree traversal.\n*/\nconst coreRowsFeature = {\n\tassignRowPrototype: (prototype, table) => {\n\t\tassignPrototypeAPIs(\"coreRowsFeature\", prototype, table, {\n\t\t\trow_getDisplayIndex: { fn: (row) => row_getDisplayIndex(row) },\n\t\t\trow_getAllCellsByColumnId: {\n\t\t\t\tfn: (row) => row_getAllCellsByColumnId(row),\n\t\t\t\tmemoDeps: (row) => [row.getAllCells()]\n\t\t\t},\n\t\t\trow_getAllCells: {\n\t\t\t\tfn: (row) => row_getAllCells(row),\n\t\t\t\tmemoDeps: (row) => [row.table.getAllLeafColumns()]\n\t\t\t},\n\t\t\trow_getLeafRows: {\n\t\t\t\tfn: (row) => row_getLeafRows(row),\n\t\t\t\tmemoDeps: (row) => [row.subRows]\n\t\t\t},\n\t\t\trow_getParentRow: { fn: (row) => row_getParentRow(row) },\n\t\t\trow_getParentRows: { fn: (row) => row_getParentRows(row) },\n\t\t\trow_getUniqueValues: { fn: (row, columnId) => row_getUniqueValues(row, columnId) },\n\t\t\trow_getValue: { fn: (row, columnId) => row_getValue(row, columnId) },\n\t\t\trow_renderValue: { fn: (row, columnId) => row_renderValue(row, columnId) }\n\t\t});\n\t},\n\tconstructTableAPIs: (table) => {\n\t\tassignTableAPIs(\"coreRowsFeature\", table, {\n\t\t\ttable_getRowsInDisplayOrder: {\n\t\t\t\tfn: () => table_getRowsInDisplayOrder(table),\n\t\t\t\tmemoDeps: () => [\n\t\t\t\t\ttable.getPrePaginatedRowModel().rows,\n\t\t\t\t\ttable.options.paginateExpandedRows,\n\t\t\t\t\ttable.options.paginateExpandedRows === false ? table.atoms.expanded?.get() : void 0\n\t\t\t\t]\n\t\t\t},\n\t\t\ttable_getRowId: { fn: (originalRow, index, parent) => table_getRowId(originalRow, table, index, parent) },\n\t\t\ttable_getRow: { fn: (id, searchAll) => table_getRow(table, id, searchAll) },\n\t\t\ttable_getMaxSubRowDepth: {\n\t\t\t\tfn: () => table_getMaxSubRowDepth(table),\n\t\t\t\tmemoDeps: () => [table.getCoreRowModel()]\n\t\t\t}\n\t\t});\n\t}\n};\n\n//#endregion\nexport { coreRowsFeature };","import { cloneState, functionalUpdate } from \"../../utils.js\";\n\n//#region src/core/table/coreTablesFeature.utils.ts\n/**\n* Synchronizes externally controlled state slices into the table's base atoms.\n*\n* This keeps `options.state` values mirrored in the atom graph so derived\n* atoms, stores, and table APIs read a consistent snapshot.\n*\n* Adapters that update options during their host's render phase pass the\n* state snapshot captured by the committed render as `capturedState` — the\n* shared options object may already hold values from a newer render that\n* never commits. Pass `null` to publish nothing (a captured \"no controlled\n* state\"); omitting the argument reads the current `table.options.state`\n* instead. An optional `compare` suppresses semantically unchanged slice\n* writes; the default remains reference equality.\n*\n* @example\n* ```ts\n* table_syncExternalStateToBaseAtoms(table)\n* table_syncExternalStateToBaseAtoms(table, capturedState ?? null, shallow)\n* ```\n*/\nfunction table_syncExternalStateToBaseAtoms(table, capturedState, compare = (currentState, externalState) => currentState === externalState) {\n\tconst state = capturedState === void 0 ? table.options.state : capturedState;\n\ttable._reactivity.batch(() => {\n\t\tif (state) for (const key in state) {\n\t\t\tconst baseAtom = table.baseAtoms[key];\n\t\t\tif (!baseAtom) continue;\n\t\t\tconst rawExternalState = state[key];\n\t\t\tconst externalState = rawExternalState === void 0 ? table.initialState[key] : rawExternalState;\n\t\t\tif (!compare(table._reactivity.untrack(() => baseAtom.get()), externalState)) baseAtom.set(() => externalState);\n\t\t}\n\t});\n}\n/**\n* Publishes captured controlled state after a host framework commits.\n*\n* Render-phase adapters stage options without synchronizing base atoms, then\n* pass the state captured by the committed render here. The commit signal also\n* invalidates ownership changes when no base atom was written.\n*/\nfunction table_publishExternalState(table, state, compare = (currentState, externalState) => currentState === externalState) {\n\ttable._reactivity.batch(() => {\n\t\ttable_syncExternalStateToBaseAtoms(table, state, compare);\n\t\ttable._reactivity.commit?.();\n\t});\n}\n/**\n* Resets all internal table base atoms to `table.initialState`, then clears\n* transient instance data through registered feature reset hooks.\n*\n* This resets internally owned state slices in a single reactivity batch. Use\n* feature-specific reset APIs when a slice may be externally owned.\n*\n* @example\n* ```ts\n* table_reset(table)\n* ```\n*/\nfunction table_reset(table) {\n\tconst snap = cloneState(table.initialState);\n\ttable._reactivity.batch(() => {\n\t\tconst keys = Object.keys(snap);\n\t\tfor (let i = 0; i < keys.length; i++) {\n\t\t\tconst key = keys[i];\n\t\t\ttable.baseAtoms[key].set(snap[key]);\n\t\t}\n\t});\n\tconst features = Object.values(table._features);\n\tfor (let i = 0; i < features.length; i++) features[i].resetTableInstanceData?.(table);\n}\n/**\n* Merges new table options with the current resolved options.\n*\n* If `options.mergeOptions` is provided, it owns the merge behavior; otherwise\n* options are shallow-merged. Static options that should never change after\n* initialization are restored on a fresh object so framework merge helpers may\n* return readonly getter/proxy objects.\n*\n* @example\n* ```ts\n* const options = table_mergeOptions(table, nextOptions)\n* ```\n*/\nfunction table_mergeOptions(table, newOptions) {\n\tconst { features, atoms, initialState } = table.options;\n\tif (!table.options.mergeOptions) return {\n\t\t...table.options,\n\t\t...newOptions,\n\t\tfeatures,\n\t\tatoms,\n\t\tinitialState\n\t};\n\tconst mergedOptions = table.options.mergeOptions(table.options, newOptions);\n\tconst descriptors = { ...Object.getOwnPropertyDescriptors(mergedOptions) };\n\treturn Object.defineProperties(Object.create(Object.getPrototypeOf(mergedOptions)), {\n\t\t...descriptors,\n\t\tfeatures: {\n\t\t\tvalue: features,\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true,\n\t\t\twritable: true\n\t\t},\n\t\tatoms: {\n\t\t\tvalue: atoms,\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true,\n\t\t\twritable: true\n\t\t},\n\t\tinitialState: {\n\t\t\tvalue: initialState,\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true,\n\t\t\twritable: true\n\t\t}\n\t});\n}\n/**\n* Updates the table options object.\n*\n* The updater receives the current resolved options and the merged result is\n* immediately assigned to the table instance.\n*\n* @example\n* ```ts\n* table_setOptions(table, (old) => old)\n* table_setOptions(table, (old) => old, { syncExternalState: false })\n* ```\n*/\nfunction table_setOptions(table, updater, options) {\n\tconst mergedOptions = table_mergeOptions(table, functionalUpdate(updater, table.options));\n\tif (table.optionsStore) table.optionsStore.set(() => mergedOptions);\n\telse table.options = mergedOptions;\n\tif (options?.syncExternalState !== false) table_publishExternalState(table, mergedOptions.state ?? null);\n}\n\n//#endregion\nexport { table_mergeOptions, table_publishExternalState, table_reset, table_setOptions, table_syncExternalStateToBaseAtoms };","import { assignTableAPIs } from \"../../utils.js\";\nimport { table_reset, table_setOptions } from \"./coreTablesFeature.utils.js\";\n\n//#region src/core/table/coreTablesFeature.ts\n/**\n* Core feature that adds base table instance APIs such as reset and setOptions.\n*/\nconst coreTablesFeature = { constructTableAPIs: (table) => {\n\tassignTableAPIs(\"coreTablesFeature\", table, {\n\t\ttable_reset: { fn: () => table_reset(table) },\n\t\ttable_setOptions: { fn: (updater) => table_setOptions(table, updater) }\n\t});\n} };\n\n//#endregion\nexport { coreTablesFeature };","import { coreCellsFeature } from \"./cells/coreCellsFeature.js\";\nimport { coreColumnsFeature } from \"./columns/coreColumnsFeature.js\";\nimport { coreHeadersFeature } from \"./headers/coreHeadersFeature.js\";\nimport { coreRowModelsFeature } from \"./row-models/coreRowModelsFeature.js\";\nimport { coreRowsFeature } from \"./rows/coreRowsFeature.js\";\nimport { coreTablesFeature } from \"./table/coreTablesFeature.js\";\n\n//#region src/core/coreFeatures.ts\n/**\n* The built-in core feature set required by every table.\n*\n* These features provide table, column, row, header, cell, and core row-model behavior before optional feature plugins are added.\n*/\nconst coreFeatures = {\n\tcoreCellsFeature,\n\tcoreColumnsFeature,\n\tcoreHeadersFeature,\n\tcoreRowModelsFeature,\n\tcoreRowsFeature,\n\tcoreTablesFeature\n};\n\n//#endregion\nexport { coreFeatures };","//#region src/helpers/tableFeatures.ts\n/**\n* A helper function to help define the features that are to be imported and applied to a table instance.\n* Use this utility to make it easier to have the correct type inference for the features that are being imported.\n* **Note:** It is recommended to use this utility statically outside of a component.\n*\n* Alongside feature modules, this object carries everything else that is\n* statically stitched into the table:\n*\n* - Row model factories (`sortedRowModel`, `filteredRowModel`, etc.)\n* - Row model function registries (`sortFns`, `filterFns`, `aggregationFns`),\n* whose keys become the valid string values for `sortFn`, `filterFn`,\n* `globalFilterFn`, and `aggregationFn` with full inference\n* - Type-only `tableMeta`/`columnMeta` slots for declaring per-table meta types\n* instead of using global declaration merging. The values are phantom\n* (ignored and stripped at runtime); only their types are used.\n* @example\n* ```\n* import {\n* columnFilteringFeature,\n* createFilteredRowModel,\n* createSortedRowModel,\n* filterFn_includesString,\n* rowSortingFeature,\n* sortFn_alphanumeric,\n* sortFn_text,\n* tableFeatures,\n* } from '@tanstack/react-table'\n* const features = tableFeatures({\n* columnFilteringFeature,\n* rowSortingFeature,\n* filteredRowModel: createFilteredRowModel(),\n* sortedRowModel: createSortedRowModel(),\n* filterFns: { includesString: filterFn_includesString, myCustomFilterFn },\n* sortFns: { alphanumeric: sortFn_alphanumeric, text: sortFn_text },\n* tableMeta: {} as { updateData: (rowIndex: number, columnId: string, value: unknown) => void },\n* columnMeta: {} as { align?: 'left' | 'right' },\n* });\n* const table = useTable({ features, columns, data });\n* ```\n*/\nfunction tableFeatures(features) {\n\treturn features;\n}\n\n//#endregion\nexport { tableFeatures };","//#region src/core/reactivity/coreReactivityFeature.utils.ts\n/**\n* Bridges atom instances to the `Store`/`ReadonlyStore` API by exposing\n* a `state` getter backed by `atom.get()`, and wiring `setState` for\n* writable atoms.\n*\n* @example\n* ```ts\n* const store = atomToStore(atom)\n* ```\n*/\nfunction atomToStore(atom) {\n\tconst store = atom;\n\tObject.defineProperty(atom, \"state\", { get() {\n\t\treturn atom.get();\n\t} });\n\tif (\"set\" in atom) store.setState = atom.set.bind(atom);\n\treturn store;\n}\n\n//#endregion\nexport { atomToStore };","//#region src/alien.ts\nconst NONE = 0;\nconst MUTABLE = 1;\nconst WATCHING = 2;\nconst RECURSED_CHECK = 4;\nconst RECURSED = 8;\nconst DIRTY = 16;\nconst PENDING = 32;\n/* @__NO_SIDE_EFFECTS__ */\nfunction createReactiveSystem({ update, notify, unwatched }) {\n\treturn {\n\t\tlink,\n\t\tunlink,\n\t\tpropagate,\n\t\tcheckDirty,\n\t\tshallowPropagate\n\t};\n\tfunction link(dep, sub, version) {\n\t\tconst prevDep = sub.depsTail;\n\t\tif (prevDep !== void 0 && prevDep.dep === dep) return;\n\t\tconst nextDep = prevDep !== void 0 ? prevDep.nextDep : sub.deps;\n\t\tif (nextDep !== void 0 && nextDep.dep === dep) {\n\t\t\tnextDep.version = version;\n\t\t\tsub.depsTail = nextDep;\n\t\t\treturn;\n\t\t}\n\t\tconst prevSub = dep.subsTail;\n\t\tif (prevSub !== void 0 && prevSub.version === version && prevSub.sub === sub) return;\n\t\tconst newLink = sub.depsTail = dep.subsTail = {\n\t\t\tversion,\n\t\t\tdep,\n\t\t\tsub,\n\t\t\tprevDep,\n\t\t\tnextDep,\n\t\t\tprevSub,\n\t\t\tnextSub: void 0\n\t\t};\n\t\tif (nextDep !== void 0) nextDep.prevDep = newLink;\n\t\tif (prevDep !== void 0) prevDep.nextDep = newLink;\n\t\telse sub.deps = newLink;\n\t\tif (prevSub !== void 0) prevSub.nextSub = newLink;\n\t\telse dep.subs = newLink;\n\t}\n\tfunction unlink(link, sub = link.sub) {\n\t\tconst dep = link.dep;\n\t\tconst prevDep = link.prevDep;\n\t\tconst nextDep = link.nextDep;\n\t\tconst nextSub = link.nextSub;\n\t\tconst prevSub = link.prevSub;\n\t\tif (nextDep !== void 0) nextDep.prevDep = prevDep;\n\t\telse sub.depsTail = prevDep;\n\t\tif (prevDep !== void 0) prevDep.nextDep = nextDep;\n\t\telse sub.deps = nextDep;\n\t\tif (nextSub !== void 0) nextSub.prevSub = prevSub;\n\t\telse dep.subsTail = prevSub;\n\t\tif (prevSub !== void 0) prevSub.nextSub = nextSub;\n\t\telse if ((dep.subs = nextSub) === void 0) unwatched(dep);\n\t\treturn nextDep;\n\t}\n\tfunction propagate(link) {\n\t\tlet next = link.nextSub;\n\t\tlet stack;\n\t\ttop: do {\n\t\t\tconst sub = link.sub;\n\t\t\tlet flags = sub.flags;\n\t\t\tif (!(flags & 60)) sub.flags = flags | 32;\n\t\t\telse if (!(flags & (4 | 8))) flags = 0;\n\t\t\telse if (!(flags & 4)) sub.flags = flags & ~8 | 32;\n\t\t\telse if (!(flags & (16 | 32)) && isValidLink(link, sub)) {\n\t\t\t\tsub.flags = flags | (8 | 32);\n\t\t\t\tflags &= 1;\n\t\t\t} else flags = 0;\n\t\t\tif (flags & 2) notify(sub);\n\t\t\tif (flags & 1) {\n\t\t\t\tconst subSubs = sub.subs;\n\t\t\t\tif (subSubs !== void 0) {\n\t\t\t\t\tconst nextSub = (link = subSubs).nextSub;\n\t\t\t\t\tif (nextSub !== void 0) {\n\t\t\t\t\t\tstack = {\n\t\t\t\t\t\t\tvalue: next,\n\t\t\t\t\t\t\tprev: stack\n\t\t\t\t\t\t};\n\t\t\t\t\t\tnext = nextSub;\n\t\t\t\t\t}\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ((link = next) !== void 0) {\n\t\t\t\tnext = link.nextSub;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\twhile (stack !== void 0) {\n\t\t\t\tlink = stack.value;\n\t\t\t\tstack = stack.prev;\n\t\t\t\tif (link !== void 0) {\n\t\t\t\t\tnext = link.nextSub;\n\t\t\t\t\tcontinue top;\n\t\t\t\t}\n\t\t\t}\n\t\t\tbreak;\n\t\t} while (true);\n\t}\n\tfunction checkDirty(link, sub) {\n\t\tlet stack;\n\t\tlet checkDepth = 0;\n\t\tlet dirty = false;\n\t\ttop: do {\n\t\t\tconst dep = link.dep;\n\t\t\tconst flags = dep.flags;\n\t\t\tif (sub.flags & 16) dirty = true;\n\t\t\telse if ((flags & (1 | 16)) === (1 | 16)) {\n\t\t\t\tif (update(dep)) {\n\t\t\t\t\tconst subs = dep.subs;\n\t\t\t\t\tif (subs.nextSub !== void 0) shallowPropagate(subs);\n\t\t\t\t\tdirty = true;\n\t\t\t\t}\n\t\t\t} else if ((flags & (1 | 32)) === (1 | 32)) {\n\t\t\t\tif (link.nextSub !== void 0 || link.prevSub !== void 0) stack = {\n\t\t\t\t\tvalue: link,\n\t\t\t\t\tprev: stack\n\t\t\t\t};\n\t\t\t\tlink = dep.deps;\n\t\t\t\tsub = dep;\n\t\t\t\t++checkDepth;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (!dirty) {\n\t\t\t\tconst nextDep = link.nextDep;\n\t\t\t\tif (nextDep !== void 0) {\n\t\t\t\t\tlink = nextDep;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\t\t\twhile (checkDepth--) {\n\t\t\t\tconst firstSub = sub.subs;\n\t\t\t\tconst hasMultipleSubs = firstSub.nextSub !== void 0;\n\t\t\t\tif (hasMultipleSubs) {\n\t\t\t\t\tlink = stack.value;\n\t\t\t\t\tstack = stack.prev;\n\t\t\t\t} else link = firstSub;\n\t\t\t\tif (dirty) {\n\t\t\t\t\tif (update(sub)) {\n\t\t\t\t\t\tif (hasMultipleSubs) shallowPropagate(firstSub);\n\t\t\t\t\t\tsub = link.sub;\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\tdirty = false;\n\t\t\t\t} else sub.flags &= ~32;\n\t\t\t\tsub = link.sub;\n\t\t\t\tconst nextDep = link.nextDep;\n\t\t\t\tif (nextDep !== void 0) {\n\t\t\t\t\tlink = nextDep;\n\t\t\t\t\tcontinue top;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn dirty;\n\t\t} while (true);\n\t}\n\tfunction shallowPropagate(link) {\n\t\tdo {\n\t\t\tconst sub = link.sub;\n\t\t\tconst flags = sub.flags;\n\t\t\tif ((flags & (32 | 16)) === 32) {\n\t\t\t\tsub.flags = flags | 16;\n\t\t\t\tif ((flags & (2 | 4)) === 2) notify(sub);\n\t\t\t}\n\t\t} while ((link = link.nextSub) !== void 0);\n\t}\n\tfunction isValidLink(checkLink, sub) {\n\t\tlet link = sub.depsTail;\n\t\twhile (link !== void 0) {\n\t\t\tif (link === checkLink) return true;\n\t\t\tlink = link.prevDep;\n\t\t}\n\t\treturn false;\n\t}\n}\n\n//#endregion\nexport { createReactiveSystem };\n//# sourceMappingURL=alien.js.map","import { createReactiveSystem } from \"./alien.js\";\n\n//#region src/atom.ts\nfunction toObserver(nextHandler, errorHandler, completionHandler) {\n\tconst isObserver = typeof nextHandler === \"object\";\n\tconst self = isObserver ? nextHandler : void 0;\n\treturn {\n\t\tnext: (isObserver ? nextHandler.next : nextHandler)?.bind(self),\n\t\terror: (isObserver ? nextHandler.error : errorHandler)?.bind(self),\n\t\tcomplete: (isObserver ? nextHandler.complete : completionHandler)?.bind(self)\n\t};\n}\nconst queuedEffects = [];\nlet cycle = 0;\nconst { link, unlink, propagate, checkDirty, shallowPropagate } = /* @__PURE__ */ createReactiveSystem({\n\tupdate(atom) {\n\t\treturn atom._update();\n\t},\n\tnotify(effect) {\n\t\tqueuedEffects[queuedEffectsLength++] = effect;\n\t\teffect.flags &= ~2;\n\t},\n\tunwatched(atom) {\n\t\tif (atom.depsTail !== void 0) {\n\t\t\tatom.depsTail = void 0;\n\t\t\tatom.flags = 1 | 16;\n\t\t\tpurgeDeps(atom);\n\t\t}\n\t}\n});\nlet notifyIndex = 0;\nlet queuedEffectsLength = 0;\nlet activeSub;\nlet batchDepth = 0;\nfunction batch(fn) {\n\ttry {\n\t\t++batchDepth;\n\t\tfn();\n\t} finally {\n\t\tif (!--batchDepth) flush();\n\t}\n}\nfunction purgeDeps(sub) {\n\tconst depsTail = sub.depsTail;\n\tlet dep = depsTail !== void 0 ? depsTail.nextDep : sub.deps;\n\twhile (dep !== void 0) dep = unlink(dep, sub);\n}\nfunction flush() {\n\tif (batchDepth > 0) return;\n\twhile (notifyIndex < queuedEffectsLength) {\n\t\tconst effect = queuedEffects[notifyIndex];\n\t\tqueuedEffects[notifyIndex++] = void 0;\n\t\teffect.notify();\n\t}\n\tnotifyIndex = 0;\n\tqueuedEffectsLength = 0;\n}\nfunction createAsyncAtom(getValue, options) {\n\tconst ref = {};\n\tconst atom = createAtom(() => {\n\t\tgetValue().then((data) => {\n\t\t\tconst internalAtom = ref.current;\n\t\t\tif (internalAtom._update({\n\t\t\t\tstatus: \"done\",\n\t\t\t\tdata\n\t\t\t})) {\n\t\t\t\tconst subs = internalAtom.subs;\n\t\t\t\tif (subs !== void 0) {\n\t\t\t\t\tpropagate(subs);\n\t\t\t\t\tshallowPropagate(subs);\n\t\t\t\t\tflush();\n\t\t\t\t}\n\t\t\t}\n\t\t}, (error) => {\n\t\t\tconst internalAtom = ref.current;\n\t\t\tif (internalAtom._update({\n\t\t\t\tstatus: \"error\",\n\t\t\t\terror\n\t\t\t})) {\n\t\t\t\tconst subs = internalAtom.subs;\n\t\t\t\tif (subs !== void 0) {\n\t\t\t\t\tpropagate(subs);\n\t\t\t\t\tshallowPropagate(subs);\n\t\t\t\t\tflush();\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\treturn { status: \"pending\" };\n\t}, options);\n\tref.current = atom;\n\treturn atom;\n}\nfunction createAtom(valueOrFn, options) {\n\tconst isComputed = typeof valueOrFn === \"function\";\n\tconst getter = valueOrFn;\n\tconst atom = {\n\t\t_snapshot: isComputed ? void 0 : valueOrFn,\n\t\tsubs: void 0,\n\t\tsubsTail: void 0,\n\t\tdeps: void 0,\n\t\tdepsTail: void 0,\n\t\tflags: isComputed ? 0 : 1,\n\t\tget() {\n\t\t\tif (activeSub !== void 0) link(atom, activeSub, cycle);\n\t\t\treturn atom._snapshot;\n\t\t},\n\t\tsubscribe(observerOrFn) {\n\t\t\tconst obs = toObserver(observerOrFn);\n\t\t\tconst observed = { current: false };\n\t\t\tconst e = effect(() => {\n\t\t\t\tatom.get();\n\t\t\t\tif (!observed.current) observed.current = true;\n\t\t\t\telse {\n\t\t\t\t\tactiveSub = void 0;\n\t\t\t\t\tobs.next?.(atom._snapshot);\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn { unsubscribe: () => {\n\t\t\t\te.stop();\n\t\t\t} };\n\t\t},\n\t\t_update(getValue) {\n\t\t\tconst prevSub = activeSub;\n\t\t\tconst compare = options?.compare ?? Object.is;\n\t\t\tif (isComputed) {\n\t\t\t\tactiveSub = atom;\n\t\t\t\t++cycle;\n\t\t\t\tatom.depsTail = void 0;\n\t\t\t} else if (getValue === void 0) return false;\n\t\t\tif (isComputed) atom.flags = 1 | 4;\n\t\t\ttry {\n\t\t\t\tconst oldValue = atom._snapshot;\n\t\t\t\tconst newValue = typeof getValue === \"function\" ? getValue(oldValue) : getValue === void 0 && isComputed ? getter(oldValue) : getValue;\n\t\t\t\tif (oldValue === void 0 || !compare(oldValue, newValue)) {\n\t\t\t\t\tatom._snapshot = newValue;\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t} finally {\n\t\t\t\tactiveSub = prevSub;\n\t\t\t\tif (isComputed) atom.flags &= ~4;\n\t\t\t\tpurgeDeps(atom);\n\t\t\t}\n\t\t}\n\t};\n\tif (isComputed) {\n\t\tatom.flags = 1 | 16;\n\t\tatom.get = function() {\n\t\t\tconst flags = atom.flags;\n\t\t\tif (flags & 16 || flags & 32 && checkDirty(atom.deps, atom)) {\n\t\t\t\tif (atom._update()) {\n\t\t\t\t\tconst subs = atom.subs;\n\t\t\t\t\tif (subs !== void 0) shallowPropagate(subs);\n\t\t\t\t}\n\t\t\t} else if (flags & 32) atom.flags = flags & ~32;\n\t\t\tif (activeSub !== void 0) link(atom, activeSub, cycle);\n\t\t\treturn atom._snapshot;\n\t\t};\n\t} else atom.set = function(valueOrFn) {\n\t\tif (atom._update(valueOrFn)) {\n\t\t\tconst subs = atom.subs;\n\t\t\tif (subs !== void 0) {\n\t\t\t\tpropagate(subs);\n\t\t\t\tshallowPropagate(subs);\n\t\t\t\tflush();\n\t\t\t}\n\t\t}\n\t};\n\treturn atom;\n}\nfunction effect(fn) {\n\tconst run = () => {\n\t\tconst prevSub = activeSub;\n\t\tactiveSub = effectObj;\n\t\t++cycle;\n\t\teffectObj.depsTail = void 0;\n\t\teffectObj.flags = 2 | 4;\n\t\ttry {\n\t\t\treturn fn();\n\t\t} finally {\n\t\t\tactiveSub = prevSub;\n\t\t\teffectObj.flags &= ~4;\n\t\t\tpurgeDeps(effectObj);\n\t\t}\n\t};\n\tconst effectObj = {\n\t\tdeps: void 0,\n\t\tdepsTail: void 0,\n\t\tsubs: void 0,\n\t\tsubsTail: void 0,\n\t\tflags: 2 | 4,\n\t\tnotify() {\n\t\t\tconst flags = this.flags;\n\t\t\tif (flags & 16 || flags & 32 && checkDirty(this.deps, this)) run();\n\t\t\telse this.flags = 2;\n\t\t},\n\t\tstop() {\n\t\t\tthis.flags = 0;\n\t\t\tthis.depsTail = void 0;\n\t\t\tpurgeDeps(this);\n\t\t}\n\t};\n\trun();\n\treturn effectObj;\n}\n\n//#endregion\nexport { batch, createAsyncAtom, createAtom, flush, toObserver };\n//# sourceMappingURL=atom.js.map","//#region src/shallow.ts\nfunction shallow(objA, objB) {\n\tif (Object.is(objA, objB)) return true;\n\tif (typeof objA !== \"object\" || objA === null || typeof objB !== \"object\" || objB === null) return false;\n\tif (objA instanceof Map && objB instanceof Map) {\n\t\tif (objA.size !== objB.size) return false;\n\t\tfor (const [k, v] of objA) if (!objB.has(k) || !Object.is(v, objB.get(k))) return false;\n\t\treturn true;\n\t}\n\tif (objA instanceof Set && objB instanceof Set) {\n\t\tif (objA.size !== objB.size) return false;\n\t\tfor (const v of objA) if (!objB.has(v)) return false;\n\t\treturn true;\n\t}\n\tif (objA instanceof Date && objB instanceof Date) {\n\t\tif (objA.getTime() !== objB.getTime()) return false;\n\t\treturn true;\n\t}\n\tconst keysA = getOwnKeys(objA);\n\tif (keysA.length !== getOwnKeys(objB).length) return false;\n\tfor (let i = 0; i < keysA.length; i++) if (!Object.prototype.hasOwnProperty.call(objB, keysA[i]) || !Object.is(objA[keysA[i]], objB[keysA[i]])) return false;\n\treturn true;\n}\nfunction getOwnKeys(obj) {\n\treturn Object.keys(obj).concat(Object.getOwnPropertySymbols(obj));\n}\n\n//#endregion\nexport { shallow };\n//# sourceMappingURL=shallow.js.map","import { cloneState, hasOwn } from \"../../utils.js\";\nimport { table_syncExternalStateToBaseAtoms } from \"./coreTablesFeature.utils.js\";\nimport { coreFeatures } from \"../coreFeatures.js\";\nimport { atomToStore } from \"../reactivity/coreReactivityFeature.utils.js\";\nimport { shallow } from \"@tanstack/store\";\n\n//#region src/core/table/constructTable.ts\n/**\n* Builds the initial table state from registered features and user initial state.\n*\n* Each feature contributes its default state before user-provided `initialState` values are merged in.\n*/\nfunction getInitialTableState(features, initialState = {}) {\n\tObject.values(features).forEach((feature) => {\n\t\tinitialState = feature.getInitialState?.(initialState) ?? initialState;\n\t});\n\treturn cloneState(initialState);\n}\n/**\n* Constructs a table instance from normalized table internals.\n*\n* This wires core properties, feature prototype APIs, and instance data used by table rendering and row-model operations.\n*/\nfunction constructTable(tableOptions) {\n\tconst _reactivity = tableOptions.features.coreReactivityFeature;\n\tconst { aggregationFns, columnMeta: _columnMeta, coreRowModel, expandedRowModel, facetedMinMaxValues, facetedRowModel, facetedUniqueValues, filterFns, filterMeta: _filterMeta, filteredRowModel, groupedRowModel, paginatedRowModel, sortFns, sortedRowModel, tableMeta: _tableMeta, ...features } = tableOptions.features;\n\tconst table = {\n\t\t_cellInstanceInitFns: [],\n\t\t_columnInstanceInitFns: [],\n\t\t_features: {\n\t\t\t...coreFeatures,\n\t\t\t...features\n\t\t},\n\t\t_headerGroupInstanceInitFns: [],\n\t\t_headerInstanceInitFns: [],\n\t\t_reactivity,\n\t\t_rowInstanceInitFns: [],\n\t\t_rowModelFns: {\n\t\t\taggregationFns,\n\t\t\tfilterFns,\n\t\t\tsortFns\n\t\t},\n\t\t_rowModels: {},\n\t\tatoms: {},\n\t\tbaseAtoms: {}\n\t};\n\tconst featuresList = Object.values(table._features);\n\tconst mergedOptions = {\n\t\t...featuresList.reduce((obj, feature) => {\n\t\t\treturn Object.assign(obj, feature.getDefaultTableOptions?.(table));\n\t\t}, {}),\n\t\t...tableOptions\n\t};\n\tif (_reactivity.wrapExternalAtoms && mergedOptions.atoms) for (const [atomKey, _atom] of Object.entries(mergedOptions.atoms)) {\n\t\tconst atom = _atom;\n\t\tconst wrappedAtom = _reactivity.createWritableAtom(atom.get(), { debugName: `externalAtom/${atomKey}` });\n\t\tmergedOptions.atoms[atomKey] = wrappedAtom;\n\t\tlet syncExternal = false;\n\t\tconst syncAtomToWrappedSub = atom.subscribe((value) => {\n\t\t\tif (syncExternal) return;\n\t\t\twrappedAtom.set(value);\n\t\t});\n\t\tconst syncWrappedToAtomSub = wrappedAtom.subscribe((value) => {\n\t\t\tsyncExternal = true;\n\t\t\tatom.set(value);\n\t\t\tsyncExternal = false;\n\t\t});\n\t\t_reactivity.addSubscription(syncAtomToWrappedSub);\n\t\t_reactivity.addSubscription(syncWrappedToAtomSub);\n\t}\n\tif (_reactivity.createOptionsStore) {\n\t\ttable.optionsStore = _reactivity.createWritableAtom(mergedOptions, { debugName: \"table/optionsStore\" });\n\t\tObject.defineProperty(table, \"options\", {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: true,\n\t\t\tget() {\n\t\t\t\treturn table.optionsStore.get();\n\t\t\t},\n\t\t\tset(value) {\n\t\t\t\ttable.optionsStore.set(() => value);\n\t\t\t}\n\t\t});\n\t} else table.options = mergedOptions;\n\ttable.initialState = getInitialTableState(table._features, table.options.initialState);\n\tconst stateKeys = Object.keys(table.initialState);\n\tfor (let i = 0; i < stateKeys.length; i++) {\n\t\tconst key = stateKeys[i];\n\t\ttable.baseAtoms[key] = _reactivity.createWritableAtom(table.initialState[key], { debugName: `table/baseAtoms/${key}` });\n\t\ttable.atoms[key] = _reactivity.createReadonlyAtom(() => {\n\t\t\tconst options = table.options;\n\t\t\tconst externalAtom = options.atoms?.[key];\n\t\t\tconst reactiveState = externalAtom ? externalAtom.get() : table.baseAtoms[key].get();\n\t\t\tif (externalAtom) return reactiveState;\n\t\t\tconst controlledState = options.state;\n\t\t\tif (controlledState && hasOwn(controlledState, key)) {\n\t\t\t\tconst controlledValue = controlledState[key];\n\t\t\t\treturn controlledValue === void 0 ? table.initialState[key] : controlledValue;\n\t\t\t}\n\t\t\treturn reactiveState;\n\t\t}, { debugName: `table/atoms/${key}` });\n\t}\n\ttable_syncExternalStateToBaseAtoms(table);\n\ttable.store = atomToStore(_reactivity.createReadonlyAtom(() => {\n\t\tconst snapshot = {};\n\t\tfor (let i = 0; i < stateKeys.length; i++) {\n\t\t\tconst key = stateKeys[i];\n\t\t\tsnapshot[key] = table.atoms[key].get();\n\t\t}\n\t\treturn snapshot;\n\t}, {\n\t\tcompare: shallow,\n\t\tdebugName: \"table/store\"\n\t}));\n\tfor (let i = 0; i < featuresList.length; i++) {\n\t\tconst feature = featuresList[i];\n\t\tfeature.initTableInstanceData?.(table);\n\t\tif (feature.initCellInstanceData) table._cellInstanceInitFns.push(feature.initCellInstanceData.bind(feature));\n\t\tif (feature.initColumnInstanceData) table._columnInstanceInitFns.push(feature.initColumnInstanceData.bind(feature));\n\t\tif (feature.initHeaderGroupInstanceData) table._headerGroupInstanceInitFns.push(feature.initHeaderGroupInstanceData.bind(feature));\n\t\tif (feature.initHeaderInstanceData) table._headerInstanceInitFns.push(feature.initHeaderInstanceData.bind(feature));\n\t\tif (feature.initRowInstanceData) table._rowInstanceInitFns.push(feature.initRowInstanceData.bind(feature));\n\t\tfeature.constructTableAPIs?.(table);\n\t}\n\tif (process.env.NODE_ENV === \"development\" && (tableOptions.debugAll || tableOptions.debugTable)) {\n\t\tconst features = Object.keys(table._features);\n\t\tconst rowModels = Object.entries({\n\t\t\tcoreRowModel,\n\t\t\tfilteredRowModel,\n\t\t\tgroupedRowModel,\n\t\t\tsortedRowModel,\n\t\t\texpandedRowModel,\n\t\t\tpaginatedRowModel,\n\t\t\tfacetedRowModel,\n\t\t\tfacetedMinMaxValues,\n\t\t\tfacetedUniqueValues\n\t\t}).filter(([, factory]) => factory).map(([key]) => key);\n\t\tconst states = Object.keys(table.initialState);\n\t\tconsole.log(`Constructing Table Instance\n\n Features: ${features.join(\"\\n \")}\n\n Row Models: ${rowModels.length ? rowModels.join(\"\\n \") : \"(none)\"}\n\n States: ${states.join(\"\\n \")}\\n`, { table });\n\t}\n\treturn table;\n}\n\n//#endregion\nexport { constructTable, getInitialTableState };","import { callMemoOrStaticFn, cloneState, setStateSlice } from \"../../utils.js\";\nimport { getIsColumnVisible, getVisibleCells, getVisibleCellsByColumnId, getVisibleLeafColumns } from \"../../core/featureStubs.js\";\nimport { buildHeaderGroups } from \"../../core/headers/buildHeaderGroups.js\";\n\n//#region src/features/column-pinning/columnPinningFeature.utils.ts\n/**\n* Creates the default column pinning state.\n*\n* Both pinning regions start empty. Reset APIs use this value when\n* `defaultState` is `true`.\n*\n* @example\n* ```ts\n* const pinning = getDefaultColumnPinningState()\n* ```\n*/\nfunction getDefaultColumnPinningState() {\n\treturn {\n\t\tstart: [],\n\t\tend: []\n\t};\n}\n/**\n* Moves this column's leaf column ids into a pinning region.\n*\n* Pinning a group column pins all of its leaves. The leaf ids are first removed\n* from both regions, then appended to the requested `'start'` or `'end'`\n* region. Passing `false` unpins them back to the center.\n*\n* `start` and `end` are logical positions. In LTR languages/layouts, `start`\n* usually corresponds to left and `end` to right. In RTL languages/layouts,\n* `start` usually corresponds to right and `end` to left.\n*\n* @example\n* ```ts\n* column_pin(column, 'start')\n* ```\n*/\nfunction column_pin(column, position) {\n\tconst leafColumns = column.getLeafColumns();\n\tconst columnIds = [];\n\tfor (let i = 0; i < leafColumns.length; i++) {\n\t\tconst id = leafColumns[i].id;\n\t\tif (id) columnIds.push(id);\n\t}\n\ttable_setColumnPinning(column.table, (old) => {\n\t\tif (position === \"end\") return {\n\t\t\tstart: old.start.filter((d) => !columnIds.includes(d)),\n\t\t\tend: [...old.end.filter((d) => !columnIds.includes(d)), ...columnIds]\n\t\t};\n\t\tif (position === \"start\") return {\n\t\t\tstart: [...old.start.filter((d) => !columnIds.includes(d)), ...columnIds],\n\t\t\tend: old.end.filter((d) => !columnIds.includes(d))\n\t\t};\n\t\treturn {\n\t\t\tstart: old.start.filter((d) => !columnIds.includes(d)),\n\t\t\tend: old.end.filter((d) => !columnIds.includes(d))\n\t\t};\n\t});\n}\n/**\n* Checks whether this column or any of its leaf columns can be pinned.\n*\n* Column-level `enablePinning` and table `enableColumnPinning` both default to\n* `true`; at least one leaf column must allow pinning.\n*\n* @example\n* ```ts\n* const canPin = column_getCanPin(column)\n* ```\n*/\nfunction column_getCanPin(column) {\n\treturn column.getLeafColumns().some((leafColumn) => (leafColumn.columnDef.enablePinning ?? true) && (column.table.options.enableColumnPinning ?? true));\n}\n/**\n* Reads this column's current pinning region.\n*\n* Group columns report `'start'` or `'end'` when any leaf column is pinned in\n* that region. Unpinned columns return `false`.\n*\n* `start` and `end` are logical positions. In LTR languages/layouts, `start`\n* usually corresponds to left and `end` to right. In RTL languages/layouts,\n* `start` usually corresponds to right and `end` to left.\n*\n* @example\n* ```ts\n* const position = column_getIsPinned(column)\n* ```\n*/\nfunction column_getIsPinned(column) {\n\tconst leafColumns = column.getLeafColumns();\n\tconst { start, end } = column.table.atoms.columnPinning?.get() ?? getDefaultColumnPinningState();\n\tfor (let i = 0; i < leafColumns.length; i++) if (start.includes(leafColumns[i].id)) return \"start\";\n\tfor (let i = 0; i < leafColumns.length; i++) if (end.includes(leafColumns[i].id)) return \"end\";\n\treturn false;\n}\n/**\n* Finds this column's index within its pinned region.\n*\n* Unpinned columns return `0`; pinned columns return their position in\n* `state.columnPinning.start` or `state.columnPinning.end`.\n*\n* @example\n* ```ts\n* const index = column_getPinnedIndex(column)\n* ```\n*/\nfunction column_getPinnedIndex(column) {\n\tconst position = column_getIsPinned(column);\n\treturn position ? column.table.atoms.columnPinning?.get()?.[position].indexOf(column.id) ?? -1 : 0;\n}\n/**\n* Collects visible cells whose columns are not pinned start or end.\n*\n* The result preserves the row's visible-cell order for center columns.\n*\n* @example\n* ```ts\n* const centerCells = row_getCenterVisibleCells(row)\n* ```\n*/\nfunction row_getCenterVisibleCells(row) {\n\tconst allCells = getVisibleCells(row);\n\tconst { start, end } = row.table.atoms.columnPinning?.get() ?? getDefaultColumnPinningState();\n\tif (!start.length && !end.length) return allCells;\n\tconst startAndEnd = [...start, ...end];\n\treturn allCells.filter((d) => !startAndEnd.includes(d.column.id));\n}\n/**\n* Collects visible cells for columns pinned to the start region.\n*\n* Cells are returned in `state.columnPinning.start` order and are marked with\n* `cell.position = 'start'`.\n*\n* @example\n* ```ts\n* const startCells = row_getStartVisibleCells(row)\n* ```\n*/\nfunction row_getStartVisibleCells(row) {\n\tconst { start } = row.table.atoms.columnPinning?.get() ?? getDefaultColumnPinningState();\n\tif (!start.length) return [];\n\tconst allVisibleCells = getVisibleCellsByColumnId(row);\n\tconst cells = [];\n\tfor (let i = 0; i < start.length; i++) {\n\t\tconst cell = allVisibleCells[start[i]];\n\t\tif (cell) {\n\t\t\tcell.position = \"start\";\n\t\t\tcells.push(cell);\n\t\t}\n\t}\n\treturn cells;\n}\n/**\n* Collects visible cells for columns pinned to the end region.\n*\n* Cells are returned in `state.columnPinning.end` order and are marked with\n* `cell.position = 'end'`.\n*\n* @example\n* ```ts\n* const endCells = row_getEndVisibleCells(row)\n* ```\n*/\nfunction row_getEndVisibleCells(row) {\n\tconst { end } = row.table.atoms.columnPinning?.get() ?? getDefaultColumnPinningState();\n\tif (!end.length) return [];\n\tconst allVisibleCells = getVisibleCellsByColumnId(row);\n\tconst cells = [];\n\tfor (let i = 0; i < end.length; i++) {\n\t\tconst cell = allVisibleCells[end[i]];\n\t\tif (cell) {\n\t\t\tcell.position = \"end\";\n\t\t\tcells.push(cell);\n\t\t}\n\t}\n\treturn cells;\n}\n/**\n* Routes a column pinning updater through the table's pinning change handler.\n*\n* The updater may be a next `{ start, end }` state or a function of the\n* previous state, matching the instance `table.setColumnPinning` behavior.\n*\n* @example\n* ```ts\n* table_setColumnPinning(table, (old) => ({ ...old, start: ['select'] }))\n* ```\n*/\nfunction table_setColumnPinning(table, updater) {\n\tsetStateSlice(table, \"columnPinning\", updater);\n}\n/**\n* Resets `columnPinning` to the configured initial state or feature default.\n*\n* With no argument, the reset clones `table.initialState.columnPinning` when it\n* exists. Passing `true` ignores initial state and resets to empty start/end\n* arrays.\n*\n* @example\n* ```ts\n* table_resetColumnPinning(table)\n* table_resetColumnPinning(table, true)\n* ```\n*/\nfunction table_resetColumnPinning(table, defaultState) {\n\ttable_setColumnPinning(table, defaultState ? getDefaultColumnPinningState() : cloneState(table.initialState.columnPinning ?? getDefaultColumnPinningState()));\n}\n/**\n* Checks whether any columns are pinned.\n*\n* Omit `position` to check both sides, or pass `'start'`/`'end'` to inspect a\n* single pinning region.\n*\n* @example\n* ```ts\n* const hasPinnedColumns = table_getIsSomeColumnsPinned(table)\n* ```\n*/\nfunction table_getIsSomeColumnsPinned(table, position) {\n\tconst pinningState = table.atoms.columnPinning?.get();\n\tif (!position) return Boolean(pinningState?.start.length || pinningState?.end.length);\n\treturn Boolean(pinningState?.[position].length);\n}\n/**\n* Builds header groups for visible columns pinned to the start region.\n*\n* The leaf columns are read in `state.columnPinning.start` order and then passed\n* through the same header-group builder as the unpinned table.\n*\n* @example\n* ```ts\n* const headerGroups = table_getStartHeaderGroups(table)\n* ```\n*/\nfunction table_getStartHeaderGroups(table) {\n\tconst allColumns = table.getAllColumns();\n\tconst leafColumnsById = table.getAllLeafColumnsById();\n\tconst { start } = table.atoms.columnPinning?.get() ?? getDefaultColumnPinningState();\n\tconst orderedLeafColumns = [];\n\tfor (let i = 0; i < start.length; i++) {\n\t\tconst column = leafColumnsById[start[i]];\n\t\tif (column && getIsColumnVisible(column)) orderedLeafColumns.push(column);\n\t}\n\treturn buildHeaderGroups(allColumns, orderedLeafColumns, table, \"start\");\n}\n/**\n* Builds header groups for visible columns pinned to the end region.\n*\n* The leaf columns are read in `state.columnPinning.end` order and then\n* passed through the same header-group builder as the unpinned table.\n*\n* @example\n* ```ts\n* const headerGroups = table_getEndHeaderGroups(table)\n* ```\n*/\nfunction table_getEndHeaderGroups(table) {\n\tconst allColumns = table.getAllColumns();\n\tconst leafColumnsById = table.getAllLeafColumnsById();\n\tconst { end } = table.atoms.columnPinning?.get() ?? getDefaultColumnPinningState();\n\tconst orderedLeafColumns = [];\n\tfor (let i = 0; i < end.length; i++) {\n\t\tconst column = leafColumnsById[end[i]];\n\t\tif (column && getIsColumnVisible(column)) orderedLeafColumns.push(column);\n\t}\n\treturn buildHeaderGroups(allColumns, orderedLeafColumns, table, \"end\");\n}\n/**\n* Builds header groups for visible columns that are not pinned.\n*\n* Start- and end-pinned column ids are removed from the visible leaf column\n* list before header groups are built for the center region.\n*\n* @example\n* ```ts\n* const headerGroups = table_getCenterHeaderGroups(table)\n* ```\n*/\nfunction table_getCenterHeaderGroups(table) {\n\tconst allColumns = table.getAllColumns();\n\tlet leafColumns = getVisibleLeafColumns(table);\n\tconst { start, end } = table.atoms.columnPinning?.get() ?? getDefaultColumnPinningState();\n\tif (start.length || end.length) {\n\t\tconst startAndEnd = [...start, ...end];\n\t\tleafColumns = leafColumns.filter((column) => !startAndEnd.includes(column.id));\n\t}\n\treturn buildHeaderGroups(allColumns, leafColumns, table, \"center\");\n}\n/**\n* Builds footer groups for the start pinned region.\n*\n* Footer groups reuse the start header groups in reverse order.\n*\n* @example\n* ```ts\n* const footerGroups = table_getStartFooterGroups(table)\n* ```\n*/\nfunction table_getStartFooterGroups(table) {\n\treturn [...callMemoOrStaticFn(table, \"getStartHeaderGroups\", table_getStartHeaderGroups)].reverse();\n}\n/**\n* Builds footer groups for the end pinned region.\n*\n* Footer groups reuse the end header groups in reverse order.\n*\n* @example\n* ```ts\n* const footerGroups = table_getEndFooterGroups(table)\n* ```\n*/\nfunction table_getEndFooterGroups(table) {\n\treturn [...callMemoOrStaticFn(table, \"getEndHeaderGroups\", table_getEndHeaderGroups)].reverse();\n}\n/**\n* Builds footer groups for the center, unpinned region.\n*\n* Footer groups reuse the center header groups in reverse order.\n*\n* @example\n* ```ts\n* const footerGroups = table_getCenterFooterGroups(table)\n* ```\n*/\nfunction table_getCenterFooterGroups(table) {\n\treturn [...callMemoOrStaticFn(table, \"getCenterHeaderGroups\", table_getCenterHeaderGroups)].reverse();\n}\n/**\n* Flattens every header from the start pinned header groups.\n*\n* Parent headers and placeholder headers are included.\n*\n* @example\n* ```ts\n* const headers = table_getStartFlatHeaders(table)\n* ```\n*/\nfunction table_getStartFlatHeaders(table) {\n\tconst leftHeaderGroups = callMemoOrStaticFn(table, \"getStartHeaderGroups\", table_getStartHeaderGroups);\n\tconst result = [];\n\tfor (let i = 0; i < leftHeaderGroups.length; i++) {\n\t\tconst headers = leftHeaderGroups[i].headers;\n\t\tfor (let j = 0; j < headers.length; j++) result.push(headers[j]);\n\t}\n\treturn result;\n}\n/**\n* Flattens every header from the end pinned header groups.\n*\n* Parent headers and placeholder headers are included.\n*\n* @example\n* ```ts\n* const headers = table_getEndFlatHeaders(table)\n* ```\n*/\nfunction table_getEndFlatHeaders(table) {\n\tconst rightHeaderGroups = callMemoOrStaticFn(table, \"getEndHeaderGroups\", table_getEndHeaderGroups);\n\tconst result = [];\n\tfor (let i = 0; i < rightHeaderGroups.length; i++) {\n\t\tconst headers = rightHeaderGroups[i].headers;\n\t\tfor (let j = 0; j < headers.length; j++) result.push(headers[j]);\n\t}\n\treturn result;\n}\n/**\n* Flattens every header from the center header groups.\n*\n* Parent headers and placeholder headers are included.\n*\n* @example\n* ```ts\n* const headers = table_getCenterFlatHeaders(table)\n* ```\n*/\nfunction table_getCenterFlatHeaders(table) {\n\tconst centerHeaderGroups = callMemoOrStaticFn(table, \"getCenterHeaderGroups\", table_getCenterHeaderGroups);\n\tconst result = [];\n\tfor (let i = 0; i < centerHeaderGroups.length; i++) {\n\t\tconst headers = centerHeaderGroups[i].headers;\n\t\tfor (let j = 0; j < headers.length; j++) result.push(headers[j]);\n\t}\n\treturn result;\n}\n/**\n* Collects leaf headers for the start pinned region.\n*\n* Parent headers are filtered out from the start flat header list.\n*\n* @example\n* ```ts\n* const headers = table_getStartLeafHeaders(table)\n* ```\n*/\nfunction table_getStartLeafHeaders(table) {\n\treturn callMemoOrStaticFn(table, \"getStartFlatHeaders\", table_getStartFlatHeaders).filter((header) => !header.subHeaders.length);\n}\n/**\n* Collects leaf headers for the end pinned region.\n*\n* Parent headers are filtered out from the end flat header list.\n*\n* @example\n* ```ts\n* const headers = table_getEndLeafHeaders(table)\n* ```\n*/\nfunction table_getEndLeafHeaders(table) {\n\treturn callMemoOrStaticFn(table, \"getEndFlatHeaders\", table_getEndFlatHeaders).filter((header) => !header.subHeaders.length);\n}\n/**\n* Collects leaf headers for the center, unpinned region.\n*\n* Parent headers are filtered out from the center flat header list.\n*\n* @example\n* ```ts\n* const headers = table_getCenterLeafHeaders(table)\n* ```\n*/\nfunction table_getCenterLeafHeaders(table) {\n\treturn callMemoOrStaticFn(table, \"getCenterFlatHeaders\", table_getCenterFlatHeaders).filter((header) => !header.subHeaders.length);\n}\n/**\n* Resolves leaf columns pinned to the start region.\n*\n* The result follows `state.columnPinning.start` order and skips stale ids that\n* no longer correspond to a leaf column.\n*\n* @example\n* ```ts\n* const columns = table_getStartLeafColumns(table)\n* ```\n*/\nfunction table_getStartLeafColumns(table) {\n\tconst { start } = table.atoms.columnPinning?.get() ?? getDefaultColumnPinningState();\n\tconst leafColumnsById = table.getAllLeafColumnsById();\n\tconst result = [];\n\tfor (let i = 0; i < start.length; i++) {\n\t\tconst column = leafColumnsById[start[i]];\n\t\tif (column) result.push(column);\n\t}\n\treturn result;\n}\n/**\n* Resolves leaf columns pinned to the end region.\n*\n* The result follows `state.columnPinning.end` order and skips stale ids that\n* no longer correspond to a leaf column.\n*\n* @example\n* ```ts\n* const columns = table_getEndLeafColumns(table)\n* ```\n*/\nfunction table_getEndLeafColumns(table) {\n\tconst { end } = table.atoms.columnPinning?.get() ?? getDefaultColumnPinningState();\n\tconst leafColumnsById = table.getAllLeafColumnsById();\n\tconst result = [];\n\tfor (let i = 0; i < end.length; i++) {\n\t\tconst column = leafColumnsById[end[i]];\n\t\tif (column) result.push(column);\n\t}\n\treturn result;\n}\n/**\n* Resolves leaf columns that are not pinned to either logical side.\n*\n* Start- and end-pinned ids are removed from `table.getAllLeafColumns()`.\n*\n* @example\n* ```ts\n* const columns = table_getCenterLeafColumns(table)\n* ```\n*/\nfunction table_getCenterLeafColumns(table) {\n\tconst { start, end } = table.atoms.columnPinning?.get() ?? getDefaultColumnPinningState();\n\tif (!start.length && !end.length) return table.getAllLeafColumns();\n\tconst startAndEnd = [...start, ...end];\n\treturn table.getAllLeafColumns().filter((d) => !startAndEnd.includes(d.id));\n}\n/**\n* Resolves leaf columns for a requested pinning region.\n*\n* Pass `'start'`, `'center'`, or `'end'` for a partition, or pass `false` to\n* read all leaf columns without partitioning.\n*\n* @example\n* ```ts\n* const columns = table_getPinnedLeafColumns(table, 'center')\n* ```\n*/\nfunction table_getPinnedLeafColumns(table, position) {\n\treturn !position ? table.getAllLeafColumns() : position === \"start\" ? callMemoOrStaticFn(table, \"getStartLeafColumns\", table_getStartLeafColumns) : position === \"end\" ? callMemoOrStaticFn(table, \"getEndLeafColumns\", table_getEndLeafColumns) : callMemoOrStaticFn(table, \"getCenterLeafColumns\", table_getCenterLeafColumns);\n}\n/**\n* Resolves visible leaf columns pinned to the start region.\n*\n* Hidden pinned columns are filtered out after the start pin order is applied.\n*\n* @example\n* ```ts\n* const columns = table_getStartVisibleLeafColumns(table)\n* ```\n*/\nfunction table_getStartVisibleLeafColumns(table) {\n\treturn callMemoOrStaticFn(table, \"getStartLeafColumns\", table_getStartLeafColumns).filter((column) => getIsColumnVisible(column));\n}\n/**\n* Resolves visible leaf columns pinned to the end region.\n*\n* Hidden pinned columns are filtered out after the end pin order is applied.\n*\n* @example\n* ```ts\n* const columns = table_getEndVisibleLeafColumns(table)\n* ```\n*/\nfunction table_getEndVisibleLeafColumns(table) {\n\treturn callMemoOrStaticFn(table, \"getEndLeafColumns\", table_getEndLeafColumns).filter((column) => getIsColumnVisible(column));\n}\n/**\n* Resolves visible leaf columns that are not pinned.\n*\n* This is the center partition used by layouts that render pinned columns\n* separately from the scrollable middle region.\n*\n* @example\n* ```ts\n* const columns = table_getCenterVisibleLeafColumns(table)\n* ```\n*/\nfunction table_getCenterVisibleLeafColumns(table) {\n\treturn callMemoOrStaticFn(table, \"getCenterLeafColumns\", table_getCenterLeafColumns).filter((column) => getIsColumnVisible(column));\n}\n/**\n* Resolves visible leaf columns for a requested pinning region.\n*\n* Omit `position` to get all visible leaf columns, or pass `'start'`, `'center'`,\n* or `'end'` to get one partition.\n*\n* @example\n* ```ts\n* const columns = table_getPinnedVisibleLeafColumns(table, 'start')\n* ```\n*/\nfunction table_getPinnedVisibleLeafColumns(table, position) {\n\treturn !position ? getVisibleLeafColumns(table) : position === \"start\" ? callMemoOrStaticFn(table, \"getStartVisibleLeafColumns\", table_getStartVisibleLeafColumns) : position === \"end\" ? callMemoOrStaticFn(table, \"getEndVisibleLeafColumns\", table_getEndVisibleLeafColumns) : callMemoOrStaticFn(table, \"getCenterVisibleLeafColumns\", table_getCenterVisibleLeafColumns);\n}\n\n//#endregion\nexport { column_getCanPin, column_getIsPinned, column_getPinnedIndex, column_pin, getDefaultColumnPinningState, row_getCenterVisibleCells, row_getEndVisibleCells, row_getStartVisibleCells, table_getCenterFlatHeaders, table_getCenterFooterGroups, table_getCenterHeaderGroups, table_getCenterLeafColumns, table_getCenterLeafHeaders, table_getCenterVisibleLeafColumns, table_getEndFlatHeaders, table_getEndFooterGroups, table_getEndHeaderGroups, table_getEndLeafColumns, table_getEndLeafHeaders, table_getEndVisibleLeafColumns, table_getIsSomeColumnsPinned, table_getPinnedLeafColumns, table_getPinnedVisibleLeafColumns, table_getStartFlatHeaders, table_getStartFooterGroups, table_getStartHeaderGroups, table_getStartLeafColumns, table_getStartLeafHeaders, table_getStartVisibleLeafColumns, table_resetColumnPinning, table_setColumnPinning };","import { makeObjectMap } from \"../../utils.js\";\n\n//#region src/features/column-pinning/orderByColumnPinning.ts\n/**\n* Display order for column pinning, shared through the `orderByColumnPinning`\n* feature stub so that the core headers, row visible cells, and cell selection\n* don't bundle it when the column pinning feature is not registered.\n*\n* Internal: not exported from any package entry point.\n*/\n/**\n* Orders items that each belong to a leaf column, such as visible leaf\n* columns or a row's visible cells: start-pinned items in pinning order, then\n* unpinned items in their given order, then end-pinned items in pinning order.\n* Pinned ids that match no item are skipped.\n*\n* `getItemsByColumnId` can return an existing lookup of the same items, which\n* is only read when something is pinned.\n*/\nfunction orderByColumnPinning(table, items, getColumnId, getItemsByColumnId) {\n\tconst columnPinning = table.atoms.columnPinning?.get();\n\tif (!columnPinning || !columnPinning.start.length && !columnPinning.end.length) return items;\n\tconst { start, end } = columnPinning;\n\tlet itemsByColumnId = getItemsByColumnId?.();\n\tif (!itemsByColumnId) {\n\t\titemsByColumnId = makeObjectMap();\n\t\tfor (let i = 0; i < items.length; i++) itemsByColumnId[getColumnId(items[i])] = items[i];\n\t}\n\tconst ordered = [];\n\tfor (let i = 0; i < start.length; i++) {\n\t\tconst item = itemsByColumnId[start[i]];\n\t\tif (item) ordered.push(item);\n\t}\n\tfor (let i = 0; i < items.length; i++) {\n\t\tconst columnId = getColumnId(items[i]);\n\t\tif (!start.includes(columnId) && !end.includes(columnId)) ordered.push(items[i]);\n\t}\n\tfor (let i = 0; i < end.length; i++) {\n\t\tconst item = itemsByColumnId[end[i]];\n\t\tif (item) ordered.push(item);\n\t}\n\treturn ordered;\n}\n\n//#endregion\nexport { orderByColumnPinning };","import { assignPrototypeAPIs, assignTableAPIs, callMemoOrStaticFn, makeStateUpdater } from \"../../utils.js\";\nimport { getVisibleLeafColumns } from \"../../core/featureStubs.js\";\nimport { column_getCanPin, column_getIsPinned, column_getPinnedIndex, column_pin, getDefaultColumnPinningState, row_getCenterVisibleCells, row_getEndVisibleCells, row_getStartVisibleCells, table_getCenterFlatHeaders, table_getCenterFooterGroups, table_getCenterHeaderGroups, table_getCenterLeafColumns, table_getCenterLeafHeaders, table_getCenterVisibleLeafColumns, table_getEndFlatHeaders, table_getEndFooterGroups, table_getEndHeaderGroups, table_getEndLeafColumns, table_getEndLeafHeaders, table_getEndVisibleLeafColumns, table_getIsSomeColumnsPinned, table_getPinnedLeafColumns, table_getPinnedVisibleLeafColumns, table_getStartFlatHeaders, table_getStartFooterGroups, table_getStartHeaderGroups, table_getStartLeafColumns, table_getStartLeafHeaders, table_getStartVisibleLeafColumns, table_resetColumnPinning, table_setColumnPinning } from \"./columnPinningFeature.utils.js\";\nimport { orderByColumnPinning } from \"./orderByColumnPinning.js\";\n\n//#region src/features/column-pinning/columnPinningFeature.ts\n/**\n* Feature that adds column pinning state and APIs for logical start, center,\n* and end regions.\n*\n* In LTR languages/layouts, start usually corresponds to left and end to\n* right. In RTL languages/layouts, start usually corresponds to right and end\n* to left.\n*/\nconst columnPinningFeature = {\n\tgetInitialState: (initialState) => {\n\t\treturn {\n\t\t\tcolumnPinning: {\n\t\t\t\t...getDefaultColumnPinningState(),\n\t\t\t\t...initialState.columnPinning\n\t\t\t},\n\t\t\t...initialState\n\t\t};\n\t},\n\tgetDefaultTableOptions: (table) => {\n\t\treturn { onColumnPinningChange: makeStateUpdater(\"columnPinning\", table) };\n\t},\n\tassignColumnPrototype: (prototype, table) => {\n\t\tassignPrototypeAPIs(\"columnPinningFeature\", prototype, table, {\n\t\t\tcolumn_pin: { fn: (column, position) => column_pin(column, position) },\n\t\t\tcolumn_getCanPin: { fn: (column) => column_getCanPin(column) },\n\t\t\tcolumn_getPinnedIndex: { fn: (column) => column_getPinnedIndex(column) },\n\t\t\tcolumn_getIsPinned: { fn: (column) => column_getIsPinned(column) }\n\t\t});\n\t},\n\tassignRowPrototype: (prototype, table) => {\n\t\tassignPrototypeAPIs(\"columnPinningFeature\", prototype, table, {\n\t\t\trow_getCenterVisibleCells: {\n\t\t\t\tfn: (row) => row_getCenterVisibleCells(row),\n\t\t\t\tmemoDeps: (row) => [\n\t\t\t\t\trow.getAllCells(),\n\t\t\t\t\trow.table.atoms.columnPinning?.get(),\n\t\t\t\t\trow.table.atoms.columnVisibility?.get()\n\t\t\t\t]\n\t\t\t},\n\t\t\trow_getStartVisibleCells: {\n\t\t\t\tfn: (row) => row_getStartVisibleCells(row),\n\t\t\t\tmemoDeps: (row) => [\n\t\t\t\t\trow.getAllCells(),\n\t\t\t\t\trow.table.atoms.columnPinning?.get()?.start,\n\t\t\t\t\trow.table.atoms.columnVisibility?.get()\n\t\t\t\t]\n\t\t\t},\n\t\t\trow_getEndVisibleCells: {\n\t\t\t\tfn: (row) => row_getEndVisibleCells(row),\n\t\t\t\tmemoDeps: (row) => [\n\t\t\t\t\trow.getAllCells(),\n\t\t\t\t\trow.table.atoms.columnPinning?.get()?.end,\n\t\t\t\t\trow.table.atoms.columnVisibility?.get()\n\t\t\t\t]\n\t\t\t}\n\t\t});\n\t},\n\tconstructTableAPIs: (table) => {\n\t\tassignTableAPIs(\"columnPinningFeature\", table, {\n\t\t\ttable_setColumnPinning: { fn: (updater) => table_setColumnPinning(table, updater) },\n\t\t\ttable_resetColumnPinning: { fn: (defaultState) => table_resetColumnPinning(table, defaultState) },\n\t\t\ttable_getIsSomeColumnsPinned: { fn: (position) => table_getIsSomeColumnsPinned(table, position) },\n\t\t\ttable__orderByColumnPinning: { fn: (items, getColumnId, getItemsByColumnId) => orderByColumnPinning(table, items, getColumnId, getItemsByColumnId) },\n\t\t\ttable_getStartHeaderGroups: {\n\t\t\t\tfn: () => table_getStartHeaderGroups(table),\n\t\t\t\tmemoDeps: () => [\n\t\t\t\t\ttable.getAllColumns(),\n\t\t\t\t\tgetVisibleLeafColumns(table),\n\t\t\t\t\ttable.atoms.columnPinning?.get()?.start,\n\t\t\t\t\ttable.atoms.columnOrder?.get()\n\t\t\t\t]\n\t\t\t},\n\t\t\ttable_getCenterHeaderGroups: {\n\t\t\t\tfn: () => table_getCenterHeaderGroups(table),\n\t\t\t\tmemoDeps: () => [\n\t\t\t\t\ttable.getAllColumns(),\n\t\t\t\t\tgetVisibleLeafColumns(table),\n\t\t\t\t\ttable.atoms.columnPinning?.get(),\n\t\t\t\t\ttable.atoms.columnOrder?.get()\n\t\t\t\t]\n\t\t\t},\n\t\t\ttable_getEndHeaderGroups: {\n\t\t\t\tfn: () => table_getEndHeaderGroups(table),\n\t\t\t\tmemoDeps: () => [\n\t\t\t\t\ttable.getAllColumns(),\n\t\t\t\t\tgetVisibleLeafColumns(table),\n\t\t\t\t\ttable.atoms.columnPinning?.get()?.end,\n\t\t\t\t\ttable.atoms.columnOrder?.get()\n\t\t\t\t]\n\t\t\t},\n\t\t\ttable_getStartFooterGroups: {\n\t\t\t\tfn: () => table_getStartFooterGroups(table),\n\t\t\t\tmemoDeps: () => [callMemoOrStaticFn(table, \"getStartHeaderGroups\", table_getStartHeaderGroups)]\n\t\t\t},\n\t\t\ttable_getCenterFooterGroups: {\n\t\t\t\tfn: () => table_getCenterFooterGroups(table),\n\t\t\t\tmemoDeps: () => [callMemoOrStaticFn(table, \"getCenterHeaderGroups\", table_getCenterHeaderGroups)]\n\t\t\t},\n\t\t\ttable_getEndFooterGroups: {\n\t\t\t\tfn: () => table_getEndFooterGroups(table),\n\t\t\t\tmemoDeps: () => [callMemoOrStaticFn(table, \"getEndHeaderGroups\", table_getEndHeaderGroups)]\n\t\t\t},\n\t\t\ttable_getStartFlatHeaders: {\n\t\t\t\tfn: () => table_getStartFlatHeaders(table),\n\t\t\t\tmemoDeps: () => [callMemoOrStaticFn(table, \"getStartHeaderGroups\", table_getStartHeaderGroups)]\n\t\t\t},\n\t\t\ttable_getEndFlatHeaders: {\n\t\t\t\tfn: () => table_getEndFlatHeaders(table),\n\t\t\t\tmemoDeps: () => [callMemoOrStaticFn(table, \"getEndHeaderGroups\", table_getEndHeaderGroups)]\n\t\t\t},\n\t\t\ttable_getCenterFlatHeaders: {\n\t\t\t\tfn: () => table_getCenterFlatHeaders(table),\n\t\t\t\tmemoDeps: () => [callMemoOrStaticFn(table, \"getCenterHeaderGroups\", table_getCenterHeaderGroups)]\n\t\t\t},\n\t\t\ttable_getStartLeafHeaders: {\n\t\t\t\tfn: () => table_getStartLeafHeaders(table),\n\t\t\t\tmemoDeps: () => [callMemoOrStaticFn(table, \"getStartHeaderGroups\", table_getStartHeaderGroups)]\n\t\t\t},\n\t\t\ttable_getEndLeafHeaders: {\n\t\t\t\tfn: () => table_getEndLeafHeaders(table),\n\t\t\t\tmemoDeps: () => [callMemoOrStaticFn(table, \"getEndHeaderGroups\", table_getEndHeaderGroups)]\n\t\t\t},\n\t\t\ttable_getCenterLeafHeaders: {\n\t\t\t\tfn: () => table_getCenterLeafHeaders(table),\n\t\t\t\tmemoDeps: () => [callMemoOrStaticFn(table, \"getCenterHeaderGroups\", table_getCenterHeaderGroups)]\n\t\t\t},\n\t\t\ttable_getStartLeafColumns: {\n\t\t\t\tfn: () => table_getStartLeafColumns(table),\n\t\t\t\tmemoDeps: () => [\n\t\t\t\t\ttable.options.columns,\n\t\t\t\t\ttable.atoms.columnPinning?.get(),\n\t\t\t\t\ttable.atoms.columnOrder?.get(),\n\t\t\t\t\ttable.atoms.grouping?.get(),\n\t\t\t\t\ttable.options.groupedColumnMode\n\t\t\t\t]\n\t\t\t},\n\t\t\ttable_getEndLeafColumns: {\n\t\t\t\tfn: () => table_getEndLeafColumns(table),\n\t\t\t\tmemoDeps: () => [\n\t\t\t\t\ttable.options.columns,\n\t\t\t\t\ttable.atoms.columnPinning?.get(),\n\t\t\t\t\ttable.atoms.columnOrder?.get(),\n\t\t\t\t\ttable.atoms.grouping?.get(),\n\t\t\t\t\ttable.options.groupedColumnMode\n\t\t\t\t]\n\t\t\t},\n\t\t\ttable_getCenterLeafColumns: {\n\t\t\t\tfn: () => table_getCenterLeafColumns(table),\n\t\t\t\tmemoDeps: () => [\n\t\t\t\t\ttable.options.columns,\n\t\t\t\t\ttable.atoms.columnPinning?.get(),\n\t\t\t\t\ttable.atoms.columnOrder?.get(),\n\t\t\t\t\ttable.atoms.grouping?.get(),\n\t\t\t\t\ttable.options.groupedColumnMode\n\t\t\t\t]\n\t\t\t},\n\t\t\ttable_getPinnedLeafColumns: { fn: (position) => table_getPinnedLeafColumns(table, position) },\n\t\t\ttable_getStartVisibleLeafColumns: {\n\t\t\t\tfn: () => table_getStartVisibleLeafColumns(table),\n\t\t\t\tmemoDeps: () => [\n\t\t\t\t\ttable.options.columns,\n\t\t\t\t\ttable.atoms.columnPinning?.get(),\n\t\t\t\t\ttable.atoms.columnVisibility?.get(),\n\t\t\t\t\ttable.atoms.columnOrder?.get(),\n\t\t\t\t\ttable.atoms.grouping?.get(),\n\t\t\t\t\ttable.options.groupedColumnMode\n\t\t\t\t]\n\t\t\t},\n\t\t\ttable_getCenterVisibleLeafColumns: {\n\t\t\t\tfn: () => table_getCenterVisibleLeafColumns(table),\n\t\t\t\tmemoDeps: () => [\n\t\t\t\t\ttable.options.columns,\n\t\t\t\t\ttable.atoms.columnPinning?.get(),\n\t\t\t\t\ttable.atoms.columnVisibility?.get(),\n\t\t\t\t\ttable.atoms.columnOrder?.get(),\n\t\t\t\t\ttable.atoms.grouping?.get(),\n\t\t\t\t\ttable.options.groupedColumnMode\n\t\t\t\t]\n\t\t\t},\n\t\t\ttable_getEndVisibleLeafColumns: {\n\t\t\t\tfn: () => table_getEndVisibleLeafColumns(table),\n\t\t\t\tmemoDeps: () => [\n\t\t\t\t\ttable.options.columns,\n\t\t\t\t\ttable.atoms.columnPinning?.get(),\n\t\t\t\t\ttable.atoms.columnVisibility?.get(),\n\t\t\t\t\ttable.atoms.columnOrder?.get(),\n\t\t\t\t\ttable.atoms.grouping?.get(),\n\t\t\t\t\ttable.options.groupedColumnMode\n\t\t\t\t]\n\t\t\t},\n\t\t\ttable_getPinnedVisibleLeafColumns: { fn: (position) => table_getPinnedVisibleLeafColumns(table, position) }\n\t\t});\n\t}\n};\n\n//#endregion\nexport { columnPinningFeature };","import { callMemoOrStaticFn, cloneState, hasOwn, makeObjectMap } from \"../../utils.js\";\nimport { getPinnedVisibleLeafColumns } from \"../../core/featureStubs.js\";\n\n//#region src/features/column-sizing/columnSizingFeature.utils.ts\n/**\n* Creates the default committed column sizing state.\n*\n* The feature default is an empty map, so columns fall back to their column def\n* size or the built-in sizing defaults.\n*\n* @example\n* ```ts\n* const sizing = getDefaultColumnSizingState()\n* ```\n*/\nfunction getDefaultColumnSizingState() {\n\treturn makeObjectMap();\n}\n/**\n* Creates the built-in sizing defaults for column definitions.\n*\n* Columns default to `size: 150`, `minSize: 20`, and\n* `maxSize: Number.MAX_SAFE_INTEGER` unless overridden by column definitions or\n* table defaults.\n*\n* @example\n* ```ts\n* const defaults = getDefaultColumnSizingColumnDef()\n* ```\n*/\nfunction getDefaultColumnSizingColumnDef() {\n\treturn {\n\t\tsize: 150,\n\t\tminSize: 20,\n\t\tmaxSize: Number.MAX_SAFE_INTEGER\n\t};\n}\n/**\n* Resolves a column's current pixel size.\n*\n* Committed `state.columnSizing[column.id]` wins over `columnDef.size`, then the\n* built-in default size. The result is clamped between min and max size.\n*\n* @example\n* ```ts\n* const width = column_getSize(column)\n* ```\n*/\nfunction column_getSize(column) {\n\tconst defaultSizes = getDefaultColumnSizingColumnDef();\n\tconst columnSizing = column.table.atoms.columnSizing?.get();\n\tconst columnSize = columnSizing && hasOwn(columnSizing, column.id) ? columnSizing[column.id] : void 0;\n\treturn Math.min(Math.max(column.columnDef.minSize ?? defaultSizes.minSize, columnSize ?? column.columnDef.size ?? defaultSizes.size), column.columnDef.maxSize ?? defaultSizes.maxSize);\n}\nfunction buildColumnOffsets(columns) {\n\tconst starts = makeObjectMap();\n\tconst afters = makeObjectMap();\n\tconst sizes = new Array(columns.length);\n\tlet start = 0;\n\tfor (let i = 0; i < columns.length; i++) {\n\t\tconst column = columns[i];\n\t\tconst size = callMemoOrStaticFn(column, \"getSize\", column_getSize);\n\t\tsizes[i] = size;\n\t\tstarts[column.id] = start;\n\t\tstart += size;\n\t}\n\tlet after = 0;\n\tfor (let i = columns.length - 1; i >= 0; i--) {\n\t\tafters[columns[i].id] = after;\n\t\tafter += sizes[i];\n\t}\n\treturn {\n\t\tstarts,\n\t\tafters\n\t};\n}\n/**\n* Builds start and after offset maps for every visible leaf column, computed\n* once per pinning region plus the full visible list.\n*\n* A single table-level memo of this result backs all `column.getStart()` and\n* `column.getAfter()` calls with O(1) lookups.\n*\n* @example\n* ```ts\n* const offsets = table_getColumnOffsets(table)\n* const startOffset = offsets.start.starts[column.id]\n* ```\n*/\nfunction table_getColumnOffsets(table) {\n\treturn {\n\t\tall: buildColumnOffsets(getPinnedVisibleLeafColumns(table)),\n\t\tcenter: buildColumnOffsets(getPinnedVisibleLeafColumns(table, \"center\")),\n\t\tstart: buildColumnOffsets(getPinnedVisibleLeafColumns(table, \"start\")),\n\t\tend: buildColumnOffsets(getPinnedVisibleLeafColumns(table, \"end\"))\n\t};\n}\nfunction toOffsetsKey(position) {\n\treturn position === \"start\" ? \"start\" : position === \"end\" ? \"end\" : position === \"center\" ? \"center\" : \"all\";\n}\n/**\n* Computes the offset from the start edge of a pinning region to this column.\n*\n* The value is the sum of all previous visible leaf column sizes in the\n* requested `'start'`, `'center'`, or `'end'` region.\n*\n* `start` and `end` are logical positions. In LTR languages/layouts, `start`\n* usually corresponds to left and `end` to right. In RTL languages/layouts,\n* `start` usually corresponds to right and `end` to left.\n*\n* @example\n* ```ts\n* const startOffset = column_getStart(column, 'start')\n* ```\n*/\nfunction column_getStart(column, position) {\n\treturn callMemoOrStaticFn(column.table, \"getColumnOffsets\", table_getColumnOffsets)[toOffsetsKey(position)].starts[column.id] ?? 0;\n}\n/**\n* Computes the offset from the end edge of a pinning region after this column.\n*\n* The value is the sum of all following visible leaf column sizes in the\n* requested region.\n*\n* @example\n* ```ts\n* const endOffset = column_getAfter(column, 'end')\n* ```\n*/\nfunction column_getAfter(column, position) {\n\treturn callMemoOrStaticFn(column.table, \"getColumnOffsets\", table_getColumnOffsets)[toOffsetsKey(position)].afters[column.id] ?? 0;\n}\n/**\n* Removes this column's committed size override.\n*\n* After reset, the column resolves size from `columnDef.size` or built-in\n* defaults again.\n*\n* @example\n* ```ts\n* column_resetSize(column)\n* ```\n*/\nfunction column_resetSize(column) {\n\ttable_setColumnSizing(column.table, (old) => {\n\t\tconst rest = makeObjectMap();\n\t\tconst columnIds = Object.keys(old);\n\t\tfor (let i = 0; i < columnIds.length; i++) {\n\t\t\tconst columnId = columnIds[i];\n\t\t\tif (columnId !== column.id) rest[columnId] = old[columnId];\n\t\t}\n\t\treturn rest;\n\t});\n}\nfunction sumHeaderSize(header) {\n\tif (!header.subHeaders.length) return column_getSize(header.column);\n\tlet sum = 0;\n\tfor (let i = 0; i < header.subHeaders.length; i++) sum += sumHeaderSize(header.subHeaders[i]);\n\treturn sum;\n}\n/**\n* Computes a header's rendered size from its leaf headers.\n*\n* Group headers sum the sizes of all descendant leaf columns. Leaf headers use\n* their column's current size.\n*\n* @example\n* ```ts\n* const width = header_getSize(header)\n* ```\n*/\nfunction header_getSize(header) {\n\treturn sumHeaderSize(header);\n}\n/**\n* Computes a header's offset from the start of its header group.\n*\n* The offset is the previous sibling header's start plus size, or `0` for the\n* first header in the group.\n*\n* @example\n* ```ts\n* const offset = header_getStart(header)\n* ```\n*/\nfunction header_getStart(header) {\n\tif (header.index > 0) {\n\t\tconst prevSiblingHeader = header.headerGroup?.headers[header.index - 1];\n\t\tif (prevSiblingHeader) return callMemoOrStaticFn(prevSiblingHeader, \"getStart\", header_getStart) + callMemoOrStaticFn(prevSiblingHeader, \"getSize\", header_getSize);\n\t}\n\treturn 0;\n}\n/**\n* Routes a committed column sizing updater through the table's sizing handler.\n*\n* The updater may be a next size map or a function of the previous map,\n* matching the instance `table.setColumnSizing` behavior.\n*\n* @example\n* ```ts\n* table_setColumnSizing(table, (old) => ({ ...old, age: 96 }))\n* ```\n*/\nfunction table_setColumnSizing(table, updater) {\n\ttable.options.onColumnSizingChange?.(updater);\n}\n/**\n* Resets `columnSizing` to the configured initial state or feature default.\n*\n* With no argument, the reset clones `table.initialState.columnSizing` when it\n* exists. Passing `true` ignores initial state and resets to `{}`.\n*\n* @example\n* ```ts\n* table_resetColumnSizing(table)\n* table_resetColumnSizing(table, true)\n* ```\n*/\nfunction table_resetColumnSizing(table, defaultState) {\n\ttable_setColumnSizing(table, defaultState ? makeObjectMap() : Object.assign(makeObjectMap(), cloneState(table.initialState.columnSizing ?? {})));\n}\nfunction sumColumnSizes(columns) {\n\tlet sum = 0;\n\tfor (let i = 0; i < columns.length; i++) sum += callMemoOrStaticFn(columns[i], \"getSize\", column_getSize);\n\treturn sum;\n}\n/**\n* Sums the rendered size of the full table header row.\n*\n* This includes start, center, and end columns in the main header group.\n*\n* @example\n* ```ts\n* const width = table_getTotalSize(table)\n* ```\n*/\nfunction table_getTotalSize(table) {\n\treturn table.getHeaderGroups()[0]?.headers.reduce((sum, header) => {\n\t\treturn sum + header_getSize(header);\n\t}, 0) ?? 0;\n}\n/**\n* Sums the sizes of the visible leaf columns pinned to the logical start\n* region.\n*\n* An empty start pinning region returns `0`.\n*\n* @example\n* ```ts\n* const width = table_getStartTotalSize(table)\n* ```\n*/\nfunction table_getStartTotalSize(table) {\n\treturn sumColumnSizes(getPinnedVisibleLeafColumns(table, \"start\"));\n}\n/**\n* Sums the sizes of the visible leaf columns that are not pinned.\n*\n* An empty center region returns `0`.\n*\n* @example\n* ```ts\n* const width = table_getCenterTotalSize(table)\n* ```\n*/\nfunction table_getCenterTotalSize(table) {\n\treturn sumColumnSizes(getPinnedVisibleLeafColumns(table, \"center\"));\n}\n/**\n* Sums the sizes of the visible leaf columns pinned to the logical end region.\n*\n* An empty end pinning region returns `0`.\n*\n* @example\n* ```ts\n* const width = table_getEndTotalSize(table)\n* ```\n*/\nfunction table_getEndTotalSize(table) {\n\treturn sumColumnSizes(getPinnedVisibleLeafColumns(table, \"end\"));\n}\n\n//#endregion\nexport { column_getAfter, column_getSize, column_getStart, column_resetSize, getDefaultColumnSizingColumnDef, getDefaultColumnSizingState, header_getSize, header_getStart, table_getCenterTotalSize, table_getColumnOffsets, table_getEndTotalSize, table_getStartTotalSize, table_getTotalSize, table_resetColumnSizing, table_setColumnSizing };","import { assignPrototypeAPIs, assignTableAPIs, makeStateUpdater } from \"../../utils.js\";\nimport { column_getAfter, column_getSize, column_getStart, column_resetSize, getDefaultColumnSizingColumnDef, getDefaultColumnSizingState, header_getSize, header_getStart, table_getCenterTotalSize, table_getColumnOffsets, table_getEndTotalSize, table_getStartTotalSize, table_getTotalSize, table_resetColumnSizing, table_setColumnSizing } from \"./columnSizingFeature.utils.js\";\n\n//#region src/features/column-sizing/columnSizingFeature.ts\n/**\n* Feature that adds column sizing state, defaults, and size measurement APIs.\n*/\nconst columnSizingFeature = {\n\tgetInitialState: (initialState) => {\n\t\treturn {\n\t\t\tcolumnSizing: getDefaultColumnSizingState(),\n\t\t\t...initialState\n\t\t};\n\t},\n\tgetDefaultColumnDef: () => {\n\t\treturn getDefaultColumnSizingColumnDef();\n\t},\n\tgetDefaultTableOptions: (table) => {\n\t\treturn { onColumnSizingChange: makeStateUpdater(\"columnSizing\", table) };\n\t},\n\tassignColumnPrototype: (prototype, table) => {\n\t\tassignPrototypeAPIs(\"columnSizingFeature\", prototype, table, {\n\t\t\tcolumn_getSize: {\n\t\t\t\tfn: (column) => column_getSize(column),\n\t\t\t\tmemoDeps: (column) => [table.options.columns, table.atoms.columnSizing?.get()?.[column.id]]\n\t\t\t},\n\t\t\tcolumn_getStart: { fn: (column, position) => column_getStart(column, position) },\n\t\t\tcolumn_getAfter: { fn: (column, position) => column_getAfter(column, position) },\n\t\t\tcolumn_resetSize: { fn: (column) => column_resetSize(column) }\n\t\t});\n\t},\n\tassignHeaderPrototype: (prototype, table) => {\n\t\tassignPrototypeAPIs(\"columnSizingFeature\", prototype, table, {\n\t\t\theader_getSize: {\n\t\t\t\tfn: (header) => header_getSize(header),\n\t\t\t\tmemoDeps: (header) => [table.options.columns, header.column.columns.length > 0 ? table.atoms.columnSizing?.get() : table.atoms.columnSizing?.get()?.[header.column.id]]\n\t\t\t},\n\t\t\theader_getStart: {\n\t\t\t\tfn: (header) => header_getStart(header),\n\t\t\t\tmemoDeps: () => [\n\t\t\t\t\ttable.options.columns,\n\t\t\t\t\ttable.atoms.columnSizing?.get(),\n\t\t\t\t\ttable.atoms.columnOrder?.get(),\n\t\t\t\t\ttable.atoms.columnPinning?.get(),\n\t\t\t\t\ttable.atoms.columnVisibility?.get(),\n\t\t\t\t\ttable.atoms.grouping?.get(),\n\t\t\t\t\ttable.options.groupedColumnMode\n\t\t\t\t]\n\t\t\t}\n\t\t});\n\t},\n\tconstructTableAPIs: (table) => {\n\t\tassignTableAPIs(\"columnSizingFeature\", table, {\n\t\t\ttable_getColumnOffsets: {\n\t\t\t\tfn: () => table_getColumnOffsets(table),\n\t\t\t\tmemoDeps: () => [\n\t\t\t\t\ttable.options.columns,\n\t\t\t\t\ttable.atoms.columnSizing?.get(),\n\t\t\t\t\ttable.atoms.columnOrder?.get(),\n\t\t\t\t\ttable.atoms.columnPinning?.get(),\n\t\t\t\t\ttable.atoms.columnVisibility?.get(),\n\t\t\t\t\ttable.atoms.grouping?.get(),\n\t\t\t\t\ttable.options.groupedColumnMode\n\t\t\t\t]\n\t\t\t},\n\t\t\ttable_setColumnSizing: { fn: (updater) => table_setColumnSizing(table, updater) },\n\t\t\ttable_resetColumnSizing: { fn: (defaultState) => table_resetColumnSizing(table, defaultState) },\n\t\t\ttable_getTotalSize: {\n\t\t\t\tfn: () => table_getTotalSize(table),\n\t\t\t\tmemoDeps: () => [table.atoms.columnSizing?.get(), table.getHeaderGroups()]\n\t\t\t},\n\t\t\ttable_getStartTotalSize: {\n\t\t\t\tfn: () => table_getStartTotalSize(table),\n\t\t\t\tmemoDeps: () => [table.atoms.columnSizing?.get(), table.getHeaderGroups()]\n\t\t\t},\n\t\t\ttable_getCenterTotalSize: {\n\t\t\t\tfn: () => table_getCenterTotalSize(table),\n\t\t\t\tmemoDeps: () => [table.atoms.columnSizing?.get(), table.getHeaderGroups()]\n\t\t\t},\n\t\t\ttable_getEndTotalSize: {\n\t\t\t\tfn: () => table_getEndTotalSize(table),\n\t\t\t\tmemoDeps: () => [table.atoms.columnSizing?.get(), table.getHeaderGroups()]\n\t\t\t}\n\t\t});\n\t}\n};\n\n//#endregion\nexport { columnSizingFeature };","//#region src/features/row-sorting/sortFns.ts\n/**\n* Regular expression used to split mixed text and numeric chunks.\n*\n* The alphanumeric sort functions use these chunks for natural sorting of\n* strings like `item2` before `item10`.\n*/\nconst reSplitAlphaNumeric = /([0-9]+)/gm;\n/**\n* Builds a `SortFn` from a value-level comparator plus an optional\n* `resolveDataValue` normalizer.\n*\n* The `sort` comparator receives both rows' data values, each already passed\n* through `resolveDataValue` when one is defined. Keeping normalization in the\n* resolver means a variant of an existing sorting function only has to swap\n* the resolver, not re-implement the comparison.\n*\n* The definition is attached to the returned function, so a variant can be\n* created by spreading a built-in sorting function and overriding what\n* differs:\n*\n* ```ts\n* const stripDiacritics = (value: string) =>\n* value.normalize('NFD').replace(/\\p{Diacritic}/gu, '')\n*\n* const alphanumericIgnoreDiacritics = constructSortFn({\n* ...sortFn_alphanumeric,\n* resolveDataValue: (value) =>\n* stripDiacritics(sortFn_alphanumeric.resolveDataValue!(value)),\n* })\n* ```\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction constructSortFn(def) {\n\tconst sortFn = Object.assign((rowA, rowB, columnId) => {\n\t\tlet dataValueA = rowA.getValue(columnId);\n\t\tlet dataValueB = rowB.getValue(columnId);\n\t\tconst resolveDataValue = sortFn.resolveDataValue;\n\t\tif (resolveDataValue) {\n\t\t\tdataValueA = resolveDataValue(dataValueA);\n\t\t\tdataValueB = resolveDataValue(dataValueB);\n\t\t}\n\t\treturn sortFn.sort(dataValueA, dataValueB, rowA, rowB, columnId);\n\t}, def);\n\treturn sortFn;\n}\n/**\n* Sorts rows with the built-in alphanumeric strategy.\n*\n* This comparator returns ascending-order results; descending order is applied by the sorting row model.\n*/\nconst sortFn_alphanumeric = /* @__PURE__ */ constructSortFn({\n\tresolveDataValue: (dataValue) => toString(dataValue).toLowerCase(),\n\tsort: (dataValueA, dataValueB) => compareAlphanumeric(dataValueA, dataValueB)\n});\n/**\n* Sorts rows with the built-in alphanumeric case sensitive strategy.\n*\n* This comparator returns ascending-order results; descending order is applied by the sorting row model.\n*/\nconst sortFn_alphanumericCaseSensitive = /* @__PURE__ */ constructSortFn({\n\tresolveDataValue: (dataValue) => toString(dataValue),\n\tsort: (dataValueA, dataValueB) => compareAlphanumeric(dataValueA, dataValueB)\n});\n/**\n* Sorts rows with the built-in text strategy.\n*\n* This comparator returns ascending-order results; descending order is applied by the sorting row model.\n*/\nconst sortFn_text = /* @__PURE__ */ constructSortFn({\n\tresolveDataValue: (dataValue) => toString(dataValue).toLowerCase(),\n\tsort: (dataValueA, dataValueB) => compareBasic(dataValueA, dataValueB)\n});\n/**\n* Sorts rows with the built-in text case sensitive strategy.\n*\n* This comparator returns ascending-order results; descending order is applied by the sorting row model.\n*/\nconst sortFn_textCaseSensitive = /* @__PURE__ */ constructSortFn({\n\tresolveDataValue: (dataValue) => toString(dataValue),\n\tsort: (dataValueA, dataValueB) => compareBasic(dataValueA, dataValueB)\n});\n/**\n* Sorts rows with the built-in datetime strategy.\n*\n* This comparator returns ascending-order results; descending order is applied by the sorting row model.\n*/\nconst sortFn_datetime = /* @__PURE__ */ constructSortFn({\n\tresolveDataValue: (dataValue) => toDateSortValue(dataValue),\n\tsort: (dataValueA, dataValueB) => dataValueA > dataValueB ? 1 : dataValueA < dataValueB ? -1 : 0\n});\n/**\n* Sorts rows with the built-in basic strategy.\n*\n* This comparator returns ascending-order results; descending order is applied by the sorting row model.\n*/\nconst sortFn_basic = /* @__PURE__ */ constructSortFn({ sort: (dataValueA, dataValueB) => compareBasic(dataValueA, dataValueB) });\nfunction compareBasic(a, b) {\n\treturn a === b ? 0 : a > b ? 1 : -1;\n}\nfunction toDateSortValue(value) {\n\treturn value instanceof Date ? value.getTime() : value;\n}\nfunction toString(a) {\n\tif (typeof a === \"number\") {\n\t\tif (isNaN(a) || a === Infinity || a === -Infinity) return \"\";\n\t\treturn String(a);\n\t}\n\tif (typeof a === \"string\") return a;\n\treturn \"\";\n}\nfunction compareAlphanumeric(aStr, bStr) {\n\tlet ai = 0;\n\tlet bi = 0;\n\tconst aLen = aStr.length;\n\tconst bLen = bStr.length;\n\twhile (ai < aLen && bi < bLen) {\n\t\tconst aIsNumeric = isDigit(aStr.charCodeAt(ai));\n\t\tconst bIsNumeric = isDigit(bStr.charCodeAt(bi));\n\t\tconst aEnd = findChunkEnd(aStr, ai, aIsNumeric);\n\t\tconst bEnd = findChunkEnd(bStr, bi, bIsNumeric);\n\t\tif (!aIsNumeric && !bIsNumeric) {\n\t\t\tconst stringComparison = compareStringChunks(aStr, ai, aEnd, bStr, bi, bEnd);\n\t\t\tif (stringComparison) return stringComparison;\n\t\t\tai = aEnd;\n\t\t\tbi = bEnd;\n\t\t\tcontinue;\n\t\t}\n\t\tif (aIsNumeric !== bIsNumeric) return aIsNumeric ? 1 : -1;\n\t\tconst numericComparison = compareNumericChunks(aStr, ai, aEnd, bStr, bi, bEnd);\n\t\tif (numericComparison) return numericComparison;\n\t\tai = aEnd;\n\t\tbi = bEnd;\n\t}\n\treturn countRemainingChunks(aStr, ai) - countRemainingChunks(bStr, bi);\n}\nfunction isDigit(charCode) {\n\treturn charCode >= 48 && charCode <= 57;\n}\nfunction findChunkEnd(str, start, isNumeric) {\n\tlet end = start + 1;\n\twhile (end < str.length && isDigit(str.charCodeAt(end)) === isNumeric) end++;\n\treturn end;\n}\nfunction compareStringChunks(aStr, aStart, aEnd, bStr, bStart, bEnd) {\n\tconst aLength = aEnd - aStart;\n\tconst bLength = bEnd - bStart;\n\tconst minLength = aLength < bLength ? aLength : bLength;\n\tfor (let i = 0; i < minLength; i++) {\n\t\tconst aCode = aStr.charCodeAt(aStart + i);\n\t\tconst bCode = bStr.charCodeAt(bStart + i);\n\t\tif (aCode > bCode) return 1;\n\t\tif (bCode > aCode) return -1;\n\t}\n\tif (aLength > bLength) return 1;\n\tif (bLength > aLength) return -1;\n\treturn 0;\n}\nfunction compareNumericChunks(aStr, aStart, aEnd, bStr, bStart, bEnd) {\n\tlet aSignificantStart = aStart;\n\twhile (aSignificantStart < aEnd && aStr.charCodeAt(aSignificantStart) === 48) aSignificantStart++;\n\tlet bSignificantStart = bStart;\n\twhile (bSignificantStart < bEnd && bStr.charCodeAt(bSignificantStart) === 48) bSignificantStart++;\n\tconst aSignificantLength = aEnd - aSignificantStart;\n\tconst bSignificantLength = bEnd - bSignificantStart;\n\tif (aSignificantLength === 0 && bSignificantLength === 0) return 0;\n\tif (aSignificantLength <= 15 && bSignificantLength <= 15) {\n\t\tconst an = parseSmallInt(aStr, aSignificantStart, aEnd);\n\t\tconst bn = parseSmallInt(bStr, bSignificantStart, bEnd);\n\t\tif (an > bn) return 1;\n\t\tif (bn > an) return -1;\n\t\treturn 0;\n\t}\n\tconst an = parseInt(aStr.slice(aStart, aEnd), 10);\n\tconst bn = parseInt(bStr.slice(bStart, bEnd), 10);\n\tif (an > bn) return 1;\n\tif (bn > an) return -1;\n\treturn 0;\n}\nfunction parseSmallInt(str, start, end) {\n\tlet result = 0;\n\tfor (let i = start; i < end; i++) result = result * 10 + str.charCodeAt(i) - 48;\n\treturn result;\n}\nfunction countRemainingChunks(str, start) {\n\tlet count = 0;\n\tlet index = start;\n\twhile (index < str.length) {\n\t\tcount++;\n\t\tindex = findChunkEnd(str, index, isDigit(str.charCodeAt(index)));\n\t}\n\treturn count;\n}\n/**\n* The built-in sorting function registry.\n*\n* Registering this full object opts out of tree-shaking: every built-in\n* sorting function ends up in your bundle. Prefer importing the `sortFn_*`\n* functions you actually use and registering just those in the `sortFns`\n* slot, or passing them directly to the `sortFn` column option.\n*\n* @deprecated Import individual `sortFn_*` functions instead for a smaller\n* bundle. This export still works and is not going away in v9, but built-in\n* name resolution (including `sortFn: 'auto'`) only finds functions you\n* register yourself.\n*/\nconst sortFns = {\n\talphanumeric: sortFn_alphanumeric,\n\talphanumericCaseSensitive: sortFn_alphanumericCaseSensitive,\n\tbasic: sortFn_basic,\n\tdatetime: sortFn_datetime,\n\ttext: sortFn_text,\n\ttextCaseSensitive: sortFn_textCaseSensitive\n};\n\n//#endregion\nexport { constructSortFn, reSplitAlphaNumeric, sortFn_alphanumeric, sortFn_alphanumericCaseSensitive, sortFn_basic, sortFn_datetime, sortFn_text, sortFn_textCaseSensitive, sortFns };","import { cloneState, isFunction, setStateSlice } from \"../../utils.js\";\nimport { reSplitAlphaNumeric, sortFn_basic } from \"./sortFns.js\";\n\n//#region src/features/row-sorting/rowSortingFeature.utils.ts\n/**\n* Creates the default sorting state.\n*\n* The feature default is an empty array, meaning no columns are sorted. Reset\n* APIs use this value when `defaultState` is `true`.\n*\n* @example\n* ```ts\n* const sorting = getDefaultSortingState()\n* ```\n*/\nfunction getDefaultSortingState() {\n\treturn [];\n}\n/**\n* Routes a sorting updater through the table's sorting change handler.\n*\n* The updater may be a next `SortingState` array or a function of the previous\n* sorting state, matching the instance `table.setSorting` behavior. State\n* owners receive an equality-guarded updater so structurally equal sorting\n* values preserve the owner's existing reference.\n*\n* @example\n* ```ts\n* table_setSorting(table, (old) => [...old, { id: 'age', desc: true }])\n* ```\n*/\nfunction table_setSorting(table, updater) {\n\tsetStateSlice(table, \"sorting\", updater);\n}\n/**\n* Resets `sorting` to the configured initial state or feature default.\n*\n* With no argument, the reset clones `table.initialState.sorting` when it\n* exists. Passing `true` ignores initial state and resets to `[]`.\n*\n* @example\n* ```ts\n* table_resetSorting(table)\n* table_resetSorting(table, true)\n* ```\n*/\nfunction table_resetSorting(table, defaultState) {\n\ttable_setSorting(table, defaultState ? [] : cloneState(table.initialState.sorting ?? []));\n}\n/**\n* Resets sorting after the table data changes when explicitly enabled.\n*\n* Unlike other auto-reset behaviors, sorting is preserved by default. An\n* explicit `autoResetAll` value takes precedence over `autoResetSorting`.\n*\n* @example\n* ```ts\n* table_autoResetSorting(table)\n* ```\n*/\nfunction table_autoResetSorting(table) {\n\tif (!table.atoms.sorting) return;\n\tif (table.options.autoResetAll ?? table.options.autoResetSorting ?? false) table_resetSorting(table);\n}\n/**\n* Chooses a built-in sorting function from sampled filtered row values.\n*\n* Date-like values use `datetime`, mixed text/numeric strings use\n* `alphanumeric`, plain strings use `text`, and unknown values fall back to\n* `basic`.\n*\n* @example\n* ```ts\n* const sortFn = column_getAutoSortFn(column)\n* ```\n*/\nfunction column_getAutoSortFn(column) {\n\tconst sortFns = column.table._rowModelFns.sortFns;\n\tconst firstRows = column.table.getFilteredRowModel().flatRows.slice(0, 10);\n\tlet sortFnName;\n\tlet isString = false;\n\tfor (let i = 0; i < firstRows.length; i++) {\n\t\tconst value = firstRows[i].getValue(column.id);\n\t\tif (Object.prototype.toString.call(value) === \"[object Date]\") {\n\t\t\tsortFnName = \"datetime\";\n\t\t\tbreak;\n\t\t}\n\t\tif (typeof value === \"string\") {\n\t\t\tisString = true;\n\t\t\tif (value.split(reSplitAlphaNumeric).length > 1) {\n\t\t\t\tsortFnName = \"alphanumeric\";\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\tif (!sortFnName && isString) sortFnName = \"text\";\n\tif (sortFnName) {\n\t\tlet sortFn = sortFns?.[sortFnName];\n\t\tif (!sortFn) {\n\t\t\tif (process.env.NODE_ENV === \"development\") console.warn(`sortFn '${sortFnName}' (auto) for column '${column.id}' is not registered`);\n\t\t\tif (sortFnName === \"alphanumeric\") sortFn = sortFns?.text;\n\t\t}\n\t\tif (sortFn) return sortFn;\n\t}\n\treturn sortFn_basic;\n}\n/**\n* Chooses the default first sort direction from sampled filtered row values.\n*\n* The first non-nullish value among the sampled rows decides: string columns\n* start ascending so alphabetical order is natural; other value types (or\n* columns with no non-nullish sample) start descending. Sampling past leading\n* nullish values keeps the toggle cycle stable when sorting or a data swap\n* moves an empty value into the first row.\n*\n* @example\n* ```ts\n* const direction = column_getAutoSortDir(column)\n* ```\n*/\nfunction column_getAutoSortDir(column) {\n\tconst firstRows = column.table.getFilteredRowModel().flatRows.slice(0, 10);\n\tfor (let i = 0; i < firstRows.length; i++) {\n\t\tconst value = firstRows[i].getValue(column.id);\n\t\tif (value == null) continue;\n\t\treturn typeof value === \"string\" ? \"asc\" : \"desc\";\n\t}\n\treturn \"desc\";\n}\n/**\n* Resolves the sorting function configured for a column.\n*\n* Function-valued `columnDef.sortFn` is returned directly, `'auto'` delegates\n* to `column_getAutoSortFn`, and string values are looked up in the table's\n* sorting function registry before falling back to `basic`.\n*\n* @example\n* ```ts\n* const sortFn = column_getSortFn(column)\n* ```\n*/\nfunction column_getSortFn(column) {\n\tconst sortFns = column.table._rowModelFns.sortFns;\n\tif (isFunction(column.columnDef.sortFn)) return column.columnDef.sortFn;\n\tif (column.columnDef.sortFn === \"auto\") return column_getAutoSortFn(column);\n\tconst sortFn = sortFns?.[column.columnDef.sortFn];\n\tif (process.env.NODE_ENV === \"development\" && !sortFn) console.warn(`sortFn '${String(column.columnDef.sortFn)}' for column '${column.id}' is not registered`);\n\treturn sortFn ?? sortFn_basic;\n}\n/**\n* Applies the next sorting state for this column.\n*\n* The toggle can add, replace, flip, or remove this column's sort entry. Multi\n* sorting respects `enableMultiSort`, `enableMultiRemove`,\n* `maxMultiSortColCount`, and the `multi` argument.\n*\n* @example\n* ```ts\n* column_toggleSorting(column, undefined, true)\n* ```\n*/\nfunction column_toggleSorting(column, desc, multi) {\n\tconst nextSortingOrder = column_getNextSortingOrder(column, multi && column_getCanMultiSort(column));\n\tconst hasManualValue = typeof desc !== \"undefined\";\n\ttable_setSorting(column.table, (old) => {\n\t\tconst existingIndex = old.findIndex((d) => d.id === column.id);\n\t\tconst existingSorting = existingIndex === -1 ? void 0 : old[existingIndex];\n\t\tlet newSorting = [];\n\t\tlet sortAction;\n\t\tconst nextDesc = hasManualValue ? desc : nextSortingOrder === \"desc\";\n\t\tconst isMultiMode = !!(old.length && column_getCanMultiSort(column) && multi);\n\t\tif (isMultiMode) {\n\t\t\tif (existingSorting) sortAction = \"toggle\";\n\t\t\telse sortAction = \"add\";\n\t\t} else if (existingSorting) sortAction = \"toggle\";\n\t\telse sortAction = \"replace\";\n\t\tif (sortAction === \"toggle\") {\n\t\t\tif (!hasManualValue) {\n\t\t\t\tif (!nextSortingOrder) sortAction = \"remove\";\n\t\t\t}\n\t\t}\n\t\tif (sortAction === \"add\") {\n\t\t\tnewSorting = [...old, {\n\t\t\t\tid: column.id,\n\t\t\t\tdesc: nextDesc\n\t\t\t}];\n\t\t\tnewSorting.splice(0, newSorting.length - (column.table.options.maxMultiSortColCount ?? Number.MAX_SAFE_INTEGER));\n\t\t} else if (sortAction === \"toggle\") newSorting = isMultiMode ? old.map((d) => {\n\t\t\tif (d.id === column.id) return {\n\t\t\t\t...d,\n\t\t\t\tdesc: nextDesc\n\t\t\t};\n\t\t\treturn d;\n\t\t}) : [{\n\t\t\tid: column.id,\n\t\t\tdesc: nextDesc\n\t\t}];\n\t\telse if (sortAction === \"remove\") newSorting = isMultiMode ? old.filter((d) => d.id !== column.id) : [];\n\t\telse newSorting = [{\n\t\t\tid: column.id,\n\t\t\tdesc: nextDesc\n\t\t}];\n\t\treturn newSorting;\n\t});\n}\n/**\n* Resolves the first direction used when this column begins sorting.\n*\n* Column-level `sortDescFirst` wins, then table-level `sortDescFirst`, then the\n* auto direction inferred from sampled values.\n*\n* @example\n* ```ts\n* const firstDirection = column_getFirstSortDir(column)\n* ```\n*/\nfunction column_getFirstSortDir(column) {\n\treturn column.columnDef.sortDescFirst ?? column.table.options.sortDescFirst ?? column_getAutoSortDir(column) === \"desc\" ? \"desc\" : \"asc\";\n}\n/**\n* Resolves the next sort order for this column's toggle cycle.\n*\n* The cycle starts with the first sort direction, flips between `asc` and\n* `desc`, and can return `false` when sorting removal is enabled.\n*\n* @example\n* ```ts\n* const nextOrder = column_getNextSortingOrder(column)\n* ```\n*/\nfunction column_getNextSortingOrder(column, multi) {\n\tconst firstSortDirection = column_getFirstSortDir(column);\n\tconst isSorted = column_getIsSorted(column);\n\tif (!isSorted) return firstSortDirection;\n\tif (isSorted !== firstSortDirection && (column.table.options.enableSortingRemoval ?? true) && (multi ? column.table.options.enableMultiRemove ?? true : true)) return false;\n\treturn isSorted === \"desc\" ? \"asc\" : \"desc\";\n}\n/**\n* Checks whether this accessor column can participate in sorting.\n*\n* The column must have an accessor and sorting must be enabled by both the\n* column definition and table options.\n*\n* @example\n* ```ts\n* const canSort = column_getCanSort(column)\n* ```\n*/\nfunction column_getCanSort(column) {\n\treturn (column.columnDef.enableSorting ?? true) && (column.table.options.enableSorting ?? true) && !!column.accessorFn;\n}\n/**\n* Checks whether this column can be added to a multi-sort state.\n*\n* Column-level `enableMultiSort` wins over table-level `enableMultiSort`; if\n* neither is set, accessor columns can multi-sort by default.\n*\n* @example\n* ```ts\n* const canMultiSort = column_getCanMultiSort(column)\n* ```\n*/\nfunction column_getCanMultiSort(column) {\n\treturn column.columnDef.enableMultiSort ?? column.table.options.enableMultiSort ?? !!column.accessorFn;\n}\n/**\n* Reads this column's current sort direction.\n*\n* The result is `false` when the column is not sorted, otherwise `'asc'` or\n* `'desc'` based on the column's entry in `state.sorting`.\n*\n* @example\n* ```ts\n* const direction = column_getIsSorted(column)\n* ```\n*/\nfunction column_getIsSorted(column) {\n\tconst columnSort = column.table.atoms.sorting?.get()?.find((d) => d.id === column.id);\n\treturn !columnSort ? false : columnSort.desc ? \"desc\" : \"asc\";\n}\n/**\n* Finds this column's position in the ordered `state.sorting` array.\n*\n* The result is `-1` when the column is not sorted.\n*\n* @example\n* ```ts\n* const index = column_getSortIndex(column)\n* ```\n*/\nfunction column_getSortIndex(column) {\n\treturn column.table.atoms.sorting?.get()?.findIndex((d) => d.id === column.id) ?? -1;\n}\n/**\n* Removes this column from the sorting state.\n*\n* Other sorted columns are preserved, including their relative order.\n*\n* @example\n* ```ts\n* column_clearSorting(column)\n* ```\n*/\nfunction column_clearSorting(column) {\n\ttable_setSorting(column.table, (old) => old.length ? old.filter((d) => d.id !== column.id) : []);\n}\n/**\n* Creates a header event handler that toggles this column's sorting.\n*\n* The handler ignores events when the column cannot sort, and asks\n* `options.isMultiSortEvent` whether the event should add to a multi-sort.\n*\n* @example\n* ```ts\n* const onClick = column_getToggleSortingHandler(column)\n* ```\n*/\nfunction column_getToggleSortingHandler(column) {\n\tconst canSort = column_getCanSort(column);\n\treturn (e) => {\n\t\tif (!canSort) return;\n\t\tcolumn_toggleSorting(column, void 0, column_getCanMultiSort(column) ? column.table.options.isMultiSortEvent?.(e) : false);\n\t};\n}\n\n//#endregion\nexport { column_clearSorting, column_getAutoSortDir, column_getAutoSortFn, column_getCanMultiSort, column_getCanSort, column_getFirstSortDir, column_getIsSorted, column_getNextSortingOrder, column_getSortFn, column_getSortIndex, column_getToggleSortingHandler, column_toggleSorting, getDefaultSortingState, table_autoResetSorting, table_resetSorting, table_setSorting };","import { assignPrototypeAPIs, assignTableAPIs, makeStateUpdater } from \"../../utils.js\";\nimport { column_clearSorting, column_getAutoSortDir, column_getAutoSortFn, column_getCanMultiSort, column_getCanSort, column_getFirstSortDir, column_getIsSorted, column_getNextSortingOrder, column_getSortFn, column_getSortIndex, column_getToggleSortingHandler, column_toggleSorting, getDefaultSortingState, table_autoResetSorting, table_resetSorting, table_setSorting } from \"./rowSortingFeature.utils.js\";\n\n//#region src/features/row-sorting/rowSortingFeature.ts\n/**\n* Feature that adds row sorting state, defaults, and column/table sorting APIs.\n*/\nconst rowSortingFeature = {\n\tgetInitialState(initialState) {\n\t\treturn {\n\t\t\tsorting: getDefaultSortingState(),\n\t\t\t...initialState\n\t\t};\n\t},\n\tgetDefaultColumnDef() {\n\t\treturn {\n\t\t\tsortFn: \"auto\",\n\t\t\tsortUndefined: 1\n\t\t};\n\t},\n\tgetDefaultTableOptions(table) {\n\t\treturn {\n\t\t\tautoResetSorting: false,\n\t\t\tonSortingChange: makeStateUpdater(\"sorting\", table),\n\t\t\tisMultiSortEvent: (e) => {\n\t\t\t\treturn e.shiftKey;\n\t\t\t}\n\t\t};\n\t},\n\tassignColumnPrototype(prototype, table) {\n\t\tassignPrototypeAPIs(\"rowSortingFeature\", prototype, table, {\n\t\t\tcolumn_getAutoSortFn: { fn: (column) => column_getAutoSortFn(column) },\n\t\t\tcolumn_getAutoSortDir: { fn: (column) => column_getAutoSortDir(column) },\n\t\t\tcolumn_getSortFn: { fn: (column) => column_getSortFn(column) },\n\t\t\tcolumn_toggleSorting: { fn: (column, desc, multi) => column_toggleSorting(column, desc, multi) },\n\t\t\tcolumn_getFirstSortDir: { fn: (column) => column_getFirstSortDir(column) },\n\t\t\tcolumn_getNextSortingOrder: { fn: (column, multi) => column_getNextSortingOrder(column, multi) },\n\t\t\tcolumn_getCanSort: { fn: (column) => column_getCanSort(column) },\n\t\t\tcolumn_getCanMultiSort: { fn: (column) => column_getCanMultiSort(column) },\n\t\t\tcolumn_getIsSorted: { fn: (column) => column_getIsSorted(column) },\n\t\t\tcolumn_getSortIndex: { fn: (column) => column_getSortIndex(column) },\n\t\t\tcolumn_clearSorting: { fn: (column) => column_clearSorting(column) },\n\t\t\tcolumn_getToggleSortingHandler: { fn: (column) => column_getToggleSortingHandler(column) }\n\t\t});\n\t},\n\tconstructTableAPIs(table) {\n\t\tassignTableAPIs(\"rowSortingFeature\", table, {\n\t\t\ttable_autoResetSorting: { fn: () => table_autoResetSorting(table) },\n\t\t\ttable_setSorting: { fn: (updater) => table_setSorting(table, updater) },\n\t\t\ttable_resetSorting: { fn: (defaultState) => table_resetSorting(table, defaultState) }\n\t\t});\n\t}\n};\n\n//#endregion\nexport { rowSortingFeature };","import { copyInstancePropertiesWithoutMemos, skipFirstRun, tableMemo } from \"../../utils.js\";\nimport { autoResetPageIndex } from \"../../core/featureStubs.js\";\nimport { column_getCanSort, column_getSortFn } from \"./rowSortingFeature.utils.js\";\n\n//#region src/features/row-sorting/createSortedRowModel.ts\n/**\n* Creates a memoized sorted row model factory.\n*\n* The factory reads the relevant table state atoms and options, then returns a row model function used by the table row-model pipeline.\n*\n* Register the sorting functions you use with the `sortFns` slot on the\n* `features` option:\n* `tableFeatures({ rowSortingFeature, sortedRowModel: createSortedRowModel(), sortFns: { alphanumeric: sortFn_alphanumeric } })`.\n* Importing individual `sortFn_*` functions keeps unused built-ins out of\n* your bundle; sorting functions passed directly to the `sortFn` column\n* option need no registration at all.\n*/\nfunction createSortedRowModel() {\n\treturn (_table) => {\n\t\tconst table = _table;\n\t\treturn tableMemo({\n\t\t\tfeature: \"rowSortingFeature\",\n\t\t\ttable,\n\t\t\tfnName: \"table.getSortedRowModel\",\n\t\t\tmemoDeps: () => [table.atoms.sorting?.get(), table.getPreSortedRowModel()],\n\t\t\tfn: () => _createSortedRowModel(table),\n\t\t\tonAfterUpdate: skipFirstRun(() => autoResetPageIndex(table))\n\t\t});\n\t};\n}\nfunction _createSortedRowModel(table) {\n\tconst preSortedRowModel = table.getPreSortedRowModel();\n\tconst sorting = table.atoms.sorting?.get();\n\tif (!preSortedRowModel.rows.length || !sorting?.length) return preSortedRowModel;\n\tconst sortedFlatRows = [];\n\tconst availableSorting = sorting.filter((sort) => {\n\t\tconst column = table.getColumn(sort.id);\n\t\treturn column ? column_getCanSort(column) : false;\n\t});\n\tif (!availableSorting.length) return preSortedRowModel;\n\tconst resolvedSorting = [];\n\tfor (let i = 0; i < availableSorting.length; i++) {\n\t\tconst sortEntry = availableSorting[i];\n\t\tconst column = table.getColumn(sortEntry.id);\n\t\tif (!column) continue;\n\t\tresolvedSorting.push({\n\t\t\tid: sortEntry.id,\n\t\t\tdesc: sortEntry.desc,\n\t\t\tsortUndefined: column.columnDef.sortUndefined,\n\t\t\tinvertSorting: column.columnDef.invertSorting,\n\t\t\tsortFn: column_getSortFn(column)\n\t\t});\n\t}\n\tconst compareRows = (rowA, rowB) => {\n\t\tfor (let i = 0; i < resolvedSorting.length; i++) {\n\t\t\tconst sortEntry = resolvedSorting[i];\n\t\t\tconst sortUndefined = sortEntry.sortUndefined;\n\t\t\tconst isDesc = sortEntry.desc;\n\t\t\tlet sortInt = 0;\n\t\t\tif (sortUndefined) {\n\t\t\t\tconst aValue = rowA.getValue(sortEntry.id);\n\t\t\t\tconst bValue = rowB.getValue(sortEntry.id);\n\t\t\t\tconst aUndefined = aValue === void 0;\n\t\t\t\tconst bUndefined = bValue === void 0;\n\t\t\t\tif (aUndefined && bUndefined) continue;\n\t\t\t\tif (aUndefined || bUndefined) {\n\t\t\t\t\tif (sortUndefined === \"first\") return aUndefined ? -1 : 1;\n\t\t\t\t\tif (sortUndefined === \"last\") return aUndefined ? 1 : -1;\n\t\t\t\t\tsortInt = aUndefined ? sortUndefined : -sortUndefined;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (sortInt === 0) sortInt = sortEntry.sortFn(rowA, rowB, sortEntry.id);\n\t\t\tif (sortInt !== 0) {\n\t\t\t\tif (isDesc) sortInt *= -1;\n\t\t\t\tif (sortEntry.invertSorting) sortInt *= -1;\n\t\t\t\treturn sortInt;\n\t\t\t}\n\t\t}\n\t\treturn rowA.index - rowB.index;\n\t};\n\tconst sortData = (rows) => {\n\t\tconst sortedData = rows.slice();\n\t\tsortedData.sort(compareRows);\n\t\tlet changed = false;\n\t\tfor (let i = 0; i < sortedData.length; i++) {\n\t\t\tconst row = sortedData[i];\n\t\t\tif (row !== rows[i]) changed = true;\n\t\t\tconst flatIndex = sortedFlatRows.length;\n\t\t\tsortedFlatRows.push(row);\n\t\t\tif (row.subRows.length) {\n\t\t\t\tconst sortedSubRows = sortData(row.subRows);\n\t\t\t\tif (sortedSubRows.changed) {\n\t\t\t\t\tconst cloned = Object.create(Object.getPrototypeOf(row));\n\t\t\t\t\tcopyInstancePropertiesWithoutMemos(cloned, row);\n\t\t\t\t\tcloned.subRows = sortedSubRows.rows;\n\t\t\t\t\tsortedData[i] = cloned;\n\t\t\t\t\tsortedFlatRows[flatIndex] = cloned;\n\t\t\t\t\tchanged = true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn {\n\t\t\trows: sortedData,\n\t\t\tchanged\n\t\t};\n\t};\n\treturn {\n\t\trows: sortData(preSortedRowModel.rows).rows,\n\t\tflatRows: sortedFlatRows,\n\t\trowsById: preSortedRowModel.rowsById\n\t};\n}\n\n//#endregion\nexport { createSortedRowModel };","import { batch, createAtom } from \"@tanstack/store\";\n\n//#region src/store-reactivity-bindings.ts\n/**\n* TanStack Store–based reactivity for vanilla / non-framework use of `constructTable`,\n* with `createOptionsStore: true` so `table.optionsStore` is available for subscriptions.\n*\n* @example\n* ```ts\n* import { constructTable, tableFeatures } from '@tanstack/table-core'\n* import { storeReactivityBindings } from '@tanstack/table-core/store-reactivity-bindings'\n*\n* const table = constructTable({\n* features: tableFeatures({ coreReactivityFeature: storeReactivityBindings() }),\n* // ...\n* })\n* ```\n*/\nfunction storeReactivityBindings() {\n\treturn {\n\t\tcreateOptionsStore: true,\n\t\twrapExternalAtoms: false,\n\t\taddSubscription: () => {\n\t\t\tthrow new Error(\"Feature not supported in current reactivity implementation\");\n\t\t},\n\t\tunmount: () => {\n\t\t\tthrow new Error(\"Feature not supported in current reactivity implementation\");\n\t\t},\n\t\tbatch,\n\t\tschedule: (fn) => queueMicrotask(fn),\n\t\tuntrack: (fn) => fn(),\n\t\tcreateReadonlyAtom: (fn, options) => {\n\t\t\treturn createAtom(() => fn(), { compare: options?.compare });\n\t\t},\n\t\tcreateWritableAtom: (value, options) => {\n\t\t\treturn createAtom(value, { compare: options?.compare });\n\t\t}\n\t};\n}\n\n//#endregion\nexport { storeReactivityBindings };","import {\n columnPinningFeature,\n columnSizingFeature,\n constructTable,\n createSortedRowModel,\n rowSortingFeature,\n sortFn_alphanumeric,\n sortFn_basic,\n sortFn_datetime,\n sortFn_text,\n tableFeatures,\n type Column,\n type ColumnDef as TanStackColumnDef,\n type Row,\n type Table,\n type TableOptions,\n} from '@tanstack/table-core';\nimport { storeReactivityBindings } from '@tanstack/table-core/store-reactivity-bindings';\nimport { resolveColumns, type ResolvedColumn } from '../columns/resolve-columns.js';\nimport type {\n CellContext,\n ColumnAlign,\n ColumnDef,\n ColumnPin,\n ColumnSizingState,\n SortState,\n} from '../types.js';\n\n// The TanStack adapter. Everything TanStack stays in this module: callers only see\n// the view types below, so TanStack can be upgraded or replaced without touching\n// `argus-table`'s public API.\n\nconst features = tableFeatures({\n // Vanilla (framework-free) reactivity; required by `constructTable`.\n coreReactivityFeature: storeReactivityBindings(),\n columnPinningFeature,\n columnSizingFeature,\n rowSortingFeature,\n sortedRowModel: createSortedRowModel(),\n // Registered by name so `sortFn: 'auto'` can pick one by value type.\n sortFns: {\n alphanumeric: sortFn_alphanumeric,\n basic: sortFn_basic,\n datetime: sortFn_datetime,\n text: sortFn_text,\n },\n});\ntype Features = typeof features;\ntype AnyRow = Record<string, unknown>;\n\n/** Sort direction of a column, or `false` when it isn't sorted. */\nexport type SortDirection = 'asc' | 'desc' | false;\n\n/** A column as the renderer sees it, in visual order: start-pinned, scrolling, end-pinned. */\nexport interface ColumnView<TData, TContent> {\n id: string;\n /** 1-based position in visual order, for `aria-colindex`. */\n colIndex: number;\n pin: ColumnPin | undefined;\n /**\n * Sticky inset in px: from the start edge for `'start'` columns, from the end edge\n * for `'end'` columns. For scrolling columns, the start within the scrolling area.\n */\n offset: number;\n /** `true` on the pinned column next to the scrolling area (one per pinned side). */\n pinEdge: boolean;\n /** Current width in px (a resized width wins over the column's own). */\n width: number;\n /** Share of free space, or `undefined` for a fixed width. A resized column stops flexing. */\n flex: number | undefined;\n minWidth: number;\n maxWidth: number;\n sortable: boolean;\n resizable: boolean;\n align: ColumnAlign;\n sorted: SortDirection;\n header: ColumnDef<TData, TContent>['header'];\n cell: ColumnDef<TData, TContent>['cell'];\n hasAccessor: boolean;\n}\n\n/** A row of the current (sorted) row model. */\nexport interface RowView<TData> {\n id: string;\n /** Index in the current row model, 0-based. */\n index: number;\n original: TData;\n}\n\nexport interface TableModelOptions<TData, TContent> {\n columns: readonly ColumnDef<TData, TContent>[];\n data: readonly TData[];\n /** Row id function. Default: the row's index in `data`, as a string. */\n getRowId: ((row: TData, index: number) => string) | undefined;\n /** Current sort state; its owner is the caller (see `controllable`). */\n sorting: SortState;\n /** Current resized widths; its owner is the caller. */\n columnSizing: ColumnSizingState;\n}\n\nexport interface TableModel<TData, TContent> {\n /** Updates any subset of the options. Unchanged references are ignored. */\n update(options: Partial<TableModelOptions<TData, TContent>>): void;\n /** Columns in visual order. */\n readonly columns: readonly ColumnView<TData, TContent>[];\n /** Number of rows in the current row model. */\n readonly rowCount: number;\n /** Sum of all column widths in px (flex columns count their minimum). */\n readonly totalWidth: number;\n /** The row at an index of the current row model. */\n rowAt(index: number): RowView<TData> | undefined;\n /** The index of a row id in the current row model (after sorting), or `undefined`. */\n indexOf(rowId: string): number | undefined;\n /** The value a column reads from the row at `index`. */\n valueAt(index: number, columnId: string): unknown;\n /** What a column's `cell` function receives for the row at `index`. */\n cellContext(index: number, columnId: string): CellContext<TData> | undefined;\n /**\n * The sort state that clicking this column's header would produce:\n * asc → desc → unsorted, one column at a time. `undefined` if it can't sort.\n */\n nextSorting(columnId: string): SortState | undefined;\n /**\n * The sizing state after setting a column to `width` px, clamped to its bounds.\n * `undefined` if the column can't be resized.\n */\n nextSizing(columnId: string, width: number): ColumnSizingState | undefined;\n}\n\nconst defaultRowId = (_row: unknown, index: number) => String(index);\n\nfunction toTanStack<TData, TContent>(\n column: ResolvedColumn<TData, TContent>,\n): TanStackColumnDef<Features, AnyRow> {\n return {\n id: column.id,\n accessorFn: column.getValue as (row: AnyRow, index: number) => unknown,\n size: column.width,\n minSize: column.minWidth,\n maxSize: column.maxWidth,\n enableSorting: column.sortable,\n sortUndefined: 'last',\n };\n}\n\n/**\n * Creates the table model over TanStack Table. It owns no state: sorting and sizing\n * come in through `update()`, and `nextSorting()`/`nextSizing()` only propose\n * changes, so the caller decides (controlled or uncontrolled) whether to apply them.\n */\nexport function createTableModel<TData, TContent>(\n initial: TableModelOptions<TData, TContent>,\n): TableModel<TData, TContent> {\n let options = initial;\n let resolved = resolveColumns(options.columns);\n let byId = new Map(resolved.map((c) => [c.id, c]));\n // Kept stable between updates: a new array would make TanStack rebuild columns and rows.\n let tanStackColumns = resolved.map(toTanStack);\n let views: ColumnView<TData, TContent>[] | undefined;\n const rowViews = new WeakMap<Row<Features, AnyRow>, RowView<TData>>();\n // Built lazily per row model (sorting or new data gives a new array).\n let indexById: { rows: readonly Row<Features, AnyRow>[]; map: Map<string, number> } | undefined;\n\n const tableOptions = (): TableOptions<Features, AnyRow> => ({\n features,\n columns: tanStackColumns,\n data: options.data as AnyRow[],\n getRowId: (options.getRowId ?? defaultRowId) as (row: AnyRow, index: number) => string,\n state: {\n sorting: options.sorting,\n columnSizing: options.columnSizing,\n columnPinning: {\n start: resolved.filter((c) => c.pin === 'start').map((c) => c.id),\n end: resolved.filter((c) => c.pin === 'end').map((c) => c.id),\n },\n },\n // State is owned by the caller; TanStack's own setters must not change it.\n onSortingChange: () => undefined,\n onColumnSizingChange: () => undefined,\n onColumnPinningChange: () => undefined,\n });\n\n const table: Table<Features, AnyRow> = constructTable(tableOptions());\n\n const rows = () => table.getRowModel().rows;\n\n const buildViews = (): ColumnView<TData, TContent>[] => {\n const start = table.getStartLeafColumns();\n const center = table.getCenterLeafColumns();\n const end = table.getEndLeafColumns();\n const sorting = options.sorting;\n const view = (\n column: Column<Features, AnyRow>,\n colIndex: number,\n offset: number,\n pinEdge: boolean,\n ): ColumnView<TData, TContent> => {\n const def = byId.get(column.id);\n if (!def) throw new Error(`argus-table: unknown column '${column.id}'.`);\n const sort = sorting.find((s) => s.id === column.id);\n return {\n id: def.id,\n colIndex,\n pin: def.pin,\n offset,\n pinEdge,\n width: column.getSize(),\n flex: options.columnSizing[def.id] === undefined ? def.flex : undefined,\n minWidth: def.minWidth,\n maxWidth: def.maxWidth,\n sortable: def.sortable,\n resizable: def.resizable,\n align: def.align,\n sorted: sort ? (sort.desc ? 'desc' : 'asc') : false,\n header: def.header,\n cell: def.cell,\n hasAccessor: def.hasAccessor,\n };\n };\n return [\n ...start.map((c, i) => view(c, i + 1, c.getStart('start'), i === start.length - 1)),\n ...center.map((c, i) => view(c, start.length + i + 1, c.getStart('center'), false)),\n ...end.map((c, i) =>\n view(c, start.length + center.length + i + 1, c.getAfter('end'), i === 0),\n ),\n ];\n };\n\n return {\n update(next) {\n const merged = { ...options, ...next };\n const changed = (Object.keys(next) as (keyof typeof next)[]).some(\n (key) => next[key] !== options[key],\n );\n if (!changed) return;\n if (next.columns && next.columns !== options.columns) {\n resolved = resolveColumns(next.columns);\n byId = new Map(resolved.map((c) => [c.id, c]));\n tanStackColumns = resolved.map(toTanStack);\n }\n options = merged;\n views = undefined;\n table.setOptions((prev) => ({ ...prev, ...tableOptions() }));\n },\n\n get columns() {\n return (views ??= buildViews());\n },\n\n get rowCount() {\n return rows().length;\n },\n\n get totalWidth() {\n return table.getTotalSize();\n },\n\n rowAt(index) {\n const row = rows()[index];\n if (!row) return undefined;\n let view = rowViews.get(row);\n if (view?.index !== index) {\n view = { id: row.id, index, original: row.original as TData };\n rowViews.set(row, view);\n }\n return view;\n },\n\n indexOf(rowId) {\n const current = rows();\n if (indexById?.rows !== current) {\n indexById = { rows: current, map: new Map(current.map((r, i) => [r.id, i])) };\n }\n return indexById.map.get(rowId);\n },\n\n valueAt(index, columnId) {\n return rows()[index]?.getValue(columnId);\n },\n\n cellContext(index, columnId) {\n const row = rows()[index];\n if (!row || !byId.has(columnId)) return undefined;\n return {\n row: row.original as TData,\n rowId: row.id,\n index,\n columnId,\n value: row.getValue(columnId),\n };\n },\n\n nextSorting(columnId) {\n if (byId.get(columnId)?.sortable !== true) return undefined;\n const current = options.sorting.find((s) => s.id === columnId);\n if (!current) return [{ id: columnId, desc: false }];\n return current.desc ? [] : [{ id: columnId, desc: true }];\n },\n\n nextSizing(columnId, width) {\n const column = byId.get(columnId);\n if (!column?.resizable || !Number.isFinite(width)) return undefined;\n const clamped = Math.round(Math.min(column.maxWidth, Math.max(column.minWidth, width)));\n return { ...options.columnSizing, [columnId]: clamped };\n },\n };\n}\n","/**\n * State that works like a form input: uncontrolled until the host sets it,\n * controlled from then on. See `docs/plan/code-architecture/04-state-and-events.md`.\n *\n * - **Uncontrolled:** `request()` applies the change. The caller then fires the change event.\n * - **Controlled:** `request()` changes nothing and returns the proposed value for the\n * event. The value only changes when the host calls `set()` again.\n * - `set(undefined)` hands ownership back to the table and keeps the last value.\n */\nexport interface Controllable<T> {\n /** The current value. */\n readonly value: T;\n /** `true` once the host has set a value (and not handed it back with `undefined`). */\n readonly controlled: boolean;\n /** Called when the host sets the property. */\n set(value: T | undefined): void;\n /**\n * Called when the table wants to change the state, for example after a header click.\n * Returns the proposed value and whether it was applied.\n */\n request(next: T): { value: T; applied: boolean };\n}\n\nexport function controllable<T>(initial: T): Controllable<T> {\n let value = initial;\n let controlled = false;\n return {\n get value() {\n return value;\n },\n get controlled() {\n return controlled;\n },\n set(next) {\n if (next === undefined) {\n controlled = false;\n return;\n }\n controlled = true;\n value = next;\n },\n request(next) {\n if (!controlled) value = next;\n return { value: next, applied: !controlled };\n },\n };\n}\n","/** A rendered row and the pool slot whose DOM it uses. */\nexport interface PoolEntry {\n id: string;\n slot: number;\n}\n\n/**\n * Assigns pool slots to rendered rows (ADR 0001).\n *\n * A row keeps its slot while it stays rendered. A row entering the window takes a\n * slot freed by a row that left, so its DOM is updated in place rather than created.\n * Rows are returned in slot order (\"pool order\"); the ADR 0001 addendum ruled out\n * re-sorting them by row index, so assistive tech gets row positions from\n * `aria-rowindex` instead.\n */\nexport class RowPool {\n #slots = new Map<string, number>();\n #free: number[] = [];\n #size = 0;\n #pinned: string | undefined;\n\n /** Number of slots created so far: the most rows rendered at once. */\n get size(): number {\n return this.#size;\n }\n\n /** The row id whose slot is kept while it is out of range, if any. */\n get pinned(): string | undefined {\n return this.#pinned;\n }\n\n /**\n * Keeps one row's slot, and keeps it rendered, while it is outside the rendered\n * range. Used for the row holding focus. `undefined` releases it.\n */\n pin(id: string | undefined): void {\n this.#pinned = id;\n }\n\n /** The slot a row holds, or `undefined` when it isn't rendered. */\n slotOf(id: string): number | undefined {\n return this.#slots.get(id);\n }\n\n /**\n * Updates the pool for the rows that should be rendered and returns them, plus the\n * pinned row if it isn't among them, in slot order.\n */\n update(ids: Iterable<string>): PoolEntry[] {\n const keep = new Set(ids);\n if (this.#pinned !== undefined) keep.add(this.#pinned);\n\n for (const [id, slot] of this.#slots) {\n if (!keep.has(id)) {\n this.#slots.delete(id);\n this.#free.push(slot);\n }\n }\n for (const id of keep) {\n if (!this.#slots.has(id)) this.#slots.set(id, this.#free.pop() ?? this.#size++);\n }\n\n const entries: PoolEntry[] = [];\n for (const [id, slot] of this.#slots) entries.push({ id, slot });\n return entries.sort((a, b) => a.slot - b.slot);\n }\n\n /** Frees every slot, for example when the data is replaced. */\n clear(): void {\n this.#slots.clear();\n this.#free = [];\n this.#size = 0;\n this.#pinned = undefined;\n }\n}\n","import type { ReactiveController, ReactiveControllerHost } from 'lit';\n\n/** How long after the last sideways scroll pinned cells stay sticky. */\nconst SETTLE_MS = 150;\n\n/**\n * Keeps pinned body cells in place without making them sticky while the table\n * only scrolls up and down.\n *\n * Safari gives every sticky element a compositing layer of its own and moves\n * each one on every scroll frame; with a sticky cell per pinned column per row\n * that is dozens of layers, and vertical scrolling stutters (ADR 0001, \"Pinned\n * columns in Safari\"). At rest, pinned body cells are plain cells shifted by the\n * horizontal scroll offset (`--_sx`, and `--_max-x` for the end side), which\n * only changes when the table scrolls sideways. While it does, the scroller\n * carries `data-hscroll` and the cells are sticky, so they don't lag behind\n * the scroll; once it settles they go back to the transform, at the same place.\n * It also sizes the pinned edges' shadow overlays (`.pin-shadow`) to the\n * scroller's visible area.\n */\nexport class PinScrollController implements ReactiveController {\n readonly #scroller: () => HTMLElement | null;\n #attached: HTMLElement | undefined;\n #left = 0;\n #timer: ReturnType<typeof setTimeout> | undefined;\n #resize: ResizeObserver | undefined;\n\n constructor(host: ReactiveControllerHost, scroller: () => HTMLElement | null) {\n this.#scroller = scroller;\n host.addController(this);\n }\n\n hostConnected(): void {\n // After a move in the DOM; before the first render there is no scroller yet.\n this.#attach();\n }\n\n hostUpdated(): void {\n this.#attach();\n }\n\n hostDisconnected(): void {\n this.#attached?.removeEventListener('scroll', this.#onScroll);\n this.#resize?.disconnect();\n clearTimeout(this.#timer);\n this.#attached = undefined;\n }\n\n /** Re-reads how far the table scrolls sideways: call when column widths change. */\n measure(): void {\n const s = this.#attached;\n if (!s) return;\n s.style.setProperty('--_max-x', `${String(Math.max(0, s.scrollWidth - s.clientWidth))}px`);\n // The edge shadows sit over the scroller, clear of its scrollbars.\n for (const shadow of s.parentNode?.querySelectorAll<HTMLElement>(':scope > .pin-shadow') ??\n []) {\n shadow.style.setProperty('--_view-h', `${String(s.clientHeight)}px`);\n shadow.style.setProperty('--_sb-x', `${String(s.offsetWidth - s.clientWidth)}px`);\n }\n this.#left = s.scrollLeft;\n s.style.setProperty('--_sx', `${String(this.#left)}px`);\n }\n\n #attach(): void {\n const s = this.#scroller();\n if (!s || s === this.#attached) return;\n this.#attached = s;\n s.addEventListener('scroll', this.#onScroll, { passive: true });\n this.#resize ??= new ResizeObserver(() => {\n this.measure();\n });\n this.#resize.observe(s);\n this.measure();\n }\n\n readonly #onScroll = () => {\n const s = this.#attached;\n if (!s || s.scrollLeft === this.#left) return;\n this.#left = s.scrollLeft;\n s.toggleAttribute('data-hscroll', true);\n clearTimeout(this.#timer);\n this.#timer = setTimeout(() => {\n this.measure();\n s.removeAttribute('data-hscroll');\n }, SETTLE_MS);\n };\n}\n","/**\n * One pointer drag on a resize handle. The pointer is captured, so the drag keeps\n * working outside the handle, and moves are batched to one `onWidth` call per\n * animation frame (TanStack's `onChange` mode: the width updates while dragging).\n *\n * `direction` is 1 in LTR and -1 in RTL: the handle sits on the inline-end edge,\n * so moving toward the inline end always grows the column.\n */\nexport function startResizeDrag(\n handle: HTMLElement,\n down: PointerEvent,\n startWidth: number,\n direction: 1 | -1,\n onWidth: (width: number) => void,\n): void {\n const startX = down.clientX;\n let frame = 0;\n let pending: number | undefined;\n\n const flush = () => {\n frame = 0;\n if (pending !== undefined) onWidth(pending);\n pending = undefined;\n };\n const move = (event: PointerEvent) => {\n pending = startWidth + (event.clientX - startX) * direction;\n frame ||= requestAnimationFrame(flush);\n };\n const end = (event: PointerEvent) => {\n if (event.type === 'pointerup') move(event);\n if (frame) cancelAnimationFrame(frame);\n flush();\n handle.removeAttribute('data-active');\n handle.removeEventListener('pointermove', move);\n handle.removeEventListener('pointerup', end);\n handle.removeEventListener('pointercancel', end);\n if (handle.hasPointerCapture(event.pointerId)) handle.releasePointerCapture(event.pointerId);\n };\n\n down.preventDefault();\n try {\n handle.setPointerCapture(down.pointerId);\n } catch {\n // Synthetic or already released pointers can't be captured; moves on the handle still work.\n }\n handle.setAttribute('data-active', '');\n handle.addEventListener('pointermove', move);\n handle.addEventListener('pointerup', end);\n handle.addEventListener('pointercancel', end);\n}\n","import { createTableModel, type TableModel, type TableModelOptions } from '@argus-table/core';\nimport type { CellContent } from '../types.js';\n\n/**\n * Owns the table model (core's TanStack adapter). The element pushes its\n * properties in from `willUpdate`; render functions read `model`. It needs no\n * lifecycle hooks yet: the model is pull-based and owns no state.\n */\nexport class TableController<T> {\n readonly model: TableModel<T, CellContent>;\n\n constructor() {\n this.model = createTableModel<T, CellContent>({\n columns: [],\n data: [],\n getRowId: undefined,\n sorting: [],\n columnSizing: {},\n });\n }\n\n update(options: Partial<TableModelOptions<T, CellContent>>): void {\n this.model.update(options);\n }\n}\n","function getMeasurementKey(item) {\n return typeof item === \"object\" ? item.key : item;\n}\nfunction createLazyMeasurementsView(cache, flat) {\n const count = cache.length;\n return new Proxy(cache, {\n get(target, prop, receiver) {\n if (typeof prop === \"string\") {\n const c = prop.charCodeAt(0);\n if (c >= 48 && c <= 57) {\n const i = +prop;\n if (Number.isInteger(i) && i >= 0 && i < count) {\n let v = target[i];\n if (typeof v !== \"object\") {\n const s = flat[i * 2];\n v = target[i] = {\n index: i,\n key: v,\n start: s,\n size: flat[i * 2 + 1],\n end: s + flat[i * 2 + 1],\n lane: 0\n };\n }\n return v;\n }\n }\n if (prop === \"length\") return count;\n }\n return Reflect.get(target, prop, receiver);\n }\n });\n}\nexport {\n createLazyMeasurementsView,\n getMeasurementKey\n};\n//# sourceMappingURL=lazy-measurements.js.map\n","function memo(getDeps, fn, opts) {\n let deps = opts.initialDeps ?? [];\n let result;\n let isInitial = true;\n function memoizedFunction() {\n var _a;\n const debugEnabled = process.env.NODE_ENV !== \"production\" && !!opts.key && !!((_a = opts.debug) == null ? void 0 : _a.call(opts));\n let depTime = 0;\n if (debugEnabled) depTime = Date.now();\n const newDeps = getDeps();\n const depsChanged = newDeps.length !== deps.length || newDeps.some((dep, index) => deps[index] !== dep);\n if (!depsChanged) {\n return result;\n }\n deps = newDeps;\n let resultTime = 0;\n if (debugEnabled) resultTime = Date.now();\n result = fn(...newDeps);\n if (debugEnabled) {\n const depEndTime = Math.round((Date.now() - depTime) * 100) / 100;\n const resultEndTime = Math.round((Date.now() - resultTime) * 100) / 100;\n const resultFpsPercentage = resultEndTime / 16;\n const pad = (str, num) => {\n str = String(str);\n while (str.length < num) {\n str = \" \" + str;\n }\n return str;\n };\n console.info(\n `%c⏱ ${pad(resultEndTime, 5)} /${pad(depEndTime, 5)} ms`,\n `\n font-size: .6rem;\n font-weight: bold;\n color: hsl(${Math.max(\n 0,\n Math.min(120 - 120 * resultFpsPercentage, 120)\n )}deg 100% 31%);`,\n opts == null ? void 0 : opts.key\n );\n }\n if ((opts == null ? void 0 : opts.onChange) && !(isInitial && opts.skipInitialOnChange)) {\n opts.onChange(result);\n }\n isInitial = false;\n return result;\n }\n memoizedFunction.updateDeps = (newDeps) => {\n deps = newDeps;\n };\n return memoizedFunction;\n}\nfunction notUndefined(value, msg) {\n if (value === void 0) {\n throw new Error(`Unexpected undefined${msg ? `: ${msg}` : \"\"}`);\n } else {\n return value;\n }\n}\nconst approxEqual = (a, b) => Math.abs(a - b) < 1.01;\nconst debounce = (targetWindow, fn, ms) => {\n let timeoutId;\n return Object.assign(\n function(...args) {\n targetWindow.clearTimeout(timeoutId);\n timeoutId = targetWindow.setTimeout(() => fn.apply(this, args), ms);\n },\n {\n // The handle is closure-local, so a caller that has already\n // unsubscribed has no way to stop a queued call. Teardown paths use\n // this to drop the pending invocation instead of letting it land.\n cancel: () => {\n targetWindow.clearTimeout(timeoutId);\n }\n }\n );\n};\nexport {\n approxEqual,\n debounce,\n memo,\n notUndefined\n};\n//# sourceMappingURL=utils.js.map\n","import { approxEqual } from \"./utils.js\";\nfunction classifyScrollEvent({\n offset,\n isScrolling,\n elementMax,\n holdOffset,\n scrollOffset,\n pendingWrite,\n clampedMaxAtWrite\n}) {\n var _a;\n if (isScrolling && pendingWrite === null && offset === scrollOffset) {\n return \"spurious\";\n }\n if (pendingWrite !== null && Math.abs(offset - pendingWrite.target) < 1.5) {\n return \"readBack\";\n }\n if (pendingWrite !== null && !pendingWrite.smooth && elementMax !== null && pendingWrite.target > elementMax + holdOffset + 0.5 && Math.abs(offset - (elementMax + holdOffset)) < 1.5) {\n return \"clampedReadBack\";\n }\n if (pendingWrite !== null && !pendingWrite.smooth && ((_a = pendingWrite.lowMaxes) == null ? void 0 : _a.some((max) => Math.abs(offset - max) < 1.5))) {\n return \"clampedReadBack\";\n }\n if (clampedMaxAtWrite !== null && Math.abs(offset - clampedMaxAtWrite) < 1.5) {\n return \"clampedEcho\";\n }\n return \"external\";\n}\nconst isAnimating = (phase) => phase === \"smooth\" || phase === \"smoothFinishing\";\nfunction externalRetiresCommand({\n kind,\n offset,\n command,\n target\n}) {\n return kind !== \"spurious\" && kind !== \"readBack\" && // Our own write, clamped (`clampedReadBack`, #1310): the command is not\n // retired by it, and reconcile retargets below the new max.\n kind !== \"clampedReadBack\" && (command == null ? void 0 : command.index) != null && // Nothing has been written for a command waiting for the tail; these\n // are the fling's events.\n command.phase !== \"queued\" && // A non-smooth write lands at once, so any other scroll event is the\n // user's, even before reconcile saw the target reached (the target may\n // keep moving, or iOS ignored the write under a finger). A write the\n // browser clamped because the sizer hasn't grown yet reads back at the\n // max, which is also where the fresh target clamps, so the check below\n // keeps it reconciling (#1294). While a smooth scroll's animation may\n // still report, its events look like a user's, so it yields only once it\n // has landed.\n !isAnimating(command.phase) && !approxEqual(offset, command.lastTargetOffset) && !approxEqual(offset, target()) && // A compensation write's clamped echo (#1258) keeps the command. The\n // order is deliberate, not tidiness: this clause stays after `target()`\n // (and `clampedReadBack` before it) because `target()` can rebuild the\n // measurements, so it must run for exactly the events it always did.\n kind !== \"clampedEcho\";\n}\nconst FLING_WINDOW_MS = 40;\nfunction flingSpedUp(samples) {\n const last = samples[samples.length - 1];\n if (last === void 0) return false;\n let j = samples.length - 2;\n while (j >= 0 && last.t - samples[j].t < FLING_WINDOW_MS) j--;\n if (j < 0) return false;\n const mid = samples[j];\n let k = j - 1;\n while (k >= 0 && mid.t - samples[k].t < FLING_WINDOW_MS) k--;\n if (k < 0) return false;\n const first = samples[k];\n const recent = (last.offset - mid.offset) / (last.t - mid.t);\n const before = (mid.offset - first.offset) / (mid.t - first.t);\n return recent * before >= 0 && Math.abs(recent) >= 2 * Math.abs(before) && Math.abs(recent) - Math.abs(before) >= 0.8;\n}\nfunction flingCaught(samples) {\n const last = samples[samples.length - 1];\n if (last === void 0) return false;\n let j = samples.length - 2;\n while (j >= 0 && last.t - samples[j].t < FLING_WINDOW_MS) j--;\n if (j < 0) return false;\n const from = samples[j];\n return Math.abs(last.offset - from.offset) / (last.t - from.t) >= 0.05;\n}\nexport {\n classifyScrollEvent,\n externalRetiresCommand,\n flingCaught,\n flingSpedUp\n};\n//# sourceMappingURL=scroll-classifier.js.map\n","let _isIOSResult;\nconst isIOSWebKit = () => {\n if (_isIOSResult !== void 0) return _isIOSResult;\n if (typeof navigator === \"undefined\") return _isIOSResult = false;\n if (/iP(hone|od|ad)/.test(navigator.userAgent)) return _isIOSResult = true;\n const mtp = navigator.maxTouchPoints;\n return _isIOSResult = navigator.platform === \"MacIntel\" && mtp !== void 0 && mtp > 0;\n};\nlet _iosMomentumOverridesWritesResult;\nconst iosMomentumOverridesWrites = () => {\n if (_iosMomentumOverridesWritesResult !== void 0) {\n return _iosMomentumOverridesWritesResult;\n }\n return _iosMomentumOverridesWritesResult = isIOSWebKit() && typeof CSS !== \"undefined\" && typeof CSS.supports === \"function\" && CSS.supports(\"overflow-anchor: auto\");\n};\nconst momentumOverridesWrites = () => !isIOSWebKit() || iosMomentumOverridesWrites();\nconst _resetIOSDetectionForTests = () => {\n _isIOSResult = void 0;\n _iosMomentumOverridesWritesResult = void 0;\n};\nconst touchListenerOptions = {\n capture: true,\n passive: true\n};\nclass IosGesture {\n constructor(host) {\n this.host = host;\n this._touch = null;\n this.inMotion = () => this._touch !== null && this._touch.phase !== \"lateFling\";\n this.dragging = () => {\n var _a;\n return ((_a = this._touch) == null ? void 0 : _a.phase) === \"down\" && this._touch.moved;\n };\n this.tail = () => {\n var _a;\n return ((_a = this._touch) == null ? void 0 : _a.phase) === \"tail\" ? this._touch.moved ? \"fling\" : \"tap\" : null;\n };\n this.onScroll = ({\n isScrolling,\n ownReadBack,\n moved,\n external\n }) => {\n var _a, _b, _c;\n if (isScrolling && ((_a = this._touch) == null ? void 0 : _a.phase) === \"tail\") {\n this._openTail(this._touch.moved || !ownReadBack, false);\n } else if (((_b = this._touch) == null ? void 0 : _b.phase) === \"lateFling\") {\n if (this.host.now() > this._touch.until) {\n this._touch = null;\n } else if (external && isScrolling && moved) {\n this._openTail(true, false);\n }\n }\n if (!ownReadBack && isScrolling && moved && ((_c = this._touch) == null ? void 0 : _c.phase) === \"down\") {\n this._touch.moved = true;\n return true;\n }\n return false;\n };\n this.touchStart = () => {\n this.end();\n this._touch = { phase: \"down\", moved: false };\n };\n this.touchEnd = () => {\n var _a;\n const moved = ((_a = this._touch) == null ? void 0 : _a.phase) === \"down\" && this._touch.moved;\n this.end();\n this._openTail(moved, moved);\n };\n this.end = () => {\n var _a;\n const win = this.host.getWindow();\n if (((_a = this._touch) == null ? void 0 : _a.phase) === \"tail\" && win != null) {\n win.clearTimeout(this._touch.timerId);\n }\n this._touch = null;\n };\n this.listen = (target) => {\n const onTouchStart = () => this.touchStart();\n const onTouchEnd = () => this.touchEnd();\n target.addEventListener(\"touchstart\", onTouchStart, touchListenerOptions);\n target.addEventListener(\"touchend\", onTouchEnd, touchListenerOptions);\n target.addEventListener(\"touchcancel\", onTouchEnd, touchListenerOptions);\n return () => {\n target.removeEventListener(\n \"touchstart\",\n onTouchStart,\n touchListenerOptions\n );\n target.removeEventListener(\"touchend\", onTouchEnd, touchListenerOptions);\n target.removeEventListener(\n \"touchcancel\",\n onTouchEnd,\n touchListenerOptions\n );\n this.end();\n };\n };\n this._openTail = (moved, awaitingFling) => {\n const win = this.host.getWindow();\n if (win == null) return;\n this.end();\n const tail = {\n phase: \"tail\",\n moved,\n awaitingFling,\n // Only fires while this tail is current: `end` clears it otherwise.\n timerId: win.setTimeout(() => {\n if (this.host.tailStillMoving()) {\n this._openTail(tail.moved, tail.awaitingFling);\n return;\n }\n this._touch = tail.awaitingFling ? { phase: \"lateFling\", until: this.host.now() + 1e3 } : null;\n this.host.onTailClosed();\n }, 150)\n };\n this._touch = tail;\n };\n }\n get touch() {\n return this._touch;\n }\n}\nexport {\n IosGesture,\n _resetIOSDetectionForTests,\n iosMomentumOverridesWrites,\n isIOSWebKit,\n momentumOverridesWrites\n};\n//# sourceMappingURL=ios-gesture.js.map\n","import { createLazyMeasurementsView, getMeasurementKey } from \"./lazy-measurements.js\";\nimport { memo, approxEqual, notUndefined, debounce } from \"./utils.js\";\nimport { flingCaught, externalRetiresCommand, flingSpedUp, classifyScrollEvent } from \"./scroll-classifier.js\";\nimport { IosGesture, isIOSWebKit, momentumOverridesWrites } from \"./ios-gesture.js\";\nimport { _resetIOSDetectionForTests } from \"./ios-gesture.js\";\nconst getRect = (element) => {\n const { clientWidth, clientHeight } = element;\n return { width: clientWidth, height: clientHeight };\n};\nconst createFrameQueue = (targetWindow) => {\n const ids = /* @__PURE__ */ new Set();\n return {\n schedule: (fn) => {\n const id = targetWindow.requestAnimationFrame(() => {\n ids.delete(id);\n fn();\n });\n ids.add(id);\n },\n cancel: () => {\n ids.forEach((id) => targetWindow.cancelAnimationFrame(id));\n ids.clear();\n }\n };\n};\nconst defaultKeyExtractor = (index) => index;\nconst defaultRangeExtractor = (range) => {\n const overscan = range.overscan * Math.max(range.lanes ?? 1, 1);\n const start = Math.max(range.startIndex - overscan, 0);\n const end = Math.min(range.endIndex + overscan, range.count - 1);\n const len = end - start + 1;\n const arr = new Array(len);\n for (let i = 0; i < len; i++) {\n arr[i] = start + i;\n }\n return arr;\n};\nconst observeElementRect = (instance, cb) => {\n const element = instance.scrollElement;\n if (!element) {\n return;\n }\n const targetWindow = instance.targetWindow;\n if (!targetWindow) {\n return;\n }\n const handler = (rect) => {\n const { width, height } = rect;\n cb({ width: Math.round(width), height: Math.round(height) });\n };\n handler(getRect(element));\n if (!targetWindow.ResizeObserver) {\n return () => {\n };\n }\n const frames = createFrameQueue(targetWindow);\n const observer = new targetWindow.ResizeObserver(() => {\n const run = () => {\n handler(getRect(element));\n };\n instance.options.useAnimationFrameWithResizeObserver ? frames.schedule(run) : run();\n });\n observer.observe(element, { box: \"content-box\" });\n return () => {\n observer.unobserve(element);\n frames.cancel();\n };\n};\nconst addEventListenerOptions = {\n passive: true\n};\nconst observeWindowRect = (instance, cb) => {\n const element = instance.scrollElement;\n if (!element) {\n return;\n }\n const handler = () => {\n cb({ width: element.innerWidth, height: element.innerHeight });\n };\n handler();\n element.addEventListener(\"resize\", handler, addEventListenerOptions);\n return () => {\n element.removeEventListener(\"resize\", handler);\n };\n};\nconst supportsScrollend = typeof window == \"undefined\" ? true : \"onscrollend\" in window;\nconst observeOffset = (instance, cb, readOffset) => {\n const element = instance.scrollElement;\n if (!element) {\n return;\n }\n const targetWindow = instance.targetWindow;\n if (!targetWindow) {\n return;\n }\n const registerScrollendEvent = instance.options.useScrollendEvent && supportsScrollend;\n let offset = 0;\n const fallback = registerScrollendEvent ? null : debounce(\n targetWindow,\n () => cb(readOffset(element), false),\n instance.options.isScrollingResetDelay\n );\n const createHandler = (isScrolling) => () => {\n offset = readOffset(element);\n fallback == null ? void 0 : fallback();\n cb(offset, isScrolling);\n };\n const handler = createHandler(true);\n const endHandler = createHandler(false);\n element.addEventListener(\"scroll\", handler, addEventListenerOptions);\n if (registerScrollendEvent) {\n element.addEventListener(\"scrollend\", endHandler, addEventListenerOptions);\n }\n return () => {\n element.removeEventListener(\"scroll\", handler);\n if (registerScrollendEvent) {\n element.removeEventListener(\"scrollend\", endHandler);\n }\n fallback == null ? void 0 : fallback.cancel();\n };\n};\nconst observeElementOffset = (instance, cb) => observeOffset(instance, cb, (el) => {\n const { horizontal, isRtl } = instance.options;\n return horizontal ? el.scrollLeft * (isRtl && -1 || 1) : el.scrollTop;\n});\nconst observeWindowOffset = (instance, cb) => observeOffset(\n instance,\n cb,\n (win) => instance.options.horizontal ? win.scrollX : win.scrollY\n);\nconst measureElement = (element, entry, instance) => {\n if (instance.options.useCachedMeasurements) {\n const index = instance.indexFromElement(element);\n const key = instance.options.getItemKey(index);\n return instance.itemSizeCache.get(key) ?? instance.options.estimateSize(index);\n }\n if (entry == null ? void 0 : entry.borderBoxSize) {\n const box = entry.borderBoxSize[0];\n if (box) {\n const size = Math.round(\n box[instance.options.horizontal ? \"inlineSize\" : \"blockSize\"]\n );\n return size;\n }\n }\n if (!entry) {\n const index = instance.indexFromElement(element);\n const key = instance.options.getItemKey(index);\n const cachedSize = instance.itemSizeCache.get(key);\n if (cachedSize !== void 0) {\n return cachedSize;\n }\n }\n return element[instance.options.horizontal ? \"offsetWidth\" : \"offsetHeight\"];\n};\nconst scrollWithAdjustments = (offset, {\n adjustments = 0,\n behavior\n}, instance) => {\n var _a;\n const { scrollElement, options } = instance;\n const adjustedOffset = offset + adjustments;\n const isRtlElement = options.horizontal && options.isRtl && scrollElement !== null && \"ownerDocument\" in scrollElement;\n (_a = scrollElement == null ? void 0 : scrollElement.scrollTo) == null ? void 0 : _a.call(scrollElement, {\n [options.horizontal ? \"left\" : \"top\"]: isRtlElement ? -adjustedOffset : adjustedOffset,\n behavior\n });\n};\nconst windowScroll = scrollWithAdjustments;\nconst elementScroll = scrollWithAdjustments;\nconst initialScrollPhase = (behavior, atTarget) => behavior === \"smooth\" ? atTarget ? \"smoothLanded\" : \"smooth\" : \"instant\";\nconst isSmoothScroll = (state) => (state == null ? void 0 : state.phase) === \"smooth\" || (state == null ? void 0 : state.phase) === \"smoothLanded\";\nfunction isAppendWithTrim(prevCount, nextCount, getPreviousKey, getNextKey) {\n if (nextCount === 0) return false;\n const firstKey = getNextKey(0);\n const removedKeys = /* @__PURE__ */ new Set();\n let removedCount = 0;\n while (removedCount < prevCount) {\n const key = getPreviousKey(removedCount);\n if (key === firstKey) break;\n removedKeys.add(key);\n removedCount++;\n }\n const retainedCount = prevCount - removedCount;\n if (retainedCount === 0 || retainedCount >= nextCount) return false;\n for (let i = 0; i < retainedCount; i++) {\n if (getNextKey(i) !== getPreviousKey(removedCount + i)) return false;\n }\n for (let i = retainedCount; i < nextCount; i++) {\n if (removedKeys.has(getNextKey(i))) return false;\n }\n return true;\n}\nclass Virtualizer {\n constructor(opts) {\n this.unsubs = [];\n this.scrollElement = null;\n this.targetWindow = null;\n this.isScrolling = false;\n this.scrollState = null;\n this.measurementsCache = [];\n this._singleLaneMeasurements = null;\n this.itemSizeCache = /* @__PURE__ */ new Map();\n this.itemSizeCacheVersion = 0;\n this.laneAssignments = /* @__PURE__ */ new Map();\n this.pendingMin = null;\n this.prevLanes = void 0;\n this.lanesChangedFlag = false;\n this.lanesSettling = false;\n this.pendingScrollAnchor = null;\n this.scrollRect = null;\n this.scrollOffset = null;\n this.scrollDirection = null;\n this._holdOffset = 0;\n this._reportedOverscroll = false;\n this._iosGesture = new IosGesture({\n getWindow: () => this.targetWindow,\n now: () => this.now(),\n // The end of a fling can move less than a pixel per scroll event, so\n // events can stop for 150ms while the fling is still running (seen on\n // an iPhone, 27.0.1). A command waiting for it would then be written\n // into the fling and overridden. The element having moved since the\n // last event means it has not ended: wait again. Not while our own\n // write has yet to report: that moved it.\n tailStillMoving: () => {\n const state = this.scrollState;\n if ((state == null ? void 0 : state.phase) !== \"queued\" || this.pendingWrite !== null) {\n return false;\n }\n const now = this._readElementOffset();\n if (now === null || this._lastElementOffset === null || Math.abs(now - this._lastElementOffset) < 1) {\n return false;\n }\n this._lastElementOffset = now;\n state.samples = [...state.samples ?? [], { t: this.now(), offset: now }];\n return true;\n },\n onTailClosed: () => {\n const state = this.scrollState;\n if ((state == null ? void 0 : state.phase) === \"queued\" && flingCaught(state.samples ?? [])) {\n this.scrollState = null;\n }\n this._flushHoldIfReady(true);\n this._writeAwaitingCommand();\n this._retryClampedAdjustment();\n }\n });\n this._lastElementOffset = null;\n this.pendingWrite = null;\n this._clampedAdjustment = null;\n this.elementsCache = /* @__PURE__ */ new Map();\n this._resizeBatch = null;\n this.now = () => {\n var _a, _b, _c;\n return ((_c = (_b = (_a = this.targetWindow) == null ? void 0 : _a.performance) == null ? void 0 : _b.now) == null ? void 0 : _c.call(_b)) ?? Date.now();\n };\n this.observer = /* @__PURE__ */ (() => {\n let _ro = null;\n let _frames = null;\n let delivering = false;\n let observeQueued = false;\n const pendingObservations = /* @__PURE__ */ new Set();\n const get = () => {\n if (_ro) {\n return _ro;\n }\n const targetWindow = this.targetWindow;\n if (!targetWindow || !targetWindow.ResizeObserver) {\n return null;\n }\n const frames = _frames = createFrameQueue(targetWindow);\n return _ro = new targetWindow.ResizeObserver((entries) => {\n const run = () => {\n const batch = { sync: false };\n this._resizeBatch = batch;\n try {\n entries.forEach(measureEntry);\n } finally {\n this._resizeBatch = null;\n if (batch.notify) {\n this.notify(batch.sync);\n this._noteClampMax();\n this._flushHoldIfReady(true);\n this._retryClampedAdjustment();\n this.measureElement(null);\n }\n }\n };\n if (this.options.useAnimationFrameWithResizeObserver) {\n frames.schedule(run);\n } else {\n delivering = true;\n try {\n run();\n } finally {\n delivering = false;\n }\n }\n });\n };\n const measureEntry = (entry) => {\n const node = entry.target;\n const index = this.indexFromElement(node);\n if (!node.isConnected) {\n this.observer.unobserve(node);\n for (const [cacheKey, cachedNode] of this.elementsCache) {\n if (cachedNode === node) {\n this.elementsCache.delete(cacheKey);\n break;\n }\n }\n return;\n }\n if (!this.isIndexInRange(index)) return;\n if (this.shouldMeasureDuringScroll(index)) {\n this.resizeItem(index, this.options.measureElement(node, entry, this));\n }\n };\n return {\n disconnect: () => {\n var _a;\n (_a = get()) == null ? void 0 : _a.disconnect();\n _frames == null ? void 0 : _frames.cancel();\n pendingObservations.clear();\n observeQueued = false;\n _ro = null;\n _frames = null;\n },\n observe: (target) => {\n const observer = get();\n if (!observer) return;\n if (!delivering) {\n observer.observe(target, { box: \"border-box\" });\n return;\n }\n pendingObservations.add(target);\n if (!observeQueued) {\n observeQueued = true;\n _frames == null ? void 0 : _frames.schedule(() => {\n observeQueued = false;\n pendingObservations.forEach((node) => {\n if (node.isConnected) _ro == null ? void 0 : _ro.observe(node, { box: \"border-box\" });\n });\n pendingObservations.clear();\n });\n }\n },\n unobserve: (target) => {\n var _a;\n pendingObservations.delete(target);\n (_a = get()) == null ? void 0 : _a.unobserve(target);\n }\n };\n })();\n this.range = null;\n this.setOptions = (opts2) => {\n var _a;\n const merged = {\n debug: false,\n initialOffset: 0,\n overscan: 1,\n paddingStart: 0,\n paddingEnd: 0,\n scrollPaddingStart: 0,\n scrollPaddingEnd: 0,\n horizontal: false,\n getItemKey: defaultKeyExtractor,\n rangeExtractor: defaultRangeExtractor,\n onChange: () => {\n },\n measureElement,\n initialRect: { width: 0, height: 0 },\n scrollMargin: 0,\n gap: 0,\n indexAttribute: \"data-index\",\n initialMeasurementsCache: [],\n lanes: 1,\n anchorTo: \"start\",\n followOnAppend: false,\n scrollEndThreshold: 1,\n isScrollingResetDelay: 150,\n enabled: true,\n isRtl: false,\n useScrollendEvent: false,\n useAnimationFrameWithResizeObserver: false,\n laneAssignmentMode: \"estimate\",\n useCachedMeasurements: false\n };\n for (const key in opts2) {\n const v = opts2[key];\n if (v !== void 0) merged[key] = v;\n }\n const prevOptions = this.options;\n let anchor = null;\n let followOnAppend = null;\n let edgeKeysChanged = false;\n if (prevOptions !== void 0 && prevOptions.enabled && merged.enabled && merged.anchorTo === \"end\" && this.scrollElement !== null) {\n const prevCount = prevOptions.count;\n const nextCount = merged.count;\n const measurements = this.getMeasurements();\n const previousItems = ((_a = this._singleLaneMeasurements) == null ? void 0 : _a.items) ?? measurements;\n const getPreviousKey = (index) => getMeasurementKey(previousItems[index]);\n const prevFirstKey = prevCount > 0 ? getPreviousKey(0) : null;\n const prevLastKey = prevCount > 0 ? getPreviousKey(prevCount - 1) : null;\n const didCountChange = nextCount !== prevCount;\n const didEdgeKeysChange = didCountChange || prevCount > 0 && nextCount > 0 && (merged.getItemKey(0) !== prevFirstKey || merged.getItemKey(nextCount - 1) !== prevLastKey);\n if (didEdgeKeysChange) {\n edgeKeysChanged = true;\n const item = prevCount > 0 ? this.getVirtualItemForOffset(this.getScrollOffset()) ?? measurements[0] : null;\n if (item) {\n anchor = [item.key, this.getScrollOffset() - item.start];\n }\n const behavior = merged.followOnAppend === true ? \"auto\" : merged.followOnAppend || null;\n if (behavior && nextCount > 0 && this.isAtEnd(prevOptions.scrollEndThreshold) && (prevCount === 0 || merged.getItemKey(nextCount - 1) !== prevLastKey)) {\n if (nextCount > prevCount || isAppendWithTrim(\n prevCount,\n nextCount,\n getPreviousKey,\n merged.getItemKey\n )) {\n followOnAppend = behavior;\n }\n }\n }\n }\n this.options = merged;\n if (edgeKeysChanged) {\n this.pendingMin = 0;\n this.itemSizeCacheVersion++;\n }\n let anchorDelta = null;\n if (anchor && this.scrollOffset !== null && !this._awaitingCommandReadBack()) {\n const [anchorKey, anchorOffset] = anchor;\n const newMeasurements = this.getMeasurements();\n const { count, getItemKey } = this.options;\n let idx = 0;\n while (idx < count && getItemKey(idx) !== anchorKey) {\n idx++;\n }\n if (idx < count) {\n const anchorItem = newMeasurements[idx];\n if (anchorItem) {\n const newOffset = Math.max(0, anchorItem.start + anchorOffset);\n if (!followOnAppend && newOffset !== this.scrollOffset) {\n anchorDelta = newOffset - this.scrollOffset;\n this.scrollOffset = newOffset;\n }\n }\n }\n }\n if (followOnAppend) {\n this.pendingScrollAnchor = { kind: \"follow\", behavior: followOnAppend };\n } else if (anchorDelta !== null) {\n if (this._canWriteScroll()) {\n this.pendingScrollAnchor = { kind: \"anchor\", delta: anchorDelta };\n } else {\n this._holdOffset += anchorDelta;\n this._followOffsetTarget(anchorDelta);\n }\n }\n };\n this.notify = (sync) => {\n var _a, _b;\n (_b = (_a = this.options).onChange) == null ? void 0 : _b.call(_a, this, sync);\n };\n this.maybeNotify = memo(\n () => {\n this.calculateRange();\n return [\n this.isScrolling,\n this.range ? this.range.startIndex : null,\n this.range ? this.range.endIndex : null\n ];\n },\n (isScrolling) => {\n this.notify(isScrolling);\n },\n {\n key: process.env.NODE_ENV !== \"production\" && \"maybeNotify\",\n debug: () => this.options.debug,\n initialDeps: [\n this.isScrolling,\n this.range ? this.range.startIndex : null,\n this.range ? this.range.endIndex : null\n ]\n }\n );\n this.cleanup = () => {\n var _a;\n this.unsubs.filter(Boolean).forEach((d) => d());\n this.unsubs = [];\n this.observer.disconnect();\n if (this.rafId != null && this.targetWindow) {\n this.targetWindow.cancelAnimationFrame(this.rafId);\n this.rafId = null;\n }\n this.scrollState = null;\n (_a = this._momentumStop) == null ? void 0 : _a.restore();\n this._momentumStop = null;\n this.isScrolling = false;\n this.scrollDirection = null;\n this._holdOffset = 0;\n this._reportedOverscroll = false;\n this._clampedAdjustment = null;\n this.pendingWrite = null;\n this.scrollElement = null;\n this.targetWindow = null;\n };\n this._didMount = () => {\n return () => {\n this.cleanup();\n };\n };\n this._willUpdate = () => {\n var _a;\n const scrollElement = this.options.enabled ? this.options.getScrollElement() : null;\n if (this.scrollElement !== scrollElement) {\n this.cleanup();\n if (!scrollElement) {\n this.maybeNotify();\n return;\n }\n this.scrollElement = scrollElement;\n if (this.scrollElement && \"ownerDocument\" in this.scrollElement) {\n this.targetWindow = this.scrollElement.ownerDocument.defaultView;\n } else {\n this.targetWindow = ((_a = this.scrollElement) == null ? void 0 : _a.window) ?? null;\n }\n this.elementsCache.forEach((cached) => {\n this.observer.observe(cached);\n });\n this.unsubs.push(\n this.options.observeElementRect(this, (rect) => {\n this.scrollRect = rect;\n this.maybeNotify();\n })\n );\n this.unsubs.push(\n this.options.observeElementOffset(this, (offset, isScrolling) => {\n var _a2, _b, _c, _d;\n const elementMax = isScrolling ? this._elementMaxScrollOffset() : null;\n const wasOverscrolled = this._reportedOverscroll;\n this._reportedOverscroll = offset < 0 || elementMax !== null && offset > elementMax + 1;\n const elementOffset = offset;\n this._lastElementOffset = elementOffset;\n offset = this._toLayoutOffset(offset);\n const kind = this._classifyScrollEvent(\n offset,\n isScrolling,\n elementMax\n );\n if (kind === \"spurious\") return;\n if (kind === \"readBack\") {\n offset = this.pendingWrite.target;\n } else if (kind === \"clampedReadBack\" && ((_a2 = this.scrollState) == null ? void 0 : _a2.index) != null && // Not `elementMax`: an adapter can report the read-back at rest.\n offset < this.getMaxScrollOffset() - 1.5) {\n this.scrollState.lastTargetOffset = offset;\n } else if (externalRetiresCommand({\n kind,\n offset,\n command: this.scrollState,\n target: () => this.getScrollStateTarget(this.scrollState)\n })) {\n this.scrollState = null;\n }\n this.pendingWrite = null;\n if (this._clampedAdjustment !== null && Math.abs(offset - this._clampedAdjustment.maxAtWrite) >= 1.5) {\n this._clampedAdjustment = null;\n }\n const prevOffset = this.getScrollOffset();\n const prevDirection = this.scrollDirection;\n this.scrollDirection = isScrolling ? prevOffset === offset ? this.scrollDirection : prevOffset < offset ? \"forward\" : \"backward\" : null;\n this.scrollOffset = offset;\n this.isScrolling = isScrolling;\n const queued = this.scrollState;\n if ((queued == null ? void 0 : queued.phase) === \"queued\" && kind === \"external\" && isScrolling) {\n if (wasOverscrolled || this._reportedOverscroll) {\n queued.samples = [];\n } else {\n const t = this.now();\n queued.samples = [\n ...(queued.samples ?? []).filter(\n (sample) => t - sample.t <= 200\n ),\n { t, offset: elementOffset }\n ];\n if (prevDirection !== null && this.scrollDirection !== prevDirection || flingSpedUp(queued.samples)) {\n this.scrollState = null;\n }\n }\n }\n if (this._iosGesture.onScroll({\n isScrolling,\n ownReadBack: kind === \"readBack\",\n moved: offset !== prevOffset,\n // Neither our write's read-back nor a frame of our smooth\n // animation: the user or a fling moved it.\n external: kind === \"external\" && ((_b = this.scrollState) == null ? void 0 : _b.phase) !== \"smooth\" && ((_c = this.scrollState) == null ? void 0 : _c.phase) !== \"smoothFinishing\"\n }) && // The user scrolls: a command still waiting for the tail is\n // theirs to override, like a written one would be.\n ((_d = this.scrollState) == null ? void 0 : _d.phase) === \"queued\") {\n this.scrollState = null;\n }\n this._flushHoldIfReady(true);\n if (this.scrollState) {\n this.scheduleScrollReconcile();\n }\n this.maybeNotify();\n })\n );\n if (\"addEventListener\" in this.scrollElement) {\n this.unsubs.push(\n this._iosGesture.listen(this.scrollElement)\n );\n }\n this._scrollToOffset(this.getScrollOffset());\n }\n this._noteClampMax();\n const anchor = this.pendingScrollAnchor;\n this.pendingScrollAnchor = null;\n if (anchor && this.scrollElement && this.options.enabled) {\n if (anchor.kind === \"anchor\") {\n if (!this._canWriteScroll()) {\n this._holdOffset += anchor.delta;\n this._followOffsetTarget(anchor.delta);\n this.notify(false);\n } else if (isSmoothScroll(this.scrollState) && !approxEqual(\n this.getScrollOffset() - anchor.delta,\n this.scrollState.lastTargetOffset\n )) ;\n else {\n this._followOffsetTarget(anchor.delta);\n this._scrollToOffset(this.getScrollOffset());\n }\n } else {\n this.scrollToEnd({ behavior: anchor.behavior });\n }\n }\n this._flushHoldIfReady(false);\n this._retryClampedAdjustment();\n };\n this._classifyScrollEvent = (offset, isScrolling, elementMax) => {\n var _a;\n return classifyScrollEvent({\n offset,\n isScrolling,\n elementMax,\n holdOffset: this._holdOffset,\n scrollOffset: this.scrollOffset,\n pendingWrite: this.pendingWrite,\n clampedMaxAtWrite: ((_a = this._clampedAdjustment) == null ? void 0 : _a.maxAtWrite) ?? null\n });\n };\n this._retryClampedAdjustment = () => {\n if (this._clampedAdjustment === null || !this.scrollElement || !this.options.enabled || !this._canWriteScroll()) {\n return;\n }\n const { target, maxAtWrite } = this._clampedAdjustment;\n const max = this.getMaxScrollOffset();\n if (max > maxAtWrite + 0.5) {\n this._clampedAdjustment = target > max + 0.5 ? { target, maxAtWrite: max } : null;\n this._scrollToOffset(target);\n }\n };\n this._writeAwaitingCommand = () => {\n const state = this.scrollState;\n if (state === null || state.phase !== \"queued\") return;\n const { behavior } = state;\n this.getMeasurements();\n const offset = this.getScrollStateTarget(state);\n state.lastTargetOffset = offset;\n this._clampedAdjustment = null;\n state.phase = initialScrollPhase(\n behavior,\n state.index != null && approxEqual(offset, this.getScrollOffset())\n );\n this._scrollToOffset(offset, { behavior });\n this.scheduleScrollReconcile();\n };\n this._readElementOffset = () => {\n const el = this.scrollElement;\n if (el == null) return null;\n const { horizontal, isRtl } = this.options;\n if (typeof el.scrollTop === \"number\") {\n return horizontal ? el.scrollLeft * (isRtl && -1 || 1) : el.scrollTop;\n }\n if (typeof el.scrollY === \"number\") {\n return horizontal ? el.scrollX : el.scrollY;\n }\n return null;\n };\n this._canWriteScroll = () => !(isIOSWebKit() && this._iosGesture.inMotion()) && !this._reportedOverscroll;\n this._flushHoldIfReady = (sync) => {\n var _a;\n if (this._holdOffset === 0) return;\n if (!this.scrollElement || !this.options.enabled) return;\n if (!this._canWriteScroll()) return;\n if (((_a = this.scrollState) == null ? void 0 : _a.phase) === \"smooth\") return;\n this._holdOffset = 0;\n if (this.scrollOffset !== null && this.scrollOffset < 0) {\n this.scrollOffset = 0;\n }\n this.notify(sync);\n const target = this.getCommandWrittenOffset() ?? this.getScrollOffset();\n this._clampedAdjustment = this._clampedBy(target);\n this._scrollToOffset(target);\n };\n this.rafId = null;\n this.getSize = () => {\n if (!this.options.enabled) {\n this.scrollRect = null;\n return 0;\n }\n this.scrollRect = this.scrollRect ?? this.options.initialRect;\n return this.scrollRect[this.options.horizontal ? \"width\" : \"height\"];\n };\n this.getScrollOffset = () => {\n if (!this.options.enabled) {\n this.scrollOffset = null;\n return 0;\n }\n this.scrollOffset = this.scrollOffset ?? (typeof this.options.initialOffset === \"function\" ? this.options.initialOffset() : this.options.initialOffset);\n return this.scrollOffset;\n };\n this.getMeasurementOptions = memo(\n () => [\n this.options.count,\n this.options.paddingStart,\n this.options.scrollMargin,\n this.options.getItemKey,\n this.options.enabled,\n this.options.lanes,\n this.options.laneAssignmentMode,\n this.options.gap\n ],\n (count, paddingStart, scrollMargin, getItemKey, enabled, lanes, laneAssignmentMode, gap) => {\n const lanesChanged = this.prevLanes !== void 0 && this.prevLanes !== lanes;\n if (lanesChanged) {\n this.lanesChangedFlag = true;\n }\n this.prevLanes = lanes;\n this.pendingMin = null;\n return {\n count,\n paddingStart,\n scrollMargin,\n getItemKey,\n enabled,\n lanes,\n laneAssignmentMode,\n gap\n };\n },\n {\n key: false\n }\n );\n this.isIndexInRange = (index) => index >= 0 && index < this.options.count;\n this.getMeasurements = memo(\n () => [this.getMeasurementOptions(), this.itemSizeCacheVersion],\n ({\n count,\n paddingStart,\n scrollMargin,\n getItemKey,\n enabled,\n lanes,\n laneAssignmentMode,\n gap\n }, _itemSizeCacheVersion) => {\n var _a;\n const itemSizeCache = this.itemSizeCache;\n if (!enabled) {\n this.measurementsCache = [];\n this._singleLaneMeasurements = null;\n this.itemSizeCache.clear();\n this.laneAssignments.clear();\n return [];\n }\n if (this.laneAssignments.size > count) {\n for (const index of this.laneAssignments.keys()) {\n if (index >= count) {\n this.laneAssignments.delete(index);\n }\n }\n }\n if (this.lanesChangedFlag) {\n this.lanesChangedFlag = false;\n this.lanesSettling = true;\n this.measurementsCache = [];\n this._singleLaneMeasurements = null;\n this.itemSizeCache.clear();\n this.laneAssignments.clear();\n this.pendingMin = null;\n }\n if (this.measurementsCache.length === 0 && !this.lanesSettling) {\n this.measurementsCache = this.options.initialMeasurementsCache;\n this.measurementsCache.forEach((item) => {\n this.itemSizeCache.set(item.key, item.size);\n });\n }\n const min = this.lanesSettling ? 0 : this.pendingMin ?? 0;\n this.pendingMin = null;\n if (this.lanesSettling && this.measurementsCache.length === count) {\n this.lanesSettling = false;\n }\n if (lanes === 1) {\n const need = count * 2;\n let flat = (_a = this._singleLaneMeasurements) == null ? void 0 : _a.flat;\n if (!flat || flat.length < need) {\n const next = new Float64Array(need);\n if (flat && min > 0) next.set(flat.subarray(0, min * 2));\n flat = next;\n }\n const items = min === 0 ? new Array(count) : this._singleLaneMeasurements.items.slice();\n let runningStart;\n if (min === 0) {\n runningStart = paddingStart + scrollMargin;\n } else {\n const prevIdx = min - 1;\n runningStart = flat[prevIdx * 2] + flat[prevIdx * 2 + 1] + gap;\n }\n for (let i = min; i < count; i++) {\n const key = getItemKey(i);\n items[i] = key;\n const measuredSize = itemSizeCache.get(key);\n const size = typeof measuredSize === \"number\" ? measuredSize : this.options.estimateSize(i);\n flat[i * 2] = runningStart;\n flat[i * 2 + 1] = size;\n runningStart += size + gap;\n }\n this._singleLaneMeasurements = { flat, items };\n const view = createLazyMeasurementsView(items, flat);\n this.measurementsCache = view;\n return view;\n }\n const measurements = this.measurementsCache.slice(0, min);\n const laneLastIndex = new Array(lanes).fill(\n void 0\n );\n const laneEnds = new Float64Array(lanes);\n let filledLanes = 0;\n for (let m = 0; m < min; m++) {\n const item = measurements[m];\n if (item) {\n if (laneLastIndex[item.lane] === void 0) filledLanes++;\n laneLastIndex[item.lane] = m;\n laneEnds[item.lane] = item.end;\n }\n }\n for (let i = min; i < count; i++) {\n const key = getItemKey(i);\n const cachedLane = this.laneAssignments.get(i);\n let lane;\n let start;\n const shouldCacheLane = laneAssignmentMode === \"estimate\" || itemSizeCache.has(key);\n if (cachedLane !== void 0 && this.options.lanes > 1) {\n lane = cachedLane;\n const prevIndex = laneLastIndex[lane];\n const prevInLane = prevIndex !== void 0 ? measurements[prevIndex] : void 0;\n start = prevInLane ? prevInLane.end + gap : paddingStart + scrollMargin;\n } else if (filledLanes === lanes) {\n let bestLane = 0;\n let bestEnd = laneEnds[0];\n let bestIdx = laneLastIndex[0];\n for (let l = 1; l < lanes; l++) {\n const e = laneEnds[l];\n if (e < bestEnd || e === bestEnd && laneLastIndex[l] < bestIdx) {\n bestLane = l;\n bestEnd = e;\n bestIdx = laneLastIndex[l];\n }\n }\n lane = bestLane;\n start = bestEnd + gap;\n if (shouldCacheLane) {\n this.laneAssignments.set(i, lane);\n }\n } else {\n lane = i % this.options.lanes;\n start = paddingStart + scrollMargin;\n if (shouldCacheLane) {\n this.laneAssignments.set(i, lane);\n }\n }\n const measuredSize = itemSizeCache.get(key);\n const size = typeof measuredSize === \"number\" ? measuredSize : this.options.estimateSize(i);\n const end = start + size;\n measurements[i] = {\n index: i,\n start,\n size,\n end,\n key,\n lane\n };\n if (laneLastIndex[lane] === void 0) filledLanes++;\n laneLastIndex[lane] = i;\n laneEnds[lane] = end;\n }\n this.measurementsCache = measurements;\n return measurements;\n },\n {\n key: process.env.NODE_ENV !== \"production\" && \"getMeasurements\",\n debug: () => this.options.debug\n }\n );\n this.calculateRange = memo(\n () => [\n this.getMeasurements(),\n this.getSize(),\n this.getScrollOffset(),\n this.options.lanes,\n // scrollOffset is measured in the scroll element and the layout total\n // from the list start, so the list ends scrollMargin further down.\n this._getLayoutTotalSize() + this.options.scrollMargin\n ],\n (measurements, outerSize, scrollOffset, lanes, listEnd) => {\n if (measurements.length === 0 || outerSize === 0) {\n this.range = null;\n return null;\n }\n const maxScrollOffset = Math.max(listEnd - outerSize, 0);\n this.range = calculateRangeImpl(\n measurements,\n outerSize,\n Math.min(scrollOffset, maxScrollOffset),\n lanes,\n // Pass the typed array so binary search + forward-walk can read\n // start/end directly from Float64Array, skipping the Proxy traps.\n lanes === 1 && this._singleLaneMeasurements !== null ? this._singleLaneMeasurements.flat : null\n );\n return this.range;\n },\n {\n key: process.env.NODE_ENV !== \"production\" && \"calculateRange\",\n debug: () => this.options.debug\n }\n );\n this.getVirtualIndexes = memo(\n () => {\n let startIndex = null;\n let endIndex = null;\n const range = this.calculateRange();\n if (range) {\n startIndex = range.startIndex;\n endIndex = range.endIndex;\n }\n this.maybeNotify.updateDeps([this.isScrolling, startIndex, endIndex]);\n return [\n this.options.rangeExtractor,\n this.options.overscan,\n this.options.count,\n startIndex,\n endIndex,\n this.options.lanes\n ];\n },\n (rangeExtractor, overscan, count, startIndex, endIndex, lanes) => {\n return startIndex === null || endIndex === null ? [] : rangeExtractor({\n startIndex,\n endIndex,\n overscan,\n count,\n lanes\n });\n },\n {\n key: process.env.NODE_ENV !== \"production\" && \"getVirtualIndexes\",\n debug: () => this.options.debug\n }\n );\n this.indexFromElement = (node) => {\n const attributeName = this.options.indexAttribute;\n const indexStr = node.getAttribute(attributeName);\n if (!indexStr) {\n console.warn(\n `Missing attribute name '${attributeName}={index}' on measured element.`\n );\n return -1;\n }\n return parseInt(indexStr, 10);\n };\n this.shouldMeasureDuringScroll = (index) => {\n var _a;\n if (!isSmoothScroll(this.scrollState)) {\n return true;\n }\n const scrollIndex = this.scrollState.index ?? ((_a = this.getVirtualItemForOffset(this.scrollState.lastTargetOffset)) == null ? void 0 : _a.index);\n if (scrollIndex !== void 0 && this.range) {\n const bufferSize = Math.max(\n this.options.overscan,\n Math.ceil((this.range.endIndex - this.range.startIndex) / 2)\n );\n const minIndex = Math.max(0, scrollIndex - bufferSize);\n const maxIndex = Math.min(\n this.options.count - 1,\n scrollIndex + bufferSize\n );\n return index >= minIndex && index <= maxIndex;\n }\n return true;\n };\n this.measureElement = (node) => {\n if (!node) {\n this.elementsCache.forEach((cached, key2) => {\n if (!cached.isConnected) {\n this.observer.unobserve(cached);\n this.elementsCache.delete(key2);\n }\n });\n return;\n }\n const index = this.indexFromElement(node);\n if (!this.isIndexInRange(index)) return;\n const key = this.options.getItemKey(index);\n const prevNode = this.elementsCache.get(key);\n if (prevNode !== node) {\n if (prevNode) {\n this.observer.unobserve(prevNode);\n }\n this.observer.observe(node);\n this.elementsCache.set(key, node);\n }\n if (node.isConnected && (!this.isScrolling || this.scrollState) && this.shouldMeasureDuringScroll(index)) {\n this.resizeItem(index, this.options.measureElement(node, void 0, this));\n }\n };\n this.resizeItem = (index, size) => {\n var _a, _b, _c;\n if (!this.isIndexInRange(index)) return;\n if ((_a = this._resizeBatch) == null ? void 0 : _a.sync) this.getMeasurements();\n let cachedSize;\n let itemStart;\n let key;\n const flat = (_b = this._singleLaneMeasurements) == null ? void 0 : _b.flat;\n if (this.options.lanes === 1 && flat != null) {\n key = this.options.getItemKey(index);\n itemStart = flat[index * 2];\n cachedSize = flat[index * 2 + 1];\n } else {\n const item = this.measurementsCache[index];\n if (!item) return;\n key = item.key;\n itemStart = item.start;\n cachedSize = item.size;\n }\n const itemSize = this.itemSizeCache.get(key) ?? cachedSize;\n const delta = size - itemSize;\n if (delta !== 0) {\n const wasAtEnd = this.options.anchorTo === \"end\" && !isSmoothScroll(this.scrollState) && this.getVirtualDistanceFromEnd() <= this.options.scrollEndThreshold;\n const prevTotalSize = wasAtEnd ? this._getLayoutTotalSize() : 0;\n const scrollOffset = this.getScrollOffset();\n const isFirstMeasure = !this.itemSizeCache.has(key);\n const defaultShouldAdjust = isFirstMeasure ? (\n // First measurement: compensate any item whose top sits above the\n // fold — the estimate→actual delta must be corrected regardless of\n // scroll direction, since the whole estimated block was above it.\n itemStart < scrollOffset\n ) : (\n // Re-measurement: only compensate an item that is ENTIRELY above the\n // fold. An item that merely *spans* the fold (top above, bottom\n // below — e.g. a streaming chat message growing at its bottom)\n // changes size *below* the anchor point, so shifting scrollTop by the\n // delta would drag the viewport downward on every growth (#1218).\n // Also skip during backward scroll to avoid the \"items jump while\n // scrolling up\" cascade.\n itemStart + itemSize <= scrollOffset && this.scrollDirection !== \"backward\"\n );\n const shouldAdjustScroll = !isSmoothScroll(this.scrollState) && (this.shouldAdjustScrollPositionOnItemSizeChange !== void 0 ? this.shouldAdjustScrollPositionOnItemSizeChange(\n // The callback expects a VirtualItem; build one lazily only\n // when the consumer actually supplied a custom predicate.\n this.measurementsCache[index] ?? {\n index,\n key,\n start: itemStart,\n size: cachedSize,\n end: itemStart + cachedSize,\n lane: 0\n },\n delta,\n this\n ) : defaultShouldAdjust);\n if (this.pendingMin === null || index < this.pendingMin) {\n this.pendingMin = index;\n }\n this.itemSizeCache.set(key, size);\n this.itemSizeCacheVersion++;\n let adjustedSync = false;\n if (!this._awaitingCommandReadBack()) {\n if (wasAtEnd) {\n adjustedSync = this.applyScrollAdjustment(\n this._getLayoutTotalSize() - prevTotalSize\n );\n } else if (shouldAdjustScroll) {\n adjustedSync = this.applyScrollAdjustment(delta);\n }\n }\n if (this._resizeBatch) {\n this._resizeBatch.notify = true;\n (_c = this._resizeBatch).sync || (_c.sync = adjustedSync);\n return;\n }\n this.notify(adjustedSync);\n this._noteClampMax();\n this._flushHoldIfReady(true);\n this._retryClampedAdjustment();\n }\n };\n this.getVirtualItems = memo(\n () => [this.getVirtualIndexes(), this.getMeasurements(), this._holdOffset],\n (indexes, measurements, hold) => {\n const virtualItems = [];\n for (let k = 0, len = indexes.length; k < len; k++) {\n const i = indexes[k];\n const measurement = measurements[i];\n virtualItems.push(\n hold === 0 ? measurement : {\n ...measurement,\n start: measurement.start - hold,\n end: measurement.end - hold\n }\n );\n }\n return virtualItems;\n },\n {\n key: process.env.NODE_ENV !== \"production\" && \"getVirtualItems\",\n debug: () => this.options.debug\n }\n );\n this.getVirtualItemForOffset = (offset) => {\n var _a;\n const measurements = this.getMeasurements();\n if (measurements.length === 0) {\n return void 0;\n }\n const flat = (_a = this._singleLaneMeasurements) == null ? void 0 : _a.flat;\n const useFlat = this.options.lanes === 1 && flat != null;\n const idx = findNearestBinarySearch(\n 0,\n measurements.length - 1,\n useFlat ? (i) => flat[i * 2] : (i) => notUndefined(measurements[i]).start,\n offset\n );\n return notUndefined(measurements[idx]);\n };\n this._noteClampMax = () => {\n if (!this._awaitingCommandReadBack()) return;\n const elementMax = this._elementMaxScrollOffset();\n if (elementMax === null) return;\n const write = this.pendingWrite;\n const max = Math.max(elementMax, 0) + this._holdOffset;\n if (max >= write.target) return;\n const lowMaxes = write.lowMaxes ?? (write.lowMaxes = []);\n if (lowMaxes[lowMaxes.length - 1] !== max) lowMaxes.push(max);\n };\n this.getMaxScrollOffset = () => (this._elementMaxScrollOffset() ?? 0) + this._holdOffset;\n this._toLayoutOffset = (elementOffset) => {\n var _a;\n let offset = elementOffset + this._holdOffset;\n if (((_a = this.pendingScrollAnchor) == null ? void 0 : _a.kind) === \"anchor\") {\n offset += this.pendingScrollAnchor.delta;\n }\n return offset;\n };\n this._elementMaxScrollOffset = () => {\n const el = this.scrollElement;\n if (el === null) return null;\n if (\"scrollHeight\" in el) {\n return this.options.horizontal ? el.scrollWidth - el.clientWidth : el.scrollHeight - el.clientHeight;\n }\n if (\"document\" in el) {\n const doc = el.document.documentElement;\n return this.options.horizontal ? doc.scrollWidth - el.innerWidth : doc.scrollHeight - el.innerHeight;\n }\n return null;\n };\n this._momentumStop = null;\n this._stopMomentum = (done) => {\n const el = this.scrollElement;\n const win = this.targetWindow;\n if (el === null || win === null) return;\n const scroller = \"document\" in el ? el.document.scrollingElement : el;\n if (!(scroller == null ? void 0 : scroller.style)) return;\n if (this._momentumStop) {\n this._momentumStop.done = done;\n return;\n }\n const { style } = scroller;\n const property = this.options.horizontal ? \"overflow-x\" : \"overflow-y\";\n const value = style.getPropertyValue(property);\n const priority = style.getPropertyPriority(property);\n const crossSize = () => this.options.horizontal ? scroller.clientHeight : scroller.clientWidth;\n const crossSizeBefore = crossSize();\n style.setProperty(property, \"hidden\", \"important\");\n if (crossSize() !== crossSizeBefore) {\n style.setProperty(property, value, priority);\n return;\n }\n const stop = {\n // False when the app replaced the hidden value: the fling may not\n // have stopped.\n restore: () => {\n if (style.getPropertyValue(property) !== \"hidden\" || style.getPropertyPriority(property) !== \"important\") {\n return false;\n }\n style.setProperty(property, value, priority);\n return true;\n },\n done\n };\n this._momentumStop = stop;\n win.requestAnimationFrame(\n () => win.requestAnimationFrame(() => {\n if (this._momentumStop !== stop) return;\n this._momentumStop = null;\n if (stop.restore()) stop.done();\n })\n );\n };\n this._clampedBy = (target) => {\n const elementMax = this._elementMaxScrollOffset();\n if (elementMax === null) return null;\n const maxAtWrite = elementMax + this._holdOffset;\n return target > maxAtWrite + 0.5 ? { target, maxAtWrite } : null;\n };\n this.getVirtualDistanceFromEnd = () => {\n return Math.max(\n this._getLayoutTotalSize() + this.options.scrollMargin - this.getSize() - this.getScrollOffset(),\n 0\n );\n };\n this.getDistanceFromEnd = () => {\n return Math.max(this.getMaxScrollOffset() - this.getScrollOffset(), 0);\n };\n this.isAtEnd = (threshold = this.options.scrollEndThreshold) => {\n return this.getDistanceFromEnd() <= threshold;\n };\n this.getOffsetForAlignment = (toOffset, align, itemSize = 0) => {\n if (!this.scrollElement) return 0;\n const size = this.getSize();\n const scrollOffset = this.getScrollOffset();\n if (align === \"auto\") {\n align = toOffset >= scrollOffset + size ? \"end\" : \"start\";\n }\n if (align === \"center\") {\n toOffset += (itemSize - size) / 2;\n } else if (align === \"end\") {\n toOffset -= size;\n }\n const maxOffset = this.getMaxScrollOffset();\n return Math.max(Math.min(maxOffset, toOffset), 0);\n };\n this.getOffsetForIndex = (index, align = \"auto\") => {\n index = Math.max(0, Math.min(index, this.options.count - 1));\n const size = this.getSize();\n const scrollOffset = this.getScrollOffset();\n const item = this.getMeasurements()[index];\n if (!item) return;\n if (align === \"auto\") {\n if (item.end >= scrollOffset + size - this.options.scrollPaddingEnd) {\n align = \"end\";\n } else if (item.start <= scrollOffset + this.options.scrollPaddingStart) {\n align = \"start\";\n } else {\n return [scrollOffset, align];\n }\n }\n if (align === \"end\" && index === this.options.count - 1) {\n const maxOffset = this.getMaxScrollOffset();\n const toOffset2 = maxOffset - this.options.paddingEnd + this.options.scrollPaddingEnd;\n return [Math.max(Math.min(toOffset2, maxOffset), 0), align];\n }\n const toOffset = align === \"end\" ? item.end + this.options.scrollPaddingEnd : item.start - this.options.scrollPaddingStart;\n return [\n this.getOffsetForAlignment(toOffset, align, item.size),\n align\n ];\n };\n this.scrollToOffset = (toOffset, { align = \"start\", behavior = \"auto\" } = {}) => {\n this._startScroll(\n { index: null, align },\n this.getOffsetForAlignment(toOffset, align),\n behavior,\n \"absolute\"\n );\n };\n this.scrollToIndex = (index, {\n align: initialAlign = \"auto\",\n behavior = \"auto\"\n } = {}) => {\n index = Math.max(0, Math.min(index, this.options.count - 1));\n const offsetInfo = this.getOffsetForIndex(index, initialAlign);\n if (!offsetInfo) return;\n const [offset, align] = offsetInfo;\n this._startScroll({ index, align }, offset, behavior, \"absolute\");\n };\n this.scrollBy = (delta, { behavior = \"auto\" } = {}) => {\n const offset = this.getOffsetForAlignment(\n (this.getCommandWrittenOffset() ?? this.getScrollOffset()) + delta,\n \"start\"\n );\n this._startScroll(\n { index: null, align: \"start\" },\n offset,\n behavior,\n \"relative\"\n );\n };\n this.scrollToEnd = ({ behavior = \"auto\" } = {}) => {\n if (this.options.count > 0) {\n this._startScroll(\n { index: this.options.count - 1, align: \"end\", toEnd: true },\n Math.max(this.getMaxScrollOffset(), 0),\n behavior,\n \"absolute\"\n );\n return;\n }\n this.scrollToOffset(Math.max(this.getTotalSize() - this.getSize(), 0), {\n behavior\n });\n };\n this.cancelScroll = () => {\n if (this.rafId != null && this.targetWindow) {\n this.targetWindow.cancelAnimationFrame(this.rafId);\n this.rafId = null;\n }\n this.scrollState = null;\n };\n this.getTotalSize = () => Math.max(this._getLayoutTotalSize() - this._holdOffset, 0);\n this._getLayoutTotalSize = () => {\n var _a, _b;\n const measurements = this.getMeasurements();\n let end;\n if (measurements.length === 0) {\n end = this.options.paddingStart;\n } else if (this.options.lanes === 1) {\n const lastIdx = measurements.length - 1;\n const flat = (_a = this._singleLaneMeasurements) == null ? void 0 : _a.flat;\n if (flat != null) {\n end = flat[lastIdx * 2] + flat[lastIdx * 2 + 1];\n } else {\n end = ((_b = measurements[lastIdx]) == null ? void 0 : _b.end) ?? 0;\n }\n } else {\n const endByLane = Array(this.options.lanes).fill(null);\n let endIndex = measurements.length - 1;\n while (endIndex >= 0 && endByLane.some((val) => val === null)) {\n const item = measurements[endIndex];\n if (endByLane[item.lane] === null) {\n endByLane[item.lane] = item.end;\n }\n endIndex--;\n }\n end = Math.max(...endByLane.filter((val) => val !== null));\n }\n return Math.max(\n end - this.options.scrollMargin + this.options.paddingEnd,\n 0\n );\n };\n this.takeSnapshot = () => {\n const snapshot = [];\n if (this.itemSizeCache.size === 0) return snapshot;\n const m = this.getMeasurements();\n for (const item of m) {\n if (item && this.itemSizeCache.has(item.key)) {\n snapshot.push({\n index: item.index,\n key: item.key,\n start: item.start,\n size: item.size,\n end: item.end,\n lane: item.lane\n });\n }\n }\n return snapshot;\n };\n this._scrollToOffset = (offset, {\n adjustments,\n behavior\n } = {}) => {\n const write = {\n target: offset + (adjustments ?? 0),\n smooth: behavior === \"smooth\"\n };\n this.pendingWrite = write;\n this.options.scrollToFn(\n offset - this._holdOffset,\n { behavior, adjustments },\n this\n );\n return write;\n };\n this.getCommandWrittenOffset = () => this.scrollState !== null && this.pendingWrite !== null && !this.pendingWrite.smooth ? this.pendingWrite.target : null;\n this._awaitingCommandReadBack = () => {\n const writtenOffset = this.getCommandWrittenOffset();\n return !(isIOSWebKit() && this._iosGesture.dragging()) && writtenOffset !== null && !approxEqual(writtenOffset, this.getScrollOffset());\n };\n this._followOffsetTarget = (delta) => {\n if (this.scrollState !== null && this.scrollState.index == null) {\n this.scrollState.lastTargetOffset += delta;\n }\n };\n this.measure = () => {\n this.pendingMin = null;\n this.itemSizeCache.clear();\n this.laneAssignments.clear();\n this.itemSizeCacheVersion++;\n this.notify(false);\n };\n this.setOptions(opts);\n }\n /**\n * @deprecated Always 0: a scroll correction is folded into `scrollOffset`\n * at once, so there is never an outstanding adjustment to add to it. Read\n * `scrollOffset` alone.\n */\n get scrollAdjustments() {\n return 0;\n }\n // Returns `true` when it performed a synchronous `scrollTop` write this\n // tick, `false` when the delta was zero or the write was deferred (iOS).\n // `resizeItem` uses that to decide whether the follow-up `notify` must be\n // synchronous so the grown transforms commit in the same paint (#1227).\n applyScrollAdjustment(delta, behavior) {\n if (delta === 0) return false;\n if (process.env.NODE_ENV !== \"production\" && this.options.debug) {\n console.info(\"correction\", delta);\n }\n this._followOffsetTarget(delta);\n if (!this._canWriteScroll()) {\n this._holdOffset += delta;\n if (this.scrollOffset !== null) this.scrollOffset += delta;\n return true;\n } else {\n const offset = this.getScrollOffset();\n this._clampedAdjustment = this._clampedBy(offset + delta);\n const write = this._scrollToOffset(offset, {\n adjustments: delta,\n behavior\n });\n if (this.scrollOffset !== null) {\n if (this.pendingWrite === write) this.scrollOffset += delta;\n if (this.scrollOffset < 0) this.scrollOffset = 0;\n }\n return true;\n }\n }\n scheduleScrollReconcile() {\n if (!this.targetWindow) {\n this.scrollState = null;\n return;\n }\n if (this.rafId != null) return;\n this.rafId = this.targetWindow.requestAnimationFrame(() => {\n this.rafId = null;\n this.reconcileScroll();\n });\n }\n getScrollStateTarget(state) {\n const offsetInfo = state.toEnd ? [Math.max(this.getMaxScrollOffset(), 0)] : state.index != null ? this.getOffsetForIndex(state.index, state.align) : void 0;\n return offsetInfo ? offsetInfo[0] : state.lastTargetOffset;\n }\n reconcileScroll() {\n if (!this.scrollState) return;\n const el = this.scrollElement;\n if (!el) return;\n const MAX_RECONCILE_MS = 5e3;\n if (this.now() - this.scrollState.startedAt > MAX_RECONCILE_MS) {\n this.scrollState = null;\n return;\n }\n if (this.scrollState.phase === \"queued\") {\n this.scheduleScrollReconcile();\n return;\n }\n this.getMeasurements();\n const targetOffset = this.getScrollStateTarget(this.scrollState);\n const STABLE_FRAMES = this.scrollState.index == null ? 1 : this.options.useAnimationFrameWithResizeObserver ? 3 : 2;\n const targetChanged = targetOffset !== this.scrollState.lastTargetOffset;\n if (!targetChanged && approxEqual(targetOffset, this.getScrollOffset())) {\n if (this.scrollState.phase === \"smooth\") {\n this.scrollState.phase = \"smoothLanded\";\n } else if (this.scrollState.phase === \"smoothFinishing\") {\n this.scrollState.phase = \"instant\";\n }\n this.scrollState.stableFrames++;\n if (this.scrollState.stableFrames >= STABLE_FRAMES) {\n if (this.getScrollOffset() !== targetOffset) {\n this._scrollToOffset(targetOffset, { behavior: \"auto\" });\n }\n this.scrollState = null;\n return;\n }\n } else {\n this.scrollState.stableFrames = 0;\n if (targetChanged) {\n const viewport = this.getSize() || 600;\n const distance = Math.abs(targetOffset - this.getScrollOffset());\n const keepSmooth = isSmoothScroll(this.scrollState) && distance > viewport;\n this.scrollState.lastTargetOffset = targetOffset;\n if (keepSmooth) {\n this.scrollState.phase = \"smooth\";\n } else if (this.scrollState.phase === \"smooth\") {\n this.scrollState.phase = \"smoothFinishing\";\n } else if (this.scrollState.phase === \"smoothLanded\") {\n this.scrollState.phase = \"instant\";\n }\n this._scrollToOffset(targetOffset, {\n behavior: keepSmooth ? \"smooth\" : \"auto\"\n });\n }\n }\n this.scheduleScrollReconcile();\n }\n // Every scroll command starts here: it becomes the in-flight command,\n // writes its first target and leaves reconcile to retarget and retire it.\n //\n // Targets are layout offsets. A held correction is not dropped by a\n // command: the write lands the element `_holdOffset` short of the target,\n // under the rows exposed shifted by the same amount, and the flush moves\n // both together once a write is possible.\n //\n // An index or end target that is already at its offset starts a smooth\n // scroll as landed; an offset target never does, so its first scroll\n // event is read as the user's (see the scroll handler in `_willUpdate`).\n _startScroll(target, offset, behavior, kind) {\n this.pendingScrollAnchor = null;\n this._clampedAdjustment = null;\n const tail = this._iosGesture.tail();\n if (kind === \"absolute\" && tail !== null) {\n if (tail === \"fling\" && momentumOverridesWrites()) {\n this._stopMomentum(() => {\n const state = this.scrollState;\n if ((state == null ? void 0 : state.phase) !== \"queued\" || // A finger came down: it owns the scroll until it lifts.\n this._iosGesture.tail() !== \"fling\" || // In a bounce WebKit can drop the write (#1287): the tail\n // decides, as without the stop. (Not `flingCaught`: our stop\n // also ends the fling at speed, so a slow frame would read as\n // a catch and the tail would drop the command.)\n this._reportedOverscroll) {\n return;\n }\n this._iosGesture.end();\n this._flushHoldIfReady(true);\n this._writeAwaitingCommand();\n });\n this.scrollState = {\n ...target,\n startedAt: this.now(),\n lastTargetOffset: offset,\n stableFrames: 0,\n phase: \"queued\",\n behavior,\n samples: []\n };\n this.scheduleScrollReconcile();\n return;\n }\n this._iosGesture.end();\n }\n this.scrollState = {\n ...target,\n startedAt: this.now(),\n lastTargetOffset: offset,\n stableFrames: 0,\n behavior,\n phase: initialScrollPhase(\n behavior,\n target.index != null && approxEqual(offset, this.getScrollOffset())\n )\n };\n this._scrollToOffset(offset, { behavior });\n this.scheduleScrollReconcile();\n }\n}\nconst findNearestBinarySearch = (low, high, getCurrentValue, value) => {\n while (low <= high) {\n const middle = (low + high) / 2 | 0;\n const currentValue = getCurrentValue(middle);\n if (currentValue < value) {\n low = middle + 1;\n } else if (currentValue > value) {\n high = middle - 1;\n } else {\n return middle;\n }\n }\n if (low > 0) {\n return low - 1;\n } else {\n return 0;\n }\n};\nfunction findNearestBinarySearchFlat(flat, high, value) {\n let low = 0;\n while (low <= high) {\n const middle = (low + high) / 2 | 0;\n const currentValue = flat[middle * 2];\n if (currentValue < value) {\n low = middle + 1;\n } else if (currentValue > value) {\n high = middle - 1;\n } else {\n return middle;\n }\n }\n return low > 0 ? low - 1 : 0;\n}\nfunction calculateRangeImpl(measurements, outerSize, scrollOffset, lanes, flat) {\n const lastIndex = measurements.length - 1;\n if (measurements.length <= lanes) {\n return { startIndex: 0, endIndex: lastIndex };\n }\n if (lanes === 1 && flat !== null) {\n const startIndex2 = findNearestBinarySearchFlat(\n flat,\n lastIndex,\n scrollOffset\n );\n let endIndex2 = startIndex2;\n const limit = scrollOffset + outerSize;\n while (endIndex2 < lastIndex && flat[endIndex2 * 2] + flat[endIndex2 * 2 + 1] < limit) {\n endIndex2++;\n }\n return { startIndex: startIndex2, endIndex: endIndex2 };\n }\n const getStart = (index) => measurements[index].start;\n let startIndex = findNearestBinarySearch(0, lastIndex, getStart, scrollOffset);\n let endIndex = startIndex;\n if (lanes === 1) {\n while (endIndex < lastIndex && measurements[endIndex].end < scrollOffset + outerSize) {\n endIndex++;\n }\n } else if (lanes > 1) {\n const endPerLane = Array(lanes).fill(0);\n while (endIndex < lastIndex && endPerLane.some((pos) => pos < scrollOffset + outerSize)) {\n const item = measurements[endIndex];\n endPerLane[item.lane] = item.end;\n endIndex++;\n }\n const startPerLane = Array(lanes).fill(scrollOffset + outerSize);\n while (startIndex >= 0 && startPerLane.some((pos) => pos >= scrollOffset)) {\n const item = measurements[startIndex];\n startPerLane[item.lane] = item.start;\n startIndex--;\n }\n startIndex = Math.max(0, startIndex - startIndex % lanes);\n endIndex = Math.min(lastIndex, endIndex + (lanes - 1 - endIndex % lanes));\n }\n return { startIndex, endIndex };\n}\nexport {\n Virtualizer,\n _resetIOSDetectionForTests,\n approxEqual,\n debounce,\n defaultKeyExtractor,\n defaultRangeExtractor,\n elementScroll,\n measureElement,\n memo,\n notUndefined,\n observeElementOffset,\n observeElementRect,\n observeWindowOffset,\n observeWindowRect,\n windowScroll\n};\n//# sourceMappingURL=index.js.map\n","import { elementScroll, observeElementOffset, observeElementRect, windowScroll, observeWindowOffset, observeWindowRect, Virtualizer } from \"@tanstack/virtual-core\";\nexport * from \"@tanstack/virtual-core\";\nclass VirtualizerControllerBase {\n constructor(host, options) {\n this.cleanup = () => {\n };\n this.host = host;\n this.options = { ...options };\n this.virtualizer = new Virtualizer(this.resolveOptions(this.options));\n this.host.addController(this);\n }\n getVirtualizer() {\n return this.virtualizer;\n }\n /**\n * Merge a partial options update into the options this controller already\n * holds, push them to the virtualizer, and request a host update. Lit folds\n * a request made from `willUpdate` into the update already in progress.\n *\n * Keys set to `undefined` are ignored, matching core `setOptions`, so a\n * partial update cannot wipe an option stored earlier. Defaults supplied by\n * `VirtualizerController` / `WindowVirtualizerController` stay in place\n * unless a later call replaces them.\n */\n setOptions(options) {\n if (!this.applyOptions(options)) return;\n this.virtualizer.setOptions(this.resolveOptions(this.options));\n this.virtualizer._willUpdate();\n this.host.requestUpdate();\n }\n hostConnected() {\n this.cleanup = this.virtualizer._didMount();\n this.virtualizer._willUpdate();\n this.host.requestUpdate();\n }\n hostUpdated() {\n this.virtualizer._willUpdate();\n }\n hostDisconnected() {\n this.cleanup();\n }\n applyOptions(partial) {\n const next = {\n ...this.options\n };\n let changed = false;\n for (const key in partial) {\n if (!Object.prototype.hasOwnProperty.call(partial, key)) continue;\n const value = partial[key];\n if (value === void 0) continue;\n if (!Object.is(next[key], value)) {\n changed = true;\n Object.assign(next, { [key]: value });\n }\n }\n if (changed) this.options = next;\n return changed;\n }\n resolveOptions(options) {\n return {\n ...options,\n onChange: (instance, sync) => {\n var _a;\n this.host.updateComplete.then(() => this.host.requestUpdate());\n (_a = options.onChange) == null ? void 0 : _a.call(options, instance, sync);\n }\n };\n }\n}\nclass VirtualizerController extends VirtualizerControllerBase {\n constructor(host, options) {\n super(host, {\n observeElementRect,\n observeElementOffset,\n scrollToFn: elementScroll,\n ...options\n });\n }\n}\nclass WindowVirtualizerController extends VirtualizerControllerBase {\n constructor(host, options) {\n super(host, {\n getScrollElement: () => typeof document !== \"undefined\" ? window : null,\n observeElementRect: observeWindowRect,\n observeElementOffset: observeWindowOffset,\n scrollToFn: windowScroll,\n initialOffset: () => typeof document !== \"undefined\" ? window.scrollY : 0,\n ...options\n });\n }\n}\nexport {\n VirtualizerController,\n WindowVirtualizerController\n};\n//# sourceMappingURL=index.js.map\n","import type { ReactiveControllerHost } from 'lit';\nimport { VirtualizerController } from '@tanstack/lit-virtual';\nimport { RowPool } from '@argus-table/core';\n\n/** A rendered body row: its pool slot, its index in the row model and its offset. */\nexport interface WindowRow {\n slot: number;\n index: number;\n start: number;\n}\n\nexport interface VirtualWindow {\n /** Rendered rows, in pool order (ADR 0001 addendum). */\n rows: WindowRow[];\n /** Height of all rows in px. */\n totalSize: number;\n /** Visible rows, without overscan; `null` before the first layout. */\n range: { start: number; end: number } | null;\n}\n\nexport interface VirtualConfig {\n count: number;\n rowHeight: number;\n overscan: number;\n /** Row id at an index of the row model; pool slots follow row ids. */\n rowIdAt: (index: number) => string;\n /**\n * The row to keep rendered outside the range (the one holding the grid's tab\n * stop), so its DOM and focus survive scrolling. `undefined`: none.\n */\n keep?: { id: string; index: number } | undefined;\n}\n\n/**\n * Row virtualization (TanStack Virtual) plus the row pool: which rows render,\n * where, and which pool slot's DOM each one uses. The virtualizer registers itself\n * with the host and requests updates on scroll.\n */\nexport class VirtualController {\n readonly #virtual: VirtualizerController<HTMLElement, Element>;\n readonly #pool = new RowPool();\n #config: VirtualConfig = { count: 0, rowHeight: 40, overscan: 6, rowIdAt: String };\n\n constructor(host: ReactiveControllerHost, getScrollElement: () => HTMLElement | null) {\n this.#virtual = new VirtualizerController<HTMLElement, Element>(host, {\n count: 0,\n getScrollElement,\n estimateSize: () => this.#config.rowHeight,\n overscan: this.#config.overscan,\n });\n }\n\n configure(next: VirtualConfig): void {\n const prev = this.#config;\n this.#config = next;\n if (\n next.count !== prev.count ||\n next.overscan !== prev.overscan ||\n next.rowHeight !== prev.rowHeight\n ) {\n this.#virtual.setOptions({ count: next.count, overscan: next.overscan });\n if (next.rowHeight !== prev.rowHeight) this.#virtual.getVirtualizer().measure();\n }\n }\n\n /**\n * Computes the rendered window and updates the pool. Call once per render.\n */\n computeWindow(): VirtualWindow {\n const v = this.#virtual.getVirtualizer();\n const items = v.getVirtualItems();\n const byId = new Map<string, { index: number; start: number }>();\n for (const item of items) {\n byId.set(this.#config.rowIdAt(item.index), { index: item.index, start: item.start });\n }\n const { keep } = this.#config;\n this.#pool.pin(keep?.id);\n if (keep && !byId.has(keep.id)) {\n // Fixed row heights: the virtualizer would place it here too.\n byId.set(keep.id, { index: keep.index, start: keep.index * this.#config.rowHeight });\n }\n const rows: WindowRow[] = [];\n for (const { id, slot } of this.#pool.update(byId.keys())) {\n const item = byId.get(id);\n if (item) rows.push({ slot, ...item });\n }\n const range = v.range;\n return {\n rows,\n totalSize: v.getTotalSize(),\n range: range ? { start: range.startIndex, end: range.endIndex } : null,\n };\n }\n\n /** Number of pool slots created so far: bounded by the most rows rendered at once. */\n get poolSize(): number {\n return this.#pool.size;\n }\n\n /** `'start'` puts the row at the top; `'auto'` scrolls only as far as needed to show it. */\n scrollToIndex(index: number, align: 'start' | 'auto' = 'start'): void {\n this.#virtual.getVirtualizer().scrollToIndex(index, { align });\n }\n}\n","import type {\n CellClickDetail,\n ColumnResizeDetail,\n RangeChangeDetail,\n RowClickDetail,\n SortChangeDetail,\n} from '@argus-table/core';\n\n/** Fired after an update when the visible row range changed. */\nexport const RANGE_CHANGE = 'argus-range-change';\n\n/** Fired after the sort order changed (uncontrolled), or with the proposed order (controlled). */\nexport const SORT_CHANGE = 'argus-sort-change';\n\n/** Fired when a column was resized (uncontrolled), or with the proposed widths (controlled). */\nexport const COLUMN_RESIZE = 'argus-column-resize';\n\n/** Fired when a body row was clicked, after `argus-cell-click`. */\nexport const ROW_CLICK = 'argus-row-click';\n\n/** Fired when a body cell was clicked, before `argus-row-click`. */\nexport const CELL_CLICK = 'argus-cell-click';\n\ndeclare global {\n interface HTMLElementEventMap {\n 'argus-range-change': CustomEvent<RangeChangeDetail>;\n 'argus-sort-change': CustomEvent<SortChangeDetail>;\n 'argus-column-resize': CustomEvent<ColumnResizeDetail>;\n 'argus-row-click': CustomEvent<RowClickDetail<unknown>>;\n 'argus-cell-click': CustomEvent<CellClickDetail<unknown>>;\n }\n}\n\n/** Dispatches a bubbling, composed `CustomEvent`, the shape of every public event. */\nexport function fire(host: HTMLElement, name: string, detail: unknown): boolean {\n return host.dispatchEvent(new CustomEvent(name, { detail, bubbles: true, composed: true }));\n}\n","import{_$LH as o}from\"./lit-html.js\";\n/**\n * @license\n * Copyright 2020 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */const{I:t}=o,i=o=>o,n=o=>null===o||\"object\"!=typeof o&&\"function\"!=typeof o,e={HTML:1,SVG:2,MATHML:3},l=(o,t)=>void 0===t?void 0!==o?._$litType$:o?._$litType$===t,d=o=>null!=o?._$litType$?.h,c=o=>void 0!==o?._$litDirective$,f=o=>o?._$litDirective$,r=o=>void 0===o.strings,s=()=>document.createComment(\"\"),v=(o,n,e)=>{const l=o._$AA.parentNode,d=void 0===n?o._$AB:n._$AA;if(void 0===e){const i=l.insertBefore(s(),d),n=l.insertBefore(s(),d);e=new t(i,n,o,o.options)}else{const t=e._$AB.nextSibling,n=e._$AM,c=n!==o;if(c){let t;e._$AQ?.(o),e._$AM=o,void 0!==e._$AP&&(t=o._$AU)!==n._$AU&&e._$AP(t)}if(t!==d||c){let o=e._$AA;for(;o!==t;){const t=i(o).nextSibling;i(l).insertBefore(o,d),o=t}}}return e},u=(o,t,i=o)=>(o._$AI(t,i),o),m={},p=(o,t=m)=>o._$AH=t,M=o=>o._$AH,h=o=>{o._$AR(),o._$AA.remove()},j=o=>{o._$AR()};export{e as TemplateResultType,j as clearPart,M as getCommittedValue,f as getDirectiveClass,v as insertPart,d as isCompiledTemplateResult,c as isDirectiveResult,n as isPrimitive,r as isSingleExpression,l as isTemplateResult,h as removePart,u as setChildPartValue,p as setCommittedValue};\n//# sourceMappingURL=directive-helpers.js.map\n","import{noChange as e}from\"../lit-html.js\";import{directive as s,Directive as t,PartType as r}from\"../directive.js\";import{getCommittedValue as l,setChildPartValue as o,insertPart as i,removePart as n,setCommittedValue as f}from\"../directive-helpers.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst u=(e,s,t)=>{const r=new Map;for(let l=s;l<=t;l++)r.set(e[l],l);return r},c=s(class extends t{constructor(e){if(super(e),e.type!==r.CHILD)throw Error(\"repeat() can only be used in text expressions\")}dt(e,s,t){let r;void 0===t?t=s:void 0!==s&&(r=s);const l=[],o=[];let i=0;for(const s of e)l[i]=r?r(s,i):i,o[i]=t(s,i),i++;return{values:o,keys:l}}render(e,s,t){return this.dt(e,s,t).values}update(s,[t,r,c]){const d=l(s),{values:p,keys:a}=this.dt(t,r,c);if(!Array.isArray(d))return this.ut=a,p;const h=this.ut??=[],v=[];let m,y,x=0,j=d.length-1,k=0,w=p.length-1;for(;x<=j&&k<=w;)if(null===d[x])x++;else if(null===d[j])j--;else if(h[x]===a[k])v[k]=o(d[x],p[k]),x++,k++;else if(h[j]===a[w])v[w]=o(d[j],p[w]),j--,w--;else if(h[x]===a[w])v[w]=o(d[x],p[w]),i(s,v[w+1],d[x]),x++,w--;else if(h[j]===a[k])v[k]=o(d[j],p[k]),i(s,d[x],d[j]),j--,k++;else if(void 0===m&&(m=u(a,k,w),y=u(h,x,j)),m.has(h[x]))if(m.has(h[j])){const e=y.get(a[k]),t=void 0!==e?d[e]:null;if(null===t){const e=i(s,d[x]);o(e,p[k]),v[k]=e}else v[k]=o(t,p[k]),i(s,d[x],t),d[e]=null;k++}else n(d[j]),j--;else n(d[x]),x++;for(;k<=w;){const e=i(s,v[w+1]);o(e,p[k]),v[k++]=e}for(;x<=j;){const e=d[x++];null!==e&&n(e)}return this.ut=a,f(s,v),e}});export{c as repeat};\n//# sourceMappingURL=repeat.js.map\n","import { nothing } from 'lit';\nimport type { CellContent } from '../types.js';\n\n/** Turns header or cell content into a Lit child. */\nexport function toChild(content: CellContent | null | undefined): unknown {\n if (content === null || content === undefined) return nothing;\n return typeof content === 'number' ? String(content) : content;\n}\n\n/** Default cell text for an accessor value. */\nexport function formatValue(value: unknown): string {\n if (value === null || value === undefined) return '';\n if (value instanceof Date) return value.toLocaleString();\n // eslint-disable-next-line @typescript-eslint/no-base-to-string -- objects are handled above\n return typeof value === 'object' ? JSON.stringify(value) : String(value);\n}\n\n/** Private slot names (ADR 0001): cells by pool slot and column, headers by column. */\nexport const cellSlot = (slot: number, colIndex: number) => `c-${String(slot)}-${String(colIndex)}`;\nexport const headerSlot = (colIndex: number) => `h-${String(colIndex)}`;\n\ninterface Pinnable {\n pin: 'start' | 'end' | undefined;\n pinEdge: boolean;\n}\n\n/** Part list of a body cell: state is in the part name (`::part()` can't take attribute selectors). */\nexport function cellParts(column: Pinnable & { sorted: 'asc' | 'desc' | false }): string {\n let parts = 'cell';\n if (column.pin) parts += column.pinEdge ? ' cell-pinned cell-pinned-edge' : ' cell-pinned';\n if (column.sorted) parts += ' cell-sorted';\n return parts;\n}\n\n/** `aria-sort` for a header: only the sorted column carries it (WAI-ARIA APG). */\nexport function ariaSort(sorted: 'asc' | 'desc' | false): 'ascending' | 'descending' | undefined {\n if (!sorted) return undefined;\n return sorted === 'asc' ? 'ascending' : 'descending';\n}\n\n/** Inline style of a pinned cell: its sticky inset, from the start or the end edge. */\nexport function pinStyle(column: Pinnable & { offset: number }): string | undefined {\n return column.pin ? `--_pin-offset: ${String(column.offset)}px` : undefined;\n}\n","import { html, nothing } from 'lit';\nimport { repeat } from 'lit/directives/repeat.js';\nimport { styleMap } from 'lit/directives/style-map.js';\nimport type { ColumnView } from '@argus-table/core';\nimport type { WindowRow } from '../controllers/virtual-controller.js';\nimport type { CellContent } from '../types.js';\nimport { cellParts, cellSlot, pinStyle } from './content.js';\n\ntype Columns<T> = readonly ColumnView<T, CellContent>[];\n\n/** The cell holding the grid's tab stop: a row index and a column id. */\nexport interface ActiveCell {\n index: number;\n col: string;\n}\n\n/**\n * The virtualized body. Rows are keyed by pool slot, so a row entering the window\n * reuses the DOM of one that left (ADR 0001), and they stay in pool order: screen\n * readers get the position from `aria-rowindex` (the header row is 1).\n */\nexport function renderBody<T>(\n rows: readonly WindowRow[],\n columns: Columns<T>,\n totalSize: number,\n active: ActiveCell | undefined,\n) {\n return html`<div\n part=\"body\"\n role=\"rowgroup\"\n style=${styleMap({ blockSize: `${String(totalSize)}px` })}\n >\n ${repeat(\n rows,\n (r) => r.slot,\n (r) => renderRow(r, columns, r.index === active?.index ? active.col : undefined),\n )}\n </div>`;\n}\n\n/**\n * One body row. Every cell is focusable (`tabindex=-1`) so clicks focus it; the\n * active one is the grid's single tab stop (roving tabindex).\n */\nfunction renderRow<T>(row: WindowRow, columns: Columns<T>, activeCol: string | undefined) {\n return html`<div\n part=${row.index % 2 === 0 ? 'row row-even' : 'row row-odd'}\n class=\"row\"\n role=\"row\"\n aria-rowindex=${row.index + 2}\n style=${styleMap({ transform: `translateY(${String(row.start)}px)` })}\n >\n ${repeat(\n columns,\n (c) => c.id,\n (c) =>\n html`<div\n part=${cellParts(c)}\n role=\"gridcell\"\n aria-colindex=${c.colIndex}\n tabindex=${c.id === activeCol ? 0 : -1}\n data-col=${c.id}\n data-align=${c.align}\n data-pin=${c.pin ?? nothing}\n style=${pinStyle(c) ?? nothing}\n >\n <slot name=${cellSlot(row.slot, c.colIndex)}></slot>\n </div>`,\n )}\n </div>`;\n}\n","import { html, render } from 'lit';\nimport { repeat } from 'lit/directives/repeat.js';\nimport type { ColumnView, TableModel } from '@argus-table/core';\nimport type { WindowRow } from '../controllers/virtual-controller.js';\nimport type { CellContent } from '../types.js';\nimport { cellSlot, formatValue, headerSlot, toChild } from './content.js';\n\ntype Column<T> = ColumnView<T, CellContent>;\n\n/**\n * Renders header and cell content into the host's light DOM, as direct children\n * (a slot only takes the host's own children). Keyed and ordered by pool slot,\n * so recycled content updates in place instead of moving (ADR 0001).\n */\nexport function renderLightDom<T>(\n host: HTMLElement,\n model: TableModel<T, CellContent>,\n rows: readonly WindowRow[],\n): void {\n const columns = model.columns;\n render(\n html`${repeat(\n columns,\n (c) => c.id,\n (c) => html`<div slot=${headerSlot(c.colIndex)}>${headerContent(c)}</div>`,\n )}${repeat(\n rows,\n (r) => r.slot,\n (r) =>\n repeat(\n columns,\n (c) => c.id,\n (c) =>\n html`<div slot=${cellSlot(r.slot, c.colIndex)}>${cellContent(model, r.index, c)}</div>`,\n ),\n )}`,\n host,\n { host },\n );\n}\n\nfunction headerContent<T>(column: Column<T>): unknown {\n const { header } = column;\n return toChild(typeof header === 'function' ? header() : header);\n}\n\nfunction cellContent<T>(model: TableModel<T, CellContent>, index: number, column: Column<T>) {\n if (column.cell) {\n const context = model.cellContext(index, column.id);\n return context ? toChild(column.cell(context.row, context)) : '';\n }\n return column.hasAccessor ? formatValue(model.valueAt(index, column.id)) : '';\n}\n","import { html, nothing } from 'lit';\nimport { repeat } from 'lit/directives/repeat.js';\nimport type { ColumnView } from '@argus-table/core';\nimport type { CellContent } from '../types.js';\nimport { ariaSort, headerSlot, pinStyle } from './content.js';\n\nexport interface HeaderHandlers {\n click: (event: MouseEvent) => void;\n pointerdown: (event: PointerEvent) => void;\n}\n\n/**\n * The sticky header row. Header content is slotted from the light DOM. Pinned\n * header cells use the same private `data-pin` hooks as body cells, but no parts.\n * Every header carries `data-col` (its column id) and sortable ones also\n * `data-sort-col`; the element's delegated handlers read them. Headers take part\n * in the grid's roving tabindex: the active one is the tab stop (`activeCol`).\n * Resizable columns get a `resize-handle` on the header's inline-end edge. It is\n * not focusable: the focused header resizes with Alt+Arrow.\n */\nexport function renderHeader<T>(\n columns: readonly ColumnView<T, CellContent>[],\n handlers: HeaderHandlers,\n activeCol: string | undefined,\n) {\n return html`<div part=\"header\" role=\"rowgroup\">\n <div\n part=\"header-row\"\n class=\"row\"\n role=\"row\"\n aria-rowindex=\"1\"\n @click=${handlers.click}\n @pointerdown=${handlers.pointerdown}\n >\n ${repeat(\n columns,\n (c) => c.id,\n (c) =>\n html`<div\n part=${c.sorted ? 'header-cell header-cell-sorted' : 'header-cell'}\n role=\"columnheader\"\n aria-colindex=${c.colIndex}\n aria-sort=${ariaSort(c.sorted) ?? nothing}\n data-col=${c.id}\n data-sort-col=${c.sortable ? c.id : nothing}\n tabindex=${c.id === activeCol ? 0 : -1}\n data-align=${c.align}\n data-pin=${c.pin ?? nothing}\n style=${pinStyle(c) ?? nothing}\n >\n <slot name=${headerSlot(c.colIndex)}></slot>\n ${c.sortable ? html`<span class=\"sort-indicator\" aria-hidden=\"true\"></span>` : nothing}\n ${c.resizable ? resizeHandle(c) : nothing}\n </div>`,\n )}\n </div>\n </div>`;\n}\n\n/**\n * A vertical separator with the column's width as its value. A flex column has no\n * fixed width until it is resized, so it reports none.\n */\nfunction resizeHandle<T>(c: ColumnView<T, CellContent>) {\n return html`<div\n part=\"resize-handle\"\n role=\"separator\"\n aria-orientation=\"vertical\"\n aria-label=\"Resize column\"\n aria-valuenow=${c.flex === undefined ? Math.round(c.width) : nothing}\n aria-valuemin=${c.minWidth}\n aria-valuemax=${Number.isFinite(c.maxWidth) ? c.maxWidth : nothing}\n data-resize-col=${c.id}\n ></div>`;\n}\n","import { css } from 'lit';\n\n/**\n * Base styles. Everything sits in `@layer argus-base`, and every value reads a\n * public token with a neutral fallback, so themes and page CSS always win.\n * `--_*` properties are private.\n */\nexport const baseStyles = css`\n @layer argus-base {\n :host {\n display: block;\n /* A table that virtualizes needs a bounded height; set your own on the element. */\n block-size: 400px;\n box-sizing: border-box;\n contain: content;\n color-scheme: light dark;\n color: var(--argus-fg, CanvasText);\n background: var(--argus-bg, Canvas);\n font: var(--argus-font, inherit);\n --_row-height: var(--argus-row-height, 40px);\n --_pad: var(--argus-cell-padding-inline, 12px);\n --_border: var(--argus-border-width, 1px) solid\n var(--argus-border-color, light-dark(#e5e7eb, #374151));\n /* 1 in LTR, -1 in RTL: mirrors the pinned-edge shadow. */\n --_dir: 1;\n }\n :host(:dir(rtl)) {\n --_dir: -1;\n }\n :host([density='compact']) {\n --_row-height: var(--argus-row-height, 32px);\n --_pad: var(--argus-cell-padding-inline, 8px);\n }\n :host([density='spacious']) {\n --_row-height: var(--argus-row-height, 52px);\n --_pad: var(--argus-cell-padding-inline, 16px);\n }\n :host([hidden]) {\n display: none;\n }\n\n [part~='table'] {\n position: relative;\n block-size: 100%;\n overflow: auto;\n overscroll-behavior: contain;\n /* A cell moved to by keyboard scrolls clear of the sticky header and pinned columns. */\n scroll-padding-block-start: var(--_row-height);\n scroll-padding-inline: var(--_pin-start, 0) var(--_pin-end, 0);\n }\n\n .row {\n display: grid;\n grid-template-columns: var(--_cols);\n inline-size: var(--_width);\n min-inline-size: 100%;\n block-size: var(--_row-height);\n box-sizing: border-box;\n }\n\n [part~='header'] {\n position: sticky;\n inset-block-start: 0;\n z-index: 2;\n }\n\n [part~='body'] {\n position: relative;\n contain: layout;\n }\n [part~='row'] {\n position: absolute;\n inset-block-start: 0;\n inset-inline-start: 0;\n --_row-bg: var(--argus-bg, Canvas);\n --_row-surface: var(--_row-bg);\n background: var(--_row-surface);\n }\n [part~='row-odd'] {\n --_row-bg: var(--argus-row-stripe-bg, var(--argus-bg, Canvas));\n }\n [part~='row']:hover {\n --_row-surface: var(--argus-row-hover-bg, var(--_row-bg));\n }\n\n [part~='cell'],\n [part~='header-cell'] {\n display: flex;\n align-items: center;\n min-inline-size: 0;\n box-sizing: border-box;\n padding-inline: var(--_pad);\n overflow: hidden;\n white-space: nowrap;\n border-block-end: var(--_border);\n }\n [part~='header-cell'] {\n background: var(--argus-header-bg, light-dark(#f9fafb, #111827));\n color: var(--argus-header-fg, inherit);\n font-weight: 600;\n }\n [part~='header-cell'] {\n position: relative;\n }\n [part~='resize-handle'] {\n position: absolute;\n inset-block: 0;\n inset-inline-end: 0;\n inline-size: 8px;\n z-index: 1;\n cursor: col-resize;\n touch-action: none;\n }\n [part~='resize-handle']::after {\n content: '';\n position: absolute;\n inset-block: 25%;\n inset-inline-end: 0;\n inline-size: 2px;\n background: var(--argus-resize-handle-color, light-dark(#9ca3af, #6b7280));\n opacity: 0;\n }\n [part~='header-cell']:hover [part~='resize-handle']::after,\n [part~='header-cell']:focus-visible [part~='resize-handle']::after,\n [part~='resize-handle'][data-active]::after {\n opacity: 1;\n }\n [data-sort-col] {\n cursor: pointer;\n user-select: none;\n }\n [part~='header-cell']:focus-visible,\n [part~='cell']:focus-visible {\n outline: var(--argus-focus-ring, 2px solid Highlight);\n outline-offset: -2px;\n }\n /* A small chevron after the header content; only the sorted column shows it. */\n .sort-indicator {\n flex: none;\n inline-size: 0.35em;\n block-size: 0.35em;\n margin-inline-start: 0.4em;\n /* Physical sides on purpose: the chevron is rotated, so it must not mirror in RTL. */\n border-right: 0.12em solid currentColor;\n border-bottom: 0.12em solid currentColor;\n visibility: hidden;\n }\n [aria-sort] .sort-indicator {\n visibility: visible;\n }\n [aria-sort='ascending'] .sort-indicator {\n transform: translateY(0.1em) rotate(-135deg);\n }\n [aria-sort='descending'] .sort-indicator {\n transform: translateY(-0.1em) rotate(45deg);\n }\n [data-align='end'] .sort-indicator {\n order: -1;\n margin-inline: 0 0.4em;\n }\n /*\n * Pinned columns: sticky inside the scroll container, with offsets from the\n * table model. Logical insets make RTL work without extra rules.\n */\n [data-pin] {\n position: sticky;\n z-index: 1;\n }\n [data-pin='start'] {\n inset-inline-start: var(--_pin-offset);\n }\n [data-pin='end'] {\n inset-inline-end: var(--_pin-offset);\n }\n /*\n * Pinned body cells are sticky only while the table scrolls sideways\n * (data-hscroll on the scroller). At rest they are plain cells shifted by the\n * horizontal scroll offset, which vertical scrolling never changes: a sticky\n * cell per row is a compositing layer each, and Safari stutters moving them\n * (PinScrollController). Both place the cells at the same spot.\n */\n [part~='row'] > [data-pin] {\n position: relative;\n inset-inline: auto;\n }\n [part~='row'] > [data-pin='start'] {\n transform: translateX(var(--_sx, 0px));\n }\n [part~='row'] > [data-pin='end'] {\n transform: translateX(calc(var(--_sx, 0px) - var(--_dir) * var(--_max-x, 0px)));\n }\n [data-hscroll] [part~='row'] > [data-pin] {\n position: sticky;\n transform: none;\n }\n [data-hscroll] [part~='row'] > [data-pin='start'] {\n inset-inline-start: var(--_pin-offset);\n }\n [data-hscroll] [part~='row'] > [data-pin='end'] {\n inset-inline-end: var(--_pin-offset);\n }\n [part~='cell-pinned'] {\n background: var(--_row-surface);\n }\n /*\n * The edge shadow, once per pinned side (.pin-shadow, beside the scroller).\n * --argus-pinned-shadow is written for a shadow falling toward the end side;\n * the start edge in RTL and the end edge in LTR mirror it.\n */\n .pin-shadow {\n position: absolute;\n inset-block-start: 0;\n block-size: min(var(--_view-h, 100%), var(--_content-h, 100%));\n z-index: 3;\n pointer-events: none;\n }\n .pin-shadow[data-side='start'] {\n inset-inline-start: 0;\n }\n .pin-shadow[data-side='end'] {\n inset-inline-end: var(--_sb-x, 0px);\n }\n .pin-shadow::after {\n content: '';\n position: absolute;\n inset: 0;\n box-shadow: var(\n --argus-pinned-shadow,\n 4px 0 6px -4px light-dark(rgb(0 0 0 / 0.2), rgb(0 0 0 / 0.6))\n );\n transform: scaleX(var(--_dir));\n }\n .pin-shadow[data-side='end']::after {\n transform: scaleX(calc(-1 * var(--_dir)));\n }\n\n [data-align='center'] {\n justify-content: center;\n text-align: center;\n }\n [data-align='end'] {\n justify-content: flex-end;\n text-align: end;\n }\n ::slotted(*) {\n min-inline-size: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n\n [part~='empty'] {\n display: flex;\n align-items: center;\n justify-content: center;\n min-block-size: calc(100% - var(--_row-height));\n padding: var(--_pad);\n box-sizing: border-box;\n }\n\n /* Measures the resolved row height in px for the virtualizer. */\n .probe {\n position: absolute;\n inset-block-start: 0;\n inline-size: 0;\n block-size: var(--_row-height);\n visibility: hidden;\n pointer-events: none;\n }\n }\n`;\n","import {\n LitElement,\n html,\n nothing,\n type CSSResultGroup,\n type PropertyValues,\n type TemplateResult,\n} from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { styleMap } from 'lit/directives/style-map.js';\nimport {\n controllable,\n type ColumnResizeDetail,\n type ColumnView,\n type TableModel,\n} from '@argus-table/core';\nimport { PinScrollController } from './controllers/pin-scroll-controller.js';\nimport { startResizeDrag } from './controllers/resize-drag.js';\nimport { TableController } from './controllers/table-controller.js';\nimport { VirtualController, type VirtualWindow } from './controllers/virtual-controller.js';\nimport { CELL_CLICK, COLUMN_RESIZE, fire, RANGE_CHANGE, ROW_CLICK, SORT_CHANGE } from './events.js';\nimport { renderBody, type ActiveCell } from './render/body.js';\nimport { renderLightDom } from './render/cells.js';\nimport { renderHeader } from './render/header.js';\nimport { baseStyles } from './styles/base.js';\nimport type { CellContent, ColumnDef, ColumnSizingState, Density, SortState } from './types.js';\n\n/**\n * The host carries the grid role, so rows rendered in the shadow root become\n * its children in the accessibility tree. ElementInternals sets the default;\n * `connectedCallback` also adds a `role` attribute, because tools such as\n * axe-core can't see the ElementInternals role. A `role` the page sets wins.\n */\nfunction attachGridInternals(host: HTMLElement): ElementInternals {\n const internals = host.attachInternals();\n internals.role = 'grid';\n return internals;\n}\n\n/**\n * The sortable column a header click came from, if any. Works for slotted content\n * too. Clicks on a resize handle never sort, so a click that ends a drag doesn't.\n */\nfunction sortColumnOf(event: Event): string | undefined {\n for (const target of event.composedPath()) {\n if (!(target instanceof HTMLElement)) continue;\n if (target.dataset.resizeCol !== undefined) return undefined;\n if (target.dataset.sortCol !== undefined) return target.dataset.sortCol;\n if (target.getAttribute('part') === 'header-row') return undefined;\n }\n return undefined;\n}\n\nconst RESIZE_STEP = 10;\n\n/**\n * The cell holding the grid's single tab stop. `index` is the row's index in the\n * row model, `-1` for the header row; `rowId` keeps it on the same row when the\n * order changes.\n */\ninterface Active {\n index: number;\n rowId: string | undefined;\n col: string;\n}\n\n/** The grid cell or column header an element is, if any. */\nfunction gridCell(target: EventTarget): HTMLElement | undefined {\n if (!(target instanceof HTMLElement) || target.dataset.col === undefined) return undefined;\n const role = target.getAttribute('role');\n return role === 'gridcell' || role === 'columnheader' ? target : undefined;\n}\n\n/** Row index of a rendered row element (`aria-rowindex` minus the header); `-1` for the header. */\nfunction rowIndexOf(row: Element | null): number {\n return Number(row?.getAttribute('aria-rowindex') ?? 1) - 2;\n}\n\n/**\n * The pinned edge's shadow, drawn once per side over the scroller rather than\n * per row: a shadow on every pinned cell repaints on every scroll frame. It\n * covers the pinned columns and casts `--argus-pinned-shadow` onto the rest;\n * PinScrollController sizes it to the visible area.\n */\nfunction pinShadow(side: 'start' | 'end', width: number, rows: number, rowPx: number) {\n if (width === 0) return nothing;\n return html`<div\n class=\"pin-shadow\"\n data-side=${side}\n aria-hidden=\"true\"\n style=${styleMap({\n inlineSize: `${String(width)}px`,\n '--_content-h': `${String((rows + 1) * rowPx)}px`,\n })}\n ></div>`;\n}\n\n/** CSS grid track for a column: fixed px, or a flex share with the min width as floor. */\nfunction track<T>(column: ColumnView<T, CellContent>): string {\n return column.flex === undefined\n ? `${String(column.width)}px`\n : `minmax(${String(column.minWidth)}px, ${String(column.flex)}fr)`;\n}\n\n/**\n * A virtualized data table.\n *\n * Set `columns` and `data` as properties. Header and cell content is rendered\n * into the element's light DOM and slotted into the cells, so page CSS and the\n * page's own components work inside cells.\n *\n * @summary Data table with pinned rows and columns and infinite loading.\n *\n * @fires argus-sort-change - A sortable header was clicked, or activated with Enter or Space. `detail: { sorting }`: the new order, or the proposed one when `sorting` is controlled.\n * @fires argus-column-resize - A column was resized by dragging its handle or with Alt+Arrow on its header. `detail: { columnId, width, sizing }`: the new widths, or the proposed ones when `columnSizing` is controlled. Fires on every frame of a drag.\n * @fires argus-cell-click - A body cell was clicked, or Enter was pressed on it. `detail: { row, columnId, value }`. Fires before `argus-row-click`.\n * @fires argus-row-click - A body row was clicked, or Enter was pressed on one of its cells. `detail: { row, rowId, index }`.\n * @fires argus-range-change - The visible rows changed. `detail: { start, end }` (row indices, inclusive).\n *\n * @slot empty - Shown instead of the body when there are no rows. Default: \"No rows\".\n *\n * @csspart table - The scroll container that holds header and body.\n * @csspart header - The sticky header row group.\n * @csspart header-row - The header row.\n * @csspart header-cell - Every header cell.\n * @csspart header-cell-sorted - The header of the sorted column. The direction is in `aria-sort`.\n * @csspart resize-handle - The drag handle on the inline-end edge of a resizable column's header.\n * @csspart body - The row group holding the rendered body rows.\n * @csspart row - Every body row.\n * @csspart row-even - Body rows with an even index (0-based).\n * @csspart row-odd - Body rows with an odd index.\n * @csspart cell - Every body cell.\n * @csspart cell-sorted - Body cells in the sorted column.\n * @csspart cell-pinned - Body cells in a pinned column, on either side.\n * @csspart cell-pinned-edge - The pinned body cell next to the scrolling columns (one per pinned side).\n * @csspart empty - The empty-state container.\n *\n * @cssprop [--argus-bg=Canvas] - Background of the table and rows.\n * @cssprop [--argus-fg=CanvasText] - Text colour.\n * @cssprop [--argus-font=inherit] - Font shorthand for the table.\n * @cssprop [--argus-header-bg] - Header background.\n * @cssprop [--argus-header-fg=inherit] - Header text colour.\n * @cssprop [--argus-border-color] - Colour of the row borders.\n * @cssprop [--argus-border-width=1px] - Width of the row borders.\n * @cssprop [--argus-row-height] - Height of a row. Default per density: 32px, 40px, 52px.\n * @cssprop [--argus-cell-padding-inline] - Inline padding of cells. Default per density: 8px, 12px, 16px.\n * @cssprop [--argus-row-stripe-bg] - Background of odd rows. Default: no stripes.\n * @cssprop [--argus-pinned-shadow] - Shadow on the pinned edge, as a `box-shadow` falling toward the end side (`4px 0 6px -4px …`). Mirrored for the end edge and in RTL; `none` removes it.\n * @cssprop [--argus-resize-handle-color] - Colour of the resize handle's line, shown on hover, focus and drag.\n * @cssprop [--argus-focus-ring=2px solid Highlight] - Outline of the focused header or cell.\n * @cssprop [--argus-row-hover-bg] - Background of the hovered row. Default: no change.\n * @cssprop [--argus-row-selected-bg] - Reserved for row selection, which comes after v0.1. The table doesn't read it yet.\n */\n@customElement('argus-table')\nexport class ArgusTable<T = unknown> extends LitElement {\n static override styles: CSSResultGroup = baseStyles;\n\n /** Column definitions. Property only: functions can't be attributes. */\n @property({ attribute: false })\n columns: readonly ColumnDef<T>[] = [];\n\n /** The rows to show. Replace the array to update; changes inside it aren't detected. */\n @property({ attribute: false })\n data: readonly T[] = [];\n\n /** Returns a stable id for a row. Default: the row's index in `data`. */\n @property({ attribute: false })\n getRowId?: (row: T, index: number) => string;\n\n /** Row height in px. Unset: the density (or the `--argus-row-height` token) decides. */\n @property({ attribute: 'row-height', type: Number })\n rowHeight?: number;\n\n /** Row density: `compact`, `comfortable` or `spacious`. */\n @property({ reflect: true })\n density: Density = 'comfortable';\n\n /** Rows rendered above and below the visible ones. */\n @property({ type: Number })\n overscan = 6;\n\n /**\n * The sort order, e.g. `[{ id: 'total', desc: true }]`; `[]` when unsorted. Unset,\n * the table keeps it itself and header clicks change it. Once set, it is\n * controlled: a click only fires `argus-sort-change` with the proposed order,\n * and nothing changes until you set the property. Set `undefined` to hand it back.\n */\n @property({ attribute: false })\n get sorting(): SortState {\n return this.#sorting.value;\n }\n set sorting(value: SortState | undefined) {\n // Lit wraps this accessor and requests the update with the old value.\n this.#sorting.set(value);\n }\n\n /**\n * Resized widths in px by column id, e.g. `{ name: 240 }`. A resized flex column\n * becomes fixed. Uncontrolled until set, like `sorting`: once set, a resize only\n * fires `argus-column-resize` with the proposed widths. `undefined` hands it back.\n */\n @property({ attribute: false })\n get columnSizing(): ColumnSizingState {\n return this.#sizing.value;\n }\n set columnSizing(value: ColumnSizingState | undefined) {\n this.#sizing.set(value);\n }\n\n readonly #sorting = controllable<SortState>([]);\n readonly #sizing = controllable<ColumnSizingState>({});\n /** A resize the table applied itself; its event fires once the update is done. */\n #appliedResize: ColumnResizeDetail | undefined;\n /** A sort the table applied itself; its event fires once the update is done. */\n #appliedSort: SortState | undefined;\n readonly #internals = attachGridInternals(this);\n readonly #table = new TableController<T>();\n // Looked up lazily: the virtualizer's hostUpdated runs before firstUpdated.\n readonly #virtual = new VirtualController(this, () =>\n this.renderRoot.querySelector<HTMLElement>('[part~=\"table\"]'),\n );\n readonly #pinScroll = new PinScrollController(this, () =>\n this.renderRoot.querySelector<HTMLElement>('[part~=\"table\"]'),\n );\n #rowPx = 40;\n #probeObserver?: ResizeObserver;\n #window: VirtualWindow = { rows: [], totalSize: 0, range: null };\n #active: Active | undefined;\n /** Move focus to the active cell after the next update (keyboard navigation). */\n #focusPending = false;\n #lastRange = '';\n\n override connectedCallback(): void {\n super.connectedCallback();\n if (!this.hasAttribute('role')) this.setAttribute('role', 'grid');\n if (this.hasUpdated) this.#observeProbe();\n }\n\n override disconnectedCallback(): void {\n super.disconnectedCallback();\n this.#probeObserver?.disconnect();\n }\n\n /** Scrolls so that the row at `index` (in the current row order) is at the top. */\n async scrollToRow(index: number): Promise<void> {\n await this.updateComplete;\n this.#virtual.scrollToIndex(index);\n await this.updateComplete;\n }\n\n protected override willUpdate(changed: PropertyValues<this>): void {\n if (\n changed.has('columns') ||\n changed.has('data') ||\n changed.has('getRowId') ||\n changed.has('sorting') ||\n changed.has('columnSizing')\n ) {\n this.#table.update({\n columns: this.columns,\n data: this.data,\n getRowId: this.getRowId,\n sorting: this.#sorting.value,\n columnSizing: this.#sizing.value,\n });\n }\n const model = this.#table.model;\n this.#reconcileActive(model);\n const active = this.#active;\n this.#internals.ariaRowCount = String(model.rowCount + 1);\n this.#internals.ariaColCount = String(model.columns.length);\n this.#virtual.configure({\n count: model.rowCount,\n rowHeight: this.#rowPx,\n overscan: Math.max(0, this.overscan),\n rowIdAt: (index) => model.rowAt(index)?.id ?? String(index),\n // The active row stays rendered, so the tab stop and focus survive scrolling.\n keep: active?.rowId === undefined ? undefined : { id: active.rowId, index: active.index },\n });\n }\n\n protected override render(): TemplateResult {\n const model = this.#table.model;\n const columns = model.columns;\n this.#window = this.#virtual.computeWindow();\n const pinnedWidth = (side: 'start' | 'end') =>\n columns.reduce((sum, c) => (c.pin === side ? sum + c.width : sum), 0);\n const pinned = (side: 'start' | 'end') => `${String(pinnedWidth(side))}px`;\n const style: Record<string, string> = {\n '--_cols': columns.map(track).join(' '),\n '--_width': `${String(model.totalWidth)}px`,\n '--_pin-start': pinned('start'),\n '--_pin-end': pinned('end'),\n };\n const active = this.#active;\n const bodyActive: ActiveCell | undefined =\n active && active.index >= 0 ? { index: active.index, col: active.col } : undefined;\n if (this.rowHeight !== undefined && this.rowHeight > 0) {\n style['--_row-height'] = `${String(this.rowHeight)}px`;\n }\n return html`<div\n part=\"table\"\n role=\"presentation\"\n style=${styleMap(style)}\n @keydown=${this.#onKeydown}\n @focusin=${this.#onFocusin}\n @click=${this.#onClick}\n >\n ${renderHeader(columns, this.#headerHandlers, active?.index === -1 ? active.col : undefined)}\n ${\n model.rowCount === 0\n ? html`<div part=\"empty\"><slot name=\"empty\">No rows</slot></div>`\n : renderBody(this.#window.rows, columns, this.#window.totalSize, bodyActive)\n }\n <div class=\"probe\" aria-hidden=\"true\"></div>\n </div>\n ${pinShadow('start', pinnedWidth('start'), model.rowCount, this.#rowPx)}\n ${pinShadow('end', pinnedWidth('end'), model.rowCount, this.#rowPx)}`;\n }\n\n protected override firstUpdated(): void {\n this.#observeProbe();\n this.#measureRowHeight();\n }\n\n protected override updated(changed: PropertyValues<this>): void {\n renderLightDom(this, this.#table.model, this.#window.rows);\n if (changed.has('columns') || changed.has('columnSizing')) this.#pinScroll.measure();\n if (this.#focusPending) {\n this.#focusPending = false;\n this.#focusActive();\n }\n if (changed.has('density') || changed.has('rowHeight')) this.#measureRowHeight();\n if (this.#appliedResize) {\n const detail = this.#appliedResize;\n this.#appliedResize = undefined;\n fire(this, COLUMN_RESIZE, detail);\n }\n if (this.#appliedSort) {\n const sorting = this.#appliedSort;\n this.#appliedSort = undefined;\n fire(this, SORT_CHANGE, { sorting });\n }\n const { range } = this.#window;\n const key = range ? `${String(range.start)}:${String(range.end)}` : '';\n if (range && key !== this.#lastRange) {\n this.#lastRange = key;\n fire(this, RANGE_CHANGE, { start: range.start, end: range.end });\n }\n }\n\n readonly #headerHandlers = {\n click: (event: MouseEvent) => {\n const id = sortColumnOf(event);\n if (id !== undefined) this.#requestSort(id);\n },\n pointerdown: (event: PointerEvent) => {\n if (event.button !== 0) return;\n const handle = event.composedPath()[0];\n if (!(handle instanceof HTMLElement)) return;\n const id = handle.dataset.resizeCol;\n const cell = handle.parentElement;\n if (id === undefined || !cell) return;\n startResizeDrag(handle, event, cell.getBoundingClientRect().width, this.#direction(), (w) => {\n this.#requestResize(id, w);\n });\n },\n };\n\n /**\n * Keys on a focused cell or header. Keys from content inside a cell (an input,\n * a button) are left to that content.\n */\n readonly #onKeydown = (event: KeyboardEvent) => {\n const cell = gridCell(event.composedPath()[0] ?? event.target ?? this);\n const id = cell?.dataset.col;\n if (!cell || id === undefined) return;\n if (event.key === 'Tab' && event.shiftKey) {\n // Firefox makes the scroll container a tab stop, so Shift+Tab would stop\n // on it before leaving the grid. Take it out of the tab order for this\n // one move only: a tabindex there for good would expose it as a node of\n // its own between the grid and its rows.\n const scroller = event.currentTarget as HTMLElement;\n scroller.tabIndex = -1;\n // Put it back once focus has actually moved (a timer can run first).\n cell.addEventListener(\n 'focusout',\n () => {\n scroller.removeAttribute('tabindex');\n },\n { once: true },\n );\n return;\n }\n const inHeader = cell.getAttribute('role') === 'columnheader';\n const { key } = event;\n if (inHeader && event.altKey && (key === 'ArrowLeft' || key === 'ArrowRight')) {\n event.preventDefault();\n // Logical: the arrow pointing toward the inline end grows the column.\n const towardEnd = (key === 'ArrowRight') === (this.#direction() === 1);\n this.#requestResize(\n id,\n this.#currentWidth(id, cell) + (towardEnd ? RESIZE_STEP : -RESIZE_STEP),\n );\n return;\n }\n if (inHeader && (key === 'Enter' || key === ' ') && cell.dataset.sortCol !== undefined) {\n event.preventDefault();\n this.#requestSort(id);\n return;\n }\n if (event.altKey || event.ctrlKey || event.metaKey || event.shiftKey) return;\n if (!inHeader && key === 'Enter') {\n // Enter on a body cell does what a click does.\n event.preventDefault();\n this.#activate(event.composedPath());\n return;\n }\n const model = this.#table.model;\n const columns = model.columns;\n let row = inHeader ? -1 : rowIndexOf(cell.parentElement);\n let col = columns.findIndex((c) => c.id === id);\n switch (key) {\n case 'ArrowDown':\n row = Math.min(row + 1, model.rowCount - 1);\n break;\n case 'ArrowUp':\n row = Math.max(row - 1, -1);\n break;\n case 'ArrowRight':\n col += this.#direction();\n break;\n case 'ArrowLeft':\n col -= this.#direction();\n break;\n case 'Home':\n col = 0;\n break;\n case 'End':\n col = columns.length - 1;\n break;\n default:\n return;\n }\n event.preventDefault();\n const target = columns[Math.min(Math.max(col, 0), columns.length - 1)];\n if (target) this.#moveTo(row, target.id, model);\n };\n\n /** Focus that lands in a cell (a click, or content inside it) makes that cell active. */\n readonly #onFocusin = (event: FocusEvent) => {\n // Tab into the grid landed on the scroll container (Firefox makes it a tab\n // stop): move on to the grid's one tab stop, the active cell. Only when focus\n // came from outside the grid: coming from inside means the user is leaving,\n // and sending them back would trap the keyboard.\n const scroller = event.currentTarget as HTMLElement;\n if (event.composedPath()[0] === scroller) {\n const from = event.relatedTarget;\n if (!(from instanceof Node && scroller.contains(from))) {\n this.#focusPending = true;\n this.requestUpdate();\n }\n return;\n }\n for (const target of event.composedPath()) {\n const cell = gridCell(target);\n if (cell?.dataset.col !== undefined) {\n const index =\n cell.getAttribute('role') === 'columnheader' ? -1 : rowIndexOf(cell.parentElement);\n const { col } = cell.dataset;\n if (index !== this.#active?.index || col !== this.#active.col) {\n this.#active = { index, rowId: this.#table.model.rowAt(index)?.id, col };\n this.requestUpdate();\n }\n return;\n }\n if (target === event.currentTarget) return;\n }\n };\n\n /** `argus-cell-click`, then `argus-row-click`, for clicks in the body. */\n readonly #onClick = (event: MouseEvent) => {\n this.#activate(event.composedPath());\n };\n\n /**\n * Fires `argus-cell-click` (when a cell is on the path), then `argus-row-click`,\n * for the body row on an event path. Clicks and Enter on a body cell use it.\n */\n #activate(path: EventTarget[]): void {\n let columnId: string | undefined;\n for (const target of path) {\n if (!(target instanceof HTMLElement)) continue;\n const role = target.getAttribute('role');\n if (role === 'gridcell') columnId = target.dataset.col;\n if (role !== 'row') continue;\n const model = this.#table.model;\n const index = rowIndexOf(target);\n const row = index >= 0 ? model.rowAt(index) : undefined;\n if (!row) return;\n if (columnId !== undefined) {\n fire(this, CELL_CLICK, {\n row: row.original,\n columnId,\n value: model.valueAt(index, columnId),\n });\n }\n fire(this, ROW_CLICK, { row: row.original, rowId: row.id, index });\n return;\n }\n }\n\n /** Makes a cell active and focuses it after the update. The keep-rendered rule renders its row. */\n #moveTo(index: number, col: string, model: TableModel<T, CellContent>): void {\n this.#active = { index, rowId: index >= 0 ? model.rowAt(index)?.id : undefined, col };\n this.#focusPending = true;\n this.requestUpdate();\n }\n\n #focusActive(): void {\n const active = this.#active;\n if (!active) return;\n const col = CSS.escape(active.col);\n const selector =\n active.index === -1\n ? `[part~='header-row'] > [data-col=\"${col}\"]`\n : `[part~='body'] > [aria-rowindex=\"${String(active.index + 2)}\"] > [data-col=\"${col}\"]`;\n const cell = this.renderRoot.querySelector<HTMLElement>(selector);\n if (!cell) return;\n cell.scrollIntoView({ block: 'nearest', inline: 'nearest' });\n cell.focus({ preventScroll: true });\n }\n\n /**\n * Keeps the active cell valid after columns or rows change: on the same row id\n * when it still exists (it may have moved), else at the same index, clamped.\n * Defaults to the first header. If its row went away while the grid had focus,\n * focus follows to the replacement.\n */\n #reconcileActive(model: TableModel<T, CellContent>): void {\n const columns = model.columns;\n const first = columns[0];\n if (!first) {\n this.#active = undefined;\n return;\n }\n const prev = this.#active ?? { index: -1, rowId: undefined, col: first.id };\n const col = columns.some((c) => c.id === prev.col) ? prev.col : first.id;\n let { index, rowId } = prev;\n if (rowId !== undefined) {\n const found = model.indexOf(rowId);\n if (found === undefined) {\n index = Math.min(index, model.rowCount - 1);\n rowId = model.rowAt(index)?.id;\n if (this.matches(':focus-within')) this.#focusPending = true;\n } else {\n index = found;\n }\n }\n if (index !== prev.index || rowId !== prev.rowId || col !== prev.col || !this.#active) {\n this.#active = { index, rowId, col };\n }\n }\n\n /**\n * The width a resize starts from: the latest requested width (key presses can\n * come faster than renders), else the model's fixed width, else the rendered\n * width of a flex column.\n */\n #currentWidth(columnId: string, cell: HTMLElement): number {\n const sized = this.#sizing.value[columnId];\n if (sized !== undefined) return sized;\n const view = this.#table.model.columns.find((c) => c.id === columnId);\n return view && view.flex === undefined ? view.width : cell.getBoundingClientRect().width;\n }\n\n #direction(): 1 | -1 {\n return getComputedStyle(this).direction === 'rtl' ? -1 : 1;\n }\n\n /** Sets one column's width (clamped by core), through the controlled/uncontrolled rules. */\n #requestResize(columnId: string, width: number): void {\n const next = this.#table.model.nextSizing(columnId, width);\n const target = next?.[columnId];\n if (!next || target === undefined || target === this.#sizing.value[columnId]) return;\n const old = this.#sizing.value;\n const { value, applied } = this.#sizing.request(next);\n const detail = { columnId, width: target, sizing: value };\n if (applied) {\n this.#appliedResize = detail;\n this.requestUpdate('columnSizing', old);\n } else {\n fire(this, COLUMN_RESIZE, detail);\n }\n }\n\n /** asc → desc → unsorted, through the controlled/uncontrolled rules. */\n #requestSort(columnId: string): void {\n const next = this.#table.model.nextSorting(columnId);\n if (!next) return;\n const old = this.#sorting.value;\n const { value, applied } = this.#sorting.request(next);\n if (applied) {\n this.#appliedSort = value;\n this.requestUpdate('sorting', old);\n } else {\n fire(this, SORT_CHANGE, { sorting: value });\n }\n }\n\n #observeProbe(): void {\n const probe = this.renderRoot.querySelector('.probe');\n if (!probe) return;\n this.#probeObserver ??= new ResizeObserver(() => {\n this.#measureRowHeight();\n });\n this.#probeObserver.observe(probe);\n }\n\n /** Reads the resolved row height, so themes and density change the virtualizer too. */\n #measureRowHeight(): void {\n const probe = this.renderRoot.querySelector('.probe');\n const px = probe?.getBoundingClientRect().height ?? 0;\n if (px > 0 && Math.abs(px - this.#rowPx) > 0.01) {\n this.#rowPx = px;\n this.requestUpdate();\n }\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'argus-table': ArgusTable;\n }\n}\n"],"ignoreList":[0,1,2,3,4,5,6,7,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,52,53,54,55,56,57,60,61],"mappings":"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"}
|