{"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/useDataTableColumns.ts","../package/hooks/useElementOuterSize.ts","../package/hooks/useIsomorphicLayoutEffect.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 { useDebouncedCallback, useMergedRef } from '@mantine/hooks';\nimport clsx from 'clsx';\nimport { useCallback, useMemo, 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  useElementOuterSize,\n  useIsomorphicLayoutEffect,\n  useLastSelectionChangeIndex,\n  useRowExpansion,\n} from './hooks';\nimport type { DataTableProps } from './types';\nimport { TEXT_SELECTION_DISABLED } from './utilityClasses';\nimport { differenceBy, 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  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 {\n    ref: localScrollViewportRef,\n    width: scrollViewportWidth,\n    height: scrollViewportHeight,\n  } = useElementOuterSize<HTMLDivElement>();\n\n  const effectiveColumns = useMemo(() => {\n    return groups?.flatMap((group) => group.columns) ?? columns!;\n  }, [columns, groups]);\n\n  const dragToggle = useDataTableColumns({\n    key: storeColumnsKey,\n    columns: effectiveColumns,\n  });\n\n  const { ref: headerRef, height: headerHeight } = useElementOuterSize<HTMLTableSectionElement>();\n  const { ref: localTableRef, width: tableWidth, height: tableHeight } = useElementOuterSize<HTMLTableElement>();\n  const { ref: footerRef, height: footerHeight } = useElementOuterSize<HTMLTableSectionElement>();\n  const { ref: paginationRef, height: paginationHeight } = useElementOuterSize<HTMLDivElement>();\n  const { ref: selectionColumnHeaderRef, width: selectionColumnWidth } = useElementOuterSize<HTMLTableCellElement>();\n\n  const mergedTableRef = useMergedRef(localTableRef, tableRef);\n  const mergedViewportRef = useMergedRef(localScrollViewportRef, scrollViewportRef);\n\n  const [scrolledToTop, setScrolledToTop] = useState(true);\n  const [scrolledToBottom, setScrolledToBottom] = useState(true);\n  const [scrolledToLeft, setScrolledToLeft] = useState(true);\n  const [scrolledToRight, setScrolledToRight] = useState(true);\n\n  const rowExpansionInfo = useRowExpansion<T>({ rowExpansion, records, idAccessor });\n\n  const processScrolling = useCallback(() => {\n    const scrollTop = localScrollViewportRef.current?.scrollTop ?? 0;\n    const scrollLeft = localScrollViewportRef.current?.scrollLeft ?? 0;\n\n    if (fetching || tableHeight <= scrollViewportHeight) {\n      setScrolledToTop(true);\n      setScrolledToBottom(true);\n    } else {\n      const newScrolledToTop = scrollTop === 0;\n      const newScrolledToBottom = tableHeight - scrollTop - scrollViewportHeight < 1;\n      setScrolledToTop(newScrolledToTop);\n      setScrolledToBottom(newScrolledToBottom);\n      if (newScrolledToTop && newScrolledToTop !== scrolledToTop) onScrollToTop?.();\n      if (newScrolledToBottom && newScrolledToBottom !== scrolledToBottom) onScrollToBottom?.();\n    }\n\n    if (fetching || tableWidth === scrollViewportWidth) {\n      setScrolledToLeft(true);\n      setScrolledToRight(true);\n    } else {\n      const newScrolledToLeft = scrollLeft === 0;\n      const newScrolledToRight = tableWidth - scrollLeft - scrollViewportWidth < 1;\n      setScrolledToLeft(newScrolledToLeft);\n      setScrolledToRight(newScrolledToRight);\n      if (newScrolledToLeft && newScrolledToLeft !== scrolledToLeft) onScrollToLeft?.();\n      if (newScrolledToRight && newScrolledToRight !== scrolledToRight) onScrollToRight?.();\n    }\n  }, [\n    fetching,\n    onScrollToBottom,\n    onScrollToLeft,\n    onScrollToRight,\n    onScrollToTop,\n    scrollViewportHeight,\n    localScrollViewportRef,\n    scrollViewportWidth,\n    scrolledToBottom,\n    scrolledToLeft,\n    scrolledToRight,\n    scrolledToTop,\n    tableHeight,\n    tableWidth,\n  ]);\n\n  useIsomorphicLayoutEffect(processScrolling, [processScrolling]);\n\n  const debouncedProcessScrolling = useDebouncedCallback(processScrolling, 50);\n\n  const handleScrollPositionChange = useCallback(\n    (e: { x: number; y: number }) => {\n      onScroll?.(e);\n      debouncedProcessScrolling();\n    },\n    [debouncedProcessScrolling, onScroll]\n  );\n\n  const handlePageChange = useCallback(\n    (page: number) => {\n      localScrollViewportRef.current?.scrollTo({ top: 0, left: 0 });\n      onPageChange!(page);\n    },\n    [onPageChange, localScrollViewportRef]\n  );\n\n  const recordsLength = records?.length;\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 && !scrolledToLeft && !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        {...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          topShadowVisible={!scrolledToTop}\n          leftShadowVisible={!scrolledToLeft}\n          leftShadowBehind={selectionColumnVisible || !!pinFirstColumn}\n          rightShadowVisible={!scrolledToRight}\n          rightShadowBehind={pinLastColumn}\n          bottomShadowVisible={!scrolledToBottom}\n          headerHeight={headerHeight}\n          footerHeight={footerHeight}\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-last-row-border-bottom-visible':\n                    otherProps.withRowBorders && tableHeight < scrollViewportHeight,\n                  'mantine-datatable-pin-last-column': pinLastColumn,\n                  'mantine-datatable-pin-last-column-scrolled': !scrolledToRight && pinLastColumn,\n                  'mantine-datatable-selection-column-visible': selectionColumnVisible,\n                  'mantine-datatable-pin-first-column': pinFirstColumn,\n                  'mantine-datatable-pin-first-column-scrolled': !scrolledToLeft && pinFirstColumn,\n                },\n                classNames?.table\n              )}\n              style={{\n                ...styles?.table,\n                '--mantine-datatable-selection-column-width': `${selectionColumnWidth}px`,\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={headerRef}\n                    selectionColumnHeaderRef={selectionColumnHeaderRef}\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                  />\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={footerRef}\n                  className={classNames?.footer}\n                  style={styles?.footer}\n                  columns={effectiveColumns}\n                  defaultColumnProps={defaultColumnProps}\n                  selectionVisible={selectionColumnVisible}\n                  selectorCellShadowVisible={selectorCellShadowVisible}\n                  scrollDiff={tableHeight - scrollViewportHeight}\n                />\n              )}\n            </Table>\n          </TableWrapper>\n        </DataTableScrollArea>\n\n        {page && (\n          <DataTablePagination\n            ref={paginationRef}\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            noRecordsText={noRecordsText}\n            loadingText={loadingText}\n            recordsLength={recordsLength}\n          />\n        )}\n        <DataTableLoader\n          pt={headerHeight}\n          pb={paginationHeight}\n          fetching={fetching}\n          backgroundBlur={loaderBackgroundBlur}\n          customContent={customLoader}\n          size={loaderSize}\n          type={loaderType}\n          color={loaderColor}\n        />\n        <DataTableEmptyState\n          pt={headerHeight}\n          pb={paginationHeight}\n          icon={noRecordsIcon}\n          text={noRecordsText}\n          active={!fetching && !recordsLength}\n        >\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 { 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  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    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        resetColumnsWidth,\n      }}\n    >\n      {children}\n    </DataTableColumnsContextProvider>\n  );\n};\n","import { createSafeContext } from '@mantine/core';\nimport { Dispatch, SetStateAction } from 'react';\nimport { 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  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, type MantineSpacing, type StyleProp } from '@mantine/core';\nimport { IconDatabaseOff } from './icons/IconDatabaseOff';\n\ntype DataTableEmptyStateProps = React.PropsWithChildren<{\n  icon: React.ReactNode | undefined;\n  text: string;\n  pt: StyleProp<MantineSpacing>;\n  pb: StyleProp<MantineSpacing>;\n  active: boolean;\n}>;\n\nexport function DataTableEmptyState({ icon, text, pt, pb, active, children }: DataTableEmptyStateProps) {\n  return (\n    <Center pt={pt} pb={pb} 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, rem, type MantineStyleProp } from '@mantine/core';\nimport clsx from 'clsx';\nimport { forwardRef, type JSX } from 'react';\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  scrollDiff: number;\n};\n\nexport const DataTableFooter = forwardRef(function DataTableFooter<T>(\n  {\n    className,\n    style,\n    columns,\n    defaultColumnProps,\n    selectionVisible,\n    selectorCellShadowVisible,\n    scrollDiff,\n  }: DataTableFooterProps<T>,\n  ref: React.ForwardedRef<HTMLTableSectionElement>\n) {\n  const relative = scrollDiff < 0;\n  return (\n    <TableTfoot\n      ref={ref}\n      className={clsx('mantine-datatable-footer', className)}\n      style={[\n        {\n          position: relative ? 'relative' : 'sticky',\n          bottom: rem(relative ? scrollDiff : 0),\n        },\n        style,\n      ]}\n    >\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}) as <T>(props: DataTableFooterProps<T> & { ref: React.ForwardedRef<HTMLTableSectionElement> }) => JSX.Element;\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 { useLocalStorage } from '@mantine/hooks';\nimport { useMemo } from 'react';\nimport type { DataTableColumn } from '../types/DataTableColumn';\n\nexport type DataTableColumnToggle = {\n  accessor: string;\n  defaultToggle: boolean;\n  toggleable: boolean;\n  toggled: boolean;\n};\n\ntype DataTableColumnWidth = Record<string, string | number>;\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}: {\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   * Columns definitions.\n   */\n  /**\n   * If set to true, value will be update is useEffect after mount.\n   * @default true\n   */\n  getInitialValueInEffect?: boolean;\n}) => {\n  // align order\n  function alignColumnsOrder<T>(columnsOrder: string[], columns: DataTableColumn<T>[]) {\n    const updatedColumnsOrder: string[] = [];\n    columnsOrder.forEach((col) => {\n      if (columns.find((c) => c.accessor === col)) {\n        updatedColumnsOrder.push(col);\n      }\n    });\n    columns.forEach((col) => {\n      if (!updatedColumnsOrder.includes(col.accessor as string)) {\n        updatedColumnsOrder.push(col.accessor as string);\n      }\n    });\n    return updatedColumnsOrder;\n  }\n\n  // align toggle\n  function alignColumnsToggle<T>(columnsToggle: DataTableColumnToggle[], columns: DataTableColumn<T>[]) {\n    const updatedColumnsToggle: DataTableColumnToggle[] = [];\n    columnsToggle.forEach((col) => {\n      if (columns.find((c) => c.accessor === col.accessor)) {\n        updatedColumnsToggle.push(col);\n      }\n    });\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    return updatedColumnsToggle as DataTableColumnToggle[];\n  }\n\n  // align width\n  function alignColumnsWidth<T>(columnsWidth: DataTableColumnWidth[], columns: DataTableColumn<T>[]) {\n    const updatedColumnsWidth: DataTableColumnWidth[] = [];\n\n    columnsWidth.forEach((col) => {\n      const accessor = Object.keys(col)[0];\n      if (columns.find((c) => c.accessor === accessor)) {\n        updatedColumnsWidth.push(col);\n      }\n    });\n\n    columns.forEach((col) => {\n      const accessor = col.accessor;\n      if (!updatedColumnsWidth.find((c) => Object.keys(c)[0] === accessor)) {\n        const widthObj: DataTableColumnWidth = {};\n        widthObj[accessor as string] = '';\n        updatedColumnsWidth.push(widthObj);\n      }\n    });\n\n    return updatedColumnsWidth;\n  }\n\n  // align order\n  function useAlignColumnsOrder() {\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    if (!key) {\n      return [columnsOrder, setColumnsOrder] as const;\n    }\n\n    const alignedColumnsOrder = alignColumnsOrder(columnsOrder, columns);\n\n    const prevColumnsOrder = JSON.stringify(columnsOrder);\n\n    if (JSON.stringify(alignedColumnsOrder) !== prevColumnsOrder) {\n      setColumnsOrder(alignedColumnsOrder);\n    }\n\n    return [alignedColumnsOrder, setColumnsOrder] as const;\n  }\n\n  function useAlignColumnsToggle() {\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    if (!key) {\n      return [columnsToggle, setColumnsToggle] as const;\n    }\n\n    const alignedColumnsToggle = alignColumnsToggle(columnsToggle, columns);\n\n    const prevColumnsToggle = JSON.stringify(columnsToggle);\n\n    if (JSON.stringify(alignedColumnsToggle) !== prevColumnsToggle) {\n      setColumnsToggle(alignedColumnsToggle);\n    }\n\n    return [alignColumnsToggle(columnsToggle, columns), setColumnsToggle] as const;\n  }\n\n  function useAlignColumnsWidth() {\n    const [columnsWidth, _setColumnsWidth] = useLocalStorage<DataTableColumnWidth[]>({\n      key: key ? `${key}-columns-width` : '',\n      defaultValue: key ? (defaultColumnsWidth as DataTableColumnWidth[]) : undefined,\n      getInitialValueInEffect,\n    });\n\n    function setColumnsWidth(\n      width: DataTableColumnWidth[] | ((prev: DataTableColumnWidth[]) => DataTableColumnWidth[])\n    ) {\n      if (key) {\n        _setColumnsWidth(width);\n      }\n    }\n\n    if (!key) {\n      return [columnsWidth, setColumnsWidth] as const;\n    }\n\n    const alignedColumnsWidth = alignColumnsWidth(columnsWidth, columns);\n\n    const prevColumnsWidth = JSON.stringify(columnsWidth);\n\n    if (JSON.stringify(alignedColumnsWidth) !== prevColumnsWidth) {\n      setColumnsWidth(alignedColumnsWidth);\n    }\n\n    return [alignColumnsWidth(columnsWidth, columns), setColumnsWidth] as const;\n  }\n\n  // Default columns id ordered is the order of the columns in the array\n  const defaultColumnsOrder = (columns && columns.map((column) => column.accessor)) || [];\n\n  // create an array of object with key = accessor and value = width\n  const defaultColumnsWidth =\n    (columns && columns.map((column) => ({ [column.accessor]: column.width ?? 'initial' }))) || [];\n\n  // Default columns id toggled is the array of columns which have the toggleable property set to true\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  // Store the columns order in localStorage\n  const [columnsOrder, setColumnsOrder] = useAlignColumnsOrder();\n\n  // Store the columns toggle in localStorage\n  const [columnsToggle, setColumnsToggle] = useAlignColumnsToggle();\n\n  // Store the columns widths in localStorage\n  const [columnsWidth, setColumnsWidth] = useAlignColumnsWidth();\n\n  // we won't use the \"remove\" function from useLocalStorage() because\n  // we got issue with rendering\n  const resetColumnsOrder = () => setColumnsOrder(defaultColumnsOrder as string[]);\n\n  const resetColumnsToggle = () => {\n    setColumnsToggle(defaultColumnsToggle as DataTableColumnToggle[]);\n  };\n\n  const resetColumnsWidth = () => setColumnsWidth(defaultColumnsWidth as DataTableColumnWidth[]);\n\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      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  const setColumnWidth = (accessor: string, width: string | number) => {\n    const newColumnsWidth = columnsWidth.map((column) => {\n      if (!column[accessor]) {\n        return column;\n      }\n      return {\n        [accessor]: width,\n      };\n    });\n\n    setColumnsWidth(newColumnsWidth);\n  };\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    resetColumnsWidth,\n  } as const;\n};\n","import { useResizeObserver } from '@mantine/hooks';\n\nexport function useElementOuterSize<T extends HTMLElement>() {\n  const [ref] = useResizeObserver<T>();\n  const { width, height } = ref.current?.getBoundingClientRect() || { width: 0, height: 0 };\n  return { ref, width, height };\n}\n","import { useEffect, useLayoutEffect } from 'react';\n\nexport const useIsomorphicLayoutEffect = typeof window !== 'undefined' ? useLayoutEffect : useEffect;\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    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 { 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';\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","import { useTimeout } from '@mantine/hooks';\nimport { useEffect, useState } from 'react';\n\nexport function useRowExpansionStatus(open: boolean, transitionDuration?: number) {\n  const [expanded, setExpanded] = useState(open);\n  const [visible, setVisible] = useState(open);\n\n  const expand = useTimeout(() => setExpanded(true), 0);\n  const hide = useTimeout(() => setVisible(false), transitionDuration || 200);\n\n  useEffect(() => {\n    if (open) {\n      hide.clear();\n      setVisible(true);\n      expand.start();\n    } else {\n      expand.clear();\n      setExpanded(false);\n      hide.start();\n    }\n  }, [expand, hide, open]);\n\n  return { expanded, visible };\n}\n","export const NOWRAP = 'mantine-datatable-nowrap';\nexport const ELLIPSIS = 'mantine-datatable-ellipsis';\nexport const POINTER_CURSOR = 'mantine-datatable-pointer-cursor';\nexport const CONTEXT_MENU_CURSOR = 'mantine-datatable-context-menu-cursor';\nexport const TEXT_SELECTION_DISABLED = 'mantine-datatable-text-selection-disabled';\nexport const TEXT_ALIGN_LEFT = 'mantine-datatable-text-align-left';\nexport const TEXT_ALIGN_CENTER = 'mantine-datatable-text-align-center';\nexport const TEXT_ALIGN_RIGHT = 'mantine-datatable-text-align-right';\n","import { TableTh } from '@mantine/core';\n\ntype DataTableFooterSelectorPlaceholderCellProps = {\n  shadowVisible: boolean;\n};\n\nexport function DataTableFooterSelectorPlaceholderCell({ shadowVisible }: DataTableFooterSelectorPlaceholderCellProps) {\n  return (\n    <TableTh\n      className=\"mantine-datatable-footer-selector-placeholder-cell\"\n      data-shadow-visible={shadowVisible || undefined}\n    />\n  );\n}\n","import {\n  Checkbox,\n  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 { forwardRef, useState, type JSX } from 'react';\nimport { DataTableColumnGroupHeaderCell } from './DataTableColumnGroupHeaderCell';\nimport { useDataTableColumnsContext } from './DataTableColumns.context';\nimport { DataTableHeaderCell } from './DataTableHeaderCell';\nimport { DataTableHeaderSelectorCell } from './DataTableHeaderSelectorCell';\nimport { DataTableColumnToggle } from './hooks';\nimport type { DataTableColumn, DataTableColumnGroup, DataTableSelectionTrigger, DataTableSortProps } from './types';\nimport { 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};\n\nexport const DataTableHeader = forwardRef(function DataTableHeader<T>(\n  {\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  }: DataTableHeaderProps<T>,\n  ref: React.ForwardedRef<HTMLTableSectionElement>\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 ? 2 : 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        <TableTr>\n          {allRecordsSelectorCell}\n          {groups.map((group) => (\n            <DataTableColumnGroupHeaderCell key={group.id} group={group} />\n          ))}\n        </TableTr>\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            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              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}) as <T>(props: DataTableHeaderProps<T> & { ref: React.ForwardedRef<HTMLTableSectionElement> }) => JSX.Element;\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 { humanize } from './utils';\n\ntype DataTableColumnGroupHeaderCellProps<T> = {\n  group: DataTableColumnGroup<T>;\n};\n\nexport function DataTableColumnGroupHeaderCell<T>({\n  group: { id, columns, title, textAlign, className, style },\n}: DataTableColumnGroupHeaderCellProps<T>) {\n  const queries = useMemo(() => columns.map(({ visibleMediaQuery }) => visibleMediaQuery), [columns]);\n  const visibles = useMediaQueriesStringOrFunction(queries);\n  const colSpan = useMemo(\n    () => columns.filter(({ hidden }, i) => !hidden && visibles?.[i]).length,\n    [columns, visibles]\n  );\n\n  return colSpan > 0 ? (\n    <TableTh\n      colSpan={colSpan}\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        },\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  | '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  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      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 } : { minWidth: '1px' }),\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 filterPopoverProps={filterPopoverProps} isActive={!!filtering}>\n            {filter}\n          </DataTableHeaderCellFilter>\n        ) : null}\n      </Group>\n      {resizable ? <DataTableResizableHeaderHandle accessor={accessor as string} columnRef={columnRef} /> : null}\n    </TableTh>\n  );\n}\n","import { ActionIcon, Popover, PopoverDropdown, PopoverTarget } from '@mantine/core';\nimport { useClickOutside, useDisclosure } from '@mantine/hooks';\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  isActive: boolean;\n};\n\nexport function DataTableHeaderCellFilter<T>({\n  children,\n  isActive,\n  filterPopoverProps,\n}: DataTableHeaderCellFilterProps<T>) {\n  const [isOpen, { close, toggle }] = useDisclosure(false);\n  const Icon = isActive ? IconFilterFilled : IconFilter;\n  const ref = useClickOutside(close);\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 { rem } from '@mantine/core';\nimport { useRef, useState, type MutableRefObject } from 'react';\nimport { useDataTableColumnsContext } from './DataTableColumns.context';\n\ntype DataTableResizableHeaderHandleProps = {\n  accessor: string;\n  columnRef: MutableRefObject<HTMLTableCellElement | null>;\n};\n\nexport const DataTableResizableHeaderHandle = (props: DataTableResizableHeaderHandleProps) => {\n  const { accessor, columnRef } = props;\n\n  const dragRef = useRef<HTMLTableCellElement>(null);\n\n  const [deltaX, setDeltaX] = useState<number>(0);\n\n  const { setColumnWidth } = useDataTableColumnsContext();\n\n  const handleDragStart = (event: React.DragEvent<HTMLDivElement>) => {\n    event.preventDefault();\n    event.stopPropagation();\n\n    document.addEventListener('mousemove', handleMouseMove);\n    document.addEventListener('mouseup', handleMouseUp);\n\n    document.body.style.cursor = 'col-resize';\n  };\n\n  const handleMouseMove = (event: MouseEvent) => {\n    if (!columnRef.current) return;\n\n    const delta = event.clientX - columnRef.current.getBoundingClientRect().right;\n\n    const width = columnRef.current.getBoundingClientRect().width + delta;\n\n    const widthString = `${width}px`;\n\n    columnRef.current.style.width = widthString;\n\n    // we have to set (store) the width in the context  and in the\n    // local storage, otherwise the resizing won't work for small sizes\n    setColumnWidth(accessor, columnRef.current.style.width as string);\n\n    setDeltaX(-delta);\n  };\n\n  const handleMouseUp = () => {\n    if (!columnRef.current) return;\n\n    document.removeEventListener('mousemove', handleMouseMove);\n    document.removeEventListener('mouseup', handleMouseUp);\n\n    document.body.style.cursor = 'initial';\n\n    setColumnWidth(accessor, columnRef.current.style.width as string);\n\n    setDeltaX(0);\n  };\n\n  /**\n   * Reset the column width to the default value\n   */\n  const handleDoubleClick = () => {\n    if (!columnRef.current) return;\n\n    columnRef.current.style.maxWidth = 'initial';\n    columnRef.current.style.minWidth = 'initial';\n    columnRef.current.style.width = 'initial';\n\n    setColumnWidth(accessor, 'initial');\n  };\n\n  return (\n    <div\n      ref={dragRef}\n      // we have to stop propagation so that the column doesn't\n      // accidentally get sorted when the user is resizing it\n      onClick={(event) => event.stopPropagation()}\n      onMouseDown={handleDragStart}\n      onDoubleClick={handleDoubleClick}\n      className=\"mantine-datatable-header-resizable-handle\"\n      style={{ right: rem(deltaX) }}\n    ></div>\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 { Checkbox, MantineStyleProp, TableTh, type CheckboxProps } from '@mantine/core';\nimport clsx from 'clsx';\nimport { forwardRef } from 'react';\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};\n\nexport const DataTableHeaderSelectorCell = forwardRef(function DataTableHeaderSelectorCell(\n  {\n    className,\n    style,\n    trigger,\n    shadowVisible,\n    checked,\n    indeterminate,\n    checkboxProps,\n    onChange,\n    rowSpan,\n  }: DataTableHeaderSelectorCellProps,\n  ref: React.ForwardedRef<HTMLTableCellElement>\n) {\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      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  pt: number;\n  pb: number;\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({\n  pt,\n  pb,\n  fetching,\n  customContent,\n  backgroundBlur,\n  size,\n  type,\n  color,\n}: DataTableLoaderProps) {\n  return (\n    <Center\n      pt={pt}\n      pb={pb}\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 { forwardRef, type ForwardedRef, type JSX } from 'react';\nimport { DataTablePageSizeSelector } from './DataTablePageSizeSelector';\nimport { getPaginationCssVariables } from './cssVariables';\nimport { useMediaQueryStringOrFunction } from './hooks';\nimport type { DataTablePaginationProps } from './types';\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'\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 const DataTablePagination = forwardRef(function DataTablePagination(\n  {\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  }: DataTablePaginationComponentProps,\n  ref: ForwardedRef<HTMLDivElement>\n) {\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 isAbovePaginationWrapBreakpoint = useMediaQueryStringOrFunction(\n    ({ breakpoints }) =>\n      `(min-width: ${\n        typeof paginationWrapBreakpoint === 'number'\n          ? `${rem(paginationWrapBreakpoint)}rem`\n          : breakpoints[paginationWrapBreakpoint] || paginationWrapBreakpoint\n      })`\n  );\n\n  return (\n    <Box\n      ref={ref}\n      px={horizontalSpacing ?? 'xs'}\n      py=\"xs\"\n      className={clsx('mantine-datatable-pagination', className)}\n      style={[{ flexDirection: isAbovePaginationWrapBreakpoint ? 'row' : 'column' }, style]}\n    >\n      <Text component=\"div\" className=\"mantine-datatable-pagination-text\" size={paginationSize}>\n        {paginationTextValue}\n      </Text>\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        />\n      )}\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({ theme, paginationActiveTextColor, paginationActiveBackgroundColor })\n            : undefined\n        }\n        withEdges={paginationWithEdges}\n        withControls={paginationWithControls}\n        value={page}\n        onChange={onPageChange}\n        size={paginationSize}\n        total={Math.ceil(totalRecords! / recordsPerPage!)}\n        getControlProps={getPaginationControlProps}\n      />\n    </Box>\n  );\n}) as (props: DataTablePaginationComponentProps & { ref: ForwardedRef<HTMLDivElement> }) => JSX.Element;\n","import {\n  Button,\n  Group,\n  MantineColor,\n  Menu,\n  MenuDropdown,\n  MenuItem,\n  MenuTarget,\n  Text,\n  rem,\n  type MantineSize,\n} 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 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 { MantineTheme, 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 { 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 { Checkbox, MantineStyleProp, 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, rem, type ScrollAreaProps } from '@mantine/core';\nimport clsx from 'clsx';\n\ntype DataTableScrollAreaProps = React.PropsWithChildren<{\n  topShadowVisible: boolean;\n  leftShadowVisible: boolean;\n  leftShadowBehind: boolean;\n  rightShadowVisible: boolean;\n  rightShadowBehind: boolean | undefined;\n  bottomShadowVisible: boolean;\n  headerHeight: number;\n  footerHeight: number;\n  onScrollPositionChange: ScrollAreaProps['onScrollPositionChange'];\n  viewportRef: React.Ref<HTMLDivElement>;\n  scrollAreaProps: Omit<ScrollAreaProps, 'classNames' | 'styles' | 'onScrollPositionChange'> | undefined;\n}>;\n\nexport function DataTableScrollArea({\n  topShadowVisible,\n  leftShadowVisible,\n  leftShadowBehind,\n  rightShadowVisible,\n  rightShadowBehind,\n  bottomShadowVisible,\n  headerHeight,\n  footerHeight,\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\n        className={clsx('mantine-datatable-scroll-area-shadow', 'mantine-datatable-scroll-area-top-shadow', {\n          'mantine-datatable-scroll-area-shadow-visible': topShadowVisible,\n        })}\n        style={{ top: headerHeight ? rem(headerHeight) : 0 }}\n      />\n      <div\n        className={clsx('mantine-datatable-scroll-area-shadow', 'mantine-datatable-scroll-area-left-shadow', {\n          'mantine-datatable-scroll-area-shadow-visible': leftShadowVisible,\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-visible': rightShadowVisible,\n          'mantine-datatable-scroll-area-shadow-behind': rightShadowBehind,\n        })}\n      />\n      <Box\n        className={clsx('mantine-datatable-scroll-area-shadow', 'mantine-datatable-scroll-area-bottom-shadow', {\n          'mantine-datatable-scroll-area-shadow-visible': bottomShadowVisible,\n        })}\n        style={{ bottom: footerHeight ? rem(footerHeight + 1) : 0 }}\n      />\n    </ScrollArea>\n  );\n}\n","import { TableTr } from '@mantine/core';\nimport { useMergedRef } from '@mantine/hooks';\nimport { type ElementRef, forwardRef, useEffect, useRef } from 'react';\nimport type { DataTableDraggableRowProps } from './types';\n\nconst DataTableDraggableRow = forwardRef<HTMLTableRowElement, DataTableDraggableRowProps>(function (\n  { children, isDragging, ...props },\n  passedRef\n) {\n  const ref = useRef<ElementRef<'tr'>>(null);\n  const mergedRef = useMergedRef(ref, passedRef);\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} {...props}>\n      {children}\n    </TableTr>\n  );\n});\n\nDataTableDraggableRow.displayName = 'DataTableDraggableRow';\n\nexport { DataTableDraggableRow };\n"],"mappings":"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","names":["Box","Table","useDebouncedCallback","useMergedRef","clsx","useCallback","useMemo","useState","useState","createSafeContext","DataTableColumnsContextProvider","useDataTableColumnsContext","jsx","DataTableColumnsProvider","props","children","columnsOrder","setColumnsOrder","columnsToggle","setColumnsToggle","resetColumnsOrder","resetColumnsToggle","setColumnWidth","resetColumnsWidth","sourceColumn","setSourceColumn","useState","targetColumn","setTargetColumn","DataTableColumnsContextProvider","sourceIndex","targetIndex","removedColumn","jsx","DataTableEmptyRow","Center","Text","jsx","jsxs","IconDatabaseOff","Fragment","jsx","jsxs","DataTableEmptyState","icon","text","pt","pb","active","children","Center","IconDatabaseOff","Text","TableTfoot","TableTr","rem","clsx","forwardRef","TableTh","clsx","useLocalStorage","useMemo","useDataTableColumns","key","columns","getInitialValueInEffect","alignColumnsOrder","columnsOrder","updatedColumnsOrder","col","c","alignColumnsToggle","columnsToggle","updatedColumnsToggle","alignColumnsWidth","columnsWidth","updatedColumnsWidth","accessor","widthObj","useAlignColumnsOrder","_setColumnsOrder","defaultColumnsOrder","setColumnsOrder","order","alignedColumnsOrder","prevColumnsOrder","useAlignColumnsToggle","_setColumnsToggle","defaultColumnsToggle","setColumnsToggle","toggle","alignedColumnsToggle","prevColumnsToggle","useAlignColumnsWidth","_setColumnsWidth","defaultColumnsWidth","setColumnsWidth","width","alignedColumnsWidth","prevColumnsWidth","column","resetColumnsOrder","resetColumnsToggle","resetColumnsWidth","newColumnsWidth","useResizeObserver","useElementOuterSize","ref","width","height","useEffect","useLayoutEffect","useIsomorphicLayoutEffect","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","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","forwardRef","className","style","columns","defaultColumnProps","selectionVisible","selectorCellShadowVisible","scrollDiff","ref","relative","TableTfoot","clsx","rem","TableTr","DataTableFooterSelectorPlaceholderCell","hidden","columnProps","accessor","visibleMediaQuery","textAlign","width","footer","footerClassName","footerStyle","noWrap","ellipsis","DataTableFooterCell","Checkbox","Group","Popover","PopoverDropdown","PopoverTarget","Stack","TableThead","TableTr","clsx","forwardRef","useState","TableTh","clsx","useMemo","jsx","DataTableColumnGroupHeaderCell","id","columns","title","textAlign","className","style","queries","useMemo","visibleMediaQuery","visibles","useMediaQueriesStringOrFunction","colSpan","hidden","i","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","isOpen","close","toggle","useDisclosure","Icon","IconFilterFilled","IconFilter","ref","useClickOutside","Popover","PopoverTarget","ActionIcon","e","PopoverDropdown","rem","useRef","useState","jsx","DataTableResizableHeaderHandle","props","accessor","columnRef","dragRef","useRef","deltaX","setDeltaX","useState","setColumnWidth","useDataTableColumnsContext","handleDragStart","event","handleMouseMove","handleMouseUp","delta","widthString","rem","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","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","forwardRef","jsx","DataTableHeaderSelectorCell","forwardRef","className","style","trigger","shadowVisible","checked","indeterminate","checkboxProps","onChange","rowSpan","ref","enabled","TableTh","clsx","POINTER_CURSOR","Checkbox","jsx","jsxs","DataTableHeader","forwardRef","selectionColumnHeaderRef","className","style","sortStatus","sortIcons","onSortStatusChange","columns","defaultColumnProps","groups","selectionTrigger","selectionVisible","selectionChecked","selectionIndeterminate","onSelectionChange","selectionCheckboxProps","selectorCellShadowVisible","selectionColumnClassName","selectionColumnStyle","ref","allRecordsSelectorCell","DataTableHeaderSelectorCell","columnsToggle","setColumnsToggle","useDataTableColumnsContext","columnsPopoverOpened","setColumnsPopoverOpened","useState","someColumnsToggleable","column","columnToggleCheckboxLabels","accessor","title","humanize","content","TableThead","clsx","e","TableTr","group","DataTableColumnGroupHeaderCell","hidden","columnProps","index","visibleMediaQuery","textAlign","width","sortable","draggable","toggleable","resizable","titleClassName","titleStyle","filter","filterPopoverProps","filtering","sortKey","DataTableHeaderCell","Popover","PopoverTarget","PopoverDropdown","Stack","Group","Checkbox","c","Center","Loader","clsx","jsx","DataTableLoader","pt","pb","fetching","customContent","backgroundBlur","size","type","color","Box","Pagination","Text","rem","clsx","forwardRef","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","jsx","jsxs","DataTablePagination","forwardRef","className","style","fetching","page","onPageChange","paginationWithEdges","paginationWithControls","paginationActiveTextColor","paginationActiveBackgroundColor","paginationSize","loadingText","noRecordsText","paginationText","totalRecords","recordsPerPage","onRecordsPerPageChange","recordsPerPageLabel","recordsPerPageOptions","recordsLength","horizontalSpacing","paginationWrapBreakpoint","getPaginationControlProps","ref","paginationTextValue","from","to","isAbovePaginationWrapBreakpoint","useMediaQueryStringOrFunction","breakpoints","rem","Box","clsx","Text","DataTablePageSizeSelector","Pagination","theme","getPaginationCssVariables","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","rem","clsx","jsx","jsxs","DataTableScrollArea","topShadowVisible","leftShadowVisible","leftShadowBehind","rightShadowVisible","rightShadowBehind","bottomShadowVisible","headerHeight","footerHeight","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","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","localScrollViewportRef","scrollViewportWidth","scrollViewportHeight","useElementOuterSize","effectiveColumns","useMemo","group","dragToggle","useDataTableColumns","headerRef","headerHeight","localTableRef","tableWidth","tableHeight","footerRef","footerHeight","paginationRef","paginationHeight","selectionColumnHeaderRef","selectionColumnWidth","mergedTableRef","useMergedRef","mergedViewportRef","scrolledToTop","setScrolledToTop","useState","scrolledToBottom","setScrolledToBottom","scrolledToLeft","setScrolledToLeft","scrolledToRight","setScrolledToRight","rowExpansionInfo","useRowExpansion","processScrolling","useCallback","scrollTop","scrollLeft","newScrolledToTop","newScrolledToBottom","newScrolledToLeft","newScrolledToRight","useIsomorphicLayoutEffect","debouncedProcessScrolling","useDebouncedCallback","handleScrollPositionChange","e","handlePageChange","recordsLength","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","targetRecords","rec","idx","differenceBy","r","DataTableRow","DataTableEmptyRow","footer","DataTableFooter","DataTablePagination","DataTableLoader","DataTableEmptyState","TableTr","useMergedRef","forwardRef","useEffect","useRef","jsx","DataTableDraggableRow","children","isDragging","props","passedRef","ref","mergedRef","headerRow","index","headerCellDimensions","cell"]}