{"version":3,"sources":["../package/DataTable.tsx","../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/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/useLastSelectionChangeIndex.ts","../package/hooks/useMediaQueries.ts","../package/hooks/useMediaQueriesStringOrFunction.ts","../package/hooks/useMediaQueryStringOrFunction.ts","../package/hooks/useRowExpansion.ts","../package/utils.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/DataTableResizableHeaderHandle.tsx","../package/icons/IconArrowUp.tsx","../package/icons/IconArrowsVertical.tsx","../package/icons/IconGripVertical.tsx","../package/icons/IconX.tsx","../package/DataTableHeaderSelectorCell.tsx","../package/DataTableLoader.tsx","../package/DataTablePagination.tsx","../package/DataTablePageSizeSelector.tsx","../package/cssVariables.ts","../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, Table, type MantineSize } from '@mantine/core';\nimport { useMergedRef } from '@mantine/hooks';\nimport clsx from 'clsx';\nimport type { RefObject } from 'react';\nimport { useCallback, useEffect, useLayoutEffect, useMemo, useRef, useState } from 'react';\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 { getTableCssVariables } from './cssVariables';\nimport {\n  useDataTableColumns,\n  useDataTableInjectCssVariables,\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 effectiveColumns = useMemo(() => {\n    return groups ? flattenColumns(groups) : columns!;\n  }, [columns, groups]);\n\n  // When columns are resizable, start with auto layout to let the browser\n  // compute natural widths, then capture them and switch to fixed layout.\n  const [fixedLayoutEnabled, setFixedLayoutEnabled] = useState(false);\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: effectiveColumns,\n    headerRef: refs.header as RefObject<HTMLTableSectionElement | null>,\n    scrollViewportRef: refs.scrollViewport as RefObject<HTMLElement | null>,\n    onFixedLayoutChange: setFixedLayoutEnabled,\n  });\n\n  const mergedTableRef = useMergedRef(refs.table, tableRef);\n  const mergedViewportRef = useMergedRef(refs.scrollViewport, scrollViewportRef);\n  const rowExpansionInfo = useRowExpansion<T>({ rowExpansion, records, idAccessor });\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 && !pinFirstColumn;\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}>\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 || !!pinFirstColumn}\n          rightShadowBehind={pinLastColumn}\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-pin-last-column': pinLastColumn,\n                  'mantine-datatable-selection-column-visible': selectionColumnVisible,\n                  'mantine-datatable-pin-first-column': pinFirstColumn,\n                  'mantine-datatable-resizable-columns': dragToggle.hasResizableColumns && fixedLayoutEnabled,\n                },\n                classNames?.table\n              )}\n              style={{\n                ...styles?.table,\n              }}\n              data-striped={(recordsLength && striped) || undefined}\n              data-highlight-on-hover={highlightOnHover || undefined}\n              {...otherProps}\n            >\n              {noHeader ? null : (\n                <DataTableColumnsProvider {...dragToggle}>\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                    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={bodyRef}>\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                        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                  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","'use client';\n\nimport { useState, type Dispatch, type PropsWithChildren, type SetStateAction } from 'react';\nimport { DataTableColumnsContextProvider } from './DataTableColumns.context';\nimport type { DataTableColumnToggle } from './hooks';\n\ntype DataTableColumnsProviderProps = PropsWithChildren<{\n  columnsOrder: string[];\n  setColumnsOrder: Dispatch<SetStateAction<string[]>>;\n  resetColumnsOrder: () => void;\n\n  columnsToggle: DataTableColumnToggle[];\n  setColumnsToggle: Dispatch<SetStateAction<DataTableColumnToggle[]>>;\n  resetColumnsToggle: () => 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\nexport const DataTableColumnsProvider = (props: DataTableColumnsProviderProps) => {\n  const {\n    children,\n    columnsOrder,\n    setColumnsOrder,\n    columnsToggle,\n    setColumnsToggle,\n\n    resetColumnsOrder,\n    resetColumnsToggle,\n\n    setColumnWidth,\n    setMultipleColumnWidths,\n    resetColumnsWidth,\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    const sourceIndex = columnsOrder.indexOf(sourceColumn);\n    const targetIndex = columnsOrder.indexOf(targetColumn);\n\n    if (sourceIndex !== -1 && targetIndex !== -1) {\n      const removedColumn = columnsOrder.splice(sourceIndex, 1)[0];\n\n      columnsOrder.splice(targetIndex, 0, removedColumn);\n\n      // update the columns order\n      setColumnsOrder([...columnsOrder]);\n    }\n  };\n\n  return (\n    <DataTableColumnsContextProvider\n      value={{\n        sourceColumn,\n        setSourceColumn,\n        targetColumn,\n        setTargetColumn,\n        columnsToggle,\n        setColumnsToggle,\n        swapColumns,\n        resetColumnsOrder,\n        resetColumnsToggle,\n\n        setColumnWidth,\n        setMultipleColumnWidths,\n        resetColumnsWidth,\n      }}\n    >\n      {children}\n    </DataTableColumnsContextProvider>\n  );\n};\n","import { createSafeContext } from '@mantine/core';\nimport type { Dispatch, SetStateAction } from 'react';\nimport type { 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: Dispatch<SetStateAction<DataTableColumnToggle[]>>;\n  resetColumnsToggle: () => 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\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 { TableTfoot, TableTr, type MantineStyleProp } from '@mantine/core';\nimport clsx from 'clsx';\nimport { DataTableFooterCell } from './DataTableFooterCell';\nimport { DataTableFooterSelectorPlaceholderCell } from './DataTableFooterSelectorPlaceholderCell';\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  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  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              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, type MantineStyleProp, type MantineTheme } from '@mantine/core';\nimport clsx from 'clsx';\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  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  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      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      ]}\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 type { DataTableColumn } from '../types/DataTableColumn';\n\n/**\n * Hook to handle column reordering with localStorage persistence.\n * @see https://icflorescu.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  // Align order with current columns definition\n  function alignColumnsOrder<T>(columnsOrder: string[], columns: DataTableColumn<T>[]) {\n    const updatedColumnsOrder: string[] = [];\n\n    // Keep existing order for columns that still exist\n    columnsOrder.forEach((col) => {\n      if (columns.find((c) => c.accessor === col)) {\n        updatedColumnsOrder.push(col);\n      }\n    });\n\n    // Add new columns to the end\n    columns.forEach((col) => {\n      if (!updatedColumnsOrder.includes(col.accessor as string)) {\n        updatedColumnsOrder.push(col.accessor as string);\n      }\n    });\n\n    return updatedColumnsOrder;\n  }\n\n  // Default columns order is the order of the columns in the array\n  const defaultColumnsOrder = (columns && columns.map((column) => column.accessor)) || [];\n\n  const [columnsOrder, _setColumnsOrder] = useLocalStorage<string[]>({\n    key: key ? `${key}-columns-order` : '',\n    defaultValue: key ? (defaultColumnsOrder as string[]) : undefined,\n    getInitialValueInEffect,\n  });\n\n  function setColumnsOrder(order: string[] | ((prev: string[]) => string[])) {\n    if (key) {\n      _setColumnsOrder(order);\n    }\n  }\n\n  const resetColumnsOrder = () => {\n    setColumnsOrder(defaultColumnsOrder as string[]);\n  };\n\n  // If no key is provided, return unmanaged state\n  if (!key) {\n    return {\n      columnsOrder: columnsOrder as string[],\n      setColumnsOrder,\n      resetColumnsOrder,\n    } as const;\n  }\n\n  // Align order with current columns\n  const alignedColumnsOrder = alignColumnsOrder(columnsOrder, columns);\n  const prevColumnsOrder = JSON.stringify(columnsOrder);\n\n  if (JSON.stringify(alignedColumnsOrder) !== prevColumnsOrder) {\n    setColumnsOrder(alignedColumnsOrder);\n  }\n\n  return {\n    columnsOrder: alignedColumnsOrder,\n    setColumnsOrder,\n    resetColumnsOrder,\n  } as const;\n}\n","import { useLocalStorage } from '@mantine/hooks';\nimport { useCallback, useEffect, useMemo, useRef, useState, type RefObject } from 'react';\nimport type { DataTableColumn } from '../types/DataTableColumn';\n\ntype DataTableColumnWidth = Record<string, string | number>;\n\n/**\n * Hook to handle column resizing with localStorage persistence and auto-resize calculation.\n * @see https://icflorescu.github.io/mantine-datatable/examples/column-resizing/\n */\nexport function useDataTableColumnResize<T>({\n  key,\n  columns = [],\n  getInitialValueInEffect = true,\n  headerRef,\n  onFixedLayoutChange,\n}: {\n  /**\n   * The key to use in localStorage to store the columns width.\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   * Callback to control fixed layout state in the parent component.\n   */\n  onFixedLayoutChange?: (enabled: boolean) => void;\n}) {\n  const isInitializedRef = useRef(false);\n  const naturalWidthsRef = useRef<Record<string, number>>({});\n  const [isSSR, setIsSSR] = useState(true);\n\n  // Check if columns have resizable feature\n  const hasResizableColumns = useMemo(() => {\n    return columns.some((c) => c.resizable && !c.hidden && c.accessor !== '__selection__');\n  }, [columns]);\n\n  // Get resizable columns\n  const resizableColumns = useMemo(() => {\n    return columns.filter((c) => c.resizable && !c.hidden && c.accessor !== '__selection__');\n  }, [columns]);\n\n  // Check if we need to measure natural widths (columns without explicit width)\n  const needsNaturalMeasurement = useMemo(() => {\n    return resizableColumns.some((c) => c.width === undefined || c.width === '' || c.width === 'initial');\n  }, [resizableColumns]);\n\n  // Create default column widths - use explicit widths or 'auto' for natural sizing\n  // Exclude selection column from width management\n  const getDefaultColumnsWidth = useCallback(() => {\n    return columns\n      .filter((column) => column.accessor !== '__selection__')\n      .map((column) => ({\n        [column.accessor]: column.width ?? 'auto',\n      }));\n  }, [columns]);\n\n  const [storedColumnsWidth, setStoredColumnsWidth] = useLocalStorage<DataTableColumnWidth[]>({\n    key: key ? `${key}-columns-width` : '',\n    defaultValue: key ? getDefaultColumnsWidth() : undefined,\n    getInitialValueInEffect: false, // We'll handle initialization manually\n  });\n\n  // Current effective column widths (combines stored + measured natural widths)\n  const [effectiveColumnsWidth, setEffectiveColumnsWidth] = useState<DataTableColumnWidth[]>(() =>\n    getDefaultColumnsWidth()\n  );\n\n  // Handle SSR\n  useEffect(() => {\n    // eslint-disable-next-line react-hooks/set-state-in-effect\n    setIsSSR(false);\n  }, []);\n\n  // Measure natural widths of columns\n  const measureNaturalWidths = useCallback(() => {\n    if (!headerRef?.current || isSSR) return {};\n\n    const thead = headerRef.current;\n    const headerCells = Array.from(thead.querySelectorAll<HTMLTableCellElement>('th[data-accessor]'));\n    const naturalWidths: Record<string, number> = {};\n\n    headerCells.forEach((cell) => {\n      const accessor = cell.getAttribute('data-accessor');\n      if (!accessor || accessor === '__selection__') return;\n\n      const column = resizableColumns.find((c) => c.accessor === accessor);\n      if (!column) return;\n\n      // Only measure if column doesn't have explicit width\n      if (column.width === undefined || column.width === '' || column.width === 'initial') {\n        const rect = cell.getBoundingClientRect();\n        naturalWidths[accessor] = Math.round(rect.width);\n      }\n    });\n\n    return naturalWidths;\n  }, [headerRef, resizableColumns, isSSR]);\n\n  // Update column widths (both stored and effective)\n  // Filter out selection column from updates\n  const updateColumnWidths = useCallback(\n    (updates: Array<{ accessor: string; width: string | number }>) => {\n      // Filter out any updates to the selection column\n      const filteredUpdates = updates.filter((update) => update.accessor !== '__selection__');\n\n      const newWidths = effectiveColumnsWidth.map((column) => {\n        const accessor = Object.keys(column)[0];\n        const update = filteredUpdates.find((u) => u.accessor === accessor);\n\n        if (update) {\n          return { [accessor]: update.width };\n        }\n        return column;\n      });\n\n      setEffectiveColumnsWidth(newWidths);\n\n      // Also update stored widths if we have a key\n      if (key) {\n        setStoredColumnsWidth(newWidths);\n      }\n    },\n    [effectiveColumnsWidth, key, setStoredColumnsWidth]\n  );\n\n  const setMultipleColumnWidths = useCallback(\n    (updates: Array<{ accessor: string; width: string | number }>) => {\n      updateColumnWidths(updates);\n    },\n    [updateColumnWidths]\n  );\n\n  // Initialize column widths (measure natural widths and apply stored widths)\n  const initializeColumnWidths = useCallback(() => {\n    if (!headerRef?.current || !onFixedLayoutChange || isSSR) return;\n\n    // First, measure natural widths if needed\n    if (needsNaturalMeasurement) {\n      // Temporarily use auto layout to get natural widths\n      onFixedLayoutChange(false);\n\n      // Wait for layout to settle, then measure\n      requestAnimationFrame(() => {\n        requestAnimationFrame(() => {\n          const naturalWidths = measureNaturalWidths();\n          naturalWidthsRef.current = { ...naturalWidthsRef.current, ...naturalWidths };\n\n          // Create effective widths combining stored and natural widths\n          // Exclude selection column from width management\n          const newEffectiveWidths = columns\n            .filter((column) => column.accessor !== '__selection__')\n            .map((column) => {\n              const accessor = column.accessor as string;\n\n              // Check if we have a stored width for this column\n              const storedWidth = storedColumnsWidth?.find((w) => Object.keys(w)[0] === accessor);\n              if (storedWidth && storedWidth[accessor] !== 'auto') {\n                return { [accessor]: storedWidth[accessor] };\n              }\n\n              // Use natural width if available, otherwise use column definition or auto\n              const naturalWidth = naturalWidths[accessor];\n              if (naturalWidth) {\n                return { [accessor]: `${naturalWidth}px` };\n              }\n\n              return { [accessor]: column.width ?? 'auto' };\n            });\n\n          setEffectiveColumnsWidth(newEffectiveWidths);\n\n          // Switch to fixed layout for resizing\n          setTimeout(() => {\n            onFixedLayoutChange(true);\n            isInitializedRef.current = true;\n          }, 10);\n        });\n      });\n    } else {\n      // All columns have explicit widths, use them directly\n      // Exclude selection column from width management\n      const explicitWidths = columns\n        .filter((column) => column.accessor !== '__selection__')\n        .map((column) => ({\n          [column.accessor]: column.width ?? 'auto',\n        }));\n\n      setEffectiveColumnsWidth(explicitWidths);\n      onFixedLayoutChange(true);\n      isInitializedRef.current = true;\n    }\n  }, [\n    headerRef,\n    onFixedLayoutChange,\n    isSSR,\n    needsNaturalMeasurement,\n    measureNaturalWidths,\n    columns,\n    storedColumnsWidth,\n  ]);\n\n  const measureAndSetColumnWidths = initializeColumnWidths;\n\n  // Initialize on mount and when columns change\n  useEffect(() => {\n    if (!hasResizableColumns || !onFixedLayoutChange || isSSR) {\n      onFixedLayoutChange?.(false);\n      return;\n    }\n\n    // Reset initialization flag when columns change\n    isInitializedRef.current = false;\n\n    // Initialize after a short delay to ensure DOM is ready\n    const timeoutId = setTimeout(() => {\n      initializeColumnWidths();\n    }, 50);\n\n    return () => clearTimeout(timeoutId);\n  }, [hasResizableColumns, onFixedLayoutChange, isSSR, initializeColumnWidths]);\n\n  // Load stored widths on client-side hydration\n  useEffect(() => {\n    if (isSSR || !key || !getInitialValueInEffect) return;\n\n    // Apply stored widths if available\n    if (storedColumnsWidth && storedColumnsWidth.length > 0) {\n      // eslint-disable-next-line react-hooks/set-state-in-effect\n      setEffectiveColumnsWidth(storedColumnsWidth);\n    }\n  }, [isSSR, key, getInitialValueInEffect, storedColumnsWidth]);\n  // Reset all columns to their natural/initial widths\n  const resetColumnsWidth = useCallback(() => {\n    // Clear stored widths\n    if (key) {\n      setStoredColumnsWidth(getDefaultColumnsWidth());\n    }\n\n    // Reset to natural widths\n    naturalWidthsRef.current = {};\n    isInitializedRef.current = false;\n\n    // Re-initialize to measure natural widths\n    if (onFixedLayoutChange) {\n      onFixedLayoutChange(false);\n      setTimeout(() => {\n        initializeColumnWidths();\n      }, 10);\n    }\n  }, [key, setStoredColumnsWidth, getDefaultColumnsWidth, onFixedLayoutChange, initializeColumnWidths]);\n\n  // Set width for a single column\n  const setColumnWidth = useCallback(\n    (accessor: string, width: string | number) => {\n      updateColumnWidths([{ accessor, width }]);\n    },\n    [updateColumnWidths]\n  );\n\n  // Check if all resizable columns are using auto/natural widths\n  const allResizableWidthsInitial = useMemo(() => {\n    if (!hasResizableColumns) return false;\n    return effectiveColumnsWidth\n      .filter((colWidth) => {\n        const accessor = Object.keys(colWidth)[0];\n        return resizableColumns.some((c) => c.accessor === accessor);\n      })\n      .every((colWidth) => {\n        const width = Object.values(colWidth)[0];\n        return width === 'auto' || width === 'initial';\n      });\n  }, [hasResizableColumns, effectiveColumnsWidth, resizableColumns]);\n\n  return {\n    columnsWidth: effectiveColumnsWidth,\n    setColumnsWidth: updateColumnWidths,\n    setColumnWidth,\n    setMultipleColumnWidths,\n    resetColumnsWidth,\n    hasResizableColumns,\n    allResizableWidthsInitial,\n    measureAndSetColumnWidths,\n  } as const;\n}\n","import { useMemo, type RefObject } from 'react';\nimport type { DataTableColumn } from '../types/DataTableColumn';\nimport { useDataTableColumnReorder } from './useDataTableColumnReorder';\nimport { useDataTableColumnResize } from './useDataTableColumnResize';\nimport { useDataTableColumnToggle, type DataTableColumnToggle } from './useDataTableColumnToggle';\n\nexport type { DataTableColumnToggle };\n\n/**\n * Hook to handle column features such as drag-and-drop reordering, visibility toggling and resizing.\n * @see https://icflorescu.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  onFixedLayoutChange,\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   * Callback to control fixed layout state in the parent component.\n   */\n  onFixedLayoutChange?: (enabled: boolean) => void;\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 {\n    columnsWidth,\n    setColumnsWidth,\n    setColumnWidth,\n    setMultipleColumnWidths,\n    resetColumnsWidth,\n    hasResizableColumns,\n    allResizableWidthsInitial,\n    measureAndSetColumnWidths,\n  } = useDataTableColumnResize({\n    key,\n    columns,\n    getInitialValueInEffect,\n    headerRef,\n    scrollViewportRef,\n    onFixedLayoutChange,\n  });\n\n  // Compute effective columns based on order, toggle, and width\n  const effectiveColumns = useMemo(() => {\n    if (!columnsOrder) {\n      return columns;\n    }\n\n    const result = columnsOrder\n      .map((order) => columns.find((column) => column.accessor === order))\n      .map((column) => {\n        return {\n          ...column,\n          hidden:\n            column?.hidden ||\n            !columnsToggle.find((toggle) => {\n              return toggle.accessor === column?.accessor;\n            })?.toggled,\n        };\n      }) as DataTableColumn<T>[];\n\n    const newWidths = result.map((column) => {\n      // Skip width application for selection column\n      if (column?.accessor === '__selection__') {\n        return column;\n      }\n\n      return {\n        ...column,\n        width: columnsWidth.find((width) => {\n          return width[column?.accessor as string];\n        })?.[column?.accessor as string],\n      };\n    });\n\n    return newWidths;\n  }, [columns, columnsOrder, columnsToggle, columnsWidth]);\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    // Resize handling\n    columnsWidth,\n    setColumnsWidth,\n    setColumnWidth,\n    setMultipleColumnWidths,\n    resetColumnsWidth,\n    hasResizableColumns,\n    allResizableWidthsInitial,\n    measureAndSetColumnWidths,\n  } as const;\n};\n","import { useLocalStorage } from '@mantine/hooks';\nimport type { DataTableColumn } from '../types/DataTableColumn';\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://icflorescu.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  // Align toggle state with current columns definition\n  function alignColumnsToggle<T>(columnsToggle: DataTableColumnToggle[], columns: DataTableColumn<T>[]) {\n    const updatedColumnsToggle: DataTableColumnToggle[] = [];\n\n    // Keep existing toggle states for columns that still exist\n    columnsToggle.forEach((col) => {\n      if (columns.find((c) => c.accessor === col.accessor)) {\n        updatedColumnsToggle.push(col);\n      }\n    });\n\n    // Add toggle state for new columns\n    columns.forEach((col) => {\n      if (!updatedColumnsToggle.find((c) => c.accessor === col.accessor)) {\n        updatedColumnsToggle.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\n    return updatedColumnsToggle as DataTableColumnToggle[];\n  }\n\n  // Default columns toggle state\n  const defaultColumnsToggle =\n    columns &&\n    columns.map((column) => ({\n      accessor: column.accessor,\n      defaultToggle: column.defaultToggle || true,\n      toggleable: column.toggleable,\n      toggled: column.defaultToggle === undefined ? true : column.defaultToggle,\n    }));\n\n  const [columnsToggle, _setColumnsToggle] = useLocalStorage<DataTableColumnToggle[]>({\n    key: key ? `${key}-columns-toggle` : '',\n    defaultValue: key ? (defaultColumnsToggle as DataTableColumnToggle[]) : undefined,\n    getInitialValueInEffect,\n  });\n\n  function setColumnsToggle(\n    toggle: DataTableColumnToggle[] | ((prev: DataTableColumnToggle[]) => DataTableColumnToggle[])\n  ) {\n    if (key) {\n      _setColumnsToggle(toggle);\n    }\n  }\n\n  const resetColumnsToggle = () => {\n    setColumnsToggle(defaultColumnsToggle as DataTableColumnToggle[]);\n  };\n\n  // If no key is provided, return unmanaged state\n  if (!key) {\n    return {\n      columnsToggle: columnsToggle as DataTableColumnToggle[],\n      setColumnsToggle,\n      resetColumnsToggle,\n    } as const;\n  }\n\n  // Align toggle state with current columns\n  const alignedColumnsToggle = alignColumnsToggle(columnsToggle, columns);\n  const prevColumnsToggle = JSON.stringify(columnsToggle);\n\n  if (JSON.stringify(alignedColumnsToggle) !== prevColumnsToggle) {\n    setColumnsToggle(alignedColumnsToggle);\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  const onScroll = useCallback<OnScroll>((ev) => {\n    stableScrollCallbacks.current.onScroll?.(ev);\n    processScrollingRef.current();\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, []);\n\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    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, [header.current]);\n\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    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, [footer.current]);\n\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    // eslint-disable-next-line react-hooks/exhaustive-deps\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  // eslint-disable-next-line react-hooks/refs\n  ref.current = value;\n  return ref;\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  useEffect(() => {\n    // eslint-disable-next-line react-hooks/set-state-in-effect\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) => unsubscribe());\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 { useMantineTheme, type MantineTheme } 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 { useMantineTheme, type MantineTheme } 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 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 * 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 { 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      // eslint-disable-next-line react-hooks/set-state-in-effect\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  Group,\n  Popover,\n  PopoverDropdown,\n  PopoverTarget,\n  Stack,\n  TableThead,\n  TableTr,\n  type CheckboxProps,\n  type MantineStyleProp,\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 } 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  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\nexport function DataTableHeader<T>({\n  selectionColumnHeaderRef,\n  className,\n  style,\n  sortStatus,\n  sortIcons,\n  onSortStatusChange,\n  columns,\n  defaultColumnProps,\n  groups,\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                    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            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              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              // 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 { 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  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  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      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={style}\n    >\n      {title ?? humanize(id)}\n    </TableTh>\n  ) : null;\n}\n","import { ActionIcon, Box, Center, Flex, Group, TableTh, type MantineStyleProp, type MantineTheme } from '@mantine/core';\nimport clsx from 'clsx';\nimport { useRef, useState } from 'react';\nimport { useDataTableColumnsContext } from './DataTableColumns.context';\nimport { DataTableHeaderCellFilter } from './DataTableHeaderCellFilter';\nimport { DataTableResizableHeaderHandle } from './DataTableResizableHeaderHandle';\nimport { useMediaQueryStringOrFunction } from './hooks';\nimport { IconArrowUp } from './icons/IconArrowUp';\nimport { IconArrowsVertical } from './icons/IconArrowsVertical';\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  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  | '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  accessor,\n  visibleMediaQuery,\n  title,\n  sortable,\n  draggable,\n  toggleable,\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 { setSourceColumn, setTargetColumn, swapColumns, setColumnsToggle } = useDataTableColumnsContext();\n  const [dragOver, setDragOver] = useState<boolean>(false);\n  const columnRef = useRef<HTMLTableCellElement | null>(null);\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((columnsToggle) =>\n      columnsToggle.map((c) => {\n        if (c.accessor === accessor) {\n          return { ...c, toggled: false };\n        }\n        return c;\n      })\n    );\n  };\n\n  return (\n    <TableTh\n      data-accessor={accessor}\n      className={clsx(\n        {\n          'mantine-datatable-header-cell-sortable': sortable,\n          'mantine-datatable-header-cell-toggleable': toggleable,\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      ]}\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        {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          <>\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\n                className=\"mantine-datatable-header-cell-sortable-unsorted-icon\"\n                role=\"img\"\n                aria-label=\"Not sorted\"\n              >\n                {sortIcons?.unsorted || <IconArrowsVertical />}\n              </Center>\n            )}\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    <Popover withArrow shadow=\"md\" opened={isOpen} onClose={close} trapFocus {...filterPopoverProps}>\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","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\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 } = 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; // Found a valid data column\n        }\n        nextColumn = nextColumn.nextElementSibling as HTMLTableCellElement | null;\n      }\n\n      if (!nextColumn) {\n        return; // No next column to resize with\n      }\n\n      const nextAccessor = nextColumn.getAttribute('data-accessor');\n      if (!nextAccessor) {\n        return; // Next column missing data-accessor\n      }\n\n      // Special handling for next column being selection column\n      const isNextSelection = nextAccessor === '__selection__';\n\n      // Store initial state\n      setIsResizing(true);\n      startXRef.current = event.clientX;\n\n      // Get current computed widths (not getBoundingClientRect which might include borders/padding)\n      const currentWidth = currentColumn.offsetWidth;\n      const nextWidth = nextColumn.offsetWidth;\n\n      originalWidthsRef.current = {\n        current: currentWidth,\n        next: nextWidth,\n      };\n\n      // Global mouse event handlers\n      const handleMouseMove = (moveEvent: MouseEvent) => {\n        if (!columnRef.current) return;\n\n        const currentCol = columnRef.current;\n        const nextCol = currentCol.nextElementSibling as HTMLTableCellElement | null;\n        if (!nextCol) return;\n\n        let deltaX = moveEvent.clientX - startXRef.current;\n\n        // In RTL, reverse the deltaX to make resizing follow mouse movement naturally\n        if (isRTL) {\n          deltaX = -deltaX;\n        }\n\n        const minWidth = 50;\n\n        // Calculate the maximum possible movement in both directions\n        const maxShrinkCurrent = originalWidthsRef.current.current - minWidth;\n        const maxShrinkNext = originalWidthsRef.current.next - minWidth;\n\n        // Limit deltaX to respect both columns' minimum widths\n        const constrainedDelta = Math.max(\n          -maxShrinkCurrent, // Don't shrink current below minimum\n          Math.min(deltaX, maxShrinkNext) // Don't shrink next below minimum\n        );\n\n        const finalCurrentWidth = originalWidthsRef.current.current + constrainedDelta;\n        const finalNextWidth = originalWidthsRef.current.next - constrainedDelta;\n\n        // Apply to DOM immediately for smooth visual feedback\n        currentCol.style.width = `${finalCurrentWidth}px`;\n        nextCol.style.width = `${finalNextWidth}px`;\n\n        // Ensure the table maintains fixed layout during resize\n        currentCol.style.minWidth = `${finalCurrentWidth}px`;\n        currentCol.style.maxWidth = `${finalCurrentWidth}px`;\n        nextCol.style.minWidth = `${finalNextWidth}px`;\n        nextCol.style.maxWidth = `${finalNextWidth}px`;\n      };\n\n      const handleMouseUp = () => {\n        if (!columnRef.current) return;\n\n        const currentCol = columnRef.current;\n        const nextCol = currentCol.nextElementSibling as HTMLTableCellElement | null;\n\n        setIsResizing(false);\n\n        // Reset global styles\n        document.body.style.cursor = 'initial';\n        document.body.style.userSelect = 'initial';\n\n        // Get final widths from the applied styles\n        const finalCurrentWidth = parseInt(currentCol.style.width) || currentCol.offsetWidth;\n        const finalNextWidth = nextCol ? parseInt(nextCol.style.width) || nextCol.offsetWidth : 0;\n\n        // Update context with final widths\n        const updates = [{ accessor, width: `${finalCurrentWidth}px` }];\n\n        if (nextCol && !isNextSelection) {\n          const nextAccessor = nextCol.getAttribute('data-accessor');\n          if (nextAccessor) {\n            updates.push({\n              accessor: nextAccessor,\n              width: `${finalNextWidth}px`,\n            });\n          }\n        }\n\n        // Update the context AFTER we've applied the styles\n        setTimeout(() => {\n          setMultipleColumnWidths(updates);\n        }, 0);\n\n        // Remove event listeners\n        document.removeEventListener('mousemove', handleMouseMove);\n        document.removeEventListener('mouseup', handleMouseUp);\n      };\n\n      // Set global styles\n      document.body.style.cursor = 'col-resize';\n      document.body.style.userSelect = 'none';\n\n      // Add event listeners\n      document.addEventListener('mousemove', handleMouseMove);\n      document.addEventListener('mouseup', handleMouseUp);\n    },\n    [accessor, columnRef, isRTL, setMultipleColumnWidths]\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    // Clear any inline styles that might interfere with natural sizing\n    currentColumn.style.width = '';\n    currentColumn.style.minWidth = '';\n    currentColumn.style.maxWidth = '';\n\n    // Reset current column to auto width\n    const updates = [{ accessor, width: 'auto' }];\n\n    if (nextColumn) {\n      nextColumn.style.width = '';\n      nextColumn.style.minWidth = '';\n      nextColumn.style.maxWidth = '';\n\n      const nextAccessor = nextColumn.getAttribute('data-accessor');\n      // Only reset next column if it's not the selection column\n      if (nextAccessor && nextAccessor !== '__selection__') {\n        updates.push({ accessor: nextAccessor, width: 'auto' });\n      }\n    }\n\n    // Use setTimeout to ensure DOM changes are applied before context update\n    setTimeout(() => {\n      setMultipleColumnWidths(updates);\n    }, 0);\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 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 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 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","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 type { MantineStyleProp } from '@mantine/core';\nimport { Checkbox, TableTh, type CheckboxProps } 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, Pagination, Text, rem, type MantineSpacing, type MantineStyleProp } from '@mantine/core';\nimport clsx from 'clsx';\nimport { DataTablePageSizeSelector } from './DataTablePageSizeSelector';\nimport { getPaginationCssVariables } from './cssVariables';\nimport { useMediaQueryStringOrFunction } from './hooks';\nimport type { DataTablePaginationProps } from './types';\nimport type { PaginationRenderContext } from './types/PaginationRenderContext';\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: PaginationRenderContext['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      ) : (\n        <></>\n      ),\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: PaginationRenderContext = {\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, Menu, MenuDropdown, MenuItem, MenuTarget, Text, rem, type MantineSize } 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 { parseThemeColor, type MantineColor, type MantineTheme } 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","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 { TableTr, type CheckboxProps, type MantineColor, type MantineStyleProp } from '@mantine/core';\nimport clsx from 'clsx';\nimport { DataTableRowCell } from './DataTableRowCell';\nimport { DataTableRowExpansion } from './DataTableRowExpansion';\nimport { DataTableRowSelectorCell } from './DataTableRowSelectorCell';\nimport { getRowCssVariables } from './cssVariables';\nimport type { 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  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  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            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 { TableTd, type MantineStyleProp } from '@mantine/core';\nimport clsx from 'clsx';\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  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  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      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      ]}\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 in={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, TableTd, type CheckboxProps } 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  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","useState","useState","createSafeContext","DataTableColumnsContextProvider","useDataTableColumnsContext","jsx","DataTableColumnsProvider","props","children","columnsOrder","setColumnsOrder","columnsToggle","setColumnsToggle","resetColumnsOrder","resetColumnsToggle","setColumnWidth","setMultipleColumnWidths","resetColumnsWidth","sourceColumn","setSourceColumn","useState","targetColumn","setTargetColumn","DataTableColumnsContextProvider","sourceIndex","targetIndex","removedColumn","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","useDataTableColumnReorder","key","columns","getInitialValueInEffect","alignColumnsOrder","columnsOrder","updatedColumnsOrder","col","c","defaultColumnsOrder","column","_setColumnsOrder","setColumnsOrder","order","resetColumnsOrder","alignedColumnsOrder","prevColumnsOrder","useLocalStorage","useCallback","useEffect","useMemo","useRef","useState","useDataTableColumnResize","key","columns","getInitialValueInEffect","headerRef","onFixedLayoutChange","isInitializedRef","naturalWidthsRef","isSSR","setIsSSR","hasResizableColumns","c","resizableColumns","needsNaturalMeasurement","getDefaultColumnsWidth","column","storedColumnsWidth","setStoredColumnsWidth","effectiveColumnsWidth","setEffectiveColumnsWidth","measureNaturalWidths","thead","headerCells","naturalWidths","cell","accessor","rect","updateColumnWidths","updates","filteredUpdates","update","newWidths","u","setMultipleColumnWidths","initializeColumnWidths","newEffectiveWidths","storedWidth","naturalWidth","explicitWidths","measureAndSetColumnWidths","timeoutId","resetColumnsWidth","setColumnWidth","width","allResizableWidthsInitial","colWidth","useMemo","useLocalStorage","useDataTableColumnToggle","key","columns","getInitialValueInEffect","alignColumnsToggle","columnsToggle","updatedColumnsToggle","col","c","defaultColumnsToggle","column","_setColumnsToggle","setColumnsToggle","toggle","resetColumnsToggle","alignedColumnsToggle","prevColumnsToggle","useDataTableColumns","key","columns","getInitialValueInEffect","headerRef","scrollViewportRef","onFixedLayoutChange","columnsOrder","setColumnsOrder","resetColumnsOrder","useDataTableColumnReorder","columnsToggle","setColumnsToggle","resetColumnsToggle","useDataTableColumnToggle","columnsWidth","setColumnsWidth","setColumnWidth","setMultipleColumnWidths","resetColumnsWidth","hasResizableColumns","allResizableWidthsInitial","measureAndSetColumnWidths","useDataTableColumnResize","useMemo","order","column","toggle","width","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","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","humanize","value","str","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","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","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","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","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","useDirection","useCallback","useRef","useState","jsx","DataTableResizableHeaderHandle","props","accessor","columnRef","isResizing","setIsResizing","useState","startXRef","useRef","originalWidthsRef","dir","useDirection","isRTL","setMultipleColumnWidths","useDataTableColumnsContext","handleMouseDown","useCallback","event","currentColumn","nextColumn","nextAccessor","isNextSelection","currentWidth","nextWidth","handleMouseMove","moveEvent","currentCol","nextCol","deltaX","minWidth","maxShrinkCurrent","maxShrinkNext","constrainedDelta","finalCurrentWidth","finalNextWidth","handleMouseUp","updates","handleDoubleClick","jsx","jsxs","IconArrowUp","jsx","jsxs","IconArrowsVertical","jsx","jsxs","IconGripVertical","jsx","jsxs","IconX","Fragment","jsx","jsxs","DataTableHeaderCell","className","style","accessor","visibleMediaQuery","title","sortable","draggable","toggleable","resizable","sortIcons","textAlign","width","sortStatus","onSortStatusChange","filter","filterPopoverProps","filterPopoverDisableClickOutside","filtering","sortKey","setSourceColumn","setTargetColumn","swapColumns","setColumnsToggle","useDataTableColumnsContext","dragOver","setDragOver","useState","columnRef","useRef","useMediaQueryStringOrFunction","text","humanize","tooltip","sortAction","e","handleColumnDragStart","handleColumnDragOver","handleColumnDrop","handleColumnDragEnter","handleColumnDragLeave","handleColumnToggle","columnsToggle","c","TableTh","clsx","Group","Flex","Center","ActionIcon","IconGripVertical","Box","TEXT_ALIGN_LEFT","TEXT_ALIGN_CENTER","TEXT_ALIGN_RIGHT","NOWRAP","ELLIPSIS","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","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","group","index","DataTableColumnGroupHeaderCell","hidden","columnProps","visibleMediaQuery","textAlign","width","sortable","draggable","toggleable","resizable","titleClassName","titleStyle","filter","filterPopoverProps","filterPopoverDisableClickOutside","filtering","sortKey","DataTableHeaderCell","Popover","PopoverTarget","PopoverDropdown","Stack","Group","Checkbox","c","Center","Loader","clsx","jsx","DataTableLoader","fetching","customContent","backgroundBlur","size","type","color","Box","Pagination","Text","rem","clsx","Button","Group","Menu","MenuDropdown","MenuItem","MenuTarget","Text","rem","clsx","parseThemeColor","getColor","color","theme","colorScheme","getTableCssVariables","c","backgroundColor","borderColor","rowBorderColor","stripedColor","highlightOnHoverColor","getPaginationCssVariables","paginationActiveTextColor","paginationActiveBackgroundColor","getRowCssVariables","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","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","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","effectiveColumns","useMemo","flattenColumns","fixedLayoutEnabled","setFixedLayoutEnabled","useState","refs","handleScrollPositionChange","useDataTableInjectCssVariables","dragToggle","useDataTableColumns","mergedTableRef","useMergedRef","mergedViewportRef","rowExpansionInfo","useRowExpansion","resetScrollPending","useRef","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"]}