{"version":3,"file":"DataTable.cjs","names":["_styled","_interopRequireDefault","require","_materialReactTable","_react","_Box","_Button","_MenuButton","_Callout","_EmptyState","_i18n","_index","_DataFilters","_OdysseyDesignTokensContext","_Pagination","_usePagination","_constants","_DataTableRowActions","_DataTableSettings","_useRowReordering","_useScrollIndication","_jsxRuntime","e","__esModule","default","ScrollableTableContainer","styled","shouldForwardProp","prop","odysseyDesignTokens","isScrollableStart","isScrollableEnd","marginBlockEnd","Spacing4","position","borderInlineStartColor","HueNeutral200","borderInlineStartStyle","borderInlineStartWidth","BorderWidthMain","background","content","opacity","pointerEvents","top","left","bottom","width","Spacing6","zIndex","transition","TransitionDurationMain","TransitionTimingMain","borderInlineEndColor","borderInlineEndStyle","borderInlineEndWidth","right","defaultGetRowId","row","id","DataTable","additionalActionButton","additionalActionMenuItems","bulkActionMenuItems","columns","currentPage","emptyPlaceholder","errorMessage","errorMessageProp","filters","filtersProp","getData","getRowId","hasChangeableDensity","hasColumnResizing","hasColumnVisibility","hasFilters","hasPagination","hasRowReordering","hasRowSelection","hasSearch","hasSearchSubmitButton","searchFieldLabel","hasSorting","initialDensity","densityValues","initialSearchValue","isPaginationMoreDisabled","noResultsPlaceholder","onChangeRowSelection","onReorderRows","paginationType","renderDetailPanel","resultsPerPage","maxResultsPerPage","maxPages","rowActionButtons","rowActionMenuItems","searchDelayTime","selectedRows","totalRows","t","useTranslation","data","setData","useState","pagination","setPagination","pageIndex","pageSize","draggingRow","setDraggingRow","isTableContainerScrolledToStart","setIsTableContainerScrolledToStart","isTableContainerScrolledToEnd","setIsTableContainerScrolledToEnd","tableInnerContainerWidth","setTableInnerContainerWidth","tableOuterContainerRef","useRef","tableInnerContainerRef","tableContentRef","columnSorting","setColumnSorting","columnVisibility","setColumnVisibility","rowDensity","setRowDensity","search","setSearch","setFilters","initialFilters","setInitialFilters","isLoading","setIsLoading","isEmpty","setIsEmpty","setErrorMessage","rowSelection","setRowSelection","useScrollIndication","tableOuterContainer","current","tableInnerContainer","useOdysseyDesignTokens","dragHandleStyles","dragHandleText","draggableTableBodyRowClassName","handleDragHandleKeyDown","handleDragHandleOnDragCapture","handleDragHandleOnDragEnd","resetDraggingAndHoveredRow","updateRowOrder","useRowReordering","page","rowDensityClassName","useMemo","renderRowActions","useCallback","currentIndex","index","jsx","DataTableRowActions","rowIndex","undefined","convertFilterSelectOptions","options","map","option","label","value","convertColumnToFilter","column","enableColumnFilter","accessorKey","header","variant","filterVariant","filterSelectOptions","dataTableFilters","providedFilters","reduce","accumulator","item","foundColumn","find","filter","concat","defaultCell","cell","getValue","hasTextWrapping","columnDef","enableWrapping","Box","sx","whiteSpace","textOverflow","overflow","children","emptyState","noResultsInnerContent","EmptyState","description","heading","emptyStateInnerContent","columnIds","columnOrder","shouldDisplayRowActions","muiTableBodyProps","className","muiTableBodyCellProps","getIsResizing","overflowWrap","muiDetailPanelProps","paddingBlock","getIsExpanded","Spacing3","muiTableBodyRowProps","table","isDetailPanel","currentRowId","draggingRowId","hoveredRowId","getState","hoveredRow","border","backgroundColor","muiRowDragHandleProps","onKeyDown","event","onBlur","onDragEnd","onDragCapture","muiTableHeadCellProps","currentColumn","sortedColumn","hasColumnWithGrow","some","grow","dataTable","useMaterialReactTable","state","sorting","globalFilter","icons","ArrowDownwardIcon","ArrowDownIcon","DragHandleIcon","DragIndicatorIcon","SyncAltIcon","ArrowUnsortedIcon","ExpandMoreIcon","ChevronDownIcon","enableColumnActions","enableColumnResizing","enableDensityToggle","enableFilters","enableFullScreenToggle","enableGlobalFilter","enableHiding","enablePagination","layoutMode","manualFiltering","manualSorting","muiTablePaperProps","elevation","selectAllMode","displayColumnDefOptions","align","jsxs","display","visibility","Button","ariaLabel","endIcon","MoreIcon","isDisabled","size","minWidth","marginInline","padding","defaultColumn","Cell","enableRowOrdering","Boolean","enableRowDragging","enableRowActions","positionActionsColumn","enableRowSelection","onRowSelectionChange","enableSorting","onSortingChange","enableRowVirtualization","length","rowVirtualizerInstanceRef","rowVirtualizerOptions","overscan","renderEmptyRowsFallback","muiTableProps","ref","muiTableContainerProps","enableExpandAll","bulkActionMenuButton","Fragment","MenuButton","buttonVariant","Object","keys","useEffect","incomingData","sort","error","prev","lastRow","usePagination","currentRowsCount","marginBottom","DataFilters","additionalActions","DataTableSettings","menuAlignment","defaultSearchTerm","onChangeFilters","onChangeSearch","Callout","severity","text","MRT_TableContainer","Pagination","currentPageLabel","isMoreDisabled","loadMoreLabel","maxPageIndex","maxPageSize","nextLabel","onPaginationChange","previousLabel","rowsPerPageLabel","MemoizedDataTable","exports","memo","displayName"],"sources":["../../../src/DataTable/DataTable.tsx"],"sourcesContent":["/*!\n * Copyright (c) 2023-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport styled from \"@emotion/styled\";\nimport {\n  MRT_Cell,\n  MRT_Column,\n  MRT_ColumnDef,\n  MRT_DensityState,\n  MRT_Row,\n  MRT_RowData,\n  MRT_RowSelectionState,\n  MRT_RowVirtualizer,\n  MRT_SortingState,\n  MRT_TableContainer,\n  MRT_TableInstance,\n  MRT_TableOptions,\n  MRT_VisibilityState,\n  useMaterialReactTable,\n} from \"material-react-table\";\nimport {\n  memo,\n  ReactNode,\n  useCallback,\n  useEffect,\n  useMemo,\n  useRef,\n  useState,\n} from \"react\";\n\nimport { Box } from \"../Box.js\";\nimport { Button } from \"../Buttons/Button.js\";\nimport { MenuButton, type MenuButtonProps } from \"../Buttons/MenuButton.js\";\nimport { Callout } from \"../Callout.js\";\nimport { EmptyState } from \"../EmptyState.js\";\nimport { useTranslation } from \"../i18n.generated/i18n.js\";\nimport {\n  ArrowDownIcon,\n  ArrowUnsortedIcon,\n  ChevronDownIcon,\n  DragIndicatorIcon,\n  MoreIcon,\n} from \"../icons.generated/index.js\";\nimport { DataTableRowData, DataTableRowSelectionState } from \"../index.js\";\nimport { DataFilter, DataFilters } from \"../labs/DataFilters.js\";\nimport {\n  DesignTokens,\n  useOdysseyDesignTokens,\n} from \"../OdysseyDesignTokensContext.js\";\nimport { paginationTypeValues } from \"../Pagination/constants.js\";\nimport { Pagination } from \"../Pagination/Pagination.js\";\nimport { usePagination } from \"../Pagination/usePagination.js\";\nimport { densityValues } from \"./constants.js\";\nimport {\n  DataTableRowActions,\n  DataTableRowActionsProps,\n} from \"./DataTableRowActions.js\";\nimport { DataTableSettings } from \"./DataTableSettings.js\";\nimport { useRowReordering } from \"./useRowReordering.js\";\nimport { useScrollIndication } from \"./useScrollIndication.js\";\n\nexport type DataTableColumn<T extends DataTableRowData> = MRT_ColumnDef<T> & {\n  /**\n   * @deprecated Use `hasTextWrapping` instead.\n   */\n  enableWrapping?: boolean;\n  hasTextWrapping?: boolean;\n};\n\ntype DataTableColumnInstance<T extends DataTableRowData> = Omit<\n  MRT_Column<T, unknown>,\n  \"columnDef\"\n> & {\n  columnDef: DataTableColumn<T>;\n};\n\ntype DataTableCell<T extends DataTableRowData> = Omit<MRT_Cell<T>, \"column\"> & {\n  column: DataTableColumnInstance<T>;\n};\n\n/**\n * Utility type to extract a callback function type from a given key of `MRT_TableOptions`.\n *\n * The `Extract<>` utility is used to filter out only the function type from the property, as some `MRT_TableOptions` properties can be union types (e.g., `function` | `object`).\n *\n * The `@typescript-eslint/no-unsafe-function-type` rule is disabled here because we must extract a function type from a property of `MRT_TableOptions`, but the exact function signature varies depending on the key.\n */\ntype MRT_TableOptionsCallback<\n  TableOptionKey extends keyof Required<MRT_TableOptions<MRT_RowData>>,\n  TData extends MRT_RowData = MRT_RowData,\n> = Extract<\n  Required<MRT_TableOptions<TData>>[TableOptionKey],\n  Function // eslint-disable-line @typescript-eslint/no-unsafe-function-type\n>;\n\nexport type DataTableGetDataType = {\n  filters?: DataFilter[];\n  page?: number;\n  resultsPerPage?: number;\n  search?: string;\n  sort?: MRT_SortingState;\n};\n\nexport type DataTableOnReorderRowsType = {\n  newRowIndex: number;\n  rowId: string;\n};\n\nexport type DataTableRenderDetailPanelType = {\n  row: MRT_Row<DataTableRowData>;\n  table: MRT_TableInstance<DataTableRowData>;\n};\n\nexport type DataTableProps = {\n  /**\n   * An optional action button above the table.\n   */\n  additionalActionButton?: ReactNode;\n  /**\n   * MenuItems that go in an optional action menu above the table.\n   */\n  additionalActionMenuItems?: ReactNode;\n  /**\n   * Menu items to include in the bulk actions menu, which appears above the table if a row or rows are selected\n   */\n  bulkActionMenuItems?: (\n    selectedRows: MRT_RowSelectionState,\n  ) => MenuButtonProps[\"children\"];\n  /**\n   * The columns that make up the table\n   */\n  columns: DataTableColumn<DataTableRowData>[];\n  /**\n   * The current page number.\n   * @default 1\n   */\n  currentPage?: number;\n  /**\n   * The component to display when the table is displaying the initial empty state\n   */\n  emptyPlaceholder?: ReactNode;\n  /**\n   * If `error` is not undefined, the DataTable will indicate an error.\n   */\n  errorMessage?: string;\n  /**\n   * An optional set of filters to render in the filters menu\n   */\n  filters?: Array<DataFilter | DataTableColumn<DataTableRowData> | string>;\n  /**\n   * Called whenever the table needs to fetch new data, due to changes in page, results per page, search input, filters, or sorting\n   */\n  getData: ({\n    page,\n    resultsPerPage,\n    search,\n    filters,\n    sort,\n  }: DataTableGetDataType) =>\n    | MRT_TableOptions<DataTableRowData>[\"data\"]\n    | Promise<MRT_TableOptions<DataTableRowData>[\"data\"]>;\n  /**\n   * The function to get the ID of a row.\n   * @default (row) => row.id\n   */\n  getRowId?: MRT_TableOptions<DataTableRowData>[\"getRowId\"];\n  /**\n   * If `true`, the end user can change the table row density.\n   */\n  hasChangeableDensity?: boolean;\n  /**\n   * If `true`, the end user can resize individual columns.\n   */\n  hasColumnResizing?: boolean;\n  /**\n   * If `true`, the end user can show or hide columns.\n   */\n  hasColumnVisibility?: boolean;\n  /**\n   * If `true`, a filter menu is shown above the table.\n   */\n  hasFilters?: boolean;\n  /**\n   * If `true`, pagination controls are shown below the table.\n   */\n  hasPagination?: boolean;\n  /**\n   * If `true`, the end user can reorder rows via drag-and-drop.\n   */\n  hasRowReordering?: boolean;\n  /**\n   * If `true`, each row includes a checkbox for row selection.\n   */\n  hasRowSelection?: boolean;\n  /**\n   * If `true`, a search field is shown above the table.\n   */\n  hasSearch?: boolean;\n  /**\n   * If `true`, the search field includes a submit button; otherwise it fires on each input change.\n   */\n  hasSearchSubmitButton?: boolean;\n  /**\n   * If `true`, the end user can sort columns ascending, descending, or unsorted.\n   */\n  hasSorting?: boolean;\n  /**\n   * The initial density (height & padding) of the table rows. This is available even if the table density isn't changeable by the end user via hasChangeableDensity.\n   * @default \"comfortable\"\n   */\n  initialDensity?: (typeof densityValues)[number];\n  /**\n   * The initial search value.\n   * @default \"\"\n   */\n  initialSearchValue?: string;\n  /**\n   * If `true`, the next-page or show-more pagination button is disabled.\n   */\n  isPaginationMoreDisabled?: boolean;\n  /**\n   * The highest page number allowed to be manually input in pagination\n   */\n  maxPages?: number;\n  /**\n   * The largest number of rows allowed to be shown per page. This only affects the row input in pagination.\n   */\n  maxResultsPerPage?: number;\n  /**\n   * The component to display when the query returns no results\n   */\n  noResultsPlaceholder?: ReactNode;\n  /**\n   * Called when a row (or rows) is selected or unselected.\n   */\n  onChangeRowSelection?: (rowSelection: DataTableRowSelectionState) => void;\n  /**\n   * Called when the user reorders rows within the table. Can be used to propagate order change to the backend.\n   */\n  onReorderRows?: ({ rowId, newRowIndex }: DataTableOnReorderRowsType) => void;\n  /**\n   * The type of pagination controls shown. Defaults to next/prev buttons, but can be set to a simple \"Load more\" button by setting to \"loadMore\".\n   * @default \"paged\"\n   */\n  paginationType?: (typeof paginationTypeValues)[number];\n  /**\n   * The optional component to display when expanding a row.\n   */\n  renderDetailPanel?: MRT_TableOptions<DataTableRowData>[\"renderDetailPanel\"];\n  /**\n   * The number of results per page.\n   * @default 20\n   */\n  resultsPerPage?: number;\n  /**\n   * Action buttons to display in each row\n   */\n  rowActionButtons?: DataTableRowActionsProps[\"rowActionButtons\"];\n  /**\n   * Menu items to include in the optional actions menu on each row.\n   */\n  rowActionMenuItems?: DataTableRowActionsProps[\"rowActionMenuItems\"];\n  /**\n   * The debounce time, in milliseconds, for the search input firing `onChangeSearch` when changed. If `hasSearchSubmitButton` is true, this doesn't do anything.\n   */\n  searchDelayTime?: number;\n  /**\n   * Overrides the default label for the search field.\n   */\n  searchFieldLabel?: string;\n  /**\n   * Allows for external control of the selected row state use in tandem with onChangeRowSelection to manage your state\n   */\n  selectedRows?: DataTableRowSelectionState;\n  /**\n   * The total number of rows in the table. Optional, because it's sometimes impossible to calculate. Used in table pagination to know when to disable the \"next\"/\"more\" button.\n   */\n  totalRows?: number;\n};\n\nconst ScrollableTableContainer = styled(\"div\", {\n  shouldForwardProp: (prop) =>\n    prop !== \"odysseyDesignTokens\" &&\n    prop !== \"isScrollableStart\" &&\n    prop !== \"isScrollableEnd\",\n})<{\n  isScrollableEnd: boolean;\n  isScrollableStart: boolean;\n  odysseyDesignTokens: DesignTokens;\n}>(({ odysseyDesignTokens, isScrollableStart, isScrollableEnd }) => ({\n  marginBlockEnd: odysseyDesignTokens.Spacing4,\n  position: \"relative\",\n  borderInlineStartColor: isScrollableStart\n    ? odysseyDesignTokens.HueNeutral200\n    : \"transparent\",\n  borderInlineStartStyle: \"solid\",\n  borderInlineStartWidth: odysseyDesignTokens.BorderWidthMain,\n  \"::before\": {\n    background:\n      \"linear-gradient(-90deg, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 0.33) 50%, rgba(0, 0, 0, 1) 100%)\",\n    content: '\"\"',\n    opacity: isScrollableStart ? \"0.075\" : \"0\",\n    pointerEvents: \"none\",\n    position: \"absolute\",\n    top: 0,\n    left: 0,\n    bottom: 0,\n    width: odysseyDesignTokens.Spacing6,\n    zIndex: 100,\n    transition: `opacity ${odysseyDesignTokens.TransitionDurationMain} ${odysseyDesignTokens.TransitionTimingMain}`,\n  },\n  borderInlineEndColor: isScrollableEnd\n    ? odysseyDesignTokens.HueNeutral200\n    : \"transparent\",\n  borderInlineEndStyle: \"solid\",\n  borderInlineEndWidth: odysseyDesignTokens.BorderWidthMain,\n  \"::after\": {\n    background:\n      \"linear-gradient(90deg, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 0.33) 50%, rgba(0, 0, 0, 1) 100%)\",\n    content: '\"\"',\n    opacity: isScrollableEnd ? \"0.075\" : \"0\",\n    pointerEvents: \"none\",\n    position: \"absolute\",\n    top: 0,\n    right: 0,\n    bottom: 0,\n    width: odysseyDesignTokens.Spacing6,\n    transition: `opacity ${odysseyDesignTokens.TransitionDurationMain} ${odysseyDesignTokens.TransitionTimingMain}`,\n  },\n}));\n\nconst defaultGetRowId: DataTableProps[\"getRowId\"] = (row) => row.id as string;\n\n/**\n * A full-featured data table with support for sorting, filtering, pagination, row selection, row reordering, and column visibility controls. Delegates data fetching to the caller via `getData`, which is invoked whenever page, search, filters, or sort state changes.\n * @deprecated use DataView instead for new cases\n */\nconst DataTable = ({\n  additionalActionButton,\n  additionalActionMenuItems,\n  bulkActionMenuItems,\n  columns,\n  currentPage = 1,\n  emptyPlaceholder,\n  errorMessage: errorMessageProp,\n  filters: filtersProp,\n  getData,\n  getRowId = defaultGetRowId,\n  hasChangeableDensity,\n  hasColumnResizing,\n  hasColumnVisibility,\n  hasFilters,\n  hasPagination,\n  hasRowReordering,\n  hasRowSelection,\n  hasSearch,\n  hasSearchSubmitButton,\n  searchFieldLabel,\n  hasSorting,\n  initialDensity = densityValues[0],\n  initialSearchValue = \"\",\n  isPaginationMoreDisabled,\n  noResultsPlaceholder,\n  onChangeRowSelection,\n  onReorderRows,\n  paginationType = \"paged\",\n  renderDetailPanel,\n  resultsPerPage = 20,\n  maxResultsPerPage,\n  maxPages,\n  rowActionButtons,\n  rowActionMenuItems,\n  searchDelayTime,\n  selectedRows,\n  totalRows,\n}: DataTableProps) => {\n  const { t } = useTranslation();\n\n  const [data, setData] = useState<DataTableRowData[]>([]);\n  const [pagination, setPagination] = useState({\n    pageIndex: currentPage,\n    pageSize: resultsPerPage,\n  });\n  const [draggingRow, setDraggingRow] =\n    useState<MRT_Row<DataTableRowData> | null>();\n  const [isTableContainerScrolledToStart, setIsTableContainerScrolledToStart] =\n    useState(true);\n  const [isTableContainerScrolledToEnd, setIsTableContainerScrolledToEnd] =\n    useState(true);\n  const [tableInnerContainerWidth, setTableInnerContainerWidth] =\n    useState<string>(\"100%\");\n  const tableOuterContainerRef = useRef<HTMLDivElement>(null);\n  const tableInnerContainerRef = useRef<HTMLDivElement>(null);\n  const tableContentRef = useRef<HTMLTableElement>(null);\n\n  // Table states\n  const [columnSorting, setColumnSorting] = useState<MRT_SortingState>([]);\n  const [columnVisibility, setColumnVisibility] =\n    useState<MRT_VisibilityState>();\n  const [rowDensity, setRowDensity] =\n    useState<MRT_DensityState>(initialDensity);\n  const [search, setSearch] = useState<string>(initialSearchValue);\n  const [filters, setFilters] = useState<DataFilter[]>();\n  const [initialFilters, setInitialFilters] = useState<DataFilter[]>();\n  const [isLoading, setIsLoading] = useState<boolean | undefined>(true);\n  const [isEmpty, setIsEmpty] = useState<boolean | undefined>();\n  const [errorMessage, setErrorMessage] = useState<string | undefined>(\n    errorMessageProp,\n  );\n  const [rowSelection, setRowSelection] = useState<MRT_RowSelectionState>(\n    selectedRows ?? {},\n  );\n\n  useScrollIndication({\n    tableOuterContainer: tableOuterContainerRef.current,\n    tableInnerContainer: tableInnerContainerRef.current,\n    setIsTableContainerScrolledToStart: setIsTableContainerScrolledToStart,\n    setIsTableContainerScrolledToEnd: setIsTableContainerScrolledToEnd,\n    setTableInnerContainerWidth: setTableInnerContainerWidth,\n  });\n\n  const odysseyDesignTokens = useOdysseyDesignTokens();\n\n  const {\n    dragHandleStyles,\n    dragHandleText,\n    draggableTableBodyRowClassName,\n    handleDragHandleKeyDown,\n    handleDragHandleOnDragCapture,\n    handleDragHandleOnDragEnd,\n    resetDraggingAndHoveredRow,\n    updateRowOrder,\n  } = useRowReordering({\n    totalRows,\n    onReorderRows,\n    data,\n    setData,\n    draggingRow,\n    setDraggingRow,\n    resultsPerPage: pagination.pageSize,\n    page: pagination.pageIndex,\n  });\n\n  const rowDensityClassName = useMemo(() => {\n    return rowDensity === \"spacious\"\n      ? \"MuiTableBody-spacious\"\n      : rowDensity === \"compact\"\n        ? \"MuiTableBody-compact\"\n        : \"MuiTableBody-default\";\n  }, [rowDensity]);\n\n  const renderRowActions = useCallback(\n    ({ row }: { row: MRT_Row<DataTableRowData> }) => {\n      const currentIndex =\n        row.index + (pagination.pageIndex - 1) * pagination.pageSize;\n      return (\n        <DataTableRowActions\n          row={row}\n          rowActionButtons={rowActionButtons}\n          rowActionMenuItems={rowActionMenuItems}\n          rowIndex={currentIndex}\n          totalRows={totalRows}\n          updateRowOrder={\n            hasRowReordering && onReorderRows ? updateRowOrder : undefined\n          }\n        />\n      );\n    },\n    [\n      pagination,\n      rowActionButtons,\n      rowActionMenuItems,\n      hasRowReordering,\n      onReorderRows,\n      totalRows,\n      updateRowOrder,\n    ],\n  );\n\n  /**\n   * This hack is to provide compatibility with Material-React-Table's filterOptions format, which allows for strings and { label: string, value: string }\n   */\n  const convertFilterSelectOptions = useCallback(\n    (options: DataTableColumn<DataTableRowData>[\"filterSelectOptions\"]) =>\n      options?.map((option) =>\n        typeof option === \"string\"\n          ? {\n              label: option,\n              value: option,\n            }\n          : {\n              // If the option isn't a string, it must have value and/or option defined\n              // If either is undefined, use the other\n              // These shouldn't need `as`, but this is a legacy file now. --Kevin Ghadyani\n              label: (option.label ?? option.value) as string,\n              value: (option.value ?? option.label) as string,\n            },\n      ),\n    [],\n  );\n\n  const convertColumnToFilter = useCallback(\n    (column: DataTableColumn<DataTableRowData>) =>\n      column.enableColumnFilter !== false && column.accessorKey\n        ? ({\n            id: column.accessorKey,\n            label: column.header,\n            variant: column.filterVariant,\n            options: convertFilterSelectOptions(column.filterSelectOptions),\n          } satisfies DataFilter as DataFilter)\n        : null,\n    [convertFilterSelectOptions],\n  );\n\n  /**\n   * Filters default to the columns, but can be overridden with the `filters` prop. `filters` should be an array of column accessorKeys, column defs, or DataFilters.\n   */\n  const dataTableFilters = useMemo(() => {\n    const providedFilters = filtersProp || columns;\n    return providedFilters.reduce<DataFilter[]>((accumulator, item) => {\n      if (typeof item === \"string\") {\n        const foundColumn = columns.find(\n          (column) => column.accessorKey === item,\n        );\n        if (foundColumn) {\n          const filter = convertColumnToFilter(foundColumn);\n          if (filter) {\n            return accumulator.concat(filter);\n          }\n        }\n      } else if (\"accessorKey\" in item) {\n        // Checks if it's a column\n        const filter = convertColumnToFilter(item);\n        if (filter) {\n          return accumulator.concat(filter);\n        }\n      } else if (\"label\" in item) {\n        // Checks if it's a DataFilter\n        return accumulator.concat(item);\n      }\n      // If none of the conditions match, item is ignored (not mapping to undefined)\n      return accumulator;\n    }, []);\n  }, [columns, filtersProp, convertColumnToFilter]);\n\n  const defaultCell = useCallback(\n    ({ cell }: { cell: DataTableCell<DataTableRowData> }) => {\n      const value = cell.getValue<string>();\n      const hasTextWrapping =\n        cell.column.columnDef.hasTextWrapping ||\n        cell.column.columnDef.enableWrapping;\n\n      return hasTextWrapping ? (\n        value\n      ) : (\n        <Box\n          sx={{\n            whiteSpace: \"nowrap\",\n            textOverflow: \"ellipsis\",\n            overflow: \"hidden\",\n          }}\n        >\n          {value}\n        </Box>\n      );\n    },\n    [],\n  );\n\n  const emptyState = useCallback(() => {\n    const noResultsInnerContent = noResultsPlaceholder || (\n      <EmptyState\n        description={t(\"table.noresults.text\")}\n        heading={t(\"table.noresults.heading\")}\n      />\n    );\n\n    const emptyStateInnerContent =\n      emptyPlaceholder && isEmpty ? emptyPlaceholder : noResultsInnerContent;\n\n    return (\n      <Box sx={{ width: tableInnerContainerWidth }}>\n        {emptyStateInnerContent}\n      </Box>\n    );\n  }, [\n    emptyPlaceholder,\n    isEmpty,\n    noResultsPlaceholder,\n    t,\n    tableInnerContainerWidth,\n  ]);\n\n  const columnIds = useMemo(() => {\n    return columns.map((column) => column.accessorKey);\n  }, [columns]);\n\n  const columnOrder = useMemo(\n    () => [\n      \"mrt-row-drag\",\n      \"mrt-row-select\",\n      \"mrt-row-expand\",\n      ...columnIds,\n      \"mrt-row-actions\",\n    ],\n    [columnIds],\n  ) as string[];\n\n  const shouldDisplayRowActions = useMemo(\n    () =>\n      (hasRowReordering === true && onReorderRows) ||\n      rowActionButtons ||\n      rowActionMenuItems\n        ? true\n        : false,\n    [hasRowReordering, onReorderRows, rowActionButtons, rowActionMenuItems],\n  );\n\n  const muiTableBodyProps = useCallback<\n    MRT_TableOptionsCallback<\"muiTableBodyProps\">\n  >(\n    () => ({\n      className: rowDensityClassName,\n    }),\n    [rowDensityClassName],\n  );\n\n  const muiTableBodyCellProps = useCallback<\n    MRT_TableOptionsCallback<\"muiTableBodyCellProps\">\n  >(\n    ({ column }) => ({\n      className: column.getIsResizing() ? \"isResizing\" : \"\",\n      sx: {\n        overflowWrap: \"anywhere\",\n      },\n    }),\n    [],\n  );\n\n  const muiDetailPanelProps = useCallback<\n    MRT_TableOptionsCallback<\"muiDetailPanelProps\">\n  >(\n    ({ row }) => ({\n      sx: {\n        paddingBlock: row.getIsExpanded()\n          ? `${odysseyDesignTokens.Spacing3} !important`\n          : undefined,\n      },\n    }),\n    [odysseyDesignTokens.Spacing3],\n  );\n\n  const muiTableBodyRowProps = useCallback<\n    MRT_TableOptionsCallback<\"muiTableBodyRowProps\">\n  >(\n    ({ table, row, isDetailPanel }) => ({\n      className: draggableTableBodyRowClassName({\n        currentRowId: row.id,\n        draggingRowId: draggingRow?.id,\n        hoveredRowId: table.getState().hoveredRow?.id,\n      }),\n      sx: {\n        ...(isDetailPanel && {\n          paddingBlock: \"0 !important\",\n          border: 0,\n          [\"&:hover\"]: {\n            backgroundColor: `transparent !important`,\n          },\n        }),\n      },\n    }),\n    [draggableTableBodyRowClassName, draggingRow?.id],\n  );\n\n  const muiRowDragHandleProps = useCallback<\n    MRT_TableOptionsCallback<\"muiRowDragHandleProps\">\n  >(\n    ({ table, row }) => ({\n      onKeyDown: (event) => handleDragHandleKeyDown({ table, row, event }),\n      onBlur: () => resetDraggingAndHoveredRow(table),\n      onDragEnd: () => handleDragHandleOnDragEnd(table),\n      onDragCapture: () => handleDragHandleOnDragCapture(table),\n      sx: dragHandleStyles,\n      ...dragHandleText,\n    }),\n    [\n      dragHandleStyles,\n      dragHandleText,\n      handleDragHandleKeyDown,\n      resetDraggingAndHoveredRow,\n      handleDragHandleOnDragEnd,\n      handleDragHandleOnDragCapture,\n    ],\n  );\n\n  const muiTableHeadCellProps = useCallback<\n    MRT_TableOptionsCallback<\"muiTableHeadCellProps\">\n  >(\n    ({ column: currentColumn }) => ({\n      className: columnSorting.find(\n        (sortedColumn) => sortedColumn.id === currentColumn.id,\n      )\n        ? \"isSorted\"\n        : \"isUnsorted\",\n    }),\n    [columnSorting],\n  );\n\n  const hasColumnWithGrow = useMemo(\n    () => columns.some((column) => column.grow === true),\n    [columns],\n  );\n\n  const dataTable = useMaterialReactTable({\n    columns: columns,\n    data: data,\n    getRowId,\n    state: {\n      sorting: columnSorting,\n      globalFilter: search,\n      columnVisibility,\n      isLoading,\n      rowSelection,\n      columnOrder,\n    },\n    icons: {\n      ArrowDownwardIcon: ArrowDownIcon,\n      DragHandleIcon: DragIndicatorIcon,\n      SyncAltIcon: ArrowUnsortedIcon,\n      ExpandMoreIcon: ChevronDownIcon,\n    },\n\n    // Base table settings\n    enableColumnActions: false,\n    enableColumnResizing: hasColumnResizing,\n    enableDensityToggle: false,\n    enableFilters: false,\n    enableFullScreenToggle: false,\n    enableGlobalFilter: false,\n    enableHiding: false,\n    enablePagination: false,\n    layoutMode: \"grid-no-grow\",\n    manualFiltering: true,\n    manualSorting: true,\n    muiTablePaperProps: {\n      elevation: 0,\n      sx: {\n        overflow: \"visible\",\n      },\n    },\n    selectAllMode: \"all\",\n    displayColumnDefOptions: {\n      \"mrt-row-actions\": {\n        header: \"\",\n        grow: true,\n        muiTableBodyCellProps: {\n          align: \"right\",\n          sx: {\n            overflow: \"visible\",\n            width: \"unset\",\n          },\n          className: \"ods-actions-cell\",\n        },\n        muiTableHeadCellProps: {\n          align: \"right\",\n          sx: {\n            width: \"unset\",\n          },\n          className: \"ods-actions-cell\",\n          children: (\n            <Box sx={{ display: \"flex\", visibility: \"hidden\" }}>\n              {rowActionButtons && rowActionButtons({ id: null })}\n              {((hasRowReordering && onReorderRows) || rowActionMenuItems) && (\n                <Box>\n                  <Button\n                    ariaLabel={t(\"table.moreactions.arialabel\")}\n                    endIcon={<MoreIcon />}\n                    isDisabled\n                    size=\"small\"\n                    variant=\"floating\"\n                  />\n                </Box>\n              )}\n            </Box>\n          ),\n        },\n      },\n      \"mrt-row-drag\": {\n        header: \"\",\n        muiTableBodyCellProps: {\n          sx: {\n            minWidth: 0,\n            width: \"auto\",\n          },\n          className: \"ods-drag-handle\",\n        },\n        muiTableHeadCellProps: {\n          sx: {\n            minWidth: 0,\n            width: \"auto\",\n          },\n          children: (\n            // Add a spacer to simulate the width of the drag handle in the column. Without this, the head cells are offset from their body cell counterparts\n            <Box sx={{ marginInline: \"-0.1rem\" }}>\n              <DragIndicatorIcon sx={{ marginInline: 1, opacity: 0 }} />\n            </Box>\n          ),\n        },\n      },\n      \"mrt-row-select\": {\n        muiTableHeadCellProps: {\n          padding: \"checkbox\",\n        },\n        muiTableBodyCellProps: {\n          padding: \"checkbox\",\n        },\n      },\n      \"mrt-row-expand\": {\n        header: \"\",\n      },\n    },\n    muiTableBodyProps,\n    defaultColumn: {\n      Cell: defaultCell,\n    },\n    muiTableBodyCellProps,\n\n    // Reordering\n    enableRowOrdering: hasRowReordering && Boolean(onReorderRows),\n    enableRowDragging: hasRowReordering && Boolean(onReorderRows),\n    muiDetailPanelProps,\n    muiTableBodyRowProps,\n    muiRowDragHandleProps,\n\n    // Row actions\n    enableRowActions: shouldDisplayRowActions,\n    positionActionsColumn:\n      \"last\" as MRT_TableOptions<DataTableRowData>[\"positionActionsColumn\"],\n    renderRowActions: ({ row }) => renderRowActions({ row }),\n\n    // Row selection\n    enableRowSelection: hasRowSelection,\n    onRowSelectionChange: setRowSelection,\n\n    // Sorting\n    enableSorting: hasSorting,\n    onSortingChange: setColumnSorting,\n    muiTableHeadCellProps,\n\n    // Virtualization\n    enableRowVirtualization:\n      paginationType !== \"loadMore\" &&\n      pagination.pageSize > 50 &&\n      data.length > 0,\n    rowVirtualizerInstanceRef:\n      useRef<MRT_RowVirtualizer<HTMLDivElement, HTMLTableRowElement>>(null),\n    rowVirtualizerOptions: {\n      overscan: 4,\n    },\n\n    // States\n    renderEmptyRowsFallback: emptyState,\n\n    // Refs\n    muiTableProps: {\n      ref: tableContentRef,\n      className:\n        !shouldDisplayRowActions && hasColumnResizing\n          ? hasColumnWithGrow\n            ? \"ods-hide-spacer-column\"\n            : \"ods-hide-spacer-column ods-column-grow\"\n          : \"\",\n    },\n\n    muiTableContainerProps: {\n      ref: tableInnerContainerRef,\n    },\n\n    // Row expansion\n    enableExpandAll: false,\n    renderDetailPanel: renderDetailPanel,\n  });\n\n  // Effects\n  const bulkActionMenuButton = useMemo(\n    () => (\n      <>\n        <MenuButton\n          ariaLabel=\"More actions\"\n          buttonVariant=\"secondary\"\n          endIcon={<MoreIcon />}\n          isDisabled={Object.keys(rowSelection).length === 0}\n        >\n          {bulkActionMenuItems?.(rowSelection)}\n        </MenuButton>\n      </>\n    ),\n    [bulkActionMenuItems, rowSelection],\n  );\n\n  useEffect(() => {\n    (async () => {\n      setIsLoading(true);\n      setErrorMessage(errorMessageProp);\n      try {\n        const incomingData = await getData?.({\n          page: pagination.pageIndex,\n          resultsPerPage: pagination.pageSize,\n          search,\n          filters,\n          sort: columnSorting,\n        });\n        setData(incomingData);\n      } catch (error) {\n        setErrorMessage(typeof error === \"string\" ? error : t(\"table.error\"));\n      } finally {\n        setIsLoading(false);\n      }\n    })();\n  }, [\n    columnSorting,\n    errorMessageProp,\n    filters,\n    getData,\n    pagination,\n    search,\n    t,\n  ]);\n\n  useEffect(() => {\n    if (!initialFilters && filters) {\n      setInitialFilters(filters);\n    }\n\n    setIsEmpty(\n      pagination.pageIndex === currentPage &&\n        pagination.pageSize === resultsPerPage &&\n        search === \"\" &&\n        filters === initialFilters &&\n        data.length === 0,\n    );\n  }, [\n    filters,\n    pagination,\n    search,\n    data,\n    currentPage,\n    initialFilters,\n    resultsPerPage,\n  ]);\n\n  useEffect(() => {\n    setPagination((prev) => ({\n      pageIndex: 1,\n      pageSize: prev.pageSize,\n    }));\n  }, [filters, search]);\n\n  useEffect(() => {\n    onChangeRowSelection?.(rowSelection);\n  }, [rowSelection, onChangeRowSelection]);\n\n  const { lastRow } = usePagination({\n    currentRowsCount: data.length,\n    pageIndex: pagination.pageIndex,\n    pageSize: pagination.pageSize,\n    totalRows,\n  });\n\n  // Render the table\n  return (\n    <>\n      {(hasSearch ||\n        hasFilters ||\n        hasChangeableDensity ||\n        hasColumnVisibility ||\n        bulkActionMenuItems ||\n        additionalActionButton ||\n        additionalActionMenuItems) && (\n        <Box sx={{ marginBottom: 5 }}>\n          <DataFilters\n            additionalActions={\n              <>\n                <DataTableSettings\n                  columns={columns}\n                  columnVisibility={columnVisibility}\n                  hasChangeableDensity={hasChangeableDensity}\n                  hasColumnVisibility={hasColumnVisibility}\n                  rowDensity={rowDensity}\n                  setColumnVisibility={setColumnVisibility}\n                  setRowDensity={setRowDensity}\n                />\n                {bulkActionMenuItems && bulkActionMenuButton}\n                {additionalActionButton}\n                {additionalActionMenuItems && (\n                  <MenuButton\n                    ariaLabel={t(\"table.moreactions.arialabel\")}\n                    buttonVariant=\"secondary\"\n                    endIcon={<MoreIcon />}\n                    menuAlignment=\"right\"\n                  >\n                    {additionalActionMenuItems}\n                  </MenuButton>\n                )}\n              </>\n            }\n            defaultSearchTerm={initialSearchValue}\n            filters={hasFilters ? dataTableFilters : undefined}\n            hasSearchSubmitButton={hasSearchSubmitButton}\n            isDisabled={isEmpty}\n            onChangeFilters={hasFilters ? setFilters : undefined}\n            onChangeSearch={hasSearch ? setSearch : undefined}\n            searchDelayTime={searchDelayTime}\n            searchFieldLabel={searchFieldLabel}\n          />\n        </Box>\n      )}\n\n      {errorMessage && (\n        <Box sx={{ marginBlockEnd: 2 }}>\n          <Callout severity=\"error\" text={errorMessage} />\n        </Box>\n      )}\n\n      <ScrollableTableContainer\n        isScrollableEnd={!isTableContainerScrolledToEnd}\n        isScrollableStart={!isTableContainerScrolledToStart}\n        odysseyDesignTokens={odysseyDesignTokens}\n        ref={tableOuterContainerRef}\n      >\n        <MRT_TableContainer table={dataTable} />\n      </ScrollableTableContainer>\n\n      {hasPagination && (\n        <Pagination\n          currentPageLabel={t(\"pagination.page\")}\n          currentRowsCount={data.length}\n          isDisabled={isEmpty}\n          isMoreDisabled={isPaginationMoreDisabled}\n          lastRow={lastRow}\n          loadMoreLabel={t(\"pagination.loadmore\")}\n          maxPageIndex={maxPages}\n          maxPageSize={maxResultsPerPage}\n          nextLabel={t(\"pagination.next\")}\n          onPaginationChange={setPagination}\n          pageIndex={pagination.pageIndex}\n          pageSize={pagination.pageSize}\n          previousLabel={t(\"pagination.previous\")}\n          rowsPerPageLabel={t(\"pagination.rowsperpage\")}\n          totalRows={totalRows}\n          variant={paginationType}\n        />\n      )}\n    </>\n  );\n};\n\nconst MemoizedDataTable = memo(DataTable);\nMemoizedDataTable.displayName = \"DataTable\";\n\nexport { MemoizedDataTable as DataTable };\n"],"mappings":"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","ignoreList":[]}