@neeyo/mantine-datatable 0.1.0 → 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -1
- package/dist/index.d.mts +1195 -0
- package/dist/index.d.ts +1088 -1005
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +1 -1
- package/dist/index.mjs.map +1 -1
- package/dist/styles.css +41 -21
- package/dist/styles.layer.css +42 -22
- package/package.json +39 -30
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../package/DataTable.tsx","../package/cssVariables.ts","../package/DataTableDragToggleProvider.tsx","../package/DataTableColumns.context.ts","../package/DataTableEmptyRow.tsx","../package/DataTableEmptyState.tsx","../package/icons/IconDatabaseOff.tsx","../package/DataTableFooter.tsx","../package/DataTableFooterCell.tsx","../package/hooks/useColumnResize.ts","../package/hooks/useDataTableColumnPinning.ts","../package/utils.ts","../package/hooks/useDataTableColumnReorder.ts","../package/hooks/useDataTableColumnResize.ts","../package/hooks/useDataTableColumns.ts","../package/hooks/useDataTableColumnToggle.ts","../package/hooks/useDataTableInjectCssVariables.ts","../package/hooks/useIsomorphicLayoutEffect.ts","../package/hooks/useStableValue.ts","../package/hooks/useDataTablePinnedColumns.ts","../package/hooks/useLastSelectionChangeIndex.ts","../package/hooks/useMediaQueries.ts","../package/hooks/useMediaQueriesStringOrFunction.ts","../package/hooks/useMediaQueryStringOrFunction.ts","../package/hooks/useRowExpansion.ts","../package/hooks/useRowExpansionStatus.ts","../package/utilityClasses.ts","../package/DataTableFooterSelectorPlaceholderCell.tsx","../package/DataTableHeader.tsx","../package/DataTableColumnGroupHeaderCell.tsx","../package/DataTableHeaderCell.tsx","../package/DataTableHeaderCellFilter.tsx","../package/icons/IconFilter.tsx","../package/icons/IconFilterFilled.tsx","../package/DataTablePinnableDropdown.tsx","../package/icons/IconArrowLeft.tsx","../package/icons/IconArrowRight.tsx","../package/icons/IconPin.tsx","../package/icons/IconX.tsx","../package/DataTableResizableHeaderHandle.tsx","../package/icons/IconArrowsVertical.tsx","../package/icons/IconArrowUp.tsx","../package/icons/IconGripVertical.tsx","../package/DataTableHeaderSelectorCell.tsx","../package/DataTableLoader.tsx","../package/DataTablePagination.tsx","../package/DataTablePageSizeSelector.tsx","../package/icons/IconSelector.tsx","../package/DataTableRow.tsx","../package/DataTableRowCell.tsx","../package/DataTableRowExpansion.tsx","../package/DataTableRowSelectorCell.tsx","../package/DataTableScrollArea.tsx","../package/DataTableDraggableRow.tsx"],"sourcesContent":["import { Box, type MantineSize, Table } from '@mantine/core';\nimport { useMergedRef } from '@mantine/hooks';\nimport clsx from 'clsx';\nimport type { RefObject } from 'react';\nimport { useCallback, useEffect, useLayoutEffect, useMemo, useRef } from 'react';\nimport { getTableCssVariables } from './cssVariables';\nimport { DataTableColumnsProvider } from './DataTableDragToggleProvider';\nimport { DataTableEmptyRow } from './DataTableEmptyRow';\nimport { DataTableEmptyState } from './DataTableEmptyState';\nimport { DataTableFooter } from './DataTableFooter';\nimport { DataTableHeader } from './DataTableHeader';\nimport { DataTableLoader } from './DataTableLoader';\nimport { DataTablePagination } from './DataTablePagination';\nimport { DataTableRow } from './DataTableRow';\nimport { DataTableScrollArea } from './DataTableScrollArea';\nimport {\n useDataTableColumns,\n useDataTableInjectCssVariables,\n useDataTablePinnedColumns,\n useLastSelectionChangeIndex,\n useRowExpansion,\n} from './hooks';\nimport type { DataTableProps } from './types';\nimport { TEXT_SELECTION_DISABLED } from './utilityClasses';\nimport { differenceBy, flattenColumns, getRecordId, uniqBy } from './utils';\n\nexport function DataTable<T>({\n withTableBorder,\n borderRadius,\n textSelectionDisabled,\n height = '100%',\n minHeight,\n maxHeight,\n shadow,\n verticalAlign = 'center',\n fetching,\n columns,\n storeColumnsKey,\n groups,\n pinFirstColumn,\n pinLastColumn,\n defaultColumnProps,\n defaultColumnRender,\n idAccessor = 'id',\n records,\n selectionTrigger = 'checkbox',\n selectedRecords,\n onSelectedRecordsChange,\n selectionColumnClassName,\n selectionColumnStyle,\n isRecordSelectable,\n selectionCheckboxProps,\n allRecordsSelectionCheckboxProps = { 'aria-label': 'Select all records' },\n getRecordSelectionCheckboxProps = (_, index) => ({ 'aria-label': `Select record ${index + 1}` }),\n sortStatus,\n sortIcons,\n onSortStatusChange,\n horizontalSpacing,\n page,\n onPageChange,\n totalRecords,\n recordsPerPage,\n onRecordsPerPageChange,\n recordsPerPageOptions,\n recordsPerPageLabel = 'Records per page',\n paginationWithEdges,\n paginationWithControls,\n paginationActiveTextColor,\n paginationActiveBackgroundColor,\n paginationSize = 'sm',\n paginationText = ({ from, to, totalRecords }) => `${from} - ${to} / ${totalRecords}`,\n paginationWrapBreakpoint = 'sm',\n getPaginationControlProps = (control) => {\n if (control === 'previous') {\n return { 'aria-label': 'Previous page' };\n } else if (control === 'next') {\n return { 'aria-label': 'Next page' };\n }\n return {};\n },\n getPaginationItemProps,\n renderPagination,\n loaderBackgroundBlur,\n customLoader,\n loaderSize,\n loaderType,\n loaderColor,\n loadingText = '...',\n emptyState,\n noRecordsText = 'No records',\n noRecordsIcon,\n highlightOnHover,\n striped,\n noHeader,\n onRowClick,\n onRowDoubleClick,\n onRowContextMenu,\n onCellClick,\n onCellDoubleClick,\n onCellContextMenu,\n onScroll,\n onScrollToTop,\n onScrollToBottom,\n onScrollToLeft,\n onScrollToRight,\n c,\n backgroundColor,\n borderColor,\n rowBorderColor,\n stripedColor,\n highlightOnHoverColor,\n rowColor,\n rowBackgroundColor,\n rowExpansion,\n rowClassName,\n rowStyle,\n customRowAttributes,\n scrollViewportRef,\n scrollAreaProps,\n tableRef,\n bodyRef,\n m,\n my,\n mx,\n mt,\n mb,\n ml,\n mr,\n className,\n classNames,\n style,\n styles,\n rowFactory,\n tableWrapper,\n ...otherProps\n}: DataTableProps<T>) {\n const flatColumns = useMemo(() => {\n return groups ? flattenColumns(groups) : columns!;\n }, [columns, groups]);\n\n const { refs, onScroll: handleScrollPositionChange } = useDataTableInjectCssVariables({\n scrollCallbacks: {\n onScroll,\n onScrollToTop,\n onScrollToBottom,\n onScrollToLeft,\n onScrollToRight,\n },\n withRowBorders: otherProps.withRowBorders,\n });\n\n const dragToggle = useDataTableColumns({\n key: storeColumnsKey,\n columns: flatColumns,\n headerRef: refs.header as RefObject<HTMLTableSectionElement | null>,\n scrollViewportRef: refs.scrollViewport as RefObject<HTMLElement | null>,\n });\n\n // Use the columns enriched with order/visibility/width from the hook so\n // resize widths actually reach the rendered <th>/<td> cells.\n const effectiveColumns = dragToggle.effectiveColumns;\n\n const mergedTableRef = useMergedRef(refs.table, tableRef);\n const mergedViewportRef = useMergedRef(refs.scrollViewport, scrollViewportRef);\n const internalBodyRef = useRef<HTMLTableSectionElement>(null);\n const mergedBodyRef = useMergedRef(internalBodyRef, bodyRef);\n const rowExpansionInfo = useRowExpansion<T>({ rowExpansion, records, idAccessor });\n\n const { pinnedMap, hasLeftPinned, hasRightPinned } = useDataTablePinnedColumns({\n columns: effectiveColumns,\n theadRef: refs.header as RefObject<HTMLTableSectionElement | null>,\n tbodyRef: internalBodyRef,\n selectionColumnHeaderRef: refs.selectionColumnHeader as RefObject<HTMLTableCellElement | null>,\n selectionVisible: !!selectedRecords,\n pinFirstColumn,\n pinLastColumn,\n });\n\n // Track when we should reset scroll due to pagination, but defer until data is rendered\n const resetScrollPending = useRef(false);\n const prevPageRef = useRef(page);\n const recordsAtPageChangeRef = useRef<typeof records | undefined>(records);\n\n const handlePageChange = useCallback(\n (newPage: number) => {\n resetScrollPending.current = true;\n recordsAtPageChangeRef.current = records;\n onPageChange!(newPage);\n },\n [onPageChange, records]\n );\n\n // Handle externally-driven page changes\n useEffect(() => {\n if (prevPageRef.current !== page) {\n resetScrollPending.current = true;\n recordsAtPageChangeRef.current = records;\n prevPageRef.current = page;\n }\n }, [page, records]);\n\n const recordsLength = records?.length;\n\n // Reset scroll position when changing pages (sync) or when records change (async)\n useLayoutEffect(() => {\n if (!resetScrollPending.current) return;\n if (fetching) return;\n if (records === recordsAtPageChangeRef.current) return;\n\n const viewport = refs.scrollViewport.current;\n if (!viewport) return;\n\n const raf = requestAnimationFrame(() => {\n viewport.scrollTo({ top: 0, left: 0 });\n resetScrollPending.current = false;\n });\n\n return () => cancelAnimationFrame(raf);\n }, [fetching, records, refs.scrollViewport]);\n\n const recordIds = records?.map((record) => getRecordId(record, idAccessor));\n const selectionColumnVisible = !!selectedRecords;\n const selectedRecordIds = selectedRecords?.map((record) => getRecordId(record, idAccessor));\n const hasRecordsAndSelectedRecords =\n recordIds !== undefined && selectedRecordIds !== undefined && selectedRecordIds.length > 0;\n\n const selectableRecords = isRecordSelectable ? records?.filter(isRecordSelectable) : records;\n const selectableRecordIds = selectableRecords?.map((record) => getRecordId(record, idAccessor));\n\n const allSelectableRecordsSelected =\n hasRecordsAndSelectedRecords && selectableRecordIds!.every((id) => selectedRecordIds.includes(id));\n const someRecordsSelected =\n hasRecordsAndSelectedRecords && selectableRecordIds!.some((id) => selectedRecordIds.includes(id));\n\n const handleHeaderSelectionChange = useCallback(() => {\n if (selectedRecords && onSelectedRecordsChange) {\n onSelectedRecordsChange(\n allSelectableRecordsSelected\n ? selectedRecords.filter((record) => !selectableRecordIds!.includes(getRecordId(record, idAccessor)))\n : uniqBy([...selectedRecords, ...selectableRecords!], (record) => getRecordId(record, idAccessor))\n );\n }\n }, [\n allSelectableRecordsSelected,\n idAccessor,\n onSelectedRecordsChange,\n selectableRecordIds,\n selectableRecords,\n selectedRecords,\n ]);\n\n const { lastSelectionChangeIndex, setLastSelectionChangeIndex } = useLastSelectionChangeIndex(recordIds);\n const selectorCellShadowVisible = selectionColumnVisible && !hasLeftPinned;\n\n const marginProperties = { m, my, mx, mt, mb, ml, mr };\n\n const TableWrapper = useCallback(\n ({ children }: { children: React.ReactNode }) => {\n if (tableWrapper) return tableWrapper({ children });\n return children;\n },\n [tableWrapper]\n );\n\n return (\n <DataTableColumnsProvider {...dragToggle} pinnedMap={pinnedMap}>\n <Box\n ref={refs.root}\n {...marginProperties}\n className={clsx(\n 'mantine-datatable',\n { 'mantine-datatable-with-border': withTableBorder },\n className,\n classNames?.root\n )}\n style={[\n (theme) => ({\n ...getTableCssVariables({\n theme,\n c,\n backgroundColor,\n borderColor,\n rowBorderColor,\n stripedColor,\n highlightOnHoverColor,\n }),\n borderRadius: theme.radius[borderRadius as MantineSize] || borderRadius,\n boxShadow: theme.shadows[shadow as MantineSize] || shadow,\n height,\n minHeight,\n maxHeight,\n }),\n style,\n styles?.root,\n {\n position: 'relative',\n },\n ]}\n >\n <DataTableScrollArea\n viewportRef={mergedViewportRef}\n leftShadowBehind={selectionColumnVisible || hasLeftPinned}\n rightShadowBehind={hasRightPinned}\n onScrollPositionChange={handleScrollPositionChange}\n scrollAreaProps={scrollAreaProps}\n >\n <TableWrapper>\n <Table\n ref={mergedTableRef}\n horizontalSpacing={horizontalSpacing}\n className={clsx(\n 'mantine-datatable-table',\n {\n [TEXT_SELECTION_DISABLED]: textSelectionDisabled,\n 'mantine-datatable-vertical-align-top': verticalAlign === 'top',\n 'mantine-datatable-vertical-align-bottom': verticalAlign === 'bottom',\n 'mantine-datatable-selection-column-visible': selectionColumnVisible,\n 'mantine-datatable-resizable-columns': dragToggle.hasResizableColumns,\n 'mantine-datatable-resize-locked': dragToggle.isLocked,\n 'mantine-datatable-resizing': dragToggle.isResizing,\n },\n classNames?.table\n )}\n style={{\n ...styles?.table,\n ...(dragToggle.isLocked ? { tableLayout: 'fixed' } : null),\n ...(dragToggle.tableWidth != null ? { width: `${dragToggle.tableWidth}px` } : null),\n }}\n data-striped={(recordsLength && striped) || undefined}\n data-highlight-on-hover={highlightOnHover || undefined}\n {...otherProps}\n >\n {noHeader ? null : (\n <DataTableColumnsProvider {...dragToggle} pinnedMap={pinnedMap}>\n <DataTableHeader<T>\n ref={refs.header}\n selectionColumnHeaderRef={refs.selectionColumnHeader}\n className={classNames?.header}\n style={styles?.header}\n columns={effectiveColumns}\n defaultColumnProps={defaultColumnProps}\n groups={groups}\n pinnedMap={pinnedMap}\n sortStatus={sortStatus}\n sortIcons={sortIcons}\n onSortStatusChange={onSortStatusChange}\n selectionTrigger={selectionTrigger}\n selectionVisible={selectionColumnVisible}\n selectionChecked={allSelectableRecordsSelected}\n selectionIndeterminate={someRecordsSelected && !allSelectableRecordsSelected}\n onSelectionChange={handleHeaderSelectionChange}\n selectionCheckboxProps={{ ...selectionCheckboxProps, ...allRecordsSelectionCheckboxProps }}\n selectorCellShadowVisible={selectorCellShadowVisible}\n selectionColumnClassName={selectionColumnClassName}\n selectionColumnStyle={selectionColumnStyle}\n withColumnBorders={otherProps.withColumnBorders}\n />\n </DataTableColumnsProvider>\n )}\n <tbody ref={mergedBodyRef}>\n {recordsLength ? (\n records.map((record, index) => {\n const recordId = getRecordId(record, idAccessor);\n const isSelected = selectedRecordIds?.includes(recordId) || false;\n\n let handleSelectionChange: React.MouseEventHandler | undefined;\n\n if (onSelectedRecordsChange && selectedRecords) {\n handleSelectionChange = (e) => {\n if (e.nativeEvent.shiftKey && lastSelectionChangeIndex !== null) {\n const targetRecords = records.filter(\n index > lastSelectionChangeIndex\n ? (rec, idx) =>\n idx >= lastSelectionChangeIndex &&\n idx <= index &&\n (isRecordSelectable ? isRecordSelectable(rec, idx) : true)\n : (rec, idx) =>\n idx >= index &&\n idx <= lastSelectionChangeIndex &&\n (isRecordSelectable ? isRecordSelectable(rec, idx) : true)\n );\n onSelectedRecordsChange(\n isSelected\n ? differenceBy(selectedRecords, targetRecords, (r) => getRecordId(r, idAccessor))\n : uniqBy([...selectedRecords, ...targetRecords], (r) => getRecordId(r, idAccessor))\n );\n } else {\n onSelectedRecordsChange(\n isSelected\n ? selectedRecords.filter((rec) => getRecordId(rec, idAccessor) !== recordId)\n : uniqBy([...selectedRecords, record], (rec) => getRecordId(rec, idAccessor))\n );\n }\n setLastSelectionChangeIndex(index);\n };\n }\n\n return (\n <DataTableRow<T>\n key={recordId as React.Key}\n record={record}\n index={index}\n columns={effectiveColumns}\n defaultColumnProps={defaultColumnProps}\n pinnedMap={pinnedMap}\n defaultColumnRender={defaultColumnRender}\n selectionTrigger={selectionTrigger}\n selectionVisible={selectionColumnVisible}\n selectionChecked={isSelected}\n onSelectionChange={handleSelectionChange}\n isRecordSelectable={isRecordSelectable}\n selectionCheckboxProps={selectionCheckboxProps}\n getSelectionCheckboxProps={getRecordSelectionCheckboxProps}\n onClick={onRowClick}\n onDoubleClick={onRowDoubleClick}\n onCellClick={onCellClick}\n onCellDoubleClick={onCellDoubleClick}\n onContextMenu={onRowContextMenu}\n onCellContextMenu={onCellContextMenu}\n expansion={rowExpansionInfo}\n color={rowColor}\n backgroundColor={rowBackgroundColor}\n className={rowClassName}\n style={rowStyle}\n customAttributes={customRowAttributes}\n selectorCellShadowVisible={selectorCellShadowVisible}\n selectionColumnClassName={selectionColumnClassName}\n selectionColumnStyle={selectionColumnStyle}\n idAccessor={idAccessor as string}\n rowFactory={rowFactory}\n />\n );\n })\n ) : (\n <DataTableEmptyRow />\n )}\n </tbody>\n\n {effectiveColumns.some(({ footer }) => footer) && (\n <DataTableFooter<T>\n ref={refs.footer}\n className={classNames?.footer}\n style={styles?.footer}\n columns={effectiveColumns}\n defaultColumnProps={defaultColumnProps}\n pinnedMap={pinnedMap}\n selectionVisible={selectionColumnVisible}\n selectorCellShadowVisible={selectorCellShadowVisible}\n />\n )}\n </Table>\n </TableWrapper>\n </DataTableScrollArea>\n {!!(page && recordsLength) && (\n <DataTablePagination\n className={classNames?.pagination}\n style={styles?.pagination}\n horizontalSpacing={horizontalSpacing}\n fetching={fetching}\n page={page}\n onPageChange={handlePageChange}\n totalRecords={totalRecords}\n recordsPerPage={recordsPerPage}\n onRecordsPerPageChange={onRecordsPerPageChange}\n recordsPerPageOptions={recordsPerPageOptions}\n recordsPerPageLabel={recordsPerPageLabel}\n paginationWithEdges={paginationWithEdges}\n paginationWithControls={paginationWithControls}\n paginationActiveTextColor={paginationActiveTextColor}\n paginationActiveBackgroundColor={paginationActiveBackgroundColor}\n paginationSize={paginationSize}\n paginationText={paginationText}\n paginationWrapBreakpoint={paginationWrapBreakpoint}\n getPaginationControlProps={getPaginationControlProps}\n getPaginationItemProps={getPaginationItemProps}\n noRecordsText={noRecordsText}\n loadingText={loadingText}\n recordsLength={recordsLength}\n renderPagination={renderPagination}\n />\n )}\n <DataTableLoader\n fetching={fetching}\n backgroundBlur={loaderBackgroundBlur}\n customContent={customLoader}\n size={loaderSize}\n type={loaderType}\n color={loaderColor}\n />\n <DataTableEmptyState icon={noRecordsIcon} text={noRecordsText} active={!fetching && !recordsLength}>\n {emptyState}\n </DataTableEmptyState>\n </Box>\n </DataTableColumnsProvider>\n );\n}\n","import { type MantineColor, type MantineTheme, parseThemeColor } from '@mantine/core';\nimport type { DataTableProps } from './types';\n\nexport function getColor(\n color: MantineColor | undefined | { light: MantineColor; dark: MantineColor },\n theme: MantineTheme,\n colorScheme: 'light' | 'dark'\n) {\n return color\n ? parseThemeColor({\n color: typeof color === 'object' ? color[colorScheme] : color,\n theme,\n }).value\n : undefined;\n}\n\nexport function getTableCssVariables({\n theme,\n c,\n backgroundColor,\n borderColor,\n rowBorderColor,\n stripedColor,\n highlightOnHoverColor,\n}: Pick<\n DataTableProps,\n 'c' | 'backgroundColor' | 'borderColor' | 'rowBorderColor' | 'stripedColor' | 'highlightOnHoverColor'\n> & {\n theme: MantineTheme;\n}) {\n return {\n '--mantine-datatable-color-light': getColor(c, theme, 'light'),\n '--mantine-datatable-color-dark': getColor(c, theme, 'dark'),\n\n '--mantine-datatable-background-color-light': getColor(backgroundColor, theme, 'light'),\n '--mantine-datatable-background-color-dark': getColor(backgroundColor, theme, 'dark'),\n\n '--mantine-datatable-border-color-light': getColor(borderColor, theme, 'light'),\n '--mantine-datatable-border-color-dark': getColor(borderColor, theme, 'dark'),\n\n '--mantine-datatable-row-border-color-light': getColor(rowBorderColor, theme, 'light'),\n '--mantine-datatable-row-border-color-dark': getColor(rowBorderColor, theme, 'dark'),\n\n '--mantine-datatable-striped-color-light': getColor(stripedColor, theme, 'light'),\n '--mantine-datatable-striped-color-dark': getColor(stripedColor, theme, 'dark'),\n\n '--mantine-datatable-highlight-on-hover-color-light': getColor(highlightOnHoverColor, theme, 'light'),\n '--mantine-datatable-highlight-on-hover-color-dark': getColor(highlightOnHoverColor, theme, 'dark'),\n };\n}\n\nexport function getPaginationCssVariables({\n theme,\n paginationActiveTextColor,\n paginationActiveBackgroundColor,\n}: Pick<DataTableProps, 'paginationActiveTextColor' | 'paginationActiveBackgroundColor'> & {\n theme: MantineTheme;\n}) {\n return {\n '--mantine-datatable-pagination-active-text-color-light': getColor(paginationActiveTextColor, theme, 'light'),\n '--mantine-datatable-pagination-active-text-color-dark': getColor(paginationActiveTextColor, theme, 'dark'),\n\n '--mantine-datatable-pagination-active-background-color-light': getColor(\n paginationActiveBackgroundColor,\n theme,\n 'light'\n ),\n '--mantine-datatable-pagination-active-background-color-dark': getColor(\n paginationActiveBackgroundColor,\n theme,\n 'dark'\n ),\n };\n}\n\nexport function getRowCssVariables({\n theme,\n color,\n backgroundColor,\n}: {\n theme: MantineTheme;\n color: MantineColor | undefined | { light: MantineColor; dark: MantineColor };\n backgroundColor: MantineColor | undefined | { light: MantineColor; dark: MantineColor };\n}) {\n return {\n '--mantine-datatable-row-color-light': getColor(color, theme, 'light'),\n '--mantine-datatable-row-color-dark': getColor(color, theme, 'dark'),\n '--mantine-datatable-row-background-color-light': getColor(backgroundColor, theme, 'light'),\n '--mantine-datatable-row-background-color-dark': getColor(backgroundColor, theme, 'dark'),\n };\n}\n","'use client';\n\nimport { type Dispatch, type PropsWithChildren, type SetStateAction, useState } from 'react';\nimport { DataTableColumnsContextProvider } from './DataTableColumns.context';\nimport type { DataTableColumnPinning, DataTableColumnToggle, PinnedColumnInfo } from './hooks';\n\ntype DataTableColumnsProviderProps = PropsWithChildren<{\n columnsOrder: string[];\n setColumnsOrder: (order: string[]) => void;\n resetColumnsOrder: () => void;\n\n columnsToggle: DataTableColumnToggle[];\n setColumnsToggle: (toggle: DataTableColumnToggle[]) => void;\n resetColumnsToggle: () => void;\n\n columnsPinning: DataTableColumnPinning[];\n setColumnsPinning: Dispatch<SetStateAction<DataTableColumnPinning[]>>;\n resetColumnsPinning: () => void;\n\n setColumnWidth: (accessor: string, width: string | number) => void;\n setMultipleColumnWidths: (updates: Array<{ accessor: string; width: string | number }>) => void;\n resetColumnsWidth: () => void;\n\n beginResize: () => void;\n endResize: () => void;\n\n pinnedMap: Map<string, PinnedColumnInfo>;\n}>;\n\nexport const DataTableColumnsProvider = (props: DataTableColumnsProviderProps) => {\n const {\n children,\n columnsOrder,\n setColumnsOrder,\n columnsToggle,\n setColumnsToggle,\n columnsPinning,\n setColumnsPinning,\n\n resetColumnsOrder,\n resetColumnsToggle,\n resetColumnsPinning,\n\n setColumnWidth,\n setMultipleColumnWidths,\n resetColumnsWidth,\n\n beginResize,\n endResize,\n\n pinnedMap,\n } = props;\n\n const [sourceColumn, setSourceColumn] = useState('');\n const [targetColumn, setTargetColumn] = useState('');\n\n const swapColumns = () => {\n if (!columnsOrder || !setColumnsOrder || !sourceColumn || !targetColumn) {\n return;\n }\n\n const sourceInfo = pinnedMap.get(sourceColumn);\n const targetInfo = pinnedMap.get(targetColumn);\n if (sourceInfo?.logicalSide !== targetInfo?.logicalSide) return;\n\n const sourceIndex = columnsOrder.indexOf(sourceColumn);\n const targetIndex = columnsOrder.indexOf(targetColumn);\n\n if (sourceIndex !== -1 && targetIndex !== -1) {\n const newOrder = [...columnsOrder];\n const [removed] = newOrder.splice(sourceIndex, 1);\n newOrder.splice(targetIndex, 0, removed);\n setColumnsOrder(newOrder);\n }\n };\n\n return (\n <DataTableColumnsContextProvider\n value={{\n sourceColumn,\n setSourceColumn,\n targetColumn,\n setTargetColumn,\n columnsToggle,\n setColumnsToggle,\n columnsPinning,\n setColumnsPinning,\n swapColumns,\n resetColumnsOrder,\n resetColumnsToggle,\n resetColumnsPinning,\n\n setColumnWidth,\n setMultipleColumnWidths,\n resetColumnsWidth,\n\n beginResize,\n endResize,\n }}\n >\n {children}\n </DataTableColumnsContextProvider>\n );\n};\n","import { createSafeContext } from '@mantine/core';\nimport type { Dispatch, SetStateAction } from 'react';\nimport type { DataTableColumnPinning, DataTableColumnToggle } from './hooks';\n\ninterface DataTableColumnsContext {\n // accessor of the column which is currently dragged\n sourceColumn: string;\n setSourceColumn: Dispatch<SetStateAction<string>>;\n\n // accessor of the column which is currently hovered\n targetColumn: string;\n setTargetColumn: Dispatch<SetStateAction<string>>;\n\n // swap the source column with the target column\n swapColumns: () => void;\n\n // reset to the default columns order\n resetColumnsOrder: () => void;\n\n columnsToggle: DataTableColumnToggle[];\n setColumnsToggle: (toggle: DataTableColumnToggle[]) => void;\n resetColumnsToggle: () => void;\n\n columnsPinning: DataTableColumnPinning[];\n setColumnsPinning: Dispatch<SetStateAction<DataTableColumnPinning[]>>;\n resetColumnsPinning: () => void;\n\n setColumnWidth: (accessor: string, width: string | number) => void;\n setMultipleColumnWidths: (updates: Array<{ accessor: string; width: string | number }>) => void;\n resetColumnsWidth: () => void;\n\n // Drag lifecycle: snapshot DOM widths, lock the table, then persist on release\n beginResize: () => void;\n endResize: () => void;\n}\n\nexport const [DataTableColumnsContextProvider, useDataTableColumnsContext] = createSafeContext<DataTableColumnsContext>(\n 'useDataTableColumnsContext must be used within DataTableColumnProvider'\n);\n","export function DataTableEmptyRow() {\n return (\n <tr className=\"mantine-datatable-empty-row\">\n <td />\n </tr>\n );\n}\n","import { Center, Text } from '@mantine/core';\nimport { IconDatabaseOff } from './icons/IconDatabaseOff';\n\ntype DataTableEmptyStateProps = React.PropsWithChildren<{\n icon: React.ReactNode | undefined;\n text: string;\n active: boolean;\n}>;\n\nexport function DataTableEmptyState({ icon, text, active, children }: DataTableEmptyStateProps) {\n return (\n <Center className=\"mantine-datatable-empty-state\" data-active={active || undefined}>\n {children || (\n <>\n {icon || (\n <div className=\"mantine-datatable-empty-state-icon\">\n <IconDatabaseOff />\n </div>\n )}\n <Text component=\"div\" size=\"sm\" c=\"dimmed\">\n {text}\n </Text>\n </>\n )}\n </Center>\n );\n}\n","export function IconDatabaseOff() {\n return (\n <svg\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n strokeWidth=\"2\"\n stroke=\"currentColor\"\n fill=\"none\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path stroke=\"none\" d=\"M0 0h24v24H0z\" fill=\"none\" />\n <path d=\"M12.983 8.978c3.955 -.182 7.017 -1.446 7.017 -2.978c0 -1.657 -3.582 -3 -8 -3c-1.661 0 -3.204 .19 -4.483 .515m-2.783 1.228c-.471 .382 -.734 .808 -.734 1.257c0 1.22 1.944 2.271 4.734 2.74\" />\n <path d=\"M4 6v6c0 1.657 3.582 3 8 3c.986 0 1.93 -.067 2.802 -.19m3.187 -.82c1.251 -.53 2.011 -1.228 2.011 -1.99v-6\" />\n <path d=\"M4 12v6c0 1.657 3.582 3 8 3c3.217 0 5.991 -.712 7.261 -1.74m.739 -3.26v-4\" />\n <path d=\"M3 3l18 18\" />\n </svg>\n );\n}\n","import { type MantineStyleProp, TableTfoot, TableTr } from '@mantine/core';\nimport clsx from 'clsx';\nimport { DataTableFooterCell } from './DataTableFooterCell';\nimport { DataTableFooterSelectorPlaceholderCell } from './DataTableFooterSelectorPlaceholderCell';\nimport type { PinnedColumnInfo } from './hooks';\nimport type { DataTableColumn, DataTableDefaultColumnProps } from './types';\n\ntype DataTableFooterProps<T> = {\n className: string | undefined;\n style: MantineStyleProp | undefined;\n columns: DataTableColumn<T>[];\n defaultColumnProps: DataTableDefaultColumnProps<T> | undefined;\n pinnedMap: Map<string, PinnedColumnInfo>;\n selectionVisible: boolean;\n selectorCellShadowVisible: boolean;\n ref: React.Ref<HTMLTableSectionElement>;\n};\n\nexport function DataTableFooter<T>({\n className,\n style,\n columns,\n defaultColumnProps,\n pinnedMap,\n selectionVisible,\n selectorCellShadowVisible,\n ref,\n}: DataTableFooterProps<T>) {\n return (\n <TableTfoot ref={ref} className={clsx('mantine-datatable-footer', className)} style={style}>\n <TableTr>\n {selectionVisible && <DataTableFooterSelectorPlaceholderCell shadowVisible={selectorCellShadowVisible} />}\n {columns.map(({ hidden, ...columnProps }) => {\n if (hidden) return null;\n\n const {\n accessor,\n visibleMediaQuery,\n textAlign,\n width,\n footer,\n footerClassName,\n footerStyle,\n noWrap,\n ellipsis,\n } = { ...defaultColumnProps, ...columnProps };\n\n return (\n <DataTableFooterCell<T>\n key={accessor as React.Key}\n pinnedInfo={pinnedMap.get(String(accessor))}\n className={footerClassName}\n style={footerStyle}\n visibleMediaQuery={visibleMediaQuery}\n textAlign={textAlign}\n width={width}\n title={footer}\n noWrap={noWrap}\n ellipsis={ellipsis}\n />\n );\n })}\n </TableTr>\n </TableTfoot>\n );\n}\n","import { type MantineStyleProp, type MantineTheme, TableTh } from '@mantine/core';\nimport clsx from 'clsx';\nimport type { PinnedColumnInfo } from './hooks';\nimport { useMediaQueryStringOrFunction } from './hooks';\nimport type { DataTableColumn } from './types';\nimport { ELLIPSIS, NOWRAP, TEXT_ALIGN_CENTER, TEXT_ALIGN_LEFT, TEXT_ALIGN_RIGHT } from './utilityClasses';\n\ntype DataTableFooterCellProps<T> = {\n className: string | undefined;\n style: MantineStyleProp | undefined;\n pinnedInfo: PinnedColumnInfo | undefined;\n visibleMediaQuery: string | ((theme: MantineTheme) => string) | undefined;\n title: React.ReactNode | undefined;\n} & Pick<DataTableColumn<T>, 'noWrap' | 'ellipsis' | 'textAlign' | 'width'>;\n\nexport function DataTableFooterCell<T>({\n className,\n style,\n pinnedInfo,\n visibleMediaQuery,\n title,\n noWrap,\n ellipsis,\n textAlign,\n width,\n}: DataTableFooterCellProps<T>) {\n if (!useMediaQueryStringOrFunction(visibleMediaQuery)) return null;\n return (\n <TableTh\n data-pinned={pinnedInfo?.position}\n data-pinned-shadow={pinnedInfo?.isBoundary ? pinnedInfo.position : undefined}\n className={clsx(\n {\n [NOWRAP]: noWrap || ellipsis,\n [ELLIPSIS]: ellipsis,\n [TEXT_ALIGN_LEFT]: textAlign === 'left',\n [TEXT_ALIGN_CENTER]: textAlign === 'center',\n [TEXT_ALIGN_RIGHT]: textAlign === 'right',\n },\n className\n )}\n style={[\n {\n width,\n minWidth: width,\n maxWidth: width,\n },\n style,\n pinnedInfo && {\n position: 'sticky',\n [pinnedInfo.position]: pinnedInfo.offset,\n overflow: 'visible',\n },\n ]}\n >\n {title}\n </TableTh>\n );\n}\n","import { useCallback, useRef, useState } from 'react';\n\ninterface UseColumnResizeProps {\n onColumnResize: (updates: Array<{ accessor: string; width: string | number }>) => void;\n minColumnWidth?: number;\n}\n\ninterface ResizeState {\n isResizing: boolean;\n startX: number;\n originalWidths: { current: number; next: number };\n currentAccessor: string;\n nextAccessor: string | null;\n}\n\nexport const useColumnResize = ({ onColumnResize, minColumnWidth = 50 }: UseColumnResizeProps) => {\n const [resizeState, setResizeState] = useState<ResizeState | null>(null);\n const currentColumnRef = useRef<HTMLTableCellElement | null>(null);\n const nextColumnRef = useRef<HTMLTableCellElement | null>(null);\n\n const startResize = useCallback(\n (event: React.MouseEvent, currentColumn: HTMLTableCellElement, currentAccessor: string) => {\n event.preventDefault();\n event.stopPropagation();\n\n const nextColumn = currentColumn.nextElementSibling as HTMLTableCellElement | null;\n if (!nextColumn) {\n return false;\n }\n\n const nextAccessor = nextColumn.getAttribute('data-accessor');\n if (!nextAccessor) {\n return false;\n }\n\n const currentWidth = currentColumn.getBoundingClientRect().width;\n const nextWidth = nextColumn.getBoundingClientRect().width;\n\n currentColumnRef.current = currentColumn;\n nextColumnRef.current = nextColumn;\n\n setResizeState({\n isResizing: true,\n startX: event.clientX,\n originalWidths: { current: currentWidth, next: nextWidth },\n currentAccessor,\n nextAccessor,\n });\n\n // Global styles for better UX\n document.body.style.cursor = 'col-resize';\n document.body.style.userSelect = 'none';\n\n return true;\n },\n []\n );\n\n const updateResize = useCallback(\n (clientX: number) => {\n if (!resizeState || !currentColumnRef.current || !nextColumnRef.current) return;\n\n const deltaX = clientX - resizeState.startX;\n\n // Calculate the actual delta we can apply based on constraints\n const actualDelta = Math.min(\n deltaX,\n resizeState.originalWidths.next - minColumnWidth // Don't shrink next below minimum\n );\n\n const finalCurrentWidth = resizeState.originalWidths.current + actualDelta;\n const finalNextWidth = resizeState.originalWidths.next - actualDelta;\n\n // Apply to DOM for immediate visual feedback\n currentColumnRef.current.style.width = `${finalCurrentWidth}px`;\n nextColumnRef.current.style.width = `${finalNextWidth}px`;\n\n return { finalCurrentWidth, finalNextWidth };\n },\n [resizeState, minColumnWidth]\n );\n\n const endResize = useCallback(() => {\n if (!resizeState || !currentColumnRef.current || !nextColumnRef.current) return;\n\n // Reset global styles\n document.body.style.cursor = 'initial';\n document.body.style.userSelect = 'initial';\n\n // Get final widths\n const currentWidth = currentColumnRef.current.getBoundingClientRect().width;\n const nextWidth = nextColumnRef.current.getBoundingClientRect().width;\n\n // Update through callback\n const updates = [{ accessor: resizeState.currentAccessor, width: `${currentWidth}px` }];\n\n if (resizeState.nextAccessor) {\n updates.push({ accessor: resizeState.nextAccessor, width: `${nextWidth}px` });\n }\n\n onColumnResize(updates);\n\n // Clean up\n setResizeState(null);\n currentColumnRef.current = null;\n nextColumnRef.current = null;\n }, [resizeState, onColumnResize]);\n\n const cancelResize = useCallback(() => {\n if (!resizeState) return;\n\n // Reset global styles\n document.body.style.cursor = 'initial';\n document.body.style.userSelect = 'initial';\n\n // Reset column widths to original values\n if (currentColumnRef.current) {\n currentColumnRef.current.style.width = `${resizeState.originalWidths.current}px`;\n }\n if (nextColumnRef.current) {\n nextColumnRef.current.style.width = `${resizeState.originalWidths.next}px`;\n }\n\n // Clean up\n setResizeState(null);\n currentColumnRef.current = null;\n nextColumnRef.current = null;\n }, [resizeState]);\n\n const resetColumnWidths = useCallback(\n (currentAccessor: string, nextAccessor?: string) => {\n const updates = [{ accessor: currentAccessor, width: 'initial' }];\n if (nextAccessor) {\n updates.push({ accessor: nextAccessor, width: 'initial' });\n }\n onColumnResize(updates);\n },\n [onColumnResize]\n );\n\n return {\n isResizing: !!resizeState,\n startResize,\n updateResize,\n endResize,\n cancelResize,\n resetColumnWidths,\n };\n};\n","import { useLocalStorage } from '@mantine/hooks';\nimport { useEffect, useMemo } from 'react';\nimport type { DataTableColumn } from '../types/DataTableColumn';\nimport { hasStringAccessor, sanitizeStoredArray } from '../utils';\n\nexport type DataTableColumnPinning = {\n accessor: string;\n defaultPinned: 'left' | 'right' | undefined;\n pinnable: boolean;\n pinned: 'left' | 'right' | undefined;\n};\n\n/**\n * Hook to handle column pinning with localStorage persistence.\n * @see https://documatrix.github.io/mantine-datatable/examples/interactive-column-pinning/\n */\nexport function useDataTableColumnPinning<T>({\n key,\n columns = [],\n getInitialValueInEffect = true,\n}: {\n /**\n * The key to use in localStorage to store the columns pinning state.\n */\n key: string | undefined;\n /**\n * Columns definitions.\n */\n columns: DataTableColumn<T>[];\n /**\n * If set to true, value will be updated in useEffect after mount.\n * @default true\n */\n getInitialValueInEffect?: boolean;\n}) {\n // Default columns pinning state\n const defaultColumnsPinning = useMemo(\n () =>\n columns.map((column) => ({\n accessor: column.accessor as string,\n defaultPinned: column.pinned,\n pinnable: !!column.pinnable,\n pinned: column.pinned,\n })),\n [columns]\n );\n\n const [storedColumnsPinning, _setColumnsPinning] = useLocalStorage<DataTableColumnPinning[]>({\n key: key ? `${key}-columns-pinning` : '',\n defaultValue: key ? defaultColumnsPinning : undefined,\n getInitialValueInEffect,\n });\n\n // Guard against malformed persisted state (e.g. a non-array value propagated\n // across tabs via the `storage` event) before any `.map()` / `.forEach()` call.\n const columnsPinning = sanitizeStoredArray<DataTableColumnPinning>(\n storedColumnsPinning,\n defaultColumnsPinning,\n hasStringAccessor\n );\n\n function setColumnsPinning(\n pinning: DataTableColumnPinning[] | ((prev: DataTableColumnPinning[]) => DataTableColumnPinning[])\n ) {\n if (!key) return;\n if (typeof pinning === 'function') {\n _setColumnsPinning((prev) => pinning(prev ?? defaultColumnsPinning));\n } else {\n _setColumnsPinning(pinning);\n }\n }\n\n // Align stored pinning state with current column definitions: drop accessors\n // that no longer exist, append accessors added since last persisted state.\n const alignedColumnsPinning = useMemo(() => {\n if (!columnsPinning) return defaultColumnsPinning;\n const aligned: DataTableColumnPinning[] = [];\n columnsPinning.forEach((col) => {\n if (columns.find((c) => c.accessor === col.accessor)) {\n aligned.push(col);\n }\n });\n columns.forEach((col) => {\n if (!aligned.find((c) => c.accessor === col.accessor)) {\n aligned.push({\n accessor: col.accessor as string,\n defaultPinned: col.pinned,\n pinnable: !!col.pinnable,\n pinned: col.pinned,\n });\n }\n });\n return aligned;\n }, [columnsPinning, columns, defaultColumnsPinning]);\n\n // Persist alignment in an effect — never set state during render\n useEffect(() => {\n if (!key) return;\n if (!columnsPinning) return;\n if (JSON.stringify(alignedColumnsPinning) !== JSON.stringify(columnsPinning)) {\n _setColumnsPinning(alignedColumnsPinning);\n }\n }, [key, alignedColumnsPinning, columnsPinning, _setColumnsPinning]);\n\n const resetColumnsPinning = () => {\n setColumnsPinning(defaultColumnsPinning);\n };\n\n if (!key) {\n return {\n columnsPinning: defaultColumnsPinning,\n setColumnsPinning,\n resetColumnsPinning,\n } as const;\n }\n\n return {\n columnsPinning: alignedColumnsPinning,\n setColumnsPinning,\n resetColumnsPinning,\n } as const;\n}\n","import type { DropResult } from '@hello-pangea/dnd';\nimport type { DataTableColumn, DataTableColumnGroup } from './types';\n\n/**\n * Utility function that returns a humanized version of a string, e.g. \"camelCase\" -> \"Camel Case\"\n */\nexport function humanize(value: string) {\n const str = value\n .replace(/([a-z\\d])([A-Z]+)/g, '$1 $2')\n .replace(/\\W|_/g, ' ')\n .trim()\n .toLowerCase();\n return `${str.charAt(0).toUpperCase()}${str.slice(1)}`;\n}\n\n/**\n * Sanitizes a value read from `localStorage` before the column hooks call array\n * methods on it.\n *\n * Persisted column state is synchronized across browser tabs through the native\n * `storage` event (e.g. when a tab is duplicated). A malformed or unexpected\n * value — written by another tab, by a different DataTable instance sharing the\n * same `storeColumnsKey`, or by manual tampering — is delivered verbatim to\n * every listening table. Without this guard such a value flows straight into\n * `.map()` / `.forEach()` and crashes the app with\n * `TypeError: <x>.map is not a function`.\n *\n * Returns `value` when it is an array whose items all pass the optional\n * `isValidItem` predicate; otherwise returns `fallback`.\n */\nexport function sanitizeStoredArray<T>(value: unknown, fallback: T[], isValidItem?: (item: unknown) => boolean): T[] {\n if (!Array.isArray(value)) return fallback;\n if (isValidItem && !value.every(isValidItem)) return fallback;\n return value as T[];\n}\n\n/**\n * Predicate matching the `{ accessor: string, ... }` shape persisted for column\n * toggle and pinning state.\n */\nexport function hasStringAccessor(item: unknown): boolean {\n return typeof item === 'object' && item !== null && typeof (item as { accessor?: unknown }).accessor === 'string';\n}\n\n/**\n * Utility function that returns an array of values that are present in the first array but not in the second\n */\nexport function differenceBy<T>(arr1: T[], arr2: T[], iteratee: (value: T) => unknown) {\n return arr1.filter((c) => !arr2.map(iteratee).includes(iteratee(c)));\n}\n\n/**\n * Utility function that returns an array of unique values from a given array\n */\nexport function uniqBy<T>(arr: T[], iteratee: (value: T) => unknown) {\n return arr.filter((x, i, self) => i === self.findIndex((y) => iteratee(x) === iteratee(y)));\n}\n\n/**\n * Utility function that returns the value at a given path in an object\n */\nexport function getValueAtPath<T>(obj: T, path: keyof T | (string & NonNullable<unknown>)) {\n if (!path) return undefined;\n const pathArray = (path as string).match(/([^[.\\]])+/g) as string[];\n return pathArray.reduce((prevObj: unknown, key) => prevObj && (prevObj as Record<string, unknown>)[key], obj);\n}\n\n/**\n * Utility function that returns the record id using idAccessor\n */\nexport function getRecordId<T>(\n record: T,\n idAccessor: keyof T | (string & NonNullable<unknown>) | ((record: T) => React.Key)\n) {\n return typeof idAccessor === 'string'\n ? getValueAtPath(record, idAccessor)\n : (idAccessor as (record: T) => React.Key)(record);\n}\n\n/**\n * Utility function that reorders an array of records by a given field used for drag'n'drop functionality.\n * @see https://github.com/hello-pangea/dnd\n */\nexport function reorderRecords<T>(dropResult: DropResult, records: T[]): T[] {\n const draft = structuredClone(records);\n const prev = draft[dropResult.source.index];\n\n if (dropResult.destination) {\n draft.splice(dropResult.source.index, 1);\n draft.splice(dropResult.destination.index, 0, prev);\n }\n\n return draft;\n}\n\n/**\n * Utility function that swaps elements of an array, by a given result from drag'n'drop functionality.\n * @see https://github.com/hello-pangea/dnd\n */\nexport function swapRecords<T>(dropResult: DropResult, records: T[]): T[] {\n const draft = structuredClone(records);\n\n const destination = dropResult.destination;\n\n if (!destination) return draft;\n\n const sourceEl = draft[dropResult.source.index];\n const destEl = draft[destination.index];\n\n draft.splice(destination.index, 1, sourceEl);\n draft.splice(dropResult.source.index, 1, destEl);\n\n return draft;\n}\n\n/**\n * Calculates the maximum depth of nested column groups\n */\nexport function getMaxGroupDepth<T>(groups: readonly DataTableColumnGroup<T>[]): number {\n if (!groups || groups.length === 0) return 0;\n\n return Math.max(\n ...groups.map((group) => {\n if (group.groups && group.groups.length > 0) {\n return 1 + getMaxGroupDepth(group.groups);\n }\n return 1;\n })\n );\n}\n\n/**\n * Flattens nested column groups to extract all columns at the deepest level\n */\nexport function flattenColumns<T>(groups: DataTableColumnGroup<T>[]): DataTableColumn<T>[] {\n const columns: DataTableColumn<T>[] = [];\n\n for (const group of groups) {\n if (group.columns && group.columns.length > 0) {\n columns.push(...group.columns.filter((col) => col != null));\n } else if (group.groups && group.groups.length > 0) {\n columns.push(...flattenColumns(group.groups));\n }\n }\n\n return columns.filter((col) => col != null);\n}\n\n/**\n * Calculates the column span for a group based on visible columns\n */\nexport function calculateColSpan<T>(group: DataTableColumnGroup<T>, visibles?: (boolean | undefined)[]): number {\n if (group.columns && group.columns.length > 0) {\n return group.columns.filter((column, index) => {\n if (column.hidden) return false;\n return visibles ? visibles[index] !== false : true;\n }).length;\n }\n\n if (group.groups && group.groups.length > 0) {\n return group.groups.reduce((sum, subGroup) => {\n return sum + calculateColSpan(subGroup, visibles);\n }, 0);\n }\n\n return 0;\n}\n\n/**\n * Gets all groups at a specific depth level\n */\nexport function getGroupsAtDepth<T>(\n groups: readonly DataTableColumnGroup<T>[],\n targetDepth: number,\n currentDepth: number = 0\n): DataTableColumnGroup<T>[] {\n if (currentDepth === targetDepth) {\n return [...groups];\n }\n\n const result: DataTableColumnGroup<T>[] = [];\n for (const group of groups) {\n if (group.groups && group.groups.length > 0) {\n result.push(...getGroupsAtDepth(group.groups, targetDepth, currentDepth + 1));\n }\n }\n\n return result;\n}\n\n/**\n * Checks if a group needs a right border based on its position and context\n */\nexport function needsRightBorder(\n isLastGroup: boolean,\n hasMoreColumnsAfter: boolean,\n withColumnBorders: boolean\n): boolean {\n if (!withColumnBorders) return false;\n return !isLastGroup || hasMoreColumnsAfter;\n}\n","import { useLocalStorage } from '@mantine/hooks';\nimport { useEffect, useMemo } from 'react';\nimport type { DataTableColumn } from '../types/DataTableColumn';\nimport { sanitizeStoredArray } from '../utils';\n\n/**\n * Hook to handle column reordering with localStorage persistence.\n * @see https://documatrix.github.io/mantine-datatable/examples/column-dragging-and-toggling/\n */\nexport function useDataTableColumnReorder<T>({\n key,\n columns = [],\n getInitialValueInEffect = true,\n}: {\n /**\n * The key to use in localStorage to store the columns order.\n */\n key: string | undefined;\n /**\n * Columns definitions.\n */\n columns: DataTableColumn<T>[];\n /**\n * If set to true, value will be updated in useEffect after mount.\n * @default true\n */\n getInitialValueInEffect?: boolean;\n}) {\n // Default columns order is the order of the columns in the array\n const defaultColumnsOrder = useMemo(\n () => (columns ? (columns.map((column) => column.accessor) as string[]) : []),\n [columns]\n );\n\n const [storedColumnsOrder, _setColumnsOrder] = useLocalStorage<string[]>({\n key: key ? `${key}-columns-order` : '',\n defaultValue: key ? defaultColumnsOrder : undefined,\n getInitialValueInEffect,\n });\n\n // Guard against malformed persisted state (e.g. a non-array value propagated\n // across tabs via the `storage` event) before any `.map()` / `.forEach()` call.\n const columnsOrder = sanitizeStoredArray<string>(\n storedColumnsOrder,\n defaultColumnsOrder as string[],\n (item) => typeof item === 'string'\n );\n\n function setColumnsOrder(order: string[]) {\n if (key) {\n _setColumnsOrder(order);\n }\n }\n\n // Align stored order with current column definitions: drop accessors that no\n // longer exist, append accessors added since last persisted state.\n const alignedColumnsOrder = useMemo(() => {\n if (!columnsOrder) return defaultColumnsOrder;\n const aligned: string[] = [];\n columnsOrder.forEach((col) => {\n if (columns.find((c) => c.accessor === col)) {\n aligned.push(col);\n }\n });\n columns.forEach((col) => {\n if (!aligned.includes(col.accessor as string)) {\n aligned.push(col.accessor as string);\n }\n });\n return aligned;\n }, [columnsOrder, columns, defaultColumnsOrder]);\n\n // Persist alignment in an effect — never set state during render\n useEffect(() => {\n if (!key) return;\n if (!columnsOrder) return;\n if (JSON.stringify(alignedColumnsOrder) !== JSON.stringify(columnsOrder)) {\n _setColumnsOrder(alignedColumnsOrder);\n }\n }, [key, alignedColumnsOrder, columnsOrder, _setColumnsOrder]);\n\n const resetColumnsOrder = () => {\n setColumnsOrder(defaultColumnsOrder);\n };\n\n if (!key) {\n return {\n columnsOrder,\n setColumnsOrder,\n resetColumnsOrder,\n } as const;\n }\n\n return {\n columnsOrder: alignedColumnsOrder,\n setColumnsOrder,\n resetColumnsOrder,\n } as const;\n}\n","import { useLocalStorage } from '@mantine/hooks';\nimport { type RefObject, useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport type { DataTableColumn } from '../types/DataTableColumn';\nimport { sanitizeStoredArray } from '../utils';\n\ntype DataTableColumnWidth = Record<string, string | number>;\n\n/**\n * Hook to handle column resizing with localStorage persistence.\n *\n * Strategy (mirrors `mantine-list-view-table`):\n * 1. Until the user grabs a handle, the table stays in `table-layout: auto`\n * so declarative widths — including `width: '0%'` on actions columns —\n * work as documented.\n * 2. On mousedown we snapshot every header cell into pixel widths and switch\n * to `table-layout: fixed` so pixel widths are honored strictly during\n * the drag and afterwards.\n * 3. The lock stays in place until `resetColumnsWidth` is called.\n *\n * @see https://documatrix.github.io/mantine-datatable/examples/column-resizing/\n */\nexport function useDataTableColumnResize<T>({\n key,\n columns = [],\n getInitialValueInEffect = true,\n headerRef,\n}: {\n /** The key to use in localStorage to store the columns width. */\n key: string | undefined;\n /** Columns definitions. */\n columns: DataTableColumn<T>[];\n /**\n * If set to true, value will be updated in useEffect after mount.\n * @default true\n */\n getInitialValueInEffect?: boolean;\n /** Reference to the table header element for measuring column widths. */\n headerRef?: RefObject<HTMLTableSectionElement | null>;\n /**\n * Reference to the scroll viewport for calculating overflow.\n * Kept for backwards compatibility; no longer used internally.\n */\n scrollViewportRef?: RefObject<HTMLElement | null>;\n}) {\n const hasResizableColumns = useMemo(() => {\n return columns.some((c) => c.resizable && !c.hidden && c.accessor !== '__selection__');\n }, [columns]);\n\n const getDefaultColumnsWidth = useCallback(() => {\n return columns\n .filter((column) => column.accessor !== '__selection__')\n .map((column) => ({ [column.accessor]: column.width ?? 'auto' }));\n }, [columns]);\n\n // Honor caller's `getInitialValueInEffect`: when false the read is synchronous\n // and we can seed `effectiveColumnsWidth` directly; when true the value lands\n // after mount and the hydration effect below picks it up.\n const [rawStoredColumnsWidth, setStoredColumnsWidth] = useLocalStorage<DataTableColumnWidth[]>({\n key: key ? `${key}-columns-width` : '',\n defaultValue: key ? getDefaultColumnsWidth() : undefined,\n getInitialValueInEffect,\n });\n\n // Guard against malformed persisted state (e.g. a non-array value propagated\n // across tabs via the `storage` event) before any `.map()` / `.filter()` call.\n const storedColumnsWidth = sanitizeStoredArray<DataTableColumnWidth>(\n rawStoredColumnsWidth,\n [],\n (item) => typeof item === 'object' && item !== null\n );\n\n const [effectiveColumnsWidth, setEffectiveColumnsWidth] = useState<DataTableColumnWidth[]>(() => {\n if (key && storedColumnsWidth.length > 0) {\n return storedColumnsWidth;\n }\n return getDefaultColumnsWidth();\n });\n\n // True only during an active drag — drives cursor / user-select styling\n const [isResizing, setIsResizing] = useState(false);\n\n // Marks effective widths as user-changed so the persistence effect knows to\n // sync them to localStorage. Hydration / column re-alignment never set this.\n const dirtyRef = useRef(false);\n\n // Sync stored → effective whenever the persisted value lands or changes\n // (covers `getInitialValueInEffect: true`, cross-tab updates, etc.).\n // Idempotent: when values are unchanged React bails out of the re-render.\n useEffect(() => {\n if (!key) return;\n if (!storedColumnsWidth || storedColumnsWidth.length === 0) return;\n\n setEffectiveColumnsWidth(storedColumnsWidth);\n }, [key, storedColumnsWidth]);\n\n // Re-align effective state with the current column set: drop entries for\n // removed accessors, add defaults for newly introduced columns. Bails out\n // when nothing actually changed to avoid extra renders.\n useEffect(() => {\n setEffectiveColumnsWidth((prev) => {\n const validAccessors = new Set(\n columns.filter((c) => c.accessor !== '__selection__').map((c) => String(c.accessor))\n );\n const filtered = prev.filter((entry) => validAccessors.has(Object.keys(entry)[0]));\n const present = new Set(filtered.map((entry) => Object.keys(entry)[0]));\n let added = false;\n for (const column of columns) {\n if (column.accessor === '__selection__') continue;\n const accessor = String(column.accessor);\n if (present.has(accessor)) continue;\n filtered.push({ [accessor]: column.width ?? 'auto' });\n added = true;\n }\n const removed = filtered.length !== prev.length || added;\n return removed ? filtered : prev;\n });\n }, [columns]);\n\n const updateColumnWidths = useCallback((updates: Array<{ accessor: string; width: string | number }>) => {\n const filtered = updates.filter((u) => u.accessor !== '__selection__');\n if (filtered.length === 0) return;\n\n dirtyRef.current = true;\n setEffectiveColumnsWidth((prev) =>\n prev.map((col) => {\n const accessor = Object.keys(col)[0];\n const update = filtered.find((u) => u.accessor === accessor);\n return update ? { [accessor]: update.width } : col;\n })\n );\n }, []);\n\n // Persist user-initiated width changes — but only when no drag is in flight.\n // `localStorage.setItem` is synchronous and writing it on every mousemove\n // would block the main thread and visibly hurt drag smoothness.\n useEffect(() => {\n if (!key || !dirtyRef.current) return;\n if (isResizing) return;\n dirtyRef.current = false;\n setStoredColumnsWidth(effectiveColumnsWidth);\n }, [key, effectiveColumnsWidth, isResizing, setStoredColumnsWidth]);\n\n const setColumnWidth = useCallback(\n (accessor: string, width: string | number) => {\n updateColumnWidths([{ accessor, width }]);\n },\n [updateColumnWidths]\n );\n\n const setMultipleColumnWidths = useCallback(\n (updates: Array<{ accessor: string; width: string | number }>) => {\n updateColumnWidths(updates);\n },\n [updateColumnWidths]\n );\n\n /**\n * Snapshot every header cell width into the React state. Called the moment\n * the user grabs a handle. Idempotent: if all cells are already pixel-locked\n * the snapshot reads back the same values.\n */\n const beginResize = useCallback(() => {\n setIsResizing(true);\n\n const thead = headerRef?.current;\n if (!thead) return;\n\n const cells = Array.from(thead.querySelectorAll<HTMLTableCellElement>('th[data-accessor]'));\n if (cells.length === 0) return;\n\n const snapshot: DataTableColumnWidth[] = [];\n\n for (const cell of cells) {\n const accessor = cell.getAttribute('data-accessor');\n if (!accessor) continue;\n if (accessor === '__selection__') continue;\n const width = Math.round(cell.getBoundingClientRect().width);\n snapshot.push({ [accessor]: `${width}px` });\n }\n\n dirtyRef.current = true;\n setEffectiveColumnsWidth(snapshot);\n }, [headerRef]);\n\n /** Clear the active-drag flag. Persistence runs from the effect once `isResizing` flips off. */\n const endResize = useCallback(() => {\n setIsResizing(false);\n }, []);\n\n const resetColumnsWidth = useCallback(() => {\n const defaults = getDefaultColumnsWidth();\n dirtyRef.current = true;\n setEffectiveColumnsWidth(defaults);\n setIsResizing(false);\n }, [getDefaultColumnsWidth]);\n\n const allResizableWidthsInitial = useMemo(() => {\n if (!hasResizableColumns) return false;\n const resizable = columns.filter((c) => c.resizable && !c.hidden && c.accessor !== '__selection__');\n return effectiveColumnsWidth\n .filter((cw) => {\n const accessor = Object.keys(cw)[0];\n return resizable.some((c) => c.accessor === accessor);\n })\n .every((cw) => {\n const w = Object.values(cw)[0];\n return w === 'auto' || w === 'initial';\n });\n }, [hasResizableColumns, columns, effectiveColumnsWidth]);\n\n // No-op kept for backwards compatibility — measurement is now lazy\n const measureAndSetColumnWidths = useCallback(() => {\n /* noop */\n }, []);\n\n return {\n columnsWidth: effectiveColumnsWidth,\n setColumnsWidth: updateColumnWidths,\n setColumnWidth,\n setMultipleColumnWidths,\n resetColumnsWidth,\n hasResizableColumns,\n allResizableWidthsInitial,\n measureAndSetColumnWidths,\n isResizing,\n beginResize,\n endResize,\n } as const;\n}\n","import { type RefObject, useMemo } from 'react';\nimport type { DataTableColumn } from '../types/DataTableColumn';\nimport { type DataTableColumnPinning, useDataTableColumnPinning } from './useDataTableColumnPinning';\nimport { useDataTableColumnReorder } from './useDataTableColumnReorder';\nimport { useDataTableColumnResize } from './useDataTableColumnResize';\nimport { type DataTableColumnToggle, useDataTableColumnToggle } from './useDataTableColumnToggle';\n\nexport type { DataTableColumnPinning, DataTableColumnToggle };\n\n/**\n * Hook to handle column features such as drag-and-drop reordering, visibility toggling and resizing.\n * @see https://documatrix.github.io/mantine-datatable/examples/column-dragging-and-toggling/\n */\nexport const useDataTableColumns = <T>({\n key,\n columns = [],\n getInitialValueInEffect = true,\n headerRef,\n scrollViewportRef,\n}: {\n /**\n * The key to use in localStorage to store the columns order and toggle state.\n */\n key: string | undefined;\n /**\n * Columns definitions.\n */\n columns: DataTableColumn<T>[];\n /**\n * If set to true, value will be updated in useEffect after mount.\n * @default true\n */\n getInitialValueInEffect?: boolean;\n /**\n * Reference to the table header element for measuring column widths.\n */\n headerRef?: RefObject<HTMLTableSectionElement | null>;\n /**\n * Reference to the scroll viewport for calculating overflow.\n */\n scrollViewportRef?: RefObject<HTMLElement | null>;\n}) => {\n // Use specialized hooks for each feature\n const { columnsOrder, setColumnsOrder, resetColumnsOrder } = useDataTableColumnReorder({\n key,\n columns,\n getInitialValueInEffect,\n });\n\n const { columnsToggle, setColumnsToggle, resetColumnsToggle } = useDataTableColumnToggle({\n key,\n columns,\n getInitialValueInEffect,\n });\n\n const { columnsPinning, setColumnsPinning, resetColumnsPinning } = useDataTableColumnPinning({\n key,\n columns,\n getInitialValueInEffect,\n });\n\n const {\n columnsWidth,\n setColumnsWidth,\n setColumnWidth,\n setMultipleColumnWidths,\n resetColumnsWidth,\n hasResizableColumns,\n allResizableWidthsInitial,\n measureAndSetColumnWidths,\n isResizing,\n beginResize,\n endResize,\n } = useDataTableColumnResize({\n key,\n columns,\n getInitialValueInEffect,\n headerRef,\n scrollViewportRef,\n });\n\n // Compute effective columns based on order, toggle, pinning, and width.\n // Width is applied unconditionally — even without a `storeColumnsKey` —\n // so that `setMultipleColumnWidths` updates from the resize handle\n // actually flow back into the rendered cell `style.width`.\n const effectiveColumns = useMemo(() => {\n let result: DataTableColumn<T>[];\n if (columnsOrder) {\n result = columnsOrder\n .map((order) => columns.find((column) => column.accessor === order))\n .map((column) => {\n // Effective pinned value:\n // - If pinnable: true → use state from columnsPinning.pinned (interactive)\n // - Otherwise → use static column.pinned\n const pinningState = columnsPinning.find((p) => p.accessor === column?.accessor);\n const effectivePinned = column?.pinnable ? pinningState?.pinned : column?.pinned;\n return {\n ...column,\n hidden: column?.hidden || !columnsToggle.find((toggle) => toggle.accessor === column?.accessor)?.toggled,\n pinned: effectivePinned,\n };\n }) as DataTableColumn<T>[];\n } else {\n result = columns;\n }\n\n // Reorder columns by pinning: left-pinned → unpinned → right-pinned\n const leftPinned = result.filter((c) => c.pinned === 'left');\n const unpinned = result.filter((c) => !c.pinned);\n const rightPinned = result.filter((c) => c.pinned === 'right');\n const reordered = [...leftPinned, ...unpinned, ...rightPinned];\n\n return reordered.map((column) => {\n if (column?.accessor === '__selection__') return column;\n const accessor = column?.accessor as string;\n const widthEntry = columnsWidth.find((entry) => accessor in entry);\n if (!widthEntry) return column;\n const width = widthEntry[accessor];\n // Treat 'auto' / 'initial' as \"no override\" so declarative widths win\n if (width === undefined || width === 'auto' || width === 'initial') return column;\n return { ...column, width };\n });\n }, [columns, columnsOrder, columnsToggle, columnsPinning, columnsWidth]);\n\n // Lock the table layout to `fixed` only when *every* visible column has a\n // pixel width. Mixed states (some 'auto', some pixels) stay in auto layout\n // so the browser keeps the auto cells visible — the user can re-resize to\n // produce a complete pixel snapshot.\n // Recomputes on column visibility changes too, so resize + toggle stays\n // consistent.\n const isLocked = useMemo(() => {\n const visible = effectiveColumns.filter((c) => !c.hidden && c.accessor !== '__selection__');\n if (visible.length === 0) return false;\n return visible.every((c) => typeof c.width === 'string' && /px$/.test(c.width));\n }, [effectiveColumns]);\n\n const tableWidth = useMemo(() => {\n if (!isLocked) return null;\n let sum = 0;\n for (const col of effectiveColumns) {\n if (col.hidden || col.accessor === '__selection__') continue;\n const w = col.width;\n if (typeof w !== 'string') continue;\n const n = parseInt(w, 10);\n if (Number.isNaN(n)) continue;\n sum += n;\n }\n return sum > 0 ? sum : null;\n }, [isLocked, effectiveColumns]);\n\n return {\n effectiveColumns: effectiveColumns as DataTableColumn<T>[],\n\n // Order handling\n setColumnsOrder,\n columnsOrder: columnsOrder as string[],\n resetColumnsOrder,\n\n // Toggle handling\n columnsToggle: columnsToggle as DataTableColumnToggle[],\n setColumnsToggle,\n resetColumnsToggle,\n\n // Pinning handling\n columnsPinning: columnsPinning as DataTableColumnPinning[],\n setColumnsPinning,\n resetColumnsPinning,\n\n // Resize handling\n columnsWidth,\n setColumnsWidth,\n setColumnWidth,\n setMultipleColumnWidths,\n resetColumnsWidth,\n hasResizableColumns,\n allResizableWidthsInitial,\n measureAndSetColumnWidths,\n isResizing,\n isLocked,\n tableWidth,\n beginResize,\n endResize,\n } as const;\n};\n","import { useLocalStorage } from '@mantine/hooks';\nimport { useEffect, useMemo } from 'react';\nimport type { DataTableColumn } from '../types/DataTableColumn';\nimport { hasStringAccessor, sanitizeStoredArray } from '../utils';\n\nexport type DataTableColumnToggle = {\n accessor: string;\n defaultToggle: boolean;\n toggleable: boolean;\n toggled: boolean;\n};\n\n/**\n * Hook to handle column visibility toggling with localStorage persistence.\n * @see https://documatrix.github.io/mantine-datatable/examples/column-dragging-and-toggling/\n */\nexport function useDataTableColumnToggle<T>({\n key,\n columns = [],\n getInitialValueInEffect = true,\n}: {\n /**\n * The key to use in localStorage to store the columns toggle state.\n */\n key: string | undefined;\n /**\n * Columns definitions.\n */\n columns: DataTableColumn<T>[];\n /**\n * If set to true, value will be updated in useEffect after mount.\n * @default true\n */\n getInitialValueInEffect?: boolean;\n}) {\n // Default columns toggle state\n const defaultColumnsToggle = useMemo(\n () =>\n columns?.map((column) => ({\n accessor: column.accessor as string,\n defaultToggle: column.defaultToggle || true,\n toggleable: column.toggleable as boolean,\n toggled: column.defaultToggle === undefined ? true : column.defaultToggle,\n })) as DataTableColumnToggle[],\n [columns]\n );\n\n const [storedColumnsToggle, _setColumnsToggle] = useLocalStorage<DataTableColumnToggle[]>({\n key: key ? `${key}-columns-toggle` : '',\n defaultValue: key ? defaultColumnsToggle : undefined,\n getInitialValueInEffect,\n });\n\n // Guard against malformed persisted state (e.g. a non-array value propagated\n // across tabs via the `storage` event) before any `.map()` / `.forEach()` call.\n const columnsToggle = sanitizeStoredArray<DataTableColumnToggle>(\n storedColumnsToggle,\n defaultColumnsToggle,\n hasStringAccessor\n );\n\n function setColumnsToggle(toggle: DataTableColumnToggle[]) {\n if (key) {\n _setColumnsToggle(toggle);\n }\n }\n\n // Align stored toggle state with current column definitions: drop accessors\n // that no longer exist, append accessors added since last persisted state.\n const alignedColumnsToggle = useMemo(() => {\n if (!columnsToggle) return defaultColumnsToggle;\n const aligned: DataTableColumnToggle[] = [];\n columnsToggle.forEach((col) => {\n if (columns.find((c) => c.accessor === col.accessor)) {\n aligned.push(col);\n }\n });\n columns.forEach((col) => {\n if (!aligned.find((c) => c.accessor === col.accessor)) {\n aligned.push({\n accessor: col.accessor as string,\n defaultToggle: col.defaultToggle || true,\n toggleable: col.toggleable as boolean,\n toggled: col.defaultToggle === undefined ? true : col.defaultToggle,\n });\n }\n });\n return aligned;\n }, [columnsToggle, columns, defaultColumnsToggle]);\n\n // Persist alignment in an effect — never set state during render\n useEffect(() => {\n if (!key) return;\n if (!columnsToggle) return;\n if (JSON.stringify(alignedColumnsToggle) !== JSON.stringify(columnsToggle)) {\n _setColumnsToggle(alignedColumnsToggle);\n }\n }, [key, alignedColumnsToggle, columnsToggle, _setColumnsToggle]);\n\n const resetColumnsToggle = () => {\n setColumnsToggle(defaultColumnsToggle);\n };\n\n if (!key) {\n return {\n columnsToggle,\n setColumnsToggle,\n resetColumnsToggle,\n } as const;\n }\n\n return {\n columnsToggle: alignedColumnsToggle,\n setColumnsToggle,\n resetColumnsToggle,\n } as const;\n}\n","import { rem } from '@mantine/core';\nimport { useCallback, useEffect, useRef } from 'react';\nimport type { DataTableScrollProps } from '../types/DataTableScrollProps';\nimport { useIsomorphicLayoutEffect } from './useIsomorphicLayoutEffect';\nimport { useStableValue } from './useStableValue';\n\nconst VAR_HEADER_HEIGHT = '--mantine-datatable-header-height';\nconst VAR_FOOTER_HEIGHT = '--mantine-datatable-footer-height';\nconst VAR_SELECTION_COLUMN_WIDTH = '--mantine-datatable-selection-column-width';\nconst VAR_LAST_ROW_BORDER_BOTTOM = '--mantine-datatable-last-row-border-bottom';\n\ninterface UseDataTableInjectCssVariablesOpts {\n scrollCallbacks: DataTableScrollProps;\n withRowBorders: boolean | undefined;\n}\n\ntype OnScroll = NonNullable<DataTableScrollProps['onScroll']>;\n\ntype Rect = {\n width: number;\n height: number;\n};\n\ntype Pos = 'top' | 'bottom' | 'left' | 'right';\n\nfunction setCssVar(root: HTMLDivElement | null, name: string, value: string) {\n root?.style.setProperty(name, value);\n}\n\nfunction getRect(entry: ResizeObserverEntry): Rect {\n const boxSize = entry.borderBoxSize?.[0] || entry.contentBoxSize?.[0];\n if (boxSize) {\n return {\n width: boxSize.inlineSize,\n height: boxSize.blockSize,\n };\n } else {\n return { width: entry.contentRect.width, height: entry.contentRect.height };\n }\n}\n\nfunction observe(elem: HTMLElement | null, onChange: (rect: Rect) => unknown, onCancel: () => unknown) {\n if (elem) {\n const observer = new ResizeObserver((entries) => {\n const entry = entries[0];\n if (entry) {\n onChange(getRect(entry));\n }\n });\n observer.observe(elem);\n return () => {\n observer.disconnect();\n onCancel();\n };\n }\n}\n\nexport function useDataTableInjectCssVariables({\n scrollCallbacks,\n withRowBorders,\n}: UseDataTableInjectCssVariablesOpts) {\n const refs = {\n root: useRef<HTMLDivElement>(null),\n table: useRef<HTMLTableElement>(null),\n scrollViewport: useRef<HTMLElement>(null),\n header: useRef<HTMLTableSectionElement>(null),\n footer: useRef<HTMLTableSectionElement>(null),\n selectionColumnHeader: useRef<HTMLTableCellElement>(null),\n };\n const { root, table, scrollViewport, header, footer, selectionColumnHeader } = refs;\n\n const stableDependencies = useStableValue({ withRowBorders });\n const stableScrollCallbacks = useStableValue(scrollCallbacks);\n const processScrollingRef = useRef<() => void>(() => void 0);\n const processLastRowBottomBorderRef = useRef<() => void>(() => void 0);\n // biome-ignore lint/correctness/useExhaustiveDependencies: stable refs only\n const onScroll = useCallback<OnScroll>((ev) => {\n stableScrollCallbacks.current.onScroll?.(ev);\n processScrollingRef.current();\n }, []);\n\n // biome-ignore lint/correctness/useExhaustiveDependencies: refs are stable\n useEffect(() => {\n return observe(\n header.current,\n (rect) => {\n setCssVar(root.current, VAR_HEADER_HEIGHT, `${rect.height}px`);\n },\n () => setCssVar(root.current, VAR_HEADER_HEIGHT, '0')\n );\n }, [header.current]);\n\n // biome-ignore lint/correctness/useExhaustiveDependencies: refs are stable\n useEffect(() => {\n return observe(\n footer.current,\n (rect) => {\n setCssVar(root.current, VAR_FOOTER_HEIGHT, `${rect.height}px`);\n },\n () => setCssVar(root.current, VAR_FOOTER_HEIGHT, '0')\n );\n }, [footer.current]);\n\n // biome-ignore lint/correctness/useExhaustiveDependencies: refs are stable\n useEffect(() => {\n return observe(\n selectionColumnHeader.current,\n (rect) => {\n setCssVar(root.current, VAR_SELECTION_COLUMN_WIDTH, `${rect.width}px`);\n },\n () => setCssVar(root.current, VAR_SELECTION_COLUMN_WIDTH, '0')\n );\n }, [selectionColumnHeader.current]);\n\n useIsomorphicLayoutEffect(() => {\n if (typeof window === 'undefined') {\n return;\n }\n const scrollPosition: Record<Pos, boolean> = {\n top: true,\n bottom: true,\n left: true,\n right: true,\n };\n let tableRect: Rect = { width: 0, height: 0 };\n let scrollRect: Rect = { width: 0, height: 0 };\n\n function setScrolledTo(pos: Pos, value: boolean) {\n const old = scrollPosition[pos];\n scrollPosition[pos] = value;\n setCssVar(root.current, `--mantine-datatable-${pos}-shadow-opacity`, value ? '0' : '1');\n return old;\n }\n\n function processFooterPosition() {\n const diff = tableRect.height - scrollRect.height;\n const relative = diff < 0;\n setCssVar(root.current, '--mantine-datatable-footer-position', relative ? 'relative' : 'sticky');\n setCssVar(root.current, '--mantine-datatable-footer-bottom', relative ? `${diff}px` : '0');\n }\n\n function processLastRowBottomBorder() {\n if (stableDependencies.current.withRowBorders && tableRect.height < scrollRect.height) {\n setCssVar(\n root.current,\n VAR_LAST_ROW_BORDER_BOTTOM,\n `${rem('1px')} solid var(--mantine-datatable-border-color)`\n );\n } else {\n setCssVar(root.current, VAR_LAST_ROW_BORDER_BOTTOM, 'unset');\n }\n }\n processLastRowBottomBorderRef.current = processLastRowBottomBorder;\n\n function processScrolling() {\n const callbacks = stableScrollCallbacks.current;\n const viewport = scrollViewport.current;\n const scrollTop = viewport?.scrollTop ?? 0;\n const scrollLeft = viewport?.scrollLeft ?? 0;\n\n const newScrolledToTop = scrollTop === 0;\n const newScrolledToBottom = tableRect.height - scrollTop - scrollRect.height < 1;\n const scrolledToTop = setScrolledTo('top', newScrolledToTop);\n const scrolledToBottom = setScrolledTo('bottom', newScrolledToBottom);\n if (newScrolledToTop && newScrolledToTop !== scrolledToTop) callbacks.onScrollToTop?.();\n if (newScrolledToBottom && newScrolledToBottom !== scrolledToBottom) callbacks.onScrollToBottom?.();\n\n // In RTL mode, scrollLeft behavior varies by browser:\n // - Chrome/Edge: starts at 0, goes negative when scrolling left (towards visual left)\n // - Firefox: starts at 0, goes negative when scrolling left\n // - Safari: starts at 0, goes negative when scrolling left\n // The key insight: in RTL, scrollLeft=0 means we're at the RIGHT edge (visual start)\n // and negative/max values mean we're at the LEFT edge (visual end)\n const isRtl = viewport ? getComputedStyle(viewport).direction === 'rtl' : false;\n const maxScrollLeft = (viewport?.scrollWidth ?? 0) - scrollRect.width;\n\n let newScrolledToLeft: boolean;\n let newScrolledToRight: boolean;\n\n if (isRtl) {\n // In RTL with modern browsers, scrollLeft is 0 at right edge, negative when scrolling left\n const absScrollLeft = Math.abs(scrollLeft);\n // At right edge (RTL start): absScrollLeft ≈ 0, so scrolledToRight = true (no right shadow)\n // At left edge (RTL end): absScrollLeft ≈ maxScrollLeft, so scrolledToLeft = true (no left shadow)\n newScrolledToRight = absScrollLeft < 1;\n newScrolledToLeft = maxScrollLeft - absScrollLeft < 1;\n } else {\n newScrolledToLeft = scrollLeft < 1;\n newScrolledToRight = tableRect.width - scrollLeft - scrollRect.width < 1;\n }\n\n const scrolledToLeft = setScrolledTo('left', newScrolledToLeft);\n const scrolledToRight = setScrolledTo('right', newScrolledToRight);\n if (newScrolledToLeft && newScrolledToLeft !== scrolledToLeft) callbacks.onScrollToLeft?.();\n if (newScrolledToRight && newScrolledToRight !== scrolledToRight) callbacks.onScrollToRight?.();\n }\n processScrollingRef.current = processScrolling;\n const observer = new ResizeObserver((entries) => {\n for (const entry of entries) {\n switch (entry.target.tagName) {\n case 'TABLE': {\n tableRect = getRect(entry);\n break;\n }\n case 'DIV': {\n scrollRect = getRect(entry);\n break;\n }\n }\n }\n processScrolling();\n processFooterPosition();\n processLastRowBottomBorder();\n });\n\n observer.observe(table.current!);\n observer.observe(scrollViewport.current!);\n\n return () => {\n observer.disconnect();\n };\n }, []);\n\n useIsomorphicLayoutEffect(() => {\n processLastRowBottomBorderRef.current();\n }, [withRowBorders]);\n\n return {\n refs,\n onScroll,\n };\n}\n","import { useEffect, useLayoutEffect } from 'react';\n\nexport const useIsomorphicLayoutEffect = typeof window !== 'undefined' ? useLayoutEffect : useEffect;\n","import { useRef } from 'react';\n\nexport interface ReadonlyRef<T> {\n readonly current: T;\n}\n\nexport function useStableValue<T>(value: T): ReadonlyRef<T> {\n const ref = useRef<T>(value);\n ref.current = value;\n return ref;\n}\n","import { type RefObject, useCallback, useEffect, useState } from 'react';\nimport type { DataTableColumn } from '../types';\nimport { useIsomorphicLayoutEffect } from './useIsomorphicLayoutEffect';\n\nexport type PinnedColumnInfo = {\n position: 'left' | 'right';\n logicalSide: 'left' | 'right';\n offset: number;\n isBoundary: boolean;\n};\n\nexport function useDataTablePinnedColumns<T>({\n columns,\n theadRef,\n tbodyRef,\n selectionColumnHeaderRef,\n selectionVisible,\n pinFirstColumn,\n pinLastColumn,\n}: {\n columns: DataTableColumn<T>[];\n theadRef: RefObject<HTMLTableSectionElement | null>;\n tbodyRef: RefObject<HTMLTableSectionElement | null>;\n selectionColumnHeaderRef: RefObject<HTMLTableCellElement | null>;\n selectionVisible: boolean;\n pinFirstColumn?: boolean;\n pinLastColumn?: boolean;\n}): {\n pinnedMap: Map<string, PinnedColumnInfo>;\n hasLeftPinned: boolean;\n hasRightPinned: boolean;\n} {\n const [pinnedMap, setPinnedMap] = useState<Map<string, PinnedColumnInfo>>(new Map());\n\n // Skip all measurement work when no pinning is configured. Otherwise every\n // render fires a layout-forcing recalculate and tears down/recreates the\n // ResizeObserver — needless thrash that interferes with consumers observing\n // the same DOM (e.g. AutoAnimate on the same tbody). The flag is recomputed\n // inside each hook closure so we don't change the shape of the deps arrays.\n const recalculate = useCallback(() => {\n if (!pinFirstColumn && !pinLastColumn && !columns.some((c) => c.pinned)) return;\n const measurementSection = theadRef.current ?? tbodyRef.current;\n if (!measurementSection) return;\n\n const isTheadSource = !!theadRef.current;\n const measurementRow = isTheadSource\n ? measurementSection.querySelector<HTMLTableRowElement>('tr:last-of-type')\n : measurementSection.querySelector<HTMLTableRowElement>('tr:first-of-type');\n if (!measurementRow) return;\n\n const isRtl = getComputedStyle(measurementSection).direction === 'rtl';\n\n const widths = new Map<string, number>();\n\n if (isTheadSource) {\n measurementRow.querySelectorAll<HTMLElement>('th[data-accessor]').forEach((th) => {\n const accessor = th.dataset.accessor;\n if (accessor) {\n const w = th.getBoundingClientRect().width;\n if (w > 0) widths.set(accessor, w);\n }\n });\n } else {\n const visibleCols = columns.filter((c) => !c.hidden);\n const tds = measurementRow.querySelectorAll<HTMLElement>(\n 'td:not(.mantine-datatable-row-selector-cell):not(.mantine-datatable-row-expansion-cell)'\n );\n tds.forEach((td, i) => {\n if (visibleCols[i]) {\n const w = td.getBoundingClientRect().width;\n if (w > 0) widths.set(String(visibleCols[i].accessor), w);\n }\n });\n }\n\n let selectionWidth = 0;\n if (selectionVisible) {\n const selCell =\n selectionColumnHeaderRef.current ??\n measurementSection.querySelector<HTMLElement>(\n isTheadSource ? '.mantine-datatable-header-selector-cell' : '.mantine-datatable-row-selector-cell'\n );\n if (selCell) selectionWidth = selCell.getBoundingClientRect().width;\n }\n\n const renderedAccessors = columns\n .filter((c) => !c.hidden && widths.has(String(c.accessor)))\n .map((c) => String(c.accessor));\n\n const resolvedPinned = new Map<string, 'left' | 'right'>();\n for (const col of columns) {\n const acc = String(col.accessor);\n if (!renderedAccessors.includes(acc)) continue;\n\n if (col.pinned) {\n resolvedPinned.set(acc, col.pinned);\n } else if (pinFirstColumn && acc === renderedAccessors[0] && !resolvedPinned.has(acc)) {\n resolvedPinned.set(acc, 'left');\n } else if (pinLastColumn && acc === renderedAccessors[renderedAccessors.length - 1] && !resolvedPinned.has(acc)) {\n resolvedPinned.set(acc, 'right');\n }\n }\n\n const leftPinned = renderedAccessors.filter((acc) => resolvedPinned.get(acc) === 'left');\n const rightPinned = renderedAccessors.filter((acc) => resolvedPinned.get(acc) === 'right');\n\n const newMap = new Map<string, PinnedColumnInfo>();\n\n let leftOffset = selectionWidth;\n leftPinned.forEach((acc, i) => {\n newMap.set(acc, {\n position: isRtl ? 'right' : 'left',\n logicalSide: 'left',\n offset: leftOffset,\n isBoundary: i === leftPinned.length - 1,\n });\n leftOffset += widths.get(acc) || 0;\n });\n\n let rightOffset = -0.4; // Webkit subpixel gap fix (see old CSS: right: rem(-0.4px))\n const rightReversed = [...rightPinned].reverse();\n rightReversed.forEach((acc, i) => {\n newMap.set(acc, {\n position: isRtl ? 'left' : 'right',\n logicalSide: 'right',\n offset: rightOffset,\n isBoundary: i === rightReversed.length - 1,\n });\n rightOffset += widths.get(acc) || 0;\n });\n\n setPinnedMap((prev) => {\n if (prev.size !== newMap.size) return newMap;\n for (const [k, v] of newMap) {\n const pv = prev.get(k);\n if (\n !pv ||\n pv.position !== v.position ||\n pv.logicalSide !== v.logicalSide ||\n pv.offset !== v.offset ||\n pv.isBoundary !== v.isBoundary\n ) {\n return newMap;\n }\n }\n return prev;\n });\n }, [columns, selectionVisible, theadRef, tbodyRef, selectionColumnHeaderRef, pinFirstColumn, pinLastColumn]);\n\n // biome-ignore lint/correctness/useExhaustiveDependencies: `pinFirstColumn`, `pinLastColumn` and `columns` are captured transitively via `recalculate` — keep the deps array shape (3 items) stable so HMR can't trip \"deps array changed size\".\n useEffect(() => {\n if (!pinFirstColumn && !pinLastColumn && !columns.some((c) => c.pinned)) return;\n const section = theadRef.current ?? tbodyRef.current;\n if (!section) return;\n\n const isTheadSource = !!theadRef.current;\n const row = isTheadSource ? section.querySelector('tr:last-of-type') : section.querySelector('tr:first-of-type');\n if (!row) return;\n\n const observer = new ResizeObserver(recalculate);\n row.querySelectorAll(isTheadSource ? 'th' : 'td').forEach((cell) => {\n observer.observe(cell);\n });\n\n return () => observer.disconnect();\n }, [theadRef, tbodyRef, recalculate]);\n\n useIsomorphicLayoutEffect(recalculate, [recalculate]);\n\n const hasLeftPinned = [...pinnedMap.values()].some((info) => info.logicalSide === 'left');\n const hasRightPinned = [...pinnedMap.values()].some((info) => info.logicalSide === 'right');\n\n return { pinnedMap, hasLeftPinned, hasRightPinned };\n}\n","import { useEffect, useState } from 'react';\n\nexport function useLastSelectionChangeIndex(recordIds: unknown[] | undefined) {\n const [lastSelectionChangeIndex, setLastSelectionChangeIndex] = useState<number | null>(null);\n const recordIdsString = recordIds?.join(':') || '';\n // biome-ignore lint/correctness/useExhaustiveDependencies: reset when recordIds change\n useEffect(() => {\n setLastSelectionChangeIndex(null);\n }, [recordIdsString]);\n\n return { lastSelectionChangeIndex, setLastSelectionChangeIndex };\n}\n","// Modified from https://github.com/mantinedev/mantine/blob/8c12a76c56da51af34213f18dd67c8b72a0ddb44/src/mantine-hooks/src/use-media-query/use-media-query.ts\n\nimport { useEffect, useRef, useState } from 'react';\n\nexport interface UseMediaQueryOptions {\n getInitialValueInEffect: boolean;\n}\n\n/**\n * Older versions of Safari (shipped with Catalina and before) do not support addEventListener on matchMedia\n * https://stackoverflow.com/questions/56466261/matchmedia-addlistener-marked-as-deprecated-addeventlistener-equivalent\n * */\nfunction attachMediaListeners(queries: MediaQueryList[], callback: (matches: boolean[]) => void) {\n const callbackWrapper = () => {\n callback(queries.map((query) => query.matches));\n };\n const subscriptions = queries.map((query) => {\n try {\n query.addEventListener('change', callbackWrapper);\n return () => query.removeEventListener('change', callbackWrapper);\n } catch {\n query.addListener(callbackWrapper);\n return () => query.removeListener(callbackWrapper);\n }\n });\n return () => {\n subscriptions.forEach((unsubscribe) => {\n unsubscribe();\n });\n };\n}\n\nfunction getInitialValue(queries: string[], initialValues?: boolean[]) {\n if (initialValues) {\n return initialValues;\n }\n\n if (typeof window !== 'undefined' && 'matchMedia' in window) {\n return queries.map((query) => window.matchMedia(query).matches);\n }\n\n return queries.map(() => false);\n}\n\nexport function useMediaQueries(\n queries: string[],\n initialValues?: boolean[],\n { getInitialValueInEffect }: UseMediaQueryOptions = {\n getInitialValueInEffect: true,\n }\n) {\n const [matches, setMatches] = useState(\n getInitialValueInEffect ? initialValues : getInitialValue(queries, initialValues)\n );\n const queryRef = useRef<MediaQueryList[]>(null);\n\n useEffect(() => {\n if ('matchMedia' in window) {\n queryRef.current = queries.map((query) => window.matchMedia(query));\n setMatches(queryRef.current.map((queryResult) => queryResult.matches));\n return attachMediaListeners(queryRef.current, (event) => {\n setMatches(event);\n });\n }\n\n return undefined;\n }, [queries]);\n\n return matches;\n}\n","import { type MantineTheme, useMantineTheme } from '@mantine/core';\nimport { useMemo } from 'react';\nimport { useMediaQueries } from './useMediaQueries';\n\nexport function useMediaQueriesStringOrFunction(queries: (string | ((theme: MantineTheme) => string) | undefined)[]) {\n const theme = useMantineTheme();\n const values = useMemo(\n () => queries.map((query) => (typeof query === 'function' ? query(theme) : query) ?? ''),\n [queries, theme]\n );\n const defaults = useMemo(() => queries.map(() => true), [queries]);\n return useMediaQueries(values, defaults);\n}\n","import { type MantineTheme, useMantineTheme } from '@mantine/core';\nimport { useMediaQuery } from '@mantine/hooks';\n\nexport function useMediaQueryStringOrFunction(mediaQuery: string | ((theme: MantineTheme) => string) | undefined) {\n const theme = useMantineTheme();\n const mediaQueryValue = typeof mediaQuery === 'function' ? mediaQuery(theme) : mediaQuery;\n return useMediaQuery(mediaQueryValue || '', true);\n}\n","import { useState } from 'react';\nimport type { DataTableRowExpansionProps } from '../types/DataTableRowExpansionProps';\nimport { getRecordId } from '../utils';\n\nexport function useRowExpansion<T>({\n rowExpansion,\n records,\n idAccessor,\n}: {\n rowExpansion?: DataTableRowExpansionProps<T>;\n records: T[] | undefined;\n idAccessor: (keyof T | (string & NonNullable<unknown>)) | ((record: T) => React.Key);\n}) {\n let initiallyExpandedRecordIds: unknown[] = [];\n if (rowExpansion && records) {\n const { trigger, allowMultiple, initiallyExpanded } = rowExpansion;\n if (records && trigger === 'always') {\n initiallyExpandedRecordIds = records.map((r) => getRecordId(r, idAccessor));\n } else if (initiallyExpanded) {\n initiallyExpandedRecordIds = records\n .filter((record, index) => initiallyExpanded({ record, index }))\n .map((r) => getRecordId(r, idAccessor));\n if (!allowMultiple) {\n initiallyExpandedRecordIds = [initiallyExpandedRecordIds[0]];\n }\n }\n }\n\n let expandedRecordIds: unknown[];\n let setExpandedRecordIds: ((expandedRecordIds: unknown[]) => void) | undefined;\n const expandedRecordIdsState = useState<unknown[]>(initiallyExpandedRecordIds);\n\n if (rowExpansion) {\n const { expandable, trigger, allowMultiple, collapseProps, content } = rowExpansion;\n if (rowExpansion.expanded) {\n ({ recordIds: expandedRecordIds, onRecordIdsChange: setExpandedRecordIds } = rowExpansion.expanded);\n } else {\n [expandedRecordIds, setExpandedRecordIds] = expandedRecordIdsState;\n }\n\n const collapseRow = (record: T) =>\n setExpandedRecordIds?.(expandedRecordIds.filter((id) => id !== getRecordId(record, idAccessor)));\n\n return {\n expandOnClick: trigger !== 'always' && trigger !== 'never',\n isRowExpanded: (record: T) =>\n trigger === 'always' ? true : expandedRecordIds.includes(getRecordId(record, idAccessor)),\n isExpandable: ({ record, index }: { record: T; index: number }) => {\n if (!expandable) {\n return true;\n }\n return expandable({ record, index });\n },\n expandRow: (record: T) => {\n const recordId = getRecordId(record, idAccessor);\n setExpandedRecordIds?.(allowMultiple ? [...expandedRecordIds, recordId] : [recordId]);\n },\n collapseRow,\n collapseProps,\n content:\n ({ record, index }: { record: T; index: number }) =>\n () =>\n content({ record, index, collapse: () => collapseRow(record) }),\n };\n }\n}\n","import { useTimeout } from '@mantine/hooks';\nimport { useEffect, useState } from 'react';\n\nexport function useRowExpansionStatus(open: boolean, transitionDuration?: number) {\n const [expanded, setExpanded] = useState(open);\n const [visible, setVisible] = useState(open);\n\n const expand = useTimeout(() => setExpanded(true), 0);\n const hide = useTimeout(() => setVisible(false), transitionDuration || 200);\n\n useEffect(() => {\n if (open) {\n hide.clear();\n setVisible(true);\n expand.start();\n } else {\n expand.clear();\n setExpanded(false);\n hide.start();\n }\n }, [expand, hide, open]);\n\n return { expanded, visible };\n}\n","export const NOWRAP = 'mantine-datatable-nowrap';\nexport const ELLIPSIS = 'mantine-datatable-ellipsis';\nexport const POINTER_CURSOR = 'mantine-datatable-pointer-cursor';\nexport const CONTEXT_MENU_CURSOR = 'mantine-datatable-context-menu-cursor';\nexport const TEXT_SELECTION_DISABLED = 'mantine-datatable-text-selection-disabled';\nexport const TEXT_ALIGN_LEFT = 'mantine-datatable-text-align-left';\nexport const TEXT_ALIGN_CENTER = 'mantine-datatable-text-align-center';\nexport const TEXT_ALIGN_RIGHT = 'mantine-datatable-text-align-right';\n","import { TableTh } from '@mantine/core';\n\ntype DataTableFooterSelectorPlaceholderCellProps = {\n shadowVisible: boolean;\n};\n\nexport function DataTableFooterSelectorPlaceholderCell({ shadowVisible }: DataTableFooterSelectorPlaceholderCellProps) {\n return (\n <TableTh\n className=\"mantine-datatable-footer-selector-placeholder-cell\"\n data-shadow-visible={shadowVisible || undefined}\n />\n );\n}\n","import {\n Checkbox,\n type CheckboxProps,\n Group,\n type MantineStyleProp,\n Popover,\n PopoverDropdown,\n PopoverTarget,\n Stack,\n TableThead,\n TableTr,\n} from '@mantine/core';\nimport clsx from 'clsx';\nimport { useState } from 'react';\nimport { DataTableColumnGroupHeaderCell } from './DataTableColumnGroupHeaderCell';\nimport { useDataTableColumnsContext } from './DataTableColumns.context';\nimport { DataTableHeaderCell } from './DataTableHeaderCell';\nimport { DataTableHeaderSelectorCell } from './DataTableHeaderSelectorCell';\nimport type { DataTableColumnToggle, PinnedColumnInfo } from './hooks';\nimport type { DataTableColumn, DataTableColumnGroup, DataTableSelectionTrigger, DataTableSortProps } from './types';\nimport { getGroupsAtDepth, getMaxGroupDepth, humanize } from './utils';\n\ntype DataTableHeaderProps<T> = {\n selectionColumnHeaderRef: React.ForwardedRef<HTMLTableCellElement>;\n className: string | undefined;\n style?: MantineStyleProp;\n sortStatus: DataTableSortProps<T>['sortStatus'];\n sortIcons: DataTableSortProps<T>['sortIcons'];\n onSortStatusChange: DataTableSortProps<T>['onSortStatusChange'];\n columns: DataTableColumn<T>[];\n defaultColumnProps: Omit<DataTableColumn<T>, 'accessor'> | undefined;\n groups: readonly DataTableColumnGroup<T>[] | undefined;\n pinnedMap: Map<string, PinnedColumnInfo>;\n selectionTrigger: DataTableSelectionTrigger;\n selectionVisible: boolean;\n selectionChecked: boolean;\n selectionIndeterminate: boolean;\n onSelectionChange: (() => void) | undefined;\n selectionCheckboxProps: CheckboxProps;\n selectorCellShadowVisible: boolean;\n selectionColumnClassName: string | undefined;\n selectionColumnStyle: MantineStyleProp;\n withColumnBorders?: boolean;\n ref: React.Ref<HTMLTableSectionElement>;\n};\n\nfunction getGroupPinnedInfo<T>(\n group: DataTableColumnGroup<T>,\n pinnedMap: Map<string, PinnedColumnInfo>\n): PinnedColumnInfo | undefined {\n const leafColumns = group.columns ?? [];\n const leafAccessors = leafColumns.filter((c) => !c.hidden).map((c) => String(c.accessor));\n\n const pinnedInfos = leafAccessors.map((acc) => pinnedMap.get(acc)).filter(Boolean) as PinnedColumnInfo[];\n\n if (pinnedInfos.length === 0 || pinnedInfos.length !== leafAccessors.length) return undefined;\n\n const logicalSides = new Set(pinnedInfos.map((p) => p.logicalSide));\n if (logicalSides.size > 1) return undefined;\n\n const logicalSide = [...logicalSides][0];\n const targetAcc = logicalSide === 'left' ? leafAccessors[0] : leafAccessors[leafAccessors.length - 1];\n const info = pinnedMap.get(targetAcc);\n if (!info) return undefined;\n\n const boundaryAcc = logicalSide === 'left' ? leafAccessors[leafAccessors.length - 1] : leafAccessors[0];\n const boundaryInfo = pinnedMap.get(boundaryAcc);\n return { ...info, isBoundary: boundaryInfo?.isBoundary ?? false };\n}\n\nexport function DataTableHeader<T>({\n selectionColumnHeaderRef,\n className,\n style,\n sortStatus,\n sortIcons,\n onSortStatusChange,\n columns,\n defaultColumnProps,\n groups,\n pinnedMap,\n selectionTrigger,\n selectionVisible,\n selectionChecked,\n selectionIndeterminate,\n onSelectionChange,\n selectionCheckboxProps,\n selectorCellShadowVisible,\n selectionColumnClassName,\n selectionColumnStyle,\n withColumnBorders = false,\n ref,\n}: DataTableHeaderProps<T>) {\n const maxGroupDepth = groups ? getMaxGroupDepth(groups) : 0;\n const totalHeaderRows = maxGroupDepth > 0 ? maxGroupDepth + 1 : 1;\n\n const allRecordsSelectorCell = selectionVisible ? (\n <DataTableHeaderSelectorCell\n ref={selectionColumnHeaderRef}\n className={selectionColumnClassName}\n style={selectionColumnStyle}\n trigger={selectionTrigger}\n shadowVisible={selectorCellShadowVisible}\n checked={selectionChecked}\n indeterminate={selectionIndeterminate}\n checkboxProps={selectionCheckboxProps}\n onChange={onSelectionChange}\n rowSpan={groups ? totalHeaderRows : undefined}\n />\n ) : null;\n\n const { columnsToggle, setColumnsToggle } = useDataTableColumnsContext();\n const [columnsPopoverOpened, setColumnsPopoverOpened] = useState<boolean>(false);\n const someColumnsToggleable = columns.some((column) => column.toggleable);\n\n const columnToggleCheckboxLabels = someColumnsToggleable\n ? Object.fromEntries(columns.map(({ accessor, title }) => [accessor, title ?? humanize(String(accessor))]))\n : undefined;\n\n const content = (\n <TableThead\n className={clsx('mantine-datatable-header', className)}\n style={style}\n ref={ref}\n onContextMenu={\n someColumnsToggleable\n ? (e) => {\n e.preventDefault();\n setColumnsPopoverOpened((columnsPopoverOpened) => !columnsPopoverOpened);\n }\n : undefined\n }\n >\n {groups &&\n Array.from({ length: maxGroupDepth }, (_, depthIndex) => {\n const groupsAtDepth = getGroupsAtDepth(groups, depthIndex);\n\n return (\n <TableTr key={`group-depth-${depthIndex}`}>\n {depthIndex === 0 && allRecordsSelectorCell}\n {groupsAtDepth.map((group, index) => {\n return (\n <DataTableColumnGroupHeaderCell\n key={group.id}\n group={group}\n pinnedInfo={getGroupPinnedInfo(group, pinnedMap)}\n maxDepth={maxGroupDepth}\n currentDepth={depthIndex}\n previousGroups={groupsAtDepth.slice(0, index)}\n isLastGroup={index === groupsAtDepth.length - 1}\n withColumnBorders={withColumnBorders}\n totalTableColumns={columns.length}\n />\n );\n })}\n </TableTr>\n );\n })}\n\n <TableTr>\n {!groups && allRecordsSelectorCell}\n\n {columns.map(({ hidden, ...columnProps }, index) => {\n if (hidden) return null;\n\n const {\n accessor,\n visibleMediaQuery,\n textAlign,\n width,\n title,\n sortable,\n draggable,\n toggleable,\n pinnable,\n resizable,\n titleClassName,\n titleStyle,\n filter,\n filterPopoverProps,\n filterPopoverDisableClickOutside,\n filtering,\n sortKey,\n } = { ...defaultColumnProps, ...columnProps };\n\n return (\n <DataTableHeaderCell<T>\n key={accessor as React.Key}\n accessor={accessor}\n pinnedInfo={pinnedMap.get(String(accessor))}\n className={titleClassName}\n style={titleStyle}\n visibleMediaQuery={visibleMediaQuery}\n textAlign={textAlign}\n width={width}\n title={title}\n sortable={sortable}\n draggable={draggable}\n toggleable={toggleable}\n pinnable={pinnable}\n // we won't display the resize handle for the last column to avoid overflow render issues\n resizable={resizable && index < columns.length - 1}\n sortStatus={sortStatus}\n sortIcons={sortIcons}\n sortKey={sortKey}\n onSortStatusChange={onSortStatusChange}\n filter={filter}\n filterPopoverProps={filterPopoverProps}\n filterPopoverDisableClickOutside={filterPopoverDisableClickOutside}\n filtering={filtering}\n />\n );\n })}\n </TableTr>\n </TableThead>\n );\n\n return someColumnsToggleable ? (\n <Popover position=\"bottom\" withArrow shadow=\"md\" opened={columnsPopoverOpened} onChange={setColumnsPopoverOpened}>\n <PopoverTarget>{content}</PopoverTarget>\n <PopoverDropdown>\n <Stack>\n {columnsToggle\n .filter((column) => column.toggleable)\n .map((column: DataTableColumnToggle) => {\n return (\n <Group key={column.accessor}>\n <Checkbox\n classNames={{ label: 'mantine-datatable-header-column-toggle-checkbox-label' }}\n size=\"xs\"\n label={columnToggleCheckboxLabels![column.accessor]}\n checked={column.toggled}\n onChange={(e) => {\n setColumnsToggle(\n columnsToggle.map((c: DataTableColumnToggle) => {\n if (c.accessor === column.accessor) {\n return { ...c, toggled: e.currentTarget.checked };\n }\n return c;\n })\n );\n }}\n />\n </Group>\n );\n })}\n </Stack>\n </PopoverDropdown>\n </Popover>\n ) : (\n content\n );\n}\n","import { TableTh } from '@mantine/core';\nimport clsx from 'clsx';\nimport { useMemo } from 'react';\nimport type { PinnedColumnInfo } from './hooks';\nimport { useMediaQueriesStringOrFunction } from './hooks';\nimport type { DataTableColumnGroup } from './types';\nimport { TEXT_ALIGN_CENTER, TEXT_ALIGN_LEFT, TEXT_ALIGN_RIGHT } from './utilityClasses';\nimport { calculateColSpan, flattenColumns, humanize, needsRightBorder } from './utils';\n\ntype DataTableColumnGroupHeaderCellProps<T> = {\n group: DataTableColumnGroup<T>;\n pinnedInfo: PinnedColumnInfo | undefined;\n maxDepth: number;\n currentDepth: number;\n previousGroups: readonly DataTableColumnGroup<T>[];\n isLastGroup: boolean;\n withColumnBorders?: boolean;\n totalTableColumns: number;\n};\n\nexport function DataTableColumnGroupHeaderCell<T>({\n group: { id, columns, groups, title, textAlign, className, style },\n pinnedInfo,\n maxDepth,\n currentDepth,\n previousGroups,\n isLastGroup,\n withColumnBorders = false,\n totalTableColumns,\n}: DataTableColumnGroupHeaderCellProps<T>) {\n const allColumns = useMemo(() => {\n if (columns && columns.length > 0) {\n return columns;\n }\n if (groups && groups.length > 0) {\n return flattenColumns([{ id, columns, groups }]);\n }\n return [];\n }, [columns, groups, id]);\n\n const queries = useMemo(() => allColumns.map(({ visibleMediaQuery }) => visibleMediaQuery), [allColumns]);\n const visibles = useMediaQueriesStringOrFunction(queries);\n\n const colSpan = useMemo(() => {\n return calculateColSpan({ id, columns, groups }, visibles);\n }, [id, columns, groups, visibles]);\n\n const columnsBeforeGroup = useMemo(() => {\n return previousGroups.reduce((sum, g) => sum + calculateColSpan(g, visibles), 0);\n }, [previousGroups, visibles]);\n\n const hasSubGroups = groups && groups.length > 0;\n const rowSpan = hasSubGroups ? 1 : maxDepth - currentDepth;\n\n const hasMoreColumns = columnsBeforeGroup + colSpan < totalTableColumns;\n const needsBorder = needsRightBorder(isLastGroup, hasMoreColumns, withColumnBorders);\n\n return colSpan > 0 ? (\n <TableTh\n colSpan={colSpan}\n rowSpan={rowSpan > 1 ? rowSpan : undefined}\n data-pinned={pinnedInfo?.position}\n data-pinned-shadow={pinnedInfo?.isBoundary ? pinnedInfo.position : undefined}\n className={clsx(\n 'mantine-datatable-column-group-header-cell',\n {\n [TEXT_ALIGN_LEFT]: textAlign === 'left',\n [TEXT_ALIGN_CENTER]: textAlign === 'center',\n [TEXT_ALIGN_RIGHT]: textAlign === 'right',\n 'mantine-datatable-column-group-header-cell--needs-border': needsBorder,\n },\n className\n )}\n style={[\n style,\n pinnedInfo && {\n position: 'sticky',\n [pinnedInfo.position]: pinnedInfo.offset,\n overflow: 'visible',\n },\n ]}\n >\n {title ?? humanize(id)}\n </TableTh>\n ) : null;\n}\n","import { ActionIcon, Box, Center, Flex, Group, type MantineStyleProp, type MantineTheme, TableTh } from '@mantine/core';\nimport clsx from 'clsx';\nimport { useRef, useState } from 'react';\nimport { useDataTableColumnsContext } from './DataTableColumns.context';\nimport { DataTableHeaderCellFilter } from './DataTableHeaderCellFilter';\nimport { DataTablePinnableDropdown } from './DataTablePinnableDropdown';\nimport { DataTableResizableHeaderHandle } from './DataTableResizableHeaderHandle';\nimport type { PinnedColumnInfo } from './hooks';\nimport { useMediaQueryStringOrFunction } from './hooks';\nimport { IconArrowsVertical } from './icons/IconArrowsVertical';\nimport { IconArrowUp } from './icons/IconArrowUp';\nimport { IconGripVertical } from './icons/IconGripVertical';\nimport { IconX } from './icons/IconX';\nimport type { DataTableColumn, DataTableSortProps } from './types';\nimport { ELLIPSIS, NOWRAP, TEXT_ALIGN_CENTER, TEXT_ALIGN_LEFT, TEXT_ALIGN_RIGHT } from './utilityClasses';\nimport { humanize } from './utils';\n\ntype DataTableHeaderCellProps<T> = {\n className: string | undefined;\n style: MantineStyleProp | undefined;\n pinnedInfo: PinnedColumnInfo | undefined;\n visibleMediaQuery: string | ((theme: MantineTheme) => string) | undefined;\n title: React.ReactNode | undefined;\n sortStatus: DataTableSortProps<T>['sortStatus'];\n sortIcons: DataTableSortProps<T>['sortIcons'];\n onSortStatusChange: DataTableSortProps<T>['onSortStatusChange'];\n} & Pick<\n DataTableColumn<T>,\n | 'accessor'\n | 'sortable'\n | 'draggable'\n | 'toggleable'\n | 'pinnable'\n | 'resizable'\n | 'textAlign'\n | 'width'\n | 'filter'\n | 'filterPopoverProps'\n | 'filterPopoverDisableClickOutside'\n | 'filtering'\n | 'sortKey'\n>;\n\nexport function DataTableHeaderCell<T>({\n className,\n style,\n pinnedInfo,\n accessor,\n visibleMediaQuery,\n title,\n sortable,\n draggable,\n toggleable,\n pinnable,\n resizable,\n sortIcons,\n textAlign,\n width,\n sortStatus,\n onSortStatusChange,\n filter,\n filterPopoverProps,\n filterPopoverDisableClickOutside,\n filtering,\n sortKey,\n}: DataTableHeaderCellProps<T>) {\n const {\n setSourceColumn,\n setTargetColumn,\n swapColumns,\n columnsToggle,\n setColumnsToggle,\n columnsPinning,\n setColumnsPinning,\n } = useDataTableColumnsContext();\n const [dragOver, setDragOver] = useState<boolean>(false);\n const columnRef = useRef<HTMLTableCellElement | null>(null);\n\n // Get current pinning state for this column\n const pinningState = columnsPinning?.find((p) => p.accessor === accessor);\n const currentPinned = pinningState?.pinned;\n\n if (!useMediaQueryStringOrFunction(visibleMediaQuery)) return null;\n const text = title ?? humanize(accessor as string);\n const tooltip = typeof text === 'string' ? text : undefined;\n\n const sortAction =\n sortable && onSortStatusChange\n ? (e?: React.BaseSyntheticEvent) => {\n if (e?.defaultPrevented) return;\n\n onSortStatusChange({\n sortKey,\n columnAccessor: accessor,\n direction:\n sortStatus?.columnAccessor === accessor\n ? sortStatus.direction === 'asc'\n ? 'desc'\n : 'asc'\n : (sortStatus?.direction ?? 'asc'),\n });\n }\n : undefined;\n\n const handleColumnDragStart = (e: React.DragEvent) => {\n e.stopPropagation();\n setSourceColumn(accessor as string);\n setDragOver(false);\n };\n\n const handleColumnDragOver = (e: React.DragEvent) => {\n e.preventDefault();\n setTargetColumn(accessor as string);\n setDragOver(true);\n };\n\n const handleColumnDrop = () => {\n setTargetColumn(accessor as string);\n setDragOver(false);\n swapColumns();\n };\n\n const handleColumnDragEnter = () => {\n setDragOver(true);\n };\n\n const handleColumnDragLeave = () => {\n setDragOver(false);\n };\n\n const handleColumnToggle = (e: React.MouseEvent<HTMLButtonElement>) => {\n e.stopPropagation();\n\n setColumnsToggle(\n columnsToggle.map((c) => {\n if (c.accessor === accessor) {\n return { ...c, toggled: false };\n }\n return c;\n })\n );\n };\n\n const handlePinChange = (pinned: 'left' | 'right' | undefined) => {\n setColumnsPinning((prev) =>\n prev.map((p) => {\n if (p.accessor === accessor) {\n return { ...p, pinned };\n }\n return p;\n })\n );\n };\n\n return (\n <TableTh\n data-accessor={accessor}\n data-pinned={pinnedInfo?.position}\n data-pinned-shadow={pinnedInfo?.isBoundary ? pinnedInfo.position : undefined}\n className={clsx(\n {\n 'mantine-datatable-header-cell-sortable': sortable,\n 'mantine-datatable-header-cell-toggleable': toggleable,\n 'mantine-datatable-header-cell-pinnable': pinnable,\n 'mantine-datatable-header-cell-resizable': resizable,\n },\n className\n )}\n style={[\n {\n width,\n ...(!resizable ? { minWidth: width, maxWidth: width } : {}),\n },\n style,\n pinnedInfo && {\n position: 'sticky',\n [pinnedInfo.position]: pinnedInfo.offset,\n overflow: 'visible',\n },\n ]}\n role={sortable ? 'button' : undefined}\n tabIndex={sortable ? 0 : undefined}\n onClick={sortAction}\n onKeyDown={(e) => e.key === 'Enter' && sortAction?.()}\n ref={columnRef}\n >\n <Group className=\"mantine-datatable-header-cell-sortable-group\" justify=\"space-between\" wrap=\"nowrap\">\n <Flex\n align=\"center\"\n w=\"100%\"\n className={clsx({\n 'mantine-datatable-header-cell-draggable': draggable,\n 'mantine-datatable-header-cell-drag-over': dragOver,\n })}\n draggable={draggable}\n onDragStart={draggable ? handleColumnDragStart : undefined}\n onDragEnter={draggable ? handleColumnDragEnter : undefined}\n onDragOver={draggable ? handleColumnDragOver : undefined}\n onDrop={draggable ? handleColumnDrop : undefined}\n onDragLeave={draggable ? handleColumnDragLeave : undefined}\n >\n {draggable ? (\n <Center role=\"img\" aria-label=\"Drag column\">\n <ActionIcon\n className=\"mantine-datatable-header-cell-draggable-action-icon\"\n variant=\"subtle\"\n size=\"xs\"\n onClick={(e: React.MouseEvent<HTMLButtonElement>) => {\n e.stopPropagation();\n }}\n >\n <IconGripVertical />\n </ActionIcon>\n </Center>\n ) : null}\n <Box\n className={clsx(\n 'mantine-datatable-header-cell-sortable-text',\n {\n [TEXT_ALIGN_LEFT]: textAlign === 'left',\n [TEXT_ALIGN_CENTER]: textAlign === 'center',\n [TEXT_ALIGN_RIGHT]: textAlign === 'right',\n },\n NOWRAP,\n ELLIPSIS\n )}\n title={tooltip}\n >\n {text}\n </Box>\n </Flex>\n {pinnable ? <DataTablePinnableDropdown currentPinned={currentPinned} onPinChange={handlePinChange} /> : null}\n {toggleable ? (\n <Center className=\"mantine-datatable-header-cell-toggleable-icon\" role=\"img\" aria-label=\"Toggle column\">\n <ActionIcon size=\"xs\" variant=\"light\" onClick={handleColumnToggle}>\n <IconX />\n </ActionIcon>\n </Center>\n ) : null}\n {sortable || sortStatus?.columnAccessor === accessor ? (\n sortStatus?.columnAccessor === accessor ? (\n <Center\n className={clsx('mantine-datatable-header-cell-sortable-icon', {\n 'mantine-datatable-header-cell-sortable-icon-reversed': sortStatus.direction === 'desc',\n })}\n role=\"img\"\n aria-label={`Sorted ${sortStatus.direction === 'desc' ? 'descending' : 'ascending'}`}\n >\n {sortIcons?.sorted || <IconArrowUp />}\n </Center>\n ) : (\n <Center className=\"mantine-datatable-header-cell-sortable-unsorted-icon\" role=\"img\" aria-label=\"Not sorted\">\n {sortIcons?.unsorted || <IconArrowsVertical />}\n </Center>\n )\n ) : null}\n {filter ? (\n <DataTableHeaderCellFilter\n filterPopoverProps={filterPopoverProps}\n isActive={!!filtering}\n filterPopoverDisableClickOutside={filterPopoverDisableClickOutside}\n >\n {filter}\n </DataTableHeaderCellFilter>\n ) : null}\n </Group>\n {resizable && accessor !== '__selection__' ? (\n <DataTableResizableHeaderHandle accessor={accessor as string} columnRef={columnRef} />\n ) : null}\n </TableTh>\n );\n}\n","import { ActionIcon, Popover, PopoverDropdown, PopoverTarget } from '@mantine/core';\nimport { useClickOutside, useDisclosure } from '@mantine/hooks';\nimport type { RefObject } from 'react';\nimport { IconFilter } from './icons/IconFilter';\nimport { IconFilterFilled } from './icons/IconFilterFilled';\nimport type { DataTableColumn } from './types';\n\ntype DataTableHeaderCellFilterProps<T> = {\n children: DataTableColumn<T>['filter'];\n filterPopoverProps: DataTableColumn<T>['filterPopoverProps'];\n filterPopoverDisableClickOutside?: DataTableColumn<T>['filterPopoverDisableClickOutside'];\n isActive: boolean;\n};\n\nexport function DataTableHeaderCellFilter<T>({\n children,\n isActive,\n filterPopoverProps,\n filterPopoverDisableClickOutside,\n}: DataTableHeaderCellFilterProps<T>) {\n const [isOpen, { close, toggle }] = useDisclosure(false);\n const Icon = isActive ? IconFilterFilled : IconFilter;\n let ref: RefObject<HTMLDivElement | null> | undefined = useClickOutside(close);\n if (filterPopoverDisableClickOutside) ref = undefined;\n\n return (\n // Keep the expanded props before the open/close, or they could be overridden by the client\n <Popover withArrow shadow=\"md\" trapFocus {...filterPopoverProps} opened={isOpen} onClose={close} onDismiss={close}>\n <PopoverTarget>\n <ActionIcon\n className=\"mantine-datatable-header-cell-filter-action-icon\"\n data-active={isActive || undefined}\n size=\"sm\"\n variant=\"default\"\n onClick={(e) => {\n e.preventDefault();\n toggle();\n }}\n onKeyDown={(e) => e.stopPropagation()}\n >\n <Icon />\n </ActionIcon>\n </PopoverTarget>\n <PopoverDropdown ref={ref} onClick={(e) => e.stopPropagation()} onKeyDown={(e) => e.stopPropagation()}>\n {typeof children === 'function' ? children({ close }) : children}\n </PopoverDropdown>\n </Popover>\n );\n}\n","export function IconFilter() {\n return (\n <svg\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 24 24\"\n strokeWidth=\"2\"\n stroke=\"currentColor\"\n fill=\"none\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path stroke=\"none\" d=\"M0 0h24v24H0z\" fill=\"none\" />\n <path d=\"M4 4h16v2.172a2 2 0 0 1 -.586 1.414l-4.414 4.414v7l-6 2v-8.5l-4.48 -4.928a2 2 0 0 1 -.52 -1.345v-2.227z\" />\n </svg>\n );\n}\n","export function IconFilterFilled() {\n return (\n <svg\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 24 24\"\n strokeWidth=\"2\"\n stroke=\"currentColor\"\n fill=\"none\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path stroke=\"none\" d=\"M0 0h24v24H0z\" fill=\"none\" />\n <path\n d=\"M20 3h-16a1 1 0 0 0 -1 1v2.227l.008 .223a3 3 0 0 0 .772 1.795l4.22 4.641v8.114a1 1 0 0 0 1.316 .949l6 -2l.108 -.043a1 1 0 0 0 .576 -.906v-6.586l4.121 -4.12a3 3 0 0 0 .879 -2.123v-2.171a1 1 0 0 0 -1 -1z\"\n strokeWidth=\"0\"\n fill=\"currentColor\"\n />\n </svg>\n );\n}\n","'use client';\n\nimport { ActionIcon, Center, Group, Popover } from '@mantine/core';\nimport { useCallback, useEffect, useRef, useState } from 'react';\nimport { useIsomorphicLayoutEffect } from './hooks/useIsomorphicLayoutEffect';\nimport { IconArrowLeft } from './icons/IconArrowLeft';\nimport { IconArrowRight } from './icons/IconArrowRight';\nimport { IconPin } from './icons/IconPin';\nimport { IconX } from './icons/IconX';\n\ntype DataTablePinnableDropdownProps = {\n currentPinned: 'left' | 'right' | undefined;\n onPinChange: (pinned: 'left' | 'right' | undefined) => void;\n};\n\nexport function DataTablePinnableDropdown({ currentPinned, onPinChange }: DataTablePinnableDropdownProps) {\n const [opened, setOpened] = useState(false);\n const containerRef = useRef<HTMLDivElement>(null);\n const [isRtl, setIsRtl] = useState(false);\n\n // Detect RTL from DOM - more reliable than useDirection() which may not see local DirectionProvider\n const detectDirection = useCallback(() => {\n if (containerRef.current) {\n const computedDir = getComputedStyle(containerRef.current).direction;\n setIsRtl(computedDir === 'rtl');\n }\n }, []);\n\n // Use layout effect for synchronous detection (no flash)\n useIsomorphicLayoutEffect(() => {\n detectDirection();\n }, [detectDirection]);\n\n // Re-detect on open (in case direction changed)\n useEffect(() => {\n if (opened) {\n detectDirection();\n }\n }, [opened, detectDirection]);\n\n // In RTL mode, visual arrows should map to opposite logical sides:\n // - Left arrow (visually pointing left) → physical left edge → 'right' in RTL\n // - Right arrow (visually pointing right) → physical right edge → 'left' in RTL\n const leftArrowPinValue: 'left' | 'right' = isRtl ? 'right' : 'left';\n const rightArrowPinValue: 'left' | 'right' = isRtl ? 'left' : 'right';\n\n // For highlighting: check if current pinned matches what this arrow would set\n const isLeftArrowActive = currentPinned === leftArrowPinValue;\n const isRightArrowActive = currentPinned === rightArrowPinValue;\n\n return (\n <Popover opened={opened} onChange={setOpened} position=\"bottom\" withArrow shadow=\"sm\">\n <Popover.Target>\n <Center\n ref={containerRef}\n className=\"mantine-datatable-header-cell-pinnable-icon\"\n role=\"button\"\n aria-label=\"Pin column\"\n onMouseEnter={() => setOpened(true)}\n onMouseLeave={() => setOpened(false)}\n >\n <ActionIcon size=\"xs\" variant=\"light\" onClick={(e) => e.stopPropagation()}>\n <IconPin />\n </ActionIcon>\n </Center>\n </Popover.Target>\n\n <Popover.Dropdown\n onClick={(e) => e.stopPropagation()}\n onMouseEnter={() => setOpened(true)}\n onMouseLeave={() => setOpened(false)}\n className=\"mantine-datatable-pinnable-dropdown\"\n >\n <Group gap={4}>\n <ActionIcon\n size=\"sm\"\n variant={isLeftArrowActive ? 'filled' : 'light'}\n onClick={() => onPinChange(isLeftArrowActive ? undefined : leftArrowPinValue)}\n aria-label=\"Pin left\"\n >\n <IconArrowLeft />\n </ActionIcon>\n <ActionIcon\n size=\"sm\"\n variant={isRightArrowActive ? 'filled' : 'light'}\n onClick={() => onPinChange(isRightArrowActive ? undefined : rightArrowPinValue)}\n aria-label=\"Pin right\"\n >\n <IconArrowRight />\n </ActionIcon>\n {currentPinned && (\n <ActionIcon size=\"sm\" variant=\"light\" color=\"red\" onClick={() => onPinChange(undefined)} aria-label=\"Unpin\">\n <IconX />\n </ActionIcon>\n )}\n </Group>\n </Popover.Dropdown>\n </Popover>\n );\n}\n","export function IconArrowLeft() {\n return (\n <svg\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 24 24\"\n strokeWidth=\"2\"\n stroke=\"currentColor\"\n fill=\"none\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path stroke=\"none\" d=\"M0 0h24v24H0z\" fill=\"none\" />\n <path d=\"M5 12l14 0\" />\n <path d=\"M5 12l6 6\" />\n <path d=\"M5 12l6 -6\" />\n </svg>\n );\n}\n","export function IconArrowRight() {\n return (\n <svg\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 24 24\"\n strokeWidth=\"2\"\n stroke=\"currentColor\"\n fill=\"none\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path stroke=\"none\" d=\"M0 0h24v24H0z\" fill=\"none\" />\n <path d=\"M5 12l14 0\" />\n <path d=\"M19 12l-6 6\" />\n <path d=\"M19 12l-6 -6\" />\n </svg>\n );\n}\n","export function IconPin() {\n return (\n <svg\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 24 24\"\n strokeWidth=\"2\"\n stroke=\"currentColor\"\n fill=\"none\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path stroke=\"none\" d=\"M0 0h24v24H0z\" fill=\"none\" />\n <path d=\"M9 4v6l-2 4v2h10v-2l-2-4v-6\" />\n <path d=\"M12 16v5\" />\n <path d=\"M8 4h8\" />\n </svg>\n );\n}\n","export function IconX() {\n return (\n <svg\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 24 24\"\n strokeWidth=\"2\"\n stroke=\"currentColor\"\n fill=\"none\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path stroke=\"none\" d=\"M0 0h24v24H0z\" fill=\"none\" />\n <path d=\"M18 6l-12 12\" />\n <path d=\"M6 6l12 12\" />\n </svg>\n );\n}\n","import { useDirection } from '@mantine/core';\nimport type { RefObject } from 'react';\nimport { useCallback, useRef, useState } from 'react';\nimport { useDataTableColumnsContext } from './DataTableColumns.context';\n\ntype DataTableResizableHeaderHandleProps = {\n accessor: string;\n columnRef: RefObject<HTMLTableCellElement | null>;\n};\n\nconst MIN_COLUMN_WIDTH = 50;\n\nexport const DataTableResizableHeaderHandle = (props: DataTableResizableHeaderHandleProps) => {\n const { accessor, columnRef } = props;\n const [isResizing, setIsResizing] = useState(false);\n const startXRef = useRef<number>(0);\n const originalWidthsRef = useRef<{ current: number; next: number }>({ current: 0, next: 0 });\n\n const { dir } = useDirection();\n const isRTL = dir === 'rtl';\n\n const { setMultipleColumnWidths, beginResize, endResize } = useDataTableColumnsContext();\n\n const handleMouseDown = useCallback(\n (event: React.MouseEvent<HTMLDivElement>) => {\n event.preventDefault();\n event.stopPropagation();\n\n if (!columnRef.current) return;\n\n const currentColumn = columnRef.current;\n\n // Find the next resizable data column (skip selection column)\n let nextColumn = currentColumn.nextElementSibling as HTMLTableCellElement | null;\n while (nextColumn) {\n const nextAccessor = nextColumn.getAttribute('data-accessor');\n if (nextAccessor && nextAccessor !== '__selection__') {\n break;\n }\n nextColumn = nextColumn.nextElementSibling as HTMLTableCellElement | null;\n }\n\n if (!nextColumn) {\n return;\n }\n\n const nextAccessor = nextColumn.getAttribute('data-accessor');\n if (!nextAccessor) {\n return;\n }\n\n // Capture pixel widths BEFORE switching the table to fixed layout —\n // these are the natural rendered widths the user is starting from.\n const startCurrentWidth = currentColumn.offsetWidth;\n const startNextWidth = nextColumn.offsetWidth;\n\n // Snapshot every header cell into pixel widths and switch to fixed layout\n beginResize();\n\n setIsResizing(true);\n startXRef.current = event.clientX;\n originalWidthsRef.current = {\n current: startCurrentWidth,\n next: startNextWidth,\n };\n\n const handleMouseMove = (moveEvent: MouseEvent) => {\n let deltaX = moveEvent.clientX - startXRef.current;\n if (isRTL) deltaX = -deltaX;\n\n const maxShrinkCurrent = originalWidthsRef.current.current - MIN_COLUMN_WIDTH;\n const maxShrinkNext = originalWidthsRef.current.next - MIN_COLUMN_WIDTH;\n\n const constrainedDelta = Math.max(-maxShrinkCurrent, Math.min(deltaX, maxShrinkNext));\n\n const finalCurrentWidth = originalWidthsRef.current.current + constrainedDelta;\n const finalNextWidth = originalWidthsRef.current.next - constrainedDelta;\n\n // State-driven update: pushes the new widths through `effectiveColumns`\n // and keeps React in sync with the DOM. With table-layout: fixed the\n // browser honors the new pixel widths precisely.\n setMultipleColumnWidths([\n { accessor, width: `${finalCurrentWidth}px` },\n { accessor: nextAccessor, width: `${finalNextWidth}px` },\n ]);\n };\n\n const handleMouseUp = () => {\n setIsResizing(false);\n\n document.body.style.cursor = 'initial';\n document.body.style.userSelect = 'initial';\n\n endResize();\n\n document.removeEventListener('mousemove', handleMouseMove);\n document.removeEventListener('mouseup', handleMouseUp);\n };\n\n document.body.style.cursor = 'col-resize';\n document.body.style.userSelect = 'none';\n\n document.addEventListener('mousemove', handleMouseMove);\n document.addEventListener('mouseup', handleMouseUp);\n },\n [accessor, columnRef, isRTL, setMultipleColumnWidths, beginResize, endResize]\n );\n\n const handleDoubleClick = useCallback(() => {\n if (!columnRef.current) return;\n\n const currentColumn = columnRef.current;\n const nextColumn = currentColumn.nextElementSibling as HTMLTableCellElement | null;\n\n const updates = [{ accessor, width: 'auto' }];\n\n if (nextColumn) {\n const nextAccessor = nextColumn.getAttribute('data-accessor');\n if (nextAccessor && nextAccessor !== '__selection__') {\n updates.push({ accessor: nextAccessor, width: 'auto' });\n }\n }\n\n setMultipleColumnWidths(updates);\n }, [accessor, columnRef, setMultipleColumnWidths]);\n\n return (\n <div\n className=\"mantine-datatable-header-resizable-handle\"\n style={{\n cursor: isResizing ? 'col-resize' : undefined,\n }}\n onMouseDown={handleMouseDown}\n onDoubleClick={handleDoubleClick}\n onClick={(event) => event.stopPropagation()} // Prevent column sorting\n title=\"Drag to resize column, double-click to reset\"\n />\n );\n};\n","export function IconArrowsVertical() {\n return (\n <svg\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 24 24\"\n strokeWidth=\"2\"\n stroke=\"currentColor\"\n fill=\"none\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path stroke=\"none\" d=\"M0 0h24v24H0z\" fill=\"none\" />\n <path d=\"M8 7l4 -4l4 4\" />\n <path d=\"M8 17l4 4l4 -4\" />\n <path d=\"M12 3l0 18\" />\n </svg>\n );\n}\n","export function IconArrowUp() {\n return (\n <svg\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 24 24\"\n strokeWidth=\"2\"\n stroke=\"currentColor\"\n fill=\"none\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path stroke=\"none\" d=\"M0 0h24v24H0z\" fill=\"none\" />\n <path d=\"M12 5l0 14\" />\n <path d=\"M16 9l-4 -4\" />\n <path d=\"M8 9l4 -4\" />\n </svg>\n );\n}\n","export function IconGripVertical() {\n return (\n <svg\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 24 24\"\n strokeWidth=\"2\"\n stroke=\"currentColor\"\n fill=\"none\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path stroke=\"none\" d=\"M0 0h24v24H0z\" fill=\"none\" />\n <path d=\"M9 5m-1 0a1 1 0 1 0 2 0a1 1 0 1 0 -2 0\" />\n <path d=\"M9 12m-1 0a1 1 0 1 0 2 0a1 1 0 1 0 -2 0\" />\n <path d=\"M9 19m-1 0a1 1 0 1 0 2 0a1 1 0 1 0 -2 0\" />\n <path d=\"M15 5m-1 0a1 1 0 1 0 2 0a1 1 0 1 0 -2 0\" />\n <path d=\"M15 12m-1 0a1 1 0 1 0 2 0a1 1 0 1 0 -2 0\" />\n <path d=\"M15 19m-1 0a1 1 0 1 0 2 0a1 1 0 1 0 -2 0\" />\n </svg>\n );\n}\n","import type { MantineStyleProp } from '@mantine/core';\nimport { Checkbox, type CheckboxProps, TableTh } from '@mantine/core';\nimport clsx from 'clsx';\nimport type { DataTableSelectionTrigger } from './types';\nimport { POINTER_CURSOR } from './utilityClasses';\n\ntype DataTableHeaderSelectorCellProps = {\n className: string | undefined;\n style: MantineStyleProp | undefined;\n trigger: DataTableSelectionTrigger;\n shadowVisible: boolean;\n checked: boolean;\n indeterminate: boolean;\n checkboxProps: CheckboxProps;\n onChange: (() => void) | undefined;\n rowSpan: number | undefined;\n ref: React.Ref<HTMLTableCellElement>;\n};\n\nexport function DataTableHeaderSelectorCell({\n className,\n style,\n trigger,\n shadowVisible,\n checked,\n indeterminate,\n checkboxProps,\n onChange,\n rowSpan,\n ref,\n}: DataTableHeaderSelectorCellProps) {\n const enabled = !checkboxProps.disabled;\n\n return (\n <TableTh\n ref={ref}\n className={clsx(\n 'mantine-datatable-header-selector-cell',\n { [POINTER_CURSOR]: trigger === 'cell' && enabled },\n className\n )}\n style={style}\n rowSpan={rowSpan}\n data-shadow-visible={shadowVisible || undefined}\n data-accessor=\"__selection__\"\n onClick={trigger === 'cell' && enabled ? onChange : undefined}\n >\n <Checkbox\n classNames={enabled ? { input: POINTER_CURSOR } : undefined}\n checked={checked}\n indeterminate={indeterminate}\n onChange={onChange}\n {...checkboxProps}\n disabled={!(onChange || checkboxProps.onChange) || checkboxProps.disabled}\n />\n </TableTh>\n );\n}\n","import { Center, Loader, type MantineColor, type MantineLoader, type MantineSize } from '@mantine/core';\nimport clsx from 'clsx';\n\ntype DataTableLoaderProps = {\n fetching: boolean | undefined;\n customContent: React.ReactNode | undefined;\n backgroundBlur: number | undefined;\n size: MantineSize | (string & NonNullable<unknown>) | number | undefined;\n type: MantineLoader | undefined;\n color: MantineColor | undefined;\n};\n\nexport function DataTableLoader({ fetching, customContent, backgroundBlur, size, type, color }: DataTableLoaderProps) {\n return (\n <Center\n className={clsx('mantine-datatable-loader', { 'mantine-datatable-loader-fetching': fetching })}\n style={[{ backdropFilter: backgroundBlur ? `blur(${backgroundBlur}px)` : undefined }]}\n >\n {fetching && (customContent || <Loader size={size} type={type} color={color} />)}\n </Center>\n );\n}\n","import { Box, type MantineSpacing, type MantineStyleProp, Pagination, rem, Text } from '@mantine/core';\nimport clsx from 'clsx';\nimport { getPaginationCssVariables } from './cssVariables';\nimport { DataTablePageSizeSelector } from './DataTablePageSizeSelector';\nimport { useMediaQueryStringOrFunction } from './hooks';\nimport type { DataTablePaginationProps } from './types';\nimport type { DataTablePaginationRenderContext } from './types/DataTablePaginationRenderContext';\nimport type { WithOptionalProperty, WithRequiredProperty } from './types/utils';\n\ntype DataTablePaginationComponentProps = WithOptionalProperty<\n WithRequiredProperty<\n DataTablePaginationProps,\n 'loadingText' | 'paginationSize' | 'recordsPerPageLabel' | 'paginationWrapBreakpoint' | 'getPaginationControlProps'\n >,\n 'onRecordsPerPageChange' | 'recordsPerPageOptions' | 'renderPagination'\n> & {\n className: string | undefined;\n style: MantineStyleProp | undefined;\n fetching: boolean | undefined;\n recordsLength: number | undefined;\n horizontalSpacing: MantineSpacing | undefined;\n noRecordsText: string;\n};\n\nexport function DataTablePagination({\n className,\n style,\n fetching,\n page,\n onPageChange,\n paginationWithEdges,\n paginationWithControls,\n paginationActiveTextColor,\n paginationActiveBackgroundColor,\n paginationSize,\n loadingText,\n noRecordsText,\n paginationText,\n totalRecords,\n recordsPerPage,\n onRecordsPerPageChange,\n recordsPerPageLabel,\n recordsPerPageOptions,\n recordsLength,\n horizontalSpacing,\n paginationWrapBreakpoint,\n getPaginationControlProps,\n getPaginationItemProps,\n renderPagination,\n}: DataTablePaginationComponentProps) {\n let paginationTextValue: React.ReactNode;\n if (totalRecords) {\n const from = (page - 1) * recordsPerPage + 1;\n const to = from + (recordsLength || 0) - 1;\n paginationTextValue = paginationText!({ from, to, totalRecords });\n } else {\n paginationTextValue = fetching ? loadingText : noRecordsText;\n }\n\n const totalPages = totalRecords && recordsPerPage ? Math.max(1, Math.ceil(totalRecords / recordsPerPage)) : 1;\n\n const from = totalRecords ? (page - 1) * (recordsPerPage ?? 0) + 1 : undefined;\n const to = totalRecords ? (from ?? 1) + (recordsLength ?? 0) - 1 : undefined;\n\n const isAbovePaginationWrapBreakpoint = useMediaQueryStringOrFunction(\n ({ breakpoints }) =>\n `(min-width: ${\n typeof paginationWrapBreakpoint === 'number'\n ? `${rem(paginationWrapBreakpoint)}rem`\n : breakpoints[paginationWrapBreakpoint] || paginationWrapBreakpoint\n })`\n );\n\n const isWrapped = !isAbovePaginationWrapBreakpoint;\n\n const Controls: DataTablePaginationRenderContext['Controls'] = {\n Text: (props) => (\n <Text component=\"div\" className=\"mantine-datatable-pagination-text\" size={paginationSize} {...props}>\n {paginationTextValue}\n </Text>\n ),\n PageSizeSelector: (props) =>\n recordsPerPageOptions ? (\n <DataTablePageSizeSelector\n activeTextColor={paginationActiveTextColor}\n activeBackgroundColor={paginationActiveBackgroundColor}\n size={paginationSize}\n label={recordsPerPageLabel}\n values={recordsPerPageOptions}\n value={recordsPerPage!}\n onChange={onRecordsPerPageChange!}\n {...props}\n />\n ) : null,\n Pagination: (props) => (\n <Pagination\n classNames={{\n root: clsx('mantine-datatable-pagination-pages', {\n 'mantine-datatable-pagination-pages-fetching': fetching || !recordsLength,\n }),\n control: 'mantine-datatable-pagination-pages-control',\n }}\n style={\n paginationActiveTextColor || paginationActiveBackgroundColor\n ? (theme) =>\n getPaginationCssVariables({\n theme,\n paginationActiveTextColor,\n paginationActiveBackgroundColor,\n })\n : undefined\n }\n withEdges={paginationWithEdges}\n withControls={paginationWithControls}\n value={page}\n onChange={onPageChange}\n size={paginationSize}\n total={totalPages}\n getControlProps={getPaginationControlProps}\n getItemProps={getPaginationItemProps}\n {...props}\n />\n ),\n };\n\n const ctx: DataTablePaginationRenderContext = {\n state: {\n paginationSize,\n page,\n totalPages,\n totalRecords,\n recordsPerPage,\n recordsLength,\n fetching,\n from,\n to,\n isWrapped,\n },\n actions: {\n setPage: (n) => onPageChange?.(n),\n setRecordsPerPage: onRecordsPerPageChange ? (n) => onRecordsPerPageChange(n) : undefined,\n },\n Controls,\n };\n\n return (\n <Box\n px={horizontalSpacing ?? 'xs'}\n py=\"xs\"\n className={clsx('mantine-datatable-pagination', className)}\n style={[{ flexDirection: isWrapped ? 'column' : 'row' }, style]}\n >\n {typeof renderPagination === 'function' ? (\n renderPagination(ctx)\n ) : (\n <>\n <Controls.Text />\n <Controls.PageSizeSelector />\n <Controls.Pagination />\n </>\n )}\n </Box>\n );\n}\n","import type { MantineColor } from '@mantine/core';\nimport { Button, Group, type MantineSize, Menu, MenuDropdown, MenuItem, MenuTarget, rem, Text } from '@mantine/core';\nimport clsx from 'clsx';\nimport { getPaginationCssVariables } from './cssVariables';\nimport { IconSelector } from './icons/IconSelector';\n\ntype DataTablePageSizeSelectorComponentProps = {\n size: MantineSize;\n label: string;\n values: number[];\n value: number;\n activeTextColor: MantineColor | { dark: MantineColor; light: MantineColor } | undefined;\n activeBackgroundColor: MantineColor | { dark: MantineColor; light: MantineColor } | undefined;\n onChange: (value: number) => void;\n};\n\nconst HEIGHT: Record<MantineSize, string> = { xs: rem(22), sm: rem(26), md: rem(32), lg: rem(38), xl: rem(44) };\n\nexport function DataTablePageSizeSelector({\n size,\n label,\n values,\n value,\n activeTextColor,\n activeBackgroundColor,\n onChange,\n}: DataTablePageSizeSelectorComponentProps) {\n return (\n <Group gap=\"xs\">\n <Text component=\"div\" size={size}>\n {label}\n </Text>\n <Menu withinPortal withArrow offset={2} classNames={{ arrow: 'mantine-datatable-page-size-selector-menu-arrow' }}>\n <MenuTarget>\n <Button\n size={size}\n variant=\"default\"\n classNames={{ section: 'mantine-datatable-page-size-selector-button-icon' }}\n rightSection={<IconSelector />}\n style={[\n { fontWeight: 'normal' },\n (theme) => ({\n height: HEIGHT[size],\n paddingLeft: theme.spacing[size],\n paddingRight: theme.spacing[size],\n }),\n ]}\n >\n {value}\n </Button>\n </MenuTarget>\n <MenuDropdown>\n {values.map((v) => {\n const isCurrent = v === value;\n return (\n <MenuItem\n key={v}\n className={clsx({ 'mantine-datatable-page-size-selector-active': isCurrent })}\n style={[\n { height: HEIGHT[size] },\n isCurrent && (activeTextColor || activeBackgroundColor)\n ? (theme) =>\n getPaginationCssVariables({\n theme,\n paginationActiveTextColor: activeTextColor,\n paginationActiveBackgroundColor: activeBackgroundColor,\n })\n : undefined,\n ]}\n disabled={isCurrent}\n onClick={() => onChange(v)}\n >\n <Text component=\"div\" size={size}>\n {v}\n </Text>\n </MenuItem>\n );\n })}\n </MenuDropdown>\n </Menu>\n </Group>\n );\n}\n","export function IconSelector() {\n return (\n <svg\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 24 24\"\n strokeWidth=\"2\"\n stroke=\"currentColor\"\n fill=\"none\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path stroke=\"none\" d=\"M0 0h24v24H0z\" fill=\"none\" />\n <path d=\"M8 9l4 -4l4 4\" />\n <path d=\"M16 15l-4 4l-4 -4\" />\n </svg>\n );\n}\n","import type { MantineTheme } from '@mantine/core';\nimport { type CheckboxProps, type MantineColor, type MantineStyleProp, TableTr } from '@mantine/core';\nimport clsx from 'clsx';\nimport { getRowCssVariables } from './cssVariables';\nimport { DataTableRowCell } from './DataTableRowCell';\nimport { DataTableRowExpansion } from './DataTableRowExpansion';\nimport { DataTableRowSelectorCell } from './DataTableRowSelectorCell';\nimport type { PinnedColumnInfo, useRowExpansion } from './hooks';\nimport type {\n DataTableCellClickHandler,\n DataTableColumn,\n DataTableDefaultColumnProps,\n DataTableProps,\n DataTableRowClickHandler,\n DataTableSelectionTrigger,\n} from './types';\nimport { CONTEXT_MENU_CURSOR, POINTER_CURSOR } from './utilityClasses';\n\ntype DataTableRowProps<T> = {\n record: T;\n index: number;\n columns: DataTableColumn<T>[];\n defaultColumnProps: DataTableDefaultColumnProps<T> | undefined;\n pinnedMap: Map<string, PinnedColumnInfo>;\n defaultColumnRender:\n | ((record: T, index: number, accessor: keyof T | (string & NonNullable<unknown>)) => React.ReactNode)\n | undefined;\n selectionTrigger: DataTableSelectionTrigger;\n selectionVisible: boolean;\n selectionChecked: boolean;\n onSelectionChange: React.MouseEventHandler | undefined;\n isRecordSelectable: ((record: T, index: number) => boolean) | undefined;\n selectionCheckboxProps: CheckboxProps | undefined;\n getSelectionCheckboxProps: (record: T, index: number) => CheckboxProps;\n onClick: DataTableRowClickHandler<T> | undefined;\n onDoubleClick: DataTableRowClickHandler<T> | undefined;\n onContextMenu: DataTableRowClickHandler<T> | undefined;\n onCellClick: DataTableCellClickHandler<T> | undefined;\n onCellDoubleClick: DataTableCellClickHandler<T> | undefined;\n onCellContextMenu: DataTableCellClickHandler<T> | undefined;\n expansion: ReturnType<typeof useRowExpansion<T>>;\n customAttributes?: (record: T, index: number) => Record<string, unknown>;\n color:\n | ((record: T, index: number) => MantineColor | undefined | { light: MantineColor; dark: MantineColor })\n | undefined;\n backgroundColor:\n | ((record: T, index: number) => MantineColor | undefined | { light: MantineColor; dark: MantineColor })\n | undefined;\n className?: string | ((record: T, index: number) => string | undefined);\n style?: (record: T, index: number) => MantineStyleProp | undefined;\n selectorCellShadowVisible: boolean;\n selectionColumnClassName: string | undefined;\n selectionColumnStyle: MantineStyleProp | undefined;\n idAccessor: string;\n} & Pick<DataTableProps<T>, 'rowFactory'>;\n\nexport function DataTableRow<T>({\n record,\n index,\n columns,\n defaultColumnProps,\n pinnedMap,\n defaultColumnRender,\n selectionTrigger,\n selectionVisible,\n selectionChecked,\n onSelectionChange,\n isRecordSelectable,\n selectionCheckboxProps,\n getSelectionCheckboxProps,\n onClick,\n onDoubleClick,\n onContextMenu,\n onCellClick,\n onCellDoubleClick,\n onCellContextMenu,\n expansion,\n customAttributes,\n color,\n backgroundColor,\n className,\n style,\n selectorCellShadowVisible,\n selectionColumnClassName,\n selectionColumnStyle,\n rowFactory,\n}: Readonly<DataTableRowProps<T>>) {\n const cols = (\n <>\n {selectionVisible && (\n <DataTableRowSelectorCell<T>\n className={selectionColumnClassName}\n style={selectionColumnStyle}\n record={record}\n index={index}\n trigger={selectionTrigger}\n withRightShadow={selectorCellShadowVisible}\n checked={selectionChecked}\n disabled={!onSelectionChange || (isRecordSelectable ? !isRecordSelectable(record, index) : false)}\n onChange={onSelectionChange}\n checkboxProps={selectionCheckboxProps}\n getCheckboxProps={getSelectionCheckboxProps}\n />\n )}\n\n {columns.map(({ hidden, hiddenContent, ...columnProps }, columnIndex) => {\n if (hidden || hiddenContent) return null;\n\n const {\n accessor,\n visibleMediaQuery,\n textAlign,\n noWrap,\n ellipsis,\n width,\n render,\n cellsClassName,\n cellsStyle,\n customCellAttributes,\n } = { ...defaultColumnProps, ...columnProps };\n\n return (\n <DataTableRowCell<T>\n key={accessor as React.Key}\n pinnedInfo={pinnedMap.get(String(accessor))}\n className={typeof cellsClassName === 'function' ? cellsClassName(record, index) : cellsClassName}\n style={cellsStyle?.(record, index)}\n visibleMediaQuery={visibleMediaQuery}\n record={record}\n index={index}\n onClick={\n onCellClick\n ? (event) => onCellClick({ event, record, index, column: columnProps, columnIndex })\n : undefined\n }\n onDoubleClick={\n onCellDoubleClick\n ? (event) => onCellDoubleClick({ event, record, index, column: columnProps, columnIndex })\n : undefined\n }\n onContextMenu={\n onCellContextMenu\n ? (event) => onCellContextMenu({ event, record, index, column: columnProps, columnIndex })\n : undefined\n }\n accessor={accessor}\n textAlign={textAlign}\n noWrap={noWrap}\n ellipsis={ellipsis}\n width={width}\n render={render}\n defaultRender={defaultColumnRender}\n customCellAttributes={customCellAttributes}\n />\n );\n })}\n </>\n );\n\n const expandedElement = expansion && (\n <DataTableRowExpansion\n colSpan={columns.filter(({ hidden }) => !hidden).length + (selectionVisible ? 1 : 0)}\n open={expansion.isRowExpanded(record)}\n content={expansion.content({ record, index })}\n collapseProps={expansion.collapseProps}\n />\n );\n\n const rowProps = getRowProps({\n record,\n index,\n selectionChecked,\n onClick,\n onDoubleClick,\n onContextMenu,\n expansion,\n customAttributes,\n color,\n backgroundColor,\n className,\n style,\n });\n\n if (rowFactory) {\n return rowFactory({\n record,\n index,\n rowProps,\n children: cols,\n expandedElement,\n });\n }\n\n return (\n <>\n <TableTr {...rowProps}>{cols}</TableTr>\n {expandedElement}\n </>\n );\n}\n\ntype GetRowPropsArgs<T> = Readonly<\n Pick<\n DataTableRowProps<T>,\n | 'record'\n | 'index'\n | 'selectionChecked'\n | 'onClick'\n | 'onDoubleClick'\n | 'onContextMenu'\n | 'expansion'\n | 'customAttributes'\n | 'color'\n | 'backgroundColor'\n | 'className'\n | 'style'\n >\n>;\n\nexport function getRowProps<T>({\n record,\n index,\n selectionChecked,\n onClick,\n onDoubleClick,\n onContextMenu,\n expansion,\n customAttributes,\n color,\n backgroundColor,\n className,\n style,\n}: GetRowPropsArgs<T>) {\n return {\n className: clsx(\n 'mantine-datatable-row',\n {\n [POINTER_CURSOR]:\n onClick || onDoubleClick || (expansion?.isExpandable({ record, index }) && expansion?.expandOnClick),\n },\n { [CONTEXT_MENU_CURSOR]: onContextMenu },\n typeof className === 'function' ? className(record, index) : className\n ),\n\n 'data-selected': selectionChecked || undefined,\n\n onClick: (e: React.MouseEvent<HTMLTableRowElement, MouseEvent>) => {\n if (expansion) {\n const { isExpandable, isRowExpanded, expandOnClick, expandRow, collapseRow } = expansion;\n if (isExpandable({ record, index }) && expandOnClick) {\n if (isRowExpanded(record)) {\n collapseRow(record);\n } else {\n expandRow(record);\n }\n }\n }\n onClick?.({ event: e, record, index });\n },\n onDoubleClick: onDoubleClick\n ? (e: React.MouseEvent<HTMLTableRowElement, MouseEvent>) => onDoubleClick({ event: e, record, index })\n : undefined,\n onContextMenu: onContextMenu\n ? (e: React.MouseEvent<HTMLTableRowElement, MouseEvent>) => onContextMenu({ event: e, record, index })\n : undefined,\n style: [\n color || backgroundColor\n ? (theme: MantineTheme) => {\n const colorValue = color?.(record, index);\n const backgroundColorValue = backgroundColor?.(record, index);\n return getRowCssVariables({ theme, color: colorValue, backgroundColor: backgroundColorValue });\n }\n : undefined,\n style?.(record, index),\n ],\n ...(customAttributes?.(record, index) ?? {}),\n };\n}\n","import { type MantineStyleProp, TableTd } from '@mantine/core';\nimport clsx from 'clsx';\nimport type { PinnedColumnInfo } from './hooks';\nimport { useMediaQueryStringOrFunction } from './hooks';\nimport type { DataTableColumn } from './types';\nimport {\n CONTEXT_MENU_CURSOR,\n ELLIPSIS,\n NOWRAP,\n POINTER_CURSOR,\n TEXT_ALIGN_CENTER,\n TEXT_ALIGN_LEFT,\n TEXT_ALIGN_RIGHT,\n} from './utilityClasses';\nimport { getValueAtPath } from './utils';\n\ntype DataTableRowCellProps<T> = {\n className: string | undefined;\n style: MantineStyleProp | undefined;\n pinnedInfo: PinnedColumnInfo | undefined;\n record: T;\n index: number;\n defaultRender:\n | ((record: T, index: number, accessor: keyof T | (string & NonNullable<unknown>)) => React.ReactNode)\n | undefined;\n onClick: React.MouseEventHandler<HTMLTableCellElement> | undefined;\n onDoubleClick: React.MouseEventHandler<HTMLTableCellElement> | undefined;\n onContextMenu: React.MouseEventHandler<HTMLTableCellElement> | undefined;\n} & Pick<\n DataTableColumn<T>,\n 'accessor' | 'visibleMediaQuery' | 'textAlign' | 'width' | 'noWrap' | 'ellipsis' | 'render' | 'customCellAttributes'\n>;\n\nexport function DataTableRowCell<T>({\n className,\n style,\n pinnedInfo,\n visibleMediaQuery,\n record,\n index,\n onClick,\n onDoubleClick,\n onContextMenu,\n noWrap,\n ellipsis,\n textAlign,\n width,\n accessor,\n render,\n defaultRender,\n customCellAttributes,\n}: DataTableRowCellProps<T>) {\n if (!useMediaQueryStringOrFunction(visibleMediaQuery)) return null;\n return (\n <TableTd\n data-pinned={pinnedInfo?.position}\n data-pinned-shadow={pinnedInfo?.isBoundary ? pinnedInfo.position : undefined}\n className={clsx(\n {\n [NOWRAP]: noWrap || ellipsis,\n [ELLIPSIS]: ellipsis,\n [POINTER_CURSOR]: onClick || onDoubleClick,\n [CONTEXT_MENU_CURSOR]: onContextMenu,\n [TEXT_ALIGN_LEFT]: textAlign === 'left',\n [TEXT_ALIGN_CENTER]: textAlign === 'center',\n [TEXT_ALIGN_RIGHT]: textAlign === 'right',\n },\n className\n )}\n style={[\n {\n width,\n minWidth: width,\n maxWidth: width,\n },\n style,\n pinnedInfo && {\n position: 'sticky',\n [pinnedInfo.position]: pinnedInfo.offset,\n overflow: 'visible',\n },\n ]}\n onClick={onClick}\n onDoubleClick={onDoubleClick}\n onContextMenu={onContextMenu}\n {...customCellAttributes?.(record, index)}\n >\n {render\n ? render(record, index)\n : defaultRender\n ? defaultRender(record, index, accessor)\n : (getValueAtPath(record, accessor) as React.ReactNode)}\n </TableTd>\n );\n}\n","import { Collapse, TableTd, TableTr } from '@mantine/core';\nimport { useRowExpansionStatus } from './hooks';\nimport type { DataTableRowExpansionCollapseProps } from './types';\n\ntype DataTableRowExpansionProps = {\n open: boolean;\n colSpan: number;\n content: () => React.ReactNode;\n collapseProps: DataTableRowExpansionCollapseProps | undefined;\n};\n\nexport function DataTableRowExpansion({ open, colSpan, content, collapseProps }: DataTableRowExpansionProps) {\n const { expanded, visible } = useRowExpansionStatus(open, collapseProps?.transitionDuration);\n\n return visible ? (\n <>\n {/* add an empty row to maintain striped rows consistency */}\n <TableTr />\n <TableTr>\n <TableTd className=\"mantine-datatable-row-expansion-cell\" colSpan={colSpan}>\n <Collapse expanded={expanded} {...collapseProps}>\n <div className=\"mantine-datatable-row-expansion-cell-content\">{content()}</div>\n </Collapse>\n </TableTd>\n </TableTr>\n </>\n ) : null;\n}\n","import type { MantineStyleProp } from '@mantine/core';\nimport { Checkbox, type CheckboxProps, TableTd } from '@mantine/core';\nimport clsx from 'clsx';\nimport type { DataTableSelectionTrigger } from './types';\nimport { POINTER_CURSOR } from './utilityClasses';\n\ntype DataTableRowSelectorCellProps<T> = {\n className: string | undefined;\n style: MantineStyleProp | undefined;\n record: T;\n index: number;\n trigger: DataTableSelectionTrigger;\n withRightShadow: boolean;\n checked: boolean;\n disabled: boolean;\n onChange: React.MouseEventHandler | undefined;\n checkboxProps: CheckboxProps | undefined;\n getCheckboxProps: (record: T, index: number) => CheckboxProps;\n};\n\nexport function DataTableRowSelectorCell<T>({\n className,\n style,\n record,\n index,\n trigger,\n onChange,\n withRightShadow,\n checkboxProps,\n getCheckboxProps,\n ...otherProps\n}: Readonly<DataTableRowSelectorCellProps<T>>) {\n const allCheckboxProps = { ...checkboxProps, ...getCheckboxProps(record, index) };\n const enabled = !otherProps.disabled && !allCheckboxProps.disabled;\n\n const handleClick: React.MouseEventHandler = (e) => {\n e.stopPropagation();\n if (trigger === 'cell' && enabled) {\n onChange?.(e);\n }\n };\n\n return (\n <TableTd\n className={clsx(\n 'mantine-datatable-row-selector-cell',\n { [POINTER_CURSOR]: trigger === 'cell' && enabled },\n className\n )}\n style={style}\n data-shadow-visible={withRightShadow || undefined}\n onClick={handleClick}\n >\n <Checkbox\n classNames={enabled ? { input: POINTER_CURSOR } : undefined}\n onChange={onChange as unknown as React.ChangeEventHandler}\n {...otherProps}\n {...allCheckboxProps}\n />\n </TableTd>\n );\n}\n","import { Box, ScrollArea, type ScrollAreaProps } from '@mantine/core';\nimport clsx from 'clsx';\n\ntype DataTableScrollAreaProps = React.PropsWithChildren<{\n leftShadowBehind: boolean;\n rightShadowBehind: boolean | undefined;\n onScrollPositionChange: ScrollAreaProps['onScrollPositionChange'];\n viewportRef: React.Ref<HTMLDivElement>;\n scrollAreaProps: Omit<ScrollAreaProps, 'classNames' | 'styles' | 'onScrollPositionChange'> | undefined;\n}>;\n\nexport function DataTableScrollArea({\n leftShadowBehind,\n rightShadowBehind,\n onScrollPositionChange,\n children,\n viewportRef,\n scrollAreaProps,\n}: DataTableScrollAreaProps) {\n return (\n <ScrollArea\n {...scrollAreaProps}\n viewportRef={viewportRef}\n classNames={{\n root: 'mantine-datatable-scroll-area',\n scrollbar: 'mantine-datatable-scroll-area-scrollbar',\n thumb: 'mantine-datatable-scroll-area-thumb',\n corner: 'mantine-datatable-scroll-area-corner',\n }}\n onScrollPositionChange={onScrollPositionChange}\n >\n {children}\n <Box className={clsx('mantine-datatable-scroll-area-shadow', 'mantine-datatable-scroll-area-top-shadow')} />\n <div\n className={clsx('mantine-datatable-scroll-area-shadow', 'mantine-datatable-scroll-area-left-shadow', {\n 'mantine-datatable-scroll-area-shadow-behind': leftShadowBehind,\n })}\n />\n <div\n className={clsx('mantine-datatable-scroll-area-shadow', 'mantine-datatable-scroll-area-right-shadow', {\n 'mantine-datatable-scroll-area-shadow-behind': rightShadowBehind,\n })}\n />\n <Box className={clsx('mantine-datatable-scroll-area-shadow', 'mantine-datatable-scroll-area-bottom-shadow')} />\n </ScrollArea>\n );\n}\n","import { TableTr } from '@mantine/core';\nimport { useMergedRef } from '@mantine/hooks';\nimport type { Ref } from 'react';\nimport { useEffect, useRef } from 'react';\nimport type { DataTableDraggableRowProps } from './types';\n\nexport function DataTableDraggableRow({\n className,\n children,\n isDragging,\n ref: refProp,\n ...otherProps\n}: DataTableDraggableRowProps & {\n ref?: Ref<HTMLTableRowElement>;\n}) {\n const ref = useRef<HTMLTableRowElement>(null);\n const mergedRef = useMergedRef(ref, refProp);\n\n // biome-ignore lint/correctness/useExhaustiveDependencies: re-measure cells when children change\n useEffect(() => {\n // a simple fix to keep column width as in table\n if (!ref.current) return;\n if (!isDragging) return;\n\n const tbody = ref.current.parentElement!;\n const table = tbody.parentElement!;\n const thead = table.children[0];\n const headerRow = thead.children[0];\n\n for (let index = 0; index < headerRow.children.length; index++) {\n const headerCell = headerRow.children[index];\n const headerCellDimensions = headerCell.getBoundingClientRect();\n\n const cell = ref.current.children[index] as HTMLTableCellElement;\n\n cell.style.height = `${headerCellDimensions.height}px`;\n cell.style.width = `${headerCellDimensions.width}px`;\n cell.style.minWidth = `${headerCellDimensions.width}px`;\n cell.style.maxWidth = `${headerCellDimensions.width}px`;\n }\n }, [isDragging, children]);\n\n return (\n <TableTr data-is-dragging={isDragging} ref={mergedRef} {...otherProps} className={className}>\n {children}\n </TableTr>\n );\n}\n"],"mappings":"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","names":["Box","Table","useMergedRef","clsx","useCallback","useEffect","useLayoutEffect","useMemo","useRef","parseThemeColor","getColor","color","theme","colorScheme","getTableCssVariables","c","backgroundColor","borderColor","rowBorderColor","stripedColor","highlightOnHoverColor","getPaginationCssVariables","paginationActiveTextColor","paginationActiveBackgroundColor","getRowCssVariables","useState","createSafeContext","DataTableColumnsContextProvider","useDataTableColumnsContext","jsx","DataTableColumnsProvider","props","children","columnsOrder","setColumnsOrder","columnsToggle","setColumnsToggle","columnsPinning","setColumnsPinning","resetColumnsOrder","resetColumnsToggle","resetColumnsPinning","setColumnWidth","setMultipleColumnWidths","resetColumnsWidth","beginResize","endResize","pinnedMap","sourceColumn","setSourceColumn","useState","targetColumn","setTargetColumn","DataTableColumnsContextProvider","sourceInfo","targetInfo","sourceIndex","targetIndex","newOrder","removed","jsx","DataTableEmptyRow","Center","Text","jsx","jsxs","IconDatabaseOff","Fragment","jsx","jsxs","DataTableEmptyState","icon","text","active","children","Center","IconDatabaseOff","Text","TableTfoot","TableTr","clsx","TableTh","clsx","useCallback","useRef","useState","useLocalStorage","useEffect","useMemo","humanize","value","str","sanitizeStoredArray","fallback","isValidItem","hasStringAccessor","item","differenceBy","arr1","arr2","iteratee","c","uniqBy","arr","x","i","self","y","getValueAtPath","obj","path","prevObj","key","getRecordId","record","idAccessor","reorderRecords","dropResult","records","draft","prev","swapRecords","destination","sourceEl","destEl","getMaxGroupDepth","groups","group","flattenColumns","columns","col","calculateColSpan","visibles","column","index","sum","subGroup","getGroupsAtDepth","targetDepth","currentDepth","result","needsRightBorder","isLastGroup","hasMoreColumnsAfter","withColumnBorders","useDataTableColumnPinning","key","columns","getInitialValueInEffect","defaultColumnsPinning","useMemo","column","storedColumnsPinning","_setColumnsPinning","useLocalStorage","columnsPinning","sanitizeStoredArray","hasStringAccessor","setColumnsPinning","pinning","prev","alignedColumnsPinning","aligned","col","c","useEffect","resetColumnsPinning","useLocalStorage","useEffect","useMemo","useDataTableColumnReorder","key","columns","getInitialValueInEffect","defaultColumnsOrder","useMemo","column","storedColumnsOrder","_setColumnsOrder","useLocalStorage","columnsOrder","sanitizeStoredArray","item","setColumnsOrder","order","alignedColumnsOrder","aligned","col","c","useEffect","resetColumnsOrder","useLocalStorage","useCallback","useEffect","useMemo","useRef","useState","useDataTableColumnResize","key","columns","getInitialValueInEffect","headerRef","hasResizableColumns","useMemo","c","getDefaultColumnsWidth","useCallback","column","rawStoredColumnsWidth","setStoredColumnsWidth","useLocalStorage","storedColumnsWidth","sanitizeStoredArray","item","effectiveColumnsWidth","setEffectiveColumnsWidth","useState","isResizing","setIsResizing","dirtyRef","useRef","useEffect","prev","validAccessors","filtered","entry","present","added","accessor","updateColumnWidths","updates","u","col","update","setColumnWidth","width","setMultipleColumnWidths","beginResize","thead","cells","snapshot","cell","endResize","resetColumnsWidth","defaults","allResizableWidthsInitial","resizable","cw","measureAndSetColumnWidths","useMemo","useLocalStorage","useEffect","useMemo","useDataTableColumnToggle","key","columns","getInitialValueInEffect","defaultColumnsToggle","useMemo","column","storedColumnsToggle","_setColumnsToggle","useLocalStorage","columnsToggle","sanitizeStoredArray","hasStringAccessor","setColumnsToggle","toggle","alignedColumnsToggle","aligned","col","c","useEffect","resetColumnsToggle","useDataTableColumns","key","columns","getInitialValueInEffect","headerRef","scrollViewportRef","columnsOrder","setColumnsOrder","resetColumnsOrder","useDataTableColumnReorder","columnsToggle","setColumnsToggle","resetColumnsToggle","useDataTableColumnToggle","columnsPinning","setColumnsPinning","resetColumnsPinning","useDataTableColumnPinning","columnsWidth","setColumnsWidth","setColumnWidth","setMultipleColumnWidths","resetColumnsWidth","hasResizableColumns","allResizableWidthsInitial","measureAndSetColumnWidths","isResizing","beginResize","endResize","useDataTableColumnResize","effectiveColumns","useMemo","result","order","column","pinningState","p","effectivePinned","toggle","leftPinned","c","unpinned","rightPinned","accessor","widthEntry","entry","width","isLocked","visible","tableWidth","sum","col","w","n","rem","useCallback","useEffect","useRef","useEffect","useLayoutEffect","useIsomorphicLayoutEffect","useRef","useStableValue","value","ref","VAR_HEADER_HEIGHT","VAR_FOOTER_HEIGHT","VAR_SELECTION_COLUMN_WIDTH","VAR_LAST_ROW_BORDER_BOTTOM","setCssVar","root","name","value","getRect","entry","boxSize","observe","elem","onChange","onCancel","observer","entries","useDataTableInjectCssVariables","scrollCallbacks","withRowBorders","refs","useRef","table","scrollViewport","header","footer","selectionColumnHeader","stableDependencies","useStableValue","stableScrollCallbacks","processScrollingRef","processLastRowBottomBorderRef","onScroll","useCallback","ev","useEffect","rect","useIsomorphicLayoutEffect","scrollPosition","tableRect","scrollRect","setScrolledTo","pos","old","processFooterPosition","diff","relative","processLastRowBottomBorder","rem","processScrolling","callbacks","viewport","scrollTop","scrollLeft","newScrolledToTop","newScrolledToBottom","scrolledToTop","scrolledToBottom","isRtl","maxScrollLeft","newScrolledToLeft","newScrolledToRight","absScrollLeft","scrolledToLeft","scrolledToRight","useCallback","useEffect","useState","useDataTablePinnedColumns","columns","theadRef","tbodyRef","selectionColumnHeaderRef","selectionVisible","pinFirstColumn","pinLastColumn","pinnedMap","setPinnedMap","useState","recalculate","useCallback","c","measurementSection","isTheadSource","measurementRow","isRtl","widths","th","accessor","w","visibleCols","td","i","selectionWidth","selCell","renderedAccessors","resolvedPinned","col","acc","leftPinned","rightPinned","newMap","leftOffset","rightOffset","rightReversed","prev","k","v","pv","useEffect","section","row","observer","cell","useIsomorphicLayoutEffect","hasLeftPinned","info","hasRightPinned","useEffect","useState","useLastSelectionChangeIndex","recordIds","lastSelectionChangeIndex","setLastSelectionChangeIndex","recordIdsString","useEffect","useRef","useState","attachMediaListeners","queries","callback","callbackWrapper","query","subscriptions","unsubscribe","getInitialValue","initialValues","useMediaQueries","getInitialValueInEffect","matches","setMatches","queryRef","queryResult","event","useMantineTheme","useMemo","useMediaQueriesStringOrFunction","queries","theme","useMantineTheme","values","useMemo","query","defaults","useMediaQueries","useMantineTheme","useMediaQuery","useMediaQueryStringOrFunction","mediaQuery","theme","mediaQueryValue","useState","useRowExpansion","rowExpansion","records","idAccessor","initiallyExpandedRecordIds","trigger","allowMultiple","initiallyExpanded","r","getRecordId","record","index","expandedRecordIds","setExpandedRecordIds","expandedRecordIdsState","useState","expandable","collapseProps","content","collapseRow","id","recordId","useTimeout","useEffect","useState","useRowExpansionStatus","open","transitionDuration","expanded","setExpanded","visible","setVisible","expand","hide","NOWRAP","ELLIPSIS","POINTER_CURSOR","CONTEXT_MENU_CURSOR","TEXT_SELECTION_DISABLED","TEXT_ALIGN_LEFT","TEXT_ALIGN_CENTER","TEXT_ALIGN_RIGHT","jsx","DataTableFooterCell","className","style","pinnedInfo","visibleMediaQuery","title","noWrap","ellipsis","textAlign","width","useMediaQueryStringOrFunction","TableTh","clsx","NOWRAP","ELLIPSIS","TEXT_ALIGN_LEFT","TEXT_ALIGN_CENTER","TEXT_ALIGN_RIGHT","TableTh","jsx","DataTableFooterSelectorPlaceholderCell","shadowVisible","jsx","jsxs","DataTableFooter","className","style","columns","defaultColumnProps","pinnedMap","selectionVisible","selectorCellShadowVisible","ref","TableTfoot","clsx","TableTr","DataTableFooterSelectorPlaceholderCell","hidden","columnProps","accessor","visibleMediaQuery","textAlign","width","footer","footerClassName","footerStyle","noWrap","ellipsis","DataTableFooterCell","Checkbox","Group","Popover","PopoverDropdown","PopoverTarget","Stack","TableThead","TableTr","clsx","useState","TableTh","clsx","useMemo","jsx","DataTableColumnGroupHeaderCell","id","columns","groups","title","textAlign","className","style","pinnedInfo","maxDepth","currentDepth","previousGroups","isLastGroup","withColumnBorders","totalTableColumns","allColumns","useMemo","flattenColumns","queries","visibleMediaQuery","visibles","useMediaQueriesStringOrFunction","colSpan","calculateColSpan","columnsBeforeGroup","sum","g","rowSpan","hasMoreColumns","needsBorder","needsRightBorder","TableTh","clsx","TEXT_ALIGN_LEFT","TEXT_ALIGN_CENTER","TEXT_ALIGN_RIGHT","humanize","ActionIcon","Box","Center","Flex","Group","TableTh","clsx","useRef","useState","ActionIcon","Popover","PopoverDropdown","PopoverTarget","useClickOutside","useDisclosure","jsx","jsxs","IconFilter","jsx","jsxs","IconFilterFilled","jsx","jsxs","DataTableHeaderCellFilter","children","isActive","filterPopoverProps","filterPopoverDisableClickOutside","isOpen","close","toggle","useDisclosure","Icon","IconFilterFilled","IconFilter","ref","useClickOutside","Popover","PopoverTarget","ActionIcon","e","PopoverDropdown","ActionIcon","Center","Group","Popover","useCallback","useEffect","useRef","useState","jsx","jsxs","IconArrowLeft","jsx","jsxs","IconArrowRight","jsx","jsxs","IconPin","jsx","jsxs","IconX","jsx","jsxs","DataTablePinnableDropdown","currentPinned","onPinChange","opened","setOpened","useState","containerRef","useRef","isRtl","setIsRtl","detectDirection","useCallback","computedDir","useIsomorphicLayoutEffect","useEffect","leftArrowPinValue","rightArrowPinValue","isLeftArrowActive","isRightArrowActive","Popover","Center","ActionIcon","e","IconPin","Group","IconArrowLeft","IconArrowRight","IconX","useDirection","useCallback","useRef","useState","jsx","MIN_COLUMN_WIDTH","DataTableResizableHeaderHandle","props","accessor","columnRef","isResizing","setIsResizing","useState","startXRef","useRef","originalWidthsRef","dir","useDirection","isRTL","setMultipleColumnWidths","beginResize","endResize","useDataTableColumnsContext","handleMouseDown","useCallback","event","currentColumn","nextColumn","nextAccessor","startCurrentWidth","startNextWidth","handleMouseMove","moveEvent","deltaX","maxShrinkCurrent","maxShrinkNext","constrainedDelta","finalCurrentWidth","finalNextWidth","handleMouseUp","handleDoubleClick","updates","jsx","jsxs","IconArrowsVertical","jsx","jsxs","IconArrowUp","jsx","jsxs","IconGripVertical","jsx","jsxs","DataTableHeaderCell","className","style","pinnedInfo","accessor","visibleMediaQuery","title","sortable","draggable","toggleable","pinnable","resizable","sortIcons","textAlign","width","sortStatus","onSortStatusChange","filter","filterPopoverProps","filterPopoverDisableClickOutside","filtering","sortKey","setSourceColumn","setTargetColumn","swapColumns","columnsToggle","setColumnsToggle","columnsPinning","setColumnsPinning","useDataTableColumnsContext","dragOver","setDragOver","useState","columnRef","useRef","currentPinned","p","useMediaQueryStringOrFunction","text","humanize","tooltip","sortAction","e","handleColumnDragStart","handleColumnDragOver","handleColumnDrop","handleColumnDragEnter","handleColumnDragLeave","handleColumnToggle","c","handlePinChange","pinned","prev","TableTh","clsx","Group","Flex","Center","ActionIcon","IconGripVertical","Box","TEXT_ALIGN_LEFT","TEXT_ALIGN_CENTER","TEXT_ALIGN_RIGHT","NOWRAP","ELLIPSIS","DataTablePinnableDropdown","IconX","IconArrowUp","IconArrowsVertical","DataTableHeaderCellFilter","DataTableResizableHeaderHandle","Checkbox","TableTh","clsx","jsx","DataTableHeaderSelectorCell","className","style","trigger","shadowVisible","checked","indeterminate","checkboxProps","onChange","rowSpan","ref","enabled","TableTh","clsx","POINTER_CURSOR","Checkbox","jsx","jsxs","getGroupPinnedInfo","group","pinnedMap","leafAccessors","c","pinnedInfos","acc","logicalSides","p","logicalSide","targetAcc","info","boundaryAcc","boundaryInfo","DataTableHeader","selectionColumnHeaderRef","className","style","sortStatus","sortIcons","onSortStatusChange","columns","defaultColumnProps","groups","selectionTrigger","selectionVisible","selectionChecked","selectionIndeterminate","onSelectionChange","selectionCheckboxProps","selectorCellShadowVisible","selectionColumnClassName","selectionColumnStyle","withColumnBorders","ref","maxGroupDepth","getMaxGroupDepth","totalHeaderRows","allRecordsSelectorCell","DataTableHeaderSelectorCell","columnsToggle","setColumnsToggle","useDataTableColumnsContext","columnsPopoverOpened","setColumnsPopoverOpened","useState","someColumnsToggleable","column","columnToggleCheckboxLabels","accessor","title","humanize","content","TableThead","clsx","e","_","depthIndex","groupsAtDepth","getGroupsAtDepth","TableTr","index","DataTableColumnGroupHeaderCell","hidden","columnProps","visibleMediaQuery","textAlign","width","sortable","draggable","toggleable","pinnable","resizable","titleClassName","titleStyle","filter","filterPopoverProps","filterPopoverDisableClickOutside","filtering","sortKey","DataTableHeaderCell","Popover","PopoverTarget","PopoverDropdown","Stack","Group","Checkbox","Center","Loader","clsx","jsx","DataTableLoader","fetching","customContent","backgroundBlur","size","type","color","Box","Pagination","rem","Text","clsx","Button","Group","Menu","MenuDropdown","MenuItem","MenuTarget","rem","Text","clsx","jsx","jsxs","IconSelector","jsx","jsxs","HEIGHT","rem","DataTablePageSizeSelector","size","label","values","value","activeTextColor","activeBackgroundColor","onChange","Group","Text","Menu","MenuTarget","Button","IconSelector","theme","MenuDropdown","v","isCurrent","MenuItem","clsx","getPaginationCssVariables","Fragment","jsx","jsxs","DataTablePagination","className","style","fetching","page","onPageChange","paginationWithEdges","paginationWithControls","paginationActiveTextColor","paginationActiveBackgroundColor","paginationSize","loadingText","noRecordsText","paginationText","totalRecords","recordsPerPage","onRecordsPerPageChange","recordsPerPageLabel","recordsPerPageOptions","recordsLength","horizontalSpacing","paginationWrapBreakpoint","getPaginationControlProps","getPaginationItemProps","renderPagination","paginationTextValue","from","to","totalPages","isWrapped","useMediaQueryStringOrFunction","breakpoints","rem","Controls","props","Text","DataTablePageSizeSelector","Pagination","clsx","theme","getPaginationCssVariables","ctx","n","Box","TableTr","clsx","TableTd","clsx","jsx","DataTableRowCell","className","style","pinnedInfo","visibleMediaQuery","record","index","onClick","onDoubleClick","onContextMenu","noWrap","ellipsis","textAlign","width","accessor","render","defaultRender","customCellAttributes","useMediaQueryStringOrFunction","TableTd","clsx","NOWRAP","ELLIPSIS","POINTER_CURSOR","CONTEXT_MENU_CURSOR","TEXT_ALIGN_LEFT","TEXT_ALIGN_CENTER","TEXT_ALIGN_RIGHT","getValueAtPath","Collapse","TableTd","TableTr","Fragment","jsx","jsxs","DataTableRowExpansion","open","colSpan","content","collapseProps","expanded","visible","useRowExpansionStatus","TableTr","TableTd","Collapse","Checkbox","TableTd","clsx","jsx","DataTableRowSelectorCell","className","style","record","index","trigger","onChange","withRightShadow","checkboxProps","getCheckboxProps","otherProps","allCheckboxProps","enabled","handleClick","e","TableTd","clsx","POINTER_CURSOR","Checkbox","Fragment","jsx","jsxs","DataTableRow","record","index","columns","defaultColumnProps","pinnedMap","defaultColumnRender","selectionTrigger","selectionVisible","selectionChecked","onSelectionChange","isRecordSelectable","selectionCheckboxProps","getSelectionCheckboxProps","onClick","onDoubleClick","onContextMenu","onCellClick","onCellDoubleClick","onCellContextMenu","expansion","customAttributes","color","backgroundColor","className","style","selectorCellShadowVisible","selectionColumnClassName","selectionColumnStyle","rowFactory","cols","DataTableRowSelectorCell","hidden","hiddenContent","columnProps","columnIndex","accessor","visibleMediaQuery","textAlign","noWrap","ellipsis","width","render","cellsClassName","cellsStyle","customCellAttributes","DataTableRowCell","event","expandedElement","DataTableRowExpansion","rowProps","getRowProps","TableTr","clsx","POINTER_CURSOR","CONTEXT_MENU_CURSOR","e","isExpandable","isRowExpanded","expandOnClick","expandRow","collapseRow","theme","colorValue","backgroundColorValue","getRowCssVariables","Box","ScrollArea","clsx","jsx","jsxs","DataTableScrollArea","leftShadowBehind","rightShadowBehind","onScrollPositionChange","children","viewportRef","scrollAreaProps","jsx","jsxs","DataTable","withTableBorder","borderRadius","textSelectionDisabled","height","minHeight","maxHeight","shadow","verticalAlign","fetching","columns","storeColumnsKey","groups","pinFirstColumn","pinLastColumn","defaultColumnProps","defaultColumnRender","idAccessor","records","selectionTrigger","selectedRecords","onSelectedRecordsChange","selectionColumnClassName","selectionColumnStyle","isRecordSelectable","selectionCheckboxProps","allRecordsSelectionCheckboxProps","getRecordSelectionCheckboxProps","_","index","sortStatus","sortIcons","onSortStatusChange","horizontalSpacing","page","onPageChange","totalRecords","recordsPerPage","onRecordsPerPageChange","recordsPerPageOptions","recordsPerPageLabel","paginationWithEdges","paginationWithControls","paginationActiveTextColor","paginationActiveBackgroundColor","paginationSize","paginationText","from","to","paginationWrapBreakpoint","getPaginationControlProps","control","getPaginationItemProps","renderPagination","loaderBackgroundBlur","customLoader","loaderSize","loaderType","loaderColor","loadingText","emptyState","noRecordsText","noRecordsIcon","highlightOnHover","striped","noHeader","onRowClick","onRowDoubleClick","onRowContextMenu","onCellClick","onCellDoubleClick","onCellContextMenu","onScroll","onScrollToTop","onScrollToBottom","onScrollToLeft","onScrollToRight","c","backgroundColor","borderColor","rowBorderColor","stripedColor","highlightOnHoverColor","rowColor","rowBackgroundColor","rowExpansion","rowClassName","rowStyle","customRowAttributes","scrollViewportRef","scrollAreaProps","tableRef","bodyRef","m","my","mx","mt","mb","ml","mr","className","classNames","style","styles","rowFactory","tableWrapper","otherProps","flatColumns","useMemo","flattenColumns","refs","handleScrollPositionChange","useDataTableInjectCssVariables","dragToggle","useDataTableColumns","effectiveColumns","mergedTableRef","useMergedRef","mergedViewportRef","internalBodyRef","useRef","mergedBodyRef","rowExpansionInfo","useRowExpansion","pinnedMap","hasLeftPinned","hasRightPinned","useDataTablePinnedColumns","resetScrollPending","prevPageRef","recordsAtPageChangeRef","handlePageChange","useCallback","newPage","useEffect","recordsLength","useLayoutEffect","viewport","raf","recordIds","record","getRecordId","selectionColumnVisible","selectedRecordIds","hasRecordsAndSelectedRecords","selectableRecords","selectableRecordIds","allSelectableRecordsSelected","id","someRecordsSelected","handleHeaderSelectionChange","uniqBy","lastSelectionChangeIndex","setLastSelectionChangeIndex","useLastSelectionChangeIndex","selectorCellShadowVisible","marginProperties","TableWrapper","children","DataTableColumnsProvider","Box","clsx","theme","getTableCssVariables","DataTableScrollArea","Table","TEXT_SELECTION_DISABLED","DataTableHeader","recordId","isSelected","handleSelectionChange","e","targetRecords","rec","idx","differenceBy","r","DataTableRow","DataTableEmptyRow","footer","DataTableFooter","DataTablePagination","DataTableLoader","DataTableEmptyState","TableTr","useMergedRef","useEffect","useRef","jsx","DataTableDraggableRow","className","children","isDragging","refProp","otherProps","ref","mergedRef","headerRow","index","headerCellDimensions","cell"]}
|
|
1
|
+
{"version":3,"file":"index.mjs","names":["MantineColor","MantineTheme","parseThemeColor","DataTableProps","getColor","color","light","dark","theme","colorScheme","value","undefined","getTableCssVariables","c","backgroundColor","borderColor","rowBorderColor","stripedColor","highlightOnHoverColor","Pick","getPaginationCssVariables","paginationActiveTextColor","paginationActiveBackgroundColor","getRowCssVariables","createSafeContext","Dispatch","SetStateAction","DataTableColumnPinning","DataTableColumnToggle","DataTableColumnsContext","sourceColumn","setSourceColumn","targetColumn","setTargetColumn","swapColumns","resetColumnsOrder","columnsToggle","setColumnsToggle","toggle","resetColumnsToggle","columnsPinning","setColumnsPinning","resetColumnsPinning","setColumnWidth","accessor","width","setMultipleColumnWidths","updates","Array","resetColumnsWidth","beginResize","ReadonlySet","endResize","DataTableColumnsContextProvider","useDataTableColumnsContext","c","_c","Dispatch","PropsWithChildren","SetStateAction","useState","DataTableColumnsContextProvider","DataTableColumnPinning","DataTableColumnToggle","PinnedColumnInfo","DataTableColumnsProviderProps","columnsOrder","setColumnsOrder","order","resetColumnsOrder","columnsToggle","setColumnsToggle","toggle","resetColumnsToggle","columnsPinning","setColumnsPinning","resetColumnsPinning","setColumnWidth","accessor","width","setMultipleColumnWidths","updates","Array","resetColumnsWidth","beginResize","ReadonlySet","endResize","pinnedMap","Map","DataTableColumnsProvider","props","$","children","sourceColumn","setSourceColumn","targetColumn","setTargetColumn","t0","sourceInfo","get","targetInfo","logicalSide","sourceIndex","indexOf","targetIndex","newOrder","removed","splice","swapColumns","t1","t2","_c","DataTableEmptyRow","$","_c","t0","Symbol","for","_c","IconDatabaseOff","$","_c","t0","Symbol","for","_c","Center","Text","IconDatabaseOff","DataTableEmptyStateProps","React","PropsWithChildren","icon","ReactNode","text","active","DataTableEmptyState","t0","$","_c","children","t1","undefined","t2","t3","_c","DropResult","DataTableColumn","DataTableColumnGroup","DataTableIdAccessor","humanize","value","str","replace","trim","toLowerCase","charAt","toUpperCase","slice","sanitizeStoredArray","fallback","T","isValidItem","item","Array","isArray","every","hasStringAccessor","accessor","differenceBy","arr1","arr2","iteratee","excluded","Set","map","filter","c","has","uniqBy","arr","seen","x","key","add","getValueAtPath","obj","path","NonNullable","undefined","pathArray","match","reduce","prevObj","Record","getRecordId","record","idAccessor","React","Key","reorderRecords","dropResult","records","draft","structuredClone","prev","source","index","destination","splice","swapRecords","sourceEl","destEl","getMaxGroupDepth","groups","length","Math","max","group","flattenColumns","columns","push","col","calculateColSpan","visibles","column","hidden","sum","subGroup","getGroupsAtDepth","targetDepth","currentDepth","result","needsRightBorder","isLastGroup","hasMoreColumnsAfter","withColumnBorders","columnWidthVar","columnWidthValue","width","useLocalStorage","useEffect","useMemo","DataTableColumn","hasStringAccessor","sanitizeStoredArray","DataTableColumnPinning","accessor","defaultPinned","pinnable","pinned","useDataTableColumnPinning","t0","$","_c","key","columns","t1","getInitialValueInEffect","t2","t3","undefined","t4","map","_temp","defaultColumnsPinning","t5","t6","t7","defaultValue","storedColumnsPinning","_setColumnsPinning","t8","columnsPinning","t9","setColumnsPinning","pinning","prev","t10","bb0","aligned","forEach","col","find","c","push","col_0","c_0","alignedColumnsPinning","t11","t12","JSON","stringify","t13","resetColumnsPinning","t14","const","column","_c","_temp","useLocalStorage","useEffect","useMemo","DataTableColumn","sanitizeStoredArray","useDataTableColumnReorder","t0","$","_c","key","columns","t1","getInitialValueInEffect","t2","t3","undefined","t4","map","_temp","defaultColumnsOrder","t5","t6","t7","defaultValue","storedColumnsOrder","_setColumnsOrder","t8","t9","_temp2","columnsOrder","t10","setColumnsOrder","order","t11","bb0","aligned","forEach","col","find","c","accessor","push","col_0","includes","alignedColumnsOrder","t12","t13","JSON","stringify","t14","resetColumnsOrder","t15","const","item","column","_c","_temp","_temp2","useLocalStorage","RefObject","useCallback","useEffect","useMemo","useRef","useState","DataTableColumn","sanitizeStoredArray","DataTableColumnWidth","Record","useDataTableColumnResize","t0","$","_c","key","columns","t1","getInitialValueInEffect","t2","headerRef","t3","undefined","t4","some","_temp","hasResizableColumns","t5","filter","_temp2","map","_temp3","getDefaultColumnsWidth","t6","t7","t8","defaultValue","rawStoredColumnsWidth","setStoredColumnsWidth","t9","_temp4","storedColumnsWidth","t10","length","effectiveColumnsWidth","setEffectiveColumnsWidth","isResizing","setIsResizing","dirtyRef","t11","t12","t13","t14","prev","validAccessors","Set","_temp5","_temp6","filtered","entry","has","Object","keys","present","_temp7","added","column_1","column","accessor","String","push","width","removed","t15","Symbol","for","updates","filtered_0","_temp8","current","prev_0","col","accessor_0","update","find","u_0","u","updateColumnWidths","t16","t17","t18","accessor_1","setColumnWidth","t19","updates_0","setMultipleColumnWidths","t20","resizable","_temp9","_temp0","thead","snapshot","Map","cell","querySelectorAll","accessor_2","getAttribute","set","Math","round","getBoundingClientRect","size","prev_1","entry_1","accessor_3","width_0","get","beginResize","t21","endResize","t22","defaults","resetColumnsWidth","t23","bb0","t24","resizable_0","_temp1","cw","accessor_4","c_5","c","every","_temp10","allResizableWidthsInitial","measureAndSetColumnWidths","_temp11","columnsWidth","setColumnsWidth","const","cw_0","w","values","c_4","hidden","c_3","c_2","entry_0","c_1","c_0","item","column_0","_c","_temp","_temp2","_temp3","_temp4","_temp5","_temp6","useLocalStorage","useEffect","useMemo","DataTableColumn","hasStringAccessor","sanitizeStoredArray","DataTableColumnToggle","accessor","defaultToggle","toggleable","toggled","useDataTableColumnToggle","t0","$","_c","key","columns","t1","getInitialValueInEffect","t2","t3","undefined","t4","map","_temp","defaultColumnsToggle","t5","t6","t7","defaultValue","storedColumnsToggle","_setColumnsToggle","t8","columnsToggle","t9","setColumnsToggle","toggle","t10","bb0","aligned","forEach","col","find","c","push","col_0","c_0","alignedColumnsToggle","t11","t12","JSON","stringify","t13","resetColumnsToggle","t14","const","column","_c","_temp","RefObject","useMemo","DataTableColumn","DataTableColumnPinning","useDataTableColumnPinning","useDataTableColumnReorder","useDataTableColumnResize","DataTableColumnToggle","useDataTableColumnToggle","useDataTableColumns","t0","$","_c","key","columns","t1","getInitialValueInEffect","t2","headerRef","scrollViewportRef","t3","undefined","t4","columnsOrder","setColumnsOrder","resetColumnsOrder","t5","columnsToggle","setColumnsToggle","resetColumnsToggle","t6","columnsPinning","setColumnsPinning","resetColumnsPinning","t7","columnsWidth","setColumnsWidth","setColumnWidth","setMultipleColumnWidths","resetColumnsWidth","hasResizableColumns","allResizableWidthsInitial","measureAndSetColumnWidths","isResizing","beginResize","endResize","t8","result","t9","order","find","column","accessor","t10","column_0","pinningState","p","effectivePinned","pinnable","pinned","hidden","toggle","toggled","map","T","leftPinned","filter","_temp","unpinned","_temp2","rightPinned","_temp3","reordered","column_1","resizable","widthEntry","entry","width","effectiveColumns","bb0","visible","_temp4","length","every","_temp5","isLocked","t11","bb1","sum","col","w","n","parseInt","Number","isNaN","tableWidth","t12","t13","t14","t15","t16","const","c","c_0","c_1","c_2","c_3","test","_c","_temp","_temp2","_temp3","_temp4","_temp5","useEffect","useLayoutEffect","useIsomorphicLayoutEffect","window","useInsertionEffect","useRef","ReadonlyRef","current","T","useStableValue","value","$","_c","ref","t0","_c","useMergedRef","RefObject","useState","useTrackedElement","objectRef","$","_c","element","setElement","ref","t0","const","_c","rem","useEffect","useRef","DataTableScrollProps","useIsomorphicLayoutEffect","useStableValue","useTrackedElement","VAR_HEADER_HEIGHT","VAR_FOOTER_HEIGHT","VAR_SELECTION_COLUMN_WIDTH","VAR_LAST_ROW_BORDER_BOTTOM","UseDataTableInjectCssVariablesOpts","scrollCallbacks","withRowBorders","OnScroll","NonNullable","Rect","width","height","Pos","setCssVar","root","HTMLDivElement","name","value","style","setProperty","getRect","entry","ResizeObserverEntry","boxSize","borderBoxSize","contentBoxSize","inlineSize","blockSize","contentRect","observe","elem","HTMLElement","onChange","rect","onCancel","observer","ResizeObserver","entries","disconnect","useDataTableInjectCssVariables","t0","$","_c","table","scrollViewport","header","footer","selectionColumnHeader","t1","Symbol","for","refs","scrollViewportElement","scrollViewportRef","headerElement","headerRef","footerElement","footerRef","selectionColumnHeaderElement","selectionColumnHeaderRef","t2","stableDependencies","stableScrollCallbacks","processScrollingRef","_temp","processLastRowBottomBorderRef","_temp2","t3","ev","current","onScroll","t4","t5","t6","t7","rect_0","t8","t9","rect_1","t10","window","scrollPosition","top","bottom","left","right","tableRect","scrollRect","setScrolledTo","pos","old","processFooterPosition","diff","relative","processLastRowBottomBorder","processScrolling","callbacks","viewport","scrollTop","scrollLeft","newScrolledToTop","newScrolledToBottom","scrolledToTop","scrolledToBottom","onScrollToTop","onScrollToBottom","isRtl","getComputedStyle","direction","maxScrollLeft","scrollWidth","newScrolledToLeft","newScrolledToRight","absScrollLeft","Math","abs","scrolledToLeft","scrolledToRight","onScrollToLeft","onScrollToRight","bb129","target","tagName","t11","t12","t13","t14","t15","t16","trackedRefs","trackedElements","_c","_temp","_temp2","RefObject","useCallback","useEffect","useState","DataTableColumn","useIsomorphicLayoutEffect","PinnedColumnInfo","position","logicalSide","offset","isBoundary","useDataTablePinnedColumns","t0","$","_c","columns","theadRef","tbodyRef","selectionColumnHeaderRef","selectionVisible","pinFirstColumn","pinLastColumn","t1","Symbol","for","Map","pinnedMap","setPinnedMap","t2","some","_temp","measurementSection","current","isTheadSource","measurementRow","querySelector","isRtl","getComputedStyle","direction","widths","querySelectorAll","forEach","th","accessor","dataset","w","getBoundingClientRect","width","set","visibleCols","filter","_temp2","tds","td","i","w_0","String","selectionWidth","selCell","renderedAccessors","c_1","c","hidden","has","map","_temp3","resolvedPinned","col","acc","includes","pinned","length","leftPinned","acc_0","get","rightPinned","acc_1","newMap","leftOffset","acc_2","i_0","rightOffset","rightReversed","reverse","acc_3","i_1","prev","size","k","v","pv","recalculate","t3","_temp4","section","isTheadSource_0","observer","ResizeObserver","observedRow","observeRow","isConnected","row","disconnect","cell","observe","mutationObserver","MutationObserver","childList","t4","t5","hasLeftPinned","values","_temp5","hasRightPinned","_temp6","t6","info_0","info","c_3","c_2","c_0","_c","_temp","_temp2","_temp3","_temp4","useEffect","useRef","useState","UseMediaQueryOptions","getInitialValueInEffect","attachMediaListeners","queries","MediaQueryList","callback","matches","callbackWrapper","map","query","subscriptions","addEventListener","removeEventListener","addListener","removeListener","forEach","unsubscribe","getInitialValue","initialValues","window","matchMedia","useMediaQueries","t0","$","_c","t1","undefined","t2","setMatches","queryRef","t3","t4","current","_temp","_temp2","event","queryResult","_c","_temp","_temp2","MantineTheme","useMantineTheme","useMemo","useMediaQueries","useMediaQueriesStringOrFunction","queries","$","_c","theme","t0","t1","query","map","values","_temp","defaults","_c","_temp","defaults","MantineTheme","useMantineTheme","useMediaQuery","useMediaQueryStringOrFunction","mediaQuery","$","_c","theme","t0","mediaQueryValue","_c","mediaQueryValue","useCallback","useInsertionEffect","useRef","useStableCallback","handler","$","_c","handlerRef","t0","current","t1","Symbol","for","t2","args","R","_c","useStableCallback","useOptionalCallbackRef","handler","stableHandler","undefined","useMemo","useState","DataTableIdAccessor","DataTableRowExpansionProps","getRecordId","useStableCallback","getInitiallyExpandedRecordIds","rowExpansion","T","records","idAccessor","trigger","allowMultiple","initiallyExpanded","ids","filter","record","index","map","r","slice","useRowExpansion","t0","$","_c","t1","uncontrolledExpandedRecordIds","setUncontrolledExpandedRecordIds","canInitialize","length","initialized","setInitialized","expandedRecordIds","expanded","recordIds","t2","update","onRecordIdsChange","updateExpandedRecordIds","enabled","t3","expandable","collapseProps","content","t4","recordId","expandRow","t5","record_0","recordId_0","ids_0","id","collapseRow","t6","Set","expandedRecordIdsSet","t7","recordId_1","has","isRecordIdExpanded","t8","bb0","undefined","t9","t10","t11","record_1","t12","record_2","index_0","collapse","expandOnClick","isExpandable","expansion","RowExpansionInfo","ReturnType","_c","useTimeout","useEffect","useState","useRowExpansionStatus","open","transitionDuration","$","_c","expanded","setExpanded","visible","setVisible","t0","Symbol","for","expand","t1","hide","t2","t3","clear","start","t4","_c","useVirtualizer","VirtualItem","Virtualizer","useCallback","useEffect","useMemo","useRef","useState","useIsomorphicLayoutEffect","UseRowVirtualizationOptions","enabled","count","scrollElement","HTMLElement","headerElement","footerElement","rowHeight","measureRows","overscan","getItemKey","index","virtualizerRef","React","RefObject","HTMLTableRowElement","DEFAULT_ROW_HEIGHT","RowVirtualizationInfo","virtualItems","paddingTop","paddingBottom","measureRef","element","expansionRowRef","measureRowWithTrailingSiblings","height","getBoundingClientRect","sibling","nextElementSibling","classList","contains","useRowVirtualization","firstRowHeight","setFirstRowHeight","firstRowMeasuredRef","estimatedRowHeight","stickyHeight","setStickyHeight","ResizeObserver","elements","filter","update","reduce","sum","observer","observe","disconnect","virtualizer","getScrollElement","estimateSize","scrollPaddingEnd","measureElement","useAnimationFrameWithResizeObserver","current","measure","queueMicrotask","undefined","previousElementSibling","row","frame","remeasure","cancelAnimationFrame","requestAnimationFrame","isConnected","resizeItem","indexFromElement","getVirtualItems","totalSize","getTotalSize","length","start","end","useState","shallowEqual","a","b","ka","Object","keys","kb","length","every","k","Record","useShallowStable","value","stable","setStable","NOWRAP","ELLIPSIS","POINTER_CURSOR","CONTEXT_MENU_CURSOR","TEXT_SELECTION_DISABLED","TEXT_ALIGN_LEFT","TEXT_ALIGN_CENTER","TEXT_ALIGN_RIGHT","MantineStyleProp","MantineTheme","TableTh","clsx","PinnedColumnInfo","useMediaQueryStringOrFunction","DataTableColumn","ELLIPSIS","NOWRAP","TEXT_ALIGN_CENTER","TEXT_ALIGN_LEFT","TEXT_ALIGN_RIGHT","columnWidthValue","DataTableFooterCellProps","className","style","pinnedInfo","visibleMediaQuery","theme","title","React","ReactNode","Pick","T","DataTableFooterCell","t0","$","_c","noWrap","ellipsis","textAlign","width","accessor","t1","String","t2","widthValue","t3","position","t4","isBoundary","undefined","t5","t6","t7","t8","t9","t10","minWidth","maxWidth","t11","offset","overflow","t12","t13","_c","TableTh","DataTableFooterSelectorPlaceholderCellProps","shadowVisible","DataTableFooterSelectorPlaceholderCell","t0","$","_c","t1","undefined","t2","_c","MantineStyleProp","TableTfoot","TableTr","clsx","DataTableFooterCell","DataTableFooterSelectorPlaceholderCell","PinnedColumnInfo","DataTableColumn","DataTableDefaultColumnProps","DataTableFooterProps","className","style","columns","T","defaultColumnProps","pinnedMap","Map","selectionVisible","selectorCellShadowVisible","ref","React","Ref","HTMLTableSectionElement","DataTableFooter","t0","$","_c","t1","t2","t3","t4","t5","hidden","columnProps","accessor","visibleMediaQuery","textAlign","width","footer","footerClassName","footerStyle","noWrap","ellipsis","Key","get","String","map","_c","TableTh","clsx","useMemo","PinnedColumnInfo","useMediaQueriesStringOrFunction","DataTableColumnGroup","TEXT_ALIGN_CENTER","TEXT_ALIGN_LEFT","TEXT_ALIGN_RIGHT","calculateColSpan","flattenColumns","humanize","needsRightBorder","DataTableColumnGroupHeaderCellProps","group","T","pinnedInfo","maxDepth","currentDepth","previousGroups","isLastGroup","withColumnBorders","totalTableColumns","DataTableColumnGroupHeaderCell","t0","$","_c","t1","t2","id","columns","groups","title","textAlign","className","style","undefined","t3","bb0","length","t4","Symbol","for","allColumns","map","_temp","queries","visibles","t5","colSpan","t6","sum","g","columnsBeforeGroup","reduce","hasSubGroups","rowSpan","hasMoreColumns","t7","needsBorder","position","isBoundary","offset","overflow","visibleMediaQuery","_c","_temp","queries","IconFilter","$","_c","t0","Symbol","for","_c","IconFilterFilled","$","_c","t0","Symbol","for","_c","ActionIcon","Popover","PopoverDropdown","PopoverTarget","useClickOutside","useDisclosure","RefObject","IconFilter","IconFilterFilled","DataTableColumn","DataTableHeaderCellFilterProps","children","T","filterPopoverProps","filterPopoverDisableClickOutside","isActive","DataTableHeaderCellFilter","t0","$","_c","isOpen","t1","close","toggle","Icon","ref","undefined","t2","t3","e","preventDefault","t4","t5","_temp","t6","t7","_temp2","_temp3","t8","e_2","stopPropagation","e_1","e_0","_c","_temp","_temp2","_temp3","IconArrowLeft","$","_c","t0","Symbol","for","_c","IconArrowRight","$","_c","t0","Symbol","for","_c","IconPin","$","_c","t0","Symbol","for","_c","IconX","$","_c","t0","Symbol","for","_c","c","_c","ActionIcon","Center","Group","Popover","useCallback","useEffect","useRef","useState","useIsomorphicLayoutEffect","IconArrowLeft","IconArrowRight","IconPin","IconX","DataTablePinnableDropdownProps","currentPinned","onPinChange","pinned","DataTablePinnableDropdown","t0","$","opened","setOpened","containerRef","isRtl","setIsRtl","t1","Symbol","for","current","computedDir","getComputedStyle","direction","detectDirection","t2","t3","t4","t5","leftArrowPinValue","rightArrowPinValue","isLeftArrowActive","isRightArrowActive","t6","t7","t8","_temp","t10","t9","t11","t12","undefined","t13","t14","t15","t16","t17","t18","t19","t20","_temp2","t21","e_0","e","stopPropagation","_c","_temp","_temp2","useDirection","RefObject","useCallback","useRef","useState","createPortal","flushSync","useDataTableColumnsContext","columnWidthVar","DataTableResizableHeaderHandleProps","accessor","columnRef","HTMLTableCellElement","deferred","ResizeGuide","x","top","height","MIN_COLUMN_WIDTH","DataTableResizableHeaderHandle","props","$","_c","isResizing","setIsResizing","guide","setGuide","startXRef","t0","Symbol","for","current","next","originalWidthsRef","dir","isRTL","setMultipleColumnWidths","beginResize","endResize","t1","event","preventDefault","stopPropagation","currentColumn","nextColumn","nextElementSibling","nextAccessor","getAttribute","nextAccessor_0","startCurrentWidth","offsetWidth","startNextWidth","resizable","tradesWithNext","has","clientX","table","closest","currentVar","nextVar","liveWidths","guideBounds","getBoundingClientRect","handleMouseMove","moveEvent","deltaX","maxShrinkCurrent","maxShrinkNext","Infinity","constrainedDelta","Math","max","min","style","setProperty","handleMouseUp","document","body","cursor","userSelect","width","removeProperty","removeEventListener","addEventListener","handleMouseDown","t2","currentColumn_0","nextColumn_0","updates","nextAccessor_1","push","handleDoubleClick","t3","left","t4","undefined","t5","t6","_temp","t7","event_0","_c","_temp","IconArrowsVertical","$","_c","t0","Symbol","for","_c","IconArrowUp","$","_c","t0","Symbol","for","_c","IconGripVertical","$","_c","t0","Symbol","for","_c","ActionIcon","Box","Center","Flex","Group","MantineStyleProp","MantineTheme","TableTh","clsx","useRef","useState","useDataTableColumnsContext","DataTableHeaderCellFilter","DataTablePinnableDropdown","DataTableResizableHeaderHandle","PinnedColumnInfo","useMediaQueryStringOrFunction","IconArrowsVertical","IconArrowUp","IconGripVertical","IconX","DataTableColumn","DataTableSortProps","ELLIPSIS","NOWRAP","TEXT_ALIGN_CENTER","TEXT_ALIGN_LEFT","TEXT_ALIGN_RIGHT","columnWidthValue","humanize","DataTableHeaderCellProps","className","style","pinnedInfo","visibleMediaQuery","theme","title","React","ReactNode","sortStatus","T","sortIcons","onSortStatusChange","Pick","DataTableHeaderCell","t0","$","_c","accessor","sortable","draggable","toggleable","pinnable","resizable","deferredResize","textAlign","width","filter","filterPopoverProps","filterPopoverDisableClickOutside","filtering","sortKey","setSourceColumn","setTargetColumn","swapColumns","columnsToggle","setColumnsToggle","columnsPinning","setColumnsPinning","t1","String","t2","widthValue","dragOver","setDragOver","columnRef","t3","find","p","pinningState","currentPinned","pinned","t4","text","tooltip","undefined","t5","e","defaultPrevented","columnAccessor","direction","sortAction","t6","e_0","stopPropagation","handleColumnDragStart","t7","e_1","preventDefault","handleColumnDragOver","t8","handleColumnDrop","t9","Symbol","for","handleColumnDragEnter","t10","handleColumnDragLeave","t11","e_2","map","c","toggled","handleColumnToggle","t12","prev","p_0","handlePinChange","t13","position","t14","isBoundary","t15","t16","minWidth","maxWidth","t17","t18","offset","overflow","t19","t20","t21","t22","e_3","key","t23","t24","t25","t26","t27","t28","t29","_temp","t30","t31","t32","t33","t34","t35","t36","t37","t38","sorted","unsorted","t39","t40","t41","t42","e_4","_c","pinningState","_temp","MantineStyleProp","Checkbox","CheckboxProps","TableTh","clsx","DataTableSelectionTrigger","POINTER_CURSOR","DataTableHeaderSelectorCellProps","className","style","trigger","shadowVisible","checked","indeterminate","checkboxProps","onChange","rowSpan","ref","React","Ref","HTMLTableCellElement","DataTableHeaderSelectorCell","t0","$","_c","enabled","disabled","t1","t2","t3","undefined","t4","t5","input","t6","t7","t8","_c","Checkbox","CheckboxProps","Group","MantineStyleProp","Popover","PopoverDropdown","PopoverTarget","Stack","TableThead","TableTr","clsx","useState","DataTableColumnGroupHeaderCell","useDataTableColumnsContext","DataTableHeaderCell","DataTableHeaderSelectorCell","DataTableColumnToggle","PinnedColumnInfo","DataTableColumn","DataTableColumnGroup","DataTableSelectionTrigger","DataTableSortProps","getGroupsAtDepth","getMaxGroupDepth","humanize","DataTableHeaderProps","selectionColumnHeaderRef","React","ForwardedRef","HTMLTableCellElement","className","style","sortStatus","T","sortIcons","onSortStatusChange","columns","defaultColumnProps","Omit","groups","pinnedMap","Map","selectionTrigger","selectionVisible","selectionChecked","selectionIndeterminate","onSelectionChange","selectionCheckboxProps","selectorCellShadowVisible","selectionColumnClassName","selectionColumnStyle","withColumnBorders","ref","Ref","HTMLTableSectionElement","getGroupPinnedInfo","group","leafColumns","leafAccessors","filter","c","hidden","map","String","accessor","pinnedInfos","acc","get","Boolean","length","undefined","logicalSides","Set","p","logicalSide","size","targetAcc","info","boundaryAcc","boundaryInfo","isBoundary","DataTableHeader","t0","$","_c","t1","maxGroupDepth","totalHeaderRows","t2","allRecordsSelectorCell","columnsToggle","setColumnsToggle","columnsPopoverOpened","setColumnsPopoverOpened","t3","some","_temp","someColumnsToggleable","t4","Object","fromEntries","_temp2","columnToggleCheckboxLabels","T0","t5","t6","e","preventDefault","_temp3","t7","Array","from","_","depthIndex","groupsAtDepth","index","id","slice","t8","t9","t10","t11","index_0","columnProps","accessor_0","visibleMediaQuery","textAlign","width","title","title_0","sortable","draggable","toggleable","pinnable","resizable","deferredResize","titleClassName","titleStyle","filterPopoverProps","filterPopoverDisableClickOutside","filtering","sortKey","Key","content","t12","_temp4","column_1","column","label","toggled","e_0","currentTarget","checked","column_0","columnsPopoverOpened_0","_c","_temp","_temp2","Center","Loader","MantineColor","MantineLoader","MantineSize","clsx","DataTableLoaderProps","fetching","customContent","React","ReactNode","backgroundBlur","size","NonNullable","type","color","DataTableLoader","t0","$","_c","t1","t2","undefined","t3","backdropFilter","t4","t5","_c","IconSelector","$","_c","t0","Symbol","for","_c","MantineColor","Button","Group","MantineSize","Menu","MenuDropdown","MenuItem","MenuTarget","rem","Text","clsx","getPaginationCssVariables","IconSelector","DataTablePageSizeSelectorComponentProps","size","label","values","value","activeTextColor","dark","light","activeBackgroundColor","onChange","HEIGHT","Record","xs","sm","md","lg","xl","DataTablePageSizeSelector","t0","$","_c","t1","t2","Symbol","for","arrow","t3","t4","t5","section","fontWeight","t6","theme","height","paddingLeft","spacing","paddingRight","t7","t8","t9","v","isCurrent","theme_0","paginationActiveTextColor","paginationActiveBackgroundColor","undefined","map","t10","t11","_c","Box","MantineSpacing","MantineStyleProp","Pagination","rem","Text","clsx","getPaginationCssVariables","DataTablePageSizeSelector","useMediaQueryStringOrFunction","DataTablePaginationProps","DataTablePaginationRenderContext","WithOptionalProperty","WithRequiredProperty","DataTablePaginationComponentProps","className","style","fetching","recordsLength","horizontalSpacing","noRecordsText","DataTablePagination","t0","$","_c","page","onPageChange","paginationWithEdges","paginationWithControls","paginationActiveTextColor","paginationActiveBackgroundColor","paginationSize","loadingText","paginationText","totalRecords","recordsPerPage","onRecordsPerPageChange","recordsPerPageLabel","recordsPerPageOptions","paginationWrapBreakpoint","getPaginationControlProps","getPaginationItemProps","renderPagination","paginationTextValue","from","to","totalPages","Math","max","ceil","from_0","undefined","to_0","t1","t2","breakpoints","isAbovePaginationWrapBreakpoint","isWrapped","props","t3","props_0","t4","props_1","root","control","theme","t5","Controls","PageSizeSelector","t6","n","t7","n_0","ctx","state","actions","setPage","setRecordsPerPage","t8","t9","t10","flexDirection","t11","_c","MantineStyleProp","TableTd","clsx","PinnedColumnInfo","useMediaQueryStringOrFunction","DataTableColumn","CONTEXT_MENU_CURSOR","ELLIPSIS","NOWRAP","POINTER_CURSOR","TEXT_ALIGN_CENTER","TEXT_ALIGN_LEFT","TEXT_ALIGN_RIGHT","columnWidthValue","getValueAtPath","DataTableRowCellProps","className","style","pinnedInfo","record","T","index","defaultRender","accessor","NonNullable","React","ReactNode","onClick","MouseEventHandler","HTMLTableCellElement","onDoubleClick","onContextMenu","Pick","DataTableRowCell","t0","$","_c","visibleMediaQuery","noWrap","ellipsis","textAlign","width","render","customCellAttributes","t1","String","t2","widthValue","t3","position","t4","isBoundary","undefined","t5","t6","t7","t8","t9","t10","t11","minWidth","maxWidth","t12","offset","overflow","t13","t14","t15","t16","_c","Collapse","TableTd","TableTr","useRowExpansionStatus","DataTableRowExpansionCollapseProps","DataTableRowExpansionProps","open","colSpan","content","React","ReactNode","collapseProps","odd","rowRef","Ref","HTMLTableRowElement","DataTableRowExpansion","t0","$","_c","expanded","visible","transitionDuration","t1","_c","MantineStyleProp","Checkbox","CheckboxProps","TableTd","clsx","DataTableSelectionTrigger","POINTER_CURSOR","DataTableRowSelectorCellProps","className","style","record","T","index","trigger","withRightShadow","checked","disabled","onChange","React","MouseEventHandler","checkboxProps","getCheckboxProps","DataTableRowSelectorCell","t0","$","_c","otherProps","t1","t2","allCheckboxProps","enabled","t3","e","stopPropagation","handleClick","t4","t5","t6","undefined","t7","input","t8","ChangeEventHandler","t9","t10","_c","MantineTheme","CheckboxProps","MantineColor","MantineStyleProp","TableTr","clsx","memo","getRowCssVariables","DataTableRowCell","DataTableRowExpansion","DataTableRowSelectorCell","PinnedColumnInfo","RowExpansionInfo","DataTableCellClickHandler","DataTableColumn","DataTableDefaultColumnProps","DataTableProps","DataTableRowClickHandler","DataTableSelectionTrigger","CONTEXT_MENU_CURSOR","POINTER_CURSOR","DataTableRowProps","record","T","index","columns","defaultColumnProps","pinnedMap","Map","defaultColumnRender","accessor","NonNullable","React","ReactNode","selectionTrigger","selectionVisible","selectionChecked","onSelectionChange","event","MouseEvent","isRecordSelectable","selectionCheckboxProps","getSelectionCheckboxProps","onClick","onDoubleClick","onContextMenu","onCellClick","onCellDoubleClick","onCellContextMenu","expansion","expansionColSpan","expanded","customAttributes","Record","color","light","dark","backgroundColor","className","style","selectorCellShadowVisible","selectionColumnClassName","selectionColumnStyle","idAccessor","virtualizedMeasureRef","element","HTMLTableRowElement","virtualizedExpansionRowRef","Pick","DataTableRowInner","t0","$","_c","rowFactory","t1","undefined","handleSelectionChange","t2","t3","t4","t5","columnIndex","hidden","hiddenContent","columnProps","visibleMediaQuery","textAlign","noWrap","ellipsis","width","render","cellsClassName","cellsStyle","customCellAttributes","Key","get","String","event_0","column","event_1","event_2","map","cols","odd","content","collapseProps","expandedElement","rowProps","t6","Symbol","for","bb0","baseRowProps","getRowProps","ref","children","t7","t8","DataTableRow","GetRowPropsArgs","Readonly","isExpandable","expandOnClick","e","expandRow","collapseRow","theme","colorValue","backgroundColorValue","_c","Box","ScrollArea","ScrollAreaProps","clsx","DataTableScrollAreaProps","React","PropsWithChildren","leftShadowBehind","rightShadowBehind","onScrollPositionChange","viewportRef","Ref","HTMLDivElement","scrollAreaProps","Omit","DataTableScrollArea","t0","$","_c","children","t1","Symbol","for","root","scrollbar","thumb","corner","t2","t3","t4","t5","t6","t7","t8","_c","DataTableSpacerRowProps","height","colSpan","DataTableSpacerRow","t0","$","_c","t1","padding","border","t2","_c","Box","MantineSize","Table","useMergedRef","clsx","RefObject","useCallback","useEffect","useLayoutEffect","useMemo","useRef","getTableCssVariables","DataTableColumnsProvider","DataTableEmptyRow","DataTableEmptyState","DataTableFooter","DataTableHeader","DataTableLoader","DataTablePagination","DataTableRow","DataTableScrollArea","DataTableSpacerRow","useDataTableColumns","useDataTableInjectCssVariables","useDataTablePinnedColumns","useOptionalCallbackRef","useRowExpansion","useRowVirtualization","useShallowStable","useStableCallback","DataTableProps","TEXT_SELECTION_DISABLED","differenceBy","flattenColumns","getRecordId","uniqBy","defaultAllRecordsSelectionCheckboxProps","NonNullable","defaultGetRecordSelectionCheckboxProps","_","index","defaultPaginationText","from","to","totalRecords","defaultGetPaginationControlProps","control","DataTable","t0","$","_c","backgroundColor","bodyRef","borderColor","borderRadius","c","className","classNames","columns","customLoader","customRowAttributes","defaultColumnProps","defaultColumnRender","emptyState","fetching","getPaginationItemProps","groups","highlightOnHover","highlightOnHoverColor","horizontalSpacing","isRecordSelectable","loaderBackgroundBlur","loaderColor","loaderSize","loaderType","m","maxHeight","mb","minHeight","ml","mr","mt","mx","my","noHeader","noRecordsIcon","onCellClick","onCellContextMenu","onCellDoubleClick","onPageChange","onRecordsPerPageChange","onRowClick","onRowContextMenu","onRowDoubleClick","onScroll","onScrollToBottom","onScrollToLeft","onScrollToRight","onScrollToTop","onSelectedRecordsChange","onSortStatusChange","otherProps","page","paginationActiveBackgroundColor","paginationActiveTextColor","paginationWithControls","paginationWithEdges","pinFirstColumn","pinLastColumn","records","recordsPerPage","recordsPerPageOptions","renderPagination","rowBackgroundColor","rowBorderColor","rowClassName","rowColor","rowExpansion","rowFactory","rowStyle","scrollAreaProps","scrollViewportRef","selectedRecords","selectionCheckboxProps","selectionColumnClassName","selectionColumnStyle","shadow","sortIcons","sortStatus","storeColumnsKey","striped","stripedColor","style","styles","t1","t10","t11","t12","t13","t14","t2","t3","t4","t5","t6","t7","t8","t9","tableRef","tableWrapper","textSelectionDisabled","virtualized","virtualizedMeasureRows","virtualizedRowHeight","virtualizerRef","withTableBorder","height","verticalAlign","idAccessor","selectionTrigger","allRecordsSelectionCheckboxProps","getRecordSelectionCheckboxProps","recordsPerPageLabel","paginationSize","paginationText","paginationWrapBreakpoint","getPaginationControlProps","loadingText","noRecordsText","virtualizedOverscan","undefined","t15","flatColumns","t16","t17","withRowBorders","scrollCallbacks","refs","t18","trackedRefs","t19","trackedElements","t20","handleScrollPositionChange","root","rootElementRef","table","tableElementRef","scrollViewport","scrollViewportElementRef","header","headerElementRef","selectionColumnHeader","selectionColumnHeaderElementRef","trackedScrollViewportRef","trackedHeaderRef","footer","trackedFooterRef","trackedSelectionColumnHeaderRef","scrollViewportElement","headerElement","footerElement","t21","HTMLTableSectionElement","t22","HTMLElement","t23","key","headerRef","dragToggle","effectiveColumns","t24","some","_temp","hasFooter","mergedTableRef","mergedViewportRef","internalBodyRef","mergedBodyRef","t25","expansion","rowExpansionInfo","isRecordIdExpanded","t26","t27","HTMLTableCellElement","t28","t29","theadRef","tbodyRef","selectionColumnHeaderRef","selectionVisible","pinnedMap","hasLeftPinned","hasRightPinned","resetScrollPending","prevPageRef","recordsAtPageChangeRef","t30","newPage","current","handlePageChange","t31","t32","recordsLength","length","t33","getVirtualItemKey","t34","t35","t36","t37","enabled","count","scrollElement","rowHeight","measureRows","overscan","getItemKey","rowVirtualization","t38","t39","viewport","raf","requestAnimationFrame","scrollTo","top","left","cancelAnimationFrame","stableSelectionCheckboxProps","selectionColumnVisible","allSelectableRecordsSelected","selectableRecordIds","selectableRecords","selectedRecordIdsSet","t40","Set","map","record","hasRecordsAndSelectedRecords","size","filter","record_0","every","id","has","id_0","someRecordsSelected","t41","selectableRecordIdsSet","record_1","record_2","handleHeaderSelectionChange","lastSelectionChangeRef","t42","record_3","index_0","event","recordId","isSelected","anchor","lastSelectionChangeIndex","nativeEvent","shiftKey","targetRecords","rec","idx","r","r_0","rec_0","rec_1","handleRecordSelectionChange","rowSelectionChangeHandler","stableOnRowClick","stableOnRowDoubleClick","stableOnRowContextMenu","stableOnCellClick","stableOnCellDoubleClick","stableOnCellContextMenu","selectorCellShadowVisible","t43","marginProperties","t44","_temp2","fullRowColSpan","t45","expansionRowRef","measureRef","record_4","index_1","recordId_0","React","Key","renderRow","t46","t47","children","TableWrapper","t48","theme","radius","boxShadow","shadows","t49","t50","Symbol","for","position","t51","t52","t53","t54","t55","hasResizableColumns","isLocked","isResizing","t56","t57","tableLayout","t58","tableWidth","width","t59","t60","t61","t62","t63","withColumnBorders","t64","paddingTop","virtualItems","t65","index_2","paddingBottom","record_5","index_3","t66","t67","t68","t69","t70","pagination","t71","t72","t73","t74","t75","hidden","_c","c","TableTr","useMergedRef","Ref","useEffect","useRef","DataTableDraggableRowProps","DataTableDraggableRow","t0","$","_c","children","className","isDragging","otherProps","refProp","ref","mergedRef","t1","current","tbody","parentElement","table","thead","headerRow","index","length","headerCell","headerCellDimensions","getBoundingClientRect","cell","HTMLTableCellElement","style","height","width","minWidth","maxWidth","t2","t3","_c","clsx","getColor","color","parseThemeColor","colorScheme","getTableCssVariables","c","theme","backgroundColor","borderColor","rowBorderColor","stripedColor","highlightOnHoverColor","getPaginationCssVariables","paginationActiveTextColor","paginationActiveBackgroundColor","getRowCssVariables","DataTableColumnsContextProvider","useDataTableColumnsContext","createSafeContext","DataTableColumnsProvider","$","props","sourceColumn","setSourceColumn","useState","targetColumn","setTargetColumn","t0","columnsOrder","pinnedMap","setColumnsOrder","sourceInfo","targetInfo","sourceIndex","targetIndex","newOrder","removed","swapColumns","t1","beginResize","columnsPinning","columnsToggle","endResize","resetColumnsOrder","resetColumnsPinning","resetColumnsToggle","resetColumnsWidth","setColumnWidth","setColumnsPinning","setColumnsToggle","setMultipleColumnWidths","t2","children","DataTableEmptyRow","IconDatabaseOff","DataTableEmptyState","active","icon","text","Fragment","Text","t3","Center","humanize","str","value","sanitizeStoredArray","isValidItem","fallback","hasStringAccessor","item","differenceBy","excluded","arr2","iteratee","arr1","uniqBy","seen","arr","key","x","getValueAtPath","path","prevObj","obj","getRecordId","idAccessor","record","reorderRecords","draft","records","prev","dropResult","swapRecords","destination","sourceEl","destEl","getMaxGroupDepth","groups","group","flattenColumns","columns","col","calculateColSpan","column","visibles","index","sum","subGroup","getGroupsAtDepth","currentDepth","targetDepth","result","needsRightBorder","withColumnBorders","isLastGroup","hasMoreColumnsAfter","columnWidthVar","accessor","columnWidthValue","width","useDataTableColumnPinning","getInitialValueInEffect","t4","_temp$15","defaultColumnsPinning","t5","t6","t7","storedColumnsPinning","_setColumnsPinning","useLocalStorage","t8","t9","pinning","t10","aligned","c_0","col_0","alignedColumnsPinning","t11","t12","useEffect","t13","t14","useDataTableColumnReorder","_temp$14","defaultColumnsOrder","storedColumnsOrder","_setColumnsOrder","_temp2$9","order","alignedColumnsOrder","t15","useDataTableColumnResize","_temp$13","hasResizableColumns","_temp2$8","_temp3$4","getDefaultColumnsWidth","rawStoredColumnsWidth","setStoredColumnsWidth","_temp4$3","storedColumnsWidth","effectiveColumnsWidth","setEffectiveColumnsWidth","isResizing","setIsResizing","dirtyRef","useRef","validAccessors","_temp5$2","_temp6$1","filtered","entry","present","_temp7","added","column_1","filtered_0","updates","_temp8","prev_0","accessor_0","update","u_0","updateColumnWidths","t16","t17","t18","accessor_1","t19","updates_0","t20","headerRef","resizable","_temp9","_temp0","thead","snapshot","cell","accessor_2","prev_1","accessor_3","entry_1","width_0","t21","t22","defaults","t23","t24","resizable_0","_temp1","accessor_4","cw","c_5","_temp10","allResizableWidthsInitial","measureAndSetColumnWidths","_temp11","w","cw_0","c_4","c_3","c_2","u","entry_0","c_1","column_0","useDataTableColumnToggle","_temp$12","defaultColumnsToggle","storedColumnsToggle","_setColumnsToggle","toggle","alignedColumnsToggle","useDataTableColumns","scrollViewportRef","pinningState","p","effectivePinned","leftPinned","_temp$11","unpinned","_temp2$7","rightPinned","_temp3$3","reordered","columnsWidth","widthEntry","effectiveColumns","visible","_temp4$2","_temp5$1","isLocked","n","tableWidth","setColumnsWidth","useIsomorphicLayoutEffect","useLayoutEffect","useStableValue","ref","useInsertionEffect","useTrackedElement","element","setElement","useMergedRef","objectRef","VAR_HEADER_HEIGHT","VAR_FOOTER_HEIGHT","VAR_SELECTION_COLUMN_WIDTH","VAR_LAST_ROW_BORDER_BOTTOM","setCssVar","root","name","getRect","boxSize","observe","elem","observer","entries","onChange","onCancel","useDataTableInjectCssVariables","table","scrollViewport","header","footer","selectionColumnHeader","refs","scrollViewportElement","headerElement","footerElement","footerRef","selectionColumnHeaderElement","selectionColumnHeaderRef","withRowBorders","stableDependencies","stableScrollCallbacks","scrollCallbacks","processScrollingRef","_temp$10","processLastRowBottomBorderRef","_temp2$6","ev","onScroll","rect","rect_0","rect_1","scrollPosition","tableRect","scrollRect","setScrolledTo","old","pos","processFooterPosition","diff","relative","processLastRowBottomBorder","rem","processScrolling","callbacks","viewport","scrollTop","scrollLeft","newScrolledToTop","newScrolledToBottom","scrolledToTop","scrolledToBottom","isRtl","maxScrollLeft","newScrolledToLeft","newScrolledToRight","absScrollLeft","scrolledToLeft","scrolledToRight","useDataTablePinnedColumns","setPinnedMap","pinFirstColumn","pinLastColumn","selectionVisible","tbodyRef","theadRef","_temp$9","measurementSection","isTheadSource","measurementRow","widths","th","visibleCols","_temp2$5","i","w_0","td","selectionWidth","selCell","renderedAccessors","_temp3$2","resolvedPinned","acc","acc_0","acc_1","newMap","leftOffset","acc_2","i_0","rightOffset","rightReversed","acc_3","i_1","k","v","pv","recalculate","_temp4$1","section","isTheadSource_0","observedRow","observeRow","row","mutationObserver","hasLeftPinned","_temp5","hasRightPinned","_temp6","info_0","info","attachMediaListeners","callbackWrapper","callback","queries","query","subscriptions","unsubscribe","getInitialValue","initialValues","useMediaQueries","matches","setMatches","queryRef","_temp$8","_temp2$4","event","queryResult","useMediaQueriesStringOrFunction","useMantineTheme","values","_temp$7","useMediaQueryStringOrFunction","mediaQuery","useMediaQuery","useStableCallback","handlerRef","handler","args","useOptionalCallbackRef","stableHandler","getInitiallyExpandedRecordIds","rowExpansion","trigger","initiallyExpanded","ids","r","allowMultiple","useRowExpansion","uncontrolledExpandedRecordIds","setUncontrolledExpandedRecordIds","canInitialize","initialized","setInitialized","expandedRecordIds","updateExpandedRecordIds","enabled","recordId","expandRow","recordId_0","record_0","ids_0","id","collapseRow","expandedRecordIdsSet","recordId_1","isRecordIdExpanded","expandable","record_1","content","record_2","index_0","collapseProps","expansion","useRowExpansionStatus","expanded","setExpanded","open","setVisible","expand","useTimeout","hide","transitionDuration","measureRowWithTrailingSiblings","height","sibling","useRowVirtualization","firstRowHeight","setFirstRowHeight","firstRowMeasuredRef","estimatedRowHeight","rowHeight","stickyHeight","setStickyHeight","elements","element_0","element_1","virtualizer","useVirtualizer","scrollElement","virtualizerRef","measureRef","useCallback","measureRows","element_2","expansionRowRef","element_3","frame","remeasure","observer_0","virtualItems","totalSize","useMemo","shallowEqual","a","b","ka","kb","useShallowStable","stable","setStable","NOWRAP","ELLIPSIS","POINTER_CURSOR","CONTEXT_MENU_CURSOR","TEXT_ALIGN_LEFT","TEXT_ALIGN_CENTER","TEXT_ALIGN_RIGHT","DataTableFooterCell","visibleMediaQuery","widthValue","pinnedInfo","noWrap","ellipsis","textAlign","className","style","title","TableTh","DataTableFooterSelectorPlaceholderCell","shadowVisible","DataTableFooter","selectorCellShadowVisible","defaultColumnProps","columnProps","hidden","footerClassName","footerStyle","TableTr","TableTfoot","DataTableColumnGroupHeaderCell","allColumns","_temp$6","colSpan","g","columnsBeforeGroup","previousGroups","rowSpan","maxDepth","hasMoreColumns","totalTableColumns","needsBorder","IconFilter","IconFilterFilled","DataTableHeaderCellFilter","isOpen","useDisclosure","Icon","isActive","useClickOutside","close","filterPopoverDisableClickOutside","PopoverTarget","ActionIcon","_temp$5","PopoverDropdown","_temp2$3","_temp3$1","filterPopoverProps","Popover","e_2","e_1","e_0","IconArrowLeft","IconArrowRight","IconPin","IconX","DataTablePinnableDropdown","opened","setOpened","containerRef","setIsRtl","computedDir","detectDirection","leftArrowPinValue","rightArrowPinValue","isLeftArrowActive","currentPinned","isRightArrowActive","_temp$4","onPinChange","_temp2$2","Group","DataTableResizableHeaderHandle","guide","setGuide","startXRef","originalWidthsRef","useDirection","isRTL","dir","columnRef","deferred","currentColumn","nextColumn","nextAccessor","nextAccessor_0","startCurrentWidth","startNextWidth","tradesWithNext","currentVar","nextVar","liveWidths","guideBounds","handleMouseMove","deltaX","moveEvent","maxShrinkCurrent","maxShrinkNext","constrainedDelta","handleMouseUp","flushSync","handleMouseDown","nextColumn_0","nextAccessor_1","handleDoubleClick","createPortal","_temp$3","event_0","IconArrowsVertical","IconArrowUp","IconGripVertical","DataTableHeaderCell","dragOver","setDragOver","tooltip","onSortStatusChange","sortKey","sortStatus","sortable","sortAction","handleColumnDragStart","handleColumnDragOver","handleColumnDrop","handleColumnDragEnter","handleColumnDragLeave","handleColumnToggle","p_0","handlePinChange","pinnable","toggleable","e_3","draggable","t25","t26","t27","t28","t29","_temp$2","t30","t31","t32","t33","t34","Box","t35","Flex","t36","t37","t38","sortIcons","t39","filter","filtering","t40","t41","deferredResize","t42","e_4","DataTableHeaderSelectorCell","checkboxProps","checked","indeterminate","Checkbox","getGroupPinnedInfo","leafAccessors","pinnedInfos","logicalSides","logicalSide","targetAcc","boundaryAcc","boundaryInfo","DataTableHeader","maxGroupDepth","totalHeaderRows","onSelectionChange","selectionCheckboxProps","selectionChecked","selectionColumnClassName","selectionColumnStyle","selectionIndeterminate","selectionTrigger","allRecordsSelectorCell","columnsPopoverOpened","setColumnsPopoverOpened","_temp$1","someColumnsToggleable","_temp2$1","columnToggleCheckboxLabels","T0","TableThead","_temp3","groupsAtDepth","depthIndex","title_0","titleClassName","titleStyle","Stack","_temp4","columnsPopoverOpened_0","DataTableLoader","fetching","backgroundBlur","customContent","size","type","Loader","IconSelector","HEIGHT","DataTablePageSizeSelector","label","MenuTarget","Button","activeBackgroundColor","activeTextColor","isCurrent","MenuItem","theme_0","MenuDropdown","Menu","DataTablePagination","paginationTextValue","loadingText","noRecordsText","page","paginationText","recordsLength","recordsPerPage","totalRecords","from","totalPages","from_0","to_0","paginationWrapBreakpoint","breakpoints","isWrapped","paginationSize","onRecordsPerPageChange","recordsPerPageLabel","recordsPerPageOptions","props_0","getPaginationControlProps","getPaginationItemProps","onPageChange","paginationWithControls","paginationWithEdges","Pagination","props_1","horizontalSpacing","renderPagination","Controls","n_0","ctx","DataTableRowCell","onClick","onDoubleClick","onContextMenu","customCellAttributes","defaultRender","render","TableTd","DataTableRowExpansion","odd","rowRef","Collapse","DataTableRowSelectorCell","getCheckboxProps","otherProps","withRightShadow","allCheckboxProps","handleClick","DataTableRowInner","handleSelectionChange","getSelectionCheckboxProps","isRecordSelectable","defaultColumnRender","onCellClick","onCellContextMenu","onCellDoubleClick","hiddenContent","cellsClassName","cellsStyle","event_1","event_2","cols","expansionColSpan","virtualizedExpansionRowRef","expandedElement","rowProps","customAttributes","rowFactory","virtualizedMeasureRef","baseRowProps","getRowProps","DataTableRow","memo","isExpandable","expandOnClick","e","colorValue","backgroundColorValue","DataTableScrollArea","leftShadowBehind","rightShadowBehind","onScrollPositionChange","scrollAreaProps","viewportRef","ScrollArea","DataTableSpacerRow","defaultAllRecordsSelectionCheckboxProps","defaultGetRecordSelectionCheckboxProps","defaultPaginationText","to","defaultGetPaginationControlProps","control","DataTable","bodyRef","borderRadius","c$1","classNames","customLoader","customRowAttributes","emptyState","highlightOnHover","loaderBackgroundBlur","loaderColor","loaderSize","loaderType","m","maxHeight","mb","minHeight","ml","mr","mt","mx","my","noHeader","noRecordsIcon","onRowClick","onRowContextMenu","onRowDoubleClick","onScrollToBottom","onScrollToLeft","onScrollToRight","onScrollToTop","onSelectedRecordsChange","rowBackgroundColor","rowClassName","rowColor","rowStyle","selectedRecords","shadow","storeColumnsKey","striped","styles","tableRef","tableWrapper","textSelectionDisabled","virtualized","virtualizedMeasureRows","virtualizedRowHeight","withTableBorder","verticalAlign","allRecordsSelectionCheckboxProps","getRecordSelectionCheckboxProps","virtualizedOverscan","flatColumns","handleScrollPositionChange","rootElementRef","tableElementRef","scrollViewportElementRef","headerElementRef","selectionColumnHeaderElementRef","trackedScrollViewportRef","trackedHeaderRef","trackedFooterRef","trackedSelectionColumnHeaderRef","dragToggle","_temp","hasFooter","mergedTableRef","mergedViewportRef","internalBodyRef","mergedBodyRef","rowExpansionInfo","resetScrollPending","prevPageRef","recordsAtPageChangeRef","newPage","handlePageChange","getVirtualItemKey","rowVirtualization","raf","stableSelectionCheckboxProps","selectionColumnVisible","allSelectableRecordsSelected","selectableRecordIds","selectableRecords","selectedRecordIdsSet","hasRecordsAndSelectedRecords","id_0","someRecordsSelected","selectableRecordIdsSet","handleHeaderSelectionChange","lastSelectionChangeRef","record_3","isSelected","anchor","lastSelectionChangeIndex","targetRecords","idx","rec","r_0","rec_0","rec_1","handleRecordSelectionChange","rowSelectionChangeHandler","stableOnRowClick","stableOnRowDoubleClick","stableOnRowContextMenu","stableOnCellClick","stableOnCellDoubleClick","stableOnCellContextMenu","t43","marginProperties","t44","_temp2","fullRowColSpan","t45","record_4","index_1","renderRow","t46","t47","TableWrapper","t48","t49","t50","t51","t52","t53","t54","t55","t56","t57","t58","t59","t60","t61","t62","t63","t64","index_2","t65","record_5","index_3","t66","t67","Table","t68","t69","t70","t71","t72","t73","t74","t75","DataTableDraggableRow","isDragging","refProp","mergedRef","headerRow","headerCellDimensions"],"sources":["../package/cssVariables.ts","../package/DataTableColumns.context.ts","../package/DataTableDragToggleProvider.tsx","../package/DataTableEmptyRow.tsx","../package/icons/IconDatabaseOff.tsx","../package/DataTableEmptyState.tsx","../package/utils.ts","../package/hooks/useDataTableColumnPinning.ts","../package/hooks/useDataTableColumnReorder.ts","../package/hooks/useDataTableColumnResize.ts","../package/hooks/useDataTableColumnToggle.ts","../package/hooks/useDataTableColumns.ts","../package/hooks/useIsomorphicLayoutEffect.ts","../package/hooks/useStableValue.ts","../package/hooks/useTrackedElement.ts","../package/hooks/useDataTableInjectCssVariables.ts","../package/hooks/useDataTablePinnedColumns.ts","../package/hooks/useMediaQueries.ts","../package/hooks/useMediaQueriesStringOrFunction.ts","../package/hooks/useMediaQueryStringOrFunction.ts","../package/hooks/useStableCallback.ts","../package/hooks/useOptionalCallbackRef.ts","../package/hooks/useRowExpansion.ts","../package/hooks/useRowExpansionStatus.ts","../package/hooks/useRowVirtualization.ts","../package/hooks/useShallowStable.ts","../package/utilityClasses.ts","../package/DataTableFooterCell.tsx","../package/DataTableFooterSelectorPlaceholderCell.tsx","../package/DataTableFooter.tsx","../package/DataTableColumnGroupHeaderCell.tsx","../package/icons/IconFilter.tsx","../package/icons/IconFilterFilled.tsx","../package/DataTableHeaderCellFilter.tsx","../package/icons/IconArrowLeft.tsx","../package/icons/IconArrowRight.tsx","../package/icons/IconPin.tsx","../package/icons/IconX.tsx","../package/DataTablePinnableDropdown.tsx","../package/DataTableResizableHeaderHandle.tsx","../package/icons/IconArrowsVertical.tsx","../package/icons/IconArrowUp.tsx","../package/icons/IconGripVertical.tsx","../package/DataTableHeaderCell.tsx","../package/DataTableHeaderSelectorCell.tsx","../package/DataTableHeader.tsx","../package/DataTableLoader.tsx","../package/icons/IconSelector.tsx","../package/DataTablePageSizeSelector.tsx","../package/DataTablePagination.tsx","../package/DataTableRowCell.tsx","../package/DataTableRowExpansion.tsx","../package/DataTableRowSelectorCell.tsx","../package/DataTableRow.tsx","../package/DataTableScrollArea.tsx","../package/DataTableSpacerRow.tsx","../package/DataTable.tsx","../package/DataTableDraggableRow.tsx"],"sourcesContent":["import { type MantineColor, type MantineTheme, parseThemeColor } from '@mantine/core';\nimport type { DataTableProps } from './types';\n\nexport function getColor(\n color: MantineColor | undefined | { light: MantineColor; dark: MantineColor },\n theme: MantineTheme,\n colorScheme: 'light' | 'dark'\n) {\n return color\n ? parseThemeColor({\n color: typeof color === 'object' ? color[colorScheme] : color,\n theme,\n }).value\n : undefined;\n}\n\nexport function getTableCssVariables({\n theme,\n c,\n backgroundColor,\n borderColor,\n rowBorderColor,\n stripedColor,\n highlightOnHoverColor,\n}: Pick<\n DataTableProps,\n 'c' | 'backgroundColor' | 'borderColor' | 'rowBorderColor' | 'stripedColor' | 'highlightOnHoverColor'\n> & {\n theme: MantineTheme;\n}) {\n return {\n '--mantine-datatable-color-light': getColor(c, theme, 'light'),\n '--mantine-datatable-color-dark': getColor(c, theme, 'dark'),\n\n '--mantine-datatable-background-color-light': getColor(backgroundColor, theme, 'light'),\n '--mantine-datatable-background-color-dark': getColor(backgroundColor, theme, 'dark'),\n\n '--mantine-datatable-border-color-light': getColor(borderColor, theme, 'light'),\n '--mantine-datatable-border-color-dark': getColor(borderColor, theme, 'dark'),\n\n '--mantine-datatable-row-border-color-light': getColor(rowBorderColor, theme, 'light'),\n '--mantine-datatable-row-border-color-dark': getColor(rowBorderColor, theme, 'dark'),\n\n '--mantine-datatable-striped-color-light': getColor(stripedColor, theme, 'light'),\n '--mantine-datatable-striped-color-dark': getColor(stripedColor, theme, 'dark'),\n\n '--mantine-datatable-highlight-on-hover-color-light': getColor(highlightOnHoverColor, theme, 'light'),\n '--mantine-datatable-highlight-on-hover-color-dark': getColor(highlightOnHoverColor, theme, 'dark'),\n };\n}\n\nexport function getPaginationCssVariables({\n theme,\n paginationActiveTextColor,\n paginationActiveBackgroundColor,\n}: Pick<DataTableProps, 'paginationActiveTextColor' | 'paginationActiveBackgroundColor'> & {\n theme: MantineTheme;\n}) {\n return {\n '--mantine-datatable-pagination-active-text-color-light': getColor(paginationActiveTextColor, theme, 'light'),\n '--mantine-datatable-pagination-active-text-color-dark': getColor(paginationActiveTextColor, theme, 'dark'),\n\n '--mantine-datatable-pagination-active-background-color-light': getColor(\n paginationActiveBackgroundColor,\n theme,\n 'light'\n ),\n '--mantine-datatable-pagination-active-background-color-dark': getColor(\n paginationActiveBackgroundColor,\n theme,\n 'dark'\n ),\n };\n}\n\nexport function getRowCssVariables({\n theme,\n color,\n backgroundColor,\n}: {\n theme: MantineTheme;\n color: MantineColor | undefined | { light: MantineColor; dark: MantineColor };\n backgroundColor: MantineColor | undefined | { light: MantineColor; dark: MantineColor };\n}) {\n return {\n '--mantine-datatable-row-color-light': getColor(color, theme, 'light'),\n '--mantine-datatable-row-color-dark': getColor(color, theme, 'dark'),\n '--mantine-datatable-row-background-color-light': getColor(backgroundColor, theme, 'light'),\n '--mantine-datatable-row-background-color-dark': getColor(backgroundColor, theme, 'dark'),\n };\n}\n","import { createSafeContext } from '@mantine/core';\nimport type { Dispatch, SetStateAction } from 'react';\nimport type { DataTableColumnPinning, DataTableColumnToggle } from './hooks';\n\ninterface DataTableColumnsContext {\n // accessor of the column which is currently dragged\n sourceColumn: string;\n setSourceColumn: Dispatch<SetStateAction<string>>;\n\n // accessor of the column which is currently hovered\n targetColumn: string;\n setTargetColumn: Dispatch<SetStateAction<string>>;\n\n // swap the source column with the target column\n swapColumns: () => void;\n\n // reset to the default columns order\n resetColumnsOrder: () => void;\n\n columnsToggle: DataTableColumnToggle[];\n setColumnsToggle: (toggle: DataTableColumnToggle[]) => void;\n resetColumnsToggle: () => void;\n\n columnsPinning: DataTableColumnPinning[];\n setColumnsPinning: Dispatch<SetStateAction<DataTableColumnPinning[]>>;\n resetColumnsPinning: () => void;\n\n setColumnWidth: (accessor: string, width: string | number) => void;\n setMultipleColumnWidths: (updates: Array<{ accessor: string; width: string | number }>) => void;\n resetColumnsWidth: () => void;\n\n // Drag lifecycle: snapshot DOM widths, lock the table, then persist on release\n beginResize: () => ReadonlySet<string>;\n endResize: () => void;\n}\n\nexport const [DataTableColumnsContextProvider, useDataTableColumnsContext] = createSafeContext<DataTableColumnsContext>(\n 'useDataTableColumnsContext must be used within DataTableColumnProvider'\n);\n","'use client';\n\nimport { type Dispatch, type PropsWithChildren, type SetStateAction, useState } from 'react';\nimport { DataTableColumnsContextProvider } from './DataTableColumns.context';\nimport type { DataTableColumnPinning, DataTableColumnToggle, PinnedColumnInfo } from './hooks';\n\ntype DataTableColumnsProviderProps = PropsWithChildren<{\n columnsOrder: string[];\n setColumnsOrder: (order: string[]) => void;\n resetColumnsOrder: () => void;\n\n columnsToggle: DataTableColumnToggle[];\n setColumnsToggle: (toggle: DataTableColumnToggle[]) => void;\n resetColumnsToggle: () => void;\n\n columnsPinning: DataTableColumnPinning[];\n setColumnsPinning: Dispatch<SetStateAction<DataTableColumnPinning[]>>;\n resetColumnsPinning: () => void;\n\n setColumnWidth: (accessor: string, width: string | number) => void;\n setMultipleColumnWidths: (updates: Array<{ accessor: string; width: string | number }>) => void;\n resetColumnsWidth: () => void;\n\n beginResize: () => ReadonlySet<string>;\n endResize: () => void;\n\n pinnedMap: Map<string, PinnedColumnInfo>;\n}>;\n\nexport const DataTableColumnsProvider = (props: DataTableColumnsProviderProps) => {\n const {\n children,\n columnsOrder,\n setColumnsOrder,\n columnsToggle,\n setColumnsToggle,\n columnsPinning,\n setColumnsPinning,\n\n resetColumnsOrder,\n resetColumnsToggle,\n resetColumnsPinning,\n\n setColumnWidth,\n setMultipleColumnWidths,\n resetColumnsWidth,\n\n beginResize,\n endResize,\n\n pinnedMap,\n } = props;\n\n const [sourceColumn, setSourceColumn] = useState('');\n const [targetColumn, setTargetColumn] = useState('');\n\n const swapColumns = () => {\n if (!columnsOrder || !setColumnsOrder || !sourceColumn || !targetColumn) {\n return;\n }\n\n const sourceInfo = pinnedMap.get(sourceColumn);\n const targetInfo = pinnedMap.get(targetColumn);\n if (sourceInfo?.logicalSide !== targetInfo?.logicalSide) return;\n\n const sourceIndex = columnsOrder.indexOf(sourceColumn);\n const targetIndex = columnsOrder.indexOf(targetColumn);\n\n if (sourceIndex !== -1 && targetIndex !== -1) {\n const newOrder = [...columnsOrder];\n const [removed] = newOrder.splice(sourceIndex, 1);\n newOrder.splice(targetIndex, 0, removed);\n setColumnsOrder(newOrder);\n }\n };\n\n return (\n <DataTableColumnsContextProvider\n value={{\n sourceColumn,\n setSourceColumn,\n targetColumn,\n setTargetColumn,\n columnsToggle,\n setColumnsToggle,\n columnsPinning,\n setColumnsPinning,\n swapColumns,\n resetColumnsOrder,\n resetColumnsToggle,\n resetColumnsPinning,\n\n setColumnWidth,\n setMultipleColumnWidths,\n resetColumnsWidth,\n\n beginResize,\n endResize,\n }}\n >\n {children}\n </DataTableColumnsContextProvider>\n );\n};\n","export function DataTableEmptyRow() {\n return (\n <tr className=\"mantine-datatable-empty-row\">\n <td />\n </tr>\n );\n}\n","export function IconDatabaseOff() {\n return (\n <svg\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n strokeWidth=\"2\"\n stroke=\"currentColor\"\n fill=\"none\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path stroke=\"none\" d=\"M0 0h24v24H0z\" fill=\"none\" />\n <path d=\"M12.983 8.978c3.955 -.182 7.017 -1.446 7.017 -2.978c0 -1.657 -3.582 -3 -8 -3c-1.661 0 -3.204 .19 -4.483 .515m-2.783 1.228c-.471 .382 -.734 .808 -.734 1.257c0 1.22 1.944 2.271 4.734 2.74\" />\n <path d=\"M4 6v6c0 1.657 3.582 3 8 3c.986 0 1.93 -.067 2.802 -.19m3.187 -.82c1.251 -.53 2.011 -1.228 2.011 -1.99v-6\" />\n <path d=\"M4 12v6c0 1.657 3.582 3 8 3c3.217 0 5.991 -.712 7.261 -1.74m.739 -3.26v-4\" />\n <path d=\"M3 3l18 18\" />\n </svg>\n );\n}\n","import { Center, Text } from '@mantine/core';\nimport { IconDatabaseOff } from './icons/IconDatabaseOff';\n\ntype DataTableEmptyStateProps = React.PropsWithChildren<{\n icon: React.ReactNode | undefined;\n text: string;\n active: boolean;\n}>;\n\nexport function DataTableEmptyState({ icon, text, active, children }: DataTableEmptyStateProps) {\n return (\n <Center className=\"mantine-datatable-empty-state\" data-active={active || undefined}>\n {children || (\n <>\n {icon || (\n <div className=\"mantine-datatable-empty-state-icon\">\n <IconDatabaseOff />\n </div>\n )}\n <Text component=\"div\" size=\"sm\" c=\"dimmed\">\n {text}\n </Text>\n </>\n )}\n </Center>\n );\n}\n","import type { DropResult } from '@hello-pangea/dnd';\nimport type { DataTableColumn, DataTableColumnGroup, DataTableIdAccessor } from './types';\n\n/**\n * Utility function that returns a humanized version of a string, e.g. \"camelCase\" -> \"Camel Case\"\n */\nexport function humanize(value: string) {\n const str = value\n .replace(/([a-z\\d])([A-Z]+)/g, '$1 $2')\n .replace(/\\W|_/g, ' ')\n .trim()\n .toLowerCase();\n return `${str.charAt(0).toUpperCase()}${str.slice(1)}`;\n}\n\n/**\n * Sanitizes a value read from `localStorage` before the column hooks call array\n * methods on it.\n *\n * Persisted column state is synchronized across browser tabs through the native\n * `storage` event (e.g. when a tab is duplicated). A malformed or unexpected\n * value — written by another tab, by a different DataTable instance sharing the\n * same `storeColumnsKey`, or by manual tampering — is delivered verbatim to\n * every listening table. Without this guard such a value flows straight into\n * `.map()` / `.forEach()` and crashes the app with\n * `TypeError: <x>.map is not a function`.\n *\n * Returns `value` when it is an array whose items all pass the optional\n * `isValidItem` predicate; otherwise returns `fallback`.\n */\nexport function sanitizeStoredArray<T>(value: unknown, fallback: T[], isValidItem?: (item: unknown) => boolean): T[] {\n if (!Array.isArray(value)) return fallback;\n if (isValidItem && !value.every(isValidItem)) return fallback;\n return value as T[];\n}\n\n/**\n * Predicate matching the `{ accessor: string, ... }` shape persisted for column\n * toggle and pinning state.\n */\nexport function hasStringAccessor(item: unknown): boolean {\n return typeof item === 'object' && item !== null && typeof (item as { accessor?: unknown }).accessor === 'string';\n}\n\n/**\n * Utility function that returns an array of values that are present in the first array but not in the second\n */\nexport function differenceBy<T>(arr1: T[], arr2: T[], iteratee: (value: T) => unknown) {\n const excluded = new Set(arr2.map(iteratee));\n return arr1.filter((c) => !excluded.has(iteratee(c)));\n}\n\n/**\n * Utility function that returns an array of unique values from a given array\n */\nexport function uniqBy<T>(arr: T[], iteratee: (value: T) => unknown) {\n const seen = new Set<unknown>();\n return arr.filter((x) => {\n const key = iteratee(x);\n if (seen.has(key)) return false;\n seen.add(key);\n return true;\n });\n}\n\n/**\n * Utility function that returns the value at a given path in an object\n */\nexport function getValueAtPath<T>(obj: T, path: keyof T | (string & NonNullable<unknown>)) {\n if (!path) return undefined;\n const pathArray = (path as string).match(/([^[.\\]])+/g) as string[];\n return pathArray.reduce((prevObj: unknown, key) => prevObj && (prevObj as Record<string, unknown>)[key], obj);\n}\n\n/**\n * Utility function that returns the record id using idAccessor\n */\nexport function getRecordId<T>(record: T, idAccessor: DataTableIdAccessor<T>) {\n return typeof idAccessor === 'string'\n ? getValueAtPath(record, idAccessor)\n : (idAccessor as (record: T) => React.Key)(record);\n}\n\n/**\n * Utility function that reorders an array of records by a given field used for drag'n'drop functionality.\n * @see https://github.com/hello-pangea/dnd\n */\nexport function reorderRecords<T>(dropResult: DropResult, records: T[]): T[] {\n const draft = structuredClone(records);\n const prev = draft[dropResult.source.index];\n\n if (dropResult.destination) {\n draft.splice(dropResult.source.index, 1);\n draft.splice(dropResult.destination.index, 0, prev);\n }\n\n return draft;\n}\n\n/**\n * Utility function that swaps elements of an array, by a given result from drag'n'drop functionality.\n * @see https://github.com/hello-pangea/dnd\n */\nexport function swapRecords<T>(dropResult: DropResult, records: T[]): T[] {\n const draft = structuredClone(records);\n\n const destination = dropResult.destination;\n\n if (!destination) return draft;\n\n const sourceEl = draft[dropResult.source.index];\n const destEl = draft[destination.index];\n\n draft.splice(destination.index, 1, sourceEl);\n draft.splice(dropResult.source.index, 1, destEl);\n\n return draft;\n}\n\n/**\n * Calculates the maximum depth of nested column groups\n */\nexport function getMaxGroupDepth<T>(groups: readonly DataTableColumnGroup<T>[]): number {\n if (!groups || groups.length === 0) return 0;\n\n return Math.max(\n ...groups.map((group) => {\n if (group.groups && group.groups.length > 0) {\n return 1 + getMaxGroupDepth(group.groups);\n }\n return 1;\n })\n );\n}\n\n/**\n * Flattens nested column groups to extract all columns at the deepest level\n */\nexport function flattenColumns<T>(groups: DataTableColumnGroup<T>[]): DataTableColumn<T>[] {\n const columns: DataTableColumn<T>[] = [];\n\n for (const group of groups) {\n if (group.columns && group.columns.length > 0) {\n columns.push(...group.columns.filter((col) => col != null));\n } else if (group.groups && group.groups.length > 0) {\n columns.push(...flattenColumns(group.groups));\n }\n }\n\n return columns.filter((col) => col != null);\n}\n\n/**\n * Calculates the column span for a group based on visible columns\n */\nexport function calculateColSpan<T>(group: DataTableColumnGroup<T>, visibles?: (boolean | undefined)[]): number {\n if (group.columns && group.columns.length > 0) {\n return group.columns.filter((column, index) => {\n if (column.hidden) return false;\n return visibles ? visibles[index] !== false : true;\n }).length;\n }\n\n if (group.groups && group.groups.length > 0) {\n return group.groups.reduce((sum, subGroup) => {\n return sum + calculateColSpan(subGroup, visibles);\n }, 0);\n }\n\n return 0;\n}\n\n/**\n * Gets all groups at a specific depth level\n */\nexport function getGroupsAtDepth<T>(\n groups: readonly DataTableColumnGroup<T>[],\n targetDepth: number,\n currentDepth: number = 0\n): DataTableColumnGroup<T>[] {\n if (currentDepth === targetDepth) {\n return [...groups];\n }\n\n const result: DataTableColumnGroup<T>[] = [];\n for (const group of groups) {\n if (group.groups && group.groups.length > 0) {\n result.push(...getGroupsAtDepth(group.groups, targetDepth, currentDepth + 1));\n }\n }\n\n return result;\n}\n\n/**\n * Checks if a group needs a right border based on its position and context\n */\nexport function needsRightBorder(\n isLastGroup: boolean,\n hasMoreColumnsAfter: boolean,\n withColumnBorders: boolean\n): boolean {\n if (!withColumnBorders) return false;\n return !isLastGroup || hasMoreColumnsAfter;\n}\n\n// While a column is dragged, the handle writes the live width as this variable on the table, so\n// header and body cells follow the pointer without a React render. The committed width stays the\n// fallback and the variable is removed once the drag ends.\nexport function columnWidthVar(accessor: string) {\n return `--mantine-datatable-column-width-${accessor.replace(/[^a-zA-Z0-9_-]/g, '_')}`;\n}\n\nexport function columnWidthValue(accessor: string, width: string | number | undefined) {\n if (width === undefined) return undefined;\n return `var(${columnWidthVar(accessor)}, ${typeof width === 'number' ? `${width}px` : width})`;\n}\n","import { useLocalStorage } from '@mantine/hooks';\nimport { useEffect, useMemo } from 'react';\nimport type { DataTableColumn } from '../types/DataTableColumn';\nimport { hasStringAccessor, sanitizeStoredArray } from '../utils';\n\nexport type DataTableColumnPinning = {\n accessor: string;\n defaultPinned: 'left' | 'right' | undefined;\n pinnable: boolean;\n pinned: 'left' | 'right' | undefined;\n};\n\n/**\n * Hook to handle column pinning with localStorage persistence.\n * @see https://documatrix.github.io/mantine-datatable/examples/interactive-column-pinning/\n */\nexport function useDataTableColumnPinning<T>({\n key,\n columns = [],\n getInitialValueInEffect = true,\n}: {\n /**\n * The key to use in localStorage to store the columns pinning state.\n */\n key: string | undefined;\n /**\n * Columns definitions.\n */\n columns: DataTableColumn<T>[];\n /**\n * If set to true, value will be updated in useEffect after mount.\n * @default true\n */\n getInitialValueInEffect?: boolean;\n}) {\n // Default columns pinning state\n const defaultColumnsPinning = useMemo(\n () =>\n columns.map((column) => ({\n accessor: column.accessor as string,\n defaultPinned: column.pinned,\n pinnable: !!column.pinnable,\n pinned: column.pinned,\n })),\n [columns]\n );\n\n const [storedColumnsPinning, _setColumnsPinning] = useLocalStorage<DataTableColumnPinning[]>({\n key: key ? `${key}-columns-pinning` : '',\n defaultValue: key ? defaultColumnsPinning : undefined,\n getInitialValueInEffect,\n });\n\n // Guard against malformed persisted state (e.g. a non-array value propagated\n // across tabs via the `storage` event) before any `.map()` / `.forEach()` call.\n const columnsPinning = sanitizeStoredArray<DataTableColumnPinning>(\n storedColumnsPinning,\n defaultColumnsPinning,\n hasStringAccessor\n );\n\n function setColumnsPinning(\n pinning: DataTableColumnPinning[] | ((prev: DataTableColumnPinning[]) => DataTableColumnPinning[])\n ) {\n if (!key) return;\n if (typeof pinning === 'function') {\n _setColumnsPinning((prev) => pinning(prev ?? defaultColumnsPinning));\n } else {\n _setColumnsPinning(pinning);\n }\n }\n\n // Align stored pinning state with current column definitions: drop accessors\n // that no longer exist, append accessors added since last persisted state.\n const alignedColumnsPinning = useMemo(() => {\n if (!columnsPinning) return defaultColumnsPinning;\n const aligned: DataTableColumnPinning[] = [];\n columnsPinning.forEach((col) => {\n if (columns.find((c) => c.accessor === col.accessor)) {\n aligned.push(col);\n }\n });\n columns.forEach((col) => {\n if (!aligned.find((c) => c.accessor === col.accessor)) {\n aligned.push({\n accessor: col.accessor as string,\n defaultPinned: col.pinned,\n pinnable: !!col.pinnable,\n pinned: col.pinned,\n });\n }\n });\n return aligned;\n }, [columnsPinning, columns, defaultColumnsPinning]);\n\n // Persist alignment in an effect — never set state during render\n useEffect(() => {\n if (!key) return;\n if (!columnsPinning) return;\n if (JSON.stringify(alignedColumnsPinning) !== JSON.stringify(columnsPinning)) {\n _setColumnsPinning(alignedColumnsPinning);\n }\n }, [key, alignedColumnsPinning, columnsPinning, _setColumnsPinning]);\n\n const resetColumnsPinning = () => {\n setColumnsPinning(defaultColumnsPinning);\n };\n\n if (!key) {\n return {\n columnsPinning: defaultColumnsPinning,\n setColumnsPinning,\n resetColumnsPinning,\n } as const;\n }\n\n return {\n columnsPinning: alignedColumnsPinning,\n setColumnsPinning,\n resetColumnsPinning,\n } as const;\n}\n","import { useLocalStorage } from '@mantine/hooks';\nimport { useEffect, useMemo } from 'react';\nimport type { DataTableColumn } from '../types/DataTableColumn';\nimport { sanitizeStoredArray } from '../utils';\n\n/**\n * Hook to handle column reordering with localStorage persistence.\n * @see https://documatrix.github.io/mantine-datatable/examples/column-dragging-and-toggling/\n */\nexport function useDataTableColumnReorder<T>({\n key,\n columns = [],\n getInitialValueInEffect = true,\n}: {\n /**\n * The key to use in localStorage to store the columns order.\n */\n key: string | undefined;\n /**\n * Columns definitions.\n */\n columns: DataTableColumn<T>[];\n /**\n * If set to true, value will be updated in useEffect after mount.\n * @default true\n */\n getInitialValueInEffect?: boolean;\n}) {\n // Default columns order is the order of the columns in the array\n const defaultColumnsOrder = useMemo(\n () => (columns ? (columns.map((column) => column.accessor) as string[]) : []),\n [columns]\n );\n\n const [storedColumnsOrder, _setColumnsOrder] = useLocalStorage<string[]>({\n key: key ? `${key}-columns-order` : '',\n defaultValue: key ? defaultColumnsOrder : undefined,\n getInitialValueInEffect,\n });\n\n // Guard against malformed persisted state (e.g. a non-array value propagated\n // across tabs via the `storage` event) before any `.map()` / `.forEach()` call.\n const columnsOrder = sanitizeStoredArray<string>(\n storedColumnsOrder,\n defaultColumnsOrder as string[],\n (item) => typeof item === 'string'\n );\n\n function setColumnsOrder(order: string[]) {\n if (key) {\n _setColumnsOrder(order);\n }\n }\n\n // Align stored order with current column definitions: drop accessors that no\n // longer exist, append accessors added since last persisted state.\n const alignedColumnsOrder = useMemo(() => {\n if (!columnsOrder) return defaultColumnsOrder;\n const aligned: string[] = [];\n columnsOrder.forEach((col) => {\n if (columns.find((c) => c.accessor === col)) {\n aligned.push(col);\n }\n });\n columns.forEach((col) => {\n if (!aligned.includes(col.accessor as string)) {\n aligned.push(col.accessor as string);\n }\n });\n return aligned;\n }, [columnsOrder, columns, defaultColumnsOrder]);\n\n // Persist alignment in an effect — never set state during render\n useEffect(() => {\n if (!key) return;\n if (!columnsOrder) return;\n if (JSON.stringify(alignedColumnsOrder) !== JSON.stringify(columnsOrder)) {\n _setColumnsOrder(alignedColumnsOrder);\n }\n }, [key, alignedColumnsOrder, columnsOrder, _setColumnsOrder]);\n\n const resetColumnsOrder = () => {\n setColumnsOrder(defaultColumnsOrder);\n };\n\n if (!key) {\n return {\n columnsOrder,\n setColumnsOrder,\n resetColumnsOrder,\n } as const;\n }\n\n return {\n columnsOrder: alignedColumnsOrder,\n setColumnsOrder,\n resetColumnsOrder,\n } as const;\n}\n","import { useLocalStorage } from '@mantine/hooks';\nimport { type RefObject, useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport type { DataTableColumn } from '../types/DataTableColumn';\nimport { sanitizeStoredArray } from '../utils';\n\ntype DataTableColumnWidth = Record<string, string | number>;\n\n/**\n * Hook to handle column resizing with localStorage persistence.\n *\n * Strategy (mirrors `mantine-list-view-table`):\n * 1. Until the user grabs a handle, the table stays in `table-layout: auto`\n * so declarative widths — including `width: '0%'` on actions columns —\n * work as documented.\n * 2. On mousedown we snapshot every resizable header cell into pixel widths.\n * When every visible column is resizable this switches to\n * `table-layout: fixed`, so pixel widths are honored strictly during the\n * drag and afterwards. Otherwise the non-resizable columns stay at their\n * declared width and absorb the remaining space.\n * 3. The lock stays in place until `resetColumnsWidth` is called.\n *\n * @see https://documatrix.github.io/mantine-datatable/examples/column-resizing/\n */\nexport function useDataTableColumnResize<T>({\n key,\n columns = [],\n getInitialValueInEffect = true,\n headerRef,\n}: {\n /** The key to use in localStorage to store the columns width. */\n key: string | undefined;\n /** Columns definitions. */\n columns: DataTableColumn<T>[];\n /**\n * If set to true, value will be updated in useEffect after mount.\n * @default true\n */\n getInitialValueInEffect?: boolean;\n /** Reference to the table header element for measuring column widths. */\n headerRef?: RefObject<HTMLTableSectionElement | null>;\n /**\n * Reference to the scroll viewport for calculating overflow.\n * Kept for backwards compatibility; no longer used internally.\n */\n scrollViewportRef?: RefObject<HTMLElement | null>;\n}) {\n const hasResizableColumns = useMemo(() => {\n return columns.some((c) => c.resizable && !c.hidden && c.accessor !== '__selection__');\n }, [columns]);\n\n const getDefaultColumnsWidth = useCallback(() => {\n return columns\n .filter((column) => column.accessor !== '__selection__')\n .map((column) => ({ [column.accessor]: column.width ?? 'auto' }));\n }, [columns]);\n\n // Honor caller's `getInitialValueInEffect`: when false the read is synchronous\n // and we can seed `effectiveColumnsWidth` directly; when true the value lands\n // after mount and the hydration effect below picks it up.\n const [rawStoredColumnsWidth, setStoredColumnsWidth] = useLocalStorage<DataTableColumnWidth[]>({\n key: key ? `${key}-columns-width` : '',\n defaultValue: key ? getDefaultColumnsWidth() : undefined,\n getInitialValueInEffect,\n });\n\n // Guard against malformed persisted state (e.g. a non-array value propagated\n // across tabs via the `storage` event) before any `.map()` / `.filter()` call.\n const storedColumnsWidth = sanitizeStoredArray<DataTableColumnWidth>(\n rawStoredColumnsWidth,\n [],\n (item) => typeof item === 'object' && item !== null\n );\n\n const [effectiveColumnsWidth, setEffectiveColumnsWidth] = useState<DataTableColumnWidth[]>(() => {\n if (key && storedColumnsWidth.length > 0) {\n return storedColumnsWidth;\n }\n return getDefaultColumnsWidth();\n });\n\n // True only during an active drag — drives cursor / user-select styling\n const [isResizing, setIsResizing] = useState(false);\n\n // Marks effective widths as user-changed so the persistence effect knows to\n // sync them to localStorage. Hydration / column re-alignment never set this.\n const dirtyRef = useRef(false);\n\n // Sync stored → effective whenever the persisted value lands or changes\n // (covers `getInitialValueInEffect: true`, cross-tab updates, etc.).\n // Idempotent: when values are unchanged React bails out of the re-render.\n useEffect(() => {\n if (!key) return;\n if (!storedColumnsWidth || storedColumnsWidth.length === 0) return;\n\n setEffectiveColumnsWidth(storedColumnsWidth);\n }, [key, storedColumnsWidth]);\n\n // Re-align effective state with the current column set: drop entries for\n // removed accessors, add defaults for newly introduced columns. Bails out\n // when nothing actually changed to avoid extra renders.\n useEffect(() => {\n setEffectiveColumnsWidth((prev) => {\n const validAccessors = new Set(\n columns.filter((c) => c.accessor !== '__selection__').map((c) => String(c.accessor))\n );\n const filtered = prev.filter((entry) => validAccessors.has(Object.keys(entry)[0]));\n const present = new Set(filtered.map((entry) => Object.keys(entry)[0]));\n let added = false;\n for (const column of columns) {\n if (column.accessor === '__selection__') continue;\n const accessor = String(column.accessor);\n if (present.has(accessor)) continue;\n filtered.push({ [accessor]: column.width ?? 'auto' });\n added = true;\n }\n const removed = filtered.length !== prev.length || added;\n return removed ? filtered : prev;\n });\n }, [columns]);\n\n const updateColumnWidths = useCallback((updates: Array<{ accessor: string; width: string | number }>) => {\n const filtered = updates.filter((u) => u.accessor !== '__selection__');\n if (filtered.length === 0) return;\n\n dirtyRef.current = true;\n setEffectiveColumnsWidth((prev) =>\n prev.map((col) => {\n const accessor = Object.keys(col)[0];\n const update = filtered.find((u) => u.accessor === accessor);\n return update ? { [accessor]: update.width } : col;\n })\n );\n }, []);\n\n // Persist user-initiated width changes — but only when no drag is in flight.\n // `localStorage.setItem` is synchronous and writing it on every mousemove\n // would block the main thread and visibly hurt drag smoothness.\n useEffect(() => {\n if (!key || !dirtyRef.current) return;\n if (isResizing) return;\n dirtyRef.current = false;\n setStoredColumnsWidth(effectiveColumnsWidth);\n }, [key, effectiveColumnsWidth, isResizing, setStoredColumnsWidth]);\n\n const setColumnWidth = useCallback(\n (accessor: string, width: string | number) => {\n updateColumnWidths([{ accessor, width }]);\n },\n [updateColumnWidths]\n );\n\n const setMultipleColumnWidths = useCallback(\n (updates: Array<{ accessor: string; width: string | number }>) => {\n updateColumnWidths(updates);\n },\n [updateColumnWidths]\n );\n\n /**\n * Snapshot every resizable header cell width into the React state. Called the\n * moment the user grabs a handle. Idempotent: if all cells are already\n * pixel-locked the snapshot reads back the same values.\n * Returns the accessors of the resizable columns.\n */\n const beginResize = useCallback((): ReadonlySet<string> => {\n setIsResizing(true);\n\n const resizable = new Set(\n columns.filter((c) => c.resizable && c.accessor !== '__selection__').map((c) => String(c.accessor))\n );\n\n const thead = headerRef?.current;\n if (!thead) return resizable;\n\n const snapshot = new Map<string, string>();\n\n for (const cell of thead.querySelectorAll<HTMLTableCellElement>('th[data-accessor]')) {\n const accessor = cell.getAttribute('data-accessor');\n if (!accessor || !resizable.has(accessor)) continue;\n snapshot.set(accessor, `${Math.round(cell.getBoundingClientRect().width)}px`);\n }\n if (snapshot.size === 0) return resizable;\n\n dirtyRef.current = true;\n setEffectiveColumnsWidth((prev) =>\n prev.map((entry) => {\n const accessor = Object.keys(entry)[0];\n const width = snapshot.get(accessor);\n return width === undefined ? entry : { [accessor]: width };\n })\n );\n return resizable;\n }, [columns, headerRef]);\n\n /** Clear the active-drag flag. Persistence runs from the effect once `isResizing` flips off. */\n const endResize = useCallback(() => {\n setIsResizing(false);\n }, []);\n\n const resetColumnsWidth = useCallback(() => {\n const defaults = getDefaultColumnsWidth();\n dirtyRef.current = true;\n setEffectiveColumnsWidth(defaults);\n setIsResizing(false);\n }, [getDefaultColumnsWidth]);\n\n const allResizableWidthsInitial = useMemo(() => {\n if (!hasResizableColumns) return false;\n const resizable = columns.filter((c) => c.resizable && !c.hidden && c.accessor !== '__selection__');\n return effectiveColumnsWidth\n .filter((cw) => {\n const accessor = Object.keys(cw)[0];\n return resizable.some((c) => c.accessor === accessor);\n })\n .every((cw) => {\n const w = Object.values(cw)[0];\n return w === 'auto' || w === 'initial';\n });\n }, [hasResizableColumns, columns, effectiveColumnsWidth]);\n\n // No-op kept for backwards compatibility — measurement is now lazy\n const measureAndSetColumnWidths = useCallback(() => {\n /* noop */\n }, []);\n\n return {\n columnsWidth: effectiveColumnsWidth,\n setColumnsWidth: updateColumnWidths,\n setColumnWidth,\n setMultipleColumnWidths,\n resetColumnsWidth,\n hasResizableColumns,\n allResizableWidthsInitial,\n measureAndSetColumnWidths,\n isResizing,\n beginResize,\n endResize,\n } as const;\n}\n","import { useLocalStorage } from '@mantine/hooks';\nimport { useEffect, useMemo } from 'react';\nimport type { DataTableColumn } from '../types/DataTableColumn';\nimport { hasStringAccessor, sanitizeStoredArray } from '../utils';\n\nexport type DataTableColumnToggle = {\n accessor: string;\n defaultToggle: boolean;\n toggleable: boolean;\n toggled: boolean;\n};\n\n/**\n * Hook to handle column visibility toggling with localStorage persistence.\n * @see https://documatrix.github.io/mantine-datatable/examples/column-dragging-and-toggling/\n */\nexport function useDataTableColumnToggle<T>({\n key,\n columns = [],\n getInitialValueInEffect = true,\n}: {\n /**\n * The key to use in localStorage to store the columns toggle state.\n */\n key: string | undefined;\n /**\n * Columns definitions.\n */\n columns: DataTableColumn<T>[];\n /**\n * If set to true, value will be updated in useEffect after mount.\n * @default true\n */\n getInitialValueInEffect?: boolean;\n}) {\n // Default columns toggle state\n const defaultColumnsToggle = useMemo(\n () =>\n columns?.map((column) => ({\n accessor: column.accessor as string,\n defaultToggle: column.defaultToggle || true,\n toggleable: column.toggleable as boolean,\n toggled: column.defaultToggle === undefined ? true : column.defaultToggle,\n })) as DataTableColumnToggle[],\n [columns]\n );\n\n const [storedColumnsToggle, _setColumnsToggle] = useLocalStorage<DataTableColumnToggle[]>({\n key: key ? `${key}-columns-toggle` : '',\n defaultValue: key ? defaultColumnsToggle : undefined,\n getInitialValueInEffect,\n });\n\n // Guard against malformed persisted state (e.g. a non-array value propagated\n // across tabs via the `storage` event) before any `.map()` / `.forEach()` call.\n const columnsToggle = sanitizeStoredArray<DataTableColumnToggle>(\n storedColumnsToggle,\n defaultColumnsToggle,\n hasStringAccessor\n );\n\n function setColumnsToggle(toggle: DataTableColumnToggle[]) {\n if (key) {\n _setColumnsToggle(toggle);\n }\n }\n\n // Align stored toggle state with current column definitions: drop accessors\n // that no longer exist, append accessors added since last persisted state.\n const alignedColumnsToggle = useMemo(() => {\n if (!columnsToggle) return defaultColumnsToggle;\n const aligned: DataTableColumnToggle[] = [];\n columnsToggle.forEach((col) => {\n if (columns.find((c) => c.accessor === col.accessor)) {\n aligned.push(col);\n }\n });\n columns.forEach((col) => {\n if (!aligned.find((c) => c.accessor === col.accessor)) {\n aligned.push({\n accessor: col.accessor as string,\n defaultToggle: col.defaultToggle || true,\n toggleable: col.toggleable as boolean,\n toggled: col.defaultToggle === undefined ? true : col.defaultToggle,\n });\n }\n });\n return aligned;\n }, [columnsToggle, columns, defaultColumnsToggle]);\n\n // Persist alignment in an effect — never set state during render\n useEffect(() => {\n if (!key) return;\n if (!columnsToggle) return;\n if (JSON.stringify(alignedColumnsToggle) !== JSON.stringify(columnsToggle)) {\n _setColumnsToggle(alignedColumnsToggle);\n }\n }, [key, alignedColumnsToggle, columnsToggle, _setColumnsToggle]);\n\n const resetColumnsToggle = () => {\n setColumnsToggle(defaultColumnsToggle);\n };\n\n if (!key) {\n return {\n columnsToggle,\n setColumnsToggle,\n resetColumnsToggle,\n } as const;\n }\n\n return {\n columnsToggle: alignedColumnsToggle,\n setColumnsToggle,\n resetColumnsToggle,\n } as const;\n}\n","import { type RefObject, useMemo } from 'react';\nimport type { DataTableColumn } from '../types/DataTableColumn';\nimport { type DataTableColumnPinning, useDataTableColumnPinning } from './useDataTableColumnPinning';\nimport { useDataTableColumnReorder } from './useDataTableColumnReorder';\nimport { useDataTableColumnResize } from './useDataTableColumnResize';\nimport { type DataTableColumnToggle, useDataTableColumnToggle } from './useDataTableColumnToggle';\n\nexport type { DataTableColumnPinning, DataTableColumnToggle };\n\n/**\n * Hook to handle column features such as drag-and-drop reordering, visibility toggling and resizing.\n * @see https://documatrix.github.io/mantine-datatable/examples/column-dragging-and-toggling/\n */\nexport const useDataTableColumns = <T>({\n key,\n columns = [],\n getInitialValueInEffect = true,\n headerRef,\n scrollViewportRef,\n}: {\n /**\n * The key to use in localStorage to store the columns order and toggle state.\n */\n key: string | undefined;\n /**\n * Columns definitions.\n */\n columns: DataTableColumn<T>[];\n /**\n * If set to true, value will be updated in useEffect after mount.\n * @default true\n */\n getInitialValueInEffect?: boolean;\n /**\n * Reference to the table header element for measuring column widths.\n */\n headerRef?: RefObject<HTMLTableSectionElement | null>;\n /**\n * Reference to the scroll viewport for calculating overflow.\n */\n scrollViewportRef?: RefObject<HTMLElement | null>;\n}) => {\n // Use specialized hooks for each feature\n const { columnsOrder, setColumnsOrder, resetColumnsOrder } = useDataTableColumnReorder({\n key,\n columns,\n getInitialValueInEffect,\n });\n\n const { columnsToggle, setColumnsToggle, resetColumnsToggle } = useDataTableColumnToggle({\n key,\n columns,\n getInitialValueInEffect,\n });\n\n const { columnsPinning, setColumnsPinning, resetColumnsPinning } = useDataTableColumnPinning({\n key,\n columns,\n getInitialValueInEffect,\n });\n\n const {\n columnsWidth,\n setColumnsWidth,\n setColumnWidth,\n setMultipleColumnWidths,\n resetColumnsWidth,\n hasResizableColumns,\n allResizableWidthsInitial,\n measureAndSetColumnWidths,\n isResizing,\n beginResize,\n endResize,\n } = useDataTableColumnResize({\n key,\n columns,\n getInitialValueInEffect,\n headerRef,\n scrollViewportRef,\n });\n\n // Compute effective columns based on order, toggle, pinning, and width.\n // Width is applied unconditionally — even without a `storeColumnsKey` —\n // so that `setMultipleColumnWidths` updates from the resize handle\n // actually flow back into the rendered cell `style.width`.\n const effectiveColumns = useMemo(() => {\n let result: DataTableColumn<T>[];\n if (columnsOrder) {\n result = columnsOrder\n .map((order) => columns.find((column) => column.accessor === order))\n .map((column) => {\n // Effective pinned value:\n // - If pinnable: true → use state from columnsPinning.pinned (interactive)\n // - Otherwise → use static column.pinned\n const pinningState = columnsPinning.find((p) => p.accessor === column?.accessor);\n const effectivePinned = column?.pinnable ? pinningState?.pinned : column?.pinned;\n return {\n ...column,\n hidden: column?.hidden || !columnsToggle.find((toggle) => toggle.accessor === column?.accessor)?.toggled,\n pinned: effectivePinned,\n };\n }) as DataTableColumn<T>[];\n } else {\n result = columns;\n }\n\n // Reorder columns by pinning: left-pinned → unpinned → right-pinned\n const leftPinned = result.filter((c) => c.pinned === 'left');\n const unpinned = result.filter((c) => !c.pinned);\n const rightPinned = result.filter((c) => c.pinned === 'right');\n const reordered = [...leftPinned, ...unpinned, ...rightPinned];\n\n return reordered.map((column) => {\n if (column?.accessor === '__selection__') return column;\n // Non-resizable columns keep their declared width, so they absorb the space resized ones leave.\n if (!column?.resizable) return column;\n const accessor = column?.accessor as string;\n const widthEntry = columnsWidth.find((entry) => accessor in entry);\n if (!widthEntry) return column;\n const width = widthEntry[accessor];\n // Treat 'auto' / 'initial' as \"no override\" so declarative widths win\n if (width === undefined || width === 'auto' || width === 'initial') return column;\n return { ...column, width };\n });\n }, [columns, columnsOrder, columnsToggle, columnsPinning, columnsWidth]);\n\n // Lock the table layout to `fixed` only when *every* visible column has a\n // pixel width. Mixed states (some 'auto', some pixels) stay in auto layout\n // so the browser keeps the auto cells visible and the table fills its container.\n // Recomputes on column visibility changes too, so resize + toggle stays\n // consistent.\n const isLocked = useMemo(() => {\n const visible = effectiveColumns.filter((c) => !c.hidden && c.accessor !== '__selection__');\n if (visible.length === 0) return false;\n return visible.every((c) => typeof c.width === 'string' && /px$/.test(c.width));\n }, [effectiveColumns]);\n\n const tableWidth = useMemo(() => {\n if (!isLocked) return null;\n let sum = 0;\n for (const col of effectiveColumns) {\n if (col.hidden || col.accessor === '__selection__') continue;\n const w = col.width;\n if (typeof w !== 'string') continue;\n const n = parseInt(w, 10);\n if (Number.isNaN(n)) continue;\n sum += n;\n }\n return sum > 0 ? sum : null;\n }, [isLocked, effectiveColumns]);\n\n return {\n effectiveColumns: effectiveColumns as DataTableColumn<T>[],\n\n // Order handling\n setColumnsOrder,\n columnsOrder: columnsOrder as string[],\n resetColumnsOrder,\n\n // Toggle handling\n columnsToggle: columnsToggle as DataTableColumnToggle[],\n setColumnsToggle,\n resetColumnsToggle,\n\n // Pinning handling\n columnsPinning: columnsPinning as DataTableColumnPinning[],\n setColumnsPinning,\n resetColumnsPinning,\n\n // Resize handling\n columnsWidth,\n setColumnsWidth,\n setColumnWidth,\n setMultipleColumnWidths,\n resetColumnsWidth,\n hasResizableColumns,\n allResizableWidthsInitial,\n measureAndSetColumnWidths,\n isResizing,\n isLocked,\n tableWidth,\n beginResize,\n endResize,\n } as const;\n};\n","import { useEffect, useLayoutEffect } from 'react';\n\nexport const useIsomorphicLayoutEffect = typeof window !== 'undefined' ? useLayoutEffect : useEffect;\n","import { useInsertionEffect, useRef } from 'react';\n\nexport interface ReadonlyRef<T> {\n readonly current: T;\n}\n\n// Synced in an insertion effect like `useStableCallback`, so read `current` only in effects and\n// event handlers, never during render.\nexport function useStableValue<T>(value: T): ReadonlyRef<T> {\n const ref = useRef<T>(value);\n useInsertionEffect(() => {\n ref.current = value;\n });\n return ref;\n}\n","import { useMergedRef } from '@mantine/hooks';\nimport { type RefObject, useState } from 'react';\n\n// Element in state (not a ref) so effects can depend on it mounting or unmounting.\nexport function useTrackedElement<E extends HTMLElement>(objectRef: RefObject<E | null>) {\n const [element, setElement] = useState<E | null>(null);\n const ref = useMergedRef(objectRef, setElement);\n return [element, ref] as const;\n}\n","import { rem } from '@mantine/core';\nimport { useEffect, useRef } from 'react';\nimport type { DataTableScrollProps } from '../types/DataTableScrollProps';\nimport { useIsomorphicLayoutEffect } from './useIsomorphicLayoutEffect';\nimport { useStableValue } from './useStableValue';\nimport { useTrackedElement } from './useTrackedElement';\n\nconst VAR_HEADER_HEIGHT = '--mantine-datatable-header-height';\nconst VAR_FOOTER_HEIGHT = '--mantine-datatable-footer-height';\nconst VAR_SELECTION_COLUMN_WIDTH = '--mantine-datatable-selection-column-width';\nconst VAR_LAST_ROW_BORDER_BOTTOM = '--mantine-datatable-last-row-border-bottom';\n\ninterface UseDataTableInjectCssVariablesOpts {\n scrollCallbacks: DataTableScrollProps;\n withRowBorders: boolean | undefined;\n}\n\ntype OnScroll = NonNullable<DataTableScrollProps['onScroll']>;\n\ntype Rect = {\n width: number;\n height: number;\n};\n\ntype Pos = 'top' | 'bottom' | 'left' | 'right';\n\nfunction setCssVar(root: HTMLDivElement | null, name: string, value: string) {\n root?.style.setProperty(name, value);\n}\n\nfunction getRect(entry: ResizeObserverEntry): Rect {\n const boxSize = entry.borderBoxSize?.[0] || entry.contentBoxSize?.[0];\n if (boxSize) {\n return {\n width: boxSize.inlineSize,\n height: boxSize.blockSize,\n };\n } else {\n return { width: entry.contentRect.width, height: entry.contentRect.height };\n }\n}\n\nfunction observe(elem: HTMLElement | null, onChange: (rect: Rect) => unknown, onCancel: () => unknown) {\n if (elem) {\n const observer = new ResizeObserver((entries) => {\n const entry = entries[0];\n if (entry) {\n onChange(getRect(entry));\n }\n });\n observer.observe(elem);\n return () => {\n observer.disconnect();\n onCancel();\n };\n }\n}\n\nexport function useDataTableInjectCssVariables({\n scrollCallbacks,\n withRowBorders,\n}: UseDataTableInjectCssVariablesOpts) {\n // Hooks must not sit inside an object literal: React Compiler memoizes the literal and skips\n // the `useRef` calls on re-renders, which shifts the hook order.\n const root = useRef<HTMLDivElement>(null);\n const table = useRef<HTMLTableElement>(null);\n const scrollViewport = useRef<HTMLElement>(null);\n const header = useRef<HTMLTableSectionElement>(null);\n const footer = useRef<HTMLTableSectionElement>(null);\n const selectionColumnHeader = useRef<HTMLTableCellElement>(null);\n const refs = { root, table, scrollViewport, header, footer, selectionColumnHeader };\n const [scrollViewportElement, scrollViewportRef] = useTrackedElement(scrollViewport);\n const [headerElement, headerRef] = useTrackedElement(header);\n const [footerElement, footerRef] = useTrackedElement(footer);\n const [selectionColumnHeaderElement, selectionColumnHeaderRef] = useTrackedElement(selectionColumnHeader);\n\n const stableDependencies = useStableValue({ withRowBorders });\n const stableScrollCallbacks = useStableValue(scrollCallbacks);\n const processScrollingRef = useRef<() => void>(() => void 0);\n const processLastRowBottomBorderRef = useRef<() => void>(() => void 0);\n const onScroll: OnScroll = (ev) => {\n stableScrollCallbacks.current.onScroll?.(ev);\n processScrollingRef.current();\n };\n\n useEffect(() => {\n return observe(\n headerElement,\n (rect) => {\n setCssVar(root.current, VAR_HEADER_HEIGHT, `${rect.height}px`);\n },\n () => setCssVar(root.current, VAR_HEADER_HEIGHT, '0')\n );\n }, [headerElement]);\n\n useEffect(() => {\n return observe(\n footerElement,\n (rect) => {\n setCssVar(root.current, VAR_FOOTER_HEIGHT, `${rect.height}px`);\n },\n () => setCssVar(root.current, VAR_FOOTER_HEIGHT, '0')\n );\n }, [footerElement]);\n\n useEffect(() => {\n return observe(\n selectionColumnHeaderElement,\n (rect) => {\n setCssVar(root.current, VAR_SELECTION_COLUMN_WIDTH, `${rect.width}px`);\n },\n () => setCssVar(root.current, VAR_SELECTION_COLUMN_WIDTH, '0')\n );\n }, [selectionColumnHeaderElement]);\n\n useIsomorphicLayoutEffect(() => {\n if (typeof window === 'undefined') {\n return;\n }\n const scrollPosition: Record<Pos, boolean> = {\n top: true,\n bottom: true,\n left: true,\n right: true,\n };\n let tableRect: Rect = { width: 0, height: 0 };\n let scrollRect: Rect = { width: 0, height: 0 };\n\n function setScrolledTo(pos: Pos, value: boolean) {\n const old = scrollPosition[pos];\n scrollPosition[pos] = value;\n setCssVar(root.current, `--mantine-datatable-${pos}-shadow-opacity`, value ? '0' : '1');\n return old;\n }\n\n function processFooterPosition() {\n const diff = tableRect.height - scrollRect.height;\n const relative = diff < 0;\n setCssVar(root.current, '--mantine-datatable-footer-position', relative ? 'relative' : 'sticky');\n setCssVar(root.current, '--mantine-datatable-footer-bottom', relative ? `${diff}px` : '0');\n }\n\n function processLastRowBottomBorder() {\n if (stableDependencies.current.withRowBorders && tableRect.height < scrollRect.height) {\n setCssVar(\n root.current,\n VAR_LAST_ROW_BORDER_BOTTOM,\n `${rem('1px')} solid var(--mantine-datatable-border-color)`\n );\n } else {\n setCssVar(root.current, VAR_LAST_ROW_BORDER_BOTTOM, 'unset');\n }\n }\n processLastRowBottomBorderRef.current = processLastRowBottomBorder;\n\n function processScrolling() {\n const callbacks = stableScrollCallbacks.current;\n const viewport = scrollViewport.current;\n const scrollTop = viewport?.scrollTop ?? 0;\n const scrollLeft = viewport?.scrollLeft ?? 0;\n\n const newScrolledToTop = scrollTop === 0;\n const newScrolledToBottom = tableRect.height - scrollTop - scrollRect.height < 1;\n const scrolledToTop = setScrolledTo('top', newScrolledToTop);\n const scrolledToBottom = setScrolledTo('bottom', newScrolledToBottom);\n if (newScrolledToTop && newScrolledToTop !== scrolledToTop) callbacks.onScrollToTop?.();\n if (newScrolledToBottom && newScrolledToBottom !== scrolledToBottom) callbacks.onScrollToBottom?.();\n\n // In RTL mode, scrollLeft behavior varies by browser:\n // - Chrome/Edge: starts at 0, goes negative when scrolling left (towards visual left)\n // - Firefox: starts at 0, goes negative when scrolling left\n // - Safari: starts at 0, goes negative when scrolling left\n // The key insight: in RTL, scrollLeft=0 means we're at the RIGHT edge (visual start)\n // and negative/max values mean we're at the LEFT edge (visual end)\n const isRtl = viewport ? getComputedStyle(viewport).direction === 'rtl' : false;\n const maxScrollLeft = (viewport?.scrollWidth ?? 0) - scrollRect.width;\n\n let newScrolledToLeft: boolean;\n let newScrolledToRight: boolean;\n\n if (isRtl) {\n // In RTL with modern browsers, scrollLeft is 0 at right edge, negative when scrolling left\n const absScrollLeft = Math.abs(scrollLeft);\n // At right edge (RTL start): absScrollLeft ≈ 0, so scrolledToRight = true (no right shadow)\n // At left edge (RTL end): absScrollLeft ≈ maxScrollLeft, so scrolledToLeft = true (no left shadow)\n newScrolledToRight = absScrollLeft < 1;\n newScrolledToLeft = maxScrollLeft - absScrollLeft < 1;\n } else {\n newScrolledToLeft = scrollLeft < 1;\n newScrolledToRight = tableRect.width - scrollLeft - scrollRect.width < 1;\n }\n\n const scrolledToLeft = setScrolledTo('left', newScrolledToLeft);\n const scrolledToRight = setScrolledTo('right', newScrolledToRight);\n if (newScrolledToLeft && newScrolledToLeft !== scrolledToLeft) callbacks.onScrollToLeft?.();\n if (newScrolledToRight && newScrolledToRight !== scrolledToRight) callbacks.onScrollToRight?.();\n }\n processScrollingRef.current = processScrolling;\n const observer = new ResizeObserver((entries) => {\n for (const entry of entries) {\n switch (entry.target.tagName) {\n case 'TABLE': {\n tableRect = getRect(entry);\n break;\n }\n case 'DIV': {\n scrollRect = getRect(entry);\n break;\n }\n }\n }\n processScrolling();\n processFooterPosition();\n processLastRowBottomBorder();\n });\n\n observer.observe(table.current!);\n observer.observe(scrollViewport.current!);\n\n return () => {\n observer.disconnect();\n };\n }, []);\n\n useIsomorphicLayoutEffect(() => {\n processLastRowBottomBorderRef.current();\n }, [withRowBorders]);\n\n return {\n refs,\n trackedRefs: {\n scrollViewport: scrollViewportRef,\n header: headerRef,\n footer: footerRef,\n selectionColumnHeader: selectionColumnHeaderRef,\n },\n trackedElements: { scrollViewport: scrollViewportElement, header: headerElement, footer: footerElement },\n onScroll,\n };\n}\n","import { type RefObject, useCallback, useEffect, useState } from 'react';\nimport type { DataTableColumn } from '../types';\nimport { useIsomorphicLayoutEffect } from './useIsomorphicLayoutEffect';\n\nexport type PinnedColumnInfo = {\n position: 'left' | 'right';\n logicalSide: 'left' | 'right';\n offset: number;\n isBoundary: boolean;\n};\n\nexport function useDataTablePinnedColumns<T>({\n columns,\n theadRef,\n tbodyRef,\n selectionColumnHeaderRef,\n selectionVisible,\n pinFirstColumn,\n pinLastColumn,\n}: {\n columns: DataTableColumn<T>[];\n theadRef: RefObject<HTMLTableSectionElement | null>;\n tbodyRef: RefObject<HTMLTableSectionElement | null>;\n selectionColumnHeaderRef: RefObject<HTMLTableCellElement | null>;\n selectionVisible: boolean;\n pinFirstColumn?: boolean;\n pinLastColumn?: boolean;\n}): {\n pinnedMap: Map<string, PinnedColumnInfo>;\n hasLeftPinned: boolean;\n hasRightPinned: boolean;\n} {\n const [pinnedMap, setPinnedMap] = useState<Map<string, PinnedColumnInfo>>(new Map());\n\n // Skip all measurement work when no pinning is configured. Otherwise every\n // render fires a layout-forcing recalculate and tears down/recreates the\n // ResizeObserver — needless thrash that interferes with consumers observing\n // the same DOM (e.g. AutoAnimate on the same tbody). The flag is recomputed\n // inside each hook closure so we don't change the shape of the deps arrays.\n const recalculate = useCallback(() => {\n if (!pinFirstColumn && !pinLastColumn && !columns.some((c) => c.pinned)) return;\n const measurementSection = theadRef.current ?? tbodyRef.current;\n if (!measurementSection) return;\n\n const isTheadSource = !!theadRef.current;\n const measurementRow = isTheadSource\n ? measurementSection.querySelector<HTMLTableRowElement>('tr:last-of-type')\n : measurementSection.querySelector<HTMLTableRowElement>('tr.mantine-datatable-row');\n if (!measurementRow) return;\n\n const isRtl = getComputedStyle(measurementSection).direction === 'rtl';\n\n const widths = new Map<string, number>();\n\n if (isTheadSource) {\n measurementRow.querySelectorAll<HTMLElement>('th[data-accessor]').forEach((th) => {\n const accessor = th.dataset.accessor;\n if (accessor) {\n const w = th.getBoundingClientRect().width;\n if (w > 0) widths.set(accessor, w);\n }\n });\n } else {\n const visibleCols = columns.filter((c) => !c.hidden);\n const tds = measurementRow.querySelectorAll<HTMLElement>(\n 'td:not(.mantine-datatable-row-selector-cell):not(.mantine-datatable-row-expansion-cell)'\n );\n tds.forEach((td, i) => {\n if (visibleCols[i]) {\n const w = td.getBoundingClientRect().width;\n if (w > 0) widths.set(String(visibleCols[i].accessor), w);\n }\n });\n }\n\n let selectionWidth = 0;\n if (selectionVisible) {\n const selCell =\n selectionColumnHeaderRef.current ??\n measurementSection.querySelector<HTMLElement>(\n isTheadSource ? '.mantine-datatable-header-selector-cell' : '.mantine-datatable-row-selector-cell'\n );\n if (selCell) selectionWidth = selCell.getBoundingClientRect().width;\n }\n\n const renderedAccessors = columns\n .filter((c) => !c.hidden && widths.has(String(c.accessor)))\n .map((c) => String(c.accessor));\n\n const resolvedPinned = new Map<string, 'left' | 'right'>();\n for (const col of columns) {\n const acc = String(col.accessor);\n if (!renderedAccessors.includes(acc)) continue;\n\n if (col.pinned) {\n resolvedPinned.set(acc, col.pinned);\n } else if (pinFirstColumn && acc === renderedAccessors[0] && !resolvedPinned.has(acc)) {\n resolvedPinned.set(acc, 'left');\n } else if (pinLastColumn && acc === renderedAccessors[renderedAccessors.length - 1] && !resolvedPinned.has(acc)) {\n resolvedPinned.set(acc, 'right');\n }\n }\n\n const leftPinned = renderedAccessors.filter((acc) => resolvedPinned.get(acc) === 'left');\n const rightPinned = renderedAccessors.filter((acc) => resolvedPinned.get(acc) === 'right');\n\n const newMap = new Map<string, PinnedColumnInfo>();\n\n let leftOffset = selectionWidth;\n leftPinned.forEach((acc, i) => {\n newMap.set(acc, {\n position: isRtl ? 'right' : 'left',\n logicalSide: 'left',\n offset: leftOffset,\n isBoundary: i === leftPinned.length - 1,\n });\n leftOffset += widths.get(acc) || 0;\n });\n\n let rightOffset = -0.4; // Webkit subpixel gap fix (see old CSS: right: rem(-0.4px))\n const rightReversed = [...rightPinned].reverse();\n rightReversed.forEach((acc, i) => {\n newMap.set(acc, {\n position: isRtl ? 'left' : 'right',\n logicalSide: 'right',\n offset: rightOffset,\n isBoundary: i === rightReversed.length - 1,\n });\n rightOffset += widths.get(acc) || 0;\n });\n\n setPinnedMap((prev) => {\n if (prev.size !== newMap.size) return newMap;\n for (const [k, v] of newMap) {\n const pv = prev.get(k);\n if (\n !pv ||\n pv.position !== v.position ||\n pv.logicalSide !== v.logicalSide ||\n pv.offset !== v.offset ||\n pv.isBoundary !== v.isBoundary\n ) {\n return newMap;\n }\n }\n return prev;\n });\n }, [columns, selectionVisible, theadRef, tbodyRef, selectionColumnHeaderRef, pinFirstColumn, pinLastColumn]);\n\n // biome-ignore lint/correctness/useExhaustiveDependencies: `pinFirstColumn`, `pinLastColumn` and `columns` are captured transitively via `recalculate` — keep the deps array shape (3 items) stable so HMR can't trip \"deps array changed size\".\n useEffect(() => {\n if (!pinFirstColumn && !pinLastColumn && !columns.some((c) => c.pinned)) return;\n const section = theadRef.current ?? tbodyRef.current;\n if (!section) return;\n\n const isTheadSource = !!theadRef.current;\n const observer = new ResizeObserver(recalculate);\n let observedRow: Element | null = null;\n const observeRow = () => {\n if (observedRow?.isConnected) return;\n const row = isTheadSource\n ? section.querySelector('tr:last-of-type')\n : section.querySelector('tr.mantine-datatable-row');\n observedRow = row;\n observer.disconnect();\n row?.querySelectorAll(isTheadSource ? 'th' : 'td').forEach((cell) => {\n observer.observe(cell);\n });\n };\n observeRow();\n if (isTheadSource) return () => observer.disconnect();\n\n // The measured body row gets replaced when records change or the virtualized window moves.\n const mutationObserver = new MutationObserver(observeRow);\n mutationObserver.observe(section, { childList: true });\n\n return () => {\n observer.disconnect();\n mutationObserver.disconnect();\n };\n }, [theadRef, tbodyRef, recalculate]);\n\n useIsomorphicLayoutEffect(recalculate, [recalculate]);\n\n const hasLeftPinned = [...pinnedMap.values()].some((info) => info.logicalSide === 'left');\n const hasRightPinned = [...pinnedMap.values()].some((info) => info.logicalSide === 'right');\n\n return { pinnedMap, hasLeftPinned, hasRightPinned };\n}\n","// Modified from https://github.com/mantinedev/mantine/blob/8c12a76c56da51af34213f18dd67c8b72a0ddb44/src/mantine-hooks/src/use-media-query/use-media-query.ts\n\nimport { useEffect, useRef, useState } from 'react';\n\nexport interface UseMediaQueryOptions {\n getInitialValueInEffect: boolean;\n}\n\n/**\n * Older versions of Safari (shipped with Catalina and before) do not support addEventListener on matchMedia\n * https://stackoverflow.com/questions/56466261/matchmedia-addlistener-marked-as-deprecated-addeventlistener-equivalent\n * */\nfunction attachMediaListeners(queries: MediaQueryList[], callback: (matches: boolean[]) => void) {\n const callbackWrapper = () => {\n callback(queries.map((query) => query.matches));\n };\n const subscriptions = queries.map((query) => {\n try {\n query.addEventListener('change', callbackWrapper);\n return () => query.removeEventListener('change', callbackWrapper);\n } catch {\n query.addListener(callbackWrapper);\n return () => query.removeListener(callbackWrapper);\n }\n });\n return () => {\n subscriptions.forEach((unsubscribe) => {\n unsubscribe();\n });\n };\n}\n\nfunction getInitialValue(queries: string[], initialValues?: boolean[]) {\n if (initialValues) {\n return initialValues;\n }\n\n if (typeof window !== 'undefined' && 'matchMedia' in window) {\n return queries.map((query) => window.matchMedia(query).matches);\n }\n\n return queries.map(() => false);\n}\n\nexport function useMediaQueries(\n queries: string[],\n initialValues?: boolean[],\n { getInitialValueInEffect }: UseMediaQueryOptions = {\n getInitialValueInEffect: true,\n }\n) {\n const [matches, setMatches] = useState(\n getInitialValueInEffect ? initialValues : getInitialValue(queries, initialValues)\n );\n const queryRef = useRef<MediaQueryList[]>(null);\n\n useEffect(() => {\n if ('matchMedia' in window) {\n queryRef.current = queries.map((query) => window.matchMedia(query));\n setMatches(queryRef.current.map((queryResult) => queryResult.matches));\n return attachMediaListeners(queryRef.current, (event) => {\n setMatches(event);\n });\n }\n\n return undefined;\n }, [queries]);\n\n return matches;\n}\n","import { type MantineTheme, useMantineTheme } from '@mantine/core';\nimport { useMemo } from 'react';\nimport { useMediaQueries } from './useMediaQueries';\n\nexport function useMediaQueriesStringOrFunction(queries: (string | ((theme: MantineTheme) => string) | undefined)[]) {\n const theme = useMantineTheme();\n const values = useMemo(\n () => queries.map((query) => (typeof query === 'function' ? query(theme) : query) ?? ''),\n [queries, theme]\n );\n const defaults = useMemo(() => queries.map(() => true), [queries]);\n return useMediaQueries(values, defaults);\n}\n","import { type MantineTheme, useMantineTheme } from '@mantine/core';\nimport { useMediaQuery } from '@mantine/hooks';\n\nexport function useMediaQueryStringOrFunction(mediaQuery: string | ((theme: MantineTheme) => string) | undefined) {\n const theme = useMantineTheme();\n const mediaQueryValue = typeof mediaQuery === 'function' ? mediaQuery(theme) : mediaQuery;\n return useMediaQuery(mediaQueryValue || '', true);\n}\n","import { useCallback, useInsertionEffect, useRef } from 'react';\n\n// Synced in an insertion effect, which runs before any layout effect or ref callback (children's\n// included), so nothing in the commit sees the previous render's closure.\nexport function useStableCallback<A extends unknown[], R>(handler: ((...args: A) => R) | undefined) {\n const handlerRef = useRef(handler);\n useInsertionEffect(() => {\n handlerRef.current = handler;\n });\n return useCallback((...args: A) => handlerRef.current?.(...args) as R, []);\n}\n","import { useStableCallback } from './useStableCallback';\n\n// Stays `undefined` when the handler is, so presence checks (cursor styles, disabled states) keep\n// working. Event handlers only, never render-time functions.\nexport function useOptionalCallbackRef<A extends unknown[], R>(handler: ((...args: A) => R) | undefined) {\n const stableHandler = useStableCallback(handler);\n return handler ? stableHandler : undefined;\n}\n","import { useMemo, useState } from 'react';\nimport type { DataTableIdAccessor, DataTableRowExpansionProps } from '../types';\nimport { getRecordId } from '../utils';\nimport { useStableCallback } from './useStableCallback';\n\nfunction getInitiallyExpandedRecordIds<T>(\n rowExpansion: DataTableRowExpansionProps<T> | undefined,\n records: T[] | undefined,\n idAccessor: DataTableIdAccessor<T>\n): unknown[] {\n if (!rowExpansion || !records) return [];\n const { trigger, allowMultiple, initiallyExpanded } = rowExpansion;\n if (trigger === 'always' || !initiallyExpanded) return [];\n const ids = records\n .filter((record, index) => initiallyExpanded({ record, index }))\n .map((r) => getRecordId(r, idAccessor));\n return allowMultiple ? ids : ids.slice(0, 1);\n}\n\nexport function useRowExpansion<T>({\n rowExpansion,\n records,\n idAccessor,\n}: {\n rowExpansion?: DataTableRowExpansionProps<T>;\n records: T[] | undefined;\n idAccessor: DataTableIdAccessor<T>;\n}) {\n const [uncontrolledExpandedRecordIds, setUncontrolledExpandedRecordIds] = useState<unknown[]>(() =>\n getInitiallyExpandedRecordIds(rowExpansion, records, idAccessor)\n );\n const canInitialize = !!rowExpansion && !!records?.length;\n const [initialized, setInitialized] = useState(canInitialize);\n if (!initialized && canInitialize) {\n setInitialized(true);\n setUncontrolledExpandedRecordIds(getInitiallyExpandedRecordIds(rowExpansion, records, idAccessor));\n }\n const expandedRecordIds = rowExpansion?.expanded ? rowExpansion.expanded.recordIds : uncontrolledExpandedRecordIds;\n const updateExpandedRecordIds = (update: (expandedRecordIds: unknown[]) => unknown[]) => {\n if (rowExpansion?.expanded) rowExpansion.expanded.onRecordIdsChange?.(update(rowExpansion.expanded.recordIds));\n else setUncontrolledExpandedRecordIds(update);\n };\n\n const enabled = !!rowExpansion;\n const { expandable, trigger, allowMultiple, collapseProps, content } = rowExpansion ?? {};\n\n const expandRow = useStableCallback((record: T) => {\n const recordId = getRecordId(record, idAccessor);\n updateExpandedRecordIds((ids) => (allowMultiple ? [...ids, recordId] : [recordId]));\n });\n const collapseRow = useStableCallback((record: T) => {\n const recordId = getRecordId(record, idAccessor);\n updateExpandedRecordIds((ids) => ids.filter((id) => id !== recordId));\n });\n\n const expandedRecordIdsSet = useMemo(() => new Set(expandedRecordIds), [expandedRecordIds]);\n const isRecordIdExpanded = (recordId: unknown) => trigger === 'always' || expandedRecordIdsSet.has(recordId);\n\n const expansion = useMemo(() => {\n if (!enabled) return undefined;\n return {\n expandOnClick: trigger !== 'always' && trigger !== 'never',\n isExpandable: ({ record, index }: { record: T; index: number }) => {\n if (!expandable) {\n return true;\n }\n return expandable({ record, index });\n },\n expandRow,\n collapseRow,\n collapseProps,\n content:\n ({ record, index }: { record: T; index: number }) =>\n () =>\n content!({ record, index, collapse: () => collapseRow(record) }),\n };\n }, [enabled, expandable, trigger, collapseProps, content, expandRow, collapseRow]);\n\n return { expansion, isRecordIdExpanded };\n}\n\nexport type RowExpansionInfo<T> = ReturnType<typeof useRowExpansion<T>>['expansion'];\n","import { useTimeout } from '@mantine/hooks';\nimport { useEffect, useState } from 'react';\n\nexport function useRowExpansionStatus(open: boolean, transitionDuration?: number) {\n const [expanded, setExpanded] = useState(open);\n const [visible, setVisible] = useState(open);\n\n const expand = useTimeout(() => setExpanded(true), 0);\n const hide = useTimeout(() => setVisible(false), transitionDuration || 200);\n\n useEffect(() => {\n if (open) {\n hide.clear();\n setVisible(true);\n expand.start();\n } else {\n expand.clear();\n setExpanded(false);\n hide.start();\n }\n }, [expand, hide, open]);\n\n return { expanded, visible };\n}\n","import { useVirtualizer, type VirtualItem, type Virtualizer } from '@tanstack/react-virtual';\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { useIsomorphicLayoutEffect } from './useIsomorphicLayoutEffect';\n\ntype UseRowVirtualizationOptions = {\n enabled: boolean;\n count: number;\n scrollElement: HTMLElement | null;\n headerElement: HTMLElement | null;\n footerElement: HTMLElement | null;\n rowHeight: number | undefined;\n measureRows: boolean;\n overscan: number;\n getItemKey: ((index: number) => string | number) | undefined;\n virtualizerRef: React.RefObject<Virtualizer<HTMLElement, HTMLTableRowElement> | null> | undefined;\n};\n\nconst DEFAULT_ROW_HEIGHT = 40;\n\nexport type RowVirtualizationInfo = {\n virtualItems: VirtualItem[];\n paddingTop: number;\n paddingBottom: number;\n // Rows must also carry a `data-index` attribute.\n measureRef: (element: HTMLTableRowElement | null) => void;\n expansionRowRef: (element: HTMLTableRowElement | null) => (() => void) | undefined;\n};\n\n// A row's size includes the trailing `tr`s it drags along (row expansion rows).\nfunction measureRowWithTrailingSiblings(element: HTMLTableRowElement) {\n let height = element.getBoundingClientRect().height;\n let sibling = element.nextElementSibling;\n while (\n sibling &&\n !sibling.classList.contains('mantine-datatable-row') &&\n !sibling.classList.contains('mantine-datatable-spacer-row') &&\n !sibling.classList.contains('mantine-datatable-empty-row')\n ) {\n height += sibling.getBoundingClientRect().height;\n sibling = sibling.nextElementSibling;\n }\n return height;\n}\n\nexport function useRowVirtualization({\n enabled,\n count,\n scrollElement,\n headerElement,\n footerElement,\n rowHeight,\n measureRows,\n overscan,\n getItemKey,\n virtualizerRef,\n}: UseRowVirtualizationOptions): RowVirtualizationInfo | null {\n // Height of the first rendered row, used as the estimate for all rows when no `rowHeight`\n // is given.\n const [firstRowHeight, setFirstRowHeight] = useState<number | null>(null);\n const firstRowMeasuredRef = useRef(false);\n const estimatedRowHeight = rowHeight ?? firstRowHeight ?? DEFAULT_ROW_HEIGHT;\n\n // The sticky header and footer cover the bottom of the scrolled-to range, as tbody starts below the header.\n const [stickyHeight, setStickyHeight] = useState(0);\n\n useIsomorphicLayoutEffect(() => {\n if (!enabled || typeof ResizeObserver === 'undefined') return;\n\n const elements = [headerElement, footerElement].filter((element) => element !== null);\n const update = () =>\n setStickyHeight(elements.reduce((sum, element) => sum + element.getBoundingClientRect().height, 0));\n\n update();\n\n const observer = new ResizeObserver(update);\n\n for (const element of elements) observer.observe(element);\n\n return () => observer.disconnect();\n }, [enabled, headerElement, footerElement]);\n\n const virtualizer = useVirtualizer<HTMLElement, HTMLTableRowElement>({\n count,\n enabled,\n getScrollElement: () => scrollElement,\n estimateSize: () => estimatedRowHeight,\n overscan,\n scrollPaddingEnd: stickyHeight,\n getItemKey,\n measureElement: measureRowWithTrailingSiblings,\n // Defer ResizeObserver-driven remeasurements to an animation frame; otherwise the\n // virtualizer may call flushSync from inside a React lifecycle (e.g. when rows are\n // measured right after a scrollToIndex()), which triggers a React warning.\n useAnimationFrameWithResizeObserver: true,\n });\n\n useEffect(() => {\n if (!virtualizerRef || !enabled) return;\n virtualizerRef.current = virtualizer;\n return () => {\n virtualizerRef.current = null;\n };\n }, [enabled, virtualizer, virtualizerRef]);\n\n // The estimate is baked into the virtualizer's measurement cache, so a changed estimate has\n // to reset it.\n // biome-ignore lint/correctness/useExhaustiveDependencies: `estimatedRowHeight` is the trigger, the virtualizer reads it through `estimateSize`\n useEffect(() => {\n if (enabled) virtualizer.measure();\n }, [enabled, estimatedRowHeight, virtualizer]);\n\n // Measuring can make the virtualizer flushSync, which React forbids (and warns about) inside ref callbacks.\n const measureRef = useCallback(\n (element: HTMLTableRowElement | null) => {\n if (measureRows) {\n queueMicrotask(() => virtualizer.measureElement(element));\n return;\n }\n if (!element || rowHeight !== undefined || firstRowMeasuredRef.current) return;\n firstRowMeasuredRef.current = true;\n setFirstRowHeight(measureRowWithTrailingSiblings(element));\n },\n [measureRows, rowHeight, virtualizer]\n );\n\n // The virtualizer only observes the rows themselves, so it never notices a row expansion row\n // changing height; observe it and remeasure its row on every change.\n const expansionRowRef = useCallback(\n (element: HTMLTableRowElement | null) => {\n if (!element || typeof ResizeObserver === 'undefined') return;\n let sibling = element.previousElementSibling;\n while (sibling && !sibling.classList.contains('mantine-datatable-row')) sibling = sibling.previousElementSibling;\n if (!(sibling instanceof HTMLTableRowElement)) return;\n const row = sibling;\n // Deferred like the virtualizer's own observer: `resizeItem` may flushSync.\n let frame = 0;\n const remeasure = () => {\n cancelAnimationFrame(frame);\n frame = requestAnimationFrame(() => {\n if (!row.isConnected) return;\n virtualizer.resizeItem(virtualizer.indexFromElement(row), measureRowWithTrailingSiblings(row));\n });\n };\n const observer = new ResizeObserver(remeasure);\n observer.observe(element);\n return () => {\n observer.disconnect();\n remeasure();\n };\n },\n [virtualizer]\n );\n\n // React Compiler skips this hook (useVirtualizer is flagged as incompatible), hence the explicit memo.\n const virtualItems = enabled ? virtualizer.getVirtualItems() : null;\n const totalSize = enabled ? virtualizer.getTotalSize() : 0;\n\n return useMemo<RowVirtualizationInfo | null>(() => {\n if (!virtualItems) return null;\n return {\n virtualItems,\n paddingTop: virtualItems.length > 0 ? virtualItems[0].start : 0,\n paddingBottom: virtualItems.length > 0 ? totalSize - virtualItems[virtualItems.length - 1].end : 0,\n measureRef,\n expansionRowRef,\n };\n }, [virtualItems, totalSize, measureRef, expansionRowRef]);\n}\n","import { useState } from 'react';\n\nfunction shallowEqual(a: unknown, b: unknown) {\n if (a === b) return true;\n if (typeof a !== 'object' || typeof b !== 'object' || a === null || b === null) return false;\n const ka = Object.keys(a);\n const kb = Object.keys(b);\n if (ka.length !== kb.length) return false;\n return ka.every((k) => (a as Record<string, unknown>)[k] === (b as Record<string, unknown>)[k]);\n}\n\n// Keeps the previous value while the new one is shallowly equal, so consumers passing inline\n// objects don't break downstream memoization (e.g. every row).\nexport function useShallowStable<T>(value: T): T {\n const [stable, setStable] = useState(value);\n if (shallowEqual(stable, value)) return stable;\n setStable(value);\n return value;\n}\n","export const NOWRAP = 'mantine-datatable-nowrap';\nexport const ELLIPSIS = 'mantine-datatable-ellipsis';\nexport const POINTER_CURSOR = 'mantine-datatable-pointer-cursor';\nexport const CONTEXT_MENU_CURSOR = 'mantine-datatable-context-menu-cursor';\nexport const TEXT_SELECTION_DISABLED = 'mantine-datatable-text-selection-disabled';\nexport const TEXT_ALIGN_LEFT = 'mantine-datatable-text-align-left';\nexport const TEXT_ALIGN_CENTER = 'mantine-datatable-text-align-center';\nexport const TEXT_ALIGN_RIGHT = 'mantine-datatable-text-align-right';\n","import { type MantineStyleProp, type MantineTheme, TableTh } from '@mantine/core';\nimport clsx from 'clsx';\nimport type { PinnedColumnInfo } from './hooks';\nimport { useMediaQueryStringOrFunction } from './hooks';\nimport type { DataTableColumn } from './types';\nimport { ELLIPSIS, NOWRAP, TEXT_ALIGN_CENTER, TEXT_ALIGN_LEFT, TEXT_ALIGN_RIGHT } from './utilityClasses';\nimport { columnWidthValue } from './utils';\n\ntype DataTableFooterCellProps<T> = {\n className: string | undefined;\n style: MantineStyleProp | undefined;\n pinnedInfo: PinnedColumnInfo | undefined;\n visibleMediaQuery: string | ((theme: MantineTheme) => string) | undefined;\n title: React.ReactNode | undefined;\n} & Pick<DataTableColumn<T>, 'accessor' | 'noWrap' | 'ellipsis' | 'textAlign' | 'width'>;\n\nexport function DataTableFooterCell<T>({\n className,\n style,\n pinnedInfo,\n visibleMediaQuery,\n title,\n noWrap,\n ellipsis,\n textAlign,\n width,\n accessor,\n}: DataTableFooterCellProps<T>) {\n if (!useMediaQueryStringOrFunction(visibleMediaQuery)) return null;\n const widthValue = columnWidthValue(String(accessor), width);\n return (\n <TableTh\n data-pinned={pinnedInfo?.position}\n data-pinned-shadow={pinnedInfo?.isBoundary ? pinnedInfo.position : undefined}\n className={clsx(\n {\n [NOWRAP]: noWrap || ellipsis,\n [ELLIPSIS]: ellipsis,\n [TEXT_ALIGN_LEFT]: textAlign === 'left',\n [TEXT_ALIGN_CENTER]: textAlign === 'center',\n [TEXT_ALIGN_RIGHT]: textAlign === 'right',\n },\n className\n )}\n style={[\n {\n width: widthValue,\n minWidth: widthValue,\n maxWidth: widthValue,\n },\n style,\n pinnedInfo && {\n position: 'sticky',\n [pinnedInfo.position]: pinnedInfo.offset,\n overflow: 'visible',\n },\n ]}\n >\n {title}\n </TableTh>\n );\n}\n","import { TableTh } from '@mantine/core';\n\ntype DataTableFooterSelectorPlaceholderCellProps = {\n shadowVisible: boolean;\n};\n\nexport function DataTableFooterSelectorPlaceholderCell({ shadowVisible }: DataTableFooterSelectorPlaceholderCellProps) {\n return (\n <TableTh\n className=\"mantine-datatable-footer-selector-placeholder-cell\"\n data-shadow-visible={shadowVisible || undefined}\n />\n );\n}\n","import { type MantineStyleProp, TableTfoot, TableTr } from '@mantine/core';\nimport clsx from 'clsx';\nimport { DataTableFooterCell } from './DataTableFooterCell';\nimport { DataTableFooterSelectorPlaceholderCell } from './DataTableFooterSelectorPlaceholderCell';\nimport type { PinnedColumnInfo } from './hooks';\nimport type { DataTableColumn, DataTableDefaultColumnProps } from './types';\n\ntype DataTableFooterProps<T> = {\n className: string | undefined;\n style: MantineStyleProp | undefined;\n columns: DataTableColumn<T>[];\n defaultColumnProps: DataTableDefaultColumnProps<T> | undefined;\n pinnedMap: Map<string, PinnedColumnInfo>;\n selectionVisible: boolean;\n selectorCellShadowVisible: boolean;\n ref: React.Ref<HTMLTableSectionElement>;\n};\n\nexport function DataTableFooter<T>({\n className,\n style,\n columns,\n defaultColumnProps,\n pinnedMap,\n selectionVisible,\n selectorCellShadowVisible,\n ref,\n}: DataTableFooterProps<T>) {\n return (\n <TableTfoot ref={ref} className={clsx('mantine-datatable-footer', className)} style={style}>\n <TableTr>\n {selectionVisible && <DataTableFooterSelectorPlaceholderCell shadowVisible={selectorCellShadowVisible} />}\n {columns.map(({ hidden, ...columnProps }) => {\n if (hidden) return null;\n\n const {\n accessor,\n visibleMediaQuery,\n textAlign,\n width,\n footer,\n footerClassName,\n footerStyle,\n noWrap,\n ellipsis,\n } = { ...defaultColumnProps, ...columnProps };\n\n return (\n <DataTableFooterCell<T>\n key={accessor as React.Key}\n accessor={accessor}\n pinnedInfo={pinnedMap.get(String(accessor))}\n className={footerClassName}\n style={footerStyle}\n visibleMediaQuery={visibleMediaQuery}\n textAlign={textAlign}\n width={width}\n title={footer}\n noWrap={noWrap}\n ellipsis={ellipsis}\n />\n );\n })}\n </TableTr>\n </TableTfoot>\n );\n}\n","import { TableTh } from '@mantine/core';\nimport clsx from 'clsx';\nimport { useMemo } from 'react';\nimport type { PinnedColumnInfo } from './hooks';\nimport { useMediaQueriesStringOrFunction } from './hooks';\nimport type { DataTableColumnGroup } from './types';\nimport { TEXT_ALIGN_CENTER, TEXT_ALIGN_LEFT, TEXT_ALIGN_RIGHT } from './utilityClasses';\nimport { calculateColSpan, flattenColumns, humanize, needsRightBorder } from './utils';\n\ntype DataTableColumnGroupHeaderCellProps<T> = {\n group: DataTableColumnGroup<T>;\n pinnedInfo: PinnedColumnInfo | undefined;\n maxDepth: number;\n currentDepth: number;\n previousGroups: readonly DataTableColumnGroup<T>[];\n isLastGroup: boolean;\n withColumnBorders?: boolean;\n totalTableColumns: number;\n};\n\nexport function DataTableColumnGroupHeaderCell<T>({\n group: { id, columns, groups, title, textAlign, className, style },\n pinnedInfo,\n maxDepth,\n currentDepth,\n previousGroups,\n isLastGroup,\n withColumnBorders = false,\n totalTableColumns,\n}: DataTableColumnGroupHeaderCellProps<T>) {\n const allColumns = useMemo(() => {\n if (columns && columns.length > 0) {\n return columns;\n }\n if (groups && groups.length > 0) {\n return flattenColumns([{ id, columns, groups }]);\n }\n return [];\n }, [columns, groups, id]);\n\n const queries = useMemo(() => allColumns.map(({ visibleMediaQuery }) => visibleMediaQuery), [allColumns]);\n const visibles = useMediaQueriesStringOrFunction(queries);\n\n const colSpan = useMemo(() => {\n return calculateColSpan({ id, columns, groups }, visibles);\n }, [id, columns, groups, visibles]);\n\n const columnsBeforeGroup = useMemo(() => {\n return previousGroups.reduce((sum, g) => sum + calculateColSpan(g, visibles), 0);\n }, [previousGroups, visibles]);\n\n const hasSubGroups = groups && groups.length > 0;\n const rowSpan = hasSubGroups ? 1 : maxDepth - currentDepth;\n\n const hasMoreColumns = columnsBeforeGroup + colSpan < totalTableColumns;\n const needsBorder = needsRightBorder(isLastGroup, hasMoreColumns, withColumnBorders);\n\n return colSpan > 0 ? (\n <TableTh\n colSpan={colSpan}\n rowSpan={rowSpan > 1 ? rowSpan : undefined}\n data-pinned={pinnedInfo?.position}\n data-pinned-shadow={pinnedInfo?.isBoundary ? pinnedInfo.position : undefined}\n className={clsx(\n 'mantine-datatable-column-group-header-cell',\n {\n [TEXT_ALIGN_LEFT]: textAlign === 'left',\n [TEXT_ALIGN_CENTER]: textAlign === 'center',\n [TEXT_ALIGN_RIGHT]: textAlign === 'right',\n 'mantine-datatable-column-group-header-cell--needs-border': needsBorder,\n },\n className\n )}\n style={[\n style,\n pinnedInfo && {\n position: 'sticky',\n [pinnedInfo.position]: pinnedInfo.offset,\n overflow: 'visible',\n },\n ]}\n >\n {title ?? humanize(id)}\n </TableTh>\n ) : null;\n}\n","export function IconFilter() {\n return (\n <svg\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 24 24\"\n strokeWidth=\"2\"\n stroke=\"currentColor\"\n fill=\"none\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path stroke=\"none\" d=\"M0 0h24v24H0z\" fill=\"none\" />\n <path d=\"M4 4h16v2.172a2 2 0 0 1 -.586 1.414l-4.414 4.414v7l-6 2v-8.5l-4.48 -4.928a2 2 0 0 1 -.52 -1.345v-2.227z\" />\n </svg>\n );\n}\n","export function IconFilterFilled() {\n return (\n <svg\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 24 24\"\n strokeWidth=\"2\"\n stroke=\"currentColor\"\n fill=\"none\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path stroke=\"none\" d=\"M0 0h24v24H0z\" fill=\"none\" />\n <path\n d=\"M20 3h-16a1 1 0 0 0 -1 1v2.227l.008 .223a3 3 0 0 0 .772 1.795l4.22 4.641v8.114a1 1 0 0 0 1.316 .949l6 -2l.108 -.043a1 1 0 0 0 .576 -.906v-6.586l4.121 -4.12a3 3 0 0 0 .879 -2.123v-2.171a1 1 0 0 0 -1 -1z\"\n strokeWidth=\"0\"\n fill=\"currentColor\"\n />\n </svg>\n );\n}\n","import { ActionIcon, Popover, PopoverDropdown, PopoverTarget } from '@mantine/core';\nimport { useClickOutside, useDisclosure } from '@mantine/hooks';\nimport type { RefObject } from 'react';\nimport { IconFilter } from './icons/IconFilter';\nimport { IconFilterFilled } from './icons/IconFilterFilled';\nimport type { DataTableColumn } from './types';\n\ntype DataTableHeaderCellFilterProps<T> = {\n children: DataTableColumn<T>['filter'];\n filterPopoverProps: DataTableColumn<T>['filterPopoverProps'];\n filterPopoverDisableClickOutside?: DataTableColumn<T>['filterPopoverDisableClickOutside'];\n isActive: boolean;\n};\n\nexport function DataTableHeaderCellFilter<T>({\n children,\n isActive,\n filterPopoverProps,\n filterPopoverDisableClickOutside,\n}: DataTableHeaderCellFilterProps<T>) {\n const [isOpen, { close, toggle }] = useDisclosure(false);\n const Icon = isActive ? IconFilterFilled : IconFilter;\n let ref: RefObject<HTMLDivElement | null> | undefined = useClickOutside(close);\n if (filterPopoverDisableClickOutside) ref = undefined;\n\n return (\n // Keep the expanded props before the open/close, or they could be overridden by the client\n <Popover withArrow shadow=\"md\" trapFocus {...filterPopoverProps} opened={isOpen} onClose={close} onDismiss={close}>\n <PopoverTarget>\n <ActionIcon\n className=\"mantine-datatable-header-cell-filter-action-icon\"\n data-active={isActive || undefined}\n size=\"sm\"\n variant=\"default\"\n onClick={(e) => {\n e.preventDefault();\n toggle();\n }}\n onKeyDown={(e) => e.stopPropagation()}\n >\n <Icon />\n </ActionIcon>\n </PopoverTarget>\n <PopoverDropdown ref={ref} onClick={(e) => e.stopPropagation()} onKeyDown={(e) => e.stopPropagation()}>\n {typeof children === 'function' ? children({ close }) : children}\n </PopoverDropdown>\n </Popover>\n );\n}\n","export function IconArrowLeft() {\n return (\n <svg\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 24 24\"\n strokeWidth=\"2\"\n stroke=\"currentColor\"\n fill=\"none\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path stroke=\"none\" d=\"M0 0h24v24H0z\" fill=\"none\" />\n <path d=\"M5 12l14 0\" />\n <path d=\"M5 12l6 6\" />\n <path d=\"M5 12l6 -6\" />\n </svg>\n );\n}\n","export function IconArrowRight() {\n return (\n <svg\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 24 24\"\n strokeWidth=\"2\"\n stroke=\"currentColor\"\n fill=\"none\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path stroke=\"none\" d=\"M0 0h24v24H0z\" fill=\"none\" />\n <path d=\"M5 12l14 0\" />\n <path d=\"M19 12l-6 6\" />\n <path d=\"M19 12l-6 -6\" />\n </svg>\n );\n}\n","export function IconPin() {\n return (\n <svg\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 24 24\"\n strokeWidth=\"2\"\n stroke=\"currentColor\"\n fill=\"none\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path stroke=\"none\" d=\"M0 0h24v24H0z\" fill=\"none\" />\n <path d=\"M9 4v6l-2 4v2h10v-2l-2-4v-6\" />\n <path d=\"M12 16v5\" />\n <path d=\"M8 4h8\" />\n </svg>\n );\n}\n","export function IconX() {\n return (\n <svg\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 24 24\"\n strokeWidth=\"2\"\n stroke=\"currentColor\"\n fill=\"none\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path stroke=\"none\" d=\"M0 0h24v24H0z\" fill=\"none\" />\n <path d=\"M18 6l-12 12\" />\n <path d=\"M6 6l12 12\" />\n </svg>\n );\n}\n","'use client';\n\nimport { ActionIcon, Center, Group, Popover } from '@mantine/core';\nimport { useCallback, useEffect, useRef, useState } from 'react';\nimport { useIsomorphicLayoutEffect } from './hooks/useIsomorphicLayoutEffect';\nimport { IconArrowLeft } from './icons/IconArrowLeft';\nimport { IconArrowRight } from './icons/IconArrowRight';\nimport { IconPin } from './icons/IconPin';\nimport { IconX } from './icons/IconX';\n\ntype DataTablePinnableDropdownProps = {\n currentPinned: 'left' | 'right' | undefined;\n onPinChange: (pinned: 'left' | 'right' | undefined) => void;\n};\n\nexport function DataTablePinnableDropdown({ currentPinned, onPinChange }: DataTablePinnableDropdownProps) {\n const [opened, setOpened] = useState(false);\n const containerRef = useRef<HTMLDivElement>(null);\n const [isRtl, setIsRtl] = useState(false);\n\n // Detect RTL from DOM - more reliable than useDirection() which may not see local DirectionProvider\n const detectDirection = useCallback(() => {\n if (containerRef.current) {\n const computedDir = getComputedStyle(containerRef.current).direction;\n setIsRtl(computedDir === 'rtl');\n }\n }, []);\n\n // Use layout effect for synchronous detection (no flash)\n useIsomorphicLayoutEffect(() => {\n detectDirection();\n }, [detectDirection]);\n\n // Re-detect on open (in case direction changed)\n useEffect(() => {\n if (opened) {\n detectDirection();\n }\n }, [opened, detectDirection]);\n\n // In RTL mode, visual arrows should map to opposite logical sides:\n // - Left arrow (visually pointing left) → physical left edge → 'right' in RTL\n // - Right arrow (visually pointing right) → physical right edge → 'left' in RTL\n const leftArrowPinValue: 'left' | 'right' = isRtl ? 'right' : 'left';\n const rightArrowPinValue: 'left' | 'right' = isRtl ? 'left' : 'right';\n\n // For highlighting: check if current pinned matches what this arrow would set\n const isLeftArrowActive = currentPinned === leftArrowPinValue;\n const isRightArrowActive = currentPinned === rightArrowPinValue;\n\n return (\n <Popover opened={opened} onChange={setOpened} position=\"bottom\" withArrow shadow=\"sm\">\n <Popover.Target>\n <Center\n ref={containerRef}\n className=\"mantine-datatable-header-cell-pinnable-icon\"\n role=\"button\"\n aria-label=\"Pin column\"\n onMouseEnter={() => setOpened(true)}\n onMouseLeave={() => setOpened(false)}\n >\n <ActionIcon size=\"xs\" variant=\"light\" onClick={(e) => e.stopPropagation()}>\n <IconPin />\n </ActionIcon>\n </Center>\n </Popover.Target>\n\n <Popover.Dropdown\n onClick={(e) => e.stopPropagation()}\n onMouseEnter={() => setOpened(true)}\n onMouseLeave={() => setOpened(false)}\n className=\"mantine-datatable-pinnable-dropdown\"\n >\n <Group gap={4}>\n <ActionIcon\n size=\"sm\"\n variant={isLeftArrowActive ? 'filled' : 'light'}\n onClick={() => onPinChange(isLeftArrowActive ? undefined : leftArrowPinValue)}\n aria-label=\"Pin left\"\n >\n <IconArrowLeft />\n </ActionIcon>\n <ActionIcon\n size=\"sm\"\n variant={isRightArrowActive ? 'filled' : 'light'}\n onClick={() => onPinChange(isRightArrowActive ? undefined : rightArrowPinValue)}\n aria-label=\"Pin right\"\n >\n <IconArrowRight />\n </ActionIcon>\n {currentPinned && (\n <ActionIcon size=\"sm\" variant=\"light\" color=\"red\" onClick={() => onPinChange(undefined)} aria-label=\"Unpin\">\n <IconX />\n </ActionIcon>\n )}\n </Group>\n </Popover.Dropdown>\n </Popover>\n );\n}\n","import { useDirection } from '@mantine/core';\nimport type { RefObject } from 'react';\nimport { useCallback, useRef, useState } from 'react';\nimport { createPortal, flushSync } from 'react-dom';\nimport { useDataTableColumnsContext } from './DataTableColumns.context';\nimport { columnWidthVar } from './utils';\n\ntype DataTableResizableHeaderHandleProps = {\n accessor: string;\n columnRef: RefObject<HTMLTableCellElement | null>;\n /** Only move a guide line while dragging and apply the width on drop. */\n deferred: boolean;\n};\n\ntype ResizeGuide = { x: number; top: number; height: number };\n\nconst MIN_COLUMN_WIDTH = 50;\n\nexport const DataTableResizableHeaderHandle = (props: DataTableResizableHeaderHandleProps) => {\n const { accessor, columnRef, deferred } = props;\n const [isResizing, setIsResizing] = useState(false);\n const [guide, setGuide] = useState<ResizeGuide | null>(null);\n const startXRef = useRef<number>(0);\n const originalWidthsRef = useRef<{ current: number; next: number }>({ current: 0, next: 0 });\n\n const { dir } = useDirection();\n const isRTL = dir === 'rtl';\n\n const { setMultipleColumnWidths, beginResize, endResize } = useDataTableColumnsContext();\n\n const handleMouseDown = useCallback(\n (event: React.MouseEvent<HTMLDivElement>) => {\n event.preventDefault();\n event.stopPropagation();\n\n if (!columnRef.current) return;\n\n const currentColumn = columnRef.current;\n\n // Find the next resizable data column (skip selection column)\n let nextColumn = currentColumn.nextElementSibling as HTMLTableCellElement | null;\n while (nextColumn) {\n const nextAccessor = nextColumn.getAttribute('data-accessor');\n if (nextAccessor && nextAccessor !== '__selection__') {\n break;\n }\n nextColumn = nextColumn.nextElementSibling as HTMLTableCellElement | null;\n }\n\n if (!nextColumn) {\n return;\n }\n\n const nextAccessor = nextColumn.getAttribute('data-accessor');\n if (!nextAccessor) {\n return;\n }\n\n // Capture pixel widths BEFORE switching the table to fixed layout —\n // these are the natural rendered widths the user is starting from.\n const startCurrentWidth = currentColumn.offsetWidth;\n const startNextWidth = nextColumn.offsetWidth;\n\n // Snapshot every resizable header cell into pixel widths\n const resizable = beginResize();\n // A non-resizable neighbour keeps its declared width; the table layout absorbs the change.\n const tradesWithNext = resizable.has(nextAccessor);\n\n setIsResizing(true);\n startXRef.current = event.clientX;\n originalWidthsRef.current = {\n current: startCurrentWidth,\n next: startNextWidth,\n };\n\n const table = currentColumn.closest('table');\n const currentVar = columnWidthVar(accessor);\n const nextVar = columnWidthVar(nextAccessor);\n let liveWidths: { current: number; next: number } | null = null;\n const guideBounds = table?.closest('.mantine-datatable')?.getBoundingClientRect();\n\n // Live widths go to the DOM as CSS variables (see `columnWidthValue`); React only learns\n // the result on mouseup, so rows don't re-render on every mousemove. Deferred columns\n // only move the guide line until then.\n const handleMouseMove = (moveEvent: MouseEvent) => {\n let deltaX = moveEvent.clientX - startXRef.current;\n if (isRTL) deltaX = -deltaX;\n\n const maxShrinkCurrent = originalWidthsRef.current.current - MIN_COLUMN_WIDTH;\n const maxShrinkNext = tradesWithNext ? originalWidthsRef.current.next - MIN_COLUMN_WIDTH : Infinity;\n\n const constrainedDelta = Math.max(-maxShrinkCurrent, Math.min(deltaX, maxShrinkNext));\n\n liveWidths = {\n current: originalWidthsRef.current.current + constrainedDelta,\n next: originalWidthsRef.current.next - constrainedDelta,\n };\n if (deferred) {\n setGuide({\n x: startXRef.current + (isRTL ? -constrainedDelta : constrainedDelta),\n top: guideBounds?.top ?? 0,\n height: guideBounds?.height ?? 0,\n });\n return;\n }\n table?.style.setProperty(currentVar, `${liveWidths.current}px`);\n if (tradesWithNext) table?.style.setProperty(nextVar, `${liveWidths.next}px`);\n };\n\n const handleMouseUp = () => {\n setIsResizing(false);\n setGuide(null);\n\n document.body.style.cursor = 'initial';\n document.body.style.userSelect = 'initial';\n\n // Commit synchronously so the fallback widths already match when the variables go away.\n flushSync(() => {\n if (liveWidths) {\n setMultipleColumnWidths([\n { accessor, width: `${liveWidths.current}px` },\n ...(tradesWithNext ? [{ accessor: nextAccessor, width: `${liveWidths.next}px` }] : []),\n ]);\n }\n endResize();\n });\n table?.style.removeProperty(currentVar);\n table?.style.removeProperty(nextVar);\n\n document.removeEventListener('mousemove', handleMouseMove);\n document.removeEventListener('mouseup', handleMouseUp);\n };\n\n document.body.style.cursor = 'col-resize';\n document.body.style.userSelect = 'none';\n\n document.addEventListener('mousemove', handleMouseMove);\n document.addEventListener('mouseup', handleMouseUp);\n },\n [accessor, columnRef, deferred, isRTL, setMultipleColumnWidths, beginResize, endResize]\n );\n\n const handleDoubleClick = useCallback(() => {\n if (!columnRef.current) return;\n\n const currentColumn = columnRef.current;\n const nextColumn = currentColumn.nextElementSibling as HTMLTableCellElement | null;\n\n const updates = [{ accessor, width: 'auto' }];\n\n if (nextColumn) {\n const nextAccessor = nextColumn.getAttribute('data-accessor');\n if (nextAccessor && nextAccessor !== '__selection__') {\n updates.push({ accessor: nextAccessor, width: 'auto' });\n }\n }\n\n setMultipleColumnWidths(updates);\n }, [accessor, columnRef, setMultipleColumnWidths]);\n\n return (\n <>\n {guide &&\n createPortal(\n <div\n className=\"mantine-datatable-resize-guide\"\n style={{ left: guide.x, top: guide.top, height: guide.height }}\n />,\n document.body\n )}\n <div\n className=\"mantine-datatable-header-resizable-handle\"\n style={{\n cursor: isResizing ? 'col-resize' : undefined,\n }}\n onMouseDown={handleMouseDown}\n onDoubleClick={handleDoubleClick}\n onClick={(event) => event.stopPropagation()} // Prevent column sorting\n title=\"Drag to resize column, double-click to reset\"\n />\n </>\n );\n};\n","export function IconArrowsVertical() {\n return (\n <svg\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 24 24\"\n strokeWidth=\"2\"\n stroke=\"currentColor\"\n fill=\"none\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path stroke=\"none\" d=\"M0 0h24v24H0z\" fill=\"none\" />\n <path d=\"M8 7l4 -4l4 4\" />\n <path d=\"M8 17l4 4l4 -4\" />\n <path d=\"M12 3l0 18\" />\n </svg>\n );\n}\n","export function IconArrowUp() {\n return (\n <svg\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 24 24\"\n strokeWidth=\"2\"\n stroke=\"currentColor\"\n fill=\"none\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path stroke=\"none\" d=\"M0 0h24v24H0z\" fill=\"none\" />\n <path d=\"M12 5l0 14\" />\n <path d=\"M16 9l-4 -4\" />\n <path d=\"M8 9l4 -4\" />\n </svg>\n );\n}\n","export function IconGripVertical() {\n return (\n <svg\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 24 24\"\n strokeWidth=\"2\"\n stroke=\"currentColor\"\n fill=\"none\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path stroke=\"none\" d=\"M0 0h24v24H0z\" fill=\"none\" />\n <path d=\"M9 5m-1 0a1 1 0 1 0 2 0a1 1 0 1 0 -2 0\" />\n <path d=\"M9 12m-1 0a1 1 0 1 0 2 0a1 1 0 1 0 -2 0\" />\n <path d=\"M9 19m-1 0a1 1 0 1 0 2 0a1 1 0 1 0 -2 0\" />\n <path d=\"M15 5m-1 0a1 1 0 1 0 2 0a1 1 0 1 0 -2 0\" />\n <path d=\"M15 12m-1 0a1 1 0 1 0 2 0a1 1 0 1 0 -2 0\" />\n <path d=\"M15 19m-1 0a1 1 0 1 0 2 0a1 1 0 1 0 -2 0\" />\n </svg>\n );\n}\n","import { ActionIcon, Box, Center, Flex, Group, type MantineStyleProp, type MantineTheme, TableTh } from '@mantine/core';\nimport clsx from 'clsx';\nimport { useRef, useState } from 'react';\nimport { useDataTableColumnsContext } from './DataTableColumns.context';\nimport { DataTableHeaderCellFilter } from './DataTableHeaderCellFilter';\nimport { DataTablePinnableDropdown } from './DataTablePinnableDropdown';\nimport { DataTableResizableHeaderHandle } from './DataTableResizableHeaderHandle';\nimport type { PinnedColumnInfo } from './hooks';\nimport { useMediaQueryStringOrFunction } from './hooks';\nimport { IconArrowsVertical } from './icons/IconArrowsVertical';\nimport { IconArrowUp } from './icons/IconArrowUp';\nimport { IconGripVertical } from './icons/IconGripVertical';\nimport { IconX } from './icons/IconX';\nimport type { DataTableColumn, DataTableSortProps } from './types';\nimport { ELLIPSIS, NOWRAP, TEXT_ALIGN_CENTER, TEXT_ALIGN_LEFT, TEXT_ALIGN_RIGHT } from './utilityClasses';\nimport { columnWidthValue, humanize } from './utils';\n\ntype DataTableHeaderCellProps<T> = {\n className: string | undefined;\n style: MantineStyleProp | undefined;\n pinnedInfo: PinnedColumnInfo | undefined;\n visibleMediaQuery: string | ((theme: MantineTheme) => string) | undefined;\n title: React.ReactNode | undefined;\n sortStatus: DataTableSortProps<T>['sortStatus'];\n sortIcons: DataTableSortProps<T>['sortIcons'];\n onSortStatusChange: DataTableSortProps<T>['onSortStatusChange'];\n} & Pick<\n DataTableColumn<T>,\n | 'accessor'\n | 'sortable'\n | 'draggable'\n | 'toggleable'\n | 'pinnable'\n | 'resizable'\n | 'deferredResize'\n | 'textAlign'\n | 'width'\n | 'filter'\n | 'filterPopoverProps'\n | 'filterPopoverDisableClickOutside'\n | 'filtering'\n | 'sortKey'\n>;\n\nexport function DataTableHeaderCell<T>({\n className,\n style,\n pinnedInfo,\n accessor,\n visibleMediaQuery,\n title,\n sortable,\n draggable,\n toggleable,\n pinnable,\n resizable,\n deferredResize,\n sortIcons,\n textAlign,\n width,\n sortStatus,\n onSortStatusChange,\n filter,\n filterPopoverProps,\n filterPopoverDisableClickOutside,\n filtering,\n sortKey,\n}: DataTableHeaderCellProps<T>) {\n const {\n setSourceColumn,\n setTargetColumn,\n swapColumns,\n columnsToggle,\n setColumnsToggle,\n columnsPinning,\n setColumnsPinning,\n } = useDataTableColumnsContext();\n const widthValue = columnWidthValue(String(accessor), width);\n const [dragOver, setDragOver] = useState<boolean>(false);\n const columnRef = useRef<HTMLTableCellElement | null>(null);\n\n // Get current pinning state for this column\n const pinningState = columnsPinning?.find((p) => p.accessor === accessor);\n const currentPinned = pinningState?.pinned;\n\n if (!useMediaQueryStringOrFunction(visibleMediaQuery)) return null;\n const text = title ?? humanize(accessor as string);\n const tooltip = typeof text === 'string' ? text : undefined;\n\n const sortAction =\n sortable && onSortStatusChange\n ? (e?: React.BaseSyntheticEvent) => {\n if (e?.defaultPrevented) return;\n\n onSortStatusChange({\n sortKey,\n columnAccessor: accessor,\n direction:\n sortStatus?.columnAccessor === accessor\n ? sortStatus.direction === 'asc'\n ? 'desc'\n : 'asc'\n : (sortStatus?.direction ?? 'asc'),\n });\n }\n : undefined;\n\n const handleColumnDragStart = (e: React.DragEvent) => {\n e.stopPropagation();\n setSourceColumn(accessor as string);\n setDragOver(false);\n };\n\n const handleColumnDragOver = (e: React.DragEvent) => {\n e.preventDefault();\n setTargetColumn(accessor as string);\n setDragOver(true);\n };\n\n const handleColumnDrop = () => {\n setTargetColumn(accessor as string);\n setDragOver(false);\n swapColumns();\n };\n\n const handleColumnDragEnter = () => {\n setDragOver(true);\n };\n\n const handleColumnDragLeave = () => {\n setDragOver(false);\n };\n\n const handleColumnToggle = (e: React.MouseEvent<HTMLButtonElement>) => {\n e.stopPropagation();\n\n setColumnsToggle(\n columnsToggle.map((c) => {\n if (c.accessor === accessor) {\n return { ...c, toggled: false };\n }\n return c;\n })\n );\n };\n\n const handlePinChange = (pinned: 'left' | 'right' | undefined) => {\n setColumnsPinning((prev) =>\n prev.map((p) => {\n if (p.accessor === accessor) {\n return { ...p, pinned };\n }\n return p;\n })\n );\n };\n\n return (\n <TableTh\n data-accessor={accessor}\n data-pinned={pinnedInfo?.position}\n data-pinned-shadow={pinnedInfo?.isBoundary ? pinnedInfo.position : undefined}\n className={clsx(\n {\n 'mantine-datatable-header-cell-sortable': sortable,\n 'mantine-datatable-header-cell-toggleable': toggleable,\n 'mantine-datatable-header-cell-pinnable': pinnable,\n 'mantine-datatable-header-cell-resizable': resizable,\n },\n className\n )}\n style={[\n {\n width: widthValue,\n ...(!resizable ? { minWidth: widthValue, maxWidth: widthValue } : {}),\n },\n style,\n pinnedInfo && {\n position: 'sticky',\n [pinnedInfo.position]: pinnedInfo.offset,\n overflow: 'visible',\n },\n ]}\n role={sortable ? 'button' : undefined}\n tabIndex={sortable ? 0 : undefined}\n onClick={sortAction}\n onKeyDown={(e) => e.key === 'Enter' && sortAction?.()}\n ref={columnRef}\n >\n <Group className=\"mantine-datatable-header-cell-sortable-group\" justify=\"space-between\" wrap=\"nowrap\">\n <Flex\n align=\"center\"\n w=\"100%\"\n className={clsx({\n 'mantine-datatable-header-cell-draggable': draggable,\n 'mantine-datatable-header-cell-drag-over': dragOver,\n })}\n draggable={draggable}\n onDragStart={draggable ? handleColumnDragStart : undefined}\n onDragEnter={draggable ? handleColumnDragEnter : undefined}\n onDragOver={draggable ? handleColumnDragOver : undefined}\n onDrop={draggable ? handleColumnDrop : undefined}\n onDragLeave={draggable ? handleColumnDragLeave : undefined}\n >\n {draggable ? (\n <Center role=\"img\" aria-label=\"Drag column\">\n <ActionIcon\n className=\"mantine-datatable-header-cell-draggable-action-icon\"\n variant=\"subtle\"\n size=\"xs\"\n onClick={(e: React.MouseEvent<HTMLButtonElement>) => {\n e.stopPropagation();\n }}\n >\n <IconGripVertical />\n </ActionIcon>\n </Center>\n ) : null}\n <Box\n className={clsx(\n 'mantine-datatable-header-cell-sortable-text',\n {\n [TEXT_ALIGN_LEFT]: textAlign === 'left',\n [TEXT_ALIGN_CENTER]: textAlign === 'center',\n [TEXT_ALIGN_RIGHT]: textAlign === 'right',\n },\n NOWRAP,\n ELLIPSIS\n )}\n title={tooltip}\n >\n {text}\n </Box>\n </Flex>\n {pinnable ? <DataTablePinnableDropdown currentPinned={currentPinned} onPinChange={handlePinChange} /> : null}\n {toggleable ? (\n <Center className=\"mantine-datatable-header-cell-toggleable-icon\" role=\"img\" aria-label=\"Toggle column\">\n <ActionIcon size=\"xs\" variant=\"light\" onClick={handleColumnToggle}>\n <IconX />\n </ActionIcon>\n </Center>\n ) : null}\n {sortable || sortStatus?.columnAccessor === accessor ? (\n sortStatus?.columnAccessor === accessor ? (\n <Center\n className={clsx('mantine-datatable-header-cell-sortable-icon', {\n 'mantine-datatable-header-cell-sortable-icon-reversed': sortStatus.direction === 'desc',\n })}\n role=\"img\"\n aria-label={`Sorted ${sortStatus.direction === 'desc' ? 'descending' : 'ascending'}`}\n >\n {sortIcons?.sorted || <IconArrowUp />}\n </Center>\n ) : (\n <Center className=\"mantine-datatable-header-cell-sortable-unsorted-icon\" role=\"img\" aria-label=\"Not sorted\">\n {sortIcons?.unsorted || <IconArrowsVertical />}\n </Center>\n )\n ) : null}\n {filter ? (\n <DataTableHeaderCellFilter\n filterPopoverProps={filterPopoverProps}\n isActive={!!filtering}\n filterPopoverDisableClickOutside={filterPopoverDisableClickOutside}\n >\n {filter}\n </DataTableHeaderCellFilter>\n ) : null}\n </Group>\n {resizable && accessor !== '__selection__' ? (\n <DataTableResizableHeaderHandle\n accessor={accessor as string}\n columnRef={columnRef}\n deferred={!!deferredResize}\n />\n ) : null}\n </TableTh>\n );\n}\n","import type { MantineStyleProp } from '@mantine/core';\nimport { Checkbox, type CheckboxProps, TableTh } from '@mantine/core';\nimport clsx from 'clsx';\nimport type { DataTableSelectionTrigger } from './types';\nimport { POINTER_CURSOR } from './utilityClasses';\n\ntype DataTableHeaderSelectorCellProps = {\n className: string | undefined;\n style: MantineStyleProp | undefined;\n trigger: DataTableSelectionTrigger;\n shadowVisible: boolean;\n checked: boolean;\n indeterminate: boolean;\n checkboxProps: CheckboxProps;\n onChange: (() => void) | undefined;\n rowSpan: number | undefined;\n ref: React.Ref<HTMLTableCellElement>;\n};\n\nexport function DataTableHeaderSelectorCell({\n className,\n style,\n trigger,\n shadowVisible,\n checked,\n indeterminate,\n checkboxProps,\n onChange,\n rowSpan,\n ref,\n}: DataTableHeaderSelectorCellProps) {\n const enabled = !checkboxProps.disabled;\n\n return (\n <TableTh\n ref={ref}\n className={clsx(\n 'mantine-datatable-header-selector-cell',\n { [POINTER_CURSOR]: trigger === 'cell' && enabled },\n className\n )}\n style={style}\n rowSpan={rowSpan}\n data-shadow-visible={shadowVisible || undefined}\n data-accessor=\"__selection__\"\n onClick={trigger === 'cell' && enabled ? onChange : undefined}\n >\n <Checkbox\n classNames={enabled ? { input: POINTER_CURSOR } : undefined}\n checked={checked}\n indeterminate={indeterminate}\n onChange={onChange}\n {...checkboxProps}\n disabled={!(onChange || checkboxProps.onChange) || checkboxProps.disabled}\n />\n </TableTh>\n );\n}\n","import {\n Checkbox,\n type CheckboxProps,\n Group,\n type MantineStyleProp,\n Popover,\n PopoverDropdown,\n PopoverTarget,\n Stack,\n TableThead,\n TableTr,\n} from '@mantine/core';\nimport clsx from 'clsx';\nimport { useState } from 'react';\nimport { DataTableColumnGroupHeaderCell } from './DataTableColumnGroupHeaderCell';\nimport { useDataTableColumnsContext } from './DataTableColumns.context';\nimport { DataTableHeaderCell } from './DataTableHeaderCell';\nimport { DataTableHeaderSelectorCell } from './DataTableHeaderSelectorCell';\nimport type { DataTableColumnToggle, PinnedColumnInfo } from './hooks';\nimport type { DataTableColumn, DataTableColumnGroup, DataTableSelectionTrigger, DataTableSortProps } from './types';\nimport { getGroupsAtDepth, getMaxGroupDepth, humanize } from './utils';\n\ntype DataTableHeaderProps<T> = {\n selectionColumnHeaderRef: React.ForwardedRef<HTMLTableCellElement>;\n className: string | undefined;\n style?: MantineStyleProp;\n sortStatus: DataTableSortProps<T>['sortStatus'];\n sortIcons: DataTableSortProps<T>['sortIcons'];\n onSortStatusChange: DataTableSortProps<T>['onSortStatusChange'];\n columns: DataTableColumn<T>[];\n defaultColumnProps: Omit<DataTableColumn<T>, 'accessor'> | undefined;\n groups: readonly DataTableColumnGroup<T>[] | undefined;\n pinnedMap: Map<string, PinnedColumnInfo>;\n selectionTrigger: DataTableSelectionTrigger;\n selectionVisible: boolean;\n selectionChecked: boolean;\n selectionIndeterminate: boolean;\n onSelectionChange: (() => void) | undefined;\n selectionCheckboxProps: CheckboxProps;\n selectorCellShadowVisible: boolean;\n selectionColumnClassName: string | undefined;\n selectionColumnStyle: MantineStyleProp;\n withColumnBorders?: boolean;\n ref: React.Ref<HTMLTableSectionElement>;\n};\n\nfunction getGroupPinnedInfo<T>(\n group: DataTableColumnGroup<T>,\n pinnedMap: Map<string, PinnedColumnInfo>\n): PinnedColumnInfo | undefined {\n const leafColumns = group.columns ?? [];\n const leafAccessors = leafColumns.filter((c) => !c.hidden).map((c) => String(c.accessor));\n\n const pinnedInfos = leafAccessors.map((acc) => pinnedMap.get(acc)).filter(Boolean) as PinnedColumnInfo[];\n\n if (pinnedInfos.length === 0 || pinnedInfos.length !== leafAccessors.length) return undefined;\n\n const logicalSides = new Set(pinnedInfos.map((p) => p.logicalSide));\n if (logicalSides.size > 1) return undefined;\n\n const logicalSide = [...logicalSides][0];\n const targetAcc = logicalSide === 'left' ? leafAccessors[0] : leafAccessors[leafAccessors.length - 1];\n const info = pinnedMap.get(targetAcc);\n if (!info) return undefined;\n\n const boundaryAcc = logicalSide === 'left' ? leafAccessors[leafAccessors.length - 1] : leafAccessors[0];\n const boundaryInfo = pinnedMap.get(boundaryAcc);\n return { ...info, isBoundary: boundaryInfo?.isBoundary ?? false };\n}\n\nexport function DataTableHeader<T>({\n selectionColumnHeaderRef,\n className,\n style,\n sortStatus,\n sortIcons,\n onSortStatusChange,\n columns,\n defaultColumnProps,\n groups,\n pinnedMap,\n selectionTrigger,\n selectionVisible,\n selectionChecked,\n selectionIndeterminate,\n onSelectionChange,\n selectionCheckboxProps,\n selectorCellShadowVisible,\n selectionColumnClassName,\n selectionColumnStyle,\n withColumnBorders = false,\n ref,\n}: DataTableHeaderProps<T>) {\n const maxGroupDepth = groups ? getMaxGroupDepth(groups) : 0;\n const totalHeaderRows = maxGroupDepth > 0 ? maxGroupDepth + 1 : 1;\n\n const allRecordsSelectorCell = selectionVisible ? (\n <DataTableHeaderSelectorCell\n ref={selectionColumnHeaderRef}\n className={selectionColumnClassName}\n style={selectionColumnStyle}\n trigger={selectionTrigger}\n shadowVisible={selectorCellShadowVisible}\n checked={selectionChecked}\n indeterminate={selectionIndeterminate}\n checkboxProps={selectionCheckboxProps}\n onChange={onSelectionChange}\n rowSpan={groups ? totalHeaderRows : undefined}\n />\n ) : null;\n\n const { columnsToggle, setColumnsToggle } = useDataTableColumnsContext();\n const [columnsPopoverOpened, setColumnsPopoverOpened] = useState<boolean>(false);\n const someColumnsToggleable = columns.some((column) => column.toggleable);\n\n const columnToggleCheckboxLabels = someColumnsToggleable\n ? Object.fromEntries(columns.map(({ accessor, title }) => [accessor, title ?? humanize(String(accessor))]))\n : undefined;\n\n const content = (\n <TableThead\n className={clsx('mantine-datatable-header', className)}\n style={style}\n ref={ref}\n onContextMenu={\n someColumnsToggleable\n ? (e) => {\n e.preventDefault();\n setColumnsPopoverOpened((columnsPopoverOpened) => !columnsPopoverOpened);\n }\n : undefined\n }\n >\n {groups &&\n Array.from({ length: maxGroupDepth }, (_, depthIndex) => {\n const groupsAtDepth = getGroupsAtDepth(groups, depthIndex);\n\n return (\n <TableTr key={`group-depth-${depthIndex}`}>\n {depthIndex === 0 && allRecordsSelectorCell}\n {groupsAtDepth.map((group, index) => {\n return (\n <DataTableColumnGroupHeaderCell\n key={group.id}\n group={group}\n pinnedInfo={getGroupPinnedInfo(group, pinnedMap)}\n maxDepth={maxGroupDepth}\n currentDepth={depthIndex}\n previousGroups={groupsAtDepth.slice(0, index)}\n isLastGroup={index === groupsAtDepth.length - 1}\n withColumnBorders={withColumnBorders}\n totalTableColumns={columns.length}\n />\n );\n })}\n </TableTr>\n );\n })}\n\n <TableTr>\n {!groups && allRecordsSelectorCell}\n\n {columns.map(({ hidden, ...columnProps }, index) => {\n if (hidden) return null;\n\n const {\n accessor,\n visibleMediaQuery,\n textAlign,\n width,\n title,\n sortable,\n draggable,\n toggleable,\n pinnable,\n resizable,\n deferredResize,\n titleClassName,\n titleStyle,\n filter,\n filterPopoverProps,\n filterPopoverDisableClickOutside,\n filtering,\n sortKey,\n } = { ...defaultColumnProps, ...columnProps };\n\n return (\n <DataTableHeaderCell<T>\n key={accessor as React.Key}\n accessor={accessor}\n pinnedInfo={pinnedMap.get(String(accessor))}\n className={titleClassName}\n style={titleStyle}\n visibleMediaQuery={visibleMediaQuery}\n textAlign={textAlign}\n width={width}\n title={title}\n sortable={sortable}\n draggable={draggable}\n toggleable={toggleable}\n pinnable={pinnable}\n // we won't display the resize handle for the last column to avoid overflow render issues\n resizable={resizable && index < columns.length - 1}\n deferredResize={deferredResize}\n sortStatus={sortStatus}\n sortIcons={sortIcons}\n sortKey={sortKey}\n onSortStatusChange={onSortStatusChange}\n filter={filter}\n filterPopoverProps={filterPopoverProps}\n filterPopoverDisableClickOutside={filterPopoverDisableClickOutside}\n filtering={filtering}\n />\n );\n })}\n </TableTr>\n </TableThead>\n );\n\n return someColumnsToggleable ? (\n <Popover position=\"bottom\" withArrow shadow=\"md\" opened={columnsPopoverOpened} onChange={setColumnsPopoverOpened}>\n <PopoverTarget>{content}</PopoverTarget>\n <PopoverDropdown>\n <Stack>\n {columnsToggle\n .filter((column) => column.toggleable)\n .map((column: DataTableColumnToggle) => {\n return (\n <Group key={column.accessor}>\n <Checkbox\n classNames={{ label: 'mantine-datatable-header-column-toggle-checkbox-label' }}\n size=\"xs\"\n label={columnToggleCheckboxLabels![column.accessor]}\n checked={column.toggled}\n onChange={(e) => {\n setColumnsToggle(\n columnsToggle.map((c: DataTableColumnToggle) => {\n if (c.accessor === column.accessor) {\n return { ...c, toggled: e.currentTarget.checked };\n }\n return c;\n })\n );\n }}\n />\n </Group>\n );\n })}\n </Stack>\n </PopoverDropdown>\n </Popover>\n ) : (\n content\n );\n}\n","import { Center, Loader, type MantineColor, type MantineLoader, type MantineSize } from '@mantine/core';\nimport clsx from 'clsx';\n\ntype DataTableLoaderProps = {\n fetching: boolean | undefined;\n customContent: React.ReactNode | undefined;\n backgroundBlur: number | undefined;\n size: MantineSize | (string & NonNullable<unknown>) | number | undefined;\n type: MantineLoader | undefined;\n color: MantineColor | undefined;\n};\n\nexport function DataTableLoader({ fetching, customContent, backgroundBlur, size, type, color }: DataTableLoaderProps) {\n return (\n <Center\n className={clsx('mantine-datatable-loader', { 'mantine-datatable-loader-fetching': fetching })}\n style={[{ backdropFilter: backgroundBlur ? `blur(${backgroundBlur}px)` : undefined }]}\n >\n {fetching && (customContent || <Loader size={size} type={type} color={color} />)}\n </Center>\n );\n}\n","export function IconSelector() {\n return (\n <svg\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 24 24\"\n strokeWidth=\"2\"\n stroke=\"currentColor\"\n fill=\"none\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path stroke=\"none\" d=\"M0 0h24v24H0z\" fill=\"none\" />\n <path d=\"M8 9l4 -4l4 4\" />\n <path d=\"M16 15l-4 4l-4 -4\" />\n </svg>\n );\n}\n","import type { MantineColor } from '@mantine/core';\nimport { Button, Group, type MantineSize, Menu, MenuDropdown, MenuItem, MenuTarget, rem, Text } from '@mantine/core';\nimport clsx from 'clsx';\nimport { getPaginationCssVariables } from './cssVariables';\nimport { IconSelector } from './icons/IconSelector';\n\ntype DataTablePageSizeSelectorComponentProps = {\n size: MantineSize;\n label: string;\n values: number[];\n value: number;\n activeTextColor: MantineColor | { dark: MantineColor; light: MantineColor } | undefined;\n activeBackgroundColor: MantineColor | { dark: MantineColor; light: MantineColor } | undefined;\n onChange: (value: number) => void;\n};\n\nconst HEIGHT: Record<MantineSize, string> = { xs: rem(22), sm: rem(26), md: rem(32), lg: rem(38), xl: rem(44) };\n\nexport function DataTablePageSizeSelector({\n size,\n label,\n values,\n value,\n activeTextColor,\n activeBackgroundColor,\n onChange,\n}: DataTablePageSizeSelectorComponentProps) {\n return (\n <Group gap=\"xs\">\n <Text component=\"div\" size={size}>\n {label}\n </Text>\n <Menu withinPortal withArrow offset={2} classNames={{ arrow: 'mantine-datatable-page-size-selector-menu-arrow' }}>\n <MenuTarget>\n <Button\n size={size}\n variant=\"default\"\n classNames={{ section: 'mantine-datatable-page-size-selector-button-icon' }}\n rightSection={<IconSelector />}\n style={[\n { fontWeight: 'normal' },\n (theme) => ({\n height: HEIGHT[size],\n paddingLeft: theme.spacing[size],\n paddingRight: theme.spacing[size],\n }),\n ]}\n >\n {value}\n </Button>\n </MenuTarget>\n <MenuDropdown>\n {values.map((v) => {\n const isCurrent = v === value;\n return (\n <MenuItem\n key={v}\n className={clsx({ 'mantine-datatable-page-size-selector-active': isCurrent })}\n style={[\n { height: HEIGHT[size] },\n isCurrent && (activeTextColor || activeBackgroundColor)\n ? (theme) =>\n getPaginationCssVariables({\n theme,\n paginationActiveTextColor: activeTextColor,\n paginationActiveBackgroundColor: activeBackgroundColor,\n })\n : undefined,\n ]}\n disabled={isCurrent}\n onClick={() => onChange(v)}\n >\n <Text component=\"div\" size={size}>\n {v}\n </Text>\n </MenuItem>\n );\n })}\n </MenuDropdown>\n </Menu>\n </Group>\n );\n}\n","import { Box, type MantineSpacing, type MantineStyleProp, Pagination, rem, Text } from '@mantine/core';\nimport clsx from 'clsx';\nimport { getPaginationCssVariables } from './cssVariables';\nimport { DataTablePageSizeSelector } from './DataTablePageSizeSelector';\nimport { useMediaQueryStringOrFunction } from './hooks';\nimport type { DataTablePaginationProps } from './types';\nimport type { DataTablePaginationRenderContext } from './types/DataTablePaginationRenderContext';\nimport type { WithOptionalProperty, WithRequiredProperty } from './types/utils';\n\ntype DataTablePaginationComponentProps = WithOptionalProperty<\n WithRequiredProperty<\n DataTablePaginationProps,\n 'loadingText' | 'paginationSize' | 'recordsPerPageLabel' | 'paginationWrapBreakpoint' | 'getPaginationControlProps'\n >,\n 'onRecordsPerPageChange' | 'recordsPerPageOptions' | 'renderPagination'\n> & {\n className: string | undefined;\n style: MantineStyleProp | undefined;\n fetching: boolean | undefined;\n recordsLength: number | undefined;\n horizontalSpacing: MantineSpacing | undefined;\n noRecordsText: string;\n};\n\nexport function DataTablePagination({\n className,\n style,\n fetching,\n page,\n onPageChange,\n paginationWithEdges,\n paginationWithControls,\n paginationActiveTextColor,\n paginationActiveBackgroundColor,\n paginationSize,\n loadingText,\n noRecordsText,\n paginationText,\n totalRecords,\n recordsPerPage,\n onRecordsPerPageChange,\n recordsPerPageLabel,\n recordsPerPageOptions,\n recordsLength,\n horizontalSpacing,\n paginationWrapBreakpoint,\n getPaginationControlProps,\n getPaginationItemProps,\n renderPagination,\n}: DataTablePaginationComponentProps) {\n let paginationTextValue: React.ReactNode;\n if (totalRecords) {\n const from = (page - 1) * recordsPerPage + 1;\n const to = from + (recordsLength || 0) - 1;\n paginationTextValue = paginationText!({ from, to, totalRecords });\n } else {\n paginationTextValue = fetching ? loadingText : noRecordsText;\n }\n\n const totalPages = totalRecords && recordsPerPage ? Math.max(1, Math.ceil(totalRecords / recordsPerPage)) : 1;\n\n const from = totalRecords ? (page - 1) * (recordsPerPage ?? 0) + 1 : undefined;\n const to = totalRecords ? (from ?? 1) + (recordsLength ?? 0) - 1 : undefined;\n\n const isAbovePaginationWrapBreakpoint = useMediaQueryStringOrFunction(\n ({ breakpoints }) =>\n `(min-width: ${\n typeof paginationWrapBreakpoint === 'number'\n ? `${rem(paginationWrapBreakpoint)}rem`\n : breakpoints[paginationWrapBreakpoint] || paginationWrapBreakpoint\n })`\n );\n\n const isWrapped = !isAbovePaginationWrapBreakpoint;\n\n const Controls: DataTablePaginationRenderContext['Controls'] = {\n Text: (props) => (\n <Text component=\"div\" className=\"mantine-datatable-pagination-text\" size={paginationSize} {...props}>\n {paginationTextValue}\n </Text>\n ),\n PageSizeSelector: (props) =>\n recordsPerPageOptions ? (\n <DataTablePageSizeSelector\n activeTextColor={paginationActiveTextColor}\n activeBackgroundColor={paginationActiveBackgroundColor}\n size={paginationSize}\n label={recordsPerPageLabel}\n values={recordsPerPageOptions}\n value={recordsPerPage!}\n onChange={onRecordsPerPageChange!}\n {...props}\n />\n ) : null,\n Pagination: (props) => (\n <Pagination\n classNames={{\n root: clsx('mantine-datatable-pagination-pages', {\n 'mantine-datatable-pagination-pages-fetching': fetching || !recordsLength,\n }),\n control: 'mantine-datatable-pagination-pages-control',\n }}\n style={\n paginationActiveTextColor || paginationActiveBackgroundColor\n ? (theme) =>\n getPaginationCssVariables({\n theme,\n paginationActiveTextColor,\n paginationActiveBackgroundColor,\n })\n : undefined\n }\n withEdges={paginationWithEdges}\n withControls={paginationWithControls}\n value={page}\n onChange={onPageChange}\n size={paginationSize}\n total={totalPages}\n getControlProps={getPaginationControlProps}\n getItemProps={getPaginationItemProps}\n {...props}\n />\n ),\n };\n\n const ctx: DataTablePaginationRenderContext = {\n state: {\n paginationSize,\n page,\n totalPages,\n totalRecords,\n recordsPerPage,\n recordsLength,\n fetching,\n from,\n to,\n isWrapped,\n },\n actions: {\n setPage: (n) => onPageChange?.(n),\n setRecordsPerPage: onRecordsPerPageChange ? (n) => onRecordsPerPageChange(n) : undefined,\n },\n Controls,\n };\n\n return (\n <Box\n px={horizontalSpacing ?? 'xs'}\n py=\"xs\"\n className={clsx('mantine-datatable-pagination', className)}\n style={[{ flexDirection: isWrapped ? 'column' : 'row' }, style]}\n >\n {typeof renderPagination === 'function' ? (\n renderPagination(ctx)\n ) : (\n <>\n <Controls.Text />\n <Controls.PageSizeSelector />\n <Controls.Pagination />\n </>\n )}\n </Box>\n );\n}\n","import { type MantineStyleProp, TableTd } from '@mantine/core';\nimport clsx from 'clsx';\nimport type { PinnedColumnInfo } from './hooks';\nimport { useMediaQueryStringOrFunction } from './hooks';\nimport type { DataTableColumn } from './types';\nimport {\n CONTEXT_MENU_CURSOR,\n ELLIPSIS,\n NOWRAP,\n POINTER_CURSOR,\n TEXT_ALIGN_CENTER,\n TEXT_ALIGN_LEFT,\n TEXT_ALIGN_RIGHT,\n} from './utilityClasses';\nimport { columnWidthValue, getValueAtPath } from './utils';\n\ntype DataTableRowCellProps<T> = {\n className: string | undefined;\n style: MantineStyleProp | undefined;\n pinnedInfo: PinnedColumnInfo | undefined;\n record: T;\n index: number;\n defaultRender:\n | ((record: T, index: number, accessor: keyof T | (string & NonNullable<unknown>)) => React.ReactNode)\n | undefined;\n onClick: React.MouseEventHandler<HTMLTableCellElement> | undefined;\n onDoubleClick: React.MouseEventHandler<HTMLTableCellElement> | undefined;\n onContextMenu: React.MouseEventHandler<HTMLTableCellElement> | undefined;\n} & Pick<\n DataTableColumn<T>,\n 'accessor' | 'visibleMediaQuery' | 'textAlign' | 'width' | 'noWrap' | 'ellipsis' | 'render' | 'customCellAttributes'\n>;\n\nexport function DataTableRowCell<T>({\n className,\n style,\n pinnedInfo,\n visibleMediaQuery,\n record,\n index,\n onClick,\n onDoubleClick,\n onContextMenu,\n noWrap,\n ellipsis,\n textAlign,\n width,\n accessor,\n render,\n defaultRender,\n customCellAttributes,\n}: DataTableRowCellProps<T>) {\n if (!useMediaQueryStringOrFunction(visibleMediaQuery)) return null;\n const widthValue = columnWidthValue(String(accessor), width);\n return (\n <TableTd\n data-pinned={pinnedInfo?.position}\n data-pinned-shadow={pinnedInfo?.isBoundary ? pinnedInfo.position : undefined}\n className={clsx(\n {\n [NOWRAP]: noWrap || ellipsis,\n [ELLIPSIS]: ellipsis,\n [POINTER_CURSOR]: onClick || onDoubleClick,\n [CONTEXT_MENU_CURSOR]: onContextMenu,\n [TEXT_ALIGN_LEFT]: textAlign === 'left',\n [TEXT_ALIGN_CENTER]: textAlign === 'center',\n [TEXT_ALIGN_RIGHT]: textAlign === 'right',\n },\n className\n )}\n style={[\n {\n width: widthValue,\n minWidth: widthValue,\n maxWidth: widthValue,\n },\n style,\n pinnedInfo && {\n position: 'sticky',\n [pinnedInfo.position]: pinnedInfo.offset,\n overflow: 'visible',\n },\n ]}\n onClick={onClick}\n onDoubleClick={onDoubleClick}\n onContextMenu={onContextMenu}\n {...customCellAttributes?.(record, index)}\n >\n {render\n ? render(record, index)\n : defaultRender\n ? defaultRender(record, index, accessor)\n : (getValueAtPath(record, accessor) as React.ReactNode)}\n </TableTd>\n );\n}\n","import { Collapse, TableTd, TableTr } from '@mantine/core';\nimport { useRowExpansionStatus } from './hooks';\nimport type { DataTableRowExpansionCollapseProps } from './types';\n\ntype DataTableRowExpansionProps = {\n open: boolean;\n colSpan: number;\n content: () => React.ReactNode;\n collapseProps: DataTableRowExpansionCollapseProps | undefined;\n odd: true | undefined;\n rowRef?: React.Ref<HTMLTableRowElement>;\n};\n\nexport function DataTableRowExpansion({\n open,\n colSpan,\n content,\n collapseProps,\n odd,\n rowRef,\n}: DataTableRowExpansionProps) {\n const { expanded, visible } = useRowExpansionStatus(open, collapseProps?.transitionDuration);\n\n return visible ? (\n <TableTr ref={rowRef} data-odd={odd}>\n <TableTd className=\"mantine-datatable-row-expansion-cell\" colSpan={colSpan}>\n <Collapse expanded={expanded} {...collapseProps}>\n <div className=\"mantine-datatable-row-expansion-cell-content\">{content()}</div>\n </Collapse>\n </TableTd>\n </TableTr>\n ) : null;\n}\n","import type { MantineStyleProp } from '@mantine/core';\nimport { Checkbox, type CheckboxProps, TableTd } from '@mantine/core';\nimport clsx from 'clsx';\nimport type { DataTableSelectionTrigger } from './types';\nimport { POINTER_CURSOR } from './utilityClasses';\n\ntype DataTableRowSelectorCellProps<T> = {\n className: string | undefined;\n style: MantineStyleProp | undefined;\n record: T;\n index: number;\n trigger: DataTableSelectionTrigger;\n withRightShadow: boolean;\n checked: boolean;\n disabled: boolean;\n onChange: React.MouseEventHandler | undefined;\n checkboxProps: CheckboxProps | undefined;\n getCheckboxProps: (record: T, index: number) => CheckboxProps;\n};\n\nexport function DataTableRowSelectorCell<T>({\n className,\n style,\n record,\n index,\n trigger,\n onChange,\n withRightShadow,\n checkboxProps,\n getCheckboxProps,\n ...otherProps\n}: Readonly<DataTableRowSelectorCellProps<T>>) {\n const allCheckboxProps = { ...checkboxProps, ...getCheckboxProps(record, index) };\n const enabled = !otherProps.disabled && !allCheckboxProps.disabled;\n\n const handleClick: React.MouseEventHandler = (e) => {\n e.stopPropagation();\n if (trigger === 'cell' && enabled) {\n onChange?.(e);\n }\n };\n\n return (\n <TableTd\n className={clsx(\n 'mantine-datatable-row-selector-cell',\n { [POINTER_CURSOR]: trigger === 'cell' && enabled },\n className\n )}\n style={style}\n data-shadow-visible={withRightShadow || undefined}\n onClick={handleClick}\n >\n <Checkbox\n classNames={enabled ? { input: POINTER_CURSOR } : undefined}\n onChange={onChange as unknown as React.ChangeEventHandler}\n {...otherProps}\n {...allCheckboxProps}\n />\n </TableTd>\n );\n}\n","import type { MantineTheme } from '@mantine/core';\nimport { type CheckboxProps, type MantineColor, type MantineStyleProp, TableTr } from '@mantine/core';\nimport clsx from 'clsx';\nimport { memo } from 'react';\nimport { getRowCssVariables } from './cssVariables';\nimport { DataTableRowCell } from './DataTableRowCell';\nimport { DataTableRowExpansion } from './DataTableRowExpansion';\nimport { DataTableRowSelectorCell } from './DataTableRowSelectorCell';\nimport type { PinnedColumnInfo, RowExpansionInfo } from './hooks';\nimport type {\n DataTableCellClickHandler,\n DataTableColumn,\n DataTableDefaultColumnProps,\n DataTableProps,\n DataTableRowClickHandler,\n DataTableSelectionTrigger,\n} from './types';\nimport { CONTEXT_MENU_CURSOR, POINTER_CURSOR } from './utilityClasses';\n\ntype DataTableRowProps<T> = {\n record: T;\n index: number;\n columns: DataTableColumn<T>[];\n defaultColumnProps: DataTableDefaultColumnProps<T> | undefined;\n pinnedMap: Map<string, PinnedColumnInfo>;\n defaultColumnRender:\n | ((record: T, index: number, accessor: keyof T | (string & NonNullable<unknown>)) => React.ReactNode)\n | undefined;\n selectionTrigger: DataTableSelectionTrigger;\n selectionVisible: boolean;\n selectionChecked: boolean;\n onSelectionChange: ((record: T, index: number, event: React.MouseEvent) => void) | undefined;\n isRecordSelectable: ((record: T, index: number) => boolean) | undefined;\n selectionCheckboxProps: CheckboxProps | undefined;\n getSelectionCheckboxProps: (record: T, index: number) => CheckboxProps;\n onClick: DataTableRowClickHandler<T> | undefined;\n onDoubleClick: DataTableRowClickHandler<T> | undefined;\n onContextMenu: DataTableRowClickHandler<T> | undefined;\n onCellClick: DataTableCellClickHandler<T> | undefined;\n onCellDoubleClick: DataTableCellClickHandler<T> | undefined;\n onCellContextMenu: DataTableCellClickHandler<T> | undefined;\n expansion: RowExpansionInfo<T>;\n expansionColSpan: number;\n expanded: boolean;\n customAttributes?: (record: T, index: number) => Record<string, unknown>;\n color:\n | ((record: T, index: number) => MantineColor | undefined | { light: MantineColor; dark: MantineColor })\n | undefined;\n backgroundColor:\n | ((record: T, index: number) => MantineColor | undefined | { light: MantineColor; dark: MantineColor })\n | undefined;\n className?: string | ((record: T, index: number) => string | undefined);\n style?: (record: T, index: number) => MantineStyleProp | undefined;\n selectorCellShadowVisible: boolean;\n selectionColumnClassName: string | undefined;\n selectionColumnStyle: MantineStyleProp | undefined;\n idAccessor: string;\n virtualizedMeasureRef?: (element: HTMLTableRowElement | null) => void;\n virtualizedExpansionRowRef?: (element: HTMLTableRowElement | null) => (() => void) | undefined;\n} & Pick<DataTableProps<T>, 'rowFactory'>;\n\nfunction DataTableRowInner<T>({\n record,\n index,\n columns,\n defaultColumnProps,\n pinnedMap,\n defaultColumnRender,\n selectionTrigger,\n selectionVisible,\n selectionChecked,\n onSelectionChange,\n isRecordSelectable,\n selectionCheckboxProps,\n getSelectionCheckboxProps,\n onClick,\n onDoubleClick,\n onContextMenu,\n onCellClick,\n onCellDoubleClick,\n onCellContextMenu,\n expansion,\n expansionColSpan,\n expanded,\n customAttributes,\n color,\n backgroundColor,\n className,\n style,\n selectorCellShadowVisible,\n selectionColumnClassName,\n selectionColumnStyle,\n rowFactory,\n virtualizedMeasureRef,\n virtualizedExpansionRowRef,\n}: Readonly<DataTableRowProps<T>>) {\n const handleSelectionChange: React.MouseEventHandler | undefined = onSelectionChange\n ? (event) => onSelectionChange(record, index, event)\n : undefined;\n\n const cols = (\n <>\n {selectionVisible && (\n <DataTableRowSelectorCell<T>\n className={selectionColumnClassName}\n style={selectionColumnStyle}\n record={record}\n index={index}\n trigger={selectionTrigger}\n withRightShadow={selectorCellShadowVisible}\n checked={selectionChecked}\n disabled={!onSelectionChange || (isRecordSelectable ? !isRecordSelectable(record, index) : false)}\n onChange={handleSelectionChange}\n checkboxProps={selectionCheckboxProps}\n getCheckboxProps={getSelectionCheckboxProps}\n />\n )}\n\n {columns.map(({ hidden, hiddenContent, ...columnProps }, columnIndex) => {\n if (hidden || hiddenContent) return null;\n\n const {\n accessor,\n visibleMediaQuery,\n textAlign,\n noWrap,\n ellipsis,\n width,\n render,\n cellsClassName,\n cellsStyle,\n customCellAttributes,\n } = { ...defaultColumnProps, ...columnProps };\n\n return (\n <DataTableRowCell<T>\n key={accessor as React.Key}\n pinnedInfo={pinnedMap.get(String(accessor))}\n className={typeof cellsClassName === 'function' ? cellsClassName(record, index) : cellsClassName}\n style={cellsStyle?.(record, index)}\n visibleMediaQuery={visibleMediaQuery}\n record={record}\n index={index}\n onClick={\n onCellClick\n ? (event) => onCellClick({ event, record, index, column: columnProps, columnIndex })\n : undefined\n }\n onDoubleClick={\n onCellDoubleClick\n ? (event) => onCellDoubleClick({ event, record, index, column: columnProps, columnIndex })\n : undefined\n }\n onContextMenu={\n onCellContextMenu\n ? (event) => onCellContextMenu({ event, record, index, column: columnProps, columnIndex })\n : undefined\n }\n accessor={accessor}\n textAlign={textAlign}\n noWrap={noWrap}\n ellipsis={ellipsis}\n width={width}\n render={render}\n defaultRender={defaultColumnRender}\n customCellAttributes={customCellAttributes}\n />\n );\n })}\n </>\n );\n\n const odd = index % 2 === 0 || undefined;\n\n const expandedElement = expansion && (\n <DataTableRowExpansion\n colSpan={expansionColSpan}\n open={expanded}\n content={expansion.content({ record, index })}\n collapseProps={expansion.collapseProps}\n odd={odd}\n rowRef={virtualizedExpansionRowRef}\n />\n );\n\n const baseRowProps = getRowProps({\n record,\n index,\n selectionChecked,\n onClick,\n onDoubleClick,\n onContextMenu,\n expansion,\n expanded,\n customAttributes,\n color,\n backgroundColor,\n className,\n style,\n });\n\n const rowProps = virtualizedMeasureRef\n ? { ...baseRowProps, ref: virtualizedMeasureRef, 'data-index': index, 'data-odd': odd }\n : { ...baseRowProps, 'data-odd': odd };\n\n if (rowFactory) {\n return rowFactory({\n record,\n index,\n rowProps,\n children: cols,\n expandedElement,\n });\n }\n\n return (\n <>\n <TableTr {...rowProps}>{cols}</TableTr>\n {expandedElement}\n </>\n );\n}\n\n// `memo` loses the generic, so restore the inner signature.\nexport const DataTableRow = memo(DataTableRowInner) as typeof DataTableRowInner;\n\ntype GetRowPropsArgs<T> = Readonly<\n Pick<\n DataTableRowProps<T>,\n | 'record'\n | 'index'\n | 'selectionChecked'\n | 'onClick'\n | 'onDoubleClick'\n | 'onContextMenu'\n | 'expansion'\n | 'expanded'\n | 'customAttributes'\n | 'color'\n | 'backgroundColor'\n | 'className'\n | 'style'\n >\n>;\n\nexport function getRowProps<T>({\n record,\n index,\n selectionChecked,\n onClick,\n onDoubleClick,\n onContextMenu,\n expansion,\n expanded,\n customAttributes,\n color,\n backgroundColor,\n className,\n style,\n}: GetRowPropsArgs<T>) {\n return {\n className: clsx(\n 'mantine-datatable-row',\n {\n [POINTER_CURSOR]:\n onClick || onDoubleClick || (expansion?.isExpandable({ record, index }) && expansion?.expandOnClick),\n },\n { [CONTEXT_MENU_CURSOR]: onContextMenu },\n typeof className === 'function' ? className(record, index) : className\n ),\n\n 'data-selected': selectionChecked || undefined,\n\n onClick: (e: React.MouseEvent<HTMLTableRowElement, MouseEvent>) => {\n if (expansion) {\n const { isExpandable, expandOnClick, expandRow, collapseRow } = expansion;\n if (isExpandable({ record, index }) && expandOnClick) {\n if (expanded) {\n collapseRow(record);\n } else {\n expandRow(record);\n }\n }\n }\n onClick?.({ event: e, record, index });\n },\n onDoubleClick: onDoubleClick\n ? (e: React.MouseEvent<HTMLTableRowElement, MouseEvent>) => onDoubleClick({ event: e, record, index })\n : undefined,\n onContextMenu: onContextMenu\n ? (e: React.MouseEvent<HTMLTableRowElement, MouseEvent>) => onContextMenu({ event: e, record, index })\n : undefined,\n style: [\n color || backgroundColor\n ? (theme: MantineTheme) => {\n const colorValue = color?.(record, index);\n const backgroundColorValue = backgroundColor?.(record, index);\n return getRowCssVariables({ theme, color: colorValue, backgroundColor: backgroundColorValue });\n }\n : undefined,\n style?.(record, index),\n ],\n ...(customAttributes?.(record, index) ?? {}),\n };\n}\n","import { Box, ScrollArea, type ScrollAreaProps } from '@mantine/core';\nimport clsx from 'clsx';\n\ntype DataTableScrollAreaProps = React.PropsWithChildren<{\n leftShadowBehind: boolean;\n rightShadowBehind: boolean | undefined;\n onScrollPositionChange: ScrollAreaProps['onScrollPositionChange'];\n viewportRef: React.Ref<HTMLDivElement>;\n scrollAreaProps: Omit<ScrollAreaProps, 'classNames' | 'styles' | 'onScrollPositionChange'> | undefined;\n}>;\n\nexport function DataTableScrollArea({\n leftShadowBehind,\n rightShadowBehind,\n onScrollPositionChange,\n children,\n viewportRef,\n scrollAreaProps,\n}: DataTableScrollAreaProps) {\n return (\n <ScrollArea\n {...scrollAreaProps}\n viewportRef={viewportRef}\n classNames={{\n root: 'mantine-datatable-scroll-area',\n scrollbar: 'mantine-datatable-scroll-area-scrollbar',\n thumb: 'mantine-datatable-scroll-area-thumb',\n corner: 'mantine-datatable-scroll-area-corner',\n }}\n onScrollPositionChange={onScrollPositionChange}\n >\n {children}\n <Box className={clsx('mantine-datatable-scroll-area-shadow', 'mantine-datatable-scroll-area-top-shadow')} />\n <div\n className={clsx('mantine-datatable-scroll-area-shadow', 'mantine-datatable-scroll-area-left-shadow', {\n 'mantine-datatable-scroll-area-shadow-behind': leftShadowBehind,\n })}\n />\n <div\n className={clsx('mantine-datatable-scroll-area-shadow', 'mantine-datatable-scroll-area-right-shadow', {\n 'mantine-datatable-scroll-area-shadow-behind': rightShadowBehind,\n })}\n />\n <Box className={clsx('mantine-datatable-scroll-area-shadow', 'mantine-datatable-scroll-area-bottom-shadow')} />\n </ScrollArea>\n );\n}\n","type DataTableSpacerRowProps = {\n height: number;\n colSpan: number;\n};\n\nexport function DataTableSpacerRow({ height, colSpan }: DataTableSpacerRowProps) {\n return (\n <tr aria-hidden className=\"mantine-datatable-spacer-row\">\n <td colSpan={colSpan} style={{ height, padding: 0, border: 'none' }} />\n </tr>\n );\n}\n","import { Box, type MantineSize, Table } from '@mantine/core';\nimport { useMergedRef } from '@mantine/hooks';\nimport clsx from 'clsx';\nimport type { RefObject } from 'react';\nimport { useCallback, useEffect, useLayoutEffect, useMemo, useRef } from 'react';\nimport { getTableCssVariables } from './cssVariables';\nimport { DataTableColumnsProvider } from './DataTableDragToggleProvider';\nimport { DataTableEmptyRow } from './DataTableEmptyRow';\nimport { DataTableEmptyState } from './DataTableEmptyState';\nimport { DataTableFooter } from './DataTableFooter';\nimport { DataTableHeader } from './DataTableHeader';\nimport { DataTableLoader } from './DataTableLoader';\nimport { DataTablePagination } from './DataTablePagination';\nimport { DataTableRow } from './DataTableRow';\nimport { DataTableScrollArea } from './DataTableScrollArea';\nimport { DataTableSpacerRow } from './DataTableSpacerRow';\nimport {\n useDataTableColumns,\n useDataTableInjectCssVariables,\n useDataTablePinnedColumns,\n useOptionalCallbackRef,\n useRowExpansion,\n useRowVirtualization,\n useShallowStable,\n useStableCallback,\n} from './hooks';\nimport type { DataTableProps } from './types';\nimport { TEXT_SELECTION_DISABLED } from './utilityClasses';\nimport { differenceBy, flattenColumns, getRecordId, uniqBy } from './utils';\n\nconst defaultAllRecordsSelectionCheckboxProps: NonNullable<\n DataTableProps<unknown>['allRecordsSelectionCheckboxProps']\n> = { 'aria-label': 'Select all records' };\n\nconst defaultGetRecordSelectionCheckboxProps: NonNullable<\n DataTableProps<unknown>['getRecordSelectionCheckboxProps']\n> = (_, index) => ({ 'aria-label': `Select record ${index + 1}` });\n\nconst defaultPaginationText: NonNullable<DataTableProps<unknown>['paginationText']> = ({ from, to, totalRecords }) =>\n `${from} - ${to} / ${totalRecords}`;\n\nconst defaultGetPaginationControlProps: NonNullable<DataTableProps<unknown>['getPaginationControlProps']> = (\n control\n) => {\n if (control === 'previous') {\n return { 'aria-label': 'Previous page' };\n } else if (control === 'next') {\n return { 'aria-label': 'Next page' };\n }\n return {};\n};\n\nexport function DataTable<T>({\n withTableBorder,\n borderRadius,\n textSelectionDisabled,\n height = '100%',\n minHeight,\n maxHeight,\n shadow,\n verticalAlign = 'center',\n fetching,\n columns,\n storeColumnsKey,\n groups,\n pinFirstColumn,\n pinLastColumn,\n defaultColumnProps,\n defaultColumnRender,\n idAccessor = 'id',\n records,\n selectionTrigger = 'checkbox',\n selectedRecords,\n onSelectedRecordsChange,\n selectionColumnClassName,\n selectionColumnStyle,\n isRecordSelectable,\n selectionCheckboxProps,\n allRecordsSelectionCheckboxProps = defaultAllRecordsSelectionCheckboxProps,\n getRecordSelectionCheckboxProps = defaultGetRecordSelectionCheckboxProps,\n sortStatus,\n sortIcons,\n onSortStatusChange,\n horizontalSpacing,\n page,\n onPageChange,\n totalRecords,\n recordsPerPage,\n onRecordsPerPageChange,\n recordsPerPageOptions,\n recordsPerPageLabel = 'Records per page',\n paginationWithEdges,\n paginationWithControls,\n paginationActiveTextColor,\n paginationActiveBackgroundColor,\n paginationSize = 'sm',\n paginationText = defaultPaginationText,\n paginationWrapBreakpoint = 'sm',\n getPaginationControlProps = defaultGetPaginationControlProps,\n getPaginationItemProps,\n renderPagination,\n loaderBackgroundBlur,\n customLoader,\n loaderSize,\n loaderType,\n loaderColor,\n loadingText = '...',\n emptyState,\n noRecordsText = 'No records',\n noRecordsIcon,\n highlightOnHover,\n striped,\n noHeader,\n onRowClick,\n onRowDoubleClick,\n onRowContextMenu,\n onCellClick,\n onCellDoubleClick,\n onCellContextMenu,\n onScroll,\n onScrollToTop,\n onScrollToBottom,\n onScrollToLeft,\n onScrollToRight,\n c,\n backgroundColor,\n borderColor,\n rowBorderColor,\n stripedColor,\n highlightOnHoverColor,\n rowColor,\n rowBackgroundColor,\n rowExpansion,\n rowClassName,\n rowStyle,\n customRowAttributes,\n scrollViewportRef,\n scrollAreaProps,\n tableRef,\n bodyRef,\n m,\n my,\n mx,\n mt,\n mb,\n ml,\n mr,\n className,\n classNames,\n style,\n styles,\n rowFactory,\n tableWrapper,\n virtualized,\n virtualizedRowHeight,\n virtualizedMeasureRows,\n virtualizedOverscan = 15,\n virtualizerRef,\n ...otherProps\n}: DataTableProps<T>) {\n const flatColumns = useMemo(() => {\n return groups ? flattenColumns(groups) : columns!;\n }, [columns, groups]);\n\n const {\n refs: {\n root: rootElementRef,\n table: tableElementRef,\n scrollViewport: scrollViewportElementRef,\n header: headerElementRef,\n selectionColumnHeader: selectionColumnHeaderElementRef,\n },\n trackedRefs: {\n scrollViewport: trackedScrollViewportRef,\n header: trackedHeaderRef,\n footer: trackedFooterRef,\n selectionColumnHeader: trackedSelectionColumnHeaderRef,\n },\n trackedElements: { scrollViewport: scrollViewportElement, header: headerElement, footer: footerElement },\n onScroll: handleScrollPositionChange,\n } = useDataTableInjectCssVariables({\n scrollCallbacks: {\n onScroll,\n onScrollToTop,\n onScrollToBottom,\n onScrollToLeft,\n onScrollToRight,\n },\n withRowBorders: otherProps.withRowBorders,\n });\n\n const dragToggle = useDataTableColumns({\n key: storeColumnsKey,\n columns: flatColumns,\n headerRef: headerElementRef as RefObject<HTMLTableSectionElement | null>,\n scrollViewportRef: scrollViewportElementRef as RefObject<HTMLElement | null>,\n });\n\n // Use the columns enriched with order/visibility/width from the hook so\n // resize widths actually reach the rendered <th>/<td> cells.\n const effectiveColumns = dragToggle.effectiveColumns;\n const hasFooter = effectiveColumns.some(({ footer }) => footer);\n\n const mergedTableRef = useMergedRef(tableElementRef, tableRef);\n const mergedViewportRef = useMergedRef(trackedScrollViewportRef, scrollViewportRef);\n const internalBodyRef = useRef<HTMLTableSectionElement>(null);\n const mergedBodyRef = useMergedRef(internalBodyRef, bodyRef);\n const { expansion: rowExpansionInfo, isRecordIdExpanded } = useRowExpansion<T>({ rowExpansion, records, idAccessor });\n\n const { pinnedMap, hasLeftPinned, hasRightPinned } = useDataTablePinnedColumns({\n columns: effectiveColumns,\n theadRef: headerElementRef as RefObject<HTMLTableSectionElement | null>,\n tbodyRef: internalBodyRef,\n selectionColumnHeaderRef: selectionColumnHeaderElementRef as RefObject<HTMLTableCellElement | null>,\n selectionVisible: !!selectedRecords,\n pinFirstColumn,\n pinLastColumn,\n });\n\n // Track when we should reset scroll due to pagination, but defer until data is rendered\n const resetScrollPending = useRef(false);\n const prevPageRef = useRef(page);\n const recordsAtPageChangeRef = useRef<typeof records | undefined>(records);\n\n const handlePageChange = useCallback(\n (newPage: number) => {\n resetScrollPending.current = true;\n recordsAtPageChangeRef.current = records;\n onPageChange!(newPage);\n },\n [onPageChange, records]\n );\n\n // Handle externally-driven page changes\n useEffect(() => {\n if (prevPageRef.current !== page) {\n resetScrollPending.current = true;\n recordsAtPageChangeRef.current = records;\n prevPageRef.current = page;\n }\n }, [page, records]);\n\n const recordsLength = records?.length;\n\n // The virtualizer recomputes all item offsets whenever `getItemKey`'s identity changes.\n const getVirtualItemKey = useMemo(\n () => (records ? (index: number) => getRecordId(records[index], idAccessor) as string | number : undefined),\n [records, idAccessor]\n );\n\n const rowVirtualization = useRowVirtualization({\n enabled: !!virtualized,\n count: recordsLength ?? 0,\n scrollElement: scrollViewportElement,\n headerElement,\n footerElement,\n rowHeight: virtualizedRowHeight,\n measureRows: virtualizedMeasureRows ?? !!rowExpansion,\n overscan: virtualizedOverscan,\n getItemKey: getVirtualItemKey,\n virtualizerRef,\n });\n\n // Reset scroll position when changing pages (sync) or when records change (async)\n useLayoutEffect(() => {\n if (!resetScrollPending.current) return;\n if (fetching) return;\n if (records === recordsAtPageChangeRef.current) return;\n\n const viewport = scrollViewportElementRef.current;\n if (!viewport) return;\n\n const raf = requestAnimationFrame(() => {\n viewport.scrollTo({ top: 0, left: 0 });\n resetScrollPending.current = false;\n });\n\n return () => cancelAnimationFrame(raf);\n }, [fetching, records, scrollViewportElementRef]);\n\n const stableSelectionCheckboxProps = useShallowStable(selectionCheckboxProps);\n const selectionColumnVisible = !!selectedRecords;\n const selectedRecordIdsSet = selectedRecords\n ? new Set(selectedRecords.map((record) => getRecordId(record, idAccessor)))\n : undefined;\n const hasRecordsAndSelectedRecords =\n records !== undefined && selectedRecordIdsSet !== undefined && selectedRecordIdsSet.size > 0;\n\n const selectableRecords = isRecordSelectable ? records?.filter(isRecordSelectable) : records;\n const selectableRecordIds = selectableRecords?.map((record) => getRecordId(record, idAccessor));\n\n const allSelectableRecordsSelected =\n hasRecordsAndSelectedRecords && selectableRecordIds!.every((id) => selectedRecordIdsSet.has(id));\n const someRecordsSelected =\n hasRecordsAndSelectedRecords && selectableRecordIds!.some((id) => selectedRecordIdsSet.has(id));\n\n const handleHeaderSelectionChange = useCallback(() => {\n if (selectedRecords && onSelectedRecordsChange) {\n const selectableRecordIdsSet = new Set(selectableRecordIds);\n onSelectedRecordsChange(\n allSelectableRecordsSelected\n ? selectedRecords.filter((record) => !selectableRecordIdsSet.has(getRecordId(record, idAccessor)))\n : uniqBy([...selectedRecords, ...selectableRecords!], (record) => getRecordId(record, idAccessor))\n );\n }\n }, [\n allSelectableRecordsSelected,\n idAccessor,\n onSelectedRecordsChange,\n selectableRecordIds,\n selectableRecords,\n selectedRecords,\n ]);\n\n // Shift-click range anchor, read only in click handlers; it only counts while the same record is\n // still at that index.\n const lastSelectionChangeRef = useRef<{ index: number; id: unknown } | null>(null);\n\n const handleRecordSelectionChange = useStableCallback((record: T, index: number, event: React.MouseEvent) => {\n if (!selectedRecords || !onSelectedRecordsChange) return;\n\n const recordId = getRecordId(record, idAccessor);\n const isSelected = selectedRecordIdsSet?.has(recordId) ?? false;\n const anchor = lastSelectionChangeRef.current;\n const lastSelectionChangeIndex =\n anchor && anchor.index < records!.length && getRecordId(records![anchor.index], idAccessor) === anchor.id\n ? anchor.index\n : null;\n\n if (event.nativeEvent.shiftKey && lastSelectionChangeIndex !== null) {\n const [from, to] =\n index > lastSelectionChangeIndex ? [lastSelectionChangeIndex, index] : [index, lastSelectionChangeIndex];\n const targetRecords = records!.filter(\n (rec, idx) => idx >= from && idx <= to && (isRecordSelectable ? isRecordSelectable(rec, idx) : true)\n );\n onSelectedRecordsChange(\n isSelected\n ? differenceBy(selectedRecords, targetRecords, (r) => getRecordId(r, idAccessor))\n : uniqBy([...selectedRecords, ...targetRecords], (r) => getRecordId(r, idAccessor))\n );\n } else {\n onSelectedRecordsChange(\n isSelected\n ? selectedRecords.filter((rec) => getRecordId(rec, idAccessor) !== recordId)\n : uniqBy([...selectedRecords, record], (rec) => getRecordId(rec, idAccessor))\n );\n }\n lastSelectionChangeRef.current = { index, id: recordId };\n });\n const rowSelectionChangeHandler =\n selectedRecords && onSelectedRecordsChange ? handleRecordSelectionChange : undefined;\n\n const stableOnRowClick = useOptionalCallbackRef(onRowClick);\n const stableOnRowDoubleClick = useOptionalCallbackRef(onRowDoubleClick);\n const stableOnRowContextMenu = useOptionalCallbackRef(onRowContextMenu);\n const stableOnCellClick = useOptionalCallbackRef(onCellClick);\n const stableOnCellDoubleClick = useOptionalCallbackRef(onCellDoubleClick);\n const stableOnCellContextMenu = useOptionalCallbackRef(onCellContextMenu);\n\n const selectorCellShadowVisible = selectionColumnVisible && !hasLeftPinned;\n\n const marginProperties = { m, my, mx, mt, mb, ml, mr };\n\n const fullRowColSpan = effectiveColumns.filter(({ hidden }) => !hidden).length + (selectionColumnVisible ? 1 : 0);\n\n const renderRow = (record: T, index: number) => {\n const recordId = getRecordId(record, idAccessor);\n\n return (\n <DataTableRow<T>\n key={recordId as React.Key}\n record={record}\n index={index}\n columns={effectiveColumns}\n defaultColumnProps={defaultColumnProps}\n pinnedMap={pinnedMap}\n defaultColumnRender={defaultColumnRender}\n selectionTrigger={selectionTrigger}\n selectionVisible={selectionColumnVisible}\n selectionChecked={selectedRecordIdsSet?.has(recordId) ?? false}\n onSelectionChange={rowSelectionChangeHandler}\n isRecordSelectable={isRecordSelectable}\n selectionCheckboxProps={stableSelectionCheckboxProps}\n getSelectionCheckboxProps={getRecordSelectionCheckboxProps}\n onClick={stableOnRowClick}\n onDoubleClick={stableOnRowDoubleClick}\n onCellClick={stableOnCellClick}\n onCellDoubleClick={stableOnCellDoubleClick}\n onContextMenu={stableOnRowContextMenu}\n onCellContextMenu={stableOnCellContextMenu}\n expansion={rowExpansionInfo}\n expansionColSpan={fullRowColSpan}\n expanded={isRecordIdExpanded(recordId)}\n color={rowColor}\n backgroundColor={rowBackgroundColor}\n className={rowClassName}\n style={rowStyle}\n customAttributes={customRowAttributes}\n selectorCellShadowVisible={selectorCellShadowVisible}\n selectionColumnClassName={selectionColumnClassName}\n selectionColumnStyle={selectionColumnStyle}\n idAccessor={idAccessor as string}\n rowFactory={rowFactory}\n virtualizedMeasureRef={rowVirtualization?.measureRef}\n virtualizedExpansionRowRef={rowVirtualization?.expansionRowRef}\n />\n );\n };\n\n const TableWrapper = useCallback(\n ({ children }: { children: React.ReactNode }) => {\n if (tableWrapper) return tableWrapper({ children });\n return children;\n },\n [tableWrapper]\n );\n\n return (\n <DataTableColumnsProvider {...dragToggle} pinnedMap={pinnedMap}>\n <Box\n ref={rootElementRef}\n {...marginProperties}\n className={clsx(\n 'mantine-datatable',\n { 'mantine-datatable-with-border': withTableBorder },\n className,\n classNames?.root\n )}\n style={[\n (theme) => ({\n ...getTableCssVariables({\n theme,\n c,\n backgroundColor,\n borderColor,\n rowBorderColor,\n stripedColor,\n highlightOnHoverColor,\n }),\n borderRadius: theme.radius[borderRadius as MantineSize] || borderRadius,\n boxShadow: theme.shadows[shadow as MantineSize] || shadow,\n height,\n minHeight,\n maxHeight,\n }),\n style,\n styles?.root,\n {\n position: 'relative',\n },\n ]}\n >\n <DataTableScrollArea\n viewportRef={mergedViewportRef}\n leftShadowBehind={selectionColumnVisible || hasLeftPinned}\n rightShadowBehind={hasRightPinned}\n onScrollPositionChange={handleScrollPositionChange}\n scrollAreaProps={scrollAreaProps}\n >\n <TableWrapper>\n <Table\n ref={mergedTableRef}\n horizontalSpacing={horizontalSpacing}\n className={clsx(\n 'mantine-datatable-table',\n {\n [TEXT_SELECTION_DISABLED]: textSelectionDisabled,\n 'mantine-datatable-vertical-align-top': verticalAlign === 'top',\n 'mantine-datatable-vertical-align-bottom': verticalAlign === 'bottom',\n 'mantine-datatable-selection-column-visible': selectionColumnVisible,\n 'mantine-datatable-resizable-columns': dragToggle.hasResizableColumns,\n 'mantine-datatable-resize-locked': dragToggle.isLocked,\n 'mantine-datatable-resizing': dragToggle.isResizing,\n },\n classNames?.table\n )}\n style={{\n ...styles?.table,\n ...(dragToggle.isLocked ? { tableLayout: 'fixed' } : null),\n ...(dragToggle.tableWidth != null ? { width: `${dragToggle.tableWidth}px` } : null),\n }}\n data-striped={(recordsLength && striped) || undefined}\n data-highlight-on-hover={highlightOnHover || undefined}\n data-virtualized={virtualized || undefined}\n {...otherProps}\n >\n {noHeader ? null : (\n <DataTableColumnsProvider {...dragToggle} pinnedMap={pinnedMap}>\n <DataTableHeader<T>\n ref={trackedHeaderRef}\n selectionColumnHeaderRef={trackedSelectionColumnHeaderRef}\n className={classNames?.header}\n style={styles?.header}\n columns={effectiveColumns}\n defaultColumnProps={defaultColumnProps}\n groups={groups}\n pinnedMap={pinnedMap}\n sortStatus={sortStatus}\n sortIcons={sortIcons}\n onSortStatusChange={onSortStatusChange}\n selectionTrigger={selectionTrigger}\n selectionVisible={selectionColumnVisible}\n selectionChecked={allSelectableRecordsSelected}\n selectionIndeterminate={someRecordsSelected && !allSelectableRecordsSelected}\n onSelectionChange={handleHeaderSelectionChange}\n selectionCheckboxProps={{ ...selectionCheckboxProps, ...allRecordsSelectionCheckboxProps }}\n selectorCellShadowVisible={selectorCellShadowVisible}\n selectionColumnClassName={selectionColumnClassName}\n selectionColumnStyle={selectionColumnStyle}\n withColumnBorders={otherProps.withColumnBorders}\n />\n </DataTableColumnsProvider>\n )}\n <tbody ref={mergedBodyRef}>\n {recordsLength ? (\n rowVirtualization ? (\n <>\n {rowVirtualization.paddingTop > 0 && (\n <DataTableSpacerRow height={rowVirtualization.paddingTop} colSpan={fullRowColSpan} />\n )}\n {rowVirtualization.virtualItems.map(({ index }) => renderRow(records![index], index))}\n {rowVirtualization.paddingBottom > 0 && (\n <DataTableSpacerRow height={rowVirtualization.paddingBottom} colSpan={fullRowColSpan} />\n )}\n </>\n ) : (\n records.map((record, index) => renderRow(record, index))\n )\n ) : (\n <DataTableEmptyRow />\n )}\n </tbody>\n\n {hasFooter && (\n <DataTableFooter<T>\n ref={trackedFooterRef}\n className={classNames?.footer}\n style={styles?.footer}\n columns={effectiveColumns}\n defaultColumnProps={defaultColumnProps}\n pinnedMap={pinnedMap}\n selectionVisible={selectionColumnVisible}\n selectorCellShadowVisible={selectorCellShadowVisible}\n />\n )}\n </Table>\n </TableWrapper>\n </DataTableScrollArea>\n {!!(page && recordsLength) && (\n <DataTablePagination\n className={classNames?.pagination}\n style={styles?.pagination}\n horizontalSpacing={horizontalSpacing}\n fetching={fetching}\n page={page}\n onPageChange={handlePageChange}\n totalRecords={totalRecords}\n recordsPerPage={recordsPerPage}\n onRecordsPerPageChange={onRecordsPerPageChange}\n recordsPerPageOptions={recordsPerPageOptions}\n recordsPerPageLabel={recordsPerPageLabel}\n paginationWithEdges={paginationWithEdges}\n paginationWithControls={paginationWithControls}\n paginationActiveTextColor={paginationActiveTextColor}\n paginationActiveBackgroundColor={paginationActiveBackgroundColor}\n paginationSize={paginationSize}\n paginationText={paginationText}\n paginationWrapBreakpoint={paginationWrapBreakpoint}\n getPaginationControlProps={getPaginationControlProps}\n getPaginationItemProps={getPaginationItemProps}\n noRecordsText={noRecordsText}\n loadingText={loadingText}\n recordsLength={recordsLength}\n renderPagination={renderPagination}\n />\n )}\n <DataTableLoader\n fetching={fetching}\n backgroundBlur={loaderBackgroundBlur}\n customContent={customLoader}\n size={loaderSize}\n type={loaderType}\n color={loaderColor}\n />\n <DataTableEmptyState icon={noRecordsIcon} text={noRecordsText} active={!fetching && !recordsLength}>\n {emptyState}\n </DataTableEmptyState>\n </Box>\n </DataTableColumnsProvider>\n );\n}\n","import { TableTr } from '@mantine/core';\nimport { useMergedRef } from '@mantine/hooks';\nimport type { Ref } from 'react';\nimport { useEffect, useRef } from 'react';\nimport type { DataTableDraggableRowProps } from './types';\n\nexport function DataTableDraggableRow({\n className,\n children,\n isDragging,\n ref: refProp,\n ...otherProps\n}: DataTableDraggableRowProps & {\n ref?: Ref<HTMLTableRowElement>;\n}) {\n const ref = useRef<HTMLTableRowElement>(null);\n const mergedRef = useMergedRef(ref, refProp);\n\n // biome-ignore lint/correctness/useExhaustiveDependencies: re-measure cells when children change\n useEffect(() => {\n // a simple fix to keep column width as in table\n if (!ref.current) return;\n if (!isDragging) return;\n\n const tbody = ref.current.parentElement!;\n const table = tbody.parentElement!;\n const thead = table.children[0];\n const headerRow = thead.children[0];\n\n for (let index = 0; index < headerRow.children.length; index++) {\n const headerCell = headerRow.children[index];\n const headerCellDimensions = headerCell.getBoundingClientRect();\n\n const cell = ref.current.children[index] as HTMLTableCellElement;\n\n cell.style.height = `${headerCellDimensions.height}px`;\n cell.style.width = `${headerCellDimensions.width}px`;\n cell.style.minWidth = `${headerCellDimensions.width}px`;\n cell.style.maxWidth = `${headerCellDimensions.width}px`;\n }\n }, [isDragging, children]);\n\n return (\n <TableTr data-is-dragging={isDragging} ref={mergedRef} {...otherProps} className={className}>\n {children}\n </TableTr>\n );\n}\n"],"mappings":"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"}
|