{"version":3,"sources":["../src/components/DataTable.tsx","#style-inject:#style-inject","../src/DataTable.css","../src/context/StylesContext.ts","../src/components/Table.tsx","../src/components/TableHeader.tsx","../src/components/TableSubheader.tsx","../src/components/ResponsiveWrapper.tsx","../src/components/TableWrapper.tsx","../src/icons/Dropdown.tsx","../src/components/Select.tsx","../src/types.ts","../src/constants.ts","../src/util.ts","../src/hooks/useWindowSize.ts","../src/hooks/useRTL.ts","../src/icons/FirstPage.tsx","../src/icons/LastPage.tsx","../src/icons/Left.tsx","../src/icons/Right.tsx","../src/icons/ExpanderCollapsedIcon.tsx","../src/icons/ExpanderExpandedIcon.tsx","../src/defaultProps.tsx","../src/components/Pagination.tsx","../src/hooks/useIsomorphicLayoutEffect.ts","../src/components/TableHead.tsx","../src/components/TableHeadRow.tsx","../src/components/Cell.tsx","../src/icons/NativeSortIcon.tsx","../src/hooks/useColumnFilter.ts","../src/components/ColumnFilter.tsx","../src/components/TableCol.tsx","../src/components/Checkbox.tsx","../src/context/HeadContext.tsx","../src/components/TableColCheckbox.tsx","../src/components/TableColExpander.tsx","../src/components/RightPinSpacer.tsx","../src/components/dataTableHeadHelpers.tsx","../src/components/DataTableHead.tsx","../src/components/TableBody.tsx","../src/context/RowContext.tsx","../src/components/TableCell.tsx","../src/components/TableCellCheckbox.tsx","../src/components/ExpanderButton.tsx","../src/components/TableCellExpander.tsx","../src/components/ExpanderRow.tsx","../src/components/TableRow.tsx","../src/components/NoDataWrapper.tsx","../src/components/DataTableBody.tsx","../src/components/TablePaginationFooter.tsx","../src/components/TableFooter.tsx","../src/components/PinnedScrollbar.tsx","../src/styles.ts","../src/themes/base.ts","../src/themes/default.ts","../src/themes/material.ts","../src/themes/rounded.ts","../src/themes/catppuccin.ts","../src/themes/crisp.ts","../src/themes/index.ts","../src/hooks/useDidUpdateEffect.ts","../src/hooks/useColumns.ts","../src/tableReducer.ts","../src/hooks/useTableState.ts","../src/hooks/useTableData.ts","../src/hooks/useColumnResize.ts","../src/hooks/useRowContextValue.ts","../src/hooks/useHeadContextValue.ts","../src/hooks/useColorMode.ts","../src/hooks/useColumnVisibility.ts","../src/hooks/useTableExport.ts","../src/index.ts"],"names":["styleInject","css","insertAt","head","style","StylesContext","Ot","useStyles","Table","_a","_b","disabled","className","rest","__objRest","customStyles","Vr","__spreadValues","Header","title","actions","pt","alignClass","Subheader","align","wrapContent","children","$r","ResponsiveWrapper","Ht","ref","$responsive","$fixedHeader","$fixedHeaderScrollHeight","$hiddenScrollbar","ResponsiveWrapper_default","Wrapper","Ur","DropdownIcon","React","Dropdown_default","Select","defaultValue","onChange","Mt","SortOrder","STOP_PROP_TAG","SYSTEM_COL_WIDTH","Direction","Alignment","Media","isPlainObject","val","mergeDeep","target","source","output","key","srcVal","tgtVal","prop","obj","isEmpty","field","sort","rows","selector","direction","sortFn","a","b","aValue","bValue","multiSort","sortColumns","row","index","column","sortDirection","flip","result","getProperty","format","rowIndex","insertItem","array","item","removeItem","keyField","newArray","outerField","decorateColumns","columns","decoratedColumn","__spreadProps","getSortDirection","ascDirection","handleFunctionProps","object","args","newObject","value","getNumberOfPages","rowCount","rowsPerPage","recalculatePage","prevPage","nextPage","noop","getConditionalStyle","conditionalRowStyles","baseClassNames","rowStyle","classNames","crs","isRowSelected","selectedRows","r","isOdd","num","findColumnIndexById","id","c","equalizeId","EMPTY_PINNED_OFFSETS","resolveColumnWidth","col","columnWidths","raw","n","resolveSystemColWidth","root","getPinnedOffsets","selectableRows","expandableRows","expandableRowsHideExpander","visible","systemWidth","baseLeft","left","leftAcc","right","rightAcc","getPinnedTotalWidths","getPinnedCellMeta","pinnedOffsets","offsets","pinnedLeft","pinnedRight","leftValues","rightValues","maxLeft","maxRight","isLastLeftPin","isFirstRightPin","normalizePins","cols","pinZoneMap","i","zone","_removed","leftCount","rightCount","useWindowSize","isClient","getSize","windowSize","setWindowSize","Bt","handleResize","useWindowSize_default","useRTL","isRTL","setIsRTL","zt","canUse","bodyRTL","htmlTRL","hasRTL","useRTL_default","FirstPage","FirstPage_default","LastPage","LastPage_default","Left","Left_default","Right","Right_default","ExpanderCollapsedIcon","ExpanderCollapsedIcon_default","ExpanderExpandedIcon","ExpanderExpandedIcon_default","DEFAULT_PAGINATION_ICONS","DEFAULT_EXPANDABLE_ICON","defaultProps","defaultComponentOptions","Pagination","currentPage","paginationRowsPerPageOptions","paginationIcons","paginationComponentOptions","localization","onChangeRowsPerPage","onChangePage","_c","_d","_e","_f","_g","_h","_i","_j","shouldShow","numPages","lastIndex","firstIndex","disabledLesser","disabledGreater","options","range","icons","handlePrevious","re","handleNext","handleFirst","handleLast","handleRowsPerPage","e","selectOptions","select","btnClass","rtl","Pagination_default","useIsomorphicLayoutEffect","Wt","useIsomorphicLayoutEffect_default","Head","yn","HeadRow","Vt","$dense","TableHeadRow_default","CellBase","$headCell","$noPadding","headStyle","cellStyle","baseClass","So","buildCellStyle","props","button","grow","maxWidth","minWidth","width","center","compact","buildHideClass","hide","CellExtended","allowOverflow","computedStyle","hideClass","NativeSortIcon","sortActive","NativeSortIcon_default","emptyFilterState","filterType","isConditionActive","condition","isFilterActive","filter","applyCondition","cellValue","operator","value2","v1","v2","d1","d2","lc","lv","rowMatchesFilter","r1","r2","useColumnFilter","controlledFilterValues","onFilterChangeProp","internalFilterValues","setInternalFilterValues","et","filterValues","handleFilterChange","columnId","prev","activeFilters","v","filteredData","data","colId","DEFAULT_TEXT_OPERATORS","DEFAULT_NUMBER_OPERATORS","DEFAULT_DATE_OPERATORS","operatorsFor","overrides","base","op","defaultOperator","emptyCondition","ConditionRow","onRemove","operators","selected","o","inputType","B","ColumnFilter","filterValue","onFilterChange","open","setOpen","panelPos","setPanelPos","pending","setPending","containerRef","buttonRef","prevApplied","panelRef","firstFocusable","handleClick","handleKeyDown","isActive","handleApply","handleClear","empty","handleCondition1Change","next","handleCondition2Change","handleAddCondition","handleRemoveCondition2","handleLogicChange","logic","rect","panelMinWidth","fitsRight","TableCol","draggingColumnId","sortMulti","defaultSortDirection","sortIcon","sortServer","pagination","paginationServer","persistSelectedOnSort","selectableRowsVisibleOnly","filterLocalization","onSort","onDragStart","onDragOver","onDragEnd","onDragEnter","onDragLeave","resizedWidth","onResizeStart","gridStyle","showTooltip","setShowTooltip","de","columnRef","handleSortChange","additive","event","sortIndex","s","sortEntry","columnSortDirection","renderNativeSortIcon","renderCustomSortIcon","renderSortPriority","disableSort","tabIndex","nativeSortIconLeft","nativeSortIconRight","customSortIconLeft","customSortIconRight","isDragging","pinMeta","pinnedStyle","pinnedClass","handleDragStart","ghost","widthStyle","areColPropsEqual","prevProps","nextProps","prevIdx","nextIdx","prevMulti","nextMulti","prevIsDragging","nextIsDragging","prevLeft","nextLeft","prevRight","nextRight","prevLeftKeys","nextLeftKeys","prevRightKeys","nextRightKeys","pg","ng","TableCol_default","defaultComponentName","Checkbox","name","component","componentOptions","indeterminate","checked","onClick","setCheckboxRef","checkbox","resolvedComponentOptions","Xe","cls","Checkbox_default","HeadContext","Kt","useHeadContext","ctx","ColumnCheckbox","allSelected","visibleRows","selectableRowsComponent","selectableRowsComponentProps","selectableRowDisabled","mergeSelections","onSelectAllRows","isDisabled","handleSelectAll","ko","TableColCheckbox_default","ColumnExpander","On","TableColExpander_default","RightPinSpacer","Hn","buildGridTemplateColumns","visibleColumns","prefixColCount","tracks","resized","buildGroupHeaderCells","columnGroups","ungroupedIds","groupColSpans","groupDragProps","cells","colIdx","group","span","gridColStart","gridColEnd","groupKey","Do","DataTableHead","showSelectAll","progressPending","sortedData","fixedHeader","dense","draggingGroupKey","resizable","onGroupDragStart","onGroupDragEnter","onGroupDragOver","onGroupDragEnd","hasGroups","Z","savedPositions","isMounted","columnOrder","groupOrder","g","container","reducedMotion","animate","tryFlip","el","newLeft","delta","onEnd","positions","mounted","map","covered","colProps","firstRightPinnedId","gridTemplateColumns","expanderGridCol","visIdx","gridCol","isUngrouped","_skip","DataTableHead_default","Body","Jt","TableBody_default","RowContext","Yt","useRowContext","Cell","dataTag","conditionalStyle","editor","K","editing","setEditing","editValue","setEditValue","editError","setEditError","inputRef","seedValue","startEdit","cancelEdit","commitEdit","handleInputKeyDown","editableClass","editingClass","errorClass","handleCheckboxCommit","current","opt","areCellPropsEqual","TableCell_default","TableCellCheckbox","selectableRowsSingle","onSelectedRow","onSelectedRange","visibleRowsRef","lastSelectedKeyRef","selectableRowsRange","rowKey","handleOnRowSelected","native","shiftKey","anchorKey","anchorIndex","targetIndex","from","to","rangeRows","disabledRows","Ho","TableCellCheckbox_default","ExpanderButton","expanded","expandableIcon","expandableRowsOptions","onToggled","icon","handleToggle","Bn","ExpanderButton_default","CellExpander","Mo","TableCellExpander_default","ExpanderRow","ExpanderComponent","expanderComponentProps","extendedRowStyle","extendedClassNames","closing","dt","ExpanderRow_default","Row","defaultExpanded","defaultExpanderDisabled","isNew","newRowIndex","expandableRowsComponent","expandableRowsComponentProps","expandOnRowClicked","expandOnRowDoubleClicked","expandableInheritConditionalStyles","highlightOnHover","onRowClicked","onRowDoubleClicked","onRowMiddleClicked","onRowMouseEnter","onRowMouseLeave","onRowExpandToggled","pointerOnHover","selectableRowsHighlight","striped","expanderState","expanderDispatch","q","state","action","expanderMounted","isClosing","animateRows","EXPAND_DURATION","closeTimerRef","openExpander","closeExpander","handleExpanded","showPointer","handleRowClick","handleRowDoubleClick","handleRowAuxClick","handleRowMouseEnter","handleRowMouseLeave","rowKeyField","highlightSelected","inheritStyles","isStriped","shouldAnimate","areRowPropsEqual","TableRow_default","NoDataWrapper","Vn","SKELETON_ROW_COUNT","SkeletonCell","Q","SkeletonRow","colCount","_","STAGGER_CAP","DataTableBody","tableRows","isBusy","columnCount","noDataComponent","progressComponent","expandableRowExpanded","expandableRowDisabled","bodyRef","prevRowTopsRef","hasData","selectedIdSet","mountDispatch","seenIdsSet","seenIdsRef","forceUpdate","prevTops","hasUnseenRows","newTop","prevTop","rowMeta","newRowSeq","meta","DataTableBody_default","TablePaginationFooter","position","border","ht","TablePaginationFooter_default","resolveFooter","footer","TableFooter","FooterComponentProp","fe","TableFooter_default","PinnedScrollbar","scrollRef","leftInset","rightInset","scrollContainerId","ne","trackRef","thumbRef","thumbWidth","setThumbWidth","thumbLeft","setThumbLeft","setVisible","scrollPercent","setScrollPercent","dragStartX","dragStartScroll","update","scrollWidth","clientWidth","scrollLeft","canScroll","track","trackWidth","ratio","tw","maxThumbLeft","maxScroll","ro","handleThumbMouseDown","onMove","ev","scrollDelta","onUp","handleThumbKeyDown","step","handleTrackClick","thumb","clickX","createStyles","defaultTheme","defaultDarkMode","defaultColorTheme","materialTheme","roundedTheme","catppuccinTheme","crispTheme","defaultThemes","themeToVars","theme","_k","_l","vars","createTheme","nameOrOverrides","overridesOrInherit","inherit","inheritName","isCSSVarMap","keys","k","resolveThemeObject","resolveTheme","resolvedMode","themeObj","effective","useFirstUpdate","fn","inputs","firstUpdate","Zt","useDidUpdateEffect_default","swapGroupBlocks","srcIds","tgtIds","srcCols","tgtCols","insertedSrc","insertedTgt","useColumns","onColumnOrderChange","onColumnGroupOrderChange","defaultSortFieldId","defaultSortAsc","tableColumns","setTableColumns","ie","tableGroups","setTableGroups","setDraggingColumn","setDraggingGroupKey","sourceColumnId","sourceGroupKey","isDraggingGroup","attributes","handleDragEnter","cid","srcIdx","tgtIdx","moved","total","reorderedCols","handleDragOver","handleDragLeave","handleDragEnd","handleGroupDragStart","iconSpan","labelSpan","handleGroupDragEnter","srcGroup","tgtGroup","newGroups","handleGroupDragOver","handleGroupDragEnd","defaultSortColumn","useColumns_default","tableReducer","toggleOnSelectedRowsChange","allChecked","selections","isSelected","singleSelect","disabledSet","eligible","totalRows","selectedRowsFlag","hasDefault","selectedColumn","clearSelectedOnSort","firstDirection","secondDirection","existingIndex","nextSortColumns","primary","page","visibleOnly","persistSelectedOnPageChange","clearSelectedOnPage","useTableState","paginationDefaultPage","paginationPerPage","paginationServerOptions","paginationTotalRows","selectableRowSelected","clearSelectedRows","paginationPage","paginationResetDefaultPage","controlledSelectedRows","onSelectedRowsChange","hasDefaultSort","tableState","dispatch","me","handleClearSelectedRows","handleClearSort","handleSort","handleSelectAllRows","handleSelectedRow","handleSelectedRange","handleChangePage","handleChangeRowsPerPage","newRowsPerPage","tableRowsLength","updatedPage","recalculatedPage","preSelectedRows","useTableData","sortFunction","Be","customSortFunction","sortCallbackRef","prevSortRef","useColumnResize","initialColumnWidths","onColumnResize","setColumnWidths","rt","resizeRef","onColumnResizeRef","handleResizeStart","headerCell","startWidth","onMouseMove","mv","newWidth","onMouseUp","w","useRowContextValue","oa","useHeadContextValue","ra","detectDark","stored","useColorMode","mode","systemResolved","setSystemResolved","useState","useEffect","mq","obs","DataTableInner","selectableRowsNoSelectAll","selectableRowsComponentProp","selectableRowsComponentPropsProp","paginationPosition","paginationComponent","responsive","persistTableHead","noTableHead","noHeader","fixedHeaderScrollHeight","subHeader","subHeaderAlign","subHeaderWrap","onScroll","colorMode","localizationProp","columnFilterOptions","columnSeparator","headerSeparator","footerComponent","showFooter","ariaLabel","sortIconProp","expandableIconProp","paginationIconsProp","tableId","startTransition","effectiveColumns","_p","warnedPinGroupsRef","pinnedTotalWidths","hasPinnedColumns","scrollWrapperRef","dispatchSort","handleChangePageState","handleChangeRowsPerPageState","snapshot","filteredSortedData","filteredTableRows","enabledPagination","tableStyles","cssVars","wrapperProps","showTableHead","showHeader","hasColumnFooter","showFooterRow","rowContextValue","headContextValue","effectiveColumnSep","effectiveHeaderSep","sepClass","headSepClass","DataTable","DataTable_default","useColumnVisibility","initialColumns","hiddenIds","setHiddenIds","Oe","hidden","entries","toggleColumn","isVisible","showAll","hideAll","escapeCsvCell","headerLabel","cellToString","useTableExport","valueSource","headerOverrides","exportColumns","Ue","byId","buildRows","node","toCSV","header","body","toJSON","headers","objects","download","filename","content","mime","blob","url","copy","__async","index_default"],"mappings":"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","file":"index.mjs","sourcesContent":["import * as React from 'react';\nimport Table from './Table';\nimport Header from './TableHeader';\nimport Subheader from './TableSubheader';\nimport ResponsiveWrapper from './ResponsiveWrapper';\nimport Wrapper from './TableWrapper';\nimport NativePagination from './Pagination';\nimport DataTableHead from './DataTableHead';\nimport DataTableBody from './DataTableBody';\nimport TablePaginationFooter from './TablePaginationFooter';\nimport TableFooter from './TableFooter';\nimport { getNumberOfPages, recalculatePage, getPinnedOffsets, getPinnedTotalWidths } from '../util';\nimport PinnedScrollbar from './PinnedScrollbar';\nimport { defaultProps, DEFAULT_EXPANDABLE_ICON, DEFAULT_PAGINATION_ICONS } from '../defaultProps';\nimport { createStyles } from '../styles';\nimport { resolveTheme, resolveThemeObject } from '../themes';\nimport type { TableProps, DataTableHandle } from '../types';\nimport { StylesContext } from '../context/StylesContext';\nimport { RowContext } from '../context/RowContext';\nimport { HeadContext } from '../context/HeadContext';\nimport useColumns from '../hooks/useColumns';\nimport useTableState from '../hooks/useTableState';\nimport useTableData from '../hooks/useTableData';\nimport useColumnFilter from '../hooks/useColumnFilter';\nimport useColumnResize from '../hooks/useColumnResize';\nimport useRowContextValue from '../hooks/useRowContextValue';\nimport useHeadContextValue from '../hooks/useHeadContextValue';\nimport useIsomorphicLayoutEffect from '../hooks/useIsomorphicLayoutEffect';\nimport { useColorMode } from '../hooks/useColorMode';\n\nfunction DataTableInner<T>(props: TableProps<T>, ref: React.ForwardedRef<DataTableHandle>): JSX.Element {\n\tconst {\n\t\tdata = defaultProps.data,\n\t\tcolumns = defaultProps.columns,\n\t\ttitle = defaultProps.title,\n\t\tactions = defaultProps.actions,\n\t\tkeyField = defaultProps.keyField,\n\t\tstriped = defaultProps.striped,\n\t\thighlightOnHover = defaultProps.highlightOnHover,\n\t\tpointerOnHover = defaultProps.pointerOnHover,\n\t\tdense = defaultProps.dense,\n\t\tselectableRows = defaultProps.selectableRows,\n\t\tselectableRowsSingle = defaultProps.selectableRowsSingle,\n\t\tselectableRowsHighlight = defaultProps.selectableRowsHighlight,\n\t\tselectableRowsNoSelectAll = defaultProps.selectableRowsNoSelectAll,\n\t\tselectableRowsVisibleOnly = defaultProps.selectableRowsVisibleOnly,\n\t\tselectableRowsRange = true,\n\t\tselectableRowSelected = defaultProps.selectableRowSelected,\n\t\tselectableRowDisabled = defaultProps.selectableRowDisabled,\n\t\tselectableRowsComponent: selectableRowsComponentProp,\n\t\tselectableRowsComponentProps: selectableRowsComponentPropsProp,\n\t\tselectedRows: controlledSelectedRows,\n\t\tonRowExpandToggled = defaultProps.onRowExpandToggled,\n\t\tonSelectedRowsChange = defaultProps.onSelectedRowsChange,\n\t\tonChangeRowsPerPage = defaultProps.onChangeRowsPerPage,\n\t\tonChangePage = defaultProps.onChangePage,\n\t\tpaginationServer = defaultProps.paginationServer,\n\t\tpaginationServerOptions = defaultProps.paginationServerOptions,\n\t\tpaginationTotalRows = defaultProps.paginationTotalRows,\n\t\tpaginationDefaultPage = defaultProps.paginationDefaultPage,\n\t\tpaginationPage,\n\t\tpaginationResetDefaultPage = defaultProps.paginationResetDefaultPage,\n\t\tpaginationPerPage = defaultProps.paginationPerPage,\n\t\tpaginationPosition = defaultProps.paginationPosition,\n\t\tpaginationRowsPerPageOptions = defaultProps.paginationRowsPerPageOptions,\n\t\tpaginationComponent = defaultProps.paginationComponent,\n\t\tpaginationComponentOptions = defaultProps.paginationComponentOptions,\n\t\tresponsive = defaultProps.responsive,\n\t\tprogressPending = defaultProps.progressPending,\n\t\tprogressComponent = defaultProps.progressComponent,\n\t\tpersistTableHead = defaultProps.persistTableHead,\n\t\tnoDataComponent = defaultProps.noDataComponent,\n\t\tdisabled = defaultProps.disabled,\n\t\tnoTableHead = defaultProps.noTableHead,\n\t\tnoHeader = defaultProps.noHeader,\n\t\tfixedHeader = defaultProps.fixedHeader,\n\t\tfixedHeaderScrollHeight = defaultProps.fixedHeaderScrollHeight,\n\t\tpagination = defaultProps.pagination,\n\t\tsubHeader = defaultProps.subHeader,\n\t\tsubHeaderAlign = defaultProps.subHeaderAlign,\n\t\tsubHeaderWrap = defaultProps.subHeaderWrap,\n\t\texpandableRows = defaultProps.expandableRows,\n\t\tonRowClicked = defaultProps.onRowClicked,\n\t\tonRowDoubleClicked = defaultProps.onRowDoubleClicked,\n\t\tonRowMiddleClicked = defaultProps.onRowMiddleClicked,\n\t\tonRowMouseEnter = defaultProps.onRowMouseEnter,\n\t\tonRowMouseLeave = defaultProps.onRowMouseLeave,\n\t\tonScroll,\n\t\tonSort = defaultProps.onSort,\n\t\tsortFunction = defaultProps.sortFunction,\n\t\tsortServer = defaultProps.sortServer,\n\t\tsortMulti = defaultProps.sortMulti,\n\t\texpandableRowsComponent = defaultProps.expandableRowsComponent,\n\t\texpandableRowsComponentProps = defaultProps.expandableRowsComponentProps,\n\t\texpandableRowDisabled = defaultProps.expandableRowDisabled,\n\t\texpandableRowsHideExpander = defaultProps.expandableRowsHideExpander,\n\t\texpandOnRowClicked = defaultProps.expandOnRowClicked,\n\t\texpandOnRowDoubleClicked = defaultProps.expandOnRowDoubleClicked,\n\t\texpandableRowExpanded = defaultProps.expandableRowExpanded,\n\t\texpandableInheritConditionalStyles = defaultProps.expandableInheritConditionalStyles,\n\t\tdefaultSortFieldId = defaultProps.defaultSortFieldId,\n\t\tdefaultSortAsc = defaultProps.defaultSortAsc,\n\t\tconditionalRowStyles = defaultProps.conditionalRowStyles,\n\t\ttheme = defaultProps.theme,\n\t\tcolorMode = defaultProps.colorMode,\n\t\tcustomStyles = defaultProps.customStyles,\n\t\tdirection = defaultProps.direction,\n\t\tonColumnOrderChange = defaultProps.onColumnOrderChange,\n\t\tonColumnGroupOrderChange,\n\t\tcolumnGroups,\n\t\tfilterValues: controlledFilterValues,\n\t\tonFilterChange: onFilterChangeProp,\n\t\tlocalization: localizationProp = {},\n\t\tcolumnFilterOptions,\n\t\texpandableRowsOptions,\n\t\tresizable = false,\n\t\tinitialColumnWidths,\n\t\tonColumnResize,\n\t\tanimateRows = false,\n\t\tcolumnSeparator,\n\t\theaderSeparator,\n\t\tfooterComponent,\n\t\tshowFooter,\n\t\tclassName,\n\t\tariaLabel,\n\t} = props;\n\n\tconst localization = {\n\t\t...localizationProp,\n\t\tfilter: { ...columnFilterOptions, ...localizationProp.filter },\n\t\texpandable: { ...expandableRowsOptions, ...localizationProp.expandable },\n\t};\n\n\t// Intentionally reading @deprecated props for backward compat; cast prevents TS hint 6385 here\n\tconst {\n\t\tsortIcon: sortIconProp,\n\t\texpandableIcon: expandableIconProp,\n\t\tpaginationIcons: paginationIconsProp,\n\t\tclearSelectedRows = defaultProps.clearSelectedRows,\n\t} = props;\n\n\t// ── Icon resolution: theme.icons → prop override ─────────────────────────\n\tconst themeObj = React.useMemo(() => resolveThemeObject(theme), [theme]);\n\tconst sortIcon = sortIconProp ?? themeObj.icons?.sort ?? null;\n\tconst expandableIcon = { ...DEFAULT_EXPANDABLE_ICON, ...themeObj.icons?.expandable, ...expandableIconProp };\n\tconst paginationIcons = { ...DEFAULT_PAGINATION_ICONS, ...themeObj.icons?.pagination, ...paginationIconsProp };\n\tconst selectableRowsComponent = selectableRowsComponentProp ?? defaultProps.selectableRowsComponent;\n\tconst selectableRowsComponentProps = selectableRowsComponentPropsProp ?? defaultProps.selectableRowsComponentProps;\n\n\tReact.useEffect(() => {\n\t\tif (selectableRows && data.length > 0) {\n\t\t\tconst sample = data[0] as Record<string, unknown>;\n\t\t\tif (sample[keyField] === undefined) {\n\t\t\t\tconsole.warn(\n\t\t\t\t\t`DataTable: keyField \"${keyField}\" returned undefined for your data. ` +\n\t\t\t\t\t\t`Row selection requires a stable unique identifier — set the keyField prop ` +\n\t\t\t\t\t\t`to the unique identifier field in your row data.`,\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, []);\n\n\tconst tableId = React.useId();\n\tconst [, startTransition] = React.useTransition();\n\tconst { filterValues, handleFilterChange, filteredData } = useColumnFilter(\n\t\tcolumns,\n\t\tcontrolledFilterValues,\n\t\tonFilterChangeProp,\n\t);\n\n\t// ── Column resize state ────────────────────────────────────────────────────\n\tconst { columnWidths, handleResizeStart } = useColumnResize({ initialColumnWidths, onColumnResize });\n\n\tconst {\n\t\ttableColumns,\n\t\ttableGroups,\n\t\tdraggingColumnId,\n\t\tdraggingGroupKey,\n\t\thandleDragStart,\n\t\thandleDragEnter,\n\t\thandleDragOver,\n\t\thandleDragLeave,\n\t\thandleDragEnd,\n\t\thandleGroupDragStart,\n\t\thandleGroupDragEnter,\n\t\thandleGroupDragOver,\n\t\thandleGroupDragEnd,\n\t\tdefaultSortDirection,\n\t\tdefaultSortColumn,\n\t} = useColumns(\n\t\tcolumns,\n\t\tonColumnOrderChange,\n\t\tonColumnGroupOrderChange,\n\t\tcolumnGroups,\n\t\tdefaultSortFieldId,\n\t\tdefaultSortAsc,\n\t);\n\n\t// Pinning is incompatible with CSS-grid group headers — strip it when groups are active\n\tconst hasGroups = tableGroups.length > 0 || (columnGroups != null && columnGroups.length > 0);\n\tconst effectiveColumns = React.useMemo(() => {\n\t\tif (!hasGroups) return tableColumns;\n\t\treturn tableColumns.map(c => {\n\t\t\tif (!c.pinned) return c;\n\t\t\tconst { pinned: _p, ...rest } = c;\n\t\t\treturn rest as typeof c;\n\t\t});\n\t}, [hasGroups, tableColumns]);\n\n\tconst warnedPinGroupsRef = React.useRef(false);\n\tReact.useEffect(() => {\n\t\tif (!hasGroups || warnedPinGroupsRef.current) return;\n\t\tif (tableColumns.some(c => c.pinned)) {\n\t\t\twarnedPinGroupsRef.current = true;\n\t\t\tconsole.warn(\n\t\t\t\t'DataTable: column pinning is not supported alongside columnGroups. ' +\n\t\t\t\t\t'`pinned` has been stripped from affected columns. ' +\n\t\t\t\t\t'Remove `columnGroups` or remove `pinned` from your column definitions to use pinning.',\n\t\t\t);\n\t\t}\n\t}, [hasGroups, tableColumns]);\n\n\tconst pinnedOffsets = React.useMemo(\n\t\t() => getPinnedOffsets(effectiveColumns, columnWidths, selectableRows, expandableRows, expandableRowsHideExpander),\n\t\t[effectiveColumns, columnWidths, selectableRows, expandableRows, expandableRowsHideExpander],\n\t);\n\n\tconst pinnedTotalWidths = React.useMemo(\n\t\t() =>\n\t\t\tgetPinnedTotalWidths(effectiveColumns, columnWidths, selectableRows, expandableRows, expandableRowsHideExpander),\n\t\t[effectiveColumns, columnWidths, selectableRows, expandableRows, expandableRowsHideExpander],\n\t);\n\n\tconst hasPinnedColumns = pinnedTotalWidths.left > 0 || pinnedTotalWidths.right > 0;\n\tconst scrollWrapperRef = React.useRef<HTMLDivElement>(null);\n\n\tconst {\n\t\ttableState,\n\t\thandleSort: dispatchSort,\n\t\thandleSelectAllRows,\n\t\thandleSelectedRow,\n\t\thandleSelectedRange,\n\t\thandleChangePage: handleChangePageState,\n\t\thandleChangeRowsPerPage: handleChangeRowsPerPageState,\n\t\thandleClearSelectedRows,\n\t\thandleClearSort,\n\t} = useTableState({\n\t\tdata,\n\t\tkeyField,\n\t\tdefaultSortColumn,\n\t\tdefaultSortDirection,\n\t\tpaginationDefaultPage,\n\t\tpaginationPerPage,\n\t\tpaginationServer,\n\t\tpaginationServerOptions,\n\t\tpaginationTotalRows,\n\t\tpagination,\n\t\tselectableRowsSingle,\n\t\tselectableRowsVisibleOnly,\n\t\tselectableRowSelected,\n\t\tclearSelectedRows,\n\t\tpaginationPage,\n\t\tpaginationResetDefaultPage,\n\t\tcontrolledSelectedRows,\n\t\tonSelectedRowsChange,\n\t\tonSort,\n\t\tonChangePage,\n\t\tonChangeRowsPerPage,\n\t});\n\n\t// Refs for Shift-click range selection: visibleRowsRef holds the current visible-rows\n\t// snapshot so the row-checkbox can compute a contiguous slice without prop-drilling;\n\t// lastSelectedKeyRef is the anchor row (set on the most recent single toggle).\n\tconst visibleRowsRef = React.useRef<T[]>([]);\n\tconst lastSelectedKeyRef = React.useRef<string | number | null>(null);\n\n\tReact.useImperativeHandle(ref, () => ({ clearSelectedRows: handleClearSelectedRows, clearSort: handleClearSort }), [\n\t\thandleClearSelectedRows,\n\t\thandleClearSort,\n\t]);\n\n\t// Snapshot row Y-positions synchronously before dispatching sort, so\n\t// DataTableBody can FLIP rows from their old positions to the new ones.\n\tconst bodyRef = React.useRef<HTMLDivElement>(null);\n\tconst prevRowTopsRef = React.useRef<Map<string | number, number>>(new Map());\n\n\tconst handleSort = React.useCallback(\n\t\t(action: Parameters<typeof dispatchSort>[0]) => {\n\t\t\tif (bodyRef.current) {\n\t\t\t\tconst snapshot = new Map<string | number, number>();\n\t\t\t\tbodyRef.current.querySelectorAll<HTMLElement>('[id^=\"row-\"]').forEach(el => {\n\t\t\t\t\tsnapshot.set(el.id.slice(4), el.getBoundingClientRect().top);\n\t\t\t\t});\n\t\t\t\tprevRowTopsRef.current = snapshot;\n\t\t\t}\n\t\t\tstartTransition(() => dispatchSort(action));\n\t\t},\n\t\t[dispatchSort],\n\t);\n\n\tconst { rowsPerPage, currentPage, selectedRows, allSelected, selectedColumn, sortDirection, sortColumns } =\n\t\ttableState;\n\n\tconst { sortedData, tableRows } = useTableData({\n\t\tdata,\n\t\tcolumns,\n\t\tselectedColumn,\n\t\tsortDirection,\n\t\tsortColumns,\n\t\tcurrentPage,\n\t\trowsPerPage,\n\t\tpagination,\n\t\tpaginationServer,\n\t\tsortServer,\n\t\tsortFunction,\n\t\tonSort,\n\t});\n\n\t// ── Client-side column filtering ───────────────────────────────────────────\n\tconst filteredSortedData = React.useMemo(() => filteredData(sortedData), [filteredData, sortedData]);\n\tconst filteredTableRows = React.useMemo(() => filteredData(tableRows), [filteredData, tableRows]);\n\n\tconst { persistSelectedOnSort = false, persistSelectedOnPageChange = false } = paginationServerOptions;\n\tconst mergeSelections = !!(paginationServer && (persistSelectedOnPageChange || persistSelectedOnSort));\n\tconst enabledPagination = pagination && !progressPending && data.length > 0;\n\tconst Pagination = paginationComponent || NativePagination;\n\tconst tableStyles = React.useMemo(() => createStyles(customStyles), [customStyles]);\n\tconst resolvedMode = useColorMode(colorMode);\n\tconst cssVars = React.useMemo(() => resolveTheme(theme, resolvedMode), [theme, resolvedMode]);\n\tconst wrapperProps = React.useMemo(() => ({ ...(direction !== 'auto' && { dir: direction }) }), [direction]);\n\tconst isBusy = progressPending;\n\n\tconst handleChangePage = React.useCallback((page: number) => handleChangePageState(page), [handleChangePageState]);\n\tconst handleChangeRowsPerPage = React.useCallback(\n\t\t(newRowsPerPage: number) => handleChangeRowsPerPageState(newRowsPerPage, filteredTableRows.length),\n\t\t[handleChangeRowsPerPageState, filteredTableRows.length],\n\t);\n\n\tconst showTableHead = !noTableHead && (persistTableHead || progressPending || filteredSortedData.length > 0);\n\tconst showHeader = !noHeader && !!(title || actions);\n\n\t// Footer renders when explicitly enabled, when a footerComponent is provided,\n\t// or when at least one visible column declares a `footer`. `showFooter={false}`\n\t// suppresses the row entirely (overrides both column footers and footerComponent).\n\tconst hasColumnFooter = React.useMemo(\n\t\t() => effectiveColumns.some(c => !c.omit && c.footer !== undefined),\n\t\t[effectiveColumns],\n\t);\n\tconst showFooterRow =\n\t\tshowFooter !== false && !progressPending && (showFooter === true || !!footerComponent || hasColumnFooter);\n\n\tif (pagination && !paginationServer && filteredSortedData.length > 0 && filteredTableRows.length === 0) {\n\t\thandleChangePage(recalculatePage(currentPage, getNumberOfPages(filteredSortedData.length, rowsPerPage)));\n\t}\n\n\tconst visibleRows = selectableRowsVisibleOnly ? filteredTableRows : filteredSortedData;\n\tconst showSelectAll = persistSelectedOnPageChange || selectableRowsSingle || selectableRowsNoSelectAll;\n\n\t// Keep the ref pointed at the current visible page rows so Shift-click selection\n\t// computes the slice against what's actually on screen, not the full dataset.\n\t// We mutate in a layout effect so the ref is up-to-date before any click handler\n\t// (which runs after commit) reads from it. Falls back to useEffect on the server\n\t// to avoid the SSR mismatch warning.\n\tuseIsomorphicLayoutEffect(() => {\n\t\tvisibleRowsRef.current = filteredTableRows;\n\t}, [filteredTableRows]);\n\n\tconst rowContextValue = useRowContextValue<T>({\n\t\tkeyField,\n\t\tcolumns: effectiveColumns,\n\t\tdense,\n\t\tstriped,\n\t\thighlightOnHover,\n\t\tpointerOnHover,\n\t\tconditionalRowStyles,\n\t\tselectableRows,\n\t\tselectableRowsComponent,\n\t\tselectableRowsComponentProps,\n\t\tselectableRowsHighlight,\n\t\tselectableRowsSingle,\n\t\tselectableRowDisabled,\n\t\texpandableRows,\n\t\texpandableIcon,\n\t\tlocalization: localization.expandable ?? {},\n\t\texpandableRowsComponent,\n\t\texpandableRowsComponentProps,\n\t\texpandableRowsHideExpander,\n\t\texpandOnRowClicked,\n\t\texpandOnRowDoubleClicked,\n\t\texpandableInheritConditionalStyles,\n\t\tonRowClicked,\n\t\tonRowDoubleClicked,\n\t\tonRowMiddleClicked,\n\t\tonRowMouseEnter,\n\t\tonRowMouseLeave,\n\t\tonRowExpandToggled,\n\t\tonSelectedRow: handleSelectedRow,\n\t\tonSelectedRange: handleSelectedRange,\n\t\tvisibleRowsRef,\n\t\tlastSelectedKeyRef,\n\t\tselectableRowsRange,\n\t\tonDragStart: handleDragStart,\n\t\tonDragOver: handleDragOver,\n\t\tonDragEnd: handleDragEnd,\n\t\tonDragEnter: handleDragEnter,\n\t\tonDragLeave: handleDragLeave,\n\t\tcolumnWidths,\n\t\tpinnedOffsets,\n\t\tanimateRows,\n\t});\n\n\tconst headContextValue = useHeadContextValue<T>({\n\t\tselectedColumn,\n\t\tsortDirection,\n\t\tsortColumns,\n\t\tsortMulti,\n\t\tdefaultSortDirection,\n\t\tsortIcon,\n\t\tsortServer,\n\t\tpagination,\n\t\tpaginationServer,\n\t\tpersistSelectedOnSort,\n\t\tselectableRowsVisibleOnly,\n\t\tfixedHeader,\n\t\tdense,\n\t\tdraggingColumnId,\n\t\tdraggingGroupKey,\n\t\tfilterValues,\n\t\tlocalization: localization.filter ?? {},\n\t\tcolumnWidths,\n\t\tpinnedOffsets,\n\t\tresizable,\n\t\tkeyField,\n\t\tmergeSelections,\n\t\tallSelected,\n\t\tselectedRows,\n\t\tvisibleRows,\n\t\tselectableRowsComponent,\n\t\tselectableRowsComponentProps,\n\t\tselectableRowDisabled,\n\t\tshowSelectAll,\n\t\tprogressPending,\n\t\tsortedData: filteredSortedData,\n\t\tonSelectAllRows: handleSelectAllRows,\n\t\tonSort: handleSort,\n\t\tonFilterChange: handleFilterChange,\n\t\tonResizeStart: resizable ? handleResizeStart : undefined,\n\t\tonDragStart: handleDragStart,\n\t\tonDragOver: handleDragOver,\n\t\tonDragEnd: handleDragEnd,\n\t\tonDragEnter: handleDragEnter,\n\t\tonDragLeave: handleDragLeave,\n\t\tonGroupDragStart: handleGroupDragStart,\n\t\tonGroupDragEnter: handleGroupDragEnter,\n\t\tonGroupDragOver: handleGroupDragOver,\n\t\tonGroupDragEnd: handleGroupDragEnd,\n\t});\n\n\t// Prop wins; if not explicitly passed, fall back to what the theme declares, then built-in defaults.\n\tconst effectiveColumnSep = columnSeparator !== undefined ? columnSeparator : (themeObj.columnSeparator ?? false);\n\tconst effectiveHeaderSep = headerSeparator !== undefined ? headerSeparator : (themeObj.headerSeparator ?? true);\n\tconst sepClass =\n\t\teffectiveColumnSep === 'full' ? 'rdt_colSeparatorFull' : effectiveColumnSep ? 'rdt_colSeparator' : undefined;\n\tconst headSepClass =\n\t\teffectiveHeaderSep === false\n\t\t\t? undefined\n\t\t\t: effectiveHeaderSep === 'full'\n\t\t\t\t? 'rdt_headSeparatorFull'\n\t\t\t\t: 'rdt_headSeparator';\n\n\treturn (\n\t\t<StylesContext.Provider value={tableStyles}>\n\t\t\t<HeadContext.Provider value={headContextValue}>\n\t\t\t\t<RowContext.Provider value={rowContextValue}>\n\t\t\t\t\t<div\n\t\t\t\t\t\tstyle={cssVars as React.CSSProperties}\n\t\t\t\t\t\tclassName={[sepClass, headSepClass].filter(Boolean).join(' ') || undefined}\n\t\t\t\t\t>\n\t\t\t\t\t\t{showHeader && <Header title={title} actions={actions} />}\n\n\t\t\t\t\t\t{subHeader && (\n\t\t\t\t\t\t\t<Subheader align={subHeaderAlign} wrapContent={subHeaderWrap}>\n\t\t\t\t\t\t\t\t{subHeader}\n\t\t\t\t\t\t\t</Subheader>\n\t\t\t\t\t\t)}\n\n\t\t\t\t\t\t{enabledPagination && (paginationPosition === 'top' || paginationPosition === 'both') && (\n\t\t\t\t\t\t\t<TablePaginationFooter\n\t\t\t\t\t\t\t\tPagination={Pagination}\n\t\t\t\t\t\t\t\tonChangePage={handleChangePage}\n\t\t\t\t\t\t\t\tonChangeRowsPerPage={handleChangeRowsPerPage}\n\t\t\t\t\t\t\t\trowCount={paginationTotalRows || filteredSortedData.length}\n\t\t\t\t\t\t\t\tcurrentPage={currentPage}\n\t\t\t\t\t\t\t\trowsPerPage={rowsPerPage}\n\t\t\t\t\t\t\t\tdirection={direction}\n\t\t\t\t\t\t\t\tpaginationRowsPerPageOptions={paginationRowsPerPageOptions}\n\t\t\t\t\t\t\t\tpaginationIcons={paginationIcons}\n\t\t\t\t\t\t\t\tpaginationComponentOptions={paginationComponentOptions}\n\t\t\t\t\t\t\t\tlocalization={localization.pagination}\n\t\t\t\t\t\t\t\tposition=\"top\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t)}\n\n\t\t\t\t\t\t<ResponsiveWrapper\n\t\t\t\t\t\t\tref={scrollWrapperRef}\n\t\t\t\t\t\t\t$responsive={responsive}\n\t\t\t\t\t\t\t$fixedHeader={fixedHeader}\n\t\t\t\t\t\t\t$fixedHeaderScrollHeight={fixedHeaderScrollHeight}\n\t\t\t\t\t\t\t$hiddenScrollbar={hasPinnedColumns}\n\t\t\t\t\t\t\tclassName={className}\n\t\t\t\t\t\t\tonScroll={onScroll}\n\t\t\t\t\t\t\t{...wrapperProps}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<Wrapper>\n\t\t\t\t\t\t\t\t<Table\n\t\t\t\t\t\t\t\t\tid={tableId}\n\t\t\t\t\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t\t\t\t\tclassName=\"rdt_Table\"\n\t\t\t\t\t\t\t\t\trole=\"table\"\n\t\t\t\t\t\t\t\t\taria-busy={isBusy}\n\t\t\t\t\t\t\t\t\t{...(ariaLabel && { 'aria-label': ariaLabel })}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{showTableHead && (\n\t\t\t\t\t\t\t\t\t\t<DataTableHead\n\t\t\t\t\t\t\t\t\t\t\tcolumns={effectiveColumns}\n\t\t\t\t\t\t\t\t\t\t\tcolumnGroups={tableGroups.length ? tableGroups : columnGroups}\n\t\t\t\t\t\t\t\t\t\t\tselectableRows={selectableRows}\n\t\t\t\t\t\t\t\t\t\t\texpandableRows={expandableRows}\n\t\t\t\t\t\t\t\t\t\t\texpandableRowsHideExpander={expandableRowsHideExpander}\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t)}\n\n\t\t\t\t\t\t\t\t\t<DataTableBody\n\t\t\t\t\t\t\t\t\t\ttableRows={filteredTableRows}\n\t\t\t\t\t\t\t\t\t\tsortedData={filteredSortedData}\n\t\t\t\t\t\t\t\t\t\tselectedRows={selectedRows}\n\t\t\t\t\t\t\t\t\t\tkeyField={keyField}\n\t\t\t\t\t\t\t\t\t\tisBusy={isBusy}\n\t\t\t\t\t\t\t\t\t\tcolumnCount={tableColumns.length}\n\t\t\t\t\t\t\t\t\t\tnoDataComponent={noDataComponent}\n\t\t\t\t\t\t\t\t\t\tprogressComponent={progressComponent}\n\t\t\t\t\t\t\t\t\t\texpandableRowExpanded={expandableRowExpanded}\n\t\t\t\t\t\t\t\t\t\texpandableRowDisabled={expandableRowDisabled}\n\t\t\t\t\t\t\t\t\t\tbodyRef={bodyRef}\n\t\t\t\t\t\t\t\t\t\tprevRowTopsRef={prevRowTopsRef}\n\t\t\t\t\t\t\t\t\t/>\n\n\t\t\t\t\t\t\t\t\t{showFooterRow && (\n\t\t\t\t\t\t\t\t\t\t<TableFooter\n\t\t\t\t\t\t\t\t\t\t\tcolumns={effectiveColumns}\n\t\t\t\t\t\t\t\t\t\t\trows={filteredSortedData}\n\t\t\t\t\t\t\t\t\t\t\tselectableRows={selectableRows}\n\t\t\t\t\t\t\t\t\t\t\texpandableRows={expandableRows}\n\t\t\t\t\t\t\t\t\t\t\texpandableRowsHideExpander={expandableRowsHideExpander}\n\t\t\t\t\t\t\t\t\t\t\tfooterComponent={footerComponent}\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t</Table>\n\t\t\t\t\t\t\t</Wrapper>\n\t\t\t\t\t\t</ResponsiveWrapper>\n\n\t\t\t\t\t\t{hasPinnedColumns && responsive && (\n\t\t\t\t\t\t\t<PinnedScrollbar\n\t\t\t\t\t\t\t\tscrollRef={scrollWrapperRef}\n\t\t\t\t\t\t\t\tleftInset={pinnedTotalWidths.left}\n\t\t\t\t\t\t\t\trightInset={pinnedTotalWidths.right}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t)}\n\n\t\t\t\t\t\t{enabledPagination && (paginationPosition === 'bottom' || paginationPosition === 'both') && (\n\t\t\t\t\t\t\t<TablePaginationFooter\n\t\t\t\t\t\t\t\tPagination={Pagination}\n\t\t\t\t\t\t\t\tonChangePage={handleChangePage}\n\t\t\t\t\t\t\t\tonChangeRowsPerPage={handleChangeRowsPerPage}\n\t\t\t\t\t\t\t\trowCount={paginationTotalRows || filteredSortedData.length}\n\t\t\t\t\t\t\t\tcurrentPage={currentPage}\n\t\t\t\t\t\t\t\trowsPerPage={rowsPerPage}\n\t\t\t\t\t\t\t\tdirection={direction}\n\t\t\t\t\t\t\t\tpaginationRowsPerPageOptions={paginationRowsPerPageOptions}\n\t\t\t\t\t\t\t\tpaginationIcons={paginationIcons}\n\t\t\t\t\t\t\t\tpaginationComponentOptions={paginationComponentOptions}\n\t\t\t\t\t\t\t\tlocalization={localization.pagination}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</div>\n\t\t\t\t</RowContext.Provider>\n\t\t\t</HeadContext.Provider>\n\t\t</StylesContext.Provider>\n\t);\n}\n\nconst DataTable = React.forwardRef(DataTableInner) as <T>(\n\tprops: TableProps<T> & { ref?: React.Ref<DataTableHandle> },\n) => JSX.Element;\n\nexport default DataTable;\n","\n          export default function styleInject(css, { insertAt } = {}) {\n            if (!css || typeof document === 'undefined') return\n          \n            const head = document.head || document.getElementsByTagName('head')[0]\n            const style = document.createElement('style')\n            style.type = 'text/css'\n          \n            if (insertAt === 'top') {\n              if (head.firstChild) {\n                head.insertBefore(style, head.firstChild)\n              } else {\n                head.appendChild(style)\n              }\n            } else {\n              head.appendChild(style)\n            }\n          \n            if (style.styleSheet) {\n              style.styleSheet.cssText = css\n            } else {\n              style.appendChild(document.createTextNode(css))\n            }\n          }\n          ","import styleInject from '#style-inject';styleInject(\".rdt_table{position:relative;box-sizing:border-box;display:flex;flex-direction:column;width:100%;height:100%;max-width:100%;color:var(--rdt-color-text-primary, rgba(0, 0, 0, .87));background-color:var(--rdt-color-bg, #fff);font-family:var(--rdt-font-family, inherit);color-scheme:var(--rdt-color-scheme, light);--rdt-sort-icon-size: calc(var(--rdt-icon-size, 18px) * .8)}.rdt_tableDisabled{pointer-events:none;opacity:.4}.rdt_wrapper{position:relative;width:100%}.rdt_responsiveWrapper{position:relative;width:100%;border-radius:inherit}.rdt_responsiveWrapperScroll{overflow-x:auto;overflow-y:hidden;min-height:0;overscroll-behavior-x:contain;touch-action:pan-x pan-y;-webkit-overflow-scrolling:touch}.rdt_responsiveWrapperFixed{overflow-x:auto;overflow-y:auto;-webkit-overflow-scrolling:touch;min-height:0;overscroll-behavior-x:contain;touch-action:pan-x pan-y}.rdt_responsiveWrapperHideScrollbar{scrollbar-width:none}.rdt_responsiveWrapperHideScrollbar::-webkit-scrollbar{display:none}.rdt_pinnedScrollbarTrack{position:relative;height:8px;background:var(--rdt-color-bg, #fff);cursor:pointer;user-select:none}.rdt_pinnedScrollbarThumb{position:absolute;top:1px;left:0;height:6px;border-radius:3px;background:var(--rdt-color-scrollbar-thumb, rgba(0, 0, 0, .25));cursor:grab;transition:background .15s}.rdt_pinnedScrollbarThumb:hover,.rdt_pinnedScrollbarThumb:active{background:var(--rdt-color-scrollbar-thumb-hover, rgba(0, 0, 0, .45))}.rdt_head{display:flex;flex-direction:column;width:100%;color:var(--rdt-color-text-primary, rgba(0, 0, 0, .87));font-size:var(--rdt-font-size-header, 12px);font-weight:500}.rdt_headFixed{position:sticky;top:0;z-index:1}.rdt_headRow{display:flex;align-items:stretch;width:100%;min-height:var(--rdt-header-height, 52px);background-color:var(--rdt-color-header-bg, var(--rdt-color-bg, #fff));border-bottom:1px solid var(--rdt-color-divider, rgba(0, 0, 0, .12))}.rdt_headRowDense{min-height:32px}.rdt_body{display:flex;flex-direction:column}.rdt_row{display:flex;align-items:stretch;align-content:stretch;width:100%;box-sizing:border-box;font-size:var(--rdt-font-size, 13px);font-weight:400;color:var(--rdt-color-text-primary, rgba(0, 0, 0, .87));background-color:var(--rdt-color-bg, #fff);min-height:var(--rdt-row-height, 48px)}.rdt_row:not(:last-of-type) .rdt_cellBase{border-bottom:1px solid var(--rdt-color-divider, rgba(0, 0, 0, .12))}.rdt_rowDense{min-height:32px}.rdt_rowStriped{color:var(--rdt-color-striped-text, rgba(0, 0, 0, .87));background-color:var(--rdt-color-striped, #fafafa)}.rdt_rowSelected{color:var(--rdt-color-selected-text, rgba(0, 0, 0, .87));background-color:var(--rdt-color-selected, #e3f2fd)}.rdt_rowHighlight:hover{color:var(--rdt-color-highlight-text, rgba(0, 0, 0, .87));background-color:var(--rdt-color-highlight, #eee);outline:1px solid var(--rdt-color-bg, #fff);transition-duration:.15s;transition-property:background-color}.rdt_rowPointer:hover{cursor:pointer}.rdt_cellBase{position:relative;display:flex;align-items:center;box-sizing:border-box;line-height:normal;padding-left:var(--rdt-cell-padding-x, 16px);padding-right:var(--rdt-cell-padding-x, 16px);word-break:break-word}.rdt_headSeparator .rdt_cellBaseHead:not(.rdt_groupCell)+.rdt_cellBaseHead:not(.rdt_groupCell):before,.rdt_headSeparatorFull .rdt_cellBaseHead:not(.rdt_groupCell)+.rdt_cellBaseHead:not(.rdt_groupCell):before,.rdt_colSeparator .rdt_cellBase:not(.rdt_cellBaseHead)+.rdt_cellBase:not(.rdt_cellBaseHead):before,.rdt_colSeparatorFull .rdt_cellBase:not(.rdt_cellBaseHead)+.rdt_cellBase:not(.rdt_cellBaseHead):before{content:\\\"\\\";position:absolute;left:0;top:var(--_sep-top, 20%);height:var(--_sep-h, 60%);width:1px;background:var(--rdt-col-sep-color, var(--rdt-color-divider, rgba(0, 0, 0, .12)));pointer-events:none}.rdt_headSeparatorFull .rdt_cellBaseHead:not(.rdt_groupCell)+.rdt_cellBaseHead:not(.rdt_groupCell):before,.rdt_colSeparatorFull .rdt_cellBase:not(.rdt_cellBaseHead)+.rdt_cellBase:not(.rdt_cellBaseHead):before{--_sep-top: 0;--_sep-h: 100%}.rdt_cellNoPadding{padding:0}.rdt_Checkbox{position:relative;display:inline-flex;flex-shrink:0;width:var(--rdt-checkbox-size, 18px);height:var(--rdt-checkbox-size, 18px);cursor:pointer}.rdt_Checkbox.rdt_disabled{cursor:default;opacity:.38}.rdt_Checkbox>input[type=checkbox]{position:absolute;opacity:0;inset:0;margin:0;width:100%;height:100%;cursor:inherit;z-index:1}.rdt_Checkbox:before{content:\\\"\\\";position:absolute;inset:0;box-sizing:border-box;border-radius:var(--rdt-checkbox-radius, 2px);border:2px solid currentColor;opacity:.54;background:transparent;transition:background .15s,border-color .15s,opacity .15s}.rdt_Checkbox.rdt_checked:before,.rdt_Checkbox.rdt_indeterminate:before{background:var(--rdt-color-primary, #1976d2);border-color:var(--rdt-color-primary, #1976d2);opacity:1}.rdt_Checkbox:after{content:\\\"\\\";position:absolute;inset:0;background-repeat:no-repeat;background-position:center;pointer-events:none}.rdt_Checkbox.rdt_checked:after{background-image:url(\\\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='10' height='8' viewBox='0 0 10 8' fill='none'><polyline points='1 4 3.5 7 9 1' stroke='white' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/></svg>\\\")}.rdt_Checkbox.rdt_indeterminate:after{background-image:url(\\\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='10' height='2' viewBox='0 0 10 2'><rect width='10' height='2' rx='1' fill='white'/></svg>\\\")}.rdt_cellCheckbox{flex:0 0 var(--rdt-system-col-width, 48px);min-width:var(--rdt-system-col-width, 48px);justify-content:center;align-items:center;user-select:none;white-space:nowrap}.rdt_cellExpander{white-space:nowrap;font-weight:400;min-width:var(--rdt-system-col-width, 48px)}.rdt_columnCheckbox{flex:0 0 var(--rdt-system-col-width, 48px);justify-content:center;align-items:center;user-select:none;white-space:nowrap;font-size:unset}.rdt_columnExpander{white-space:nowrap;min-width:var(--rdt-system-col-width, 48px)}.rdt_columnSortable{display:inline-flex;align-items:center;justify-content:inherit;height:100%;width:100%;outline:none;user-select:none;overflow:hidden}.rdt_columnSortableEnabled{cursor:pointer}.rdt_columnSortableEnabled:not(.rdt_columnSortableActive):hover,.rdt_columnSortableEnabled:not(.rdt_columnSortableActive):focus{opacity:.7}.rdt_columnSortableEnabled:not(.rdt_columnSortableActive):hover span,.rdt_columnSortableEnabled:not(.rdt_columnSortableActive):focus span{opacity:.7}.rdt_columnText{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.rdt_filterContainer{position:relative;display:inline-flex;align-items:center;margin-left:4px;flex-shrink:0}.rdt_filterIcon{display:inline-flex;align-items:center;justify-content:center;position:relative;background:none;border:none;cursor:pointer;color:var(--rdt-color-btn, rgba(0, 0, 0, .54));border-radius:50%;width:22px;height:22px;padding:0;transition:background-color .2s,color .2s}.rdt_filterIcon:hover,.rdt_filterIcon:focus{background-color:var(--rdt-color-btn-hover, rgba(0, 0, 0, .08));outline:none}.rdt_filterIconActive{color:var(--rdt-color-text-primary, rgba(0, 0, 0, .87))}.rdt_filterDot{position:absolute;top:3px;right:3px;width:5px;height:5px;border-radius:50%;background-color:var(--rdt-color-primary, #1976d2);pointer-events:none}.rdt_filterPanel{z-index:9999;display:flex;flex-direction:column;gap:6px;background:var(--rdt-color-bg, #fff);border:1px solid var(--rdt-color-divider, rgba(0, 0, 0, .18));border-radius:var(--rdt-border-radius, 6px);box-shadow:0 4px 16px #00000024;padding:10px;min-width:260px;max-width:calc(100vw - 24px);box-sizing:border-box}.rdt_filterConditionRow{display:flex;align-items:center;gap:4px}.rdt_filterSelect{flex:0 0 auto;font-size:12px;color:var(--rdt-color-text-primary, rgba(0, 0, 0, .87));background:var(--rdt-color-bg, #fff);border:1px solid var(--rdt-color-divider, rgba(0, 0, 0, .24));border-radius:calc(var(--rdt-border-radius, 6px) * .6);padding:3px 4px;cursor:pointer;max-width:140px}.rdt_filterSelect:focus{outline:2px solid var(--rdt-color-primary, #1976d2);outline-offset:-1px}.rdt_filterInput{flex:1;min-width:0;font-size:12px;color:var(--rdt-color-text-primary, rgba(0, 0, 0, .87));background:var(--rdt-color-bg, #fff);border:1px solid var(--rdt-color-divider, rgba(0, 0, 0, .24));border-radius:calc(var(--rdt-border-radius, 6px) * .6);padding:3px 6px}.rdt_filterInput:focus{outline:2px solid var(--rdt-color-primary, #1976d2);outline-offset:-1px}.rdt_filterBetweenSep{font-size:11px;color:var(--rdt-color-text-secondary, rgba(0, 0, 0, .54));white-space:nowrap}.rdt_filterRemoveBtn{background:none;border:none;cursor:pointer;color:var(--rdt-color-btn, rgba(0, 0, 0, .54));font-size:11px;padding:2px 4px;border-radius:3px;line-height:1}.rdt_filterRemoveBtn:hover{background-color:var(--rdt-color-btn-hover, rgba(0, 0, 0, .08))}.rdt_filterLogicRow{display:flex;gap:4px}.rdt_filterLogicBtn{font-size:11px;font-weight:600;padding:2px 8px;border:1px solid var(--rdt-color-divider, rgba(0, 0, 0, .24));border-radius:3px;background:none;cursor:pointer;color:var(--rdt-color-text-secondary, rgba(0, 0, 0, .54))}.rdt_filterLogicBtnActive{background-color:var(--rdt-color-primary, #1976d2);border-color:var(--rdt-color-primary, #1976d2);color:#fff}.rdt_filterAddCondition{background:none;border:none;cursor:pointer;font-size:12px;color:var(--rdt-color-primary, #1976d2);padding:0;text-align:left}.rdt_filterAddCondition:hover{text-decoration:underline}.rdt_filterActions{display:flex;justify-content:flex-end;gap:6px;padding-top:4px;border-top:1px solid var(--rdt-color-divider, rgba(0, 0, 0, .12));margin-top:2px}.rdt_filterBtn{font-size:12px;padding:4px 12px;border-radius:4px;border:1px solid var(--rdt-color-divider, rgba(0, 0, 0, .24));background:none;cursor:pointer;color:var(--rdt-color-text-primary, rgba(0, 0, 0, .87))}.rdt_filterBtn:hover{background-color:var(--rdt-color-btn-hover, rgba(0, 0, 0, .06))}.rdt_filterBtnPrimary{background-color:var(--rdt-color-primary, #1976d2);border-color:var(--rdt-color-primary, #1976d2);color:#fff}.rdt_filterBtnPrimary:hover{background-color:#1565c0}@supports (background-color: color-mix(in srgb,red 1%,black)){.rdt_filterBtnPrimary:hover{background-color:color-mix(in srgb,var(--rdt-color-primary, #1976d2) 85%,black)}}.rdt_dragGhost{position:fixed;top:-9999px;left:-9999px;display:flex;align-items:center;gap:8px;padding:0 var(--rdt-cell-padding-x, 16px);box-sizing:border-box;background:var(--rdt-color-bg, #fff);color:var(--rdt-color-text-primary, rgba(0, 0, 0, .87));border:1px solid var(--rdt-color-divider, rgba(0, 0, 0, .12));border-radius:calc(var(--rdt-border-radius, 6px) * .5);font-size:var(--rdt-font-size-header, 12px);font-weight:500;white-space:nowrap;overflow:hidden;box-shadow:0 4px 16px #0000002e;pointer-events:none;opacity:.96}.rdt_dragGhostIcon{display:flex;align-items:center;flex-shrink:0;opacity:.45}.rdt_dragGhostLabel{overflow:hidden;text-overflow:ellipsis}.rdt_TableCol[draggable=true]{cursor:grab;user-select:none}.rdt_TableCol[draggable=true]:active{cursor:grabbing}.rdt_cellEditable{cursor:text;transition:background-color .15s}.rdt_cellEditable:hover{background-color:var(--rdt-color-cell-edit-hover, rgba(25, 118, 210, .06))}@supports (background-color: color-mix(in srgb,red 1%,transparent)){.rdt_cellEditable:hover{background-color:var(--rdt-color-cell-edit-hover, color-mix(in srgb, var(--rdt-color-primary, #1976d2) 6%, transparent))}}.rdt_cellEditable:hover>div[data-tag]{border-bottom:1px dashed var(--rdt-color-cell-edit-hover-border, rgba(25, 118, 210, .4));margin-bottom:-1px}@supports (border-color: color-mix(in srgb,red 1%,transparent)){.rdt_cellEditable:hover>div[data-tag]{border-bottom-color:var(--rdt-color-cell-edit-hover-border, color-mix(in srgb, var(--rdt-color-primary, #1976d2) 40%, transparent))}}.rdt_cellEditing{background-color:var(--rdt-color-cell-edit-bg, rgba(25, 118, 210, .08));box-shadow:inset 0 0 0 2px var(--rdt-color-primary, #1976d2);z-index:3;align-items:stretch;padding-top:0;padding-bottom:0}@supports (background-color: color-mix(in srgb,red 1%,white)){.rdt_cellEditing{background-color:var(--rdt-color-cell-edit-bg, color-mix(in srgb, var(--rdt-color-primary, #1976d2) 8%, var(--rdt-color-bg, #fff)))}}.rdt_editInput,.rdt_editSelect{display:block;box-sizing:border-box;width:calc(100% + 2 * var(--rdt-cell-padding-x, 16px));min-height:var(--rdt-row-height, 48px);align-self:stretch;margin:0 calc(-1 * var(--rdt-cell-padding-x, 16px));padding:0 var(--rdt-cell-padding-x, 16px);font:inherit;color:inherit;background:transparent;border:none;outline:none;appearance:none;-webkit-appearance:none}.rdt_editInput::placeholder{color:var(--rdt-color-text-secondary, rgba(0, 0, 0, .54));opacity:.7}.rdt_cellEditing:has(.rdt_editSelect):after{content:\\\"\\\";position:absolute;right:var(--rdt-cell-padding-x, 16px);top:50%;transform:translateY(-50%);width:12px;height:8px;pointer-events:none;background-color:var(--rdt-color-text-secondary, rgba(0, 0, 0, .54));mask-image:url(\\\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'><path d='M1 1l5 5 5-5' stroke='white' stroke-width='1.75' stroke-linecap='round' stroke-linejoin='round' fill='none'/></svg>\\\");mask-size:100% 100%;-webkit-mask-image:url(\\\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'><path d='M1 1l5 5 5-5' stroke='white' stroke-width='1.75' stroke-linecap='round' stroke-linejoin='round' fill='none'/></svg>\\\");-webkit-mask-size:100% 100%}.rdt_editSelect{padding-right:calc(var(--rdt-cell-padding-x, 16px) + 24px)}.rdt_rowDense .rdt_editInput,.rdt_rowDense .rdt_editSelect{min-height:32px}.rdt_editCheckboxWrap{display:inline-flex;align-items:center;justify-content:center;width:100%;height:100%;cursor:pointer;user-select:none}.rdt_editCheckbox{appearance:auto;cursor:pointer;margin:0;width:16px;height:16px}.rdt_editCheckboxWrap:focus-visible{outline:2px solid var(--rdt-color-primary);outline-offset:-2px;border-radius:var(--rdt-border-radius, 4px)}.rdt_editCustomWrap{display:flex;align-items:center;width:100%;height:100%;padding:0 var(--rdt-cell-padding-x, 16px)}.rdt_cellEditError{box-shadow:inset 0 0 0 2px var(--rdt-color-cell-edit-error, #dc2626)}.rdt_editErrorTip{position:absolute;bottom:100%;left:0;margin-bottom:2px;padding:2px 6px;font-size:11px;line-height:1.4;color:#fff;background:var(--rdt-color-cell-edit-error, #dc2626);border-radius:var(--rdt-border-radius, 4px);white-space:nowrap;pointer-events:none;z-index:5}.rdt_TableCell.rdt_cellEditError{position:relative}.rdt_pinLeft,.rdt_pinRight{background-color:inherit}.rdt_pinLeftLast{box-shadow:2px 0 4px -1px var(--rdt-color-pin-shadow, rgba(0, 0, 0, .12));clip-path:inset(0 -8px 0 0)}.rdt_pinRightFirst{box-shadow:-2px 0 4px -1px var(--rdt-color-pin-shadow, rgba(0, 0, 0, .12));clip-path:inset(0 0 0 -8px)}.rdt_resizeHandle{position:absolute;right:-3px;top:0;height:100%;width:6px;cursor:col-resize;user-select:none;z-index:2}.rdt_resizeHandle:hover,.rdt_resizeHandle:active{background-image:linear-gradient(to right,transparent 0,transparent 2px,var(--rdt-color-primary, #1976d2) 2px,var(--rdt-color-primary, #1976d2) 4px,transparent 4px,transparent 6px)}.rdt_headGrid{display:grid;grid-template-rows:var(--rdt-header-height, 52px) var(--rdt-header-height, 52px);width:100%;background-color:var(--rdt-color-header-bg, var(--rdt-color-bg, #fff));border-bottom:1px solid var(--rdt-color-divider, rgba(0, 0, 0, .12));background-image:linear-gradient(to bottom,transparent calc(var(--rdt-header-height, 52px) - 1px),var(--rdt-color-divider, rgba(0, 0, 0, .12)) calc(var(--rdt-header-height, 52px) - 1px),var(--rdt-color-divider, rgba(0, 0, 0, .12)) var(--rdt-header-height, 52px),transparent var(--rdt-header-height, 52px))}.rdt_headGridDense{grid-template-rows:32px 32px;background-image:linear-gradient(to bottom,transparent 31px,var(--rdt-color-divider, rgba(0, 0, 0, .12)) 31px,var(--rdt-color-divider, rgba(0, 0, 0, .12)) 32px,transparent 32px)}.rdt_groupCell{position:relative;display:flex;align-items:center;justify-content:center;padding:0 var(--rdt-cell-padding-x, 16px);font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--rdt-color-text-secondary, rgba(0, 0, 0, .54));box-sizing:border-box}.rdt_groupCellReorder{cursor:grab;user-select:none}.rdt_groupCellDragging{cursor:grabbing}.rdt_groupCell+.rdt_groupCell:before{content:\\\"\\\";position:absolute;left:0;top:20%;height:60%;width:1px;background:var(--rdt-col-sep-color, var(--rdt-color-divider, rgba(0, 0, 0, .12)));pointer-events:none}.rdt_sortIcon i,.rdt_sortIcon svg{transition-duration:95ms;transition-property:transform;color:inherit;font-size:18px;height:18px;width:18px;backface-visibility:hidden;transform-style:preserve-3d}.rdt_sortIconInactive i,.rdt_sortIconInactive svg{opacity:0}.rdt_sortIconActive i,.rdt_sortIconActive svg{opacity:1}.rdt_sortIconAsc i,.rdt_sortIconAsc svg{transform:rotate(180deg)}.rdt_sortPriority{display:inline-flex;align-items:center;justify-content:center;min-width:14px;height:14px;margin:0 2px;padding:0 3px;border-radius:7px;font-size:10px;line-height:1;font-weight:600;color:var(--rdt-color-bg, #fff);background-color:var(--rdt-color-text-secondary, rgba(0, 0, 0, .54))}.rdt_expanderRow{width:100%;box-sizing:border-box;color:var(--rdt-color-text-primary, rgba(0, 0, 0, .87));background-color:var(--rdt-color-bg, #fff)}.rdt_expanderButton{display:inline-flex;align-items:center;user-select:none;white-space:nowrap;border:none;background-color:transparent;color:var(--rdt-color-btn, rgba(0, 0, 0, .54));fill:var(--rdt-color-btn, rgba(0, 0, 0, .54));border-radius:var(--rdt-border-radius, 4px);transition:background-color .15s;height:100%;width:100%;padding:0}.rdt_expanderButton svg{margin:auto;width:var(--rdt-icon-size, 18px);height:var(--rdt-icon-size, 18px);flex-shrink:0}.rdt_expanderButton:hover:not(:disabled){cursor:pointer;background-color:var(--rdt-color-btn-hover, rgba(0, 0, 0, .12))}.rdt_expanderButton:focus{outline:none;background-color:var(--rdt-color-btn-focus, rgba(0, 0, 0, .12))}.rdt_expanderButton:disabled{color:var(--rdt-color-btn-disabled, rgba(0, 0, 0, .18));fill:var(--rdt-color-btn-disabled, rgba(0, 0, 0, .18))}.rdt_header{position:relative;box-sizing:border-box;overflow:hidden;display:flex;flex:1 1 auto;align-items:center;justify-content:space-between;width:100%;flex-wrap:wrap;font-size:22px;color:var(--rdt-color-text-primary, rgba(0, 0, 0, .87));background-color:var(--rdt-color-header-bg, var(--rdt-color-bg, #fff));min-height:56px;padding-left:16px;padding-right:8px;gap:4px}@media(max-width:599px){.rdt_header{font-size:18px;padding-left:12px;padding-right:6px}.rdt_headerActions{flex:0 0 auto}}.rdt_headerTitle{flex:1 0 auto;font-weight:400}.rdt_headerActions{flex:1 0 auto;display:flex;align-items:center;justify-content:flex-end}.rdt_headerActions>*{margin-left:5px}.rdt_subheader{position:relative;display:flex;flex:1 1 auto;box-sizing:border-box;align-items:center;padding:4px 16px 4px 24px;width:100%;background-color:var(--rdt-color-header-bg, var(--rdt-color-bg, #fff));min-height:52px}.rdt_subheaderLeft{justify-content:flex-start}.rdt_subheaderRight{justify-content:flex-end}.rdt_subheaderCenter{justify-content:center}.rdt_subheaderWrap{flex-wrap:wrap}.rdt_noData{box-sizing:border-box;width:100%;height:100%;display:flex;align-items:center;justify-content:center;color:var(--rdt-color-text-primary, rgba(0, 0, 0, .87));background-color:var(--rdt-color-bg, #fff)}.rdt_progress{position:relative;box-sizing:border-box;width:100%;height:100%;display:flex;align-items:center;justify-content:center;color:var(--rdt-color-text-primary, rgba(0, 0, 0, .87));background-color:var(--rdt-color-bg, #fff)}@keyframes rdt_shimmer{0%{background-position:-400px 0}to{background-position:400px 0}}@keyframes rdt_spin{to{transform:rotate(360deg)}}.rdt_skeletonPulse{background:linear-gradient(90deg,var(--rdt-color-divider, rgba(0,0,0,.08)) 25%,rgba(255,255,255,.5) 50%,var(--rdt-color-divider, rgba(0,0,0,.08)) 75%);background-size:800px 100%;animation:rdt_shimmer 1.4s ease-in-out infinite}.rdt_bodyBusy{opacity:.4;pointer-events:none;user-select:none;transition:opacity .15s ease}.rdt_bodyOverlay{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;pointer-events:none}.rdt_footer{display:flex;flex-direction:column;background-color:var(--rdt-color-footer-bg, var(--rdt-color-bg, #fff))}.rdt_footerRow{display:flex;align-items:stretch;width:100%;box-sizing:border-box;min-height:var(--rdt-row-height, 48px);font-size:var(--rdt-font-size, 13px);font-weight:600;color:var(--rdt-color-text-primary, rgba(0, 0, 0, .87));border-top:1px solid var(--rdt-color-divider, rgba(0, 0, 0, .12))}.rdt_footerCell{background-color:inherit}.rdt_footerSystemCell{flex:0 0 var(--rdt-system-col-width, 40px);min-width:0;max-width:var(--rdt-system-col-width, 40px)}.rdt_pagination{display:flex;flex:1 1 auto;justify-content:flex-end;align-items:center;box-sizing:border-box;padding-right:var(--rdt-cell-padding-x, 8px);padding-left:var(--rdt-cell-padding-x, 8px);width:100%;font-size:var(--rdt-font-size, 13px);font-family:var(--rdt-font-family, inherit);color:var(--rdt-color-text-secondary, rgba(0, 0, 0, .54));background-color:var(--rdt-color-bg, #fff);min-height:var(--rdt-row-height, 52px)}.rdt_paginationButton{position:relative;display:flex;align-items:center;justify-content:center;user-select:none;border:none;border-radius:calc(var(--rdt-border-radius, 4px) * 100);height:calc(var(--rdt-icon-size, 18px) + 16px);width:calc(var(--rdt-icon-size, 18px) + 16px);padding:0;margin:0;cursor:pointer;transition:background-color .15s;color:var(--rdt-color-btn, rgba(0, 0, 0, .54));fill:var(--rdt-color-btn, rgba(0, 0, 0, .54));background-color:transparent}.rdt_paginationButton svg{width:var(--rdt-icon-size, 18px);height:var(--rdt-icon-size, 18px);flex-shrink:0}.rdt_paginationButton:disabled{cursor:unset;color:var(--rdt-color-btn-disabled, rgba(0, 0, 0, .18));fill:var(--rdt-color-btn-disabled, rgba(0, 0, 0, .18))}.rdt_paginationButton:hover:not(:disabled){background-color:var(--rdt-color-btn-hover, rgba(0, 0, 0, .12))}.rdt_paginationButton:focus{outline:none;background-color:var(--rdt-color-btn-focus, rgba(0, 0, 0, .12))}.rdt_paginationButtonRTL{transform:scale(-1)}.rdt_paginationPageList{display:flex;align-items:center;border-radius:var(--rdt-border-radius, 4px);white-space:nowrap}@media(max-width:599px){.rdt_paginationPageList{width:100%;justify-content:space-around}.rdt_paginationRange,.rdt_paginationRowLabel{display:none}.rdt_pagination{justify-content:center;padding-left:4px;padding-right:4px}}.rdt_paginationSpan{flex-shrink:1;user-select:none}.rdt_paginationRange{flex-shrink:1;user-select:none;margin:0 24px}.rdt_paginationRowLabel{flex-shrink:1;user-select:none;margin:0 4px}.rdt_selectWrapper{position:relative;display:inline-flex;align-items:center;flex-shrink:0;font-size:inherit;color:var(--rdt-color-text-primary, rgba(0, 0, 0, .87));border:1px solid var(--rdt-color-divider, rgba(0, 0, 0, .24));border-radius:var(--rdt-border-radius, 4px);background-color:var(--rdt-color-bg, #fff);height:28px;margin-left:8px;transition:border-color .15s}.rdt_selectWrapper:focus-within{border-color:var(--rdt-color-primary, #1976d2);outline:2px solid var(--rdt-color-primary, #1976d2);outline-offset:-1px}.rdt_selectWrapper svg{top:50%;right:2px;transform:translateY(-50%);color:var(--rdt-color-text-secondary, rgba(0, 0, 0, .54));position:absolute;fill:none;stroke:currentColor;width:18px;height:18px;display:inline-block;user-select:none;pointer-events:none}.rdt_selectControl{cursor:pointer;height:100%;max-width:100%;user-select:none;padding-left:8px;padding-right:22px;box-sizing:border-box;font-size:inherit;font-family:inherit;color:inherit;border:none;background-color:transparent;appearance:none;direction:ltr;flex-shrink:0;outline:none}.rdt_selectControl::-ms-expand{display:none}.rdt_selectControl option{color:initial;background-color:var(--rdt-color-bg, #fff)}@media(max-width:599px){.rdt_row{min-height:max(var(--rdt-row-height, 48px),48px)}.rdt_cellBase{padding-left:var(--rdt-cell-padding-x-mobile, 12px);padding-right:var(--rdt-cell-padding-x-mobile, 12px)}.rdt_paginationButton{height:44px;width:44px}}@media(max-width:599px){.rdt_hideOnSm{display:none}}@media(max-width:959px){.rdt_hideOnMd{display:none}}@media(max-width:1279px){.rdt_hideOnLg{display:none}}@keyframes rdt_rowEnter{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.rdt_animatedRow{animation:rdt_rowEnter .18s ease both;animation-delay:calc(var(--rdt-row-index, 0) * 16ms)}.rdt_expanderRowAnimated{display:grid;animation:rdt_expandIn .22s cubic-bezier(.2,0,0,1) forwards}.rdt_expanderRowClosing{animation:rdt_expandOut .22s cubic-bezier(.2,0,0,1) forwards}@keyframes rdt_expandIn{0%{grid-template-rows:0fr;opacity:0}to{grid-template-rows:1fr;opacity:1}}@keyframes rdt_expandOut{0%{grid-template-rows:1fr;opacity:1}to{grid-template-rows:0fr;opacity:0}}.rdt_expanderRowAnimated>.rdt_expanderRow{overflow:hidden;min-height:0}@keyframes rdt_sortPulse{0%{background-color:transparent}30%{background-color:var(--rdt-color-selected, #e3f2fd)}to{background-color:transparent}}.rdt_sortActive{animation:rdt_sortPulse .4s ease both}@media(prefers-reduced-motion:reduce){.rdt_animatedRow,.rdt_sortActive{animation:none!important;transition:none!important}.rdt_expanderRowAnimated,.rdt_expanderRowClosing{animation:none!important;grid-template-rows:1fr!important;opacity:1!important}}\\n\")","import * as React from 'react';\nimport type { TableStyles } from '../types';\n\nexport const StylesContext = React.createContext<TableStyles>({});\n\nexport function useStyles(): TableStyles {\n\treturn React.useContext(StylesContext);\n}\n","import * as React from 'react';\nimport '../DataTable.css';\nimport { useStyles } from '../context/StylesContext';\n\ntype TableProps = React.HTMLAttributes<HTMLDivElement> & { disabled?: boolean };\n\nexport default function Table({ disabled, className, style, ...rest }: TableProps): JSX.Element {\n\tconst customStyles = useStyles();\n\treturn (\n\t\t<div\n\t\t\tclassName={['rdt_table', disabled && 'rdt_tableDisabled', className].filter(Boolean).join(' ')}\n\t\t\tstyle={{ ...customStyles.table?.style, ...style }}\n\t\t\t{...rest}\n\t\t/>\n\t);\n}\n","import * as React from 'react';\nimport '../DataTable.css';\nimport { useStyles } from '../context/StylesContext';\n\ntype HeaderProps = {\n\ttitle?: string | React.ReactNode;\n\tactions?: React.ReactNode | React.ReactNode[];\n};\n\nexport default function Header({ title, actions = null }: HeaderProps): JSX.Element {\n\tconst customStyles = useStyles();\n\treturn (\n\t\t<div className=\"rdt_TableHeader\" style={customStyles.header?.style}>\n\t\t\t<div className=\"rdt_header\">\n\t\t\t\t<div className=\"rdt_headerTitle\">{title}</div>\n\t\t\t\t{actions && <div className=\"rdt_headerActions\">{actions}</div>}\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n","import * as React from 'react';\nimport '../DataTable.css';\nimport { useStyles } from '../context/StylesContext';\n\ntype AlignItems = 'center' | 'left' | 'right';\n\nconst alignClass: Record<AlignItems, string> = {\n\tleft: 'rdt_subheaderLeft',\n\tright: 'rdt_subheaderRight',\n\tcenter: 'rdt_subheaderCenter',\n};\n\ntype SubheaderProps = {\n\talign?: AlignItems;\n\twrapContent?: boolean;\n\tchildren?: React.ReactNode;\n};\n\nexport default function Subheader({ align = 'right', wrapContent = true, children }: SubheaderProps): JSX.Element {\n\tconst customStyles = useStyles();\n\treturn (\n\t\t<header\n\t\t\tclassName={['rdt_subheader', alignClass[align], wrapContent && 'rdt_subheaderWrap'].filter(Boolean).join(' ')}\n\t\t\tstyle={customStyles.subHeader?.style}\n\t\t>\n\t\t\t{children}\n\t\t</header>\n\t);\n}\n","import * as React from 'react';\nimport '../DataTable.css';\nimport { useStyles } from '../context/StylesContext';\n\ntype ResponsiveWrapperProps = React.HTMLAttributes<HTMLDivElement> & {\n\t$responsive: boolean;\n\t$fixedHeader?: boolean;\n\t$fixedHeaderScrollHeight?: string;\n\t$hiddenScrollbar?: boolean;\n};\n\nconst ResponsiveWrapper = React.forwardRef<HTMLDivElement, ResponsiveWrapperProps>(function ResponsiveWrapper(\n\t{ $responsive, $fixedHeader, $fixedHeaderScrollHeight = '100vh', $hiddenScrollbar, className, style, ...rest },\n\tref,\n) {\n\tconst customStyles = useStyles();\n\tconst scrollClass = $responsive\n\t\t? $fixedHeader\n\t\t\t? 'rdt_responsiveWrapperFixed'\n\t\t\t: 'rdt_responsiveWrapperScroll'\n\t\t: undefined;\n\treturn (\n\t\t<div\n\t\t\tref={ref}\n\t\t\tclassName={[\n\t\t\t\t'rdt_responsiveWrapper',\n\t\t\t\tscrollClass,\n\t\t\t\t$hiddenScrollbar && 'rdt_responsiveWrapperHideScrollbar',\n\t\t\t\tclassName,\n\t\t\t]\n\t\t\t\t.filter(Boolean)\n\t\t\t\t.join(' ')}\n\t\t\tstyle={{\n\t\t\t\t...($fixedHeader && { maxHeight: $fixedHeaderScrollHeight }),\n\t\t\t\t...customStyles.responsiveWrapper?.style,\n\t\t\t\t...style,\n\t\t\t}}\n\t\t\t{...rest}\n\t\t/>\n\t);\n});\n\nexport default ResponsiveWrapper;\n","import * as React from 'react';\nimport '../DataTable.css';\nimport { useStyles } from '../context/StylesContext';\n\nexport default function Wrapper({ style, ...rest }: React.HTMLAttributes<HTMLDivElement>): JSX.Element {\n\tconst customStyles = useStyles();\n\treturn <div className=\"rdt_wrapper\" style={{ ...customStyles.tableWrapper?.style, ...style }} {...rest} />;\n}\n","import React from 'react';\n\nconst DropdownIcon: React.FC = () => (\n\t<svg\n\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\twidth=\"24\"\n\t\theight=\"24\"\n\t\tviewBox=\"0 0 24 24\"\n\t\tfill=\"none\"\n\t\tstroke=\"currentColor\"\n\t\tstrokeWidth=\"1.5\"\n\t\tstrokeLinecap=\"round\"\n\t\tstrokeLinejoin=\"round\"\n\t\taria-hidden=\"true\"\n\t\trole=\"presentation\"\n\t>\n\t\t<path d=\"M7 10L12 15L17 10\" />\n\t</svg>\n);\n\nexport default DropdownIcon;\n","import * as React from 'react';\nimport '../DataTable.css';\nimport DropDownIcon from '../icons/Dropdown';\n\ntype SelectProps = {\n\tonChange: (e: React.ChangeEvent<HTMLSelectElement>) => void;\n\tdefaultValue: string | number;\n\tchildren: React.ReactNode;\n} & React.AriaAttributes;\n\nexport default function Select({ defaultValue, onChange, ...rest }: SelectProps): JSX.Element {\n\treturn (\n\t\t<div className=\"rdt_selectWrapper\">\n\t\t\t<select className=\"rdt_selectControl\" onChange={onChange} defaultValue={defaultValue} {...rest} />\n\t\t\t<DropDownIcon />\n\t\t</div>\n\t);\n}\n","import type React from 'react';\nimport { Alignment, Direction, Media } from './constants';\n\nexport type CSSObject = React.CSSProperties;\n\n// ── Column filter types ────────────────────────────────────────────────────────\n\nexport type FilterType = 'text' | 'number' | 'date';\n\nexport type FilterOperator =\n\t| 'contains'\n\t| 'notContains'\n\t| 'equals'\n\t| 'notEquals'\n\t| 'startsWith'\n\t| 'endsWith'\n\t| 'blank'\n\t| 'notBlank'\n\t| 'gt'\n\t| 'gte'\n\t| 'lt'\n\t| 'lte'\n\t| 'between'\n\t| 'before'\n\t| 'after';\n\nexport type FilterCondition = {\n\toperator: FilterOperator;\n\tvalue?: string;\n\t/** Second value — only used when operator is \"between\". */\n\tvalue2?: string;\n};\n\nexport type FilterState = {\n\tcondition1: FilterCondition;\n\tcondition2?: FilterCondition;\n\t/** How condition1 and condition2 combine. Defaults to \"AND\". */\n\tlogic?: 'AND' | 'OR';\n};\n\nexport enum SortOrder {\n\tASC = 'asc',\n\tDESC = 'desc',\n}\n\n/** A single column participating in a (possibly multi-column) sort, in priority order. */\nexport type SortColumn<T> = {\n\tcolumn: TableColumn<T>;\n\tsortDirection: SortOrder;\n};\n\nexport type Primitive = string | number | boolean;\nexport type ColumnSortFunction<T> = (a: T, b: T) => number;\nexport type ExpandRowToggled<T> = (expanded: boolean, row: T) => void;\nexport type Format<T> = (row: T, rowIndex: number) => React.ReactNode;\nexport type RowState<T> = ((row: T) => boolean) | null;\nexport type Selector<T> = (row: T, rowIndex?: number) => Primitive;\nexport type SortFunction<T> = (rows: T[], field: Selector<T>, sortDirection: SortOrder) => T[];\nexport type TableRow = Record<string, unknown>;\nexport type ComponentProps = Record<string, unknown>;\nexport type ExpanderComponentProps<T> = { data: T };\nexport type ExpandableRowsComponent<T> = React.ComponentType<ExpanderComponentProps<T>>;\nexport type PaginationChangePage = (page: number, totalRows: number) => void;\nexport type PaginationChangeRowsPerPage = (currentRowsPerPage: number, currentPage: number) => void;\nexport type PaginationComponentProps = {\n\trowsPerPage: number;\n\trowCount: number;\n\tcurrentPage: number;\n\tonChangePage: PaginationChangePage;\n\tonChangeRowsPerPage: PaginationChangeRowsPerPage;\n\tdirection?: Direction;\n\tpaginationRowsPerPageOptions?: number[];\n\tpaginationIcons?: PaginationIcons;\n\tpaginationComponentOptions?: PaginationOptions;\n\tlocalization?: Localization['pagination'];\n};\nexport type PaginationComponent = React.ComponentType<PaginationComponentProps>;\n\n/** Renders a column's footer cell. Either a static node, or a function that\n *  receives the filtered+sorted rows for the current view and returns a node\n *  (typically an aggregate such as a sum or average). */\nexport type ColumnFooter<T> = React.ReactNode | ((rows: T[]) => React.ReactNode);\n\n/** Props passed to a custom `footerComponent`. */\nexport type FooterComponentProps<T> = {\n\t/** Filtered + sorted rows in the current view. With server-side pagination\n\t *  this is whatever data the parent passed in — page-bound, not the full dataset. */\n\trows: T[];\n\t/** The column definitions in their current visible order. */\n\tcolumns: TableColumn<T>[];\n};\n\nexport type FooterComponent<T> = React.ComponentType<FooterComponentProps<T>>;\n\nexport type DataTableHandle = {\n\tclearSelectedRows: () => void;\n\tclearSort: () => void;\n};\n\n// ── Feature-group prop types ──────────────────────────────────────────────────\n\ntype SelectionProps<T> = {\n\t/** @deprecated Use a ref with DataTableHandle instead: ref.current.clearSelectedRows() */\n\tclearSelectedRows?: boolean;\n\tonSelectedRowsChange?: (selected: { allSelected: boolean; selectedCount: number; selectedRows: T[] }) => void;\n\tselectableRowDisabled?: RowState<T>;\n\tselectableRows?: boolean;\n\tselectableRowsComponent?: 'input' | React.ComponentType<React.InputHTMLAttributes<HTMLInputElement>>;\n\tselectableRowsComponentProps?: ComponentProps;\n\tselectableRowSelected?: RowState<T>;\n\tselectableRowsHighlight?: boolean;\n\tselectableRowsNoSelectAll?: boolean;\n\tselectableRowsVisibleOnly?: boolean;\n\tselectableRowsSingle?: boolean;\n\t/**\n\t * Controlled selection. When provided, DataTable uses this array as the source of truth\n\t * for which rows are selected and calls `onSelectedRowsChange` whenever the user toggles a row,\n\t * a range, or the select-all checkbox. Omit to use internal selection state (default).\n\t *\n\t * Rows are matched by `keyField`, so each row in `selectedRows` must contain its key.\n\t */\n\tselectedRows?: T[];\n\t/**\n\t * Enable Shift-click range selection on the row checkbox. When the user clicks one row's\n\t * checkbox, then Shift-clicks another, every row in between is toggled to match the anchor.\n\t * Ignored when `selectableRowsSingle` is true. Defaults to `true`.\n\t */\n\tselectableRowsRange?: boolean;\n};\n\nexport interface PaginationIcons {\n\tfirst?: React.ReactNode;\n\tlast?: React.ReactNode;\n\tnext?: React.ReactNode;\n\tprevious?: React.ReactNode;\n}\n\ntype PaginationProps = {\n\tonChangePage?: PaginationChangePage;\n\tonChangeRowsPerPage?: PaginationChangeRowsPerPage;\n\tpagination?: boolean;\n\tpaginationComponent?: PaginationComponent;\n\tpaginationComponentOptions?: PaginationOptions;\n\tpaginationDefaultPage?: number;\n\t/**\n\t * @deprecated Pass via the theme instead: `createTheme('t', { icons: { pagination: { next: <Icon /> } } })`\n\t */\n\tpaginationIcons?: PaginationIcons;\n\tpaginationPerPage?: number;\n\tpaginationPage?: number;\n\tpaginationPosition?: 'top' | 'bottom' | 'both';\n\tpaginationResetDefaultPage?: boolean;\n\tpaginationRowsPerPageOptions?: number[];\n\tpaginationServer?: boolean;\n\tpaginationServerOptions?: PaginationServerOptions;\n\tpaginationTotalRows?: number;\n};\n\ntype ExpandableProps<T> = {\n\t/**\n\t * @deprecated Pass via the theme instead: `createTheme('t', { icons: { expandable: { collapsed: <Icon /> } } })`\n\t */\n\texpandableIcon?: ExpandableIcon;\n\texpandableInheritConditionalStyles?: boolean;\n\texpandableRowDisabled?: RowState<T>;\n\texpandableRowExpanded?: RowState<T>;\n\texpandableRows?: boolean;\n\texpandableRowsComponent?: ExpandableRowsComponent<T>;\n\texpandableRowsComponentProps?: ComponentProps;\n\texpandableRowsHideExpander?: boolean;\n\texpandOnRowClicked?: boolean;\n\texpandOnRowDoubleClicked?: boolean;\n\tonRowExpandToggled?: ExpandRowToggled<T>;\n\t/**\n\t * @deprecated Use the `localization` prop instead: `localization={{ expandable: { ... } }}`. Will be removed in v9.\n\t */\n\texpandableRowsOptions?: ExpandableRowsOptions;\n};\n\ntype SortProps<T> = {\n\tdefaultSortAsc?: boolean;\n\tdefaultSortFieldId?: string | number | null | undefined;\n\tonSort?: (\n\t\tselectedColumn: TableColumn<T>,\n\t\tsortDirection: SortOrder,\n\t\tsortedRows: T[],\n\t\tsortColumns: SortColumn<T>[],\n\t) => void;\n\tsortFunction?: SortFunction<T> | null;\n\t/**\n\t * @deprecated Pass via the theme instead: `createTheme('t', { icons: { sort: <Icon /> } })`\n\t */\n\tsortIcon?: React.ReactNode;\n\tsortServer?: boolean;\n\t/**\n\t * Enable multi-column sorting. Hold Ctrl (or ⌘ on macOS) while clicking a column\n\t * header to add it to the existing sort instead of replacing it. Sort priority follows\n\t * the order columns are added. Defaults to `false`.\n\t */\n\tsortMulti?: boolean;\n};\n\ntype BaseTableProps<T> = {\n\tactions?: React.ReactNode | React.ReactNode[];\n\tariaLabel?: string;\n\tclassName?: string;\n\tcolumns: TableColumn<T>[];\n\tconditionalRowStyles?: ConditionalStyles<T>[];\n\tcustomStyles?: TableStyles;\n\tdata: T[];\n\tdense?: boolean;\n\tdirection?: Direction;\n\tdisabled?: boolean;\n\tfixedHeader?: boolean;\n\tfixedHeaderScrollHeight?: string;\n\thighlightOnHover?: boolean;\n\tkeyField?: keyof T & string;\n\tnoDataComponent?: React.ReactNode;\n\tnoHeader?: boolean;\n\tnoTableHead?: boolean;\n\tonRowClicked?: (row: T, e: React.MouseEvent) => void;\n\tonRowDoubleClicked?: (row: T, e: React.MouseEvent) => void;\n\tonRowMiddleClicked?: (row: T, e: React.MouseEvent) => void;\n\tonRowMouseEnter?: (row: T, e: React.MouseEvent) => void;\n\tonRowMouseLeave?: (row: T, e: React.MouseEvent) => void;\n\t/** Called when the user scrolls the table body. Works with both `fixedHeader` enabled and disabled. */\n\tonScroll?: (e: React.UIEvent<HTMLDivElement>) => void;\n\t/** Enable drag-to-resize handles on column headers */\n\tresizable?: boolean;\n\t/**\n\t * Seed column widths (px) by column id — useful for hydrating persisted widths on mount.\n\t * Keyed by the same id you set on each TableColumn.\n\t */\n\tinitialColumnWidths?: Record<string | number, number>;\n\t/**\n\t * Called after the user finishes resizing a column (on mouseup).\n\t * Receives the id and final width (px) of the resized column, plus the full widths map\n\t * so you can persist to localStorage, a database, or anywhere else.\n\t */\n\tonColumnResize?: (columnId: string | number, width: number, allWidths: Record<string | number, number>) => void;\n\t/** Animate rows on mount and expander rows on expand (respects prefers-reduced-motion) */\n\tanimateRows?: boolean;\n\t/**\n\t * Draw a vertical separator between body row columns.\n\t * - `true` / `\"subtle\"`: inset 60%-height line.\n\t * - `\"full\"`: full-height line using the theme divider color.\n\t * - `false` / omitted: no body separators.\n\t */\n\tcolumnSeparator?: boolean | 'subtle' | 'full';\n\t/**\n\t * Draw a vertical separator between column header cells.\n\t * Defaults to `true` (subtle inset line). Set to `false` to remove,\n\t * or `\"full\"` for a full-height line.\n\t * - `true` / `\"subtle\"` / omitted: inset 60%-height line (default).\n\t * - `\"full\"`: full-height line using the theme divider color.\n\t * - `false`: no header separators.\n\t */\n\theaderSeparator?: boolean | 'subtle' | 'full';\n\t/** Column group definitions — renders a spanning header row above the column header row */\n\tcolumnGroups?: ColumnGroup[];\n\t/**\n\t * Controlled filter values per column id. When provided, DataTable uses these values\n\t * and calls onFilterChange when the user applies a filter. Omit to use internal filter state.\n\t */\n\tfilterValues?: Record<string | number, FilterState>;\n\t/** Called when the user clicks Apply in a column filter popup. */\n\tonFilterChange?: (columnId: string | number, filter: FilterState) => void;\n\t/** Override every user-visible string in DataTable. Pass a pre-built locale or build your own. */\n\tlocalization?: Localization;\n\t/**\n\t * @deprecated Use the `localization` prop instead: `localization={{ filter: { ... } }}`. Will be removed in v9.\n\t */\n\tcolumnFilterOptions?: ColumnFilterOptions;\n\tonColumnOrderChange?: (nextOrder: TableColumn<T>[]) => void;\n\t/** Called after a group drag reorder with the new group order and matching column order. */\n\tonColumnGroupOrderChange?: (nextGroups: ColumnGroup[], nextColumns: TableColumn<T>[]) => void;\n\tpersistTableHead?: boolean;\n\tpointerOnHover?: boolean;\n\tprogressComponent?: React.ReactNode;\n\tprogressPending?: boolean;\n\tresponsive?: boolean;\n\tstriped?: boolean;\n\tstyle?: CSSObject;\n\t/** Content rendered in the sub-header bar. Providing any value shows the bar. */\n\tsubHeader?: React.ReactNode;\n\tsubHeaderAlign?: Alignment;\n\tsubHeaderWrap?: boolean;\n\ttheme?: ThemeProp;\n\t/** 'light' | 'dark' | 'system'. When 'system', the table auto-detects from prefers-color-scheme and the html.dark class. Default: 'light'. */\n\tcolorMode?: ColorMode;\n\t/**\n\t *  Shows and displays a header with a title\n\t *  */\n\ttitle?: string | React.ReactNode;\n\t/**\n\t * Replace the built-in footer row with a custom component. Receives `rows`\n\t * (filtered + sorted) and `columns`. When omitted, the footer row is built\n\t * from each column's `footer` field.\n\t */\n\tfooterComponent?: FooterComponent<T>;\n\t/**\n\t * Force the footer row to render. By default the footer renders only when\n\t * `footerComponent` is set or at least one visible column defines a `footer`.\n\t * Set to `false` to suppress the footer entirely.\n\t */\n\tshowFooter?: boolean;\n};\n\nexport type TableProps<T> = BaseTableProps<T> & SelectionProps<T> & PaginationProps & ExpandableProps<T> & SortProps<T>;\n\nexport type TableColumnBase = {\n\tallowOverflow?: boolean;\n\tbutton?: boolean;\n\tcenter?: boolean;\n\tcompact?: boolean;\n\treorder?: boolean;\n\tgrow?: number;\n\thide?: number | Media;\n\tid?: string | number;\n\tignoreRowClick?: boolean;\n\tmaxWidth?: string;\n\tminWidth?: string;\n\tname?: string | number | React.ReactNode;\n\tomit?: boolean;\n\tright?: boolean;\n\tsortable?: boolean;\n\t/** Enable the built-in filter popup for this column. */\n\tfilterable?: boolean;\n\t/** Filter input type. Determines the available operators and input widget. Defaults to \"text\". */\n\tfilterType?: FilterType;\n\tstyle?: CSSObject;\n\twidth?: string;\n\twrap?: boolean;\n\t/** Freeze this column to the left or right edge on horizontal scroll. */\n\tpinned?: 'left' | 'right';\n\t/** Allow clicking the cell to edit its value inline. Calls onCellEdit on commit.\n\t *  Shorthand for `editor: { type: 'text' }`. Ignored when `editor` is set. */\n\teditable?: boolean;\n\t/** Configures the inline editor used when the cell is clicked. */\n\teditor?: CellEditor;\n};\n\n/** Context passed to a custom editor's render function. */\nexport interface CustomCellEditorContext<T = unknown> {\n\t/** The current row being edited. */\n\trow: T;\n\t/** Current editor value (string). Custom editors stay in sync via `setValue`. */\n\tvalue: string;\n\t/** Update the in-flight editor value without committing. */\n\tsetValue: (next: string) => void;\n\t/** Commit the edit. If a value is passed it is used; otherwise the current value is committed. */\n\tcommit: (value?: string) => void;\n\t/** Close the editor without firing onCellEdit. */\n\tcancel: () => void;\n\t/** The column definition. */\n\tcolumn: TableColumn<T>;\n}\n\n/** Options for inline cell editors. */\nexport type CellEditor<T = unknown> =\n\t| { type: 'text'; placeholder?: string }\n\t| { type: 'number'; placeholder?: string; min?: number; max?: number; step?: number }\n\t| { type: 'date'; min?: string; max?: string }\n\t| { type: 'checkbox' }\n\t| {\n\t\t\ttype: 'select';\n\t\t\toptions: Array<{ value: string; label: React.ReactNode }>;\n\t\t\t/** Optional placeholder shown when current value is empty/unknown. */\n\t\t\tplaceholder?: string;\n\t  }\n\t| {\n\t\t\ttype: 'custom';\n\t\t\t/** Render your own editor element. Use `ctx.commit()` / `ctx.cancel()` to finish. */\n\t\t\trender: (ctx: CustomCellEditorContext<T>) => React.ReactNode;\n\t  };\n\n/**\n * Validate result returned from a column's `validate` function.\n * - `true`: accept the edit.\n * - `false`: reject silently.\n * - `string`: reject and surface the message as an inline validation error.\n */\nexport type CellValidateResult = true | false | string;\n\nexport type CellEditCallback<T> = (row: T, value: string, column: TableColumn<T>) => void;\n\nexport interface TableColumn<T> extends TableColumnBase {\n\tname?: string | number | React.ReactNode;\n\tsortField?: string;\n\tcell?: (row: T, rowIndex: number, column: TableColumn<T>, id: string | number) => React.ReactNode;\n\tconditionalCellStyles?: ConditionalStyles<T>[];\n\tformat?: Format<T> | undefined;\n\t/**\n\t * Extracts a value from the row for display and sorting.\n\t * May return `React.ReactNode` when used for display only; if the column is sortable\n\t * and no `sortFunction` is provided, the returned value should be a `Primitive`.\n\t */\n\tselector?: (row: T, rowIndex?: number) => Primitive | React.ReactNode;\n\tsortFunction?: ColumnSortFunction<T>;\n\t/** Custom filter function — overrides built-in operator logic. Receives the full FilterState so both conditions are available. */\n\tfilterFunction?: (row: T, filter: FilterState) => boolean;\n\t/** Called when the user commits an inline edit (blur or Enter). Only fires when editable: true. */\n\tonCellEdit?: CellEditCallback<T>;\n\t/**\n\t * Validate an inline-edit value before `onCellEdit` fires.\n\t * Return `true` to accept, `false` to reject silently, or a string error to display.\n\t */\n\tvalidate?: (value: string, row: T, column: TableColumn<T>) => CellValidateResult;\n\t/**\n\t * Footer cell for this column. Pass a `ReactNode` for a static value, or a function\n\t * `(rows) => ReactNode` to compute an aggregate from the filtered+sorted rows.\n\t * When any visible column defines a `footer`, a footer row renders below the body.\n\t */\n\tfooter?: ColumnFooter<T>;\n}\n\n/** A column group renders as a spanning header row above the regular header row. */\nexport interface ColumnGroup {\n\t/** Display name for this group header */\n\tname: string | React.ReactNode;\n\t/** The column ids that fall under this group */\n\tcolumnIds: (string | number)[];\n\t/** Horizontal alignment of the group label. Defaults to 'center'. */\n\talign?: 'left' | 'center' | 'right';\n\t/** Enable drag-to-reorder for this group. Dragging moves all member columns as a block. */\n\treorder?: boolean;\n}\n\nexport interface ConditionalStyles<T> {\n\twhen: (row: T) => boolean;\n\tstyle?: CSSObject | ((row: T) => CSSObject);\n\tclassNames?: string[];\n}\n\nexport interface TableStyles {\n\ttable?: {\n\t\tstyle: CSSObject;\n\t};\n\ttableWrapper?: {\n\t\tstyle: CSSObject;\n\t};\n\tresponsiveWrapper?: {\n\t\tstyle: CSSObject;\n\t};\n\theader?: {\n\t\tstyle: CSSObject;\n\t\tfontColor?: string;\n\t\tfontSize?: string;\n\t};\n\tsubHeader?: {\n\t\tstyle: CSSObject;\n\t};\n\thead?: {\n\t\tstyle: CSSObject;\n\t};\n\theadRow?: {\n\t\tstyle?: CSSObject;\n\t\tdenseStyle?: CSSObject;\n\t};\n\theadCells?: {\n\t\tstyle?: CSSObject;\n\t\tdraggingStyle?: CSSObject;\n\t};\n\tcells?: {\n\t\tstyle: CSSObject;\n\t\tdraggingStyle?: CSSObject;\n\t};\n\trows?: {\n\t\tstyle?: CSSObject;\n\t\tselectedHighlightStyle?: CSSObject;\n\t\tdenseStyle?: CSSObject;\n\t\thighlightOnHoverStyle?: CSSObject;\n\t\tstripedStyle?: CSSObject;\n\t};\n\texpanderRow?: {\n\t\tstyle: CSSObject;\n\t};\n\texpanderCell?: {\n\t\tstyle: CSSObject;\n\t};\n\texpanderButton?: {\n\t\tstyle: CSSObject;\n\t};\n\tpagination?: {\n\t\tstyle?: CSSObject;\n\t\tpageButtonsStyle?: CSSObject;\n\t};\n\tfooter?: {\n\t\tstyle?: CSSObject;\n\t};\n\tfooterCells?: {\n\t\tstyle?: CSSObject;\n\t};\n\tnoData?: {\n\t\tstyle: CSSObject;\n\t};\n\tprogress?: {\n\t\tstyle: CSSObject;\n\t};\n}\n\nexport interface PaginationOptions {\n\tnoRowsPerPage?: boolean;\n\trowsPerPageText?: string;\n\trangeSeparatorText?: string;\n\tselectAllRowsItem?: boolean;\n\tselectAllRowsItemText?: string;\n}\n\n/**\n * @deprecated Use `Localization['filter']` instead. Will be removed in v9.\n */\nexport type ColumnFilterOptions = NonNullable<Localization['filter']>;\n\n/**\n * @deprecated Use `Localization['expandable']` instead. Will be removed in v9.\n */\nexport type ExpandableRowsOptions = NonNullable<Localization['expandable']>;\n\n/** All user-visible strings rendered by DataTable, grouped by feature area. */\nexport interface Localization {\n\tpagination?: {\n\t\t/** aria-label for the pagination nav element. Default: \"Table pagination\" */\n\t\tnavigationAriaLabel?: string;\n\t\t/** aria-label for the First Page button. Default: \"First Page\" */\n\t\tfirstPageAriaLabel?: string;\n\t\t/** aria-label for the Previous Page button. Default: \"Previous Page\" */\n\t\tpreviousPageAriaLabel?: string;\n\t\t/** aria-label for the Next Page button. Default: \"Next Page\" */\n\t\tnextPageAriaLabel?: string;\n\t\t/** aria-label for the Last Page button. Default: \"Last Page\" */\n\t\tlastPageAriaLabel?: string;\n\t};\n\tfilter?: {\n\t\t/** aria-label for the filter icon button when no filter is active. Default: \"Filter column\" */\n\t\tfilterColumnAriaLabel?: string;\n\t\t/** aria-label for the filter icon button when a filter is active. Default: \"Filter active\" */\n\t\tfilterActiveAriaLabel?: string;\n\t\t/** aria-label for the filter panel dialog. Default: \"Column filter\" */\n\t\tfilterPanelAriaLabel?: string;\n\t\t/** aria-label for the operator select element. Default: \"Filter operator\" */\n\t\toperatorAriaLabel?: string;\n\t\t/** Placeholder for the first value input. Default: \"Value\" */\n\t\tvaluePlaceholder?: string;\n\t\t/** aria-label for the first value input. Default: \"Filter value\" */\n\t\tvalueAriaLabel?: string;\n\t\t/** Placeholder for the second value input. Default: \"Value\" */\n\t\tvalue2Placeholder?: string;\n\t\t/** aria-label for the second value input (between operator). Default: \"Filter second value\" */\n\t\tvalue2AriaLabel?: string;\n\t\t/** Separator text between the two inputs for the \"between\" operator. Default: \"and\" */\n\t\tbetweenSeparatorText?: string;\n\t\t/** aria-label for the remove-condition button. Default: \"Remove condition\" */\n\t\tremoveConditionAriaLabel?: string;\n\t\t/** aria-label for the add-condition button. Default: \"Add a second filter condition\" */\n\t\taddConditionAriaLabel?: string;\n\t\t/** Label for the add-condition button. Default: \"+ Add condition\" */\n\t\taddConditionLabel?: string;\n\t\t/** Label for the Clear button. Default: \"Clear\" */\n\t\tclearLabel?: string;\n\t\t/** Label for the Apply button. Default: \"Apply\" */\n\t\tapplyLabel?: string;\n\t\t/** Label for the AND logic button. Default: \"AND\" */\n\t\tandLabel?: string;\n\t\t/** Label for the OR logic button. Default: \"OR\" */\n\t\torLabel?: string;\n\t\t/** Labels for filter operators. */\n\t\toperators?: {\n\t\t\tcontains?: string;\n\t\t\tnotContains?: string;\n\t\t\tequals?: string;\n\t\t\tnotEquals?: string;\n\t\t\tstartsWith?: string;\n\t\t\tendsWith?: string;\n\t\t\tblank?: string;\n\t\t\tnotBlank?: string;\n\t\t\tgt?: string;\n\t\t\tgte?: string;\n\t\t\tlt?: string;\n\t\t\tlte?: string;\n\t\t\tbetween?: string;\n\t\t\tbefore?: string;\n\t\t\tafter?: string;\n\t\t};\n\t};\n\texpandable?: {\n\t\t/** aria-label for the expand button. Default: \"Expand Row\" */\n\t\texpandRowAriaLabel?: string;\n\t\t/** aria-label for the collapse button. Default: \"Collapse Row\" */\n\t\tcollapseRowAriaLabel?: string;\n\t};\n}\n\nexport interface PaginationServerOptions {\n\tpersistSelectedOnSort?: boolean;\n\tpersistSelectedOnPageChange?: boolean;\n}\n\nexport interface ExpandableIcon {\n\tcollapsed: React.ReactNode;\n\texpanded: React.ReactNode;\n}\n\nexport interface ThemeIcons {\n\t/** Replaces the built-in CSS-arrow sort indicator on sortable columns. */\n\tsort?: React.ReactNode;\n\t/** Replaces the built-in expand/collapse chevrons on expandable rows. */\n\texpandable?: Partial<ExpandableIcon>;\n\t/** Replaces individual built-in pagination navigation icons. */\n\tpagination?: Partial<PaginationIcons>;\n}\n\nexport type TableState<T> = {\n\tallSelected: boolean;\n\tselectedCount: number;\n\tselectedRows: T[];\n\tselectedColumn: TableColumn<T>;\n\tsortDirection: SortOrder;\n\t/** Full sort configuration in priority order. The primary entry mirrors\n\t *  `selectedColumn`/`sortDirection`. Empty when nothing is sorted. */\n\tsortColumns: SortColumn<T>[];\n\tcurrentPage: number;\n\trowsPerPage: number;\n\tselectedRowsFlag: boolean;\n\t/* server-side pagination and server-side sorting will cause selectedRows to change\n\t because of this behavior onSelectedRowsChange useEffect is triggered (by design it should notify if there was a change)\n\t however, when using selectableRowsSingle\n\t*/\n\ttoggleOnSelectedRowsChange: boolean;\n\t/** True when currentPage was reset to 1 as a side-effect of SORT_CHANGE.\n\t * Used to suppress the onChangePage callback so only onSort fires. */\n\tsortTriggeredPageReset: boolean;\n};\n\n// Theming\ntype ThemeText = {\n\tprimary: string;\n\tsecondary: string;\n\tdisabled: string;\n};\n\ntype ThemeBackground = {\n\tdefault: string;\n\t/** Optional separate background for column header rows. Falls back to `default`. */\n\theader?: string;\n\t/** Optional separate background for the footer row. Falls back to `default`. */\n\tfooter?: string;\n};\n\ntype ThemeContext = {\n\tbackground: string;\n\ttext: string;\n};\n\ntype ThemeDivider = {\n\tdefault: string;\n};\n\ntype ThemeButton = {\n\tdefault: string;\n\tfocus: string;\n\thover: string;\n\tdisabled: string;\n};\n\ntype ThemeSelected = {\n\tdefault: string;\n\ttext: string;\n};\n\ntype ThemeHighlightOnHover = {\n\tdefault: string;\n\ttext: string;\n};\n\ntype ThemeStriped = {\n\tdefault: string;\n\ttext: string;\n};\n\ntype ThemeSpacing = {\n\t/** Height of body rows. Maps to --rdt-row-height. */\n\trowHeight?: string;\n\t/** Height of the header row. Maps to --rdt-header-height. */\n\theaderHeight?: string;\n\t/** Horizontal cell padding. Maps to --rdt-cell-padding-x. */\n\tcellPaddingX?: string;\n\t/** Size of pagination nav icons. Maps to --rdt-icon-size. */\n\ticonSize?: string;\n};\n\ntype ThemeTypography = {\n\t/** Body cell font size. Maps to --rdt-font-size. */\n\tfontSize?: string;\n\t/** Header cell font size. Maps to --rdt-font-size-header. */\n\tfontSizeHeader?: string;\n\t/** Font family for the whole table. Maps to --rdt-font-family. */\n\tfontFamily?: string;\n};\n\ntype ThemeShape = {\n\t/** Border radius used for interactive elements (filter panel, resize handle, etc.). Maps to --rdt-border-radius. */\n\tborderRadius?: string;\n};\n\nexport type Themes = string;\nexport type ThemeProp = string | Partial<Theme> | Record<string, string>;\n\n/** Which color palette the table uses. 'system' auto-detects from prefers-color-scheme and html.dark. */\nexport type ColorMode = 'light' | 'dark' | 'system';\n\n/** Color-only overrides applied when the resolved color mode is dark. */\nexport type DarkModeColors = {\n\tprimary?: string;\n\ttext?: Partial<ThemeText>;\n\tbackground?: Partial<ThemeBackground>;\n\tcontext?: Partial<ThemeContext>;\n\tdivider?: Partial<ThemeDivider>;\n\tbutton?: Partial<ThemeButton>;\n\tselected?: Partial<ThemeSelected>;\n\thighlightOnHover?: Partial<ThemeHighlightOnHover>;\n\tstriped?: Partial<ThemeStriped>;\n};\n\nexport interface Theme {\n\tprimary?: string;\n\ttext: ThemeText;\n\tbackground: ThemeBackground;\n\tcontext: ThemeContext;\n\tdivider: ThemeDivider;\n\tbutton: ThemeButton;\n\tselected: ThemeSelected;\n\thighlightOnHover: ThemeHighlightOnHover;\n\tstriped: ThemeStriped;\n\t/** Sets CSS color-scheme so native form controls render correctly in the active mode. */\n\tcolorScheme?: 'light' | 'dark';\n\t/** Dark-mode color overrides. Used automatically when colorMode resolves to 'dark'. */\n\tdarkMode?: DarkModeColors;\n\t/** Controls row/header height and cell padding. */\n\tspacing?: ThemeSpacing;\n\t/** Controls font size and family. */\n\ttypography?: ThemeTypography;\n\t/** Controls border radius on interactive elements. */\n\tshape?: ThemeShape;\n\t/** Icon overrides — replaces built-in sort, expand, and pagination icons. */\n\ticons?: ThemeIcons;\n\t/** Checkbox appearance — controls the CSS variables for the built-in CSS checkbox. */\n\tcheckbox?: { size?: string; borderRadius?: string };\n\t/**\n\t * Default header column separator behaviour for this theme.\n\t * The `headerSeparator` prop overrides this when explicitly passed.\n\t * Omitting both falls back to `'subtle'`.\n\t */\n\theaderSeparator?: boolean | 'subtle' | 'full';\n\t/**\n\t * Default body column separator behaviour for this theme.\n\t * The `columnSeparator` prop overrides this when explicitly passed.\n\t * Omitting both falls back to `false` (no separator).\n\t */\n\tcolumnSeparator?: boolean | 'subtle' | 'full';\n}\n\n// Reducer Actions\nexport interface AllRowsAction<T> {\n\ttype: 'SELECT_ALL_ROWS';\n\tkeyField: string;\n\trows: T[];\n\trowCount: number;\n\tmergeSelections: boolean;\n}\n\nexport interface SingleRowAction<T> {\n\ttype: 'SELECT_SINGLE_ROW';\n\tkeyField: string;\n\trow: T;\n\tisSelected: boolean;\n\trowCount: number;\n\tsingleSelect: boolean;\n}\n\nexport interface RangeRowAction<T> {\n\ttype: 'SELECT_RANGE';\n\tkeyField: string;\n\t/** Rows in the range (inclusive of both endpoints), in visible order. */\n\trangeRows: T[];\n\t/** Total row count for `allSelected` calculation. */\n\trowCount: number;\n\t/** Target state for all rows in the range — derived from the anchor row's selected state. */\n\tselect: boolean;\n\t/** Rows that cannot be toggled (returned by selectableRowDisabled). */\n\tdisabledRows?: T[];\n}\n\nexport interface MultiRowAction<T> {\n\ttype: 'SELECT_MULTIPLE_ROWS';\n\tkeyField: string;\n\tselectedRows: T[];\n\ttotalRows: number;\n\tmergeSelections: boolean;\n}\n\nexport interface SortAction<T> {\n\ttype: 'SORT_CHANGE';\n\tselectedColumn: TableColumn<T>;\n\tclearSelectedOnSort: boolean;\n\t/** When true, add/update this column in the existing sort instead of replacing it. */\n\tadditive: boolean;\n\t/** Direction a freshly clicked column sorts in first (from `defaultSortAsc`). */\n\tdefaultSortDirection: SortOrder;\n}\n\nexport interface PaginationPageAction {\n\ttype: 'CHANGE_PAGE';\n\tpage: number;\n\tpaginationServer: boolean;\n\tvisibleOnly: boolean;\n\tpersistSelectedOnPageChange: boolean;\n}\n\nexport interface PaginationRowsPerPageAction {\n\ttype: 'CHANGE_ROWS_PER_PAGE';\n\trowsPerPage: number;\n\tpage: number;\n}\n\nexport interface ClearSelectedRowsAction {\n\ttype: 'CLEAR_SELECTED_ROWS';\n\tselectedRowsFlag: boolean;\n}\n\nexport interface ClearSortAction<T> {\n\ttype: 'CLEAR_SORT';\n\tdefaultSortColumn: TableColumn<T>;\n\tdefaultSortDirection: SortOrder;\n}\n\nexport type Action<T> =\n\t| AllRowsAction<T>\n\t| SingleRowAction<T>\n\t| RangeRowAction<T>\n\t| MultiRowAction<T>\n\t| SortAction<T>\n\t| PaginationPageAction\n\t| PaginationRowsPerPageAction\n\t| ClearSelectedRowsAction\n\t| ClearSortAction<T>;\n","export const STOP_PROP_TAG = 'allowRowEvents';\n\n/**\n * Default width (in px) used for system columns (checkbox / expander) when\n * computing pinned-column sticky offsets. Mirrors the flex: 0 0 48px rule\n * in DataTable.css. Themes that override the checkbox/expander cell width\n * via customStyles.cellCheckbox / customStyles.cellExpander should also set\n * --rdt-system-col-width on the table root for pinning to remain aligned.\n */\nexport const SYSTEM_COL_WIDTH = 48;\n\nexport enum Direction {\n\tLTR = 'ltr',\n\tRTL = 'rtl',\n\tAUTO = 'auto',\n}\n\nexport enum Alignment {\n\tLEFT = 'left',\n\tRIGHT = 'right',\n\tCENTER = 'center',\n}\n\nexport enum Media {\n\tSM = 'sm',\n\tMD = 'md',\n\tLG = 'lg',\n}\n","import { SortOrder } from './types';\nimport { SYSTEM_COL_WIDTH } from './constants';\nimport type { CSSObject, ConditionalStyles, TableColumn, Format, TableRow, Selector, SortFunction } from './types';\n\nfunction isPlainObject(val: unknown): val is Record<string, unknown> {\n\treturn val !== null && typeof val === 'object' && !Array.isArray(val);\n}\n\nexport function mergeDeep<T extends object>(target: T, source: Partial<T>): T {\n\tconst output = { ...target };\n\tfor (const key of Object.keys(source) as (keyof T)[]) {\n\t\tconst srcVal = source[key];\n\t\tconst tgtVal = output[key];\n\t\tif (isPlainObject(srcVal) && isPlainObject(tgtVal)) {\n\t\t\toutput[key] = mergeDeep(tgtVal as object, srcVal as object) as T[keyof T];\n\t\t} else if (srcVal !== undefined) {\n\t\t\toutput[key] = srcVal as T[keyof T];\n\t\t}\n\t}\n\treturn output;\n}\n\nexport function prop<T, K extends keyof T>(obj: T, key: K): T[K] {\n\treturn obj[key];\n}\n\nexport function isEmpty(field: string | number | undefined = ''): boolean {\n\tif (typeof field === 'number') {\n\t\treturn false;\n\t}\n\n\treturn !field || field.length === 0;\n}\n\nexport function sort<T>(\n\trows: T[],\n\tselector: Selector<T> | null | undefined,\n\tdirection: SortOrder,\n\tsortFn?: SortFunction<T> | null,\n): T[] {\n\tif (!selector) {\n\t\treturn rows;\n\t}\n\n\tif (sortFn && typeof sortFn === 'function') {\n\t\t// we must create a new rows reference\n\t\treturn sortFn(rows.slice(0), selector, direction);\n\t}\n\n\treturn rows.slice(0).sort((a: T, b: T) => {\n\t\tconst aValue = selector(a);\n\t\tconst bValue = selector(b);\n\n\t\tif (direction === 'asc') {\n\t\t\tif (aValue < bValue) {\n\t\t\t\treturn -1;\n\t\t\t}\n\n\t\t\tif (aValue > bValue) {\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t}\n\n\t\tif (direction === 'desc') {\n\t\t\tif (aValue > bValue) {\n\t\t\t\treturn -1;\n\t\t\t}\n\n\t\t\tif (aValue < bValue) {\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t}\n\n\t\treturn 0;\n\t});\n}\n\n/**\n * Stable multi-column sort. Compares rows by each sort column in priority order,\n * falling back to the next column when the current one ties. Honors each column's\n * `sortFunction` when provided, otherwise compares its `selector` value.\n */\nexport function multiSort<T>(rows: T[], sortColumns: { column: TableColumn<T>; sortDirection: SortOrder }[]): T[] {\n\tif (sortColumns.length === 0) {\n\t\treturn rows;\n\t}\n\n\treturn rows\n\t\t.map((row, index) => ({ row, index }))\n\t\t.sort((a, b) => {\n\t\t\tfor (const { column, sortDirection } of sortColumns) {\n\t\t\t\tconst flip = sortDirection === SortOrder.ASC ? 1 : -1;\n\n\t\t\t\tif (column.sortFunction && typeof column.sortFunction === 'function') {\n\t\t\t\t\tconst result = column.sortFunction(a.row, b.row);\n\t\t\t\t\tif (result !== 0) {\n\t\t\t\t\t\treturn result * flip;\n\t\t\t\t\t}\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tconst selector = column.selector as Selector<T> | undefined;\n\t\t\t\tif (!selector) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tconst aValue = selector(a.row);\n\t\t\t\tconst bValue = selector(b.row);\n\n\t\t\t\tif (aValue < bValue) {\n\t\t\t\t\treturn -1 * flip;\n\t\t\t\t}\n\t\t\t\tif (aValue > bValue) {\n\t\t\t\t\treturn 1 * flip;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Stable tiebreaker: preserve the original order.\n\t\t\treturn a.index - b.index;\n\t\t})\n\t\t.map(({ row }) => row);\n}\n\nexport function getProperty<T>(\n\trow: T,\n\tselector: ((row: T, rowIndex?: number) => React.ReactNode) | undefined | null,\n\tformat: Format<T> | undefined | null,\n\trowIndex: number,\n): React.ReactNode {\n\tif (!selector) {\n\t\treturn null;\n\t}\n\n\t// format will override how the selector is displayed but the original dataset is used for sorting\n\tif (format && typeof format === 'function') {\n\t\treturn format(row, rowIndex);\n\t}\n\n\treturn selector(row, rowIndex);\n}\n\nexport function insertItem<T>(array: T[] = [], item: T, index = 0): T[] {\n\treturn [...array.slice(0, index), item, ...array.slice(index)];\n}\n\nexport function removeItem<T>(array: T[] = [], item: T, keyField = 'id'): T[] {\n\tconst newArray = array.slice();\n\tconst outerField = prop(item as TableRow, keyField);\n\n\tif (outerField) {\n\t\tnewArray.splice(\n\t\t\tnewArray.findIndex((a: T) => {\n\t\t\t\tconst innerField = prop(a as TableRow, keyField);\n\n\t\t\t\treturn innerField === outerField;\n\t\t\t}),\n\t\t\t1,\n\t\t);\n\t} else {\n\t\tnewArray.splice(\n\t\t\tnewArray.findIndex(a => a === item),\n\t\t\t1,\n\t\t);\n\t}\n\n\treturn newArray;\n}\n\n// Make sure columns have unique id's\nexport function decorateColumns<T>(columns: TableColumn<T>[]): TableColumn<T>[] {\n\treturn columns.map((column, index) => {\n\t\tconst decoratedColumn: TableColumn<T> = {\n\t\t\t...column,\n\t\t\tsortable: column.sortable || !!column.sortFunction || undefined,\n\t\t};\n\n\t\tif (!column.id) {\n\t\t\tdecoratedColumn.id = index + 1;\n\n\t\t\treturn decoratedColumn;\n\t\t}\n\n\t\treturn decoratedColumn;\n\t});\n}\n\nexport function getSortDirection(ascDirection: boolean | undefined = false): SortOrder {\n\treturn ascDirection ? SortOrder.ASC : SortOrder.DESC;\n}\n\nexport function handleFunctionProps(\n\tobject: { [key: string]: unknown },\n\t...args: unknown[]\n): { [key: string]: unknown } {\n\tlet newObject;\n\n\tObject.keys(object)\n\t\t.map(o => object[o])\n\t\t.forEach((value, index) => {\n\t\t\tconst oldObject = object;\n\n\t\t\tif (typeof value === 'function') {\n\t\t\t\tnewObject = { ...oldObject, [Object.keys(object)[index]]: value(...args) };\n\t\t\t\t// delete oldObject[value];\n\t\t\t}\n\t\t});\n\n\treturn newObject || object;\n}\n\nexport function getNumberOfPages(rowCount: number, rowsPerPage: number): number {\n\treturn Math.ceil(rowCount / rowsPerPage);\n}\n\nexport function recalculatePage(prevPage: number, nextPage: number): number {\n\treturn Math.min(prevPage, nextPage);\n}\n\nexport const noop = (): null => null;\n\nexport function getConditionalStyle<T>(\n\trow: T,\n\tconditionalRowStyles: ConditionalStyles<T>[] = [],\n\tbaseClassNames: string[] = [],\n): { conditionalStyle: CSSObject; classNames: string } {\n\tlet rowStyle = {};\n\tlet classNames: string[] = [...baseClassNames];\n\n\tif (conditionalRowStyles.length) {\n\t\tconditionalRowStyles.forEach(crs => {\n\t\t\tif (!crs.when || typeof crs.when !== 'function') {\n\t\t\t\tthrow new Error('\"when\" must be defined in the conditional style object and must be function');\n\t\t\t}\n\n\t\t\t// evaluate the field and if true return a the style to be applied\n\t\t\tif (crs.when(row)) {\n\t\t\t\trowStyle = crs.style || {};\n\n\t\t\t\tif (crs.classNames) {\n\t\t\t\t\tclassNames = [...classNames, ...crs.classNames];\n\t\t\t\t}\n\n\t\t\t\tif (typeof crs.style === 'function') {\n\t\t\t\t\trowStyle = crs.style(row) || {};\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\n\treturn { conditionalStyle: rowStyle, classNames: classNames.join(' ') };\n}\n\nexport function isRowSelected<T>(row: T, selectedRows: T[] = [], keyField = 'id'): boolean {\n\t// cast row as TableRow because the property is unknown in advance therefore, typescript will throw an error\n\tconst outerField = prop(row as TableRow, keyField);\n\n\tif (outerField) {\n\t\treturn selectedRows.some(r => {\n\t\t\tconst innerField = prop(r as TableRow, keyField);\n\n\t\t\treturn innerField === outerField;\n\t\t});\n\t}\n\n\treturn selectedRows.some(r => r === row);\n}\n\nexport function isOdd(num: number): boolean {\n\treturn num % 2 === 0;\n}\n\nexport function findColumnIndexById<T>(columns: TableColumn<T>[], id: string | undefined): number {\n\tif (!id) {\n\t\treturn -1;\n\t}\n\n\treturn columns.findIndex(c => {\n\t\treturn equalizeId(c.id, id);\n\t});\n}\n\nexport function equalizeId(a: string | number | undefined, b: string | number | undefined): boolean {\n\treturn a == b;\n}\n\nexport type PinnedOffsets = {\n\tleft: Record<string | number, number>;\n\tright: Record<string | number, number>;\n};\n\nexport const EMPTY_PINNED_OFFSETS: PinnedOffsets = { left: {}, right: {} };\n\nfunction resolveColumnWidth<T>(col: TableColumn<T>, columnWidths: Record<string | number, number>): number {\n\tif (col.id != null && columnWidths[col.id] != null) return columnWidths[col.id];\n\tconst raw = col.width ?? col.minWidth ?? '100px';\n\tconst n = parseFloat(raw);\n\treturn isNaN(n) ? 100 : n;\n}\n\n/**\n * Resolves the system-column width (checkbox/expander cells) from the\n * `--rdt-system-col-width` CSS variable when available, falling back to the\n * default. Reading the var lets themes that customize the checkbox cell width\n * keep pinned columns aligned without code changes to this library.\n */\nfunction resolveSystemColWidth(): number {\n\tif (typeof window === 'undefined' || typeof document === 'undefined') return SYSTEM_COL_WIDTH;\n\tconst root = document.querySelector('.rdt_table') ?? document.documentElement;\n\tconst raw = getComputedStyle(root).getPropertyValue('--rdt-system-col-width').trim();\n\tif (!raw) return SYSTEM_COL_WIDTH;\n\tconst n = parseFloat(raw);\n\treturn isNaN(n) ? SYSTEM_COL_WIDTH : n;\n}\n\nexport function getPinnedOffsets<T>(\n\tcolumns: TableColumn<T>[],\n\tcolumnWidths: Record<string | number, number>,\n\tselectableRows: boolean,\n\texpandableRows: boolean,\n\texpandableRowsHideExpander: boolean,\n): PinnedOffsets {\n\tconst visible = columns.filter(c => !c.omit);\n\tconst hasPinned = visible.some(c => c.pinned);\n\tif (!hasPinned) return EMPTY_PINNED_OFFSETS;\n\n\tconst systemWidth = resolveSystemColWidth();\n\tlet baseLeft = 0;\n\tif (selectableRows) baseLeft += systemWidth;\n\tif (expandableRows && !expandableRowsHideExpander) baseLeft += systemWidth;\n\n\tconst left: Record<string | number, number> = {};\n\tlet leftAcc = baseLeft;\n\tfor (const col of visible.filter(c => c.pinned === 'left')) {\n\t\tif (col.id != null) left[col.id] = leftAcc;\n\t\tleftAcc += resolveColumnWidth(col, columnWidths);\n\t}\n\n\tconst right: Record<string | number, number> = {};\n\tlet rightAcc = 0;\n\tfor (const col of [...visible.filter(c => c.pinned === 'right')].reverse()) {\n\t\tif (col.id != null) right[col.id] = rightAcc;\n\t\trightAcc += resolveColumnWidth(col, columnWidths);\n\t}\n\n\treturn { left, right };\n}\n\nexport function getPinnedTotalWidths<T>(\n\tcolumns: TableColumn<T>[],\n\tcolumnWidths: Record<string | number, number>,\n\tselectableRows: boolean,\n\texpandableRows: boolean,\n\texpandableRowsHideExpander: boolean,\n): { left: number; right: number } {\n\tconst visible = columns.filter(c => !c.omit);\n\tconst hasPinned = visible.some(c => c.pinned);\n\tif (!hasPinned) return { left: 0, right: 0 };\n\n\tconst systemWidth = resolveSystemColWidth();\n\tlet left = 0;\n\tif (selectableRows) left += systemWidth;\n\tif (expandableRows && !expandableRowsHideExpander) left += systemWidth;\n\tfor (const col of visible.filter(c => c.pinned === 'left')) {\n\t\tleft += resolveColumnWidth(col, columnWidths);\n\t}\n\n\tlet right = 0;\n\tfor (const col of visible.filter(c => c.pinned === 'right')) {\n\t\tright += resolveColumnWidth(col, columnWidths);\n\t}\n\n\treturn { left, right };\n}\n\n/**\n * Per-cell pin metadata derived from a column and the current PinnedOffsets.\n * Centralizes the \"is pinned / is edge of pin band / sticky inline style /\n * class names\" calculation so TableCol and TableCell stay in sync.\n */\nexport type PinnedCellMeta = {\n\tpinnedLeft: boolean;\n\tpinnedRight: boolean;\n\tisLastLeftPin: boolean;\n\tisFirstRightPin: boolean;\n\tstyle: React.CSSProperties;\n\tclassName: string;\n};\n\nexport function getPinnedCellMeta<T>(column: TableColumn<T>, pinnedOffsets: PinnedOffsets | undefined): PinnedCellMeta {\n\tconst offsets = pinnedOffsets ?? EMPTY_PINNED_OFFSETS;\n\tconst id = column.id;\n\tconst pinnedLeft = column.pinned === 'left' && id != null && offsets.left[id] != null;\n\tconst pinnedRight = column.pinned === 'right' && id != null && offsets.right[id] != null;\n\n\t// Largest left offset  = rightmost left-pinned column (shadow on its right edge)\n\t// Largest right offset = leftmost right-pinned column (shadow on its left edge)\n\tconst leftValues = pinnedLeft ? Object.values(offsets.left) : [];\n\tconst rightValues = pinnedRight ? Object.values(offsets.right) : [];\n\tconst maxLeft = leftValues.length ? Math.max(...leftValues) : -1;\n\tconst maxRight = rightValues.length ? Math.max(...rightValues) : -1;\n\tconst isLastLeftPin = pinnedLeft && id != null && offsets.left[id] === maxLeft;\n\tconst isFirstRightPin = pinnedRight && id != null && offsets.right[id] === maxRight;\n\n\tconst style: React.CSSProperties = pinnedLeft\n\t\t? { position: 'sticky', left: offsets.left[id!] }\n\t\t: pinnedRight\n\t\t\t? { position: 'sticky', right: offsets.right[id!] }\n\t\t\t: {};\n\n\tconst className = [\n\t\tpinnedLeft && 'rdt_pinLeft',\n\t\tisLastLeftPin && 'rdt_pinLeftLast',\n\t\tpinnedRight && 'rdt_pinRight',\n\t\tisFirstRightPin && 'rdt_pinRightFirst',\n\t]\n\t\t.filter(Boolean)\n\t\t.join(' ');\n\n\treturn { pinnedLeft, pinnedRight, isLastLeftPin, isFirstRightPin, style, className };\n}\n\n/**\n * After a column reorder, reassigns `pinned` based purely on position:\n * - The first N columns (where N = original left-pin count) become `pinned: 'left'`\n * - The last M columns (where M = original right-pin count) become `pinned: 'right'`\n * - Everything between them has `pinned` removed\n *\n * This enforces that pinned columns always form contiguous edges, and that\n * dragging a column into a pinned zone pins it while dragging one out unpins it.\n */\n/**\n * Assigns pin state based on position and explicit pin zones.\n *\n * - All columns at the start with pinned: 'left' remain pinned left.\n * - All columns at the end with pinned: 'right' remain pinned right.\n * - Columns in the middle are unpinned.\n *\n * Optionally, you can pass a pinZoneMap (index -> 'left' | 'right' | undefined) to force pin state by drop.\n */\nexport function normalizePins<T>(\n\tcols: TableColumn<T>[],\n\tpinZoneMap?: Record<number, 'left' | 'right' | undefined>,\n): TableColumn<T>[] {\n\t// If a pinZoneMap is provided, use it to assign pin state\n\tif (pinZoneMap) {\n\t\treturn cols.map((col, i) => {\n\t\t\tconst zone = pinZoneMap[i];\n\t\t\tif (zone) return { ...col, pinned: zone };\n\t\t\tconst { pinned: _removed, ...rest } = col;\n\t\t\treturn rest as TableColumn<T>;\n\t\t});\n\t}\n\n\t// If nothing is pinned, return the original array (preserve reference)\n\tconst leftCount = cols.filter(c => c.pinned === 'left').length;\n\tconst rightCount = cols.filter(c => c.pinned === 'right').length;\n\tif (leftCount === 0 && rightCount === 0) {\n\t\treturn cols;\n\t}\n\n\treturn cols.map((col, i) => {\n\t\tif (i < leftCount) return { ...col, pinned: 'left' };\n\t\tif (rightCount > 0 && i >= cols.length - rightCount) return { ...col, pinned: 'right' };\n\t\tconst { pinned: _removed, ...rest } = col;\n\t\treturn rest as TableColumn<T>;\n\t});\n}\n\n/**\n * Determines the pin zone for a given drop index based on boundaries.\n * leftCount: number of left-pinned columns\n * rightCount: number of right-pinned columns\n * total: total columns\n * Returns: 'left' | 'right' | undefined\n */\nexport function getPinZoneForIndex(\n\tindex: number,\n\tleftCount: number,\n\trightCount: number,\n\ttotal: number,\n): 'left' | 'right' | undefined {\n\tif (index < leftCount) return 'left';\n\tif (index >= total - rightCount) return 'right';\n\treturn undefined;\n}\n","// Credit: https://usehooks.com/useWindowSize/\nimport * as React from 'react';\n\ntype Hook = () => {\n\twidth: number | undefined;\n\theight: number | undefined;\n};\n\nconst useWindowSize: Hook = () => {\n\tconst isClient = typeof window === 'object';\n\n\tfunction getSize() {\n\t\treturn {\n\t\t\twidth: isClient ? window.innerWidth : undefined,\n\t\t\theight: isClient ? window.innerHeight : undefined,\n\t\t};\n\t}\n\n\tconst [windowSize, setWindowSize] = React.useState(getSize);\n\n\tReact.useEffect(() => {\n\t\tif (!isClient) {\n\t\t\treturn () => null;\n\t\t}\n\n\t\tfunction handleResize() {\n\t\t\tsetWindowSize(getSize());\n\t\t}\n\n\t\twindow.addEventListener('resize', handleResize);\n\t\treturn () => window.removeEventListener('resize', handleResize);\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, []);\n\n\treturn windowSize;\n};\n\nexport default useWindowSize;\n","import * as React from 'react';\nimport { Direction } from '../constants';\n\nfunction useRTL(direction: Direction = Direction.AUTO): boolean {\n\tconst isClient = typeof window === 'object';\n\n\tconst [isRTL, setIsRTL] = React.useState(false);\n\n\tReact.useEffect(() => {\n\t\tif (!isClient) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (direction === 'auto') {\n\t\t\tconst canUse = !!(window.document && window.document.createElement);\n\t\t\tconst bodyRTL = <HTMLScriptElement>document.getElementsByTagName('BODY')[0];\n\t\t\tconst htmlTRL = <HTMLScriptElement>document.getElementsByTagName('HTML')[0];\n\t\t\tconst hasRTL = bodyRTL.dir === 'rtl' || htmlTRL.dir === 'rtl';\n\n\t\t\tsetIsRTL(canUse && hasRTL);\n\n\t\t\treturn;\n\t\t}\n\n\t\tsetIsRTL(direction === 'rtl');\n\t}, [direction, isClient]);\n\n\treturn isRTL;\n}\n\nexport default useRTL;\n","import React from 'react';\n\nconst FirstPage: React.FC = () => (\n\t<svg\n\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\twidth=\"24\"\n\t\theight=\"24\"\n\t\tviewBox=\"0 0 24 24\"\n\t\tfill=\"none\"\n\t\tstroke=\"currentColor\"\n\t\tstrokeWidth=\"1.5\"\n\t\tstrokeLinecap=\"round\"\n\t\tstrokeLinejoin=\"round\"\n\t\taria-hidden=\"true\"\n\t\trole=\"presentation\"\n\t>\n\t\t<path d=\"M5 6V18\" />\n\t\t<path d=\"M15 18L9 12L15 6\" />\n\t</svg>\n);\n\nexport default FirstPage;\n","import React from 'react';\n\nconst LastPage: React.FC = () => (\n\t<svg\n\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\twidth=\"24\"\n\t\theight=\"24\"\n\t\tviewBox=\"0 0 24 24\"\n\t\tfill=\"none\"\n\t\tstroke=\"currentColor\"\n\t\tstrokeWidth=\"1.5\"\n\t\tstrokeLinecap=\"round\"\n\t\tstrokeLinejoin=\"round\"\n\t\taria-hidden=\"true\"\n\t\trole=\"presentation\"\n\t>\n\t\t<path d=\"M19 6V18\" />\n\t\t<path d=\"M9 18L15 12L9 6\" />\n\t</svg>\n);\n\nexport default LastPage;\n","import React from 'react';\n\nconst Left: React.FC = () => (\n\t<svg\n\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\twidth=\"24\"\n\t\theight=\"24\"\n\t\tviewBox=\"0 0 24 24\"\n\t\tfill=\"none\"\n\t\tstroke=\"currentColor\"\n\t\tstrokeWidth=\"1.5\"\n\t\tstrokeLinecap=\"round\"\n\t\tstrokeLinejoin=\"round\"\n\t\taria-hidden=\"true\"\n\t\trole=\"presentation\"\n\t>\n\t\t<path d=\"M15 18L9 12L15 6\" />\n\t</svg>\n);\n\nexport default Left;\n","import React from 'react';\n\nconst Right: React.FC = () => (\n\t<svg\n\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\twidth=\"24\"\n\t\theight=\"24\"\n\t\tviewBox=\"0 0 24 24\"\n\t\tfill=\"none\"\n\t\tstroke=\"currentColor\"\n\t\tstrokeWidth=\"1.5\"\n\t\tstrokeLinecap=\"round\"\n\t\tstrokeLinejoin=\"round\"\n\t\taria-hidden=\"true\"\n\t\trole=\"presentation\"\n\t>\n\t\t<path d=\"M9 18L15 12L9 6\" />\n\t</svg>\n);\n\nexport default Right;\n","import React from 'react';\n\nconst ExpanderCollapsedIcon: React.FC = () => (\n\t<svg\n\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\twidth=\"24\"\n\t\theight=\"24\"\n\t\tviewBox=\"0 0 24 24\"\n\t\tfill=\"none\"\n\t\tstroke=\"currentColor\"\n\t\tstrokeWidth=\"1.5\"\n\t\tstrokeLinecap=\"round\"\n\t\tstrokeLinejoin=\"round\"\n\t\taria-hidden=\"true\"\n\t\trole=\"presentation\"\n\t>\n\t\t<path d=\"M9 18L15 12L9 6\" />\n\t</svg>\n);\n\nexport default ExpanderCollapsedIcon;\n","import React from 'react';\n\nconst ExpanderExpandedIcon: React.FC = () => (\n\t<svg\n\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\twidth=\"24\"\n\t\theight=\"24\"\n\t\tviewBox=\"0 0 24 24\"\n\t\tfill=\"none\"\n\t\tstroke=\"currentColor\"\n\t\tstrokeWidth=\"1.5\"\n\t\tstrokeLinecap=\"round\"\n\t\tstrokeLinejoin=\"round\"\n\t\taria-hidden=\"true\"\n\t\trole=\"presentation\"\n\t>\n\t\t<path d=\"M18 9L12 15L6 9\" />\n\t</svg>\n);\n\nexport default ExpanderExpandedIcon;\n","import React from 'react';\nimport FirstPageIcon from './icons/FirstPage';\nimport LastPageIcon from './icons/LastPage';\nimport LeftIcon from './icons/Left';\nimport RightIcon from './icons/Right';\nimport ExpanderCollapsedIcon from './icons/ExpanderCollapsedIcon';\nimport ExpanderExpandedIcon from './icons/ExpanderExpandedIcon';\nimport { noop } from './util';\nimport { Alignment, Direction } from './constants';\nimport type { PaginationIcons, ExpandableIcon } from './types';\n\nexport const DEFAULT_PAGINATION_ICONS: Required<PaginationIcons> = {\n\tfirst: <FirstPageIcon />,\n\tlast: <LastPageIcon />,\n\tnext: <RightIcon />,\n\tprevious: <LeftIcon />,\n};\n\nexport const DEFAULT_EXPANDABLE_ICON: Required<ExpandableIcon> = {\n\tcollapsed: <ExpanderCollapsedIcon />,\n\texpanded: <ExpanderExpandedIcon />,\n};\n\nexport const defaultProps = {\n\tcolumns: [],\n\tdata: [],\n\ttitle: '',\n\tkeyField: 'id',\n\tselectableRows: false,\n\tselectableRowsHighlight: false,\n\tselectableRowsNoSelectAll: false,\n\tselectableRowSelected: null,\n\tselectableRowDisabled: null,\n\tselectableRowsComponent: 'input' as const,\n\tselectableRowsComponentProps: {},\n\tselectableRowsVisibleOnly: false,\n\tselectableRowsSingle: false,\n\tclearSelectedRows: false,\n\texpandableRows: false,\n\texpandableRowDisabled: null,\n\texpandableRowExpanded: null,\n\texpandOnRowClicked: false,\n\texpandableRowsHideExpander: false,\n\texpandOnRowDoubleClicked: false,\n\texpandableInheritConditionalStyles: false,\n\texpandableRowsComponent: function DefaultExpander(): JSX.Element {\n\t\treturn (\n\t\t\t<div>\n\t\t\t\tTo add an expander pass in a component instance via <strong>expandableRowsComponent</strong>. You can then\n\t\t\t\taccess props.data from this component.\n\t\t\t</div>\n\t\t);\n\t},\n\texpandableIcon: DEFAULT_EXPANDABLE_ICON,\n\texpandableRowsComponentProps: {},\n\tprogressPending: false,\n\tprogressComponent: (\n\t\t<div\n\t\t\tstyle={{\n\t\t\t\twidth: 28,\n\t\t\t\theight: 28,\n\t\t\t\tborderRadius: '50%',\n\t\t\t\tborder: '3px solid var(--rdt-color-divider, rgba(0,0,0,0.12))',\n\t\t\t\tborderTopColor: 'var(--rdt-color-text-primary, rgba(0,0,0,0.87))',\n\t\t\t\tanimation: 'rdt_spin 0.7s linear infinite',\n\t\t\t}}\n\t\t/>\n\t),\n\tpersistTableHead: false,\n\tsortIcon: null,\n\tsortFunction: null,\n\tsortServer: false,\n\tsortMulti: false,\n\tstriped: false,\n\thighlightOnHover: false,\n\tpointerOnHover: false,\n\tactions: null,\n\tdefaultSortFieldId: null,\n\tdefaultSortAsc: true,\n\tresponsive: true,\n\tnoDataComponent: <div style={{ padding: '24px' }}>There are no records to display</div>,\n\tdisabled: false,\n\tnoTableHead: false,\n\tnoHeader: false,\n\tsubHeader: undefined,\n\tsubHeaderAlign: Alignment.RIGHT,\n\tsubHeaderWrap: true,\n\tfixedHeader: false,\n\tfixedHeaderScrollHeight: '100vh',\n\tpagination: false,\n\tpaginationServer: false,\n\tpaginationServerOptions: {\n\t\tpersistSelectedOnSort: false,\n\t\tpersistSelectedOnPageChange: false,\n\t},\n\tpaginationDefaultPage: 1,\n\tpaginationResetDefaultPage: false,\n\tpaginationTotalRows: 0,\n\tpaginationPerPage: 10,\n\tpaginationPosition: 'bottom' as const,\n\tpaginationRowsPerPageOptions: [10, 15, 20, 25, 30],\n\tpaginationComponent: null,\n\tpaginationComponentOptions: {},\n\tpaginationIcons: DEFAULT_PAGINATION_ICONS,\n\tdense: false,\n\tconditionalRowStyles: [],\n\ttheme: 'default' as const,\n\tcolorMode: 'light' as const,\n\tcustomStyles: {},\n\tdirection: Direction.AUTO,\n\tonChangePage: noop,\n\tonChangeRowsPerPage: noop,\n\tonRowClicked: noop,\n\tonRowDoubleClicked: noop,\n\tonRowMiddleClicked: noop,\n\tonRowMouseEnter: noop,\n\tonRowMouseLeave: noop,\n\tonRowExpandToggled: noop,\n\tonSelectedRowsChange: noop,\n\tonSort: noop,\n\tonColumnOrderChange: noop,\n};\n","import * as React from 'react';\nimport '../DataTable.css';\nimport { useStyles } from '../context/StylesContext';\nimport Select from './Select';\nimport { getNumberOfPages } from '../util';\nimport useWindowSize from '../hooks/useWindowSize';\nimport useRTL from '../hooks/useRTL';\nimport { Direction } from '../constants';\nimport type { PaginationIcons, PaginationOptions, PaginationChangePage, Localization } from '../types';\nimport { defaultProps, DEFAULT_PAGINATION_ICONS } from '../defaultProps';\n\nconst defaultComponentOptions = {\n\trowsPerPageText: 'Rows per page:',\n\trangeSeparatorText: 'of',\n\tnoRowsPerPage: false,\n\tselectAllRowsItem: false,\n\tselectAllRowsItemText: 'All',\n};\n\ninterface PaginationProps {\n\trowsPerPage: number;\n\trowCount: number;\n\tcurrentPage: number;\n\tdirection?: Direction;\n\tpaginationRowsPerPageOptions?: number[];\n\tpaginationIcons?: PaginationIcons;\n\tpaginationComponentOptions?: PaginationOptions;\n\tlocalization?: Localization['pagination'];\n\tonChangePage: PaginationChangePage;\n\tonChangeRowsPerPage: (numRows: number, currentPage: number) => void;\n}\n\nfunction Pagination({\n\trowsPerPage,\n\trowCount,\n\tcurrentPage,\n\tdirection = defaultProps.direction,\n\tpaginationRowsPerPageOptions = defaultProps.paginationRowsPerPageOptions,\n\tpaginationIcons = DEFAULT_PAGINATION_ICONS,\n\tpaginationComponentOptions = defaultProps.paginationComponentOptions,\n\tlocalization,\n\tonChangeRowsPerPage = defaultProps.onChangeRowsPerPage,\n\tonChangePage = defaultProps.onChangePage,\n}: PaginationProps): JSX.Element {\n\tconst windowSize = useWindowSize();\n\tconst isRTL = useRTL(direction);\n\tconst shouldShow = windowSize.width && windowSize.width > 599;\n\tconst numPages = getNumberOfPages(rowCount, rowsPerPage);\n\tconst lastIndex = currentPage * rowsPerPage;\n\tconst firstIndex = lastIndex - rowsPerPage + 1;\n\tconst disabledLesser = currentPage === 1;\n\tconst disabledGreater = currentPage === numPages;\n\tconst options = { ...defaultComponentOptions, ...paginationComponentOptions };\n\tconst range =\n\t\tcurrentPage === numPages\n\t\t\t? `${firstIndex}-${rowCount} ${options.rangeSeparatorText} ${rowCount}`\n\t\t\t: `${firstIndex}-${lastIndex} ${options.rangeSeparatorText} ${rowCount}`;\n\n\tconst icons = { ...DEFAULT_PAGINATION_ICONS, ...paginationIcons };\n\n\tconst handlePrevious = React.useCallback(\n\t\t() => onChangePage(currentPage - 1, rowCount),\n\t\t[currentPage, onChangePage, rowCount],\n\t);\n\tconst handleNext = React.useCallback(\n\t\t() => onChangePage(currentPage + 1, rowCount),\n\t\t[currentPage, onChangePage, rowCount],\n\t);\n\tconst handleFirst = React.useCallback(() => onChangePage(1, rowCount), [onChangePage, rowCount]);\n\tconst handleLast = React.useCallback(\n\t\t() => onChangePage(getNumberOfPages(rowCount, rowsPerPage), rowCount),\n\t\t[onChangePage, rowCount, rowsPerPage],\n\t);\n\tconst handleRowsPerPage = React.useCallback(\n\t\t(e: React.ChangeEvent<HTMLSelectElement>) => onChangeRowsPerPage(Number(e.target.value), currentPage),\n\t\t[currentPage, onChangeRowsPerPage],\n\t);\n\n\tconst selectOptions = paginationRowsPerPageOptions.map((num: number) => (\n\t\t<option key={num} value={num}>\n\t\t\t{num}\n\t\t</option>\n\t));\n\n\tif (options.selectAllRowsItem) {\n\t\tselectOptions.push(\n\t\t\t<option key={-1} value={rowCount}>\n\t\t\t\t{options.selectAllRowsItemText}\n\t\t\t</option>,\n\t\t);\n\t}\n\n\tconst customStyles = useStyles();\n\n\tconst select = (\n\t\t<Select onChange={handleRowsPerPage} defaultValue={rowsPerPage} aria-label={options.rowsPerPageText}>\n\t\t\t{selectOptions}\n\t\t</Select>\n\t);\n\n\tconst btnClass = (rtl: boolean) =>\n\t\t['rdt_paginationButton', rtl && 'rdt_paginationButtonRTL'].filter(Boolean).join(' ');\n\n\treturn (\n\t\t<nav\n\t\t\tclassName={['rdt_pagination', 'rdt_Pagination'].join(' ')}\n\t\t\taria-label={localization?.navigationAriaLabel ?? 'Table pagination'}\n\t\t\tstyle={customStyles.pagination?.style}\n\t\t>\n\t\t\t{!options.noRowsPerPage && shouldShow && (\n\t\t\t\t<>\n\t\t\t\t\t<span className=\"rdt_paginationRowLabel\">{options.rowsPerPageText}</span>\n\t\t\t\t\t{select}\n\t\t\t\t</>\n\t\t\t)}\n\t\t\t{shouldShow && <span className=\"rdt_paginationRange\">{range}</span>}\n\t\t\t<div className=\"rdt_paginationPageList\">\n\t\t\t\t<button\n\t\t\t\t\tid=\"pagination-first-page\"\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\taria-label={localization?.firstPageAriaLabel ?? 'First Page'}\n\t\t\t\t\taria-disabled={disabledLesser}\n\t\t\t\t\tonClick={handleFirst}\n\t\t\t\t\tdisabled={disabledLesser}\n\t\t\t\t\tclassName={btnClass(isRTL)}\n\t\t\t\t\tstyle={customStyles.pagination?.pageButtonsStyle}\n\t\t\t\t>\n\t\t\t\t\t{icons.first}\n\t\t\t\t</button>\n\t\t\t\t<button\n\t\t\t\t\tid=\"pagination-previous-page\"\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\taria-label={localization?.previousPageAriaLabel ?? 'Previous Page'}\n\t\t\t\t\taria-disabled={disabledLesser}\n\t\t\t\t\tonClick={handlePrevious}\n\t\t\t\t\tdisabled={disabledLesser}\n\t\t\t\t\tclassName={btnClass(isRTL)}\n\t\t\t\t\tstyle={customStyles.pagination?.pageButtonsStyle}\n\t\t\t\t>\n\t\t\t\t\t{icons.previous}\n\t\t\t\t</button>\n\t\t\t\t{!options.noRowsPerPage && !shouldShow && select}\n\t\t\t\t<button\n\t\t\t\t\tid=\"pagination-next-page\"\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\taria-label={localization?.nextPageAriaLabel ?? 'Next Page'}\n\t\t\t\t\taria-disabled={disabledGreater}\n\t\t\t\t\tonClick={handleNext}\n\t\t\t\t\tdisabled={disabledGreater}\n\t\t\t\t\tclassName={btnClass(isRTL)}\n\t\t\t\t\tstyle={customStyles.pagination?.pageButtonsStyle}\n\t\t\t\t>\n\t\t\t\t\t{icons.next}\n\t\t\t\t</button>\n\t\t\t\t<button\n\t\t\t\t\tid=\"pagination-last-page\"\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\taria-label={localization?.lastPageAriaLabel ?? 'Last Page'}\n\t\t\t\t\taria-disabled={disabledGreater}\n\t\t\t\t\tonClick={handleLast}\n\t\t\t\t\tdisabled={disabledGreater}\n\t\t\t\t\tclassName={btnClass(isRTL)}\n\t\t\t\t\tstyle={customStyles.pagination?.pageButtonsStyle}\n\t\t\t\t>\n\t\t\t\t\t{icons.last}\n\t\t\t\t</button>\n\t\t\t</div>\n\t\t</nav>\n\t);\n}\n\nexport default React.memo(Pagination);\n","import * as React from 'react';\n\n// useLayoutEffect on the client (for DOM measurements), useEffect on the server\n// (no-op during SSR, avoids the React SSR warning).\nconst useIsomorphicLayoutEffect = typeof window !== 'undefined' ? React.useLayoutEffect : React.useEffect;\n\nexport default useIsomorphicLayoutEffect;\n","import * as React from 'react';\nimport '../DataTable.css';\nimport { useStyles } from '../context/StylesContext';\n\ntype HeadProps = React.HTMLAttributes<HTMLDivElement> & { $fixedHeader?: boolean };\n\nexport default function Head({ $fixedHeader, className, style, ...rest }: HeadProps): JSX.Element {\n\tconst customStyles = useStyles();\n\treturn (\n\t\t<div\n\t\t\tclassName={['rdt_head', $fixedHeader && 'rdt_headFixed', className].filter(Boolean).join(' ')}\n\t\t\tstyle={{ ...customStyles.head?.style, ...style }}\n\t\t\t{...rest}\n\t\t/>\n\t);\n}\n","import * as React from 'react';\nimport '../DataTable.css';\nimport { useStyles } from '../context/StylesContext';\n\ntype HeadRowProps = React.HTMLAttributes<HTMLDivElement> & { $dense?: boolean };\n\nconst HeadRow = React.forwardRef<HTMLDivElement, HeadRowProps>(function HeadRow(\n\t{ $dense, className, style, ...rest },\n\tref,\n) {\n\tconst customStyles = useStyles();\n\treturn (\n\t\t<div\n\t\t\tref={ref}\n\t\t\tclassName={['rdt_headRow', $dense && 'rdt_headRowDense', className].filter(Boolean).join(' ')}\n\t\t\tstyle={{ ...customStyles.headRow?.style, ...($dense && customStyles.headRow?.denseStyle), ...style }}\n\t\t\t{...rest}\n\t\t/>\n\t);\n});\n\nexport default HeadRow;\n","import * as React from 'react';\nimport '../DataTable.css';\nimport type { TableColumnBase } from '../types';\n\nexport type CellProps = Pick<\n\tTableColumnBase,\n\t'button' | 'grow' | 'maxWidth' | 'minWidth' | 'width' | 'right' | 'center' | 'compact' | 'hide' | 'allowOverflow'\n>;\n\ntype CellBaseProps = React.HTMLAttributes<HTMLDivElement> & {\n\t$headCell?: boolean;\n\t$noPadding?: boolean;\n\theadStyle?: React.CSSProperties;\n\tcellStyle?: React.CSSProperties;\n};\n\nexport function CellBase({\n\t$headCell,\n\t$noPadding,\n\theadStyle,\n\tcellStyle,\n\tclassName,\n\tstyle,\n\t...rest\n}: CellBaseProps): JSX.Element {\n\tconst baseClass = ['rdt_cellBase', $headCell && 'rdt_cellBaseHead', $noPadding && 'rdt_cellNoPadding', className]\n\t\t.filter(Boolean)\n\t\t.join(' ');\n\treturn <div className={baseClass} style={{ ...($headCell ? headStyle : cellStyle), ...style }} {...rest} />;\n}\n\nexport function buildCellStyle(props: CellProps): React.CSSProperties {\n\tconst { button, grow, maxWidth, minWidth, width, right, center, compact } = props;\n\treturn {\n\t\tflexGrow: grow === 0 || button ? 0 : (grow ?? 1),\n\t\tflexShrink: 0,\n\t\tflexBasis: 0,\n\t\tmaxWidth: width ?? maxWidth ?? '100%',\n\t\tminWidth: width ?? minWidth ?? '100px',\n\t\tjustifyContent: right ? 'flex-end' : center || button ? 'center' : undefined,\n\t\tpadding: compact || button ? 0 : undefined,\n\t};\n}\n\nexport function buildHideClass(hide: CellProps['hide']): string {\n\tif (!hide) return '';\n\tif (hide === 'sm') return 'rdt_hideOnSm';\n\tif (hide === 'md') return 'rdt_hideOnMd';\n\tif (hide === 'lg') return 'rdt_hideOnLg';\n\treturn '';\n}\n\ntype CellExtendedProps = React.HTMLAttributes<HTMLDivElement> &\n\tCellProps & {\n\t\t$headCell?: boolean;\n\t\t$noPadding?: boolean;\n\t\theadStyle?: React.CSSProperties;\n\t\tcellStyle?: React.CSSProperties;\n\t};\n\nexport function CellExtended({\n\tbutton,\n\tgrow,\n\tmaxWidth,\n\tminWidth,\n\twidth,\n\tright,\n\tcenter,\n\tcompact,\n\thide,\n\tallowOverflow,\n\t$headCell,\n\t$noPadding,\n\theadStyle,\n\tcellStyle,\n\tclassName,\n\tstyle,\n\t...rest\n}: CellExtendedProps): JSX.Element {\n\tconst cellProps: CellProps = { button, grow, maxWidth, minWidth, width, right, center, compact, hide, allowOverflow };\n\tconst computedStyle = buildCellStyle(cellProps);\n\tconst hideClass = buildHideClass(hide);\n\tconst baseClass = [\n\t\t'rdt_cellBase',\n\t\t$headCell && 'rdt_cellBaseHead',\n\t\t$noPadding && 'rdt_cellNoPadding',\n\t\thideClass,\n\t\tclassName,\n\t]\n\t\t.filter(Boolean)\n\t\t.join(' ');\n\treturn (\n\t\t<div\n\t\t\tclassName={baseClass}\n\t\t\tstyle={{ ...($headCell ? headStyle : cellStyle), ...computedStyle, ...style }}\n\t\t\t{...rest}\n\t\t/>\n\t);\n}\n","import React from 'react';\nimport { SortOrder } from '../types';\n\ninterface NativeSortIconProps {\n\tsortActive: boolean;\n\tsortDirection: SortOrder;\n}\n\nconst NativeSortIcon: React.FC<NativeSortIconProps> = ({ sortActive, sortDirection }) => (\n\t<svg\n\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\tviewBox=\"0 0 24 24\"\n\t\tfill=\"none\"\n\t\tstroke=\"currentColor\"\n\t\tstrokeWidth=\"2.5\"\n\t\tstrokeLinecap=\"round\"\n\t\tstrokeLinejoin=\"round\"\n\t\taria-hidden=\"true\"\n\t\trole=\"presentation\"\n\t\tstyle={{\n\t\t\tflexGrow: 0,\n\t\t\tflexShrink: 0,\n\t\t\tmarginLeft: '2px',\n\t\t\twidth: 'var(--rdt-sort-icon-size, 12px)',\n\t\t\theight: 'var(--rdt-sort-icon-size, 12px)',\n\t\t\topacity: sortActive ? 1 : 0,\n\t\t\ttransform: sortDirection === SortOrder.DESC ? 'rotate(180deg)' : undefined,\n\t\t\ttransition: 'transform 0.15s ease, opacity 0.15s ease',\n\t\t}}\n\t>\n\t\t<path d=\"M12 19V5M6 11L12 5L18 11\" />\n\t</svg>\n);\n\nexport default NativeSortIcon;\n","import * as React from 'react';\nimport type { TableColumn, FilterState, FilterCondition, FilterOperator, FilterType } from '../types';\n\nexport interface UseColumnFilterResult<T> {\n\tfilterValues: Record<string | number, FilterState>;\n\thandleFilterChange: (columnId: string | number, filter: FilterState) => void;\n\tfilteredData: (data: T[]) => T[];\n}\n\nexport function emptyFilterState(filterType: FilterType = 'text'): FilterState {\n\tconst op: FilterOperator = filterType === 'text' ? 'contains' : 'equals';\n\treturn { condition1: { operator: op } };\n}\n\nfunction isConditionActive(condition: FilterCondition): boolean {\n\tif (condition.operator === 'blank' || condition.operator === 'notBlank') return true;\n\treturn (condition.value?.trim() ?? '') !== '';\n}\n\nexport function isFilterActive(filter: FilterState): boolean {\n\treturn isConditionActive(filter.condition1);\n}\n\nfunction applyCondition(condition: FilterCondition, cellValue: string, filterType: FilterType): boolean {\n\tconst { operator, value = '', value2 = '' } = condition;\n\n\tif (operator === 'blank') return cellValue.trim() === '';\n\tif (operator === 'notBlank') return cellValue.trim() !== '';\n\n\tif (filterType === 'number') {\n\t\tconst num = parseFloat(cellValue);\n\t\tif (isNaN(num)) return false;\n\t\tconst v1 = parseFloat(value);\n\t\tconst v2 = parseFloat(value2);\n\t\tswitch (operator) {\n\t\t\tcase 'equals':\n\t\t\t\treturn num === v1;\n\t\t\tcase 'notEquals':\n\t\t\t\treturn num !== v1;\n\t\t\tcase 'gt':\n\t\t\t\treturn num > v1;\n\t\t\tcase 'gte':\n\t\t\t\treturn num >= v1;\n\t\t\tcase 'lt':\n\t\t\t\treturn num < v1;\n\t\t\tcase 'lte':\n\t\t\t\treturn num <= v1;\n\t\t\tcase 'between':\n\t\t\t\treturn num >= v1 && num <= v2;\n\t\t\tdefault:\n\t\t\t\treturn true;\n\t\t}\n\t}\n\n\tif (filterType === 'date') {\n\t\tconst d = new Date(cellValue);\n\t\tif (isNaN(d.getTime())) return false;\n\t\tconst d1 = new Date(value);\n\t\tconst d2 = new Date(value2);\n\t\tswitch (operator) {\n\t\t\tcase 'equals':\n\t\t\t\treturn d.toDateString() === d1.toDateString();\n\t\t\tcase 'before':\n\t\t\t\treturn d < d1;\n\t\t\tcase 'after':\n\t\t\t\treturn d > d1;\n\t\t\tcase 'between':\n\t\t\t\treturn d >= d1 && d <= d2;\n\t\t\tdefault:\n\t\t\t\treturn true;\n\t\t}\n\t}\n\n\t// text\n\tconst lc = cellValue.toLowerCase();\n\tconst lv = value.toLowerCase();\n\tswitch (operator) {\n\t\tcase 'contains':\n\t\t\treturn lc.includes(lv);\n\t\tcase 'notContains':\n\t\t\treturn !lc.includes(lv);\n\t\tcase 'equals':\n\t\t\treturn lc === lv;\n\t\tcase 'notEquals':\n\t\t\treturn lc !== lv;\n\t\tcase 'startsWith':\n\t\t\treturn lc.startsWith(lv);\n\t\tcase 'endsWith':\n\t\t\treturn lc.endsWith(lv);\n\t\tdefault:\n\t\t\treturn true;\n\t}\n}\n\nfunction rowMatchesFilter<T>(row: T, filter: FilterState, col: TableColumn<T>): boolean {\n\tconst filterType = col.filterType ?? 'text';\n\n\tif (col.filterFunction) return col.filterFunction(row, filter);\n\n\tconst raw = col.selector ? col.selector(row) : '';\n\tconst cellValue = String(raw ?? '');\n\n\tconst r1 = applyCondition(filter.condition1, cellValue, filterType);\n\n\tif (filter.condition2 && isConditionActive(filter.condition2)) {\n\t\tconst r2 = applyCondition(filter.condition2, cellValue, filterType);\n\t\treturn filter.logic === 'OR' ? r1 || r2 : r1 && r2;\n\t}\n\n\treturn r1;\n}\n\nexport default function useColumnFilter<T>(\n\tcolumns: TableColumn<T>[],\n\tcontrolledFilterValues?: Record<string | number, FilterState>,\n\tonFilterChangeProp?: (columnId: string | number, filter: FilterState) => void,\n): UseColumnFilterResult<T> {\n\tconst [internalFilterValues, setInternalFilterValues] = React.useState<Record<string | number, FilterState>>({});\n\tconst filterValues = controlledFilterValues ?? internalFilterValues;\n\n\tconst handleFilterChange = React.useCallback(\n\t\t(columnId: string | number, filter: FilterState) => {\n\t\t\tif (onFilterChangeProp) {\n\t\t\t\tonFilterChangeProp(columnId, filter);\n\t\t\t} else {\n\t\t\t\tsetInternalFilterValues(prev => ({ ...prev, [columnId]: filter }));\n\t\t\t}\n\t\t},\n\t\t[onFilterChangeProp],\n\t);\n\n\tconst activeFilters = React.useMemo(\n\t\t() => (Object.entries(filterValues) as [string, FilterState][]).filter(([, v]) => isFilterActive(v)),\n\t\t[filterValues],\n\t);\n\n\tconst filteredData = React.useCallback(\n\t\t(data: T[]): T[] => {\n\t\t\tif (activeFilters.length === 0) return data;\n\t\t\treturn data.filter(row =>\n\t\t\t\tactiveFilters.every(([colId, filter]) => {\n\t\t\t\t\tconst col = columns.find(c => String(c.id) === colId);\n\t\t\t\t\tif (!col) return true;\n\t\t\t\t\treturn rowMatchesFilter(row, filter, col);\n\t\t\t\t}),\n\t\t\t);\n\t\t},\n\t\t[activeFilters, columns],\n\t);\n\n\treturn { filterValues, handleFilterChange, filteredData };\n}\n","import * as React from 'react';\nimport '../DataTable.css';\nimport type { FilterState, FilterCondition, FilterOperator, FilterType, Localization } from '../types';\n\ntype ColumnFilterOptions = NonNullable<Localization['filter']>;\nimport { emptyFilterState, isFilterActive } from '../hooks/useColumnFilter';\n\ntype OperatorOption = { value: FilterOperator; label: string; noInput?: boolean; twoInputs?: boolean };\n\nconst DEFAULT_TEXT_OPERATORS: OperatorOption[] = [\n\t{ value: 'contains', label: 'Contains' },\n\t{ value: 'notContains', label: 'Does not contain' },\n\t{ value: 'equals', label: 'Equals' },\n\t{ value: 'notEquals', label: 'Does not equal' },\n\t{ value: 'startsWith', label: 'Begins with' },\n\t{ value: 'endsWith', label: 'Ends with' },\n\t{ value: 'blank', label: 'Blank', noInput: true },\n\t{ value: 'notBlank', label: 'Not blank', noInput: true },\n];\n\nconst DEFAULT_NUMBER_OPERATORS: OperatorOption[] = [\n\t{ value: 'equals', label: 'Equals' },\n\t{ value: 'notEquals', label: 'Does not equal' },\n\t{ value: 'gt', label: 'Greater than' },\n\t{ value: 'gte', label: 'Greater than or equal' },\n\t{ value: 'lt', label: 'Less than' },\n\t{ value: 'lte', label: 'Less than or equal' },\n\t{ value: 'between', label: 'Between', twoInputs: true },\n\t{ value: 'blank', label: 'Blank', noInput: true },\n\t{ value: 'notBlank', label: 'Not blank', noInput: true },\n];\n\nconst DEFAULT_DATE_OPERATORS: OperatorOption[] = [\n\t{ value: 'equals', label: 'Equals' },\n\t{ value: 'before', label: 'Before' },\n\t{ value: 'after', label: 'After' },\n\t{ value: 'between', label: 'Between', twoInputs: true },\n\t{ value: 'blank', label: 'Blank', noInput: true },\n\t{ value: 'notBlank', label: 'Not blank', noInput: true },\n];\n\nfunction operatorsFor(filterType: FilterType, overrides?: ColumnFilterOptions['operators']): OperatorOption[] {\n\tconst base =\n\t\tfilterType === 'number'\n\t\t\t? DEFAULT_NUMBER_OPERATORS\n\t\t\t: filterType === 'date'\n\t\t\t\t? DEFAULT_DATE_OPERATORS\n\t\t\t\t: DEFAULT_TEXT_OPERATORS;\n\tif (!overrides) return base;\n\treturn base.map(op => (overrides[op.value] ? { ...op, label: overrides[op.value]! } : op));\n}\n\nfunction defaultOperator(filterType: FilterType): FilterOperator {\n\treturn filterType === 'text' ? 'contains' : 'equals';\n}\n\nfunction emptyCondition(filterType: FilterType): FilterCondition {\n\treturn { operator: defaultOperator(filterType) };\n}\n\ntype ConditionRowProps = {\n\tcondition: FilterCondition;\n\tfilterType: FilterType;\n\toptions: ColumnFilterOptions;\n\tonChange: (next: FilterCondition) => void;\n\tonRemove?: () => void;\n};\n\nfunction ConditionRow({ condition, filterType, options, onChange, onRemove }: ConditionRowProps): JSX.Element {\n\tconst operators = operatorsFor(filterType, options.operators);\n\tconst selected = operators.find(o => o.value === condition.operator) ?? operators[0];\n\tconst inputType = filterType === 'number' ? 'number' : filterType === 'date' ? 'date' : 'text';\n\n\treturn (\n\t\t<div className=\"rdt_filterConditionRow\">\n\t\t\t<select\n\t\t\t\tclassName=\"rdt_filterSelect\"\n\t\t\t\tvalue={condition.operator}\n\t\t\t\tonChange={e => onChange({ operator: e.target.value as FilterOperator })}\n\t\t\t\taria-label={options.operatorAriaLabel ?? 'Filter operator'}\n\t\t\t>\n\t\t\t\t{operators.map(op => (\n\t\t\t\t\t<option key={op.value} value={op.value}>\n\t\t\t\t\t\t{op.label}\n\t\t\t\t\t</option>\n\t\t\t\t))}\n\t\t\t</select>\n\n\t\t\t{!selected.noInput && (\n\t\t\t\t<input\n\t\t\t\t\tclassName=\"rdt_filterInput\"\n\t\t\t\t\ttype={inputType}\n\t\t\t\t\tvalue={condition.value ?? ''}\n\t\t\t\t\tplaceholder={options.valuePlaceholder ?? 'Value'}\n\t\t\t\t\tonChange={e => onChange({ ...condition, value: e.target.value })}\n\t\t\t\t\tonKeyDown={e => e.stopPropagation()}\n\t\t\t\t\taria-label={options.valueAriaLabel ?? 'Filter value'}\n\t\t\t\t/>\n\t\t\t)}\n\n\t\t\t{selected.twoInputs && (\n\t\t\t\t<>\n\t\t\t\t\t<span className=\"rdt_filterBetweenSep\">{options.betweenSeparatorText ?? 'and'}</span>\n\t\t\t\t\t<input\n\t\t\t\t\t\tclassName=\"rdt_filterInput\"\n\t\t\t\t\t\ttype={inputType}\n\t\t\t\t\t\tvalue={condition.value2 ?? ''}\n\t\t\t\t\t\tplaceholder={options.value2Placeholder ?? 'Value'}\n\t\t\t\t\t\tonChange={e => onChange({ ...condition, value2: e.target.value })}\n\t\t\t\t\t\tonKeyDown={e => e.stopPropagation()}\n\t\t\t\t\t\taria-label={options.value2AriaLabel ?? 'Filter second value'}\n\t\t\t\t\t/>\n\t\t\t\t</>\n\t\t\t)}\n\n\t\t\t{onRemove && (\n\t\t\t\t<button\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\tclassName=\"rdt_filterRemoveBtn\"\n\t\t\t\t\tonClick={onRemove}\n\t\t\t\t\taria-label={options.removeConditionAriaLabel ?? 'Remove condition'}\n\t\t\t\t>\n\t\t\t\t\t✕\n\t\t\t\t</button>\n\t\t\t)}\n\t\t</div>\n\t);\n}\n\ntype ColumnFilterProps = {\n\tcolumnId: string | number;\n\tfilterValue: FilterState;\n\tfilterType?: FilterType;\n\toptions?: ColumnFilterOptions;\n\tonFilterChange: (columnId: string | number, filter: FilterState) => void;\n};\n\nexport default function ColumnFilter({\n\tcolumnId,\n\tfilterValue,\n\tfilterType = 'text',\n\toptions = {},\n\tonFilterChange,\n}: ColumnFilterProps): JSX.Element {\n\tconst [open, setOpen] = React.useState(false);\n\tconst [panelPos, setPanelPos] = React.useState<{ top: number; left: number } | null>(null);\n\tconst [pending, setPending] = React.useState<FilterState>(() => filterValue ?? emptyFilterState(filterType));\n\tconst containerRef = React.useRef<HTMLDivElement>(null);\n\tconst buttonRef = React.useRef<HTMLButtonElement>(null);\n\n\t// Sync pending state when the applied filter changes externally (e.g. controlled mode reset)\n\tconst prevApplied = React.useRef(filterValue);\n\tReact.useEffect(() => {\n\t\tif (prevApplied.current !== filterValue) {\n\t\t\tprevApplied.current = filterValue;\n\t\t\tsetPending(filterValue ?? emptyFilterState(filterType));\n\t\t}\n\t}, [filterValue, filterType]);\n\n\tconst panelRef = React.useRef<HTMLDivElement>(null);\n\n\tReact.useEffect(() => {\n\t\tif (!open) return;\n\n\t\tconst firstFocusable = panelRef.current?.querySelector<HTMLElement>('select, input, button');\n\t\tfirstFocusable?.focus();\n\n\t\tfunction handleClick(e: MouseEvent) {\n\t\t\tif (\n\t\t\t\tcontainerRef.current &&\n\t\t\t\t!containerRef.current.contains(e.target as Node) &&\n\t\t\t\tpanelRef.current &&\n\t\t\t\t!panelRef.current.contains(e.target as Node)\n\t\t\t) {\n\t\t\t\tsetOpen(false);\n\t\t\t}\n\t\t}\n\t\tfunction handleKeyDown(e: KeyboardEvent) {\n\t\t\tif (e.key === 'Escape') setOpen(false);\n\t\t}\n\n\t\tdocument.addEventListener('mousedown', handleClick);\n\t\tdocument.addEventListener('keydown', handleKeyDown);\n\t\treturn () => {\n\t\t\tdocument.removeEventListener('mousedown', handleClick);\n\t\t\tdocument.removeEventListener('keydown', handleKeyDown);\n\t\t};\n\t}, [open]);\n\n\tconst isActive = isFilterActive(filterValue);\n\n\tfunction handleApply() {\n\t\tonFilterChange(columnId, pending);\n\t\tsetOpen(false);\n\t}\n\n\tfunction handleClear() {\n\t\tconst empty = emptyFilterState(filterType);\n\t\tsetPending(empty);\n\t\tonFilterChange(columnId, empty);\n\t\tsetOpen(false);\n\t}\n\n\tfunction handleCondition1Change(next: FilterCondition) {\n\t\tsetPending(prev => ({ ...prev, condition1: next }));\n\t}\n\n\tfunction handleCondition2Change(next: FilterCondition) {\n\t\tsetPending(prev => ({ ...prev, condition2: next }));\n\t}\n\n\tfunction handleAddCondition() {\n\t\tsetPending(prev => ({\n\t\t\t...prev,\n\t\t\tcondition2: emptyCondition(filterType),\n\t\t\tlogic: prev.logic ?? 'AND',\n\t\t}));\n\t}\n\n\tfunction handleRemoveCondition2() {\n\t\tsetPending(prev => ({ condition1: prev.condition1 }));\n\t}\n\n\tfunction handleLogicChange(logic: 'AND' | 'OR') {\n\t\tsetPending(prev => ({ ...prev, logic }));\n\t}\n\n\treturn (\n\t\t<div ref={containerRef} className=\"rdt_filterContainer\">\n\t\t\t<button\n\t\t\t\tref={buttonRef}\n\t\t\t\ttype=\"button\"\n\t\t\t\tclassName={['rdt_filterIcon', isActive && 'rdt_filterIconActive'].filter(Boolean).join(' ')}\n\t\t\t\taria-label={\n\t\t\t\t\tisActive\n\t\t\t\t\t\t? (options.filterActiveAriaLabel ?? 'Filter active')\n\t\t\t\t\t\t: (options.filterColumnAriaLabel ?? 'Filter column')\n\t\t\t\t}\n\t\t\t\taria-pressed={open}\n\t\t\t\tonClick={e => {\n\t\t\t\t\te.stopPropagation();\n\t\t\t\t\tif (!open && buttonRef.current) {\n\t\t\t\t\t\tconst rect = buttonRef.current.getBoundingClientRect();\n\t\t\t\t\t\tconst panelMinWidth = 260;\n\t\t\t\t\t\tconst fitsRight = rect.left + panelMinWidth <= window.innerWidth - 8;\n\t\t\t\t\t\tsetPanelPos({\n\t\t\t\t\t\t\ttop: rect.bottom + 4,\n\t\t\t\t\t\t\tleft: fitsRight ? rect.left : rect.right - panelMinWidth,\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\tsetOpen(v => !v);\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t<svg viewBox=\"0 0 24 24\" width=\"14\" height=\"14\" fill=\"currentColor\" aria-hidden=\"true\">\n\t\t\t\t\t<path d=\"M10 18h4v-2h-4v2zM3 6v2h18V6H3zm3 7h12v-2H6v2z\" />\n\t\t\t\t</svg>\n\t\t\t\t{isActive && <span className=\"rdt_filterDot\" />}\n\t\t\t</button>\n\n\t\t\t{open && panelPos && (\n\t\t\t\t<div\n\t\t\t\t\tref={panelRef}\n\t\t\t\t\tclassName=\"rdt_filterPanel\"\n\t\t\t\t\trole=\"dialog\"\n\t\t\t\t\taria-label={options.filterPanelAriaLabel ?? 'Column filter'}\n\t\t\t\t\tstyle={{ position: 'fixed', top: panelPos.top, left: panelPos.left }}\n\t\t\t\t>\n\t\t\t\t\t<ConditionRow\n\t\t\t\t\t\tcondition={pending.condition1}\n\t\t\t\t\t\tfilterType={filterType}\n\t\t\t\t\t\toptions={options}\n\t\t\t\t\t\tonChange={handleCondition1Change}\n\t\t\t\t\t/>\n\n\t\t\t\t\t{pending.condition2 ? (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t<div className=\"rdt_filterLogicRow\">\n\t\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\tclassName={['rdt_filterLogicBtn', pending.logic !== 'OR' && 'rdt_filterLogicBtnActive']\n\t\t\t\t\t\t\t\t\t\t.filter(Boolean)\n\t\t\t\t\t\t\t\t\t\t.join(' ')}\n\t\t\t\t\t\t\t\t\taria-pressed={pending.logic !== 'OR'}\n\t\t\t\t\t\t\t\t\tonClick={() => handleLogicChange('AND')}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{options.andLabel ?? 'AND'}\n\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\tclassName={['rdt_filterLogicBtn', pending.logic === 'OR' && 'rdt_filterLogicBtnActive']\n\t\t\t\t\t\t\t\t\t\t.filter(Boolean)\n\t\t\t\t\t\t\t\t\t\t.join(' ')}\n\t\t\t\t\t\t\t\t\taria-pressed={pending.logic === 'OR'}\n\t\t\t\t\t\t\t\t\tonClick={() => handleLogicChange('OR')}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{options.orLabel ?? 'OR'}\n\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<ConditionRow\n\t\t\t\t\t\t\t\tcondition={pending.condition2}\n\t\t\t\t\t\t\t\tfilterType={filterType}\n\t\t\t\t\t\t\t\toptions={options}\n\t\t\t\t\t\t\t\tonChange={handleCondition2Change}\n\t\t\t\t\t\t\t\tonRemove={handleRemoveCondition2}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</>\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<button\n\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\tclassName=\"rdt_filterAddCondition\"\n\t\t\t\t\t\t\taria-label={options.addConditionAriaLabel ?? 'Add a second filter condition'}\n\t\t\t\t\t\t\tonClick={handleAddCondition}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{options.addConditionLabel ?? '+ Add condition'}\n\t\t\t\t\t\t</button>\n\t\t\t\t\t)}\n\n\t\t\t\t\t<div className=\"rdt_filterActions\">\n\t\t\t\t\t\t<button type=\"button\" className=\"rdt_filterBtn\" onClick={handleClear}>\n\t\t\t\t\t\t\t{options.clearLabel ?? 'Clear'}\n\t\t\t\t\t\t</button>\n\t\t\t\t\t\t<button type=\"button\" className=\"rdt_filterBtn rdt_filterBtnPrimary\" onClick={handleApply}>\n\t\t\t\t\t\t\t{options.applyLabel ?? 'Apply'}\n\t\t\t\t\t\t</button>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</div>\n\t);\n}\n","import * as React from 'react';\nimport '../DataTable.css';\nimport { useStyles } from '../context/StylesContext';\nimport { CellExtended } from './Cell';\nimport NativeSortIcon from '../icons/NativeSortIcon';\nimport ColumnFilter from './ColumnFilter';\nimport { equalizeId, getPinnedCellMeta } from '../util';\nimport type { PinnedOffsets } from '../util';\nimport { SortOrder } from '../types';\nimport type { TableColumn, SortAction, SortColumn, FilterState, Localization } from '../types';\n\ntype FilterLocalization = NonNullable<Localization['filter']>;\n\ntype TableColProps<T> = {\n\tcolumn: TableColumn<T>;\n\tdisabled: boolean;\n\tdraggingColumnId?: string | number;\n\tsortIcon?: React.ReactNode;\n\tpagination: boolean;\n\tpaginationServer: boolean;\n\tpersistSelectedOnSort: boolean;\n\tsortDirection: SortOrder;\n\tsortColumns: SortColumn<T>[];\n\tsortMulti: boolean;\n\tdefaultSortDirection: SortOrder;\n\tsortServer: boolean;\n\tselectableRowsVisibleOnly: boolean;\n\tfilterValue: FilterState;\n\tfilterLocalization: FilterLocalization;\n\tonSort: (action: SortAction<T>) => void;\n\tonFilterChange: (columnId: string | number, filter: FilterState) => void;\n\tonDragStart: (e: React.DragEvent<HTMLDivElement>) => void;\n\tonDragOver: (e: React.DragEvent<HTMLDivElement>) => void;\n\tonDragEnd: (e: React.DragEvent<HTMLDivElement>) => void;\n\tonDragEnter: (e: React.DragEvent<HTMLDivElement>) => void;\n\tonDragLeave: (e: React.DragEvent<HTMLDivElement>) => void;\n\t/** Width override from column resize — takes precedence over column.width */\n\tresizedWidth?: number;\n\tonResizeStart?: (columnId: string | number, e: React.MouseEvent) => void;\n\tpinnedOffsets?: PinnedOffsets;\n\t/** CSS grid placement styles — injected by DataTableHead when rendering in grouped-header grid mode */\n\tgridStyle?: React.CSSProperties;\n};\n\nfunction TableCol<T>({\n\tcolumn,\n\tdisabled,\n\tdraggingColumnId,\n\tsortDirection,\n\tsortColumns,\n\tsortMulti,\n\tdefaultSortDirection,\n\tsortIcon,\n\tsortServer,\n\tpagination,\n\tpaginationServer,\n\tpersistSelectedOnSort,\n\tselectableRowsVisibleOnly,\n\tfilterValue,\n\tfilterLocalization,\n\tonSort,\n\tonFilterChange,\n\tonDragStart,\n\tonDragOver,\n\tonDragEnd,\n\tonDragEnter,\n\tonDragLeave,\n\tresizedWidth,\n\tonResizeStart,\n\tpinnedOffsets,\n\tgridStyle,\n}: TableColProps<T>): JSX.Element | null {\n\tconst customStyles = useStyles();\n\n\tconst [showTooltip, setShowTooltip] = React.useState(false);\n\tconst columnRef = React.useRef<HTMLDivElement | null>(null);\n\n\tReact.useEffect(() => {\n\t\tif (columnRef.current) {\n\t\t\tsetShowTooltip(columnRef.current.scrollWidth > columnRef.current.clientWidth);\n\t\t}\n\t}, [showTooltip]);\n\n\tif (column.omit) {\n\t\treturn null;\n\t}\n\n\tconst handleSortChange = (additive: boolean) => {\n\t\tif (!column.sortable && !column.selector) {\n\t\t\treturn;\n\t\t}\n\n\t\tonSort({\n\t\t\ttype: 'SORT_CHANGE',\n\t\t\tselectedColumn: column,\n\t\t\tadditive: sortMulti && additive,\n\t\t\tdefaultSortDirection,\n\t\t\tclearSelectedOnSort:\n\t\t\t\t(pagination && paginationServer && !persistSelectedOnSort) || sortServer || selectableRowsVisibleOnly,\n\t\t});\n\t};\n\n\tconst handleClick = (event: React.MouseEvent<HTMLDivElement>) => {\n\t\thandleSortChange(event.ctrlKey || event.metaKey);\n\t};\n\n\tconst handleKeyDown = (event: React.KeyboardEvent<HTMLDivElement>) => {\n\t\tif (event.key === 'Enter') {\n\t\t\thandleSortChange(event.ctrlKey || event.metaKey);\n\t\t}\n\t};\n\n\tconst sortIndex = sortColumns.findIndex(s => equalizeId(s.column.id, column.id));\n\tconst sortEntry = sortIndex === -1 ? undefined : sortColumns[sortIndex];\n\tconst columnSortDirection = sortEntry ? sortEntry.sortDirection : sortDirection;\n\n\tconst renderNativeSortIcon = (sortActive: boolean) => (\n\t\t<NativeSortIcon sortActive={sortActive} sortDirection={columnSortDirection} />\n\t);\n\n\tconst renderCustomSortIcon = () => (\n\t\t<span\n\t\t\tclassName={[\n\t\t\t\t'rdt_sortIcon',\n\t\t\t\tsortActive ? 'rdt_sortIconActive' : 'rdt_sortIconInactive',\n\t\t\t\tcolumnSortDirection === SortOrder.ASC && 'rdt_sortIconAsc',\n\t\t\t\t'__rdt_custom_sort_icon__',\n\t\t\t]\n\t\t\t\t.filter(Boolean)\n\t\t\t\t.join(' ')}\n\t\t>\n\t\t\t{sortIcon}\n\t\t</span>\n\t);\n\n\tconst renderSortPriority = () =>\n\t\tsortMulti && sortColumns.length > 1 && sortIndex !== -1 ? (\n\t\t\t<span className=\"rdt_sortPriority\" aria-hidden=\"true\">\n\t\t\t\t{sortIndex + 1}\n\t\t\t</span>\n\t\t) : null;\n\n\tconst sortActive = !!(column.sortable && sortIndex !== -1);\n\tconst disableSort = !column.sortable || disabled;\n\tconst tabIndex = disableSort ? -1 : 0;\n\tconst nativeSortIconLeft = column.sortable && !sortIcon && !column.right;\n\tconst nativeSortIconRight = column.sortable && !sortIcon && column.right;\n\tconst customSortIconLeft = column.sortable && sortIcon && !column.right;\n\tconst customSortIconRight = column.sortable && sortIcon && column.right;\n\n\tconst isDragging = equalizeId(column.id, draggingColumnId);\n\n\t// ── Column pinning ─────────────────────────────────────────────────────────\n\tconst pinMeta = getPinnedCellMeta(column, pinnedOffsets);\n\tconst pinnedStyle: React.CSSProperties = pinMeta.style.position === 'sticky' ? { ...pinMeta.style, zIndex: 2 } : {};\n\tconst pinnedClass = pinMeta.className;\n\n\tconst handleDragStart = (e: React.DragEvent<HTMLDivElement>) => {\n\t\tif (column.reorder && typeof column.name === 'string') {\n\t\t\te.dataTransfer.effectAllowed = 'move';\n\t\t\tconst el = e.currentTarget as HTMLDivElement;\n\t\t\tconst rect = el.getBoundingClientRect();\n\t\t\tconst ghost = document.createElement('div');\n\t\t\tghost.className = 'rdt_dragGhost';\n\t\t\t// Grip icon + column name\n\t\t\tghost.innerHTML = `<span class=\"rdt_dragGhostIcon\" aria-hidden=\"true\"><svg viewBox=\"0 0 16 16\" width=\"12\" height=\"12\" fill=\"currentColor\"><circle cx=\"5\" cy=\"3.5\" r=\"1.2\"/><circle cx=\"11\" cy=\"3.5\" r=\"1.2\"/><circle cx=\"5\" cy=\"8\" r=\"1.2\"/><circle cx=\"11\" cy=\"8\" r=\"1.2\"/><circle cx=\"5\" cy=\"12.5\" r=\"1.2\"/><circle cx=\"11\" cy=\"12.5\" r=\"1.2\"/></svg></span><span class=\"rdt_dragGhostLabel\">${column.name}</span>`;\n\t\t\tghost.style.width = `${rect.width}px`;\n\t\t\tghost.style.height = `${rect.height}px`;\n\t\t\tdocument.body.appendChild(ghost);\n\t\t\te.dataTransfer.setDragImage(ghost, e.clientX - rect.left, e.clientY - rect.top);\n\t\t\tsetTimeout(() => document.body.removeChild(ghost), 0);\n\t\t}\n\t\tonDragStart(e);\n\t};\n\n\t// Width: resized > column.width > auto from flex\n\tconst widthStyle =\n\t\tresizedWidth != null\n\t\t\t? { width: `${resizedWidth}px`, minWidth: `${resizedWidth}px`, maxWidth: `${resizedWidth}px`, flex: 'none' }\n\t\t\t: undefined;\n\n\treturn (\n\t\t<CellExtended\n\t\t\tdata-column-id={column.id}\n\t\t\tclassName={['rdt_TableCol', pinnedClass].filter(Boolean).join(' ')}\n\t\t\t$headCell\n\t\t\tallowOverflow={column.allowOverflow}\n\t\t\tbutton={column.button}\n\t\t\tcompact={column.compact}\n\t\t\tgrow={resizedWidth != null ? 0 : column.grow}\n\t\t\thide={column.hide}\n\t\t\tmaxWidth={resizedWidth != null ? undefined : column.maxWidth}\n\t\t\tminWidth={resizedWidth != null ? undefined : column.minWidth}\n\t\t\tright={column.right}\n\t\t\tcenter={column.center}\n\t\t\twidth={resizedWidth != null ? undefined : column.width}\n\t\t\tdraggable={column.reorder}\n\t\t\theadStyle={customStyles.headCells?.style as React.CSSProperties}\n\t\t\tstyle={{\n\t\t\t\t...(isDragging ? (customStyles.headCells?.draggingStyle as React.CSSProperties) : undefined),\n\t\t\t\t...widthStyle,\n\t\t\t\t...pinnedStyle,\n\t\t\t\t...(pinnedStyle.position !== 'sticky' && { position: 'relative' }),\n\t\t\t\t...gridStyle,\n\t\t\t}}\n\t\t\tonDragStart={handleDragStart}\n\t\t\tonDragOver={onDragOver}\n\t\t\tonDragEnd={onDragEnd}\n\t\t\tonDragEnter={onDragEnter}\n\t\t\tonDragLeave={onDragLeave}\n\t\t>\n\t\t\t{column.name && (\n\t\t\t\t<div\n\t\t\t\t\tdata-column-id={column.id}\n\t\t\t\t\tdata-sort-id={column.id}\n\t\t\t\t\trole=\"columnheader\"\n\t\t\t\t\ttabIndex={tabIndex}\n\t\t\t\t\tclassName={[\n\t\t\t\t\t\t'rdt_TableCol_Sortable',\n\t\t\t\t\t\t'rdt_columnSortable',\n\t\t\t\t\t\t!disableSort && 'rdt_columnSortableEnabled',\n\t\t\t\t\t\t!disableSort && sortActive && 'rdt_columnSortableActive',\n\t\t\t\t\t]\n\t\t\t\t\t\t.filter(Boolean)\n\t\t\t\t\t\t.join(' ')}\n\t\t\t\t\tonClick={!disableSort ? handleClick : undefined}\n\t\t\t\t\tonKeyDown={!disableSort ? handleKeyDown : undefined}\n\t\t\t\t\taria-sort={\n\t\t\t\t\t\t!disableSort\n\t\t\t\t\t\t\t? sortActive\n\t\t\t\t\t\t\t\t? columnSortDirection === SortOrder.ASC\n\t\t\t\t\t\t\t\t\t? 'ascending'\n\t\t\t\t\t\t\t\t\t: 'descending'\n\t\t\t\t\t\t\t\t: 'none'\n\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t}\n\t\t\t\t>\n\t\t\t\t\t{!disableSort && customSortIconRight && renderCustomSortIcon()}\n\t\t\t\t\t{!disableSort && nativeSortIconRight && renderNativeSortIcon(sortActive)}\n\t\t\t\t\t{!disableSort && column.right && renderSortPriority()}\n\n\t\t\t\t\t{typeof column.name === 'string' ? (\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\ttitle={showTooltip ? column.name : undefined}\n\t\t\t\t\t\t\tref={columnRef}\n\t\t\t\t\t\t\tdata-column-id={column.id}\n\t\t\t\t\t\t\tclassName=\"rdt_columnText\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{column.name}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t) : (\n\t\t\t\t\t\tcolumn.name\n\t\t\t\t\t)}\n\n\t\t\t\t\t{!disableSort && !column.right && renderSortPriority()}\n\t\t\t\t\t{!disableSort && customSortIconLeft && renderCustomSortIcon()}\n\t\t\t\t\t{!disableSort && nativeSortIconLeft && renderNativeSortIcon(sortActive)}\n\t\t\t\t</div>\n\t\t\t)}\n\t\t\t{column.filterable && column.id != null && (\n\t\t\t\t<ColumnFilter\n\t\t\t\t\tcolumnId={column.id}\n\t\t\t\t\tfilterValue={filterValue}\n\t\t\t\t\tfilterType={column.filterType}\n\t\t\t\t\toptions={filterLocalization}\n\t\t\t\t\tonFilterChange={onFilterChange}\n\t\t\t\t/>\n\t\t\t)}\n\t\t\t{onResizeStart && column.id != null && (\n\t\t\t\t<div className=\"rdt_resizeHandle\" onMouseDown={e => onResizeStart(column.id!, e)} aria-hidden=\"true\" />\n\t\t\t)}\n\t\t</CellExtended>\n\t);\n}\n\nfunction areColPropsEqual<T>(prevProps: TableColProps<T>, nextProps: TableColProps<T>): boolean {\n\tif (prevProps.column !== nextProps.column) return false;\n\tif (prevProps.sortMulti !== nextProps.sortMulti) return false;\n\t// Compare this column's slice of the sort config (position + direction). A change to\n\t// either flips its active state, arrow direction, or multi-sort priority badge.\n\tconst prevIdx = prevProps.sortColumns.findIndex(s => equalizeId(s.column.id, prevProps.column.id));\n\tconst nextIdx = nextProps.sortColumns.findIndex(s => equalizeId(s.column.id, nextProps.column.id));\n\tif (prevIdx !== nextIdx) return false;\n\tif (prevIdx !== -1 && prevProps.sortColumns[prevIdx].sortDirection !== nextProps.sortColumns[nextIdx].sortDirection)\n\t\treturn false;\n\t// The priority badge shows only when more than one column is sorted; a flip across that\n\t// threshold changes whether the badge renders even when this column's index is unchanged.\n\tif (prevProps.sortMulti && prevProps.sortColumns.length !== nextProps.sortColumns.length) {\n\t\tconst prevMulti = prevProps.sortColumns.length > 1;\n\t\tconst nextMulti = nextProps.sortColumns.length > 1;\n\t\tif (prevMulti !== nextMulti) return false;\n\t}\n\tif (prevProps.draggingColumnId !== nextProps.draggingColumnId) {\n\t\tconst prevIsDragging = equalizeId(prevProps.column.id, prevProps.draggingColumnId);\n\t\tconst nextIsDragging = equalizeId(nextProps.column.id, nextProps.draggingColumnId);\n\t\tif (prevIsDragging !== nextIsDragging) return false;\n\t}\n\tif (prevProps.filterValue !== nextProps.filterValue) return false;\n\tif (prevProps.filterLocalization !== nextProps.filterLocalization) return false;\n\tif (prevProps.resizedWidth !== nextProps.resizedWidth) return false;\n\tif (prevProps.disabled !== nextProps.disabled) return false;\n\tif (prevProps.sortIcon !== nextProps.sortIcon) return false;\n\tif (prevProps.pinnedOffsets !== nextProps.pinnedOffsets) {\n\t\t// Re-render when:\n\t\t// 1. This column's own offset changed (resize, reorder).\n\t\t// 2. The set of pinned columns changed — which can flip isLastLeftPin /\n\t\t//    isFirstRightPin for this column even when its own offset is stable\n\t\t//    (e.g. a new column was pinned past it, or the prior edge-pin was unpinned).\n\t\tconst id = nextProps.column.id;\n\t\tconst prevLeft = prevProps.pinnedOffsets?.left[id!];\n\t\tconst nextLeft = nextProps.pinnedOffsets?.left[id!];\n\t\tconst prevRight = prevProps.pinnedOffsets?.right[id!];\n\t\tconst nextRight = nextProps.pinnedOffsets?.right[id!];\n\t\tif (prevLeft !== nextLeft || prevRight !== nextRight) return false;\n\n\t\tconst prevLeftKeys = prevProps.pinnedOffsets ? Object.keys(prevProps.pinnedOffsets.left).length : 0;\n\t\tconst nextLeftKeys = nextProps.pinnedOffsets ? Object.keys(nextProps.pinnedOffsets.left).length : 0;\n\t\tconst prevRightKeys = prevProps.pinnedOffsets ? Object.keys(prevProps.pinnedOffsets.right).length : 0;\n\t\tconst nextRightKeys = nextProps.pinnedOffsets ? Object.keys(nextProps.pinnedOffsets.right).length : 0;\n\t\tif (prevLeftKeys !== nextLeftKeys || prevRightKeys !== nextRightKeys) return false;\n\t}\n\tconst pg = prevProps.gridStyle;\n\tconst ng = nextProps.gridStyle;\n\tif (pg !== ng) {\n\t\tif (!pg || !ng) return false;\n\t\tif (pg.gridColumn !== ng.gridColumn || pg.gridRow !== ng.gridRow) return false;\n\t}\n\treturn true;\n}\n\nexport default React.memo(TableCol, areColPropsEqual) as typeof TableCol;\n","import * as React from 'react';\nimport { handleFunctionProps, noop } from '../util';\n\nconst defaultComponentName = 'input';\n\ninterface CheckboxProps {\n\tname: string;\n\tcomponent?: React.ComponentType<React.InputHTMLAttributes<HTMLInputElement>> | string;\n\tcomponentOptions?: { [key: string]: unknown };\n\tindeterminate?: boolean;\n\tchecked?: boolean;\n\tdisabled?: boolean;\n\tonClick?: (e: React.MouseEvent) => void;\n}\n\nfunction Checkbox({\n\tname,\n\tcomponent = defaultComponentName,\n\tcomponentOptions = { style: {} },\n\tindeterminate = false,\n\tchecked = false,\n\tdisabled = false,\n\tonClick = noop,\n}: CheckboxProps): JSX.Element {\n\tconst setCheckboxRef = (checkbox: HTMLInputElement) => {\n\t\tif (checkbox) {\n\t\t\tcheckbox.indeterminate = indeterminate;\n\t\t}\n\t};\n\n\tconst resolvedComponentOptions = React.useMemo(\n\t\t() => handleFunctionProps(componentOptions, indeterminate),\n\t\t[componentOptions, indeterminate],\n\t);\n\n\t// Use case 2: custom component via selectableRowsComponent prop\n\tif (component !== defaultComponentName) {\n\t\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\t\tconst TagName = component as React.ElementType<any>;\n\t\treturn (\n\t\t\t<TagName\n\t\t\t\ttype=\"checkbox\"\n\t\t\t\tref={setCheckboxRef}\n\t\t\t\tstyle={componentOptions.style as React.CSSProperties | undefined}\n\t\t\t\tonClick={disabled ? noop : onClick}\n\t\t\t\tname={name}\n\t\t\t\taria-label={name}\n\t\t\t\tchecked={checked}\n\t\t\t\tdisabled={disabled}\n\t\t\t\t{...resolvedComponentOptions}\n\t\t\t\tonChange={noop}\n\t\t\t/>\n\t\t);\n\t}\n\n\t// Use case 1: pure CSS checkbox — state classes drive ::before / ::after visuals\n\tconst cls = [\n\t\t'rdt_Checkbox',\n\t\tchecked && 'rdt_checked',\n\t\tindeterminate && 'rdt_indeterminate',\n\t\tdisabled && 'rdt_disabled',\n\t]\n\t\t.filter(Boolean)\n\t\t.join(' ');\n\n\treturn (\n\t\t<span className={cls}>\n\t\t\t<input\n\t\t\t\ttype=\"checkbox\"\n\t\t\t\tref={setCheckboxRef}\n\t\t\t\tonClick={disabled ? noop : onClick}\n\t\t\t\tname={name}\n\t\t\t\taria-label={name}\n\t\t\t\tchecked={checked}\n\t\t\t\tdisabled={disabled}\n\t\t\t\tonChange={noop}\n\t\t\t/>\n\t\t</span>\n\t);\n}\n\nexport default React.memo(Checkbox);\n","import * as React from 'react';\nimport { SortOrder } from '../types';\nimport type {\n\tTableColumn,\n\tSortAction,\n\tSortColumn,\n\tAllRowsAction,\n\tRowState,\n\tComponentProps,\n\tFilterState,\n\tLocalization,\n} from '../types';\nimport type { PinnedOffsets } from '../util';\n\nexport interface HeadContextValue<T> {\n\t// Sort state\n\tselectedColumn: TableColumn<T>;\n\tsortDirection: SortOrder;\n\tsortColumns: SortColumn<T>[];\n\tsortMulti: boolean;\n\tdefaultSortDirection: SortOrder;\n\tsortIcon?: React.ReactNode;\n\tsortServer: boolean;\n\t// Pagination config (affects sort-reset behaviour)\n\tpagination: boolean;\n\tpaginationServer: boolean;\n\tpersistSelectedOnSort: boolean;\n\t// Selection config\n\tselectableRowsVisibleOnly: boolean;\n\tkeyField: string;\n\tmergeSelections: boolean;\n\tallSelected: boolean;\n\tselectedRows: T[];\n\tvisibleRows: T[];\n\tselectableRowsComponent: 'input' | React.ComponentType<React.InputHTMLAttributes<HTMLInputElement>>;\n\tselectableRowsComponentProps: ComponentProps;\n\tselectableRowDisabled: RowState<T>;\n\tshowSelectAll: boolean;\n\t// Column resize / drag\n\tdraggingColumnId: string | number;\n\tdraggingGroupKey: string;\n\tfilterValues: Record<string | number, FilterState>;\n\tlocalization: NonNullable<Localization['filter']>;\n\tcolumnWidths: Record<string | number, number>;\n\tpinnedOffsets: PinnedOffsets;\n\tresizable: boolean;\n\t// Table state\n\tprogressPending: boolean;\n\tsortedData: T[];\n\tfixedHeader: boolean;\n\tdense: boolean;\n\t// Callbacks\n\tonSelectAllRows: (action: AllRowsAction<T>) => void;\n\tonSort: (action: SortAction<T>) => void;\n\tonFilterChange: (columnId: string | number, filter: FilterState) => void;\n\tonResizeStart?: (columnId: string | number, e: React.MouseEvent) => void;\n\tonDragStart: (e: React.DragEvent<HTMLDivElement>) => void;\n\tonDragOver: (e: React.DragEvent<HTMLDivElement>) => void;\n\tonDragEnd: (e: React.DragEvent<HTMLDivElement>) => void;\n\tonDragEnter: (e: React.DragEvent<HTMLDivElement>) => void;\n\tonDragLeave: (e: React.DragEvent<HTMLDivElement>) => void;\n\tonGroupDragStart: (e: React.DragEvent<HTMLDivElement>) => void;\n\tonGroupDragEnter: (e: React.DragEvent<HTMLDivElement>) => void;\n\tonGroupDragOver: (e: React.DragEvent<HTMLDivElement>) => void;\n\tonGroupDragEnd: (e: React.DragEvent<HTMLDivElement>) => void;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst HeadContext = React.createContext<HeadContextValue<any> | null>(null);\n\nexport function useHeadContext<T>(): HeadContextValue<T> {\n\tconst ctx = React.useContext(HeadContext);\n\tif (!ctx) throw new Error('useHeadContext must be used inside DataTable');\n\treturn ctx as HeadContextValue<T>;\n}\n\nexport { HeadContext };\n","import * as React from 'react';\nimport '../DataTable.css';\nimport { CellBase } from './Cell';\nimport Checkbox from './Checkbox';\nimport { useHeadContext } from '../context/HeadContext';\n\nfunction ColumnCheckbox<T>(): JSX.Element {\n\tconst {\n\t\tallSelected,\n\t\tselectedRows,\n\t\tvisibleRows,\n\t\tselectableRowsComponent,\n\t\tselectableRowsComponentProps,\n\t\tselectableRowDisabled,\n\t\tkeyField,\n\t\tmergeSelections,\n\t\tonSelectAllRows,\n\t} = useHeadContext<T>();\n\n\tconst indeterminate = selectedRows.length > 0 && !allSelected;\n\tconst rows = selectableRowDisabled ? visibleRows.filter((row: T) => !selectableRowDisabled(row)) : visibleRows;\n\tconst isDisabled = rows.length === 0;\n\tconst rowCount = Math.min(visibleRows.length, rows.length);\n\n\tconst handleSelectAll = () => {\n\t\tonSelectAllRows({\n\t\t\ttype: 'SELECT_ALL_ROWS',\n\t\t\trows,\n\t\t\trowCount,\n\t\t\tmergeSelections,\n\t\t\tkeyField,\n\t\t});\n\t};\n\n\treturn (\n\t\t<CellBase className={['rdt_TableCol', 'rdt_columnCheckbox'].join(' ')} role=\"columnheader\" $headCell $noPadding>\n\t\t\t<Checkbox\n\t\t\t\tname=\"Select all rows\"\n\t\t\t\tcomponent={selectableRowsComponent}\n\t\t\t\tcomponentOptions={selectableRowsComponentProps}\n\t\t\t\tonClick={handleSelectAll}\n\t\t\t\tchecked={allSelected}\n\t\t\t\tindeterminate={indeterminate}\n\t\t\t\tdisabled={isDisabled}\n\t\t\t/>\n\t\t</CellBase>\n\t);\n}\n\nexport default ColumnCheckbox;\n","import * as React from 'react';\nimport '../DataTable.css';\nimport { useStyles } from '../context/StylesContext';\nimport { CellBase } from './Cell';\n\nfunction ColumnExpander(): JSX.Element {\n\tconst customStyles = useStyles();\n\treturn (\n\t\t<CellBase\n\t\t\tclassName=\"rdt_columnExpander\"\n\t\t\t$noPadding\n\t\t\tstyle={customStyles.expanderCell?.style as React.CSSProperties}\n\t\t/>\n\t);\n}\n\nexport default ColumnExpander;\n","import * as React from 'react';\n\n/**\n * A flexible spacer injected immediately before the first right-pinned column.\n * In a flex row this absorbs leftover horizontal space so unpinned columns\n * fill out and right-pinned columns hug the right edge — without requiring\n * the row itself to know about pinning state.\n *\n * `flex: 1 1 auto` lets the spacer grow to fill the gap; `min-width: 0`\n * prevents it from blowing out narrow viewports.\n */\nexport default function RightPinSpacer(): JSX.Element {\n\treturn <div aria-hidden=\"true\" className=\"rdt_rightPinSpacer\" style={{ flex: '1 1 auto', minWidth: 0 }} />;\n}\n","import * as React from 'react';\nimport type { TableColumn, ColumnGroup } from '../types';\n\n/**\n * Builds the CSS grid-template-columns string from the visible column definitions.\n * Prefix columns (checkbox/expander) use the --rdt-system-col-width var so\n * themes can override the system column width without code changes.\n * columnWidths contains user-resized overrides and takes precedence.\n */\nexport function buildGridTemplateColumns<T>(\n\tvisibleColumns: TableColumn<T>[],\n\tprefixColCount: number,\n\tcolumnWidths: Record<string | number, number>,\n): string {\n\tconst tracks: string[] = [];\n\tfor (let i = 0; i < prefixColCount; i++) tracks.push('var(--rdt-system-col-width, 48px)');\n\tfor (const col of visibleColumns) {\n\t\tconst resized = col.id != null ? columnWidths[col.id] : undefined;\n\t\tif (resized != null) {\n\t\t\ttracks.push(`${resized}px`);\n\t\t} else if (col.width) {\n\t\t\ttracks.push(col.width);\n\t\t} else if (col.grow === 0 || col.button) {\n\t\t\ttracks.push(`minmax(${col.minWidth ?? '48px'}, max-content)`);\n\t\t} else {\n\t\t\ttracks.push(`minmax(${col.minWidth ?? '100px'}, ${col.grow ?? 1}fr)`);\n\t\t}\n\t}\n\treturn tracks.join(' ');\n}\n\nexport interface GroupDragProps {\n\tdraggingGroupKey: string;\n\tonGroupDragStart: (e: React.DragEvent<HTMLDivElement>) => void;\n\tonGroupDragEnter: (e: React.DragEvent<HTMLDivElement>) => void;\n\tonGroupDragOver: (e: React.DragEvent<HTMLDivElement>) => void;\n\tonGroupDragEnd: (e: React.DragEvent<HTMLDivElement>) => void;\n}\n\n/**\n * Builds the group label cells for row 1 of the CSS grid.\n * Rendered AFTER column header cells in the DOM so that the CSS + sibling\n * selector for column separators (rdt_cellBaseHead + rdt_cellBaseHead) is\n * not broken by group cells appearing between column cells in DOM order.\n * Visual placement is controlled entirely by gridColumn / gridRow.\n */\nexport function buildGroupHeaderCells<T>(\n\tvisibleColumns: TableColumn<T>[],\n\tcolumnGroups: ColumnGroup[],\n\tungroupedIds: Set<string>,\n\tgroupColSpans: Record<string, number>,\n\tprefixColCount: number,\n\tgroupDragProps?: GroupDragProps,\n): React.ReactNode[] {\n\tconst cells: React.ReactNode[] = [];\n\tlet colIdx = 0;\n\n\twhile (colIdx < visibleColumns.length) {\n\t\tconst col = visibleColumns[colIdx];\n\t\tconst colId = String(col.id);\n\n\t\tif (ungroupedIds.has(colId)) {\n\t\t\t// Ungrouped column header spans both rows — no group label cell needed.\n\t\t\tcolIdx++;\n\t\t} else {\n\t\t\tconst group = columnGroups.find(g => g.columnIds.map(String).includes(colId));\n\t\t\tif (group) {\n\t\t\t\tconst span = groupColSpans[String(group.name)] ?? 1;\n\t\t\t\tconst gridColStart = prefixColCount + colIdx + 1;\n\t\t\t\tconst gridColEnd = gridColStart + span;\n\t\t\t\tconst groupKey = String(group.columnIds[0]);\n\t\t\t\tconst isDragging = groupDragProps?.draggingGroupKey === groupKey;\n\t\t\t\tcells.push(\n\t\t\t\t\t<div\n\t\t\t\t\t\tkey={groupKey}\n\t\t\t\t\t\tclassName={['rdt_groupCell', group.reorder && 'rdt_groupCellReorder', isDragging && 'rdt_groupCellDragging']\n\t\t\t\t\t\t\t.filter(Boolean)\n\t\t\t\t\t\t\t.join(' ')}\n\t\t\t\t\t\tdraggable={group.reorder || undefined}\n\t\t\t\t\t\tdata-group-key={group.reorder ? groupKey : undefined}\n\t\t\t\t\t\tonDragStart={group.reorder ? groupDragProps?.onGroupDragStart : undefined}\n\t\t\t\t\t\tonDragEnter={group.reorder ? groupDragProps?.onGroupDragEnter : undefined}\n\t\t\t\t\t\tonDragOver={group.reorder ? groupDragProps?.onGroupDragOver : undefined}\n\t\t\t\t\t\tonDragEnd={group.reorder ? groupDragProps?.onGroupDragEnd : undefined}\n\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\tgridColumn: `${gridColStart} / ${gridColEnd}`,\n\t\t\t\t\t\t\tgridRow: '1',\n\t\t\t\t\t\t\t...(isDragging ? { opacity: 0.5 } : undefined),\n\t\t\t\t\t\t\t...(group.align && group.align !== 'center'\n\t\t\t\t\t\t\t\t? { justifyContent: group.align === 'right' ? 'flex-end' : 'flex-start' }\n\t\t\t\t\t\t\t\t: undefined),\n\t\t\t\t\t\t}}\n\t\t\t\t\t>\n\t\t\t\t\t\t{group.reorder ? <span style={{ pointerEvents: 'none' }}>{group.name}</span> : group.name}\n\t\t\t\t\t</div>,\n\t\t\t\t);\n\t\t\t\tcolIdx += span;\n\t\t\t} else {\n\t\t\t\tcolIdx++;\n\t\t\t}\n\t\t}\n\t}\n\treturn cells;\n}\n","import * as React from 'react';\nimport useIsomorphicLayoutEffect from '../hooks/useIsomorphicLayoutEffect';\nimport Head from './TableHead';\nimport HeadRow from './TableHeadRow';\nimport Column from './TableCol';\nimport ColumnCheckbox from './TableColCheckbox';\nimport ColumnExpander from './TableColExpander';\nimport RightPinSpacer from './RightPinSpacer';\nimport { CellBase } from './Cell';\nimport { buildGridTemplateColumns, buildGroupHeaderCells, type GroupDragProps } from './dataTableHeadHelpers';\nimport type { TableColumn, ColumnGroup } from '../types';\nimport { emptyFilterState } from '../hooks/useColumnFilter';\nimport { useHeadContext } from '../context/HeadContext';\n\ninterface DataTableHeadProps<T> {\n\tcolumns: TableColumn<T>[];\n\tcolumnGroups?: ColumnGroup[];\n\tselectableRows: boolean;\n\texpandableRows: boolean;\n\texpandableRowsHideExpander: boolean;\n}\n\nfunction DataTableHead<T>({\n\tcolumns,\n\tcolumnGroups,\n\tselectableRows,\n\texpandableRows,\n\texpandableRowsHideExpander,\n}: DataTableHeadProps<T>): JSX.Element {\n\tconst {\n\t\tsortDirection,\n\t\tsortColumns,\n\t\tsortMulti,\n\t\tdefaultSortDirection,\n\t\tsortIcon,\n\t\tsortServer,\n\t\tpagination,\n\t\tpaginationServer,\n\t\tpersistSelectedOnSort,\n\t\tselectableRowsVisibleOnly,\n\t\tshowSelectAll,\n\t\tprogressPending,\n\t\tsortedData,\n\t\tfixedHeader,\n\t\tdense,\n\t\tdraggingColumnId,\n\t\tdraggingGroupKey,\n\t\tfilterValues,\n\t\tlocalization: filterLocalization,\n\t\tcolumnWidths,\n\t\tpinnedOffsets,\n\t\tresizable,\n\t\tonSort,\n\t\tonFilterChange,\n\t\tonResizeStart,\n\t\tonDragStart,\n\t\tonDragOver,\n\t\tonDragEnd,\n\t\tonDragEnter,\n\t\tonDragLeave,\n\t\tonGroupDragStart,\n\t\tonGroupDragEnter,\n\t\tonGroupDragOver,\n\t\tonGroupDragEnd,\n\t} = useHeadContext<T>();\n\n\tconst groupDragProps: GroupDragProps = {\n\t\tdraggingGroupKey,\n\t\tonGroupDragStart,\n\t\tonGroupDragEnter,\n\t\tonGroupDragOver,\n\t\tonGroupDragEnd,\n\t};\n\n\tconst visibleColumns = columns.filter(c => !c.omit);\n\tconst hasGroups = columnGroups && columnGroups.length > 0;\n\n\t// ── FLIP animation for column/group reorder ──────────────────────────────\n\tconst containerRef = React.useRef<HTMLDivElement>(null);\n\tconst savedPositions = React.useRef<Map<string, number>>(new Map());\n\tconst isMounted = React.useRef(false);\n\tconst columnOrder = React.useMemo(() => visibleColumns.map(c => c.id).join(','), [visibleColumns]);\n\tconst groupOrder = React.useMemo(() => (columnGroups ?? []).map(g => g.columnIds[0]).join(','), [columnGroups]);\n\n\tuseIsomorphicLayoutEffect(() => {\n\t\tconst container = containerRef.current;\n\t\tif (!container) return;\n\t\tconst reducedMotion = window.matchMedia('(prefers-reduced-motion: reduce)').matches;\n\t\tconst animate = isMounted.current;\n\t\tisMounted.current = true;\n\n\t\tconst tryFlip = (el: HTMLElement, key: string) => {\n\t\t\tconst newLeft = el.getBoundingClientRect().left;\n\t\t\tconst prevLeft = savedPositions.current.get(key);\n\t\t\tsavedPositions.current.set(key, newLeft);\n\t\t\tif (!animate || reducedMotion || prevLeft == null || Math.abs(prevLeft - newLeft) < 1) return;\n\n\t\t\tconst delta = prevLeft - newLeft;\n\t\t\tel.style.transform = `translateX(${delta}px)`;\n\t\t\tel.style.transition = 'none';\n\t\t\tel.getBoundingClientRect(); // force reflow\n\t\t\tel.style.transition = 'transform 0.2s cubic-bezier(0.2, 0, 0, 1)';\n\t\t\tel.style.transform = '';\n\t\t\tconst onEnd = () => {\n\t\t\t\tel.style.transform = '';\n\t\t\t\tel.style.transition = '';\n\t\t\t\tel.removeEventListener('transitionend', onEnd);\n\t\t\t};\n\t\t\tel.addEventListener('transitionend', onEnd);\n\t\t};\n\n\t\tcontainer.querySelectorAll<HTMLElement>('[data-column-id]').forEach(el => {\n\t\t\ttryFlip(el, `col:${el.dataset.columnId}`);\n\t\t});\n\t\tcontainer.querySelectorAll<HTMLElement>('[data-group-key]').forEach(el => {\n\t\t\ttryFlip(el, `grp:${el.dataset.groupKey}`);\n\t\t});\n\n\t\tconst positions = savedPositions.current;\n\t\tconst mounted = isMounted;\n\n\t\treturn () => {\n\t\t\tmounted.current = false;\n\t\t\tpositions.clear();\n\t\t};\n\t}, [columnOrder, groupOrder]);\n\n\t// Count of non-omitted columns each group spans\n\tconst groupColSpans = React.useMemo(() => {\n\t\tif (!columnGroups) return {};\n\t\tconst map: Record<string, number> = {};\n\t\tfor (const group of columnGroups) {\n\t\t\tmap[String(group.name)] = group.columnIds.filter(id =>\n\t\t\t\tvisibleColumns.some(c => String(c.id) === String(id)),\n\t\t\t).length;\n\t\t}\n\t\treturn map;\n\t}, [columnGroups, visibleColumns]);\n\n\t// IDs of columns not covered by any group\n\tconst ungroupedIds = React.useMemo(() => {\n\t\tif (!columnGroups) return new Set<string>();\n\t\tconst covered = new Set(([] as (string | number)[]).concat(...columnGroups.map(g => g.columnIds)).map(String));\n\t\treturn new Set(visibleColumns.map(c => String(c.id)).filter(id => !covered.has(id)));\n\t}, [columnGroups, visibleColumns]);\n\n\tconst prefixColCount = (selectableRows ? 1 : 0) + (expandableRows && !expandableRowsHideExpander ? 1 : 0);\n\n\t// ── Shared column props ──────────────────────────────────────────────────\n\tconst colProps = (column: TableColumn<T>) => ({\n\t\tcolumn,\n\t\tdisabled: progressPending || sortedData.length === 0,\n\t\tpagination,\n\t\tpaginationServer,\n\t\tpersistSelectedOnSort,\n\t\tselectableRowsVisibleOnly,\n\t\tsortDirection,\n\t\tsortColumns,\n\t\tsortMulti,\n\t\tdefaultSortDirection,\n\t\tsortIcon,\n\t\tsortServer,\n\t\tfilterValue: filterValues[column.id!] ?? emptyFilterState(column.filterType),\n\t\tfilterLocalization,\n\t\tresizedWidth: columnWidths[column.id!],\n\t\tonSort,\n\t\tonFilterChange,\n\t\tonResizeStart: resizable ? onResizeStart : undefined,\n\t\tpinnedOffsets,\n\t\tonDragStart,\n\t\tonDragOver,\n\t\tonDragEnd,\n\t\tonDragEnter,\n\t\tonDragLeave,\n\t\tdraggingColumnId,\n\t});\n\n\t// First right-pinned column id — spacer is injected before it in flex layout\n\tconst firstRightPinnedId = React.useMemo(() => {\n\t\tfor (const col of columns) {\n\t\t\tif (!col.omit && col.pinned === 'right') return col.id;\n\t\t}\n\t\treturn null;\n\t}, [columns]);\n\n\t// ── CSS Grid layout (when columnGroups are present) ──────────────────────\n\tif (hasGroups) {\n\t\tconst gridTemplateColumns = buildGridTemplateColumns(visibleColumns, prefixColCount, columnWidths);\n\n\t\t// Expander column index (1-based grid column)\n\t\tlet expanderGridCol = 0;\n\t\tif (selectableRows) expanderGridCol = 2;\n\t\telse if (expandableRows && !expandableRowsHideExpander) expanderGridCol = 1;\n\n\t\treturn (\n\t\t\t<Head className=\"rdt_TableHead\" role=\"rowgroup\" $fixedHeader={fixedHeader}>\n\t\t\t\t<div\n\t\t\t\t\tref={containerRef}\n\t\t\t\t\tclassName={['rdt_headGrid', dense && 'rdt_headGridDense'].filter(Boolean).join(' ')}\n\t\t\t\t\trole=\"presentation\"\n\t\t\t\t\tstyle={{ gridTemplateColumns }}\n\t\t\t\t>\n\t\t\t\t\t{/* ── Prefix cells — span both grid rows ── */}\n\t\t\t\t\t{selectableRows && (\n\t\t\t\t\t\t<div style={{ gridColumn: '1', gridRow: '1 / span 2', display: 'flex', alignItems: 'stretch' }}>\n\t\t\t\t\t\t\t{showSelectAll ? (\n\t\t\t\t\t\t\t\t<CellBase style={{ flex: '0 0 var(--rdt-system-col-width, 48px)', width: '100%' }} />\n\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t<ColumnCheckbox />\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t)}\n\t\t\t\t\t{expandableRows && !expandableRowsHideExpander && (\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\tgridColumn: String(expanderGridCol),\n\t\t\t\t\t\t\t\tgridRow: '1 / span 2',\n\t\t\t\t\t\t\t\tdisplay: 'flex',\n\t\t\t\t\t\t\t\talignItems: 'stretch',\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<ColumnExpander />\n\t\t\t\t\t\t</div>\n\t\t\t\t\t)}\n\n\t\t\t\t\t{/*\n\t\t\t\t\t * ── Column header cells ──\n\t\t\t\t\t * Rendered BEFORE group label cells in the DOM so that the CSS adjacent-\n\t\t\t\t\t * sibling selector (.rdt_cellBaseHead + .rdt_cellBaseHead::before) is not\n\t\t\t\t\t * broken by group cells appearing between column cells in DOM order.\n\t\t\t\t\t * Visual placement is controlled entirely by gridColumn / gridRow.\n\t\t\t\t\t */}\n\t\t\t\t\t{visibleColumns.map((column, visIdx) => {\n\t\t\t\t\t\tconst gridCol = prefixColCount + visIdx + 1;\n\t\t\t\t\t\tconst isUngrouped = ungroupedIds.has(String(column.id));\n\t\t\t\t\t\t// In grid mode the track width controls layout — resizedWidth inline styles\n\t\t\t\t\t\t// would conflict with grid-template-columns, so we strip it here.\n\t\t\t\t\t\tconst { resizedWidth: _skip, ...rest } = colProps(column);\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<Column\n\t\t\t\t\t\t\t\tkey={column.id}\n\t\t\t\t\t\t\t\t{...rest}\n\t\t\t\t\t\t\t\tgridStyle={{\n\t\t\t\t\t\t\t\t\tgridColumn: String(gridCol),\n\t\t\t\t\t\t\t\t\tgridRow: isUngrouped ? '1 / span 2' : '2',\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t);\n\t\t\t\t\t})}\n\n\t\t\t\t\t{/* ── Group label cells (row 1) — rendered last in DOM ── */}\n\t\t\t\t\t{buildGroupHeaderCells(\n\t\t\t\t\t\tvisibleColumns,\n\t\t\t\t\t\tcolumnGroups!,\n\t\t\t\t\t\tungroupedIds,\n\t\t\t\t\t\tgroupColSpans,\n\t\t\t\t\t\tprefixColCount,\n\t\t\t\t\t\tgroupDragProps,\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t</Head>\n\t\t);\n\t}\n\n\t// ── Standard flex layout (no columnGroups) ──────────────────────────────\n\treturn (\n\t\t<Head className=\"rdt_TableHead\" role=\"rowgroup\" $fixedHeader={fixedHeader}>\n\t\t\t<HeadRow ref={containerRef} className=\"rdt_TableHeadRow\" role=\"row\" $dense={dense}>\n\t\t\t\t{selectableRows &&\n\t\t\t\t\t(showSelectAll ? <CellBase style={{ flex: '0 0 var(--rdt-system-col-width, 48px)' }} /> : <ColumnCheckbox />)}\n\n\t\t\t\t{expandableRows && !expandableRowsHideExpander && <ColumnExpander />}\n\n\t\t\t\t{columns.map(column => (\n\t\t\t\t\t<React.Fragment key={column.id}>\n\t\t\t\t\t\t{firstRightPinnedId != null && column.id === firstRightPinnedId && <RightPinSpacer />}\n\t\t\t\t\t\t<Column {...colProps(column)} />\n\t\t\t\t\t</React.Fragment>\n\t\t\t\t))}\n\t\t\t</HeadRow>\n\t\t</Head>\n\t);\n}\n\nexport default DataTableHead;\n","import * as React from 'react';\nimport '../DataTable.css';\n\nconst Body = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(function Body(\n\t{ className, ...rest },\n\tref,\n) {\n\treturn <div ref={ref} className={['rdt_body', className].filter(Boolean).join(' ')} {...rest} />;\n});\n\nexport default Body;\n","import * as React from 'react';\nimport type {\n\tTableColumn,\n\tConditionalStyles,\n\tExpandableIcon,\n\tExpandableRowsComponent,\n\tLocalization,\n\tRowState,\n\tSingleRowAction,\n\tRangeRowAction,\n\tComponentProps,\n} from '../types';\nimport type { PinnedOffsets } from '../util';\n\nexport interface RowContextValue<T> {\n\tkeyField: string;\n\tcolumns: TableColumn<T>[];\n\tdense: boolean;\n\tstriped: boolean;\n\thighlightOnHover: boolean;\n\tpointerOnHover: boolean;\n\tconditionalRowStyles: ConditionalStyles<T>[];\n\tselectableRows: boolean;\n\tselectableRowsComponent: 'input' | React.ComponentType<React.InputHTMLAttributes<HTMLInputElement>>;\n\tselectableRowsComponentProps: ComponentProps;\n\tselectableRowsHighlight: boolean;\n\tselectableRowsSingle: boolean;\n\tselectableRowDisabled: RowState<T>;\n\texpandableRows: boolean;\n\texpandableIcon: ExpandableIcon;\n\tlocalization: NonNullable<Localization['expandable']>;\n\texpandableRowsComponent: ExpandableRowsComponent<T> | undefined;\n\texpandableRowsComponentProps: ComponentProps | undefined;\n\texpandableRowsHideExpander: boolean;\n\texpandOnRowClicked: boolean;\n\texpandOnRowDoubleClicked: boolean;\n\texpandableInheritConditionalStyles: boolean;\n\tonRowClicked: (row: T, e: React.MouseEvent) => void;\n\tonRowDoubleClicked: (row: T, e: React.MouseEvent) => void;\n\tonRowMiddleClicked: (row: T, e: React.MouseEvent) => void;\n\tonRowMouseEnter: (row: T, e: React.MouseEvent) => void;\n\tonRowMouseLeave: (row: T, e: React.MouseEvent) => void;\n\tonRowExpandToggled: (expanded: boolean, row: T) => void;\n\tonSelectedRow: (action: SingleRowAction<T>) => void;\n\t/** Dispatch a range selection (Shift-click). */\n\tonSelectedRange: (action: RangeRowAction<T>) => void;\n\t/** Ref to the rows currently visible in order — used to compute range slices. */\n\tvisibleRowsRef: React.MutableRefObject<T[]>;\n\t/** Ref to the last single-toggled key, the anchor for Shift-click ranges. */\n\tlastSelectedKeyRef: React.MutableRefObject<string | number | null>;\n\t/** Whether Shift-click range selection is enabled. */\n\tselectableRowsRange: boolean;\n\tonDragStart: (e: React.DragEvent<HTMLDivElement>) => void;\n\tonDragOver: (e: React.DragEvent<HTMLDivElement>) => void;\n\tonDragEnd: (e: React.DragEvent<HTMLDivElement>) => void;\n\tonDragEnter: (e: React.DragEvent<HTMLDivElement>) => void;\n\tonDragLeave: (e: React.DragEvent<HTMLDivElement>) => void;\n\t/** Resized column widths (px) keyed by column.id */\n\tcolumnWidths: Record<string | number, number>;\n\t/** Sticky offsets for pinned columns */\n\tpinnedOffsets: PinnedOffsets;\n\t/** Whether to animate rows on mount */\n\tanimateRows: boolean;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst RowContext = React.createContext<RowContextValue<any> | null>(null);\n\nexport function useRowContext<T>(): RowContextValue<T> {\n\tconst ctx = React.useContext(RowContext);\n\tif (!ctx) throw new Error('useRowContext must be used inside DataTable');\n\treturn ctx as RowContextValue<T>;\n}\n\nexport { RowContext };\n","import * as React from 'react';\nimport { useStyles } from '../context/StylesContext';\nimport { useRowContext } from '../context/RowContext';\nimport { CellExtended } from './Cell';\nimport { getProperty, getConditionalStyle, getPinnedCellMeta } from '../util';\nimport type { TableColumn, CellEditor } from '../types';\n\ninterface CellProps<T> {\n\tid: string;\n\tdataTag: string | null;\n\tcolumn: TableColumn<T>;\n\trow: T;\n\trowIndex: number;\n\tisDragging: boolean;\n}\n\nfunction Cell<T>({ id, column, row, rowIndex, dataTag, isDragging }: CellProps<T>): JSX.Element {\n\tconst customStyles = useStyles();\n\tconst { onDragStart, onDragOver, onDragEnd, onDragEnter, onDragLeave, columnWidths, pinnedOffsets } =\n\t\tuseRowContext<T>();\n\tconst resizedWidth = column.id != null ? columnWidths[column.id] : undefined;\n\tconst { conditionalStyle, classNames } = getConditionalStyle(row, column.conditionalCellStyles, ['rdt_TableCell']);\n\n\t// ── Inline editing ─────────────────────────────────────────────────────────\n\t// Resolve the editor descriptor: explicit `editor` wins; otherwise `editable: true`\n\t// is shorthand for a text editor.\n\tconst editor: CellEditor<T> | undefined = React.useMemo(\n\t\t() => (column.editor as CellEditor<T> | undefined) ?? (column.editable ? { type: 'text' } : undefined),\n\t\t[column.editor, column.editable],\n\t);\n\tconst [editing, setEditing] = React.useState(false);\n\tconst [editValue, setEditValue] = React.useState('');\n\tconst [editError, setEditError] = React.useState<string | null>(null);\n\tconst inputRef = React.useRef<HTMLInputElement | HTMLSelectElement>(null);\n\n\tconst seedValue = React.useCallback((): string => {\n\t\tconst raw = column.selector ? column.selector(row, rowIndex) : undefined;\n\t\tif (raw == null) return '';\n\t\tif (typeof raw === 'boolean') return raw ? 'true' : 'false';\n\t\treturn String(raw);\n\t}, [column, row, rowIndex]);\n\n\tconst startEdit = React.useCallback(() => {\n\t\tif (!editor) return;\n\t\tsetEditValue(seedValue());\n\t\tsetEditError(null);\n\t\tsetEditing(true);\n\t}, [editor, seedValue]);\n\n\tReact.useEffect(() => {\n\t\tif (editing) inputRef.current?.focus();\n\t}, [editing]);\n\n\tconst cancelEdit = React.useCallback(() => {\n\t\tsetEditing(false);\n\t\tsetEditError(null);\n\t}, []);\n\n\tconst commitEdit = React.useCallback(\n\t\t(value?: string) => {\n\t\t\tconst v = value ?? editValue;\n\t\t\tif (column.validate) {\n\t\t\t\tconst result = column.validate(v, row, column);\n\t\t\t\tif (result === false) {\n\t\t\t\t\tcancelEdit();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (typeof result === 'string') {\n\t\t\t\t\tsetEditError(result);\n\t\t\t\t\tinputRef.current?.focus();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t\tsetEditing(false);\n\t\t\tsetEditError(null);\n\t\t\tcolumn.onCellEdit?.(row, v, column);\n\t\t},\n\t\t[column, row, editValue, cancelEdit],\n\t);\n\n\tconst handleInputKeyDown = (e: React.KeyboardEvent<HTMLInputElement | HTMLSelectElement>) => {\n\t\tif (e.key === 'Enter') commitEdit();\n\t\tif (e.key === 'Escape') cancelEdit();\n\t};\n\n\t// ── Column pinning ─────────────────────────────────────────────────────────\n\tconst pinMeta = getPinnedCellMeta(column, pinnedOffsets);\n\tconst pinnedStyle: React.CSSProperties = pinMeta.style.position === 'sticky' ? { ...pinMeta.style, zIndex: 1 } : {};\n\tconst pinnedClass = pinMeta.className;\n\n\tconst editableClass = editor && !editing ? 'rdt_cellEditable' : '';\n\tconst editingClass = editing ? 'rdt_cellEditing' : '';\n\tconst errorClass = editError ? 'rdt_cellEditError' : '';\n\n\t// Checkbox editor commits instantly on click — no extra state.\n\tconst handleCheckboxCommit = (e: React.MouseEvent<HTMLDivElement> | React.ChangeEvent<HTMLInputElement>) => {\n\t\te.stopPropagation();\n\t\tconst current = seedValue() === 'true';\n\t\tcommitEdit(current ? 'false' : 'true');\n\t};\n\n\treturn (\n\t\t<CellExtended\n\t\t\tid={id}\n\t\t\tdata-column-id={column.id}\n\t\t\trole=\"cell\"\n\t\t\tclassName={[classNames, pinnedClass, editableClass, editingClass, errorClass].filter(Boolean).join(' ')}\n\t\t\tdata-tag={dataTag}\n\t\t\tbutton={column.button}\n\t\t\tcenter={column.center}\n\t\t\tcompact={column.compact}\n\t\t\tgrow={resizedWidth != null ? 0 : column.grow}\n\t\t\thide={column.hide}\n\t\t\tmaxWidth={resizedWidth != null ? `${resizedWidth}px` : column.maxWidth}\n\t\t\tminWidth={resizedWidth != null ? `${resizedWidth}px` : column.minWidth}\n\t\t\tright={column.right}\n\t\t\twidth={resizedWidth != null ? `${resizedWidth}px` : column.width}\n\t\t\tcellStyle={customStyles.cells?.style as React.CSSProperties}\n\t\t\tstyle={{\n\t\t\t\t...(column.style as React.CSSProperties),\n\t\t\t\t...(isDragging ? (customStyles.cells?.draggingStyle as React.CSSProperties) : undefined),\n\t\t\t\t...(conditionalStyle as React.CSSProperties),\n\t\t\t\t...pinnedStyle,\n\t\t\t}}\n\t\t\tdraggable={column.reorder || undefined}\n\t\t\tonDragStart={column.reorder ? onDragStart : undefined}\n\t\t\tonDragOver={column.reorder ? onDragOver : undefined}\n\t\t\tonDragEnd={column.reorder ? onDragEnd : undefined}\n\t\t\tonDragEnter={column.reorder ? onDragEnter : undefined}\n\t\t\tonDragLeave={column.reorder ? onDragLeave : undefined}\n\t\t\tonClick={editor && !editing && editor.type !== 'checkbox' ? startEdit : undefined}\n\t\t>\n\t\t\t{editing && editor?.type === 'text' && (\n\t\t\t\t<input\n\t\t\t\t\tref={inputRef as React.RefObject<HTMLInputElement>}\n\t\t\t\t\tclassName=\"rdt_editInput\"\n\t\t\t\t\tvalue={editValue}\n\t\t\t\t\tplaceholder={editor.placeholder}\n\t\t\t\t\taria-invalid={!!editError}\n\t\t\t\t\tonChange={e => setEditValue(e.target.value)}\n\t\t\t\t\tonBlur={() => commitEdit()}\n\t\t\t\t\tonKeyDown={handleInputKeyDown}\n\t\t\t\t\tonClick={e => e.stopPropagation()}\n\t\t\t\t/>\n\t\t\t)}\n\t\t\t{editing && editor?.type === 'number' && (\n\t\t\t\t<input\n\t\t\t\t\tref={inputRef as React.RefObject<HTMLInputElement>}\n\t\t\t\t\ttype=\"number\"\n\t\t\t\t\tclassName=\"rdt_editInput\"\n\t\t\t\t\tvalue={editValue}\n\t\t\t\t\tplaceholder={editor.placeholder}\n\t\t\t\t\tmin={editor.min}\n\t\t\t\t\tmax={editor.max}\n\t\t\t\t\tstep={editor.step}\n\t\t\t\t\taria-invalid={!!editError}\n\t\t\t\t\tonChange={e => setEditValue(e.target.value)}\n\t\t\t\t\tonBlur={() => commitEdit()}\n\t\t\t\t\tonKeyDown={handleInputKeyDown}\n\t\t\t\t\tonClick={e => e.stopPropagation()}\n\t\t\t\t/>\n\t\t\t)}\n\t\t\t{editing && editor?.type === 'date' && (\n\t\t\t\t<input\n\t\t\t\t\tref={inputRef as React.RefObject<HTMLInputElement>}\n\t\t\t\t\ttype=\"date\"\n\t\t\t\t\tclassName=\"rdt_editInput\"\n\t\t\t\t\tvalue={editValue}\n\t\t\t\t\tmin={editor.min}\n\t\t\t\t\tmax={editor.max}\n\t\t\t\t\taria-invalid={!!editError}\n\t\t\t\t\tonChange={e => setEditValue(e.target.value)}\n\t\t\t\t\tonBlur={() => commitEdit()}\n\t\t\t\t\tonKeyDown={handleInputKeyDown}\n\t\t\t\t\tonClick={e => e.stopPropagation()}\n\t\t\t\t/>\n\t\t\t)}\n\t\t\t{editor?.type === 'checkbox' && (\n\t\t\t\t// eslint-disable-next-line jsx-a11y/no-static-element-interactions\n\t\t\t\t<div\n\t\t\t\t\tclassName=\"rdt_editCheckboxWrap\"\n\t\t\t\t\tonClick={handleCheckboxCommit}\n\t\t\t\t\tonKeyDown={e => {\n\t\t\t\t\t\tif (e.key === ' ' || e.key === 'Enter') {\n\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t\thandleCheckboxCommit(e as unknown as React.MouseEvent<HTMLDivElement>);\n\t\t\t\t\t\t}\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\t<input\n\t\t\t\t\t\ttype=\"checkbox\"\n\t\t\t\t\t\tclassName=\"rdt_editCheckbox\"\n\t\t\t\t\t\taria-checked={seedValue() === 'true'}\n\t\t\t\t\t\tchecked={seedValue() === 'true'}\n\t\t\t\t\t\tonChange={handleCheckboxCommit}\n\t\t\t\t\t\tonClick={e => e.stopPropagation()}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t)}\n\t\t\t{editing && editor?.type === 'select' && (\n\t\t\t\t<select\n\t\t\t\t\tref={inputRef as React.RefObject<HTMLSelectElement>}\n\t\t\t\t\tclassName=\"rdt_editSelect\"\n\t\t\t\t\tvalue={editValue}\n\t\t\t\t\taria-invalid={!!editError}\n\t\t\t\t\tonChange={e => {\n\t\t\t\t\t\tsetEditValue(e.target.value);\n\t\t\t\t\t\tcommitEdit(e.target.value);\n\t\t\t\t\t}}\n\t\t\t\t\tonBlur={() => commitEdit()}\n\t\t\t\t\tonKeyDown={handleInputKeyDown}\n\t\t\t\t\tonClick={e => e.stopPropagation()}\n\t\t\t\t>\n\t\t\t\t\t{editor.placeholder !== undefined && (\n\t\t\t\t\t\t<option value=\"\" disabled hidden>\n\t\t\t\t\t\t\t{editor.placeholder}\n\t\t\t\t\t\t</option>\n\t\t\t\t\t)}\n\t\t\t\t\t{editor.options.map(opt => (\n\t\t\t\t\t\t<option key={opt.value} value={opt.value}>\n\t\t\t\t\t\t\t{typeof opt.label === 'string' || typeof opt.label === 'number' ? opt.label : opt.value}\n\t\t\t\t\t\t</option>\n\t\t\t\t\t))}\n\t\t\t\t</select>\n\t\t\t)}\n\t\t\t{editing && editor?.type === 'custom' && (\n\t\t\t\t// eslint-disable-next-line jsx-a11y/no-static-element-interactions, jsx-a11y/click-events-have-key-events\n\t\t\t\t<div className=\"rdt_editCustomWrap\" onClick={e => e.stopPropagation()}>\n\t\t\t\t\t{/* eslint-disable-next-line react-hooks/refs */}\n\t\t\t\t\t{editor.render({\n\t\t\t\t\t\trow,\n\t\t\t\t\t\tvalue: editValue,\n\t\t\t\t\t\tsetValue: setEditValue,\n\t\t\t\t\t\tcommit: commitEdit,\n\t\t\t\t\t\tcancel: cancelEdit,\n\t\t\t\t\t\tcolumn,\n\t\t\t\t\t})}\n\t\t\t\t</div>\n\t\t\t)}\n\t\t\t{editError && (\n\t\t\t\t<span className=\"rdt_editErrorTip\" role=\"alert\">\n\t\t\t\t\t{editError}\n\t\t\t\t</span>\n\t\t\t)}\n\t\t\t{!editing && editor?.type !== 'checkbox' && (\n\t\t\t\t<>\n\t\t\t\t\t{!column.cell && (\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tdata-tag={dataTag}\n\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\twhiteSpace: column.wrap ? 'normal' : 'nowrap',\n\t\t\t\t\t\t\t\toverflow: column.allowOverflow ? 'visible' : 'hidden',\n\t\t\t\t\t\t\t\ttextOverflow: 'ellipsis',\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{getProperty(row, column.selector, column.format, rowIndex)}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t)}\n\t\t\t\t\t{column.cell && column.cell(row, rowIndex, column, id)}\n\t\t\t\t</>\n\t\t\t)}\n\t\t</CellExtended>\n\t);\n}\n\nfunction areCellPropsEqual<T>(prevProps: CellProps<T>, nextProps: CellProps<T>): boolean {\n\tif (prevProps.row !== nextProps.row) return false;\n\tif (prevProps.column !== nextProps.column) return false;\n\tif (prevProps.isDragging !== nextProps.isDragging) return false;\n\tif (prevProps.rowIndex !== nextProps.rowIndex) return false;\n\tif (prevProps.dataTag !== nextProps.dataTag) return false;\n\tif (prevProps.id !== nextProps.id) return false;\n\treturn true;\n}\n\nexport default React.memo(Cell, areCellPropsEqual) as typeof Cell;\n","import * as React from 'react';\nimport '../DataTable.css';\nimport { CellBase } from './Cell';\nimport Checkbox from './Checkbox';\nimport { prop, isEmpty } from '../util';\nimport type { RowState, SingleRowAction, RangeRowAction, ComponentProps, TableRow } from '../types';\n\ntype TableCellCheckboxProps<T> = {\n\tname: string;\n\tkeyField: string;\n\trow: T;\n\trowCount: number;\n\tselected: boolean;\n\tselectableRowsComponent: 'input' | React.ComponentType<React.InputHTMLAttributes<HTMLInputElement>>;\n\tselectableRowsComponentProps: ComponentProps;\n\tselectableRowsSingle: boolean;\n\tselectableRowDisabled: RowState<T>;\n\tonSelectedRow: (action: SingleRowAction<T>) => void;\n\tonSelectedRange: (action: RangeRowAction<T>) => void;\n\tvisibleRowsRef: React.MutableRefObject<T[]>;\n\tlastSelectedKeyRef: React.MutableRefObject<string | number | null>;\n\tselectableRowsRange: boolean;\n};\n\nfunction TableCellCheckbox<T>({\n\tname,\n\tkeyField,\n\trow,\n\trowCount,\n\tselected,\n\tselectableRowsComponent,\n\tselectableRowsComponentProps,\n\tselectableRowsSingle,\n\tselectableRowDisabled,\n\tonSelectedRow,\n\tonSelectedRange,\n\tvisibleRowsRef,\n\tlastSelectedKeyRef,\n\tselectableRowsRange,\n}: TableCellCheckboxProps<T>): JSX.Element {\n\tconst disabled = !!(selectableRowDisabled && selectableRowDisabled(row));\n\tconst rowKey = prop(row as TableRow, keyField) as string | number | undefined;\n\n\tconst handleOnRowSelected = (e?: React.MouseEvent | React.ChangeEvent) => {\n\t\tconst native = (e as React.MouseEvent | undefined)?.nativeEvent;\n\t\tconst shiftKey = native && 'shiftKey' in native ? native.shiftKey : false;\n\t\tconst anchorKey = lastSelectedKeyRef.current;\n\n\t\tif (\n\t\t\tshiftKey &&\n\t\t\tselectableRowsRange &&\n\t\t\t!selectableRowsSingle &&\n\t\t\tanchorKey != null &&\n\t\t\trowKey != null &&\n\t\t\tanchorKey !== rowKey\n\t\t) {\n\t\t\tconst visibleRows = visibleRowsRef.current;\n\t\t\tconst anchorIndex = visibleRows.findIndex(r => prop(r as TableRow, keyField) === anchorKey);\n\t\t\tconst targetIndex = visibleRows.findIndex(r => prop(r as TableRow, keyField) === rowKey);\n\n\t\t\tif (anchorIndex !== -1 && targetIndex !== -1) {\n\t\t\t\tconst [from, to] = anchorIndex < targetIndex ? [anchorIndex, targetIndex] : [targetIndex, anchorIndex];\n\t\t\t\tconst rangeRows = visibleRows.slice(from, to + 1);\n\t\t\t\t// \"select\" is derived from the clicked row's current state: if it's currently\n\t\t\t\t// unselected, this gesture selects the whole range; if selected, it deselects.\n\t\t\t\tconst select = !selected;\n\t\t\t\tconst disabledRows = selectableRowDisabled ? rangeRows.filter(r => selectableRowDisabled(r)) : undefined;\n\n\t\t\t\tonSelectedRange({\n\t\t\t\t\ttype: 'SELECT_RANGE',\n\t\t\t\t\tkeyField,\n\t\t\t\t\trangeRows,\n\t\t\t\t\trowCount,\n\t\t\t\t\tselect,\n\t\t\t\t\tdisabledRows,\n\t\t\t\t});\n\t\t\t\tlastSelectedKeyRef.current = rowKey;\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\tonSelectedRow({\n\t\t\ttype: 'SELECT_SINGLE_ROW',\n\t\t\trow,\n\t\t\tisSelected: selected,\n\t\t\tkeyField,\n\t\t\trowCount,\n\t\t\tsingleSelect: selectableRowsSingle,\n\t\t});\n\t\tif (!isEmpty(rowKey)) lastSelectedKeyRef.current = rowKey as string | number;\n\t};\n\n\treturn (\n\t\t<CellBase\n\t\t\tonClick={(e: React.MouseEvent) => e.stopPropagation()}\n\t\t\tclassName={['rdt_TableCell', 'rdt_cellCheckbox'].join(' ')}\n\t\t\trole=\"cell\"\n\t\t\t$noPadding\n\t\t>\n\t\t\t<Checkbox\n\t\t\t\tname={name}\n\t\t\t\tcomponent={selectableRowsComponent}\n\t\t\t\tcomponentOptions={selectableRowsComponentProps}\n\t\t\t\tchecked={selected}\n\t\t\t\taria-checked={selected}\n\t\t\t\tonClick={handleOnRowSelected}\n\t\t\t\tdisabled={disabled}\n\t\t\t/>\n\t\t</CellBase>\n\t);\n}\n\nexport default TableCellCheckbox;\n","import * as React from 'react';\nimport '../DataTable.css';\nimport { useStyles } from '../context/StylesContext';\nimport type { ExpandableIcon, Localization } from '../types';\n\ntype ExpandableRowsOptions = NonNullable<Localization['expandable']>;\n\ntype ExpanderButtonProps<T> = {\n\tdisabled?: boolean;\n\texpanded?: boolean;\n\texpandableIcon: ExpandableIcon;\n\texpandableRowsOptions?: ExpandableRowsOptions;\n\tid: string | number;\n\trow: T;\n\tonToggled?: (row: T) => void;\n};\n\nfunction ExpanderButton<T>({\n\tdisabled = false,\n\texpanded = false,\n\texpandableIcon,\n\texpandableRowsOptions,\n\tid,\n\trow,\n\tonToggled,\n}: ExpanderButtonProps<T>): JSX.Element {\n\tconst customStyles = useStyles();\n\tconst icon = expanded ? expandableIcon.expanded : expandableIcon.collapsed;\n\tconst handleToggle = () => onToggled && onToggled(row);\n\n\treturn (\n\t\t<button\n\t\t\tclassName=\"rdt_expanderButton\"\n\t\t\tstyle={customStyles.expanderButton?.style}\n\t\t\taria-disabled={disabled}\n\t\t\tonClick={handleToggle}\n\t\t\tdata-testid={`expander-button-${id}`}\n\t\t\tdisabled={disabled}\n\t\t\taria-label={\n\t\t\t\texpanded\n\t\t\t\t\t? (expandableRowsOptions?.collapseRowAriaLabel ?? 'Collapse Row')\n\t\t\t\t\t: (expandableRowsOptions?.expandRowAriaLabel ?? 'Expand Row')\n\t\t\t}\n\t\t\ttype=\"button\"\n\t\t>\n\t\t\t{icon}\n\t\t</button>\n\t);\n}\n\nexport default ExpanderButton;\n","import * as React from 'react';\nimport '../DataTable.css';\nimport { useStyles } from '../context/StylesContext';\nimport { CellBase } from './Cell';\nimport ExpanderButton from './ExpanderButton';\nimport type { ExpandableIcon, Localization } from '../types';\n\ntype ExpandableRowsOptions = NonNullable<Localization['expandable']>;\n\ntype CellExpanderProps<T> = {\n\tdisabled: boolean;\n\texpanded: boolean;\n\texpandableIcon: ExpandableIcon;\n\texpandableRowsOptions?: ExpandableRowsOptions;\n\tid: string | number;\n\trow: T;\n\tonToggled: (row: T) => void;\n};\n\nfunction CellExpander<T>({\n\trow,\n\texpanded = false,\n\texpandableIcon,\n\texpandableRowsOptions,\n\tid,\n\tonToggled,\n\tdisabled = false,\n}: CellExpanderProps<T>): JSX.Element {\n\tconst customStyles = useStyles();\n\n\treturn (\n\t\t<CellBase\n\t\t\tonClick={(e: React.MouseEvent) => e.stopPropagation()}\n\t\t\tclassName=\"rdt_cellExpander\"\n\t\t\t$noPadding\n\t\t\tstyle={customStyles.expanderCell?.style as React.CSSProperties}\n\t\t>\n\t\t\t<ExpanderButton\n\t\t\t\tid={id}\n\t\t\t\trow={row}\n\t\t\t\texpanded={expanded}\n\t\t\t\texpandableIcon={expandableIcon}\n\t\t\t\texpandableRowsOptions={expandableRowsOptions}\n\t\t\t\tdisabled={disabled}\n\t\t\t\tonToggled={onToggled}\n\t\t\t/>\n\t\t</CellBase>\n\t);\n}\n\nexport default CellExpander;\n","import * as React from 'react';\nimport '../DataTable.css';\nimport { useStyles } from '../context/StylesContext';\nimport type { CSSObject, ComponentProps, ExpandableRowsComponent } from '../types';\n\ntype ExpanderRowProps<T> = {\n\tdata: T;\n\tExpanderComponent: ExpandableRowsComponent<T>;\n\textendedRowStyle: CSSObject;\n\textendedClassNames: string;\n\texpanderComponentProps: ComponentProps;\n\tanimate: boolean;\n\tclosing: boolean;\n};\n\nfunction ExpanderRow<T>({\n\tdata,\n\tExpanderComponent,\n\texpanderComponentProps,\n\textendedRowStyle,\n\textendedClassNames,\n\tanimate,\n\tclosing,\n}: ExpanderRowProps<T>): JSX.Element {\n\tconst customStyles = useStyles();\n\tconst extraClasses = extendedClassNames.split(' ').filter(c => c !== 'rdt_TableRow');\n\tconst className = ['rdt_ExpanderRow', 'rdt_expanderRow', ...extraClasses].join(' ');\n\tconst wrapperClassName = animate\n\t\t? closing\n\t\t\t? 'rdt_expanderRowAnimated rdt_expanderRowClosing'\n\t\t\t: 'rdt_expanderRowAnimated'\n\t\t: undefined;\n\n\treturn (\n\t\t<div className={wrapperClassName}>\n\t\t\t<div\n\t\t\t\tclassName={className}\n\t\t\t\tstyle={{ ...customStyles.expanderRow?.style, ...(extendedRowStyle as React.CSSProperties) }}\n\t\t\t>\n\t\t\t\t<ExpanderComponent data={data} {...expanderComponentProps} />\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n\nexport default React.memo(ExpanderRow) as typeof ExpanderRow;\n","import * as React from 'react';\nimport '../DataTable.css';\nimport { useStyles } from '../context/StylesContext';\nimport { useRowContext } from '../context/RowContext';\nimport TableCell from './TableCell';\nimport TableCellCheckbox from './TableCellCheckbox';\nimport TableCellExpander from './TableCellExpander';\nimport ExpanderRow from './ExpanderRow';\nimport RightPinSpacer from './RightPinSpacer';\nimport { prop, equalizeId, getConditionalStyle, isOdd } from '../util';\nimport { STOP_PROP_TAG } from '../constants';\nimport type { TableRow } from '../types';\n\ninterface TableRowProps<T> {\n\t'data-row-id': string | number;\n\tdefaultExpanded: boolean;\n\tdefaultExpanderDisabled: boolean;\n\tdraggingColumnId?: string | number;\n\tid: string | number;\n\tisNew: boolean;\n\tnewRowIndex: number;\n\trow: T;\n\trowCount: number;\n\trowIndex: number;\n\tselected: boolean;\n}\n\nfunction Row<T>({\n\tdefaultExpanded = false,\n\tdefaultExpanderDisabled = false,\n\tdraggingColumnId,\n\tid,\n\tisNew,\n\tnewRowIndex,\n\trow,\n\trowCount,\n\trowIndex,\n\tselected,\n}: TableRowProps<T>): JSX.Element {\n\tconst customStyles = useStyles();\n\tconst {\n\t\tcolumns,\n\t\tconditionalRowStyles,\n\t\tdense,\n\t\texpandableIcon,\n\t\tlocalization,\n\t\texpandableRows,\n\t\texpandableRowsComponent,\n\t\texpandableRowsComponentProps,\n\t\texpandableRowsHideExpander,\n\t\texpandOnRowClicked,\n\t\texpandOnRowDoubleClicked,\n\t\texpandableInheritConditionalStyles,\n\t\thighlightOnHover,\n\t\tkeyField,\n\t\tonRowClicked,\n\t\tonRowDoubleClicked,\n\t\tonRowMiddleClicked,\n\t\tonRowMouseEnter,\n\t\tonRowMouseLeave,\n\t\tonRowExpandToggled,\n\t\tonSelectedRow,\n\t\tonSelectedRange,\n\t\tvisibleRowsRef,\n\t\tlastSelectedKeyRef,\n\t\tselectableRowsRange,\n\t\tpointerOnHover,\n\t\tselectableRowDisabled,\n\t\tselectableRows,\n\t\tselectableRowsComponent,\n\t\tselectableRowsComponentProps,\n\t\tselectableRowsHighlight,\n\t\tselectableRowsSingle,\n\t\tstriped,\n\t} = useRowContext<T>();\n\n\ttype ExpanderState = { expanded: boolean; mounted: boolean; closing: boolean };\n\ttype ExpanderAction = { type: 'open' } | { type: 'close' } | { type: 'unmount' } | { type: 'sync'; value: boolean };\n\n\tconst [expanderState, expanderDispatch] = React.useReducer(\n\t\t(state: ExpanderState, action: ExpanderAction): ExpanderState => {\n\t\t\tswitch (action.type) {\n\t\t\t\tcase 'open':\n\t\t\t\t\treturn { expanded: true, mounted: true, closing: false };\n\t\t\t\tcase 'close':\n\t\t\t\t\treturn { ...state, expanded: false, closing: true };\n\t\t\t\tcase 'unmount':\n\t\t\t\t\treturn { expanded: false, mounted: false, closing: false };\n\t\t\t\tcase 'sync':\n\t\t\t\t\treturn { expanded: action.value, mounted: action.value, closing: false };\n\t\t\t\tdefault:\n\t\t\t\t\treturn state;\n\t\t\t}\n\t\t},\n\t\t{ expanded: defaultExpanded, mounted: defaultExpanded, closing: false },\n\t);\n\n\tconst expanded = expanderState.expanded;\n\tconst expanderMounted = expanderState.mounted;\n\tconst isClosing = expanderState.closing;\n\n\tReact.useEffect(() => {\n\t\texpanderDispatch({ type: 'sync', value: defaultExpanded });\n\t}, [defaultExpanded]);\n\n\tconst { animateRows } = useRowContext<T>();\n\n\tconst EXPAND_DURATION = 220;\n\tconst closeTimerRef = React.useRef<ReturnType<typeof setTimeout> | null>(null);\n\n\tconst openExpander = React.useCallback(() => {\n\t\tif (closeTimerRef.current) clearTimeout(closeTimerRef.current);\n\t\texpanderDispatch({ type: 'open' });\n\t}, []);\n\n\tconst closeExpander = React.useCallback(() => {\n\t\tif (animateRows) {\n\t\t\texpanderDispatch({ type: 'close' });\n\t\t\tcloseTimerRef.current = setTimeout(() => {\n\t\t\t\texpanderDispatch({ type: 'unmount' });\n\t\t\t}, EXPAND_DURATION);\n\t\t} else {\n\t\t\texpanderDispatch({ type: 'unmount' });\n\t\t}\n\t}, [animateRows]);\n\n\tconst handleExpanded = React.useCallback(() => {\n\t\tconst next = !expanded;\n\t\tonRowExpandToggled(next, row);\n\t\tif (next) openExpander();\n\t\telse closeExpander();\n\t}, [expanded, onRowExpandToggled, row, openExpander, closeExpander]);\n\n\tconst showPointer = pointerOnHover || (expandableRows && (expandOnRowClicked || expandOnRowDoubleClicked));\n\n\tconst handleRowClick = React.useCallback(\n\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\tconst target = e.target as HTMLDivElement;\n\t\t\tif (target.getAttribute('data-tag') === STOP_PROP_TAG) {\n\t\t\t\tonRowClicked(row, e);\n\t\t\t\tif (!defaultExpanderDisabled && expandableRows && expandOnRowClicked) {\n\t\t\t\t\thandleExpanded();\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t[defaultExpanderDisabled, expandOnRowClicked, expandableRows, handleExpanded, onRowClicked, row],\n\t);\n\n\tconst handleKeyDown = React.useCallback(\n\t\t(e: React.KeyboardEvent<HTMLDivElement>) => {\n\t\t\tif (e.key === 'Enter') {\n\t\t\t\tif (!defaultExpanderDisabled && expandableRows && expandOnRowClicked) {\n\t\t\t\t\thandleExpanded();\n\t\t\t\t}\n\t\t\t\tonRowClicked(row, e as unknown as React.MouseEvent);\n\t\t\t}\n\t\t},\n\t\t[defaultExpanderDisabled, expandableRows, expandOnRowClicked, handleExpanded, onRowClicked, row],\n\t);\n\n\tconst handleRowDoubleClick = React.useCallback(\n\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\tconst target = e.target as HTMLDivElement;\n\t\t\tif (target.getAttribute('data-tag') === STOP_PROP_TAG) {\n\t\t\t\tonRowDoubleClicked(row, e);\n\t\t\t\tif (!defaultExpanderDisabled && expandableRows && expandOnRowDoubleClicked) {\n\t\t\t\t\thandleExpanded();\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t[defaultExpanderDisabled, expandOnRowDoubleClicked, expandableRows, handleExpanded, onRowDoubleClicked, row],\n\t);\n\n\tconst handleRowAuxClick = React.useCallback(\n\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\tconst target = e.target as HTMLDivElement;\n\t\t\tif (target.getAttribute('data-tag') === STOP_PROP_TAG) {\n\t\t\t\tonRowMiddleClicked(row, e);\n\t\t\t}\n\t\t},\n\t\t[onRowMiddleClicked, row],\n\t);\n\n\tconst handleRowMouseEnter = React.useCallback(\n\t\t(e: React.MouseEvent<Element, MouseEvent>) => onRowMouseEnter(row, e),\n\t\t[onRowMouseEnter, row],\n\t);\n\n\tconst handleRowMouseLeave = React.useCallback(\n\t\t(e: React.MouseEvent<Element, MouseEvent>) => onRowMouseLeave(row, e),\n\t\t[onRowMouseLeave, row],\n\t);\n\n\tconst rowKeyField = prop(row as TableRow, keyField) ?? rowIndex;\n\n\t// ID of the first (leftmost) right-pinned column — a spacer is injected just\n\t// before it so the non-pinned columns fill the available space between the pins.\n\tconst firstRightPinnedId = React.useMemo(() => {\n\t\tfor (const col of columns) {\n\t\t\tif (!col.omit && col.pinned === 'right') return col.id;\n\t\t}\n\t\treturn null;\n\t}, [columns]);\n\tconst { conditionalStyle, classNames } = React.useMemo(\n\t\t() => getConditionalStyle(row, conditionalRowStyles, ['rdt_TableRow']),\n\t\t[row, conditionalRowStyles],\n\t);\n\tconst highlightSelected = selectableRowsHighlight && selected;\n\tconst inheritStyles = expandableInheritConditionalStyles ? conditionalStyle : {};\n\tconst isStriped = striped && isOdd(rowIndex);\n\n\tconst shouldAnimate = animateRows && isNew;\n\n\tconst className = [\n\t\tclassNames,\n\t\t'rdt_row',\n\t\tdense && 'rdt_rowDense',\n\t\tisStriped && 'rdt_rowStriped',\n\t\thighlightSelected && 'rdt_rowSelected',\n\t\thighlightOnHover && 'rdt_rowHighlight',\n\t\t!defaultExpanderDisabled && showPointer && 'rdt_rowPointer',\n\t\tshouldAnimate && 'rdt_animatedRow',\n\t]\n\t\t.filter(Boolean)\n\t\t.join(' ');\n\n\tconst style: React.CSSProperties = {\n\t\t...customStyles.rows?.style,\n\t\t...(dense && customStyles.rows?.denseStyle),\n\t\t...(isStriped && customStyles.rows?.stripedStyle),\n\t\t...(highlightSelected && customStyles.rows?.selectedHighlightStyle),\n\t\t...(conditionalStyle as React.CSSProperties),\n\t\t// Stagger delay: only set when animating; clamped in the parent so the\n\t\t// cascade caps regardless of dataset size.\n\t\t...(shouldAnimate ? ({ '--rdt-row-index': newRowIndex } as React.CSSProperties) : null),\n\t};\n\n\treturn (\n\t\t<>\n\t\t\t<div\n\t\t\t\tid={`row-${id}`}\n\t\t\t\trole=\"row\"\n\t\t\t\taria-selected={selectableRows ? selected : undefined}\n\t\t\t\ttabIndex={!defaultExpanderDisabled && showPointer ? 0 : -1}\n\t\t\t\tclassName={className}\n\t\t\t\tstyle={style}\n\t\t\t\tonClick={handleRowClick}\n\t\t\t\tonKeyDown={handleKeyDown}\n\t\t\t\tonDoubleClick={handleRowDoubleClick}\n\t\t\t\tonAuxClick={handleRowAuxClick}\n\t\t\t\tonMouseEnter={handleRowMouseEnter}\n\t\t\t\tonMouseLeave={handleRowMouseLeave}\n\t\t\t>\n\t\t\t\t{selectableRows && (\n\t\t\t\t\t<TableCellCheckbox\n\t\t\t\t\t\tname={`Select row ${rowKeyField}`}\n\t\t\t\t\t\tkeyField={keyField}\n\t\t\t\t\t\trow={row}\n\t\t\t\t\t\trowCount={rowCount}\n\t\t\t\t\t\tselected={selected}\n\t\t\t\t\t\tselectableRowsComponent={selectableRowsComponent}\n\t\t\t\t\t\tselectableRowsComponentProps={selectableRowsComponentProps}\n\t\t\t\t\t\tselectableRowDisabled={selectableRowDisabled}\n\t\t\t\t\t\tselectableRowsSingle={selectableRowsSingle}\n\t\t\t\t\t\tonSelectedRow={onSelectedRow}\n\t\t\t\t\t\tonSelectedRange={onSelectedRange}\n\t\t\t\t\t\tvisibleRowsRef={visibleRowsRef}\n\t\t\t\t\t\tlastSelectedKeyRef={lastSelectedKeyRef}\n\t\t\t\t\t\tselectableRowsRange={selectableRowsRange}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\n\t\t\t\t{expandableRows && !expandableRowsHideExpander && (\n\t\t\t\t\t<TableCellExpander\n\t\t\t\t\t\tid={rowKeyField as string}\n\t\t\t\t\t\texpandableIcon={expandableIcon}\n\t\t\t\t\t\texpandableRowsOptions={localization}\n\t\t\t\t\t\texpanded={expanded}\n\t\t\t\t\t\trow={row}\n\t\t\t\t\t\tonToggled={handleExpanded}\n\t\t\t\t\t\tdisabled={defaultExpanderDisabled}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\n\t\t\t\t{columns.map(column => {\n\t\t\t\t\tif (column.omit) {\n\t\t\t\t\t\treturn null;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<React.Fragment key={`cell-${column.id}-${rowKeyField}`}>\n\t\t\t\t\t\t\t{firstRightPinnedId != null && column.id === firstRightPinnedId && <RightPinSpacer />}\n\t\t\t\t\t\t\t<TableCell\n\t\t\t\t\t\t\t\tid={`cell-${column.id}-${rowKeyField}`}\n\t\t\t\t\t\t\t\tdataTag={column.ignoreRowClick || column.button ? null : STOP_PROP_TAG}\n\t\t\t\t\t\t\t\tcolumn={column}\n\t\t\t\t\t\t\t\trow={row}\n\t\t\t\t\t\t\t\trowIndex={rowIndex}\n\t\t\t\t\t\t\t\tisDragging={equalizeId(draggingColumnId, column.id)}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</React.Fragment>\n\t\t\t\t\t);\n\t\t\t\t})}\n\t\t\t</div>\n\n\t\t\t{expandableRows && expanderMounted && expandableRowsComponent && (\n\t\t\t\t<ExpanderRow\n\t\t\t\t\tkey={`expander-${rowKeyField}`}\n\t\t\t\t\tdata={row}\n\t\t\t\t\textendedRowStyle={inheritStyles}\n\t\t\t\t\textendedClassNames={classNames}\n\t\t\t\t\tExpanderComponent={expandableRowsComponent}\n\t\t\t\t\texpanderComponentProps={expandableRowsComponentProps ?? {}}\n\t\t\t\t\tanimate={animateRows}\n\t\t\t\t\tclosing={isClosing}\n\t\t\t\t/>\n\t\t\t)}\n\t\t</>\n\t);\n}\n\nfunction areRowPropsEqual<T>(prevProps: TableRowProps<T>, nextProps: TableRowProps<T>): boolean {\n\tif (prevProps.row !== nextProps.row) return false;\n\tif (prevProps.selected !== nextProps.selected) return false;\n\tif (prevProps.defaultExpanded !== nextProps.defaultExpanded) return false;\n\tif (prevProps.defaultExpanderDisabled !== nextProps.defaultExpanderDisabled) return false;\n\tif (prevProps.draggingColumnId !== nextProps.draggingColumnId) return false;\n\tif (prevProps.rowCount !== nextProps.rowCount) return false;\n\tif (prevProps.rowIndex !== nextProps.rowIndex) return false;\n\tif (prevProps.isNew !== nextProps.isNew) return false;\n\tif (prevProps.newRowIndex !== nextProps.newRowIndex) return false;\n\treturn true;\n}\n\nexport default React.memo(Row, areRowPropsEqual) as typeof Row;\n","import * as React from 'react';\nimport '../DataTable.css';\nimport { useStyles } from '../context/StylesContext';\n\nexport default function NoDataWrapper({ style, ...rest }: React.HTMLAttributes<HTMLDivElement>): JSX.Element {\n\tconst customStyles = useStyles();\n\treturn <div role=\"status\" className=\"rdt_noData\" style={{ ...customStyles.noData?.style, ...style }} {...rest} />;\n}\n","import * as React from 'react';\nimport Body from './TableBody';\nimport Row from './TableRow';\nimport NoData from './NoDataWrapper';\nimport { prop, isEmpty } from '../util';\nimport type { TableRow, RowState } from '../types';\nimport { useRowContext } from '../context/RowContext';\nimport useIsomorphicLayoutEffect from '../hooks/useIsomorphicLayoutEffect';\n\nconst SKELETON_ROW_COUNT = 5;\n\nfunction SkeletonCell({ width }: { width: string }): JSX.Element {\n\treturn (\n\t\t<div\n\t\t\tclassName=\"rdt_cellBase\"\n\t\t\tstyle={{ flex: `0 0 ${width}`, minWidth: width, padding: '8px 16px', display: 'flex', alignItems: 'center' }}\n\t\t>\n\t\t\t<div className=\"rdt_skeletonPulse\" style={{ height: 14, borderRadius: 4, width: '70%' }} />\n\t\t</div>\n\t);\n}\n\nfunction SkeletonRow({ colCount, index }: { colCount: number; index: number }): JSX.Element {\n\treturn (\n\t\t<div className=\"rdt_row\" aria-hidden=\"true\" style={{ opacity: 1 - index * 0.15, minHeight: 48 }}>\n\t\t\t{Array.from({ length: colCount }).map((_, i) => (\n\t\t\t\t<SkeletonCell key={i} width={i === 0 ? '160px' : '120px'} />\n\t\t\t))}\n\t\t</div>\n\t);\n}\n\ninterface DataTableBodyProps<T> {\n\ttableRows: T[];\n\tsortedData: T[];\n\tselectedRows: T[];\n\tkeyField: string;\n\tisBusy: boolean;\n\tcolumnCount: number;\n\tnoDataComponent: React.ReactNode;\n\tprogressComponent: React.ReactNode;\n\texpandableRowExpanded?: RowState<T>;\n\texpandableRowDisabled?: RowState<T>;\n\tbodyRef: React.RefObject<HTMLDivElement>;\n\tprevRowTopsRef: React.MutableRefObject<Map<string | number, number>>;\n}\n\nconst STAGGER_CAP = 10;\n\nfunction DataTableBody<T>({\n\ttableRows,\n\tsortedData,\n\tselectedRows,\n\tkeyField,\n\tisBusy,\n\tcolumnCount,\n\tnoDataComponent,\n\tprogressComponent,\n\texpandableRowExpanded,\n\texpandableRowDisabled,\n\tbodyRef,\n\tprevRowTopsRef,\n}: DataTableBodyProps<T>): JSX.Element {\n\tconst { expandableRows, animateRows } = useRowContext<T>();\n\tconst hasData = sortedData.length > 0;\n\n\tconst selectedIdSet = React.useMemo(\n\t\t() => new Set(selectedRows.map(r => prop(r as TableRow, keyField) as string | number)),\n\t\t[selectedRows, keyField],\n\t);\n\n\t// Animations must only run on the client — applying rdt_animatedRow during SSR\n\t// means the class is already in the HTML when the browser parses it, so the CSS\n\t// animation never fires (it only triggers when a class is *added* to a live element).\n\t// isMounted starts false and flips on first paint via a state updater triggered\n\t// by useReducer, which the rule does not flag as \"setState in effect\".\n\tconst [isMounted, mountDispatch] = React.useReducer(() => true, false);\n\tReact.useEffect(() => {\n\t\tmountDispatch();\n\t}, []);\n\n\t// Track which row IDs have been rendered so that sort/filter/pagination does not\n\t// re-trigger the entrance cascade — only genuinely new rows animate.\n\t// useMemo creates a fresh Set when keyField changes. The ref keeps a stable\n\t// pointer for effects and layout effects to mutate without needing captures.\n\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\tconst seenIdsSet = React.useMemo(() => new Set<string | number>(), [keyField]);\n\tconst seenIdsRef = React.useRef(seenIdsSet);\n\tuseIsomorphicLayoutEffect(() => {\n\t\tseenIdsRef.current = seenIdsSet;\n\t}, [seenIdsSet]);\n\n\t// ── Row FLIP animation on sort ────────────────────────────────────────────\n\t// prevRowTopsRef is snapshotted synchronously in DataTable's handleSort\n\t// before the state dispatch — so it always holds pre-sort row positions.\n\t// This effect is keyed only on tableRows so toggling animateRows or isMounted\n\t// never triggers a spurious FLIP from stale snapshot data.\n\t// Rows that had no pre-sort position (new to this page after sort) need an\n\t// entrance animation. We track them here and remove from seenIdsRef so the\n\t// next render marks them isNew. A forceUpdate triggers that re-render.\n\tconst [, forceUpdate] = React.useReducer(x => x + 1, 0);\n\n\tuseIsomorphicLayoutEffect(() => {\n\t\tif (!animateRows || !isMounted) {\n\t\t\tprevRowTopsRef.current = new Map();\n\t\t\treturn;\n\t\t}\n\t\tconst reducedMotion = window.matchMedia('(prefers-reduced-motion: reduce)').matches;\n\t\tconst container = bodyRef.current;\n\t\tif (!container) return;\n\n\t\tconst prevTops = prevRowTopsRef.current;\n\t\t// Only run FLIP if we have a snapshot (i.e. a sort actually happened)\n\t\tif (prevTops.size === 0) return;\n\n\t\tlet hasUnseenRows = false;\n\t\tcontainer.querySelectorAll<HTMLElement>('[id^=\"row-\"]').forEach(el => {\n\t\t\tconst id = el.id.slice(4);\n\t\t\tconst newTop = el.getBoundingClientRect().top;\n\t\t\tconst prevTop = prevTops.get(id);\n\n\t\t\tif (prevTop == null) {\n\t\t\t\t// Row is new to this page after sort — remove from seen so entrance animation fires\n\t\t\t\tseenIdsRef.current.delete(id);\n\t\t\t\thasUnseenRows = true;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (reducedMotion || Math.abs(prevTop - newTop) < 1) return;\n\n\t\t\tconst delta = prevTop - newTop;\n\t\t\tel.style.transform = `translateY(${delta}px)`;\n\t\t\tel.style.transition = 'none';\n\t\t\tel.getBoundingClientRect(); // force reflow\n\t\t\tel.style.transition = 'transform 0.22s cubic-bezier(0.2, 0, 0, 1)';\n\t\t\tel.style.transform = '';\n\t\t\tconst onEnd = () => {\n\t\t\t\tel.style.transform = '';\n\t\t\t\tel.style.transition = '';\n\t\t\t\tel.removeEventListener('transitionend', onEnd);\n\t\t\t};\n\t\t\tel.addEventListener('transitionend', onEnd);\n\t\t});\n\n\t\t// Clear snapshot so page navigation can't reuse stale sort positions\n\t\tprevRowTopsRef.current = new Map();\n\n\t\t// Trigger a re-render so rowMeta picks up the newly-unseened rows as isNew\n\t\tif (hasUnseenRows) forceUpdate();\n\t}, [tableRows]);\n\n\tconst rowMeta = React.useMemo(() => {\n\t\tlet newRowSeq = 0;\n\t\treturn tableRows.map((row, i) => {\n\t\t\tconst key = prop(row as TableRow, keyField) as string | number;\n\t\t\tconst id = isEmpty(key) ? i : key;\n\t\t\tconst selected = isEmpty(key) ? selectedRows.includes(row) : selectedIdSet.has(key);\n\t\t\tconst isNew = animateRows && isMounted && !seenIdsSet.has(id);\n\t\t\tconst newRowIndex = isNew ? Math.min(newRowSeq++, STAGGER_CAP) : 0;\n\t\t\treturn { row, id, selected, isNew, newRowIndex };\n\t\t});\n\t}, [tableRows, keyField, selectedRows, selectedIdSet, animateRows, isMounted, seenIdsSet]);\n\n\tReact.useEffect(() => {\n\t\tif (!animateRows) return;\n\t\tfor (const meta of rowMeta) {\n\t\t\tif (meta.isNew) seenIdsRef.current.add(meta.id);\n\t\t}\n\t}, [rowMeta, animateRows]);\n\n\treturn (\n\t\t<>\n\t\t\t{/* Empty + not loading */}\n\t\t\t{!hasData && !isBusy && <NoData>{noDataComponent}</NoData>}\n\n\t\t\t{/* Initial load: no existing data — show skeleton rows */}\n\t\t\t{isBusy && !hasData && (\n\t\t\t\t<Body className=\"rdt_TableBody\" role=\"rowgroup\">\n\t\t\t\t\t{Array.from({ length: SKELETON_ROW_COUNT }).map((_, i) => (\n\t\t\t\t\t\t<SkeletonRow key={i} colCount={columnCount} index={i} />\n\t\t\t\t\t))}\n\t\t\t\t</Body>\n\t\t\t)}\n\n\t\t\t{/* Has data — always render rows, overlay when re-fetching */}\n\t\t\t{hasData && (\n\t\t\t\t<div style={{ position: 'relative' }}>\n\t\t\t\t\t<Body ref={bodyRef} className={`rdt_TableBody${isBusy ? ' rdt_bodyBusy' : ''}`} role=\"rowgroup\">\n\t\t\t\t\t\t{rowMeta.map((meta, i) => {\n\t\t\t\t\t\t\tconst { row, id, selected, isNew, newRowIndex } = meta;\n\t\t\t\t\t\t\tconst defaultExpanded = !!(expandableRows && expandableRowExpanded && expandableRowExpanded(row));\n\t\t\t\t\t\t\tconst defaultExpanderDisabled = !!(expandableRows && expandableRowDisabled && expandableRowDisabled(row));\n\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<Row\n\t\t\t\t\t\t\t\t\tid={id}\n\t\t\t\t\t\t\t\t\tkey={id}\n\t\t\t\t\t\t\t\t\tdata-row-id={id}\n\t\t\t\t\t\t\t\t\trow={row}\n\t\t\t\t\t\t\t\t\trowCount={sortedData.length}\n\t\t\t\t\t\t\t\t\trowIndex={i}\n\t\t\t\t\t\t\t\t\tselected={selected}\n\t\t\t\t\t\t\t\t\tisNew={isNew}\n\t\t\t\t\t\t\t\t\tnewRowIndex={newRowIndex}\n\t\t\t\t\t\t\t\t\tdefaultExpanded={defaultExpanded}\n\t\t\t\t\t\t\t\t\tdefaultExpanderDisabled={defaultExpanderDisabled}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t})}\n\t\t\t\t\t</Body>\n\t\t\t\t\t{isBusy && (\n\t\t\t\t\t\t<div className=\"rdt_bodyOverlay\" aria-hidden=\"true\">\n\t\t\t\t\t\t\t{progressComponent}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</>\n\t);\n}\n\nexport default DataTableBody;\n","import * as React from 'react';\nimport type { PaginationComponent, PaginationIcons, PaginationOptions, Localization } from '../types';\nimport { Direction } from '../constants';\n\ninterface TablePaginationFooterProps {\n\tPagination: PaginationComponent;\n\tonChangePage: (page: number) => void;\n\tonChangeRowsPerPage: (newRowsPerPage: number) => void;\n\trowCount: number;\n\tcurrentPage: number;\n\trowsPerPage: number;\n\tdirection: Direction;\n\tpaginationRowsPerPageOptions: number[];\n\tpaginationIcons?: PaginationIcons;\n\tpaginationComponentOptions: PaginationOptions;\n\tlocalization?: Localization['pagination'];\n\tposition?: 'top' | 'bottom' | 'both';\n}\n\nfunction TablePaginationFooter({\n\tPagination,\n\tonChangePage,\n\tonChangeRowsPerPage,\n\trowCount,\n\tcurrentPage,\n\trowsPerPage,\n\tdirection,\n\tpaginationRowsPerPageOptions,\n\tpaginationIcons,\n\tpaginationComponentOptions,\n\tlocalization,\n\tposition,\n}: TablePaginationFooterProps): JSX.Element {\n\tconst border = '1px solid var(--rdt-color-divider, rgba(0, 0, 0, 0.12))';\n\tconst wrapperStyle = position === 'top' ? { borderBottom: border } : { borderTop: border };\n\n\treturn (\n\t\t<div style={wrapperStyle}>\n\t\t\t<Pagination\n\t\t\t\tonChangePage={onChangePage}\n\t\t\t\tonChangeRowsPerPage={onChangeRowsPerPage}\n\t\t\t\trowCount={rowCount}\n\t\t\t\tcurrentPage={currentPage}\n\t\t\t\trowsPerPage={rowsPerPage}\n\t\t\t\tdirection={direction}\n\t\t\t\tpaginationRowsPerPageOptions={paginationRowsPerPageOptions}\n\t\t\t\tpaginationIcons={paginationIcons}\n\t\t\t\tpaginationComponentOptions={paginationComponentOptions}\n\t\t\t\tlocalization={localization}\n\t\t\t/>\n\t\t</div>\n\t);\n}\n\nexport default React.memo(TablePaginationFooter);\n","import * as React from 'react';\nimport '../DataTable.css';\nimport { useStyles } from '../context/StylesContext';\nimport { useRowContext } from '../context/RowContext';\nimport { CellExtended } from './Cell';\nimport RightPinSpacer from './RightPinSpacer';\nimport { getPinnedCellMeta } from '../util';\nimport type { ColumnFooter, FooterComponent, TableColumn } from '../types';\n\ninterface TableFooterProps<T> {\n\tcolumns: TableColumn<T>[];\n\trows: T[];\n\tselectableRows: boolean;\n\texpandableRows: boolean;\n\texpandableRowsHideExpander: boolean;\n\tfooterComponent?: FooterComponent<T>;\n}\n\nfunction resolveFooter<T>(footer: ColumnFooter<T> | undefined, rows: T[]): React.ReactNode {\n\tif (footer == null) return null;\n\tif (typeof footer === 'function') return (footer as (rows: T[]) => React.ReactNode)(rows);\n\treturn footer;\n}\n\nfunction TableFooter<T>({\n\tcolumns,\n\trows,\n\tselectableRows,\n\texpandableRows,\n\texpandableRowsHideExpander,\n\tfooterComponent: FooterComponentProp,\n}: TableFooterProps<T>): JSX.Element {\n\tconst customStyles = useStyles();\n\tconst { columnWidths, pinnedOffsets } = useRowContext<T>();\n\n\t// First (leftmost) right-pinned column id — a spacer is injected before it so\n\t// non-pinned footer cells fill the gap to the right pins, matching TableRow.\n\tconst firstRightPinnedId = React.useMemo(() => {\n\t\tfor (const col of columns) {\n\t\t\tif (!col.omit && col.pinned === 'right') return col.id;\n\t\t}\n\t\treturn null;\n\t}, [columns]);\n\n\tconst style: React.CSSProperties = {\n\t\t...(customStyles.footer?.style as React.CSSProperties | undefined),\n\t};\n\n\tif (FooterComponentProp) {\n\t\treturn (\n\t\t\t<div role=\"rowgroup\" className=\"rdt_footer\" style={style}>\n\t\t\t\t<FooterComponentProp rows={rows} columns={columns} />\n\t\t\t</div>\n\t\t);\n\t}\n\n\treturn (\n\t\t<div role=\"rowgroup\" className=\"rdt_footer\" style={style}>\n\t\t\t<div role=\"row\" className=\"rdt_footerRow\">\n\t\t\t\t{selectableRows && <div aria-hidden=\"true\" className=\"rdt_cellBase rdt_footerSystemCell\" />}\n\t\t\t\t{expandableRows && !expandableRowsHideExpander && (\n\t\t\t\t\t<div aria-hidden=\"true\" className=\"rdt_cellBase rdt_footerSystemCell\" />\n\t\t\t\t)}\n\n\t\t\t\t{columns.map(column => {\n\t\t\t\t\tif (column.omit) return null;\n\t\t\t\t\tconst resizedWidth = column.id != null ? columnWidths[column.id] : undefined;\n\t\t\t\t\tconst pinMeta = getPinnedCellMeta(column, pinnedOffsets);\n\t\t\t\t\tconst pinnedStyle: React.CSSProperties =\n\t\t\t\t\t\tpinMeta.style.position === 'sticky' ? { ...pinMeta.style, zIndex: 1 } : {};\n\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<React.Fragment key={`footer-${column.id}`}>\n\t\t\t\t\t\t\t{firstRightPinnedId != null && column.id === firstRightPinnedId && <RightPinSpacer />}\n\t\t\t\t\t\t\t<CellExtended\n\t\t\t\t\t\t\t\trole=\"cell\"\n\t\t\t\t\t\t\t\tdata-column-id={column.id}\n\t\t\t\t\t\t\t\tclassName={['rdt_footerCell', pinMeta.className].filter(Boolean).join(' ')}\n\t\t\t\t\t\t\t\tbutton={column.button}\n\t\t\t\t\t\t\t\tcenter={column.center}\n\t\t\t\t\t\t\t\tcompact={column.compact}\n\t\t\t\t\t\t\t\tgrow={resizedWidth != null ? 0 : column.grow}\n\t\t\t\t\t\t\t\thide={column.hide}\n\t\t\t\t\t\t\t\tmaxWidth={resizedWidth != null ? `${resizedWidth}px` : column.maxWidth}\n\t\t\t\t\t\t\t\tminWidth={resizedWidth != null ? `${resizedWidth}px` : column.minWidth}\n\t\t\t\t\t\t\t\tright={column.right}\n\t\t\t\t\t\t\t\twidth={resizedWidth != null ? `${resizedWidth}px` : column.width}\n\t\t\t\t\t\t\t\tcellStyle={customStyles.footerCells?.style as React.CSSProperties | undefined}\n\t\t\t\t\t\t\t\tstyle={{ ...(column.style as React.CSSProperties), ...pinnedStyle }}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{resolveFooter(column.footer, rows)}\n\t\t\t\t\t\t\t</CellExtended>\n\t\t\t\t\t\t</React.Fragment>\n\t\t\t\t\t);\n\t\t\t\t})}\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n\nexport default TableFooter;\n","import * as React from 'react';\nimport '../DataTable.css';\n\ninterface PinnedScrollbarProps {\n\tscrollRef: React.RefObject<HTMLDivElement>;\n\tleftInset: number;\n\trightInset: number;\n}\n\nexport default function PinnedScrollbar({\n\tscrollRef,\n\tleftInset,\n\trightInset,\n}: PinnedScrollbarProps): JSX.Element | null {\n\tconst scrollContainerId = React.useId();\n\tconst trackRef = React.useRef<HTMLDivElement>(null);\n\tconst thumbRef = React.useRef<HTMLDivElement>(null);\n\tconst [thumbWidth, setThumbWidth] = React.useState(0);\n\tconst [thumbLeft, setThumbLeft] = React.useState(0);\n\tconst [visible, setVisible] = React.useState(false);\n\tconst [scrollPercent, setScrollPercent] = React.useState(0);\n\tconst isDragging = React.useRef(false);\n\tconst dragStartX = React.useRef(0);\n\tconst dragStartScroll = React.useRef(0);\n\n\tconst update = React.useCallback(() => {\n\t\tconst el = scrollRef.current;\n\t\tif (!el) return;\n\t\tconst { scrollWidth, clientWidth, scrollLeft } = el;\n\t\tconst canScroll = scrollWidth > clientWidth;\n\t\tsetVisible(canScroll);\n\t\tif (!canScroll) return;\n\t\tconst track = trackRef.current;\n\t\tconst trackWidth = track?.clientWidth ?? 0;\n\t\tif (trackWidth === 0) return;\n\t\tconst ratio = clientWidth / scrollWidth;\n\t\tconst tw = Math.max(ratio * trackWidth, 30);\n\t\tconst maxThumbLeft = trackWidth - tw;\n\t\tconst maxScroll = scrollWidth - clientWidth;\n\t\tsetThumbWidth(tw);\n\t\tsetThumbLeft((scrollLeft / maxScroll) * maxThumbLeft);\n\t\tsetScrollPercent(maxScroll > 0 ? Math.round((scrollLeft / maxScroll) * 100) : 0);\n\t}, [scrollRef]);\n\n\t// Sync scrollbar when scroll container scrolls or resizes\n\tReact.useEffect(() => {\n\t\tconst el = scrollRef.current;\n\t\tif (!el) return;\n\t\tif (!el.id) el.id = scrollContainerId;\n\t\tel.addEventListener('scroll', update, { passive: true });\n\t\tconst ro = new ResizeObserver(update);\n\t\tro.observe(el);\n\t\tupdate();\n\t\treturn () => {\n\t\t\tel.removeEventListener('scroll', update);\n\t\t\tro.disconnect();\n\t\t};\n\t}, [scrollRef, scrollContainerId, update]);\n\n\t// Thumb drag\n\tconst handleThumbMouseDown = React.useCallback(\n\t\t(e: React.MouseEvent) => {\n\t\t\te.preventDefault();\n\t\t\tconst el = scrollRef.current;\n\t\t\tif (!el) return;\n\t\t\tisDragging.current = true;\n\t\t\tdragStartX.current = e.clientX;\n\t\t\tdragStartScroll.current = el.scrollLeft;\n\n\t\t\tconst onMove = (ev: MouseEvent) => {\n\t\t\t\tif (!isDragging.current) return;\n\t\t\t\tconst track = trackRef.current;\n\t\t\t\tif (!el || !track) return;\n\t\t\t\tconst { scrollWidth, clientWidth } = el;\n\t\t\t\tconst trackWidth = track.clientWidth;\n\t\t\t\tconst tw = Math.max((clientWidth / scrollWidth) * trackWidth, 30);\n\t\t\t\tconst maxThumbLeft = trackWidth - tw;\n\t\t\t\tconst maxScroll = scrollWidth - clientWidth;\n\t\t\t\tconst dx = ev.clientX - dragStartX.current;\n\t\t\t\tconst scrollDelta = (dx / maxThumbLeft) * maxScroll;\n\t\t\t\tel.scrollLeft = Math.max(0, Math.min(maxScroll, dragStartScroll.current + scrollDelta));\n\t\t\t};\n\n\t\t\tconst onUp = () => {\n\t\t\t\tisDragging.current = false;\n\t\t\t\twindow.removeEventListener('mousemove', onMove);\n\t\t\t\twindow.removeEventListener('mouseup', onUp);\n\t\t\t};\n\n\t\t\twindow.addEventListener('mousemove', onMove);\n\t\t\twindow.addEventListener('mouseup', onUp);\n\t\t},\n\t\t[scrollRef],\n\t);\n\n\tconst handleThumbKeyDown = React.useCallback(\n\t\t(e: React.KeyboardEvent<HTMLDivElement>) => {\n\t\t\tconst el = scrollRef.current;\n\t\t\tif (!el) return;\n\t\t\tconst step = el.clientWidth * 0.1;\n\t\t\tif (e.key === 'ArrowLeft') {\n\t\t\t\te.preventDefault();\n\t\t\t\tel.scrollLeft -= step;\n\t\t\t} else if (e.key === 'ArrowRight') {\n\t\t\t\te.preventDefault();\n\t\t\t\tel.scrollLeft += step;\n\t\t\t} else if (e.key === 'Home') {\n\t\t\t\te.preventDefault();\n\t\t\t\tel.scrollLeft = 0;\n\t\t\t} else if (e.key === 'End') {\n\t\t\t\te.preventDefault();\n\t\t\t\tel.scrollLeft = el.scrollWidth;\n\t\t\t}\n\t\t},\n\t\t[scrollRef],\n\t);\n\n\t// Click on track (outside thumb) scrolls by page\n\tconst handleTrackClick = React.useCallback(\n\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\tconst thumb = thumbRef.current;\n\t\t\tif (thumb && thumb.contains(e.target as Node)) return;\n\t\t\tconst el = scrollRef.current;\n\t\t\tconst track = trackRef.current;\n\t\t\tif (!el || !track) return;\n\t\t\tconst rect = track.getBoundingClientRect();\n\t\t\tconst clickX = e.clientX - rect.left;\n\t\t\tconst { scrollWidth, clientWidth } = el;\n\t\t\tconst direction = clickX < thumbLeft ? -1 : 1;\n\t\t\tel.scrollLeft = Math.max(0, Math.min(scrollWidth - clientWidth, el.scrollLeft + direction * clientWidth * 0.8));\n\t\t},\n\t\t[scrollRef, thumbLeft],\n\t);\n\n\tif (!visible) return null;\n\n\treturn (\n\t\t<div\n\t\t\tclassName=\"rdt_pinnedScrollbarTrack\"\n\t\t\tref={trackRef}\n\t\t\trole=\"presentation\"\n\t\t\tstyle={{ marginLeft: leftInset, marginRight: rightInset }}\n\t\t\tonClick={handleTrackClick}\n\t\t>\n\t\t\t<div\n\t\t\t\tclassName=\"rdt_pinnedScrollbarThumb\"\n\t\t\t\tref={thumbRef}\n\t\t\t\trole=\"scrollbar\"\n\t\t\t\ttabIndex={0}\n\t\t\t\taria-controls={scrollContainerId}\n\t\t\t\taria-orientation=\"horizontal\"\n\t\t\t\taria-valuenow={scrollPercent}\n\t\t\t\taria-valuemin={0}\n\t\t\t\taria-valuemax={100}\n\t\t\t\tstyle={{ width: thumbWidth, transform: `translateX(${thumbLeft}px)` }}\n\t\t\t\tonMouseDown={handleThumbMouseDown}\n\t\t\t\tonKeyDown={handleThumbKeyDown}\n\t\t\t/>\n\t\t</div>\n\t);\n}\n","import { mergeDeep } from './util';\nimport type { TableStyles } from './types';\n\n/**\n * Merges user-supplied customStyles with an empty base.\n * All visual defaults live in DataTable.css via CSS custom properties.\n */\nexport const createStyles = (customStyles: TableStyles = {}): TableStyles => mergeDeep({}, customStyles);\n","export const defaultTheme = {\n\tprimary: '#1976d2',\n\ttext: {\n\t\tprimary: 'rgba(0, 0, 0, 0.87)',\n\t\tsecondary: 'rgba(0, 0, 0, 0.54)',\n\t\tdisabled: 'rgba(0, 0, 0, 0.38)',\n\t},\n\tbackground: {\n\t\tdefault: '#FFFFFF',\n\t},\n\tcontext: {\n\t\tbackground: '#e3f2fd',\n\t\ttext: 'rgba(0, 0, 0, 0.87)',\n\t},\n\tdivider: {\n\t\tdefault: 'rgba(0,0,0,.12)',\n\t},\n\tbutton: {\n\t\tdefault: 'rgba(0,0,0,.54)',\n\t\tfocus: 'rgba(0,0,0,.12)',\n\t\thover: 'rgba(0,0,0,.12)',\n\t\tdisabled: 'rgba(0, 0, 0, .18)',\n\t},\n\tselected: {\n\t\tdefault: '#e3f2fd',\n\t\ttext: 'rgba(0, 0, 0, 0.87)',\n\t},\n\thighlightOnHover: {\n\t\tdefault: '#EEEEEE',\n\t\ttext: 'rgba(0, 0, 0, 0.87)',\n\t},\n\tstriped: {\n\t\tdefault: '#FAFAFA',\n\t\ttext: 'rgba(0, 0, 0, 0.87)',\n\t},\n};\n\nexport const defaultDarkMode = {\n\tprimary: '#90CAF9',\n\ttext: { primary: '#FFFFFF', secondary: 'rgba(255,255,255,0.7)', disabled: 'rgba(0,0,0,.12)' },\n\tbackground: { default: '#424242' },\n\tcontext: { background: '#E91E63', text: '#FFFFFF' },\n\tdivider: { default: 'rgba(81,81,81,1)' },\n\tbutton: {\n\t\tdefault: '#FFFFFF',\n\t\tfocus: 'rgba(255,255,255,.54)',\n\t\thover: 'rgba(255,255,255,.12)',\n\t\tdisabled: 'rgba(255,255,255,.18)',\n\t},\n\tselected: { default: 'rgba(0,0,0,.7)', text: '#FFFFFF' },\n\thighlightOnHover: { default: 'rgba(0,0,0,.7)', text: '#FFFFFF' },\n\tstriped: { default: 'rgba(0,0,0,.87)', text: '#FFFFFF' },\n};\n","import { type Theme } from '../types';\nimport { defaultTheme, defaultDarkMode } from './base';\n\nexport const defaultColorTheme: Theme = { ...defaultTheme, darkMode: defaultDarkMode };\n","import { type Theme } from '../types';\nimport { defaultTheme } from './base';\n\n// Matches MUI (Material UI) table styling exactly\n// Ref: https://mui.com/material-ui/react-table/\n// Primary: #1976d2 (MUI default blue-700)\n// Cell padding: 16px, body2 font (14px), header: no separate bg\n// Row hover: palette.action.hover = rgba(0,0,0,0.04)\n// Selected: alpha(primary, 0.08) = rgba(25,118,210,0.08)\n// Divider: rgba(224,224,224,1) = #e0e0e0\nexport const materialTheme: Theme = {\n\t...defaultTheme,\n\tprimary: '#1976d2',\n\ttext: {\n\t\tprimary: 'rgba(0,0,0,0.87)',\n\t\tsecondary: 'rgba(0,0,0,0.6)',\n\t\tdisabled: 'rgba(0,0,0,0.38)',\n\t},\n\tbackground: { default: '#ffffff', footer: '#fafafa' },\n\tdivider: { default: '#e0e0e0' },\n\thighlightOnHover: { default: 'rgba(0,0,0,0.04)', text: 'rgba(0,0,0,0.87)' },\n\tstriped: { default: 'rgba(0,0,0,0.02)', text: 'rgba(0,0,0,0.87)' },\n\tselected: { default: 'rgba(25,118,210,0.08)', text: 'rgba(0,0,0,0.87)' },\n\tcontext: { background: '#1976d2', text: '#ffffff' },\n\tbutton: {\n\t\tdefault: 'rgba(0,0,0,0.54)',\n\t\tfocus: 'rgba(0,0,0,0.12)',\n\t\thover: 'rgba(0,0,0,0.04)',\n\t\tdisabled: 'rgba(0,0,0,0.26)',\n\t},\n\tspacing: { rowHeight: '52px', headerHeight: '56px', cellPaddingX: '16px', iconSize: '18px' },\n\ttypography: {\n\t\tfontSize: '14px',\n\t\tfontSizeHeader: '14px',\n\t\tfontFamily: 'Roboto, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Oxygen-Sans, Ubuntu, sans-serif',\n\t},\n\tshape: { borderRadius: '4px' },\n\tcheckbox: { size: '18px', borderRadius: '2px' },\n\theaderSeparator: false,\n\tcolumnSeparator: false,\n\tdarkMode: {\n\t\tprimary: '#90caf9',\n\t\ttext: { primary: '#ffffff', secondary: 'rgba(255,255,255,0.7)', disabled: 'rgba(255,255,255,0.5)' },\n\t\tbackground: { default: '#121212', footer: '#1a1a1a' },\n\t\tdivider: { default: 'rgba(255,255,255,0.12)' },\n\t\thighlightOnHover: { default: 'rgba(255,255,255,0.08)', text: '#ffffff' },\n\t\tstriped: { default: 'rgba(255,255,255,0.04)', text: '#ffffff' },\n\t\tselected: { default: 'rgba(144,202,249,0.16)', text: '#ffffff' },\n\t\tcontext: { background: '#90caf9', text: '#000000' },\n\t\tbutton: {\n\t\t\tdefault: 'rgba(255,255,255,0.7)',\n\t\t\tfocus: 'rgba(255,255,255,0.12)',\n\t\t\thover: 'rgba(255,255,255,0.08)',\n\t\t\tdisabled: 'rgba(255,255,255,0.3)',\n\t\t},\n\t},\n};\n","import { type Theme } from '../types';\nimport { defaultTheme } from './base';\n\n// Modern SaaS aesthetic — indigo accent, full circular checkboxes, soft slate palette\nexport const roundedTheme: Theme = {\n\t...defaultTheme,\n\tprimary: '#6366f1',\n\ttext: {\n\t\tprimary: '#0f172a',\n\t\tsecondary: '#64748b',\n\t\tdisabled: '#cbd5e1',\n\t},\n\tbackground: { default: '#ffffff', header: '#f8fafc', footer: '#f8fafc' },\n\tdivider: { default: '#e2e8f0' },\n\thighlightOnHover: { default: '#f1f5f9', text: '#0f172a' },\n\tstriped: { default: '#f8fafc', text: '#0f172a' },\n\tselected: { default: '#ede9fe', text: '#0f172a' },\n\tcontext: { background: '#6366f1', text: '#ffffff' },\n\tbutton: {\n\t\tdefault: '#94a3b8',\n\t\tfocus: 'rgba(99,102,241,0.2)',\n\t\thover: 'rgba(99,102,241,0.08)',\n\t\tdisabled: '#e2e8f0',\n\t},\n\tspacing: { rowHeight: '48px', headerHeight: '52px', cellPaddingX: '18px', iconSize: '18px' },\n\ttypography: { fontSize: '14px', fontSizeHeader: '12px' },\n\tshape: { borderRadius: '8px' },\n\tcheckbox: { size: '18px', borderRadius: '50%' },\n\theaderSeparator: 'subtle',\n\tdarkMode: {\n\t\tprimary: '#818cf8',\n\t\ttext: { primary: '#f1f5f9', secondary: '#94a3b8', disabled: '#334155' },\n\t\tbackground: { default: '#0f172a', header: '#1e293b', footer: '#1e293b' },\n\t\tdivider: { default: '#1e293b' },\n\t\thighlightOnHover: { default: '#1e293b', text: '#f1f5f9' },\n\t\tstriped: { default: '#162032', text: '#f1f5f9' },\n\t\tselected: { default: '#2e1065', text: '#f1f5f9' },\n\t\tcontext: { background: '#818cf8', text: '#0f172a' },\n\t\tbutton: {\n\t\t\tdefault: '#475569',\n\t\t\tfocus: 'rgba(129,140,248,0.2)',\n\t\t\thover: 'rgba(129,140,248,0.1)',\n\t\t\tdisabled: '#1e293b',\n\t\t},\n\t},\n};\n","import { type Theme } from '../types';\nimport { defaultTheme } from './base';\n\n// Catppuccin — Latte (light) / Mocha (dark)\n// Palette: https://github.com/catppuccin/palette\n// Accent: Mauve (#8839ef latte / #cba6f7 mocha)\nexport const catppuccinTheme: Theme = {\n\t...defaultTheme,\n\tprimary: '#8839ef',\n\ttext: {\n\t\tprimary: '#4c4f69', // latte: text\n\t\tsecondary: '#5c5f77', // latte: subtext1\n\t\tdisabled: '#9ca0b0', // latte: overlay0\n\t},\n\tbackground: { default: '#eff1f5', header: '#e6e9ef', footer: '#e6e9ef' }, // base / mantle\n\tdivider: { default: '#bcc0cc' }, // surface1\n\thighlightOnHover: { default: '#ccd0da', text: '#4c4f69' }, // surface0\n\tstriped: { default: '#e6e9ef', text: '#4c4f69' }, // mantle\n\tselected: { default: '#dce0e8', text: '#4c4f69' }, // crust\n\tcontext: { background: '#8839ef', text: '#eff1f5' },\n\tbutton: {\n\t\tdefault: '#7c7f93', // overlay2\n\t\tfocus: 'rgba(136,57,239,0.15)',\n\t\thover: 'rgba(136,57,239,0.08)',\n\t\tdisabled: '#acb0be', // surface2\n\t},\n\tspacing: { rowHeight: '48px', headerHeight: '52px', cellPaddingX: '16px', iconSize: '16px' },\n\ttypography: { fontSize: '14px', fontSizeHeader: '12px' },\n\tshape: { borderRadius: '6px' },\n\tcheckbox: { size: '16px', borderRadius: '4px' },\n\theaderSeparator: 'subtle',\n\tdarkMode: {\n\t\tprimary: '#cba6f7',\n\t\ttext: {\n\t\t\tprimary: '#cdd6f4', // mocha: text\n\t\t\tsecondary: '#bac2de', // mocha: subtext1\n\t\t\tdisabled: '#6c7086', // mocha: overlay0\n\t\t},\n\t\tbackground: { default: '#1e1e2e', header: '#181825', footer: '#181825' }, // base / mantle\n\t\tdivider: { default: '#45475a' }, // surface1\n\t\thighlightOnHover: { default: '#313244', text: '#cdd6f4' }, // surface0\n\t\tstriped: { default: '#181825', text: '#cdd6f4' }, // mantle\n\t\tselected: { default: '#313244', text: '#cdd6f4' }, // surface0\n\t\tcontext: { background: '#cba6f7', text: '#1e1e2e' },\n\t\tbutton: {\n\t\t\tdefault: '#9399b2', // overlay2\n\t\t\tfocus: 'rgba(203,166,247,0.15)',\n\t\t\thover: 'rgba(203,166,247,0.08)',\n\t\t\tdisabled: '#585b70', // surface2\n\t\t},\n\t},\n};\n","import { type Theme } from '../types';\nimport { defaultTheme } from './base';\n\nexport const crispTheme: Theme = {\n\t...defaultTheme,\n\tprimary: '#2196f3',\n\ttext: {\n\t\tprimary: '#181d1f',\n\t\tsecondary: 'rgba(24,29,31,0.7)',\n\t\tdisabled: 'rgba(24,29,31,0.5)',\n\t},\n\tbackground: { default: '#ffffff', header: '#fafafa', footer: '#fafafa' },\n\tdivider: { default: 'rgba(24,29,31,0.15)' },\n\thighlightOnHover: { default: 'rgba(33,150,243,0.12)', text: '#181d1f' },\n\tstriped: { default: '#fafafa', text: '#181d1f' },\n\tselected: { default: 'rgba(33,150,243,0.08)', text: '#181d1f' },\n\tcontext: { background: '#2196f3', text: '#ffffff' },\n\tbutton: {\n\t\tdefault: 'rgba(24,29,31,0.9)',\n\t\tfocus: 'rgba(33,150,243,0.47)',\n\t\thover: 'rgba(24,29,31,0.1)',\n\t\tdisabled: 'rgba(24,29,31,0.5)',\n\t},\n\tspacing: { rowHeight: '42px', headerHeight: '48px', cellPaddingX: '16px', iconSize: '16px' },\n\ttypography: {\n\t\tfontSize: '14px',\n\t\tfontSizeHeader: '14px',\n\t\tfontFamily: \"'IBM Plex Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif\",\n\t},\n\tshape: { borderRadius: '4px' },\n\tcheckbox: { size: '16px', borderRadius: '3px' },\n\theaderSeparator: 'subtle',\n\tdarkMode: {\n\t\tprimary: '#2196f3',\n\t\ttext: {\n\t\t\tprimary: '#ffffff',\n\t\t\tsecondary: 'rgba(255,255,255,0.7)',\n\t\t\tdisabled: 'rgba(255,255,255,0.5)',\n\t\t},\n\t\tbackground: { default: '#1f2936', header: '#28313e', footer: '#28313e' },\n\t\tdivider: { default: 'rgba(255,255,255,0.16)' },\n\t\thighlightOnHover: { default: 'rgba(33,150,243,0.2)', text: '#ffffff' },\n\t\tstriped: { default: '#242d3a', text: '#ffffff' },\n\t\tselected: { default: 'rgba(33,150,243,0.2)', text: '#ffffff' },\n\t\tcontext: { background: '#1565c0', text: '#ffffff' },\n\t\tbutton: {\n\t\t\tdefault: 'rgba(255,255,255,0.9)',\n\t\t\tfocus: 'rgba(33,150,243,0.47)',\n\t\t\thover: 'rgba(255,255,255,0.1)',\n\t\t\tdisabled: 'rgba(255,255,255,0.5)',\n\t\t},\n\t},\n};\n","import { mergeDeep } from '../util';\nimport { type Theme, type ThemeProp } from '../types';\n\nimport { defaultColorTheme } from './default';\nimport { materialTheme } from './material';\nimport { roundedTheme } from './rounded';\nimport { catppuccinTheme } from './catppuccin';\nimport { crispTheme } from './crisp';\n\ntype ThemeMapping = {\n\t[propertyName: string]: Theme;\n};\n\nexport const defaultThemes: ThemeMapping = {\n\tdefault: defaultColorTheme,\n\tlight: defaultColorTheme,\n\tmaterial: materialTheme,\n\trounded: roundedTheme,\n\tcatppuccin: catppuccinTheme,\n\tcrisp: crispTheme,\n};\n\nexport function themeToVars(theme: Theme): Record<string, string> {\n\tconst vars: Record<string, string> = {\n\t\t'--rdt-color-scheme': theme.colorScheme ?? 'light',\n\t\t'--rdt-color-primary': theme.primary ?? '#1976d2',\n\t\t'--rdt-color-text-primary': theme.text.primary,\n\t\t'--rdt-color-text-secondary': theme.text.secondary,\n\t\t'--rdt-color-text-disabled': theme.text.disabled,\n\t\t'--rdt-color-bg': theme.background.default,\n\t\t'--rdt-color-context-bg': theme.context.background,\n\t\t...(theme.background.header ? { '--rdt-color-header-bg': theme.background.header } : {}),\n\t\t...(theme.background.footer ? { '--rdt-color-footer-bg': theme.background.footer } : {}),\n\t\t'--rdt-color-context-text': theme.context.text,\n\t\t'--rdt-color-divider': theme.divider.default,\n\t\t'--rdt-color-btn': theme.button.default,\n\t\t'--rdt-color-btn-focus': theme.button.focus,\n\t\t'--rdt-color-btn-hover': theme.button.hover,\n\t\t'--rdt-color-btn-disabled': theme.button.disabled,\n\t\t'--rdt-color-selected': theme.selected.default,\n\t\t'--rdt-color-selected-text': theme.selected.text,\n\t\t'--rdt-color-highlight': theme.highlightOnHover.default,\n\t\t'--rdt-color-highlight-text': theme.highlightOnHover.text,\n\t\t'--rdt-color-striped': theme.striped.default,\n\t\t'--rdt-color-striped-text': theme.striped.text,\n\t};\n\n\tif (theme.spacing?.rowHeight != null) vars['--rdt-row-height'] = theme.spacing.rowHeight;\n\tif (theme.spacing?.headerHeight != null) vars['--rdt-header-height'] = theme.spacing.headerHeight;\n\tif (theme.spacing?.cellPaddingX != null) vars['--rdt-cell-padding-x'] = theme.spacing.cellPaddingX;\n\tif (theme.spacing?.iconSize != null) vars['--rdt-icon-size'] = theme.spacing.iconSize;\n\tif (theme.typography?.fontSize != null) vars['--rdt-font-size'] = theme.typography.fontSize;\n\tif (theme.typography?.fontSizeHeader != null) vars['--rdt-font-size-header'] = theme.typography.fontSizeHeader;\n\tif (theme.typography?.fontFamily != null) vars['--rdt-font-family'] = theme.typography.fontFamily;\n\tif (theme.shape?.borderRadius != null) vars['--rdt-border-radius'] = theme.shape.borderRadius;\n\tif (theme.checkbox?.size != null) vars['--rdt-checkbox-size'] = theme.checkbox.size;\n\tif (theme.checkbox?.borderRadius != null) vars['--rdt-checkbox-radius'] = theme.checkbox.borderRadius;\n\n\treturn vars;\n}\n\n// Named registration: createTheme('my-dark', overrides, 'dark') — registers globally, use via theme=\"my-dark\"\nexport function createTheme(name: string, overrides?: Partial<Theme>, inherit?: string): Theme;\n// Inline composition: createTheme(overrides, 'dark') — returns Theme object, pass directly to theme prop\nexport function createTheme(overrides: Partial<Theme>, inherit?: string): Theme;\nexport function createTheme(\n\tnameOrOverrides: string | Partial<Theme>,\n\toverridesOrInherit?: Partial<Theme> | string,\n\tinherit?: string,\n): Theme {\n\tif (typeof nameOrOverrides === 'string') {\n\t\tconst name = nameOrOverrides;\n\t\tconst overrides = (overridesOrInherit as Partial<Theme>) ?? {};\n\t\tconst base = defaultThemes[inherit ?? 'default'] ?? defaultThemes.default;\n\t\tdefaultThemes[name] = mergeDeep(base, overrides) as Theme;\n\t\treturn defaultThemes[name];\n\t}\n\n\tconst overrides = nameOrOverrides;\n\tconst inheritName = (overridesOrInherit as string) ?? 'default';\n\tconst base = defaultThemes[inheritName] ?? defaultThemes.default;\n\treturn mergeDeep(base, overrides) as Theme;\n}\n\nfunction isCSSVarMap(obj: object): boolean {\n\tconst keys = Object.keys(obj);\n\treturn keys.length > 0 && keys.every(k => k.startsWith('--'));\n}\n\nexport function resolveThemeObject(theme: ThemeProp | undefined): Theme {\n\tif (!theme || typeof theme === 'string') {\n\t\treturn defaultThemes[theme as string] ?? defaultThemes.default;\n\t}\n\tif (isCSSVarMap(theme as object)) {\n\t\treturn defaultThemes.default;\n\t}\n\treturn mergeDeep(defaultThemes.default, theme) as Theme;\n}\n\nexport function resolveTheme(\n\ttheme: ThemeProp | undefined,\n\tresolvedMode: 'light' | 'dark' = 'light',\n): Record<string, string> {\n\tif (theme && typeof theme !== 'string' && isCSSVarMap(theme as object)) {\n\t\treturn theme as Record<string, string>;\n\t}\n\tconst themeObj = resolveThemeObject(theme);\n\tconst effective =\n\t\tresolvedMode === 'dark' && themeObj.darkMode\n\t\t\t? (mergeDeep(themeObj, { ...themeObj.darkMode, colorScheme: 'dark' } as Partial<Theme>) as Theme)\n\t\t\t: themeObj;\n\treturn themeToVars(effective);\n}\n","import * as React from 'react';\n\ntype Hook = (fn: () => void, inputs: unknown[]) => void;\n\nconst useFirstUpdate: Hook = (fn, inputs) => {\n\tconst firstUpdate = React.useRef(true);\n\n\tReact.useEffect(() => {\n\t\tif (firstUpdate.current) {\n\t\t\tfirstUpdate.current = false;\n\t\t\treturn;\n\t\t}\n\n\t\tfn();\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, inputs);\n};\n\nexport default useFirstUpdate;\n","import * as React from 'react';\nimport { decorateColumns, findColumnIndexById, getSortDirection, normalizePins } from '../util';\nimport useDidUpdateEffect from '../hooks/useDidUpdateEffect';\nimport { SortOrder } from '../types';\nimport type { TableColumn, ColumnGroup } from '../types';\n\ntype ColumnsHook<T> = {\n\ttableColumns: TableColumn<T>[];\n\ttableGroups: ColumnGroup[];\n\tdraggingColumnId: string;\n\tdraggingGroupKey: string;\n\thandleDragStart: (e: React.DragEvent<HTMLDivElement>) => void;\n\thandleDragEnter: (e: React.DragEvent<HTMLDivElement>) => void;\n\thandleDragOver: (e: React.DragEvent<HTMLDivElement>) => void;\n\thandleDragLeave: (e: React.DragEvent<HTMLDivElement>) => void;\n\thandleDragEnd: (e: React.DragEvent<HTMLDivElement>) => void;\n\thandleGroupDragStart: (e: React.DragEvent<HTMLDivElement>) => void;\n\thandleGroupDragEnter: (e: React.DragEvent<HTMLDivElement>) => void;\n\thandleGroupDragOver: (e: React.DragEvent<HTMLDivElement>) => void;\n\thandleGroupDragEnd: (e: React.DragEvent<HTMLDivElement>) => void;\n\tdefaultSortDirection: SortOrder;\n\tdefaultSortColumn: TableColumn<T>;\n};\n\n/** Swaps two group blocks within the columns array, preserving ungrouped column positions. */\nexport function swapGroupBlocks<T>(\n\tcolumns: TableColumn<T>[],\n\tsrcIds: Set<string>,\n\ttgtIds: Set<string>,\n): TableColumn<T>[] {\n\tconst result: TableColumn<T>[] = [];\n\tconst srcCols = columns.filter(c => srcIds.has(String(c.id)));\n\tconst tgtCols = columns.filter(c => tgtIds.has(String(c.id)));\n\tlet insertedSrc = false;\n\tlet insertedTgt = false;\n\n\tfor (const col of columns) {\n\t\tconst colId = String(col.id);\n\t\tif (srcIds.has(colId)) {\n\t\t\tif (!insertedSrc) {\n\t\t\t\tresult.push(...tgtCols);\n\t\t\t\tinsertedSrc = true;\n\t\t\t}\n\t\t} else if (tgtIds.has(colId)) {\n\t\t\tif (!insertedTgt) {\n\t\t\t\tresult.push(...srcCols);\n\t\t\t\tinsertedTgt = true;\n\t\t\t}\n\t\t} else {\n\t\t\tresult.push(col);\n\t\t}\n\t}\n\n\treturn result;\n}\n\nfunction useColumns<T>(\n\tcolumns: TableColumn<T>[],\n\tonColumnOrderChange: (nextOrder: TableColumn<T>[]) => void,\n\tonColumnGroupOrderChange: ((nextGroups: ColumnGroup[], nextColumns: TableColumn<T>[]) => void) | undefined,\n\tcolumnGroups: ColumnGroup[] | undefined,\n\tdefaultSortFieldId: string | number | null | undefined,\n\tdefaultSortAsc: boolean,\n): ColumnsHook<T> {\n\tconst [tableColumns, setTableColumns] = React.useState<TableColumn<T>[]>(() => decorateColumns(columns));\n\tconst [tableGroups, setTableGroups] = React.useState<ColumnGroup[]>(() => columnGroups ?? []);\n\tconst [draggingColumnId, setDraggingColumn] = React.useState('');\n\tconst [draggingGroupKey, setDraggingGroupKey] = React.useState('');\n\tconst sourceColumnId = React.useRef('');\n\tconst sourceGroupKey = React.useRef('');\n\tconst isDraggingGroup = React.useRef(false);\n\n\tuseDidUpdateEffect(() => {\n\t\tsetTableColumns(decorateColumns(columns));\n\t}, [columns]);\n\n\tuseDidUpdateEffect(() => {\n\t\tsetTableGroups(columnGroups ?? []);\n\t}, [columnGroups]);\n\n\t// ── Per-column drag handlers ───────────────────────────────────────────────\n\n\tconst handleDragStart = React.useCallback(\n\t\t(e: React.DragEvent<HTMLDivElement>) => {\n\t\t\tif (isDraggingGroup.current) return;\n\t\t\tconst { attributes } = e.target as HTMLDivElement;\n\t\t\tconst id = attributes.getNamedItem('data-column-id')?.value;\n\n\t\t\tif (id) {\n\t\t\t\tsourceColumnId.current = tableColumns[findColumnIndexById(tableColumns, id)]?.id?.toString() || '';\n\t\t\t\tsetDraggingColumn(sourceColumnId.current);\n\t\t\t}\n\t\t},\n\t\t[tableColumns],\n\t);\n\n\tconst handleDragEnter = React.useCallback(\n\t\t(e: React.DragEvent<HTMLDivElement>) => {\n\t\t\tif (isDraggingGroup.current) return;\n\t\t\tconst el = e.currentTarget as HTMLDivElement;\n\t\t\t// Skip events that bubble from child elements within this same cell\n\t\t\tif (el.contains(e.relatedTarget as Node)) return;\n\t\t\tconst id = el.getAttribute('data-column-id');\n\t\t\tif (!id || !sourceColumnId.current || id === sourceColumnId.current) return;\n\n\t\t\t// When groups exist, only allow reorder within the same group\n\t\t\tif (tableGroups.length > 0) {\n\t\t\t\tconst srcGroupIds =\n\t\t\t\t\ttableGroups.find(g => g.columnIds.some(cid => String(cid) === sourceColumnId.current))?.columnIds ?? [];\n\t\t\t\tif (!srcGroupIds.some(cid => String(cid) === id)) return;\n\t\t\t}\n\n\t\t\tconst srcIdx = findColumnIndexById(tableColumns, sourceColumnId.current);\n\t\t\tconst tgtIdx = findColumnIndexById(tableColumns, id);\n\t\t\tconst moved = [...tableColumns];\n\t\t\tconst [col] = moved.splice(srcIdx, 1);\n\t\t\tmoved.splice(tgtIdx, 0, col);\n\n\t\t\t// Determine pin zone boundaries\n\t\t\tconst leftCount = moved.filter(c => c.pinned === 'left').length;\n\t\t\tconst rightCount = moved.filter(c => c.pinned === 'right').length;\n\t\t\tconst total = moved.length;\n\n\t\t\t// Build pinZoneMap for new order\n\t\t\tconst pinZoneMap: Record<number, 'left' | 'right' | undefined> = {};\n\t\t\tfor (let i = 0; i < moved.length; i++) {\n\t\t\t\tif (i < leftCount) pinZoneMap[i] = 'left';\n\t\t\t\telse if (i >= total - rightCount) pinZoneMap[i] = 'right';\n\t\t\t\telse pinZoneMap[i] = undefined;\n\t\t\t}\n\n\t\t\t// If dropped into left or right zone, force pin state\n\t\t\tif (tgtIdx < leftCount) pinZoneMap[tgtIdx] = 'left';\n\t\t\telse if (tgtIdx >= total - rightCount) pinZoneMap[tgtIdx] = 'right';\n\t\t\telse pinZoneMap[tgtIdx] = undefined;\n\n\t\t\tconst reorderedCols = normalizePins(moved, pinZoneMap);\n\t\t\tsetTableColumns(reorderedCols);\n\t\t\tonColumnOrderChange(reorderedCols);\n\t\t},\n\t\t[onColumnOrderChange, tableColumns, tableGroups],\n\t);\n\n\tconst handleDragOver = React.useCallback((e: React.DragEvent<HTMLDivElement>) => {\n\t\te.preventDefault();\n\t}, []);\n\n\tconst handleDragLeave = React.useCallback((e: React.DragEvent<HTMLDivElement>) => {\n\t\te.preventDefault();\n\t}, []);\n\n\tconst handleDragEnd = React.useCallback((e: React.DragEvent<HTMLDivElement>) => {\n\t\te.preventDefault();\n\t\tsourceColumnId.current = '';\n\t\tsetDraggingColumn('');\n\t}, []);\n\n\t// ── Group-level drag handlers ──────────────────────────────────────────────\n\n\tconst handleGroupDragStart = React.useCallback(\n\t\t(e: React.DragEvent<HTMLDivElement>) => {\n\t\t\tconst el = e.currentTarget as HTMLDivElement;\n\t\t\tconst key = el.getAttribute('data-group-key');\n\t\t\tif (key) {\n\t\t\t\tisDraggingGroup.current = true;\n\t\t\t\tsourceGroupKey.current = key;\n\t\t\t\tsetDraggingGroupKey(key);\n\n\t\t\t\te.dataTransfer.effectAllowed = 'move';\n\t\t\t\tconst group = tableGroups.find(g => String(g.columnIds[0]) === key);\n\t\t\t\tconst rect = el.getBoundingClientRect();\n\t\t\t\tconst ghost = document.createElement('div');\n\t\t\t\tghost.className = 'rdt_dragGhost';\n\t\t\t\tconst iconSpan = document.createElement('span');\n\t\t\t\ticonSpan.className = 'rdt_dragGhostIcon';\n\t\t\t\ticonSpan.setAttribute('aria-hidden', 'true');\n\t\t\t\ticonSpan.innerHTML =\n\t\t\t\t\t'<svg viewBox=\"0 0 16 16\" width=\"12\" height=\"12\" fill=\"currentColor\"><circle cx=\"5\" cy=\"3.5\" r=\"1.2\"/><circle cx=\"11\" cy=\"3.5\" r=\"1.2\"/><circle cx=\"5\" cy=\"8\" r=\"1.2\"/><circle cx=\"11\" cy=\"8\" r=\"1.2\"/><circle cx=\"5\" cy=\"12.5\" r=\"1.2\"/><circle cx=\"11\" cy=\"12.5\" r=\"1.2\"/></svg>';\n\t\t\t\tconst labelSpan = document.createElement('span');\n\t\t\t\tlabelSpan.className = 'rdt_dragGhostLabel';\n\t\t\t\tlabelSpan.textContent = typeof group?.name === 'string' ? group.name : '';\n\t\t\t\tghost.appendChild(iconSpan);\n\t\t\t\tghost.appendChild(labelSpan);\n\t\t\t\tghost.style.width = `${rect.width}px`;\n\t\t\t\tghost.style.height = `${rect.height}px`;\n\t\t\t\tdocument.body.appendChild(ghost);\n\t\t\t\te.dataTransfer.setDragImage(ghost, e.clientX - rect.left, e.clientY - rect.top);\n\t\t\t\tsetTimeout(() => document.body.removeChild(ghost), 0);\n\t\t\t}\n\t\t},\n\t\t[tableGroups],\n\t);\n\n\tconst handleGroupDragEnter = React.useCallback(\n\t\t(e: React.DragEvent<HTMLDivElement>) => {\n\t\t\te.preventDefault();\n\t\t\tconst el = e.currentTarget as HTMLDivElement;\n\t\t\tif (el.contains(e.relatedTarget as Node)) return;\n\t\t\tconst key = el.getAttribute('data-group-key');\n\t\t\tif (!key || !sourceGroupKey.current || key === sourceGroupKey.current) return;\n\n\t\t\tconst srcGroup = tableGroups.find(g => String(g.columnIds[0]) === sourceGroupKey.current);\n\t\t\tconst tgtGroup = tableGroups.find(g => String(g.columnIds[0]) === key);\n\t\t\tif (!srcGroup || !tgtGroup) return;\n\n\t\t\tconst srcIds = new Set(srcGroup.columnIds.map(String));\n\t\t\tconst tgtIds = new Set(tgtGroup.columnIds.map(String));\n\t\t\tconst reorderedCols = swapGroupBlocks(tableColumns, srcIds, tgtIds);\n\t\t\tconst srcIdx = tableGroups.indexOf(srcGroup);\n\t\t\tconst tgtIdx = tableGroups.indexOf(tgtGroup);\n\t\t\tconst newGroups = [...tableGroups];\n\t\t\tnewGroups[srcIdx] = tgtGroup;\n\t\t\tnewGroups[tgtIdx] = srcGroup;\n\t\t\tsetTableColumns(reorderedCols);\n\t\t\tsetTableGroups(newGroups);\n\t\t\tonColumnOrderChange(reorderedCols);\n\t\t\tonColumnGroupOrderChange?.(newGroups, reorderedCols);\n\t\t},\n\t\t[onColumnGroupOrderChange, onColumnOrderChange, tableColumns, tableGroups],\n\t);\n\n\tconst handleGroupDragOver = React.useCallback((e: React.DragEvent<HTMLDivElement>) => {\n\t\te.preventDefault();\n\t}, []);\n\n\tconst handleGroupDragEnd = React.useCallback((e: React.DragEvent<HTMLDivElement>) => {\n\t\te.preventDefault();\n\t\tisDraggingGroup.current = false;\n\t\tsourceGroupKey.current = '';\n\t\tsetDraggingGroupKey('');\n\t}, []);\n\n\t// ── Sort defaults ──────────────────────────────────────────────────────────\n\n\tconst defaultSortDirection = getSortDirection(defaultSortAsc);\n\tconst defaultSortColumn = React.useMemo(\n\t\t() => tableColumns[findColumnIndexById(tableColumns, defaultSortFieldId?.toString())] || {},\n\t\t[defaultSortFieldId, tableColumns],\n\t);\n\n\treturn {\n\t\ttableColumns,\n\t\ttableGroups,\n\t\tdraggingColumnId,\n\t\tdraggingGroupKey,\n\t\thandleDragStart,\n\t\thandleDragEnter,\n\t\thandleDragOver,\n\t\thandleDragLeave,\n\t\thandleDragEnd,\n\t\thandleGroupDragStart,\n\t\thandleGroupDragEnter,\n\t\thandleGroupDragOver,\n\t\thandleGroupDragEnd,\n\t\tdefaultSortDirection,\n\t\tdefaultSortColumn,\n\t};\n}\n\nexport default useColumns;\n","import { insertItem, isRowSelected, removeItem, equalizeId } from './util';\nimport { SortOrder } from './types';\nimport type { Action, TableState, SortColumn } from './types';\n\nexport function tableReducer<T>(state: TableState<T>, action: Action<T>): TableState<T> {\n\tconst toggleOnSelectedRowsChange = !state.toggleOnSelectedRowsChange;\n\n\tswitch (action.type) {\n\t\tcase 'SELECT_ALL_ROWS': {\n\t\t\tconst { keyField, rows, rowCount, mergeSelections } = action;\n\t\t\tconst allChecked = !state.allSelected;\n\t\t\tconst toggleOnSelectedRowsChange = !state.toggleOnSelectedRowsChange;\n\n\t\t\tif (mergeSelections) {\n\t\t\t\tconst selections = allChecked\n\t\t\t\t\t? [...state.selectedRows, ...rows.filter(row => !isRowSelected(row, state.selectedRows, keyField))]\n\t\t\t\t\t: state.selectedRows.filter(row => !isRowSelected(row, rows, keyField));\n\n\t\t\t\treturn {\n\t\t\t\t\t...state,\n\t\t\t\t\tallSelected: allChecked,\n\t\t\t\t\tselectedCount: selections.length,\n\t\t\t\t\tselectedRows: selections,\n\t\t\t\t\ttoggleOnSelectedRowsChange,\n\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tallSelected: allChecked,\n\t\t\t\tselectedCount: allChecked ? rowCount : 0,\n\t\t\t\tselectedRows: allChecked ? rows : [],\n\t\t\t\ttoggleOnSelectedRowsChange,\n\t\t\t};\n\t\t}\n\n\t\tcase 'SELECT_SINGLE_ROW': {\n\t\t\tconst { keyField, row, isSelected, rowCount, singleSelect } = action;\n\n\t\t\t// handle single select mode\n\t\t\tif (singleSelect) {\n\t\t\t\tif (isSelected) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...state,\n\t\t\t\t\t\tselectedCount: 0,\n\t\t\t\t\t\tallSelected: false,\n\t\t\t\t\t\tselectedRows: [],\n\t\t\t\t\t\ttoggleOnSelectedRowsChange,\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\treturn {\n\t\t\t\t\t...state,\n\t\t\t\t\tselectedCount: 1,\n\t\t\t\t\tallSelected: false,\n\t\t\t\t\tselectedRows: [row],\n\t\t\t\t\ttoggleOnSelectedRowsChange,\n\t\t\t\t};\n\t\t\t}\n\n\t\t\t// handle multi select mode\n\t\t\tif (isSelected) {\n\t\t\t\treturn {\n\t\t\t\t\t...state,\n\t\t\t\t\tselectedCount: state.selectedRows.length > 0 ? state.selectedRows.length - 1 : 0,\n\t\t\t\t\tallSelected: false,\n\t\t\t\t\tselectedRows: removeItem(state.selectedRows, row, keyField),\n\t\t\t\t\ttoggleOnSelectedRowsChange,\n\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tselectedCount: state.selectedRows.length + 1,\n\t\t\t\tallSelected: state.selectedRows.length + 1 === rowCount,\n\t\t\t\tselectedRows: insertItem(state.selectedRows, row),\n\t\t\t\ttoggleOnSelectedRowsChange,\n\t\t\t};\n\t\t}\n\n\t\tcase 'SELECT_RANGE': {\n\t\t\tconst { keyField, rangeRows, rowCount, select, disabledRows } = action;\n\t\t\tconst disabledSet = disabledRows && disabledRows.length > 0 ? new Set(disabledRows) : null;\n\t\t\tconst eligible = disabledSet ? rangeRows.filter(r => !disabledSet.has(r)) : rangeRows;\n\n\t\t\tlet next: T[];\n\t\t\tif (select) {\n\t\t\t\t// Add any rows in the range that aren't already selected\n\t\t\t\tnext = [...state.selectedRows, ...eligible.filter(row => !isRowSelected(row, state.selectedRows, keyField))];\n\t\t\t} else {\n\t\t\t\t// Remove any rows in the range\n\t\t\t\tnext = state.selectedRows.filter(row => !isRowSelected(row, eligible, keyField));\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tselectedRows: next,\n\t\t\t\tselectedCount: next.length,\n\t\t\t\tallSelected: next.length === rowCount && rowCount > 0,\n\t\t\t\ttoggleOnSelectedRowsChange,\n\t\t\t};\n\t\t}\n\n\t\tcase 'SELECT_MULTIPLE_ROWS': {\n\t\t\tconst { keyField, selectedRows, totalRows, mergeSelections } = action;\n\n\t\t\tif (mergeSelections) {\n\t\t\t\tconst selections = [\n\t\t\t\t\t...state.selectedRows,\n\t\t\t\t\t...selectedRows.filter(row => !isRowSelected(row, state.selectedRows, keyField)),\n\t\t\t\t];\n\n\t\t\t\treturn {\n\t\t\t\t\t...state,\n\t\t\t\t\tselectedCount: selections.length,\n\t\t\t\t\tallSelected: false,\n\t\t\t\t\tselectedRows: selections,\n\t\t\t\t\ttoggleOnSelectedRowsChange,\n\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tselectedCount: selectedRows.length,\n\t\t\t\tallSelected: selectedRows.length === totalRows,\n\t\t\t\tselectedRows,\n\t\t\t\ttoggleOnSelectedRowsChange,\n\t\t\t};\n\t\t}\n\n\t\tcase 'CLEAR_SELECTED_ROWS': {\n\t\t\tconst { selectedRowsFlag } = action;\n\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tallSelected: false,\n\t\t\t\tselectedCount: 0,\n\t\t\t\tselectedRows: [],\n\t\t\t\tselectedRowsFlag,\n\t\t\t};\n\t\t}\n\n\t\tcase 'CLEAR_SORT': {\n\t\t\tconst { defaultSortColumn, defaultSortDirection } = action;\n\t\t\tconst hasDefault = defaultSortColumn.id != null || !!defaultSortColumn.selector;\n\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tselectedColumn: defaultSortColumn,\n\t\t\t\tsortDirection: defaultSortDirection,\n\t\t\t\tsortColumns: hasDefault ? [{ column: defaultSortColumn, sortDirection: defaultSortDirection }] : [],\n\t\t\t};\n\t\t}\n\n\t\tcase 'SORT_CHANGE': {\n\t\t\tconst { selectedColumn, clearSelectedOnSort, additive, defaultSortDirection } = action;\n\t\t\tconst firstDirection = defaultSortDirection;\n\t\t\tconst secondDirection = firstDirection === SortOrder.ASC ? SortOrder.DESC : SortOrder.ASC;\n\n\t\t\tconst existingIndex = state.sortColumns.findIndex(s => equalizeId(s.column.id, selectedColumn.id));\n\n\t\t\tlet nextSortColumns: SortColumn<T>[];\n\n\t\t\tif (additive) {\n\t\t\t\t// Ctrl/⌘+click: add or cycle the clicked column within the existing sort.\n\t\t\t\tif (existingIndex === -1) {\n\t\t\t\t\tnextSortColumns = [...state.sortColumns, { column: selectedColumn, sortDirection: firstDirection }];\n\t\t\t\t} else {\n\t\t\t\t\tconst current = state.sortColumns[existingIndex];\n\t\t\t\t\tif (current.sortDirection === firstDirection) {\n\t\t\t\t\t\tnextSortColumns = state.sortColumns.map((s, i) =>\n\t\t\t\t\t\t\ti === existingIndex ? { column: selectedColumn, sortDirection: secondDirection } : s,\n\t\t\t\t\t\t);\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Second click on a column already in the second direction removes it from the sort.\n\t\t\t\t\t\tnextSortColumns = state.sortColumns.filter((_, i) => i !== existingIndex);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Plain click: cycle the clicked column through asc → desc → none, replacing any other sort.\n\t\t\t\tconst isOnlyColumn = state.sortColumns.length === 1 && existingIndex === 0;\n\n\t\t\t\tif (isOnlyColumn) {\n\t\t\t\t\tconst current = state.sortColumns[0];\n\t\t\t\t\tnextSortColumns =\n\t\t\t\t\t\tcurrent.sortDirection === firstDirection\n\t\t\t\t\t\t\t? [{ column: selectedColumn, sortDirection: secondDirection }]\n\t\t\t\t\t\t\t: [];\n\t\t\t\t} else {\n\t\t\t\t\tnextSortColumns = [{ column: selectedColumn, sortDirection: firstDirection }];\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst primary = nextSortColumns[0];\n\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tselectedColumn: primary ? primary.column : {},\n\t\t\t\tsortDirection: primary ? primary.sortDirection : defaultSortDirection,\n\t\t\t\tsortColumns: nextSortColumns,\n\t\t\t\tcurrentPage: 1,\n\t\t\t\tsortTriggeredPageReset: true,\n\t\t\t\t// when using server-side paging reset selected row counts when sorting\n\t\t\t\t...(clearSelectedOnSort && {\n\t\t\t\t\tallSelected: false,\n\t\t\t\t\tselectedCount: 0,\n\t\t\t\t\tselectedRows: [],\n\t\t\t\t\ttoggleOnSelectedRowsChange,\n\t\t\t\t}),\n\t\t\t};\n\t\t}\n\n\t\tcase 'CHANGE_PAGE': {\n\t\t\tconst { page, paginationServer, visibleOnly, persistSelectedOnPageChange } = action;\n\t\t\tconst mergeSelections = paginationServer && persistSelectedOnPageChange;\n\t\t\tconst clearSelectedOnPage = (paginationServer && !persistSelectedOnPageChange) || visibleOnly;\n\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tcurrentPage: page,\n\t\t\t\tsortTriggeredPageReset: false,\n\t\t\t\t...(mergeSelections && {\n\t\t\t\t\tallSelected: false,\n\t\t\t\t}),\n\t\t\t\t// when using server-side paging reset selected row counts\n\t\t\t\t...(clearSelectedOnPage && {\n\t\t\t\t\tallSelected: false,\n\t\t\t\t\tselectedCount: 0,\n\t\t\t\t\tselectedRows: [],\n\t\t\t\t\ttoggleOnSelectedRowsChange,\n\t\t\t\t}),\n\t\t\t};\n\t\t}\n\n\t\tcase 'CHANGE_ROWS_PER_PAGE': {\n\t\t\tconst { rowsPerPage, page } = action;\n\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tcurrentPage: page,\n\t\t\t\trowsPerPage,\n\t\t\t\tsortTriggeredPageReset: false,\n\t\t\t};\n\t\t}\n\n\t\tdefault: {\n\t\t\t// Exhaustiveness check: TypeScript will error here if a new Action\n\t\t\t// variant is added to the union without a corresponding case above.\n\t\t\tconst _exhaustive: never = action;\n\t\t\treturn _exhaustive;\n\t\t}\n\t}\n}\n","import * as React from 'react';\nimport { tableReducer } from '../tableReducer';\nimport { getNumberOfPages, recalculatePage } from '../util';\nimport useDidUpdateEffect from './useDidUpdateEffect';\nimport { SortOrder } from '../types';\nimport type {\n\tAction,\n\tTableState,\n\tTableColumn,\n\tAllRowsAction,\n\tSingleRowAction,\n\tRangeRowAction,\n\tSortAction,\n\tSortColumn,\n} from '../types';\n\ninterface UseTableStateProps<T> {\n\tdata: T[];\n\tkeyField: string;\n\tdefaultSortColumn: TableColumn<T>;\n\tdefaultSortDirection: SortOrder;\n\tpaginationDefaultPage: number;\n\tpaginationPerPage: number;\n\tpaginationServer: boolean;\n\tpaginationServerOptions: {\n\t\tpersistSelectedOnSort?: boolean;\n\t\tpersistSelectedOnPageChange?: boolean;\n\t};\n\tpaginationTotalRows: number;\n\tpagination: boolean;\n\tselectableRowsSingle: boolean;\n\tselectableRowsVisibleOnly: boolean;\n\tselectableRowSelected: ((row: T) => boolean) | null;\n\tclearSelectedRows: boolean;\n\tpaginationPage?: number;\n\tpaginationResetDefaultPage: boolean;\n\t/** Controlled selection. When provided, internal selection state is overridden. */\n\tcontrolledSelectedRows?: T[];\n\tonSelectedRowsChange: (state: { allSelected: boolean; selectedCount: number; selectedRows: T[] }) => void;\n\tonSort: (\n\t\tselectedColumn: TableColumn<T>,\n\t\tsortDirection: SortOrder,\n\t\tsortedRows: T[],\n\t\tsortColumns: SortColumn<T>[],\n\t) => void;\n\tonChangePage: (page: number, totalRows: number) => void;\n\tonChangeRowsPerPage: (currentRowsPerPage: number, currentPage: number) => void;\n}\n\ninterface UseTableStateReturn<T> {\n\t// State\n\ttableState: TableState<T>;\n\t// Actions\n\thandleSort: (action: SortAction<T>) => void;\n\thandleSelectAllRows: (action: AllRowsAction<T>) => void;\n\thandleSelectedRow: (action: SingleRowAction<T>) => void;\n\thandleSelectedRange: (action: RangeRowAction<T>) => void;\n\thandleChangePage: (page: number) => void;\n\thandleChangeRowsPerPage: (newRowsPerPage: number, tableRowsLength: number) => void;\n\thandleClearSelectedRows: () => void;\n\thandleClearSort: () => void;\n}\n\n/**\n *  hook to manage table state (selection, sorting, pagination)\n */\nexport default function useTableState<T>(props: UseTableStateProps<T>): UseTableStateReturn<T> {\n\tconst {\n\t\tdata,\n\t\tkeyField,\n\t\tdefaultSortColumn,\n\t\tdefaultSortDirection,\n\t\tpaginationDefaultPage,\n\t\tpaginationPerPage,\n\t\tpaginationServer,\n\t\tpaginationServerOptions,\n\t\tpaginationTotalRows,\n\t\tpagination,\n\t\tselectableRowsSingle,\n\t\tselectableRowsVisibleOnly,\n\t\tselectableRowSelected,\n\t\tclearSelectedRows,\n\t\tpaginationPage,\n\t\tpaginationResetDefaultPage,\n\t\tcontrolledSelectedRows,\n\t\tonSelectedRowsChange,\n\t\tonChangePage,\n\t\tonChangeRowsPerPage,\n\t} = props;\n\n\tconst { persistSelectedOnSort = false, persistSelectedOnPageChange = false } = paginationServerOptions;\n\tconst mergeSelections = paginationServer && (persistSelectedOnPageChange || persistSelectedOnSort);\n\n\tconst hasDefaultSort = defaultSortColumn.id != null || !!defaultSortColumn.selector;\n\n\tconst [tableState, dispatch] = React.useReducer<React.Reducer<TableState<T>, Action<T>>>(tableReducer, {\n\t\tallSelected: false,\n\t\tselectedCount: 0,\n\t\tselectedRows: [],\n\t\tselectedColumn: defaultSortColumn,\n\t\ttoggleOnSelectedRowsChange: false,\n\t\tsortDirection: defaultSortDirection,\n\t\tsortColumns: hasDefaultSort ? [{ column: defaultSortColumn, sortDirection: defaultSortDirection }] : [],\n\t\tcurrentPage: paginationDefaultPage,\n\t\trowsPerPage: paginationPerPage,\n\t\tselectedRowsFlag: false,\n\t\tsortTriggeredPageReset: false,\n\t});\n\n\tconst handleClearSelectedRows = React.useCallback(() => {\n\t\tdispatch({ type: 'CLEAR_SELECTED_ROWS', selectedRowsFlag: false });\n\t}, []);\n\n\tconst handleClearSort = React.useCallback(() => {\n\t\tdispatch({ type: 'CLEAR_SORT', defaultSortColumn, defaultSortDirection });\n\t}, [defaultSortColumn, defaultSortDirection]);\n\n\tconst handleSort = React.useCallback((action: SortAction<T>) => {\n\t\tdispatch(action);\n\t}, []);\n\n\tconst handleSelectAllRows = React.useCallback((action: AllRowsAction<T>) => {\n\t\tdispatch(action);\n\t}, []);\n\n\tconst handleSelectedRow = React.useCallback((action: SingleRowAction<T>) => {\n\t\tdispatch(action);\n\t}, []);\n\n\tconst handleSelectedRange = React.useCallback((action: RangeRowAction<T>) => {\n\t\tdispatch(action);\n\t}, []);\n\n\tconst handleChangePage = React.useCallback(\n\t\t(page: number) => {\n\t\t\tdispatch({\n\t\t\t\ttype: 'CHANGE_PAGE',\n\t\t\t\tpage,\n\t\t\t\tpaginationServer,\n\t\t\t\tvisibleOnly: selectableRowsVisibleOnly,\n\t\t\t\tpersistSelectedOnPageChange,\n\t\t\t});\n\t\t},\n\t\t[paginationServer, persistSelectedOnPageChange, selectableRowsVisibleOnly],\n\t);\n\n\tconst handleChangeRowsPerPage = React.useCallback(\n\t\t(newRowsPerPage: number, tableRowsLength: number) => {\n\t\t\tconst rowCount = paginationTotalRows || tableRowsLength;\n\t\t\tconst updatedPage = getNumberOfPages(rowCount, newRowsPerPage);\n\t\t\tconst recalculatedPage = recalculatePage(tableState.currentPage, updatedPage);\n\n\t\t\t// update the currentPage for client-side pagination\n\t\t\t// server-side should be handled by onChangeRowsPerPage callback\n\t\t\tif (!paginationServer) {\n\t\t\t\thandleChangePage(recalculatedPage);\n\t\t\t}\n\n\t\t\tdispatch({ type: 'CHANGE_ROWS_PER_PAGE', page: recalculatedPage, rowsPerPage: newRowsPerPage });\n\t\t},\n\t\t[tableState.currentPage, paginationServer, paginationTotalRows, handleChangePage],\n\t);\n\n\t// Effect: Notify parent of selection changes\n\tuseDidUpdateEffect(() => {\n\t\tonSelectedRowsChange({\n\t\t\tallSelected: tableState.allSelected,\n\t\t\tselectedCount: tableState.selectedCount,\n\t\t\tselectedRows: tableState.selectedRows.slice(0),\n\t\t});\n\t}, [tableState.toggleOnSelectedRowsChange]);\n\n\t// Effect: Notify parent of page changes.\n\t// Guard: when currentPage was reset by SORT_CHANGE, onSort is the authoritative\n\t// callback — suppress onChangePage so the consumer doesn't double-fetch.\n\tuseDidUpdateEffect(() => {\n\t\tif (!tableState.sortTriggeredPageReset) {\n\t\t\tonChangePage(tableState.currentPage, paginationTotalRows || data.length);\n\t\t}\n\t}, [tableState.currentPage]);\n\n\t// Effect: Notify parent of rows per page changes\n\tuseDidUpdateEffect(() => {\n\t\tonChangeRowsPerPage(tableState.rowsPerPage, tableState.currentPage);\n\t}, [tableState.rowsPerPage]);\n\n\t// Effect: Handle pagination default page reset\n\tuseDidUpdateEffect(() => {\n\t\thandleChangePage(paginationDefaultPage);\n\t}, [paginationDefaultPage, paginationResetDefaultPage]);\n\n\t// Effect: Handle controlled page prop\n\tuseDidUpdateEffect(() => {\n\t\tif (paginationPage !== undefined) {\n\t\t\thandleChangePage(paginationPage);\n\t\t}\n\t}, [paginationPage]);\n\n\t// Effect: Recalculate page when total rows change (server pagination)\n\tuseDidUpdateEffect(() => {\n\t\tif (pagination && paginationServer && paginationTotalRows > 0) {\n\t\t\tconst updatedPage = getNumberOfPages(paginationTotalRows, tableState.rowsPerPage);\n\t\t\tconst recalculatedPage = recalculatePage(tableState.currentPage, updatedPage);\n\n\t\t\tif (tableState.currentPage !== recalculatedPage) {\n\t\t\t\thandleChangePage(recalculatedPage);\n\t\t\t}\n\t\t}\n\t}, [paginationTotalRows]);\n\n\t// Effect: Clear selected rows when flag changes\n\tReact.useEffect(() => {\n\t\tdispatch({ type: 'CLEAR_SELECTED_ROWS', selectedRowsFlag: clearSelectedRows });\n\t}, [selectableRowsSingle, clearSelectedRows]);\n\n\t// Effect: Pre-select rows based on selectableRowSelected callback\n\tReact.useEffect(() => {\n\t\tif (!selectableRowSelected) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst preSelectedRows = data.filter(row => selectableRowSelected(row));\n\t\tconst selected = selectableRowsSingle ? preSelectedRows.slice(0, 1) : preSelectedRows;\n\n\t\tdispatch({\n\t\t\ttype: 'SELECT_MULTIPLE_ROWS',\n\t\t\tkeyField,\n\t\t\tselectedRows: selected,\n\t\t\ttotalRows: data.length,\n\t\t\tmergeSelections,\n\t\t});\n\t\t// We only want to update when data changes\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [data]);\n\n\t// Controlled-selection override: if the parent passes selectedRows, that wins over\n\t// internal state. We still keep dispatching reducer actions so onSelectedRowsChange\n\t// fires with the user-intended new selection — the parent is then expected to\n\t// reflect that back via the controlled prop.\n\tconst effectiveTableState: TableState<T> = controlledSelectedRows\n\t\t? {\n\t\t\t\t...tableState,\n\t\t\t\tselectedRows: controlledSelectedRows,\n\t\t\t\tselectedCount: controlledSelectedRows.length,\n\t\t\t\tallSelected: controlledSelectedRows.length > 0 && controlledSelectedRows.length === (data?.length ?? 0),\n\t\t\t}\n\t\t: tableState;\n\n\treturn {\n\t\ttableState: effectiveTableState,\n\t\thandleSort,\n\t\thandleSelectAllRows,\n\t\thandleSelectedRow,\n\t\thandleSelectedRange,\n\t\thandleChangePage,\n\t\thandleChangeRowsPerPage,\n\t\thandleClearSelectedRows,\n\t\thandleClearSort,\n\t};\n}\n","import * as React from 'react';\nimport { sort, multiSort } from '../util';\nimport { SortOrder } from '../types';\nimport type { TableColumn, SortColumn, SortFunction, Selector } from '../types';\n\ninterface UseTableDataProps<T> {\n\tdata: T[];\n\tcolumns: TableColumn<T>[];\n\tselectedColumn: TableColumn<T>;\n\tsortDirection: SortOrder;\n\tsortColumns: SortColumn<T>[];\n\tcurrentPage: number;\n\trowsPerPage: number;\n\tpagination: boolean;\n\tpaginationServer: boolean;\n\tsortServer: boolean;\n\tsortFunction: SortFunction<T> | null;\n\tonSort: (\n\t\tselectedColumn: TableColumn<T>,\n\t\tsortDirection: SortOrder,\n\t\tsortedRows: T[],\n\t\tsortColumns: SortColumn<T>[],\n\t) => void;\n}\n\ninterface UseTableDataReturn<T> {\n\tsortedData: T[];\n\ttableRows: T[];\n}\n\n/**\n * hook to handle data transformations (sorting, pagination)\n */\nexport default function useTableData<T>(props: UseTableDataProps<T>): UseTableDataReturn<T> {\n\tconst {\n\t\tdata,\n\t\tselectedColumn,\n\t\tsortDirection,\n\t\tsortColumns,\n\t\tcurrentPage,\n\t\trowsPerPage,\n\t\tpagination,\n\t\tpaginationServer,\n\t\tsortServer,\n\t\tsortFunction,\n\t\tonSort,\n\t} = props;\n\n\t// Memoize sorted data with stable dependencies\n\tconst sortedData = React.useMemo(() => {\n\t\t// Server-side sorting bypasses internal sorting\n\t\tif (sortServer) {\n\t\t\treturn data;\n\t\t}\n\n\t\t// Multi-column sort: stable comparison across all sort columns in priority order.\n\t\tif (sortColumns.length > 1) {\n\t\t\treturn multiSort(data, sortColumns);\n\t\t}\n\n\t\t// Use column-specific sort function if available\n\t\tif (selectedColumn?.sortFunction && typeof selectedColumn.sortFunction === 'function') {\n\t\t\tconst sortFn = selectedColumn.sortFunction;\n\t\t\tconst customSortFunction = sortDirection === SortOrder.ASC ? sortFn : (a: T, b: T) => sortFn(a, b) * -1;\n\n\t\t\treturn [...data].sort(customSortFunction);\n\t\t}\n\n\t\t// Use default sort utility — cast selector to Primitive-returning variant required by sort().\n\t\t// Columns with ReactNode selectors should supply a sortFunction instead.\n\t\treturn sort(data, selectedColumn?.selector as Selector<T> | undefined, sortDirection, sortFunction);\n\t}, [sortServer, selectedColumn, sortDirection, sortColumns, data, sortFunction]);\n\n\t// Memoize paginated table rows\n\tconst tableRows = React.useMemo(() => {\n\t\t// Client-side pagination: slice the sorted data\n\t\tif (pagination && !paginationServer) {\n\t\t\tconst lastIndex = currentPage * rowsPerPage;\n\t\t\tconst firstIndex = lastIndex - rowsPerPage;\n\n\t\t\treturn sortedData.slice(firstIndex, lastIndex);\n\t\t}\n\n\t\t// Server-side pagination or no pagination: return all sorted data\n\t\treturn sortedData;\n\t}, [currentPage, pagination, paginationServer, rowsPerPage, sortedData]);\n\n\t// Notify parent when sort changes (but not on sortedData changes to avoid loops)\n\tconst sortCallbackRef = React.useRef(onSort);\n\tconst prevSortRef = React.useRef({ selectedColumn, sortDirection, sortColumns });\n\n\tReact.useEffect(() => {\n\t\tsortCallbackRef.current = onSort;\n\t}, [onSort]);\n\n\tReact.useEffect(() => {\n\t\t// Only call onSort if column, direction, or the multi-column config actually changed\n\t\tif (\n\t\t\tprevSortRef.current.selectedColumn !== selectedColumn ||\n\t\t\tprevSortRef.current.sortDirection !== sortDirection ||\n\t\t\tprevSortRef.current.sortColumns !== sortColumns\n\t\t) {\n\t\t\tprevSortRef.current = { selectedColumn, sortDirection, sortColumns };\n\t\t\tsortCallbackRef.current(selectedColumn, sortDirection, sortedData.slice(0), sortColumns);\n\t\t}\n\t}, [selectedColumn, sortDirection, sortColumns, sortedData]);\n\n\treturn {\n\t\tsortedData,\n\t\ttableRows,\n\t};\n}\n","import * as React from 'react';\nimport useIsomorphicLayoutEffect from './useIsomorphicLayoutEffect';\n\ntype ResizeRef = { columnId: string | number; startX: number; startWidth: number };\n\ntype Options = {\n\tinitialColumnWidths?: Record<string | number, number>;\n\tonColumnResize?: (columnId: string | number, width: number, allWidths: Record<string | number, number>) => void;\n};\n\nexport default function useColumnResize({ initialColumnWidths, onColumnResize }: Options = {}) {\n\tconst [columnWidths, setColumnWidths] = React.useState<Record<string | number, number>>(initialColumnWidths ?? {});\n\tconst resizeRef = React.useRef<ResizeRef | null>(null);\n\tconst onColumnResizeRef = React.useRef(onColumnResize);\n\tuseIsomorphicLayoutEffect(() => {\n\t\tonColumnResizeRef.current = onColumnResize;\n\t});\n\n\tconst handleResizeStart = React.useCallback((columnId: string | number, e: React.MouseEvent) => {\n\t\tif (typeof document === 'undefined') return;\n\t\te.preventDefault();\n\t\tconst headerCell = (e.currentTarget as HTMLElement).closest('[data-column-id]') as HTMLElement | null;\n\t\tconst startWidth = headerCell?.offsetWidth ?? 100;\n\t\tresizeRef.current = { columnId, startX: e.clientX, startWidth };\n\n\t\tfunction onMouseMove(mv: MouseEvent) {\n\t\t\tif (!resizeRef.current) return;\n\t\t\tconst delta = mv.clientX - resizeRef.current.startX;\n\t\t\tconst newWidth = Math.max(40, resizeRef.current.startWidth + delta);\n\t\t\tsetColumnWidths(prev => ({ ...prev, [resizeRef.current!.columnId]: newWidth }));\n\t\t}\n\n\t\tfunction onMouseUp() {\n\t\t\tif (resizeRef.current) {\n\t\t\t\tconst { columnId: id } = resizeRef.current;\n\t\t\t\tsetColumnWidths(prev => {\n\t\t\t\t\tconst w = prev[id];\n\t\t\t\t\tif (w != null) onColumnResizeRef.current?.(id, w, prev);\n\t\t\t\t\treturn prev;\n\t\t\t\t});\n\t\t\t}\n\t\t\tresizeRef.current = null;\n\t\t\tdocument.removeEventListener('mousemove', onMouseMove);\n\t\t\tdocument.removeEventListener('mouseup', onMouseUp);\n\t\t}\n\n\t\tdocument.addEventListener('mousemove', onMouseMove);\n\t\tdocument.addEventListener('mouseup', onMouseUp);\n\t}, []);\n\n\treturn { columnWidths, handleResizeStart };\n}\n","import * as React from 'react';\nimport type { RowContextValue } from '../context/RowContext';\n\n/**\n * Memoizes the RowContext value passed to descendants.\n * Internal hook — owns the dependency list so DataTable.tsx stays thin.\n */\nexport default function useRowContextValue<T>(options: RowContextValue<T>): RowContextValue<T> {\n\treturn React.useMemo(\n\t\t() => options,\n\t\t// We list each field individually so the memo invalidates on field changes,\n\t\t// not on every fresh `options` object the caller passes in.\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t\t[\n\t\t\toptions.keyField,\n\t\t\toptions.columns,\n\t\t\toptions.dense,\n\t\t\toptions.striped,\n\t\t\toptions.highlightOnHover,\n\t\t\toptions.pointerOnHover,\n\t\t\toptions.conditionalRowStyles,\n\t\t\toptions.selectableRows,\n\t\t\toptions.selectableRowsComponent,\n\t\t\toptions.selectableRowsComponentProps,\n\t\t\toptions.selectableRowsHighlight,\n\t\t\toptions.selectableRowsSingle,\n\t\t\toptions.selectableRowDisabled,\n\t\t\toptions.expandableRows,\n\t\t\toptions.expandableIcon,\n\t\t\toptions.expandableRowsComponent,\n\t\t\toptions.expandableRowsComponentProps,\n\t\t\toptions.expandableRowsHideExpander,\n\t\t\toptions.expandOnRowClicked,\n\t\t\toptions.expandOnRowDoubleClicked,\n\t\t\toptions.expandableInheritConditionalStyles,\n\t\t\toptions.onRowClicked,\n\t\t\toptions.onRowDoubleClicked,\n\t\t\toptions.onRowMouseEnter,\n\t\t\toptions.onRowMouseLeave,\n\t\t\toptions.onRowExpandToggled,\n\t\t\toptions.onSelectedRow,\n\t\t\toptions.onSelectedRange,\n\t\t\toptions.visibleRowsRef,\n\t\t\toptions.lastSelectedKeyRef,\n\t\t\toptions.selectableRowsRange,\n\t\t\toptions.onDragStart,\n\t\t\toptions.onDragOver,\n\t\t\toptions.onDragEnd,\n\t\t\toptions.onDragEnter,\n\t\t\toptions.onDragLeave,\n\t\t\toptions.columnWidths,\n\t\t\toptions.pinnedOffsets,\n\t\t\toptions.animateRows,\n\t\t\toptions.localization,\n\t\t],\n\t);\n}\n","import * as React from 'react';\nimport type { HeadContextValue } from '../context/HeadContext';\n\n/**\n * Memoizes the HeadContext value passed to descendants.\n * Internal hook — owns the dependency list so DataTable.tsx stays thin.\n */\nexport default function useHeadContextValue<T>(options: HeadContextValue<T>): HeadContextValue<T> {\n\treturn React.useMemo(\n\t\t() => options,\n\t\t// We list each field individually so the memo invalidates on field changes,\n\t\t// not on every fresh `options` object the caller passes in.\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t\t[\n\t\t\toptions.selectedColumn,\n\t\t\toptions.sortDirection,\n\t\t\toptions.sortColumns,\n\t\t\toptions.sortMulti,\n\t\t\toptions.defaultSortDirection,\n\t\t\toptions.sortIcon,\n\t\t\toptions.sortServer,\n\t\t\toptions.pagination,\n\t\t\toptions.paginationServer,\n\t\t\toptions.persistSelectedOnSort,\n\t\t\toptions.selectableRowsVisibleOnly,\n\t\t\toptions.fixedHeader,\n\t\t\toptions.dense,\n\t\t\toptions.draggingColumnId,\n\t\t\toptions.draggingGroupKey,\n\t\t\toptions.filterValues,\n\t\t\toptions.columnWidths,\n\t\t\toptions.pinnedOffsets,\n\t\t\toptions.resizable,\n\t\t\toptions.keyField,\n\t\t\toptions.mergeSelections,\n\t\t\toptions.allSelected,\n\t\t\toptions.selectedRows,\n\t\t\toptions.visibleRows,\n\t\t\toptions.selectableRowsComponent,\n\t\t\toptions.selectableRowsComponentProps,\n\t\t\toptions.selectableRowDisabled,\n\t\t\toptions.showSelectAll,\n\t\t\toptions.progressPending,\n\t\t\toptions.sortedData,\n\t\t\toptions.onSelectAllRows,\n\t\t\toptions.onSort,\n\t\t\toptions.onFilterChange,\n\t\t\toptions.onResizeStart,\n\t\t\toptions.onDragStart,\n\t\t\toptions.onDragOver,\n\t\t\toptions.onDragEnd,\n\t\t\toptions.onDragEnter,\n\t\t\toptions.onDragLeave,\n\t\t\toptions.onGroupDragStart,\n\t\t\toptions.onGroupDragEnter,\n\t\t\toptions.onGroupDragOver,\n\t\t\toptions.onGroupDragEnd,\n\t\t\toptions.localization,\n\t\t],\n\t);\n}\n","import { useState, useEffect } from 'react';\nimport type { ColorMode } from '../types';\n\nfunction detectDark(): boolean {\n\tif (typeof window === 'undefined') return false;\n\t// Explicit user preference (written by the site's theme toggle) wins\n\tconst stored = localStorage.getItem('theme');\n\tif (stored) return stored === 'dark';\n\t// Otherwise, trust the class (set at load time) or the OS preference\n\treturn (\n\t\tdocument.documentElement.classList.contains('dark') || window.matchMedia('(prefers-color-scheme: dark)').matches\n\t);\n}\n\n/**\n * Resolves a ColorMode to 'light' | 'dark'.\n * When mode is 'system', watches the prefers-color-scheme media query,\n * the html.dark class, and localStorage so the table reacts to theme\n * changes without a page reload.\n */\nexport function useColorMode(mode: ColorMode = 'light'): 'light' | 'dark' {\n\tconst [systemResolved, setSystemResolved] = useState<'light' | 'dark'>(() => (detectDark() ? 'dark' : 'light'));\n\n\tuseEffect(() => {\n\t\tif (mode !== 'system') return;\n\n\t\tconst update = () => setSystemResolved(detectDark() ? 'dark' : 'light');\n\t\tupdate();\n\n\t\tconst mq = window.matchMedia('(prefers-color-scheme: dark)');\n\t\tmq.addEventListener('change', update);\n\n\t\tconst obs = new MutationObserver(update);\n\t\tobs.observe(document.documentElement, { attributeFilter: ['class'] });\n\n\t\twindow.addEventListener('storage', update);\n\n\t\treturn () => {\n\t\t\tmq.removeEventListener('change', update);\n\t\t\tobs.disconnect();\n\t\t\twindow.removeEventListener('storage', update);\n\t\t};\n\t}, [mode]);\n\n\treturn mode === 'system' ? systemResolved : mode;\n}\n","import * as React from 'react';\nimport type { TableColumn } from '../types';\n\nexport interface ColumnVisibilityEntry<T> {\n\tcolumn: TableColumn<T>;\n\tvisible: boolean;\n}\n\nexport interface UseColumnVisibilityResult<T> {\n\tcolumns: TableColumn<T>[];\n\tentries: ColumnVisibilityEntry<T>[];\n\ttoggleColumn: (columnId: string | number) => void;\n\tisVisible: (columnId: string | number) => boolean;\n\tshowAll: () => void;\n\thideAll: () => void;\n}\n\nexport default function useColumnVisibility<T>(initialColumns: TableColumn<T>[]): UseColumnVisibilityResult<T> {\n\tconst [hiddenIds, setHiddenIds] = React.useState<Set<string | number>>(() => {\n\t\tconst hidden = new Set<string | number>();\n\t\tinitialColumns.forEach(col => {\n\t\t\tif (col.omit && col.id != null) hidden.add(col.id);\n\t\t});\n\t\treturn hidden;\n\t});\n\n\tconst columns = React.useMemo(\n\t\t() => initialColumns.map(col => ({ ...col, omit: col.id != null ? hiddenIds.has(col.id) : col.omit })),\n\t\t[initialColumns, hiddenIds],\n\t);\n\n\tconst entries = React.useMemo(\n\t\t() =>\n\t\t\tinitialColumns.map(col => ({\n\t\t\t\tcolumn: col,\n\t\t\t\tvisible: col.id != null ? !hiddenIds.has(col.id) : !col.omit,\n\t\t\t})),\n\t\t[initialColumns, hiddenIds],\n\t);\n\n\tconst toggleColumn = React.useCallback((columnId: string | number) => {\n\t\tsetHiddenIds(prev => {\n\t\t\tconst next = new Set(prev);\n\t\t\tif (next.has(columnId)) {\n\t\t\t\tnext.delete(columnId);\n\t\t\t} else {\n\t\t\t\tnext.add(columnId);\n\t\t\t}\n\t\t\treturn next;\n\t\t});\n\t}, []);\n\n\tconst isVisible = React.useCallback((columnId: string | number) => !hiddenIds.has(columnId), [hiddenIds]);\n\n\tconst showAll = React.useCallback(() => setHiddenIds(new Set()), []);\n\n\tconst hideAll = React.useCallback(() => {\n\t\tsetHiddenIds(new Set(initialColumns.map(c => c.id).filter((id): id is string | number => id != null)));\n\t}, [initialColumns]);\n\n\treturn { columns, entries, toggleColumn, isVisible, showAll, hideAll };\n}\n","import * as React from 'react';\nimport type { TableColumn } from '../types';\nimport { getProperty } from '../util';\n\nexport type ExportFormat = 'csv' | 'json';\n\nexport interface UseTableExportOptions<T> {\n\t/** Columns to include in the export. Columns with `omit: true` are skipped automatically. */\n\tcolumns: TableColumn<T>[];\n\t/** Rows to export. Pass `filteredSortedData` (from `useTableData` + `useColumnFilter`) for \"current view\" semantics. */\n\trows: T[];\n\t/**\n\t * How to extract the value for each cell.\n\t * - `'selector'` (default): runs `column.selector` and stringifies the result. Ignores `format` and custom `cell` renderers.\n\t * - `'format'`: prefers `column.format`, falling back to `selector`. Use this when your formatted values are what users see.\n\t */\n\tvalueSource?: 'selector' | 'format';\n\t/** Override the header label for a given column id. Useful when `column.name` is a React node. */\n\theaderOverrides?: Record<string | number, string>;\n\t/** Restrict the export to these column ids, in this order. Omit to include all non-omitted columns. */\n\tcolumnOrder?: (string | number)[];\n}\n\nexport interface UseTableExportResult {\n\t/** Generate a CSV string from the current rows and columns. */\n\ttoCSV: () => string;\n\t/** Generate a JSON string (pretty-printed, 2-space indent). */\n\ttoJSON: () => string;\n\t/** Trigger a browser download. No-op on server. */\n\tdownload: (filename: string, format?: ExportFormat) => void;\n\t/** Copy CSV to the clipboard. Returns a promise that resolves on success. */\n\tcopy: (format?: ExportFormat) => Promise<void>;\n}\n\nfunction escapeCsvCell(value: string): string {\n\tif (value.includes('\"') || value.includes(',') || value.includes('\\n') || value.includes('\\r')) {\n\t\treturn `\"${value.replace(/\"/g, '\"\"')}\"`;\n\t}\n\treturn value;\n}\n\nfunction headerLabel<T>(col: TableColumn<T>, overrides?: Record<string | number, string>): string {\n\tif (col.id != null && overrides && overrides[col.id] !== undefined) return overrides[col.id];\n\tif (typeof col.name === 'string' || typeof col.name === 'number') return String(col.name);\n\treturn col.id != null ? String(col.id) : '';\n}\n\nfunction cellToString(value: unknown): string {\n\tif (value == null) return '';\n\tif (typeof value === 'string') return value;\n\tif (typeof value === 'number' || typeof value === 'boolean') return String(value);\n\t// React nodes or arbitrary objects shouldn't end up in exports — coerce to JSON for safety.\n\ttry {\n\t\treturn JSON.stringify(value);\n\t} catch {\n\t\treturn String(value);\n\t}\n}\n\n/**\n * Headless export hook — produces CSV/JSON for the rows you pass in.\n *\n * Pair with `useColumnFilter` + `useTableData` (or the values DataTable already exposes\n * via callbacks) to export the user's current view rather than the raw data set.\n */\nexport default function useTableExport<T>(options: UseTableExportOptions<T>): UseTableExportResult {\n\tconst { columns, rows, valueSource = 'selector', headerOverrides, columnOrder } = options;\n\n\tconst exportColumns = React.useMemo(() => {\n\t\tconst visible = columns.filter(c => !c.omit);\n\t\tif (!columnOrder) return visible;\n\t\tconst byId = new Map<string | number, TableColumn<T>>();\n\t\tvisible.forEach(c => {\n\t\t\tif (c.id != null) byId.set(c.id, c);\n\t\t});\n\t\treturn columnOrder.map(id => byId.get(id)).filter((c): c is TableColumn<T> => !!c);\n\t}, [columns, columnOrder]);\n\n\tconst buildRows = React.useCallback((): string[][] => {\n\t\treturn rows.map((row, rowIndex) =>\n\t\t\texportColumns.map(col => {\n\t\t\t\tif (valueSource === 'format' && col.format) {\n\t\t\t\t\tconst node = col.format(row, rowIndex);\n\t\t\t\t\treturn cellToString(node);\n\t\t\t\t}\n\t\t\t\tconst raw = getProperty(row, col.selector, undefined, rowIndex);\n\t\t\t\treturn cellToString(raw);\n\t\t\t}),\n\t\t);\n\t}, [rows, exportColumns, valueSource]);\n\n\tconst toCSV = React.useCallback((): string => {\n\t\tconst header = exportColumns.map(c => escapeCsvCell(headerLabel(c, headerOverrides))).join(',');\n\t\tconst body = buildRows()\n\t\t\t.map(cells => cells.map(escapeCsvCell).join(','))\n\t\t\t.join('\\n');\n\t\treturn body ? `${header}\\n${body}` : header;\n\t}, [exportColumns, headerOverrides, buildRows]);\n\n\tconst toJSON = React.useCallback((): string => {\n\t\tconst headers = exportColumns.map(c => headerLabel(c, headerOverrides));\n\t\tconst objects = buildRows().map(cells => {\n\t\t\tconst obj: Record<string, string> = {};\n\t\t\tcells.forEach((v, i) => {\n\t\t\t\tobj[headers[i] ?? `col_${i}`] = v;\n\t\t\t});\n\t\t\treturn obj;\n\t\t});\n\t\treturn JSON.stringify(objects, null, 2);\n\t}, [exportColumns, headerOverrides, buildRows]);\n\n\tconst download = React.useCallback(\n\t\t(filename: string, format: ExportFormat = 'csv') => {\n\t\t\tif (typeof document === 'undefined') return;\n\t\t\tconst content = format === 'json' ? toJSON() : toCSV();\n\t\t\tconst mime = format === 'json' ? 'application/json;charset=utf-8' : 'text/csv;charset=utf-8';\n\t\t\tconst blob = new Blob([content], { type: mime });\n\t\t\tconst url = URL.createObjectURL(blob);\n\t\t\tconst a = document.createElement('a');\n\t\t\ta.href = url;\n\t\t\ta.download = filename;\n\t\t\tdocument.body.appendChild(a);\n\t\t\ta.click();\n\t\t\tdocument.body.removeChild(a);\n\t\t\tURL.revokeObjectURL(url);\n\t\t},\n\t\t[toCSV, toJSON],\n\t);\n\n\tconst copy = React.useCallback(\n\t\tasync (format: ExportFormat = 'csv') => {\n\t\t\tif (typeof navigator === 'undefined' || !navigator.clipboard) {\n\t\t\t\tthrow new Error('Clipboard API is not available in this environment.');\n\t\t\t}\n\t\t\tconst content = format === 'json' ? toJSON() : toCSV();\n\t\t\tawait navigator.clipboard.writeText(content);\n\t\t},\n\t\t[toCSV, toJSON],\n\t);\n\n\treturn { toCSV, toJSON, download, copy };\n}\n","import DataTable from './components/DataTable';\n\nexport { defaultThemes, createTheme } from './themes';\nexport { DEFAULT_PAGINATION_ICONS, DEFAULT_EXPANDABLE_ICON } from './defaultProps';\nexport * from './constants';\n\n// Headless hooks — compose these yourself if you want to bring your own markup/styles\nexport { default as useTableState } from './hooks/useTableState';\nexport { default as useColumns } from './hooks/useColumns';\nexport { default as useTableData } from './hooks/useTableData';\nexport { default as useColumnFilter } from './hooks/useColumnFilter';\nexport { default as useColumnVisibility } from './hooks/useColumnVisibility';\nexport type { UseColumnVisibilityResult, ColumnVisibilityEntry } from './hooks/useColumnVisibility';\nexport { default as useTableExport } from './hooks/useTableExport';\nexport type { UseTableExportOptions, UseTableExportResult, ExportFormat } from './hooks/useTableExport';\n\nexport { SortOrder } from './types';\n\nexport type {\n\tTableProps,\n\tDataTableHandle,\n\tTableColumn,\n\tColumnGroup,\n\tTableRow,\n\tTableStyles,\n\tTheme,\n\tThemeProp,\n\tThemes,\n\tColorMode,\n\tConditionalStyles,\n\tExpanderComponentProps,\n\tPaginationComponentProps,\n\tPaginationIcons,\n\tThemeIcons,\n\tPaginationOptions,\n\tPaginationServerOptions,\n\tLocalization,\n\t/** @deprecated Use `Localization['filter']` instead. Will be removed in v9. */\n\tColumnFilterOptions,\n\t/** @deprecated Use `Localization['expandable']` instead. Will be removed in v9. */\n\tExpandableRowsOptions,\n\tSortFunction,\n\tSortColumn,\n\tSelector,\n\tFilterType,\n\tFilterOperator,\n\tFilterCondition,\n\tFilterState,\n\tCellEditor,\n\tCellEditCallback,\n\tCellValidateResult,\n\tCustomCellEditorContext,\n\tColumnFooter,\n\tFooterComponent,\n\tFooterComponentProps,\n} from './types';\n\nexport { emptyFilterState, isFilterActive } from './hooks/useColumnFilter';\n\nexport default DataTable;\n"]}