@cutting/material-react-table 5.0.0 → 5.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -4
- package/dist/index.d.ts +186 -524
- package/dist/index.js +323 -342
- package/dist/index.js.map +1 -1
- package/locales/ar/index.mjs +1 -2
- package/locales/az/index.mjs +1 -2
- package/locales/bg/index.mjs +1 -2
- package/locales/cs/index.mjs +1 -2
- package/locales/da/index.mjs +1 -2
- package/locales/de/index.mjs +1 -2
- package/locales/el/index.mjs +1 -2
- package/locales/en/index.mjs +1 -2
- package/locales/es/index.mjs +1 -2
- package/locales/et/index.mjs +1 -2
- package/locales/fa/index.mjs +1 -2
- package/locales/fi/index.mjs +1 -2
- package/locales/fr/index.mjs +1 -2
- package/locales/he/index.mjs +1 -2
- package/locales/hr/index.mjs +1 -2
- package/locales/hu/index.mjs +1 -2
- package/locales/hy/index.mjs +1 -2
- package/locales/id/index.mjs +1 -2
- package/locales/it/index.mjs +1 -2
- package/locales/ja/index.mjs +1 -2
- package/locales/ko/index.mjs +1 -2
- package/locales/nl/index.mjs +1 -2
- package/locales/no/index.mjs +1 -2
- package/locales/np/index.mjs +1 -2
- package/locales/pl/index.mjs +1 -2
- package/locales/pt/index.mjs +1 -2
- package/locales/pt-BR/index.mjs +1 -2
- package/locales/ro/index.mjs +1 -2
- package/locales/ru/index.mjs +1 -2
- package/locales/sk/index.mjs +1 -2
- package/locales/sr-Cyrl-RS/index.mjs +1 -2
- package/locales/sr-Latn-RS/index.mjs +1 -2
- package/locales/sv/index.mjs +1 -2
- package/locales/tr/index.mjs +1 -2
- package/locales/uk/index.mjs +1 -2
- package/locales/vi/index.mjs +1 -2
- package/locales/zh-Hans/index.mjs +1 -2
- package/locales/zh-Hant/index.mjs +1 -2
- package/package.json +19 -27
- package/src/MaterialReactTable.smoke.test.tsx +3 -9
- package/src/components/MaterialReactTable.tsx +13 -21
- package/src/components/body/MRT_TableBody.tsx +67 -82
- package/src/components/body/MRT_TableBodyCell.tsx +38 -80
- package/src/components/body/MRT_TableBodyCellValue.tsx +5 -14
- package/src/components/body/MRT_TableBodyRow.tsx +55 -102
- package/src/components/body/MRT_TableBodyRowGrabHandle.test.tsx +2 -6
- package/src/components/body/MRT_TableBodyRowGrabHandle.tsx +4 -9
- package/src/components/body/MRT_TableBodyRowPinButton.tsx +8 -14
- package/src/components/body/MRT_TableDetailPanel.test.tsx +3 -9
- package/src/components/body/MRT_TableDetailPanel.tsx +8 -14
- package/src/components/buttons/MRT_ColumnPinningButtons.test.tsx +6 -16
- package/src/components/buttons/MRT_ColumnPinningButtons.tsx +6 -12
- package/src/components/buttons/MRT_CopyButton.tsx +7 -15
- package/src/components/buttons/MRT_EditActionButtons.test.tsx +2 -6
- package/src/components/buttons/MRT_EditActionButtons.tsx +15 -37
- package/src/components/buttons/MRT_ExpandAllButton.tsx +8 -16
- package/src/components/buttons/MRT_ExpandButton.tsx +9 -21
- package/src/components/buttons/MRT_GrabHandleButton.tsx +6 -10
- package/src/components/buttons/MRT_RowPinButton.tsx +8 -23
- package/src/components/buttons/MRT_ShowHideColumnsButton.tsx +5 -18
- package/src/components/buttons/MRT_ToggleDensePaddingButton.test.tsx +4 -12
- package/src/components/buttons/MRT_ToggleDensePaddingButton.tsx +4 -11
- package/src/components/buttons/MRT_ToggleFiltersButton.test.tsx +4 -13
- package/src/components/buttons/MRT_ToggleFiltersButton.tsx +3 -5
- package/src/components/buttons/MRT_ToggleFullScreenButton.test.tsx +3 -11
- package/src/components/buttons/MRT_ToggleFullScreenButton.tsx +4 -9
- package/src/components/buttons/MRT_ToggleGlobalFilterButton.tsx +3 -5
- package/src/components/buttons/MRT_ToggleRowActionMenuButton.tsx +7 -15
- package/src/components/footer/MRT_TableFooter.tsx +9 -16
- package/src/components/footer/MRT_TableFooterCell.tsx +9 -32
- package/src/components/footer/MRT_TableFooterRow.tsx +18 -32
- package/src/components/head/MRT_TableHead.tsx +8 -18
- package/src/components/head/MRT_TableHeadCell.tsx +46 -100
- package/src/components/head/MRT_TableHeadCellColumnActionsButton.tsx +10 -30
- package/src/components/head/MRT_TableHeadCellFilterContainer.tsx +4 -15
- package/src/components/head/MRT_TableHeadCellFilterLabel.tsx +20 -54
- package/src/components/head/MRT_TableHeadCellGrabHandle.test.tsx +5 -19
- package/src/components/head/MRT_TableHeadCellGrabHandle.tsx +9 -38
- package/src/components/head/MRT_TableHeadCellResizeHandle.test.tsx +3 -13
- package/src/components/head/MRT_TableHeadCellResizeHandle.tsx +10 -24
- package/src/components/head/MRT_TableHeadCellSortLabel.tsx +10 -26
- package/src/components/head/MRT_TableHeadRow.tsx +24 -36
- package/src/components/inputs/MRT_EditCellTextField.test.tsx +2 -9
- package/src/components/inputs/MRT_EditCellTextField.tsx +9 -28
- package/src/components/inputs/MRT_FilterCheckbox.tsx +9 -23
- package/src/components/inputs/MRT_FilterRangeFields.tsx +6 -15
- package/src/components/inputs/MRT_FilterRangeSlider.tsx +24 -32
- package/src/components/inputs/MRT_FilterTextField.test.tsx +72 -14
- package/src/components/inputs/MRT_FilterTextField.tsx +77 -138
- package/src/components/inputs/MRT_GlobalFilterTextField.tsx +10 -32
- package/src/components/inputs/MRT_SelectCheckbox.test.tsx +4 -11
- package/src/components/inputs/MRT_SelectCheckbox.tsx +17 -36
- package/src/components/menus/MRT_ActionMenuItem.tsx +6 -15
- package/src/components/menus/MRT_CellActionMenu.tsx +6 -9
- package/src/components/menus/MRT_ColumnActionMenu.tsx +22 -57
- package/src/components/menus/MRT_FilterOptionMenu.tsx +38 -65
- package/src/components/menus/MRT_RowActionMenu.tsx +33 -22
- package/src/components/menus/MRT_ShowHideColumnsMenu.tsx +29 -65
- package/src/components/menus/MRT_ShowHideColumnsMenuItems.test.tsx +43 -0
- package/src/components/menus/MRT_ShowHideColumnsMenuItems.tsx +14 -50
- package/src/components/modals/MRT_EditRowModal.test.tsx +5 -21
- package/src/components/modals/MRT_EditRowModal.tsx +8 -26
- package/src/components/table/MRT_Table.tsx +12 -20
- package/src/components/table/MRT_TableContainer.test.tsx +147 -0
- package/src/components/table/MRT_TableContainer.tsx +33 -37
- package/src/components/table/MRT_TableLoadingOverlay.tsx +3 -5
- package/src/components/table/MRT_TablePaper.tsx +7 -14
- package/src/components/toolbar/MRT_BottomToolbar.tsx +11 -23
- package/src/components/toolbar/MRT_LinearProgressBar.tsx +4 -11
- package/src/components/toolbar/MRT_TablePagination.tsx +33 -40
- package/src/components/toolbar/MRT_ToolbarAlertBanner.tsx +21 -50
- package/src/components/toolbar/MRT_ToolbarDropZone.test.tsx +26 -10
- package/src/components/toolbar/MRT_ToolbarDropZone.tsx +23 -21
- package/src/components/toolbar/MRT_ToolbarInternalButtons.tsx +11 -21
- package/src/components/toolbar/MRT_TopToolbar.tsx +12 -28
- package/src/fns/aggregationFns.test.tsx +1 -3
- package/src/fns/filterFns.test.tsx +8 -37
- package/src/fns/filterFns.ts +71 -96
- package/src/fns/sortingFns.test.tsx +5 -21
- package/src/fns/sortingFns.ts +10 -14
- package/src/fns/tableFeatures.test.tsx +6 -29
- package/src/fns/tableFeatures.ts +5 -4
- package/src/hooks/display-columns/getMRT_RowActionsColumnDef.tsx +2 -11
- package/src/hooks/display-columns/getMRT_RowDragColumnDef.tsx +2 -10
- package/src/hooks/display-columns/getMRT_RowExpandColumnDef.tsx +8 -17
- package/src/hooks/display-columns/getMRT_RowNumbersColumnDef.tsx +3 -8
- package/src/hooks/display-columns/getMRT_RowPinningColumnDef.tsx +2 -8
- package/src/hooks/display-columns/getMRT_RowSelectColumnDef.tsx +3 -13
- package/src/hooks/display-columns/getMRT_RowSpacerColumnDef.tsx +1 -5
- package/src/hooks/useMRT_ColumnVirtualizer.ts +28 -49
- package/src/hooks/useMRT_Effects.test.tsx +114 -0
- package/src/hooks/useMRT_Effects.ts +26 -27
- package/src/hooks/useMRT_RowVirtualizer.ts +18 -33
- package/src/hooks/useMRT_Rows.ts +3 -42
- package/src/hooks/useMRT_TableInstance.ts +63 -129
- package/src/hooks/useMRT_TableOptions.ts +15 -29
- package/src/hooks/useMaterialReactTable.ts +2 -7
- package/src/icons.ts +38 -1
- package/src/index.ts +0 -4
- package/src/locales/ar.ts +1 -2
- package/src/locales/az.ts +1 -2
- package/src/locales/bg.ts +1 -2
- package/src/locales/cs.ts +2 -4
- package/src/locales/da.ts +1 -2
- package/src/locales/de.ts +1 -2
- package/src/locales/el.ts +1 -2
- package/src/locales/en.ts +1 -2
- package/src/locales/es.ts +1 -2
- package/src/locales/et.ts +2 -4
- package/src/locales/fa.ts +1 -2
- package/src/locales/fi.ts +2 -4
- package/src/locales/fr.ts +1 -2
- package/src/locales/he.ts +1 -2
- package/src/locales/hr.ts +1 -2
- package/src/locales/hu.ts +1 -2
- package/src/locales/hy.ts +1 -2
- package/src/locales/id.ts +2 -4
- package/src/locales/it.ts +1 -2
- package/src/locales/ja.ts +1 -2
- package/src/locales/ko.ts +1 -2
- package/src/locales/nl.ts +1 -2
- package/src/locales/no.ts +2 -4
- package/src/locales/np.ts +2 -4
- package/src/locales/pl.ts +1 -2
- package/src/locales/pt-BR.ts +1 -2
- package/src/locales/pt.ts +1 -2
- package/src/locales/ro.ts +1 -2
- package/src/locales/ru.ts +1 -2
- package/src/locales/sk.ts +2 -4
- package/src/locales/sr-Cyrl-RS.ts +1 -2
- package/src/locales/sr-Latn-RS.ts +1 -2
- package/src/locales/sv.ts +1 -2
- package/src/locales/tr.ts +1 -2
- package/src/locales/uk.ts +1 -2
- package/src/locales/vi.ts +1 -2
- package/src/types.ts +156 -349
- package/src/utils/cell.utils.ts +30 -68
- package/src/utils/column.utils.ts +61 -49
- package/src/utils/displayColumn.utils.ts +16 -38
- package/src/utils/highlight.utils.ts +7 -11
- package/src/utils/row.utils.ts +40 -65
- package/src/utils/slotProps.utils.ts +1 -4
- package/src/utils/style.utils.ts +18 -46
- package/src/utils/tanstack.helpers.ts +10 -17
- package/src/utils/utils.ts +6 -10
- package/src/utils/virtualization.utils.ts +5 -9
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["fuzzy","_flexRender","_constructRow"],"sources":["../src/fns/sortingFns.ts","../src/utils/utils.ts","../src/utils/row.utils.ts","../src/hooks/useMRT_Rows.ts","../src/utils/virtualization.utils.ts","../src/hooks/useMRT_RowVirtualizer.ts","../src/utils/style.utils.ts","../src/utils/cell.utils.ts","../src/components/buttons/MRT_CopyButton.tsx","../src/utils/slotProps.utils.ts","../src/components/inputs/MRT_EditCellTextField.tsx","../src/utils/highlight.utils.ts","../src/components/body/MRT_TableBodyCellValue.tsx","../src/components/body/MRT_TableBodyCell.tsx","../src/components/body/MRT_TableDetailPanel.tsx","../src/components/body/MRT_TableBodyRow.tsx","../src/components/body/MRT_TableBody.tsx","../src/components/buttons/MRT_GrabHandleButton.tsx","../src/components/body/MRT_TableBodyRowGrabHandle.tsx","../src/components/buttons/MRT_RowPinButton.tsx","../src/components/body/MRT_TableBodyRowPinButton.tsx","../src/components/buttons/MRT_ColumnPinningButtons.tsx","../src/components/buttons/MRT_EditActionButtons.tsx","../src/components/buttons/MRT_ExpandAllButton.tsx","../src/components/buttons/MRT_ExpandButton.tsx","../src/utils/column.utils.ts","../src/utils/displayColumn.utils.ts","../src/components/menus/MRT_ShowHideColumnsMenuItems.tsx","../src/components/menus/MRT_ShowHideColumnsMenu.tsx","../src/components/buttons/MRT_ShowHideColumnsButton.tsx","../src/components/buttons/MRT_ToggleDensePaddingButton.tsx","../src/components/buttons/MRT_ToggleFiltersButton.tsx","../src/components/buttons/MRT_ToggleFullScreenButton.tsx","../src/components/buttons/MRT_ToggleGlobalFilterButton.tsx","../src/components/menus/MRT_ActionMenuItem.tsx","../src/components/menus/MRT_RowActionMenu.tsx","../src/components/buttons/MRT_ToggleRowActionMenuButton.tsx","../src/components/footer/MRT_TableFooterCell.tsx","../src/components/footer/MRT_TableFooterRow.tsx","../src/components/footer/MRT_TableFooter.tsx","../src/components/inputs/MRT_SelectCheckbox.tsx","../src/components/toolbar/MRT_ToolbarAlertBanner.tsx","../src/components/menus/MRT_FilterOptionMenu.tsx","../src/components/menus/MRT_ColumnActionMenu.tsx","../src/components/head/MRT_TableHeadCellColumnActionsButton.tsx","../src/components/inputs/MRT_FilterCheckbox.tsx","../src/components/inputs/MRT_FilterTextField.tsx","../src/components/inputs/MRT_FilterRangeFields.tsx","../src/components/inputs/MRT_FilterRangeSlider.tsx","../src/components/head/MRT_TableHeadCellFilterContainer.tsx","../src/components/head/MRT_TableHeadCellFilterLabel.tsx","../src/components/head/MRT_TableHeadCellGrabHandle.tsx","../src/components/head/MRT_TableHeadCellResizeHandle.tsx","../src/components/head/MRT_TableHeadCellSortLabel.tsx","../src/components/head/MRT_TableHeadCell.tsx","../src/components/head/MRT_TableHeadRow.tsx","../src/components/head/MRT_TableHead.tsx","../src/components/inputs/MRT_GlobalFilterTextField.tsx","../src/fns/aggregationFns.ts","../src/fns/filterFns.ts","../src/fns/tableFeatures.ts","../src/utils/tanstack.helpers.ts","../src/hooks/display-columns/getMRT_RowActionsColumnDef.tsx","../src/hooks/display-columns/getMRT_RowDragColumnDef.tsx","../src/hooks/display-columns/getMRT_RowExpandColumnDef.tsx","../src/hooks/display-columns/getMRT_RowNumbersColumnDef.tsx","../src/hooks/display-columns/getMRT_RowPinningColumnDef.tsx","../src/hooks/display-columns/getMRT_RowSelectColumnDef.tsx","../src/icons.ts","../src/locales/en.ts","../src/hooks/useMRT_TableOptions.ts","../src/hooks/display-columns/getMRT_RowSpacerColumnDef.tsx","../src/hooks/useMRT_Effects.ts","../src/hooks/useMRT_TableInstance.ts","../src/hooks/useMaterialReactTable.ts","../src/components/toolbar/MRT_LinearProgressBar.tsx","../src/components/toolbar/MRT_TablePagination.tsx","../src/components/toolbar/MRT_ToolbarDropZone.tsx","../src/components/toolbar/MRT_BottomToolbar.tsx","../src/components/toolbar/MRT_ToolbarInternalButtons.tsx","../src/components/toolbar/MRT_TopToolbar.tsx","../src/components/menus/MRT_CellActionMenu.tsx","../src/components/modals/MRT_EditRowModal.tsx","../src/hooks/useMRT_ColumnVirtualizer.ts","../src/components/table/MRT_Table.tsx","../src/components/table/MRT_TableLoadingOverlay.tsx","../src/components/table/MRT_TableContainer.tsx","../src/components/table/MRT_TablePaper.tsx","../src/components/MaterialReactTable.tsx"],"sourcesContent":["import { compareItems, type RankingInfo } from '@tanstack/match-sorter-utils';\nimport {\n type Row,\n sortFn_alphanumeric,\n sortFn_alphanumericCaseSensitive,\n sortFn_basic,\n sortFn_datetime,\n sortFn_text,\n sortFn_textCaseSensitive,\n} from '@tanstack/react-table';\n\nimport { type MRT_Row, type MRT_RowData } from '../types';\n\nconst fuzzy = <TData extends MRT_RowData>(\n rowA: Row<any, TData>,\n rowB: Row<any, TData>,\n columnId: string,\n) => {\n let dir = 0;\n if (rowA.columnFiltersMeta[columnId]) {\n dir = compareItems(\n rowA.columnFiltersMeta[columnId] as RankingInfo,\n rowB.columnFiltersMeta[columnId] as RankingInfo,\n );\n }\n // Provide a fallback for when the item ranks are equal\n return dir === 0\n ? sortFn_alphanumeric(rowA, rowB, columnId)\n : dir;\n};\n\nexport const MRT_SortingFns = {\n alphanumeric: sortFn_alphanumeric,\n alphanumericCaseSensitive: sortFn_alphanumericCaseSensitive,\n basic: sortFn_basic,\n datetime: sortFn_datetime,\n fuzzy,\n text: sortFn_text,\n textCaseSensitive: sortFn_textCaseSensitive,\n};\n\nexport const rankGlobalFuzzy = <TData extends MRT_RowData>(\n rowA: MRT_Row<TData>,\n rowB: MRT_Row<TData>,\n) =>\n Math.max(...Object.values(rowB.columnFiltersMeta).map((v: any) => v.rank)) -\n Math.max(...Object.values(rowA.columnFiltersMeta).map((v: any) => v.rank));\n","import { type DropdownOption } from '../types';\n\nexport const parseFromValuesOrFunc = <T, U>(\n fn: ((arg: U) => T) | T | undefined,\n arg: U,\n): T | undefined => (fn instanceof Function ? fn(arg) : fn);\n\nexport const getValueAndLabel = (\n option?: DropdownOption | null,\n): { label: string; value: string } => {\n let label: string = '';\n let value: string = '';\n if (option) {\n if (typeof option !== 'object') {\n label = option;\n value = option;\n } else {\n label = option.label ?? option.value;\n value = option.value ?? label;\n }\n }\n return { label, value };\n};\n","import { type ChangeEvent, type MouseEvent } from 'react';\n\nimport { rankGlobalFuzzy } from '../fns/sortingFns';\nimport {\n type MRT_Row,\n type MRT_RowData,\n type MRT_TableInstance,\n} from '../types';\nimport { parseFromValuesOrFunc } from './utils';\n\nexport const getMRT_Rows = <TData extends MRT_RowData>(\n table: MRT_TableInstance<TData>,\n all?: boolean,\n): MRT_Row<TData>[] => {\n const {\n getCenterRows,\n getPrePaginatedRowModel,\n getRowModel,\n getTopRows,\n options: {\n createDisplayMode,\n enablePagination,\n enableRowPinning,\n manualPagination,\n positionCreatingRow,\n rowPinningDisplayMode,\n },\n } = table;\n const { creatingRow, pagination } = table.state;\n\n const isRankingRows = getIsRankingRows(table);\n\n let rows: MRT_Row<TData>[] = [];\n if (!isRankingRows) {\n rows =\n !enableRowPinning || rowPinningDisplayMode?.includes('sticky')\n ? all\n ? getPrePaginatedRowModel().rows\n : getRowModel().rows\n : getCenterRows();\n } else {\n // fuzzy ranking adjustments\n rows = getPrePaginatedRowModel().rows.sort((a, b) =>\n rankGlobalFuzzy(a, b),\n );\n if (enablePagination && !manualPagination && !all) {\n const start = pagination.pageIndex * pagination.pageSize;\n rows = rows.slice(start, start + pagination.pageSize);\n }\n if (enableRowPinning && !rowPinningDisplayMode?.includes('sticky')) {\n // \"re-center-ize\" the rows (no top or bottom pinned rows unless sticky)\n rows = rows.filter((row) => !row.getIsPinned());\n }\n }\n // row pinning adjustments\n if (enableRowPinning && rowPinningDisplayMode?.includes('sticky')) {\n const centerPinnedRowIds = rows\n .filter((row) => row.getIsPinned())\n .map((r) => r.id);\n\n rows = [\n ...getTopRows().filter((row) => !centerPinnedRowIds.includes(row.id)),\n ...rows,\n ];\n }\n // blank inserted creating row adjustments\n if (\n positionCreatingRow !== undefined &&\n creatingRow &&\n createDisplayMode === 'row'\n ) {\n const creatingRowIndex = !isNaN(+positionCreatingRow)\n ? +positionCreatingRow\n : positionCreatingRow === 'top'\n ? 0\n : rows.length;\n rows = [\n ...rows.slice(0, creatingRowIndex),\n creatingRow,\n ...rows.slice(creatingRowIndex),\n ];\n }\n\n return rows;\n};\n\nexport const getCanRankRows = <TData extends MRT_RowData>(\n table: MRT_TableInstance<TData>,\n) => {\n const {\n options: {\n enableGlobalFilterRankedResults,\n manualExpanding,\n manualFiltering,\n manualGrouping,\n manualSorting,\n },\n } = table;\n const { expanded, globalFilterFn } = table.state;\n\n return (\n !manualExpanding &&\n !manualFiltering &&\n !manualGrouping &&\n !manualSorting &&\n enableGlobalFilterRankedResults &&\n globalFilterFn === 'fuzzy' &&\n expanded !== true &&\n !Object.values(expanded).some(Boolean)\n );\n};\n\nexport const getIsRankingRows = <TData extends MRT_RowData>(\n table: MRT_TableInstance<TData>,\n) => {\n const { globalFilter, sorting } = table.state;\n\n return (\n getCanRankRows(table) &&\n globalFilter &&\n !Object.values(sorting).some(Boolean)\n );\n};\n\nexport const getIsRowSelected = <TData extends MRT_RowData>({\n row,\n table,\n}: {\n row: MRT_Row<TData>;\n table: MRT_TableInstance<TData>;\n}) => {\n const {\n options: { enableRowSelection },\n } = table;\n\n return (\n row.getIsSelected() ||\n (parseFromValuesOrFunc(enableRowSelection, row) &&\n row.getCanSelectSubRows() &&\n row.getIsAllSubRowsSelected())\n );\n};\n\nexport const getMRT_RowSelectionHandler =\n <TData extends MRT_RowData>({\n row,\n staticRowIndex = 0,\n table,\n }: {\n row: MRT_Row<TData>;\n staticRowIndex?: number;\n table: MRT_TableInstance<TData>;\n }) =>\n (\n event: ChangeEvent<HTMLInputElement> | MouseEvent<HTMLTableRowElement>,\n value?: boolean,\n ) => {\n const {\n options: {\n enableBatchRowSelection,\n enableMultiRowSelection,\n enableRowPinning,\n manualPagination,\n rowPinningDisplayMode,\n },\n refs: { lastSelectedRowId: lastSelectedRowId },\n } = table;\n const {\n pagination: { pageIndex, pageSize },\n } = table.state;\n\n const paginationOffset = manualPagination ? 0 : pageSize * pageIndex;\n\n const wasCurrentRowChecked = getIsRowSelected({ row, table });\n\n // toggle selection of this row\n row.toggleSelected(value ?? !wasCurrentRowChecked);\n\n const changedRowIds = new Set<string>([row.id]);\n\n // if shift key is pressed, select all rows between last selected and this one\n if (\n enableBatchRowSelection &&\n enableMultiRowSelection &&\n (event as any).nativeEvent.shiftKey &&\n lastSelectedRowId.current !== null\n ) {\n const rows = getMRT_Rows(table, true);\n\n const lastIndex = rows.findIndex(\n (r) => r.id === lastSelectedRowId.current,\n );\n\n if (lastIndex !== -1) {\n const isLastIndexChecked = getIsRowSelected({\n row: rows?.[lastIndex],\n table,\n });\n\n const currentIndex = staticRowIndex + paginationOffset;\n const [start, end] =\n lastIndex < currentIndex\n ? [lastIndex, currentIndex]\n : [currentIndex, lastIndex];\n\n // toggle selection of all rows between last selected and this one\n // but only if the last selected row is not the same as the current one\n if (wasCurrentRowChecked !== isLastIndexChecked) {\n for (let i = start; i <= end; i++) {\n rows[i].toggleSelected(!wasCurrentRowChecked);\n changedRowIds.add(rows[i].id);\n }\n }\n }\n }\n\n // record the last selected row id\n lastSelectedRowId.current = row.id;\n\n // if all sub rows were selected, unselect them\n if (row.getCanSelectSubRows() && row.getIsAllSubRowsSelected()) {\n row.subRows?.forEach((r) => r.toggleSelected(false));\n }\n\n if (enableRowPinning && rowPinningDisplayMode?.includes('select')) {\n changedRowIds.forEach((rowId) => {\n const rowToTogglePin = table.getRow(rowId);\n rowToTogglePin.pin(\n !wasCurrentRowChecked //was not previously pinned or selected\n ? rowPinningDisplayMode?.includes('bottom')\n ? 'bottom'\n : 'top'\n : false,\n );\n });\n }\n };\n\nexport const getMRT_SelectAllHandler =\n <TData extends MRT_RowData>({ table }: { table: MRT_TableInstance<TData> }) =>\n (\n event: ChangeEvent<HTMLInputElement> | MouseEvent<HTMLButtonElement>,\n value?: boolean,\n forceAll?: boolean,\n ) => {\n const {\n options: { enableRowPinning, rowPinningDisplayMode, selectAllMode },\n refs: { lastSelectedRowId },\n } = table;\n\n selectAllMode === 'all' || forceAll\n ? table.toggleAllRowsSelected(value ?? (event as any).target.checked)\n : table.toggleAllPageRowsSelected(value ?? (event as any).target.checked);\n if (enableRowPinning && rowPinningDisplayMode?.includes('select')) {\n table.setRowPinning({ bottom: [], top: [] });\n }\n lastSelectedRowId.current = null;\n };\n","import { useMemo } from 'react';\n\nimport {\n type MRT_Row,\n type MRT_RowData,\n type MRT_TableInstance,\n} from '../types';\nimport { getMRT_Rows } from '../utils/row.utils';\n\nexport const useMRT_Rows = <TData extends MRT_RowData>(\n table: MRT_TableInstance<TData>,\n): MRT_Row<TData>[] => {\n const {\n getRowModel,\n options: { data, enableGlobalFilterRankedResults, positionCreatingRow },\n } = table;\n const {\n creatingRow,\n expanded,\n globalFilter,\n pagination,\n rowPinning,\n sorting,\n } = table.state;\n\n const rows = useMemo(\n () => getMRT_Rows(table),\n [\n creatingRow,\n data,\n enableGlobalFilterRankedResults,\n expanded,\n getRowModel().rows,\n globalFilter,\n pagination.pageIndex,\n pagination.pageSize,\n positionCreatingRow,\n rowPinning,\n sorting,\n ],\n );\n\n return rows;\n};\n","import { defaultRangeExtractor, type Range } from '@tanstack/react-virtual';\n\n/**\n * When scroll, the `draggingRow` or `draggingColumn` can be removed from document because of virtualization,\n * then, the `dragEnd` event on `MRT_TableBodyRowGrabHandle` or `MRT_TableHeadCellGrabHandle` will not fire.\n * We should keep the `draggingRow` or `draggingColumn` in `getVirtualItems()` to avoid this thing.\n */\nexport const extraIndexRangeExtractor = (\n range: Range,\n draggingIndex?: number,\n) => {\n const newIndexes = defaultRangeExtractor(range);\n if (draggingIndex === undefined) return newIndexes;\n if (\n draggingIndex >= 0 &&\n draggingIndex < Math.max(range.startIndex - range.overscan, 0)\n ) {\n newIndexes.unshift(draggingIndex);\n }\n if (draggingIndex >= 0 && draggingIndex > range.endIndex + range.overscan) {\n newIndexes.push(draggingIndex);\n }\n return newIndexes;\n};\n","import { type Range, useVirtualizer } from '@tanstack/react-virtual';\nimport { useCallback, useMemo } from 'react';\n\nimport {\n type MRT_Row,\n type MRT_RowData,\n type MRT_RowVirtualizer,\n type MRT_TableInstance,\n} from '../types';\nimport { parseFromValuesOrFunc } from '../utils/utils';\nimport { extraIndexRangeExtractor } from '../utils/virtualization.utils';\n\nexport const useMRT_RowVirtualizer = <\n TData extends MRT_RowData,\n TScrollElement extends Element | Window = HTMLDivElement,\n TItemElement extends Element = HTMLTableRowElement,\n>(\n table: MRT_TableInstance<TData>,\n rows?: MRT_Row<TData>[],\n): MRT_RowVirtualizer<TScrollElement, TItemElement> | undefined => {\n const {\n getRowModel,\n options: {\n enableRowVirtualization,\n renderDetailPanel,\n rowVirtualizerInstanceRef,\n rowVirtualizerOptions,\n },\n refs: { tableContainerRef },\n } = table;\n const { density, draggingRow, expanded } = table.state;\n\n if (!enableRowVirtualization) return undefined;\n\n const rowVirtualizerProps = parseFromValuesOrFunc(rowVirtualizerOptions, {\n table,\n });\n\n const realRows = rows ?? getRowModel().rows;\n /**\n * when filtering, should find the correct index in filtered rows\n */\n const draggingRowIndex = useMemo(\n () =>\n draggingRow?.id\n ? realRows.findIndex((r) => r.id === draggingRow?.id)\n : undefined,\n [realRows, draggingRow?.id],\n );\n\n const rowCount = realRows.length;\n\n const normalRowHeight =\n density === 'compact' ? 37 : density === 'comfortable' ? 58 : 73;\n\n const rowVirtualizer = useVirtualizer({\n count: renderDetailPanel ? rowCount * 2 : rowCount,\n estimateSize: (index) =>\n renderDetailPanel && index % 2 === 1\n ? expanded === true\n ? 100\n : 0\n : normalRowHeight,\n getScrollElement: () => tableContainerRef.current,\n measureElement:\n typeof window !== 'undefined' &&\n navigator.userAgent.indexOf('Firefox') === -1\n ? (element) => element?.getBoundingClientRect().height\n : undefined,\n overscan: 4,\n rangeExtractor: useCallback(\n (range: Range) => {\n return extraIndexRangeExtractor(range, draggingRowIndex);\n },\n [draggingRowIndex],\n ),\n ...rowVirtualizerProps,\n }) as unknown as MRT_RowVirtualizer<TScrollElement, TItemElement>;\n\n rowVirtualizer.virtualRows = rowVirtualizer.getVirtualItems() as any;\n\n if (rowVirtualizerInstanceRef) {\n //@ts-expect-error\n rowVirtualizerInstanceRef.current = rowVirtualizer;\n }\n\n return rowVirtualizer;\n};\n","import { alpha, darken, lighten, type Theme } from '@mui/material/styles';\nimport { type TableCellProps } from '@mui/material/TableCell';\nimport { type TooltipProps } from '@mui/material/Tooltip';\nimport { type CSSProperties } from 'react';\n\nimport {\n type MRT_Column,\n type MRT_Header,\n type MRT_RowData,\n type MRT_TableInstance,\n type MRT_TableOptions,\n type MRT_Theme,\n} from '../types';\nimport { parseFromValuesOrFunc } from './utils';\n\nexport const parseCSSVarId = (id: string) => id.replace(/[^a-zA-Z0-9]/g, '_');\n\nexport const getMRTTheme = <TData extends MRT_RowData>(\n mrtTheme: MRT_TableOptions<TData>['mrtTheme'],\n muiTheme: Theme,\n): MRT_Theme => {\n const mrtThemeOverrides = parseFromValuesOrFunc(mrtTheme, muiTheme);\n const baseBackgroundColor =\n mrtThemeOverrides?.baseBackgroundColor ??\n (muiTheme.palette.mode === 'dark'\n ? lighten(muiTheme.palette.background.default, 0.05)\n : muiTheme.palette.background.default);\n return {\n baseBackgroundColor,\n cellNavigationOutlineColor: muiTheme.palette.primary.main,\n draggingBorderColor: muiTheme.palette.primary.main,\n matchHighlightColor:\n muiTheme.palette.mode === 'dark'\n ? darken(muiTheme.palette.warning.dark, 0.25)\n : lighten(muiTheme.palette.warning.light, 0.5),\n menuBackgroundColor: lighten(baseBackgroundColor, 0.07),\n pinnedRowBackgroundColor: alpha(muiTheme.palette.primary.main, 0.1),\n selectedRowBackgroundColor: alpha(muiTheme.palette.primary.main, 0.2),\n ...mrtThemeOverrides,\n };\n};\n\nexport const commonCellBeforeAfterStyles = {\n content: '\"\"',\n height: '100%',\n left: 0,\n position: 'absolute',\n top: 0,\n width: '100%',\n zIndex: -1,\n};\n\nexport const getCommonPinnedCellStyles = <TData extends MRT_RowData>({\n column,\n table,\n theme,\n}: {\n column?: MRT_Column<TData>;\n table: MRT_TableInstance<TData>;\n theme: Theme;\n}) => {\n const { baseBackgroundColor } = table.options.mrtTheme;\n const isPinned = column?.getIsPinned();\n\n return {\n '&[data-pinned=\"true\"]': {\n '&:before': {\n backgroundColor: alpha(\n darken(baseBackgroundColor, theme.palette.mode === 'dark' ? 0.05 : 0.01),\n 0.97\n ),\n boxShadow: column\n ? isPinned === 'start' && column.getIsLastColumn(isPinned)\n ? `-4px 0 4px -4px ${alpha(theme.palette.grey[700], 0.5)} inset`\n : isPinned === 'end' && column.getIsFirstColumn(isPinned)\n ? `4px 0 4px -4px ${alpha(theme.palette.grey[700], 0.5)} inset`\n : undefined\n : undefined,\n ...commonCellBeforeAfterStyles,\n },\n },\n };\n};\n\nexport const getCommonMRTCellStyles = <TData extends MRT_RowData>({\n column,\n header,\n table,\n tableCellProps,\n theme,\n}: {\n column: MRT_Column<TData>;\n header?: MRT_Header<TData>;\n table: MRT_TableInstance<TData>;\n tableCellProps: TableCellProps;\n theme: Theme;\n}) => {\n const {\n options: { enableColumnVirtualization, layoutMode },\n } = table;\n const { draggingColumn } = table.state;\n const { columnDef } = column;\n const { columnDefType } = columnDef;\n\n const isColumnPinned =\n columnDef.columnDefType !== 'group' && column.getIsPinned();\n\n const widthStyles: CSSProperties = {\n minWidth: `max(calc(var(--${header ? 'header' : 'col'}-${parseCSSVarId(\n header?.id ?? column.id,\n )}-size) * 1px), ${columnDef.minSize ?? 30}px)`,\n width: `calc(var(--${header ? 'header' : 'col'}-${parseCSSVarId(\n header?.id ?? column.id,\n )}-size) * 1px)`,\n };\n\n if (layoutMode === 'grid') {\n widthStyles.flex = `${\n [0, false].includes(columnDef.grow!)\n ? 0\n : `var(--${header ? 'header' : 'col'}-${parseCSSVarId(\n header?.id ?? column.id,\n )}-size)`\n } 0 auto`;\n } else if (layoutMode === 'grid-no-grow') {\n widthStyles.flex = `${+(columnDef.grow || 0)} 0 auto`;\n }\n\n const pinnedStyles = isColumnPinned\n ? {\n ...getCommonPinnedCellStyles({ column, table, theme }),\n left:\n isColumnPinned === 'start'\n ? `${column.getStart('start')}px`\n : undefined,\n opacity: 0.97,\n position: 'sticky',\n right:\n isColumnPinned === 'end'\n ? `${column.getAfter('end')}px`\n : undefined,\n }\n : {};\n\n return {\n '&:focus-visible': {\n outline: `2px solid ${table.options.mrtTheme.cellNavigationOutlineColor}`,\n outlineOffset: '-2px',\n },\n backgroundColor: 'inherit',\n backgroundImage: 'inherit',\n display: layoutMode?.startsWith('grid') ? 'flex' : undefined,\n justifyContent:\n columnDefType === 'group'\n ? 'center'\n : layoutMode?.startsWith('grid')\n ? tableCellProps.align\n : undefined,\n opacity:\n table.state.draggingColumn?.id === column.id ||\n table.state.hoveredColumn?.id === column.id\n ? 0.5\n : 1,\n position: 'relative',\n transition: enableColumnVirtualization\n ? 'none'\n : `padding 150ms ease-in-out`,\n zIndex:\n column.getIsResizing() || draggingColumn?.id === column.id\n ? 2\n : columnDefType !== 'group' && isColumnPinned\n ? 1\n : 0,\n ...pinnedStyles,\n ...widthStyles,\n ...(parseFromValuesOrFunc(tableCellProps?.sx, theme) as any),\n };\n};\n\nexport const getCommonToolbarStyles = <TData extends MRT_RowData>({\n table,\n}: {\n table: MRT_TableInstance<TData>;\n theme: Theme;\n}) => ({\n alignItems: 'flex-start',\n backgroundColor: table.options.mrtTheme.baseBackgroundColor,\n display: 'grid',\n flexWrap: 'wrap-reverse',\n minHeight: '3.5rem',\n overflow: 'hidden',\n position: 'relative',\n transition: 'all 150ms ease-in-out',\n zIndex: 1,\n});\n\nexport const flipIconStyles = (theme: Theme) =>\n theme.direction === 'rtl'\n ? { style: { transform: 'scaleX(-1)' } }\n : undefined;\n\nexport const getCommonTooltipProps = (\n placement?: TooltipProps['placement'],\n): Partial<TooltipProps> => ({\n disableInteractive: true,\n enterDelay: 1000,\n enterNextDelay: 1000,\n placement,\n});\n","import {\n type MRT_Cell,\n type MRT_Header,\n type MRT_RowData,\n type MRT_TableInstance,\n} from '../types';\nimport {\n getMRT_RowSelectionHandler,\n getMRT_SelectAllHandler,\n} from './row.utils';\nimport { parseFromValuesOrFunc } from './utils';\n\nconst isWinCtrlMacMeta = (event: React.KeyboardEvent<HTMLTableCellElement>) => {\n return (\n (event.ctrlKey && navigator.platform.toLowerCase().includes('win')) ||\n (event.metaKey && navigator.platform.toLowerCase().includes('mac'))\n );\n};\n\nexport const isCellEditable = <TData extends MRT_RowData>({\n cell,\n table,\n}: {\n cell: MRT_Cell<TData>;\n table: MRT_TableInstance<TData>;\n}) => {\n const { enableEditing } = table.options;\n const {\n column: { columnDef },\n row,\n } = cell;\n return (\n !cell.getIsPlaceholder() &&\n parseFromValuesOrFunc(enableEditing, row) &&\n parseFromValuesOrFunc(columnDef.enableEditing, row) !== false\n );\n};\n\nexport const openEditingCell = <TData extends MRT_RowData>({\n cell,\n table,\n}: {\n cell: MRT_Cell<TData>;\n table: MRT_TableInstance<TData>;\n}) => {\n const {\n options: { editDisplayMode },\n refs: { editInputRefs },\n } = table;\n const { column } = cell;\n\n if (isCellEditable({ cell, table }) && editDisplayMode === 'cell') {\n table.setEditingCell(cell);\n queueMicrotask(() => {\n const textField = editInputRefs.current?.[column.id];\n if (textField) {\n textField.focus();\n textField.select?.();\n }\n });\n }\n};\n\nexport const cellKeyboardShortcuts = <TData extends MRT_RowData = MRT_RowData>({\n cell,\n cellElements,\n cellValue,\n containerElement,\n event,\n header,\n parentElement,\n table,\n}: {\n cell?: MRT_Cell<TData>;\n cellElements?: Array<HTMLTableCellElement>;\n cellValue?: string;\n containerElement?: HTMLTableElement;\n event: React.KeyboardEvent<HTMLTableCellElement>;\n header?: MRT_Header<TData>;\n parentElement?: HTMLTableRowElement;\n table: MRT_TableInstance<TData>;\n}) => {\n if (!table.options.enableKeyboardShortcuts) return;\n if (event.isPropagationStopped()) return;\n const currentCell = event.currentTarget;\n\n if (cellValue && isWinCtrlMacMeta(event) && event.key === 'c') {\n navigator.clipboard.writeText(cellValue);\n } else if ([' ', 'Enter'].includes(event.key)) {\n if (cell?.column?.id === 'mrt-row-select') {\n event.preventDefault();\n getMRT_RowSelectionHandler({\n row: cell.row,\n //@ts-expect-error\n staticRowIndex: +event.target.getAttribute('data-index'),\n table,\n })(event as any);\n } else if (\n header?.column?.id === 'mrt-row-select' &&\n table.options.enableSelectAll\n ) {\n event.preventDefault();\n getMRT_SelectAllHandler({\n table,\n })(event as any);\n } else if (\n cell?.column?.id === 'mrt-row-expand' &&\n (cell.row.getCanExpand() ||\n table.options.renderDetailPanel?.({ row: cell.row, table }))\n ) {\n event.preventDefault();\n cell.row.toggleExpanded();\n } else if (\n header?.column?.id === 'mrt-row-expand' &&\n table.options.enableExpandAll\n ) {\n event.preventDefault();\n table.toggleAllRowsExpanded();\n } else if (cell?.column.id === 'mrt-row-pin') {\n event.preventDefault();\n cell.row.getIsPinned()\n ? cell.row.pin(false)\n : cell.row.pin(\n table.options.rowPinningDisplayMode?.includes('bottom')\n ? 'bottom'\n : 'top',\n );\n } else if (header && isWinCtrlMacMeta(event)) {\n const actionsButton = currentCell.querySelector(\n `button[aria-label=\"${table.options.localization.columnActions}\"]`,\n );\n if (actionsButton) {\n (actionsButton as HTMLButtonElement).click();\n }\n } else if (header?.column?.getCanSort()) {\n event.preventDefault();\n header.column.toggleSorting();\n }\n } else if (\n [\n 'ArrowDown',\n 'ArrowLeft',\n 'ArrowRight',\n 'ArrowUp',\n 'End',\n 'Home',\n 'PageDown',\n 'PageUp',\n ].includes(event.key)\n ) {\n event.preventDefault();\n\n const currentRow = parentElement || currentCell.closest('tr');\n const tableElement = containerElement || currentCell.closest('table');\n const allCells =\n cellElements ||\n Array.from(tableElement?.querySelectorAll('th, td') || []);\n const currentCellIndex = allCells.indexOf(currentCell);\n\n const currentIndex = parseInt(\n currentCell.getAttribute('data-index') || '0',\n );\n let nextCell: HTMLElement | undefined = undefined;\n\n //home/end first or last cell in row\n const findEdgeCell = (rowIndex: 'c' | 'f' | 'l', edge: 'f' | 'l') => {\n const row =\n rowIndex === 'c'\n ? currentRow\n : rowIndex === 'f'\n ? tableElement?.querySelector('tr')\n : tableElement?.lastElementChild?.lastElementChild;\n const rowCells = Array.from(row?.children || []);\n const targetCell =\n edge === 'f' ? rowCells[0] : rowCells[rowCells.length - 1];\n return targetCell as HTMLElement;\n };\n\n //page up/down first or last cell in column\n const findBottomTopCell = (columnIndex: number, edge: 'b' | 't') => {\n const row =\n edge === 't'\n ? tableElement?.querySelector('tr')\n : tableElement?.lastElementChild?.lastElementChild;\n const rowCells = Array.from(row?.children || []);\n const targetCell = rowCells[columnIndex];\n return targetCell as HTMLElement;\n };\n\n const findAdjacentCell = (\n columnIndex: number,\n searchDirection: 'b' | 'f',\n ) => {\n const searchArray =\n searchDirection === 'f'\n ? allCells.slice(currentCellIndex + 1)\n : allCells.slice(0, currentCellIndex).reverse();\n return searchArray.find((cell) =>\n cell.matches(`[data-index=\"${columnIndex}\"]`),\n ) as HTMLElement | undefined;\n };\n\n switch (event.key) {\n case 'ArrowDown':\n nextCell = findAdjacentCell(currentIndex, 'f');\n break;\n case 'ArrowLeft':\n nextCell = findAdjacentCell(currentIndex - 1, 'b');\n break;\n case 'ArrowRight':\n nextCell = findAdjacentCell(currentIndex + 1, 'f');\n break;\n case 'ArrowUp':\n nextCell = findAdjacentCell(currentIndex, 'b');\n break;\n case 'End':\n nextCell = findEdgeCell(isWinCtrlMacMeta(event) ? 'l' : 'c', 'l');\n break;\n case 'Home':\n nextCell = findEdgeCell(isWinCtrlMacMeta(event) ? 'f' : 'c', 'f');\n break;\n case 'PageDown':\n nextCell = findBottomTopCell(currentIndex, 'b');\n break;\n case 'PageUp':\n nextCell = findBottomTopCell(currentIndex, 't');\n break;\n }\n\n if (nextCell) {\n nextCell.focus();\n }\n }\n};\n","import { Button, type ButtonProps } from '@mui/material';\nimport { Tooltip } from '@mui/material';\nimport { type MouseEvent, useState } from 'react';\n\nimport {\n type MRT_Cell,\n type MRT_RowData,\n type MRT_TableInstance,\n} from '../../types';\nimport { getCommonTooltipProps } from '../../utils/style.utils';\nimport { parseFromValuesOrFunc } from '../../utils/utils';\n\nexport interface MRT_CopyButtonProps<TData extends MRT_RowData>\n extends ButtonProps {\n cell: MRT_Cell<TData>;\n table: MRT_TableInstance<TData>;\n}\n\nexport const MRT_CopyButton = <TData extends MRT_RowData>({\n cell,\n table,\n ...rest\n}: MRT_CopyButtonProps<TData>) => {\n const {\n options: { localization, muiCopyButtonProps },\n } = table;\n const { column, row } = cell;\n const { columnDef } = column;\n\n const [copied, setCopied] = useState(false);\n\n const handleCopy = (event: MouseEvent, text: unknown) => {\n event.stopPropagation();\n navigator.clipboard.writeText(text as string);\n setCopied(true);\n setTimeout(() => setCopied(false), 4000);\n };\n\n const buttonProps = {\n ...parseFromValuesOrFunc(muiCopyButtonProps, {\n cell,\n column,\n row,\n table,\n }),\n ...parseFromValuesOrFunc(columnDef.muiCopyButtonProps, {\n cell,\n column,\n row,\n table,\n }),\n ...rest,\n };\n\n return (\n <Tooltip\n {...getCommonTooltipProps('top')}\n title={\n buttonProps?.title ??\n (copied ? localization.copiedToClipboard : localization.clickToCopy)\n }\n >\n <Button\n onClick={(e) => handleCopy(e, cell.getValue())}\n size=\"small\"\n type=\"button\"\n variant=\"text\"\n {...buttonProps}\n sx={(theme) => ({\n backgroundColor: 'transparent',\n border: 'none',\n color: 'inherit',\n cursor: 'copy',\n fontFamily: 'inherit',\n fontSize: 'inherit',\n letterSpacing: 'inherit',\n m: '-0.25rem',\n minWidth: 'unset',\n py: 0,\n textAlign: 'inherit',\n textTransform: 'inherit',\n ...(parseFromValuesOrFunc(buttonProps?.sx, theme) as any),\n })}\n title={undefined}\n />\n </Tooltip>\n );\n};\n","import { type FormHelperTextProps } from '@mui/material/FormHelperText';\nimport { type InputProps } from '@mui/material/Input';\nimport { type InputBaseComponentProps } from '@mui/material/InputBase';\nimport { type InputLabelProps } from '@mui/material/InputLabel';\nimport { type SelectProps } from '@mui/material/Select';\nimport { type TextFieldProps } from '@mui/material/TextField';\n\nexport type TextFieldSlotProps = {\n formHelperText?: Partial<FormHelperTextProps>;\n htmlInput?: InputBaseComponentProps;\n input?: Partial<InputProps>;\n inputLabel?: Partial<InputLabelProps>;\n select?: Partial<SelectProps>;\n};\n\nexport const getTextFieldSlotProps = (\n slotProps: TextFieldProps['slotProps'],\n): TextFieldSlotProps => ({\n formHelperText: slotProps?.formHelperText as Partial<FormHelperTextProps>,\n htmlInput: slotProps?.htmlInput as InputBaseComponentProps,\n input: slotProps?.input as Partial<InputProps>,\n inputLabel: slotProps?.inputLabel as Partial<InputLabelProps>,\n select: slotProps?.select as Partial<SelectProps>,\n});\n\n","import { MenuItem } from '@mui/material';\nimport { TextField } from '@mui/material';\nimport { type TextFieldProps } from '@mui/material/TextField';\nimport {\n type ChangeEvent,\n type FocusEvent,\n type KeyboardEvent,\n useState,\n} from 'react';\n\nimport {\n type MRT_Cell,\n type MRT_RowData,\n type MRT_TableInstance,\n} from '../../types';\nimport { getTextFieldSlotProps } from '../../utils/slotProps.utils';\nimport { getValueAndLabel, parseFromValuesOrFunc } from '../../utils/utils';\n\nexport interface MRT_EditCellTextFieldProps<TData extends MRT_RowData>\n extends TextFieldProps<'standard'> {\n cell: MRT_Cell<TData>;\n table: MRT_TableInstance<TData>;\n}\n\nexport const MRT_EditCellTextField = <TData extends MRT_RowData>({\n cell,\n table,\n ...rest\n}: MRT_EditCellTextFieldProps<TData>) => {\n const {\n options: { createDisplayMode, editDisplayMode, muiEditTextFieldProps },\n refs: { editInputRefs },\n setCreatingRow,\n setEditingCell,\n setEditingRow,\n } = table;\n const { column, row } = cell;\n const { columnDef } = column;\n const { creatingRow, editingRow } = table.state;\n const { editSelectOptions, editVariant } = columnDef;\n\n const isCreating = creatingRow?.id === row.id;\n const isEditing = editingRow?.id === row.id;\n\n const [value, setValue] = useState(() => cell.getValue<string>());\n const [completesComposition, setCompletesComposition] = useState(true);\n\n const textFieldProps: TextFieldProps = {\n ...parseFromValuesOrFunc(muiEditTextFieldProps, {\n cell,\n column,\n row,\n table,\n }),\n ...parseFromValuesOrFunc(columnDef.muiEditTextFieldProps, {\n cell,\n column,\n row,\n table,\n }),\n ...rest,\n };\n\n const selectOptions = parseFromValuesOrFunc(editSelectOptions, {\n cell,\n column,\n row,\n table,\n });\n\n const isSelectEdit = editVariant === 'select' || textFieldProps?.select;\n\n const saveInputValueToRowCache = (newValue: string) => {\n row._valuesCache[column.id] = newValue;\n if (isCreating) {\n setCreatingRow(row);\n } else if (isEditing) {\n setEditingRow(row);\n }\n };\n\n const handleChange = (event: ChangeEvent<HTMLInputElement>) => {\n textFieldProps.onChange?.(event);\n setValue(event.target.value);\n if (isSelectEdit) {\n saveInputValueToRowCache(event.target.value);\n }\n };\n\n const handleBlur = (event: FocusEvent<HTMLInputElement>) => {\n textFieldProps.onBlur?.(event);\n saveInputValueToRowCache(value);\n setEditingCell(null);\n };\n\n const handleEnterKeyDown = (event: KeyboardEvent<HTMLInputElement>) => {\n textFieldProps.onKeyDown?.(event);\n if (event.key === 'Enter' && !event.shiftKey && completesComposition) {\n editInputRefs.current?.[column.id]?.blur();\n }\n };\n\n if (columnDef.Edit) {\n return <>{columnDef.Edit?.({ cell, column, row, table })}</>;\n }\n\n const consumerSlots = getTextFieldSlotProps(textFieldProps.slotProps);\n\n return (\n <TextField\n disabled={parseFromValuesOrFunc(columnDef.enableEditing, row) === false}\n fullWidth\n inputRef={(inputRef) => {\n if (inputRef) {\n editInputRefs.current![column.id] = isSelectEdit\n ? inputRef.node\n : inputRef;\n if (textFieldProps.inputRef) {\n textFieldProps.inputRef = inputRef;\n }\n }\n }}\n label={\n ['custom', 'modal'].includes(\n (isCreating ? createDisplayMode : editDisplayMode) as string,\n )\n ? columnDef.header\n : undefined\n }\n margin=\"none\"\n name={column.id}\n placeholder={\n !['custom', 'modal'].includes(\n (isCreating ? createDisplayMode : editDisplayMode) as string,\n )\n ? columnDef.header\n : undefined\n }\n select={isSelectEdit}\n size=\"small\"\n value={value ?? ''}\n variant=\"standard\"\n {...textFieldProps}\n onBlur={handleBlur}\n onChange={handleChange}\n onClick={(e) => {\n e.stopPropagation();\n textFieldProps?.onClick?.(e);\n }}\n onCompositionEnd={() => setCompletesComposition(true)}\n onCompositionStart={() => setCompletesComposition(false)}\n onKeyDown={handleEnterKeyDown}\n slotProps={{\n htmlInput: { autoComplete: 'off', ...consumerSlots.htmlInput },\n input: {\n ...(textFieldProps.variant !== 'outlined'\n ? { disableUnderline: editDisplayMode === 'table' }\n : {}),\n ...consumerSlots.input,\n sx: { mb: 0, ...consumerSlots.input?.sx },\n },\n select: {\n MenuProps: { disableScrollLock: true },\n ...consumerSlots.select,\n },\n }}\n >\n {textFieldProps.children ??\n selectOptions?.map((option) => {\n const { label, value } = getValueAndLabel(option);\n return (\n <MenuItem\n key={value}\n sx={{\n alignItems: 'center',\n display: 'flex',\n gap: '0.5rem',\n m: 0,\n }}\n value={value}\n >\n {label}\n </MenuItem>\n );\n })}\n </TextField>\n );\n};\n","export interface HighlightChunk {\n key: string;\n match: boolean;\n text: string;\n}\n\ninterface HighlightWordsArgs {\n matchExactly?: boolean;\n query: string;\n text: string;\n}\n\nconst escapeRegExp = (term: string): string =>\n term.replace(/[|\\\\{}()[\\]^$+*?.-]/g, (char) => `\\\\${char}`);\n\nconst termsToRegExpString = (terms: string): string =>\n terms.replace(/\\s{2,}/g, ' ').split(' ').join('|');\n\nconst buildRegExp = (terms: string, matchExactly: boolean): RegExp => {\n const fromString = /^([/~@;%#'])(.*?)\\1([gimsuy]*)$/.exec(terms);\n if (fromString) {\n return new RegExp(fromString[2], fromString[3]);\n }\n const escaped = escapeRegExp(terms.trim());\n const pattern = matchExactly ? escaped : termsToRegExpString(escaped);\n return new RegExp(`(${pattern})`, 'ig');\n};\n\nlet uidCounter = 0;\nconst uid = (): string => `mrt-hl-${(uidCounter += 1).toString(36)}`;\n\nexport const highlightWords = ({\n matchExactly = false,\n query,\n text,\n}: HighlightWordsArgs): HighlightChunk[] => {\n const safeQuery = typeof query === 'string' ? query.trim() : query;\n if (safeQuery === '') {\n return [{ key: uid(), match: false, text }];\n }\n const searchRegexp = buildRegExp(query, matchExactly);\n return text\n .split(searchRegexp)\n .filter((str) => str.length > 0)\n .map((str) => ({\n key: uid(),\n match: matchExactly\n ? str.toLowerCase() === safeQuery.toLowerCase()\n : searchRegexp.test(str),\n text: str,\n }));\n};\n","import { Box } from '@mui/material';\nimport { type ReactNode, type RefObject } from 'react';\n\nimport {\n type MRT_Cell,\n type MRT_RowData,\n type MRT_TableInstance,\n} from '../../types';\nimport { highlightWords } from '../../utils/highlight.utils';\n\nconst allowedTypes = ['string', 'number'];\n\nexport interface MRT_TableBodyCellValueProps<TData extends MRT_RowData> {\n cell: MRT_Cell<TData>;\n rowRef?: RefObject<HTMLTableRowElement | null>;\n staticColumnIndex?: number;\n staticRowIndex?: number;\n table: MRT_TableInstance<TData>;\n}\n\nexport const MRT_TableBodyCellValue = <TData extends MRT_RowData>({\n cell,\n rowRef,\n staticColumnIndex,\n staticRowIndex,\n table,\n}: MRT_TableBodyCellValueProps<TData>) => {\n const {\n options: {\n enableFilterMatchHighlighting,\n mrtTheme: { matchHighlightColor },\n },\n } = table;\n const { column, row } = cell;\n const { columnDef } = column;\n const { globalFilter, globalFilterFn } = table.state;\n const filterValue = column.getFilterValue();\n\n let renderedCellValue =\n cell.getIsAggregated() && columnDef.AggregatedCell\n ? columnDef.AggregatedCell({\n cell,\n column,\n row,\n staticColumnIndex,\n staticRowIndex,\n table,\n })\n : row.getIsGrouped() && !cell.getIsGrouped()\n ? null\n : cell.getIsGrouped() && columnDef.GroupedCell\n ? columnDef.GroupedCell({\n cell,\n column,\n row,\n staticColumnIndex,\n staticRowIndex,\n table,\n })\n : undefined;\n\n const isGroupedValue = renderedCellValue !== undefined;\n\n if (!isGroupedValue) {\n renderedCellValue = cell.renderValue() as number | ReactNode | string;\n }\n\n if (\n enableFilterMatchHighlighting &&\n columnDef.enableFilterMatchHighlighting !== false &&\n String(renderedCellValue) &&\n allowedTypes.includes(typeof renderedCellValue) &&\n ((filterValue &&\n allowedTypes.includes(typeof filterValue) &&\n ['autocomplete', 'text'].includes(columnDef.filterVariant!)) ||\n (globalFilter &&\n allowedTypes.includes(typeof globalFilter) &&\n column.getCanGlobalFilter()))\n ) {\n const chunks = highlightWords({\n matchExactly:\n (filterValue ? columnDef._filterFn : globalFilterFn) !== 'fuzzy',\n query: (filterValue ?? globalFilter ?? '').toString(),\n text: renderedCellValue?.toString() as string,\n });\n if (chunks?.length > 1 || chunks?.[0]?.match) {\n renderedCellValue = (\n <span aria-label={renderedCellValue as string} role=\"note\">\n {chunks?.map(({ key, match, text }) => (\n <Box\n aria-hidden=\"true\"\n component=\"span\"\n key={key}\n sx={\n match\n ? {\n backgroundColor: matchHighlightColor,\n borderRadius: '2px',\n color: (theme) =>\n theme.palette.mode === 'dark'\n ? theme.palette.common.white\n : theme.palette.common.black,\n padding: '2px 1px',\n }\n : undefined\n }\n >\n {text}\n </Box>\n )) ?? renderedCellValue}\n </span>\n );\n }\n }\n\n if (columnDef.Cell && !isGroupedValue) {\n renderedCellValue = columnDef.Cell({\n cell,\n column,\n renderedCellValue,\n row,\n rowRef,\n staticColumnIndex,\n staticRowIndex,\n table,\n });\n }\n\n return renderedCellValue;\n};\n","import { Skeleton } from '@mui/material';\nimport { TableCell, type TableCellProps } from '@mui/material';\nimport { useTheme } from '@mui/material/styles';\nimport {\n type DragEvent,\n memo,\n type MouseEvent,\n type RefObject,\n useEffect,\n useMemo,\n useState,\n} from 'react';\n\nimport {\n type MRT_Cell,\n type MRT_RowData,\n type MRT_TableInstance,\n} from '../../types';\nimport {\n cellKeyboardShortcuts,\n isCellEditable,\n openEditingCell,\n} from '../../utils/cell.utils';\nimport { getCommonMRTCellStyles } from '../../utils/style.utils';\nimport { parseFromValuesOrFunc } from '../../utils/utils';\nimport { MRT_CopyButton } from '../buttons/MRT_CopyButton';\nimport { MRT_EditCellTextField } from '../inputs/MRT_EditCellTextField';\nimport { MRT_TableBodyCellValue } from './MRT_TableBodyCellValue';\n\nexport interface MRT_TableBodyCellProps<TData extends MRT_RowData>\n extends TableCellProps {\n cell: MRT_Cell<TData>;\n numRows?: number;\n rowRef: RefObject<HTMLTableRowElement | null>;\n staticColumnIndex?: number;\n staticRowIndex: number;\n table: MRT_TableInstance<TData>;\n}\n\nexport const MRT_TableBodyCell = <TData extends MRT_RowData>({\n cell,\n numRows,\n rowRef,\n staticColumnIndex,\n staticRowIndex,\n table,\n ...rest\n}: MRT_TableBodyCellProps<TData>) => {\n const theme = useTheme();\n const {\n options: {\n columnResizeDirection,\n columnResizeMode,\n createDisplayMode,\n editDisplayMode,\n enableCellActions,\n enableClickToCopy,\n enableColumnOrdering,\n enableColumnPinning,\n enableGrouping,\n enableKeyboardShortcuts,\n layoutMode,\n mrtTheme: { draggingBorderColor },\n muiSkeletonProps,\n muiTableBodyCellProps,\n },\n setHoveredColumn,\n } = table;\n const {\n actionCell,\n columnResizing,\n creatingRow,\n density,\n draggingColumn,\n draggingRow,\n editingCell,\n editingRow,\n hoveredColumn,\n hoveredRow,\n isLoading,\n showSkeletons,\n } = table.state;\n const { column, row } = cell;\n const { columnDef } = column;\n const { columnDefType } = columnDef;\n\n const args = { cell, column, row, table };\n const tableCellProps = {\n ...parseFromValuesOrFunc(muiTableBodyCellProps, args),\n ...parseFromValuesOrFunc(columnDef.muiTableBodyCellProps, args),\n ...rest,\n };\n\n const skeletonProps = parseFromValuesOrFunc(muiSkeletonProps, {\n cell,\n column,\n row,\n table,\n });\n\n const [skeletonWidth, setSkeletonWidth] = useState(100);\n useEffect(() => {\n if ((!isLoading && !showSkeletons) || skeletonWidth !== 100) return;\n const size = column.getSize();\n setSkeletonWidth(\n columnDefType === 'display'\n ? size / 2\n : Math.round(Math.random() * (size - size / 3) + size / 3),\n );\n }, [isLoading, showSkeletons]);\n\n const draggingBorders = useMemo(() => {\n const isDraggingColumn = draggingColumn?.id === column.id;\n const isHoveredColumn = hoveredColumn?.id === column.id;\n const isDraggingRow = draggingRow?.id === row.id;\n const isHoveredRow = hoveredRow?.id === row.id;\n const isFirstColumn = column.getIsFirstColumn();\n const isLastColumn = column.getIsLastColumn();\n const isLastRow = numRows && staticRowIndex === numRows - 1;\n const isResizingColumn = columnResizing.isResizingColumn === column.id;\n const showResizeBorder =\n isResizingColumn && columnResizeMode === 'onChange';\n\n const borderStyle = showResizeBorder\n ? `2px solid ${draggingBorderColor} !important`\n : isDraggingColumn || isDraggingRow\n ? `1px dashed ${theme.palette.grey[500]} !important`\n : isHoveredColumn || isHoveredRow || isResizingColumn\n ? `2px dashed ${draggingBorderColor} !important`\n : undefined;\n\n if (showResizeBorder) {\n return columnResizeDirection === 'ltr'\n ? { borderRight: borderStyle }\n : { borderLeft: borderStyle };\n }\n\n return borderStyle\n ? {\n borderBottom:\n isDraggingRow || isHoveredRow || (isLastRow && !isResizingColumn)\n ? borderStyle\n : undefined,\n borderLeft:\n isDraggingColumn ||\n isHoveredColumn ||\n ((isDraggingRow || isHoveredRow) && isFirstColumn)\n ? borderStyle\n : undefined,\n borderRight:\n isDraggingColumn ||\n isHoveredColumn ||\n ((isDraggingRow || isHoveredRow) && isLastColumn)\n ? borderStyle\n : undefined,\n borderTop: isDraggingRow || isHoveredRow ? borderStyle : undefined,\n }\n : undefined;\n }, [\n columnResizing.isResizingColumn,\n draggingColumn,\n draggingRow,\n hoveredColumn,\n hoveredRow,\n staticRowIndex,\n ]);\n\n const isColumnPinned =\n enableColumnPinning &&\n columnDef.columnDefType !== 'group' &&\n column.getIsPinned();\n\n const isEditable = isCellEditable({ cell, table });\n\n const isEditing =\n isEditable &&\n !['custom', 'modal'].includes(editDisplayMode as string) &&\n (editDisplayMode === 'table' ||\n editingRow?.id === row.id ||\n editingCell?.id === cell.id) &&\n !row.getIsGrouped();\n\n const isCreating =\n isEditable && createDisplayMode === 'row' && creatingRow?.id === row.id;\n\n const showClickToCopyButton =\n (parseFromValuesOrFunc(enableClickToCopy, cell) === true ||\n parseFromValuesOrFunc(columnDef.enableClickToCopy, cell) === true) &&\n !['context-menu', false].includes(\n // @ts-expect-error\n parseFromValuesOrFunc(columnDef.enableClickToCopy, cell),\n );\n\n const isRightClickable = parseFromValuesOrFunc(enableCellActions, cell);\n\n const cellValueProps = {\n cell,\n staticColumnIndex,\n staticRowIndex,\n table,\n };\n\n const handleDoubleClick = (event: MouseEvent<HTMLTableCellElement>) => {\n tableCellProps?.onDoubleClick?.(event);\n openEditingCell({ cell, table });\n };\n\n const handleDragEnter = (e: DragEvent<HTMLTableCellElement>) => {\n tableCellProps?.onDragEnter?.(e);\n if (enableGrouping && hoveredColumn?.id === 'drop-zone') {\n setHoveredColumn(null);\n }\n if (enableColumnOrdering && draggingColumn) {\n setHoveredColumn(\n columnDef.enableColumnOrdering !== false ? column : null,\n );\n }\n };\n\n const handleDragOver = (e: DragEvent) => {\n if (columnDef.enableColumnOrdering !== false) {\n e.preventDefault();\n }\n };\n\n const handleContextMenu = (e: MouseEvent<HTMLTableCellElement>) => {\n tableCellProps?.onContextMenu?.(e);\n if (isRightClickable) {\n e.preventDefault();\n table.setActionCell(cell);\n table.refs.actionCellRef.current = e.currentTarget;\n }\n };\n\n const handleKeyDown = (event: React.KeyboardEvent<HTMLTableCellElement>) => {\n tableCellProps?.onKeyDown?.(event);\n cellKeyboardShortcuts({\n cell,\n cellValue: cell.getValue<string>(),\n event,\n table,\n });\n };\n\n return (\n <TableCell\n align={theme.direction === 'rtl' ? 'right' : 'left'}\n data-index={staticColumnIndex}\n data-pinned={!!isColumnPinned || undefined}\n tabIndex={enableKeyboardShortcuts ? 0 : undefined}\n {...tableCellProps}\n onContextMenu={handleContextMenu}\n onDoubleClick={handleDoubleClick}\n onDragEnter={handleDragEnter}\n onDragOver={handleDragOver}\n onKeyDown={handleKeyDown}\n sx={(theme) => ({\n '&:hover': {\n outline:\n actionCell?.id === cell.id ||\n (editDisplayMode === 'cell' && isEditable) ||\n (editDisplayMode === 'table' && (isCreating || isEditing))\n ? `1px solid ${theme.palette.grey[500]}`\n : undefined,\n textOverflow: 'clip',\n },\n alignItems: layoutMode?.startsWith('grid') ? 'center' : undefined,\n cursor: isRightClickable\n ? 'context-menu'\n : isEditable && editDisplayMode === 'cell'\n ? 'pointer'\n : 'inherit',\n outline:\n actionCell?.id === cell.id\n ? `1px solid ${theme.palette.grey[500]}`\n : undefined,\n outlineOffset: '-1px',\n overflow: 'hidden',\n p:\n density === 'compact'\n ? columnDefType === 'display'\n ? '0 0.5rem'\n : '0.5rem'\n : density === 'comfortable'\n ? columnDefType === 'display'\n ? '0.5rem 0.75rem'\n : '1rem'\n : columnDefType === 'display'\n ? '1rem 1.25rem'\n : '1.5rem',\n\n textOverflow: columnDefType !== 'display' ? 'ellipsis' : undefined,\n whiteSpace:\n row.getIsPinned() || density === 'compact' ? 'nowrap' : 'normal',\n ...getCommonMRTCellStyles({\n column,\n table,\n tableCellProps,\n theme,\n }),\n ...draggingBorders,\n })}\n >\n {tableCellProps.children ?? (\n <>\n {cell.getIsPlaceholder() ? (\n (columnDef.PlaceholderCell?.({ cell, column, row, table }) ?? null)\n ) : showSkeletons !== false && (isLoading || showSkeletons) ? (\n <Skeleton\n animation=\"wave\"\n height={20}\n width={skeletonWidth}\n {...skeletonProps}\n />\n ) : columnDefType === 'display' &&\n (['mrt-row-expand', 'mrt-row-numbers', 'mrt-row-select'].includes(\n column.id,\n ) ||\n !row.getIsGrouped()) ? (\n columnDef.Cell?.({\n cell,\n column,\n renderedCellValue: cell.renderValue() as any,\n row,\n rowRef,\n staticColumnIndex,\n staticRowIndex,\n table,\n })\n ) : isCreating || isEditing ? (\n <MRT_EditCellTextField cell={cell} table={table} />\n ) : showClickToCopyButton && columnDef.enableClickToCopy !== false ? (\n <MRT_CopyButton cell={cell} table={table}>\n <MRT_TableBodyCellValue {...cellValueProps} />\n </MRT_CopyButton>\n ) : (\n <MRT_TableBodyCellValue {...cellValueProps} />\n )}\n {cell.getIsGrouped() && !columnDef.GroupedCell && (\n <> ({row.subRows?.length})</>\n )}\n </>\n )}\n </TableCell>\n );\n};\n\nexport const Memo_MRT_TableBodyCell = memo(\n MRT_TableBodyCell,\n (prev, next) => next.cell === prev.cell,\n) as typeof MRT_TableBodyCell;\n","import { Collapse } from '@mui/material';\nimport { TableCell, type TableCellProps } from '@mui/material';\nimport { TableRow } from '@mui/material';\nimport { type RefObject } from 'react';\n\nimport {\n type MRT_Row,\n type MRT_RowData,\n type MRT_RowVirtualizer,\n type MRT_TableInstance,\n type MRT_VirtualItem,\n} from '../../types';\nimport { parseFromValuesOrFunc } from '../../utils/utils';\n\nexport interface MRT_TableDetailPanelProps<TData extends MRT_RowData>\n extends TableCellProps {\n parentRowRef: RefObject<HTMLTableRowElement | null>;\n row: MRT_Row<TData>;\n rowVirtualizer?: MRT_RowVirtualizer;\n staticRowIndex: number;\n table: MRT_TableInstance<TData>;\n virtualRow?: MRT_VirtualItem;\n}\n\nexport const MRT_TableDetailPanel = <TData extends MRT_RowData>({\n parentRowRef,\n row,\n rowVirtualizer,\n staticRowIndex,\n table,\n virtualRow,\n ...rest\n}: MRT_TableDetailPanelProps<TData>) => {\n const {\n getVisibleLeafColumns,\n options: {\n layoutMode,\n mrtTheme: { baseBackgroundColor },\n muiDetailPanelProps,\n muiTableBodyRowProps,\n renderDetailPanel,\n },\n } = table;\n const { isLoading } = table.state;\n\n const tableRowProps = parseFromValuesOrFunc(muiTableBodyRowProps, {\n isDetailPanel: true,\n row,\n staticRowIndex,\n table,\n });\n\n const tableCellProps = {\n ...parseFromValuesOrFunc(muiDetailPanelProps, {\n row,\n table,\n }),\n ...rest,\n };\n\n const DetailPanel = !isLoading && renderDetailPanel?.({ row, table });\n\n return (\n <TableRow\n className=\"Mui-TableBodyCell-DetailPanel\"\n data-index={renderDetailPanel ? staticRowIndex * 2 + 1 : staticRowIndex}\n ref={(node: HTMLTableRowElement) => {\n if (node) {\n rowVirtualizer?.measureElement?.(node);\n }\n }}\n {...tableRowProps}\n sx={(theme) => ({\n display: layoutMode?.startsWith('grid') ? 'flex' : undefined,\n position: virtualRow ? 'absolute' : undefined,\n top: virtualRow\n ? `${parentRowRef.current?.getBoundingClientRect()?.height}px`\n : undefined,\n transform: virtualRow\n ? `translateY(${virtualRow?.start}px)`\n : undefined,\n width: '100%',\n ...(parseFromValuesOrFunc(tableRowProps?.sx, theme) as any),\n })}\n >\n <TableCell\n className=\"Mui-TableBodyCell-DetailPanel\"\n colSpan={getVisibleLeafColumns().length}\n {...tableCellProps}\n sx={(theme) => ({\n backgroundColor: virtualRow ? baseBackgroundColor : undefined,\n borderBottom: !row.getIsExpanded() ? 'none' : undefined,\n display: layoutMode?.startsWith('grid') ? 'flex' : undefined,\n py: !!DetailPanel && row.getIsExpanded() ? '1rem' : 0,\n transition: !virtualRow ? 'all 150ms ease-in-out' : undefined,\n width: `100%`,\n ...(parseFromValuesOrFunc(tableCellProps?.sx, theme) as any),\n })}\n >\n {virtualRow ? (\n row.getIsExpanded() && DetailPanel\n ) : (\n <Collapse in={row.getIsExpanded()} mountOnEnter unmountOnExit>\n {DetailPanel}\n </Collapse>\n )}\n </TableCell>\n </TableRow>\n );\n};\n","import { TableRow, type TableRowProps } from '@mui/material';\nimport { alpha, darken, lighten, type Theme, useTheme } from '@mui/material/styles';\nimport { type VirtualItem } from '@tanstack/react-virtual';\nimport { type DragEvent, memo, useMemo, useRef } from 'react';\n\nimport {\n type MRT_Cell,\n type MRT_ColumnVirtualizer,\n type MRT_Row,\n type MRT_RowData,\n type MRT_RowVirtualizer,\n type MRT_TableInstance,\n type MRT_VirtualItem,\n} from '../../types';\nimport { getIsRowSelected } from '../../utils/row.utils';\nimport {\n commonCellBeforeAfterStyles,\n getCommonPinnedCellStyles,\n} from '../../utils/style.utils';\nimport { parseFromValuesOrFunc } from '../../utils/utils';\nimport { Memo_MRT_TableBodyCell, MRT_TableBodyCell } from './MRT_TableBodyCell';\nimport { MRT_TableDetailPanel } from './MRT_TableDetailPanel';\n\nexport interface MRT_TableBodyRowProps<TData extends MRT_RowData>\n extends TableRowProps {\n columnVirtualizer?: MRT_ColumnVirtualizer;\n numRows?: number;\n pinnedRowIds?: string[];\n row: MRT_Row<TData>;\n rowVirtualizer?: MRT_RowVirtualizer;\n staticRowIndex: number;\n table: MRT_TableInstance<TData>;\n virtualRow?: VirtualItem;\n}\n\nexport const MRT_TableBodyRow = <TData extends MRT_RowData>({\n columnVirtualizer,\n numRows,\n pinnedRowIds,\n row,\n rowVirtualizer,\n staticRowIndex,\n table,\n virtualRow,\n ...rest\n}: MRT_TableBodyRowProps<TData>) => {\n const theme = useTheme();\n\n const {\n options: {\n enableRowOrdering,\n enableRowPinning,\n enableStickyFooter,\n enableStickyHeader,\n layoutMode,\n memoMode,\n mrtTheme: {\n baseBackgroundColor,\n pinnedRowBackgroundColor,\n selectedRowBackgroundColor,\n },\n muiTableBodyRowProps,\n renderDetailPanel,\n rowPinningDisplayMode,\n },\n refs: { tableFooterRef, tableHeadRef },\n setHoveredRow,\n } = table;\n const {\n density,\n draggingColumn,\n draggingRow,\n editingCell,\n editingRow,\n hoveredRow,\n isFullScreen,\n rowPinning,\n } = table.state;\n\n const visibleCells = row.getVisibleCells();\n\n const { virtualColumns, virtualPaddingLeft, virtualPaddingRight } =\n columnVirtualizer ?? {};\n\n const isRowSelected = getIsRowSelected({ row, table });\n const isRowPinned = enableRowPinning && row.getIsPinned();\n const isDraggingRow = draggingRow?.id === row.id;\n const isHoveredRow = hoveredRow?.id === row.id;\n\n const tableRowProps = {\n ...parseFromValuesOrFunc(muiTableBodyRowProps, {\n row,\n staticRowIndex,\n table,\n }),\n ...rest,\n };\n\n const [bottomPinnedIndex, topPinnedIndex] = useMemo(() => {\n if (\n !enableRowPinning ||\n !rowPinningDisplayMode?.includes('sticky') ||\n !pinnedRowIds ||\n !row.getIsPinned()\n )\n return [];\n return [\n [...pinnedRowIds].reverse().indexOf(row.id),\n pinnedRowIds.indexOf(row.id),\n ];\n }, [pinnedRowIds, rowPinning]);\n\n const tableHeadHeight =\n ((enableStickyHeader || isFullScreen) &&\n tableHeadRef.current?.clientHeight) ||\n 0;\n const tableFooterHeight =\n (enableStickyFooter && tableFooterRef.current?.clientHeight) || 0;\n\n const sx = parseFromValuesOrFunc(tableRowProps?.sx, theme as any);\n\n const defaultRowHeight =\n density === 'compact' ? 37 : density === 'comfortable' ? 53 : 69;\n\n const customRowHeight =\n // @ts-expect-error\n parseInt(tableRowProps?.style?.height ?? sx?.height, 10) || undefined;\n\n const rowHeight = customRowHeight || defaultRowHeight;\n\n const handleDragEnter = (_e: DragEvent) => {\n if (enableRowOrdering && draggingRow) {\n setHoveredRow(row);\n }\n };\n\n const handleDragOver = (e: DragEvent) => {\n e.preventDefault();\n };\n\n const rowRef = useRef<HTMLTableRowElement | null>(null);\n\n const cellHighlightColor = isRowSelected\n ? selectedRowBackgroundColor\n : isRowPinned\n ? pinnedRowBackgroundColor\n : undefined;\n\n const cellHighlightColorHover =\n tableRowProps?.hover !== false\n ? isRowSelected\n ? cellHighlightColor\n : theme.palette.mode === 'dark'\n ? `${lighten(baseBackgroundColor, 0.3)}`\n : `${darken(baseBackgroundColor, 0.3)}`\n : undefined;\n\n return (\n <>\n <TableRow\n data-index={renderDetailPanel ? staticRowIndex * 2 : staticRowIndex}\n data-pinned={!!isRowPinned || undefined}\n data-selected={isRowSelected || undefined}\n onDragEnter={handleDragEnter}\n onDragOver={handleDragOver}\n ref={(node: HTMLTableRowElement) => {\n if (node) {\n rowRef.current = node;\n rowVirtualizer?.measureElement(node);\n }\n }}\n selected={isRowSelected}\n {...tableRowProps}\n style={{\n transform: virtualRow\n ? `translateY(${virtualRow.start}px)`\n : undefined,\n ...tableRowProps?.style,\n }}\n sx={(theme: Theme) => ({\n '&:hover td:after': cellHighlightColorHover\n ? {\n backgroundColor: alpha(cellHighlightColorHover, 0.3),\n ...commonCellBeforeAfterStyles,\n }\n : undefined,\n backgroundColor: `${baseBackgroundColor} !important`,\n bottom:\n !virtualRow && bottomPinnedIndex !== undefined && isRowPinned\n ? `${\n bottomPinnedIndex * rowHeight +\n (enableStickyFooter ? tableFooterHeight - 1 : 0)\n }px`\n : undefined,\n boxSizing: 'border-box',\n display: layoutMode?.startsWith('grid') ? 'flex' : undefined,\n opacity: isRowPinned ? 0.97 : isDraggingRow || isHoveredRow ? 0.5 : 1,\n position: virtualRow\n ? 'absolute'\n : rowPinningDisplayMode?.includes('sticky') && isRowPinned\n ? 'sticky'\n : 'relative',\n td: {\n ...getCommonPinnedCellStyles({ table, theme }),\n },\n 'td:after': cellHighlightColor\n ? {\n backgroundColor: cellHighlightColor,\n ...commonCellBeforeAfterStyles,\n }\n : undefined,\n top: virtualRow\n ? 0\n : topPinnedIndex !== undefined && isRowPinned\n ? `${\n topPinnedIndex * rowHeight +\n (enableStickyHeader || isFullScreen ? tableHeadHeight - 1 : 0)\n }px`\n : undefined,\n transition: virtualRow ? 'none' : 'all 150ms ease-in-out',\n width: '100%',\n zIndex:\n rowPinningDisplayMode?.includes('sticky') && isRowPinned ? 2 : 0,\n ...(sx as any),\n })}\n >\n {virtualPaddingLeft ? (\n <td style={{ display: 'flex', width: virtualPaddingLeft }} />\n ) : null}\n {(virtualColumns ?? visibleCells).map(\n (cellOrVirtualCell, staticColumnIndex) => {\n let cell = cellOrVirtualCell as MRT_Cell<TData>;\n if (columnVirtualizer) {\n staticColumnIndex = (cellOrVirtualCell as MRT_VirtualItem).index;\n cell = visibleCells[staticColumnIndex];\n }\n const props = {\n cell,\n numRows,\n rowRef,\n staticColumnIndex,\n staticRowIndex,\n table,\n };\n const key = `${cell.id}-${staticRowIndex}`;\n return cell ? (\n memoMode === 'cells' &&\n cell.column.columnDef.columnDefType === 'data' &&\n !draggingColumn &&\n !draggingRow &&\n editingCell?.id !== cell.id &&\n editingRow?.id !== row.id ? (\n <Memo_MRT_TableBodyCell key={key} {...props} />\n ) : (\n <MRT_TableBodyCell key={key} {...props} />\n )\n ) : null;\n },\n )}\n {virtualPaddingRight ? (\n <td style={{ display: 'flex', width: virtualPaddingRight }} />\n ) : null}\n </TableRow>\n {renderDetailPanel && !row.getIsGrouped() && (\n <MRT_TableDetailPanel\n parentRowRef={rowRef}\n row={row}\n rowVirtualizer={rowVirtualizer}\n staticRowIndex={staticRowIndex}\n table={table}\n virtualRow={virtualRow}\n />\n )}\n </>\n );\n};\n\nexport const Memo_MRT_TableBodyRow = memo(\n MRT_TableBodyRow,\n (prev, next) =>\n prev.row === next.row && prev.staticRowIndex === next.staticRowIndex,\n) as typeof MRT_TableBodyRow;\n","import { TableBody, type TableBodyProps } from '@mui/material';\nimport { Typography } from '@mui/material';\nimport { type VirtualItem } from '@tanstack/react-virtual';\nimport { memo, useMemo } from 'react';\n\nimport { useMRT_Rows } from '../../hooks/useMRT_Rows';\nimport { useMRT_RowVirtualizer } from '../../hooks/useMRT_RowVirtualizer';\nimport {\n type MRT_ColumnVirtualizer,\n type MRT_Row,\n type MRT_RowData,\n type MRT_TableInstance,\n} from '../../types';\nimport { parseFromValuesOrFunc } from '../../utils/utils';\nimport { Memo_MRT_TableBodyRow, MRT_TableBodyRow } from './MRT_TableBodyRow';\n\nexport interface MRT_TableBodyProps<TData extends MRT_RowData>\n extends TableBodyProps {\n columnVirtualizer?: MRT_ColumnVirtualizer;\n table: MRT_TableInstance<TData>;\n}\n\nexport const MRT_TableBody = <TData extends MRT_RowData>({\n columnVirtualizer,\n table,\n ...rest\n}: MRT_TableBodyProps<TData>) => {\n const {\n getBottomRows,\n getIsSomeRowsPinned,\n getRowModel,\n getTopRows,\n options: {\n enableStickyFooter,\n enableStickyHeader,\n layoutMode,\n localization,\n memoMode,\n muiTableBodyProps,\n renderDetailPanel,\n renderEmptyRowsFallback,\n rowPinningDisplayMode,\n },\n refs: { tableFooterRef, tableHeadRef, tablePaperRef },\n } = table;\n const { columnFilters, globalFilter, isFullScreen, rowPinning } = table.state;\n\n const tableBodyProps = {\n ...parseFromValuesOrFunc(muiTableBodyProps, { table }),\n ...rest,\n };\n\n const tableHeadHeight =\n ((enableStickyHeader || isFullScreen) &&\n tableHeadRef.current?.clientHeight) ||\n 0;\n const tableFooterHeight =\n (enableStickyFooter && tableFooterRef.current?.clientHeight) || 0;\n\n const pinnedRowIds = useMemo(() => {\n if (!rowPinning.bottom?.length && !rowPinning.top?.length) return [];\n return getRowModel()\n .rows.filter((row) => row.getIsPinned())\n .map((r) => r.id);\n }, [rowPinning, getRowModel().rows]);\n\n const rows = useMRT_Rows(table);\n\n const rowVirtualizer = useMRT_RowVirtualizer(table, rows);\n\n const { virtualRows } = rowVirtualizer ?? {};\n\n const commonRowProps = {\n columnVirtualizer,\n numRows: rows.length,\n table,\n };\n\n return (\n <>\n {!rowPinningDisplayMode?.includes('sticky') &&\n getIsSomeRowsPinned('top') && (\n <TableBody\n {...tableBodyProps}\n sx={(theme) => ({\n display: layoutMode?.startsWith('grid') ? 'grid' : undefined,\n position: 'sticky',\n top: tableHeadHeight - 1,\n zIndex: 1,\n ...(parseFromValuesOrFunc(tableBodyProps?.sx, theme) as any),\n })}\n >\n {getTopRows().map((row, staticRowIndex) => {\n const props = {\n ...commonRowProps,\n row,\n staticRowIndex,\n };\n return memoMode === 'rows' ? (\n <Memo_MRT_TableBodyRow key={row.id} {...props} />\n ) : (\n <MRT_TableBodyRow key={row.id} {...props} />\n );\n })}\n </TableBody>\n )}\n <TableBody\n {...tableBodyProps}\n sx={(theme) => ({\n display: layoutMode?.startsWith('grid') ? 'grid' : undefined,\n height: rowVirtualizer\n ? `${rowVirtualizer.getTotalSize()}px`\n : undefined,\n minHeight: !rows.length ? '100px' : undefined,\n position: 'relative',\n ...(parseFromValuesOrFunc(tableBodyProps?.sx, theme) as any),\n })}\n >\n {tableBodyProps?.children ??\n (!rows.length ? (\n <tr\n style={{\n display: layoutMode?.startsWith('grid') ? 'grid' : undefined,\n }}\n >\n <td\n colSpan={table.getVisibleLeafColumns().length}\n style={{\n display: layoutMode?.startsWith('grid') ? 'grid' : undefined,\n }}\n >\n {renderEmptyRowsFallback?.({ table }) ?? (\n <Typography\n sx={{\n color: 'text.secondary',\n fontStyle: 'italic',\n maxWidth: `min(100vw, ${\n tablePaperRef.current?.clientWidth ? tablePaperRef.current?.clientWidth + \"px\" : \"100%\"\n })`,\n py: '2rem',\n textAlign: 'center',\n width: '100%',\n }}\n >\n {globalFilter || columnFilters.length\n ? localization.noResultsFound\n : localization.noRecordsToDisplay}\n </Typography>\n )}\n </td>\n </tr>\n ) : (\n <>\n {(virtualRows ?? rows).map((rowOrVirtualRow, staticRowIndex) => {\n let row = rowOrVirtualRow as MRT_Row<TData>;\n if (rowVirtualizer) {\n if (renderDetailPanel) {\n if (rowOrVirtualRow.index % 2 === 1) {\n return null;\n } else {\n staticRowIndex = rowOrVirtualRow.index / 2;\n }\n } else {\n staticRowIndex = rowOrVirtualRow.index;\n }\n row = rows[staticRowIndex];\n }\n const props = {\n ...commonRowProps,\n pinnedRowIds,\n row,\n rowVirtualizer,\n staticRowIndex,\n virtualRow: rowVirtualizer\n ? (rowOrVirtualRow as VirtualItem)\n : undefined,\n };\n const key = `${row.id}-${row.index}`;\n return memoMode === 'rows' ? (\n <Memo_MRT_TableBodyRow key={key} {...props} />\n ) : (\n <MRT_TableBodyRow key={key} {...props} />\n );\n })}\n </>\n ))}\n </TableBody>\n {!rowPinningDisplayMode?.includes('sticky') &&\n getIsSomeRowsPinned('bottom') && (\n <TableBody\n {...tableBodyProps}\n sx={(theme) => ({\n bottom: tableFooterHeight - 1,\n display: layoutMode?.startsWith('grid') ? 'grid' : undefined,\n position: 'sticky',\n zIndex: 1,\n ...(parseFromValuesOrFunc(tableBodyProps?.sx, theme) as any),\n })}\n >\n {getBottomRows().map((row, staticRowIndex) => {\n const props = {\n ...commonRowProps,\n row,\n staticRowIndex,\n };\n return memoMode === 'rows' ? (\n <Memo_MRT_TableBodyRow key={row.id} {...props} />\n ) : (\n <MRT_TableBodyRow key={row.id} {...props} />\n );\n })}\n </TableBody>\n )}\n </>\n );\n};\n\nexport const Memo_MRT_TableBody = memo(\n MRT_TableBody,\n (prev, next) => prev.table.options.data === next.table.options.data,\n) as typeof MRT_TableBody;\n","import { IconButton, type IconButtonProps } from '@mui/material';\nimport { Tooltip } from '@mui/material';\nimport { type DragEventHandler } from 'react';\n\nimport { type MRT_RowData, type MRT_TableInstance } from '../../types';\nimport { getCommonTooltipProps } from '../../utils/style.utils';\nimport { parseFromValuesOrFunc } from '../../utils/utils';\n\nexport interface MRT_GrabHandleButtonProps<TData extends MRT_RowData>\n extends IconButtonProps {\n iconButtonProps?: IconButtonProps;\n location?: 'column' | 'row';\n onDragEnd: DragEventHandler<HTMLButtonElement>;\n onDragStart: DragEventHandler<HTMLButtonElement>;\n table: MRT_TableInstance<TData>;\n}\n\nexport const MRT_GrabHandleButton = <TData extends MRT_RowData>({\n location,\n table,\n ...rest\n}: MRT_GrabHandleButtonProps<TData>) => {\n const {\n options: {\n icons: { DragHandleIcon },\n localization,\n },\n } = table;\n\n return (\n <Tooltip\n {...getCommonTooltipProps('top')}\n title={rest?.title ?? localization.move}\n >\n <IconButton\n aria-label={rest.title ?? localization.move}\n disableRipple\n draggable=\"true\"\n size=\"small\"\n {...rest}\n onClick={(e) => {\n e.stopPropagation();\n rest?.onClick?.(e);\n }}\n sx={(theme) => ({\n '&:active': {\n cursor: 'grabbing',\n },\n '&:hover': {\n backgroundColor: 'transparent',\n opacity: 1,\n },\n cursor: 'grab',\n m: '0 -0.1rem',\n opacity: location === 'row' ? 1 : 0.5,\n p: '2px',\n transition: 'all 150ms ease-in-out',\n ...(parseFromValuesOrFunc(rest?.sx, theme) as any),\n })}\n title={undefined}\n >\n <DragHandleIcon />\n </IconButton>\n </Tooltip>\n );\n};\n","import { type IconButtonProps } from '@mui/material/IconButton';\nimport { type DragEvent, type RefObject } from 'react';\n\nimport {\n type MRT_Row,\n type MRT_RowData,\n type MRT_TableInstance,\n} from '../../types';\nimport { parseFromValuesOrFunc } from '../../utils/utils';\nimport { MRT_GrabHandleButton } from '../buttons/MRT_GrabHandleButton';\n\nexport interface MRT_TableBodyRowGrabHandleProps<TData extends MRT_RowData>\n extends IconButtonProps {\n row: MRT_Row<TData>;\n rowRef: RefObject<HTMLTableRowElement | null>;\n table: MRT_TableInstance<TData>;\n}\n\nexport const MRT_TableBodyRowGrabHandle = <TData extends MRT_RowData>({\n row,\n rowRef,\n table,\n ...rest\n}: MRT_TableBodyRowGrabHandleProps<TData>) => {\n const {\n options: { muiRowDragHandleProps },\n } = table;\n\n const iconButtonProps = {\n ...parseFromValuesOrFunc(muiRowDragHandleProps, {\n row,\n table,\n }),\n ...rest,\n };\n\n const handleDragStart = (event: DragEvent<HTMLButtonElement>) => {\n iconButtonProps?.onDragStart?.(event);\n try {\n event.dataTransfer.setDragImage(rowRef.current as HTMLElement, 0, 0);\n } catch (e) {\n console.error(e);\n }\n table.setDraggingRow(row as any);\n };\n\n const handleDragEnd = (event: DragEvent<HTMLButtonElement>) => {\n iconButtonProps?.onDragEnd?.(event);\n table.setDraggingRow(null);\n table.setHoveredRow(null);\n };\n\n return (\n <MRT_GrabHandleButton\n {...iconButtonProps}\n location=\"row\"\n onDragEnd={handleDragEnd}\n onDragStart={handleDragStart}\n table={table}\n />\n );\n};\n","import { IconButton, type IconButtonProps } from '@mui/material';\nimport { Tooltip } from '@mui/material';\nimport { type RowPinningPosition } from '@tanstack/react-table';\nimport { type MouseEvent, useState } from 'react';\n\nimport {\n type MRT_Row,\n type MRT_RowData,\n type MRT_TableInstance,\n} from '../../types';\nimport { getCommonTooltipProps } from '../../utils/style.utils';\nimport { parseFromValuesOrFunc } from '../../utils/utils';\n\nexport interface MRT_RowPinButtonProps<TData extends MRT_RowData>\n extends IconButtonProps {\n pinningPosition: RowPinningPosition;\n row: MRT_Row<TData>;\n table: MRT_TableInstance<TData>;\n}\n\nexport const MRT_RowPinButton = <TData extends MRT_RowData>({\n pinningPosition,\n row,\n table,\n ...rest\n}: MRT_RowPinButtonProps<TData>) => {\n const {\n options: {\n icons: { CloseIcon, PushPinIcon },\n localization,\n rowPinningDisplayMode,\n },\n } = table;\n\n const isPinned = row.getIsPinned();\n\n const [tooltipOpened, setTooltipOpened] = useState(false);\n\n const handleTogglePin = (event: MouseEvent<HTMLButtonElement>) => {\n setTooltipOpened(false);\n event.stopPropagation();\n row.pin(isPinned ? false : pinningPosition);\n };\n\n return (\n <Tooltip\n {...getCommonTooltipProps()}\n open={tooltipOpened}\n title={isPinned ? localization.unpin : localization.pin}\n >\n <IconButton\n aria-label={localization.pin}\n onBlur={() => setTooltipOpened(false)}\n onClick={handleTogglePin}\n onFocus={() => setTooltipOpened(true)}\n onMouseEnter={() => setTooltipOpened(true)}\n onMouseLeave={() => setTooltipOpened(false)}\n size=\"small\"\n {...rest}\n sx={(theme) => ({\n height: '24px',\n width: '24px',\n ...(parseFromValuesOrFunc(rest?.sx, theme) as any),\n })}\n >\n {isPinned ? (\n <CloseIcon />\n ) : (\n <PushPinIcon\n fontSize=\"small\"\n style={{\n transform: `rotate(${\n rowPinningDisplayMode === 'sticky'\n ? 135\n : pinningPosition === 'top'\n ? 180\n : 0\n }deg)`,\n }}\n />\n )}\n </IconButton>\n </Tooltip>\n );\n};\n","import { Box } from '@mui/material';\nimport { type IconButtonProps } from '@mui/material/IconButton';\n\nimport {\n type MRT_Row,\n type MRT_RowData,\n type MRT_TableInstance,\n} from '../../types';\nimport { parseFromValuesOrFunc } from '../../utils/utils';\nimport { MRT_RowPinButton } from '../buttons/MRT_RowPinButton';\n\nexport interface MRT_TableBodyRowPinButtonProps<TData extends MRT_RowData>\n extends IconButtonProps {\n row: MRT_Row<TData>;\n table: MRT_TableInstance<TData>;\n}\n\nexport const MRT_TableBodyRowPinButton = <TData extends MRT_RowData>({\n row,\n table,\n ...rest\n}: MRT_TableBodyRowPinButtonProps<TData>) => {\n const {\n options: { enableRowPinning, rowPinningDisplayMode },\n } = table;\n const { density } = table.state;\n\n const canPin = parseFromValuesOrFunc(enableRowPinning, row as any);\n\n if (!canPin) return null;\n\n const rowPinButtonProps = {\n row,\n table,\n ...rest,\n };\n\n if (rowPinningDisplayMode === 'top-and-bottom' && !row.getIsPinned()) {\n return (\n <Box\n sx={{\n display: 'flex',\n flexDirection: density === 'compact' ? 'row' : 'column',\n }}\n >\n <MRT_RowPinButton pinningPosition=\"top\" {...rowPinButtonProps} />\n <MRT_RowPinButton pinningPosition=\"bottom\" {...rowPinButtonProps} />\n </Box>\n );\n }\n\n return (\n <MRT_RowPinButton\n pinningPosition={rowPinningDisplayMode === 'bottom' ? 'bottom' : 'top'}\n {...rowPinButtonProps}\n />\n );\n};\n","import { Box, type BoxProps } from '@mui/material';\nimport { IconButton } from '@mui/material';\nimport { Tooltip } from '@mui/material';\n\nimport {\n type MRT_Column,\n type MRT_RowData,\n type MRT_TableInstance,\n} from '../../types';\nimport { parseFromValuesOrFunc } from '../../utils/utils';\n\nexport interface MRT_ColumnPinningButtonsProps<TData extends MRT_RowData>\n extends BoxProps {\n column: MRT_Column<TData>;\n table: MRT_TableInstance<TData>;\n}\n\nexport const MRT_ColumnPinningButtons = <TData extends MRT_RowData>({\n column,\n table,\n ...rest\n}: MRT_ColumnPinningButtonsProps<TData>) => {\n const {\n options: {\n icons: { PushPinIcon },\n localization,\n },\n } = table;\n\n const handlePinColumn = (pinDirection: 'end' | 'start' | false) => {\n column.pin(pinDirection);\n };\n\n return (\n <Box\n {...rest}\n sx={(theme) => ({\n minWidth: '70px',\n textAlign: 'center',\n ...(parseFromValuesOrFunc(rest?.sx, theme) as any),\n })}\n >\n {column.getIsPinned() ? (\n <Tooltip title={localization.unpin}>\n <IconButton onClick={() => handlePinColumn(false)} size=\"small\">\n <PushPinIcon />\n </IconButton>\n </Tooltip>\n ) : (\n <>\n <Tooltip title={localization.pinToLeft}>\n <IconButton onClick={() => handlePinColumn('start')} size=\"small\">\n <PushPinIcon\n style={{\n transform: 'rotate(90deg)',\n }}\n />\n </IconButton>\n </Tooltip>\n <Tooltip title={localization.pinToRight}>\n <IconButton onClick={() => handlePinColumn('end')} size=\"small\">\n <PushPinIcon\n style={{\n transform: 'rotate(-90deg)',\n }}\n />\n </IconButton>\n </Tooltip>\n </>\n )}\n </Box>\n );\n};\n","import { Box, type BoxProps } from '@mui/material';\nimport { Button } from '@mui/material';\nimport { CircularProgress } from '@mui/material';\nimport { IconButton } from '@mui/material';\nimport { Tooltip } from '@mui/material';\n\nimport {\n type MRT_Row,\n type MRT_RowData,\n type MRT_TableInstance,\n} from '../../types';\nimport { parseFromValuesOrFunc } from '../../utils/utils';\n\nexport interface MRT_EditActionButtonsProps<TData extends MRT_RowData>\n extends BoxProps {\n row: MRT_Row<TData>;\n table: MRT_TableInstance<TData>;\n variant?: 'icon' | 'text';\n}\n\nexport const MRT_EditActionButtons = <TData extends MRT_RowData>({\n row,\n table,\n variant = 'icon',\n ...rest\n}: MRT_EditActionButtonsProps<TData>) => {\n const {\n options: {\n icons: { CancelIcon, SaveIcon },\n localization,\n onCreatingRowCancel,\n onCreatingRowSave,\n onEditingRowCancel,\n onEditingRowSave,\n },\n refs: { editInputRefs },\n setCreatingRow,\n setEditingRow,\n } = table;\n const { creatingRow, editingRow, isSaving } = table.state;\n\n const isCreating = creatingRow?.id === row.id;\n const isEditing = editingRow?.id === row.id;\n\n const handleCancel = () => {\n if (isCreating) {\n onCreatingRowCancel?.({ row, table });\n setCreatingRow(null);\n } else if (isEditing) {\n onEditingRowCancel?.({ row, table });\n setEditingRow(null);\n }\n row._valuesCache = {} as any; //reset values cache\n };\n\n const handleSubmitRow = () => {\n //look for auto-filled input values\n Object.values(editInputRefs.current ?? {})\n .filter((inputRef) => row.id === inputRef?.name?.split('_')?.[0])\n ?.forEach((input) => {\n if (\n input.value !== undefined &&\n Object.hasOwn(row?._valuesCache as object, input.name)\n ) {\n row._valuesCache[input.name] = input.value;\n }\n });\n if (isCreating)\n onCreatingRowSave?.({\n exitCreatingMode: () => setCreatingRow(null),\n row,\n table,\n values: row._valuesCache,\n });\n else if (isEditing) {\n onEditingRowSave?.({\n exitEditingMode: () => setEditingRow(null),\n row,\n table,\n values: row?._valuesCache,\n });\n }\n };\n\n return (\n <Box\n onClick={(e) => e.stopPropagation()}\n sx={(theme) => ({\n display: 'flex',\n gap: '0.75rem',\n ...(parseFromValuesOrFunc(rest?.sx, theme) as any),\n })}\n >\n {variant === 'icon' ? (\n <>\n <Tooltip title={localization.cancel}>\n <IconButton aria-label={localization.cancel} onClick={handleCancel}>\n <CancelIcon />\n </IconButton>\n </Tooltip>\n {((isCreating && onCreatingRowSave) ||\n (isEditing && onEditingRowSave)) && (\n <Tooltip title={localization.save}>\n <IconButton\n aria-label={localization.save}\n color=\"info\"\n disabled={isSaving}\n onClick={handleSubmitRow}\n >\n {isSaving ? <CircularProgress size={18} /> : <SaveIcon />}\n </IconButton>\n </Tooltip>\n )}\n </>\n ) : (\n <>\n <Button onClick={handleCancel} sx={{ minWidth: '100px' }}>\n {localization.cancel}\n </Button>\n <Button\n disabled={isSaving}\n onClick={handleSubmitRow}\n sx={{ minWidth: '100px' }}\n variant=\"contained\"\n >\n {isSaving && <CircularProgress color=\"inherit\" size={18} />}\n {localization.save}\n </Button>\n </>\n )}\n </Box>\n );\n};\n","import { IconButton, type IconButtonProps } from '@mui/material';\nimport { Tooltip } from '@mui/material';\n\nimport { type MRT_RowData, type MRT_TableInstance } from '../../types';\nimport { getCommonTooltipProps } from '../../utils/style.utils';\nimport { parseFromValuesOrFunc } from '../../utils/utils';\n\nexport interface MRT_ExpandAllButtonProps<TData extends MRT_RowData>\n extends IconButtonProps {\n table: MRT_TableInstance<TData>;\n}\n\nexport const MRT_ExpandAllButton = <TData extends MRT_RowData>({\n table,\n ...rest\n}: MRT_ExpandAllButtonProps<TData>) => {\n const {\n getCanSomeRowsExpand,\n getIsAllRowsExpanded,\n getIsSomeRowsExpanded,\n options: {\n icons: { KeyboardDoubleArrowDownIcon },\n localization,\n muiExpandAllButtonProps,\n renderDetailPanel,\n },\n toggleAllRowsExpanded,\n } = table;\n const { density, isLoading } = table.state;\n\n const iconButtonProps = {\n ...parseFromValuesOrFunc(muiExpandAllButtonProps, {\n table,\n }),\n ...rest,\n };\n\n const isAllRowsExpanded = getIsAllRowsExpanded();\n\n return (\n <Tooltip\n {...getCommonTooltipProps()}\n title={\n iconButtonProps?.title ??\n (isAllRowsExpanded ? localization.collapseAll : localization.expandAll)\n }\n >\n <span>\n <IconButton\n aria-label={localization.expandAll}\n disabled={\n isLoading || (!renderDetailPanel && !getCanSomeRowsExpand())\n }\n onClick={() => toggleAllRowsExpanded(!isAllRowsExpanded)}\n {...iconButtonProps}\n sx={(theme) => ({\n height: density === 'compact' ? '1.75rem' : '2.25rem',\n mt: density !== 'compact' ? '-0.25rem' : undefined,\n width: density === 'compact' ? '1.75rem' : '2.25rem',\n ...(parseFromValuesOrFunc(iconButtonProps?.sx, theme) as any),\n })}\n title={undefined}\n >\n {iconButtonProps?.children ?? (\n <KeyboardDoubleArrowDownIcon\n style={{\n transform: `rotate(${\n isAllRowsExpanded ? -180 : getIsSomeRowsExpanded() ? -90 : 0\n }deg)`,\n transition: 'transform 150ms',\n }}\n />\n )}\n </IconButton>\n </span>\n </Tooltip>\n );\n};\n","import { IconButton, type IconButtonProps } from '@mui/material';\nimport { Tooltip } from '@mui/material';\nimport { useTheme } from '@mui/material/styles';\nimport { type MouseEvent } from 'react';\n\nimport {\n type MRT_Row,\n type MRT_RowData,\n type MRT_TableInstance,\n} from '../../types';\nimport { getCommonTooltipProps } from '../../utils/style.utils';\nimport { parseFromValuesOrFunc } from '../../utils/utils';\n\nexport interface MRT_ExpandButtonProps<TData extends MRT_RowData>\n extends IconButtonProps {\n row: MRT_Row<TData>;\n staticRowIndex?: number;\n table: MRT_TableInstance<TData>;\n}\n\nexport const MRT_ExpandButton = <TData extends MRT_RowData>({\n row,\n staticRowIndex,\n table,\n}: MRT_ExpandButtonProps<TData>) => {\n const theme = useTheme();\n const {\n options: {\n icons: { ExpandMoreIcon },\n localization,\n muiExpandButtonProps,\n positionExpandColumn,\n renderDetailPanel,\n },\n } = table;\n const { density } = table.state;\n\n const iconButtonProps = parseFromValuesOrFunc(muiExpandButtonProps, {\n row,\n staticRowIndex,\n table,\n });\n\n const canExpand = row.getCanExpand();\n const isExpanded = row.getIsExpanded();\n\n const handleToggleExpand = (event: MouseEvent<HTMLButtonElement>) => {\n event.stopPropagation();\n row.toggleExpanded();\n iconButtonProps?.onClick?.(event);\n };\n\n const detailPanel = !!renderDetailPanel?.({ row, table });\n\n return (\n <Tooltip\n disableHoverListener={!canExpand && !detailPanel}\n {...getCommonTooltipProps()}\n title={\n iconButtonProps?.title ??\n (isExpanded ? localization.collapse : localization.expand)\n }\n >\n <span>\n <IconButton\n aria-label={localization.expand}\n disabled={!canExpand && !detailPanel}\n {...iconButtonProps}\n onClick={handleToggleExpand}\n sx={(theme) => ({\n height: density === 'compact' ? '1.75rem' : '2.25rem',\n opacity: !canExpand && !detailPanel ? 0.3 : 1,\n [theme.direction === 'rtl' || positionExpandColumn === 'last'\n ? 'mr'\n : 'ml']: `${row.depth * 16}px`,\n width: density === 'compact' ? '1.75rem' : '2.25rem',\n ...(parseFromValuesOrFunc(iconButtonProps?.sx, theme) as any),\n })}\n title={undefined}\n >\n {iconButtonProps?.children ?? (\n <ExpandMoreIcon\n style={{\n transform: `rotate(${\n !canExpand && !renderDetailPanel\n ? positionExpandColumn === 'last' ||\n theme.direction === 'rtl'\n ? 90\n : -90\n : isExpanded\n ? -180\n : 0\n }deg)`,\n transition: 'transform 150ms',\n }}\n />\n )}\n </IconButton>\n </span>\n </Tooltip>\n );\n};\n","import { useMemo } from 'react';\n\nimport {\n type DropdownOption,\n type MRT_Column,\n type MRT_ColumnDef,\n type MRT_ColumnOrderState,\n type MRT_DefinedColumnDef,\n type MRT_DefinedTableOptions,\n type MRT_FilterOption,\n type MRT_Header,\n type MRT_RowData,\n type MRT_TableInstance,\n} from '../types';\n\nexport const getSubColumnDefs = <TData extends MRT_RowData>(\n columnDef: MRT_ColumnDef<TData>,\n): ReadonlyArray<MRT_ColumnDef<TData>> | undefined =>\n 'columns' in columnDef ? columnDef.columns : undefined;\n\nexport const getColumnId = <TData extends MRT_RowData>(\n columnDef: MRT_ColumnDef<TData>,\n): string =>\n columnDef.id ??\n ('accessorKey' in columnDef\n ? columnDef.accessorKey?.toString?.()\n : undefined) ??\n columnDef.header;\n\nexport const getAllLeafColumnDefs = <TData extends MRT_RowData>(\n columns: ReadonlyArray<MRT_ColumnDef<TData>>,\n): MRT_ColumnDef<TData>[] => {\n const allLeafColumnDefs: MRT_ColumnDef<TData>[] = [];\n const getLeafColumns = (cols: ReadonlyArray<MRT_ColumnDef<TData>>) => {\n cols.forEach((col) => {\n const subColumnDefs = getSubColumnDefs(col);\n if (subColumnDefs) {\n getLeafColumns(subColumnDefs);\n } else {\n allLeafColumnDefs.push(col);\n }\n });\n };\n getLeafColumns(columns);\n return allLeafColumnDefs;\n};\n\nexport const prepareColumns = <TData extends MRT_RowData>({\n columnDefs,\n tableOptions,\n}: {\n columnDefs: MRT_ColumnDef<TData>[];\n tableOptions: MRT_DefinedTableOptions<TData>;\n}): MRT_DefinedColumnDef<TData>[] => {\n const {\n aggregationFns = {},\n defaultDisplayColumn,\n filterFns = {},\n sortFns = {},\n state: { columnFilterFns = {} } = {},\n } = tableOptions;\n return columnDefs.map((columnDef) => {\n //assign columnId\n if (!columnDef.id) columnDef.id = getColumnId(columnDef);\n //assign columnDefType\n if (!columnDef.columnDefType) columnDef.columnDefType = 'data';\n const subColumnDefs = getSubColumnDefs(columnDef);\n if (subColumnDefs?.length && 'columns' in columnDef) {\n columnDef.columnDefType = 'group';\n //recursively prepare columns if this is a group column\n columnDef.columns = prepareColumns({\n columnDefs: [...subColumnDefs],\n tableOptions,\n });\n } else if (columnDef.columnDefType === 'data') {\n //assign aggregationFns if multiple aggregationFns are provided\n if (Array.isArray(columnDef.aggregationFn)) {\n const aggFns = columnDef.aggregationFn as string[];\n columnDef.aggregationFn = {\n aggregate: (context) =>\n aggFns.map((fn) => aggregationFns[fn]?.aggregate(context)),\n };\n }\n\n //assign filterFns\n if (Object.keys(filterFns).includes(columnFilterFns[columnDef.id])) {\n columnDef.filterFn =\n filterFns[columnFilterFns[columnDef.id]] ?? filterFns.fuzzy;\n (columnDef as MRT_DefinedColumnDef<TData>)._filterFn =\n columnFilterFns[columnDef.id];\n }\n\n //assign sortFns\n if (Object.keys(sortFns).includes(columnDef.sortFn as string)) {\n columnDef.sortFn = sortFns[columnDef.sortFn as string];\n }\n } else if (columnDef.columnDefType === 'display') {\n columnDef = {\n ...(defaultDisplayColumn as MRT_ColumnDef<TData>),\n ...columnDef,\n };\n }\n return columnDef;\n }) as MRT_DefinedColumnDef<TData>[];\n};\n\nexport const reorderColumn = <TData extends MRT_RowData>(\n draggedColumn: MRT_Column<TData>,\n targetColumn: MRT_Column<TData>,\n columnOrder: MRT_ColumnOrderState,\n): MRT_ColumnOrderState => {\n if (draggedColumn.getCanPin()) {\n draggedColumn.pin(targetColumn.getIsPinned());\n }\n const newColumnOrder = [...columnOrder];\n newColumnOrder.splice(\n newColumnOrder.indexOf(targetColumn.id),\n 0,\n newColumnOrder.splice(newColumnOrder.indexOf(draggedColumn.id), 1)[0],\n );\n return newColumnOrder;\n};\n\nexport const getDefaultColumnFilterFn = <TData extends MRT_RowData>(\n columnDef: Pick<MRT_ColumnDef<TData>, 'filterVariant'>,\n): MRT_FilterOption => {\n const { filterVariant } = columnDef;\n if (filterVariant === 'multi-select') return 'arrIncludesSome';\n if (filterVariant?.includes('range')) return 'betweenInclusive';\n if (filterVariant === 'select' || filterVariant === 'checkbox')\n return 'equals';\n return 'fuzzy';\n};\n\nexport const getColumnFilterInfo = <TData extends MRT_RowData>({\n header,\n table,\n}: {\n header: MRT_Header<TData>;\n table: MRT_TableInstance<TData>;\n}) => {\n const {\n options: { columnFilterModeOptions },\n } = table;\n const { column } = header;\n const { columnDef } = column;\n const { filterVariant } = columnDef;\n\n const isDateFilter = !!(\n filterVariant?.startsWith('date') || filterVariant?.startsWith('time')\n );\n const isAutocompleteFilter = filterVariant === 'autocomplete';\n const currentFilterOption =\n columnDef._filterFn ?? getDefaultColumnFilterFn(columnDef);\n\n const isRangeFilter =\n filterVariant?.includes('range') ||\n ['between', 'betweenInclusive', 'inNumberRange'].includes(\n currentFilterOption,\n );\n const isSelectFilter = filterVariant === 'select';\n const isMultiSelectFilter = filterVariant === 'multi-select';\n const isTextboxFilter =\n ['autocomplete', 'text'].includes(filterVariant!) ||\n (!isSelectFilter && !isMultiSelectFilter);\n\n const allowedColumnFilterOptions =\n columnDef?.columnFilterModeOptions ?? columnFilterModeOptions;\n\n const facetedUniqueValues = column.getFacetedUniqueValues();\n\n return {\n allowedColumnFilterOptions,\n currentFilterOption,\n facetedUniqueValues,\n isAutocompleteFilter,\n isDateFilter,\n isMultiSelectFilter,\n isRangeFilter,\n isSelectFilter,\n isTextboxFilter,\n } as const;\n};\n\nexport const useDropdownOptions = <TData extends MRT_RowData>({\n header,\n table,\n}: {\n header: MRT_Header<TData>;\n table: MRT_TableInstance<TData>;\n}): DropdownOption[] | undefined => {\n const { column } = header;\n const { columnDef } = column;\n const {\n facetedUniqueValues,\n isAutocompleteFilter,\n isMultiSelectFilter,\n isSelectFilter,\n } = getColumnFilterInfo({ header, table });\n\n return useMemo<DropdownOption[] | undefined>(\n () =>\n columnDef.filterSelectOptions ??\n ((isSelectFilter || isMultiSelectFilter || isAutocompleteFilter) &&\n facetedUniqueValues\n ? Array.from(facetedUniqueValues.keys())\n .filter((value) => value !== null && value !== undefined)\n .sort((a, b) => a.localeCompare(b))\n : undefined),\n [\n columnDef.filterSelectOptions,\n facetedUniqueValues,\n isMultiSelectFilter,\n isSelectFilter,\n ],\n );\n};\n","import {\n type MRT_DefinedTableOptions,\n type MRT_DisplayColumnIds,\n type MRT_Localization,\n type MRT_RowData,\n type MRT_StatefulTableOptions,\n} from '../types';\nimport { getAllLeafColumnDefs, getColumnId } from './column.utils';\n\nexport function defaultDisplayColumnProps<TData extends MRT_RowData>({\n header,\n id,\n size,\n tableOptions,\n}: {\n header?: keyof MRT_Localization;\n id: MRT_DisplayColumnIds;\n size: number;\n tableOptions: MRT_DefinedTableOptions<TData>;\n}) {\n const { defaultDisplayColumn, displayColumnDefOptions, localization } =\n tableOptions;\n return {\n ...defaultDisplayColumn,\n header: header ? localization[header]! : '',\n size,\n ...displayColumnDefOptions?.[id],\n id,\n } as const;\n}\n\nexport const showRowPinningColumn = <TData extends MRT_RowData>(\n tableOptions: MRT_StatefulTableOptions<TData>,\n): boolean => {\n const { enableRowPinning, rowPinningDisplayMode } = tableOptions;\n return !!(enableRowPinning && !rowPinningDisplayMode?.startsWith('select'));\n};\n\nexport const showRowDragColumn = <TData extends MRT_RowData>(\n tableOptions: MRT_StatefulTableOptions<TData>,\n): boolean => {\n const { enableRowDragging, enableRowOrdering } = tableOptions;\n return !!(enableRowDragging || enableRowOrdering);\n};\n\nexport const showRowExpandColumn = <TData extends MRT_RowData>(\n tableOptions: MRT_StatefulTableOptions<TData>,\n): boolean => {\n const {\n enableExpanding,\n enableGrouping,\n renderDetailPanel,\n state: { grouping },\n } = tableOptions;\n return !!(\n enableExpanding ||\n (enableGrouping && grouping?.length) ||\n renderDetailPanel\n );\n};\n\nexport const showRowActionsColumn = <TData extends MRT_RowData>(\n tableOptions: MRT_StatefulTableOptions<TData>,\n): boolean => {\n const {\n createDisplayMode,\n editDisplayMode,\n enableEditing,\n enableRowActions,\n state: { creatingRow },\n } = tableOptions;\n return !!(\n enableRowActions ||\n (creatingRow && createDisplayMode === 'row') ||\n (enableEditing && ['modal', 'row'].includes(editDisplayMode ?? ''))\n );\n};\n\nexport const showRowSelectionColumn = <TData extends MRT_RowData>(\n tableOptions: MRT_StatefulTableOptions<TData>,\n): boolean => !!tableOptions.enableRowSelection;\n\nexport const showRowNumbersColumn = <TData extends MRT_RowData>(\n tableOptions: MRT_StatefulTableOptions<TData>,\n): boolean => !!tableOptions.enableRowNumbers;\n\nexport const showRowSpacerColumn = <TData extends MRT_RowData>(\n tableOptions: MRT_StatefulTableOptions<TData>,\n): boolean => tableOptions.layoutMode === 'grid-no-grow';\n\nexport const getLeadingDisplayColumnIds = <TData extends MRT_RowData>(\n tableOptions: MRT_StatefulTableOptions<TData>,\n) =>\n [\n showRowPinningColumn(tableOptions) && 'mrt-row-pin',\n showRowDragColumn(tableOptions) && 'mrt-row-drag',\n tableOptions.positionActionsColumn === 'first' &&\n showRowActionsColumn(tableOptions) &&\n 'mrt-row-actions',\n tableOptions.positionExpandColumn === 'first' &&\n showRowExpandColumn(tableOptions) &&\n 'mrt-row-expand',\n showRowSelectionColumn(tableOptions) && 'mrt-row-select',\n showRowNumbersColumn(tableOptions) && 'mrt-row-numbers',\n ].filter(Boolean) as MRT_DisplayColumnIds[];\n\nexport const getTrailingDisplayColumnIds = <TData extends MRT_RowData>(\n tableOptions: MRT_StatefulTableOptions<TData>,\n) =>\n [\n tableOptions.positionActionsColumn === 'last' &&\n showRowActionsColumn(tableOptions) &&\n 'mrt-row-actions',\n tableOptions.positionExpandColumn === 'last' &&\n showRowExpandColumn(tableOptions) &&\n 'mrt-row-expand',\n showRowSpacerColumn(tableOptions) && 'mrt-row-spacer',\n ].filter(Boolean) as MRT_DisplayColumnIds[];\n\nexport const getDefaultColumnOrderIds = <TData extends MRT_RowData>(\n tableOptions: MRT_StatefulTableOptions<TData>,\n reset = false,\n) => {\n const {\n state: { columnOrder: currentColumnOrderIds = [] },\n } = tableOptions;\n\n const leadingDisplayColIds: string[] =\n getLeadingDisplayColumnIds(tableOptions);\n const trailingDisplayColIds: string[] =\n getTrailingDisplayColumnIds(tableOptions);\n\n const defaultColumnDefIds = getAllLeafColumnDefs(tableOptions.columns).map(\n (columnDef) => getColumnId(columnDef),\n );\n\n let allLeafColumnDefIds = reset\n ? defaultColumnDefIds\n : Array.from(new Set([...currentColumnOrderIds, ...defaultColumnDefIds]));\n\n allLeafColumnDefIds = allLeafColumnDefIds.filter(\n (colId) =>\n !leadingDisplayColIds.includes(colId) &&\n !trailingDisplayColIds.includes(colId),\n );\n\n return [\n ...leadingDisplayColIds,\n ...allLeafColumnDefIds,\n ...trailingDisplayColIds,\n ];\n};\n","import { Box } from '@mui/material';\nimport { FormControlLabel } from '@mui/material';\nimport { MenuItem, type MenuItemProps } from '@mui/material';\nimport { Switch } from '@mui/material';\nimport { Tooltip } from '@mui/material';\nimport { Typography } from '@mui/material';\nimport {\n type Dispatch,\n type DragEvent,\n type SetStateAction,\n useRef,\n useState,\n} from 'react';\n\nimport {\n type MRT_Column,\n type MRT_RowData,\n type MRT_TableInstance,\n} from '../../types';\nimport { reorderColumn } from '../../utils/column.utils';\nimport { getCommonTooltipProps } from '../../utils/style.utils';\nimport { parseFromValuesOrFunc } from '../../utils/utils';\nimport { MRT_ColumnPinningButtons } from '../buttons/MRT_ColumnPinningButtons';\nimport { MRT_GrabHandleButton } from '../buttons/MRT_GrabHandleButton';\n\nexport interface MRT_ShowHideColumnsMenuItemsProps<TData extends MRT_RowData>\n extends MenuItemProps {\n allColumns: MRT_Column<TData>[];\n column: MRT_Column<TData>;\n hoveredColumn: MRT_Column<TData> | null;\n isNestedColumns: boolean;\n setHoveredColumn: Dispatch<SetStateAction<MRT_Column<TData> | null>>;\n table: MRT_TableInstance<TData>;\n}\n\nexport const MRT_ShowHideColumnsMenuItems = <TData extends MRT_RowData>({\n allColumns,\n column,\n hoveredColumn,\n isNestedColumns,\n setHoveredColumn,\n table,\n ...rest\n}: MRT_ShowHideColumnsMenuItemsProps<TData>) => {\n const {\n options: {\n enableColumnOrdering,\n enableColumnPinning,\n enableHiding,\n localization,\n mrtTheme: { draggingBorderColor },\n },\n setColumnOrder,\n setColumnPinning,\n } = table;\n const { columnOrder } = table.state;\n const { columnDef } = column;\n const { columnDefType } = columnDef;\n\n const switchChecked = column.getIsVisible();\n\n const handleToggleColumnHidden = (column: MRT_Column<TData>) => {\n if (columnDefType === 'group') {\n column?.columns?.forEach?.((childColumn: MRT_Column<TData>) => {\n childColumn.toggleVisibility(!switchChecked);\n });\n } else {\n column.toggleVisibility();\n }\n };\n\n const menuItemRef = useRef<HTMLElement>(null);\n\n const [isDragging, setIsDragging] = useState(false);\n\n const handleDragStart = (e: DragEvent<HTMLButtonElement>) => {\n setIsDragging(true);\n try {\n e.dataTransfer.setDragImage(menuItemRef.current as HTMLElement, 0, 0);\n } catch (e) {\n console.error(e);\n }\n };\n\n const handleDragEnd = (_e: DragEvent<HTMLButtonElement>) => {\n setIsDragging(false);\n setHoveredColumn(null);\n if (hoveredColumn) {\n const reorderedColumns = reorderColumn(\n column,\n hoveredColumn,\n columnOrder,\n );\n setColumnOrder(reorderedColumns);\n setColumnPinning(({ end = [], start = [] }) => ({\n end: reorderedColumns.filter((header) => end.includes(header)),\n start: reorderedColumns.filter((header) => start.includes(header)),\n }));\n }\n };\n\n const handleDragEnter = (_e: DragEvent) => {\n if (!isDragging && columnDef.enableColumnOrdering !== false) {\n setHoveredColumn(column);\n }\n };\n\n if (!columnDef.header || columnDef.visibleInShowHideMenu === false) {\n return null;\n }\n\n return (\n <>\n <MenuItem\n disableRipple\n onDragEnter={handleDragEnter}\n ref={menuItemRef as any}\n {...rest}\n sx={(theme) => ({\n alignItems: 'center',\n justifyContent: 'flex-start',\n my: 0,\n opacity: isDragging ? 0.5 : 1,\n outline: isDragging\n ? `2px dashed ${theme.palette.grey[500]}`\n : hoveredColumn?.id === column.id\n ? `2px dashed ${draggingBorderColor}`\n : 'none',\n outlineOffset: '-2px',\n pl: `${(column.depth + 0.5) * 2}rem`,\n py: '6px',\n ...(parseFromValuesOrFunc(rest?.sx, theme) as any),\n })}\n >\n <Box\n sx={{\n display: 'flex',\n flexWrap: 'nowrap',\n gap: '8px',\n }}\n >\n {columnDefType !== 'group' &&\n enableColumnOrdering &&\n !isNestedColumns &&\n (columnDef.enableColumnOrdering !== false ? (\n <MRT_GrabHandleButton\n onDragEnd={handleDragEnd}\n onDragStart={handleDragStart}\n table={table}\n />\n ) : (\n <Box sx={{ width: '28px' }} />\n ))}\n {enableColumnPinning &&\n (column.getCanPin() ? (\n <MRT_ColumnPinningButtons column={column} table={table} />\n ) : (\n <Box sx={{ width: '70px' }} />\n ))}\n {enableHiding ? (\n <FormControlLabel\n checked={switchChecked}\n control={\n <Tooltip\n {...getCommonTooltipProps()}\n title={localization.toggleVisibility}\n >\n <Switch />\n </Tooltip>\n }\n disabled={!column.getCanHide()}\n label={columnDef.header}\n onChange={() => handleToggleColumnHidden(column)}\n slotProps={{\n typography: {\n sx: {\n mb: 0,\n opacity: columnDefType !== 'display' ? 1 : 0.5,\n },\n },\n }}\n />\n ) : (\n <Typography sx={{ alignSelf: 'center' }}>\n {columnDef.header}\n </Typography>\n )}\n </Box>\n </MenuItem>\n {column.columns?.map((c: MRT_Column<TData>, i) => (\n <MRT_ShowHideColumnsMenuItems\n allColumns={allColumns}\n column={c}\n hoveredColumn={hoveredColumn}\n isNestedColumns={isNestedColumns}\n key={`${i}-${c.id}`}\n setHoveredColumn={setHoveredColumn}\n table={table}\n />\n ))}\n </>\n );\n};\n","import { Box } from '@mui/material';\nimport { Button } from '@mui/material';\nimport { Divider } from '@mui/material';\nimport { Menu, type MenuProps } from '@mui/material';\nimport { useMemo, useState } from 'react';\n\nimport {\n type MRT_Column,\n type MRT_RowData,\n type MRT_TableInstance,\n type MRT_VisibilityState\n} from '../../types';\nimport { getDefaultColumnOrderIds } from '../../utils/displayColumn.utils';\nimport { MRT_ShowHideColumnsMenuItems } from './MRT_ShowHideColumnsMenuItems';\n\nexport interface MRT_ShowHideColumnsMenuProps<TData extends MRT_RowData>\n extends Partial<MenuProps> {\n anchorEl: HTMLElement | null;\n isSubMenu?: boolean;\n setAnchorEl: (anchorEl: HTMLElement | null) => void;\n table: MRT_TableInstance<TData>;\n}\n\nexport const MRT_ShowHideColumnsMenu = <TData extends MRT_RowData>({\n anchorEl,\n setAnchorEl,\n table,\n ...rest\n}: MRT_ShowHideColumnsMenuProps<TData>) => {\n const {\n getAllColumns,\n getAllLeafColumns,\n getCenterLeafColumns,\n getIsAllColumnsVisible,\n getIsSomeColumnsPinned,\n getIsSomeColumnsVisible,\n getLeftLeafColumns,\n getRightLeafColumns,\n initialState,\n options: {\n enableColumnOrdering,\n enableColumnPinning,\n enableHiding,\n localization,\n mrtTheme: { menuBackgroundColor },\n },\n } = table;\n const { columnOrder, columnPinning, density } = table.state;\n\n const handleToggleAllColumns = (value?: boolean) => {\n const updates =\n getAllLeafColumns()\n .filter((column) => column.columnDef.enableHiding !== false)\n .reduce((acc, column) => {\n acc[column.id] = value ?? !column.getIsVisible()\n return acc;\n }, {} as MRT_VisibilityState);\n\n table.setColumnVisibility((old) => ({ ...old, ...updates }));\n };\n\n const allColumns = useMemo(() => {\n const columns = getAllColumns();\n if (\n columnOrder.length > 0 &&\n !columns.some((col) => col.columnDef.columnDefType === 'group')\n ) {\n return [\n ...getLeftLeafColumns(),\n ...Array.from(new Set(columnOrder)).map((colId) =>\n getCenterLeafColumns().find((col) => col?.id === colId),\n ),\n ...getRightLeafColumns(),\n ].filter(Boolean);\n }\n return columns;\n }, [\n columnOrder,\n columnPinning,\n getAllColumns(),\n getCenterLeafColumns(),\n getLeftLeafColumns(),\n getRightLeafColumns(),\n ]) as MRT_Column<TData>[];\n\n const isNestedColumns = allColumns.some(\n (col) => col.columnDef.columnDefType === 'group',\n );\n\n const hasColumnOrderChanged = useMemo(\n () =>\n columnOrder.length !== initialState.columnOrder.length ||\n !columnOrder.every(\n (column, index) => column === initialState.columnOrder[index],\n ),\n\n [columnOrder, initialState.columnOrder],\n );\n\n const [hoveredColumn, setHoveredColumn] = useState<MRT_Column<TData> | null>(\n null,\n );\n\n return (\n <Menu\n anchorEl={anchorEl}\n disableScrollLock\n onClose={() => setAnchorEl(null)}\n open={!!anchorEl}\n slotProps={{\n list: {\n dense: density === 'compact',\n sx: {\n backgroundColor: menuBackgroundColor,\n },\n },\n }}\n {...rest}\n >\n <Box\n sx={{\n display: 'flex',\n justifyContent: 'space-between',\n p: '0.5rem',\n pt: 0,\n }}\n >\n {enableHiding && (\n <Button\n disabled={!getIsSomeColumnsVisible()}\n onClick={() => handleToggleAllColumns(false)}\n >\n {localization.hideAll}\n </Button>\n )}\n {enableColumnOrdering && (\n <Button\n disabled={!hasColumnOrderChanged}\n onClick={() =>\n table.setColumnOrder(\n getDefaultColumnOrderIds(table.options, true),\n )\n }\n >\n {localization.resetOrder}\n </Button>\n )}\n {enableColumnPinning && (\n <Button\n disabled={!getIsSomeColumnsPinned()}\n onClick={() => table.resetColumnPinning(true)}\n >\n {localization.unpinAll}\n </Button>\n )}\n {enableHiding && (\n <Button\n disabled={getIsAllColumnsVisible()}\n onClick={() => handleToggleAllColumns(true)}\n >\n {localization.showAll}\n </Button>\n )}\n </Box>\n <Divider />\n {allColumns.map((column, index) => (\n <MRT_ShowHideColumnsMenuItems\n allColumns={allColumns}\n column={column}\n hoveredColumn={hoveredColumn}\n isNestedColumns={isNestedColumns}\n key={`${index}-${column.id}`}\n setHoveredColumn={setHoveredColumn}\n table={table}\n />\n ))}\n </Menu>\n );\n};\n","import { IconButton, type IconButtonProps } from '@mui/material';\nimport { Tooltip } from '@mui/material';\nimport { type MouseEvent, useState } from 'react';\n\nimport { type MRT_RowData, type MRT_TableInstance } from '../../types';\nimport { MRT_ShowHideColumnsMenu } from '../menus/MRT_ShowHideColumnsMenu';\n\nexport interface MRT_ShowHideColumnsButtonProps<TData extends MRT_RowData>\n extends IconButtonProps {\n table: MRT_TableInstance<TData>;\n}\n\nexport const MRT_ShowHideColumnsButton = <TData extends MRT_RowData>({\n table,\n ...rest\n}: MRT_ShowHideColumnsButtonProps<TData>) => {\n const {\n options: {\n icons: { ViewColumnIcon },\n localization,\n },\n } = table;\n\n const [anchorEl, setAnchorEl] = useState<HTMLElement | null>(null);\n\n const handleClick = (event: MouseEvent<HTMLElement>) => {\n setAnchorEl(event.currentTarget);\n };\n\n return (\n <>\n <Tooltip title={rest?.title ?? localization.showHideColumns}>\n <IconButton\n aria-label={localization.showHideColumns}\n onClick={handleClick}\n {...rest}\n title={undefined}\n >\n <ViewColumnIcon />\n </IconButton>\n </Tooltip>\n {anchorEl && (\n <MRT_ShowHideColumnsMenu\n anchorEl={anchorEl}\n setAnchorEl={setAnchorEl}\n table={table}\n />\n )}\n </>\n );\n};\n","import { IconButton, type IconButtonProps } from '@mui/material';\nimport { Tooltip } from '@mui/material';\n\nimport { type MRT_RowData, type MRT_TableInstance } from '../../types';\n\nexport interface MRT_ToggleDensePaddingButtonProps<TData extends MRT_RowData>\n extends IconButtonProps {\n table: MRT_TableInstance<TData>;\n}\n\nexport const MRT_ToggleDensePaddingButton = <TData extends MRT_RowData>({\n table,\n ...rest\n}: MRT_ToggleDensePaddingButtonProps<TData>) => {\n const {\n options: {\n icons: { DensityLargeIcon, DensityMediumIcon, DensitySmallIcon },\n localization,\n },\n setDensity,\n } = table;\n const { density } = table.state;\n\n const handleToggleDensePadding = () => {\n const nextDensity =\n density === 'comfortable'\n ? 'compact'\n : density === 'compact'\n ? 'spacious'\n : 'comfortable';\n setDensity(nextDensity);\n };\n\n return (\n <Tooltip title={rest?.title ?? localization.toggleDensity}>\n <IconButton\n aria-label={localization.toggleDensity}\n onClick={handleToggleDensePadding}\n {...rest}\n title={undefined}\n >\n {density === 'compact' ? (\n <DensitySmallIcon />\n ) : density === 'comfortable' ? (\n <DensityMediumIcon />\n ) : (\n <DensityLargeIcon />\n )}\n </IconButton>\n </Tooltip>\n );\n};\n","import { IconButton, type IconButtonProps } from '@mui/material';\nimport { Tooltip } from '@mui/material';\n\nimport { type MRT_RowData, type MRT_TableInstance } from '../../types';\n\nexport interface MRT_ToggleFiltersButtonProps<TData extends MRT_RowData>\n extends IconButtonProps {\n table: MRT_TableInstance<TData>;\n}\n\nexport const MRT_ToggleFiltersButton = <TData extends MRT_RowData>({\n table,\n ...rest\n}: MRT_ToggleFiltersButtonProps<TData>) => {\n const {\n options: {\n icons: { FilterListIcon, FilterListOffIcon },\n localization,\n },\n setShowColumnFilters,\n } = table;\n const { showColumnFilters } = table.state;\n\n const handleToggleShowFilters = () => {\n setShowColumnFilters(!showColumnFilters);\n };\n\n return (\n <Tooltip title={rest?.title ?? localization.showHideFilters}>\n <IconButton\n aria-label={localization.showHideFilters}\n onClick={handleToggleShowFilters}\n {...rest}\n title={undefined}\n >\n {showColumnFilters ? <FilterListOffIcon /> : <FilterListIcon />}\n </IconButton>\n </Tooltip>\n );\n};\n","import { IconButton, type IconButtonProps } from '@mui/material';\nimport { Tooltip } from '@mui/material';\nimport { useState } from 'react';\n\nimport { type MRT_RowData, type MRT_TableInstance } from '../../types';\n\nexport interface MRT_ToggleFullScreenButtonProps<TData extends MRT_RowData>\n extends IconButtonProps {\n table: MRT_TableInstance<TData>;\n}\n\nexport const MRT_ToggleFullScreenButton = <TData extends MRT_RowData>({\n table,\n ...rest\n}: MRT_ToggleFullScreenButtonProps<TData>) => {\n const {\n options: {\n icons: { FullscreenExitIcon, FullscreenIcon },\n localization,\n },\n setIsFullScreen,\n } = table;\n const { isFullScreen } = table.state;\n\n const [tooltipOpened, setTooltipOpened] = useState(false);\n\n const handleToggleFullScreen = () => {\n setTooltipOpened(false);\n setIsFullScreen(!isFullScreen);\n };\n\n return (\n <Tooltip\n open={tooltipOpened}\n title={rest?.title ?? localization.toggleFullScreen}\n >\n <IconButton\n aria-label={localization.toggleFullScreen}\n onBlur={() => setTooltipOpened(false)}\n onClick={handleToggleFullScreen}\n onFocus={() => setTooltipOpened(true)}\n onMouseEnter={() => setTooltipOpened(true)}\n onMouseLeave={() => setTooltipOpened(false)}\n {...rest}\n title={undefined}\n >\n {isFullScreen ? <FullscreenExitIcon /> : <FullscreenIcon />}\n </IconButton>\n </Tooltip>\n );\n};\n","import { IconButton, type IconButtonProps } from '@mui/material';\nimport { Tooltip } from '@mui/material';\n\nimport { type MRT_RowData, type MRT_TableInstance } from '../../types';\n\nexport interface MRT_ToggleGlobalFilterButtonProps<TData extends MRT_RowData>\n extends IconButtonProps {\n table: MRT_TableInstance<TData>;\n}\n\nexport const MRT_ToggleGlobalFilterButton = <TData extends MRT_RowData>({\n table,\n ...rest\n}: MRT_ToggleGlobalFilterButtonProps<TData>) => {\n const {\n options: {\n icons: { SearchIcon, SearchOffIcon },\n\n localization,\n },\n refs: { searchInputRef },\n setShowGlobalFilter,\n } = table;\n const { globalFilter, showGlobalFilter } = table.state;\n\n const handleToggleSearch = () => {\n setShowGlobalFilter(!showGlobalFilter);\n queueMicrotask(() => searchInputRef.current?.focus());\n };\n\n return (\n <Tooltip title={rest?.title ?? localization.showHideSearch}>\n <span>\n <IconButton\n aria-label={rest?.title ?? localization.showHideSearch}\n disabled={!!globalFilter && showGlobalFilter}\n onClick={handleToggleSearch}\n {...rest}\n title={undefined}\n >\n {showGlobalFilter ? <SearchOffIcon /> : <SearchIcon />}\n </IconButton>\n </span>\n </Tooltip>\n );\n};\n","import { Box } from '@mui/material';\nimport { IconButton } from '@mui/material';\nimport { ListItemIcon } from '@mui/material';\nimport { MenuItem, type MenuItemProps } from '@mui/material';\nimport { type ReactNode } from 'react';\n\nimport { type MRT_RowData, type MRT_TableInstance } from '../../types';\n\nexport interface MRT_ActionMenuItemProps<TData extends MRT_RowData>\n extends MenuItemProps {\n icon: ReactNode;\n label: string;\n onOpenSubMenu?: MenuItemProps['onClick'] | MenuItemProps['onMouseEnter'];\n table: MRT_TableInstance<TData>;\n}\n\nexport const MRT_ActionMenuItem = <TData extends MRT_RowData>({\n icon,\n label,\n onOpenSubMenu,\n table,\n ...rest\n}: MRT_ActionMenuItemProps<TData>) => {\n const {\n options: {\n icons: { ArrowRightIcon },\n },\n } = table;\n\n return (\n <MenuItem\n sx={{\n alignItems: 'center',\n justifyContent: 'space-between',\n minWidth: '120px',\n my: 0,\n py: '6px',\n }}\n tabIndex={0}\n {...rest}\n >\n <Box\n sx={{\n alignItems: 'center',\n display: 'flex',\n }}\n >\n <ListItemIcon>{icon}</ListItemIcon>\n {label}\n </Box>\n {onOpenSubMenu && (\n <IconButton\n onClick={onOpenSubMenu as any}\n onMouseEnter={onOpenSubMenu as any}\n size=\"small\"\n sx={{ p: 0 }}\n >\n <ArrowRightIcon />\n </IconButton>\n )}\n </MenuItem>\n );\n};\n","import { Menu, type MenuProps } from '@mui/material';\nimport { type MouseEvent, type ReactNode, useMemo } from 'react';\n\nimport {\n type MRT_Row,\n type MRT_RowData,\n type MRT_TableInstance,\n} from '../../types';\nimport { parseFromValuesOrFunc } from '../../utils/utils';\nimport { MRT_ActionMenuItem } from './MRT_ActionMenuItem';\n\nexport interface MRT_RowActionMenuProps<TData extends MRT_RowData>\n extends Partial<MenuProps> {\n anchorEl: HTMLElement | null;\n handleEdit: (event: MouseEvent) => void;\n row: MRT_Row<TData>;\n setAnchorEl: (anchorEl: HTMLElement | null) => void;\n staticRowIndex?: number;\n table: MRT_TableInstance<TData>;\n}\n\nexport const MRT_RowActionMenu = <TData extends MRT_RowData>({\n anchorEl,\n handleEdit,\n row,\n setAnchorEl,\n staticRowIndex,\n table,\n ...rest\n}: MRT_RowActionMenuProps<TData>) => {\n const {\n options: {\n editDisplayMode,\n enableEditing,\n icons: { EditIcon },\n localization,\n mrtTheme: { menuBackgroundColor },\n renderRowActionMenuItems,\n },\n } = table;\n const { density } = table.state;\n\n const menuItems = useMemo(() => {\n const items: ReactNode[] = [];\n const editItem = parseFromValuesOrFunc(enableEditing, row) &&\n ['modal', 'row'].includes(editDisplayMode!) && (\n <MRT_ActionMenuItem\n icon={<EditIcon />}\n key={'edit'}\n label={localization.edit}\n onClick={handleEdit}\n table={table}\n />\n );\n if (editItem) items.push(editItem);\n const rowActionMenuItems = renderRowActionMenuItems?.({\n closeMenu: () => setAnchorEl(null),\n row,\n staticRowIndex,\n table,\n });\n if (rowActionMenuItems?.length) items.push(...rowActionMenuItems);\n return items;\n }, [renderRowActionMenuItems, row, staticRowIndex, table]);\n\n if (!menuItems.length) return null;\n\n return (\n <Menu\n anchorEl={anchorEl}\n disableScrollLock\n onClick={(event) => event.stopPropagation()}\n onClose={() => setAnchorEl(null)}\n open={!!anchorEl}\n slotProps={{\n list: {\n dense: density === 'compact',\n sx: {\n backgroundColor: menuBackgroundColor,\n },\n },\n }}\n {...rest}\n >\n {menuItems}\n </Menu>\n );\n};\n","import { IconButton, type IconButtonProps } from '@mui/material';\nimport { Tooltip } from '@mui/material';\nimport { type MouseEvent, useState } from 'react';\n\nimport {\n type MRT_Cell,\n type MRT_Row,\n type MRT_RowData,\n type MRT_TableInstance,\n} from '../../types';\nimport { getCommonTooltipProps } from '../../utils/style.utils';\nimport { parseFromValuesOrFunc } from '../../utils/utils';\nimport { MRT_RowActionMenu } from '../menus/MRT_RowActionMenu';\nimport { MRT_EditActionButtons } from './MRT_EditActionButtons';\n\nconst commonIconButtonStyles = {\n '&:hover': {\n opacity: 1,\n },\n height: '2rem',\n ml: '10px',\n opacity: 0.5,\n transition: 'opacity 150ms',\n width: '2rem',\n};\n\nexport interface MRT_ToggleRowActionMenuButtonProps<TData extends MRT_RowData>\n extends IconButtonProps {\n cell: MRT_Cell<TData>;\n row: MRT_Row<TData>;\n staticRowIndex?: number;\n table: MRT_TableInstance<TData>;\n}\n\nexport const MRT_ToggleRowActionMenuButton = <TData extends MRT_RowData>({\n cell,\n row,\n staticRowIndex,\n table,\n ...rest\n}: MRT_ToggleRowActionMenuButtonProps<TData>) => {\n const {\n options: {\n createDisplayMode,\n editDisplayMode,\n enableEditing,\n icons: { EditIcon, MoreHorizIcon },\n localization,\n renderRowActionMenuItems,\n renderRowActions,\n },\n setEditingRow,\n } = table;\n\n const { creatingRow, editingRow } = table.state;\n\n const isCreating = creatingRow?.id === row.id;\n const isEditing = editingRow?.id === row.id;\n\n const showEditActionButtons =\n (isCreating && createDisplayMode === 'row') ||\n (isEditing && editDisplayMode === 'row');\n\n const [anchorEl, setAnchorEl] = useState<HTMLElement | null>(null);\n\n const handleOpenRowActionMenu = (event: MouseEvent<HTMLElement>) => {\n event.stopPropagation();\n event.preventDefault();\n setAnchorEl(event.currentTarget);\n };\n\n const handleStartEditMode = (event: MouseEvent) => {\n event.stopPropagation();\n setEditingRow(row);\n setAnchorEl(null);\n };\n\n return (\n <>\n {renderRowActions && !showEditActionButtons ? (\n renderRowActions({ cell, row, staticRowIndex, table })\n ) : showEditActionButtons ? (\n <MRT_EditActionButtons row={row} table={table} />\n ) : !renderRowActionMenuItems &&\n parseFromValuesOrFunc(enableEditing, row) &&\n ['modal', 'row'].includes(editDisplayMode!) ? (\n <Tooltip placement=\"right\" title={localization.edit}>\n <IconButton\n aria-label={localization.edit}\n onClick={handleStartEditMode}\n sx={commonIconButtonStyles}\n {...rest}\n >\n <EditIcon />\n </IconButton>\n </Tooltip>\n ) : renderRowActionMenuItems?.({\n row,\n staticRowIndex,\n table,\n } as any)?.length ? (\n <>\n <Tooltip {...getCommonTooltipProps()} title={localization.rowActions}>\n <IconButton\n aria-label={localization.rowActions}\n onClick={handleOpenRowActionMenu}\n size=\"small\"\n sx={commonIconButtonStyles}\n {...rest}\n >\n <MoreHorizIcon />\n </IconButton>\n </Tooltip>\n <MRT_RowActionMenu\n anchorEl={anchorEl}\n handleEdit={handleStartEditMode}\n row={row}\n setAnchorEl={setAnchorEl}\n staticRowIndex={staticRowIndex}\n table={table}\n />\n </>\n ) : null}\n </>\n );\n};\n","import { TableCell, type TableCellProps } from '@mui/material';\nimport { useTheme } from '@mui/material/styles';\n\nimport {\n type MRT_Header,\n type MRT_RowData,\n type MRT_TableInstance,\n} from '../../types';\nimport { cellKeyboardShortcuts } from '../../utils/cell.utils';\nimport { getCommonMRTCellStyles } from '../../utils/style.utils';\nimport { parseFromValuesOrFunc } from '../../utils/utils';\n\nexport interface MRT_TableFooterCellProps<TData extends MRT_RowData>\n extends TableCellProps {\n footer: MRT_Header<TData>;\n staticColumnIndex?: number;\n table: MRT_TableInstance<TData>;\n}\n\nexport const MRT_TableFooterCell = <TData extends MRT_RowData>({\n footer,\n staticColumnIndex,\n table,\n ...rest\n}: MRT_TableFooterCellProps<TData>) => {\n const theme = useTheme();\n const {\n options: {\n enableColumnPinning,\n enableKeyboardShortcuts,\n muiTableFooterCellProps,\n },\n } = table;\n const { density } = table.state;\n const { column } = footer;\n const { columnDef } = column;\n const { columnDefType } = columnDef;\n\n const isColumnPinned =\n enableColumnPinning &&\n columnDef.columnDefType !== 'group' &&\n column.getIsPinned();\n\n const args = { column, table };\n const tableCellProps = {\n ...parseFromValuesOrFunc(muiTableFooterCellProps, args),\n ...parseFromValuesOrFunc(columnDef.muiTableFooterCellProps, args),\n ...rest,\n };\n\n const handleKeyDown = (event: React.KeyboardEvent<HTMLTableCellElement>) => {\n tableCellProps?.onKeyDown?.(event);\n cellKeyboardShortcuts({\n cellValue: footer.column.columnDef.footer,\n event,\n table,\n });\n };\n\n return (\n <TableCell\n align={\n columnDefType === 'group'\n ? 'center'\n : theme.direction === 'rtl'\n ? 'right'\n : 'left'\n }\n colSpan={footer.colSpan}\n data-index={staticColumnIndex}\n data-pinned={!!isColumnPinned || undefined}\n tabIndex={enableKeyboardShortcuts ? 0 : undefined}\n variant=\"footer\"\n {...tableCellProps}\n onKeyDown={handleKeyDown}\n sx={(theme) => ({\n fontWeight: 'bold',\n p:\n density === 'compact'\n ? '0.5rem'\n : density === 'comfortable'\n ? '1rem'\n : '1.5rem',\n verticalAlign: 'top',\n ...getCommonMRTCellStyles({\n column,\n header: footer,\n table,\n tableCellProps,\n theme,\n }),\n ...(parseFromValuesOrFunc(tableCellProps?.sx, theme) as any),\n })}\n >\n {tableCellProps.children ??\n (footer.isPlaceholder\n ? null\n : (parseFromValuesOrFunc(columnDef.Footer, {\n column,\n footer,\n table,\n }) ??\n columnDef.footer ??\n null))}\n </TableCell>\n );\n};\n","import { TableRow, type TableRowProps } from '@mui/material';\n\nimport {\n type MRT_ColumnVirtualizer,\n type MRT_Header,\n type MRT_HeaderGroup,\n type MRT_RowData,\n type MRT_TableInstance,\n type MRT_VirtualItem,\n} from '../../types';\nimport { parseFromValuesOrFunc } from '../../utils/utils';\nimport { MRT_TableFooterCell } from './MRT_TableFooterCell';\n\nexport interface MRT_TableFooterRowProps<TData extends MRT_RowData>\n extends TableRowProps {\n columnVirtualizer?: MRT_ColumnVirtualizer;\n footerGroup: MRT_HeaderGroup<TData>;\n table: MRT_TableInstance<TData>;\n}\n\nexport const MRT_TableFooterRow = <TData extends MRT_RowData>({\n columnVirtualizer,\n footerGroup,\n table,\n ...rest\n}: MRT_TableFooterRowProps<TData>) => {\n const {\n options: {\n layoutMode,\n mrtTheme: { baseBackgroundColor },\n muiTableFooterRowProps,\n },\n } = table;\n\n const { virtualColumns, virtualPaddingLeft, virtualPaddingRight } =\n columnVirtualizer ?? {};\n\n // if no content in row, skip row\n if (\n !footerGroup.headers?.some(\n (header) =>\n (typeof header.column.columnDef.footer === 'string' &&\n !!header.column.columnDef.footer) ||\n header.column.columnDef.Footer,\n )\n ) {\n return null;\n }\n\n const tableRowProps = {\n ...parseFromValuesOrFunc(muiTableFooterRowProps, {\n footerGroup,\n table,\n }),\n ...rest,\n };\n\n return (\n <TableRow\n {...tableRowProps}\n sx={(theme) => ({\n backgroundColor: baseBackgroundColor,\n display: layoutMode?.startsWith('grid') ? 'flex' : undefined,\n position: 'relative',\n width: '100%',\n ...(parseFromValuesOrFunc(tableRowProps?.sx, theme) as any),\n })}\n >\n {virtualPaddingLeft ? (\n <th style={{ display: 'flex', width: virtualPaddingLeft }} />\n ) : null}\n {(virtualColumns ?? footerGroup.headers).map(\n (footerOrVirtualFooter, staticColumnIndex) => {\n let footer = footerOrVirtualFooter as MRT_Header<TData>;\n if (columnVirtualizer) {\n staticColumnIndex = (footerOrVirtualFooter as MRT_VirtualItem)\n .index;\n footer = footerGroup.headers[staticColumnIndex];\n }\n\n return footer ? (\n <MRT_TableFooterCell\n footer={footer}\n key={footer.id}\n staticColumnIndex={staticColumnIndex}\n table={table}\n />\n ) : null;\n },\n )}\n {virtualPaddingRight ? (\n <th style={{ display: 'flex', width: virtualPaddingRight }} />\n ) : null}\n </TableRow>\n );\n};\n","import { TableFooter, type TableFooterProps } from '@mui/material';\n\nimport {\n type MRT_ColumnVirtualizer,\n type MRT_RowData,\n type MRT_TableInstance,\n} from '../../types';\nimport { parseFromValuesOrFunc } from '../../utils/utils';\nimport { MRT_TableFooterRow } from './MRT_TableFooterRow';\n\nexport interface MRT_TableFooterProps<TData extends MRT_RowData>\n extends TableFooterProps {\n columnVirtualizer?: MRT_ColumnVirtualizer;\n table: MRT_TableInstance<TData>;\n}\n\nexport const MRT_TableFooter = <TData extends MRT_RowData>({\n columnVirtualizer,\n table,\n ...rest\n}: MRT_TableFooterProps<TData>) => {\n const {\n options: { enableStickyFooter, layoutMode, muiTableFooterProps },\n refs: { tableFooterRef },\n } = table;\n const { isFullScreen } = table.state;\n\n const tableFooterProps = {\n ...parseFromValuesOrFunc(muiTableFooterProps, {\n table,\n }),\n ...rest,\n };\n\n const stickFooter =\n (isFullScreen || enableStickyFooter) && enableStickyFooter !== false;\n\n const footerGroups = table.getFooterGroups();\n\n //if no footer cells at all, skip footer\n if (\n !footerGroups.some((footerGroup) =>\n footerGroup.headers?.some(\n (header) =>\n (typeof header.column.columnDef.footer === 'string' &&\n !!header.column.columnDef.footer) ||\n header.column.columnDef.Footer,\n ),\n )\n ) {\n return null;\n }\n\n return (\n <TableFooter\n {...tableFooterProps}\n ref={(ref: HTMLTableSectionElement) => {\n tableFooterRef.current = ref;\n if (tableFooterProps?.ref) {\n // @ts-expect-error\n tableFooterProps.ref.current = ref;\n }\n }}\n sx={(theme) => ({\n bottom: stickFooter ? 0 : undefined,\n display: layoutMode?.startsWith('grid') ? 'grid' : undefined,\n opacity: stickFooter ? 0.97 : undefined,\n outline: stickFooter\n ? theme.palette.mode === 'light'\n ? `1px solid ${theme.palette.grey[300]}`\n : `1px solid ${theme.palette.grey[700]}`\n : undefined,\n position: stickFooter ? 'sticky' : 'relative',\n zIndex: stickFooter ? 1 : undefined,\n ...(parseFromValuesOrFunc(tableFooterProps?.sx, theme) as any),\n })}\n >\n {footerGroups.map((footerGroup) => (\n <MRT_TableFooterRow\n columnVirtualizer={columnVirtualizer}\n footerGroup={footerGroup as any}\n key={footerGroup.id}\n table={table}\n />\n ))}\n </TableFooter>\n );\n};\n","import { Checkbox, type CheckboxProps } from '@mui/material';\nimport { Radio, type RadioProps } from '@mui/material';\nimport { Tooltip } from '@mui/material';\nimport { type Theme } from '@mui/material/styles';\nimport { type MouseEvent } from 'react';\n\nimport {\n type MRT_Row,\n type MRT_RowData,\n type MRT_TableInstance,\n} from '../../types';\nimport {\n getIsRowSelected,\n getMRT_RowSelectionHandler,\n getMRT_SelectAllHandler,\n} from '../../utils/row.utils';\nimport { getCommonTooltipProps } from '../../utils/style.utils';\nimport { parseFromValuesOrFunc } from '../../utils/utils';\n\nexport interface MRT_SelectCheckboxProps<TData extends MRT_RowData>\n extends CheckboxProps {\n row?: MRT_Row<TData>;\n staticRowIndex?: number;\n table: MRT_TableInstance<TData>;\n}\n\nexport const MRT_SelectCheckbox = <TData extends MRT_RowData>({\n row,\n staticRowIndex,\n table,\n ...rest\n}: MRT_SelectCheckboxProps<TData>) => {\n const {\n options: {\n enableMultiRowSelection,\n localization,\n muiSelectAllCheckboxProps,\n muiSelectCheckboxProps,\n selectAllMode,\n },\n } = table;\n const { density, isLoading } = table.state;\n\n const selectAll = !row;\n\n const allRowsSelected = selectAll\n ? selectAllMode === 'page'\n ? table.getIsAllPageRowsSelected()\n : table.getIsAllRowsSelected()\n : undefined;\n\n const isChecked = selectAll\n ? allRowsSelected\n : getIsRowSelected({ row, table });\n\n const checkboxProps = {\n ...(selectAll\n ? parseFromValuesOrFunc(muiSelectAllCheckboxProps, { table })\n : parseFromValuesOrFunc(muiSelectCheckboxProps, {\n row,\n staticRowIndex,\n table,\n })),\n ...rest,\n };\n\n const onSelectionChange = row\n ? getMRT_RowSelectionHandler({\n row,\n staticRowIndex,\n table,\n })\n : undefined;\n\n const onSelectAllChange = getMRT_SelectAllHandler({ table });\n\n const commonProps = {\n 'aria-label': selectAll\n ? localization.toggleSelectAll\n : localization.toggleSelectRow,\n checked: isChecked,\n disabled:\n isLoading || (row && !row.getCanSelect()) || row?.id === 'mrt-row-create',\n onChange: (event) => {\n event.stopPropagation();\n selectAll ? onSelectAllChange(event) : onSelectionChange!(event);\n },\n size: (density === 'compact' ? 'small' : 'medium') as 'medium' | 'small',\n slotProps: {\n input: {\n 'aria-label': selectAll\n ? localization.toggleSelectAll\n : localization.toggleSelectRow,\n },\n },\n ...checkboxProps,\n onClick: (e: MouseEvent<HTMLButtonElement>) => {\n e.stopPropagation();\n checkboxProps?.onClick?.(e);\n },\n sx: (theme: Theme) => ({\n height: density === 'compact' ? '1.75rem' : '2.5rem',\n m: density !== 'compact' ? '-0.4rem' : undefined,\n width: density === 'compact' ? '1.75rem' : '2.5rem',\n zIndex: 0,\n ...parseFromValuesOrFunc(checkboxProps?.sx, theme),\n }),\n title: undefined,\n } as CheckboxProps | RadioProps;\n\n return (\n <Tooltip\n {...getCommonTooltipProps()}\n title={\n checkboxProps?.title ??\n (selectAll\n ? localization.toggleSelectAll\n : localization.toggleSelectRow)\n }\n >\n {enableMultiRowSelection === false ? (\n <Radio {...(commonProps as any)} />\n ) : (\n <Checkbox\n indeterminate={\n !isChecked && selectAll\n ? table.getIsSomeRowsSelected()\n : row?.getIsSomeSelected() && row.getCanSelectSubRows()\n }\n {...commonProps}\n />\n )}\n </Tooltip>\n );\n};\n","import { Alert, type AlertProps } from '@mui/material';\nimport { AlertTitle } from '@mui/material';\nimport { Box } from '@mui/material';\nimport { Button } from '@mui/material';\nimport { Chip } from '@mui/material';\nimport { Collapse } from '@mui/material';\nimport { Stack } from '@mui/material';\nimport { Fragment, useMemo } from 'react';\n\nimport { type MRT_RowData, type MRT_TableInstance } from '../../types';\nimport { getMRT_SelectAllHandler } from '../../utils/row.utils';\nimport { parseFromValuesOrFunc } from '../../utils/utils';\nimport { MRT_SelectCheckbox } from '../inputs/MRT_SelectCheckbox';\n\nexport interface MRT_ToolbarAlertBannerProps<TData extends MRT_RowData>\n extends AlertProps {\n stackAlertBanner?: boolean;\n table: MRT_TableInstance<TData>;\n}\n\nexport const MRT_ToolbarAlertBanner = <TData extends MRT_RowData>({\n stackAlertBanner,\n table,\n ...rest\n}: MRT_ToolbarAlertBannerProps<TData>) => {\n const {\n getCoreRowModel,\n getFilteredSelectedRowModel,\n options: {\n enableRowSelection,\n enableSelectAll,\n localization,\n manualPagination,\n muiToolbarAlertBannerChipProps,\n muiToolbarAlertBannerProps,\n positionToolbarAlertBanner,\n renderToolbarAlertBannerContent,\n rowCount,\n },\n refs: { tablePaperRef },\n } = table;\n const { density, grouping, rowSelection, showAlertBanner } = table.state;\n\n const alertProps = {\n ...parseFromValuesOrFunc(muiToolbarAlertBannerProps, {\n table,\n }),\n ...rest,\n };\n\n const chipProps = parseFromValuesOrFunc(muiToolbarAlertBannerChipProps, {\n table,\n });\n\n const totalRowCount = rowCount ?? getCoreRowModel().rows.length;\n const filteredRowCount = getFilteredSelectedRowModel().rows.length;\n\n const selectedRowCount = useMemo(\n () =>\n manualPagination\n ? Object.values(rowSelection).filter(Boolean).length\n : filteredRowCount,\n [rowSelection, totalRowCount, manualPagination, filteredRowCount],\n );\n const selectedAlert =\n selectedRowCount > 0 ? (\n <Stack\n direction=\"row\"\n sx={{\n alignItems: \"center\",\n gap: \"16px\"\n }}>\n {localization.selectedCountOfRowCountRowsSelected\n ?.replace(\n '{selectedCount}',\n selectedRowCount.toLocaleString(localization.language),\n )\n ?.replace(\n '{rowCount}',\n totalRowCount.toLocaleString(localization.language),\n )}\n <Button\n onClick={(event) =>\n getMRT_SelectAllHandler({ table })(event, false, true)\n }\n size=\"small\"\n sx={{ p: '2px' }}\n >\n {localization.clearSelection}\n </Button>\n </Stack>\n ) : null;\n\n const groupedAlert =\n grouping.length > 0 ? (\n <span>\n {localization.groupedBy}{' '}\n {grouping.map((columnId, index) => (\n <Fragment key={`${index}-${columnId}`}>\n {index > 0 ? localization.thenBy : ''}\n <Chip\n label={table.getColumn(columnId)?.columnDef.header}\n onDelete={() => table.getColumn(columnId)?.toggleGrouping()}\n {...chipProps}\n />\n </Fragment>\n ))}\n </span>\n ) : null;\n\n return (\n <Collapse\n in={showAlertBanner || !!selectedAlert || !!groupedAlert}\n timeout={stackAlertBanner ? 200 : 0}\n >\n <Alert\n color=\"info\"\n icon={false}\n {...alertProps}\n sx={(theme) => ({\n '& .MuiAlert-message': {\n maxWidth: `calc(${\n tablePaperRef.current?.clientWidth ?? 360\n }px - 1rem)`,\n width: '100%',\n },\n borderRadius: 0,\n fontSize: '1rem',\n left: 0,\n mb: stackAlertBanner\n ? 0\n : positionToolbarAlertBanner === 'bottom'\n ? '-1rem'\n : undefined,\n p: 0,\n position: 'relative',\n right: 0,\n top: 0,\n width: '100%',\n zIndex: 2,\n ...(parseFromValuesOrFunc(alertProps?.sx, theme) as any),\n })}\n >\n {renderToolbarAlertBannerContent?.({\n groupedAlert,\n selectedAlert,\n table,\n }) ?? (\n <>\n {alertProps?.title && <AlertTitle>{alertProps.title}</AlertTitle>}\n <Stack\n sx={{\n p:\n positionToolbarAlertBanner !== 'head-overlay'\n ? '0.5rem 1rem'\n : density === 'spacious'\n ? '0.75rem 1.25rem'\n : density === 'comfortable'\n ? '0.5rem 0.75rem'\n : '0.25rem 0.5rem',\n }}\n >\n {alertProps?.children}\n {alertProps?.children && (selectedAlert || groupedAlert) && (\n <br />\n )}\n <Box sx={{ display: 'flex' }}>\n {enableRowSelection &&\n enableSelectAll &&\n positionToolbarAlertBanner === 'head-overlay' && (\n <MRT_SelectCheckbox table={table} />\n )}{' '}\n {selectedAlert}\n </Box>\n {selectedAlert && groupedAlert && <br />}\n {groupedAlert}\n </Stack>\n </>\n )}\n </Alert>\n </Collapse>\n );\n};\n","import { Menu, type MenuProps } from '@mui/material';\nimport { useMemo } from 'react';\n\nimport {\n type MRT_FilterOption,\n type MRT_Header,\n type MRT_InternalFilterOption,\n type MRT_Localization,\n type MRT_RowData,\n type MRT_TableInstance,\n} from '../../types';\nimport { MRT_ActionMenuItem } from './MRT_ActionMenuItem';\n\nexport const mrtFilterOptions = (\n localization: MRT_Localization,\n): MRT_InternalFilterOption[] => [\n {\n divider: false,\n label: localization.filterFuzzy,\n option: 'fuzzy',\n symbol: '≈',\n },\n {\n divider: false,\n label: localization.filterContains,\n option: 'contains',\n symbol: '*',\n },\n {\n divider: false,\n label: localization.filterStartsWith,\n option: 'startsWith',\n symbol: 'a',\n },\n {\n divider: true,\n label: localization.filterEndsWith,\n option: 'endsWith',\n symbol: 'z',\n },\n {\n divider: false,\n label: localization.filterEquals,\n option: 'equals',\n symbol: '=',\n },\n {\n divider: true,\n label: localization.filterNotEquals,\n option: 'notEquals',\n symbol: '≠',\n },\n {\n divider: false,\n label: localization.filterBetween,\n option: 'between',\n symbol: '⇿',\n },\n {\n divider: true,\n label: localization.filterBetweenInclusive,\n option: 'betweenInclusive',\n symbol: '⬌',\n },\n {\n divider: false,\n label: localization.filterGreaterThan,\n option: 'greaterThan',\n symbol: '>',\n },\n {\n divider: false,\n label: localization.filterGreaterThanOrEqualTo,\n option: 'greaterThanOrEqualTo',\n symbol: '≥',\n },\n {\n divider: false,\n label: localization.filterLessThan,\n option: 'lessThan',\n symbol: '<',\n },\n {\n divider: true,\n label: localization.filterLessThanOrEqualTo,\n option: 'lessThanOrEqualTo',\n symbol: '≤',\n },\n {\n divider: false,\n label: localization.filterEmpty,\n option: 'empty',\n symbol: '∅',\n },\n {\n divider: false,\n label: localization.filterNotEmpty,\n option: 'notEmpty',\n symbol: '!∅',\n },\n];\n\nconst rangeModes = ['between', 'betweenInclusive', 'inNumberRange'];\nconst emptyModes = ['empty', 'notEmpty'];\nconst arrModes = ['arrIncludesSome', 'arrIncludesAll', 'arrIncludes'];\nconst rangeVariants = ['range-slider', 'date-range', 'datetime-range', 'range'];\n\nexport interface MRT_FilterOptionMenuProps<TData extends MRT_RowData>\n extends Partial<MenuProps> {\n anchorEl: HTMLElement | null;\n header?: MRT_Header<TData>;\n onSelect?: () => void;\n setAnchorEl: (anchorEl: HTMLElement | null) => void;\n setFilterValue?: (filterValue: any) => void;\n table: MRT_TableInstance<TData>;\n}\n\nexport const MRT_FilterOptionMenu = <TData extends MRT_RowData>({\n anchorEl,\n header,\n onSelect,\n setAnchorEl,\n setFilterValue,\n table,\n ...rest\n}: MRT_FilterOptionMenuProps<TData>) => {\n const {\n options: {\n columnFilterModeOptions,\n globalFilterModeOptions,\n localization,\n mrtTheme: { menuBackgroundColor },\n renderColumnFilterModeMenuItems,\n renderGlobalFilterModeMenuItems,\n },\n setColumnFilterFns,\n setGlobalFilterFn,\n } = table;\n const { density, globalFilterFn } = table.state;\n const { column } = header ?? {};\n const { columnDef } = column ?? {};\n const currentFilterValue = column?.getFilterValue();\n\n let allowedColumnFilterOptions =\n columnDef?.columnFilterModeOptions ?? columnFilterModeOptions;\n\n if (rangeVariants.includes(columnDef?.filterVariant as string)) {\n allowedColumnFilterOptions = [\n ...rangeModes,\n ...(allowedColumnFilterOptions ?? []),\n ].filter((option) => rangeModes.includes(option));\n }\n\n const internalFilterOptions = useMemo(\n () =>\n mrtFilterOptions(localization).filter((filterOption) =>\n columnDef\n ? allowedColumnFilterOptions === undefined ||\n allowedColumnFilterOptions?.includes(filterOption.option)\n : (!globalFilterModeOptions ||\n globalFilterModeOptions.includes(filterOption.option)) &&\n ['contains', 'fuzzy', 'startsWith'].includes(filterOption.option),\n ),\n [],\n );\n\n const handleSelectFilterMode = (option: MRT_FilterOption) => {\n const prevFilterMode = columnDef?._filterFn ?? '';\n if (!header || !column) {\n // global filter mode\n setGlobalFilterFn(option);\n } else if (option !== prevFilterMode) {\n // column filter mode\n setColumnFilterFns((prev: { [key: string]: any }) => ({\n ...prev,\n [header.id]: option,\n }));\n\n // reset filter value and/or perform new filter render\n if (emptyModes.includes(option)) {\n // will now be empty/notEmpty filter mode\n if (\n currentFilterValue !== ' ' &&\n !emptyModes.includes(prevFilterMode)\n ) {\n column.setFilterValue(' ');\n } else if (currentFilterValue) {\n column.setFilterValue(currentFilterValue); // perform new filter render\n }\n } else if (\n columnDef?.filterVariant === 'multi-select' ||\n arrModes.includes(option as string)\n ) {\n // will now be array filter mode\n if (\n currentFilterValue instanceof String ||\n (currentFilterValue as Array<any>)?.length\n ) {\n column.setFilterValue([]);\n setFilterValue?.([]);\n } else if (currentFilterValue) {\n column.setFilterValue(currentFilterValue); // perform new filter render\n }\n } else if (\n columnDef?.filterVariant?.includes('range') ||\n rangeModes.includes(option as MRT_FilterOption)\n ) {\n // will now be range filter mode\n if (\n !Array.isArray(currentFilterValue) ||\n (!(currentFilterValue as Array<any>)?.every((v) => v === '') &&\n !rangeModes.includes(prevFilterMode))\n ) {\n column.setFilterValue(['', '']);\n setFilterValue?.('');\n } else {\n column.setFilterValue(currentFilterValue); // perform new filter render\n }\n } else {\n // will now be single value filter mode\n if (Array.isArray(currentFilterValue)) {\n column.setFilterValue('');\n setFilterValue?.('');\n } else if (\n currentFilterValue === ' ' &&\n emptyModes.includes(prevFilterMode)\n ) {\n column.setFilterValue(undefined);\n } else {\n column.setFilterValue(currentFilterValue); // perform new filter render\n }\n }\n }\n setAnchorEl(null);\n onSelect?.();\n };\n\n const filterOption =\n !!header && columnDef ? columnDef._filterFn : globalFilterFn;\n\n return (\n <Menu\n anchorEl={anchorEl}\n anchorOrigin={{ horizontal: 'right', vertical: 'center' }}\n disableScrollLock\n onClose={() => setAnchorEl(null)}\n open={!!anchorEl}\n slotProps={{\n list: {\n dense: density === 'compact',\n sx: {\n backgroundColor: menuBackgroundColor,\n },\n },\n }}\n {...rest}\n >\n {(header && column && columnDef\n ? (columnDef.renderColumnFilterModeMenuItems?.({\n column: column as any,\n internalFilterOptions,\n onSelectFilterMode: handleSelectFilterMode,\n table,\n }) ??\n renderColumnFilterModeMenuItems?.({\n column: column as any,\n internalFilterOptions,\n onSelectFilterMode: handleSelectFilterMode,\n table,\n }))\n : renderGlobalFilterModeMenuItems?.({\n internalFilterOptions,\n onSelectFilterMode: handleSelectFilterMode,\n table,\n })) ??\n internalFilterOptions.map(\n ({ divider, label, option, symbol }, index) => (\n <MRT_ActionMenuItem\n divider={divider}\n icon={symbol}\n key={index}\n label={label}\n onClick={() => handleSelectFilterMode(option as MRT_FilterOption)}\n selected={option === filterOption}\n table={table}\n value={option}\n />\n ),\n )}\n </Menu>\n );\n};\n","import { Menu, type MenuProps } from '@mui/material';\nimport { type MouseEvent, useState } from 'react';\n\nimport {\n type MRT_Header,\n type MRT_RowData,\n type MRT_TableInstance,\n} from '../../types';\nimport { getColumnFilterInfo } from '../../utils/column.utils';\nimport { MRT_ActionMenuItem } from './MRT_ActionMenuItem';\nimport { MRT_FilterOptionMenu } from './MRT_FilterOptionMenu';\n\nexport interface MRT_ColumnActionMenuProps<TData extends MRT_RowData>\n extends Partial<MenuProps> {\n anchorEl: HTMLElement | null;\n header: MRT_Header<TData>;\n setAnchorEl: (anchorEl: HTMLElement | null) => void;\n table: MRT_TableInstance<TData>;\n}\n\nexport const MRT_ColumnActionMenu = <TData extends MRT_RowData>({\n anchorEl,\n header,\n setAnchorEl,\n table,\n ...rest\n}: MRT_ColumnActionMenuProps<TData>) => {\n const {\n getAllLeafColumns,\n options: {\n columnFilterDisplayMode,\n enableColumnFilterModes,\n enableColumnFilters,\n enableColumnPinning,\n enableColumnResizing,\n enableGrouping,\n enableHiding,\n enableSorting,\n enableSortingRemoval,\n icons: {\n ClearAllIcon,\n DynamicFeedIcon,\n FilterListIcon,\n FilterListOffIcon,\n PushPinIcon,\n RestartAltIcon,\n SortIcon,\n ViewColumnIcon,\n VisibilityOffIcon,\n },\n localization,\n mrtTheme: { menuBackgroundColor },\n renderColumnActionsMenuItems,\n },\n refs: { filterInputRefs },\n setColumnFilterFns,\n setColumnOrder,\n setColumnResizing,\n setShowColumnFilters,\n } = table;\n const { column } = header;\n const { columnDef } = column;\n const { columnSizing, columnVisibility, density, showColumnFilters } =\n table.state;\n const columnFilterValue = column.getFilterValue();\n\n const [filterMenuAnchorEl, setFilterMenuAnchorEl] =\n useState<HTMLElement | null>(null);\n\n const handleClearSort = () => {\n column.clearSorting();\n setAnchorEl(null);\n };\n\n const handleSortAsc = () => {\n column.toggleSorting(false);\n setAnchorEl(null);\n };\n\n const handleSortDesc = () => {\n column.toggleSorting(true);\n setAnchorEl(null);\n };\n\n const handleResetColumnSize = () => {\n setColumnResizing((old) => ({ ...old, isResizingColumn: false }));\n column.resetSize();\n setAnchorEl(null);\n };\n\n const handleHideColumn = () => {\n column.toggleVisibility(false);\n setAnchorEl(null);\n };\n\n const handlePinColumn = (pinDirection: 'end' | 'start' | false) => {\n column.pin(pinDirection);\n setAnchorEl(null);\n };\n\n const handleGroupByColumn = () => {\n column.toggleGrouping();\n setColumnOrder((old: any) => ['mrt-row-expand', ...old]);\n setAnchorEl(null);\n };\n\n const handleClearFilter = () => {\n column.setFilterValue(undefined);\n setAnchorEl(null);\n if (['empty', 'notEmpty'].includes(currentFilterOption)) {\n setColumnFilterFns((prev) => ({\n ...prev,\n [header.id]: allowedColumnFilterOptions?.[0] ?? 'fuzzy',\n }));\n }\n };\n\n const handleFilterByColumn = () => {\n setShowColumnFilters(true);\n queueMicrotask(() => filterInputRefs.current?.[`${column.id}-0`]?.focus());\n setAnchorEl(null);\n };\n\n const handleShowAllColumns = () => {\n getAllLeafColumns()\n .filter((col) => col.columnDef.enableHiding !== false)\n .forEach((col) => col.toggleVisibility(true));\n setAnchorEl(null);\n };\n\n const handleOpenFilterModeMenu = (event: MouseEvent<HTMLElement>) => {\n event.stopPropagation();\n setFilterMenuAnchorEl(event.currentTarget);\n };\n\n const isSelectFilter = !!columnDef.filterSelectOptions;\n\n const { allowedColumnFilterOptions, currentFilterOption } =\n getColumnFilterInfo({ header, table });\n\n const showFilterModeSubMenu =\n enableColumnFilterModes &&\n columnDef.enableColumnFilterModes !== false &&\n !isSelectFilter &&\n (allowedColumnFilterOptions === undefined ||\n !!allowedColumnFilterOptions?.length);\n\n const internalColumnMenuItems = [\n ...(enableSorting && column.getCanSort()\n ? [\n enableSortingRemoval !== false && (\n <MRT_ActionMenuItem\n disabled={column.getIsSorted() === false}\n icon={<ClearAllIcon />}\n key={0}\n label={localization.clearSort}\n onClick={handleClearSort}\n table={table}\n />\n ),\n <MRT_ActionMenuItem\n disabled={column.getIsSorted() === 'asc'}\n icon={\n <SortIcon style={{ transform: 'rotate(180deg) scaleX(-1)' }} />\n }\n key={1}\n label={localization.sortByColumnAsc?.replace(\n '{column}',\n String(columnDef.header),\n )}\n onClick={handleSortAsc}\n table={table}\n />,\n <MRT_ActionMenuItem\n disabled={column.getIsSorted() === 'desc'}\n divider={enableColumnFilters || enableGrouping || enableHiding}\n icon={<SortIcon />}\n key={2}\n label={localization.sortByColumnDesc?.replace(\n '{column}',\n String(columnDef.header),\n )}\n onClick={handleSortDesc}\n table={table}\n />,\n ]\n : []),\n ...(enableColumnFilters && column.getCanFilter()\n ? [\n <MRT_ActionMenuItem\n disabled={\n !columnFilterValue ||\n (Array.isArray(columnFilterValue) &&\n !columnFilterValue.filter((value) => value).length)\n }\n icon={<FilterListOffIcon />}\n key={3}\n label={localization.clearFilter}\n onClick={handleClearFilter}\n table={table}\n />,\n columnFilterDisplayMode === 'subheader' && (\n <MRT_ActionMenuItem\n disabled={showColumnFilters && !enableColumnFilterModes}\n divider={enableGrouping || enableHiding}\n icon={<FilterListIcon />}\n key={4}\n label={localization.filterByColumn?.replace(\n '{column}',\n String(columnDef.header),\n )}\n onClick={\n showColumnFilters\n ? handleOpenFilterModeMenu\n : handleFilterByColumn\n }\n onOpenSubMenu={\n showFilterModeSubMenu ? handleOpenFilterModeMenu : undefined\n }\n table={table}\n />\n ),\n showFilterModeSubMenu && (\n <MRT_FilterOptionMenu\n anchorEl={filterMenuAnchorEl}\n header={header}\n key={5}\n onSelect={handleFilterByColumn}\n setAnchorEl={setFilterMenuAnchorEl}\n table={table}\n />\n ),\n ].filter(Boolean)\n : []),\n ...(enableGrouping && column.getCanGroup()\n ? [\n <MRT_ActionMenuItem\n divider={enableColumnPinning}\n icon={<DynamicFeedIcon />}\n key={6}\n label={localization[\n column.getIsGrouped() ? 'ungroupByColumn' : 'groupByColumn'\n ]?.replace('{column}', String(columnDef.header))}\n onClick={handleGroupByColumn}\n table={table}\n />,\n ]\n : []),\n ...(enableColumnPinning && column.getCanPin()\n ? [\n <MRT_ActionMenuItem\n disabled={column.getIsPinned() === 'start' || !column.getCanPin()}\n icon={<PushPinIcon style={{ transform: 'rotate(90deg)' }} />}\n key={7}\n label={localization.pinToLeft}\n onClick={() => handlePinColumn('start')}\n table={table}\n />,\n <MRT_ActionMenuItem\n disabled={column.getIsPinned() === 'end' || !column.getCanPin()}\n icon={<PushPinIcon style={{ transform: 'rotate(-90deg)' }} />}\n key={8}\n label={localization.pinToRight}\n onClick={() => handlePinColumn('end')}\n table={table}\n />,\n <MRT_ActionMenuItem\n disabled={!column.getIsPinned()}\n divider={enableHiding}\n icon={<PushPinIcon />}\n key={9}\n label={localization.unpin}\n onClick={() => handlePinColumn(false)}\n table={table}\n />,\n ]\n : []),\n ...(enableColumnResizing && column.getCanResize()\n ? [\n <MRT_ActionMenuItem\n disabled={columnSizing[column.id] === undefined}\n icon={<RestartAltIcon />}\n key={10}\n label={localization.resetColumnSize}\n onClick={handleResetColumnSize}\n table={table}\n />,\n ]\n : []),\n ...(enableHiding\n ? [\n <MRT_ActionMenuItem\n disabled={!column.getCanHide()}\n icon={<VisibilityOffIcon />}\n key={11}\n label={localization.hideColumn?.replace(\n '{column}',\n String(columnDef.header),\n )}\n onClick={handleHideColumn}\n table={table}\n />,\n <MRT_ActionMenuItem\n disabled={\n !Object.values(columnVisibility).filter((visible) => !visible)\n .length\n }\n icon={<ViewColumnIcon />}\n key={12}\n label={localization.showAllColumns?.replace(\n '{column}',\n String(columnDef.header),\n )}\n onClick={handleShowAllColumns}\n table={table}\n />,\n ]\n : []),\n ].filter(Boolean);\n\n return (\n <Menu\n anchorEl={anchorEl}\n disableScrollLock\n onClose={() => setAnchorEl(null)}\n open={!!anchorEl}\n slotProps={{\n list: {\n dense: density === 'compact',\n sx: {\n backgroundColor: menuBackgroundColor,\n },\n },\n }}\n {...rest}\n >\n {columnDef.renderColumnActionsMenuItems?.({\n closeMenu: () => setAnchorEl(null),\n column,\n internalColumnMenuItems,\n table,\n }) ??\n renderColumnActionsMenuItems?.({\n closeMenu: () => setAnchorEl(null),\n column,\n internalColumnMenuItems,\n table,\n }) ??\n internalColumnMenuItems}\n </Menu>\n );\n};\n","import { IconButton, type IconButtonProps } from '@mui/material';\nimport { Tooltip } from '@mui/material';\nimport { type MouseEvent, useState } from 'react';\n\nimport {\n type MRT_Header,\n type MRT_RowData,\n type MRT_TableInstance,\n} from '../../types';\nimport { getCommonTooltipProps } from '../../utils/style.utils';\nimport { parseFromValuesOrFunc } from '../../utils/utils';\nimport { MRT_ColumnActionMenu } from '../menus/MRT_ColumnActionMenu';\n\nexport interface MRT_TableHeadCellColumnActionsButtonProps<\n TData extends MRT_RowData,\n> extends IconButtonProps {\n header: MRT_Header<TData>;\n table: MRT_TableInstance<TData>;\n}\n\nexport const MRT_TableHeadCellColumnActionsButton = <\n TData extends MRT_RowData,\n>({\n header,\n table,\n ...rest\n}: MRT_TableHeadCellColumnActionsButtonProps<TData>) => {\n const {\n options: {\n icons: { MoreVertIcon },\n localization,\n muiColumnActionsButtonProps,\n },\n } = table;\n const { column } = header;\n const { columnDef } = column;\n\n const [anchorEl, setAnchorEl] = useState<HTMLElement | null>(null);\n\n const handleClick = (event: MouseEvent<HTMLElement>) => {\n event.stopPropagation();\n event.preventDefault();\n setAnchorEl(event.currentTarget);\n };\n\n const iconButtonProps = {\n ...parseFromValuesOrFunc(muiColumnActionsButtonProps, {\n column,\n table,\n }),\n ...parseFromValuesOrFunc(columnDef.muiColumnActionsButtonProps, {\n column,\n table,\n }),\n ...rest,\n };\n\n return (\n <>\n <Tooltip\n {...getCommonTooltipProps('top')}\n title={iconButtonProps?.title ?? localization.columnActions}\n >\n <IconButton\n aria-label={localization.columnActions}\n onClick={handleClick}\n size=\"small\"\n {...iconButtonProps}\n sx={(theme) => ({\n '&:hover': {\n opacity: 1,\n },\n height: '2rem',\n m: '-8px -4px',\n opacity: 0.3,\n transition: 'all 150ms',\n width: '2rem',\n ...(parseFromValuesOrFunc(iconButtonProps?.sx, theme) as any),\n })}\n title={undefined}\n >\n {iconButtonProps?.children ?? (\n <MoreVertIcon style={{ transform: 'scale(0.9)' }} />\n )}\n </IconButton>\n </Tooltip>\n {anchorEl && (\n <MRT_ColumnActionMenu\n anchorEl={anchorEl}\n header={header}\n setAnchorEl={setAnchorEl}\n table={table}\n />\n )}\n </>\n );\n};\n","import { Checkbox, type CheckboxProps } from '@mui/material';\nimport { FormControlLabel } from '@mui/material';\nimport { Tooltip } from '@mui/material';\n\nimport {\n type MRT_Column,\n type MRT_RowData,\n type MRT_TableInstance,\n} from '../../types';\nimport { getCommonTooltipProps } from '../../utils/style.utils';\nimport { parseFromValuesOrFunc } from '../../utils/utils';\n\nexport interface MRT_FilterCheckboxProps<TData extends MRT_RowData>\n extends CheckboxProps {\n column: MRT_Column<TData>;\n table: MRT_TableInstance<TData>;\n}\n\nexport const MRT_FilterCheckbox = <TData extends MRT_RowData>({\n column,\n table,\n ...rest\n}: MRT_FilterCheckboxProps<TData>) => {\n const {\n options: { localization, muiFilterCheckboxProps },\n } = table;\n const { density } = table.state;\n const { columnDef } = column;\n\n const checkboxProps = {\n ...parseFromValuesOrFunc(muiFilterCheckboxProps, {\n column,\n table,\n }),\n ...parseFromValuesOrFunc(columnDef.muiFilterCheckboxProps, {\n column,\n table,\n }),\n ...rest,\n };\n\n const filterLabel = localization.filterByColumn?.replace(\n '{column}',\n columnDef.header,\n );\n\n return (\n <Tooltip\n {...getCommonTooltipProps()}\n title={checkboxProps?.title ?? filterLabel}\n >\n <FormControlLabel\n control={\n <Checkbox\n checked={column.getFilterValue() === 'true'}\n color={\n column.getFilterValue() === undefined ? 'default' : 'primary'\n }\n indeterminate={column.getFilterValue() === undefined}\n size={density === 'compact' ? 'small' : 'medium'}\n {...checkboxProps}\n onChange={(e, checked) => {\n column.setFilterValue(\n column.getFilterValue() === undefined\n ? 'true'\n : column.getFilterValue() === 'true'\n ? 'false'\n : undefined,\n );\n checkboxProps?.onChange?.(e, checked);\n }}\n onClick={(e) => {\n e.stopPropagation();\n checkboxProps?.onClick?.(e);\n }}\n sx={(theme) => ({\n height: '2.5rem',\n width: '2.5rem',\n ...(parseFromValuesOrFunc(checkboxProps?.sx, theme) as any),\n })}\n />\n }\n disableTypography\n label={checkboxProps.title ?? filterLabel}\n sx={{ color: 'text.secondary', fontWeight: 'normal', mt: '-4px' }}\n title={undefined}\n />\n </Tooltip>\n );\n};\n","import { Autocomplete, type AutocompleteInputChangeReason, type AutocompleteRenderInputParams } from '@mui/material';\nimport { Box } from '@mui/material';\nimport { Checkbox } from '@mui/material';\nimport { Chip } from '@mui/material';\nimport { IconButton } from '@mui/material';\nimport { InputAdornment } from '@mui/material';\nimport { MenuItem } from '@mui/material';\nimport { TextField, type TextFieldProps } from '@mui/material';\nimport { Tooltip } from '@mui/material';\nimport { debounce } from '@mui/material/utils';\nimport { DatePicker } from '@mui/x-date-pickers/DatePicker';\nimport { DateTimePicker } from '@mui/x-date-pickers/DateTimePicker';\nimport { TimePicker } from '@mui/x-date-pickers/TimePicker';\nimport {\n type ChangeEvent,\n type MouseEvent,\n type SyntheticEvent,\n useCallback,\n useEffect,\n useRef,\n useState,\n} from 'react';\n\nimport {\n type DropdownOption,\n type MRT_Header,\n type MRT_RowData,\n type MRT_TableInstance,\n} from '../../types';\nimport {\n getColumnFilterInfo,\n useDropdownOptions,\n} from '../../utils/column.utils';\nimport { getTextFieldSlotProps } from '../../utils/slotProps.utils';\nimport { getValueAndLabel, parseFromValuesOrFunc } from '../../utils/utils';\nimport { MRT_FilterOptionMenu } from '../menus/MRT_FilterOptionMenu';\n\nexport interface MRT_FilterTextFieldProps<TData extends MRT_RowData>\n extends TextFieldProps<'standard'> {\n header: MRT_Header<TData>;\n rangeFilterIndex?: number;\n table: MRT_TableInstance<TData>;\n}\n\nexport const MRT_FilterTextField = <TData extends MRT_RowData>({\n header,\n rangeFilterIndex,\n table,\n ...rest\n}: MRT_FilterTextFieldProps<TData>) => {\n const {\n options: {\n enableColumnFilterModes,\n icons: { CloseIcon, FilterListIcon },\n localization,\n manualFiltering,\n muiFilterAutocompleteProps,\n muiFilterDatePickerProps,\n muiFilterDateTimePickerProps,\n muiFilterTextFieldProps,\n muiFilterTimePickerProps,\n },\n refs: { filterInputRefs },\n setColumnFilterFns,\n } = table;\n const { column } = header;\n const { columnDef } = column;\n const { filterVariant } = columnDef;\n\n const args = { column, rangeFilterIndex, table };\n\n const textFieldProps = {\n ...parseFromValuesOrFunc(muiFilterTextFieldProps, args),\n ...parseFromValuesOrFunc(columnDef.muiFilterTextFieldProps, args),\n ...rest,\n };\n\n const autocompleteProps = {\n ...parseFromValuesOrFunc(muiFilterAutocompleteProps, args),\n ...parseFromValuesOrFunc(columnDef.muiFilterAutocompleteProps, args),\n };\n\n const datePickerProps = {\n ...parseFromValuesOrFunc(muiFilterDatePickerProps, args),\n ...parseFromValuesOrFunc(columnDef.muiFilterDatePickerProps, args),\n } as any;\n\n const dateTimePickerProps = {\n ...parseFromValuesOrFunc(muiFilterDateTimePickerProps, args),\n ...parseFromValuesOrFunc(columnDef.muiFilterDateTimePickerProps, args),\n } as any;\n\n const timePickerProps = {\n ...parseFromValuesOrFunc(muiFilterTimePickerProps, args),\n ...parseFromValuesOrFunc(columnDef.muiFilterTimePickerProps, args),\n } as any;\n\n const {\n allowedColumnFilterOptions,\n currentFilterOption,\n facetedUniqueValues,\n isAutocompleteFilter,\n isDateFilter,\n isMultiSelectFilter,\n isRangeFilter,\n isSelectFilter,\n isTextboxFilter,\n } = getColumnFilterInfo({ header, table });\n\n const dropdownOptions = useDropdownOptions({ header, table });\n\n const filterChipLabel = ['empty', 'notEmpty'].includes(currentFilterOption)\n ? localization[\n `filter${\n currentFilterOption?.charAt?.(0)?.toUpperCase() +\n currentFilterOption?.slice(1)\n }` as keyof typeof localization\n ]\n : '';\n\n const filterPlaceholder = !isRangeFilter\n ? (textFieldProps?.placeholder ??\n localization.filterByColumn?.replace(\n '{column}',\n String(columnDef.header),\n ))\n : rangeFilterIndex === 0\n ? localization.min\n : rangeFilterIndex === 1\n ? localization.max\n : '';\n\n const showChangeModeButton = !!(\n enableColumnFilterModes &&\n columnDef.enableColumnFilterModes !== false &&\n !rangeFilterIndex &&\n (allowedColumnFilterOptions === undefined ||\n !!allowedColumnFilterOptions?.length)\n );\n\n const [anchorEl, setAnchorEl] = useState<HTMLElement | null>(null);\n const [filterValue, setFilterValue] = useState<string | string[]>(() =>\n isMultiSelectFilter\n ? (column.getFilterValue() as string[]) || []\n : isRangeFilter\n ? (column.getFilterValue() as [string, string])?.[\n rangeFilterIndex as number\n ] || ''\n : isAutocompleteFilter\n ? typeof column.getFilterValue() === 'string'\n ? (column.getFilterValue() as string)\n : ''\n : ((column.getFilterValue() as string) ?? ''),\n );\n const [autocompleteValue, setAutocompleteValue] =\n useState<DropdownOption | null>(() =>\n isAutocompleteFilter\n ? ((column.getFilterValue() || null) as DropdownOption | null)\n : null,\n );\n\n const handleChangeDebounced = useCallback(\n debounce(\n (newValue: any) => {\n if (isRangeFilter) {\n column.setFilterValue((old: Array<Date | null | number | string>) => {\n const newFilterValues = old ?? ['', ''];\n newFilterValues[rangeFilterIndex as number] = newValue ?? undefined;\n return newFilterValues;\n });\n } else {\n column.setFilterValue(newValue ?? undefined);\n }\n },\n isTextboxFilter ? (manualFiltering ? 400 : 200) : 1,\n ),\n [],\n );\n\n const handleChange = (newValue: any) => {\n setFilterValue(newValue ?? '');\n handleChangeDebounced(newValue);\n };\n\n const handleTextFieldChange = (event: ChangeEvent<HTMLInputElement>) => {\n const newValue =\n textFieldProps.type === 'date'\n ? event.target.valueAsDate\n : textFieldProps.type === 'number'\n ? event.target.valueAsNumber\n : event.target.value;\n handleChange(newValue);\n textFieldProps?.onChange?.(event);\n };\n\n const handleAutocompleteInputChange = (\n _event: SyntheticEvent,\n newValue: string,\n _reason: AutocompleteInputChangeReason,\n ) => {\n handleChange(newValue);\n };\n\n const handleAutocompleteChange = (newValue: DropdownOption | null) => {\n setAutocompleteValue(newValue);\n handleChangeDebounced(getValueAndLabel(newValue).value);\n };\n\n const handleClear = () => {\n if (isMultiSelectFilter) {\n setFilterValue([]);\n column.setFilterValue([]);\n } else if (isRangeFilter) {\n setFilterValue('');\n column.setFilterValue((old: [string | undefined, string | undefined]) => {\n const newFilterValues = (Array.isArray(old) && old) || ['', ''];\n newFilterValues[rangeFilterIndex as number] = undefined;\n return newFilterValues;\n });\n } else if (isAutocompleteFilter) {\n setAutocompleteValue(null);\n setFilterValue('');\n // when using 'autocomplete' this function is called only inside effect and only if the filterValue === undefined\n // so the following call is excessive; should be uncommented if the handleClear becomes part of the Autocomplete component callbacks\n // column.setFilterValue(undefined)\n } else {\n setFilterValue('');\n column.setFilterValue(undefined);\n }\n };\n\n const handleClearEmptyFilterChip = () => {\n setFilterValue('');\n column.setFilterValue(undefined);\n setColumnFilterFns((prev) => ({\n ...prev,\n [header.id]: allowedColumnFilterOptions?.[0] ?? 'fuzzy',\n }));\n };\n\n const handleFilterMenuOpen = (event: MouseEvent<HTMLElement>) => {\n setAnchorEl(event.currentTarget);\n };\n\n const isMounted = useRef(false);\n\n useEffect(() => {\n if (isMounted.current) {\n const filterValue = column.getFilterValue();\n if (filterValue === undefined) {\n handleClear();\n } else if (isRangeFilter && rangeFilterIndex !== undefined) {\n setFilterValue((filterValue as [string, string])[rangeFilterIndex]);\n } else {\n setFilterValue(filterValue as string);\n }\n }\n isMounted.current = true;\n }, [column.getFilterValue()]);\n\n if (columnDef.Filter) {\n return (\n <>{columnDef.Filter?.({ column, header, rangeFilterIndex, table })}</>\n );\n }\n\n const endAdornment =\n !isAutocompleteFilter && !isDateFilter && !filterChipLabel ? (\n <InputAdornment\n position=\"end\"\n sx={{\n mr: isSelectFilter || isMultiSelectFilter ? '20px' : undefined,\n visibility: (filterValue?.length ?? 0) > 0 ? 'visible' : 'hidden',\n }}\n >\n <Tooltip placement=\"right\" title={localization.clearFilter ?? ''}>\n <span>\n <IconButton\n aria-label={localization.clearFilter}\n disabled={!filterValue?.toString()?.length}\n onClick={handleClear}\n size=\"small\"\n sx={{\n height: '2rem',\n transform: 'scale(0.9)',\n width: '2rem',\n }}\n >\n <CloseIcon />\n </IconButton>\n </span>\n </Tooltip>\n </InputAdornment>\n ) : null;\n\n const startAdornment = showChangeModeButton ? (\n <InputAdornment position=\"start\">\n <Tooltip title={localization.changeFilterMode}>\n <span>\n <IconButton\n aria-label={localization.changeFilterMode}\n onClick={handleFilterMenuOpen}\n size=\"small\"\n sx={{ height: '1.75rem', width: '1.75rem' }}\n >\n <FilterListIcon />\n </IconButton>\n </span>\n </Tooltip>\n {filterChipLabel && (\n <Chip label={filterChipLabel} onDelete={handleClearEmptyFilterChip} />\n )}\n </InputAdornment>\n ) : null;\n\n const commonTextFieldProps: TextFieldProps<any> = {\n fullWidth: true,\n helperText: showChangeModeButton ? (\n <label>\n {localization.filterMode.replace(\n '{filterType}',\n localization[\n `filter${\n currentFilterOption?.charAt(0)?.toUpperCase() +\n currentFilterOption?.slice(1)\n }` as keyof typeof localization\n ],\n )}\n </label>\n ) : null,\n inputRef: (inputRef) => {\n filterInputRefs.current![`${column.id}-${rangeFilterIndex ?? 0}`] =\n inputRef;\n if (textFieldProps.inputRef) {\n textFieldProps.inputRef = inputRef;\n }\n },\n margin: 'none',\n placeholder:\n filterChipLabel || isSelectFilter || isMultiSelectFilter\n ? undefined\n : filterPlaceholder,\n variant: 'standard',\n ...textFieldProps,\n onKeyDown: (e) => {\n e.stopPropagation();\n textFieldProps.onKeyDown?.(e);\n },\n slotProps: {\n ...textFieldProps.slotProps,\n formHelperText: {\n sx: {\n fontSize: '0.75rem',\n lineHeight: '0.8rem',\n whiteSpace: 'nowrap',\n },\n ...textFieldProps.slotProps?.formHelperText,\n },\n htmlInput: {\n 'aria-label': filterPlaceholder,\n autoComplete: 'off',\n disabled: !!filterChipLabel,\n sx: {\n textOverflow: 'ellipsis',\n width: filterChipLabel ? 0 : undefined,\n },\n title: filterPlaceholder,\n ...textFieldProps.slotProps?.htmlInput,\n },\n input: endAdornment //hack because mui looks for presence of endAdornment key instead of undefined\n ? { endAdornment, startAdornment, ...textFieldProps.slotProps?.input }\n : { startAdornment, ...textFieldProps.slotProps?.input },\n },\n sx: (theme) => ({\n minWidth: isDateFilter\n ? '160px'\n : enableColumnFilterModes && rangeFilterIndex === 0\n ? '110px'\n : isRangeFilter\n ? '100px'\n : !filterChipLabel\n ? '120px'\n : 'auto',\n mx: '-2px',\n p: 0,\n width: 'calc(100% + 4px)',\n ...(parseFromValuesOrFunc(textFieldProps?.sx, theme) as any),\n }),\n };\n\n const commonDatePickerProps = {\n onChange: (newDate: any) => {\n handleChange(newDate);\n },\n value: filterValue || null,\n };\n\n return (\n <>\n {filterVariant?.startsWith('time') ? (\n <TimePicker\n {...commonDatePickerProps}\n {...timePickerProps}\n slotProps={{\n ...timePickerProps?.slotProps,\n field: {\n clearable: true,\n onClear: () => handleClear(),\n ...timePickerProps?.slotProps?.field,\n },\n textField: {\n ...commonTextFieldProps,\n ...timePickerProps?.slotProps?.textField,\n },\n }}\n />\n ) : filterVariant?.startsWith('datetime') ? (\n <DateTimePicker\n {...commonDatePickerProps}\n {...dateTimePickerProps}\n slotProps={{\n ...dateTimePickerProps?.slotProps,\n field: {\n clearable: true,\n onClear: () => handleClear(),\n ...dateTimePickerProps?.slotProps?.field,\n },\n textField: {\n ...commonTextFieldProps,\n ...dateTimePickerProps?.slotProps?.textField,\n },\n }}\n />\n ) : filterVariant?.startsWith('date') ? (\n <DatePicker\n {...commonDatePickerProps}\n {...datePickerProps}\n slotProps={{\n ...datePickerProps?.slotProps,\n field: {\n clearable: true,\n onClear: () => handleClear(),\n ...datePickerProps?.slotProps?.field,\n },\n textField: {\n ...commonTextFieldProps,\n ...datePickerProps?.slotProps?.textField,\n },\n }}\n />\n ) : isAutocompleteFilter ? (\n <Autocomplete\n freeSolo\n getOptionLabel={(option: DropdownOption) =>\n getValueAndLabel(option).label\n }\n inputValue={filterValue as string}\n onChange={(_e, newValue) =>\n handleAutocompleteChange(newValue as DropdownOption | null)\n }\n onInputChange={handleAutocompleteInputChange}\n options={\n dropdownOptions?.map((option) => getValueAndLabel(option)) ?? []\n }\n {...autocompleteProps}\n renderInput={(params: AutocompleteRenderInputParams) => {\n const commonInput = getTextFieldSlotProps(\n commonTextFieldProps.slotProps,\n ).input;\n const commonHtmlInput = getTextFieldSlotProps(\n commonTextFieldProps.slotProps,\n ).htmlInput;\n return (\n <TextField\n {...commonTextFieldProps}\n disabled={params.disabled}\n fullWidth={params.fullWidth}\n id={params.id}\n onClick={(e: MouseEvent<HTMLInputElement>) =>\n e.stopPropagation()\n }\n size={params.size}\n slotProps={{\n ...commonTextFieldProps.slotProps,\n htmlInput: {\n ...params.slotProps.htmlInput,\n ...commonHtmlInput,\n },\n input: {\n ...params.slotProps.input,\n startAdornment: commonInput?.startAdornment,\n },\n inputLabel: params.slotProps.inputLabel,\n }}\n />\n );\n }}\n value={autocompleteValue}\n />\n ) : (\n <TextField\n select={isSelectFilter || isMultiSelectFilter}\n {...commonTextFieldProps}\n onChange={handleTextFieldChange}\n onClick={(e: MouseEvent<HTMLInputElement>) => e.stopPropagation()}\n slotProps={{\n ...commonTextFieldProps.slotProps,\n inputLabel: {\n shrink: isSelectFilter || isMultiSelectFilter,\n ...(commonTextFieldProps.slotProps?.inputLabel as any),\n },\n select: {\n displayEmpty: true,\n MenuProps: { disableScrollLock: true },\n multiple: isMultiSelectFilter,\n renderValue: isMultiSelectFilter\n ? (selected: any) =>\n !Array.isArray(selected) || selected?.length === 0 ? (\n <Box sx={{ opacity: 0.5 }}>{filterPlaceholder}</Box>\n ) : (\n <Box\n sx={{ display: 'flex', flexWrap: 'wrap', gap: '2px' }}\n >\n {selected.map((value: string) => {\n const selectedValue = dropdownOptions?.find(\n (option) =>\n getValueAndLabel(option).value === value,\n );\n return (\n <Chip\n key={value}\n label={getValueAndLabel(selectedValue).label}\n />\n );\n })}\n </Box>\n )\n : undefined,\n ...commonTextFieldProps.slotProps?.select,\n },\n }}\n value={\n isMultiSelectFilter\n ? Array.isArray(filterValue)\n ? filterValue\n : []\n : filterValue\n }\n >\n {(isSelectFilter || isMultiSelectFilter) && [\n <MenuItem disabled divider hidden key=\"p\" value=\"\">\n <Box sx={{ opacity: 0.5 }}>{filterPlaceholder}</Box>\n </MenuItem>,\n ...[\n textFieldProps.children ??\n dropdownOptions?.map((option, index) => {\n const { label, value } = getValueAndLabel(option);\n return (\n <MenuItem\n key={`${index}-${value}`}\n sx={{\n alignItems: 'center',\n display: 'flex',\n gap: '0.5rem',\n m: 0,\n }}\n value={value}\n >\n {isMultiSelectFilter && (\n <Checkbox\n checked={(\n (column.getFilterValue() ?? []) as string[]\n ).includes(value)}\n sx={{ mr: '0.5rem' }}\n />\n )}\n {label}{' '}\n {!columnDef.filterSelectOptions &&\n `(${facetedUniqueValues.get(value)})`}\n </MenuItem>\n );\n }),\n ],\n ]}\n </TextField>\n )}\n <MRT_FilterOptionMenu\n anchorEl={anchorEl}\n header={header}\n setAnchorEl={setAnchorEl}\n setFilterValue={setFilterValue}\n table={table}\n />\n </>\n );\n};\n","import { Box, type BoxProps } from '@mui/material';\n\nimport {\n type MRT_Header,\n type MRT_RowData,\n type MRT_TableInstance,\n} from '../../types';\nimport { parseFromValuesOrFunc } from '../../utils/utils';\nimport { MRT_FilterTextField } from './MRT_FilterTextField';\n\nexport interface MRT_FilterRangeFieldsProps<TData extends MRT_RowData>\n extends BoxProps {\n header: MRT_Header<TData>;\n table: MRT_TableInstance<TData>;\n}\n\nexport const MRT_FilterRangeFields = <TData extends MRT_RowData>({\n header,\n table,\n ...rest\n}: MRT_FilterRangeFieldsProps<TData>) => {\n return (\n <Box\n {...rest}\n sx={(theme) => ({\n display: 'grid',\n gap: '1rem',\n gridTemplateColumns: '1fr 1fr',\n ...(parseFromValuesOrFunc(rest?.sx, theme) as any),\n })}\n >\n {[0, 1].map((rangeFilterIndex) => (\n <MRT_FilterTextField\n header={header}\n key={rangeFilterIndex}\n rangeFilterIndex={rangeFilterIndex}\n table={table}\n />\n ))}\n </Box>\n );\n};\n","import { FormHelperText } from '@mui/material';\nimport { Slider, type SliderProps } from '@mui/material';\nimport { Stack } from '@mui/material';\nimport { useEffect, useRef, useState } from 'react';\n\nimport {\n type MRT_Header,\n type MRT_RowData,\n type MRT_TableInstance,\n} from '../../types';\nimport { getColumnFilterInfo } from '../../utils/column.utils';\nimport { parseFromValuesOrFunc } from '../../utils/utils';\n\nexport interface MRT_FilterRangeSliderProps<TData extends MRT_RowData>\n extends SliderProps {\n header: MRT_Header<TData>;\n table: MRT_TableInstance<TData>;\n}\n\nexport const MRT_FilterRangeSlider = <TData extends MRT_RowData>({\n header,\n table,\n ...rest\n}: MRT_FilterRangeSliderProps<TData>) => {\n const {\n options: { enableColumnFilterModes, localization, muiFilterSliderProps },\n refs: { filterInputRefs },\n } = table;\n const { column } = header;\n const { columnDef } = column;\n\n const { currentFilterOption } = getColumnFilterInfo({ header, table });\n\n const showChangeModeButton =\n enableColumnFilterModes && columnDef.enableColumnFilterModes !== false;\n\n const sliderProps = {\n ...parseFromValuesOrFunc(muiFilterSliderProps, { column, table }),\n ...parseFromValuesOrFunc(columnDef.muiFilterSliderProps, { column, table }),\n ...rest,\n };\n\n let [min, max] =\n sliderProps.min !== undefined && sliderProps.max !== undefined\n ? [sliderProps.min, sliderProps.max]\n : (column.getFacetedMinMaxValues() ?? [0, 1]);\n\n //fix potential TanStack Table bugs where min or max is an array\n if (Array.isArray(min)) min = min[0];\n if (Array.isArray(max)) max = max[0];\n if (min === null) min = 0;\n if (max === null) max = 1;\n\n const [filterValues, setFilterValues] = useState([min, max]);\n const columnFilterValue = column.getFilterValue();\n\n const isMounted = useRef(false);\n\n // prevent moving the focus to the next/prev cell when using the arrow keys\n const handleKeyDown = (event: React.KeyboardEvent) => {\n if (event.key === 'ArrowLeft' || event.key === 'ArrowRight') {\n event.stopPropagation();\n }\n };\n\n useEffect(() => {\n if (isMounted.current) {\n if (columnFilterValue === undefined) {\n setFilterValues([min, max]);\n } else if (Array.isArray(columnFilterValue)) {\n setFilterValues(columnFilterValue);\n }\n }\n isMounted.current = true;\n }, [columnFilterValue, min, max]);\n\n return (\n <Stack>\n <Slider\n disableSwap\n max={max}\n min={min}\n onChange={(_event, values) => {\n setFilterValues(values as [number, number]);\n }}\n onChangeCommitted={(_event, value) => {\n if (Array.isArray(value)) {\n if (value[0] <= min && value[1] >= max) {\n //if the user has selected the entire range, remove the filter\n column.setFilterValue(undefined);\n } else {\n column.setFilterValue(value as [number, number]);\n }\n }\n }}\n onKeyDown={handleKeyDown}\n value={filterValues}\n valueLabelDisplay=\"auto\"\n {...sliderProps}\n slotProps={{\n input: {\n ref: (node) => {\n if (node) {\n filterInputRefs.current![`${column.id}-0`] = node;\n // @ts-expect-error\n if (sliderProps?.slotProps?.input?.ref) {\n //@ts-expect-error\n sliderProps.slotProps.input.ref = node;\n }\n }\n },\n },\n }}\n sx={(theme) => ({\n m: 'auto',\n minWidth: `${column.getSize() - 50}px`,\n mt: !showChangeModeButton ? '10px' : '6px',\n px: '4px',\n width: 'calc(100% - 8px)',\n ...(parseFromValuesOrFunc(sliderProps?.sx, theme) as any),\n })}\n />\n {showChangeModeButton ? (\n <FormHelperText\n sx={{\n fontSize: '0.75rem',\n lineHeight: '0.8rem',\n m: '-3px -6px',\n whiteSpace: 'nowrap',\n }}\n >\n {localization.filterMode.replace(\n '{filterType}',\n localization[\n `filter${\n currentFilterOption?.charAt(0)?.toUpperCase() +\n currentFilterOption?.slice(1)\n }` as keyof typeof localization\n ],\n )}\n </FormHelperText>\n ) : null}\n </Stack>\n );\n};\n","import { Collapse, type CollapseProps } from '@mui/material';\n\nimport {\n type MRT_Header,\n type MRT_RowData,\n type MRT_TableInstance,\n} from '../../types';\nimport { getColumnFilterInfo } from '../../utils/column.utils';\nimport { MRT_FilterCheckbox } from '../inputs/MRT_FilterCheckbox';\nimport { MRT_FilterRangeFields } from '../inputs/MRT_FilterRangeFields';\nimport { MRT_FilterRangeSlider } from '../inputs/MRT_FilterRangeSlider';\nimport { MRT_FilterTextField } from '../inputs/MRT_FilterTextField';\n\nexport interface MRT_TableHeadCellFilterContainerProps<\n TData extends MRT_RowData,\n> extends CollapseProps {\n header: MRT_Header<TData>;\n table: MRT_TableInstance<TData>;\n}\n\nexport const MRT_TableHeadCellFilterContainer = <TData extends MRT_RowData>({\n header,\n table,\n ...rest\n}: MRT_TableHeadCellFilterContainerProps<TData>) => {\n const {\n options: { columnFilterDisplayMode },\n } = table;\n const { showColumnFilters } = table.state;\n const { column } = header;\n const { columnDef } = column;\n const { isRangeFilter } = getColumnFilterInfo({ header, table });\n\n return (\n <Collapse\n in={showColumnFilters || columnFilterDisplayMode === 'popover'}\n mountOnEnter\n unmountOnExit\n {...rest}\n >\n {columnDef.filterVariant === 'checkbox' ? (\n <MRT_FilterCheckbox column={column} table={table} />\n ) : columnDef.filterVariant === 'range-slider' ? (\n <MRT_FilterRangeSlider header={header} table={table} />\n ) : isRangeFilter ? (\n <MRT_FilterRangeFields header={header} table={table} />\n ) : (\n <MRT_FilterTextField header={header} table={table} />\n )}\n </Collapse>\n );\n};\n","import { Box } from '@mui/material';\nimport { Grow } from '@mui/material';\nimport { IconButton, type IconButtonProps } from '@mui/material';\nimport { Popover } from '@mui/material';\nimport { Tooltip } from '@mui/material';\nimport { type MouseEvent, useState } from 'react';\n\nimport {\n type MRT_Header,\n type MRT_RowData,\n type MRT_TableInstance,\n} from '../../types';\nimport {\n getColumnFilterInfo,\n useDropdownOptions,\n} from '../../utils/column.utils';\nimport { getValueAndLabel, parseFromValuesOrFunc } from '../../utils/utils';\nimport { MRT_TableHeadCellFilterContainer } from './MRT_TableHeadCellFilterContainer';\n\nexport interface MRT_TableHeadCellFilterLabelProps<TData extends MRT_RowData>\n extends IconButtonProps {\n header: MRT_Header<TData>;\n table: MRT_TableInstance<TData>;\n}\n\nexport const MRT_TableHeadCellFilterLabel = <TData extends MRT_RowData = {}>({\n header,\n table,\n ...rest\n}: MRT_TableHeadCellFilterLabelProps<TData>) => {\n const {\n options: {\n columnFilterDisplayMode,\n icons: { FilterAltIcon },\n localization,\n },\n refs: { filterInputRefs },\n setShowColumnFilters,\n } = table;\n const { column } = header;\n const { columnDef } = column;\n\n const filterValue = column.getFilterValue() as [string, string] | string;\n\n const [anchorEl, setAnchorEl] = useState<HTMLButtonElement | null>(null);\n\n const {\n currentFilterOption,\n isMultiSelectFilter,\n isRangeFilter,\n isSelectFilter,\n } = getColumnFilterInfo({ header, table });\n\n const dropdownOptions = useDropdownOptions({ header, table });\n\n const getSelectLabel = (index?: number) =>\n getValueAndLabel(\n dropdownOptions?.find(\n (option) =>\n getValueAndLabel(option).value ===\n (index !== undefined ? filterValue[index] : filterValue),\n ),\n ).label;\n\n const isFilterActive =\n (Array.isArray(filterValue) && filterValue.some(Boolean)) ||\n (!!filterValue && !Array.isArray(filterValue));\n\n const filterTooltip =\n columnFilterDisplayMode === 'popover' && !isFilterActive\n ? localization.filterByColumn?.replace(\n '{column}',\n String(columnDef.header),\n )\n : localization.filteringByColumn\n .replace('{column}', String(columnDef.header))\n .replace(\n '{filterType}',\n currentFilterOption\n ? localization[\n `filter${\n currentFilterOption.charAt(0).toUpperCase() +\n currentFilterOption.slice(1)\n }` as keyof typeof localization\n ]\n : '',\n )\n .replace(\n '{filterValue}',\n `\"${\n Array.isArray(filterValue)\n ? (filterValue as [string, string])\n .map((value, index) =>\n isMultiSelectFilter ? getSelectLabel(index) : value,\n )\n .join(\n `\" ${isRangeFilter ? localization.and : localization.or} \"`,\n )\n : isSelectFilter\n ? getSelectLabel()\n : (filterValue as string)\n }\"`,\n )\n .replace('\" \"', '');\n\n return (\n <>\n <Grow\n in={\n columnFilterDisplayMode === 'popover' ||\n (!!filterValue && !isRangeFilter) ||\n (isRangeFilter && (!!filterValue?.[0] || !!filterValue?.[1]))\n }\n unmountOnExit\n >\n <Box component=\"span\" sx={{ flex: '0 0' }}>\n <Tooltip placement=\"top\" title={filterTooltip}>\n <IconButton\n disableRipple\n onClick={(event: MouseEvent<HTMLButtonElement>) => {\n if (columnFilterDisplayMode === 'popover') {\n setAnchorEl(event.currentTarget);\n } else {\n setShowColumnFilters(true);\n }\n queueMicrotask(() => {\n filterInputRefs.current?.[`${column.id}-0`]?.focus?.();\n filterInputRefs.current?.[`${column.id}-0`]?.select?.();\n });\n event.stopPropagation();\n }}\n size=\"small\"\n {...rest}\n sx={(theme) => ({\n height: '16px',\n ml: '4px',\n opacity: isFilterActive ? 1 : 0.3,\n p: '8px',\n transform: 'scale(0.75)',\n transition: 'all 150ms ease-in-out',\n width: '16px',\n ...(parseFromValuesOrFunc(rest?.sx, theme) as any),\n })}\n >\n <FilterAltIcon />\n </IconButton>\n </Tooltip>\n </Box>\n </Grow>\n {columnFilterDisplayMode === 'popover' && (\n <Popover\n anchorEl={anchorEl}\n anchorOrigin={{\n horizontal: 'center',\n vertical: 'top',\n }}\n disableScrollLock\n onClick={(event) => event.stopPropagation()}\n onClose={(event) => {\n //@ts-expect-error\n event.stopPropagation();\n setAnchorEl(null);\n }}\n onKeyDown={(event) => event.key === 'Enter' && setAnchorEl(null)}\n open={!!anchorEl}\n slotProps={{ paper: { sx: { overflow: 'visible' } } }}\n transformOrigin={{\n horizontal: 'center',\n vertical: 'bottom',\n }}\n >\n <Box sx={{ p: '1rem' }}>\n <MRT_TableHeadCellFilterContainer header={header} table={table} />\n </Box>\n </Popover>\n )}\n </>\n );\n};\n","import { type IconButtonProps } from '@mui/material/IconButton';\nimport { type DragEvent, type RefObject } from 'react';\n\nimport {\n type MRT_Column,\n type MRT_RowData,\n type MRT_TableInstance,\n} from '../../types';\nimport { reorderColumn } from '../../utils/column.utils';\nimport { parseFromValuesOrFunc } from '../../utils/utils';\nimport { MRT_GrabHandleButton } from '../buttons/MRT_GrabHandleButton';\n\nexport interface MRT_TableHeadCellGrabHandleProps<TData extends MRT_RowData>\n extends IconButtonProps {\n column: MRT_Column<TData>;\n table: MRT_TableInstance<TData>;\n tableHeadCellRef: RefObject<HTMLTableCellElement | null>;\n}\n\nexport const MRT_TableHeadCellGrabHandle = <TData extends MRT_RowData>({\n column,\n table,\n tableHeadCellRef,\n ...rest\n}: MRT_TableHeadCellGrabHandleProps<TData>) => {\n const {\n options: { enableColumnOrdering, muiColumnDragHandleProps },\n setColumnOrder,\n setColumnPinning,\n setDraggingColumn,\n setHoveredColumn,\n } = table;\n const { columnDef } = column;\n const { columnOrder, draggingColumn, hoveredColumn } = table.state;\n\n const iconButtonProps = {\n ...parseFromValuesOrFunc(muiColumnDragHandleProps, { column, table }),\n ...parseFromValuesOrFunc(columnDef.muiColumnDragHandleProps, {\n column,\n table,\n }),\n ...rest,\n };\n\n const handleDragStart = (event: DragEvent<HTMLButtonElement>) => {\n iconButtonProps?.onDragStart?.(event);\n setDraggingColumn(column);\n try {\n event.dataTransfer.setDragImage(\n tableHeadCellRef.current as HTMLElement,\n 0,\n 0,\n );\n } catch (e) {\n console.error(e);\n }\n };\n\n const handleDragEnd = (event: DragEvent<HTMLButtonElement>) => {\n iconButtonProps?.onDragEnd?.(event);\n if (hoveredColumn?.id === 'drop-zone') {\n column.toggleGrouping();\n } else if (\n enableColumnOrdering &&\n hoveredColumn &&\n hoveredColumn?.id !== draggingColumn?.id\n ) {\n const reorderedColumns = reorderColumn(\n column,\n hoveredColumn as MRT_Column<TData>,\n columnOrder,\n );\n setColumnOrder(reorderedColumns);\n setColumnPinning(({ end = [], start = [] }) => ({\n end: reorderedColumns.filter((header) => end.includes(header)),\n start: reorderedColumns.filter((header) => start.includes(header)),\n }));\n }\n setDraggingColumn(null);\n setHoveredColumn(null);\n };\n\n return (\n <MRT_GrabHandleButton\n {...iconButtonProps}\n onDragEnd={handleDragEnd}\n onDragStart={handleDragStart}\n table={table}\n />\n );\n};\n","import { Box } from '@mui/material';\nimport { Divider, type DividerProps } from '@mui/material';\n\nimport {\n type MRT_Header,\n type MRT_RowData,\n type MRT_TableInstance,\n} from '../../types';\nimport { parseFromValuesOrFunc } from '../../utils/utils';\n\nexport interface MRT_TableHeadCellResizeHandleProps<TData extends MRT_RowData>\n extends DividerProps {\n header: MRT_Header<TData>;\n table: MRT_TableInstance<TData>;\n}\n\nexport const MRT_TableHeadCellResizeHandle = <TData extends MRT_RowData>({\n header,\n table,\n ...rest\n}: MRT_TableHeadCellResizeHandleProps<TData>) => {\n const {\n options: { columnResizeDirection, columnResizeMode },\n setColumnResizing,\n } = table;\n const { density } = table.state;\n const { column } = header;\n\n const handler = header.getResizeHandler();\n\n const mx =\n density === 'compact'\n ? '-8px'\n : density === 'comfortable'\n ? '-16px'\n : '-24px';\n\n const lr = column.columnDef.columnDefType === 'display' ? '4px' : '0';\n\n return (\n <Box\n className=\"Mui-TableHeadCell-ResizeHandle-Wrapper\"\n onDoubleClick={() => {\n setColumnResizing((old) => ({\n ...old,\n isResizingColumn: false,\n }));\n column.resetSize();\n }}\n onMouseDown={handler}\n onTouchStart={handler}\n style={{\n transform:\n column.getIsResizing() && columnResizeMode === 'onEnd'\n ? `translateX(${\n (columnResizeDirection === 'rtl' ? -1 : 1) *\n (table.state.columnResizing.deltaOffset ?? 0)\n }px)`\n : undefined,\n }}\n sx={(theme) => ({\n '&:active > hr': {\n backgroundColor: theme.palette.info.main,\n opacity:\n header.subHeaders.length || columnResizeMode === 'onEnd' ? 1 : 0,\n },\n cursor: 'col-resize',\n left: columnResizeDirection === 'rtl' ? lr : undefined,\n ml: columnResizeDirection === 'rtl' ? mx : undefined,\n mr: columnResizeDirection === 'ltr' ? mx : undefined,\n position: 'absolute',\n px: '4px',\n right: columnResizeDirection === 'ltr' ? lr : undefined,\n })}\n >\n <Divider\n className=\"Mui-TableHeadCell-ResizeHandle-Divider\"\n flexItem\n orientation=\"vertical\"\n sx={(theme) => ({\n borderRadius: '2px',\n borderWidth: '2px',\n height: '24px',\n touchAction: 'none',\n transform: 'translateX(4px)',\n transition: column.getIsResizing()\n ? undefined\n : 'all 150ms ease-in-out',\n userSelect: 'none',\n zIndex: 4,\n ...(parseFromValuesOrFunc(rest?.sx, theme) as any),\n })}\n />\n </Box>\n );\n};\n","import { Badge } from '@mui/material';\nimport { TableSortLabel, type TableSortLabelProps } from '@mui/material';\nimport { Tooltip } from '@mui/material';\n\nimport {\n type MRT_Header,\n type MRT_RowData,\n type MRT_TableInstance,\n} from '../../types';\nimport { parseFromValuesOrFunc } from '../../utils/utils';\n\nexport interface MRT_TableHeadCellSortLabelProps<TData extends MRT_RowData>\n extends TableSortLabelProps {\n header: MRT_Header<TData>;\n table: MRT_TableInstance<TData>;\n}\n\nexport const MRT_TableHeadCellSortLabel = <TData extends MRT_RowData>({\n header,\n table,\n ...rest\n}: MRT_TableHeadCellSortLabelProps<TData>) => {\n const {\n options: {\n icons: { ArrowDownwardIcon, SyncAltIcon },\n localization,\n },\n } = table;\n const { column } = header;\n const { columnDef } = column;\n const { isLoading, showSkeletons, sorting } = table.state;\n\n const isSorted = !!column.getIsSorted();\n\n const sortTooltip =\n isLoading || showSkeletons\n ? ''\n : column.getIsSorted()\n ? column.getIsSorted() === 'desc'\n ? localization.sortedByColumnDesc.replace(\n '{column}',\n columnDef.header,\n )\n : localization.sortedByColumnAsc.replace('{column}', columnDef.header)\n : column.getNextSortingOrder() === 'desc'\n ? localization.sortByColumnDesc.replace('{column}', columnDef.header)\n : localization.sortByColumnAsc.replace('{column}', columnDef.header);\n\n const direction = isSorted\n ? (column.getIsSorted() as 'asc' | 'desc')\n : undefined;\n\n return (\n <Tooltip placement=\"top\" title={sortTooltip}>\n <Badge\n badgeContent={sorting.length > 1 ? column.getSortIndex() + 1 : 0}\n overlap=\"circular\"\n >\n <TableSortLabel\n active\n aria-label={sortTooltip}\n direction={direction}\n IconComponent={\n !isSorted\n ? (props) => (\n <SyncAltIcon\n {...props}\n direction={direction}\n style={{\n transform: 'rotate(-90deg) scaleX(0.9) translateX(-1px)',\n }}\n />\n )\n : ArrowDownwardIcon\n }\n onClick={(e) => {\n e.stopPropagation();\n header.column.getToggleSortingHandler()?.(e);\n }}\n {...rest}\n sx={(theme) => ({\n '.MuiTableSortLabel-icon': {\n color: `${\n theme.palette.mode === 'dark'\n ? theme.palette.text.primary\n : theme.palette.text.secondary\n } !important`,\n },\n flex: '0 0',\n opacity: isSorted ? 1 : 0.3,\n transition: 'all 150ms ease-in-out',\n width: '3ch',\n ...(parseFromValuesOrFunc(rest?.sx, theme) as any),\n })}\n />\n </Badge>\n </Tooltip>\n );\n};\n","import { Box } from '@mui/material';\nimport { TableCell, type TableCellProps } from '@mui/material';\nimport { useTheme } from '@mui/material/styles';\nimport { type Theme } from '@mui/material/styles';\nimport { type DragEvent, useCallback, useMemo, useRef } from 'react';\n\nimport {\n type MRT_ColumnVirtualizer,\n type MRT_Header,\n type MRT_RowData,\n type MRT_TableInstance,\n} from '../../types';\nimport { cellKeyboardShortcuts } from '../../utils/cell.utils';\nimport { getCommonMRTCellStyles } from '../../utils/style.utils';\nimport { parseFromValuesOrFunc } from '../../utils/utils';\nimport { MRT_TableHeadCellColumnActionsButton } from './MRT_TableHeadCellColumnActionsButton';\nimport { MRT_TableHeadCellFilterContainer } from './MRT_TableHeadCellFilterContainer';\nimport { MRT_TableHeadCellFilterLabel } from './MRT_TableHeadCellFilterLabel';\nimport { MRT_TableHeadCellGrabHandle } from './MRT_TableHeadCellGrabHandle';\nimport { MRT_TableHeadCellResizeHandle } from './MRT_TableHeadCellResizeHandle';\nimport { MRT_TableHeadCellSortLabel } from './MRT_TableHeadCellSortLabel';\n\nexport interface MRT_TableHeadCellProps<TData extends MRT_RowData>\n extends TableCellProps {\n columnVirtualizer?: MRT_ColumnVirtualizer;\n header: MRT_Header<TData>;\n staticColumnIndex?: number;\n table: MRT_TableInstance<TData>;\n}\n\nexport const MRT_TableHeadCell = <TData extends MRT_RowData>({\n columnVirtualizer,\n header,\n staticColumnIndex,\n table,\n ...rest\n}: MRT_TableHeadCellProps<TData>) => {\n const theme = useTheme();\n const {\n options: {\n columnFilterDisplayMode,\n columnResizeDirection,\n columnResizeMode,\n enableColumnActions,\n enableColumnDragging,\n enableColumnOrdering,\n enableColumnPinning,\n enableGrouping,\n enableKeyboardShortcuts,\n enableMultiSort,\n layoutMode,\n mrtTheme: { draggingBorderColor },\n muiTableHeadCellProps,\n },\n refs: { tableHeadCellRefs },\n setHoveredColumn,\n } = table;\n const {\n columnResizing,\n density,\n draggingColumn,\n grouping,\n hoveredColumn,\n showColumnFilters,\n } = table.state;\n const { column } = header;\n const { columnDef } = column;\n const { columnDefType } = columnDef;\n\n const tableCellProps = {\n ...parseFromValuesOrFunc(muiTableHeadCellProps, { column, table }),\n ...parseFromValuesOrFunc(columnDef.muiTableHeadCellProps, {\n column,\n table,\n }),\n ...rest,\n };\n\n const isColumnPinned =\n enableColumnPinning &&\n columnDef.columnDefType !== 'group' &&\n column.getIsPinned();\n\n const showColumnActions =\n (enableColumnActions || columnDef.enableColumnActions) &&\n columnDef.enableColumnActions !== false;\n\n const showDragHandle =\n enableColumnDragging !== false &&\n columnDef.enableColumnDragging !== false &&\n (enableColumnDragging ||\n (enableColumnOrdering && columnDef.enableColumnOrdering !== false) ||\n (enableGrouping &&\n columnDef.enableGrouping !== false &&\n !grouping.includes(column.id)));\n\n const headerPL = useMemo(() => {\n let pl = 0;\n if (column.getCanSort()) pl += 1;\n if (showColumnActions) pl += 1.75;\n if (showDragHandle) pl += 1.5;\n return pl;\n }, [showColumnActions, showDragHandle]);\n\n const draggingBorders = useMemo(() => {\n const showResizeBorder =\n columnResizing.isResizingColumn === column.id &&\n columnResizeMode === 'onChange' &&\n !header.subHeaders.length;\n\n const borderStyle = showResizeBorder\n ? `2px solid ${draggingBorderColor} !important`\n : draggingColumn?.id === column.id\n ? `1px dashed ${theme.palette.grey[500]}`\n : hoveredColumn?.id === column.id\n ? `2px dashed ${draggingBorderColor}`\n : undefined;\n\n if (showResizeBorder) {\n return columnResizeDirection === 'ltr'\n ? { borderRight: borderStyle }\n : { borderLeft: borderStyle };\n }\n const draggingBorders = borderStyle\n ? {\n borderLeft: borderStyle,\n borderRight: borderStyle,\n borderTop: borderStyle,\n }\n : undefined;\n\n return draggingBorders;\n }, [draggingColumn, hoveredColumn, columnResizing.isResizingColumn]);\n\n const handleDragEnter = (_e: DragEvent) => {\n if (enableGrouping && hoveredColumn?.id === 'drop-zone') {\n setHoveredColumn(null);\n }\n if (enableColumnOrdering && draggingColumn && columnDefType !== 'group') {\n setHoveredColumn(\n columnDef.enableColumnOrdering !== false ? column : null,\n );\n }\n };\n\n const handleDragOver = (e: DragEvent) => {\n if (columnDef.enableColumnOrdering !== false) {\n e.preventDefault();\n }\n };\n\n const handleKeyDown = (event: React.KeyboardEvent<HTMLTableCellElement>) => {\n tableCellProps?.onKeyDown?.(event);\n cellKeyboardShortcuts({\n cellValue: header.column.columnDef.header,\n event,\n header,\n table,\n });\n };\n\n const tableHeadCellRef = useRef<HTMLTableCellElement | null>(null);\n\n const handleRef = useCallback(\n (node: HTMLTableCellElement) => {\n tableHeadCellRef.current = node;\n if (node) {\n if (tableHeadCellRefs.current) {\n tableHeadCellRefs.current[column.id] = node;\n }\n if (columnDefType !== 'group') {\n columnVirtualizer?.measureElement?.(node);\n }\n }\n },\n [column.id, columnDefType, columnVirtualizer, tableHeadCellRefs],\n );\n\n const HeaderElement =\n parseFromValuesOrFunc(columnDef.Header, {\n column,\n header,\n table,\n }) ?? columnDef.header;\n\n return (\n <TableCell\n align={\n columnDefType === 'group'\n ? 'center'\n : theme.direction === 'rtl'\n ? 'right'\n : 'left'\n }\n aria-sort={\n column.getIsSorted()\n ? column.getIsSorted() === 'asc'\n ? 'ascending'\n : 'descending'\n : 'none'\n }\n colSpan={header.colSpan}\n data-can-sort={column.getCanSort() || undefined}\n data-index={staticColumnIndex}\n data-pinned={!!isColumnPinned || undefined}\n data-sort={column.getIsSorted() || undefined}\n onDragEnter={handleDragEnter}\n onDragOver={handleDragOver}\n ref={handleRef}\n tabIndex={enableKeyboardShortcuts ? 0 : undefined}\n {...tableCellProps}\n onKeyDown={handleKeyDown}\n sx={(theme: Theme) => ({\n '& :hover': {\n '.MuiButtonBase-root': {\n opacity: 1,\n },\n },\n flexDirection: layoutMode?.startsWith('grid') ? 'column' : undefined,\n fontWeight: 'bold',\n overflow: 'visible',\n p:\n density === 'compact'\n ? '0.5rem'\n : density === 'comfortable'\n ? columnDefType === 'display'\n ? '0.75rem'\n : '1rem'\n : columnDefType === 'display'\n ? '1rem 1.25rem'\n : '1.5rem',\n pb:\n columnDefType === 'display'\n ? 0\n : showColumnFilters || density === 'compact'\n ? '0.4rem'\n : '0.6rem',\n pt:\n columnDefType === 'group' || density === 'compact'\n ? '0.25rem'\n : density === 'comfortable'\n ? '.75rem'\n : '1.25rem',\n userSelect: enableMultiSort && column.getCanSort() ? 'none' : undefined,\n verticalAlign: 'top',\n ...getCommonMRTCellStyles({\n column,\n header,\n table,\n tableCellProps,\n theme,\n }),\n ...draggingBorders,\n })}\n >\n {header.isPlaceholder\n ? null\n : (tableCellProps.children ?? (\n <Box\n className=\"Mui-TableHeadCell-Content\"\n sx={{\n alignItems: 'center',\n display: 'flex',\n flexDirection:\n tableCellProps?.align === 'right' ? 'row-reverse' : 'row',\n justifyContent:\n columnDefType === 'group' ||\n tableCellProps?.align === 'center'\n ? 'center'\n : column.getCanResize()\n ? 'space-between'\n : 'flex-start',\n position: 'relative',\n width: '100%',\n }}\n >\n <Box\n className=\"Mui-TableHeadCell-Content-Labels\"\n onClick={column.getToggleSortingHandler()}\n sx={{\n alignItems: 'center',\n cursor:\n column.getCanSort() && columnDefType !== 'group'\n ? 'pointer'\n : undefined,\n display: 'flex',\n flexDirection:\n tableCellProps?.align === 'right' ? 'row-reverse' : 'row',\n overflow: columnDefType === 'data' ? 'hidden' : undefined,\n pl:\n tableCellProps?.align === 'center'\n ? `${headerPL}rem`\n : undefined,\n }}\n >\n <Box\n className=\"Mui-TableHeadCell-Content-Wrapper\"\n sx={{\n '&:hover': {\n textOverflow: 'clip',\n },\n minWidth: `${Math.min(columnDef.header?.length ?? 0, 4)}ch`,\n overflow: columnDefType === 'data' ? 'hidden' : undefined,\n textOverflow: 'ellipsis',\n whiteSpace:\n (columnDef.header?.length ?? 0) < 20\n ? 'nowrap'\n : 'normal',\n }}\n >\n {HeaderElement}\n </Box>\n {column.getCanFilter() && (\n <MRT_TableHeadCellFilterLabel header={header} table={table} />\n )}\n {column.getCanSort() && (\n <MRT_TableHeadCellSortLabel header={header} table={table} />\n )}\n </Box>\n {columnDefType !== 'group' && (\n <Box\n className=\"Mui-TableHeadCell-Content-Actions\"\n sx={{\n whiteSpace: 'nowrap',\n }}\n >\n {showDragHandle && (\n <MRT_TableHeadCellGrabHandle\n column={column}\n table={table}\n tableHeadCellRef={tableHeadCellRef}\n />\n )}\n {showColumnActions && (\n <MRT_TableHeadCellColumnActionsButton\n header={header}\n table={table}\n />\n )}\n </Box>\n )}\n {column.getCanResize() && (\n <MRT_TableHeadCellResizeHandle header={header} table={table} />\n )}\n </Box>\n ))}\n {columnFilterDisplayMode === 'subheader' && column.getCanFilter() && (\n <MRT_TableHeadCellFilterContainer header={header} table={table} />\n )}\n </TableCell>\n );\n};\n","import { TableRow, type TableRowProps } from '@mui/material';\nimport { alpha } from '@mui/material/styles';\n\nimport {\n type MRT_ColumnVirtualizer,\n type MRT_Header,\n type MRT_HeaderGroup,\n type MRT_RowData,\n type MRT_TableInstance,\n type MRT_VirtualItem,\n} from '../../types';\nimport { parseFromValuesOrFunc } from '../../utils/utils';\nimport { MRT_TableHeadCell } from './MRT_TableHeadCell';\n\nexport interface MRT_TableHeadRowProps<TData extends MRT_RowData>\n extends TableRowProps {\n columnVirtualizer?: MRT_ColumnVirtualizer;\n headerGroup: MRT_HeaderGroup<TData>;\n table: MRT_TableInstance<TData>;\n}\n\nexport const MRT_TableHeadRow = <TData extends MRT_RowData>({\n columnVirtualizer,\n headerGroup,\n table,\n ...rest\n}: MRT_TableHeadRowProps<TData>) => {\n const {\n options: {\n enableStickyHeader,\n layoutMode,\n mrtTheme: { baseBackgroundColor },\n muiTableHeadRowProps,\n },\n } = table;\n\n const { virtualColumns, virtualPaddingLeft, virtualPaddingRight } =\n columnVirtualizer ?? {};\n\n const tableRowProps = {\n ...parseFromValuesOrFunc(muiTableHeadRowProps, {\n headerGroup,\n table,\n }),\n ...rest,\n };\n\n return (\n <TableRow\n {...tableRowProps}\n sx={(theme) => ({\n backgroundColor: baseBackgroundColor,\n boxShadow: `4px 0 8px ${alpha(theme.palette.common.black, 0.1)}`,\n display: layoutMode?.startsWith('grid') ? 'flex' : undefined,\n position:\n enableStickyHeader && layoutMode === 'semantic'\n ? 'sticky'\n : 'relative',\n top: 0,\n ...(parseFromValuesOrFunc(tableRowProps?.sx, theme) as any),\n })}\n >\n {virtualPaddingLeft ? (\n <th style={{ display: 'flex', width: virtualPaddingLeft }} />\n ) : null}\n {(virtualColumns ?? headerGroup.headers).map(\n (headerOrVirtualHeader, staticColumnIndex) => {\n let header = headerOrVirtualHeader as MRT_Header<TData>;\n if (columnVirtualizer) {\n staticColumnIndex = (headerOrVirtualHeader as MRT_VirtualItem)\n .index;\n header = headerGroup.headers[staticColumnIndex];\n }\n\n return header ? (\n <MRT_TableHeadCell\n columnVirtualizer={columnVirtualizer}\n header={header}\n key={header.id}\n staticColumnIndex={staticColumnIndex}\n table={table}\n />\n ) : null;\n },\n )}\n {virtualPaddingRight ? (\n <th style={{ display: 'flex', width: virtualPaddingRight }} />\n ) : null}\n </TableRow>\n );\n};\n","import { TableHead, type TableHeadProps } from '@mui/material';\n\nimport {\n type MRT_ColumnVirtualizer,\n type MRT_RowData,\n type MRT_TableInstance,\n} from '../../types';\nimport { parseFromValuesOrFunc } from '../../utils/utils';\nimport { MRT_ToolbarAlertBanner } from '../toolbar/MRT_ToolbarAlertBanner';\nimport { MRT_TableHeadRow } from './MRT_TableHeadRow';\n\nexport interface MRT_TableHeadProps<TData extends MRT_RowData>\n extends TableHeadProps {\n columnVirtualizer?: MRT_ColumnVirtualizer;\n table: MRT_TableInstance<TData>;\n}\n\nexport const MRT_TableHead = <TData extends MRT_RowData>({\n columnVirtualizer,\n table,\n ...rest\n}: MRT_TableHeadProps<TData>) => {\n const {\n options: {\n enableStickyHeader,\n layoutMode,\n muiTableHeadProps,\n positionToolbarAlertBanner,\n },\n refs: { tableHeadRef },\n } = table;\n const { isFullScreen, showAlertBanner } = table.state;\n\n const tableHeadProps = {\n ...parseFromValuesOrFunc(muiTableHeadProps, { table }),\n ...rest,\n };\n\n const stickyHeader = enableStickyHeader || isFullScreen;\n\n return (\n <TableHead\n {...tableHeadProps}\n ref={(ref: HTMLTableSectionElement) => {\n tableHeadRef.current = ref;\n if (tableHeadProps?.ref) {\n // @ts-expect-error\n tableHeadProps.ref.current = ref;\n }\n }}\n sx={(theme) => ({\n display: layoutMode?.startsWith('grid') ? 'grid' : undefined,\n opacity: 0.97,\n position: stickyHeader ? 'sticky' : 'relative',\n top: stickyHeader && layoutMode?.startsWith('grid') ? 0 : undefined,\n zIndex: stickyHeader ? 2 : undefined,\n ...(parseFromValuesOrFunc(tableHeadProps?.sx, theme) as any),\n })}\n >\n {positionToolbarAlertBanner === 'head-overlay' &&\n (showAlertBanner || table.getSelectedRowModel().rows.length > 0) ? (\n <tr\n style={{\n display: layoutMode?.startsWith('grid') ? 'grid' : undefined,\n }}\n >\n <th\n colSpan={table.getVisibleLeafColumns().length}\n style={{\n display: layoutMode?.startsWith('grid') ? 'grid' : undefined,\n padding: 0,\n }}\n >\n <MRT_ToolbarAlertBanner table={table} />\n </th>\n </tr>\n ) : (\n table\n .getHeaderGroups()\n .map((headerGroup) => (\n <MRT_TableHeadRow\n columnVirtualizer={columnVirtualizer}\n headerGroup={headerGroup as any}\n key={headerGroup.id}\n table={table}\n />\n ))\n )}\n </TableHead>\n );\n};\n","import { Collapse } from '@mui/material';\nimport { IconButton } from '@mui/material';\nimport { InputAdornment } from '@mui/material';\nimport { TextField, type TextFieldProps } from '@mui/material';\nimport { Tooltip } from '@mui/material';\nimport { debounce } from '@mui/material/utils';\nimport {\n type ChangeEvent,\n type MouseEvent,\n useCallback,\n useEffect,\n useRef,\n useState,\n} from 'react';\n\nimport { type MRT_RowData, type MRT_TableInstance } from '../../types';\nimport { getTextFieldSlotProps } from '../../utils/slotProps.utils';\nimport { parseFromValuesOrFunc } from '../../utils/utils';\nimport { MRT_FilterOptionMenu } from '../menus/MRT_FilterOptionMenu';\n\nexport interface MRT_GlobalFilterTextFieldProps<TData extends MRT_RowData>\n extends TextFieldProps<'standard'> {\n table: MRT_TableInstance<TData>;\n}\n\nexport const MRT_GlobalFilterTextField = <TData extends MRT_RowData>({\n table,\n ...rest\n}: MRT_GlobalFilterTextFieldProps<TData>) => {\n const {\n options: {\n enableGlobalFilterModes,\n icons: { CloseIcon, SearchIcon },\n localization,\n manualFiltering,\n muiSearchTextFieldProps,\n },\n refs: { searchInputRef },\n setGlobalFilter,\n } = table;\n const { globalFilter, showGlobalFilter } = table.state;\n\n const textFieldProps = {\n ...parseFromValuesOrFunc(muiSearchTextFieldProps, {\n table,\n }),\n ...rest,\n };\n\n const isMounted = useRef(false);\n const [anchorEl, setAnchorEl] = useState<HTMLElement | null>(null);\n const [searchValue, setSearchValue] = useState(globalFilter ?? '');\n\n const handleChangeDebounced = useCallback(\n debounce(\n (event: ChangeEvent<HTMLInputElement>) => {\n setGlobalFilter(event.target.value ?? undefined);\n },\n manualFiltering ? 500 : 250,\n ),\n [],\n );\n\n const handleChange = (event: ChangeEvent<HTMLInputElement>) => {\n setSearchValue(event.target.value);\n handleChangeDebounced(event);\n };\n\n const handleGlobalFilterMenuOpen = (event: MouseEvent<HTMLElement>) => {\n setAnchorEl(event.currentTarget);\n };\n\n const handleClear = () => {\n setSearchValue('');\n setGlobalFilter(undefined);\n };\n\n useEffect(() => {\n if (isMounted.current) {\n if (globalFilter === undefined) {\n handleClear();\n } else {\n setSearchValue(globalFilter);\n }\n }\n isMounted.current = true;\n }, [globalFilter]);\n\n const consumerSlots = getTextFieldSlotProps(textFieldProps.slotProps);\n\n return (\n <Collapse\n in={showGlobalFilter}\n mountOnEnter\n orientation=\"horizontal\"\n unmountOnExit\n >\n <TextField\n onChange={handleChange}\n placeholder={localization.search}\n size=\"small\"\n value={searchValue ?? ''}\n variant=\"outlined\"\n {...textFieldProps}\n inputRef={(inputRef) => {\n searchInputRef.current = inputRef;\n if (textFieldProps?.inputRef) {\n textFieldProps.inputRef = inputRef;\n }\n }}\n slotProps={{\n htmlInput: { autoComplete: 'off', ...consumerSlots.htmlInput },\n input: {\n endAdornment: (\n <InputAdornment position=\"end\">\n <Tooltip title={localization.clearSearch ?? ''}>\n <span>\n <IconButton\n aria-label={localization.clearSearch}\n disabled={!searchValue?.length}\n onClick={handleClear}\n size=\"small\"\n >\n <CloseIcon />\n </IconButton>\n </span>\n </Tooltip>\n </InputAdornment>\n ),\n startAdornment: enableGlobalFilterModes ? (\n <InputAdornment position=\"start\">\n <Tooltip title={localization.changeSearchMode}>\n <IconButton\n aria-label={localization.changeSearchMode}\n onClick={handleGlobalFilterMenuOpen}\n size=\"small\"\n sx={{ height: '1.75rem', width: '1.75rem' }}\n >\n <SearchIcon />\n </IconButton>\n </Tooltip>\n </InputAdornment>\n ) : (\n <SearchIcon style={{ marginRight: '4px' }} />\n ),\n ...consumerSlots.input,\n sx: { mb: 0, ...consumerSlots.input?.sx },\n },\n }}\n />\n <MRT_FilterOptionMenu\n anchorEl={anchorEl}\n onSelect={handleClear}\n setAnchorEl={setAnchorEl}\n table={table}\n />\n </Collapse>\n );\n};\n","import { aggregationFns } from '@tanstack/react-table';\n\nexport const MRT_AggregationFns = { ...aggregationFns };\n","import { rankings, rankItem } from '@tanstack/match-sorter-utils';\nimport {\n filterFn_arrIncludes,\n filterFn_arrIncludesAll,\n filterFn_arrIncludesSome,\n filterFn_equalsString,\n filterFn_equalsStringSensitive,\n filterFn_includesString,\n filterFn_includesStringSensitive,\n filterFn_inNumberRange,\n filterFn_weakEquals,\n type FilterMeta,\n type Row,\n} from '@tanstack/react-table';\n\nimport { type MRT_RowData } from '../types';\n\nconst fuzzy = <TData extends MRT_RowData>(\n row: Row<any, TData>,\n columnId: string,\n filterValue: number | string,\n addMeta?: (meta: FilterMeta) => void,\n): boolean => {\n const itemRank = rankItem(\n row.getValue<null | number | string>(columnId),\n filterValue as string,\n {\n threshold: rankings.MATCHES,\n },\n );\n addMeta?.(itemRank);\n return itemRank.passed;\n};\n\nfuzzy.autoRemove = (val: any) => !val;\n\nconst contains = <TData extends MRT_RowData>(\n row: Row<any, TData>,\n id: string,\n filterValue: number | string,\n): boolean =>\n !!row\n .getValue<null | number | string>(id)\n ?.toString()\n .toLowerCase()\n .trim()\n .includes(filterValue.toString().toLowerCase().trim());\n\ncontains.autoRemove = (val: any) => !val;\n\nconst startsWith = <TData extends MRT_RowData>(\n row: Row<any, TData>,\n id: string,\n filterValue: number | string,\n): boolean =>\n !!row\n .getValue<null | number | string>(id)\n ?.toString()\n .toLowerCase()\n .trim()\n .startsWith(filterValue.toString().toLowerCase().trim());\n\nstartsWith.autoRemove = (val: any) => !val;\n\nconst endsWith = <TData extends MRT_RowData>(\n row: Row<any, TData>,\n id: string,\n filterValue: number | string,\n): boolean =>\n !!row\n .getValue<null | number | string>(id)\n ?.toString()\n .toLowerCase()\n .trim()\n .endsWith(filterValue.toString().toLowerCase().trim());\n\nendsWith.autoRemove = (val: any) => !val;\n\nconst equals = <TData extends MRT_RowData>(\n row: Row<any, TData>,\n id: string,\n filterValue: number | string,\n): boolean =>\n row.getValue<null | number | string>(id)?.toString().toLowerCase().trim() ===\n filterValue.toString().toLowerCase().trim();\n\nequals.autoRemove = (val: any) => !val;\n\nconst notEquals = <TData extends MRT_RowData>(\n row: Row<any, TData>,\n id: string,\n filterValue: number | string,\n): boolean =>\n row.getValue<null | number | string>(id)?.toString().toLowerCase().trim() !==\n filterValue.toString().toLowerCase().trim();\n\nnotEquals.autoRemove = (val: any) => !val;\n\nconst greaterThan = <TData extends MRT_RowData>(\n row: Row<any, TData>,\n id: string,\n filterValue: number | string,\n): boolean =>\n !isNaN(+filterValue) && !isNaN(+row.getValue<number | string>(id))\n ? +(row.getValue<null | number | string>(id) ?? 0) > +filterValue\n : (row.getValue<null | number | string>(id) ?? '')\n ?.toString()\n .toLowerCase()\n .trim() > filterValue.toString().toLowerCase().trim();\n\ngreaterThan.autoRemove = (val: any) => !val;\n\nconst greaterThanOrEqualTo = <TData extends MRT_RowData>(\n row: Row<any, TData>,\n id: string,\n filterValue: number | string,\n): boolean => equals(row, id, filterValue) || greaterThan(row, id, filterValue);\n\ngreaterThanOrEqualTo.autoRemove = (val: any) => !val;\n\nconst lessThan = <TData extends MRT_RowData>(\n row: Row<any, TData>,\n id: string,\n filterValue: number | string,\n): boolean =>\n !isNaN(+filterValue) && !isNaN(+row.getValue<number | string>(id))\n ? +(row.getValue<null | number | string>(id) ?? 0) < +filterValue\n : (row.getValue<null | number | string>(id) ?? '')\n ?.toString()\n .toLowerCase()\n .trim() < filterValue.toString().toLowerCase().trim();\n\nlessThan.autoRemove = (val: any) => !val;\n\nconst lessThanOrEqualTo = <TData extends MRT_RowData>(\n row: Row<any, TData>,\n id: string,\n filterValue: number | string,\n): boolean => equals(row, id, filterValue) || lessThan(row, id, filterValue);\n\nlessThanOrEqualTo.autoRemove = (val: any) => !val;\n\nconst between = <TData extends MRT_RowData>(\n row: Row<any, TData>,\n id: string,\n filterValues: [number | string, number | string],\n): boolean =>\n ((['', undefined] as any[]).includes(filterValues[0]) ||\n greaterThan(row, id, filterValues[0])) &&\n ((!isNaN(+filterValues[0]) &&\n !isNaN(+filterValues[1]) &&\n +filterValues[0] > +filterValues[1]) ||\n (['', undefined] as any[]).includes(filterValues[1]) ||\n lessThan(row, id, filterValues[1]));\n\nbetween.autoRemove = (val: any) => !val;\n\nconst betweenInclusive = <TData extends MRT_RowData>(\n row: Row<any, TData>,\n id: string,\n filterValues: [number | string, number | string],\n): boolean =>\n ((['', undefined] as any[]).includes(filterValues[0]) ||\n greaterThanOrEqualTo(row, id, filterValues[0])) &&\n ((!isNaN(+filterValues[0]) &&\n !isNaN(+filterValues[1]) &&\n +filterValues[0] > +filterValues[1]) ||\n (['', undefined] as any[]).includes(filterValues[1]) ||\n lessThanOrEqualTo(row, id, filterValues[1]));\n\nbetweenInclusive.autoRemove = (val: any) => !val;\n\nconst empty = <TData extends MRT_RowData>(\n row: Row<any, TData>,\n id: string,\n _filterValue: number | string,\n): boolean => !row.getValue<null | number | string>(id)?.toString().trim();\n\nempty.autoRemove = (val: any) => !val;\n\nconst notEmpty = <TData extends MRT_RowData>(\n row: Row<any, TData>,\n id: string,\n _filterValue: number | string,\n): boolean => !!row.getValue<null | number | string>(id)?.toString().trim();\n\nnotEmpty.autoRemove = (val: any) => !val;\n\nexport const MRT_FilterFns = {\n arrIncludes: filterFn_arrIncludes,\n arrIncludesAll: filterFn_arrIncludesAll,\n arrIncludesSome: filterFn_arrIncludesSome,\n between,\n betweenInclusive,\n contains,\n empty,\n endsWith,\n equals,\n equalsString: filterFn_equalsString,\n equalsStringSensitive: filterFn_equalsStringSensitive,\n fuzzy,\n greaterThan,\n greaterThanOrEqualTo,\n includesString: filterFn_includesString,\n includesStringSensitive: filterFn_includesStringSensitive,\n inNumberRange: filterFn_inNumberRange,\n lessThan,\n lessThanOrEqualTo,\n notEmpty,\n notEquals,\n startsWith,\n weakEquals: filterFn_weakEquals,\n};\n","import {\n type AggregationFnDef,\n cellSelectionFeature,\n cellSpanningFeature,\n columnFacetingFeature,\n columnFilteringFeature,\n columnGroupingFeature,\n columnOrderingFeature,\n columnPinningFeature,\n columnResizingFeature,\n columnSizingFeature,\n columnVisibilityFeature,\n createExpandedRowModel,\n createFacetedMinMaxValues,\n createFacetedRowModel,\n createFacetedUniqueValues,\n createFilteredRowModel,\n createGroupedRowModel,\n createPaginatedRowModel,\n createSortedRowModel,\n type FilterFn,\n globalFilteringFeature,\n rowAggregationFeature,\n rowExpandingFeature,\n rowPaginationFeature,\n rowPinningFeature,\n rowSelectionFeature,\n rowSortingFeature,\n type SortFn,\n type StockFeatures,\n type TableFeature,\n tableFeatures,\n} from '@tanstack/react-table';\n\nimport { MRT_AggregationFns } from './aggregationFns';\nimport { MRT_FilterFns } from './filterFns';\nimport { MRT_SortingFns } from './sortingFns';\n\nconst mrtFeature: TableFeature = {\n getInitialState: (state) => ({\n actionCell: null,\n columnFilterFns: {},\n creatingRow: null,\n density: 'comfortable',\n draggingColumn: null,\n draggingRow: null,\n editingCell: null,\n editingRow: null,\n globalFilterFn: 'fuzzy',\n hoveredColumn: null,\n hoveredRow: null,\n isFullScreen: false,\n isLoading: false,\n isSaving: false,\n showAlertBanner: false,\n showColumnFilters: false,\n showGlobalFilter: false,\n showLoadingOverlay: false,\n showProgressBars: false,\n showSkeletons: false,\n showToolbarDropZone: false,\n ...state,\n }),\n};\n\nexport const MRT_DefaultTableFeatures = tableFeatures({\n aggregationFns: MRT_AggregationFns,\n cellSelectionFeature,\n cellSpanningFeature,\n columnFacetingFeature,\n columnFilteringFeature,\n columnGroupingFeature,\n columnOrderingFeature,\n columnPinningFeature,\n columnResizingFeature,\n columnSizingFeature,\n columnVisibilityFeature,\n expandedRowModel: createExpandedRowModel(),\n facetedMinMaxValues: createFacetedMinMaxValues(),\n facetedRowModel: createFacetedRowModel(),\n facetedUniqueValues: createFacetedUniqueValues(),\n filteredRowModel: createFilteredRowModel(),\n filterFns: MRT_FilterFns,\n globalFilteringFeature,\n groupedRowModel: createGroupedRowModel(),\n mrtFeature,\n paginatedRowModel: createPaginatedRowModel(),\n rowAggregationFeature,\n rowExpandingFeature,\n rowPaginationFeature,\n rowPinningFeature,\n rowSelectionFeature,\n rowSortingFeature,\n sortedRowModel: createSortedRowModel(),\n sortFns: MRT_SortingFns,\n});\n\nexport interface MRT_TableFeatures extends StockFeatures {\n aggregationFns: Record<string, AggregationFnDef<any, any, any, any>>;\n filterFns: Record<string, FilterFn<any, any>>;\n mrtFeature: TableFeature;\n sortFns: Record<string, SortFn<any, any>>;\n}\n","import {\n constructRow as _constructRow,\n flexRender as _flexRender,\n type Renderable,\n} from '@tanstack/react-table';\nimport { type JSX, type ReactNode } from 'react';\n\nimport {\n type MRT_ColumnHelper,\n type MRT_DisplayColumnDef,\n type MRT_GroupColumnDef,\n type MRT_Row,\n type MRT_RowData,\n type MRT_TableInstance,\n} from '../types';\nimport { getAllLeafColumnDefs, getColumnId } from './column.utils';\n\nexport const flexRender = _flexRender as (\n Comp: Renderable<any>,\n props: any,\n) => JSX.Element | ReactNode;\n\nexport function createMRTColumnHelper<\n TData extends MRT_RowData,\n>(): MRT_ColumnHelper<TData> {\n return {\n accessor: (accessor, column) => {\n return typeof accessor === 'function'\n ? ({\n ...column,\n accessorFn: accessor,\n } as any)\n : {\n ...column,\n accessorKey: accessor,\n };\n },\n display: (column) => column as MRT_DisplayColumnDef<TData>,\n group: (column) => column as MRT_GroupColumnDef<TData>,\n };\n}\n\nexport const createRow = <TData extends MRT_RowData>(\n table: MRT_TableInstance<TData>,\n originalRow?: TData,\n rowIndex = -1,\n depth = 0,\n subRows?: MRT_Row<TData>[],\n parentId?: string,\n): MRT_Row<TData> =>\n _constructRow(\n table as any,\n 'mrt-row-create',\n originalRow ??\n Object.assign(\n {},\n ...getAllLeafColumnDefs(table.options.columns).map((col) => ({\n [getColumnId(col)]: '',\n })),\n ),\n rowIndex,\n depth,\n subRows as any,\n parentId,\n ) as MRT_Row<TData>;\n","import { MRT_ToggleRowActionMenuButton } from '../../components/buttons/MRT_ToggleRowActionMenuButton';\nimport {\n type MRT_ColumnDef,\n type MRT_RowData,\n type MRT_StatefulTableOptions,\n} from '../../types';\nimport { defaultDisplayColumnProps } from '../../utils/displayColumn.utils';\n\nexport const getMRT_RowActionsColumnDef = <TData extends MRT_RowData>(\n tableOptions: MRT_StatefulTableOptions<TData>,\n): MRT_ColumnDef<TData> => {\n return {\n Cell: ({ cell, row, staticRowIndex, table }) => (\n <MRT_ToggleRowActionMenuButton\n cell={cell}\n row={row}\n staticRowIndex={staticRowIndex}\n table={table}\n />\n ),\n ...defaultDisplayColumnProps({\n header: 'actions',\n id: 'mrt-row-actions',\n size: 70,\n tableOptions,\n }),\n };\n};\n","import { type RefObject } from 'react';\n\nimport { MRT_TableBodyRowGrabHandle } from '../../components/body/MRT_TableBodyRowGrabHandle';\nimport {\n type MRT_ColumnDef,\n type MRT_RowData,\n type MRT_StatefulTableOptions,\n} from '../../types';\nimport { defaultDisplayColumnProps } from '../../utils/displayColumn.utils';\n\nexport const getMRT_RowDragColumnDef = <TData extends MRT_RowData>(\n tableOptions: MRT_StatefulTableOptions<TData>,\n): MRT_ColumnDef<TData> => {\n return {\n Cell: ({ row, rowRef, table }) => (\n <MRT_TableBodyRowGrabHandle\n row={row}\n rowRef={rowRef as RefObject<HTMLTableRowElement | null>}\n table={table}\n />\n ),\n grow: false,\n ...defaultDisplayColumnProps({\n header: 'move',\n id: 'mrt-row-drag',\n size: 60,\n tableOptions,\n }),\n };\n};\n","import { Stack } from '@mui/material';\nimport { Tooltip } from '@mui/material';\nimport { type ReactNode } from 'react';\n\nimport { MRT_ExpandAllButton } from '../../components/buttons/MRT_ExpandAllButton';\nimport { MRT_ExpandButton } from '../../components/buttons/MRT_ExpandButton';\nimport {\n type MRT_ColumnDef,\n type MRT_RowData,\n type MRT_StatefulTableOptions,\n} from '../../types';\nimport { defaultDisplayColumnProps } from '../../utils/displayColumn.utils';\nimport { getCommonTooltipProps } from '../../utils/style.utils';\n\nexport const getMRT_RowExpandColumnDef = <TData extends MRT_RowData>(\n tableOptions: MRT_StatefulTableOptions<TData>,\n): MRT_ColumnDef<TData> => {\n const {\n defaultColumn,\n enableExpandAll,\n groupedColumnMode,\n positionExpandColumn,\n renderDetailPanel,\n state: { grouping },\n } = tableOptions;\n\n const alignProps =\n positionExpandColumn === 'last'\n ? ({\n align: 'right',\n } as const)\n : undefined;\n\n return {\n Cell: ({ cell, column, row, staticRowIndex, table }) => {\n const expandButtonProps = { row, staticRowIndex, table };\n const subRowsLength = row.subRows?.length;\n if (groupedColumnMode === 'remove' && row.groupingColumnId) {\n return (\n <Stack\n sx={{\n alignItems: \"center\",\n flexDirection: \"row\",\n gap: \"0.25rem\"\n }}>\n <MRT_ExpandButton {...expandButtonProps} />\n <Tooltip\n {...getCommonTooltipProps('right')}\n title={table.getColumn(row.groupingColumnId)?.columnDef.header}\n >\n <span>{row.groupingValue as ReactNode}</span>\n </Tooltip>\n {!!subRowsLength && <span>({subRowsLength})</span>}\n </Stack>\n );\n } else {\n return (\n <>\n <MRT_ExpandButton {...expandButtonProps} />\n {column.columnDef.GroupedCell?.({ cell, column, row, table })}\n </>\n );\n }\n },\n Header: enableExpandAll\n ? ({ table }) => {\n return (\n <>\n <MRT_ExpandAllButton table={table} />\n {groupedColumnMode === 'remove' &&\n grouping\n ?.map(\n (groupedColumnId) =>\n table.getColumn(groupedColumnId)?.columnDef.header,\n )\n ?.join(', ')}\n </>\n );\n }\n : undefined,\n muiTableBodyCellProps: alignProps,\n muiTableHeadCellProps: alignProps,\n ...defaultDisplayColumnProps({\n header: 'expand',\n id: 'mrt-row-expand',\n size:\n groupedColumnMode === 'remove'\n ? (defaultColumn?.size ?? 180)\n : renderDetailPanel\n ? enableExpandAll\n ? 60\n : 70\n : 100,\n tableOptions,\n }),\n };\n};\n","import {\n type MRT_ColumnDef,\n type MRT_RowData,\n type MRT_StatefulTableOptions,\n} from '../../types';\nimport { defaultDisplayColumnProps } from '../../utils/displayColumn.utils';\n\nexport const getMRT_RowNumbersColumnDef = <TData extends MRT_RowData>(\n tableOptions: MRT_StatefulTableOptions<TData>,\n): MRT_ColumnDef<TData> => {\n const { localization, rowNumberDisplayMode } = tableOptions;\n const {\n pagination: { pageIndex, pageSize },\n } = tableOptions.state;\n\n return {\n Cell: ({ row, staticRowIndex }) =>\n ((rowNumberDisplayMode === 'static'\n ? (staticRowIndex || 0) + (pageSize || 0) * (pageIndex || 0)\n : row.index) ?? 0) + 1,\n grow: false,\n Header: () => localization.rowNumber,\n ...defaultDisplayColumnProps({\n header: 'rowNumbers',\n id: 'mrt-row-numbers',\n size: 50,\n tableOptions,\n }),\n };\n};\n","import { MRT_TableBodyRowPinButton } from '../../components/body/MRT_TableBodyRowPinButton';\nimport {\n type MRT_ColumnDef,\n type MRT_RowData,\n type MRT_StatefulTableOptions,\n} from '../../types';\nimport { defaultDisplayColumnProps } from '../../utils/displayColumn.utils';\n\nexport const getMRT_RowPinningColumnDef = <TData extends MRT_RowData>(\n tableOptions: MRT_StatefulTableOptions<TData>,\n): MRT_ColumnDef<TData> => {\n return {\n Cell: ({ row, table }) => (\n <MRT_TableBodyRowPinButton row={row} table={table} />\n ),\n grow: false,\n ...defaultDisplayColumnProps({\n header: 'pin',\n id: 'mrt-row-pin',\n size: 60,\n tableOptions,\n }),\n };\n};\n","import { MRT_SelectCheckbox } from '../../components/inputs/MRT_SelectCheckbox';\nimport {\n type MRT_ColumnDef,\n type MRT_RowData,\n type MRT_StatefulTableOptions,\n} from '../../types';\nimport { defaultDisplayColumnProps } from '../../utils/displayColumn.utils';\n\nexport const getMRT_RowSelectColumnDef = <TData extends MRT_RowData>(\n tableOptions: MRT_StatefulTableOptions<TData>,\n): MRT_ColumnDef<TData> => {\n const { enableMultiRowSelection, enableSelectAll } = tableOptions;\n\n return {\n Cell: ({ row, staticRowIndex, table }) => (\n <MRT_SelectCheckbox\n row={row}\n staticRowIndex={staticRowIndex}\n table={table}\n />\n ),\n grow: false,\n Header:\n enableSelectAll && enableMultiRowSelection\n ? ({ table }) => <MRT_SelectCheckbox table={table} />\n : undefined,\n ...defaultDisplayColumnProps({\n header: 'select',\n id: 'mrt-row-select',\n size: enableSelectAll ? 60 : 70,\n tableOptions,\n }),\n };\n};\n","import { ArrowDownward as ArrowDownwardIcon, ArrowRight as ArrowRightIcon, Cancel as CancelIcon, ChevronLeft as ChevronLeftIcon, ChevronRight as ChevronRightIcon, ClearAll as ClearAllIcon, Close as CloseIcon, ContentCopy, DensityLarge as DensityLargeIcon, DensityMedium as DensityMediumIcon, DensitySmall as DensitySmallIcon, DragHandle as DragHandleIcon, DynamicFeed as DynamicFeedIcon, Edit as EditIcon, ExpandMore as ExpandMoreIcon, FilterAlt as FilterAltIcon, FilterList as FilterListIcon, FilterListOff as FilterListOffIcon, FirstPage as FirstPageIcon, FullscreenExit as FullscreenExitIcon, Fullscreen as FullscreenIcon, KeyboardDoubleArrowDown as KeyboardDoubleArrowDownIcon, LastPage as LastPageIcon, MoreHoriz as MoreHorizIcon, MoreVert as MoreVertIcon, PushPin as PushPinIcon, RestartAlt as RestartAltIcon, Save as SaveIcon, Search as SearchIcon, SearchOff as SearchOffIcon, Sort as SortIcon, SyncAlt as SyncAltIcon, ViewColumn as ViewColumnIcon, VisibilityOff as VisibilityOffIcon } from '@mui/icons-material';\nexport const MRT_Default_Icons = {\n ArrowDownwardIcon,\n ArrowRightIcon,\n CancelIcon,\n ChevronLeftIcon,\n ChevronRightIcon,\n ClearAllIcon,\n CloseIcon,\n ContentCopy,\n DensityLargeIcon,\n DensityMediumIcon,\n DensitySmallIcon,\n DragHandleIcon,\n DynamicFeedIcon,\n EditIcon,\n ExpandMoreIcon,\n FilterAltIcon,\n FilterListIcon,\n FilterListOffIcon,\n FirstPageIcon,\n FullscreenExitIcon,\n FullscreenIcon,\n KeyboardDoubleArrowDownIcon,\n LastPageIcon,\n MoreHorizIcon,\n MoreVertIcon,\n PushPinIcon,\n RestartAltIcon,\n SaveIcon,\n SearchIcon,\n SearchOffIcon,\n SortIcon,\n SyncAltIcon,\n ViewColumnIcon,\n VisibilityOffIcon,\n} as const;\n\nexport type MRT_Icons = Record<keyof typeof MRT_Default_Icons, any>;\n","import { type MRT_Localization } from '..';\n\nexport const MRT_Localization_EN: MRT_Localization = {\n language: 'en',\n actions: 'Actions',\n and: 'and',\n cancel: 'Cancel',\n changeFilterMode: 'Change filter mode',\n changeSearchMode: 'Change search mode',\n clearFilter: 'Clear filter',\n clearSearch: 'Clear search',\n clearSelection: 'Clear selection',\n clearSort: 'Clear sort',\n clickToCopy: 'Click to copy',\n copy: 'Copy',\n collapse: 'Collapse',\n collapseAll: 'Collapse all',\n columnActions: 'Column Actions',\n copiedToClipboard: 'Copied to clipboard',\n dropToGroupBy: 'Drop to group by {column}',\n edit: 'Edit',\n expand: 'Expand',\n expandAll: 'Expand all',\n filterArrIncludes: 'Includes',\n filterArrIncludesAll: 'Includes all',\n filterArrIncludesSome: 'Includes',\n filterBetween: 'Between',\n filterBetweenInclusive: 'Between Inclusive',\n filterByColumn: 'Filter by {column}',\n filterContains: 'Contains',\n filterEmpty: 'Empty',\n filterEndsWith: 'Ends With',\n filterEquals: 'Equals',\n filterEqualsString: 'Equals',\n filterFuzzy: 'Fuzzy',\n filterGreaterThan: 'Greater Than',\n filterGreaterThanOrEqualTo: 'Greater Than Or Equal To',\n filterInNumberRange: 'Between',\n filterIncludesString: 'Contains',\n filterIncludesStringSensitive: 'Contains',\n filterLessThan: 'Less Than',\n filterLessThanOrEqualTo: 'Less Than Or Equal To',\n filterMode: 'Filter Mode: {filterType}',\n filterNotEmpty: 'Not Empty',\n filterNotEquals: 'Not Equals',\n filterStartsWith: 'Starts With',\n filterWeakEquals: 'Equals',\n filteringByColumn: 'Filtering by {column} - {filterType} {filterValue}',\n goToFirstPage: 'Go to first page',\n goToLastPage: 'Go to last page',\n goToNextPage: 'Go to next page',\n goToPreviousPage: 'Go to previous page',\n grab: 'Grab',\n groupByColumn: 'Group by {column}',\n groupedBy: 'Grouped by ',\n hideAll: 'Hide all',\n hideColumn: 'Hide {column} column',\n max: 'Max',\n min: 'Min',\n move: 'Move',\n noRecordsToDisplay: 'No records to display',\n noResultsFound: 'No results found',\n of: 'of',\n or: 'or',\n pin: 'Pin',\n pinToLeft: 'Pin to left',\n pinToRight: 'Pin to right',\n resetColumnSize: 'Reset column size',\n resetOrder: 'Reset order',\n rowActions: 'Row Actions',\n rowNumber: '#',\n rowNumbers: 'Row Numbers',\n rowsPerPage: 'Rows per page',\n save: 'Save',\n search: 'Search',\n selectedCountOfRowCountRowsSelected:\n '{selectedCount} of {rowCount} row(s) selected',\n select: 'Select',\n showAll: 'Show all',\n showAllColumns: 'Show all columns',\n showHideColumns: 'Show/Hide columns',\n showHideFilters: 'Show/Hide filters',\n showHideSearch: 'Show/Hide search',\n sortByColumnAsc: 'Sort by {column} ascending',\n sortByColumnDesc: 'Sort by {column} descending',\n sortedByColumnAsc: 'Sorted by {column} ascending',\n sortedByColumnDesc: 'Sorted by {column} descending',\n thenBy: ', then by ',\n toggleDensity: 'Toggle density',\n toggleFullScreen: 'Toggle full screen',\n toggleSelectAll: 'Toggle select all',\n toggleSelectRow: 'Toggle select row',\n toggleVisibility: 'Toggle visibility',\n ungroupByColumn: 'Ungroup by {column}',\n unpin: 'Unpin',\n unpinAll: 'Unpin all',\n};\n","import { useTheme } from '@mui/material/styles';\nimport { useId, useMemo } from 'react';\n\nimport { MRT_AggregationFns } from '../fns/aggregationFns';\nimport { MRT_FilterFns } from '../fns/filterFns';\nimport { MRT_SortingFns } from '../fns/sortingFns';\nimport { MRT_Default_Icons } from '../icons';\nimport { MRT_Localization_EN } from '../locales/en';\nimport {\n type MRT_DefinedTableOptions,\n type MRT_RowData,\n type MRT_TableOptions,\n} from '../types';\nimport { getMRTTheme } from '../utils/style.utils';\n\nexport const MRT_DefaultColumn = {\n filterVariant: 'text',\n maxSize: 1000,\n minSize: 40,\n size: 180,\n} as const;\n\nexport const MRT_DefaultDisplayColumn = {\n columnDefType: 'display',\n enableClickToCopy: false,\n enableColumnActions: false,\n enableColumnDragging: false,\n enableColumnFilter: false,\n enableColumnOrdering: false,\n enableEditing: false,\n enableGlobalFilter: false,\n enableGrouping: false,\n enableHiding: false,\n enableResizing: false,\n enableSorting: false,\n} as const;\n\nexport const useMRT_TableOptions: <TData extends MRT_RowData>(\n tableOptions: MRT_TableOptions<TData>,\n) => MRT_DefinedTableOptions<TData> = <TData extends MRT_RowData>({\n aggregationFns,\n autoResetExpanded = false,\n columnFilterDisplayMode = 'subheader',\n columnResizeDirection,\n columnResizeMode = 'onChange',\n createDisplayMode = 'modal',\n defaultColumn,\n defaultDisplayColumn,\n editDisplayMode = 'modal',\n enableBatchRowSelection = true,\n enableBottomToolbar = true,\n enableColumnActions = true,\n enableColumnFilters = true,\n enableColumnOrdering = false,\n enableColumnPinning = false,\n enableColumnResizing = false,\n enableColumnVirtualization,\n enableDensityToggle = true,\n enableExpandAll = true,\n enableExpanding,\n enableFacetedValues = false,\n enableFilterMatchHighlighting = true,\n enableFilters = true,\n enableFullScreenToggle = true,\n enableGlobalFilter = true,\n enableGlobalFilterRankedResults = true,\n enableGrouping = false,\n enableHiding = true,\n enableKeyboardShortcuts = true,\n enableMultiRowSelection = true,\n enableMultiSort = true,\n enablePagination = true,\n enableRowPinning = false,\n enableRowSelection = false,\n enableRowVirtualization,\n enableSelectAll = true,\n enableSorting = true,\n enableStickyHeader = false,\n enableTableFooter = true,\n enableTableHead = true,\n enableToolbarInternalActions = true,\n enableTopToolbar = true,\n filterFns,\n icons,\n id = useId(),\n layoutMode,\n localization,\n manualFiltering,\n manualGrouping,\n manualPagination,\n manualSorting,\n mrtTheme,\n paginationDisplayMode = 'default',\n positionActionsColumn = 'first',\n positionCreatingRow = 'top',\n positionExpandColumn = 'first',\n positionGlobalFilter = 'right',\n positionPagination = 'bottom',\n positionToolbarAlertBanner = 'top',\n positionToolbarDropZone = 'top',\n rowNumberDisplayMode = 'static',\n rowPinningDisplayMode = 'sticky',\n selectAllMode = 'page',\n sortFns,\n ...rest\n}: MRT_TableOptions<TData>) => {\n const theme = useTheme();\n\n icons = useMemo(() => ({ ...MRT_Default_Icons, ...icons }), [icons]);\n localization = useMemo(\n () => ({\n ...MRT_Localization_EN,\n ...localization,\n }),\n [localization],\n );\n mrtTheme = useMemo(() => getMRTTheme(mrtTheme, theme), [mrtTheme, theme]);\n aggregationFns = useMemo(\n () => ({ ...MRT_AggregationFns, ...aggregationFns }),\n [],\n );\n filterFns = useMemo(() => ({ ...MRT_FilterFns, ...filterFns }), []);\n sortFns = useMemo(() => ({ ...MRT_SortingFns, ...sortFns }), []);\n defaultColumn = useMemo(\n () => ({ ...MRT_DefaultColumn, ...defaultColumn }),\n [defaultColumn],\n );\n defaultDisplayColumn = useMemo(\n () => ({\n ...MRT_DefaultDisplayColumn,\n ...defaultDisplayColumn,\n }),\n [defaultDisplayColumn],\n );\n //cannot be changed after initialization\n [enableColumnVirtualization, enableRowVirtualization] = useMemo(\n () => [enableColumnVirtualization, enableRowVirtualization],\n [],\n );\n\n if (!columnResizeDirection) {\n columnResizeDirection = theme.direction || 'ltr';\n }\n\n layoutMode =\n layoutMode || (enableColumnResizing ? 'grid-no-grow' : 'semantic');\n if (\n layoutMode === 'semantic' &&\n (enableRowVirtualization || enableColumnVirtualization)\n ) {\n layoutMode = 'grid';\n }\n\n if (enableRowVirtualization) {\n enableStickyHeader = true;\n }\n\n if (enablePagination === false && manualPagination === undefined) {\n manualPagination = true;\n }\n\n if (!rest.data?.length) {\n manualFiltering = true;\n manualGrouping = true;\n manualPagination = true;\n manualSorting = true;\n }\n\n return {\n aggregationFns,\n autoResetExpanded,\n columnFilterDisplayMode,\n columnResizeDirection,\n columnResizeMode,\n createDisplayMode,\n defaultColumn,\n defaultDisplayColumn,\n editDisplayMode,\n enableBatchRowSelection,\n enableBottomToolbar,\n enableColumnActions,\n enableColumnFilters,\n enableColumnOrdering,\n enableColumnPinning,\n enableColumnResizing,\n enableColumnVirtualization,\n enableDensityToggle,\n enableExpandAll,\n enableExpanding,\n enableFacetedValues,\n enableFilterMatchHighlighting,\n enableFilters,\n enableFullScreenToggle,\n enableGlobalFilter,\n enableGlobalFilterRankedResults,\n enableGrouping,\n enableHiding,\n enableKeyboardShortcuts,\n enableMultiRowSelection,\n enableMultiSort,\n enablePagination,\n enableRowPinning,\n enableRowSelection,\n enableRowVirtualization,\n enableSelectAll,\n enableSorting,\n enableStickyHeader,\n enableTableFooter,\n enableTableHead,\n enableToolbarInternalActions,\n enableTopToolbar,\n filterFns,\n getRowCanExpand:\n rest.getRowCanExpand ?? (rest.renderDetailPanel ? () => true : undefined),\n getSubRows: (row) => row?.subRows,\n icons,\n id,\n layoutMode,\n localization,\n manualFiltering,\n manualGrouping,\n manualPagination,\n manualSorting,\n mrtTheme,\n paginationDisplayMode,\n positionActionsColumn,\n positionCreatingRow,\n positionExpandColumn,\n positionGlobalFilter,\n positionPagination,\n positionToolbarAlertBanner,\n positionToolbarDropZone,\n rowNumberDisplayMode,\n rowPinningDisplayMode,\n selectAllMode,\n sortFns,\n ...rest,\n } as MRT_DefinedTableOptions<TData>;\n};\n","import {\n type MRT_ColumnDef,\n type MRT_RowData,\n type MRT_StatefulTableOptions,\n} from '../../types';\nimport { defaultDisplayColumnProps } from '../../utils/displayColumn.utils';\nimport { MRT_DefaultDisplayColumn } from '../useMRT_TableOptions';\n\nconst blankColProps = {\n children: null,\n sx: {\n minWidth: 0,\n p: 0,\n width: 0,\n },\n};\n\nexport const getMRT_RowSpacerColumnDef = <TData extends MRT_RowData>(\n tableOptions: MRT_StatefulTableOptions<TData>,\n): MRT_ColumnDef<TData> => {\n return {\n ...defaultDisplayColumnProps({\n id: 'mrt-row-spacer',\n size: 0,\n tableOptions,\n }),\n grow: true,\n ...MRT_DefaultDisplayColumn,\n muiTableBodyCellProps: blankColProps,\n muiTableFooterCellProps: blankColProps,\n muiTableHeadCellProps: blankColProps,\n };\n};\n","import { useEffect, useReducer, useRef } from 'react';\n\nimport {\n type MRT_RowData,\n type MRT_SortingState,\n type MRT_TableInstance,\n} from '../types';\nimport { getDefaultColumnOrderIds } from '../utils/displayColumn.utils';\nimport { getCanRankRows } from '../utils/row.utils';\n\nexport const useMRT_Effects = <TData extends MRT_RowData>(\n table: MRT_TableInstance<TData>,\n) => {\n const {\n getIsSomeRowsPinned,\n getPrePaginatedRowModel,\n options: { enablePagination, enableRowPinning, rowCount },\n } = table;\n const {\n columnOrder,\n density,\n globalFilter,\n isFullScreen,\n isLoading,\n pagination,\n showSkeletons,\n sorting,\n } = table.state;\n\n const totalColumnCount = table.options.columns.length;\n const totalRowCount = rowCount ?? getPrePaginatedRowModel().rows.length;\n\n const rerender = useReducer(() => ({}), {})[1];\n const initialBodyHeight = useRef<string>(null);\n const previousTop = useRef<number>(null);\n\n useEffect(() => {\n if (typeof window !== 'undefined') {\n initialBodyHeight.current = document.body.style.height;\n }\n }, []);\n\n //hide scrollbars when table is in full screen mode, preserve body scroll position after full screen exit\n useEffect(() => {\n if (typeof window !== 'undefined') {\n if (isFullScreen) {\n previousTop.current = document.body.getBoundingClientRect().top; //save scroll position\n document.body.style.height = '100dvh'; //hide page scrollbars when table is in full screen mode\n } else {\n document.body.style.height = initialBodyHeight.current as string;\n if (!previousTop.current) return;\n //restore scroll position\n window.scrollTo({\n behavior: 'instant',\n top: -1 * (previousTop.current as number),\n });\n }\n }\n }, [isFullScreen]);\n\n //recalculate column order when columns change or features are toggled on/off\n useEffect(() => {\n if (totalColumnCount !== columnOrder.length) {\n table.setColumnOrder(getDefaultColumnOrderIds(table.options));\n }\n }, [totalColumnCount]);\n\n //if page index is out of bounds, set it to the last page\n useEffect(() => {\n if (!enablePagination || isLoading || showSkeletons) return;\n const { pageIndex, pageSize } = pagination;\n const totalPages: number =\n totalRowCount > 0 ? Math.ceil(totalRowCount / pageSize) : 1;\n const isOutOfBounds: boolean = pageIndex < 0 || pageIndex >= totalPages;\n\n if (isOutOfBounds) {\n table.setPageIndex(totalPages - 1);\n }\n }, [totalRowCount, enablePagination, isLoading, showSkeletons]);\n\n //turn off sort when global filter is looking for ranked results\n const appliedSort = useRef<MRT_SortingState>(sorting);\n useEffect(() => {\n if (sorting.length) {\n appliedSort.current = sorting;\n }\n }, [sorting]);\n\n useEffect(() => {\n if (!getCanRankRows(table)) return;\n if (globalFilter) {\n table.setSorting([]);\n } else {\n table.setSorting(() => appliedSort.current || []);\n }\n }, [globalFilter]);\n\n //fix pinned row top style when density changes\n useEffect(() => {\n if (enableRowPinning && getIsSomeRowsPinned()) {\n setTimeout(() => {\n rerender();\n }, 150);\n }\n }, [density]);\n};\n","import { tableFeatures, useTable } from '@tanstack/react-table';\nimport { useMemo, useRef, useState } from 'react';\n\nimport {\n MRT_DefaultTableFeatures,\n type MRT_TableFeatures,\n} from '../fns/tableFeatures';\nimport {\n type MRT_Cell,\n type MRT_Column,\n type MRT_ColumnDef,\n type MRT_ColumnFilterFnsState,\n type MRT_ColumnOrderState,\n type MRT_ColumnSizingInfoState,\n type MRT_DefinedTableOptions,\n type MRT_DensityState,\n type MRT_FilterOption,\n type MRT_GroupingState,\n type MRT_PaginationState,\n type MRT_Row,\n type MRT_RowData,\n type MRT_StatefulTableOptions,\n type MRT_TableInstance,\n type MRT_TableState,\n type MRT_Updater,\n} from '../types';\nimport {\n getAllLeafColumnDefs,\n getColumnId,\n getDefaultColumnFilterFn,\n prepareColumns,\n} from '../utils/column.utils';\nimport {\n getDefaultColumnOrderIds,\n showRowActionsColumn,\n showRowDragColumn,\n showRowExpandColumn,\n showRowNumbersColumn,\n showRowPinningColumn,\n showRowSelectionColumn,\n showRowSpacerColumn,\n} from '../utils/displayColumn.utils';\nimport { createRow } from '../utils/tanstack.helpers';\nimport { getMRT_RowActionsColumnDef } from './display-columns/getMRT_RowActionsColumnDef';\nimport { getMRT_RowDragColumnDef } from './display-columns/getMRT_RowDragColumnDef';\nimport { getMRT_RowExpandColumnDef } from './display-columns/getMRT_RowExpandColumnDef';\nimport { getMRT_RowNumbersColumnDef } from './display-columns/getMRT_RowNumbersColumnDef';\nimport { getMRT_RowPinningColumnDef } from './display-columns/getMRT_RowPinningColumnDef';\nimport { getMRT_RowSelectColumnDef } from './display-columns/getMRT_RowSelectColumnDef';\nimport { getMRT_RowSpacerColumnDef } from './display-columns/getMRT_RowSpacerColumnDef';\nimport { useMRT_Effects } from './useMRT_Effects';\n\n/**\n * The MRT hook that wraps the TanStack useReactTable hook and adds additional functionality\n * @param definedTableOptions - table options with proper defaults set\n * @returns the MRT table instance\n */\nexport const useMRT_TableInstance = <TData extends MRT_RowData>(\n definedTableOptions: MRT_DefinedTableOptions<TData>,\n): MRT_TableInstance<TData> => {\n const lastSelectedRowId = useRef<null | string>(null);\n const actionCellRef = useRef<HTMLTableCellElement>(null);\n const bottomToolbarRef = useRef<HTMLDivElement>(null);\n const editInputRefs = useRef<Record<string, HTMLInputElement>>({});\n const filterInputRefs = useRef<Record<string, HTMLInputElement>>({});\n const searchInputRef = useRef<HTMLInputElement>(null);\n const tableContainerRef = useRef<HTMLDivElement>(null);\n const tableHeadCellRefs = useRef<Record<string, HTMLTableCellElement>>({});\n const tablePaperRef = useRef<HTMLDivElement>(null);\n const topToolbarRef = useRef<HTMLDivElement>(null);\n const tableHeadRef = useRef<HTMLTableSectionElement>(null);\n const tableFooterRef = useRef<HTMLTableSectionElement>(null);\n\n //transform initial state with proper column order\n const initialState: Partial<MRT_TableState<TData>> = useMemo(() => {\n const initState = definedTableOptions.initialState ?? {};\n initState.columnOrder =\n initState.columnOrder ??\n getDefaultColumnOrderIds({\n ...definedTableOptions,\n state: {\n ...definedTableOptions.initialState,\n ...definedTableOptions.state,\n },\n } as MRT_StatefulTableOptions<TData>);\n initState.globalFilterFn = definedTableOptions.globalFilterFn ?? 'fuzzy';\n return initState;\n }, []);\n\n definedTableOptions.initialState = initialState;\n\n const [actionCell, setActionCell] = useState<MRT_Cell<TData> | null>(\n initialState.actionCell ?? null,\n );\n const [creatingRow, _setCreatingRow] = useState<MRT_Row<TData> | null>(\n initialState.creatingRow ?? null,\n );\n const [columnFilterFns, setColumnFilterFns] =\n useState<MRT_ColumnFilterFnsState>(() =>\n Object.assign(\n {},\n ...getAllLeafColumnDefs(\n definedTableOptions.columns as MRT_ColumnDef<TData>[],\n ).map((col) => ({\n [getColumnId(col)]:\n col.filterFn instanceof Function\n ? (col.filterFn.name ?? 'custom')\n : (col.filterFn ??\n initialState?.columnFilterFns?.[getColumnId(col)] ??\n getDefaultColumnFilterFn(col)),\n })),\n ),\n );\n const [columnOrder, onColumnOrderChange] = useState<MRT_ColumnOrderState>(\n initialState.columnOrder ?? [],\n );\n const [columnResizing, onColumnResizingChange] =\n useState<MRT_ColumnSizingInfoState>(\n initialState.columnResizing ?? ({} as MRT_ColumnSizingInfoState),\n );\n const [density, setDensity] = useState<MRT_DensityState>(\n initialState?.density ?? 'comfortable',\n );\n const [draggingColumn, setDraggingColumn] =\n useState<MRT_Column<TData> | null>(initialState.draggingColumn ?? null);\n const [draggingRow, setDraggingRow] = useState<MRT_Row<TData> | null>(\n initialState.draggingRow ?? null,\n );\n const [editingCell, setEditingCell] = useState<MRT_Cell<TData> | null>(\n initialState.editingCell ?? null,\n );\n const [editingRow, setEditingRow] = useState<MRT_Row<TData> | null>(\n initialState.editingRow ?? null,\n );\n const [globalFilterFn, setGlobalFilterFn] = useState<MRT_FilterOption>(\n initialState.globalFilterFn ?? 'fuzzy',\n );\n const [grouping, onGroupingChange] = useState<MRT_GroupingState>(\n initialState.grouping ?? [],\n );\n const [hoveredColumn, setHoveredColumn] = useState<null | Partial<\n MRT_Column<TData>\n >>(initialState.hoveredColumn ?? null);\n const [hoveredRow, setHoveredRow] = useState<null | Partial<MRT_Row<TData>>>(\n initialState.hoveredRow ?? null,\n );\n const [isFullScreen, setIsFullScreen] = useState<boolean>(\n initialState?.isFullScreen ?? false,\n );\n const [pagination, onPaginationChange] = useState<MRT_PaginationState>(\n initialState?.pagination ?? { pageIndex: 0, pageSize: 10 },\n );\n const [showAlertBanner, setShowAlertBanner] = useState<boolean>(\n initialState?.showAlertBanner ?? false,\n );\n const [showColumnFilters, setShowColumnFilters] = useState<boolean>(\n initialState?.showColumnFilters ?? false,\n );\n const [showGlobalFilter, setShowGlobalFilter] = useState<boolean>(\n initialState?.showGlobalFilter ?? false,\n );\n const [showToolbarDropZone, setShowToolbarDropZone] = useState<boolean>(\n initialState?.showToolbarDropZone ?? false,\n );\n\n definedTableOptions.state = {\n actionCell,\n columnFilterFns,\n columnOrder,\n columnResizing,\n creatingRow,\n density,\n draggingColumn,\n draggingRow,\n editingCell,\n editingRow,\n globalFilterFn,\n grouping,\n hoveredColumn,\n hoveredRow,\n isFullScreen,\n pagination,\n showAlertBanner,\n showColumnFilters,\n showGlobalFilter,\n showToolbarDropZone,\n ...definedTableOptions.state,\n };\n\n //The table options now include all state needed to help determine column visibility and order logic\n const statefulTableOptions =\n definedTableOptions as MRT_StatefulTableOptions<TData>;\n\n //don't recompute columnDefs while resizing column or dragging column/row\n const columnDefsRef = useRef<ReadonlyArray<MRT_ColumnDef<TData>>>([]);\n statefulTableOptions.columns =\n statefulTableOptions.state.columnResizing.isResizingColumn ||\n statefulTableOptions.state.draggingColumn ||\n statefulTableOptions.state.draggingRow\n ? columnDefsRef.current\n : prepareColumns({\n columnDefs: [\n ...([\n showRowPinningColumn(statefulTableOptions) &&\n getMRT_RowPinningColumnDef(statefulTableOptions),\n showRowDragColumn(statefulTableOptions) &&\n getMRT_RowDragColumnDef(statefulTableOptions),\n showRowActionsColumn(statefulTableOptions) &&\n getMRT_RowActionsColumnDef(statefulTableOptions),\n showRowExpandColumn(statefulTableOptions) &&\n getMRT_RowExpandColumnDef(statefulTableOptions),\n showRowSelectionColumn(statefulTableOptions) &&\n getMRT_RowSelectColumnDef(statefulTableOptions),\n showRowNumbersColumn(statefulTableOptions) &&\n getMRT_RowNumbersColumnDef(statefulTableOptions),\n ].filter(Boolean) as MRT_ColumnDef<TData>[]),\n ...statefulTableOptions.columns,\n ...([\n showRowSpacerColumn(statefulTableOptions) &&\n getMRT_RowSpacerColumnDef(statefulTableOptions),\n ].filter(Boolean) as MRT_ColumnDef<TData>[]),\n ],\n tableOptions: statefulTableOptions,\n });\n columnDefsRef.current = statefulTableOptions.columns;\n\n //if loading, generate blank rows to show skeleton loaders\n statefulTableOptions.data = useMemo(\n () =>\n (statefulTableOptions.state.isLoading ||\n statefulTableOptions.state.showSkeletons) &&\n !statefulTableOptions.data.length\n ? [\n ...Array(\n Math.min(statefulTableOptions.state.pagination.pageSize, 20),\n ).fill(null),\n ].map(() =>\n Object.assign(\n {},\n ...getAllLeafColumnDefs(statefulTableOptions.columns).map(\n (col) => ({\n [getColumnId(col)]: null,\n }),\n ),\n ),\n )\n : statefulTableOptions.data,\n [\n statefulTableOptions.data,\n statefulTableOptions.state.isLoading,\n statefulTableOptions.state.showSkeletons,\n ],\n );\n\n const [features] = useState<MRT_TableFeatures>(() =>\n tableFeatures({\n ...MRT_DefaultTableFeatures,\n aggregationFns: {\n ...MRT_DefaultTableFeatures.aggregationFns,\n ...statefulTableOptions.aggregationFns,\n },\n filterFns: {\n ...MRT_DefaultTableFeatures.filterFns,\n ...statefulTableOptions.filterFns,\n },\n sortFns: {\n ...MRT_DefaultTableFeatures.sortFns,\n ...statefulTableOptions.sortFns,\n },\n }),\n );\n\n const tableOptions = {\n onColumnOrderChange,\n onColumnResizingChange,\n onGroupingChange,\n onPaginationChange,\n ...statefulTableOptions,\n features,\n globalFilterFn: globalFilterFn ?? 'fuzzy',\n };\n\n const reactTable = useTable(tableOptions);\n\n const table = Object.assign(reactTable, {\n getLeftLeafColumns: () => reactTable.getStartLeafColumns(),\n getPaginationRowModel: () => reactTable.getPaginatedRowModel(),\n getRightLeafColumns: () => reactTable.getEndLeafColumns(),\n refs: {\n actionCellRef,\n bottomToolbarRef,\n editInputRefs,\n filterInputRefs,\n lastSelectedRowId,\n searchInputRef,\n tableContainerRef,\n tableFooterRef,\n tableHeadCellRefs,\n tableHeadRef,\n tablePaperRef,\n topToolbarRef,\n },\n setActionCell: statefulTableOptions.onActionCellChange ?? setActionCell,\n setColumnFilterFns:\n statefulTableOptions.onColumnFilterFnsChange ?? setColumnFilterFns,\n setCreatingRow: (row: MRT_Updater<MRT_Row<TData> | null | true>) => {\n const nextRow = row === true ? createRow(table) : row;\n statefulTableOptions?.onCreatingRowChange?.(\n nextRow as MRT_Row<TData> | null,\n ) ?? _setCreatingRow(nextRow as MRT_Row<TData> | null);\n },\n setDensity: statefulTableOptions.onDensityChange ?? setDensity,\n setDraggingColumn:\n statefulTableOptions.onDraggingColumnChange ?? setDraggingColumn,\n setDraggingRow: statefulTableOptions.onDraggingRowChange ?? setDraggingRow,\n setEditingCell: statefulTableOptions.onEditingCellChange ?? setEditingCell,\n setEditingRow: statefulTableOptions.onEditingRowChange ?? setEditingRow,\n setGlobalFilterFn:\n statefulTableOptions.onGlobalFilterFnChange ?? setGlobalFilterFn,\n setHoveredColumn:\n statefulTableOptions.onHoveredColumnChange ?? setHoveredColumn,\n setHoveredRow: statefulTableOptions.onHoveredRowChange ?? setHoveredRow,\n setIsFullScreen: statefulTableOptions.onIsFullScreenChange ?? setIsFullScreen,\n setShowAlertBanner:\n statefulTableOptions.onShowAlertBannerChange ?? setShowAlertBanner,\n setShowColumnFilters:\n statefulTableOptions.onShowColumnFiltersChange ?? setShowColumnFilters,\n setShowGlobalFilter:\n statefulTableOptions.onShowGlobalFilterChange ?? setShowGlobalFilter,\n setShowToolbarDropZone:\n statefulTableOptions.onShowToolbarDropZoneChange ?? setShowToolbarDropZone,\n });\n\n useMRT_Effects(table);\n\n return table;\n};\n","import {\n type MRT_RowData,\n type MRT_TableInstance,\n type MRT_TableOptions,\n} from '../types';\nimport { useMRT_TableInstance } from './useMRT_TableInstance';\nimport { useMRT_TableOptions } from './useMRT_TableOptions';\n\nexport const useMaterialReactTable = <TData extends MRT_RowData>(\n tableOptions: MRT_TableOptions<TData>,\n): MRT_TableInstance<TData> =>\n useMRT_TableInstance(useMRT_TableOptions(tableOptions));\n","import { Collapse } from '@mui/material';\nimport { LinearProgress, type LinearProgressProps } from '@mui/material';\n\nimport { type MRT_RowData, type MRT_TableInstance } from '../../types';\nimport { parseFromValuesOrFunc } from '../../utils/utils';\n\nexport interface MRT_LinearProgressBarProps<TData extends MRT_RowData>\n extends LinearProgressProps {\n isTopToolbar: boolean;\n table: MRT_TableInstance<TData>;\n}\n\nexport const MRT_LinearProgressBar = <TData extends MRT_RowData>({\n isTopToolbar,\n table,\n ...rest\n}: MRT_LinearProgressBarProps<TData>) => {\n const {\n options: { muiLinearProgressProps },\n } = table;\n const { isSaving, showProgressBars } = table.state;\n\n const linearProgressProps = {\n ...parseFromValuesOrFunc(muiLinearProgressProps, {\n isTopToolbar,\n table,\n }),\n ...rest,\n };\n\n return (\n <Collapse\n in={showProgressBars !== false && (showProgressBars || isSaving)}\n mountOnEnter\n sx={{\n bottom: isTopToolbar ? 0 : undefined,\n position: 'absolute',\n top: !isTopToolbar ? 0 : undefined,\n width: '100%',\n }}\n unmountOnExit\n >\n <LinearProgress\n aria-busy=\"true\"\n aria-label=\"Loading\"\n sx={{ position: 'relative' }}\n {...linearProgressProps}\n />\n </Collapse>\n );\n};\n","import { Box, useMediaQuery } from '@mui/material';\nimport { IconButton } from '@mui/material';\nimport { InputLabel } from '@mui/material';\nimport { MenuItem } from '@mui/material';\nimport { Pagination, type PaginationProps } from '@mui/material';\nimport { PaginationItem } from '@mui/material';\nimport { Select, type SelectProps } from '@mui/material';\nimport { Tooltip } from '@mui/material';\nimport { Typography } from '@mui/material';\nimport { useTheme } from '@mui/material/styles';\n\nimport { type MRT_RowData, type MRT_TableInstance } from '../../types';\nimport { flipIconStyles, getCommonTooltipProps } from '../../utils/style.utils';\nimport { parseFromValuesOrFunc } from '../../utils/utils';\n\nconst defaultRowsPerPage = [5, 10, 15, 20, 25, 30, 50, 100];\n\nexport interface MRT_TablePaginationProps<TData extends MRT_RowData>\n extends Partial<\n PaginationProps & {\n disabled?: boolean;\n rowsPerPageOptions?: number[] | { label: string; value: number }[];\n SelectProps?: Partial<SelectProps>;\n showRowsPerPage?: boolean;\n }\n > {\n position?: 'bottom' | 'top';\n table: MRT_TableInstance<TData>;\n}\n\nexport const MRT_TablePagination = <TData extends MRT_RowData>({\n position = 'bottom',\n table,\n ...rest\n}: MRT_TablePaginationProps<TData>) => {\n const theme = useTheme();\n const isMobile = useMediaQuery('(max-width: 720px)');\n\n const {\n options: {\n enableToolbarInternalActions,\n icons: { ChevronLeftIcon, ChevronRightIcon, FirstPageIcon, LastPageIcon },\n id,\n localization,\n muiPaginationProps,\n paginationDisplayMode,\n },\n } = table;\n const {\n pagination: { pageIndex = 0, pageSize = 10 },\n } = table.state;\n\n const paginationProps = {\n ...parseFromValuesOrFunc(muiPaginationProps, {\n table,\n }),\n ...rest,\n };\n\n const totalRowCount = table.getRowCount();\n const numberOfPages = table.getPageCount();\n const showFirstLastPageButtons = numberOfPages > 2;\n const firstRowIndex = pageIndex * pageSize;\n const lastRowIndex = Math.min(pageIndex * pageSize + pageSize, totalRowCount);\n\n const {\n disabled = false,\n rowsPerPageOptions = defaultRowsPerPage,\n SelectProps = {},\n showFirstButton = showFirstLastPageButtons,\n showLastButton = showFirstLastPageButtons,\n showRowsPerPage = true,\n ...restPaginationProps\n } = paginationProps ?? {};\n\n const disableBack = pageIndex <= 0 || disabled;\n const disableNext = lastRowIndex >= totalRowCount || disabled;\n\n if (isMobile && SelectProps?.native !== false) {\n SelectProps.native = true;\n }\n\n const tooltipProps = getCommonTooltipProps();\n\n return (\n <Box\n className=\"MuiTablePagination-root\"\n sx={{\n alignItems: 'center',\n display: 'flex',\n flexWrap: 'wrap',\n gap: '8px',\n justifyContent: { md: 'space-between', sm: 'center' },\n justifySelf: 'flex-end',\n mt:\n position === 'top' && enableToolbarInternalActions\n ? '3rem'\n : undefined,\n position: 'relative',\n px: '8px',\n py: '12px',\n zIndex: 2,\n }}\n >\n {showRowsPerPage && (\n <Box sx={{ alignItems: 'center', display: 'flex', gap: '8px' }}>\n <InputLabel htmlFor={`mrt-rows-per-page-${id}`} sx={{ mb: 0 }}>\n {localization.rowsPerPage}\n </InputLabel>\n <Select\n disabled={disabled}\n disableUnderline\n inputProps={{\n 'aria-label': localization.rowsPerPage,\n id: `mrt-rows-per-page-${id}`,\n }}\n label={localization.rowsPerPage}\n MenuProps={{ disableScrollLock: true }}\n onChange={(event) =>\n table.setPageSize(+(event.target.value as any))\n }\n sx={{ mb: 0 }}\n value={pageSize}\n variant=\"standard\"\n {...SelectProps}\n >\n {rowsPerPageOptions.map((option) => {\n const value = typeof option !== 'number' ? option.value : option;\n const label =\n typeof option !== 'number' ? option.label : `${option}`;\n return (\n SelectProps?.children ??\n (SelectProps?.native ? (\n <option key={value} value={value}>\n {label}\n </option>\n ) : (\n <MenuItem key={value} sx={{ m: 0 }} value={value}>\n {label}\n </MenuItem>\n ))\n );\n })}\n </Select>\n </Box>\n )}\n {paginationDisplayMode === 'pages' ? (\n <Pagination\n count={numberOfPages}\n disabled={disabled}\n onChange={(_e, newPageIndex) => table.setPageIndex(newPageIndex - 1)}\n page={pageIndex + 1}\n renderItem={(item) => (\n <PaginationItem\n slots={{\n first: FirstPageIcon,\n last: LastPageIcon,\n next: ChevronRightIcon,\n previous: ChevronLeftIcon,\n }}\n {...item}\n />\n )}\n showFirstButton={showFirstButton}\n showLastButton={showLastButton}\n {...restPaginationProps}\n />\n ) : paginationDisplayMode === 'default' ? (\n <>\n <Typography\n align=\"center\"\n component=\"span\"\n sx={{ m: '0 4px', minWidth: '8ch' }}\n variant=\"body2\"\n >{`${\n lastRowIndex === 0\n ? 0\n : (firstRowIndex + 1).toLocaleString(localization.language)\n }-${lastRowIndex.toLocaleString(localization.language)} ${\n localization.of\n } ${totalRowCount.toLocaleString(localization.language)}`}</Typography>\n <Box sx={{\n gap: \"xs\"\n }}>\n {showFirstButton && (\n <Tooltip {...tooltipProps} title={localization.goToFirstPage}>\n <span>\n <IconButton\n aria-label={localization.goToFirstPage}\n disabled={disableBack}\n onClick={() => table.firstPage()}\n size=\"small\"\n >\n <FirstPageIcon {...flipIconStyles(theme)} />\n </IconButton>\n </span>\n </Tooltip>\n )}\n <Tooltip {...tooltipProps} title={localization.goToPreviousPage}>\n <span>\n <IconButton\n aria-label={localization.goToPreviousPage}\n disabled={disableBack}\n onClick={() => table.previousPage()}\n size=\"small\"\n >\n <ChevronLeftIcon {...flipIconStyles(theme)} />\n </IconButton>\n </span>\n </Tooltip>\n <Tooltip {...tooltipProps} title={localization.goToNextPage}>\n <span>\n <IconButton\n aria-label={localization.goToNextPage}\n disabled={disableNext}\n onClick={() => table.nextPage()}\n size=\"small\"\n >\n <ChevronRightIcon {...flipIconStyles(theme)} />\n </IconButton>\n </span>\n </Tooltip>\n {showLastButton && (\n <Tooltip {...tooltipProps} title={localization.goToLastPage}>\n <span>\n <IconButton\n aria-label={localization.goToLastPage}\n disabled={disableNext}\n onClick={() => table.lastPage()}\n size=\"small\"\n >\n <LastPageIcon {...flipIconStyles(theme)} />\n </IconButton>\n </span>\n </Tooltip>\n )}\n </Box>\n </>\n ) : null}\n </Box>\n );\n};\n","import { Box, type BoxProps } from '@mui/material';\nimport { Fade } from '@mui/material';\nimport { Typography } from '@mui/material';\nimport { alpha } from '@mui/material/styles';\nimport { type DragEvent, useEffect } from 'react';\n\nimport { type MRT_RowData, type MRT_TableInstance } from '../../types';\nimport { parseFromValuesOrFunc } from '../../utils/utils';\n\nexport interface MRT_ToolbarDropZoneProps<TData extends MRT_RowData>\n extends BoxProps {\n table: MRT_TableInstance<TData>;\n}\n\nexport const MRT_ToolbarDropZone = <TData extends MRT_RowData>({\n table,\n ...rest\n}: MRT_ToolbarDropZoneProps<TData>) => {\n const {\n options: { enableGrouping, localization },\n setHoveredColumn,\n setShowToolbarDropZone,\n } = table;\n\n const { draggingColumn, grouping, hoveredColumn, showToolbarDropZone } =\n table.state;\n\n const handleDragEnter = (_event: DragEvent<HTMLDivElement>) => {\n setHoveredColumn({ id: 'drop-zone' });\n };\n\n const handleDragOver = (e: DragEvent) => {\n e.preventDefault();\n };\n\n useEffect(() => {\n if (table.options.state?.showToolbarDropZone !== undefined) {\n setShowToolbarDropZone(\n !!enableGrouping &&\n !!draggingColumn &&\n draggingColumn.columnDef.enableGrouping !== false &&\n !grouping.includes(draggingColumn.id),\n );\n }\n }, [enableGrouping, draggingColumn, grouping]);\n\n return (\n <Fade in={showToolbarDropZone}>\n <Box\n className=\"Mui-ToolbarDropZone\"\n onDragEnter={handleDragEnter}\n onDragOver={handleDragOver}\n {...rest}\n sx={(theme) => ({\n alignItems: 'center',\n backdropFilter: 'blur(4px)',\n backgroundColor: alpha(theme.palette.info.main, hoveredColumn?.id === 'drop-zone' ? 0.2 : 0.1),\n border: `dashed ${theme.palette.info.main} 2px`,\n boxSizing: 'border-box',\n display: 'flex',\n height: '100%',\n justifyContent: 'center',\n position: 'absolute',\n width: '100%',\n zIndex: 4,\n ...(parseFromValuesOrFunc(rest?.sx, theme) as any),\n })}\n >\n <Typography sx={{\n fontStyle: \"italic\"\n }}>\n {localization.dropToGroupBy.replace(\n '{column}',\n draggingColumn?.columnDef?.header ?? '',\n )}\n </Typography>\n </Box>\n </Fade>\n );\n};\n","import { Box, type BoxProps, useMediaQuery } from '@mui/material';\nimport { alpha } from '@mui/material/styles';\n\nimport { type MRT_RowData, type MRT_TableInstance } from '../../types';\nimport { getCommonToolbarStyles } from '../../utils/style.utils';\nimport { parseFromValuesOrFunc } from '../../utils/utils';\nimport { MRT_LinearProgressBar } from './MRT_LinearProgressBar';\nimport { MRT_TablePagination } from './MRT_TablePagination';\nimport { MRT_ToolbarAlertBanner } from './MRT_ToolbarAlertBanner';\nimport { MRT_ToolbarDropZone } from './MRT_ToolbarDropZone';\n\nexport interface MRT_BottomToolbarProps<TData extends MRT_RowData>\n extends BoxProps {\n table: MRT_TableInstance<TData>;\n}\n\nexport const MRT_BottomToolbar = <TData extends MRT_RowData>({\n table,\n ...rest\n}: MRT_BottomToolbarProps<TData>) => {\n const {\n options: {\n enablePagination,\n muiBottomToolbarProps,\n positionPagination,\n positionToolbarAlertBanner,\n positionToolbarDropZone,\n renderBottomToolbarCustomActions,\n },\n refs: { bottomToolbarRef },\n } = table;\n const { isFullScreen } = table.state;\n\n const isMobile = useMediaQuery('(max-width:720px)');\n\n const toolbarProps = {\n ...parseFromValuesOrFunc(muiBottomToolbarProps, { table }),\n ...rest,\n };\n\n const stackAlertBanner = isMobile || !!renderBottomToolbarCustomActions;\n\n return (\n <Box\n {...toolbarProps}\n ref={(node: HTMLDivElement) => {\n if (node) {\n bottomToolbarRef.current = node;\n if (toolbarProps?.ref) {\n // @ts-expect-error\n toolbarProps.ref.current = node;\n }\n }\n }}\n sx={(theme) => ({\n ...getCommonToolbarStyles({ table, theme }),\n bottom: isFullScreen ? '0' : undefined,\n boxShadow: `0 1px 2px -1px ${alpha(theme.palette.grey[700], 0.5)} inset`,\n left: 0,\n position: isFullScreen ? 'fixed' : 'relative',\n right: 0,\n ...(parseFromValuesOrFunc(toolbarProps?.sx, theme) as any),\n })}\n >\n <MRT_LinearProgressBar isTopToolbar={false} table={table} />\n {positionToolbarAlertBanner === 'bottom' && (\n <MRT_ToolbarAlertBanner\n stackAlertBanner={stackAlertBanner}\n table={table}\n />\n )}\n {['both', 'bottom'].includes(positionToolbarDropZone ?? '') && (\n <MRT_ToolbarDropZone table={table} />\n )}\n <Box\n sx={{\n alignItems: 'center',\n boxSizing: 'border-box',\n display: 'flex',\n justifyContent: 'space-between',\n p: '0.5rem',\n width: '100%',\n }}\n >\n {renderBottomToolbarCustomActions ? (\n renderBottomToolbarCustomActions({ table })\n ) : (\n <span />\n )}\n <Box\n sx={{\n display: 'flex',\n justifyContent: 'flex-end',\n position: stackAlertBanner ? 'relative' : 'absolute',\n right: 0,\n top: 0,\n }}\n >\n {enablePagination &&\n ['both', 'bottom'].includes(positionPagination ?? '') && (\n <MRT_TablePagination position=\"bottom\" table={table} />\n )}\n </Box>\n </Box>\n </Box>\n );\n};\n","import { Box, type BoxProps } from '@mui/material';\n\nimport { type MRT_RowData, type MRT_TableInstance } from '../../types';\nimport { parseFromValuesOrFunc } from '../../utils/utils';\nimport { MRT_ShowHideColumnsButton } from '../buttons/MRT_ShowHideColumnsButton';\nimport { MRT_ToggleDensePaddingButton } from '../buttons/MRT_ToggleDensePaddingButton';\nimport { MRT_ToggleFiltersButton } from '../buttons/MRT_ToggleFiltersButton';\nimport { MRT_ToggleFullScreenButton } from '../buttons/MRT_ToggleFullScreenButton';\nimport { MRT_ToggleGlobalFilterButton } from '../buttons/MRT_ToggleGlobalFilterButton';\n\nexport interface MRT_ToolbarInternalButtonsProps<TData extends MRT_RowData>\n extends BoxProps {\n table: MRT_TableInstance<TData>;\n}\n\nexport const MRT_ToolbarInternalButtons = <TData extends MRT_RowData>({\n table,\n ...rest\n}: MRT_ToolbarInternalButtonsProps<TData>) => {\n const {\n options: {\n columnFilterDisplayMode,\n enableColumnFilters,\n enableColumnOrdering,\n enableColumnPinning,\n enableDensityToggle,\n enableFilters,\n enableFullScreenToggle,\n enableGlobalFilter,\n enableHiding,\n initialState,\n renderToolbarInternalActions,\n },\n } = table;\n\n return (\n <Box\n {...rest}\n sx={(theme) => ({\n alignItems: 'center',\n display: 'flex',\n zIndex: 3,\n ...(parseFromValuesOrFunc(rest?.sx, theme) as any),\n })}\n >\n {renderToolbarInternalActions?.({\n table,\n }) ?? (\n <>\n {enableFilters &&\n enableGlobalFilter &&\n !initialState?.showGlobalFilter && (\n <MRT_ToggleGlobalFilterButton table={table} />\n )}\n {enableFilters &&\n enableColumnFilters &&\n columnFilterDisplayMode !== 'popover' && (\n <MRT_ToggleFiltersButton table={table} />\n )}\n {(enableHiding || enableColumnOrdering || enableColumnPinning) && (\n <MRT_ShowHideColumnsButton table={table} />\n )}\n {enableDensityToggle && (\n <MRT_ToggleDensePaddingButton table={table} />\n )}\n {enableFullScreenToggle && (\n <MRT_ToggleFullScreenButton table={table} />\n )}\n </>\n )}\n </Box>\n );\n};\n","import { Box, useMediaQuery } from '@mui/material';\n\nimport { type MRT_RowData, type MRT_TableInstance } from '../../types';\nimport { getCommonToolbarStyles } from '../../utils/style.utils';\nimport { parseFromValuesOrFunc } from '../../utils/utils';\nimport { MRT_GlobalFilterTextField } from '../inputs/MRT_GlobalFilterTextField';\nimport { MRT_LinearProgressBar } from './MRT_LinearProgressBar';\nimport { MRT_TablePagination } from './MRT_TablePagination';\nimport { MRT_ToolbarAlertBanner } from './MRT_ToolbarAlertBanner';\nimport { MRT_ToolbarDropZone } from './MRT_ToolbarDropZone';\nimport { MRT_ToolbarInternalButtons } from './MRT_ToolbarInternalButtons';\n\nexport interface MRT_TopToolbarProps<TData extends MRT_RowData> {\n table: MRT_TableInstance<TData>;\n}\n\nexport const MRT_TopToolbar = <TData extends MRT_RowData>({\n table,\n}: MRT_TopToolbarProps<TData>) => {\n const {\n options: {\n enableGlobalFilter,\n enablePagination,\n enableToolbarInternalActions,\n muiTopToolbarProps,\n positionGlobalFilter,\n positionPagination,\n positionToolbarAlertBanner,\n positionToolbarDropZone,\n renderTopToolbarCustomActions,\n },\n refs: { topToolbarRef },\n } = table;\n\n const { isFullScreen, showGlobalFilter } = table.state;\n\n const isMobile = useMediaQuery('(max-width:720px)');\n const isTablet = useMediaQuery('(max-width:1024px)');\n\n const toolbarProps = parseFromValuesOrFunc(muiTopToolbarProps, { table });\n\n const stackAlertBanner =\n isMobile ||\n !!renderTopToolbarCustomActions ||\n (showGlobalFilter && isTablet);\n\n const globalFilterProps = {\n sx: !isTablet\n ? {\n zIndex: 2,\n }\n : undefined,\n table,\n };\n\n return (\n <Box\n {...toolbarProps}\n ref={(ref: HTMLDivElement) => {\n topToolbarRef.current = ref;\n if (toolbarProps?.ref) {\n // @ts-expect-error\n toolbarProps.ref.current = ref;\n }\n }}\n sx={(theme) => ({\n ...getCommonToolbarStyles({ table, theme }),\n position: isFullScreen ? 'sticky' : 'relative',\n top: isFullScreen ? '0' : undefined,\n ...(parseFromValuesOrFunc(toolbarProps?.sx, theme) as any),\n })}\n >\n {positionToolbarAlertBanner === 'top' && (\n <MRT_ToolbarAlertBanner\n stackAlertBanner={stackAlertBanner}\n table={table}\n />\n )}\n {['both', 'top'].includes(positionToolbarDropZone ?? '') && (\n <MRT_ToolbarDropZone table={table} />\n )}\n <Box\n sx={{\n alignItems: 'flex-start',\n boxSizing: 'border-box',\n display: 'flex',\n gap: '0.5rem',\n justifyContent: 'space-between',\n p: '0.5rem',\n position: stackAlertBanner ? 'relative' : 'absolute',\n right: 0,\n top: 0,\n width: '100%',\n }}\n >\n {enableGlobalFilter && positionGlobalFilter === 'left' && (\n <MRT_GlobalFilterTextField {...globalFilterProps} />\n )}\n {renderTopToolbarCustomActions?.({ table }) ?? <span />}\n {enableToolbarInternalActions ? (\n <Box\n sx={{\n alignItems: 'center',\n display: 'flex',\n flexWrap: 'wrap-reverse',\n gap: '0.5rem',\n justifyContent: 'flex-end',\n }}\n >\n {enableGlobalFilter && positionGlobalFilter === 'right' && (\n <MRT_GlobalFilterTextField {...globalFilterProps} />\n )}\n <MRT_ToolbarInternalButtons table={table} />\n </Box>\n ) : (\n enableGlobalFilter &&\n positionGlobalFilter === 'right' && (\n <MRT_GlobalFilterTextField {...globalFilterProps} />\n )\n )}\n </Box>\n {enablePagination &&\n ['both', 'top'].includes(positionPagination ?? '') && (\n <MRT_TablePagination position=\"top\" table={table} />\n )}\n <MRT_LinearProgressBar isTopToolbar table={table} />\n </Box>\n );\n};\n","import { Menu, type MenuProps } from '@mui/material';\n\nimport { type MRT_RowData, type MRT_TableInstance } from '../../types';\nimport { openEditingCell } from '../../utils/cell.utils';\nimport { parseFromValuesOrFunc } from '../../utils/utils';\nimport { MRT_ActionMenuItem } from './MRT_ActionMenuItem';\n\nexport interface MRT_CellActionMenuProps<TData extends MRT_RowData>\n extends Partial<MenuProps> {\n table: MRT_TableInstance<TData>;\n}\n\nexport const MRT_CellActionMenu = <TData extends MRT_RowData>({\n table,\n ...rest\n}: MRT_CellActionMenuProps<TData>) => {\n const {\n options: {\n editDisplayMode,\n enableClickToCopy,\n enableEditing,\n icons: { ContentCopy, EditIcon },\n localization,\n mrtTheme: { menuBackgroundColor },\n renderCellActionMenuItems,\n },\n refs: { actionCellRef },\n } = table;\n const { actionCell, density } = table.state;\n const cell = actionCell!;\n const { row } = cell;\n const { column } = cell;\n const { columnDef } = column;\n\n const handleClose = (event?: any) => {\n event?.stopPropagation();\n table.setActionCell(null);\n actionCellRef.current = null;\n };\n\n const internalMenuItems = [\n (parseFromValuesOrFunc(enableClickToCopy, cell) === 'context-menu' ||\n parseFromValuesOrFunc(columnDef.enableClickToCopy, cell) ===\n 'context-menu') && (\n <MRT_ActionMenuItem\n icon={<ContentCopy />}\n key={'mrt-copy'}\n label={localization.copy}\n onClick={(event) => {\n event.stopPropagation();\n navigator.clipboard.writeText(cell.getValue() as string);\n handleClose();\n }}\n table={table}\n />\n ),\n parseFromValuesOrFunc(enableEditing, row) && editDisplayMode === 'cell' && (\n <MRT_ActionMenuItem\n icon={<EditIcon />}\n key={'mrt-edit'}\n label={localization.edit}\n onClick={() => {\n openEditingCell({ cell, table });\n handleClose();\n }}\n table={table}\n />\n ),\n ].filter(Boolean);\n\n const renderActionProps = {\n cell,\n closeMenu: handleClose,\n column,\n internalMenuItems,\n row,\n table,\n };\n\n const menuItems =\n columnDef.renderCellActionMenuItems?.(renderActionProps) ??\n renderCellActionMenuItems?.(renderActionProps);\n\n return (\n (!!menuItems?.length || !!internalMenuItems?.length) && (\n <Menu\n anchorEl={actionCellRef.current}\n disableScrollLock\n onClick={(event) => event.stopPropagation()}\n onClose={handleClose}\n open={!!cell}\n slotProps={{\n list: {\n dense: density === 'compact',\n sx: {\n backgroundColor: menuBackgroundColor,\n },\n },\n }}\n transformOrigin={{ horizontal: -100, vertical: 8 }}\n {...rest}\n >\n {menuItems ?? internalMenuItems}\n </Menu>\n )\n );\n};\n","import { Dialog, type DialogProps } from '@mui/material';\nimport { DialogActions } from '@mui/material';\nimport { DialogContent } from '@mui/material';\nimport { DialogTitle } from '@mui/material';\nimport { Stack } from '@mui/material';\n\nimport {\n type MRT_Row,\n type MRT_RowData,\n type MRT_TableInstance,\n} from '../../types';\nimport { parseFromValuesOrFunc } from '../../utils/utils';\nimport { MRT_EditActionButtons } from '../buttons/MRT_EditActionButtons';\nimport { MRT_EditCellTextField } from '../inputs/MRT_EditCellTextField';\n\nexport interface MRT_EditRowModalProps<TData extends MRT_RowData>\n extends Partial<DialogProps> {\n open: boolean;\n table: MRT_TableInstance<TData>;\n}\n\nexport const MRT_EditRowModal = <TData extends MRT_RowData>({\n open,\n table,\n ...rest\n}: MRT_EditRowModalProps<TData>) => {\n const {\n options: {\n localization,\n muiCreateRowModalProps,\n muiEditRowDialogProps,\n onCreatingRowCancel,\n onEditingRowCancel,\n renderCreateRowDialogContent,\n renderEditRowDialogContent,\n },\n setCreatingRow,\n setEditingRow,\n } = table;\n const { creatingRow, editingRow } = table.state;\n const row = (creatingRow ?? editingRow) as MRT_Row<TData>;\n\n const dialogProps = {\n ...parseFromValuesOrFunc(muiEditRowDialogProps, { row, table }),\n ...(creatingRow &&\n parseFromValuesOrFunc(muiCreateRowModalProps, { row, table })),\n ...rest,\n };\n\n const internalEditComponents = row\n .getAllCells()\n .filter((cell) => cell.column.columnDef.columnDefType === 'data')\n .map((cell) => (\n <MRT_EditCellTextField\n cell={cell as any}\n key={cell.id}\n table={table as any}\n />\n ));\n\n return (\n <Dialog\n fullWidth\n maxWidth=\"xs\"\n onClose={(event, reason) => {\n if (creatingRow) {\n onCreatingRowCancel?.({ row, table });\n setCreatingRow(null);\n } else {\n onEditingRowCancel?.({ row, table });\n setEditingRow(null);\n }\n row._valuesCache = {} as any; //reset values cache\n dialogProps.onClose?.(event, reason);\n }}\n open={open}\n {...dialogProps}\n >\n {((creatingRow &&\n renderCreateRowDialogContent?.({\n internalEditComponents,\n row,\n table,\n })) ||\n renderEditRowDialogContent?.({\n internalEditComponents,\n row,\n table,\n })) ?? (\n <>\n <DialogTitle sx={{ textAlign: 'center' }}>\n {localization.edit}\n </DialogTitle>\n <DialogContent>\n <form onSubmit={(e) => e.preventDefault()}>\n <Stack\n sx={{\n gap: '32px',\n paddingTop: '16px',\n width: '100%',\n }}\n >\n {internalEditComponents}\n </Stack>\n </form>\n </DialogContent>\n <DialogActions sx={{ p: '1.25rem' }}>\n <MRT_EditActionButtons row={row} table={table} variant=\"text\" />\n </DialogActions>\n </>\n )}\n </Dialog>\n );\n};\n","import { type Range, useVirtualizer } from '@tanstack/react-virtual';\nimport { useCallback, useMemo } from 'react';\n\nimport {\n type MRT_ColumnVirtualizer,\n type MRT_RowData,\n type MRT_TableInstance,\n} from '../types';\nimport { parseFromValuesOrFunc } from '../utils/utils';\nimport { extraIndexRangeExtractor } from '../utils/virtualization.utils';\n\nexport const useMRT_ColumnVirtualizer = <\n TData extends MRT_RowData,\n TScrollElement extends Element | Window = HTMLDivElement,\n TItemElement extends Element = HTMLTableCellElement,\n>(\n table: MRT_TableInstance<TData>,\n): MRT_ColumnVirtualizer | undefined => {\n const {\n options: {\n columnVirtualizerInstanceRef,\n columnVirtualizerOptions,\n enableColumnPinning,\n enableColumnVirtualization,\n },\n refs: { tableContainerRef },\n } = table;\n const { columnPinning, columnVisibility, draggingColumn } = table.state;\n\n if (!enableColumnVirtualization) return undefined;\n\n const columnVirtualizerProps = parseFromValuesOrFunc(\n columnVirtualizerOptions,\n {\n table,\n },\n );\n\n const visibleColumns = table.getVisibleLeafColumns();\n\n const [leftPinnedIndexes, rightPinnedIndexes] = useMemo(\n () =>\n enableColumnPinning\n ? [\n visibleColumns\n .filter((c) => c.getIsPinned() === 'start')\n .map((c) => c.getPinnedIndex()),\n visibleColumns\n .filter((c) => c.getIsPinned() === 'end')\n .map(\n (column) => visibleColumns.length - column.getPinnedIndex() - 1,\n )\n .sort((a, b) => a - b),\n ]\n : [[], []],\n [columnPinning, columnVisibility, enableColumnPinning],\n );\n\n const numPinnedLeft = leftPinnedIndexes.length;\n const numPinnedRight = rightPinnedIndexes.length;\n\n const draggingColumnIndex = useMemo(\n () =>\n draggingColumn?.id\n ? visibleColumns.findIndex((c) => c.id === draggingColumn?.id)\n : undefined,\n [draggingColumn?.id],\n );\n\n const columnVirtualizer = useVirtualizer({\n count: visibleColumns.length,\n estimateSize: (index) => visibleColumns[index].getSize(),\n getScrollElement: () => tableContainerRef.current,\n horizontal: true,\n overscan: 3,\n rangeExtractor: useCallback(\n (range: Range) => {\n const newIndexes = extraIndexRangeExtractor(range, draggingColumnIndex);\n if (!numPinnedLeft && !numPinnedRight) {\n return newIndexes;\n }\n return [\n ...new Set([\n ...leftPinnedIndexes,\n ...newIndexes,\n ...rightPinnedIndexes,\n ]),\n ];\n },\n [leftPinnedIndexes, rightPinnedIndexes, draggingColumnIndex],\n ),\n ...columnVirtualizerProps,\n }) as unknown as MRT_ColumnVirtualizer<TScrollElement, TItemElement>;\n\n const virtualColumns = columnVirtualizer.getVirtualItems();\n columnVirtualizer.virtualColumns = virtualColumns as any;\n const numColumns = virtualColumns.length;\n\n if (numColumns) {\n const totalSize = columnVirtualizer.getTotalSize();\n\n const leftNonPinnedStart = virtualColumns[numPinnedLeft]?.start || 0;\n const leftNonPinnedEnd =\n virtualColumns[leftPinnedIndexes.length - 1]?.end || 0;\n\n const rightNonPinnedStart =\n virtualColumns[numColumns - numPinnedRight]?.start || 0;\n const rightNonPinnedEnd =\n virtualColumns[numColumns - numPinnedRight - 1]?.end || 0;\n\n columnVirtualizer.virtualPaddingLeft =\n leftNonPinnedStart - leftNonPinnedEnd;\n\n columnVirtualizer.virtualPaddingRight =\n totalSize -\n rightNonPinnedEnd -\n (numPinnedRight ? totalSize - rightNonPinnedStart : 0);\n }\n\n if (columnVirtualizerInstanceRef) {\n //@ts-expect-error\n columnVirtualizerInstanceRef.current = columnVirtualizer;\n }\n\n return columnVirtualizer as any;\n};\n","import { Table, type TableProps } from '@mui/material';\nimport { useMemo } from 'react';\n\nimport { useMRT_ColumnVirtualizer } from '../../hooks/useMRT_ColumnVirtualizer';\nimport { type MRT_RowData, type MRT_TableInstance } from '../../types';\nimport { parseCSSVarId } from '../../utils/style.utils';\nimport { parseFromValuesOrFunc } from '../../utils/utils';\nimport { Memo_MRT_TableBody, MRT_TableBody } from '../body/MRT_TableBody';\nimport { MRT_TableFooter } from '../footer/MRT_TableFooter';\nimport { MRT_TableHead } from '../head/MRT_TableHead';\n\nexport interface MRT_TableProps<TData extends MRT_RowData> extends TableProps {\n table: MRT_TableInstance<TData>;\n}\n\nexport const MRT_Table = <TData extends MRT_RowData>({\n table,\n ...rest\n}: MRT_TableProps<TData>) => {\n const {\n getFlatHeaders,\n options: {\n columns,\n enableStickyHeader,\n enableTableFooter,\n enableTableHead,\n layoutMode,\n memoMode,\n muiTableProps,\n renderCaption,\n },\n } = table;\n const { columnResizing, columnSizing, columnVisibility, isFullScreen } =\n table.state;\n\n const tableProps = {\n ...parseFromValuesOrFunc(muiTableProps, { table }),\n ...rest,\n };\n\n const Caption = parseFromValuesOrFunc(renderCaption, { table });\n\n const columnSizeVars = useMemo(() => {\n const headers = getFlatHeaders();\n const colSizes: { [key: string]: number } = {};\n for (let i = 0; i < headers.length; i++) {\n const header = headers[i];\n const colSize = header.getSize();\n colSizes[`--header-${parseCSSVarId(header.id)}-size`] = colSize;\n colSizes[`--col-${parseCSSVarId(header.column.id)}-size`] = colSize;\n }\n return colSizes;\n }, [columns, columnSizing, columnResizing, columnVisibility]);\n\n const columnVirtualizer = useMRT_ColumnVirtualizer(table);\n\n const commonTableGroupProps = {\n columnVirtualizer,\n table,\n };\n\n return (\n <Table\n stickyHeader={enableStickyHeader || isFullScreen}\n {...tableProps}\n style={{ ...columnSizeVars, ...tableProps?.style }}\n sx={(theme) => ({\n borderCollapse: 'separate',\n display: layoutMode?.startsWith('grid') ? 'grid' : undefined,\n position: 'relative',\n ...(parseFromValuesOrFunc(tableProps?.sx, theme) as any),\n })}\n >\n {!!Caption && <caption>{Caption}</caption>}\n {enableTableHead && <MRT_TableHead {...commonTableGroupProps} />}\n {memoMode === 'table-body' || columnResizing.isResizingColumn ? (\n <Memo_MRT_TableBody {...commonTableGroupProps} />\n ) : (\n <MRT_TableBody {...commonTableGroupProps} />\n )}\n {enableTableFooter && <MRT_TableFooter {...commonTableGroupProps} />}\n </Table>\n );\n};\n","import { Box } from '@mui/material';\nimport { CircularProgress, type CircularProgressProps } from '@mui/material';\nimport { alpha } from '@mui/material/styles';\n\nimport { type MRT_RowData, type MRT_TableInstance } from '../../types';\nimport { parseFromValuesOrFunc } from '../../utils/utils';\n\nexport interface MRT_TableLoadingOverlayProps<TData extends MRT_RowData>\n extends CircularProgressProps {\n table: MRT_TableInstance<TData>;\n}\n\nexport const MRT_TableLoadingOverlay = <TData extends MRT_RowData>({\n table,\n ...rest\n}: MRT_TableLoadingOverlayProps<TData>) => {\n const {\n options: {\n id,\n localization,\n mrtTheme: { baseBackgroundColor },\n muiCircularProgressProps,\n },\n } = table;\n\n const circularProgressProps = {\n ...parseFromValuesOrFunc(muiCircularProgressProps, { table }),\n ...rest,\n };\n\n return (\n <Box\n sx={{\n alignItems: 'center',\n backgroundColor: alpha(baseBackgroundColor, 0.5),\n bottom: 0,\n display: 'flex',\n justifyContent: 'center',\n left: 0,\n maxHeight: '100vh',\n position: 'absolute',\n right: 0,\n top: 0,\n width: '100%',\n zIndex: 3,\n }}\n >\n {circularProgressProps?.Component ?? (\n <CircularProgress\n aria-label={localization.noRecordsToDisplay}\n id={`mrt-progress-${id}`}\n {...circularProgressProps}\n />\n )}\n </Box>\n );\n};\n","import { TableContainer, type TableContainerProps } from '@mui/material';\nimport { useEffect, useLayoutEffect, useState } from 'react';\n\nimport { type MRT_RowData, type MRT_TableInstance } from '../../types';\nimport { parseFromValuesOrFunc } from '../../utils/utils';\nimport { MRT_CellActionMenu } from '../menus/MRT_CellActionMenu';\nimport { MRT_EditRowModal } from '../modals/MRT_EditRowModal';\nimport { MRT_Table } from './MRT_Table';\nimport { MRT_TableLoadingOverlay } from './MRT_TableLoadingOverlay';\n\nconst useIsomorphicLayoutEffect =\n typeof window !== 'undefined' ? useLayoutEffect : useEffect;\n\nexport interface MRT_TableContainerProps<TData extends MRT_RowData>\n extends TableContainerProps {\n table: MRT_TableInstance<TData>;\n}\n\nexport const MRT_TableContainer = <TData extends MRT_RowData>({\n table,\n ...rest\n}: MRT_TableContainerProps<TData>) => {\n const {\n options: {\n createDisplayMode,\n editDisplayMode,\n enableCellActions,\n enableStickyHeader,\n muiTableContainerProps,\n },\n refs: { bottomToolbarRef, tableContainerRef, topToolbarRef },\n } = table;\n const {\n actionCell,\n creatingRow,\n editingRow,\n isFullScreen,\n isLoading,\n showLoadingOverlay,\n } = table.state;\n\n const loading =\n showLoadingOverlay !== false && (isLoading || showLoadingOverlay);\n\n const [totalToolbarHeight, setTotalToolbarHeight] = useState(0);\n\n const tableContainerProps = {\n ...parseFromValuesOrFunc(muiTableContainerProps, {\n table,\n }),\n ...rest,\n };\n\n useIsomorphicLayoutEffect(() => {\n const topToolbarHeight =\n typeof document !== 'undefined'\n ? (topToolbarRef.current?.offsetHeight ?? 0)\n : 0;\n\n const bottomToolbarHeight =\n typeof document !== 'undefined'\n ? (bottomToolbarRef?.current?.offsetHeight ?? 0)\n : 0;\n\n setTotalToolbarHeight(topToolbarHeight + bottomToolbarHeight);\n });\n\n const createModalOpen = createDisplayMode === 'modal' && creatingRow;\n const editModalOpen = editDisplayMode === 'modal' && editingRow;\n\n return (\n <TableContainer\n aria-busy={loading}\n aria-describedby={loading ? 'mrt-progress' : undefined}\n {...tableContainerProps}\n ref={(node: HTMLDivElement) => {\n if (node) {\n tableContainerRef.current = node;\n if (tableContainerProps?.ref) {\n //@ts-expect-error\n tableContainerProps.ref.current = node;\n }\n }\n }}\n style={{\n maxHeight: isFullScreen\n ? `calc(100vh - ${totalToolbarHeight}px)`\n : undefined,\n ...tableContainerProps?.style,\n }}\n sx={(theme) => ({\n maxHeight: enableStickyHeader\n ? `clamp(350px, calc(100vh - ${totalToolbarHeight}px), 9999px)`\n : undefined,\n maxWidth: '100%',\n overflow: 'auto',\n position: 'relative',\n ...(parseFromValuesOrFunc(tableContainerProps?.sx, theme) as any),\n })}\n >\n {loading ? <MRT_TableLoadingOverlay table={table} /> : null}\n <MRT_Table table={table} />\n {(createModalOpen || editModalOpen) && (\n <MRT_EditRowModal open table={table} />\n )}\n {enableCellActions && actionCell && <MRT_CellActionMenu table={table} />}\n </TableContainer>\n );\n};\n","import { Paper, type PaperProps } from '@mui/material';\nimport { useTheme } from '@mui/material/styles';\n\nimport { type MRT_RowData, type MRT_TableInstance } from '../../types';\nimport { parseFromValuesOrFunc } from '../../utils/utils';\nimport { MRT_BottomToolbar } from '../toolbar/MRT_BottomToolbar';\nimport { MRT_TopToolbar } from '../toolbar/MRT_TopToolbar';\nimport { MRT_TableContainer } from './MRT_TableContainer';\n\nexport interface MRT_TablePaperProps<TData extends MRT_RowData>\n extends PaperProps {\n table: MRT_TableInstance<TData>;\n}\n\nexport const MRT_TablePaper = <TData extends MRT_RowData>({\n table,\n ...rest\n}: MRT_TablePaperProps<TData>) => {\n const {\n options: {\n enableBottomToolbar,\n enableTopToolbar,\n mrtTheme: { baseBackgroundColor },\n muiTablePaperProps,\n renderBottomToolbar,\n renderTopToolbar,\n },\n refs: { tablePaperRef },\n } = table;\n const { isFullScreen } = table.state;\n\n const paperProps = {\n ...parseFromValuesOrFunc(muiTablePaperProps, { table }),\n ...rest,\n };\n\n const theme = useTheme();\n\n return (\n <Paper\n elevation={2}\n onKeyDown={(e) => e.key === 'Escape' && table.setIsFullScreen(false)}\n {...paperProps}\n ref={(ref: HTMLDivElement) => {\n tablePaperRef.current = ref;\n if (paperProps?.ref) {\n //@ts-expect-error\n paperProps.ref.current = ref;\n }\n }}\n style={{\n ...(isFullScreen\n ? {\n bottom: 0,\n height: '100dvh',\n left: 0,\n margin: 0,\n maxHeight: '100dvh',\n maxWidth: '100dvw',\n padding: 0,\n position: 'fixed',\n right: 0,\n top: 0,\n width: '100dvw',\n zIndex: theme.zIndex.modal,\n }\n : {}),\n ...paperProps?.style,\n }}\n sx={(theme) => ({\n backgroundColor: baseBackgroundColor,\n backgroundImage: 'unset',\n overflow: 'hidden',\n transition: 'all 100ms ease-in-out',\n ...(parseFromValuesOrFunc(paperProps?.sx, theme) as any),\n })}\n >\n {enableTopToolbar &&\n (parseFromValuesOrFunc(renderTopToolbar, { table }) ?? (\n <MRT_TopToolbar table={table} />\n ))}\n <MRT_TableContainer table={table} />\n {enableBottomToolbar &&\n (parseFromValuesOrFunc(renderBottomToolbar, { table }) ?? (\n <MRT_BottomToolbar table={table} />\n ))}\n </Paper>\n );\n};\n","import { useMaterialReactTable } from '../hooks/useMaterialReactTable';\nimport {\n type MRT_RowData,\n type MRT_TableInstance,\n type MRT_TableOptions,\n type Xor,\n} from '../types';\nimport { MRT_TablePaper } from './table/MRT_TablePaper';\n\nexport type MaterialReactTableProps<TData extends MRT_RowData> = Xor<\n TableInstanceProp<TData>,\n MRT_TableOptions<TData>\n>;\n\ntype TableInstanceProp<TData extends MRT_RowData> = {\n table: MRT_TableInstance<TData>;\n};\n\nconst isTableInstanceProp = <TData extends MRT_RowData>(\n props: MaterialReactTableProps<TData>,\n): props is TableInstanceProp<TData> =>\n (props as TableInstanceProp<TData>).table !== undefined;\n\nexport const MaterialReactTable = <TData extends MRT_RowData>(\n props: MaterialReactTableProps<TData>,\n) => {\n let table: MRT_TableInstance<TData>;\n\n if (isTableInstanceProp(props)) {\n table = props.table;\n } else {\n table = useMaterialReactTable(props);\n }\n\n return <MRT_TablePaper table={table} />;\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","names":["fuzzy","_flexRender","_constructRow"],"sources":["../src/fns/sortingFns.ts","../src/utils/utils.ts","../src/utils/row.utils.ts","../src/hooks/useMRT_Rows.ts","../src/utils/virtualization.utils.ts","../src/hooks/useMRT_RowVirtualizer.ts","../src/utils/style.utils.ts","../src/utils/cell.utils.ts","../src/components/buttons/MRT_CopyButton.tsx","../src/utils/slotProps.utils.ts","../src/components/inputs/MRT_EditCellTextField.tsx","../src/utils/highlight.utils.ts","../src/components/body/MRT_TableBodyCellValue.tsx","../src/components/body/MRT_TableBodyCell.tsx","../src/components/body/MRT_TableDetailPanel.tsx","../src/components/body/MRT_TableBodyRow.tsx","../src/components/body/MRT_TableBody.tsx","../src/components/buttons/MRT_GrabHandleButton.tsx","../src/components/body/MRT_TableBodyRowGrabHandle.tsx","../src/components/buttons/MRT_RowPinButton.tsx","../src/components/body/MRT_TableBodyRowPinButton.tsx","../src/components/buttons/MRT_ColumnPinningButtons.tsx","../src/components/buttons/MRT_EditActionButtons.tsx","../src/components/buttons/MRT_ExpandAllButton.tsx","../src/components/buttons/MRT_ExpandButton.tsx","../src/utils/column.utils.ts","../src/utils/displayColumn.utils.ts","../src/components/menus/MRT_ShowHideColumnsMenuItems.tsx","../src/components/menus/MRT_ShowHideColumnsMenu.tsx","../src/components/buttons/MRT_ShowHideColumnsButton.tsx","../src/components/buttons/MRT_ToggleDensePaddingButton.tsx","../src/components/buttons/MRT_ToggleFiltersButton.tsx","../src/components/buttons/MRT_ToggleFullScreenButton.tsx","../src/components/buttons/MRT_ToggleGlobalFilterButton.tsx","../src/components/menus/MRT_ActionMenuItem.tsx","../src/components/menus/MRT_RowActionMenu.tsx","../src/components/buttons/MRT_ToggleRowActionMenuButton.tsx","../src/components/footer/MRT_TableFooterCell.tsx","../src/components/footer/MRT_TableFooterRow.tsx","../src/components/footer/MRT_TableFooter.tsx","../src/components/inputs/MRT_SelectCheckbox.tsx","../src/components/toolbar/MRT_ToolbarAlertBanner.tsx","../src/components/menus/MRT_FilterOptionMenu.tsx","../src/components/menus/MRT_ColumnActionMenu.tsx","../src/components/head/MRT_TableHeadCellColumnActionsButton.tsx","../src/components/inputs/MRT_FilterCheckbox.tsx","../src/components/inputs/MRT_FilterTextField.tsx","../src/components/inputs/MRT_FilterRangeFields.tsx","../src/components/inputs/MRT_FilterRangeSlider.tsx","../src/components/head/MRT_TableHeadCellFilterContainer.tsx","../src/components/head/MRT_TableHeadCellFilterLabel.tsx","../src/components/head/MRT_TableHeadCellGrabHandle.tsx","../src/components/head/MRT_TableHeadCellResizeHandle.tsx","../src/components/head/MRT_TableHeadCellSortLabel.tsx","../src/components/head/MRT_TableHeadCell.tsx","../src/components/head/MRT_TableHeadRow.tsx","../src/components/head/MRT_TableHead.tsx","../src/components/inputs/MRT_GlobalFilterTextField.tsx","../src/fns/aggregationFns.ts","../src/fns/filterFns.ts","../src/fns/tableFeatures.ts","../src/utils/tanstack.helpers.ts","../src/hooks/display-columns/getMRT_RowActionsColumnDef.tsx","../src/hooks/display-columns/getMRT_RowDragColumnDef.tsx","../src/hooks/display-columns/getMRT_RowExpandColumnDef.tsx","../src/hooks/display-columns/getMRT_RowNumbersColumnDef.tsx","../src/hooks/display-columns/getMRT_RowPinningColumnDef.tsx","../src/hooks/display-columns/getMRT_RowSelectColumnDef.tsx","../src/icons.ts","../src/locales/en.ts","../src/hooks/useMRT_TableOptions.ts","../src/hooks/display-columns/getMRT_RowSpacerColumnDef.tsx","../src/hooks/useMRT_Effects.ts","../src/hooks/useMRT_TableInstance.ts","../src/hooks/useMaterialReactTable.ts","../src/components/toolbar/MRT_LinearProgressBar.tsx","../src/components/toolbar/MRT_TablePagination.tsx","../src/components/toolbar/MRT_ToolbarDropZone.tsx","../src/components/toolbar/MRT_BottomToolbar.tsx","../src/components/toolbar/MRT_ToolbarInternalButtons.tsx","../src/components/toolbar/MRT_TopToolbar.tsx","../src/components/menus/MRT_CellActionMenu.tsx","../src/components/modals/MRT_EditRowModal.tsx","../src/hooks/useMRT_ColumnVirtualizer.ts","../src/components/table/MRT_Table.tsx","../src/components/table/MRT_TableLoadingOverlay.tsx","../src/components/table/MRT_TableContainer.tsx","../src/components/table/MRT_TablePaper.tsx","../src/components/MaterialReactTable.tsx"],"sourcesContent":["import { compareItems, type RankingInfo } from '@tanstack/match-sorter-utils';\nimport {\n type Row,\n sortFn_alphanumeric,\n sortFn_alphanumericCaseSensitive,\n sortFn_basic,\n sortFn_datetime,\n sortFn_text,\n sortFn_textCaseSensitive,\n} from '@tanstack/react-table';\n\nimport { type MRT_Row, type MRT_RowData } from '../types';\nimport { type MRT_TableFeatures } from './tableFeatures';\n\nconst fuzzy = <TFeatures extends MRT_TableFeatures, TData extends MRT_RowData>(\n rowA: Row<TFeatures, TData>,\n rowB: Row<TFeatures, TData>,\n columnId: string,\n): number => {\n let dir = 0;\n if ('columnFiltersMeta' in rowA && 'columnFiltersMeta' in rowB && rowA.columnFiltersMeta[columnId]) {\n dir = compareItems(\n rowA.columnFiltersMeta[columnId] as RankingInfo,\n rowB.columnFiltersMeta[columnId] as RankingInfo,\n );\n }\n // Provide a fallback for when the item ranks are equal\n return dir === 0 ? sortFn_alphanumeric(rowA, rowB, columnId) : dir;\n};\n\nexport const MRT_SortingFns = {\n alphanumeric: sortFn_alphanumeric,\n alphanumericCaseSensitive: sortFn_alphanumericCaseSensitive,\n basic: sortFn_basic,\n datetime: sortFn_datetime,\n fuzzy,\n text: sortFn_text,\n textCaseSensitive: sortFn_textCaseSensitive,\n};\n\nexport const rankGlobalFuzzy = <TData extends MRT_RowData>(rowA: MRT_Row<TData>, rowB: MRT_Row<TData>): number =>\n Math.max(...Object.values(rowB.columnFiltersMeta).map((meta) => (meta as RankingInfo).rank)) -\n Math.max(...Object.values(rowA.columnFiltersMeta).map((meta) => (meta as RankingInfo).rank));\n","import { type DropdownOption } from '../types';\n\nexport const parseFromValuesOrFunc = <T, U>(fn: ((arg: U) => T) | T | undefined, arg: U): T | undefined =>\n fn instanceof Function ? fn(arg) : fn;\n\nexport const getValueAndLabel = (option?: DropdownOption | null): { label: string; value: number | string } => {\n let label: string = '';\n let value: number | string = '';\n if (option) {\n if (typeof option !== 'object') {\n label = option;\n value = option;\n } else {\n label = option.label ?? String(option.value);\n value = option.value;\n }\n }\n return { label, value };\n};\n","import { type ChangeEvent, type KeyboardEvent, type MouseEvent } from 'react';\n\nimport { rankGlobalFuzzy } from '../fns/sortingFns';\nimport { type MRT_Row, type MRT_RowData, type MRT_TableInstance } from '../types';\nimport { parseFromValuesOrFunc } from './utils';\n\nexport const getMRT_Rows = <TData extends MRT_RowData>(\n table: MRT_TableInstance<TData>,\n all?: boolean,\n): MRT_Row<TData>[] => {\n const {\n getCenterRows,\n getPrePaginatedRowModel,\n getRowModel,\n getTopRows,\n options: {\n createDisplayMode,\n enablePagination,\n enableRowPinning,\n manualPagination,\n positionCreatingRow,\n rowPinningDisplayMode,\n },\n } = table;\n const { creatingRow, pagination } = table.state;\n\n const isRankingRows = getIsRankingRows(table);\n\n let rows: MRT_Row<TData>[] = [];\n if (!isRankingRows) {\n rows =\n !enableRowPinning || rowPinningDisplayMode?.includes('sticky')\n ? all\n ? getPrePaginatedRowModel().rows\n : getRowModel().rows\n : getCenterRows();\n } else {\n // fuzzy ranking adjustments\n rows = getPrePaginatedRowModel().rows.sort((a, b) => rankGlobalFuzzy(a, b));\n if (enablePagination && !manualPagination && !all) {\n const start = pagination.pageIndex * pagination.pageSize;\n rows = rows.slice(start, start + pagination.pageSize);\n }\n if (enableRowPinning && !rowPinningDisplayMode?.includes('sticky')) {\n // \"re-center-ize\" the rows (no top or bottom pinned rows unless sticky)\n rows = rows.filter((row) => !row.getIsPinned());\n }\n }\n // row pinning adjustments\n if (enableRowPinning && rowPinningDisplayMode?.includes('sticky')) {\n const centerPinnedRowIds = rows.filter((row) => row.getIsPinned()).map((r) => r.id);\n\n rows = [...getTopRows().filter((row) => !centerPinnedRowIds.includes(row.id)), ...rows];\n }\n // blank inserted creating row adjustments\n if (positionCreatingRow !== undefined && creatingRow && createDisplayMode === 'row') {\n const creatingRowIndex = !isNaN(+positionCreatingRow)\n ? +positionCreatingRow\n : positionCreatingRow === 'top'\n ? 0\n : rows.length;\n rows = [...rows.slice(0, creatingRowIndex), creatingRow, ...rows.slice(creatingRowIndex)];\n }\n\n return rows;\n};\n\nexport const getCanRankRows = <TData extends MRT_RowData>(table: MRT_TableInstance<TData>): boolean | undefined => {\n const {\n options: { enableGlobalFilterRankedResults, manualExpanding, manualFiltering, manualGrouping, manualSorting },\n } = table;\n const { expanded, globalFilterFn } = table.state;\n\n return (\n !manualExpanding &&\n !manualFiltering &&\n !manualGrouping &&\n !manualSorting &&\n enableGlobalFilterRankedResults &&\n globalFilterFn === 'fuzzy' &&\n expanded !== true &&\n !Object.values(expanded).some(Boolean)\n );\n};\n\nexport const getIsRankingRows = <TData extends MRT_RowData>(table: MRT_TableInstance<TData>): boolean => {\n const { globalFilter, sorting } = table.state;\n\n return Boolean(getCanRankRows(table) && globalFilter && !Object.values(sorting).some(Boolean));\n};\n\nexport const getIsRowSelected = <TData extends MRT_RowData>({\n row,\n table,\n}: {\n row: MRT_Row<TData>;\n table: MRT_TableInstance<TData>;\n}): boolean | undefined => {\n const {\n options: { enableRowSelection },\n } = table;\n\n return (\n row.getIsSelected() ||\n (parseFromValuesOrFunc(enableRowSelection, row) && row.getCanSelectSubRows() && row.getIsAllSubRowsSelected())\n );\n};\n\nexport const getMRT_RowSelectionHandler =\n <TData extends MRT_RowData>({\n row,\n staticRowIndex = 0,\n table,\n }: {\n row: MRT_Row<TData>;\n staticRowIndex?: number;\n table: MRT_TableInstance<TData>;\n }): ((\n event: ChangeEvent<HTMLInputElement> | KeyboardEvent<HTMLTableCellElement> | MouseEvent<HTMLTableRowElement>,\n value?: boolean,\n ) => void) =>\n (\n event: ChangeEvent<HTMLInputElement> | KeyboardEvent<HTMLTableCellElement> | MouseEvent<HTMLTableRowElement>,\n value?: boolean,\n ): void => {\n const {\n options: {\n enableBatchRowSelection,\n enableMultiRowSelection,\n enableRowPinning,\n manualPagination,\n rowPinningDisplayMode,\n },\n refs: { lastSelectedRowId: lastSelectedRowId },\n } = table;\n const {\n pagination: { pageIndex, pageSize },\n } = table.state;\n\n const paginationOffset = manualPagination ? 0 : pageSize * pageIndex;\n\n const wasCurrentRowChecked = getIsRowSelected({ row, table });\n\n // toggle selection of this row\n row.toggleSelected(value ?? !wasCurrentRowChecked);\n\n const changedRowIds = new Set<string>([row.id]);\n\n // if shift key is pressed, select all rows between last selected and this one\n if (\n enableBatchRowSelection &&\n enableMultiRowSelection &&\n 'shiftKey' in event.nativeEvent &&\n event.nativeEvent.shiftKey &&\n lastSelectedRowId.current !== null\n ) {\n const rows = getMRT_Rows(table, true);\n\n const lastIndex = rows.findIndex((r) => r.id === lastSelectedRowId.current);\n\n if (lastIndex !== -1) {\n const isLastIndexChecked = getIsRowSelected({\n row: rows?.[lastIndex],\n table,\n });\n\n const currentIndex = staticRowIndex + paginationOffset;\n const [start, end] = lastIndex < currentIndex ? [lastIndex, currentIndex] : [currentIndex, lastIndex];\n\n // toggle selection of all rows between last selected and this one\n // but only if the last selected row is not the same as the current one\n if (wasCurrentRowChecked !== isLastIndexChecked) {\n for (let i = start; i <= end; i++) {\n rows[i].toggleSelected(!wasCurrentRowChecked);\n changedRowIds.add(rows[i].id);\n }\n }\n }\n }\n\n // record the last selected row id\n lastSelectedRowId.current = row.id;\n\n // if all sub rows were selected, unselect them\n if (row.getCanSelectSubRows() && row.getIsAllSubRowsSelected()) {\n row.subRows?.forEach((r) => r.toggleSelected(false));\n }\n\n if (enableRowPinning && rowPinningDisplayMode?.includes('select')) {\n changedRowIds.forEach((rowId) => {\n const rowToTogglePin = table.getRow(rowId);\n rowToTogglePin.pin(\n !wasCurrentRowChecked //was not previously pinned or selected\n ? rowPinningDisplayMode?.includes('bottom')\n ? 'bottom'\n : 'top'\n : false,\n );\n });\n }\n };\n\nexport const getMRT_SelectAllHandler =\n <TData extends MRT_RowData>({\n table,\n }: {\n table: MRT_TableInstance<TData>;\n }): ((\n event: ChangeEvent<HTMLInputElement> | KeyboardEvent<HTMLTableCellElement> | MouseEvent<HTMLButtonElement>,\n value?: boolean,\n forceAll?: boolean,\n ) => void) =>\n (\n event: ChangeEvent<HTMLInputElement> | KeyboardEvent<HTMLTableCellElement> | MouseEvent<HTMLButtonElement>,\n value?: boolean,\n forceAll?: boolean,\n ): void => {\n const {\n options: { enableRowPinning, rowPinningDisplayMode, selectAllMode },\n refs: { lastSelectedRowId },\n } = table;\n\n const checked = value ?? (event.target as HTMLInputElement).checked;\n if (selectAllMode === 'all' || forceAll) {\n table.toggleAllRowsSelected(checked);\n } else {\n table.toggleAllPageRowsSelected(checked);\n }\n if (enableRowPinning && rowPinningDisplayMode?.includes('select')) {\n table.setRowPinning({ bottom: [], top: [] });\n }\n lastSelectedRowId.current = null;\n };\n","import { type MRT_Row, type MRT_RowData, type MRT_TableInstance } from '../types';\nimport { getMRT_Rows } from '../utils/row.utils';\n\nexport const useMRT_Rows = <TData extends MRT_RowData>(table: MRT_TableInstance<TData>): MRT_Row<TData>[] =>\n getMRT_Rows(table);\n","import { defaultRangeExtractor, type Range } from '@tanstack/react-virtual';\n\n/**\n * When scroll, the `draggingRow` or `draggingColumn` can be removed from document because of virtualization,\n * then, the `dragEnd` event on `MRT_TableBodyRowGrabHandle` or `MRT_TableHeadCellGrabHandle` will not fire.\n * We should keep the `draggingRow` or `draggingColumn` in `getVirtualItems()` to avoid this thing.\n */\nexport const extraIndexRangeExtractor = (range: Range, draggingIndex?: number): number[] => {\n const newIndexes = defaultRangeExtractor(range);\n if (draggingIndex === undefined) {\n return newIndexes;\n }\n if (draggingIndex >= 0 && draggingIndex < Math.max(range.startIndex - range.overscan, 0)) {\n newIndexes.unshift(draggingIndex);\n }\n if (draggingIndex >= 0 && draggingIndex > range.endIndex + range.overscan) {\n newIndexes.push(draggingIndex);\n }\n return newIndexes;\n};\n","import { type Range, useVirtualizer } from '@tanstack/react-virtual';\nimport { useCallback, useMemo } from 'react';\n\nimport { type MRT_Row, type MRT_RowData, type MRT_RowVirtualizer, type MRT_TableInstance } from '../types';\nimport { parseFromValuesOrFunc } from '../utils/utils';\nimport { extraIndexRangeExtractor } from '../utils/virtualization.utils';\n\nexport const useMRT_RowVirtualizer = <\n TData extends MRT_RowData,\n TScrollElement extends Element | Window = HTMLDivElement,\n TItemElement extends Element = HTMLTableRowElement,\n>(\n table: MRT_TableInstance<TData>,\n rows?: MRT_Row<TData>[],\n): MRT_RowVirtualizer<TScrollElement, TItemElement> | undefined => {\n const {\n getRowModel,\n options: { enableRowVirtualization, renderDetailPanel, rowVirtualizerInstanceRef, rowVirtualizerOptions },\n refs: { tableContainerRef },\n } = table;\n const { density, draggingRow, expanded } = table.state;\n\n const rowVirtualizerProps = enableRowVirtualization\n ? parseFromValuesOrFunc(rowVirtualizerOptions, {\n table,\n })\n : undefined;\n\n const realRows = rows ?? getRowModel().rows;\n /**\n * when filtering, should find the correct index in filtered rows\n */\n const draggingRowIndex = useMemo(\n () => (draggingRow?.id ? realRows.findIndex((r) => r.id === draggingRow?.id) : undefined),\n [realRows, draggingRow?.id],\n );\n\n const rowCount = realRows.length;\n\n const normalRowHeight = density === 'compact' ? 37 : density === 'comfortable' ? 58 : 73;\n\n const rowVirtualizer = useVirtualizer({\n count: renderDetailPanel ? rowCount * 2 : rowCount,\n enabled: !!enableRowVirtualization,\n estimateSize: (index) => (renderDetailPanel && index % 2 === 1 ? (expanded === true ? 100 : 0) : normalRowHeight),\n getScrollElement: () => tableContainerRef.current,\n measureElement:\n typeof window !== 'undefined' && navigator.userAgent.indexOf('Firefox') === -1\n ? (element) => element?.getBoundingClientRect().height\n : undefined,\n overscan: 4,\n rangeExtractor: useCallback(\n (range: Range) => {\n return extraIndexRangeExtractor(range, draggingRowIndex);\n },\n [draggingRowIndex],\n ),\n ...rowVirtualizerProps,\n }) as unknown as MRT_RowVirtualizer<TScrollElement, TItemElement>;\n\n if (!enableRowVirtualization) {\n return undefined;\n }\n\n rowVirtualizer.virtualRows = rowVirtualizer.getVirtualItems();\n\n if (rowVirtualizerInstanceRef) {\n // @ts-expect-error: the ref is typed for the default element generics, this virtualizer uses TScrollElement and TItemElement\n rowVirtualizerInstanceRef.current = rowVirtualizer;\n }\n\n return rowVirtualizer;\n};\n","import { alpha, type CSSObject, darken, lighten, type Theme } from '@mui/material/styles';\nimport { type TableCellProps } from '@mui/material/TableCell';\nimport { type TooltipProps } from '@mui/material/Tooltip';\nimport { type CSSProperties } from 'react';\n\nimport {\n type MRT_Column,\n type MRT_Header,\n type MRT_RowData,\n type MRT_TableInstance,\n type MRT_TableOptions,\n type MRT_Theme,\n} from '../types';\nimport { parseFromValuesOrFunc } from './utils';\n\nexport const parseCSSVarId = (id: string): string => id.replace(/[^a-zA-Z0-9]/g, '_');\n\nexport const getMRTTheme = <TData extends MRT_RowData>(\n mrtTheme: MRT_TableOptions<TData>['mrtTheme'],\n muiTheme: Theme,\n): MRT_Theme => {\n const mrtThemeOverrides = parseFromValuesOrFunc(mrtTheme, muiTheme);\n const baseBackgroundColor =\n mrtThemeOverrides?.baseBackgroundColor ??\n (muiTheme.palette.mode === 'dark'\n ? lighten(muiTheme.palette.background.default, 0.05)\n : muiTheme.palette.background.default);\n return {\n baseBackgroundColor,\n cellNavigationOutlineColor: muiTheme.palette.primary.main,\n draggingBorderColor: muiTheme.palette.primary.main,\n matchHighlightColor:\n muiTheme.palette.mode === 'dark'\n ? darken(muiTheme.palette.warning.dark, 0.25)\n : lighten(muiTheme.palette.warning.light, 0.5),\n menuBackgroundColor: lighten(baseBackgroundColor, 0.07),\n pinnedRowBackgroundColor: alpha(muiTheme.palette.primary.main, 0.1),\n selectedRowBackgroundColor: alpha(muiTheme.palette.primary.main, 0.2),\n ...mrtThemeOverrides,\n };\n};\n\nexport const commonCellBeforeAfterStyles = {\n content: '\"\"',\n height: '100%',\n left: 0,\n position: 'absolute',\n top: 0,\n width: '100%',\n zIndex: -1,\n};\n\nexport const getCommonPinnedCellStyles = <TData extends MRT_RowData>({\n column,\n table,\n theme,\n}: {\n column?: MRT_Column<TData>;\n table: MRT_TableInstance<TData>;\n theme: Theme;\n}): CSSObject => {\n const { baseBackgroundColor } = table.options.mrtTheme;\n const isPinned = column?.getIsPinned();\n\n return {\n '&[data-pinned=\"true\"]': {\n '&:before': {\n backgroundColor: alpha(darken(baseBackgroundColor, theme.palette.mode === 'dark' ? 0.05 : 0.01), 0.97),\n boxShadow: column\n ? isPinned === 'start' && column.getIsLastColumn(isPinned)\n ? `-4px 0 4px -4px ${alpha(theme.palette.grey[700], 0.5)} inset`\n : isPinned === 'end' && column.getIsFirstColumn(isPinned)\n ? `4px 0 4px -4px ${alpha(theme.palette.grey[700], 0.5)} inset`\n : undefined\n : undefined,\n ...commonCellBeforeAfterStyles,\n },\n },\n };\n};\n\nexport const getCommonMRTCellStyles = <TData extends MRT_RowData>({\n column,\n header,\n table,\n tableCellProps,\n theme,\n}: {\n column: MRT_Column<TData>;\n header?: MRT_Header<TData>;\n table: MRT_TableInstance<TData>;\n tableCellProps: TableCellProps;\n theme: Theme;\n}): CSSObject => {\n const {\n options: { enableColumnVirtualization, layoutMode },\n } = table;\n const { draggingColumn } = table.state;\n const { columnDef } = column;\n const { columnDefType } = columnDef;\n\n const isColumnPinned = columnDef.columnDefType !== 'group' && column.getIsPinned();\n\n const widthStyles: CSSProperties = {\n minWidth: `max(calc(var(--${header ? 'header' : 'col'}-${parseCSSVarId(\n header?.id ?? column.id,\n )}-size) * 1px), ${columnDef.minSize ?? 30}px)`,\n width: `calc(var(--${header ? 'header' : 'col'}-${parseCSSVarId(header?.id ?? column.id)}-size) * 1px)`,\n };\n\n if (layoutMode === 'grid') {\n widthStyles.flex = `${\n [0, false].includes(columnDef.grow!)\n ? 0\n : `var(--${header ? 'header' : 'col'}-${parseCSSVarId(header?.id ?? column.id)}-size)`\n } 0 auto`;\n } else if (layoutMode === 'grid-no-grow') {\n widthStyles.flex = `${+(columnDef.grow || 0)} 0 auto`;\n }\n\n const pinnedStyles = isColumnPinned\n ? {\n ...getCommonPinnedCellStyles({ column, table, theme }),\n left: isColumnPinned === 'start' ? `${column.getStart('start')}px` : undefined,\n opacity: 0.97,\n position: 'sticky',\n right: isColumnPinned === 'end' ? `${column.getAfter('end')}px` : undefined,\n }\n : {};\n\n return {\n '&:focus-visible': {\n outline: `2px solid ${table.options.mrtTheme.cellNavigationOutlineColor}`,\n outlineOffset: '-2px',\n },\n backgroundColor: 'inherit',\n backgroundImage: 'inherit',\n display: layoutMode?.startsWith('grid') ? 'flex' : undefined,\n justifyContent:\n columnDefType === 'group' ? 'center' : layoutMode?.startsWith('grid') ? tableCellProps.align : undefined,\n opacity: table.state.draggingColumn?.id === column.id || table.state.hoveredColumn?.id === column.id ? 0.5 : 1,\n position: 'relative',\n transition: enableColumnVirtualization ? 'none' : `padding 150ms ease-in-out`,\n zIndex:\n column.getIsResizing() || draggingColumn?.id === column.id\n ? 2\n : columnDefType !== 'group' && isColumnPinned\n ? 1\n : 0,\n ...pinnedStyles,\n ...widthStyles,\n ...(parseFromValuesOrFunc(tableCellProps?.sx, theme) as CSSObject),\n };\n};\n\nexport const getCommonToolbarStyles = <TData extends MRT_RowData>({\n table,\n}: {\n table: MRT_TableInstance<TData>;\n theme: Theme;\n}): CSSObject => ({\n alignItems: 'flex-start',\n backgroundColor: table.options.mrtTheme.baseBackgroundColor,\n display: 'grid',\n flexWrap: 'wrap-reverse',\n minHeight: '3.5rem',\n overflow: 'hidden',\n position: 'relative',\n transition: 'all 150ms ease-in-out',\n zIndex: 1,\n});\n\nexport const flipIconStyles = (theme: Theme): { style: CSSProperties } | undefined =>\n theme.direction === 'rtl' ? { style: { transform: 'scaleX(-1)' } } : undefined;\n\nexport const getCommonTooltipProps = (placement?: TooltipProps['placement']): Partial<TooltipProps> => ({\n disableInteractive: true,\n enterDelay: 1000,\n enterNextDelay: 1000,\n placement,\n});\n","import { type MRT_Cell, type MRT_Header, type MRT_RowData, type MRT_TableInstance } from '../types';\nimport { getMRT_RowSelectionHandler, getMRT_SelectAllHandler } from './row.utils';\nimport { parseFromValuesOrFunc } from './utils';\n\nconst isWinCtrlMacMeta = (event: React.KeyboardEvent<HTMLTableCellElement>) => {\n return (\n (event.ctrlKey && navigator.platform.toLowerCase().includes('win')) ||\n (event.metaKey && navigator.platform.toLowerCase().includes('mac'))\n );\n};\n\nexport const isCellEditable = <TData extends MRT_RowData>({\n cell,\n table,\n}: {\n cell: MRT_Cell<TData>;\n table: MRT_TableInstance<TData>;\n}): boolean | undefined => {\n const { enableEditing } = table.options;\n const {\n column: { columnDef },\n row,\n } = cell;\n return (\n !cell.getIsPlaceholder() &&\n parseFromValuesOrFunc(enableEditing, row) &&\n parseFromValuesOrFunc(columnDef.enableEditing, row) !== false\n );\n};\n\nexport const openEditingCell = <TData extends MRT_RowData>({\n cell,\n table,\n}: {\n cell: MRT_Cell<TData>;\n table: MRT_TableInstance<TData>;\n}): void => {\n const {\n options: { editDisplayMode },\n refs: { editInputRefs },\n } = table;\n const { column } = cell;\n\n if (isCellEditable({ cell, table }) && editDisplayMode === 'cell') {\n table.setEditingCell(cell);\n queueMicrotask(() => {\n const textField = editInputRefs.current?.[column.id];\n if (textField) {\n textField.focus();\n textField.select?.();\n }\n });\n }\n};\n\nexport const cellKeyboardShortcuts = <TData extends MRT_RowData = MRT_RowData>({\n cell,\n cellElements,\n cellValue,\n containerElement,\n event,\n header,\n parentElement,\n table,\n}: {\n cell?: MRT_Cell<TData>;\n cellElements?: Array<HTMLTableCellElement>;\n cellValue?: string;\n containerElement?: HTMLTableElement;\n event: React.KeyboardEvent<HTMLTableCellElement>;\n header?: MRT_Header<TData>;\n parentElement?: HTMLTableRowElement;\n table: MRT_TableInstance<TData>;\n}): void => {\n if (!table.options.enableKeyboardShortcuts) {\n return;\n }\n if (event.isPropagationStopped()) {\n return;\n }\n const currentCell = event.currentTarget;\n\n if (cellValue && isWinCtrlMacMeta(event) && event.key === 'c') {\n navigator.clipboard.writeText(cellValue);\n } else if ([' ', 'Enter'].includes(event.key)) {\n if (cell?.column?.id === 'mrt-row-select') {\n event.preventDefault();\n getMRT_RowSelectionHandler({\n row: cell.row,\n staticRowIndex: Number((event.target as HTMLElement).getAttribute('data-index')),\n table,\n })(event);\n } else if (header?.column?.id === 'mrt-row-select' && table.options.enableSelectAll) {\n event.preventDefault();\n getMRT_SelectAllHandler({\n table,\n })(event);\n } else if (\n cell?.column?.id === 'mrt-row-expand' &&\n (cell.row.getCanExpand() || table.options.renderDetailPanel?.({ row: cell.row, table }))\n ) {\n event.preventDefault();\n cell.row.toggleExpanded();\n } else if (header?.column?.id === 'mrt-row-expand' && table.options.enableExpandAll) {\n event.preventDefault();\n table.toggleAllRowsExpanded();\n } else if (cell?.column.id === 'mrt-row-pin') {\n event.preventDefault();\n if (cell.row.getIsPinned()) {\n cell.row.pin(false);\n } else {\n cell.row.pin(table.options.rowPinningDisplayMode?.includes('bottom') ? 'bottom' : 'top');\n }\n } else if (header && isWinCtrlMacMeta(event)) {\n const actionsButton = currentCell.querySelector(\n `button[aria-label=\"${table.options.localization.columnActions}\"]`,\n );\n if (actionsButton) {\n (actionsButton as HTMLButtonElement).click();\n }\n } else if (header?.column?.getCanSort()) {\n event.preventDefault();\n header.column.toggleSorting();\n }\n } else if (\n ['ArrowDown', 'ArrowLeft', 'ArrowRight', 'ArrowUp', 'End', 'Home', 'PageDown', 'PageUp'].includes(event.key)\n ) {\n event.preventDefault();\n\n const currentRow = parentElement || currentCell.closest('tr');\n const tableElement = containerElement || currentCell.closest('table');\n const allCells = cellElements || Array.from(tableElement?.querySelectorAll('th, td') || []);\n const currentCellIndex = allCells.indexOf(currentCell);\n\n const currentIndex = parseInt(currentCell.getAttribute('data-index') || '0');\n let nextCell: HTMLElement | undefined = undefined;\n\n //home/end first or last cell in row\n const findEdgeCell = (rowIndex: 'c' | 'f' | 'l', edge: 'f' | 'l') => {\n const row =\n rowIndex === 'c'\n ? currentRow\n : rowIndex === 'f'\n ? tableElement?.querySelector('tr')\n : tableElement?.lastElementChild?.lastElementChild;\n const rowCells = Array.from(row?.children || []);\n const targetCell = edge === 'f' ? rowCells[0] : rowCells[rowCells.length - 1];\n return targetCell as HTMLElement;\n };\n\n //page up/down first or last cell in column\n const findBottomTopCell = (columnIndex: number, edge: 'b' | 't') => {\n const row = edge === 't' ? tableElement?.querySelector('tr') : tableElement?.lastElementChild?.lastElementChild;\n const rowCells = Array.from(row?.children || []);\n const targetCell = rowCells[columnIndex];\n return targetCell as HTMLElement;\n };\n\n const findAdjacentCell = (columnIndex: number, searchDirection: 'b' | 'f') => {\n const searchArray =\n searchDirection === 'f' ? allCells.slice(currentCellIndex + 1) : allCells.slice(0, currentCellIndex).reverse();\n return searchArray.find((cell) => cell.matches(`[data-index=\"${columnIndex}\"]`)) as HTMLElement | undefined;\n };\n\n switch (event.key) {\n case 'ArrowDown':\n nextCell = findAdjacentCell(currentIndex, 'f');\n break;\n case 'ArrowLeft':\n nextCell = findAdjacentCell(currentIndex - 1, 'b');\n break;\n case 'ArrowRight':\n nextCell = findAdjacentCell(currentIndex + 1, 'f');\n break;\n case 'ArrowUp':\n nextCell = findAdjacentCell(currentIndex, 'b');\n break;\n case 'End':\n nextCell = findEdgeCell(isWinCtrlMacMeta(event) ? 'l' : 'c', 'l');\n break;\n case 'Home':\n nextCell = findEdgeCell(isWinCtrlMacMeta(event) ? 'f' : 'c', 'f');\n break;\n case 'PageDown':\n nextCell = findBottomTopCell(currentIndex, 'b');\n break;\n case 'PageUp':\n nextCell = findBottomTopCell(currentIndex, 't');\n break;\n }\n\n if (nextCell) {\n nextCell.focus();\n }\n }\n};\n","import { Button, type ButtonProps, Tooltip } from '@mui/material';\nimport { type CSSObject } from '@mui/material/styles';\nimport { type MouseEvent, useState } from 'react';\n\nimport { type MRT_Cell, type MRT_RowData, type MRT_TableInstance } from '../../types';\nimport { getCommonTooltipProps } from '../../utils/style.utils';\nimport { parseFromValuesOrFunc } from '../../utils/utils';\n\nexport interface MRT_CopyButtonProps<TData extends MRT_RowData> extends ButtonProps {\n cell: MRT_Cell<TData>;\n table: MRT_TableInstance<TData>;\n}\n\nexport const MRT_CopyButton = <TData extends MRT_RowData>({\n cell,\n table,\n ...rest\n}: MRT_CopyButtonProps<TData>): JSX.Element => {\n const {\n options: { localization, muiCopyButtonProps },\n } = table;\n const { column, row } = cell;\n const { columnDef } = column;\n\n const [copied, setCopied] = useState(false);\n\n const handleCopy = (event: MouseEvent, text: unknown) => {\n event.stopPropagation();\n navigator.clipboard.writeText(text as string);\n setCopied(true);\n setTimeout(() => setCopied(false), 4000);\n };\n\n const buttonProps = {\n ...parseFromValuesOrFunc(muiCopyButtonProps, {\n cell,\n column,\n row,\n table,\n }),\n ...parseFromValuesOrFunc(columnDef.muiCopyButtonProps, {\n cell,\n column,\n row,\n table,\n }),\n ...rest,\n };\n\n return (\n <Tooltip\n {...getCommonTooltipProps('top')}\n title={buttonProps?.title ?? (copied ? localization.copiedToClipboard : localization.clickToCopy)}\n >\n <Button\n onClick={(e) => handleCopy(e, cell.getValue())}\n size=\"small\"\n type=\"button\"\n variant=\"text\"\n {...buttonProps}\n sx={(theme) => ({\n backgroundColor: 'transparent',\n border: 'none',\n color: 'inherit',\n cursor: 'copy',\n fontFamily: 'inherit',\n fontSize: 'inherit',\n letterSpacing: 'inherit',\n m: '-0.25rem',\n minWidth: 'unset',\n py: 0,\n textAlign: 'inherit',\n textTransform: 'inherit',\n ...(parseFromValuesOrFunc(buttonProps?.sx, theme) as CSSObject),\n })}\n title={undefined}\n />\n </Tooltip>\n );\n};\n","import { type FormHelperTextProps } from '@mui/material/FormHelperText';\nimport { type InputProps } from '@mui/material/Input';\nimport { type InputBaseComponentProps } from '@mui/material/InputBase';\nimport { type InputLabelProps } from '@mui/material/InputLabel';\nimport { type SelectProps } from '@mui/material/Select';\nimport { type TextFieldProps } from '@mui/material/TextField';\n\nexport type TextFieldSlotProps = {\n formHelperText?: Partial<FormHelperTextProps>;\n htmlInput?: InputBaseComponentProps;\n input?: Partial<InputProps>;\n inputLabel?: Partial<InputLabelProps>;\n select?: Partial<SelectProps>;\n};\n\nexport const getTextFieldSlotProps = (slotProps: TextFieldProps['slotProps']): TextFieldSlotProps => ({\n formHelperText: slotProps?.formHelperText as Partial<FormHelperTextProps>,\n htmlInput: slotProps?.htmlInput as InputBaseComponentProps,\n input: slotProps?.input as Partial<InputProps>,\n inputLabel: slotProps?.inputLabel as Partial<InputLabelProps>,\n select: slotProps?.select as Partial<SelectProps>,\n});\n","import { MenuItem, TextField } from '@mui/material';\nimport { type TextFieldProps } from '@mui/material/TextField';\nimport { type ChangeEvent, type FocusEvent, type KeyboardEvent, useState } from 'react';\n\nimport { type MRT_Cell, type MRT_RowData, type MRT_TableInstance } from '../../types';\nimport { getTextFieldSlotProps } from '../../utils/slotProps.utils';\nimport { getValueAndLabel, parseFromValuesOrFunc } from '../../utils/utils';\n\nexport interface MRT_EditCellTextFieldProps<TData extends MRT_RowData> extends TextFieldProps<'standard'> {\n cell: MRT_Cell<TData>;\n table: MRT_TableInstance<TData>;\n}\n\nexport const MRT_EditCellTextField = <TData extends MRT_RowData>({\n cell,\n table,\n ...rest\n}: MRT_EditCellTextFieldProps<TData>): JSX.Element => {\n const {\n options: { createDisplayMode, editDisplayMode, muiEditTextFieldProps },\n refs: { editInputRefs },\n setCreatingRow,\n setEditingCell,\n setEditingRow,\n } = table;\n const { column, row } = cell;\n const { columnDef } = column;\n const { creatingRow, editingRow } = table.state;\n const { editSelectOptions, editVariant } = columnDef;\n\n const isCreating = creatingRow?.id === row.id;\n const isEditing = editingRow?.id === row.id;\n\n const [value, setValue] = useState(() => cell.getValue<string>());\n const [completesComposition, setCompletesComposition] = useState(true);\n\n const textFieldProps: TextFieldProps = {\n ...parseFromValuesOrFunc(muiEditTextFieldProps, {\n cell,\n column,\n row,\n table,\n }),\n ...parseFromValuesOrFunc(columnDef.muiEditTextFieldProps, {\n cell,\n column,\n row,\n table,\n }),\n ...rest,\n };\n\n const selectOptions = parseFromValuesOrFunc(editSelectOptions, {\n cell,\n column,\n row,\n table,\n });\n\n const isSelectEdit = editVariant === 'select' || textFieldProps?.select;\n\n const saveInputValueToRowCache = (newValue: string) => {\n row._valuesCache[column.id] = newValue;\n if (isCreating) {\n setCreatingRow(row);\n } else if (isEditing) {\n setEditingRow(row);\n }\n };\n\n const handleChange = (event: ChangeEvent<HTMLInputElement>) => {\n textFieldProps.onChange?.(event);\n setValue(event.target.value);\n if (isSelectEdit) {\n saveInputValueToRowCache(event.target.value);\n }\n };\n\n const handleBlur = (event: FocusEvent<HTMLInputElement>) => {\n textFieldProps.onBlur?.(event);\n saveInputValueToRowCache(value);\n setEditingCell(null);\n };\n\n const handleEnterKeyDown = (event: KeyboardEvent<HTMLInputElement>) => {\n textFieldProps.onKeyDown?.(event);\n if (event.key === 'Enter' && !event.shiftKey && completesComposition) {\n editInputRefs.current?.[column.id]?.blur();\n }\n };\n\n if (columnDef.Edit) {\n return <>{columnDef.Edit?.({ cell, column, row, table })}</>;\n }\n\n const consumerSlots = getTextFieldSlotProps(textFieldProps.slotProps);\n\n return (\n <TextField\n disabled={parseFromValuesOrFunc(columnDef.enableEditing, row) === false}\n fullWidth\n inputRef={(inputRef) => {\n if (inputRef) {\n editInputRefs.current![column.id] = isSelectEdit ? inputRef.node : inputRef;\n if (textFieldProps.inputRef) {\n textFieldProps.inputRef = inputRef;\n }\n }\n }}\n label={\n ['custom', 'modal'].includes((isCreating ? createDisplayMode : editDisplayMode) as string)\n ? columnDef.header\n : undefined\n }\n margin=\"none\"\n name={column.id}\n placeholder={\n !['custom', 'modal'].includes((isCreating ? createDisplayMode : editDisplayMode) as string)\n ? columnDef.header\n : undefined\n }\n select={isSelectEdit}\n size=\"small\"\n value={value ?? ''}\n variant=\"standard\"\n {...textFieldProps}\n onBlur={handleBlur}\n onChange={handleChange}\n onClick={(e) => {\n e.stopPropagation();\n textFieldProps?.onClick?.(e);\n }}\n onCompositionEnd={() => setCompletesComposition(true)}\n onCompositionStart={() => setCompletesComposition(false)}\n onKeyDown={handleEnterKeyDown}\n slotProps={{\n htmlInput: { autoComplete: 'off', ...consumerSlots.htmlInput },\n input: {\n ...(textFieldProps.variant !== 'outlined' ? { disableUnderline: editDisplayMode === 'table' } : {}),\n ...consumerSlots.input,\n sx: { mb: 0, ...consumerSlots.input?.sx },\n },\n select: {\n MenuProps: { disableScrollLock: true },\n ...consumerSlots.select,\n },\n }}\n >\n {textFieldProps.children ??\n selectOptions?.map((option) => {\n const { label, value } = getValueAndLabel(option);\n return (\n <MenuItem\n key={value}\n sx={{\n alignItems: 'center',\n display: 'flex',\n gap: '0.5rem',\n m: 0,\n }}\n value={value}\n >\n {label}\n </MenuItem>\n );\n })}\n </TextField>\n );\n};\n","export interface HighlightChunk {\n key: string;\n match: boolean;\n text: string;\n}\n\ninterface HighlightWordsArgs {\n matchExactly?: boolean;\n query: string;\n text: string;\n}\n\nconst escapeRegExp = (term: string): string => term.replace(/[|\\\\{}()[\\]^$+*?.-]/g, (char) => `\\\\${char}`);\n\nconst termsToRegExpString = (terms: string): string =>\n terms\n .replace(/\\s{2,}/g, ' ')\n .split(' ')\n .join('|');\n\nconst buildRegExp = (terms: string, matchExactly: boolean): RegExp => {\n const fromString = /^([/~@;%#'])(.*?)\\1([gimsuy]*)$/.exec(terms);\n if (fromString) {\n return new RegExp(fromString[2], fromString[3]);\n }\n const escaped = escapeRegExp(terms.trim());\n const pattern = matchExactly ? escaped : termsToRegExpString(escaped);\n return new RegExp(`(${pattern})`, 'ig');\n};\n\nlet uidCounter = 0;\nconst uid = (): string => `mrt-hl-${(uidCounter += 1).toString(36)}`;\n\nexport const highlightWords = ({ matchExactly = false, query, text }: HighlightWordsArgs): HighlightChunk[] => {\n const safeQuery = typeof query === 'string' ? query.trim() : query;\n if (safeQuery === '') {\n return [{ key: uid(), match: false, text }];\n }\n const searchRegexp = buildRegExp(query, matchExactly);\n return text\n .split(searchRegexp)\n .filter((str) => str.length > 0)\n .map((str) => ({\n key: uid(),\n match: matchExactly ? str.toLowerCase() === safeQuery.toLowerCase() : searchRegexp.test(str),\n text: str,\n }));\n};\n","import { Box } from '@mui/material';\nimport { type ReactNode, type RefObject } from 'react';\n\nimport { type MRT_Cell, type MRT_RowData, type MRT_TableInstance } from '../../types';\nimport { highlightWords } from '../../utils/highlight.utils';\n\nconst allowedTypes = ['string', 'number'];\n\nexport interface MRT_TableBodyCellValueProps<TData extends MRT_RowData> {\n cell: MRT_Cell<TData>;\n rowRef?: RefObject<HTMLTableRowElement | null>;\n staticColumnIndex?: number;\n staticRowIndex?: number;\n table: MRT_TableInstance<TData>;\n}\n\nexport const MRT_TableBodyCellValue = <TData extends MRT_RowData>({\n cell,\n rowRef,\n staticColumnIndex,\n staticRowIndex,\n table,\n}: MRT_TableBodyCellValueProps<TData>): ReactNode => {\n const {\n options: {\n enableFilterMatchHighlighting,\n mrtTheme: { matchHighlightColor },\n },\n } = table;\n const { column, row } = cell;\n const { columnDef } = column;\n const { globalFilter, globalFilterFn } = table.state;\n const filterValue = column.getFilterValue();\n\n let renderedCellValue =\n cell.getIsAggregated() && columnDef.AggregatedCell\n ? columnDef.AggregatedCell({\n cell,\n column,\n row,\n staticColumnIndex,\n staticRowIndex,\n table,\n })\n : row.getIsGrouped() && !cell.getIsGrouped()\n ? null\n : cell.getIsGrouped() && columnDef.GroupedCell\n ? columnDef.GroupedCell({\n cell,\n column,\n row,\n staticColumnIndex,\n staticRowIndex,\n table,\n })\n : undefined;\n\n const isGroupedValue = renderedCellValue !== undefined;\n\n if (!isGroupedValue) {\n renderedCellValue = cell.renderValue() as number | ReactNode | string;\n }\n\n if (\n enableFilterMatchHighlighting &&\n columnDef.enableFilterMatchHighlighting !== false &&\n String(renderedCellValue) &&\n allowedTypes.includes(typeof renderedCellValue) &&\n ((filterValue &&\n allowedTypes.includes(typeof filterValue) &&\n ['autocomplete', 'text'].includes(columnDef.filterVariant!)) ||\n (globalFilter && allowedTypes.includes(typeof globalFilter) && column.getCanGlobalFilter()))\n ) {\n const chunks = highlightWords({\n matchExactly: (filterValue ? columnDef._filterFn : globalFilterFn) !== 'fuzzy',\n query: (filterValue ?? globalFilter ?? '').toString(),\n text: renderedCellValue?.toString() as string,\n });\n if (chunks?.length > 1 || chunks?.[0]?.match) {\n renderedCellValue = (\n <span aria-label={renderedCellValue as string} role=\"note\">\n {chunks?.map(({ key, match, text }) => (\n <Box\n aria-hidden=\"true\"\n component=\"span\"\n key={key}\n sx={\n match\n ? {\n backgroundColor: matchHighlightColor,\n borderRadius: '2px',\n color: (theme) =>\n theme.palette.mode === 'dark' ? theme.palette.common.white : theme.palette.common.black,\n padding: '2px 1px',\n }\n : undefined\n }\n >\n {text}\n </Box>\n )) ?? renderedCellValue}\n </span>\n );\n }\n }\n\n if (columnDef.Cell && !isGroupedValue) {\n renderedCellValue = columnDef.Cell({\n cell,\n column,\n renderedCellValue,\n row,\n rowRef,\n staticColumnIndex,\n staticRowIndex,\n table,\n });\n }\n\n return renderedCellValue;\n};\n","import { Skeleton, TableCell, type TableCellProps } from '@mui/material';\nimport { useTheme } from '@mui/material/styles';\nimport {\n type DragEvent,\n memo,\n type MouseEvent,\n type ReactNode,\n type RefObject,\n useEffect,\n useMemo,\n useState,\n} from 'react';\n\nimport { type MRT_Cell, type MRT_RowData, type MRT_TableInstance } from '../../types';\nimport { cellKeyboardShortcuts, isCellEditable, openEditingCell } from '../../utils/cell.utils';\nimport { getCommonMRTCellStyles } from '../../utils/style.utils';\nimport { parseFromValuesOrFunc } from '../../utils/utils';\nimport { MRT_CopyButton } from '../buttons/MRT_CopyButton';\nimport { MRT_EditCellTextField } from '../inputs/MRT_EditCellTextField';\nimport { MRT_TableBodyCellValue } from './MRT_TableBodyCellValue';\n\nexport interface MRT_TableBodyCellProps<TData extends MRT_RowData> extends TableCellProps {\n cell: MRT_Cell<TData>;\n numRows?: number;\n rowRef: RefObject<HTMLTableRowElement | null>;\n staticColumnIndex?: number;\n staticRowIndex: number;\n table: MRT_TableInstance<TData>;\n}\n\nexport const MRT_TableBodyCell = <TData extends MRT_RowData>({\n cell,\n numRows,\n rowRef,\n staticColumnIndex,\n staticRowIndex,\n table,\n ...rest\n}: MRT_TableBodyCellProps<TData>): JSX.Element => {\n const theme = useTheme();\n const {\n options: {\n columnResizeDirection,\n columnResizeMode,\n createDisplayMode,\n editDisplayMode,\n enableCellActions,\n enableClickToCopy,\n enableColumnOrdering,\n enableColumnPinning,\n enableGrouping,\n enableKeyboardShortcuts,\n layoutMode,\n mrtTheme: { draggingBorderColor },\n muiSkeletonProps,\n muiTableBodyCellProps,\n },\n setHoveredColumn,\n } = table;\n const {\n actionCell,\n columnResizing,\n creatingRow,\n density,\n draggingColumn,\n draggingRow,\n editingCell,\n editingRow,\n hoveredColumn,\n hoveredRow,\n isLoading,\n showSkeletons,\n } = table.state;\n const { column, row } = cell;\n const { columnDef } = column;\n const { columnDefType } = columnDef;\n\n const args = { cell, column, row, table };\n const tableCellProps = {\n ...parseFromValuesOrFunc(muiTableBodyCellProps, args),\n ...parseFromValuesOrFunc(columnDef.muiTableBodyCellProps, args),\n ...rest,\n };\n\n const skeletonProps = parseFromValuesOrFunc(muiSkeletonProps, {\n cell,\n column,\n row,\n table,\n });\n\n const [skeletonWidth, setSkeletonWidth] = useState(100);\n useEffect(() => {\n if ((!isLoading && !showSkeletons) || skeletonWidth !== 100) {\n return;\n }\n const size = column.getSize();\n setSkeletonWidth(columnDefType === 'display' ? size / 2 : Math.round(Math.random() * (size - size / 3) + size / 3));\n }, [column, columnDefType, isLoading, showSkeletons, skeletonWidth]);\n\n const draggingBorders = useMemo(() => {\n const isDraggingColumn = draggingColumn?.id === column.id;\n const isHoveredColumn = hoveredColumn?.id === column.id;\n const isDraggingRow = draggingRow?.id === row.id;\n const isHoveredRow = hoveredRow?.id === row.id;\n const isFirstColumn = column.getIsFirstColumn();\n const isLastColumn = column.getIsLastColumn();\n const isLastRow = numRows && staticRowIndex === numRows - 1;\n const isResizingColumn = columnResizing.isResizingColumn === column.id;\n const showResizeBorder = isResizingColumn && columnResizeMode === 'onChange';\n\n const borderStyle = showResizeBorder\n ? `2px solid ${draggingBorderColor} !important`\n : isDraggingColumn || isDraggingRow\n ? `1px dashed ${theme.palette.grey[500]} !important`\n : isHoveredColumn || isHoveredRow || isResizingColumn\n ? `2px dashed ${draggingBorderColor} !important`\n : undefined;\n\n if (showResizeBorder) {\n return columnResizeDirection === 'ltr' ? { borderRight: borderStyle } : { borderLeft: borderStyle };\n }\n\n return borderStyle\n ? {\n borderBottom: isDraggingRow || isHoveredRow || (isLastRow && !isResizingColumn) ? borderStyle : undefined,\n borderLeft:\n isDraggingColumn || isHoveredColumn || ((isDraggingRow || isHoveredRow) && isFirstColumn)\n ? borderStyle\n : undefined,\n borderRight:\n isDraggingColumn || isHoveredColumn || ((isDraggingRow || isHoveredRow) && isLastColumn)\n ? borderStyle\n : undefined,\n borderTop: isDraggingRow || isHoveredRow ? borderStyle : undefined,\n }\n : undefined;\n }, [\n column,\n columnResizeDirection,\n columnResizeMode,\n columnResizing.isResizingColumn,\n draggingBorderColor,\n draggingColumn,\n draggingRow,\n hoveredColumn,\n hoveredRow,\n numRows,\n row.id,\n staticRowIndex,\n theme.palette.grey,\n ]);\n\n const isColumnPinned = enableColumnPinning && columnDef.columnDefType !== 'group' && column.getIsPinned();\n\n const isEditable = isCellEditable({ cell, table });\n\n const isEditing =\n isEditable &&\n !['custom', 'modal'].includes(editDisplayMode as string) &&\n (editDisplayMode === 'table' || editingRow?.id === row.id || editingCell?.id === cell.id) &&\n !row.getIsGrouped();\n\n const isCreating = isEditable && createDisplayMode === 'row' && creatingRow?.id === row.id;\n\n const columnClickToCopy = parseFromValuesOrFunc(columnDef.enableClickToCopy, cell);\n const showClickToCopyButton =\n (parseFromValuesOrFunc(enableClickToCopy, cell) === true || columnClickToCopy === true) &&\n columnClickToCopy !== 'context-menu' &&\n columnClickToCopy !== false;\n\n const isRightClickable = parseFromValuesOrFunc(enableCellActions, cell);\n\n const cellValueProps = {\n cell,\n staticColumnIndex,\n staticRowIndex,\n table,\n };\n\n const handleDoubleClick = (event: MouseEvent<HTMLTableCellElement>) => {\n tableCellProps?.onDoubleClick?.(event);\n openEditingCell({ cell, table });\n };\n\n const handleDragEnter = (e: DragEvent<HTMLTableCellElement>) => {\n tableCellProps?.onDragEnter?.(e);\n if (enableGrouping && hoveredColumn?.id === 'drop-zone') {\n setHoveredColumn(null);\n }\n if (enableColumnOrdering && draggingColumn) {\n setHoveredColumn(columnDef.enableColumnOrdering !== false ? column : null);\n }\n };\n\n const handleDragOver = (e: DragEvent) => {\n if (columnDef.enableColumnOrdering !== false) {\n e.preventDefault();\n }\n };\n\n const handleContextMenu = (e: MouseEvent<HTMLTableCellElement>) => {\n tableCellProps?.onContextMenu?.(e);\n if (isRightClickable) {\n e.preventDefault();\n table.setActionCell(cell);\n table.refs.actionCellRef.current = e.currentTarget;\n }\n };\n\n const handleKeyDown = (event: React.KeyboardEvent<HTMLTableCellElement>) => {\n tableCellProps?.onKeyDown?.(event);\n cellKeyboardShortcuts({\n cell,\n cellValue: cell.getValue<string>(),\n event,\n table,\n });\n };\n\n return (\n <TableCell\n align={theme.direction === 'rtl' ? 'right' : 'left'}\n data-index={staticColumnIndex}\n data-pinned={!!isColumnPinned || undefined}\n tabIndex={enableKeyboardShortcuts ? 0 : undefined}\n {...tableCellProps}\n onContextMenu={handleContextMenu}\n onDoubleClick={handleDoubleClick}\n onDragEnter={handleDragEnter}\n onDragOver={handleDragOver}\n onKeyDown={handleKeyDown}\n sx={(theme) => ({\n '&:hover': {\n outline:\n actionCell?.id === cell.id ||\n (editDisplayMode === 'cell' && isEditable) ||\n (editDisplayMode === 'table' && (isCreating || isEditing))\n ? `1px solid ${theme.palette.grey[500]}`\n : undefined,\n textOverflow: 'clip',\n },\n alignItems: layoutMode?.startsWith('grid') ? 'center' : undefined,\n cursor: isRightClickable ? 'context-menu' : isEditable && editDisplayMode === 'cell' ? 'pointer' : 'inherit',\n outline: actionCell?.id === cell.id ? `1px solid ${theme.palette.grey[500]}` : undefined,\n outlineOffset: '-1px',\n overflow: 'hidden',\n p:\n density === 'compact'\n ? columnDefType === 'display'\n ? '0 0.5rem'\n : '0.5rem'\n : density === 'comfortable'\n ? columnDefType === 'display'\n ? '0.5rem 0.75rem'\n : '1rem'\n : columnDefType === 'display'\n ? '1rem 1.25rem'\n : '1.5rem',\n\n textOverflow: columnDefType !== 'display' ? 'ellipsis' : undefined,\n whiteSpace: row.getIsPinned() || density === 'compact' ? 'nowrap' : 'normal',\n ...getCommonMRTCellStyles({\n column,\n table,\n tableCellProps,\n theme,\n }),\n ...draggingBorders,\n })}\n >\n {tableCellProps.children ?? (\n <>\n {cell.getIsPlaceholder() ? (\n (columnDef.PlaceholderCell?.({ cell, column, row, table }) ?? null)\n ) : showSkeletons !== false && (isLoading || showSkeletons) ? (\n <Skeleton animation=\"wave\" height={20} width={skeletonWidth} {...skeletonProps} />\n ) : columnDefType === 'display' &&\n (['mrt-row-expand', 'mrt-row-numbers', 'mrt-row-select'].includes(column.id) || !row.getIsGrouped()) ? (\n columnDef.Cell?.({\n cell,\n column,\n renderedCellValue: cell.renderValue() as ReactNode,\n row,\n rowRef,\n staticColumnIndex,\n staticRowIndex,\n table,\n })\n ) : isCreating || isEditing ? (\n <MRT_EditCellTextField cell={cell} table={table} />\n ) : showClickToCopyButton && columnDef.enableClickToCopy !== false ? (\n <MRT_CopyButton cell={cell} table={table}>\n <MRT_TableBodyCellValue {...cellValueProps} />\n </MRT_CopyButton>\n ) : (\n <MRT_TableBodyCellValue {...cellValueProps} />\n )}\n {cell.getIsGrouped() && !columnDef.GroupedCell && <> ({row.subRows?.length})</>}\n </>\n )}\n </TableCell>\n );\n};\n\nexport const Memo_MRT_TableBodyCell = memo(\n MRT_TableBodyCell,\n (prev, next) => next.cell === prev.cell,\n) as typeof MRT_TableBodyCell;\n","import { Collapse, TableCell, type TableCellProps, TableRow } from '@mui/material';\nimport { type CSSObject } from '@mui/material/styles';\nimport { type RefObject } from 'react';\n\nimport {\n type MRT_Row,\n type MRT_RowData,\n type MRT_RowVirtualizer,\n type MRT_TableInstance,\n type MRT_VirtualItem,\n} from '../../types';\nimport { parseFromValuesOrFunc } from '../../utils/utils';\n\nexport interface MRT_TableDetailPanelProps<TData extends MRT_RowData> extends TableCellProps {\n parentRowRef: RefObject<HTMLTableRowElement | null>;\n row: MRT_Row<TData>;\n rowVirtualizer?: MRT_RowVirtualizer;\n staticRowIndex: number;\n table: MRT_TableInstance<TData>;\n virtualRow?: MRT_VirtualItem;\n}\n\nexport const MRT_TableDetailPanel = <TData extends MRT_RowData>({\n parentRowRef,\n row,\n rowVirtualizer,\n staticRowIndex,\n table,\n virtualRow,\n ...rest\n}: MRT_TableDetailPanelProps<TData>): JSX.Element => {\n const {\n getVisibleLeafColumns,\n options: {\n layoutMode,\n mrtTheme: { baseBackgroundColor },\n muiDetailPanelProps,\n muiTableBodyRowProps,\n renderDetailPanel,\n },\n } = table;\n const { isLoading } = table.state;\n\n const tableRowProps = parseFromValuesOrFunc(muiTableBodyRowProps, {\n isDetailPanel: true,\n row,\n staticRowIndex,\n table,\n });\n\n const tableCellProps = {\n ...parseFromValuesOrFunc(muiDetailPanelProps, {\n row,\n table,\n }),\n ...rest,\n };\n\n const DetailPanel = !isLoading && renderDetailPanel?.({ row, table });\n\n return (\n <TableRow\n className=\"Mui-TableBodyCell-DetailPanel\"\n data-index={renderDetailPanel ? staticRowIndex * 2 + 1 : staticRowIndex}\n ref={(node: HTMLTableRowElement) => {\n if (node) {\n rowVirtualizer?.measureElement?.(node);\n }\n }}\n {...tableRowProps}\n sx={(theme) => ({\n display: layoutMode?.startsWith('grid') ? 'flex' : undefined,\n position: virtualRow ? 'absolute' : undefined,\n top: virtualRow ? `${parentRowRef.current?.getBoundingClientRect()?.height}px` : undefined,\n transform: virtualRow ? `translateY(${virtualRow?.start}px)` : undefined,\n width: '100%',\n ...(parseFromValuesOrFunc(tableRowProps?.sx, theme) as CSSObject),\n })}\n >\n <TableCell\n className=\"Mui-TableBodyCell-DetailPanel\"\n colSpan={getVisibleLeafColumns().length}\n {...tableCellProps}\n sx={(theme) => ({\n backgroundColor: virtualRow ? baseBackgroundColor : undefined,\n borderBottom: !row.getIsExpanded() ? 'none' : undefined,\n display: layoutMode?.startsWith('grid') ? 'flex' : undefined,\n py: !!DetailPanel && row.getIsExpanded() ? '1rem' : 0,\n transition: !virtualRow ? 'all 150ms ease-in-out' : undefined,\n width: `100%`,\n ...(parseFromValuesOrFunc(tableCellProps?.sx, theme) as CSSObject),\n })}\n >\n {virtualRow ? (\n row.getIsExpanded() && DetailPanel\n ) : (\n <Collapse in={row.getIsExpanded()} mountOnEnter unmountOnExit>\n {DetailPanel}\n </Collapse>\n )}\n </TableCell>\n </TableRow>\n );\n};\n","import { TableRow, type TableRowProps } from '@mui/material';\nimport { alpha, type CSSObject, darken, lighten, type Theme, useTheme } from '@mui/material/styles';\nimport { type VirtualItem } from '@tanstack/react-virtual';\nimport { type DragEvent, memo, useRef } from 'react';\n\nimport {\n type MRT_Cell,\n type MRT_ColumnVirtualizer,\n type MRT_Row,\n type MRT_RowData,\n type MRT_RowVirtualizer,\n type MRT_TableInstance,\n type MRT_VirtualItem,\n} from '../../types';\nimport { getIsRowSelected } from '../../utils/row.utils';\nimport { commonCellBeforeAfterStyles, getCommonPinnedCellStyles } from '../../utils/style.utils';\nimport { parseFromValuesOrFunc } from '../../utils/utils';\nimport { Memo_MRT_TableBodyCell, MRT_TableBodyCell } from './MRT_TableBodyCell';\nimport { MRT_TableDetailPanel } from './MRT_TableDetailPanel';\n\nexport interface MRT_TableBodyRowProps<TData extends MRT_RowData> extends TableRowProps {\n columnVirtualizer?: MRT_ColumnVirtualizer;\n numRows?: number;\n pinnedRowIds?: string[];\n row: MRT_Row<TData>;\n rowVirtualizer?: MRT_RowVirtualizer;\n staticRowIndex: number;\n table: MRT_TableInstance<TData>;\n virtualRow?: VirtualItem;\n}\n\nexport const MRT_TableBodyRow = <TData extends MRT_RowData>({\n columnVirtualizer,\n numRows,\n pinnedRowIds,\n row,\n rowVirtualizer,\n staticRowIndex,\n table,\n virtualRow,\n ...rest\n}: MRT_TableBodyRowProps<TData>): JSX.Element => {\n const theme = useTheme();\n\n const {\n options: {\n enableRowOrdering,\n enableRowPinning,\n enableStickyFooter,\n enableStickyHeader,\n layoutMode,\n memoMode,\n mrtTheme: { baseBackgroundColor, pinnedRowBackgroundColor, selectedRowBackgroundColor },\n muiTableBodyRowProps,\n renderDetailPanel,\n rowPinningDisplayMode,\n },\n refs: { tableFooterRef, tableHeadRef },\n setHoveredRow,\n } = table;\n const { density, draggingColumn, draggingRow, editingCell, editingRow, hoveredRow, isFullScreen } = table.state;\n\n const visibleCells = row.getVisibleCells();\n\n const { virtualColumns, virtualPaddingLeft, virtualPaddingRight } = columnVirtualizer ?? {};\n\n const isRowSelected = getIsRowSelected({ row, table });\n const isRowPinned = enableRowPinning && row.getIsPinned();\n const isDraggingRow = draggingRow?.id === row.id;\n const isHoveredRow = hoveredRow?.id === row.id;\n\n const tableRowProps = {\n ...parseFromValuesOrFunc(muiTableBodyRowProps, {\n row,\n staticRowIndex,\n table,\n }),\n ...rest,\n };\n\n const getPinnedIndexes = (): number[] => {\n if (!enableRowPinning || !rowPinningDisplayMode?.includes('sticky') || !pinnedRowIds || !row.getIsPinned()) {\n return [];\n }\n return [[...pinnedRowIds].reverse().indexOf(row.id), pinnedRowIds.indexOf(row.id)];\n };\n const [bottomPinnedIndex, topPinnedIndex] = getPinnedIndexes();\n\n const tableHeadHeight = ((enableStickyHeader || isFullScreen) && tableHeadRef.current?.clientHeight) || 0;\n const tableFooterHeight = (enableStickyFooter && tableFooterRef.current?.clientHeight) || 0;\n\n const sx = parseFromValuesOrFunc(tableRowProps?.sx, theme) as CSSObject | undefined;\n\n const defaultRowHeight = density === 'compact' ? 37 : density === 'comfortable' ? 53 : 69;\n\n const customRowHeight = parseInt(String(tableRowProps?.style?.height ?? sx?.height), 10) || undefined;\n\n const rowHeight = customRowHeight || defaultRowHeight;\n\n const handleDragEnter = (_e: DragEvent) => {\n if (enableRowOrdering && draggingRow) {\n setHoveredRow(row);\n }\n };\n\n const handleDragOver = (e: DragEvent) => {\n e.preventDefault();\n };\n\n const rowRef = useRef<HTMLTableRowElement | null>(null);\n\n const cellHighlightColor = isRowSelected\n ? selectedRowBackgroundColor\n : isRowPinned\n ? pinnedRowBackgroundColor\n : undefined;\n\n const cellHighlightColorHover =\n tableRowProps?.hover !== false\n ? isRowSelected\n ? cellHighlightColor\n : theme.palette.mode === 'dark'\n ? `${lighten(baseBackgroundColor, 0.3)}`\n : `${darken(baseBackgroundColor, 0.3)}`\n : undefined;\n\n return (\n <>\n <TableRow\n data-index={renderDetailPanel ? staticRowIndex * 2 : staticRowIndex}\n data-pinned={!!isRowPinned || undefined}\n data-selected={isRowSelected || undefined}\n onDragEnter={handleDragEnter}\n onDragOver={handleDragOver}\n ref={(node: HTMLTableRowElement) => {\n if (node) {\n rowRef.current = node;\n rowVirtualizer?.measureElement(node);\n }\n }}\n selected={isRowSelected}\n {...tableRowProps}\n style={{\n transform: virtualRow ? `translateY(${virtualRow.start}px)` : undefined,\n ...tableRowProps?.style,\n }}\n sx={(theme: Theme) => ({\n '&:hover td:after': cellHighlightColorHover\n ? {\n backgroundColor: alpha(cellHighlightColorHover, 0.3),\n ...commonCellBeforeAfterStyles,\n }\n : undefined,\n backgroundColor: `${baseBackgroundColor} !important`,\n bottom:\n !virtualRow && bottomPinnedIndex !== undefined && isRowPinned\n ? `${bottomPinnedIndex * rowHeight + (enableStickyFooter ? tableFooterHeight - 1 : 0)}px`\n : undefined,\n boxSizing: 'border-box',\n display: layoutMode?.startsWith('grid') ? 'flex' : undefined,\n opacity: isRowPinned ? 0.97 : isDraggingRow || isHoveredRow ? 0.5 : 1,\n position: virtualRow\n ? 'absolute'\n : rowPinningDisplayMode?.includes('sticky') && isRowPinned\n ? 'sticky'\n : 'relative',\n td: {\n ...getCommonPinnedCellStyles({ table, theme }),\n },\n 'td:after': cellHighlightColor\n ? {\n backgroundColor: cellHighlightColor,\n ...commonCellBeforeAfterStyles,\n }\n : undefined,\n top: virtualRow\n ? 0\n : topPinnedIndex !== undefined && isRowPinned\n ? `${topPinnedIndex * rowHeight + (enableStickyHeader || isFullScreen ? tableHeadHeight - 1 : 0)}px`\n : undefined,\n transition: virtualRow ? 'none' : 'all 150ms ease-in-out',\n width: '100%',\n zIndex: rowPinningDisplayMode?.includes('sticky') && isRowPinned ? 2 : 0,\n ...sx,\n })}\n >\n {virtualPaddingLeft ? <td style={{ display: 'flex', width: virtualPaddingLeft }} /> : null}\n {(virtualColumns ?? visibleCells).map((cellOrVirtualCell, staticColumnIndex) => {\n let cell = cellOrVirtualCell as MRT_Cell<TData>;\n if (columnVirtualizer) {\n staticColumnIndex = (cellOrVirtualCell as MRT_VirtualItem).index;\n cell = visibleCells[staticColumnIndex];\n }\n const props = {\n cell,\n numRows,\n rowRef,\n staticColumnIndex,\n staticRowIndex,\n table,\n };\n const key = `${cell.id}-${staticRowIndex}`;\n return cell ? (\n memoMode === 'cells' &&\n cell.column.columnDef.columnDefType === 'data' &&\n !draggingColumn &&\n !draggingRow &&\n editingCell?.id !== cell.id &&\n editingRow?.id !== row.id ? (\n <Memo_MRT_TableBodyCell key={key} {...props} />\n ) : (\n <MRT_TableBodyCell key={key} {...props} />\n )\n ) : null;\n })}\n {virtualPaddingRight ? <td style={{ display: 'flex', width: virtualPaddingRight }} /> : null}\n </TableRow>\n {renderDetailPanel && !row.getIsGrouped() && (\n <MRT_TableDetailPanel\n parentRowRef={rowRef}\n row={row}\n rowVirtualizer={rowVirtualizer}\n staticRowIndex={staticRowIndex}\n table={table}\n virtualRow={virtualRow}\n />\n )}\n </>\n );\n};\n\nexport const Memo_MRT_TableBodyRow = memo(\n MRT_TableBodyRow,\n (prev, next) => prev.row === next.row && prev.staticRowIndex === next.staticRowIndex,\n) as typeof MRT_TableBodyRow;\n","import { TableBody, type TableBodyProps, Typography } from '@mui/material';\nimport { type CSSObject } from '@mui/material/styles';\nimport { type VirtualItem } from '@tanstack/react-virtual';\nimport { memo, useMemo } from 'react';\n\nimport { useMRT_Rows } from '../../hooks/useMRT_Rows';\nimport { useMRT_RowVirtualizer } from '../../hooks/useMRT_RowVirtualizer';\nimport { type MRT_ColumnVirtualizer, type MRT_Row, type MRT_RowData, type MRT_TableInstance } from '../../types';\nimport { parseFromValuesOrFunc } from '../../utils/utils';\nimport { Memo_MRT_TableBodyRow, MRT_TableBodyRow } from './MRT_TableBodyRow';\n\nexport interface MRT_TableBodyProps<TData extends MRT_RowData> extends TableBodyProps {\n columnVirtualizer?: MRT_ColumnVirtualizer;\n table: MRT_TableInstance<TData>;\n}\n\nexport const MRT_TableBody = <TData extends MRT_RowData>({\n columnVirtualizer,\n table,\n ...rest\n}: MRT_TableBodyProps<TData>): JSX.Element => {\n const {\n getBottomRows,\n getIsSomeRowsPinned,\n getRowModel,\n getTopRows,\n options: {\n enableStickyFooter,\n enableStickyHeader,\n layoutMode,\n localization,\n memoMode,\n muiTableBodyProps,\n renderDetailPanel,\n renderEmptyRowsFallback,\n rowPinningDisplayMode,\n },\n refs: { tableFooterRef, tableHeadRef, tablePaperRef },\n } = table;\n const { columnFilters, globalFilter, isFullScreen, rowPinning } = table.state;\n\n const tableBodyProps = {\n ...parseFromValuesOrFunc(muiTableBodyProps, { table }),\n ...rest,\n };\n\n const tableHeadHeight = ((enableStickyHeader || isFullScreen) && tableHeadRef.current?.clientHeight) || 0;\n const tableFooterHeight = (enableStickyFooter && tableFooterRef.current?.clientHeight) || 0;\n\n const rowModelRows = getRowModel().rows;\n const pinnedRowIds = useMemo(() => {\n if (!rowPinning.bottom?.length && !rowPinning.top?.length) {\n return [];\n }\n return rowModelRows.filter((row) => row.getIsPinned()).map((r) => r.id);\n }, [rowPinning, rowModelRows]);\n\n const rows = useMRT_Rows(table);\n\n const rowVirtualizer = useMRT_RowVirtualizer(table, rows);\n\n const { virtualRows } = rowVirtualizer ?? {};\n\n const commonRowProps = {\n columnVirtualizer,\n numRows: rows.length,\n table,\n };\n\n return (\n <>\n {!rowPinningDisplayMode?.includes('sticky') && getIsSomeRowsPinned('top') && (\n <TableBody\n {...tableBodyProps}\n sx={(theme) => ({\n display: layoutMode?.startsWith('grid') ? 'grid' : undefined,\n position: 'sticky',\n top: tableHeadHeight - 1,\n zIndex: 1,\n ...(parseFromValuesOrFunc(tableBodyProps?.sx, theme) as CSSObject),\n })}\n >\n {getTopRows().map((row, staticRowIndex) => {\n const props = {\n ...commonRowProps,\n row,\n staticRowIndex,\n };\n return memoMode === 'rows' ? (\n <Memo_MRT_TableBodyRow key={row.id} {...props} />\n ) : (\n <MRT_TableBodyRow key={row.id} {...props} />\n );\n })}\n </TableBody>\n )}\n <TableBody\n {...tableBodyProps}\n sx={(theme) => ({\n display: layoutMode?.startsWith('grid') ? 'grid' : undefined,\n height: rowVirtualizer ? `${rowVirtualizer.getTotalSize()}px` : undefined,\n minHeight: !rows.length ? '100px' : undefined,\n position: 'relative',\n ...(parseFromValuesOrFunc(tableBodyProps?.sx, theme) as CSSObject),\n })}\n >\n {tableBodyProps?.children ??\n (!rows.length ? (\n <tr\n style={{\n display: layoutMode?.startsWith('grid') ? 'grid' : undefined,\n }}\n >\n <td\n colSpan={table.getVisibleLeafColumns().length}\n style={{\n display: layoutMode?.startsWith('grid') ? 'grid' : undefined,\n }}\n >\n {renderEmptyRowsFallback?.({ table }) ?? (\n <Typography\n sx={{\n color: 'text.secondary',\n fontStyle: 'italic',\n maxWidth: `min(100vw, ${\n tablePaperRef.current?.clientWidth ? tablePaperRef.current?.clientWidth + 'px' : '100%'\n })`,\n py: '2rem',\n textAlign: 'center',\n width: '100%',\n }}\n >\n {globalFilter || columnFilters.length\n ? localization.noResultsFound\n : localization.noRecordsToDisplay}\n </Typography>\n )}\n </td>\n </tr>\n ) : (\n <>\n {(virtualRows ?? rows).map((rowOrVirtualRow, staticRowIndex) => {\n let row = rowOrVirtualRow as MRT_Row<TData>;\n if (rowVirtualizer) {\n if (renderDetailPanel) {\n if (rowOrVirtualRow.index % 2 === 1) {\n return null;\n } else {\n staticRowIndex = rowOrVirtualRow.index / 2;\n }\n } else {\n staticRowIndex = rowOrVirtualRow.index;\n }\n row = rows[staticRowIndex];\n }\n const props = {\n ...commonRowProps,\n pinnedRowIds,\n row,\n rowVirtualizer,\n staticRowIndex,\n virtualRow: rowVirtualizer ? (rowOrVirtualRow as VirtualItem) : undefined,\n };\n const key = `${row.id}-${row.index}`;\n return memoMode === 'rows' ? (\n <Memo_MRT_TableBodyRow key={key} {...props} />\n ) : (\n <MRT_TableBodyRow key={key} {...props} />\n );\n })}\n </>\n ))}\n </TableBody>\n {!rowPinningDisplayMode?.includes('sticky') && getIsSomeRowsPinned('bottom') && (\n <TableBody\n {...tableBodyProps}\n sx={(theme) => ({\n bottom: tableFooterHeight - 1,\n display: layoutMode?.startsWith('grid') ? 'grid' : undefined,\n position: 'sticky',\n zIndex: 1,\n ...(parseFromValuesOrFunc(tableBodyProps?.sx, theme) as CSSObject),\n })}\n >\n {getBottomRows().map((row, staticRowIndex) => {\n const props = {\n ...commonRowProps,\n row,\n staticRowIndex,\n };\n return memoMode === 'rows' ? (\n <Memo_MRT_TableBodyRow key={row.id} {...props} />\n ) : (\n <MRT_TableBodyRow key={row.id} {...props} />\n );\n })}\n </TableBody>\n )}\n </>\n );\n};\n\nexport const Memo_MRT_TableBody = memo(\n MRT_TableBody,\n (prev, next) => prev.table.options.data === next.table.options.data,\n) as typeof MRT_TableBody;\n","import { IconButton, type IconButtonProps, Tooltip } from '@mui/material';\nimport { type CSSObject } from '@mui/material/styles';\nimport { type DragEventHandler } from 'react';\n\nimport { type MRT_RowData, type MRT_TableInstance } from '../../types';\nimport { getCommonTooltipProps } from '../../utils/style.utils';\nimport { parseFromValuesOrFunc } from '../../utils/utils';\n\nexport interface MRT_GrabHandleButtonProps<TData extends MRT_RowData> extends IconButtonProps {\n iconButtonProps?: IconButtonProps;\n location?: 'column' | 'row';\n onDragEnd: DragEventHandler<HTMLButtonElement>;\n onDragStart: DragEventHandler<HTMLButtonElement>;\n table: MRT_TableInstance<TData>;\n}\n\nexport const MRT_GrabHandleButton = <TData extends MRT_RowData>({\n location,\n table,\n ...rest\n}: MRT_GrabHandleButtonProps<TData>): JSX.Element => {\n const {\n options: {\n icons: { DragHandleIcon },\n localization,\n },\n } = table;\n\n return (\n <Tooltip {...getCommonTooltipProps('top')} title={rest?.title ?? localization.move}>\n <IconButton\n aria-label={rest.title ?? localization.move}\n disableRipple\n draggable=\"true\"\n size=\"small\"\n {...rest}\n onClick={(e) => {\n e.stopPropagation();\n rest?.onClick?.(e);\n }}\n sx={(theme) => ({\n '&:active': {\n cursor: 'grabbing',\n },\n '&:hover': {\n backgroundColor: 'transparent',\n opacity: 1,\n },\n cursor: 'grab',\n m: '0 -0.1rem',\n opacity: location === 'row' ? 1 : 0.5,\n p: '2px',\n transition: 'all 150ms ease-in-out',\n ...(parseFromValuesOrFunc(rest?.sx, theme) as CSSObject),\n })}\n title={undefined}\n >\n <DragHandleIcon />\n </IconButton>\n </Tooltip>\n );\n};\n","import { type IconButtonProps } from '@mui/material/IconButton';\nimport { type DragEvent, type RefObject } from 'react';\n\nimport { type MRT_Row, type MRT_RowData, type MRT_TableInstance } from '../../types';\nimport { parseFromValuesOrFunc } from '../../utils/utils';\nimport { MRT_GrabHandleButton } from '../buttons/MRT_GrabHandleButton';\n\nexport interface MRT_TableBodyRowGrabHandleProps<TData extends MRT_RowData> extends IconButtonProps {\n row: MRT_Row<TData>;\n rowRef: RefObject<HTMLTableRowElement | null>;\n table: MRT_TableInstance<TData>;\n}\n\nexport const MRT_TableBodyRowGrabHandle = <TData extends MRT_RowData>({\n row,\n rowRef,\n table,\n ...rest\n}: MRT_TableBodyRowGrabHandleProps<TData>): JSX.Element => {\n const {\n options: { muiRowDragHandleProps },\n } = table;\n\n const iconButtonProps = {\n ...parseFromValuesOrFunc(muiRowDragHandleProps, {\n row,\n table,\n }),\n ...rest,\n };\n\n const handleDragStart = (event: DragEvent<HTMLButtonElement>) => {\n iconButtonProps?.onDragStart?.(event);\n try {\n event.dataTransfer.setDragImage(rowRef.current as HTMLElement, 0, 0);\n } catch (e) {\n console.error(e);\n }\n table.setDraggingRow(row);\n };\n\n const handleDragEnd = (event: DragEvent<HTMLButtonElement>) => {\n iconButtonProps?.onDragEnd?.(event);\n table.setDraggingRow(null);\n table.setHoveredRow(null);\n };\n\n return (\n <MRT_GrabHandleButton\n {...iconButtonProps}\n location=\"row\"\n onDragEnd={handleDragEnd}\n onDragStart={handleDragStart}\n table={table}\n />\n );\n};\n","import { IconButton, type IconButtonProps, Tooltip } from '@mui/material';\nimport { type CSSObject } from '@mui/material/styles';\nimport { type RowPinningPosition } from '@tanstack/react-table';\nimport { type MouseEvent, useState } from 'react';\n\nimport { type MRT_Row, type MRT_RowData, type MRT_TableInstance } from '../../types';\nimport { getCommonTooltipProps } from '../../utils/style.utils';\nimport { parseFromValuesOrFunc } from '../../utils/utils';\n\nexport interface MRT_RowPinButtonProps<TData extends MRT_RowData> extends IconButtonProps {\n pinningPosition: RowPinningPosition;\n row: MRT_Row<TData>;\n table: MRT_TableInstance<TData>;\n}\n\nexport const MRT_RowPinButton = <TData extends MRT_RowData>({\n pinningPosition,\n row,\n table,\n ...rest\n}: MRT_RowPinButtonProps<TData>): JSX.Element => {\n const {\n options: {\n icons: { CloseIcon, PushPinIcon },\n localization,\n rowPinningDisplayMode,\n },\n } = table;\n\n const isPinned = row.getIsPinned();\n\n const [tooltipOpened, setTooltipOpened] = useState(false);\n\n const handleTogglePin = (event: MouseEvent<HTMLButtonElement>) => {\n setTooltipOpened(false);\n event.stopPropagation();\n row.pin(isPinned ? false : pinningPosition);\n };\n\n return (\n <Tooltip {...getCommonTooltipProps()} open={tooltipOpened} title={isPinned ? localization.unpin : localization.pin}>\n <IconButton\n aria-label={localization.pin}\n onBlur={() => setTooltipOpened(false)}\n onClick={handleTogglePin}\n onFocus={() => setTooltipOpened(true)}\n onMouseEnter={() => setTooltipOpened(true)}\n onMouseLeave={() => setTooltipOpened(false)}\n size=\"small\"\n {...rest}\n sx={(theme) => ({\n height: '24px',\n width: '24px',\n ...(parseFromValuesOrFunc(rest?.sx, theme) as CSSObject),\n })}\n >\n {isPinned ? (\n <CloseIcon />\n ) : (\n <PushPinIcon\n fontSize=\"small\"\n style={{\n transform: `rotate(${rowPinningDisplayMode === 'sticky' ? 135 : pinningPosition === 'top' ? 180 : 0}deg)`,\n }}\n />\n )}\n </IconButton>\n </Tooltip>\n );\n};\n","import { Box } from '@mui/material';\nimport { type IconButtonProps } from '@mui/material/IconButton';\n\nimport { type MRT_Row, type MRT_RowData, type MRT_TableInstance } from '../../types';\nimport { parseFromValuesOrFunc } from '../../utils/utils';\nimport { MRT_RowPinButton } from '../buttons/MRT_RowPinButton';\n\nexport interface MRT_TableBodyRowPinButtonProps<TData extends MRT_RowData> extends IconButtonProps {\n row: MRT_Row<TData>;\n table: MRT_TableInstance<TData>;\n}\n\nexport const MRT_TableBodyRowPinButton = <TData extends MRT_RowData>({\n row,\n table,\n ...rest\n}: MRT_TableBodyRowPinButtonProps<TData>): JSX.Element | null => {\n const {\n options: { enableRowPinning, rowPinningDisplayMode },\n } = table;\n const { density } = table.state;\n\n const canPin = parseFromValuesOrFunc(enableRowPinning, row);\n\n if (!canPin) {\n return null;\n }\n\n const rowPinButtonProps = {\n row,\n table,\n ...rest,\n };\n\n if (rowPinningDisplayMode === 'top-and-bottom' && !row.getIsPinned()) {\n return (\n <Box\n sx={{\n display: 'flex',\n flexDirection: density === 'compact' ? 'row' : 'column',\n }}\n >\n <MRT_RowPinButton pinningPosition=\"top\" {...rowPinButtonProps} />\n <MRT_RowPinButton pinningPosition=\"bottom\" {...rowPinButtonProps} />\n </Box>\n );\n }\n\n return (\n <MRT_RowPinButton pinningPosition={rowPinningDisplayMode === 'bottom' ? 'bottom' : 'top'} {...rowPinButtonProps} />\n );\n};\n","import { Box, type BoxProps, IconButton, Tooltip } from '@mui/material';\nimport { type CSSObject } from '@mui/material/styles';\n\nimport { type MRT_Column, type MRT_RowData, type MRT_TableInstance } from '../../types';\nimport { parseFromValuesOrFunc } from '../../utils/utils';\n\nexport interface MRT_ColumnPinningButtonsProps<TData extends MRT_RowData> extends BoxProps {\n column: MRT_Column<TData>;\n table: MRT_TableInstance<TData>;\n}\n\nexport const MRT_ColumnPinningButtons = <TData extends MRT_RowData>({\n column,\n table,\n ...rest\n}: MRT_ColumnPinningButtonsProps<TData>): JSX.Element => {\n const {\n options: {\n icons: { PushPinIcon },\n localization,\n },\n } = table;\n\n const handlePinColumn = (pinDirection: 'end' | 'start' | false) => {\n column.pin(pinDirection);\n };\n\n return (\n <Box\n {...rest}\n sx={(theme) => ({\n minWidth: '70px',\n textAlign: 'center',\n ...(parseFromValuesOrFunc(rest?.sx, theme) as CSSObject),\n })}\n >\n {column.getIsPinned() ? (\n <Tooltip title={localization.unpin}>\n <IconButton onClick={() => handlePinColumn(false)} size=\"small\">\n <PushPinIcon />\n </IconButton>\n </Tooltip>\n ) : (\n <>\n <Tooltip title={localization.pinToLeft}>\n <IconButton onClick={() => handlePinColumn('start')} size=\"small\">\n <PushPinIcon\n style={{\n transform: 'rotate(90deg)',\n }}\n />\n </IconButton>\n </Tooltip>\n <Tooltip title={localization.pinToRight}>\n <IconButton onClick={() => handlePinColumn('end')} size=\"small\">\n <PushPinIcon\n style={{\n transform: 'rotate(-90deg)',\n }}\n />\n </IconButton>\n </Tooltip>\n </>\n )}\n </Box>\n );\n};\n","import { Box, type BoxProps, Button, CircularProgress, IconButton, Tooltip } from '@mui/material';\nimport { type CSSObject } from '@mui/material/styles';\n\nimport { type MRT_EditValues, type MRT_Row, type MRT_RowData, type MRT_TableInstance } from '../../types';\nimport { parseFromValuesOrFunc } from '../../utils/utils';\n\nexport interface MRT_EditActionButtonsProps<TData extends MRT_RowData> extends BoxProps {\n row: MRT_Row<TData>;\n table: MRT_TableInstance<TData>;\n variant?: 'icon' | 'text';\n}\n\nexport const MRT_EditActionButtons = <TData extends MRT_RowData>({\n row,\n table,\n variant = 'icon',\n ...rest\n}: MRT_EditActionButtonsProps<TData>): JSX.Element => {\n const {\n options: {\n icons: { CancelIcon, SaveIcon },\n localization,\n onCreatingRowCancel,\n onCreatingRowSave,\n onEditingRowCancel,\n onEditingRowSave,\n },\n refs: { editInputRefs },\n setCreatingRow,\n setEditingRow,\n } = table;\n const { creatingRow, editingRow, isSaving } = table.state;\n\n const isCreating = creatingRow?.id === row.id;\n const isEditing = editingRow?.id === row.id;\n\n const handleCancel = () => {\n if (isCreating) {\n onCreatingRowCancel?.({ row, table });\n setCreatingRow(null);\n } else if (isEditing) {\n onEditingRowCancel?.({ row, table });\n setEditingRow(null);\n }\n row._valuesCache = {}; //reset values cache\n };\n\n const handleSubmitRow = () => {\n //look for auto-filled input values\n Object.values(editInputRefs.current ?? {})\n .filter((inputRef) => row.id === inputRef?.name?.split('_')?.[0])\n ?.forEach((input) => {\n if (input.value !== undefined && Object.hasOwn(row?._valuesCache as object, input.name)) {\n row._valuesCache[input.name] = input.value;\n }\n });\n if (isCreating) {\n onCreatingRowSave?.({\n exitCreatingMode: () => setCreatingRow(null),\n row,\n table,\n values: row._valuesCache as MRT_EditValues<TData>,\n });\n } else if (isEditing) {\n onEditingRowSave?.({\n exitEditingMode: () => setEditingRow(null),\n row,\n table,\n values: row._valuesCache as MRT_EditValues<TData>,\n });\n }\n };\n\n return (\n <Box\n onClick={(e) => e.stopPropagation()}\n sx={(theme) => ({\n display: 'flex',\n gap: '0.75rem',\n ...(parseFromValuesOrFunc(rest?.sx, theme) as CSSObject),\n })}\n >\n {variant === 'icon' ? (\n <>\n <Tooltip title={localization.cancel}>\n <IconButton aria-label={localization.cancel} onClick={handleCancel}>\n <CancelIcon />\n </IconButton>\n </Tooltip>\n {((isCreating && onCreatingRowSave) || (isEditing && onEditingRowSave)) && (\n <Tooltip title={localization.save}>\n <IconButton aria-label={localization.save} color=\"info\" disabled={isSaving} onClick={handleSubmitRow}>\n {isSaving ? <CircularProgress size={18} /> : <SaveIcon />}\n </IconButton>\n </Tooltip>\n )}\n </>\n ) : (\n <>\n <Button onClick={handleCancel} sx={{ minWidth: '100px' }}>\n {localization.cancel}\n </Button>\n <Button disabled={isSaving} onClick={handleSubmitRow} sx={{ minWidth: '100px' }} variant=\"contained\">\n {isSaving && <CircularProgress color=\"inherit\" size={18} />}\n {localization.save}\n </Button>\n </>\n )}\n </Box>\n );\n};\n","import { IconButton, type IconButtonProps, Tooltip } from '@mui/material';\nimport { type CSSObject } from '@mui/material/styles';\n\nimport { type MRT_RowData, type MRT_TableInstance } from '../../types';\nimport { getCommonTooltipProps } from '../../utils/style.utils';\nimport { parseFromValuesOrFunc } from '../../utils/utils';\n\nexport interface MRT_ExpandAllButtonProps<TData extends MRT_RowData> extends IconButtonProps {\n table: MRT_TableInstance<TData>;\n}\n\nexport const MRT_ExpandAllButton = <TData extends MRT_RowData>({\n table,\n ...rest\n}: MRT_ExpandAllButtonProps<TData>): JSX.Element => {\n const {\n getCanSomeRowsExpand,\n getIsAllRowsExpanded,\n getIsSomeRowsExpanded,\n options: {\n icons: { KeyboardDoubleArrowDownIcon },\n localization,\n muiExpandAllButtonProps,\n renderDetailPanel,\n },\n toggleAllRowsExpanded,\n } = table;\n const { density, isLoading } = table.state;\n\n const iconButtonProps = {\n ...parseFromValuesOrFunc(muiExpandAllButtonProps, {\n table,\n }),\n ...rest,\n };\n\n const isAllRowsExpanded = getIsAllRowsExpanded();\n\n return (\n <Tooltip\n {...getCommonTooltipProps()}\n title={iconButtonProps?.title ?? (isAllRowsExpanded ? localization.collapseAll : localization.expandAll)}\n >\n <span>\n <IconButton\n aria-label={localization.expandAll}\n disabled={isLoading || (!renderDetailPanel && !getCanSomeRowsExpand())}\n onClick={() => toggleAllRowsExpanded(!isAllRowsExpanded)}\n {...iconButtonProps}\n sx={(theme) => ({\n height: density === 'compact' ? '1.75rem' : '2.25rem',\n mt: density !== 'compact' ? '-0.25rem' : undefined,\n width: density === 'compact' ? '1.75rem' : '2.25rem',\n ...(parseFromValuesOrFunc(iconButtonProps?.sx, theme) as CSSObject),\n })}\n title={undefined}\n >\n {iconButtonProps?.children ?? (\n <KeyboardDoubleArrowDownIcon\n style={{\n transform: `rotate(${isAllRowsExpanded ? -180 : getIsSomeRowsExpanded() ? -90 : 0}deg)`,\n transition: 'transform 150ms',\n }}\n />\n )}\n </IconButton>\n </span>\n </Tooltip>\n );\n};\n","import { IconButton, type IconButtonProps, Tooltip } from '@mui/material';\nimport { type CSSObject, useTheme } from '@mui/material/styles';\nimport { type MouseEvent } from 'react';\n\nimport { type MRT_Row, type MRT_RowData, type MRT_TableInstance } from '../../types';\nimport { getCommonTooltipProps } from '../../utils/style.utils';\nimport { parseFromValuesOrFunc } from '../../utils/utils';\n\nexport interface MRT_ExpandButtonProps<TData extends MRT_RowData> extends IconButtonProps {\n row: MRT_Row<TData>;\n staticRowIndex?: number;\n table: MRT_TableInstance<TData>;\n}\n\nexport const MRT_ExpandButton = <TData extends MRT_RowData>({\n row,\n staticRowIndex,\n table,\n}: MRT_ExpandButtonProps<TData>): JSX.Element => {\n const theme = useTheme();\n const {\n options: {\n icons: { ExpandMoreIcon },\n localization,\n muiExpandButtonProps,\n positionExpandColumn,\n renderDetailPanel,\n },\n } = table;\n const { density } = table.state;\n\n const iconButtonProps = parseFromValuesOrFunc(muiExpandButtonProps, {\n row,\n staticRowIndex,\n table,\n });\n\n const canExpand = row.getCanExpand();\n const isExpanded = row.getIsExpanded();\n\n const handleToggleExpand = (event: MouseEvent<HTMLButtonElement>) => {\n event.stopPropagation();\n row.toggleExpanded();\n iconButtonProps?.onClick?.(event);\n };\n\n const detailPanel = !!renderDetailPanel?.({ row, table });\n\n return (\n <Tooltip\n disableHoverListener={!canExpand && !detailPanel}\n {...getCommonTooltipProps()}\n title={iconButtonProps?.title ?? (isExpanded ? localization.collapse : localization.expand)}\n >\n <span>\n <IconButton\n aria-label={localization.expand}\n disabled={!canExpand && !detailPanel}\n {...iconButtonProps}\n onClick={handleToggleExpand}\n sx={(theme) => ({\n height: density === 'compact' ? '1.75rem' : '2.25rem',\n opacity: !canExpand && !detailPanel ? 0.3 : 1,\n [theme.direction === 'rtl' || positionExpandColumn === 'last' ? 'mr' : 'ml']: `${row.depth * 16}px`,\n width: density === 'compact' ? '1.75rem' : '2.25rem',\n ...(parseFromValuesOrFunc(iconButtonProps?.sx, theme) as CSSObject),\n })}\n title={undefined}\n >\n {iconButtonProps?.children ?? (\n <ExpandMoreIcon\n style={{\n transform: `rotate(${\n !canExpand && !renderDetailPanel\n ? positionExpandColumn === 'last' || theme.direction === 'rtl'\n ? 90\n : -90\n : isExpanded\n ? -180\n : 0\n }deg)`,\n transition: 'transform 150ms',\n }}\n />\n )}\n </IconButton>\n </span>\n </Tooltip>\n );\n};\n","import { useMemo } from 'react';\n\nimport {\n type DropdownOption,\n type MRT_Column,\n type MRT_ColumnDef,\n type MRT_ColumnOrderState,\n type MRT_DefinedColumnDef,\n type MRT_DefinedTableOptions,\n type MRT_FilterOption,\n type MRT_Header,\n type MRT_Localization,\n type MRT_RowData,\n type MRT_TableInstance,\n} from '../types';\n\nexport const getSubColumnDefs = <TData extends MRT_RowData>(\n columnDef: MRT_ColumnDef<TData>,\n): ReadonlyArray<MRT_ColumnDef<TData>> | undefined => ('columns' in columnDef ? columnDef.columns : undefined);\n\nexport const getColumnId = <TData extends MRT_RowData>(columnDef: MRT_ColumnDef<TData>): string =>\n columnDef.id ?? ('accessorKey' in columnDef ? columnDef.accessorKey?.toString?.() : undefined) ?? columnDef.header;\n\nexport const getAllLeafColumnDefs = <TData extends MRT_RowData>(\n columns: ReadonlyArray<MRT_ColumnDef<TData>>,\n): MRT_ColumnDef<TData>[] => {\n const allLeafColumnDefs: MRT_ColumnDef<TData>[] = [];\n const getLeafColumns = (cols: ReadonlyArray<MRT_ColumnDef<TData>>) => {\n cols.forEach((col) => {\n const subColumnDefs = getSubColumnDefs(col);\n if (subColumnDefs) {\n getLeafColumns(subColumnDefs);\n } else {\n allLeafColumnDefs.push(col);\n }\n });\n };\n getLeafColumns(columns);\n return allLeafColumnDefs;\n};\n\nexport const prepareColumns = <TData extends MRT_RowData>({\n columnDefs,\n tableOptions,\n}: {\n columnDefs: MRT_ColumnDef<TData>[];\n tableOptions: MRT_DefinedTableOptions<TData>;\n}): MRT_DefinedColumnDef<TData>[] => {\n const {\n aggregationFns = {},\n defaultDisplayColumn,\n filterFns = {},\n sortFns = {},\n state: { columnFilterFns = {} } = {},\n } = tableOptions;\n return columnDefs.map((columnDef) => {\n //assign columnId\n if (!columnDef.id) {\n columnDef.id = getColumnId(columnDef);\n }\n //assign columnDefType\n if (!columnDef.columnDefType) {\n columnDef.columnDefType = 'data';\n }\n const subColumnDefs = getSubColumnDefs(columnDef);\n if (subColumnDefs?.length && 'columns' in columnDef) {\n columnDef.columnDefType = 'group';\n //recursively prepare columns if this is a group column\n columnDef.columns = prepareColumns({\n columnDefs: [...subColumnDefs],\n tableOptions,\n });\n } else if (columnDef.columnDefType === 'data') {\n //assign aggregationFns if multiple aggregationFns are provided\n if (Array.isArray(columnDef.aggregationFn)) {\n const aggFns = columnDef.aggregationFn as string[];\n columnDef.aggregationFn = {\n aggregate: (context) => aggFns.map((fn) => aggregationFns[fn]?.aggregate(context)),\n };\n }\n\n //assign filterFns\n if (Object.keys(filterFns).includes(columnFilterFns[columnDef.id])) {\n columnDef.filterFn = filterFns[columnFilterFns[columnDef.id]] ?? filterFns.fuzzy;\n (columnDef as MRT_DefinedColumnDef<TData>)._filterFn = columnFilterFns[columnDef.id];\n }\n\n //assign sortFns\n if (Object.keys(sortFns).includes(columnDef.sortFn as string)) {\n columnDef.sortFn = sortFns[columnDef.sortFn as string];\n }\n } else if (columnDef.columnDefType === 'display') {\n columnDef = {\n ...(defaultDisplayColumn as MRT_ColumnDef<TData>),\n ...columnDef,\n };\n }\n return columnDef;\n }) as MRT_DefinedColumnDef<TData>[];\n};\n\nexport const reorderColumn = <TData extends MRT_RowData>(\n draggedColumn: MRT_Column<TData>,\n targetColumn: MRT_Column<TData>,\n columnOrder: MRT_ColumnOrderState,\n): MRT_ColumnOrderState => {\n if (draggedColumn.getCanPin()) {\n draggedColumn.pin(targetColumn.getIsPinned());\n }\n const newColumnOrder = [...columnOrder];\n newColumnOrder.splice(\n newColumnOrder.indexOf(targetColumn.id),\n 0,\n newColumnOrder.splice(newColumnOrder.indexOf(draggedColumn.id), 1)[0],\n );\n return newColumnOrder;\n};\n\nexport const moveColumn = <TData extends MRT_RowData>(\n table: MRT_TableInstance<TData>,\n draggedColumn: MRT_Column<TData>,\n targetColumn: MRT_Column<TData>,\n): void => {\n const reorderedColumns = reorderColumn(draggedColumn, targetColumn, table.state.columnOrder);\n table.setColumnOrder(reorderedColumns);\n table.setColumnPinning(({ end = [], start = [] }) => ({\n end: reorderedColumns.filter((header) => end.includes(header)),\n start: reorderedColumns.filter((header) => start.includes(header)),\n }));\n};\n\nexport const getDefaultColumnFilterFn = <TData extends MRT_RowData>(\n columnDef: Pick<MRT_ColumnDef<TData>, 'filterVariant'>,\n): MRT_FilterOption => {\n const { filterVariant } = columnDef;\n if (filterVariant === 'multi-select') {\n return 'arrIncludesSome';\n }\n if (filterVariant?.includes('range')) {\n return 'betweenInclusive';\n }\n if (filterVariant === 'select' || filterVariant === 'checkbox') {\n return 'equals';\n }\n return 'fuzzy';\n};\n\nexport interface MRT_ColumnFilterInfo<TData extends MRT_RowData> {\n allowedColumnFilterOptions: MRT_ColumnDef<TData>['columnFilterModeOptions'];\n currentFilterOption: MRT_FilterOption;\n facetedUniqueValues: ReturnType<MRT_Column<TData>['getFacetedUniqueValues']>;\n isAutocompleteFilter: boolean;\n isDateFilter: boolean;\n isMultiSelectFilter: boolean;\n isRangeFilter: boolean;\n isSelectFilter: boolean;\n isTextboxFilter: boolean;\n}\n\nexport const getFilterOptionLabel = (localization: MRT_Localization, filterOption: MRT_FilterOption): string =>\n localization[`filter${filterOption.charAt(0).toUpperCase() + filterOption.slice(1)}` as keyof MRT_Localization];\n\nexport const getColumnFilterInfo = <TData extends MRT_RowData>({\n header,\n table,\n}: {\n header: MRT_Header<TData>;\n table: MRT_TableInstance<TData>;\n}): MRT_ColumnFilterInfo<TData> => {\n const {\n options: { columnFilterModeOptions },\n } = table;\n const { column } = header;\n const { columnDef } = column;\n const { filterVariant } = columnDef;\n\n const isDateFilter = !!(filterVariant?.startsWith('date') || filterVariant?.startsWith('time'));\n const isAutocompleteFilter = filterVariant === 'autocomplete';\n const currentFilterOption = columnDef._filterFn ?? getDefaultColumnFilterFn(columnDef);\n\n const isRangeFilter =\n filterVariant?.includes('range') || ['between', 'betweenInclusive', 'inNumberRange'].includes(currentFilterOption);\n const isSelectFilter = filterVariant === 'select';\n const isMultiSelectFilter = filterVariant === 'multi-select';\n const isTextboxFilter =\n ['autocomplete', 'text'].includes(filterVariant!) || (!isSelectFilter && !isMultiSelectFilter);\n\n const allowedColumnFilterOptions = columnDef?.columnFilterModeOptions ?? columnFilterModeOptions;\n\n const facetedUniqueValues = column.getFacetedUniqueValues();\n\n return {\n allowedColumnFilterOptions,\n currentFilterOption,\n facetedUniqueValues,\n isAutocompleteFilter,\n isDateFilter,\n isMultiSelectFilter,\n isRangeFilter,\n isSelectFilter,\n isTextboxFilter,\n } as const;\n};\n\nexport const useDropdownOptions = <TData extends MRT_RowData>({\n header,\n table,\n}: {\n header: MRT_Header<TData>;\n table: MRT_TableInstance<TData>;\n}): DropdownOption[] | undefined => {\n const { column } = header;\n const { columnDef } = column;\n const { facetedUniqueValues, isAutocompleteFilter, isMultiSelectFilter, isSelectFilter } = getColumnFilterInfo({\n header,\n table,\n });\n\n return useMemo<DropdownOption[] | undefined>(\n () =>\n columnDef.filterSelectOptions ??\n ((isSelectFilter || isMultiSelectFilter || isAutocompleteFilter) && facetedUniqueValues\n ? Array.from(facetedUniqueValues.keys())\n .filter((value) => value !== null && value !== undefined)\n .sort((a, b) => a.localeCompare(b))\n : undefined),\n [columnDef.filterSelectOptions, facetedUniqueValues, isAutocompleteFilter, isMultiSelectFilter, isSelectFilter],\n );\n};\n","import {\n type MRT_DefinedTableOptions,\n type MRT_DisplayColumnDef,\n type MRT_DisplayColumnIds,\n type MRT_Localization,\n type MRT_RowData,\n type MRT_StatefulTableOptions,\n} from '../types';\nimport { getAllLeafColumnDefs, getColumnId } from './column.utils';\n\nexport function defaultDisplayColumnProps<TData extends MRT_RowData>({\n header,\n id,\n size,\n tableOptions,\n}: {\n header?: keyof MRT_Localization;\n id: MRT_DisplayColumnIds;\n size: number;\n tableOptions: MRT_DefinedTableOptions<TData>;\n}): Partial<MRT_DisplayColumnDef<TData>> & { header: string; id: MRT_DisplayColumnIds; size: number } {\n const { defaultDisplayColumn, displayColumnDefOptions, localization } = tableOptions;\n return {\n ...defaultDisplayColumn,\n header: header ? localization[header]! : '',\n size,\n ...displayColumnDefOptions?.[id],\n id,\n } as const;\n}\n\nexport const showRowPinningColumn = <TData extends MRT_RowData>(\n tableOptions: MRT_StatefulTableOptions<TData>,\n): boolean => {\n const { enableRowPinning, rowPinningDisplayMode } = tableOptions;\n return !!(enableRowPinning && !rowPinningDisplayMode?.startsWith('select'));\n};\n\nexport const showRowDragColumn = <TData extends MRT_RowData>(\n tableOptions: MRT_StatefulTableOptions<TData>,\n): boolean => {\n const { enableRowDragging, enableRowOrdering } = tableOptions;\n return !!(enableRowDragging || enableRowOrdering);\n};\n\nexport const showRowExpandColumn = <TData extends MRT_RowData>(\n tableOptions: MRT_StatefulTableOptions<TData>,\n): boolean => {\n const {\n enableExpanding,\n enableGrouping,\n renderDetailPanel,\n state: { grouping },\n } = tableOptions;\n return !!(enableExpanding || (enableGrouping && grouping?.length) || renderDetailPanel);\n};\n\nexport const showRowActionsColumn = <TData extends MRT_RowData>(\n tableOptions: MRT_StatefulTableOptions<TData>,\n): boolean => {\n const {\n createDisplayMode,\n editDisplayMode,\n enableEditing,\n enableRowActions,\n state: { creatingRow },\n } = tableOptions;\n return !!(\n enableRowActions ||\n (creatingRow && createDisplayMode === 'row') ||\n (enableEditing && ['modal', 'row'].includes(editDisplayMode ?? ''))\n );\n};\n\nexport const showRowSelectionColumn = <TData extends MRT_RowData>(\n tableOptions: MRT_StatefulTableOptions<TData>,\n): boolean => !!tableOptions.enableRowSelection;\n\nexport const showRowNumbersColumn = <TData extends MRT_RowData>(\n tableOptions: MRT_StatefulTableOptions<TData>,\n): boolean => !!tableOptions.enableRowNumbers;\n\nexport const showRowSpacerColumn = <TData extends MRT_RowData>(\n tableOptions: MRT_StatefulTableOptions<TData>,\n): boolean => tableOptions.layoutMode === 'grid-no-grow';\n\nexport const getLeadingDisplayColumnIds = <TData extends MRT_RowData>(\n tableOptions: MRT_StatefulTableOptions<TData>,\n): MRT_DisplayColumnIds[] =>\n [\n showRowPinningColumn(tableOptions) && 'mrt-row-pin',\n showRowDragColumn(tableOptions) && 'mrt-row-drag',\n tableOptions.positionActionsColumn === 'first' && showRowActionsColumn(tableOptions) && 'mrt-row-actions',\n tableOptions.positionExpandColumn === 'first' && showRowExpandColumn(tableOptions) && 'mrt-row-expand',\n showRowSelectionColumn(tableOptions) && 'mrt-row-select',\n showRowNumbersColumn(tableOptions) && 'mrt-row-numbers',\n ].filter(Boolean) as MRT_DisplayColumnIds[];\n\nexport const getTrailingDisplayColumnIds = <TData extends MRT_RowData>(\n tableOptions: MRT_StatefulTableOptions<TData>,\n): MRT_DisplayColumnIds[] =>\n [\n tableOptions.positionActionsColumn === 'last' && showRowActionsColumn(tableOptions) && 'mrt-row-actions',\n tableOptions.positionExpandColumn === 'last' && showRowExpandColumn(tableOptions) && 'mrt-row-expand',\n showRowSpacerColumn(tableOptions) && 'mrt-row-spacer',\n ].filter(Boolean) as MRT_DisplayColumnIds[];\n\nexport const getDefaultColumnOrderIds = <TData extends MRT_RowData>(\n tableOptions: MRT_StatefulTableOptions<TData>,\n reset = false,\n): string[] => {\n const {\n state: { columnOrder: currentColumnOrderIds = [] },\n } = tableOptions;\n\n const leadingDisplayColIds: string[] = getLeadingDisplayColumnIds(tableOptions);\n const trailingDisplayColIds: string[] = getTrailingDisplayColumnIds(tableOptions);\n\n const defaultColumnDefIds = getAllLeafColumnDefs(tableOptions.columns).map((columnDef) => getColumnId(columnDef));\n\n let allLeafColumnDefIds = reset\n ? defaultColumnDefIds\n : Array.from(new Set([...currentColumnOrderIds, ...defaultColumnDefIds]));\n\n allLeafColumnDefIds = allLeafColumnDefIds.filter(\n (colId) => !leadingDisplayColIds.includes(colId) && !trailingDisplayColIds.includes(colId),\n );\n\n return [...leadingDisplayColIds, ...allLeafColumnDefIds, ...trailingDisplayColIds];\n};\n","import { Box, FormControlLabel, MenuItem, type MenuItemProps, Switch, Tooltip, Typography } from '@mui/material';\nimport { type CSSObject } from '@mui/material/styles';\nimport { type Dispatch, type DragEvent, type SetStateAction, useRef, useState } from 'react';\n\nimport { type MRT_Column, type MRT_RowData, type MRT_TableInstance } from '../../types';\nimport { moveColumn } from '../../utils/column.utils';\nimport { getCommonTooltipProps } from '../../utils/style.utils';\nimport { parseFromValuesOrFunc } from '../../utils/utils';\nimport { MRT_ColumnPinningButtons } from '../buttons/MRT_ColumnPinningButtons';\nimport { MRT_GrabHandleButton } from '../buttons/MRT_GrabHandleButton';\n\nexport interface MRT_ShowHideColumnsMenuItemsProps<TData extends MRT_RowData> extends MenuItemProps {\n allColumns: MRT_Column<TData>[];\n column: MRT_Column<TData>;\n hoveredColumn: MRT_Column<TData> | null;\n isNestedColumns: boolean;\n setHoveredColumn: Dispatch<SetStateAction<MRT_Column<TData> | null>>;\n table: MRT_TableInstance<TData>;\n}\n\nexport const MRT_ShowHideColumnsMenuItems = <TData extends MRT_RowData>({\n allColumns,\n column,\n hoveredColumn,\n isNestedColumns,\n setHoveredColumn,\n table,\n ...rest\n}: MRT_ShowHideColumnsMenuItemsProps<TData>): JSX.Element | null => {\n const {\n options: {\n enableColumnOrdering,\n enableColumnPinning,\n enableHiding,\n localization,\n mrtTheme: { draggingBorderColor },\n },\n } = table;\n const { columnDef } = column;\n const { columnDefType } = columnDef;\n\n const switchChecked = column.getIsVisible();\n\n const handleToggleColumnHidden = (column: MRT_Column<TData>) => {\n if (columnDefType === 'group') {\n column?.columns?.forEach?.((childColumn: MRT_Column<TData>) => {\n childColumn.toggleVisibility(!switchChecked);\n });\n } else {\n column.toggleVisibility();\n }\n };\n\n const menuItemRef = useRef<HTMLLIElement>(null);\n\n const [isDragging, setIsDragging] = useState(false);\n\n const handleDragStart = (e: DragEvent<HTMLButtonElement>) => {\n setIsDragging(true);\n try {\n e.dataTransfer.setDragImage(menuItemRef.current as HTMLElement, 0, 0);\n } catch (e) {\n console.error(e);\n }\n };\n\n const handleDragEnd = (_e: DragEvent<HTMLButtonElement>) => {\n setIsDragging(false);\n setHoveredColumn(null);\n if (hoveredColumn) {\n moveColumn(table, column, hoveredColumn);\n }\n };\n\n const handleDragEnter = (_e: DragEvent) => {\n if (!isDragging && columnDef.enableColumnOrdering !== false) {\n setHoveredColumn(column);\n }\n };\n\n if (!columnDef.header || columnDef.visibleInShowHideMenu === false) {\n return null;\n }\n\n return (\n <>\n <MenuItem\n disableRipple\n onDragEnter={handleDragEnter}\n ref={menuItemRef}\n {...rest}\n sx={(theme) => ({\n alignItems: 'center',\n justifyContent: 'flex-start',\n my: 0,\n opacity: isDragging ? 0.5 : 1,\n outline: isDragging\n ? `2px dashed ${theme.palette.grey[500]}`\n : hoveredColumn?.id === column.id\n ? `2px dashed ${draggingBorderColor}`\n : 'none',\n outlineOffset: '-2px',\n pl: `${(column.depth + 0.5) * 2}rem`,\n py: '6px',\n ...(parseFromValuesOrFunc(rest?.sx, theme) as CSSObject),\n })}\n >\n <Box\n sx={{\n display: 'flex',\n flexWrap: 'nowrap',\n gap: '8px',\n }}\n >\n {columnDefType !== 'group' &&\n enableColumnOrdering &&\n !isNestedColumns &&\n (columnDef.enableColumnOrdering !== false ? (\n <MRT_GrabHandleButton onDragEnd={handleDragEnd} onDragStart={handleDragStart} table={table} />\n ) : (\n <Box sx={{ width: '28px' }} />\n ))}\n {enableColumnPinning &&\n (column.getCanPin() ? (\n <MRT_ColumnPinningButtons column={column} table={table} />\n ) : (\n <Box sx={{ width: '70px' }} />\n ))}\n {enableHiding ? (\n <FormControlLabel\n checked={switchChecked}\n control={\n <Tooltip {...getCommonTooltipProps()} title={localization.toggleVisibility}>\n <Switch />\n </Tooltip>\n }\n disabled={!column.getCanHide()}\n label={columnDef.header}\n onChange={() => handleToggleColumnHidden(column)}\n slotProps={{\n typography: {\n sx: {\n mb: 0,\n opacity: columnDefType !== 'display' ? 1 : 0.5,\n },\n },\n }}\n />\n ) : (\n <Typography sx={{ alignSelf: 'center' }}>{columnDef.header}</Typography>\n )}\n </Box>\n </MenuItem>\n {column.columns?.map((c: MRT_Column<TData>, i) => (\n <MRT_ShowHideColumnsMenuItems\n allColumns={allColumns}\n column={c}\n hoveredColumn={hoveredColumn}\n isNestedColumns={isNestedColumns}\n key={`${i}-${c.id}`}\n setHoveredColumn={setHoveredColumn}\n table={table}\n />\n ))}\n </>\n );\n};\n","import { Box, Button, Divider, Menu, type MenuProps } from '@mui/material';\nimport { useMemo, useState } from 'react';\n\nimport { type MRT_Column, type MRT_RowData, type MRT_TableInstance, type MRT_VisibilityState } from '../../types';\nimport { getDefaultColumnOrderIds } from '../../utils/displayColumn.utils';\nimport { MRT_ShowHideColumnsMenuItems } from './MRT_ShowHideColumnsMenuItems';\n\nexport interface MRT_ShowHideColumnsMenuProps<TData extends MRT_RowData> extends Partial<MenuProps> {\n anchorEl: HTMLElement | null;\n isSubMenu?: boolean;\n setAnchorEl: (anchorEl: HTMLElement | null) => void;\n table: MRT_TableInstance<TData>;\n}\n\nexport const MRT_ShowHideColumnsMenu = <TData extends MRT_RowData>({\n anchorEl,\n setAnchorEl,\n table,\n ...rest\n}: MRT_ShowHideColumnsMenuProps<TData>): JSX.Element => {\n const {\n getAllColumns,\n getAllLeafColumns,\n getCenterLeafColumns,\n getIsAllColumnsVisible,\n getIsSomeColumnsPinned,\n getIsSomeColumnsVisible,\n getLeftLeafColumns,\n getRightLeafColumns,\n initialState,\n options: {\n enableColumnOrdering,\n enableColumnPinning,\n enableHiding,\n localization,\n mrtTheme: { menuBackgroundColor },\n },\n } = table;\n const { columnOrder, density } = table.state;\n\n const handleToggleAllColumns = (value?: boolean) => {\n const updates = getAllLeafColumns()\n .filter((column) => column.columnDef.enableHiding !== false)\n .reduce((acc, column) => {\n acc[column.id] = value ?? !column.getIsVisible();\n return acc;\n }, {} as MRT_VisibilityState);\n\n table.setColumnVisibility((old) => ({ ...old, ...updates }));\n };\n\n const allTableColumns = getAllColumns();\n const centerLeafColumns = getCenterLeafColumns();\n const leftLeafColumns = getLeftLeafColumns();\n const rightLeafColumns = getRightLeafColumns();\n\n const allColumns = useMemo(() => {\n const columns = allTableColumns;\n if (columnOrder.length > 0 && !columns.some((col) => col.columnDef.columnDefType === 'group')) {\n return [\n ...leftLeafColumns,\n ...Array.from(new Set(columnOrder)).map((colId) => centerLeafColumns.find((col) => col?.id === colId)),\n ...rightLeafColumns,\n ].filter(Boolean);\n }\n return columns;\n }, [allTableColumns, centerLeafColumns, columnOrder, leftLeafColumns, rightLeafColumns]) as MRT_Column<TData>[];\n\n const isNestedColumns = allColumns.some((col) => col.columnDef.columnDefType === 'group');\n\n const hasColumnOrderChanged = useMemo(\n () =>\n columnOrder.length !== initialState.columnOrder.length ||\n !columnOrder.every((column, index) => column === initialState.columnOrder[index]),\n\n [columnOrder, initialState.columnOrder],\n );\n\n const [hoveredColumn, setHoveredColumn] = useState<MRT_Column<TData> | null>(null);\n\n return (\n <Menu\n anchorEl={anchorEl}\n disableScrollLock\n onClose={() => setAnchorEl(null)}\n open={!!anchorEl}\n slotProps={{\n list: {\n dense: density === 'compact',\n sx: {\n backgroundColor: menuBackgroundColor,\n },\n },\n }}\n {...rest}\n >\n <Box\n sx={{\n display: 'flex',\n justifyContent: 'space-between',\n p: '0.5rem',\n pt: 0,\n }}\n >\n {enableHiding && (\n <Button disabled={!getIsSomeColumnsVisible()} onClick={() => handleToggleAllColumns(false)}>\n {localization.hideAll}\n </Button>\n )}\n {enableColumnOrdering && (\n <Button\n disabled={!hasColumnOrderChanged}\n onClick={() => table.setColumnOrder(getDefaultColumnOrderIds(table.options, true))}\n >\n {localization.resetOrder}\n </Button>\n )}\n {enableColumnPinning && (\n <Button disabled={!getIsSomeColumnsPinned()} onClick={() => table.resetColumnPinning(true)}>\n {localization.unpinAll}\n </Button>\n )}\n {enableHiding && (\n <Button disabled={getIsAllColumnsVisible()} onClick={() => handleToggleAllColumns(true)}>\n {localization.showAll}\n </Button>\n )}\n </Box>\n <Divider />\n {allColumns.map((column, index) => (\n <MRT_ShowHideColumnsMenuItems\n allColumns={allColumns}\n column={column}\n hoveredColumn={hoveredColumn}\n isNestedColumns={isNestedColumns}\n key={`${index}-${column.id}`}\n setHoveredColumn={setHoveredColumn}\n table={table}\n />\n ))}\n </Menu>\n );\n};\n","import { IconButton, type IconButtonProps, Tooltip } from '@mui/material';\nimport { type MouseEvent, useState } from 'react';\n\nimport { type MRT_RowData, type MRT_TableInstance } from '../../types';\nimport { MRT_ShowHideColumnsMenu } from '../menus/MRT_ShowHideColumnsMenu';\n\nexport interface MRT_ShowHideColumnsButtonProps<TData extends MRT_RowData> extends IconButtonProps {\n table: MRT_TableInstance<TData>;\n}\n\nexport const MRT_ShowHideColumnsButton = <TData extends MRT_RowData>({\n table,\n ...rest\n}: MRT_ShowHideColumnsButtonProps<TData>): JSX.Element => {\n const {\n options: {\n icons: { ViewColumnIcon },\n localization,\n },\n } = table;\n\n const [anchorEl, setAnchorEl] = useState<HTMLElement | null>(null);\n\n const handleClick = (event: MouseEvent<HTMLElement>) => {\n setAnchorEl(event.currentTarget);\n };\n\n return (\n <>\n <Tooltip title={rest?.title ?? localization.showHideColumns}>\n <IconButton aria-label={localization.showHideColumns} onClick={handleClick} {...rest} title={undefined}>\n <ViewColumnIcon />\n </IconButton>\n </Tooltip>\n {anchorEl && <MRT_ShowHideColumnsMenu anchorEl={anchorEl} setAnchorEl={setAnchorEl} table={table} />}\n </>\n );\n};\n","import { IconButton, type IconButtonProps, Tooltip } from '@mui/material';\n\nimport { type MRT_RowData, type MRT_TableInstance } from '../../types';\n\nexport interface MRT_ToggleDensePaddingButtonProps<TData extends MRT_RowData> extends IconButtonProps {\n table: MRT_TableInstance<TData>;\n}\n\nexport const MRT_ToggleDensePaddingButton = <TData extends MRT_RowData>({\n table,\n ...rest\n}: MRT_ToggleDensePaddingButtonProps<TData>): JSX.Element => {\n const {\n options: {\n icons: { DensityLargeIcon, DensityMediumIcon, DensitySmallIcon },\n localization,\n },\n setDensity,\n } = table;\n const { density } = table.state;\n\n const handleToggleDensePadding = () => {\n const nextDensity = density === 'comfortable' ? 'compact' : density === 'compact' ? 'spacious' : 'comfortable';\n setDensity(nextDensity);\n };\n\n return (\n <Tooltip title={rest?.title ?? localization.toggleDensity}>\n <IconButton\n aria-label={localization.toggleDensity}\n onClick={handleToggleDensePadding}\n {...rest}\n title={undefined}\n >\n {density === 'compact' ? (\n <DensitySmallIcon />\n ) : density === 'comfortable' ? (\n <DensityMediumIcon />\n ) : (\n <DensityLargeIcon />\n )}\n </IconButton>\n </Tooltip>\n );\n};\n","import { IconButton, type IconButtonProps, Tooltip } from '@mui/material';\n\nimport { type MRT_RowData, type MRT_TableInstance } from '../../types';\n\nexport interface MRT_ToggleFiltersButtonProps<TData extends MRT_RowData> extends IconButtonProps {\n table: MRT_TableInstance<TData>;\n}\n\nexport const MRT_ToggleFiltersButton = <TData extends MRT_RowData>({\n table,\n ...rest\n}: MRT_ToggleFiltersButtonProps<TData>): JSX.Element => {\n const {\n options: {\n icons: { FilterListIcon, FilterListOffIcon },\n localization,\n },\n setShowColumnFilters,\n } = table;\n const { showColumnFilters } = table.state;\n\n const handleToggleShowFilters = () => {\n setShowColumnFilters(!showColumnFilters);\n };\n\n return (\n <Tooltip title={rest?.title ?? localization.showHideFilters}>\n <IconButton\n aria-label={localization.showHideFilters}\n onClick={handleToggleShowFilters}\n {...rest}\n title={undefined}\n >\n {showColumnFilters ? <FilterListOffIcon /> : <FilterListIcon />}\n </IconButton>\n </Tooltip>\n );\n};\n","import { IconButton, type IconButtonProps, Tooltip } from '@mui/material';\nimport { useState } from 'react';\n\nimport { type MRT_RowData, type MRT_TableInstance } from '../../types';\n\nexport interface MRT_ToggleFullScreenButtonProps<TData extends MRT_RowData> extends IconButtonProps {\n table: MRT_TableInstance<TData>;\n}\n\nexport const MRT_ToggleFullScreenButton = <TData extends MRT_RowData>({\n table,\n ...rest\n}: MRT_ToggleFullScreenButtonProps<TData>): JSX.Element => {\n const {\n options: {\n icons: { FullscreenExitIcon, FullscreenIcon },\n localization,\n },\n setIsFullScreen,\n } = table;\n const { isFullScreen } = table.state;\n\n const [tooltipOpened, setTooltipOpened] = useState(false);\n\n const handleToggleFullScreen = () => {\n setTooltipOpened(false);\n setIsFullScreen(!isFullScreen);\n };\n\n return (\n <Tooltip open={tooltipOpened} title={rest?.title ?? localization.toggleFullScreen}>\n <IconButton\n aria-label={localization.toggleFullScreen}\n onBlur={() => setTooltipOpened(false)}\n onClick={handleToggleFullScreen}\n onFocus={() => setTooltipOpened(true)}\n onMouseEnter={() => setTooltipOpened(true)}\n onMouseLeave={() => setTooltipOpened(false)}\n {...rest}\n title={undefined}\n >\n {isFullScreen ? <FullscreenExitIcon /> : <FullscreenIcon />}\n </IconButton>\n </Tooltip>\n );\n};\n","import { IconButton, type IconButtonProps, Tooltip } from '@mui/material';\n\nimport { type MRT_RowData, type MRT_TableInstance } from '../../types';\n\nexport interface MRT_ToggleGlobalFilterButtonProps<TData extends MRT_RowData> extends IconButtonProps {\n table: MRT_TableInstance<TData>;\n}\n\nexport const MRT_ToggleGlobalFilterButton = <TData extends MRT_RowData>({\n table,\n ...rest\n}: MRT_ToggleGlobalFilterButtonProps<TData>): JSX.Element => {\n const {\n options: {\n icons: { SearchIcon, SearchOffIcon },\n\n localization,\n },\n refs: { searchInputRef },\n setShowGlobalFilter,\n } = table;\n const { globalFilter, showGlobalFilter } = table.state;\n\n const handleToggleSearch = () => {\n setShowGlobalFilter(!showGlobalFilter);\n queueMicrotask(() => searchInputRef.current?.focus());\n };\n\n return (\n <Tooltip title={rest?.title ?? localization.showHideSearch}>\n <span>\n <IconButton\n aria-label={rest?.title ?? localization.showHideSearch}\n disabled={!!globalFilter && showGlobalFilter}\n onClick={handleToggleSearch}\n {...rest}\n title={undefined}\n >\n {showGlobalFilter ? <SearchOffIcon /> : <SearchIcon />}\n </IconButton>\n </span>\n </Tooltip>\n );\n};\n","import { Box, IconButton, ListItemIcon, MenuItem, type MenuItemProps } from '@mui/material';\nimport { type MouseEventHandler, type ReactNode } from 'react';\n\nimport { type MRT_RowData, type MRT_TableInstance } from '../../types';\n\nexport interface MRT_ActionMenuItemProps<TData extends MRT_RowData> extends MenuItemProps {\n icon: ReactNode;\n label: string;\n onOpenSubMenu?: MouseEventHandler<HTMLElement>;\n table: MRT_TableInstance<TData>;\n}\n\nexport const MRT_ActionMenuItem = <TData extends MRT_RowData>({\n icon,\n label,\n onOpenSubMenu,\n table,\n ...rest\n}: MRT_ActionMenuItemProps<TData>): JSX.Element => {\n const {\n options: {\n icons: { ArrowRightIcon },\n },\n } = table;\n\n return (\n <MenuItem\n sx={{\n alignItems: 'center',\n justifyContent: 'space-between',\n minWidth: '120px',\n my: 0,\n py: '6px',\n }}\n tabIndex={0}\n {...rest}\n >\n <Box\n sx={{\n alignItems: 'center',\n display: 'flex',\n }}\n >\n <ListItemIcon>{icon}</ListItemIcon>\n {label}\n </Box>\n {onOpenSubMenu && (\n <IconButton onClick={onOpenSubMenu} onMouseEnter={onOpenSubMenu} size=\"small\" sx={{ p: 0 }}>\n <ArrowRightIcon />\n </IconButton>\n )}\n </MenuItem>\n );\n};\n","import { Menu, type MenuProps } from '@mui/material';\nimport { type MouseEvent, type ReactNode, useMemo } from 'react';\n\nimport { type MRT_Row, type MRT_RowData, type MRT_TableInstance } from '../../types';\nimport { parseFromValuesOrFunc } from '../../utils/utils';\nimport { MRT_ActionMenuItem } from './MRT_ActionMenuItem';\n\nexport interface MRT_RowActionMenuProps<TData extends MRT_RowData> extends Partial<MenuProps> {\n anchorEl: HTMLElement | null;\n handleEdit: (event: MouseEvent) => void;\n row: MRT_Row<TData>;\n setAnchorEl: (anchorEl: HTMLElement | null) => void;\n staticRowIndex?: number;\n table: MRT_TableInstance<TData>;\n}\n\nexport const MRT_RowActionMenu = <TData extends MRT_RowData>({\n anchorEl,\n handleEdit,\n row,\n setAnchorEl,\n staticRowIndex,\n table,\n ...rest\n}: MRT_RowActionMenuProps<TData>): JSX.Element | null => {\n const {\n options: {\n editDisplayMode,\n enableEditing,\n icons: { EditIcon },\n localization,\n mrtTheme: { menuBackgroundColor },\n renderRowActionMenuItems,\n },\n } = table;\n const { density } = table.state;\n\n const menuItems = useMemo(() => {\n const items: ReactNode[] = [];\n const editItem = parseFromValuesOrFunc(enableEditing, row) && ['modal', 'row'].includes(editDisplayMode!) && (\n <MRT_ActionMenuItem\n icon={<EditIcon />}\n key={'edit'}\n label={localization.edit}\n onClick={handleEdit}\n table={table}\n />\n );\n if (editItem) {\n items.push(editItem);\n }\n const rowActionMenuItems = renderRowActionMenuItems?.({\n closeMenu: () => setAnchorEl(null),\n row,\n staticRowIndex,\n table,\n });\n if (rowActionMenuItems?.length) {\n items.push(...rowActionMenuItems);\n }\n return items;\n }, [\n EditIcon,\n editDisplayMode,\n enableEditing,\n handleEdit,\n localization.edit,\n renderRowActionMenuItems,\n row,\n setAnchorEl,\n staticRowIndex,\n table,\n ]);\n\n if (!menuItems.length) {\n return null;\n }\n\n return (\n <Menu\n anchorEl={anchorEl}\n disableScrollLock\n onClick={(event) => event.stopPropagation()}\n onClose={() => setAnchorEl(null)}\n open={!!anchorEl}\n slotProps={{\n list: {\n dense: density === 'compact',\n sx: {\n backgroundColor: menuBackgroundColor,\n },\n },\n }}\n {...rest}\n >\n {menuItems}\n </Menu>\n );\n};\n","import { IconButton, type IconButtonProps, Tooltip } from '@mui/material';\nimport { type MouseEvent, useState } from 'react';\n\nimport { type MRT_Cell, type MRT_Row, type MRT_RowData, type MRT_TableInstance } from '../../types';\nimport { getCommonTooltipProps } from '../../utils/style.utils';\nimport { parseFromValuesOrFunc } from '../../utils/utils';\nimport { MRT_RowActionMenu } from '../menus/MRT_RowActionMenu';\nimport { MRT_EditActionButtons } from './MRT_EditActionButtons';\n\nconst commonIconButtonStyles = {\n '&:hover': {\n opacity: 1,\n },\n height: '2rem',\n ml: '10px',\n opacity: 0.5,\n transition: 'opacity 150ms',\n width: '2rem',\n};\n\nexport interface MRT_ToggleRowActionMenuButtonProps<TData extends MRT_RowData> extends IconButtonProps {\n cell: MRT_Cell<TData>;\n row: MRT_Row<TData>;\n staticRowIndex?: number;\n table: MRT_TableInstance<TData>;\n}\n\nexport const MRT_ToggleRowActionMenuButton = <TData extends MRT_RowData>({\n cell,\n row,\n staticRowIndex,\n table,\n ...rest\n}: MRT_ToggleRowActionMenuButtonProps<TData>): JSX.Element => {\n const {\n options: {\n createDisplayMode,\n editDisplayMode,\n enableEditing,\n icons: { EditIcon, MoreHorizIcon },\n localization,\n renderRowActionMenuItems,\n renderRowActions,\n },\n setEditingRow,\n } = table;\n\n const { creatingRow, editingRow } = table.state;\n\n const isCreating = creatingRow?.id === row.id;\n const isEditing = editingRow?.id === row.id;\n\n const showEditActionButtons = (isCreating && createDisplayMode === 'row') || (isEditing && editDisplayMode === 'row');\n\n const [anchorEl, setAnchorEl] = useState<HTMLElement | null>(null);\n\n const handleOpenRowActionMenu = (event: MouseEvent<HTMLElement>) => {\n event.stopPropagation();\n event.preventDefault();\n setAnchorEl(event.currentTarget);\n };\n\n const handleStartEditMode = (event: MouseEvent) => {\n event.stopPropagation();\n setEditingRow(row);\n setAnchorEl(null);\n };\n\n return (\n <>\n {renderRowActions && !showEditActionButtons ? (\n renderRowActions({ cell, row, staticRowIndex, table })\n ) : showEditActionButtons ? (\n <MRT_EditActionButtons row={row} table={table} />\n ) : !renderRowActionMenuItems &&\n parseFromValuesOrFunc(enableEditing, row) &&\n ['modal', 'row'].includes(editDisplayMode!) ? (\n <Tooltip placement=\"right\" title={localization.edit}>\n <IconButton\n aria-label={localization.edit}\n onClick={handleStartEditMode}\n sx={commonIconButtonStyles}\n {...rest}\n >\n <EditIcon />\n </IconButton>\n </Tooltip>\n ) : renderRowActionMenuItems?.({\n row,\n closeMenu: () => {},\n staticRowIndex,\n table,\n })?.length ? (\n <>\n <Tooltip {...getCommonTooltipProps()} title={localization.rowActions}>\n <IconButton\n aria-label={localization.rowActions}\n onClick={handleOpenRowActionMenu}\n size=\"small\"\n sx={commonIconButtonStyles}\n {...rest}\n >\n <MoreHorizIcon />\n </IconButton>\n </Tooltip>\n <MRT_RowActionMenu\n anchorEl={anchorEl}\n handleEdit={handleStartEditMode}\n row={row}\n setAnchorEl={setAnchorEl}\n staticRowIndex={staticRowIndex}\n table={table}\n />\n </>\n ) : null}\n </>\n );\n};\n","import { TableCell, type TableCellProps } from '@mui/material';\nimport { type CSSObject, useTheme } from '@mui/material/styles';\n\nimport { type MRT_Header, type MRT_RowData, type MRT_TableInstance } from '../../types';\nimport { cellKeyboardShortcuts } from '../../utils/cell.utils';\nimport { getCommonMRTCellStyles } from '../../utils/style.utils';\nimport { parseFromValuesOrFunc } from '../../utils/utils';\n\nexport interface MRT_TableFooterCellProps<TData extends MRT_RowData> extends TableCellProps {\n footer: MRT_Header<TData>;\n staticColumnIndex?: number;\n table: MRT_TableInstance<TData>;\n}\n\nexport const MRT_TableFooterCell = <TData extends MRT_RowData>({\n footer,\n staticColumnIndex,\n table,\n ...rest\n}: MRT_TableFooterCellProps<TData>): JSX.Element => {\n const theme = useTheme();\n const {\n options: { enableColumnPinning, enableKeyboardShortcuts, muiTableFooterCellProps },\n } = table;\n const { density } = table.state;\n const { column } = footer;\n const { columnDef } = column;\n const { columnDefType } = columnDef;\n\n const isColumnPinned = enableColumnPinning && columnDef.columnDefType !== 'group' && column.getIsPinned();\n\n const args = { column, table };\n const tableCellProps = {\n ...parseFromValuesOrFunc(muiTableFooterCellProps, args),\n ...parseFromValuesOrFunc(columnDef.muiTableFooterCellProps, args),\n ...rest,\n };\n\n const handleKeyDown = (event: React.KeyboardEvent<HTMLTableCellElement>) => {\n tableCellProps?.onKeyDown?.(event);\n cellKeyboardShortcuts({\n cellValue: footer.column.columnDef.footer,\n event,\n table,\n });\n };\n\n return (\n <TableCell\n align={columnDefType === 'group' ? 'center' : theme.direction === 'rtl' ? 'right' : 'left'}\n colSpan={footer.colSpan}\n data-index={staticColumnIndex}\n data-pinned={!!isColumnPinned || undefined}\n tabIndex={enableKeyboardShortcuts ? 0 : undefined}\n variant=\"footer\"\n {...tableCellProps}\n onKeyDown={handleKeyDown}\n sx={(theme) => ({\n fontWeight: 'bold',\n p: density === 'compact' ? '0.5rem' : density === 'comfortable' ? '1rem' : '1.5rem',\n verticalAlign: 'top',\n ...getCommonMRTCellStyles({\n column,\n header: footer,\n table,\n tableCellProps,\n theme,\n }),\n ...(parseFromValuesOrFunc(tableCellProps?.sx, theme) as CSSObject),\n })}\n >\n {tableCellProps.children ??\n (footer.isPlaceholder\n ? null\n : (parseFromValuesOrFunc(columnDef.Footer, {\n column,\n footer,\n table,\n }) ??\n columnDef.footer ??\n null))}\n </TableCell>\n );\n};\n","import { TableRow, type TableRowProps } from '@mui/material';\nimport { type CSSObject } from '@mui/material/styles';\n\nimport {\n type MRT_ColumnVirtualizer,\n type MRT_Header,\n type MRT_HeaderGroup,\n type MRT_RowData,\n type MRT_TableInstance,\n type MRT_VirtualItem,\n} from '../../types';\nimport { parseFromValuesOrFunc } from '../../utils/utils';\nimport { MRT_TableFooterCell } from './MRT_TableFooterCell';\n\nexport interface MRT_TableFooterRowProps<TData extends MRT_RowData> extends TableRowProps {\n columnVirtualizer?: MRT_ColumnVirtualizer;\n footerGroup: MRT_HeaderGroup<TData>;\n table: MRT_TableInstance<TData>;\n}\n\nexport const MRT_TableFooterRow = <TData extends MRT_RowData>({\n columnVirtualizer,\n footerGroup,\n table,\n ...rest\n}: MRT_TableFooterRowProps<TData>): JSX.Element | null => {\n const {\n options: {\n layoutMode,\n mrtTheme: { baseBackgroundColor },\n muiTableFooterRowProps,\n },\n } = table;\n\n const { virtualColumns, virtualPaddingLeft, virtualPaddingRight } = columnVirtualizer ?? {};\n\n // if no content in row, skip row\n if (\n !footerGroup.headers?.some(\n (header) =>\n (typeof header.column.columnDef.footer === 'string' && !!header.column.columnDef.footer) ||\n header.column.columnDef.Footer,\n )\n ) {\n return null;\n }\n\n const tableRowProps = {\n ...parseFromValuesOrFunc(muiTableFooterRowProps, {\n footerGroup,\n table,\n }),\n ...rest,\n };\n\n return (\n <TableRow\n {...tableRowProps}\n sx={(theme) => ({\n backgroundColor: baseBackgroundColor,\n display: layoutMode?.startsWith('grid') ? 'flex' : undefined,\n position: 'relative',\n width: '100%',\n ...(parseFromValuesOrFunc(tableRowProps?.sx, theme) as CSSObject),\n })}\n >\n {virtualPaddingLeft ? <th style={{ display: 'flex', width: virtualPaddingLeft }} /> : null}\n {(virtualColumns ?? footerGroup.headers).map((footerOrVirtualFooter, staticColumnIndex) => {\n let footer = footerOrVirtualFooter as MRT_Header<TData>;\n if (columnVirtualizer) {\n staticColumnIndex = (footerOrVirtualFooter as MRT_VirtualItem).index;\n footer = footerGroup.headers[staticColumnIndex];\n }\n\n return footer ? (\n <MRT_TableFooterCell footer={footer} key={footer.id} staticColumnIndex={staticColumnIndex} table={table} />\n ) : null;\n })}\n {virtualPaddingRight ? <th style={{ display: 'flex', width: virtualPaddingRight }} /> : null}\n </TableRow>\n );\n};\n","import { TableFooter, type TableFooterProps } from '@mui/material';\nimport { type CSSObject } from '@mui/material/styles';\n\nimport { type MRT_ColumnVirtualizer, type MRT_RowData, type MRT_TableInstance } from '../../types';\nimport { parseFromValuesOrFunc } from '../../utils/utils';\nimport { MRT_TableFooterRow } from './MRT_TableFooterRow';\n\nexport interface MRT_TableFooterProps<TData extends MRT_RowData> extends TableFooterProps {\n columnVirtualizer?: MRT_ColumnVirtualizer;\n table: MRT_TableInstance<TData>;\n}\n\nexport const MRT_TableFooter = <TData extends MRT_RowData>({\n columnVirtualizer,\n table,\n ...rest\n}: MRT_TableFooterProps<TData>): JSX.Element | null => {\n const {\n options: { enableStickyFooter, layoutMode, muiTableFooterProps },\n refs: { tableFooterRef },\n } = table;\n const { isFullScreen } = table.state;\n\n const tableFooterProps = {\n ...parseFromValuesOrFunc(muiTableFooterProps, {\n table,\n }),\n ...rest,\n };\n\n const stickFooter = (isFullScreen || enableStickyFooter) && enableStickyFooter !== false;\n\n const footerGroups = table.getFooterGroups();\n\n //if no footer cells at all, skip footer\n if (\n !footerGroups.some((footerGroup) =>\n footerGroup.headers?.some(\n (header) =>\n (typeof header.column.columnDef.footer === 'string' && !!header.column.columnDef.footer) ||\n header.column.columnDef.Footer,\n ),\n )\n ) {\n return null;\n }\n\n return (\n <TableFooter\n {...tableFooterProps}\n ref={(ref: HTMLTableSectionElement) => {\n tableFooterRef.current = ref;\n if (tableFooterProps?.ref && typeof tableFooterProps.ref === 'object') {\n tableFooterProps.ref.current = ref;\n }\n }}\n sx={(theme) => ({\n bottom: stickFooter ? 0 : undefined,\n display: layoutMode?.startsWith('grid') ? 'grid' : undefined,\n opacity: stickFooter ? 0.97 : undefined,\n outline: stickFooter\n ? theme.palette.mode === 'light'\n ? `1px solid ${theme.palette.grey[300]}`\n : `1px solid ${theme.palette.grey[700]}`\n : undefined,\n position: stickFooter ? 'sticky' : 'relative',\n zIndex: stickFooter ? 1 : undefined,\n ...(parseFromValuesOrFunc(tableFooterProps?.sx, theme) as CSSObject),\n })}\n >\n {footerGroups.map((footerGroup) => (\n <MRT_TableFooterRow\n columnVirtualizer={columnVirtualizer}\n footerGroup={footerGroup}\n key={footerGroup.id}\n table={table}\n />\n ))}\n </TableFooter>\n );\n};\n","import { Checkbox, type CheckboxProps, Radio, type RadioProps, Tooltip } from '@mui/material';\nimport { type Theme } from '@mui/material/styles';\nimport { type MouseEvent } from 'react';\n\nimport { type MRT_Row, type MRT_RowData, type MRT_TableInstance } from '../../types';\nimport { getIsRowSelected, getMRT_RowSelectionHandler, getMRT_SelectAllHandler } from '../../utils/row.utils';\nimport { getCommonTooltipProps } from '../../utils/style.utils';\nimport { parseFromValuesOrFunc } from '../../utils/utils';\n\nexport interface MRT_SelectCheckboxProps<TData extends MRT_RowData> extends CheckboxProps {\n row?: MRT_Row<TData>;\n staticRowIndex?: number;\n table: MRT_TableInstance<TData>;\n}\n\nexport const MRT_SelectCheckbox = <TData extends MRT_RowData>({\n row,\n staticRowIndex,\n table,\n ...rest\n}: MRT_SelectCheckboxProps<TData>): JSX.Element => {\n const {\n options: {\n enableMultiRowSelection,\n localization,\n muiSelectAllCheckboxProps,\n muiSelectCheckboxProps,\n selectAllMode,\n },\n } = table;\n const { density, isLoading } = table.state;\n\n const selectAll = !row;\n\n const allRowsSelected = selectAll\n ? selectAllMode === 'page'\n ? table.getIsAllPageRowsSelected()\n : table.getIsAllRowsSelected()\n : undefined;\n\n const isChecked = selectAll ? allRowsSelected : getIsRowSelected({ row, table });\n\n const checkboxProps = {\n ...(selectAll\n ? parseFromValuesOrFunc(muiSelectAllCheckboxProps, { table })\n : parseFromValuesOrFunc(muiSelectCheckboxProps, {\n row,\n staticRowIndex,\n table,\n })),\n ...rest,\n };\n\n const onSelectionChange = row\n ? getMRT_RowSelectionHandler({\n row,\n staticRowIndex,\n table,\n })\n : undefined;\n\n const onSelectAllChange = getMRT_SelectAllHandler({ table });\n\n const commonProps = {\n 'aria-label': selectAll ? localization.toggleSelectAll : localization.toggleSelectRow,\n checked: isChecked,\n disabled: isLoading || (row && !row.getCanSelect()) || row?.id === 'mrt-row-create',\n onChange: (event) => {\n event.stopPropagation();\n if (selectAll) {\n onSelectAllChange(event);\n } else {\n onSelectionChange!(event);\n }\n },\n size: (density === 'compact' ? 'small' : 'medium') as 'medium' | 'small',\n slotProps: {\n input: {\n 'aria-label': selectAll ? localization.toggleSelectAll : localization.toggleSelectRow,\n },\n },\n ...checkboxProps,\n onClick: (e: MouseEvent<HTMLButtonElement>) => {\n e.stopPropagation();\n checkboxProps?.onClick?.(e);\n },\n sx: (theme: Theme) => ({\n height: density === 'compact' ? '1.75rem' : '2.5rem',\n m: density !== 'compact' ? '-0.4rem' : undefined,\n width: density === 'compact' ? '1.75rem' : '2.5rem',\n zIndex: 0,\n ...parseFromValuesOrFunc(checkboxProps?.sx, theme),\n }),\n title: undefined,\n } as CheckboxProps;\n\n return (\n <Tooltip\n {...getCommonTooltipProps()}\n title={checkboxProps?.title ?? (selectAll ? localization.toggleSelectAll : localization.toggleSelectRow)}\n >\n {enableMultiRowSelection === false ? (\n <Radio {...(commonProps as RadioProps)} />\n ) : (\n <Checkbox\n indeterminate={\n !isChecked && selectAll\n ? table.getIsSomeRowsSelected()\n : row?.getIsSomeSelected() && row.getCanSelectSubRows()\n }\n {...commonProps}\n />\n )}\n </Tooltip>\n );\n};\n","import { Alert, type AlertProps, AlertTitle, Box, Button, Chip, Collapse, Stack } from '@mui/material';\nimport { type CSSObject } from '@mui/material/styles';\nimport { Fragment, useMemo } from 'react';\n\nimport { type MRT_RowData, type MRT_TableInstance } from '../../types';\nimport { getMRT_SelectAllHandler } from '../../utils/row.utils';\nimport { parseFromValuesOrFunc } from '../../utils/utils';\nimport { MRT_SelectCheckbox } from '../inputs/MRT_SelectCheckbox';\n\nexport interface MRT_ToolbarAlertBannerProps<TData extends MRT_RowData> extends AlertProps {\n stackAlertBanner?: boolean;\n table: MRT_TableInstance<TData>;\n}\n\nexport const MRT_ToolbarAlertBanner = <TData extends MRT_RowData>({\n stackAlertBanner,\n table,\n ...rest\n}: MRT_ToolbarAlertBannerProps<TData>): JSX.Element => {\n const {\n getCoreRowModel,\n getFilteredSelectedRowModel,\n options: {\n enableRowSelection,\n enableSelectAll,\n localization,\n manualPagination,\n muiToolbarAlertBannerChipProps,\n muiToolbarAlertBannerProps,\n positionToolbarAlertBanner,\n renderToolbarAlertBannerContent,\n rowCount,\n },\n refs: { tablePaperRef },\n } = table;\n const { density, grouping, rowSelection, showAlertBanner } = table.state;\n\n const alertProps = {\n ...parseFromValuesOrFunc(muiToolbarAlertBannerProps, {\n table,\n }),\n ...rest,\n };\n\n const chipProps = parseFromValuesOrFunc(muiToolbarAlertBannerChipProps, {\n table,\n });\n\n const totalRowCount = rowCount ?? getCoreRowModel().rows.length;\n const filteredRowCount = getFilteredSelectedRowModel().rows.length;\n\n const selectedRowCount = useMemo(\n () => (manualPagination ? Object.values(rowSelection).filter(Boolean).length : filteredRowCount),\n [rowSelection, manualPagination, filteredRowCount],\n );\n const selectedAlert =\n selectedRowCount > 0 ? (\n <Stack\n direction=\"row\"\n sx={{\n alignItems: 'center',\n gap: '16px',\n }}\n >\n {localization.selectedCountOfRowCountRowsSelected\n ?.replace('{selectedCount}', selectedRowCount.toLocaleString(localization.language))\n ?.replace('{rowCount}', totalRowCount.toLocaleString(localization.language))}\n <Button\n onClick={(event) => getMRT_SelectAllHandler({ table })(event, false, true)}\n size=\"small\"\n sx={{ p: '2px' }}\n >\n {localization.clearSelection}\n </Button>\n </Stack>\n ) : null;\n\n const groupedAlert =\n grouping.length > 0 ? (\n <span>\n {localization.groupedBy}{' '}\n {grouping.map((columnId, index) => (\n <Fragment key={`${index}-${columnId}`}>\n {index > 0 ? localization.thenBy : ''}\n <Chip\n label={table.getColumn(columnId)?.columnDef.header}\n onDelete={() => table.getColumn(columnId)?.toggleGrouping()}\n {...chipProps}\n />\n </Fragment>\n ))}\n </span>\n ) : null;\n\n return (\n <Collapse in={showAlertBanner || !!selectedAlert || !!groupedAlert} timeout={stackAlertBanner ? 200 : 0}>\n <Alert\n color=\"info\"\n icon={false}\n {...alertProps}\n sx={(theme) => ({\n '& .MuiAlert-message': {\n maxWidth: `calc(${tablePaperRef.current?.clientWidth ?? 360}px - 1rem)`,\n width: '100%',\n },\n borderRadius: 0,\n fontSize: '1rem',\n left: 0,\n mb: stackAlertBanner ? 0 : positionToolbarAlertBanner === 'bottom' ? '-1rem' : undefined,\n p: 0,\n position: 'relative',\n right: 0,\n top: 0,\n width: '100%',\n zIndex: 2,\n ...(parseFromValuesOrFunc(alertProps?.sx, theme) as CSSObject),\n })}\n >\n {renderToolbarAlertBannerContent?.({\n groupedAlert,\n selectedAlert,\n table,\n }) ?? (\n <>\n {alertProps?.title && <AlertTitle>{alertProps.title}</AlertTitle>}\n <Stack\n sx={{\n p:\n positionToolbarAlertBanner !== 'head-overlay'\n ? '0.5rem 1rem'\n : density === 'spacious'\n ? '0.75rem 1.25rem'\n : density === 'comfortable'\n ? '0.5rem 0.75rem'\n : '0.25rem 0.5rem',\n }}\n >\n {alertProps?.children}\n {alertProps?.children && (selectedAlert || groupedAlert) && <br />}\n <Box sx={{ display: 'flex' }}>\n {enableRowSelection && enableSelectAll && positionToolbarAlertBanner === 'head-overlay' && (\n <MRT_SelectCheckbox table={table} />\n )}{' '}\n {selectedAlert}\n </Box>\n {selectedAlert && groupedAlert && <br />}\n {groupedAlert}\n </Stack>\n </>\n )}\n </Alert>\n </Collapse>\n );\n};\n","import { Menu, type MenuProps } from '@mui/material';\nimport { useState } from 'react';\n\nimport {\n type MRT_FilterOption,\n type MRT_Header,\n type MRT_InternalFilterOption,\n type MRT_Localization,\n type MRT_RowData,\n type MRT_TableInstance,\n} from '../../types';\nimport { MRT_ActionMenuItem } from './MRT_ActionMenuItem';\n\nexport const mrtFilterOptions = (localization: MRT_Localization): MRT_InternalFilterOption[] => [\n {\n divider: false,\n label: localization.filterFuzzy,\n option: 'fuzzy',\n symbol: '≈',\n },\n {\n divider: false,\n label: localization.filterContains,\n option: 'contains',\n symbol: '*',\n },\n {\n divider: false,\n label: localization.filterStartsWith,\n option: 'startsWith',\n symbol: 'a',\n },\n {\n divider: true,\n label: localization.filterEndsWith,\n option: 'endsWith',\n symbol: 'z',\n },\n {\n divider: false,\n label: localization.filterEquals,\n option: 'equals',\n symbol: '=',\n },\n {\n divider: true,\n label: localization.filterNotEquals,\n option: 'notEquals',\n symbol: '≠',\n },\n {\n divider: false,\n label: localization.filterBetween,\n option: 'between',\n symbol: '⇿',\n },\n {\n divider: true,\n label: localization.filterBetweenInclusive,\n option: 'betweenInclusive',\n symbol: '⬌',\n },\n {\n divider: false,\n label: localization.filterGreaterThan,\n option: 'greaterThan',\n symbol: '>',\n },\n {\n divider: false,\n label: localization.filterGreaterThanOrEqualTo,\n option: 'greaterThanOrEqualTo',\n symbol: '≥',\n },\n {\n divider: false,\n label: localization.filterLessThan,\n option: 'lessThan',\n symbol: '<',\n },\n {\n divider: true,\n label: localization.filterLessThanOrEqualTo,\n option: 'lessThanOrEqualTo',\n symbol: '≤',\n },\n {\n divider: false,\n label: localization.filterEmpty,\n option: 'empty',\n symbol: '∅',\n },\n {\n divider: false,\n label: localization.filterNotEmpty,\n option: 'notEmpty',\n symbol: '!∅',\n },\n];\n\nconst rangeModes = ['between', 'betweenInclusive', 'inNumberRange'];\nconst emptyModes = ['empty', 'notEmpty'];\nconst arrModes = ['arrIncludesSome', 'arrIncludesAll', 'arrIncludes'];\nconst rangeVariants = ['range-slider', 'date-range', 'datetime-range', 'range'];\n\nexport interface MRT_FilterOptionMenuProps<TData extends MRT_RowData> extends Partial<MenuProps> {\n anchorEl: HTMLElement | null;\n header?: MRT_Header<TData>;\n onSelect?: () => void;\n setAnchorEl: (anchorEl: HTMLElement | null) => void;\n // oxlint-disable-next-line typescript/no-explicit-any\n setFilterValue?: (filterValue: any) => void;\n table: MRT_TableInstance<TData>;\n}\n\nexport const MRT_FilterOptionMenu = <TData extends MRT_RowData>({\n anchorEl,\n header,\n onSelect,\n setAnchorEl,\n setFilterValue,\n table,\n ...rest\n}: MRT_FilterOptionMenuProps<TData>): JSX.Element => {\n const {\n options: {\n columnFilterModeOptions,\n globalFilterModeOptions,\n localization,\n mrtTheme: { menuBackgroundColor },\n renderColumnFilterModeMenuItems,\n renderGlobalFilterModeMenuItems,\n },\n setColumnFilterFns,\n setGlobalFilterFn,\n } = table;\n const { density, globalFilterFn } = table.state;\n const { column } = header ?? {};\n const { columnDef } = column ?? {};\n const currentFilterValue = column?.getFilterValue();\n\n let allowedColumnFilterOptions = columnDef?.columnFilterModeOptions ?? columnFilterModeOptions;\n\n if (rangeVariants.includes(columnDef?.filterVariant as string)) {\n allowedColumnFilterOptions = [...rangeModes, ...(allowedColumnFilterOptions ?? [])].filter((option) =>\n rangeModes.includes(option),\n );\n }\n\n const [internalFilterOptions] = useState(() =>\n mrtFilterOptions(localization).filter((filterOption) =>\n columnDef\n ? allowedColumnFilterOptions === undefined || allowedColumnFilterOptions?.includes(filterOption.option)\n : (!globalFilterModeOptions || globalFilterModeOptions.includes(filterOption.option)) &&\n ['contains', 'fuzzy', 'startsWith'].includes(filterOption.option),\n ),\n );\n\n const handleSelectFilterMode = (option: MRT_FilterOption) => {\n const prevFilterMode = columnDef?._filterFn ?? '';\n if (!header || !column) {\n // global filter mode\n setGlobalFilterFn(option);\n } else if (option !== prevFilterMode) {\n // column filter mode\n setColumnFilterFns((prev) => ({\n ...prev,\n [header.id]: option,\n }));\n\n // reset filter value and/or perform new filter render\n if (emptyModes.includes(option)) {\n // will now be empty/notEmpty filter mode\n if (currentFilterValue !== ' ' && !emptyModes.includes(prevFilterMode)) {\n column.setFilterValue(' ');\n } else if (currentFilterValue) {\n column.setFilterValue(currentFilterValue); // perform new filter render\n }\n } else if (columnDef?.filterVariant === 'multi-select' || arrModes.includes(option as string)) {\n // will now be array filter mode\n if (currentFilterValue instanceof String || (currentFilterValue as Array<unknown>)?.length) {\n column.setFilterValue([]);\n setFilterValue?.([]);\n } else if (currentFilterValue) {\n column.setFilterValue(currentFilterValue); // perform new filter render\n }\n } else if (columnDef?.filterVariant?.includes('range') || rangeModes.includes(option as MRT_FilterOption)) {\n // will now be range filter mode\n if (\n !Array.isArray(currentFilterValue) ||\n (!(currentFilterValue as Array<unknown>)?.every((v) => v === '') && !rangeModes.includes(prevFilterMode))\n ) {\n column.setFilterValue(['', '']);\n setFilterValue?.('');\n } else {\n column.setFilterValue(currentFilterValue); // perform new filter render\n }\n } else {\n // will now be single value filter mode\n if (Array.isArray(currentFilterValue)) {\n column.setFilterValue('');\n setFilterValue?.('');\n } else if (currentFilterValue === ' ' && emptyModes.includes(prevFilterMode)) {\n column.setFilterValue(undefined);\n } else {\n column.setFilterValue(currentFilterValue); // perform new filter render\n }\n }\n }\n setAnchorEl(null);\n onSelect?.();\n };\n\n const filterOption = !!header && columnDef ? columnDef._filterFn : globalFilterFn;\n\n return (\n <Menu\n anchorEl={anchorEl}\n anchorOrigin={{ horizontal: 'right', vertical: 'center' }}\n disableScrollLock\n onClose={() => setAnchorEl(null)}\n open={!!anchorEl}\n slotProps={{\n list: {\n dense: density === 'compact',\n sx: {\n backgroundColor: menuBackgroundColor,\n },\n },\n }}\n {...rest}\n >\n {(header && column && columnDef\n ? (columnDef.renderColumnFilterModeMenuItems?.({\n column,\n internalFilterOptions,\n onSelectFilterMode: handleSelectFilterMode,\n table,\n }) ??\n renderColumnFilterModeMenuItems?.({\n column,\n internalFilterOptions,\n onSelectFilterMode: handleSelectFilterMode,\n table,\n }))\n : renderGlobalFilterModeMenuItems?.({\n internalFilterOptions,\n onSelectFilterMode: handleSelectFilterMode,\n table,\n })) ??\n internalFilterOptions.map(({ divider, label, option, symbol }, index) => (\n <MRT_ActionMenuItem\n divider={divider}\n icon={symbol}\n key={index}\n label={label}\n onClick={() => handleSelectFilterMode(option as MRT_FilterOption)}\n selected={option === filterOption}\n table={table}\n value={option}\n />\n ))}\n </Menu>\n );\n};\n","import { Menu, type MenuProps } from '@mui/material';\nimport { type MouseEvent, useState } from 'react';\n\nimport { type MRT_Header, type MRT_RowData, type MRT_TableInstance } from '../../types';\nimport { getColumnFilterInfo } from '../../utils/column.utils';\nimport { MRT_ActionMenuItem } from './MRT_ActionMenuItem';\nimport { MRT_FilterOptionMenu } from './MRT_FilterOptionMenu';\n\nexport interface MRT_ColumnActionMenuProps<TData extends MRT_RowData> extends Partial<MenuProps> {\n anchorEl: HTMLElement | null;\n header: MRT_Header<TData>;\n setAnchorEl: (anchorEl: HTMLElement | null) => void;\n table: MRT_TableInstance<TData>;\n}\n\nexport const MRT_ColumnActionMenu = <TData extends MRT_RowData>({\n anchorEl,\n header,\n setAnchorEl,\n table,\n ...rest\n}: MRT_ColumnActionMenuProps<TData>): JSX.Element => {\n const {\n getAllLeafColumns,\n options: {\n columnFilterDisplayMode,\n enableColumnFilterModes,\n enableColumnFilters,\n enableColumnPinning,\n enableColumnResizing,\n enableGrouping,\n enableHiding,\n enableSorting,\n enableSortingRemoval,\n icons: {\n ClearAllIcon,\n DynamicFeedIcon,\n FilterListIcon,\n FilterListOffIcon,\n PushPinIcon,\n RestartAltIcon,\n SortIcon,\n ViewColumnIcon,\n VisibilityOffIcon,\n },\n localization,\n mrtTheme: { menuBackgroundColor },\n renderColumnActionsMenuItems,\n },\n refs: { filterInputRefs },\n setColumnFilterFns,\n setColumnOrder,\n setColumnResizing,\n setShowColumnFilters,\n } = table;\n const { column } = header;\n const { columnDef } = column;\n const { columnSizing, columnVisibility, density, showColumnFilters } = table.state;\n const columnFilterValue = column.getFilterValue();\n\n const [filterMenuAnchorEl, setFilterMenuAnchorEl] = useState<HTMLElement | null>(null);\n\n const handleClearSort = () => {\n column.clearSorting();\n setAnchorEl(null);\n };\n\n const handleSortAsc = () => {\n column.toggleSorting(false);\n setAnchorEl(null);\n };\n\n const handleSortDesc = () => {\n column.toggleSorting(true);\n setAnchorEl(null);\n };\n\n const handleResetColumnSize = () => {\n setColumnResizing((old) => ({ ...old, isResizingColumn: false }));\n column.resetSize();\n setAnchorEl(null);\n };\n\n const handleHideColumn = () => {\n column.toggleVisibility(false);\n setAnchorEl(null);\n };\n\n const handlePinColumn = (pinDirection: 'end' | 'start' | false) => {\n column.pin(pinDirection);\n setAnchorEl(null);\n };\n\n const handleGroupByColumn = () => {\n column.toggleGrouping();\n setColumnOrder((old) => ['mrt-row-expand', ...old]);\n setAnchorEl(null);\n };\n\n const handleClearFilter = () => {\n column.setFilterValue(undefined);\n setAnchorEl(null);\n if (['empty', 'notEmpty'].includes(currentFilterOption)) {\n setColumnFilterFns((prev) => ({\n ...prev,\n [header.id]: allowedColumnFilterOptions?.[0] ?? 'fuzzy',\n }));\n }\n };\n\n const handleFilterByColumn = () => {\n setShowColumnFilters(true);\n queueMicrotask(() => filterInputRefs.current?.[`${column.id}-0`]?.focus());\n setAnchorEl(null);\n };\n\n const handleShowAllColumns = () => {\n getAllLeafColumns()\n .filter((col) => col.columnDef.enableHiding !== false)\n .forEach((col) => col.toggleVisibility(true));\n setAnchorEl(null);\n };\n\n const handleOpenFilterModeMenu = (event: MouseEvent<HTMLElement>) => {\n event.stopPropagation();\n setFilterMenuAnchorEl(event.currentTarget);\n };\n\n const isSelectFilter = !!columnDef.filterSelectOptions;\n\n const { allowedColumnFilterOptions, currentFilterOption } = getColumnFilterInfo({ header, table });\n\n const showFilterModeSubMenu =\n enableColumnFilterModes &&\n columnDef.enableColumnFilterModes !== false &&\n !isSelectFilter &&\n (allowedColumnFilterOptions === undefined || !!allowedColumnFilterOptions?.length);\n\n const internalColumnMenuItems = [\n ...(enableSorting && column.getCanSort()\n ? [\n enableSortingRemoval !== false && (\n <MRT_ActionMenuItem\n disabled={column.getIsSorted() === false}\n icon={<ClearAllIcon />}\n key={0}\n label={localization.clearSort}\n onClick={handleClearSort}\n table={table}\n />\n ),\n <MRT_ActionMenuItem\n disabled={column.getIsSorted() === 'asc'}\n icon={<SortIcon style={{ transform: 'rotate(180deg) scaleX(-1)' }} />}\n key={1}\n label={localization.sortByColumnAsc?.replace('{column}', String(columnDef.header))}\n onClick={handleSortAsc}\n table={table}\n />,\n <MRT_ActionMenuItem\n disabled={column.getIsSorted() === 'desc'}\n divider={enableColumnFilters || enableGrouping || enableHiding}\n icon={<SortIcon />}\n key={2}\n label={localization.sortByColumnDesc?.replace('{column}', String(columnDef.header))}\n onClick={handleSortDesc}\n table={table}\n />,\n ]\n : []),\n ...(enableColumnFilters && column.getCanFilter()\n ? [\n <MRT_ActionMenuItem\n disabled={\n !columnFilterValue ||\n (Array.isArray(columnFilterValue) && !columnFilterValue.filter((value) => value).length)\n }\n icon={<FilterListOffIcon />}\n key={3}\n label={localization.clearFilter}\n onClick={handleClearFilter}\n table={table}\n />,\n columnFilterDisplayMode === 'subheader' && (\n <MRT_ActionMenuItem\n disabled={showColumnFilters && !enableColumnFilterModes}\n divider={enableGrouping || enableHiding}\n icon={<FilterListIcon />}\n key={4}\n label={localization.filterByColumn?.replace('{column}', String(columnDef.header))}\n onClick={showColumnFilters ? handleOpenFilterModeMenu : handleFilterByColumn}\n onOpenSubMenu={showFilterModeSubMenu ? handleOpenFilterModeMenu : undefined}\n table={table}\n />\n ),\n showFilterModeSubMenu && (\n <MRT_FilterOptionMenu\n anchorEl={filterMenuAnchorEl}\n header={header}\n key={5}\n onSelect={handleFilterByColumn}\n setAnchorEl={setFilterMenuAnchorEl}\n table={table}\n />\n ),\n ].filter(Boolean)\n : []),\n ...(enableGrouping && column.getCanGroup()\n ? [\n <MRT_ActionMenuItem\n divider={enableColumnPinning}\n icon={<DynamicFeedIcon />}\n key={6}\n label={localization[column.getIsGrouped() ? 'ungroupByColumn' : 'groupByColumn']?.replace(\n '{column}',\n String(columnDef.header),\n )}\n onClick={handleGroupByColumn}\n table={table}\n />,\n ]\n : []),\n ...(enableColumnPinning && column.getCanPin()\n ? [\n <MRT_ActionMenuItem\n disabled={column.getIsPinned() === 'start' || !column.getCanPin()}\n icon={<PushPinIcon style={{ transform: 'rotate(90deg)' }} />}\n key={7}\n label={localization.pinToLeft}\n onClick={() => handlePinColumn('start')}\n table={table}\n />,\n <MRT_ActionMenuItem\n disabled={column.getIsPinned() === 'end' || !column.getCanPin()}\n icon={<PushPinIcon style={{ transform: 'rotate(-90deg)' }} />}\n key={8}\n label={localization.pinToRight}\n onClick={() => handlePinColumn('end')}\n table={table}\n />,\n <MRT_ActionMenuItem\n disabled={!column.getIsPinned()}\n divider={enableHiding}\n icon={<PushPinIcon />}\n key={9}\n label={localization.unpin}\n onClick={() => handlePinColumn(false)}\n table={table}\n />,\n ]\n : []),\n ...(enableColumnResizing && column.getCanResize()\n ? [\n <MRT_ActionMenuItem\n disabled={columnSizing[column.id] === undefined}\n icon={<RestartAltIcon />}\n key={10}\n label={localization.resetColumnSize}\n onClick={handleResetColumnSize}\n table={table}\n />,\n ]\n : []),\n ...(enableHiding\n ? [\n <MRT_ActionMenuItem\n disabled={!column.getCanHide()}\n icon={<VisibilityOffIcon />}\n key={11}\n label={localization.hideColumn?.replace('{column}', String(columnDef.header))}\n onClick={handleHideColumn}\n table={table}\n />,\n <MRT_ActionMenuItem\n disabled={!Object.values(columnVisibility).filter((visible) => !visible).length}\n icon={<ViewColumnIcon />}\n key={12}\n label={localization.showAllColumns?.replace('{column}', String(columnDef.header))}\n onClick={handleShowAllColumns}\n table={table}\n />,\n ]\n : []),\n ].filter(Boolean);\n\n return (\n <Menu\n anchorEl={anchorEl}\n disableScrollLock\n onClose={() => setAnchorEl(null)}\n open={!!anchorEl}\n slotProps={{\n list: {\n dense: density === 'compact',\n sx: {\n backgroundColor: menuBackgroundColor,\n },\n },\n }}\n {...rest}\n >\n {columnDef.renderColumnActionsMenuItems?.({\n closeMenu: () => setAnchorEl(null),\n column,\n internalColumnMenuItems,\n table,\n }) ??\n renderColumnActionsMenuItems?.({\n closeMenu: () => setAnchorEl(null),\n column,\n internalColumnMenuItems,\n table,\n }) ??\n internalColumnMenuItems}\n </Menu>\n );\n};\n","import { IconButton, type IconButtonProps, Tooltip } from '@mui/material';\nimport { type CSSObject } from '@mui/material/styles';\nimport { type MouseEvent, useState } from 'react';\n\nimport { type MRT_Header, type MRT_RowData, type MRT_TableInstance } from '../../types';\nimport { getCommonTooltipProps } from '../../utils/style.utils';\nimport { parseFromValuesOrFunc } from '../../utils/utils';\nimport { MRT_ColumnActionMenu } from '../menus/MRT_ColumnActionMenu';\n\nexport interface MRT_TableHeadCellColumnActionsButtonProps<TData extends MRT_RowData> extends IconButtonProps {\n header: MRT_Header<TData>;\n table: MRT_TableInstance<TData>;\n}\n\nexport const MRT_TableHeadCellColumnActionsButton = <TData extends MRT_RowData>({\n header,\n table,\n ...rest\n}: MRT_TableHeadCellColumnActionsButtonProps<TData>): JSX.Element => {\n const {\n options: {\n icons: { MoreVertIcon },\n localization,\n muiColumnActionsButtonProps,\n },\n } = table;\n const { column } = header;\n const { columnDef } = column;\n\n const [anchorEl, setAnchorEl] = useState<HTMLElement | null>(null);\n\n const handleClick = (event: MouseEvent<HTMLElement>) => {\n event.stopPropagation();\n event.preventDefault();\n setAnchorEl(event.currentTarget);\n };\n\n const iconButtonProps = {\n ...parseFromValuesOrFunc(muiColumnActionsButtonProps, {\n column,\n table,\n }),\n ...parseFromValuesOrFunc(columnDef.muiColumnActionsButtonProps, {\n column,\n table,\n }),\n ...rest,\n };\n\n return (\n <>\n <Tooltip {...getCommonTooltipProps('top')} title={iconButtonProps?.title ?? localization.columnActions}>\n <IconButton\n aria-label={localization.columnActions}\n onClick={handleClick}\n size=\"small\"\n {...iconButtonProps}\n sx={(theme) => ({\n '&:hover': {\n opacity: 1,\n },\n height: '2rem',\n m: '-8px -4px',\n opacity: 0.3,\n transition: 'all 150ms',\n width: '2rem',\n ...(parseFromValuesOrFunc(iconButtonProps?.sx, theme) as CSSObject),\n })}\n title={undefined}\n >\n {iconButtonProps?.children ?? <MoreVertIcon style={{ transform: 'scale(0.9)' }} />}\n </IconButton>\n </Tooltip>\n {anchorEl && <MRT_ColumnActionMenu anchorEl={anchorEl} header={header} setAnchorEl={setAnchorEl} table={table} />}\n </>\n );\n};\n","import { Checkbox, type CheckboxProps, FormControlLabel, Tooltip } from '@mui/material';\nimport { type CSSObject } from '@mui/material/styles';\n\nimport { type MRT_Column, type MRT_RowData, type MRT_TableInstance } from '../../types';\nimport { getCommonTooltipProps } from '../../utils/style.utils';\nimport { parseFromValuesOrFunc } from '../../utils/utils';\n\nexport interface MRT_FilterCheckboxProps<TData extends MRT_RowData> extends CheckboxProps {\n column: MRT_Column<TData>;\n table: MRT_TableInstance<TData>;\n}\n\nexport const MRT_FilterCheckbox = <TData extends MRT_RowData>({\n column,\n table,\n ...rest\n}: MRT_FilterCheckboxProps<TData>): JSX.Element => {\n const {\n options: { localization, muiFilterCheckboxProps },\n } = table;\n const { density } = table.state;\n const { columnDef } = column;\n\n const checkboxProps = {\n ...parseFromValuesOrFunc(muiFilterCheckboxProps, {\n column,\n table,\n }),\n ...parseFromValuesOrFunc(columnDef.muiFilterCheckboxProps, {\n column,\n table,\n }),\n ...rest,\n };\n\n const filterLabel = localization.filterByColumn?.replace('{column}', columnDef.header);\n\n return (\n <Tooltip {...getCommonTooltipProps()} title={checkboxProps?.title ?? filterLabel}>\n <FormControlLabel\n control={\n <Checkbox\n checked={column.getFilterValue() === 'true'}\n color={column.getFilterValue() === undefined ? 'default' : 'primary'}\n indeterminate={column.getFilterValue() === undefined}\n size={density === 'compact' ? 'small' : 'medium'}\n {...checkboxProps}\n onChange={(e, checked) => {\n column.setFilterValue(\n column.getFilterValue() === undefined\n ? 'true'\n : column.getFilterValue() === 'true'\n ? 'false'\n : undefined,\n );\n checkboxProps?.onChange?.(e, checked);\n }}\n onClick={(e) => {\n e.stopPropagation();\n checkboxProps?.onClick?.(e);\n }}\n sx={(theme) => ({\n height: '2.5rem',\n width: '2.5rem',\n ...(parseFromValuesOrFunc(checkboxProps?.sx, theme) as CSSObject),\n })}\n />\n }\n disableTypography\n label={checkboxProps.title ?? filterLabel}\n sx={{ color: 'text.secondary', fontWeight: 'normal', mt: '-4px' }}\n title={undefined}\n />\n </Tooltip>\n );\n};\n","import {\n Autocomplete,\n type AutocompleteInputChangeReason,\n type AutocompleteRenderInputParams,\n Box,\n Checkbox,\n Chip,\n IconButton,\n InputAdornment,\n MenuItem,\n TextField,\n type TextFieldProps,\n Tooltip,\n} from '@mui/material';\nimport { type CSSObject } from '@mui/material/styles';\nimport { debounce } from '@mui/material/utils';\nimport { DatePicker } from '@mui/x-date-pickers/DatePicker';\nimport { DateTimePicker } from '@mui/x-date-pickers/DateTimePicker';\nimport { type PickersTextFieldProps } from '@mui/x-date-pickers/PickersTextField';\nimport { TimePicker } from '@mui/x-date-pickers/TimePicker';\nimport { type ChangeEvent, type MouseEvent, type SyntheticEvent, useEffect, useRef, useState } from 'react';\n\nimport { type DropdownOption, type MRT_Header, type MRT_RowData, type MRT_TableInstance } from '../../types';\nimport { getColumnFilterInfo, getFilterOptionLabel, useDropdownOptions } from '../../utils/column.utils';\nimport { getTextFieldSlotProps } from '../../utils/slotProps.utils';\nimport { getValueAndLabel, parseFromValuesOrFunc } from '../../utils/utils';\nimport { MRT_FilterOptionMenu } from '../menus/MRT_FilterOptionMenu';\n\ntype MRT_FilterInputValue = (number | string)[] | Date | number | string | null;\n\nexport interface MRT_FilterTextFieldProps<TData extends MRT_RowData> extends TextFieldProps<'standard'> {\n header: MRT_Header<TData>;\n rangeFilterIndex?: number;\n table: MRT_TableInstance<TData>;\n}\n\nexport const MRT_FilterTextField = <TData extends MRT_RowData>({\n header,\n rangeFilterIndex,\n table,\n ...rest\n}: MRT_FilterTextFieldProps<TData>): JSX.Element => {\n const {\n options: {\n enableColumnFilterModes,\n icons: { CloseIcon, FilterListIcon },\n localization,\n manualFiltering,\n muiFilterAutocompleteProps,\n muiFilterDatePickerProps,\n muiFilterDateTimePickerProps,\n muiFilterTextFieldProps,\n muiFilterTimePickerProps,\n },\n refs: { filterInputRefs },\n setColumnFilterFns,\n } = table;\n const { column } = header;\n const { columnDef } = column;\n const { filterVariant } = columnDef;\n\n const args = { column, rangeFilterIndex, table };\n\n const textFieldProps = {\n ...parseFromValuesOrFunc(muiFilterTextFieldProps, args),\n ...parseFromValuesOrFunc(columnDef.muiFilterTextFieldProps, args),\n ...rest,\n };\n\n const autocompleteProps = {\n ...parseFromValuesOrFunc(muiFilterAutocompleteProps, args),\n ...parseFromValuesOrFunc(columnDef.muiFilterAutocompleteProps, args),\n };\n\n const datePickerProps = {\n ...parseFromValuesOrFunc(muiFilterDatePickerProps, args),\n ...parseFromValuesOrFunc(columnDef.muiFilterDatePickerProps, args),\n };\n\n const dateTimePickerProps = {\n ...parseFromValuesOrFunc(muiFilterDateTimePickerProps, args),\n ...parseFromValuesOrFunc(columnDef.muiFilterDateTimePickerProps, args),\n };\n\n const timePickerProps = {\n ...parseFromValuesOrFunc(muiFilterTimePickerProps, args),\n ...parseFromValuesOrFunc(columnDef.muiFilterTimePickerProps, args),\n };\n\n const {\n allowedColumnFilterOptions,\n currentFilterOption,\n facetedUniqueValues,\n isAutocompleteFilter,\n isDateFilter,\n isMultiSelectFilter,\n isRangeFilter,\n isSelectFilter,\n isTextboxFilter,\n } = getColumnFilterInfo({ header, table });\n\n const dropdownOptions = useDropdownOptions({ header, table });\n\n const filterChipLabel = ['empty', 'notEmpty'].includes(currentFilterOption)\n ? getFilterOptionLabel(localization, currentFilterOption)\n : '';\n\n const filterPlaceholder = !isRangeFilter\n ? (textFieldProps?.placeholder ?? localization.filterByColumn?.replace('{column}', String(columnDef.header)))\n : rangeFilterIndex === 0\n ? localization.min\n : rangeFilterIndex === 1\n ? localization.max\n : '';\n\n const showChangeModeButton = !!(\n enableColumnFilterModes &&\n columnDef.enableColumnFilterModes !== false &&\n !rangeFilterIndex &&\n (allowedColumnFilterOptions === undefined || !!allowedColumnFilterOptions?.length)\n );\n\n const [anchorEl, setAnchorEl] = useState<HTMLElement | null>(null);\n const [filterValue, setFilterValue] = useState<MRT_FilterInputValue>(() =>\n isMultiSelectFilter\n ? (column.getFilterValue() as string[]) || []\n : isRangeFilter\n ? (column.getFilterValue() as [string, string])?.[rangeFilterIndex as number] || ''\n : isAutocompleteFilter\n ? typeof column.getFilterValue() === 'string'\n ? (column.getFilterValue() as string)\n : ''\n : ((column.getFilterValue() as string) ?? ''),\n );\n const [autocompleteValue, setAutocompleteValue] = useState<DropdownOption | null>(() =>\n isAutocompleteFilter ? ((column.getFilterValue() || null) as DropdownOption | null) : null,\n );\n\n const [handleChangeDebounced] = useState(() =>\n debounce(\n (newValue: unknown) => {\n if (isRangeFilter) {\n column.setFilterValue((old: unknown[]) => {\n const newFilterValues = old ?? ['', ''];\n newFilterValues[rangeFilterIndex as number] = newValue ?? undefined;\n return newFilterValues;\n });\n } else {\n column.setFilterValue(newValue ?? undefined);\n }\n },\n isTextboxFilter ? (manualFiltering ? 400 : 200) : 1,\n ),\n );\n\n const handleChange = (newValue: MRT_FilterInputValue) => {\n setFilterValue(newValue ?? '');\n handleChangeDebounced(newValue);\n };\n\n const handleTextFieldChange = (event: ChangeEvent<HTMLInputElement>) => {\n const newValue =\n textFieldProps.type === 'date'\n ? event.target.valueAsDate\n : textFieldProps.type === 'number'\n ? event.target.valueAsNumber\n : event.target.value;\n handleChange(newValue);\n textFieldProps?.onChange?.(event);\n };\n\n const handleAutocompleteInputChange = (\n _event: SyntheticEvent,\n newValue: string,\n _reason: AutocompleteInputChangeReason,\n ) => {\n handleChange(newValue);\n };\n\n const handleAutocompleteChange = (newValue: DropdownOption | null) => {\n setAutocompleteValue(newValue);\n handleChangeDebounced(getValueAndLabel(newValue).value);\n };\n\n const handleClear = () => {\n if (isMultiSelectFilter) {\n setFilterValue([]);\n column.setFilterValue([]);\n } else if (isRangeFilter) {\n setFilterValue('');\n column.setFilterValue((old: [string | undefined, string | undefined]) => {\n const newFilterValues = (Array.isArray(old) && old) || ['', ''];\n newFilterValues[rangeFilterIndex as number] = undefined;\n return newFilterValues;\n });\n } else if (isAutocompleteFilter) {\n setAutocompleteValue(null);\n setFilterValue('');\n // when using 'autocomplete' this function is called only inside effect and only if the filterValue === undefined\n // so the following call is excessive; should be uncommented if the handleClear becomes part of the Autocomplete component callbacks\n // column.setFilterValue(undefined)\n } else {\n setFilterValue('');\n column.setFilterValue(undefined);\n }\n };\n\n const handleClearEmptyFilterChip = () => {\n setFilterValue('');\n column.setFilterValue(undefined);\n setColumnFilterFns((prev) => ({\n ...prev,\n [header.id]: allowedColumnFilterOptions?.[0] ?? 'fuzzy',\n }));\n };\n\n const handleFilterMenuOpen = (event: MouseEvent<HTMLElement>) => {\n setAnchorEl(event.currentTarget);\n };\n\n const isMounted = useRef(false);\n const handleClearRef = useRef(handleClear);\n const columnFilterValue = column.getFilterValue();\n\n useEffect(() => {\n handleClearRef.current = handleClear;\n });\n\n useEffect(() => {\n if (isMounted.current) {\n const filterValue = columnFilterValue;\n if (filterValue === undefined) {\n handleClearRef.current();\n } else if (isRangeFilter && rangeFilterIndex !== undefined) {\n setFilterValue((filterValue as [string, string])[rangeFilterIndex]);\n } else {\n setFilterValue(filterValue as string);\n }\n }\n isMounted.current = true;\n }, [columnFilterValue, isRangeFilter, rangeFilterIndex]);\n\n if (columnDef.Filter) {\n return <>{columnDef.Filter?.({ column, header, rangeFilterIndex, table })}</>;\n }\n\n const endAdornment =\n !isAutocompleteFilter && !isDateFilter && !filterChipLabel ? (\n <InputAdornment\n position=\"end\"\n sx={{\n mr: isSelectFilter || isMultiSelectFilter ? '20px' : undefined,\n visibility:\n (typeof filterValue === 'string' || Array.isArray(filterValue)) && filterValue.length > 0\n ? 'visible'\n : 'hidden',\n }}\n >\n <Tooltip placement=\"right\" title={localization.clearFilter ?? ''}>\n <span>\n <IconButton\n aria-label={localization.clearFilter}\n disabled={!filterValue?.toString()?.length}\n onClick={handleClear}\n size=\"small\"\n sx={{\n height: '2rem',\n transform: 'scale(0.9)',\n width: '2rem',\n }}\n >\n <CloseIcon />\n </IconButton>\n </span>\n </Tooltip>\n </InputAdornment>\n ) : null;\n\n const startAdornment = showChangeModeButton ? (\n <InputAdornment position=\"start\">\n <Tooltip title={localization.changeFilterMode}>\n <span>\n <IconButton\n aria-label={localization.changeFilterMode}\n onClick={handleFilterMenuOpen}\n size=\"small\"\n sx={{ height: '1.75rem', width: '1.75rem' }}\n >\n <FilterListIcon />\n </IconButton>\n </span>\n </Tooltip>\n {filterChipLabel && <Chip label={filterChipLabel} onDelete={handleClearEmptyFilterChip} />}\n </InputAdornment>\n ) : null;\n\n const commonTextFieldProps: TextFieldProps = {\n fullWidth: true,\n helperText: showChangeModeButton ? (\n <label>\n {localization.filterMode.replace('{filterType}', getFilterOptionLabel(localization, currentFilterOption))}\n </label>\n ) : null,\n inputRef: (inputRef) => {\n filterInputRefs.current![`${column.id}-${rangeFilterIndex ?? 0}`] = inputRef;\n if (textFieldProps.inputRef) {\n textFieldProps.inputRef = inputRef;\n }\n },\n margin: 'none',\n placeholder: filterChipLabel || isSelectFilter || isMultiSelectFilter ? undefined : filterPlaceholder,\n variant: 'standard',\n ...textFieldProps,\n onKeyDown: (e) => {\n e.stopPropagation();\n textFieldProps.onKeyDown?.(e);\n },\n slotProps: {\n ...textFieldProps.slotProps,\n formHelperText: {\n sx: {\n fontSize: '0.75rem',\n lineHeight: '0.8rem',\n whiteSpace: 'nowrap',\n },\n ...textFieldProps.slotProps?.formHelperText,\n },\n htmlInput: {\n 'aria-label': filterPlaceholder,\n autoComplete: 'off',\n disabled: !!filterChipLabel,\n sx: {\n textOverflow: 'ellipsis',\n width: filterChipLabel ? 0 : undefined,\n },\n title: filterPlaceholder,\n ...textFieldProps.slotProps?.htmlInput,\n },\n input: endAdornment //hack because mui looks for presence of endAdornment key instead of undefined\n ? { endAdornment, startAdornment, ...textFieldProps.slotProps?.input }\n : { startAdornment, ...textFieldProps.slotProps?.input },\n },\n sx: (theme) => ({\n minWidth: isDateFilter\n ? '160px'\n : enableColumnFilterModes && rangeFilterIndex === 0\n ? '110px'\n : isRangeFilter\n ? '100px'\n : !filterChipLabel\n ? '120px'\n : 'auto',\n mx: '-2px',\n p: 0,\n width: 'calc(100% + 4px)',\n ...(parseFromValuesOrFunc(textFieldProps?.sx, theme) as CSSObject),\n }),\n };\n\n const commonDatePickerProps = {\n onChange: (newDate: Date | null) => {\n handleChange(newDate);\n },\n value: filterValue || null,\n };\n\n return (\n <>\n {filterVariant?.startsWith('time') ? (\n <TimePicker\n {...commonDatePickerProps}\n {...timePickerProps}\n slotProps={{\n ...timePickerProps?.slotProps,\n field: {\n clearable: true,\n onClear: () => handleClear(),\n ...timePickerProps?.slotProps?.field,\n },\n textField: {\n ...(commonTextFieldProps as PickersTextFieldProps),\n ...timePickerProps?.slotProps?.textField,\n },\n }}\n />\n ) : filterVariant?.startsWith('datetime') ? (\n <DateTimePicker\n {...commonDatePickerProps}\n {...dateTimePickerProps}\n slotProps={{\n ...dateTimePickerProps?.slotProps,\n field: {\n clearable: true,\n onClear: () => handleClear(),\n ...dateTimePickerProps?.slotProps?.field,\n },\n textField: {\n ...(commonTextFieldProps as PickersTextFieldProps),\n ...dateTimePickerProps?.slotProps?.textField,\n },\n }}\n />\n ) : filterVariant?.startsWith('date') ? (\n <DatePicker\n {...commonDatePickerProps}\n {...datePickerProps}\n slotProps={{\n ...datePickerProps?.slotProps,\n field: {\n clearable: true,\n onClear: () => handleClear(),\n ...datePickerProps?.slotProps?.field,\n },\n textField: {\n ...(commonTextFieldProps as PickersTextFieldProps),\n ...datePickerProps?.slotProps?.textField,\n },\n }}\n />\n ) : isAutocompleteFilter ? (\n <Autocomplete\n freeSolo\n getOptionLabel={(option: DropdownOption) => getValueAndLabel(option).label}\n inputValue={filterValue as string}\n onChange={(_e, newValue) => handleAutocompleteChange(newValue as DropdownOption | null)}\n onInputChange={handleAutocompleteInputChange}\n options={dropdownOptions?.map((option) => getValueAndLabel(option)) ?? []}\n {...autocompleteProps}\n renderInput={(params: AutocompleteRenderInputParams) => {\n const commonInput = getTextFieldSlotProps(commonTextFieldProps.slotProps).input;\n const commonHtmlInput = getTextFieldSlotProps(commonTextFieldProps.slotProps).htmlInput;\n return (\n <TextField\n {...commonTextFieldProps}\n disabled={params.disabled}\n fullWidth={params.fullWidth}\n id={params.id}\n onClick={(e: MouseEvent<HTMLInputElement>) => e.stopPropagation()}\n size={params.size}\n slotProps={{\n ...commonTextFieldProps.slotProps,\n htmlInput: {\n ...params.slotProps.htmlInput,\n ...commonHtmlInput,\n },\n input: {\n ...params.slotProps.input,\n startAdornment: commonInput?.startAdornment,\n },\n inputLabel: params.slotProps.inputLabel,\n }}\n />\n );\n }}\n value={autocompleteValue}\n />\n ) : (\n <TextField\n select={isSelectFilter || isMultiSelectFilter}\n {...commonTextFieldProps}\n onChange={handleTextFieldChange}\n onClick={(e: MouseEvent<HTMLInputElement>) => e.stopPropagation()}\n slotProps={{\n ...commonTextFieldProps.slotProps,\n inputLabel: {\n shrink: isSelectFilter || isMultiSelectFilter,\n ...commonTextFieldProps.slotProps?.inputLabel,\n },\n select: {\n displayEmpty: true,\n MenuProps: { disableScrollLock: true },\n multiple: isMultiSelectFilter,\n renderValue: isMultiSelectFilter\n ? (selected: unknown) =>\n !Array.isArray(selected) || selected?.length === 0 ? (\n <Box sx={{ opacity: 0.5 }}>{filterPlaceholder}</Box>\n ) : (\n <Box sx={{ display: 'flex', flexWrap: 'wrap', gap: '2px' }}>\n {selected.map((value: string) => {\n const selectedValue = dropdownOptions?.find(\n (option) => getValueAndLabel(option).value === value,\n );\n return <Chip key={value} label={getValueAndLabel(selectedValue).label} />;\n })}\n </Box>\n )\n : undefined,\n ...commonTextFieldProps.slotProps?.select,\n },\n }}\n value={isMultiSelectFilter ? (Array.isArray(filterValue) ? filterValue : []) : filterValue}\n >\n {(isSelectFilter || isMultiSelectFilter) && [\n <MenuItem disabled divider hidden key=\"p\" value=\"\">\n <Box sx={{ opacity: 0.5 }}>{filterPlaceholder}</Box>\n </MenuItem>,\n ...[\n textFieldProps.children ??\n dropdownOptions?.map((option, index) => {\n const { label, value } = getValueAndLabel(option);\n return (\n <MenuItem\n key={`${index}-${value}`}\n sx={{\n alignItems: 'center',\n display: 'flex',\n gap: '0.5rem',\n m: 0,\n }}\n value={value}\n >\n {isMultiSelectFilter && (\n <Checkbox\n checked={((column.getFilterValue() ?? []) as (number | string)[]).includes(value)}\n sx={{ mr: '0.5rem' }}\n />\n )}\n {label} {!columnDef.filterSelectOptions && `(${facetedUniqueValues.get(value)})`}\n </MenuItem>\n );\n }),\n ],\n ]}\n </TextField>\n )}\n <MRT_FilterOptionMenu\n anchorEl={anchorEl}\n header={header}\n setAnchorEl={setAnchorEl}\n setFilterValue={setFilterValue}\n table={table}\n />\n </>\n );\n};\n","import { Box, type BoxProps } from '@mui/material';\nimport { type CSSObject } from '@mui/material/styles';\n\nimport { type MRT_Header, type MRT_RowData, type MRT_TableInstance } from '../../types';\nimport { parseFromValuesOrFunc } from '../../utils/utils';\nimport { MRT_FilterTextField } from './MRT_FilterTextField';\n\nexport interface MRT_FilterRangeFieldsProps<TData extends MRT_RowData> extends BoxProps {\n header: MRT_Header<TData>;\n table: MRT_TableInstance<TData>;\n}\n\nexport const MRT_FilterRangeFields = <TData extends MRT_RowData>({\n header,\n table,\n ...rest\n}: MRT_FilterRangeFieldsProps<TData>): JSX.Element => {\n return (\n <Box\n {...rest}\n sx={(theme) => ({\n display: 'grid',\n gap: '1rem',\n gridTemplateColumns: '1fr 1fr',\n ...(parseFromValuesOrFunc(rest?.sx, theme) as CSSObject),\n })}\n >\n {[0, 1].map((rangeFilterIndex) => (\n <MRT_FilterTextField header={header} key={rangeFilterIndex} rangeFilterIndex={rangeFilterIndex} table={table} />\n ))}\n </Box>\n );\n};\n","import { FormHelperText, Slider, type SliderProps, Stack } from '@mui/material';\nimport { type CSSObject } from '@mui/material/styles';\nimport { useEffect, useRef, useState } from 'react';\n\nimport { type MRT_Header, type MRT_RowData, type MRT_TableInstance } from '../../types';\nimport { getColumnFilterInfo, getFilterOptionLabel } from '../../utils/column.utils';\nimport { parseFromValuesOrFunc } from '../../utils/utils';\n\nexport interface MRT_FilterRangeSliderProps<TData extends MRT_RowData> extends SliderProps {\n header: MRT_Header<TData>;\n table: MRT_TableInstance<TData>;\n}\n\nexport const MRT_FilterRangeSlider = <TData extends MRT_RowData>({\n header,\n table,\n ...rest\n}: MRT_FilterRangeSliderProps<TData>): JSX.Element => {\n const {\n options: { enableColumnFilterModes, localization, muiFilterSliderProps },\n refs: { filterInputRefs },\n } = table;\n const { column } = header;\n const { columnDef } = column;\n\n const { currentFilterOption } = getColumnFilterInfo({ header, table });\n\n const showChangeModeButton = enableColumnFilterModes && columnDef.enableColumnFilterModes !== false;\n\n const sliderProps = {\n ...parseFromValuesOrFunc(muiFilterSliderProps, { column, table }),\n ...parseFromValuesOrFunc(columnDef.muiFilterSliderProps, { column, table }),\n ...rest,\n };\n\n let [min, max] =\n sliderProps.min !== undefined && sliderProps.max !== undefined\n ? [sliderProps.min, sliderProps.max]\n : (column.getFacetedMinMaxValues() ?? [0, 1]);\n\n //fix potential TanStack Table bugs where min or max is an array\n if (Array.isArray(min)) {\n min = min[0];\n }\n if (Array.isArray(max)) {\n max = max[0];\n }\n if (min === null) {\n min = 0;\n }\n if (max === null) {\n max = 1;\n }\n\n const [filterValues, setFilterValues] = useState([min, max]);\n const columnFilterValue = column.getFilterValue();\n\n const isMounted = useRef(false);\n\n // prevent moving the focus to the next/prev cell when using the arrow keys\n const handleKeyDown = (event: React.KeyboardEvent) => {\n if (event.key === 'ArrowLeft' || event.key === 'ArrowRight') {\n event.stopPropagation();\n }\n };\n\n useEffect(() => {\n if (isMounted.current) {\n if (columnFilterValue === undefined) {\n setFilterValues([min, max]);\n } else if (Array.isArray(columnFilterValue)) {\n setFilterValues(columnFilterValue);\n }\n }\n isMounted.current = true;\n }, [columnFilterValue, min, max]);\n\n return (\n <Stack>\n <Slider\n disableSwap\n max={max}\n min={min}\n onChange={(_event, values) => {\n setFilterValues(values as [number, number]);\n }}\n onChangeCommitted={(_event, value) => {\n if (Array.isArray(value)) {\n if (value[0] <= min && value[1] >= max) {\n //if the user has selected the entire range, remove the filter\n column.setFilterValue(undefined);\n } else {\n column.setFilterValue(value as [number, number]);\n }\n }\n }}\n onKeyDown={handleKeyDown}\n value={filterValues}\n valueLabelDisplay=\"auto\"\n {...sliderProps}\n slotProps={{\n input: {\n ref: (node) => {\n if (node) {\n filterInputRefs.current![`${column.id}-0`] = node;\n const inputSlot = sliderProps?.slotProps?.input;\n if (inputSlot && typeof inputSlot === 'object' && inputSlot.ref && typeof inputSlot.ref === 'object') {\n inputSlot.ref.current = node;\n }\n }\n },\n },\n }}\n sx={(theme) => ({\n m: 'auto',\n minWidth: `${column.getSize() - 50}px`,\n mt: !showChangeModeButton ? '10px' : '6px',\n px: '4px',\n width: 'calc(100% - 8px)',\n ...(parseFromValuesOrFunc(sliderProps?.sx, theme) as CSSObject),\n })}\n />\n {showChangeModeButton ? (\n <FormHelperText\n sx={{\n fontSize: '0.75rem',\n lineHeight: '0.8rem',\n m: '-3px -6px',\n whiteSpace: 'nowrap',\n }}\n >\n {localization.filterMode.replace('{filterType}', getFilterOptionLabel(localization, currentFilterOption))}\n </FormHelperText>\n ) : null}\n </Stack>\n );\n};\n","import { Collapse, type CollapseProps } from '@mui/material';\n\nimport { type MRT_Header, type MRT_RowData, type MRT_TableInstance } from '../../types';\nimport { getColumnFilterInfo } from '../../utils/column.utils';\nimport { MRT_FilterCheckbox } from '../inputs/MRT_FilterCheckbox';\nimport { MRT_FilterRangeFields } from '../inputs/MRT_FilterRangeFields';\nimport { MRT_FilterRangeSlider } from '../inputs/MRT_FilterRangeSlider';\nimport { MRT_FilterTextField } from '../inputs/MRT_FilterTextField';\n\nexport interface MRT_TableHeadCellFilterContainerProps<TData extends MRT_RowData> extends CollapseProps {\n header: MRT_Header<TData>;\n table: MRT_TableInstance<TData>;\n}\n\nexport const MRT_TableHeadCellFilterContainer = <TData extends MRT_RowData>({\n header,\n table,\n ...rest\n}: MRT_TableHeadCellFilterContainerProps<TData>): JSX.Element => {\n const {\n options: { columnFilterDisplayMode },\n } = table;\n const { showColumnFilters } = table.state;\n const { column } = header;\n const { columnDef } = column;\n const { isRangeFilter } = getColumnFilterInfo({ header, table });\n\n return (\n <Collapse in={showColumnFilters || columnFilterDisplayMode === 'popover'} mountOnEnter unmountOnExit {...rest}>\n {columnDef.filterVariant === 'checkbox' ? (\n <MRT_FilterCheckbox column={column} table={table} />\n ) : columnDef.filterVariant === 'range-slider' ? (\n <MRT_FilterRangeSlider header={header} table={table} />\n ) : isRangeFilter ? (\n <MRT_FilterRangeFields header={header} table={table} />\n ) : (\n <MRT_FilterTextField header={header} table={table} />\n )}\n </Collapse>\n );\n};\n","import { Box, Grow, IconButton, type IconButtonProps, Popover, Tooltip } from '@mui/material';\nimport { type CSSObject } from '@mui/material/styles';\nimport { type MouseEvent, useState } from 'react';\n\nimport { type MRT_Header, type MRT_RowData, type MRT_TableInstance } from '../../types';\nimport { getColumnFilterInfo, getFilterOptionLabel, useDropdownOptions } from '../../utils/column.utils';\nimport { getValueAndLabel, parseFromValuesOrFunc } from '../../utils/utils';\nimport { MRT_TableHeadCellFilterContainer } from './MRT_TableHeadCellFilterContainer';\n\nexport interface MRT_TableHeadCellFilterLabelProps<TData extends MRT_RowData> extends IconButtonProps {\n header: MRT_Header<TData>;\n table: MRT_TableInstance<TData>;\n}\n\nexport const MRT_TableHeadCellFilterLabel = <TData extends MRT_RowData = MRT_RowData>({\n header,\n table,\n ...rest\n}: MRT_TableHeadCellFilterLabelProps<TData>): JSX.Element => {\n const {\n options: {\n columnFilterDisplayMode,\n icons: { FilterAltIcon },\n localization,\n },\n refs: { filterInputRefs },\n setShowColumnFilters,\n } = table;\n const { column } = header;\n const { columnDef } = column;\n\n const filterValue = column.getFilterValue() as [string, string] | string;\n\n const [anchorEl, setAnchorEl] = useState<HTMLButtonElement | null>(null);\n\n const { currentFilterOption, isMultiSelectFilter, isRangeFilter, isSelectFilter } = getColumnFilterInfo({\n header,\n table,\n });\n\n const dropdownOptions = useDropdownOptions({ header, table });\n\n const getSelectLabel = (index?: number) =>\n getValueAndLabel(\n dropdownOptions?.find(\n (option) => getValueAndLabel(option).value === (index !== undefined ? filterValue[index] : filterValue),\n ),\n ).label;\n\n const isFilterActive =\n (Array.isArray(filterValue) && filterValue.some(Boolean)) || (!!filterValue && !Array.isArray(filterValue));\n\n const filterTooltip =\n columnFilterDisplayMode === 'popover' && !isFilterActive\n ? localization.filterByColumn?.replace('{column}', String(columnDef.header))\n : localization.filteringByColumn\n .replace('{column}', String(columnDef.header))\n .replace('{filterType}', currentFilterOption ? getFilterOptionLabel(localization, currentFilterOption) : '')\n .replace(\n '{filterValue}',\n `\"${\n Array.isArray(filterValue)\n ? (filterValue as [string, string])\n .map((value, index) => (isMultiSelectFilter ? getSelectLabel(index) : value))\n .join(`\" ${isRangeFilter ? localization.and : localization.or} \"`)\n : isSelectFilter\n ? getSelectLabel()\n : (filterValue as string)\n }\"`,\n )\n .replace('\" \"', '');\n\n return (\n <>\n <Grow\n in={\n columnFilterDisplayMode === 'popover' ||\n (!!filterValue && !isRangeFilter) ||\n (isRangeFilter && (!!filterValue?.[0] || !!filterValue?.[1]))\n }\n unmountOnExit\n >\n <Box component=\"span\" sx={{ flex: '0 0' }}>\n <Tooltip placement=\"top\" title={filterTooltip}>\n <IconButton\n disableRipple\n onClick={(event: MouseEvent<HTMLButtonElement>) => {\n if (columnFilterDisplayMode === 'popover') {\n setAnchorEl(event.currentTarget);\n } else {\n setShowColumnFilters(true);\n }\n queueMicrotask(() => {\n filterInputRefs.current?.[`${column.id}-0`]?.focus?.();\n filterInputRefs.current?.[`${column.id}-0`]?.select?.();\n });\n event.stopPropagation();\n }}\n size=\"small\"\n {...rest}\n sx={(theme) => ({\n height: '16px',\n ml: '4px',\n opacity: isFilterActive ? 1 : 0.3,\n p: '8px',\n transform: 'scale(0.75)',\n transition: 'all 150ms ease-in-out',\n width: '16px',\n ...(parseFromValuesOrFunc(rest?.sx, theme) as CSSObject),\n })}\n >\n <FilterAltIcon />\n </IconButton>\n </Tooltip>\n </Box>\n </Grow>\n {columnFilterDisplayMode === 'popover' && (\n <Popover\n anchorEl={anchorEl}\n anchorOrigin={{\n horizontal: 'center',\n vertical: 'top',\n }}\n disableScrollLock\n onClick={(event) => event.stopPropagation()}\n onClose={(event: { stopPropagation?: () => void }) => {\n event.stopPropagation?.();\n setAnchorEl(null);\n }}\n onKeyDown={(event) => event.key === 'Enter' && setAnchorEl(null)}\n open={!!anchorEl}\n slotProps={{ paper: { sx: { overflow: 'visible' } } }}\n transformOrigin={{\n horizontal: 'center',\n vertical: 'bottom',\n }}\n >\n <Box sx={{ p: '1rem' }}>\n <MRT_TableHeadCellFilterContainer header={header} table={table} />\n </Box>\n </Popover>\n )}\n </>\n );\n};\n","import { type IconButtonProps } from '@mui/material/IconButton';\nimport { type DragEvent, type RefObject } from 'react';\n\nimport { type MRT_Column, type MRT_RowData, type MRT_TableInstance } from '../../types';\nimport { moveColumn } from '../../utils/column.utils';\nimport { parseFromValuesOrFunc } from '../../utils/utils';\nimport { MRT_GrabHandleButton } from '../buttons/MRT_GrabHandleButton';\n\nexport interface MRT_TableHeadCellGrabHandleProps<TData extends MRT_RowData> extends IconButtonProps {\n column: MRT_Column<TData>;\n table: MRT_TableInstance<TData>;\n tableHeadCellRef: RefObject<HTMLTableCellElement | null>;\n}\n\nexport const MRT_TableHeadCellGrabHandle = <TData extends MRT_RowData>({\n column,\n table,\n tableHeadCellRef,\n ...rest\n}: MRT_TableHeadCellGrabHandleProps<TData>): JSX.Element => {\n const {\n options: { enableColumnOrdering, muiColumnDragHandleProps },\n setDraggingColumn,\n setHoveredColumn,\n } = table;\n const { columnDef } = column;\n const { draggingColumn, hoveredColumn } = table.state;\n\n const iconButtonProps = {\n ...parseFromValuesOrFunc(muiColumnDragHandleProps, { column, table }),\n ...parseFromValuesOrFunc(columnDef.muiColumnDragHandleProps, {\n column,\n table,\n }),\n ...rest,\n };\n\n const handleDragStart = (event: DragEvent<HTMLButtonElement>) => {\n iconButtonProps?.onDragStart?.(event);\n setDraggingColumn(column);\n try {\n event.dataTransfer.setDragImage(tableHeadCellRef.current as HTMLElement, 0, 0);\n } catch (e) {\n console.error(e);\n }\n };\n\n const handleDragEnd = (event: DragEvent<HTMLButtonElement>) => {\n iconButtonProps?.onDragEnd?.(event);\n if (hoveredColumn?.id === 'drop-zone') {\n column.toggleGrouping();\n } else if (enableColumnOrdering && hoveredColumn && hoveredColumn?.id !== draggingColumn?.id) {\n moveColumn(table, column, hoveredColumn as MRT_Column<TData>);\n }\n setDraggingColumn(null);\n setHoveredColumn(null);\n };\n\n return (\n <MRT_GrabHandleButton {...iconButtonProps} onDragEnd={handleDragEnd} onDragStart={handleDragStart} table={table} />\n );\n};\n","import { Box, Divider, type DividerProps } from '@mui/material';\nimport { type CSSObject } from '@mui/material/styles';\n\nimport { type MRT_Header, type MRT_RowData, type MRT_TableInstance } from '../../types';\nimport { parseFromValuesOrFunc } from '../../utils/utils';\n\nexport interface MRT_TableHeadCellResizeHandleProps<TData extends MRT_RowData> extends DividerProps {\n header: MRT_Header<TData>;\n table: MRT_TableInstance<TData>;\n}\n\nexport const MRT_TableHeadCellResizeHandle = <TData extends MRT_RowData>({\n header,\n table,\n ...rest\n}: MRT_TableHeadCellResizeHandleProps<TData>): JSX.Element => {\n const {\n options: { columnResizeDirection, columnResizeMode },\n setColumnResizing,\n } = table;\n const { density } = table.state;\n const { column } = header;\n\n const handler = header.getResizeHandler();\n\n const mx = density === 'compact' ? '-8px' : density === 'comfortable' ? '-16px' : '-24px';\n\n const lr = column.columnDef.columnDefType === 'display' ? '4px' : '0';\n\n return (\n <Box\n className=\"Mui-TableHeadCell-ResizeHandle-Wrapper\"\n onDoubleClick={() => {\n setColumnResizing((old) => ({\n ...old,\n isResizingColumn: false,\n }));\n column.resetSize();\n }}\n onMouseDown={handler}\n onTouchStart={handler}\n style={{\n transform:\n column.getIsResizing() && columnResizeMode === 'onEnd'\n ? `translateX(${\n (columnResizeDirection === 'rtl' ? -1 : 1) * (table.state.columnResizing.deltaOffset ?? 0)\n }px)`\n : undefined,\n }}\n sx={(theme) => ({\n '&:active > hr': {\n backgroundColor: theme.palette.info.main,\n opacity: header.subHeaders.length || columnResizeMode === 'onEnd' ? 1 : 0,\n },\n cursor: 'col-resize',\n left: columnResizeDirection === 'rtl' ? lr : undefined,\n ml: columnResizeDirection === 'rtl' ? mx : undefined,\n mr: columnResizeDirection === 'ltr' ? mx : undefined,\n position: 'absolute',\n px: '4px',\n right: columnResizeDirection === 'ltr' ? lr : undefined,\n })}\n >\n <Divider\n className=\"Mui-TableHeadCell-ResizeHandle-Divider\"\n flexItem\n orientation=\"vertical\"\n sx={(theme) => ({\n borderRadius: '2px',\n borderWidth: '2px',\n height: '24px',\n touchAction: 'none',\n transform: 'translateX(4px)',\n transition: column.getIsResizing() ? undefined : 'all 150ms ease-in-out',\n userSelect: 'none',\n zIndex: 4,\n ...(parseFromValuesOrFunc(rest?.sx, theme) as CSSObject),\n })}\n />\n </Box>\n );\n};\n","import { Badge, TableSortLabel, type TableSortLabelProps, Tooltip } from '@mui/material';\nimport { type CSSObject } from '@mui/material/styles';\n\nimport { type MRT_Header, type MRT_RowData, type MRT_TableInstance } from '../../types';\nimport { parseFromValuesOrFunc } from '../../utils/utils';\n\nexport interface MRT_TableHeadCellSortLabelProps<TData extends MRT_RowData> extends TableSortLabelProps {\n header: MRT_Header<TData>;\n table: MRT_TableInstance<TData>;\n}\n\nexport const MRT_TableHeadCellSortLabel = <TData extends MRT_RowData>({\n header,\n table,\n ...rest\n}: MRT_TableHeadCellSortLabelProps<TData>): JSX.Element => {\n const {\n options: {\n icons: { ArrowDownwardIcon, SyncAltIcon },\n localization,\n },\n } = table;\n const { column } = header;\n const { columnDef } = column;\n const { isLoading, showSkeletons, sorting } = table.state;\n\n const isSorted = !!column.getIsSorted();\n\n const sortTooltip =\n isLoading || showSkeletons\n ? ''\n : column.getIsSorted()\n ? column.getIsSorted() === 'desc'\n ? localization.sortedByColumnDesc.replace('{column}', columnDef.header)\n : localization.sortedByColumnAsc.replace('{column}', columnDef.header)\n : column.getNextSortingOrder() === 'desc'\n ? localization.sortByColumnDesc.replace('{column}', columnDef.header)\n : localization.sortByColumnAsc.replace('{column}', columnDef.header);\n\n const direction = isSorted ? (column.getIsSorted() as 'asc' | 'desc') : undefined;\n\n return (\n <Tooltip placement=\"top\" title={sortTooltip}>\n <Badge badgeContent={sorting.length > 1 ? column.getSortIndex() + 1 : 0} overlap=\"circular\">\n <TableSortLabel\n active\n aria-label={sortTooltip}\n direction={direction}\n IconComponent={\n !isSorted\n ? (props) => (\n <SyncAltIcon\n {...props}\n direction={direction}\n style={{\n transform: 'rotate(-90deg) scaleX(0.9) translateX(-1px)',\n }}\n />\n )\n : ArrowDownwardIcon\n }\n onClick={(e) => {\n e.stopPropagation();\n header.column.getToggleSortingHandler()?.(e);\n }}\n {...rest}\n sx={(theme) => ({\n '.MuiTableSortLabel-icon': {\n color: `${\n theme.palette.mode === 'dark' ? theme.palette.text.primary : theme.palette.text.secondary\n } !important`,\n },\n flex: '0 0',\n opacity: isSorted ? 1 : 0.3,\n transition: 'all 150ms ease-in-out',\n width: '3ch',\n ...(parseFromValuesOrFunc(rest?.sx, theme) as CSSObject),\n })}\n />\n </Badge>\n </Tooltip>\n );\n};\n","import { Box, TableCell, type TableCellProps } from '@mui/material';\nimport { useTheme } from '@mui/material/styles';\nimport { type Theme } from '@mui/material/styles';\nimport { type DragEvent, useCallback, useMemo, useRef } from 'react';\n\nimport { type MRT_ColumnVirtualizer, type MRT_Header, type MRT_RowData, type MRT_TableInstance } from '../../types';\nimport { cellKeyboardShortcuts } from '../../utils/cell.utils';\nimport { getCommonMRTCellStyles } from '../../utils/style.utils';\nimport { parseFromValuesOrFunc } from '../../utils/utils';\nimport { MRT_TableHeadCellColumnActionsButton } from './MRT_TableHeadCellColumnActionsButton';\nimport { MRT_TableHeadCellFilterContainer } from './MRT_TableHeadCellFilterContainer';\nimport { MRT_TableHeadCellFilterLabel } from './MRT_TableHeadCellFilterLabel';\nimport { MRT_TableHeadCellGrabHandle } from './MRT_TableHeadCellGrabHandle';\nimport { MRT_TableHeadCellResizeHandle } from './MRT_TableHeadCellResizeHandle';\nimport { MRT_TableHeadCellSortLabel } from './MRT_TableHeadCellSortLabel';\n\nexport interface MRT_TableHeadCellProps<TData extends MRT_RowData> extends TableCellProps {\n columnVirtualizer?: MRT_ColumnVirtualizer;\n header: MRT_Header<TData>;\n staticColumnIndex?: number;\n table: MRT_TableInstance<TData>;\n}\n\nexport const MRT_TableHeadCell = <TData extends MRT_RowData>({\n columnVirtualizer,\n header,\n staticColumnIndex,\n table,\n ...rest\n}: MRT_TableHeadCellProps<TData>): JSX.Element => {\n const theme = useTheme();\n const {\n options: {\n columnFilterDisplayMode,\n columnResizeDirection,\n columnResizeMode,\n enableColumnActions,\n enableColumnDragging,\n enableColumnOrdering,\n enableColumnPinning,\n enableGrouping,\n enableKeyboardShortcuts,\n enableMultiSort,\n layoutMode,\n mrtTheme: { draggingBorderColor },\n muiTableHeadCellProps,\n },\n refs: { tableHeadCellRefs },\n setHoveredColumn,\n } = table;\n const { columnResizing, density, draggingColumn, grouping, hoveredColumn, showColumnFilters } = table.state;\n const { column } = header;\n const { columnDef } = column;\n const { columnDefType } = columnDef;\n\n const tableCellProps = {\n ...parseFromValuesOrFunc(muiTableHeadCellProps, { column, table }),\n ...parseFromValuesOrFunc(columnDef.muiTableHeadCellProps, {\n column,\n table,\n }),\n ...rest,\n };\n\n const isColumnPinned = enableColumnPinning && columnDef.columnDefType !== 'group' && column.getIsPinned();\n\n const showColumnActions =\n (enableColumnActions || columnDef.enableColumnActions) && columnDef.enableColumnActions !== false;\n\n const showDragHandle =\n enableColumnDragging !== false &&\n columnDef.enableColumnDragging !== false &&\n (enableColumnDragging ||\n (enableColumnOrdering && columnDef.enableColumnOrdering !== false) ||\n (enableGrouping && columnDef.enableGrouping !== false && !grouping.includes(column.id)));\n\n const headerPL = useMemo(() => {\n let pl = 0;\n if (column.getCanSort()) {\n pl += 1;\n }\n if (showColumnActions) {\n pl += 1.75;\n }\n if (showDragHandle) {\n pl += 1.5;\n }\n return pl;\n }, [column, showColumnActions, showDragHandle]);\n\n const draggingBorders = useMemo(() => {\n const showResizeBorder =\n columnResizing.isResizingColumn === column.id && columnResizeMode === 'onChange' && !header.subHeaders.length;\n\n const borderStyle = showResizeBorder\n ? `2px solid ${draggingBorderColor} !important`\n : draggingColumn?.id === column.id\n ? `1px dashed ${theme.palette.grey[500]}`\n : hoveredColumn?.id === column.id\n ? `2px dashed ${draggingBorderColor}`\n : undefined;\n\n if (showResizeBorder) {\n return columnResizeDirection === 'ltr' ? { borderRight: borderStyle } : { borderLeft: borderStyle };\n }\n const draggingBorders = borderStyle\n ? {\n borderLeft: borderStyle,\n borderRight: borderStyle,\n borderTop: borderStyle,\n }\n : undefined;\n\n return draggingBorders;\n }, [\n column.id,\n columnResizeDirection,\n columnResizeMode,\n columnResizing.isResizingColumn,\n draggingBorderColor,\n draggingColumn,\n header.subHeaders.length,\n hoveredColumn,\n theme.palette.grey,\n ]);\n\n const handleDragEnter = (_e: DragEvent) => {\n if (enableGrouping && hoveredColumn?.id === 'drop-zone') {\n setHoveredColumn(null);\n }\n if (enableColumnOrdering && draggingColumn && columnDefType !== 'group') {\n setHoveredColumn(columnDef.enableColumnOrdering !== false ? column : null);\n }\n };\n\n const handleDragOver = (e: DragEvent) => {\n if (columnDef.enableColumnOrdering !== false) {\n e.preventDefault();\n }\n };\n\n const handleKeyDown = (event: React.KeyboardEvent<HTMLTableCellElement>) => {\n tableCellProps?.onKeyDown?.(event);\n cellKeyboardShortcuts({\n cellValue: header.column.columnDef.header,\n event,\n header,\n table,\n });\n };\n\n const tableHeadCellRef = useRef<HTMLTableCellElement | null>(null);\n\n const handleRef = useCallback(\n (node: HTMLTableCellElement) => {\n tableHeadCellRef.current = node;\n if (node) {\n if (tableHeadCellRefs.current) {\n tableHeadCellRefs.current[column.id] = node;\n }\n if (columnDefType !== 'group') {\n columnVirtualizer?.measureElement?.(node);\n }\n }\n },\n [column.id, columnDefType, columnVirtualizer, tableHeadCellRefs],\n );\n\n const HeaderElement =\n parseFromValuesOrFunc(columnDef.Header, {\n column,\n header,\n table,\n }) ?? columnDef.header;\n\n return (\n <TableCell\n align={columnDefType === 'group' ? 'center' : theme.direction === 'rtl' ? 'right' : 'left'}\n aria-sort={column.getIsSorted() ? (column.getIsSorted() === 'asc' ? 'ascending' : 'descending') : 'none'}\n colSpan={header.colSpan}\n data-can-sort={column.getCanSort() || undefined}\n data-index={staticColumnIndex}\n data-pinned={!!isColumnPinned || undefined}\n data-sort={column.getIsSorted() || undefined}\n onDragEnter={handleDragEnter}\n onDragOver={handleDragOver}\n ref={handleRef}\n tabIndex={enableKeyboardShortcuts ? 0 : undefined}\n {...tableCellProps}\n onKeyDown={handleKeyDown}\n sx={(theme: Theme) => ({\n '& :hover': {\n '.MuiButtonBase-root': {\n opacity: 1,\n },\n },\n flexDirection: layoutMode?.startsWith('grid') ? 'column' : undefined,\n fontWeight: 'bold',\n overflow: 'visible',\n p:\n density === 'compact'\n ? '0.5rem'\n : density === 'comfortable'\n ? columnDefType === 'display'\n ? '0.75rem'\n : '1rem'\n : columnDefType === 'display'\n ? '1rem 1.25rem'\n : '1.5rem',\n pb: columnDefType === 'display' ? 0 : showColumnFilters || density === 'compact' ? '0.4rem' : '0.6rem',\n pt:\n columnDefType === 'group' || density === 'compact'\n ? '0.25rem'\n : density === 'comfortable'\n ? '.75rem'\n : '1.25rem',\n userSelect: enableMultiSort && column.getCanSort() ? 'none' : undefined,\n verticalAlign: 'top',\n ...getCommonMRTCellStyles({\n column,\n header,\n table,\n tableCellProps,\n theme,\n }),\n ...draggingBorders,\n })}\n >\n {header.isPlaceholder\n ? null\n : (tableCellProps.children ?? (\n <Box\n className=\"Mui-TableHeadCell-Content\"\n sx={{\n alignItems: 'center',\n display: 'flex',\n flexDirection: tableCellProps?.align === 'right' ? 'row-reverse' : 'row',\n justifyContent:\n columnDefType === 'group' || tableCellProps?.align === 'center'\n ? 'center'\n : column.getCanResize()\n ? 'space-between'\n : 'flex-start',\n position: 'relative',\n width: '100%',\n }}\n >\n <Box\n className=\"Mui-TableHeadCell-Content-Labels\"\n onClick={column.getToggleSortingHandler()}\n sx={{\n alignItems: 'center',\n cursor: column.getCanSort() && columnDefType !== 'group' ? 'pointer' : undefined,\n display: 'flex',\n flexDirection: tableCellProps?.align === 'right' ? 'row-reverse' : 'row',\n overflow: columnDefType === 'data' ? 'hidden' : undefined,\n pl: tableCellProps?.align === 'center' ? `${headerPL}rem` : undefined,\n }}\n >\n <Box\n className=\"Mui-TableHeadCell-Content-Wrapper\"\n sx={{\n '&:hover': {\n textOverflow: 'clip',\n },\n minWidth: `${Math.min(columnDef.header?.length ?? 0, 4)}ch`,\n overflow: columnDefType === 'data' ? 'hidden' : undefined,\n textOverflow: 'ellipsis',\n whiteSpace: (columnDef.header?.length ?? 0) < 20 ? 'nowrap' : 'normal',\n }}\n >\n {HeaderElement}\n </Box>\n {column.getCanFilter() && <MRT_TableHeadCellFilterLabel header={header} table={table} />}\n {column.getCanSort() && <MRT_TableHeadCellSortLabel header={header} table={table} />}\n </Box>\n {columnDefType !== 'group' && (\n <Box\n className=\"Mui-TableHeadCell-Content-Actions\"\n sx={{\n whiteSpace: 'nowrap',\n }}\n >\n {showDragHandle && (\n <MRT_TableHeadCellGrabHandle column={column} table={table} tableHeadCellRef={tableHeadCellRef} />\n )}\n {showColumnActions && <MRT_TableHeadCellColumnActionsButton header={header} table={table} />}\n </Box>\n )}\n {column.getCanResize() && <MRT_TableHeadCellResizeHandle header={header} table={table} />}\n </Box>\n ))}\n {columnFilterDisplayMode === 'subheader' && column.getCanFilter() && (\n <MRT_TableHeadCellFilterContainer header={header} table={table} />\n )}\n </TableCell>\n );\n};\n","import { TableRow, type TableRowProps } from '@mui/material';\nimport { alpha, type CSSObject } from '@mui/material/styles';\n\nimport {\n type MRT_ColumnVirtualizer,\n type MRT_Header,\n type MRT_HeaderGroup,\n type MRT_RowData,\n type MRT_TableInstance,\n type MRT_VirtualItem,\n} from '../../types';\nimport { parseFromValuesOrFunc } from '../../utils/utils';\nimport { MRT_TableHeadCell } from './MRT_TableHeadCell';\n\nexport interface MRT_TableHeadRowProps<TData extends MRT_RowData> extends TableRowProps {\n columnVirtualizer?: MRT_ColumnVirtualizer;\n headerGroup: MRT_HeaderGroup<TData>;\n table: MRT_TableInstance<TData>;\n}\n\nexport const MRT_TableHeadRow = <TData extends MRT_RowData>({\n columnVirtualizer,\n headerGroup,\n table,\n ...rest\n}: MRT_TableHeadRowProps<TData>): JSX.Element => {\n const {\n options: {\n enableStickyHeader,\n layoutMode,\n mrtTheme: { baseBackgroundColor },\n muiTableHeadRowProps,\n },\n } = table;\n\n const { virtualColumns, virtualPaddingLeft, virtualPaddingRight } = columnVirtualizer ?? {};\n\n const tableRowProps = {\n ...parseFromValuesOrFunc(muiTableHeadRowProps, {\n headerGroup,\n table,\n }),\n ...rest,\n };\n\n return (\n <TableRow\n {...tableRowProps}\n sx={(theme) => ({\n backgroundColor: baseBackgroundColor,\n boxShadow: `4px 0 8px ${alpha(theme.palette.common.black, 0.1)}`,\n display: layoutMode?.startsWith('grid') ? 'flex' : undefined,\n position: enableStickyHeader && layoutMode === 'semantic' ? 'sticky' : 'relative',\n top: 0,\n ...(parseFromValuesOrFunc(tableRowProps?.sx, theme) as CSSObject),\n })}\n >\n {virtualPaddingLeft ? <th style={{ display: 'flex', width: virtualPaddingLeft }} /> : null}\n {(virtualColumns ?? headerGroup.headers).map((headerOrVirtualHeader, staticColumnIndex) => {\n let header = headerOrVirtualHeader as MRT_Header<TData>;\n if (columnVirtualizer) {\n staticColumnIndex = (headerOrVirtualHeader as MRT_VirtualItem).index;\n header = headerGroup.headers[staticColumnIndex];\n }\n\n return header ? (\n <MRT_TableHeadCell\n columnVirtualizer={columnVirtualizer}\n header={header}\n key={header.id}\n staticColumnIndex={staticColumnIndex}\n table={table}\n />\n ) : null;\n })}\n {virtualPaddingRight ? <th style={{ display: 'flex', width: virtualPaddingRight }} /> : null}\n </TableRow>\n );\n};\n","import { TableHead, type TableHeadProps } from '@mui/material';\nimport { type CSSObject } from '@mui/material/styles';\n\nimport { type MRT_ColumnVirtualizer, type MRT_RowData, type MRT_TableInstance } from '../../types';\nimport { parseFromValuesOrFunc } from '../../utils/utils';\nimport { MRT_ToolbarAlertBanner } from '../toolbar/MRT_ToolbarAlertBanner';\nimport { MRT_TableHeadRow } from './MRT_TableHeadRow';\n\nexport interface MRT_TableHeadProps<TData extends MRT_RowData> extends TableHeadProps {\n columnVirtualizer?: MRT_ColumnVirtualizer;\n table: MRT_TableInstance<TData>;\n}\n\nexport const MRT_TableHead = <TData extends MRT_RowData>({\n columnVirtualizer,\n table,\n ...rest\n}: MRT_TableHeadProps<TData>): JSX.Element => {\n const {\n options: { enableStickyHeader, layoutMode, muiTableHeadProps, positionToolbarAlertBanner },\n refs: { tableHeadRef },\n } = table;\n const { isFullScreen, showAlertBanner } = table.state;\n\n const tableHeadProps = {\n ...parseFromValuesOrFunc(muiTableHeadProps, { table }),\n ...rest,\n };\n\n const stickyHeader = enableStickyHeader || isFullScreen;\n\n return (\n <TableHead\n {...tableHeadProps}\n ref={(ref: HTMLTableSectionElement) => {\n tableHeadRef.current = ref;\n if (tableHeadProps?.ref && typeof tableHeadProps.ref === 'object') {\n tableHeadProps.ref.current = ref;\n }\n }}\n sx={(theme) => ({\n display: layoutMode?.startsWith('grid') ? 'grid' : undefined,\n opacity: 0.97,\n position: stickyHeader ? 'sticky' : 'relative',\n top: stickyHeader && layoutMode?.startsWith('grid') ? 0 : undefined,\n zIndex: stickyHeader ? 2 : undefined,\n ...(parseFromValuesOrFunc(tableHeadProps?.sx, theme) as CSSObject),\n })}\n >\n {positionToolbarAlertBanner === 'head-overlay' &&\n (showAlertBanner || table.getSelectedRowModel().rows.length > 0) ? (\n <tr\n style={{\n display: layoutMode?.startsWith('grid') ? 'grid' : undefined,\n }}\n >\n <th\n colSpan={table.getVisibleLeafColumns().length}\n style={{\n display: layoutMode?.startsWith('grid') ? 'grid' : undefined,\n padding: 0,\n }}\n >\n <MRT_ToolbarAlertBanner table={table} />\n </th>\n </tr>\n ) : (\n table\n .getHeaderGroups()\n .map((headerGroup) => (\n <MRT_TableHeadRow\n columnVirtualizer={columnVirtualizer}\n headerGroup={headerGroup}\n key={headerGroup.id}\n table={table}\n />\n ))\n )}\n </TableHead>\n );\n};\n","import { Collapse, IconButton, InputAdornment, TextField, type TextFieldProps, Tooltip } from '@mui/material';\nimport { debounce } from '@mui/material/utils';\nimport { type ChangeEvent, type MouseEvent, useEffect, useRef, useState } from 'react';\n\nimport { type MRT_RowData, type MRT_TableInstance } from '../../types';\nimport { getTextFieldSlotProps } from '../../utils/slotProps.utils';\nimport { parseFromValuesOrFunc } from '../../utils/utils';\nimport { MRT_FilterOptionMenu } from '../menus/MRT_FilterOptionMenu';\n\nexport interface MRT_GlobalFilterTextFieldProps<TData extends MRT_RowData> extends TextFieldProps<'standard'> {\n table: MRT_TableInstance<TData>;\n}\n\nexport const MRT_GlobalFilterTextField = <TData extends MRT_RowData>({\n table,\n ...rest\n}: MRT_GlobalFilterTextFieldProps<TData>): JSX.Element => {\n const {\n options: {\n enableGlobalFilterModes,\n icons: { CloseIcon, SearchIcon },\n localization,\n manualFiltering,\n muiSearchTextFieldProps,\n },\n refs: { searchInputRef },\n setGlobalFilter,\n } = table;\n const { globalFilter, showGlobalFilter } = table.state;\n\n const textFieldProps = {\n ...parseFromValuesOrFunc(muiSearchTextFieldProps, {\n table,\n }),\n ...rest,\n };\n\n const isMounted = useRef(false);\n const [anchorEl, setAnchorEl] = useState<HTMLElement | null>(null);\n const [searchValue, setSearchValue] = useState(globalFilter ?? '');\n\n const [handleChangeDebounced] = useState(() =>\n debounce(\n (event: ChangeEvent<HTMLInputElement>) => {\n setGlobalFilter(event.target.value ?? undefined);\n },\n manualFiltering ? 500 : 250,\n ),\n );\n\n const handleChange = (event: ChangeEvent<HTMLInputElement>) => {\n setSearchValue(event.target.value);\n handleChangeDebounced(event);\n };\n\n const handleGlobalFilterMenuOpen = (event: MouseEvent<HTMLElement>) => {\n setAnchorEl(event.currentTarget);\n };\n\n const handleClear = () => {\n setSearchValue('');\n setGlobalFilter(undefined);\n };\n\n useEffect(() => {\n if (isMounted.current) {\n if (globalFilter === undefined) {\n setSearchValue('');\n setGlobalFilter(undefined);\n } else {\n setSearchValue(globalFilter);\n }\n }\n isMounted.current = true;\n }, [globalFilter, setGlobalFilter]);\n\n const consumerSlots = getTextFieldSlotProps(textFieldProps.slotProps);\n\n return (\n <Collapse in={showGlobalFilter} mountOnEnter orientation=\"horizontal\" unmountOnExit>\n <TextField\n onChange={handleChange}\n placeholder={localization.search}\n size=\"small\"\n value={searchValue ?? ''}\n variant=\"outlined\"\n {...textFieldProps}\n inputRef={(inputRef) => {\n searchInputRef.current = inputRef;\n if (textFieldProps?.inputRef) {\n textFieldProps.inputRef = inputRef;\n }\n }}\n slotProps={{\n htmlInput: { autoComplete: 'off', ...consumerSlots.htmlInput },\n input: {\n endAdornment: (\n <InputAdornment position=\"end\">\n <Tooltip title={localization.clearSearch ?? ''}>\n <span>\n <IconButton\n aria-label={localization.clearSearch}\n disabled={!searchValue?.length}\n onClick={handleClear}\n size=\"small\"\n >\n <CloseIcon />\n </IconButton>\n </span>\n </Tooltip>\n </InputAdornment>\n ),\n startAdornment: enableGlobalFilterModes ? (\n <InputAdornment position=\"start\">\n <Tooltip title={localization.changeSearchMode}>\n <IconButton\n aria-label={localization.changeSearchMode}\n onClick={handleGlobalFilterMenuOpen}\n size=\"small\"\n sx={{ height: '1.75rem', width: '1.75rem' }}\n >\n <SearchIcon />\n </IconButton>\n </Tooltip>\n </InputAdornment>\n ) : (\n <SearchIcon style={{ marginRight: '4px' }} />\n ),\n ...consumerSlots.input,\n sx: { mb: 0, ...consumerSlots.input?.sx },\n },\n }}\n />\n <MRT_FilterOptionMenu anchorEl={anchorEl} onSelect={handleClear} setAnchorEl={setAnchorEl} table={table} />\n </Collapse>\n );\n};\n","import { aggregationFns } from '@tanstack/react-table';\n\nexport const MRT_AggregationFns = { ...aggregationFns };\n","import { rankings, rankItem } from '@tanstack/match-sorter-utils';\nimport {\n filterFn_arrIncludes,\n filterFn_arrIncludesAll,\n filterFn_arrIncludesSome,\n filterFn_equalsString,\n filterFn_equalsStringSensitive,\n filterFn_includesString,\n filterFn_includesStringSensitive,\n filterFn_inNumberRange,\n filterFn_weakEquals,\n type FilterMeta,\n type Row,\n type TableFeatures,\n} from '@tanstack/react-table';\n\nimport { type MRT_RowData } from '../types';\n\nconst fuzzy = <TFeatures extends TableFeatures, TData extends MRT_RowData>(\n row: Row<TFeatures, TData>,\n columnId: string,\n filterValue: number | string,\n addMeta?: (meta: FilterMeta) => void,\n): boolean => {\n const itemRank = rankItem(row.getValue<null | number | string>(columnId), filterValue as string, {\n threshold: rankings.MATCHES,\n });\n addMeta?.(itemRank);\n return itemRank.passed;\n};\n\nfuzzy.autoRemove = (val: unknown): boolean => !val;\n\nconst normalize = (value: number | string): string => value.toString().toLowerCase().trim();\n\nconst getNormalizedValue = <TFeatures extends TableFeatures, TData extends MRT_RowData>(\n row: Row<TFeatures, TData>,\n id: string,\n): string | undefined => {\n const value = row.getValue<null | number | string>(id);\n return value === null || value === undefined ? undefined : normalize(value);\n};\n\nconst contains = <TFeatures extends TableFeatures, TData extends MRT_RowData>(\n row: Row<TFeatures, TData>,\n id: string,\n filterValue: number | string,\n): boolean => !!getNormalizedValue(row, id)?.includes(normalize(filterValue));\n\ncontains.autoRemove = (val: unknown): boolean => !val;\n\nconst startsWith = <TFeatures extends TableFeatures, TData extends MRT_RowData>(\n row: Row<TFeatures, TData>,\n id: string,\n filterValue: number | string,\n): boolean => !!getNormalizedValue(row, id)?.startsWith(normalize(filterValue));\n\nstartsWith.autoRemove = (val: unknown): boolean => !val;\n\nconst endsWith = <TFeatures extends TableFeatures, TData extends MRT_RowData>(\n row: Row<TFeatures, TData>,\n id: string,\n filterValue: number | string,\n): boolean => !!getNormalizedValue(row, id)?.endsWith(normalize(filterValue));\n\nendsWith.autoRemove = (val: unknown): boolean => !val;\n\nconst equals = <TFeatures extends TableFeatures, TData extends MRT_RowData>(\n row: Row<TFeatures, TData>,\n id: string,\n filterValue: number | string,\n): boolean => getNormalizedValue(row, id) === normalize(filterValue);\n\nequals.autoRemove = (val: unknown): boolean => !val;\n\nconst notEquals = <TFeatures extends TableFeatures, TData extends MRT_RowData>(\n row: Row<TFeatures, TData>,\n id: string,\n filterValue: number | string,\n): boolean => getNormalizedValue(row, id) !== normalize(filterValue);\n\nnotEquals.autoRemove = (val: unknown): boolean => !val;\n\nconst greaterThan = <TFeatures extends TableFeatures, TData extends MRT_RowData>(\n row: Row<TFeatures, TData>,\n id: string,\n filterValue: number | string,\n): boolean =>\n !isNaN(+filterValue) && !isNaN(+row.getValue<number | string>(id))\n ? +(row.getValue<null | number | string>(id) ?? 0) > +filterValue\n : (getNormalizedValue(row, id) ?? '') > normalize(filterValue);\n\ngreaterThan.autoRemove = (val: unknown): boolean => !val;\n\nconst greaterThanOrEqualTo = <TFeatures extends TableFeatures, TData extends MRT_RowData>(\n row: Row<TFeatures, TData>,\n id: string,\n filterValue: number | string,\n): boolean => equals(row, id, filterValue) || greaterThan(row, id, filterValue);\n\ngreaterThanOrEqualTo.autoRemove = (val: unknown): boolean => !val;\n\nconst lessThan = <TFeatures extends TableFeatures, TData extends MRT_RowData>(\n row: Row<TFeatures, TData>,\n id: string,\n filterValue: number | string,\n): boolean =>\n !isNaN(+filterValue) && !isNaN(+row.getValue<number | string>(id))\n ? +(row.getValue<null | number | string>(id) ?? 0) < +filterValue\n : (getNormalizedValue(row, id) ?? '') < normalize(filterValue);\n\nlessThan.autoRemove = (val: unknown): boolean => !val;\n\nconst lessThanOrEqualTo = <TFeatures extends TableFeatures, TData extends MRT_RowData>(\n row: Row<TFeatures, TData>,\n id: string,\n filterValue: number | string,\n): boolean => equals(row, id, filterValue) || lessThan(row, id, filterValue);\n\nlessThanOrEqualTo.autoRemove = (val: unknown): boolean => !val;\n\nconst between = <TFeatures extends TableFeatures, TData extends MRT_RowData>(\n row: Row<TFeatures, TData>,\n id: string,\n filterValues: [number | string, number | string],\n): boolean =>\n (filterValues[0] === '' || filterValues[0] === undefined || greaterThan(row, id, filterValues[0])) &&\n ((!isNaN(+filterValues[0]) && !isNaN(+filterValues[1]) && +filterValues[0] > +filterValues[1]) ||\n filterValues[1] === '' ||\n filterValues[1] === undefined ||\n lessThan(row, id, filterValues[1]));\n\nbetween.autoRemove = (val: unknown): boolean => !val;\n\nconst betweenInclusive = <TFeatures extends TableFeatures, TData extends MRT_RowData>(\n row: Row<TFeatures, TData>,\n id: string,\n filterValues: [number | string, number | string],\n): boolean =>\n (filterValues[0] === '' || filterValues[0] === undefined || greaterThanOrEqualTo(row, id, filterValues[0])) &&\n ((!isNaN(+filterValues[0]) && !isNaN(+filterValues[1]) && +filterValues[0] > +filterValues[1]) ||\n filterValues[1] === '' ||\n filterValues[1] === undefined ||\n lessThanOrEqualTo(row, id, filterValues[1]));\n\nbetweenInclusive.autoRemove = (val: unknown): boolean => !val;\n\nconst empty = <TFeatures extends TableFeatures, TData extends MRT_RowData>(\n row: Row<TFeatures, TData>,\n id: string,\n _filterValue: number | string,\n): boolean => !row.getValue<null | number | string>(id)?.toString().trim();\n\nempty.autoRemove = (val: unknown): boolean => !val;\n\nconst notEmpty = <TFeatures extends TableFeatures, TData extends MRT_RowData>(\n row: Row<TFeatures, TData>,\n id: string,\n _filterValue: number | string,\n): boolean => !!row.getValue<null | number | string>(id)?.toString().trim();\n\nnotEmpty.autoRemove = (val: unknown): boolean => !val;\n\nexport const MRT_FilterFns = {\n arrIncludes: filterFn_arrIncludes,\n arrIncludesAll: filterFn_arrIncludesAll,\n arrIncludesSome: filterFn_arrIncludesSome,\n between,\n betweenInclusive,\n contains,\n empty,\n endsWith,\n equals,\n equalsString: filterFn_equalsString,\n equalsStringSensitive: filterFn_equalsStringSensitive,\n fuzzy,\n greaterThan,\n greaterThanOrEqualTo,\n includesString: filterFn_includesString,\n includesStringSensitive: filterFn_includesStringSensitive,\n inNumberRange: filterFn_inNumberRange,\n lessThan,\n lessThanOrEqualTo,\n notEmpty,\n notEquals,\n startsWith,\n weakEquals: filterFn_weakEquals,\n};\n","import {\n cellSelectionFeature,\n cellSpanningFeature,\n columnFacetingFeature,\n columnFilteringFeature,\n columnGroupingFeature,\n columnOrderingFeature,\n columnPinningFeature,\n columnResizingFeature,\n columnSizingFeature,\n columnVisibilityFeature,\n createExpandedRowModel,\n createFacetedMinMaxValues,\n createFacetedRowModel,\n createFacetedUniqueValues,\n createFilteredRowModel,\n createGroupedRowModel,\n createPaginatedRowModel,\n createSortedRowModel,\n type CustomAggregationFns,\n type FilterFn,\n globalFilteringFeature,\n rowAggregationFeature,\n rowExpandingFeature,\n rowPaginationFeature,\n rowPinningFeature,\n rowSelectionFeature,\n rowSortingFeature,\n type SortFn,\n type StockFeatures,\n type TableFeature,\n tableFeatures,\n} from '@tanstack/react-table';\n\nimport { type MRT_RowData } from '../types';\nimport { MRT_AggregationFns } from './aggregationFns';\nimport { MRT_FilterFns } from './filterFns';\nimport { MRT_SortingFns } from './sortingFns';\n\nconst mrtFeature: TableFeature = {\n getInitialState: (state) => ({\n actionCell: null,\n columnFilterFns: {},\n creatingRow: null,\n density: 'comfortable',\n draggingColumn: null,\n draggingRow: null,\n editingCell: null,\n editingRow: null,\n globalFilterFn: 'fuzzy',\n hoveredColumn: null,\n hoveredRow: null,\n isFullScreen: false,\n isLoading: false,\n isSaving: false,\n showAlertBanner: false,\n showColumnFilters: false,\n showGlobalFilter: false,\n showLoadingOverlay: false,\n showProgressBars: false,\n showSkeletons: false,\n showToolbarDropZone: false,\n ...state,\n }),\n};\n\nexport const MRT_DefaultTableFeatures = tableFeatures({\n aggregationFns: MRT_AggregationFns,\n cellSelectionFeature,\n cellSpanningFeature,\n columnFacetingFeature,\n columnFilteringFeature,\n columnGroupingFeature,\n columnOrderingFeature,\n columnPinningFeature,\n columnResizingFeature,\n columnSizingFeature,\n columnVisibilityFeature,\n expandedRowModel: createExpandedRowModel(),\n facetedMinMaxValues: createFacetedMinMaxValues(),\n facetedRowModel: createFacetedRowModel(),\n facetedUniqueValues: createFacetedUniqueValues(),\n filteredRowModel: createFilteredRowModel(),\n filterFns: MRT_FilterFns,\n globalFilteringFeature,\n groupedRowModel: createGroupedRowModel(),\n mrtFeature,\n paginatedRowModel: createPaginatedRowModel(),\n rowAggregationFeature,\n rowExpandingFeature,\n rowPaginationFeature,\n rowPinningFeature,\n rowSelectionFeature,\n rowSortingFeature,\n sortedRowModel: createSortedRowModel(),\n sortFns: MRT_SortingFns,\n});\n\nexport interface MRT_TableFeatures extends StockFeatures {\n aggregationFns: CustomAggregationFns<MRT_TableFeatures, MRT_RowData>;\n filterFns: Record<string, FilterFn<MRT_TableFeatures, MRT_RowData>>;\n mrtFeature: TableFeature;\n sortFns: Record<string, SortFn<MRT_TableFeatures, MRT_RowData>>;\n}\n","import { constructRow as _constructRow, flexRender as _flexRender, type Renderable } from '@tanstack/react-table';\nimport { type ReactNode } from 'react';\n\nimport {\n type MRT_ColumnHelper,\n type MRT_DisplayColumnDef,\n type MRT_GroupColumnDef,\n type MRT_Row,\n type MRT_RowData,\n type MRT_TableInstance,\n} from '../types';\nimport { getAllLeafColumnDefs, getColumnId } from './column.utils';\n\nexport const flexRender = <TProps extends object>(Comp: Renderable<TProps>, props: TProps): ReactNode =>\n _flexRender(Comp, props);\n\nexport function createMRTColumnHelper<TData extends MRT_RowData>(): MRT_ColumnHelper<TData> {\n return {\n accessor: (accessor, column) => {\n return typeof accessor === 'function'\n ? {\n ...column,\n accessorFn: accessor,\n }\n : {\n ...column,\n accessorKey: accessor,\n };\n },\n display: (column) => column as MRT_DisplayColumnDef<TData>,\n group: (column) => column as MRT_GroupColumnDef<TData>,\n };\n}\n\nexport const createRow = <TData extends MRT_RowData>(\n table: MRT_TableInstance<TData>,\n originalRow?: TData,\n rowIndex = -1,\n depth = 0,\n subRows?: MRT_Row<TData>[],\n parentId?: string,\n): MRT_Row<TData> =>\n _constructRow(\n // @ts-expect-error: MRT_TableInstance omits `options.features`, which the runtime table instance has\n table,\n 'mrt-row-create',\n originalRow ??\n Object.assign(\n {},\n ...getAllLeafColumnDefs(table.options.columns).map((col) => ({\n [getColumnId(col)]: '',\n })),\n ),\n rowIndex,\n depth,\n subRows,\n parentId,\n ) as MRT_Row<TData>;\n","import { MRT_ToggleRowActionMenuButton } from '../../components/buttons/MRT_ToggleRowActionMenuButton';\nimport { type MRT_ColumnDef, type MRT_RowData, type MRT_StatefulTableOptions } from '../../types';\nimport { defaultDisplayColumnProps } from '../../utils/displayColumn.utils';\n\nexport const getMRT_RowActionsColumnDef = <TData extends MRT_RowData>(\n tableOptions: MRT_StatefulTableOptions<TData>,\n): MRT_ColumnDef<TData> => {\n return {\n Cell: ({ cell, row, staticRowIndex, table }) => (\n <MRT_ToggleRowActionMenuButton cell={cell} row={row} staticRowIndex={staticRowIndex} table={table} />\n ),\n ...defaultDisplayColumnProps({\n header: 'actions',\n id: 'mrt-row-actions',\n size: 70,\n tableOptions,\n }),\n };\n};\n","import { type RefObject } from 'react';\n\nimport { MRT_TableBodyRowGrabHandle } from '../../components/body/MRT_TableBodyRowGrabHandle';\nimport { type MRT_ColumnDef, type MRT_RowData, type MRT_StatefulTableOptions } from '../../types';\nimport { defaultDisplayColumnProps } from '../../utils/displayColumn.utils';\n\nexport const getMRT_RowDragColumnDef = <TData extends MRT_RowData>(\n tableOptions: MRT_StatefulTableOptions<TData>,\n): MRT_ColumnDef<TData> => {\n return {\n Cell: ({ row, rowRef, table }) => (\n <MRT_TableBodyRowGrabHandle row={row} rowRef={rowRef as RefObject<HTMLTableRowElement | null>} table={table} />\n ),\n grow: false,\n ...defaultDisplayColumnProps({\n header: 'move',\n id: 'mrt-row-drag',\n size: 60,\n tableOptions,\n }),\n };\n};\n","import { Stack, Tooltip } from '@mui/material';\nimport { type ReactNode } from 'react';\n\nimport { MRT_ExpandAllButton } from '../../components/buttons/MRT_ExpandAllButton';\nimport { MRT_ExpandButton } from '../../components/buttons/MRT_ExpandButton';\nimport { type MRT_ColumnDef, type MRT_RowData, type MRT_StatefulTableOptions } from '../../types';\nimport { defaultDisplayColumnProps } from '../../utils/displayColumn.utils';\nimport { getCommonTooltipProps } from '../../utils/style.utils';\n\nexport const getMRT_RowExpandColumnDef = <TData extends MRT_RowData>(\n tableOptions: MRT_StatefulTableOptions<TData>,\n): MRT_ColumnDef<TData> => {\n const {\n defaultColumn,\n enableExpandAll,\n groupedColumnMode,\n positionExpandColumn,\n renderDetailPanel,\n state: { grouping },\n } = tableOptions;\n\n const alignProps =\n positionExpandColumn === 'last'\n ? ({\n align: 'right',\n } as const)\n : undefined;\n\n return {\n Cell: ({ cell, column, row, staticRowIndex, table }) => {\n const expandButtonProps = { row, staticRowIndex, table };\n const subRowsLength = row.subRows?.length;\n if (groupedColumnMode === 'remove' && row.groupingColumnId) {\n return (\n <Stack\n sx={{\n alignItems: 'center',\n flexDirection: 'row',\n gap: '0.25rem',\n }}\n >\n <MRT_ExpandButton {...expandButtonProps} />\n <Tooltip\n {...getCommonTooltipProps('right')}\n title={table.getColumn(row.groupingColumnId)?.columnDef.header}\n >\n <span>{row.groupingValue as ReactNode}</span>\n </Tooltip>\n {!!subRowsLength && <span>({subRowsLength})</span>}\n </Stack>\n );\n } else {\n return (\n <>\n <MRT_ExpandButton {...expandButtonProps} />\n {column.columnDef.GroupedCell?.({ cell, column, row, table })}\n </>\n );\n }\n },\n Header: enableExpandAll\n ? ({ table }) => {\n return (\n <>\n <MRT_ExpandAllButton table={table} />\n {groupedColumnMode === 'remove' &&\n grouping?.map((groupedColumnId) => table.getColumn(groupedColumnId)?.columnDef.header)?.join(', ')}\n </>\n );\n }\n : undefined,\n muiTableBodyCellProps: alignProps,\n muiTableHeadCellProps: alignProps,\n ...defaultDisplayColumnProps({\n header: 'expand',\n id: 'mrt-row-expand',\n size:\n groupedColumnMode === 'remove'\n ? (defaultColumn?.size ?? 180)\n : renderDetailPanel\n ? enableExpandAll\n ? 60\n : 70\n : 100,\n tableOptions,\n }),\n };\n};\n","import { type MRT_ColumnDef, type MRT_RowData, type MRT_StatefulTableOptions } from '../../types';\nimport { defaultDisplayColumnProps } from '../../utils/displayColumn.utils';\n\nexport const getMRT_RowNumbersColumnDef = <TData extends MRT_RowData>(\n tableOptions: MRT_StatefulTableOptions<TData>,\n): MRT_ColumnDef<TData> => {\n const { localization, rowNumberDisplayMode } = tableOptions;\n const {\n pagination: { pageIndex, pageSize },\n } = tableOptions.state;\n\n return {\n Cell: ({ row, staticRowIndex }) =>\n ((rowNumberDisplayMode === 'static' ? (staticRowIndex || 0) + (pageSize || 0) * (pageIndex || 0) : row.index) ??\n 0) + 1,\n grow: false,\n Header: () => localization.rowNumber,\n ...defaultDisplayColumnProps({\n header: 'rowNumbers',\n id: 'mrt-row-numbers',\n size: 50,\n tableOptions,\n }),\n };\n};\n","import { MRT_TableBodyRowPinButton } from '../../components/body/MRT_TableBodyRowPinButton';\nimport { type MRT_ColumnDef, type MRT_RowData, type MRT_StatefulTableOptions } from '../../types';\nimport { defaultDisplayColumnProps } from '../../utils/displayColumn.utils';\n\nexport const getMRT_RowPinningColumnDef = <TData extends MRT_RowData>(\n tableOptions: MRT_StatefulTableOptions<TData>,\n): MRT_ColumnDef<TData> => {\n return {\n Cell: ({ row, table }) => <MRT_TableBodyRowPinButton row={row} table={table} />,\n grow: false,\n ...defaultDisplayColumnProps({\n header: 'pin',\n id: 'mrt-row-pin',\n size: 60,\n tableOptions,\n }),\n };\n};\n","import { MRT_SelectCheckbox } from '../../components/inputs/MRT_SelectCheckbox';\nimport { type MRT_ColumnDef, type MRT_RowData, type MRT_StatefulTableOptions } from '../../types';\nimport { defaultDisplayColumnProps } from '../../utils/displayColumn.utils';\n\nexport const getMRT_RowSelectColumnDef = <TData extends MRT_RowData>(\n tableOptions: MRT_StatefulTableOptions<TData>,\n): MRT_ColumnDef<TData> => {\n const { enableMultiRowSelection, enableSelectAll } = tableOptions;\n\n return {\n Cell: ({ row, staticRowIndex, table }) => (\n <MRT_SelectCheckbox row={row} staticRowIndex={staticRowIndex} table={table} />\n ),\n grow: false,\n Header:\n enableSelectAll && enableMultiRowSelection ? ({ table }) => <MRT_SelectCheckbox table={table} /> : undefined,\n ...defaultDisplayColumnProps({\n header: 'select',\n id: 'mrt-row-select',\n size: enableSelectAll ? 60 : 70,\n tableOptions,\n }),\n };\n};\n","import {\n ArrowDownward as ArrowDownwardIcon,\n ArrowRight as ArrowRightIcon,\n Cancel as CancelIcon,\n ChevronLeft as ChevronLeftIcon,\n ChevronRight as ChevronRightIcon,\n ClearAll as ClearAllIcon,\n Close as CloseIcon,\n ContentCopy,\n DensityLarge as DensityLargeIcon,\n DensityMedium as DensityMediumIcon,\n DensitySmall as DensitySmallIcon,\n DragHandle as DragHandleIcon,\n DynamicFeed as DynamicFeedIcon,\n Edit as EditIcon,\n ExpandMore as ExpandMoreIcon,\n FilterAlt as FilterAltIcon,\n FilterList as FilterListIcon,\n FilterListOff as FilterListOffIcon,\n FirstPage as FirstPageIcon,\n Fullscreen as FullscreenIcon,\n FullscreenExit as FullscreenExitIcon,\n KeyboardDoubleArrowDown as KeyboardDoubleArrowDownIcon,\n LastPage as LastPageIcon,\n MoreHoriz as MoreHorizIcon,\n MoreVert as MoreVertIcon,\n PushPin as PushPinIcon,\n RestartAlt as RestartAltIcon,\n Save as SaveIcon,\n Search as SearchIcon,\n SearchOff as SearchOffIcon,\n Sort as SortIcon,\n SyncAlt as SyncAltIcon,\n ViewColumn as ViewColumnIcon,\n VisibilityOff as VisibilityOffIcon,\n} from '@mui/icons-material';\n\nexport const MRT_Default_Icons = {\n ArrowDownwardIcon,\n ArrowRightIcon,\n CancelIcon,\n ChevronLeftIcon,\n ChevronRightIcon,\n ClearAllIcon,\n CloseIcon,\n ContentCopy,\n DensityLargeIcon,\n DensityMediumIcon,\n DensitySmallIcon,\n DragHandleIcon,\n DynamicFeedIcon,\n EditIcon,\n ExpandMoreIcon,\n FilterAltIcon,\n FilterListIcon,\n FilterListOffIcon,\n FirstPageIcon,\n FullscreenExitIcon,\n FullscreenIcon,\n KeyboardDoubleArrowDownIcon,\n LastPageIcon,\n MoreHorizIcon,\n MoreVertIcon,\n PushPinIcon,\n RestartAltIcon,\n SaveIcon,\n SearchIcon,\n SearchOffIcon,\n SortIcon,\n SyncAltIcon,\n ViewColumnIcon,\n VisibilityOffIcon,\n} as const;\n\n// oxlint-disable-next-line typescript/no-explicit-any\nexport type MRT_Icons = Record<keyof typeof MRT_Default_Icons, any>;\n","import { type MRT_Localization } from '..';\n\nexport const MRT_Localization_EN: MRT_Localization = {\n language: 'en',\n actions: 'Actions',\n and: 'and',\n cancel: 'Cancel',\n changeFilterMode: 'Change filter mode',\n changeSearchMode: 'Change search mode',\n clearFilter: 'Clear filter',\n clearSearch: 'Clear search',\n clearSelection: 'Clear selection',\n clearSort: 'Clear sort',\n clickToCopy: 'Click to copy',\n copy: 'Copy',\n collapse: 'Collapse',\n collapseAll: 'Collapse all',\n columnActions: 'Column Actions',\n copiedToClipboard: 'Copied to clipboard',\n dropToGroupBy: 'Drop to group by {column}',\n edit: 'Edit',\n expand: 'Expand',\n expandAll: 'Expand all',\n filterArrIncludes: 'Includes',\n filterArrIncludesAll: 'Includes all',\n filterArrIncludesSome: 'Includes',\n filterBetween: 'Between',\n filterBetweenInclusive: 'Between Inclusive',\n filterByColumn: 'Filter by {column}',\n filterContains: 'Contains',\n filterEmpty: 'Empty',\n filterEndsWith: 'Ends With',\n filterEquals: 'Equals',\n filterEqualsString: 'Equals',\n filterFuzzy: 'Fuzzy',\n filterGreaterThan: 'Greater Than',\n filterGreaterThanOrEqualTo: 'Greater Than Or Equal To',\n filterInNumberRange: 'Between',\n filterIncludesString: 'Contains',\n filterIncludesStringSensitive: 'Contains',\n filterLessThan: 'Less Than',\n filterLessThanOrEqualTo: 'Less Than Or Equal To',\n filterMode: 'Filter Mode: {filterType}',\n filterNotEmpty: 'Not Empty',\n filterNotEquals: 'Not Equals',\n filterStartsWith: 'Starts With',\n filterWeakEquals: 'Equals',\n filteringByColumn: 'Filtering by {column} - {filterType} {filterValue}',\n goToFirstPage: 'Go to first page',\n goToLastPage: 'Go to last page',\n goToNextPage: 'Go to next page',\n goToPreviousPage: 'Go to previous page',\n grab: 'Grab',\n groupByColumn: 'Group by {column}',\n groupedBy: 'Grouped by ',\n hideAll: 'Hide all',\n hideColumn: 'Hide {column} column',\n max: 'Max',\n min: 'Min',\n move: 'Move',\n noRecordsToDisplay: 'No records to display',\n noResultsFound: 'No results found',\n of: 'of',\n or: 'or',\n pin: 'Pin',\n pinToLeft: 'Pin to left',\n pinToRight: 'Pin to right',\n resetColumnSize: 'Reset column size',\n resetOrder: 'Reset order',\n rowActions: 'Row Actions',\n rowNumber: '#',\n rowNumbers: 'Row Numbers',\n rowsPerPage: 'Rows per page',\n save: 'Save',\n search: 'Search',\n selectedCountOfRowCountRowsSelected: '{selectedCount} of {rowCount} row(s) selected',\n select: 'Select',\n showAll: 'Show all',\n showAllColumns: 'Show all columns',\n showHideColumns: 'Show/Hide columns',\n showHideFilters: 'Show/Hide filters',\n showHideSearch: 'Show/Hide search',\n sortByColumnAsc: 'Sort by {column} ascending',\n sortByColumnDesc: 'Sort by {column} descending',\n sortedByColumnAsc: 'Sorted by {column} ascending',\n sortedByColumnDesc: 'Sorted by {column} descending',\n thenBy: ', then by ',\n toggleDensity: 'Toggle density',\n toggleFullScreen: 'Toggle full screen',\n toggleSelectAll: 'Toggle select all',\n toggleSelectRow: 'Toggle select row',\n toggleVisibility: 'Toggle visibility',\n ungroupByColumn: 'Ungroup by {column}',\n unpin: 'Unpin',\n unpinAll: 'Unpin all',\n};\n","import { useTheme } from '@mui/material/styles';\nimport { useId, useMemo, useState } from 'react';\n\nimport { MRT_AggregationFns } from '../fns/aggregationFns';\nimport { MRT_FilterFns } from '../fns/filterFns';\nimport { MRT_SortingFns } from '../fns/sortingFns';\nimport { MRT_Default_Icons } from '../icons';\nimport { MRT_Localization_EN } from '../locales/en';\nimport { type MRT_DefinedTableOptions, type MRT_RowData, type MRT_TableOptions } from '../types';\nimport { getMRTTheme } from '../utils/style.utils';\n\nexport const MRT_DefaultColumn = {\n filterVariant: 'text',\n maxSize: 1000,\n minSize: 40,\n size: 180,\n} as const;\n\nexport const MRT_DefaultDisplayColumn = {\n columnDefType: 'display',\n enableClickToCopy: false,\n enableColumnActions: false,\n enableColumnDragging: false,\n enableColumnFilter: false,\n enableColumnOrdering: false,\n enableEditing: false,\n enableGlobalFilter: false,\n enableGrouping: false,\n enableHiding: false,\n enableResizing: false,\n enableSorting: false,\n} as const;\n\nexport const useMRT_TableOptions: <TData extends MRT_RowData>(\n tableOptions: MRT_TableOptions<TData>,\n) => MRT_DefinedTableOptions<TData> = <TData extends MRT_RowData>({\n aggregationFns,\n autoResetExpanded = false,\n columnFilterDisplayMode = 'subheader',\n columnResizeDirection,\n columnResizeMode = 'onChange',\n createDisplayMode = 'modal',\n defaultColumn,\n defaultDisplayColumn,\n editDisplayMode = 'modal',\n enableBatchRowSelection = true,\n enableBottomToolbar = true,\n enableColumnActions = true,\n enableColumnFilters = true,\n enableColumnOrdering = false,\n enableColumnPinning = false,\n enableColumnResizing = false,\n enableColumnVirtualization,\n enableDensityToggle = true,\n enableExpandAll = true,\n enableExpanding,\n enableFacetedValues = false,\n enableFilterMatchHighlighting = true,\n enableFilters = true,\n enableFullScreenToggle = true,\n enableGlobalFilter = true,\n enableGlobalFilterRankedResults = true,\n enableGrouping = false,\n enableHiding = true,\n enableKeyboardShortcuts = true,\n enableMultiRowSelection = true,\n enableMultiSort = true,\n enablePagination = true,\n enableRowPinning = false,\n enableRowSelection = false,\n enableRowVirtualization,\n enableSelectAll = true,\n enableSorting = true,\n enableStickyHeader = false,\n enableTableFooter = true,\n enableTableHead = true,\n enableToolbarInternalActions = true,\n enableTopToolbar = true,\n filterFns,\n icons,\n id = useId(),\n layoutMode,\n localization,\n manualFiltering,\n manualGrouping,\n manualPagination,\n manualSorting,\n mrtTheme,\n paginationDisplayMode = 'default',\n positionActionsColumn = 'first',\n positionCreatingRow = 'top',\n positionExpandColumn = 'first',\n positionGlobalFilter = 'right',\n positionPagination = 'bottom',\n positionToolbarAlertBanner = 'top',\n positionToolbarDropZone = 'top',\n rowNumberDisplayMode = 'static',\n rowPinningDisplayMode = 'sticky',\n selectAllMode = 'page',\n sortFns,\n ...rest\n}: MRT_TableOptions<TData>) => {\n const theme = useTheme();\n\n icons = useMemo(() => ({ ...MRT_Default_Icons, ...icons }), [icons]);\n localization = useMemo(\n () => ({\n ...MRT_Localization_EN,\n ...localization,\n }),\n [localization],\n );\n mrtTheme = useMemo(() => getMRTTheme(mrtTheme, theme), [mrtTheme, theme]);\n //cannot be changed after initialization\n [aggregationFns] = useState(() => ({ ...MRT_AggregationFns, ...aggregationFns }));\n [filterFns] = useState(() => ({ ...MRT_FilterFns, ...filterFns }));\n [sortFns] = useState(() => ({ ...MRT_SortingFns, ...sortFns }));\n defaultColumn = useMemo(() => ({ ...MRT_DefaultColumn, ...defaultColumn }), [defaultColumn]);\n defaultDisplayColumn = useMemo(\n () => ({\n ...MRT_DefaultDisplayColumn,\n ...defaultDisplayColumn,\n }),\n [defaultDisplayColumn],\n );\n //cannot be changed after initialization\n [[enableColumnVirtualization, enableRowVirtualization]] = useState(() => [\n enableColumnVirtualization,\n enableRowVirtualization,\n ]);\n\n if (!columnResizeDirection) {\n columnResizeDirection = theme.direction || 'ltr';\n }\n\n layoutMode = layoutMode || (enableColumnResizing ? 'grid-no-grow' : 'semantic');\n if (layoutMode === 'semantic' && (enableRowVirtualization || enableColumnVirtualization)) {\n layoutMode = 'grid';\n }\n\n if (enableRowVirtualization) {\n enableStickyHeader = true;\n }\n\n if (enablePagination === false && manualPagination === undefined) {\n manualPagination = true;\n }\n\n if (!rest.data?.length) {\n manualFiltering = true;\n manualGrouping = true;\n manualPagination = true;\n manualSorting = true;\n }\n\n return {\n aggregationFns,\n autoResetExpanded,\n columnFilterDisplayMode,\n columnResizeDirection,\n columnResizeMode,\n createDisplayMode,\n defaultColumn,\n defaultDisplayColumn,\n editDisplayMode,\n enableBatchRowSelection,\n enableBottomToolbar,\n enableColumnActions,\n enableColumnFilters,\n enableColumnOrdering,\n enableColumnPinning,\n enableColumnResizing,\n enableColumnVirtualization,\n enableDensityToggle,\n enableExpandAll,\n enableExpanding,\n enableFacetedValues,\n enableFilterMatchHighlighting,\n enableFilters,\n enableFullScreenToggle,\n enableGlobalFilter,\n enableGlobalFilterRankedResults,\n enableGrouping,\n enableHiding,\n enableKeyboardShortcuts,\n enableMultiRowSelection,\n enableMultiSort,\n enablePagination,\n enableRowPinning,\n enableRowSelection,\n enableRowVirtualization,\n enableSelectAll,\n enableSorting,\n enableStickyHeader,\n enableTableFooter,\n enableTableHead,\n enableToolbarInternalActions,\n enableTopToolbar,\n filterFns,\n getRowCanExpand: rest.getRowCanExpand ?? (rest.renderDetailPanel ? () => true : undefined),\n getSubRows: (row) => ('subRows' in row ? (row.subRows as TData[] | undefined) : undefined),\n icons,\n id,\n layoutMode,\n localization,\n manualFiltering,\n manualGrouping,\n manualPagination,\n manualSorting,\n mrtTheme,\n paginationDisplayMode,\n positionActionsColumn,\n positionCreatingRow,\n positionExpandColumn,\n positionGlobalFilter,\n positionPagination,\n positionToolbarAlertBanner,\n positionToolbarDropZone,\n rowNumberDisplayMode,\n rowPinningDisplayMode,\n selectAllMode,\n sortFns,\n ...rest,\n } as MRT_DefinedTableOptions<TData>;\n};\n","import { type MRT_ColumnDef, type MRT_RowData, type MRT_StatefulTableOptions } from '../../types';\nimport { defaultDisplayColumnProps } from '../../utils/displayColumn.utils';\nimport { MRT_DefaultDisplayColumn } from '../useMRT_TableOptions';\n\nconst blankColProps = {\n children: null,\n sx: {\n minWidth: 0,\n p: 0,\n width: 0,\n },\n};\n\nexport const getMRT_RowSpacerColumnDef = <TData extends MRT_RowData>(\n tableOptions: MRT_StatefulTableOptions<TData>,\n): MRT_ColumnDef<TData> => {\n return {\n ...defaultDisplayColumnProps({\n id: 'mrt-row-spacer',\n size: 0,\n tableOptions,\n }),\n grow: true,\n ...MRT_DefaultDisplayColumn,\n muiTableBodyCellProps: blankColProps,\n muiTableFooterCellProps: blankColProps,\n muiTableHeadCellProps: blankColProps,\n };\n};\n","import { useEffect, useReducer, useRef } from 'react';\n\nimport { type MRT_RowData, type MRT_SortingState, type MRT_TableInstance } from '../types';\nimport { getDefaultColumnOrderIds } from '../utils/displayColumn.utils';\nimport { getCanRankRows } from '../utils/row.utils';\n\nexport const useMRT_Effects = <TData extends MRT_RowData>(table: MRT_TableInstance<TData>): void => {\n const {\n getPrePaginatedRowModel,\n options: { enablePagination, enableRowPinning, rowCount },\n } = table;\n const { columnOrder, density, globalFilter, isFullScreen, isLoading, pagination, showSkeletons, sorting } =\n table.state;\n\n const totalColumnCount = table.options.columns.length;\n const totalRowCount = rowCount ?? getPrePaginatedRowModel().rows.length;\n\n const [, rerender] = useReducer(() => ({}), {});\n const initialBodyHeight = useRef<string>(null);\n const previousTop = useRef<number>(null);\n\n const effectValues = useRef({ columnOrder, enableRowPinning, pagination, table, tableOptions: table.options });\n useEffect(() => {\n effectValues.current = { columnOrder, enableRowPinning, pagination, table, tableOptions: table.options };\n });\n\n useEffect(() => {\n if (typeof window !== 'undefined') {\n initialBodyHeight.current = document.body.style.height;\n }\n }, []);\n\n //hide scrollbars when table is in full screen mode, preserve body scroll position after full screen exit\n useEffect(() => {\n if (typeof window !== 'undefined') {\n if (isFullScreen) {\n previousTop.current = document.body.getBoundingClientRect().top; //save scroll position\n document.body.style.height = '100dvh'; //hide page scrollbars when table is in full screen mode\n } else {\n document.body.style.height = initialBodyHeight.current as string;\n if (!previousTop.current) {\n return;\n }\n //restore scroll position\n window.scrollTo({\n behavior: 'instant',\n top: -1 * (previousTop.current as number),\n });\n }\n }\n }, [isFullScreen]);\n\n //recalculate column order when columns change or features are toggled on/off\n useEffect(() => {\n const { columnOrder, table, tableOptions } = effectValues.current;\n if (totalColumnCount !== columnOrder.length) {\n table.setColumnOrder(getDefaultColumnOrderIds(tableOptions));\n }\n }, [totalColumnCount]);\n\n //if page index is out of bounds, set it to the last page\n useEffect(() => {\n if (!enablePagination || isLoading || showSkeletons) {\n return;\n }\n const { pagination, table } = effectValues.current;\n const { pageIndex, pageSize } = pagination;\n const totalPages: number = totalRowCount > 0 ? Math.ceil(totalRowCount / pageSize) : 1;\n const isOutOfBounds: boolean = pageIndex < 0 || pageIndex >= totalPages;\n\n if (isOutOfBounds) {\n table.setPageIndex(totalPages - 1);\n }\n }, [totalRowCount, enablePagination, isLoading, showSkeletons]);\n\n //turn off sort when global filter is looking for ranked results\n const appliedSort = useRef<MRT_SortingState>(sorting);\n useEffect(() => {\n if (sorting.length) {\n appliedSort.current = sorting;\n }\n }, [sorting]);\n\n useEffect(() => {\n const { table } = effectValues.current;\n if (!getCanRankRows(table)) {\n return;\n }\n if (globalFilter) {\n table.setSorting([]);\n } else {\n table.setSorting(() => appliedSort.current || []);\n }\n }, [globalFilter]);\n\n //fix pinned row top style when density changes\n useEffect(() => {\n const { enableRowPinning, table } = effectValues.current;\n if (enableRowPinning && table.getIsSomeRowsPinned()) {\n setTimeout(() => {\n rerender();\n }, 150);\n }\n }, [density]);\n};\n","import { tableFeatures, useTable } from '@tanstack/react-table';\nimport { useMemo, useRef, useState } from 'react';\n\nimport { MRT_DefaultTableFeatures, type MRT_TableFeatures } from '../fns/tableFeatures';\nimport {\n type MRT_Cell,\n type MRT_Column,\n type MRT_ColumnDef,\n type MRT_ColumnFilterFnsState,\n type MRT_ColumnOrderState,\n type MRT_ColumnSizingInfoState,\n type MRT_DefinedTableOptions,\n type MRT_DensityState,\n type MRT_FilterOption,\n type MRT_GroupingState,\n type MRT_PaginationState,\n type MRT_Row,\n type MRT_RowData,\n type MRT_StatefulTableOptions,\n type MRT_TableInstance,\n type MRT_TableState,\n type MRT_Updater,\n} from '../types';\nimport { getAllLeafColumnDefs, getColumnId, getDefaultColumnFilterFn, prepareColumns } from '../utils/column.utils';\nimport {\n getDefaultColumnOrderIds,\n showRowActionsColumn,\n showRowDragColumn,\n showRowExpandColumn,\n showRowNumbersColumn,\n showRowPinningColumn,\n showRowSelectionColumn,\n showRowSpacerColumn,\n} from '../utils/displayColumn.utils';\nimport { createRow } from '../utils/tanstack.helpers';\nimport { getMRT_RowActionsColumnDef } from './display-columns/getMRT_RowActionsColumnDef';\nimport { getMRT_RowDragColumnDef } from './display-columns/getMRT_RowDragColumnDef';\nimport { getMRT_RowExpandColumnDef } from './display-columns/getMRT_RowExpandColumnDef';\nimport { getMRT_RowNumbersColumnDef } from './display-columns/getMRT_RowNumbersColumnDef';\nimport { getMRT_RowPinningColumnDef } from './display-columns/getMRT_RowPinningColumnDef';\nimport { getMRT_RowSelectColumnDef } from './display-columns/getMRT_RowSelectColumnDef';\nimport { getMRT_RowSpacerColumnDef } from './display-columns/getMRT_RowSpacerColumnDef';\nimport { useMRT_Effects } from './useMRT_Effects';\n\n/**\n * The MRT hook that wraps the TanStack useReactTable hook and adds additional functionality\n * @param definedTableOptions - table options with proper defaults set\n * @returns the MRT table instance\n */\nexport const useMRT_TableInstance = <TData extends MRT_RowData>(\n definedTableOptions: MRT_DefinedTableOptions<TData>,\n): MRT_TableInstance<TData> => {\n const lastSelectedRowId = useRef<null | string>(null);\n const actionCellRef = useRef<HTMLTableCellElement>(null);\n const bottomToolbarRef = useRef<HTMLDivElement>(null);\n const editInputRefs = useRef<Record<string, HTMLInputElement>>({});\n const filterInputRefs = useRef<Record<string, HTMLInputElement>>({});\n const searchInputRef = useRef<HTMLInputElement>(null);\n const tableContainerRef = useRef<HTMLDivElement>(null);\n const tableHeadCellRefs = useRef<Record<string, HTMLTableCellElement>>({});\n const tablePaperRef = useRef<HTMLDivElement>(null);\n const topToolbarRef = useRef<HTMLDivElement>(null);\n const tableHeadRef = useRef<HTMLTableSectionElement>(null);\n const tableFooterRef = useRef<HTMLTableSectionElement>(null);\n\n //transform initial state with proper column order\n const [initialState] = useState<Partial<MRT_TableState<TData>>>(() => {\n const initState = definedTableOptions.initialState ?? {};\n initState.columnOrder =\n initState.columnOrder ??\n getDefaultColumnOrderIds({\n ...definedTableOptions,\n state: {\n ...definedTableOptions.initialState,\n ...definedTableOptions.state,\n },\n } as MRT_StatefulTableOptions<TData>);\n initState.globalFilterFn = definedTableOptions.globalFilterFn ?? 'fuzzy';\n return initState;\n });\n\n definedTableOptions.initialState = initialState;\n\n const [actionCell, setActionCell] = useState<MRT_Cell<TData> | null>(initialState.actionCell ?? null);\n const [creatingRow, _setCreatingRow] = useState<MRT_Row<TData> | null>(initialState.creatingRow ?? null);\n const [columnFilterFns, setColumnFilterFns] = useState<MRT_ColumnFilterFnsState>(() =>\n Object.assign(\n {},\n ...getAllLeafColumnDefs(definedTableOptions.columns as MRT_ColumnDef<TData>[]).map((col) => ({\n [getColumnId(col)]:\n col.filterFn instanceof Function\n ? (col.filterFn.name ?? 'custom')\n : (col.filterFn ?? initialState?.columnFilterFns?.[getColumnId(col)] ?? getDefaultColumnFilterFn(col)),\n })),\n ),\n );\n const [columnOrder, onColumnOrderChange] = useState<MRT_ColumnOrderState>(initialState.columnOrder ?? []);\n const [columnResizing, onColumnResizingChange] = useState<MRT_ColumnSizingInfoState>(\n initialState.columnResizing ?? ({} as MRT_ColumnSizingInfoState),\n );\n const [density, setDensity] = useState<MRT_DensityState>(initialState?.density ?? 'comfortable');\n const [draggingColumn, setDraggingColumn] = useState<MRT_Column<TData> | null>(initialState.draggingColumn ?? null);\n const [draggingRow, setDraggingRow] = useState<MRT_Row<TData> | null>(initialState.draggingRow ?? null);\n const [editingCell, setEditingCell] = useState<MRT_Cell<TData> | null>(initialState.editingCell ?? null);\n const [editingRow, setEditingRow] = useState<MRT_Row<TData> | null>(initialState.editingRow ?? null);\n const [globalFilterFn, setGlobalFilterFn] = useState<MRT_FilterOption>(initialState.globalFilterFn ?? 'fuzzy');\n const [grouping, onGroupingChange] = useState<MRT_GroupingState>(initialState.grouping ?? []);\n const [hoveredColumn, setHoveredColumn] = useState<null | Partial<MRT_Column<TData>>>(\n initialState.hoveredColumn ?? null,\n );\n const [hoveredRow, setHoveredRow] = useState<null | Partial<MRT_Row<TData>>>(initialState.hoveredRow ?? null);\n const [isFullScreen, setIsFullScreen] = useState<boolean>(initialState?.isFullScreen ?? false);\n const [pagination, onPaginationChange] = useState<MRT_PaginationState>(\n initialState?.pagination ?? { pageIndex: 0, pageSize: 10 },\n );\n const [showAlertBanner, setShowAlertBanner] = useState<boolean>(initialState?.showAlertBanner ?? false);\n const [showColumnFilters, setShowColumnFilters] = useState<boolean>(initialState?.showColumnFilters ?? false);\n const [showGlobalFilter, setShowGlobalFilter] = useState<boolean>(initialState?.showGlobalFilter ?? false);\n const [showToolbarDropZone, setShowToolbarDropZone] = useState<boolean>(initialState?.showToolbarDropZone ?? false);\n\n definedTableOptions.state = {\n actionCell,\n columnFilterFns,\n columnOrder,\n columnResizing,\n creatingRow,\n density,\n draggingColumn,\n draggingRow,\n editingCell,\n editingRow,\n globalFilterFn,\n grouping,\n hoveredColumn,\n hoveredRow,\n isFullScreen,\n pagination,\n showAlertBanner,\n showColumnFilters,\n showGlobalFilter,\n showToolbarDropZone,\n ...definedTableOptions.state,\n };\n\n //The table options now include all state needed to help determine column visibility and order logic\n const statefulTableOptions = definedTableOptions as MRT_StatefulTableOptions<TData>;\n\n //don't recompute columnDefs while resizing column or dragging column/row\n const columnDefsRef = useRef<ReadonlyArray<MRT_ColumnDef<TData>>>([]);\n statefulTableOptions.columns =\n statefulTableOptions.state.columnResizing.isResizingColumn ||\n statefulTableOptions.state.draggingColumn ||\n statefulTableOptions.state.draggingRow\n ? columnDefsRef.current\n : prepareColumns({\n columnDefs: [\n ...([\n showRowPinningColumn(statefulTableOptions) && getMRT_RowPinningColumnDef(statefulTableOptions),\n showRowDragColumn(statefulTableOptions) && getMRT_RowDragColumnDef(statefulTableOptions),\n showRowActionsColumn(statefulTableOptions) && getMRT_RowActionsColumnDef(statefulTableOptions),\n showRowExpandColumn(statefulTableOptions) && getMRT_RowExpandColumnDef(statefulTableOptions),\n showRowSelectionColumn(statefulTableOptions) && getMRT_RowSelectColumnDef(statefulTableOptions),\n showRowNumbersColumn(statefulTableOptions) && getMRT_RowNumbersColumnDef(statefulTableOptions),\n ].filter(Boolean) as MRT_ColumnDef<TData>[]),\n ...statefulTableOptions.columns,\n ...([showRowSpacerColumn(statefulTableOptions) && getMRT_RowSpacerColumnDef(statefulTableOptions)].filter(\n Boolean,\n ) as MRT_ColumnDef<TData>[]),\n ],\n tableOptions: statefulTableOptions,\n });\n columnDefsRef.current = statefulTableOptions.columns;\n\n //if loading, generate blank rows to show skeleton loaders\n statefulTableOptions.data = useMemo(\n () =>\n (statefulTableOptions.state.isLoading || statefulTableOptions.state.showSkeletons) &&\n !statefulTableOptions.data.length\n ? [...Array(Math.min(statefulTableOptions.state.pagination.pageSize, 20)).fill(null)].map(() =>\n Object.assign(\n {},\n ...getAllLeafColumnDefs(columnDefsRef.current).map((col) => ({\n [getColumnId(col)]: null,\n })),\n ),\n )\n : statefulTableOptions.data,\n [\n statefulTableOptions.data,\n statefulTableOptions.state.isLoading,\n statefulTableOptions.state.pagination.pageSize,\n statefulTableOptions.state.showSkeletons,\n ],\n );\n\n const [features] = useState<MRT_TableFeatures>(() =>\n tableFeatures({\n ...MRT_DefaultTableFeatures,\n aggregationFns: {\n ...MRT_DefaultTableFeatures.aggregationFns,\n ...statefulTableOptions.aggregationFns,\n },\n filterFns: {\n ...MRT_DefaultTableFeatures.filterFns,\n ...statefulTableOptions.filterFns,\n },\n sortFns: {\n ...MRT_DefaultTableFeatures.sortFns,\n ...statefulTableOptions.sortFns,\n },\n }),\n );\n\n const tableOptions = {\n onColumnOrderChange,\n onColumnResizingChange,\n onGroupingChange,\n onPaginationChange,\n ...statefulTableOptions,\n features,\n globalFilterFn: globalFilterFn ?? 'fuzzy',\n };\n\n const reactTable = useTable(tableOptions);\n\n const table = Object.assign(reactTable, {\n getLeftLeafColumns: () => reactTable.getStartLeafColumns(),\n getPaginationRowModel: () => reactTable.getPaginatedRowModel(),\n getRightLeafColumns: () => reactTable.getEndLeafColumns(),\n refs: {\n actionCellRef,\n bottomToolbarRef,\n editInputRefs,\n filterInputRefs,\n lastSelectedRowId,\n searchInputRef,\n tableContainerRef,\n tableFooterRef,\n tableHeadCellRefs,\n tableHeadRef,\n tablePaperRef,\n topToolbarRef,\n },\n setActionCell: statefulTableOptions.onActionCellChange ?? setActionCell,\n setColumnFilterFns: statefulTableOptions.onColumnFilterFnsChange ?? setColumnFilterFns,\n setCreatingRow: (row: MRT_Updater<MRT_Row<TData> | null | true>) => {\n const nextRow = row === true ? createRow(table) : row;\n const handled = statefulTableOptions?.onCreatingRowChange?.(nextRow as MRT_Row<TData> | null);\n if (handled === undefined || handled === null) {\n _setCreatingRow(nextRow as MRT_Row<TData> | null);\n }\n },\n setDensity: statefulTableOptions.onDensityChange ?? setDensity,\n setDraggingColumn: statefulTableOptions.onDraggingColumnChange ?? setDraggingColumn,\n setDraggingRow: statefulTableOptions.onDraggingRowChange ?? setDraggingRow,\n setEditingCell: statefulTableOptions.onEditingCellChange ?? setEditingCell,\n setEditingRow: statefulTableOptions.onEditingRowChange ?? setEditingRow,\n setGlobalFilterFn: statefulTableOptions.onGlobalFilterFnChange ?? setGlobalFilterFn,\n setHoveredColumn: statefulTableOptions.onHoveredColumnChange ?? setHoveredColumn,\n setHoveredRow: statefulTableOptions.onHoveredRowChange ?? setHoveredRow,\n setIsFullScreen: statefulTableOptions.onIsFullScreenChange ?? setIsFullScreen,\n setShowAlertBanner: statefulTableOptions.onShowAlertBannerChange ?? setShowAlertBanner,\n setShowColumnFilters: statefulTableOptions.onShowColumnFiltersChange ?? setShowColumnFilters,\n setShowGlobalFilter: statefulTableOptions.onShowGlobalFilterChange ?? setShowGlobalFilter,\n setShowToolbarDropZone: statefulTableOptions.onShowToolbarDropZoneChange ?? setShowToolbarDropZone,\n }) as MRT_TableInstance<TData>;\n\n useMRT_Effects(table);\n\n return table;\n};\n","import { type MRT_RowData, type MRT_TableInstance, type MRT_TableOptions } from '../types';\nimport { useMRT_TableInstance } from './useMRT_TableInstance';\nimport { useMRT_TableOptions } from './useMRT_TableOptions';\n\nexport const useMaterialReactTable = <TData extends MRT_RowData>(\n tableOptions: MRT_TableOptions<TData>,\n): MRT_TableInstance<TData> => useMRT_TableInstance(useMRT_TableOptions(tableOptions));\n","import { Collapse, LinearProgress, type LinearProgressProps } from '@mui/material';\n\nimport { type MRT_RowData, type MRT_TableInstance } from '../../types';\nimport { parseFromValuesOrFunc } from '../../utils/utils';\n\nexport interface MRT_LinearProgressBarProps<TData extends MRT_RowData> extends LinearProgressProps {\n isTopToolbar: boolean;\n table: MRT_TableInstance<TData>;\n}\n\nexport const MRT_LinearProgressBar = <TData extends MRT_RowData>({\n isTopToolbar,\n table,\n ...rest\n}: MRT_LinearProgressBarProps<TData>): JSX.Element => {\n const {\n options: { muiLinearProgressProps },\n } = table;\n const { isSaving, showProgressBars } = table.state;\n\n const linearProgressProps = {\n ...parseFromValuesOrFunc(muiLinearProgressProps, {\n isTopToolbar,\n table,\n }),\n ...rest,\n };\n\n return (\n <Collapse\n in={showProgressBars !== false && (showProgressBars || isSaving)}\n mountOnEnter\n sx={{\n bottom: isTopToolbar ? 0 : undefined,\n position: 'absolute',\n top: !isTopToolbar ? 0 : undefined,\n width: '100%',\n }}\n unmountOnExit\n >\n <LinearProgress aria-busy=\"true\" aria-label=\"Loading\" sx={{ position: 'relative' }} {...linearProgressProps} />\n </Collapse>\n );\n};\n","import {\n Box,\n IconButton,\n InputLabel,\n MenuItem,\n Pagination,\n PaginationItem,\n type PaginationProps,\n Select,\n type SelectProps,\n Tooltip,\n Typography,\n useMediaQuery,\n} from '@mui/material';\nimport { useTheme } from '@mui/material/styles';\n\nimport { type MRT_RowData, type MRT_TableInstance } from '../../types';\nimport { flipIconStyles, getCommonTooltipProps } from '../../utils/style.utils';\nimport { parseFromValuesOrFunc } from '../../utils/utils';\n\nconst defaultRowsPerPage = [5, 10, 15, 20, 25, 30, 50, 100];\n\nexport interface MRT_TablePaginationProps<TData extends MRT_RowData> extends Partial<\n PaginationProps & {\n disabled?: boolean;\n rowsPerPageOptions?: number[] | { label: string; value: number }[];\n SelectProps?: Partial<SelectProps>;\n showRowsPerPage?: boolean;\n }\n> {\n position?: 'bottom' | 'top';\n table: MRT_TableInstance<TData>;\n}\n\nexport const MRT_TablePagination = <TData extends MRT_RowData>({\n position = 'bottom',\n table,\n ...rest\n}: MRT_TablePaginationProps<TData>): JSX.Element => {\n const theme = useTheme();\n const isMobile = useMediaQuery('(max-width: 720px)');\n\n const {\n options: {\n enableToolbarInternalActions,\n icons: { ChevronLeftIcon, ChevronRightIcon, FirstPageIcon, LastPageIcon },\n id,\n localization,\n muiPaginationProps,\n paginationDisplayMode,\n },\n } = table;\n const {\n pagination: { pageIndex = 0, pageSize = 10 },\n } = table.state;\n\n const paginationProps = {\n ...parseFromValuesOrFunc(muiPaginationProps, {\n table,\n }),\n ...rest,\n };\n\n const totalRowCount = table.getRowCount();\n const numberOfPages = table.getPageCount();\n const showFirstLastPageButtons = numberOfPages > 2;\n const firstRowIndex = pageIndex * pageSize;\n const lastRowIndex = Math.min(pageIndex * pageSize + pageSize, totalRowCount);\n\n const {\n disabled = false,\n rowsPerPageOptions = defaultRowsPerPage,\n SelectProps = {},\n showFirstButton = showFirstLastPageButtons,\n showLastButton = showFirstLastPageButtons,\n showRowsPerPage = true,\n ...restPaginationProps\n } = paginationProps ?? {};\n\n const disableBack = pageIndex <= 0 || disabled;\n const disableNext = lastRowIndex >= totalRowCount || disabled;\n\n if (isMobile && SelectProps?.native !== false) {\n SelectProps.native = true;\n }\n\n const tooltipProps = getCommonTooltipProps();\n\n return (\n <Box\n className=\"MuiTablePagination-root\"\n sx={{\n alignItems: 'center',\n display: 'flex',\n flexWrap: 'wrap',\n gap: '8px',\n justifyContent: { md: 'space-between', sm: 'center' },\n justifySelf: 'flex-end',\n mt: position === 'top' && enableToolbarInternalActions ? '3rem' : undefined,\n position: 'relative',\n px: '8px',\n py: '12px',\n zIndex: 2,\n }}\n >\n {showRowsPerPage && (\n <Box sx={{ alignItems: 'center', display: 'flex', gap: '8px' }}>\n <InputLabel htmlFor={`mrt-rows-per-page-${id}`} sx={{ mb: 0 }}>\n {localization.rowsPerPage}\n </InputLabel>\n <Select\n disabled={disabled}\n disableUnderline\n inputProps={{\n 'aria-label': localization.rowsPerPage,\n id: `mrt-rows-per-page-${id}`,\n }}\n label={localization.rowsPerPage}\n MenuProps={{ disableScrollLock: true }}\n onChange={(event) => table.setPageSize(Number(event.target.value))}\n sx={{ mb: 0 }}\n value={pageSize}\n variant=\"standard\"\n {...SelectProps}\n >\n {rowsPerPageOptions.map((option) => {\n const value = typeof option !== 'number' ? option.value : option;\n const label = typeof option !== 'number' ? option.label : `${option}`;\n return (\n SelectProps?.children ??\n (SelectProps?.native ? (\n <option key={value} value={value}>\n {label}\n </option>\n ) : (\n <MenuItem key={value} sx={{ m: 0 }} value={value}>\n {label}\n </MenuItem>\n ))\n );\n })}\n </Select>\n </Box>\n )}\n {paginationDisplayMode === 'pages' ? (\n <Pagination\n count={numberOfPages}\n disabled={disabled}\n onChange={(_e, newPageIndex) => table.setPageIndex(newPageIndex - 1)}\n page={pageIndex + 1}\n renderItem={(item) => (\n <PaginationItem\n slots={{\n first: FirstPageIcon,\n last: LastPageIcon,\n next: ChevronRightIcon,\n previous: ChevronLeftIcon,\n }}\n {...item}\n />\n )}\n showFirstButton={showFirstButton}\n showLastButton={showLastButton}\n {...restPaginationProps}\n />\n ) : paginationDisplayMode === 'default' ? (\n <>\n <Typography align=\"center\" component=\"span\" sx={{ m: '0 4px', minWidth: '8ch' }} variant=\"body2\">{`${\n lastRowIndex === 0 ? 0 : (firstRowIndex + 1).toLocaleString(localization.language)\n }-${lastRowIndex.toLocaleString(localization.language)} ${\n localization.of\n } ${totalRowCount.toLocaleString(localization.language)}`}</Typography>\n <Box\n sx={{\n gap: 'xs',\n }}\n >\n {showFirstButton && (\n <Tooltip {...tooltipProps} title={localization.goToFirstPage}>\n <span>\n <IconButton\n aria-label={localization.goToFirstPage}\n disabled={disableBack}\n onClick={() => table.firstPage()}\n size=\"small\"\n >\n <FirstPageIcon {...flipIconStyles(theme)} />\n </IconButton>\n </span>\n </Tooltip>\n )}\n <Tooltip {...tooltipProps} title={localization.goToPreviousPage}>\n <span>\n <IconButton\n aria-label={localization.goToPreviousPage}\n disabled={disableBack}\n onClick={() => table.previousPage()}\n size=\"small\"\n >\n <ChevronLeftIcon {...flipIconStyles(theme)} />\n </IconButton>\n </span>\n </Tooltip>\n <Tooltip {...tooltipProps} title={localization.goToNextPage}>\n <span>\n <IconButton\n aria-label={localization.goToNextPage}\n disabled={disableNext}\n onClick={() => table.nextPage()}\n size=\"small\"\n >\n <ChevronRightIcon {...flipIconStyles(theme)} />\n </IconButton>\n </span>\n </Tooltip>\n {showLastButton && (\n <Tooltip {...tooltipProps} title={localization.goToLastPage}>\n <span>\n <IconButton\n aria-label={localization.goToLastPage}\n disabled={disableNext}\n onClick={() => table.lastPage()}\n size=\"small\"\n >\n <LastPageIcon {...flipIconStyles(theme)} />\n </IconButton>\n </span>\n </Tooltip>\n )}\n </Box>\n </>\n ) : null}\n </Box>\n );\n};\n","import { Box, type BoxProps, Fade, Typography } from '@mui/material';\nimport { alpha, type CSSObject } from '@mui/material/styles';\nimport { type DragEvent, useEffect, useRef } from 'react';\n\nimport { type MRT_RowData, type MRT_TableInstance } from '../../types';\nimport { parseFromValuesOrFunc } from '../../utils/utils';\n\nexport interface MRT_ToolbarDropZoneProps<TData extends MRT_RowData> extends BoxProps {\n table: MRT_TableInstance<TData>;\n}\n\nexport const MRT_ToolbarDropZone = <TData extends MRT_RowData>({\n table,\n ...rest\n}: MRT_ToolbarDropZoneProps<TData>): JSX.Element => {\n const {\n options: { enableGrouping, localization },\n setHoveredColumn,\n setShowToolbarDropZone,\n } = table;\n\n const { draggingColumn, grouping, hoveredColumn, showToolbarDropZone } = table.state;\n\n const handleDragEnter = (_event: DragEvent<HTMLDivElement>) => {\n setHoveredColumn({ id: 'drop-zone' });\n };\n\n const handleDragOver = (e: DragEvent) => {\n e.preventDefault();\n };\n\n const isShowToolbarDropZoneControlled = table.options.state?.showToolbarDropZone !== undefined;\n const setShowToolbarDropZoneRef = useRef(setShowToolbarDropZone);\n\n useEffect(() => {\n setShowToolbarDropZoneRef.current = setShowToolbarDropZone;\n });\n\n useEffect(() => {\n if (isShowToolbarDropZoneControlled) {\n setShowToolbarDropZoneRef.current(\n !!enableGrouping &&\n !!draggingColumn &&\n draggingColumn.columnDef.enableGrouping !== false &&\n !grouping.includes(draggingColumn.id),\n );\n }\n }, [draggingColumn, enableGrouping, grouping, isShowToolbarDropZoneControlled]);\n\n return (\n <Fade in={showToolbarDropZone}>\n <Box\n className=\"Mui-ToolbarDropZone\"\n onDragEnter={handleDragEnter}\n onDragOver={handleDragOver}\n {...rest}\n sx={(theme) => ({\n alignItems: 'center',\n backdropFilter: 'blur(4px)',\n backgroundColor: alpha(theme.palette.info.main, hoveredColumn?.id === 'drop-zone' ? 0.2 : 0.1),\n border: `dashed ${theme.palette.info.main} 2px`,\n boxSizing: 'border-box',\n display: 'flex',\n height: '100%',\n justifyContent: 'center',\n position: 'absolute',\n width: '100%',\n zIndex: 4,\n ...(parseFromValuesOrFunc(rest?.sx, theme) as CSSObject),\n })}\n >\n <Typography\n sx={{\n fontStyle: 'italic',\n }}\n >\n {localization.dropToGroupBy.replace('{column}', draggingColumn?.columnDef?.header ?? '')}\n </Typography>\n </Box>\n </Fade>\n );\n};\n","import { Box, type BoxProps, useMediaQuery } from '@mui/material';\nimport { alpha, type CSSObject } from '@mui/material/styles';\n\nimport { type MRT_RowData, type MRT_TableInstance } from '../../types';\nimport { getCommonToolbarStyles } from '../../utils/style.utils';\nimport { parseFromValuesOrFunc } from '../../utils/utils';\nimport { MRT_LinearProgressBar } from './MRT_LinearProgressBar';\nimport { MRT_TablePagination } from './MRT_TablePagination';\nimport { MRT_ToolbarAlertBanner } from './MRT_ToolbarAlertBanner';\nimport { MRT_ToolbarDropZone } from './MRT_ToolbarDropZone';\n\nexport interface MRT_BottomToolbarProps<TData extends MRT_RowData> extends BoxProps {\n table: MRT_TableInstance<TData>;\n}\n\nexport const MRT_BottomToolbar = <TData extends MRT_RowData>({\n table,\n ...rest\n}: MRT_BottomToolbarProps<TData>): JSX.Element => {\n const {\n options: {\n enablePagination,\n muiBottomToolbarProps,\n positionPagination,\n positionToolbarAlertBanner,\n positionToolbarDropZone,\n renderBottomToolbarCustomActions,\n },\n refs: { bottomToolbarRef },\n } = table;\n const { isFullScreen } = table.state;\n\n const isMobile = useMediaQuery('(max-width:720px)');\n\n const toolbarProps = {\n ...parseFromValuesOrFunc(muiBottomToolbarProps, { table }),\n ...rest,\n };\n\n const stackAlertBanner = isMobile || !!renderBottomToolbarCustomActions;\n\n return (\n <Box\n {...toolbarProps}\n ref={(node: HTMLDivElement) => {\n if (node) {\n bottomToolbarRef.current = node;\n if (toolbarProps?.ref && typeof toolbarProps.ref === 'object') {\n toolbarProps.ref.current = node;\n }\n }\n }}\n sx={(theme) => ({\n ...getCommonToolbarStyles({ table, theme }),\n bottom: isFullScreen ? '0' : undefined,\n boxShadow: `0 1px 2px -1px ${alpha(theme.palette.grey[700], 0.5)} inset`,\n left: 0,\n position: isFullScreen ? 'fixed' : 'relative',\n right: 0,\n ...(parseFromValuesOrFunc(toolbarProps?.sx, theme) as CSSObject),\n })}\n >\n <MRT_LinearProgressBar isTopToolbar={false} table={table} />\n {positionToolbarAlertBanner === 'bottom' && (\n <MRT_ToolbarAlertBanner stackAlertBanner={stackAlertBanner} table={table} />\n )}\n {['both', 'bottom'].includes(positionToolbarDropZone ?? '') && <MRT_ToolbarDropZone table={table} />}\n <Box\n sx={{\n alignItems: 'center',\n boxSizing: 'border-box',\n display: 'flex',\n justifyContent: 'space-between',\n p: '0.5rem',\n width: '100%',\n }}\n >\n {renderBottomToolbarCustomActions ? renderBottomToolbarCustomActions({ table }) : <span />}\n <Box\n sx={{\n display: 'flex',\n justifyContent: 'flex-end',\n position: stackAlertBanner ? 'relative' : 'absolute',\n right: 0,\n top: 0,\n }}\n >\n {enablePagination && ['both', 'bottom'].includes(positionPagination ?? '') && (\n <MRT_TablePagination position=\"bottom\" table={table} />\n )}\n </Box>\n </Box>\n </Box>\n );\n};\n","import { Box, type BoxProps } from '@mui/material';\nimport { type CSSObject } from '@mui/material/styles';\n\nimport { type MRT_RowData, type MRT_TableInstance } from '../../types';\nimport { parseFromValuesOrFunc } from '../../utils/utils';\nimport { MRT_ShowHideColumnsButton } from '../buttons/MRT_ShowHideColumnsButton';\nimport { MRT_ToggleDensePaddingButton } from '../buttons/MRT_ToggleDensePaddingButton';\nimport { MRT_ToggleFiltersButton } from '../buttons/MRT_ToggleFiltersButton';\nimport { MRT_ToggleFullScreenButton } from '../buttons/MRT_ToggleFullScreenButton';\nimport { MRT_ToggleGlobalFilterButton } from '../buttons/MRT_ToggleGlobalFilterButton';\n\nexport interface MRT_ToolbarInternalButtonsProps<TData extends MRT_RowData> extends BoxProps {\n table: MRT_TableInstance<TData>;\n}\n\nexport const MRT_ToolbarInternalButtons = <TData extends MRT_RowData>({\n table,\n ...rest\n}: MRT_ToolbarInternalButtonsProps<TData>): JSX.Element => {\n const {\n options: {\n columnFilterDisplayMode,\n enableColumnFilters,\n enableColumnOrdering,\n enableColumnPinning,\n enableDensityToggle,\n enableFilters,\n enableFullScreenToggle,\n enableGlobalFilter,\n enableHiding,\n initialState,\n renderToolbarInternalActions,\n },\n } = table;\n\n return (\n <Box\n {...rest}\n sx={(theme) => ({\n alignItems: 'center',\n display: 'flex',\n zIndex: 3,\n ...(parseFromValuesOrFunc(rest?.sx, theme) as CSSObject),\n })}\n >\n {renderToolbarInternalActions?.({\n table,\n }) ?? (\n <>\n {enableFilters && enableGlobalFilter && !initialState?.showGlobalFilter && (\n <MRT_ToggleGlobalFilterButton table={table} />\n )}\n {enableFilters && enableColumnFilters && columnFilterDisplayMode !== 'popover' && (\n <MRT_ToggleFiltersButton table={table} />\n )}\n {(enableHiding || enableColumnOrdering || enableColumnPinning) && <MRT_ShowHideColumnsButton table={table} />}\n {enableDensityToggle && <MRT_ToggleDensePaddingButton table={table} />}\n {enableFullScreenToggle && <MRT_ToggleFullScreenButton table={table} />}\n </>\n )}\n </Box>\n );\n};\n","import { Box, useMediaQuery } from '@mui/material';\nimport { type CSSObject } from '@mui/material/styles';\n\nimport { type MRT_RowData, type MRT_TableInstance } from '../../types';\nimport { getCommonToolbarStyles } from '../../utils/style.utils';\nimport { parseFromValuesOrFunc } from '../../utils/utils';\nimport { MRT_GlobalFilterTextField } from '../inputs/MRT_GlobalFilterTextField';\nimport { MRT_LinearProgressBar } from './MRT_LinearProgressBar';\nimport { MRT_TablePagination } from './MRT_TablePagination';\nimport { MRT_ToolbarAlertBanner } from './MRT_ToolbarAlertBanner';\nimport { MRT_ToolbarDropZone } from './MRT_ToolbarDropZone';\nimport { MRT_ToolbarInternalButtons } from './MRT_ToolbarInternalButtons';\n\nexport interface MRT_TopToolbarProps<TData extends MRT_RowData> {\n table: MRT_TableInstance<TData>;\n}\n\nexport const MRT_TopToolbar = <TData extends MRT_RowData>({ table }: MRT_TopToolbarProps<TData>): JSX.Element => {\n const {\n options: {\n enableGlobalFilter,\n enablePagination,\n enableToolbarInternalActions,\n muiTopToolbarProps,\n positionGlobalFilter,\n positionPagination,\n positionToolbarAlertBanner,\n positionToolbarDropZone,\n renderTopToolbarCustomActions,\n },\n refs: { topToolbarRef },\n } = table;\n\n const { isFullScreen, showGlobalFilter } = table.state;\n\n const isMobile = useMediaQuery('(max-width:720px)');\n const isTablet = useMediaQuery('(max-width:1024px)');\n\n const toolbarProps = parseFromValuesOrFunc(muiTopToolbarProps, { table });\n\n const stackAlertBanner = isMobile || !!renderTopToolbarCustomActions || (showGlobalFilter && isTablet);\n\n const globalFilterProps = {\n sx: !isTablet\n ? {\n zIndex: 2,\n }\n : undefined,\n table,\n };\n\n return (\n <Box\n {...toolbarProps}\n ref={(ref: HTMLDivElement) => {\n topToolbarRef.current = ref;\n if (toolbarProps?.ref && typeof toolbarProps.ref === 'object') {\n toolbarProps.ref.current = ref;\n }\n }}\n sx={(theme) => ({\n ...getCommonToolbarStyles({ table, theme }),\n position: isFullScreen ? 'sticky' : 'relative',\n top: isFullScreen ? '0' : undefined,\n ...(parseFromValuesOrFunc(toolbarProps?.sx, theme) as CSSObject),\n })}\n >\n {positionToolbarAlertBanner === 'top' && (\n <MRT_ToolbarAlertBanner stackAlertBanner={stackAlertBanner} table={table} />\n )}\n {['both', 'top'].includes(positionToolbarDropZone ?? '') && <MRT_ToolbarDropZone table={table} />}\n <Box\n sx={{\n alignItems: 'flex-start',\n boxSizing: 'border-box',\n display: 'flex',\n gap: '0.5rem',\n justifyContent: 'space-between',\n p: '0.5rem',\n position: stackAlertBanner ? 'relative' : 'absolute',\n right: 0,\n top: 0,\n width: '100%',\n }}\n >\n {enableGlobalFilter && positionGlobalFilter === 'left' && <MRT_GlobalFilterTextField {...globalFilterProps} />}\n {renderTopToolbarCustomActions?.({ table }) ?? <span />}\n {enableToolbarInternalActions ? (\n <Box\n sx={{\n alignItems: 'center',\n display: 'flex',\n flexWrap: 'wrap-reverse',\n gap: '0.5rem',\n justifyContent: 'flex-end',\n }}\n >\n {enableGlobalFilter && positionGlobalFilter === 'right' && (\n <MRT_GlobalFilterTextField {...globalFilterProps} />\n )}\n <MRT_ToolbarInternalButtons table={table} />\n </Box>\n ) : (\n enableGlobalFilter && positionGlobalFilter === 'right' && <MRT_GlobalFilterTextField {...globalFilterProps} />\n )}\n </Box>\n {enablePagination && ['both', 'top'].includes(positionPagination ?? '') && (\n <MRT_TablePagination position=\"top\" table={table} />\n )}\n <MRT_LinearProgressBar isTopToolbar table={table} />\n </Box>\n );\n};\n","import { Menu, type MenuProps } from '@mui/material';\n\nimport { type MRT_RowData, type MRT_TableInstance } from '../../types';\nimport { openEditingCell } from '../../utils/cell.utils';\nimport { parseFromValuesOrFunc } from '../../utils/utils';\nimport { MRT_ActionMenuItem } from './MRT_ActionMenuItem';\n\nexport interface MRT_CellActionMenuProps<TData extends MRT_RowData> extends Partial<MenuProps> {\n table: MRT_TableInstance<TData>;\n}\n\nexport const MRT_CellActionMenu = <TData extends MRT_RowData>({\n table,\n ...rest\n}: MRT_CellActionMenuProps<TData>): JSX.Element | false => {\n const {\n options: {\n editDisplayMode,\n enableClickToCopy,\n enableEditing,\n icons: { ContentCopy, EditIcon },\n localization,\n mrtTheme: { menuBackgroundColor },\n renderCellActionMenuItems,\n },\n refs: { actionCellRef },\n } = table;\n const { actionCell, density } = table.state;\n const cell = actionCell!;\n const { row } = cell;\n const { column } = cell;\n const { columnDef } = column;\n\n const handleClose = (event?: { stopPropagation?: () => void }) => {\n event?.stopPropagation?.();\n table.setActionCell(null);\n actionCellRef.current = null;\n };\n\n const internalMenuItems = [\n (parseFromValuesOrFunc(enableClickToCopy, cell) === 'context-menu' ||\n parseFromValuesOrFunc(columnDef.enableClickToCopy, cell) === 'context-menu') && (\n <MRT_ActionMenuItem\n icon={<ContentCopy />}\n key={'mrt-copy'}\n label={localization.copy}\n onClick={(event) => {\n event.stopPropagation();\n navigator.clipboard.writeText(cell.getValue() as string);\n handleClose();\n }}\n table={table}\n />\n ),\n parseFromValuesOrFunc(enableEditing, row) && editDisplayMode === 'cell' && (\n <MRT_ActionMenuItem\n icon={<EditIcon />}\n key={'mrt-edit'}\n label={localization.edit}\n onClick={() => {\n openEditingCell({ cell, table });\n handleClose();\n }}\n table={table}\n />\n ),\n ].filter(Boolean);\n\n const renderActionProps = {\n cell,\n closeMenu: handleClose,\n column,\n internalMenuItems,\n row,\n table,\n };\n\n const menuItems =\n columnDef.renderCellActionMenuItems?.(renderActionProps) ?? renderCellActionMenuItems?.(renderActionProps);\n\n return (\n (!!menuItems?.length || !!internalMenuItems?.length) && (\n <Menu\n anchorEl={actionCellRef.current}\n disableScrollLock\n onClick={(event) => event.stopPropagation()}\n onClose={handleClose}\n open={!!cell}\n slotProps={{\n list: {\n dense: density === 'compact',\n sx: {\n backgroundColor: menuBackgroundColor,\n },\n },\n }}\n transformOrigin={{ horizontal: -100, vertical: 8 }}\n {...rest}\n >\n {menuItems ?? internalMenuItems}\n </Menu>\n )\n );\n};\n","import { Dialog, DialogActions, DialogContent, type DialogProps, DialogTitle, Stack } from '@mui/material';\n\nimport { type MRT_Row, type MRT_RowData, type MRT_TableInstance } from '../../types';\nimport { parseFromValuesOrFunc } from '../../utils/utils';\nimport { MRT_EditActionButtons } from '../buttons/MRT_EditActionButtons';\nimport { MRT_EditCellTextField } from '../inputs/MRT_EditCellTextField';\n\nexport interface MRT_EditRowModalProps<TData extends MRT_RowData> extends Partial<DialogProps> {\n open: boolean;\n table: MRT_TableInstance<TData>;\n}\n\nexport const MRT_EditRowModal = <TData extends MRT_RowData>({\n open,\n table,\n ...rest\n}: MRT_EditRowModalProps<TData>): JSX.Element => {\n const {\n options: {\n localization,\n muiCreateRowModalProps,\n muiEditRowDialogProps,\n onCreatingRowCancel,\n onEditingRowCancel,\n renderCreateRowDialogContent,\n renderEditRowDialogContent,\n },\n setCreatingRow,\n setEditingRow,\n } = table;\n const { creatingRow, editingRow } = table.state;\n const row = (creatingRow ?? editingRow) as MRT_Row<TData>;\n\n const dialogProps = {\n ...parseFromValuesOrFunc(muiEditRowDialogProps, { row, table }),\n ...(creatingRow && parseFromValuesOrFunc(muiCreateRowModalProps, { row, table })),\n ...rest,\n };\n\n const internalEditComponents = row\n .getAllCells()\n .filter((cell) => cell.column.columnDef.columnDefType === 'data')\n .map((cell) => <MRT_EditCellTextField cell={cell} key={cell.id} table={table} />);\n\n return (\n <Dialog\n fullWidth\n maxWidth=\"xs\"\n onClose={(event, reason) => {\n if (creatingRow) {\n onCreatingRowCancel?.({ row, table });\n setCreatingRow(null);\n } else {\n onEditingRowCancel?.({ row, table });\n setEditingRow(null);\n }\n row._valuesCache = {}; //reset values cache\n dialogProps.onClose?.(event, reason);\n }}\n open={open}\n {...dialogProps}\n >\n {((creatingRow &&\n renderCreateRowDialogContent?.({\n internalEditComponents,\n row,\n table,\n })) ||\n renderEditRowDialogContent?.({\n internalEditComponents,\n row,\n table,\n })) ?? (\n <>\n <DialogTitle sx={{ textAlign: 'center' }}>{localization.edit}</DialogTitle>\n <DialogContent>\n <form onSubmit={(e) => e.preventDefault()}>\n <Stack\n sx={{\n gap: '32px',\n paddingTop: '16px',\n width: '100%',\n }}\n >\n {internalEditComponents}\n </Stack>\n </form>\n </DialogContent>\n <DialogActions sx={{ p: '1.25rem' }}>\n <MRT_EditActionButtons row={row} table={table} variant=\"text\" />\n </DialogActions>\n </>\n )}\n </Dialog>\n );\n};\n","import { type Range, useVirtualizer } from '@tanstack/react-virtual';\nimport { useCallback, useMemo } from 'react';\n\nimport { type MRT_ColumnVirtualizer, type MRT_RowData, type MRT_TableInstance } from '../types';\nimport { parseFromValuesOrFunc } from '../utils/utils';\nimport { extraIndexRangeExtractor } from '../utils/virtualization.utils';\n\nexport const useMRT_ColumnVirtualizer = <\n TData extends MRT_RowData,\n TScrollElement extends Element | Window = HTMLDivElement,\n TItemElement extends Element = HTMLTableCellElement,\n>(\n table: MRT_TableInstance<TData>,\n): MRT_ColumnVirtualizer<TScrollElement, TItemElement> | undefined => {\n const {\n options: {\n columnVirtualizerInstanceRef,\n columnVirtualizerOptions,\n enableColumnPinning,\n enableColumnVirtualization,\n },\n refs: { tableContainerRef },\n } = table;\n const { draggingColumn } = table.state;\n\n const columnVirtualizerProps = enableColumnVirtualization\n ? parseFromValuesOrFunc(columnVirtualizerOptions, {\n table,\n })\n : undefined;\n\n const visibleColumns = table.getVisibleLeafColumns();\n\n const [leftPinnedIndexes, rightPinnedIndexes] = useMemo(\n () =>\n enableColumnPinning\n ? [\n visibleColumns.filter((c) => c.getIsPinned() === 'start').map((c) => c.getPinnedIndex()),\n visibleColumns\n .filter((c) => c.getIsPinned() === 'end')\n .map((column) => visibleColumns.length - column.getPinnedIndex() - 1)\n .sort((a, b) => a - b),\n ]\n : [[], []],\n [enableColumnPinning, visibleColumns],\n );\n\n const numPinnedLeft = leftPinnedIndexes.length;\n const numPinnedRight = rightPinnedIndexes.length;\n\n const draggingColumnIndex = useMemo(\n () => (draggingColumn?.id ? visibleColumns.findIndex((c) => c.id === draggingColumn?.id) : undefined),\n [draggingColumn?.id, visibleColumns],\n );\n\n const columnVirtualizer = useVirtualizer({\n count: visibleColumns.length,\n enabled: !!enableColumnVirtualization,\n estimateSize: (index) => visibleColumns[index].getSize(),\n getScrollElement: () => tableContainerRef.current,\n horizontal: true,\n overscan: 3,\n rangeExtractor: useCallback(\n (range: Range) => {\n const newIndexes = extraIndexRangeExtractor(range, draggingColumnIndex);\n if (!numPinnedLeft && !numPinnedRight) {\n return newIndexes;\n }\n return [...new Set([...leftPinnedIndexes, ...newIndexes, ...rightPinnedIndexes])];\n },\n [leftPinnedIndexes, rightPinnedIndexes, draggingColumnIndex, numPinnedLeft, numPinnedRight],\n ),\n ...columnVirtualizerProps,\n }) as unknown as MRT_ColumnVirtualizer<TScrollElement, TItemElement>;\n\n if (!enableColumnVirtualization) {\n return undefined;\n }\n\n const virtualColumns = columnVirtualizer.getVirtualItems();\n columnVirtualizer.virtualColumns = virtualColumns;\n const numColumns = virtualColumns.length;\n\n if (numColumns) {\n const totalSize = columnVirtualizer.getTotalSize();\n\n const leftNonPinnedStart = virtualColumns[numPinnedLeft]?.start || 0;\n const leftNonPinnedEnd = virtualColumns[leftPinnedIndexes.length - 1]?.end || 0;\n\n const rightNonPinnedStart = virtualColumns[numColumns - numPinnedRight]?.start || 0;\n const rightNonPinnedEnd = virtualColumns[numColumns - numPinnedRight - 1]?.end || 0;\n\n columnVirtualizer.virtualPaddingLeft = leftNonPinnedStart - leftNonPinnedEnd;\n\n columnVirtualizer.virtualPaddingRight =\n totalSize - rightNonPinnedEnd - (numPinnedRight ? totalSize - rightNonPinnedStart : 0);\n }\n\n if (columnVirtualizerInstanceRef) {\n // @ts-expect-error: the ref is typed for the default element generics, this virtualizer uses TScrollElement and TItemElement\n columnVirtualizerInstanceRef.current = columnVirtualizer;\n }\n\n return columnVirtualizer;\n};\n","import { Table, type TableProps } from '@mui/material';\nimport { type CSSObject } from '@mui/material/styles';\n\nimport { useMRT_ColumnVirtualizer } from '../../hooks/useMRT_ColumnVirtualizer';\nimport { type MRT_RowData, type MRT_TableInstance } from '../../types';\nimport { parseCSSVarId } from '../../utils/style.utils';\nimport { parseFromValuesOrFunc } from '../../utils/utils';\nimport { Memo_MRT_TableBody, MRT_TableBody } from '../body/MRT_TableBody';\nimport { MRT_TableFooter } from '../footer/MRT_TableFooter';\nimport { MRT_TableHead } from '../head/MRT_TableHead';\n\nexport interface MRT_TableProps<TData extends MRT_RowData> extends TableProps {\n table: MRT_TableInstance<TData>;\n}\n\nexport const MRT_Table = <TData extends MRT_RowData>({ table, ...rest }: MRT_TableProps<TData>): JSX.Element => {\n const {\n getFlatHeaders,\n options: {\n enableStickyHeader,\n enableTableFooter,\n enableTableHead,\n layoutMode,\n memoMode,\n muiTableProps,\n renderCaption,\n },\n } = table;\n const { columnResizing, isFullScreen } = table.state;\n\n const tableProps = {\n ...parseFromValuesOrFunc(muiTableProps, { table }),\n ...rest,\n };\n\n const Caption = parseFromValuesOrFunc(renderCaption, { table });\n\n const headers = getFlatHeaders();\n const columnSizeVars: { [key: string]: number } = {};\n for (let i = 0; i < headers.length; i++) {\n const header = headers[i];\n const colSize = header.getSize();\n columnSizeVars[`--header-${parseCSSVarId(header.id)}-size`] = colSize;\n columnSizeVars[`--col-${parseCSSVarId(header.column.id)}-size`] = colSize;\n }\n\n const columnVirtualizer = useMRT_ColumnVirtualizer(table);\n\n const commonTableGroupProps = {\n columnVirtualizer,\n table,\n };\n\n return (\n <Table\n stickyHeader={enableStickyHeader || isFullScreen}\n {...tableProps}\n style={{ ...columnSizeVars, ...tableProps?.style }}\n sx={(theme) => ({\n borderCollapse: 'separate',\n display: layoutMode?.startsWith('grid') ? 'grid' : undefined,\n position: 'relative',\n ...(parseFromValuesOrFunc(tableProps?.sx, theme) as CSSObject),\n })}\n >\n {!!Caption && <caption>{Caption}</caption>}\n {enableTableHead && <MRT_TableHead {...commonTableGroupProps} />}\n {memoMode === 'table-body' || columnResizing.isResizingColumn ? (\n <Memo_MRT_TableBody {...commonTableGroupProps} />\n ) : (\n <MRT_TableBody {...commonTableGroupProps} />\n )}\n {enableTableFooter && <MRT_TableFooter {...commonTableGroupProps} />}\n </Table>\n );\n};\n","import { Box, CircularProgress, type CircularProgressProps } from '@mui/material';\nimport { alpha } from '@mui/material/styles';\n\nimport { type MRT_RowData, type MRT_TableInstance } from '../../types';\nimport { parseFromValuesOrFunc } from '../../utils/utils';\n\nexport interface MRT_TableLoadingOverlayProps<TData extends MRT_RowData> extends CircularProgressProps {\n table: MRT_TableInstance<TData>;\n}\n\nexport const MRT_TableLoadingOverlay = <TData extends MRT_RowData>({\n table,\n ...rest\n}: MRT_TableLoadingOverlayProps<TData>): JSX.Element => {\n const {\n options: {\n id,\n localization,\n mrtTheme: { baseBackgroundColor },\n muiCircularProgressProps,\n },\n } = table;\n\n const circularProgressProps = {\n ...parseFromValuesOrFunc(muiCircularProgressProps, { table }),\n ...rest,\n };\n\n return (\n <Box\n sx={{\n alignItems: 'center',\n backgroundColor: alpha(baseBackgroundColor, 0.5),\n bottom: 0,\n display: 'flex',\n justifyContent: 'center',\n left: 0,\n maxHeight: '100vh',\n position: 'absolute',\n right: 0,\n top: 0,\n width: '100%',\n zIndex: 3,\n }}\n >\n {circularProgressProps?.Component ?? (\n <CircularProgress\n aria-label={localization.noRecordsToDisplay}\n id={`mrt-progress-${id}`}\n {...circularProgressProps}\n />\n )}\n </Box>\n );\n};\n","import { TableContainer, type TableContainerProps } from '@mui/material';\nimport { type CSSObject } from '@mui/material/styles';\nimport { useEffect, useLayoutEffect, useState } from 'react';\n\nimport { type MRT_RowData, type MRT_TableInstance } from '../../types';\nimport { parseFromValuesOrFunc } from '../../utils/utils';\nimport { MRT_CellActionMenu } from '../menus/MRT_CellActionMenu';\nimport { MRT_EditRowModal } from '../modals/MRT_EditRowModal';\nimport { MRT_Table } from './MRT_Table';\nimport { MRT_TableLoadingOverlay } from './MRT_TableLoadingOverlay';\n\nconst useIsomorphicLayoutEffect = typeof window !== 'undefined' ? useLayoutEffect : useEffect;\n\nexport interface MRT_TableContainerProps<TData extends MRT_RowData> extends TableContainerProps {\n table: MRT_TableInstance<TData>;\n}\n\nexport const MRT_TableContainer = <TData extends MRT_RowData>({\n table,\n ...rest\n}: MRT_TableContainerProps<TData>): JSX.Element => {\n const {\n options: {\n createDisplayMode,\n editDisplayMode,\n enableBottomToolbar,\n enableCellActions,\n enableStickyHeader,\n enableTopToolbar,\n muiTableContainerProps,\n },\n refs: { bottomToolbarRef, tableContainerRef, topToolbarRef },\n } = table;\n const { actionCell, creatingRow, editingRow, isFullScreen, isLoading, showLoadingOverlay } = table.state;\n\n const loading = showLoadingOverlay !== false && (isLoading || showLoadingOverlay);\n\n const [totalToolbarHeight, setTotalToolbarHeight] = useState(0);\n\n const tableContainerProps = {\n ...parseFromValuesOrFunc(muiTableContainerProps, {\n table,\n }),\n ...rest,\n };\n\n useIsomorphicLayoutEffect(() => {\n const measureToolbars = () => {\n setTotalToolbarHeight((topToolbarRef.current?.offsetHeight ?? 0) + (bottomToolbarRef.current?.offsetHeight ?? 0));\n };\n\n measureToolbars();\n\n if (typeof ResizeObserver === 'undefined' || !tableContainerRef.current) {\n return;\n }\n\n const resizeObserver = new ResizeObserver(() => {\n for (const toolbar of [topToolbarRef.current, bottomToolbarRef.current]) {\n if (toolbar) {\n resizeObserver.observe(toolbar);\n }\n }\n measureToolbars();\n });\n resizeObserver.observe(tableContainerRef.current);\n\n return () => resizeObserver.disconnect();\n }, [bottomToolbarRef, enableBottomToolbar, enableTopToolbar, isFullScreen, tableContainerRef, topToolbarRef]);\n\n const createModalOpen = createDisplayMode === 'modal' && creatingRow;\n const editModalOpen = editDisplayMode === 'modal' && editingRow;\n\n return (\n <TableContainer\n aria-busy={loading}\n aria-describedby={loading ? 'mrt-progress' : undefined}\n {...tableContainerProps}\n ref={(node: HTMLDivElement) => {\n if (node) {\n tableContainerRef.current = node;\n if (tableContainerProps?.ref && typeof tableContainerProps.ref === 'object') {\n tableContainerProps.ref.current = node;\n }\n }\n }}\n style={{\n maxHeight: isFullScreen ? `calc(100vh - ${totalToolbarHeight}px)` : undefined,\n ...tableContainerProps?.style,\n }}\n sx={(theme) => ({\n maxHeight: enableStickyHeader ? `clamp(350px, calc(100vh - ${totalToolbarHeight}px), 9999px)` : undefined,\n maxWidth: '100%',\n overflow: 'auto',\n position: 'relative',\n ...(parseFromValuesOrFunc(tableContainerProps?.sx, theme) as CSSObject),\n })}\n >\n {loading ? <MRT_TableLoadingOverlay table={table} /> : null}\n <MRT_Table table={table} />\n {(createModalOpen || editModalOpen) && <MRT_EditRowModal open table={table} />}\n {enableCellActions && actionCell && <MRT_CellActionMenu table={table} />}\n </TableContainer>\n );\n};\n","import { Paper, type PaperProps } from '@mui/material';\nimport { type CSSObject, useTheme } from '@mui/material/styles';\n\nimport { type MRT_RowData, type MRT_TableInstance } from '../../types';\nimport { parseFromValuesOrFunc } from '../../utils/utils';\nimport { MRT_BottomToolbar } from '../toolbar/MRT_BottomToolbar';\nimport { MRT_TopToolbar } from '../toolbar/MRT_TopToolbar';\nimport { MRT_TableContainer } from './MRT_TableContainer';\n\nexport interface MRT_TablePaperProps<TData extends MRT_RowData> extends PaperProps {\n table: MRT_TableInstance<TData>;\n}\n\nexport const MRT_TablePaper = <TData extends MRT_RowData>({\n table,\n ...rest\n}: MRT_TablePaperProps<TData>): JSX.Element => {\n const {\n options: {\n enableBottomToolbar,\n enableTopToolbar,\n mrtTheme: { baseBackgroundColor },\n muiTablePaperProps,\n renderBottomToolbar,\n renderTopToolbar,\n },\n refs: { tablePaperRef },\n } = table;\n const { isFullScreen } = table.state;\n\n const paperProps = {\n ...parseFromValuesOrFunc(muiTablePaperProps, { table }),\n ...rest,\n };\n\n const theme = useTheme();\n\n return (\n <Paper\n elevation={2}\n onKeyDown={(e) => e.key === 'Escape' && table.setIsFullScreen(false)}\n {...paperProps}\n ref={(ref: HTMLDivElement) => {\n tablePaperRef.current = ref;\n if (paperProps?.ref && typeof paperProps.ref === 'object') {\n paperProps.ref.current = ref;\n }\n }}\n style={{\n ...(isFullScreen\n ? {\n bottom: 0,\n height: '100dvh',\n left: 0,\n margin: 0,\n maxHeight: '100dvh',\n maxWidth: '100dvw',\n padding: 0,\n position: 'fixed',\n right: 0,\n top: 0,\n width: '100dvw',\n zIndex: theme.zIndex.modal,\n }\n : {}),\n ...paperProps?.style,\n }}\n sx={(theme) => ({\n backgroundColor: baseBackgroundColor,\n backgroundImage: 'unset',\n overflow: 'hidden',\n transition: 'all 100ms ease-in-out',\n ...(parseFromValuesOrFunc(paperProps?.sx, theme) as CSSObject),\n })}\n >\n {enableTopToolbar && (parseFromValuesOrFunc(renderTopToolbar, { table }) ?? <MRT_TopToolbar table={table} />)}\n <MRT_TableContainer table={table} />\n {enableBottomToolbar &&\n (parseFromValuesOrFunc(renderBottomToolbar, { table }) ?? <MRT_BottomToolbar table={table} />)}\n </Paper>\n );\n};\n","import { useMaterialReactTable } from '../hooks/useMaterialReactTable';\nimport { type MRT_RowData, type MRT_TableInstance, type MRT_TableOptions, type Xor } from '../types';\nimport { MRT_TablePaper } from './table/MRT_TablePaper';\n\nexport type MaterialReactTableProps<TData extends MRT_RowData> = Xor<TableInstanceProp<TData>, MRT_TableOptions<TData>>;\n\ntype TableInstanceProp<TData extends MRT_RowData> = {\n table: MRT_TableInstance<TData>;\n};\n\nconst isTableInstanceProp = <TData extends MRT_RowData>(\n props: MaterialReactTableProps<TData>,\n): props is TableInstanceProp<TData> => (props as TableInstanceProp<TData>).table !== undefined;\n\ninterface MRT_TableFromOptionsProps<TData extends MRT_RowData> {\n tableOptions: MRT_TableOptions<TData>;\n}\n\nconst MRT_TableFromOptions = <TData extends MRT_RowData>({\n tableOptions,\n}: Readonly<MRT_TableFromOptionsProps<TData>>): JSX.Element => {\n const table = useMaterialReactTable(tableOptions);\n\n return <MRT_TablePaper table={table} />;\n};\n\nexport const MaterialReactTable = <TData extends MRT_RowData>(props: MaterialReactTableProps<TData>): JSX.Element =>\n isTableInstanceProp(props) ? <MRT_TablePaper table={props.table} /> : <MRT_TableFromOptions tableOptions={props} />;\n"],"mappings":";;;;;;;;;;;;;AAcA,MAAMA,WACJ,MACA,MACA,aACW;CACX,IAAI,MAAM;CACV,IAAI,uBAAuB,QAAQ,uBAAuB,QAAQ,KAAK,kBAAkB,WACvF,MAAM,aACJ,KAAK,kBAAkB,WACvB,KAAK,kBAAkB,SACzB;CAGF,OAAO,QAAQ,IAAI,oBAAoB,MAAM,MAAM,QAAQ,IAAI;AACjE;AAEA,MAAa,iBAAiB;CAC5B,cAAc;CACd,2BAA2B;CAC3B,OAAO;CACP,UAAU;CACV,OAAA;CACA,MAAM;CACN,mBAAmB;AACrB;AAEA,MAAa,mBAA8C,MAAsB,SAC/E,KAAK,IAAI,GAAG,OAAO,OAAO,KAAK,iBAAiB,CAAC,CAAC,KAAK,SAAU,KAAqB,IAAI,CAAC,IAC3F,KAAK,IAAI,GAAG,OAAO,OAAO,KAAK,iBAAiB,CAAC,CAAC,KAAK,SAAU,KAAqB,IAAI,CAAC;;ACxC7F,MAAa,yBAA+B,IAAqC,QAC/E,cAAc,WAAW,GAAG,GAAG,IAAI;AAErC,MAAa,oBAAoB,WAA8E;CAC7G,IAAI,QAAgB;CACpB,IAAI,QAAyB;CAC7B,IAAI,QAAQ;EACV,IAAI,OAAO,WAAW,UAAU;GAC9B,QAAQ;GACR,QAAQ;EACV,OAAO;GACL,QAAQ,OAAO,SAAS,OAAO,OAAO,KAAK;GAC3C,QAAQ,OAAO;EACjB;CACF;CACA,OAAO;EAAE;EAAO;CAAM;AACxB;;ACZA,MAAa,eACX,OACA,QACqB;CACrB,MAAM,EACJ,eACA,yBACA,aACA,YACA,SAAS,EACP,mBACA,kBACA,kBACA,kBACA,qBACA,4BAEA;CACJ,MAAM,EAAE,aAAa,eAAe,MAAM;CAE1C,MAAM,gBAAgB,iBAAiB,KAAK;CAE5C,IAAI,OAAyB,CAAC;CAC9B,IAAI,CAAC,eACH,OACE,CAAC,oBAAoB,uBAAuB,SAAS,QAAQ,IACzD,MACE,wBAAwB,CAAC,CAAC,OAC1B,YAAY,CAAC,CAAC,OAChB,cAAc;MACf;EAEL,OAAO,wBAAwB,CAAC,CAAC,KAAK,MAAM,GAAG,MAAM,gBAAgB,GAAG,CAAC,CAAC;EAC1E,IAAI,oBAAoB,CAAC,oBAAoB,CAAC,KAAK;GACjD,MAAM,QAAQ,WAAW,YAAY,WAAW;GAChD,OAAO,KAAK,MAAM,OAAO,QAAQ,WAAW,QAAQ;EACtD;EACA,IAAI,oBAAoB,CAAC,uBAAuB,SAAS,QAAQ,GAE/D,OAAO,KAAK,QAAQ,QAAQ,CAAC,IAAI,YAAY,CAAC;CAElD;CAEA,IAAI,oBAAoB,uBAAuB,SAAS,QAAQ,GAAG;EACjE,MAAM,qBAAqB,KAAK,QAAQ,QAAQ,IAAI,YAAY,CAAC,CAAC,CAAC,KAAK,MAAM,EAAE,EAAE;EAElF,OAAO,CAAC,GAAG,WAAW,CAAC,CAAC,QAAQ,QAAQ,CAAC,mBAAmB,SAAS,IAAI,EAAE,CAAC,GAAG,GAAG,IAAI;CACxF;CAEA,IAAI,wBAAwB,KAAA,KAAa,eAAe,sBAAsB,OAAO;EACnF,MAAM,mBAAmB,CAAC,MAAM,CAAC,mBAAmB,IAChD,CAAC,sBACD,wBAAwB,QACtB,IACA,KAAK;EACX,OAAO;GAAC,GAAG,KAAK,MAAM,GAAG,gBAAgB;GAAG;GAAa,GAAG,KAAK,MAAM,gBAAgB;EAAC;CAC1F;CAEA,OAAO;AACT;AAEA,MAAa,kBAA6C,UAAyD;CACjH,MAAM,EACJ,SAAS,EAAE,iCAAiC,iBAAiB,iBAAiB,gBAAgB,oBAC5F;CACJ,MAAM,EAAE,UAAU,mBAAmB,MAAM;CAE3C,OACE,CAAC,mBACD,CAAC,mBACD,CAAC,kBACD,CAAC,iBACD,mCACA,mBAAmB,WACnB,aAAa,QACb,CAAC,OAAO,OAAO,QAAQ,CAAC,CAAC,KAAK,OAAO;AAEzC;AAEA,MAAa,oBAA+C,UAA6C;CACvG,MAAM,EAAE,cAAc,YAAY,MAAM;CAExC,OAAO,QAAQ,eAAe,KAAK,KAAK,gBAAgB,CAAC,OAAO,OAAO,OAAO,CAAC,CAAC,KAAK,OAAO,CAAC;AAC/F;AAEA,MAAa,oBAA+C,EAC1D,KACA,YAIyB;CACzB,MAAM,EACJ,SAAS,EAAE,yBACT;CAEJ,OACE,IAAI,cAAc,KACjB,sBAAsB,oBAAoB,GAAG,KAAK,IAAI,oBAAoB,KAAK,IAAI,wBAAwB;AAEhH;AAEA,MAAa,8BACiB,EAC1B,KACA,iBAAiB,GACjB,aAUA,OACA,UACS;CACT,MAAM,EACJ,SAAS,EACP,yBACA,yBACA,kBACA,kBACA,yBAEF,MAAM,EAAqB,wBACzB;CACJ,MAAM,EACJ,YAAY,EAAE,WAAW,eACvB,MAAM;CAEV,MAAM,mBAAmB,mBAAmB,IAAI,WAAW;CAE3D,MAAM,uBAAuB,iBAAiB;EAAE;EAAK;CAAM,CAAC;CAG5D,IAAI,eAAe,SAAS,CAAC,oBAAoB;CAEjD,MAAM,gCAAgB,IAAI,IAAY,CAAC,IAAI,EAAE,CAAC;CAG9C,IACE,2BACA,2BACA,cAAc,MAAM,eACpB,MAAM,YAAY,YAClB,kBAAkB,YAAY,MAC9B;EACA,MAAM,OAAO,YAAY,OAAO,IAAI;EAEpC,MAAM,YAAY,KAAK,WAAW,MAAM,EAAE,OAAO,kBAAkB,OAAO;EAE1E,IAAI,cAAc,IAAI;GACpB,MAAM,qBAAqB,iBAAiB;IAC1C,KAAK,OAAO;IACZ;GACF,CAAC;GAED,MAAM,eAAe,iBAAiB;GACtC,MAAM,CAAC,OAAO,OAAO,YAAY,eAAe,CAAC,WAAW,YAAY,IAAI,CAAC,cAAc,SAAS;GAIpG,IAAI,yBAAyB,oBAC3B,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,KAAK;IACjC,KAAK,EAAE,CAAC,eAAe,CAAC,oBAAoB;IAC5C,cAAc,IAAI,KAAK,EAAE,CAAC,EAAE;GAC9B;EAEJ;CACF;CAGA,kBAAkB,UAAU,IAAI;CAGhC,IAAI,IAAI,oBAAoB,KAAK,IAAI,wBAAwB,GAC3D,IAAI,SAAS,SAAS,MAAM,EAAE,eAAe,KAAK,CAAC;CAGrD,IAAI,oBAAoB,uBAAuB,SAAS,QAAQ,GAC9D,cAAc,SAAS,UAAU;EAE/B,MAD6B,OAAO,KACvB,CAAC,CAAC,IACb,CAAC,uBACG,uBAAuB,SAAS,QAAQ,IACtC,WACA,QACF,KACN;CACF,CAAC;AAEL;AAEF,MAAa,2BACiB,EAC1B,aASA,OACA,OACA,aACS;CACT,MAAM,EACJ,SAAS,EAAE,kBAAkB,uBAAuB,iBACpD,MAAM,EAAE,wBACN;CAEJ,MAAM,UAAU,SAAU,MAAM,OAA4B;CAC5D,IAAI,kBAAkB,SAAS,UAC7B,MAAM,sBAAsB,OAAO;MAEnC,MAAM,0BAA0B,OAAO;CAEzC,IAAI,oBAAoB,uBAAuB,SAAS,QAAQ,GAC9D,MAAM,cAAc;EAAE,QAAQ,CAAC;EAAG,KAAK,CAAC;CAAE,CAAC;CAE7C,kBAAkB,UAAU;AAC9B;;ACrOF,MAAa,eAA0C,UACrD,YAAY,KAAK;;;;;;;ACGnB,MAAa,4BAA4B,OAAc,kBAAqC;CAC1F,MAAM,aAAa,sBAAsB,KAAK;CAC9C,IAAI,kBAAkB,KAAA,GACpB,OAAO;CAET,IAAI,iBAAiB,KAAK,gBAAgB,KAAK,IAAI,MAAM,aAAa,MAAM,UAAU,CAAC,GACrF,WAAW,QAAQ,aAAa;CAElC,IAAI,iBAAiB,KAAK,gBAAgB,MAAM,WAAW,MAAM,UAC/D,WAAW,KAAK,aAAa;CAE/B,OAAO;AACT;;ACZA,MAAa,yBAKX,OACA,SACiE;CACjE,MAAM,EACJ,aACA,SAAS,EAAE,yBAAyB,mBAAmB,2BAA2B,yBAClF,MAAM,EAAE,wBACN;CACJ,MAAM,EAAE,SAAS,aAAa,aAAa,MAAM;CAEjD,MAAM,sBAAsB,0BACxB,sBAAsB,uBAAuB,EAC3C,MACF,CAAC,IACD,KAAA;CAEJ,MAAM,WAAW,QAAQ,YAAY,CAAC,CAAC;;;;CAIvC,MAAM,mBAAmB,cAChB,aAAa,KAAK,SAAS,WAAW,MAAM,EAAE,OAAO,aAAa,EAAE,IAAI,KAAA,GAC/E,CAAC,UAAU,aAAa,EAAE,CAC5B;CAEA,MAAM,WAAW,SAAS;CAE1B,MAAM,kBAAkB,YAAY,YAAY,KAAK,YAAY,gBAAgB,KAAK;CAEtF,MAAM,iBAAiB,eAAe;EACpC,OAAO,oBAAoB,WAAW,IAAI;EAC1C,SAAS,CAAC,CAAC;EACX,eAAe,UAAW,qBAAqB,QAAQ,MAAM,IAAK,aAAa,OAAO,MAAM,IAAK;EACjG,wBAAwB,kBAAkB;EAC1C,gBACE,OAAO,WAAW,eAAe,UAAU,UAAU,QAAQ,SAAS,MAAM,MACvE,YAAY,SAAS,sBAAsB,CAAC,CAAC,SAC9C,KAAA;EACN,UAAU;EACV,gBAAgB,aACb,UAAiB;GAChB,OAAO,yBAAyB,OAAO,gBAAgB;EACzD,GACA,CAAC,gBAAgB,CACnB;EACA,GAAG;CACL,CAAC;CAED,IAAI,CAAC,yBACH;CAGF,eAAe,cAAc,eAAe,gBAAgB;CAE5D,IAAI,2BAEF,0BAA0B,UAAU;CAGtC,OAAO;AACT;;ACzDA,MAAa,iBAAiB,OAAuB,GAAG,QAAQ,iBAAiB,GAAG;AAEpF,MAAa,eACX,UACA,aACc;CACd,MAAM,oBAAoB,sBAAsB,UAAU,QAAQ;CAClE,MAAM,sBACJ,mBAAmB,wBAClB,SAAS,QAAQ,SAAS,SACvB,QAAQ,SAAS,QAAQ,WAAW,SAAS,GAAI,IACjD,SAAS,QAAQ,WAAW;CAClC,OAAO;EACL;EACA,4BAA4B,SAAS,QAAQ,QAAQ;EACrD,qBAAqB,SAAS,QAAQ,QAAQ;EAC9C,qBACE,SAAS,QAAQ,SAAS,SACtB,OAAO,SAAS,QAAQ,QAAQ,MAAM,GAAI,IAC1C,QAAQ,SAAS,QAAQ,QAAQ,OAAO,EAAG;EACjD,qBAAqB,QAAQ,qBAAqB,GAAI;EACtD,0BAA0B,MAAM,SAAS,QAAQ,QAAQ,MAAM,EAAG;EAClE,4BAA4B,MAAM,SAAS,QAAQ,QAAQ,MAAM,EAAG;EACpE,GAAG;CACL;AACF;AAEA,MAAa,8BAA8B;CACzC,SAAS;CACT,QAAQ;CACR,MAAM;CACN,UAAU;CACV,KAAK;CACL,OAAO;CACP,QAAQ;AACV;AAEA,MAAa,6BAAwD,EACnE,QACA,OACA,YAKe;CACf,MAAM,EAAE,wBAAwB,MAAM,QAAQ;CAC9C,MAAM,WAAW,QAAQ,YAAY;CAErC,OAAO,EACL,2BAAyB,EACvB,YAAY;EACV,iBAAiB,MAAM,OAAO,qBAAqB,MAAM,QAAQ,SAAS,SAAS,MAAO,GAAI,GAAG,GAAI;EACrG,WAAW,SACP,aAAa,WAAW,OAAO,gBAAgB,QAAQ,IACrD,mBAAmB,MAAM,MAAM,QAAQ,KAAK,MAAM,EAAG,EAAE,UACvD,aAAa,SAAS,OAAO,iBAAiB,QAAQ,IACpD,kBAAkB,MAAM,MAAM,QAAQ,KAAK,MAAM,EAAG,EAAE,UACtD,KAAA,IACJ,KAAA;EACJ,GAAG;CACL,EACF,EACF;AACF;AAEA,MAAa,0BAAqD,EAChE,QACA,QACA,OACA,gBACA,YAOe;CACf,MAAM,EACJ,SAAS,EAAE,4BAA4B,iBACrC;CACJ,MAAM,EAAE,mBAAmB,MAAM;CACjC,MAAM,EAAE,cAAc;CACtB,MAAM,EAAE,kBAAkB;CAE1B,MAAM,iBAAiB,UAAU,kBAAkB,WAAW,OAAO,YAAY;CAEjF,MAAM,cAA6B;EACjC,UAAU,kBAAkB,SAAS,WAAW,MAAM,GAAG,cACvD,QAAQ,MAAM,OAAO,EACvB,EAAE,iBAAiB,UAAU,WAAW,GAAG;EAC3C,OAAO,cAAc,SAAS,WAAW,MAAM,GAAG,cAAc,QAAQ,MAAM,OAAO,EAAE,EAAE;CAC3F;CAEA,IAAI,eAAe,QACjB,YAAY,OAAO,GACjB,CAAC,GAAG,KAAK,CAAC,CAAC,SAAS,UAAU,IAAK,IAC/B,IACA,SAAS,SAAS,WAAW,MAAM,GAAG,cAAc,QAAQ,MAAM,OAAO,EAAE,EAAE,QAClF;MACI,IAAI,eAAe,gBACxB,YAAY,OAAO,GAAG,EAAE,UAAU,QAAQ,GAAG;CAG/C,MAAM,eAAe,iBACjB;EACE,GAAG,0BAA0B;GAAE;GAAQ;GAAO;EAAM,CAAC;EACrD,MAAM,mBAAmB,UAAU,GAAG,OAAO,SAAS,OAAO,EAAE,MAAM,KAAA;EACrE,SAAS;EACT,UAAU;EACV,OAAO,mBAAmB,QAAQ,GAAG,OAAO,SAAS,KAAK,EAAE,MAAM,KAAA;CACpE,IACA,CAAC;CAEL,OAAO;EACL,mBAAmB;GACjB,SAAS,aAAa,MAAM,QAAQ,SAAS;GAC7C,eAAe;EACjB;EACA,iBAAiB;EACjB,iBAAiB;EACjB,SAAS,YAAY,WAAW,MAAM,IAAI,SAAS,KAAA;EACnD,gBACE,kBAAkB,UAAU,WAAW,YAAY,WAAW,MAAM,IAAI,eAAe,QAAQ,KAAA;EACjG,SAAS,MAAM,MAAM,gBAAgB,OAAO,OAAO,MAAM,MAAM,MAAM,eAAe,OAAO,OAAO,KAAK,KAAM;EAC7G,UAAU;EACV,YAAY,6BAA6B,SAAS;EAClD,QACE,OAAO,cAAc,KAAK,gBAAgB,OAAO,OAAO,KACpD,IACA,kBAAkB,WAAW,iBAC3B,IACA;EACR,GAAG;EACH,GAAG;EACH,GAAI,sBAAsB,gBAAgB,IAAI,KAAK;CACrD;AACF;AAEA,MAAa,0BAAqD,EAChE,aAIgB;CAChB,YAAY;CACZ,iBAAiB,MAAM,QAAQ,SAAS;CACxC,SAAS;CACT,UAAU;CACV,WAAW;CACX,UAAU;CACV,UAAU;CACV,YAAY;CACZ,QAAQ;AACV;AAEA,MAAa,kBAAkB,UAC7B,MAAM,cAAc,QAAQ,EAAE,OAAO,EAAE,WAAW,aAAa,EAAE,IAAI,KAAA;AAEvE,MAAa,yBAAyB,eAAkE;CACtG,oBAAoB;CACpB,YAAY;CACZ,gBAAgB;CAChB;AACF;;AChLA,MAAM,oBAAoB,UAAqD;CAC7E,OACG,MAAM,WAAW,UAAU,SAAS,YAAY,CAAC,CAAC,SAAS,KAAK,KAChE,MAAM,WAAW,UAAU,SAAS,YAAY,CAAC,CAAC,SAAS,KAAK;AAErE;AAEA,MAAa,kBAA6C,EACxD,MACA,YAIyB;CACzB,MAAM,EAAE,kBAAkB,MAAM;CAChC,MAAM,EACJ,QAAQ,EAAE,aACV,QACE;CACJ,OACE,CAAC,KAAK,iBAAiB,KACvB,sBAAsB,eAAe,GAAG,KACxC,sBAAsB,UAAU,eAAe,GAAG,MAAM;AAE5D;AAEA,MAAa,mBAA8C,EACzD,MACA,YAIU;CACV,MAAM,EACJ,SAAS,EAAE,mBACX,MAAM,EAAE,oBACN;CACJ,MAAM,EAAE,WAAW;CAEnB,IAAI,eAAe;EAAE;EAAM;CAAM,CAAC,KAAK,oBAAoB,QAAQ;EACjE,MAAM,eAAe,IAAI;EACzB,qBAAqB;GACnB,MAAM,YAAY,cAAc,UAAU,OAAO;GACjD,IAAI,WAAW;IACb,UAAU,MAAM;IAChB,UAAU,SAAS;GACrB;EACF,CAAC;CACH;AACF;AAEA,MAAa,yBAAkE,EAC7E,MACA,cACA,WACA,kBACA,OACA,QACA,eACA,YAUU;CACV,IAAI,CAAC,MAAM,QAAQ,yBACjB;CAEF,IAAI,MAAM,qBAAqB,GAC7B;CAEF,MAAM,cAAc,MAAM;CAE1B,IAAI,aAAa,iBAAiB,KAAK,KAAK,MAAM,QAAQ,KACxD,UAAU,UAAU,UAAU,SAAS;MAClC,IAAI,CAAC,KAAK,OAAO,CAAC,CAAC,SAAS,MAAM,GAAG,GAAG;EAC7C,IAAI,MAAM,QAAQ,OAAO,kBAAkB;GACzC,MAAM,eAAe;GACrB,2BAA2B;IACzB,KAAK,KAAK;IACV,gBAAgB,OAAQ,MAAM,OAAuB,aAAa,YAAY,CAAC;IAC/E;GACF,CAAC,CAAC,CAAC,KAAK;EACV,OAAO,IAAI,QAAQ,QAAQ,OAAO,oBAAoB,MAAM,QAAQ,iBAAiB;GACnF,MAAM,eAAe;GACrB,wBAAwB,EACtB,MACF,CAAC,CAAC,CAAC,KAAK;EACV,OAAO,IACL,MAAM,QAAQ,OAAO,qBACpB,KAAK,IAAI,aAAa,KAAK,MAAM,QAAQ,oBAAoB;GAAE,KAAK,KAAK;GAAK;EAAM,CAAC,IACtF;GACA,MAAM,eAAe;GACrB,KAAK,IAAI,eAAe;EAC1B,OAAO,IAAI,QAAQ,QAAQ,OAAO,oBAAoB,MAAM,QAAQ,iBAAiB;GACnF,MAAM,eAAe;GACrB,MAAM,sBAAsB;EAC9B,OAAO,IAAI,MAAM,OAAO,OAAO,eAAe;GAC5C,MAAM,eAAe;GACrB,IAAI,KAAK,IAAI,YAAY,GACvB,KAAK,IAAI,IAAI,KAAK;QAElB,KAAK,IAAI,IAAI,MAAM,QAAQ,uBAAuB,SAAS,QAAQ,IAAI,WAAW,KAAK;EAE3F,OAAO,IAAI,UAAU,iBAAiB,KAAK,GAAG;GAC5C,MAAM,gBAAgB,YAAY,cAChC,sBAAsB,MAAM,QAAQ,aAAa,cAAc,GACjE;GACA,IAAI,eACF,cAAqC,MAAM;EAE/C,OAAO,IAAI,QAAQ,QAAQ,WAAW,GAAG;GACvC,MAAM,eAAe;GACrB,OAAO,OAAO,cAAc;EAC9B;CACF,OAAO,IACL;EAAC;EAAa;EAAa;EAAc;EAAW;EAAO;EAAQ;EAAY;CAAQ,CAAC,CAAC,SAAS,MAAM,GAAG,GAC3G;EACA,MAAM,eAAe;EAErB,MAAM,aAAa,iBAAiB,YAAY,QAAQ,IAAI;EAC5D,MAAM,eAAe,oBAAoB,YAAY,QAAQ,OAAO;EACpE,MAAM,WAAW,gBAAgB,MAAM,KAAK,cAAc,iBAAiB,QAAQ,KAAK,CAAC,CAAC;EAC1F,MAAM,mBAAmB,SAAS,QAAQ,WAAW;EAErD,MAAM,eAAe,SAAS,YAAY,aAAa,YAAY,KAAK,GAAG;EAC3E,IAAI,WAAoC,KAAA;EAGxC,MAAM,gBAAgB,UAA2B,SAAoB;GACnE,MAAM,MACJ,aAAa,MACT,aACA,aAAa,MACX,cAAc,cAAc,IAAI,IAChC,cAAc,kBAAkB;GACxC,MAAM,WAAW,MAAM,KAAK,KAAK,YAAY,CAAC,CAAC;GAE/C,OADmB,SAAS,MAAM,SAAS,KAAK,SAAS,SAAS,SAAS;EAE7E;EAGA,MAAM,qBAAqB,aAAqB,SAAoB;GAClE,MAAM,MAAM,SAAS,MAAM,cAAc,cAAc,IAAI,IAAI,cAAc,kBAAkB;GAG/F,OAFiB,MAAM,KAAK,KAAK,YAAY,CAAC,CACpB,CAAC,CAAC;EAE9B;EAEA,MAAM,oBAAoB,aAAqB,oBAA+B;GAG5E,QADE,oBAAoB,MAAM,SAAS,MAAM,mBAAmB,CAAC,IAAI,SAAS,MAAM,GAAG,gBAAgB,CAAC,CAAC,QAAQ,EAAA,CAC5F,MAAM,SAAS,KAAK,QAAQ,gBAAgB,YAAY,GAAG,CAAC;EACjF;EAEA,QAAQ,MAAM,KAAd;GACE,KAAK;IACH,WAAW,iBAAiB,cAAc,GAAG;IAC7C;GACF,KAAK;IACH,WAAW,iBAAiB,eAAe,GAAG,GAAG;IACjD;GACF,KAAK;IACH,WAAW,iBAAiB,eAAe,GAAG,GAAG;IACjD;GACF,KAAK;IACH,WAAW,iBAAiB,cAAc,GAAG;IAC7C;GACF,KAAK;IACH,WAAW,aAAa,iBAAiB,KAAK,IAAI,MAAM,KAAK,GAAG;IAChE;GACF,KAAK;IACH,WAAW,aAAa,iBAAiB,KAAK,IAAI,MAAM,KAAK,GAAG;IAChE;GACF,KAAK;IACH,WAAW,kBAAkB,cAAc,GAAG;IAC9C;GACF,KAAK,UACH,WAAW,kBAAkB,cAAc,GAAG;EAElD;EAEA,IAAI,UACF,SAAS,MAAM;CAEnB;AACF;;ACtLA,MAAa,kBAA6C,EACxD,MACA,OACA,GAAG,WAC0C;CAC7C,MAAM,EACJ,SAAS,EAAE,cAAc,yBACvB;CACJ,MAAM,EAAE,QAAQ,QAAQ;CACxB,MAAM,EAAE,cAAc;CAEtB,MAAM,CAAC,QAAQ,aAAa,SAAS,KAAK;CAE1C,MAAM,cAAc,OAAmB,SAAkB;EACvD,MAAM,gBAAgB;EACtB,UAAU,UAAU,UAAU,IAAc;EAC5C,UAAU,IAAI;EACd,iBAAiB,UAAU,KAAK,GAAG,GAAI;CACzC;CAEA,MAAM,cAAc;EAClB,GAAG,sBAAsB,oBAAoB;GAC3C;GACA;GACA;GACA;EACF,CAAC;EACD,GAAG,sBAAsB,UAAU,oBAAoB;GACrD;GACA;GACA;GACA;EACF,CAAC;EACD,GAAG;CACL;CAEA,OACE,oBAAC,SAAD;EACE,GAAI,sBAAsB,KAAK;EAC/B,OAAO,aAAa,UAAU,SAAS,aAAa,oBAAoB,aAAa;EAErF,UAAA,oBAAC,QAAD;GACE,UAAU,MAAM,WAAW,GAAG,KAAK,SAAS,CAAC;GAC7C,MAAK;GACL,MAAK;GACL,SAAQ;GACR,GAAI;GACJ,KAAK,WAAW;IACd,iBAAiB;IACjB,QAAQ;IACR,OAAO;IACP,QAAQ;IACR,YAAY;IACZ,UAAU;IACV,eAAe;IACf,GAAG;IACH,UAAU;IACV,IAAI;IACJ,WAAW;IACX,eAAe;IACf,GAAI,sBAAsB,aAAa,IAAI,KAAK;GAClD;GACA,OAAO,KAAA;EACR,CAAA;CACM,CAAA;AAEb;;AChEA,MAAa,yBAAyB,eAAgE;CACpG,gBAAgB,WAAW;CAC3B,WAAW,WAAW;CACtB,OAAO,WAAW;CAClB,YAAY,WAAW;CACvB,QAAQ,WAAW;AACrB;;ACRA,MAAa,yBAAoD,EAC/D,MACA,OACA,GAAG,WACiD;CACpD,MAAM,EACJ,SAAS,EAAE,mBAAmB,iBAAiB,yBAC/C,MAAM,EAAE,iBACR,gBACA,gBACA,kBACE;CACJ,MAAM,EAAE,QAAQ,QAAQ;CACxB,MAAM,EAAE,cAAc;CACtB,MAAM,EAAE,aAAa,eAAe,MAAM;CAC1C,MAAM,EAAE,mBAAmB,gBAAgB;CAE3C,MAAM,aAAa,aAAa,OAAO,IAAI;CAC3C,MAAM,YAAY,YAAY,OAAO,IAAI;CAEzC,MAAM,CAAC,OAAO,YAAY,eAAe,KAAK,SAAiB,CAAC;CAChE,MAAM,CAAC,sBAAsB,2BAA2B,SAAS,IAAI;CAErE,MAAM,iBAAiC;EACrC,GAAG,sBAAsB,uBAAuB;GAC9C;GACA;GACA;GACA;EACF,CAAC;EACD,GAAG,sBAAsB,UAAU,uBAAuB;GACxD;GACA;GACA;GACA;EACF,CAAC;EACD,GAAG;CACL;CAEA,MAAM,gBAAgB,sBAAsB,mBAAmB;EAC7D;EACA;EACA;EACA;CACF,CAAC;CAED,MAAM,eAAe,gBAAgB,YAAY,gBAAgB;CAEjE,MAAM,4BAA4B,aAAqB;EACrD,IAAI,aAAa,OAAO,MAAM;EAC9B,IAAI,YACF,eAAe,GAAG;OACb,IAAI,WACT,cAAc,GAAG;CAErB;CAEA,MAAM,gBAAgB,UAAyC;EAC7D,eAAe,WAAW,KAAK;EAC/B,SAAS,MAAM,OAAO,KAAK;EAC3B,IAAI,cACF,yBAAyB,MAAM,OAAO,KAAK;CAE/C;CAEA,MAAM,cAAc,UAAwC;EAC1D,eAAe,SAAS,KAAK;EAC7B,yBAAyB,KAAK;EAC9B,eAAe,IAAI;CACrB;CAEA,MAAM,sBAAsB,UAA2C;EACrE,eAAe,YAAY,KAAK;EAChC,IAAI,MAAM,QAAQ,WAAW,CAAC,MAAM,YAAY,sBAC9C,cAAc,UAAU,OAAO,GAAG,EAAE,KAAK;CAE7C;CAEA,IAAI,UAAU,MACZ,OAAO,oBAAA,YAAA,EAAA,UAAG,UAAU,OAAO;EAAE;EAAM;EAAQ;EAAK;CAAM,CAAC,EAAI,CAAA;CAG7D,MAAM,gBAAgB,sBAAsB,eAAe,SAAS;CAEpE,OACE,oBAAC,WAAD;EACE,UAAU,sBAAsB,UAAU,eAAe,GAAG,MAAM;EAClE,WAAA;EACA,WAAW,aAAa;GACtB,IAAI,UAAU;IACZ,cAAc,QAAS,OAAO,MAAM,eAAe,SAAS,OAAO;IACnE,IAAI,eAAe,UACjB,eAAe,WAAW;GAE9B;EACF;EACA,OACE,CAAC,UAAU,OAAO,CAAC,CAAC,SAAU,aAAa,oBAAoB,eAA0B,IACrF,UAAU,SACV,KAAA;EAEN,QAAO;EACP,MAAM,OAAO;EACb,aACE,CAAC,CAAC,UAAU,OAAO,CAAC,CAAC,SAAU,aAAa,oBAAoB,eAA0B,IACtF,UAAU,SACV,KAAA;EAEN,QAAQ;EACR,MAAK;EACL,OAAO,SAAS;EAChB,SAAQ;EACR,GAAI;EACJ,QAAQ;EACR,UAAU;EACV,UAAU,MAAM;GACd,EAAE,gBAAgB;GAClB,gBAAgB,UAAU,CAAC;EAC7B;EACA,wBAAwB,wBAAwB,IAAI;EACpD,0BAA0B,wBAAwB,KAAK;EACvD,WAAW;EACX,WAAW;GACT,WAAW;IAAE,cAAc;IAAO,GAAG,cAAc;GAAU;GAC7D,OAAO;IACL,GAAI,eAAe,YAAY,aAAa,EAAE,kBAAkB,oBAAoB,QAAQ,IAAI,CAAC;IACjG,GAAG,cAAc;IACjB,IAAI;KAAE,IAAI;KAAG,GAAG,cAAc,OAAO;IAAG;GAC1C;GACA,QAAQ;IACN,WAAW,EAAE,mBAAmB,KAAK;IACrC,GAAG,cAAc;GACnB;EACF;EAEC,UAAA,eAAe,YACd,eAAe,KAAK,WAAW;GAC7B,MAAM,EAAE,OAAO,UAAU,iBAAiB,MAAM;GAChD,OACE,oBAAC,UAAD;IAEE,IAAI;KACF,YAAY;KACZ,SAAS;KACT,KAAK;KACL,GAAG;IACL;IACO;IAEN,UAAA;GACO,GAVH,KAUG;EAEd,CAAC;CACM,CAAA;AAEf;;AC5JA,MAAM,gBAAgB,SAAyB,KAAK,QAAQ,yBAAyB,SAAS,KAAK,MAAM;AAEzG,MAAM,uBAAuB,UAC3B,MACG,QAAQ,WAAW,GAAG,CAAC,CACvB,MAAM,GAAG,CAAC,CACV,KAAK,GAAG;AAEb,MAAM,eAAe,OAAe,iBAAkC;CACpE,MAAM,aAAa,kCAAkC,KAAK,KAAK;CAC/D,IAAI,YACF,OAAO,IAAI,OAAO,WAAW,IAAI,WAAW,EAAE;CAEhD,MAAM,UAAU,aAAa,MAAM,KAAK,CAAC;CACzC,MAAM,UAAU,eAAe,UAAU,oBAAoB,OAAO;CACpE,OAAO,IAAI,OAAO,IAAI,QAAQ,IAAI,IAAI;AACxC;AAEA,IAAI,aAAa;AACjB,MAAM,YAAoB,WAAW,cAAc,EAAA,CAAG,SAAS,EAAE;AAEjE,MAAa,kBAAkB,EAAE,eAAe,OAAO,OAAO,WAAiD;CAC7G,MAAM,YAAY,OAAO,UAAU,WAAW,MAAM,KAAK,IAAI;CAC7D,IAAI,cAAc,IAChB,OAAO,CAAC;EAAE,KAAK,IAAI;EAAG,OAAO;EAAO;CAAK,CAAC;CAE5C,MAAM,eAAe,YAAY,OAAO,YAAY;CACpD,OAAO,KACJ,MAAM,YAAY,CAAC,CACnB,QAAQ,QAAQ,IAAI,SAAS,CAAC,CAAC,CAC/B,KAAK,SAAS;EACb,KAAK,IAAI;EACT,OAAO,eAAe,IAAI,YAAY,MAAM,UAAU,YAAY,IAAI,aAAa,KAAK,GAAG;EAC3F,MAAM;CACR,EAAE;AACN;;ACzCA,MAAM,eAAe,CAAC,UAAU,QAAQ;AAUxC,MAAa,0BAAqD,EAChE,MACA,QACA,mBACA,gBACA,YACmD;CACnD,MAAM,EACJ,SAAS,EACP,+BACA,UAAU,EAAE,4BAEZ;CACJ,MAAM,EAAE,QAAQ,QAAQ;CACxB,MAAM,EAAE,cAAc;CACtB,MAAM,EAAE,cAAc,mBAAmB,MAAM;CAC/C,MAAM,cAAc,OAAO,eAAe;CAE1C,IAAI,oBACF,KAAK,gBAAgB,KAAK,UAAU,iBAChC,UAAU,eAAe;EACvB;EACA;EACA;EACA;EACA;EACA;CACF,CAAC,IACD,IAAI,aAAa,KAAK,CAAC,KAAK,aAAa,IACvC,OACA,KAAK,aAAa,KAAK,UAAU,cAC/B,UAAU,YAAY;EACpB;EACA;EACA;EACA;EACA;EACA;CACF,CAAC,IACD,KAAA;CAEV,MAAM,iBAAiB,sBAAsB,KAAA;CAE7C,IAAI,CAAC,gBACH,oBAAoB,KAAK,YAAY;CAGvC,IACE,iCACA,UAAU,kCAAkC,SAC5C,OAAO,iBAAiB,KACxB,aAAa,SAAS,OAAO,iBAAiB,MAC5C,eACA,aAAa,SAAS,OAAO,WAAW,KACxC,CAAC,gBAAgB,MAAM,CAAC,CAAC,SAAS,UAAU,aAAc,KACzD,gBAAgB,aAAa,SAAS,OAAO,YAAY,KAAK,OAAO,mBAAmB,IAC3F;EACA,MAAM,SAAS,eAAe;GAC5B,eAAe,cAAc,UAAU,YAAY,oBAAoB;GACvE,QAAQ,eAAe,gBAAgB,GAAA,CAAI,SAAS;GACpD,MAAM,mBAAmB,SAAS;EACpC,CAAC;EACD,IAAI,QAAQ,SAAS,KAAK,SAAS,EAAE,EAAE,OACrC,oBACE,oBAAC,QAAD;GAAM,cAAY;GAA6B,MAAK;GACjD,UAAA,QAAQ,KAAK,EAAE,KAAK,OAAO,WAC1B,oBAAC,KAAD;IACE,eAAY;IACZ,WAAU;IAEV,IACE,QACI;KACE,iBAAiB;KACjB,cAAc;KACd,QAAQ,UACN,MAAM,QAAQ,SAAS,SAAS,MAAM,QAAQ,OAAO,QAAQ,MAAM,QAAQ,OAAO;KACpF,SAAS;IACX,IACA,KAAA;IAGL,UAAA;GACE,GAdE,GAcF,CACN,KAAK;EACF,CAAA;CAGZ;CAEA,IAAI,UAAU,QAAQ,CAAC,gBACrB,oBAAoB,UAAU,KAAK;EACjC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF,CAAC;CAGH,OAAO;AACT;;AC1FA,MAAa,qBAAgD,EAC3D,MACA,SACA,QACA,mBACA,gBACA,OACA,GAAG,WAC6C;CAChD,MAAM,QAAQ,SAAS;CACvB,MAAM,EACJ,SAAS,EACP,uBACA,kBACA,mBACA,iBACA,mBACA,mBACA,sBACA,qBACA,gBACA,yBACA,YACA,UAAU,EAAE,uBACZ,kBACA,yBAEF,qBACE;CACJ,MAAM,EACJ,YACA,gBACA,aACA,SACA,gBACA,aACA,aACA,YACA,eACA,YACA,WACA,kBACE,MAAM;CACV,MAAM,EAAE,QAAQ,QAAQ;CACxB,MAAM,EAAE,cAAc;CACtB,MAAM,EAAE,kBAAkB;CAE1B,MAAM,OAAO;EAAE;EAAM;EAAQ;EAAK;CAAM;CACxC,MAAM,iBAAiB;EACrB,GAAG,sBAAsB,uBAAuB,IAAI;EACpD,GAAG,sBAAsB,UAAU,uBAAuB,IAAI;EAC9D,GAAG;CACL;CAEA,MAAM,gBAAgB,sBAAsB,kBAAkB;EAC5D;EACA;EACA;EACA;CACF,CAAC;CAED,MAAM,CAAC,eAAe,oBAAoB,SAAS,GAAG;CACtD,gBAAgB;EACd,IAAK,CAAC,aAAa,CAAC,iBAAkB,kBAAkB,KACtD;EAEF,MAAM,OAAO,OAAO,QAAQ;EAC5B,iBAAiB,kBAAkB,YAAY,OAAO,IAAI,KAAK,MAAM,KAAK,OAAO,KAAK,OAAO,OAAO,KAAK,OAAO,CAAC,CAAC;CACpH,GAAG;EAAC;EAAQ;EAAe;EAAW;EAAe;CAAa,CAAC;CAEnE,MAAM,kBAAkB,cAAc;EACpC,MAAM,mBAAmB,gBAAgB,OAAO,OAAO;EACvD,MAAM,kBAAkB,eAAe,OAAO,OAAO;EACrD,MAAM,gBAAgB,aAAa,OAAO,IAAI;EAC9C,MAAM,eAAe,YAAY,OAAO,IAAI;EAC5C,MAAM,gBAAgB,OAAO,iBAAiB;EAC9C,MAAM,eAAe,OAAO,gBAAgB;EAC5C,MAAM,YAAY,WAAW,mBAAmB,UAAU;EAC1D,MAAM,mBAAmB,eAAe,qBAAqB,OAAO;EACpE,MAAM,mBAAmB,oBAAoB,qBAAqB;EAElE,MAAM,cAAc,mBAChB,aAAa,oBAAoB,eACjC,oBAAoB,gBAClB,cAAc,MAAM,QAAQ,KAAK,KAAK,eACtC,mBAAmB,gBAAgB,mBACjC,cAAc,oBAAoB,eAClC,KAAA;EAER,IAAI,kBACF,OAAO,0BAA0B,QAAQ,EAAE,aAAa,YAAY,IAAI,EAAE,YAAY,YAAY;EAGpG,OAAO,cACH;GACE,cAAc,iBAAiB,gBAAiB,aAAa,CAAC,mBAAoB,cAAc,KAAA;GAChG,YACE,oBAAoB,oBAAqB,iBAAiB,iBAAiB,gBACvE,cACA,KAAA;GACN,aACE,oBAAoB,oBAAqB,iBAAiB,iBAAiB,eACvE,cACA,KAAA;GACN,WAAW,iBAAiB,eAAe,cAAc,KAAA;EAC3D,IACA,KAAA;CACN,GAAG;EACD;EACA;EACA;EACA,eAAe;EACf;EACA;EACA;EACA;EACA;EACA;EACA,IAAI;EACJ;EACA,MAAM,QAAQ;CAChB,CAAC;CAED,MAAM,iBAAiB,uBAAuB,UAAU,kBAAkB,WAAW,OAAO,YAAY;CAExG,MAAM,aAAa,eAAe;EAAE;EAAM;CAAM,CAAC;CAEjD,MAAM,YACJ,cACA,CAAC,CAAC,UAAU,OAAO,CAAC,CAAC,SAAS,eAAyB,MACtD,oBAAoB,WAAW,YAAY,OAAO,IAAI,MAAM,aAAa,OAAO,KAAK,OACtF,CAAC,IAAI,aAAa;CAEpB,MAAM,aAAa,cAAc,sBAAsB,SAAS,aAAa,OAAO,IAAI;CAExF,MAAM,oBAAoB,sBAAsB,UAAU,mBAAmB,IAAI;CACjF,MAAM,yBACH,sBAAsB,mBAAmB,IAAI,MAAM,QAAQ,sBAAsB,SAClF,sBAAsB,kBACtB,sBAAsB;CAExB,MAAM,mBAAmB,sBAAsB,mBAAmB,IAAI;CAEtE,MAAM,iBAAiB;EACrB;EACA;EACA;EACA;CACF;CAEA,MAAM,qBAAqB,UAA4C;EACrE,gBAAgB,gBAAgB,KAAK;EACrC,gBAAgB;GAAE;GAAM;EAAM,CAAC;CACjC;CAEA,MAAM,mBAAmB,MAAuC;EAC9D,gBAAgB,cAAc,CAAC;EAC/B,IAAI,kBAAkB,eAAe,OAAO,aAC1C,iBAAiB,IAAI;EAEvB,IAAI,wBAAwB,gBAC1B,iBAAiB,UAAU,yBAAyB,QAAQ,SAAS,IAAI;CAE7E;CAEA,MAAM,kBAAkB,MAAiB;EACvC,IAAI,UAAU,yBAAyB,OACrC,EAAE,eAAe;CAErB;CAEA,MAAM,qBAAqB,MAAwC;EACjE,gBAAgB,gBAAgB,CAAC;EACjC,IAAI,kBAAkB;GACpB,EAAE,eAAe;GACjB,MAAM,cAAc,IAAI;GACxB,MAAM,KAAK,cAAc,UAAU,EAAE;EACvC;CACF;CAEA,MAAM,iBAAiB,UAAqD;EAC1E,gBAAgB,YAAY,KAAK;EACjC,sBAAsB;GACpB;GACA,WAAW,KAAK,SAAiB;GACjC;GACA;EACF,CAAC;CACH;CAEA,OACE,oBAAC,WAAD;EACE,OAAO,MAAM,cAAc,QAAQ,UAAU;EAC7C,cAAY;EACZ,eAAa,CAAC,CAAC,kBAAkB,KAAA;EACjC,UAAU,0BAA0B,IAAI,KAAA;EACxC,GAAI;EACJ,eAAe;EACf,eAAe;EACf,aAAa;EACb,YAAY;EACZ,WAAW;EACX,KAAK,WAAW;GACd,WAAW;IACT,SACE,YAAY,OAAO,KAAK,MACvB,oBAAoB,UAAU,cAC9B,oBAAoB,YAAY,cAAc,aAC3C,aAAa,MAAM,QAAQ,KAAK,SAChC,KAAA;IACN,cAAc;GAChB;GACA,YAAY,YAAY,WAAW,MAAM,IAAI,WAAW,KAAA;GACxD,QAAQ,mBAAmB,iBAAiB,cAAc,oBAAoB,SAAS,YAAY;GACnG,SAAS,YAAY,OAAO,KAAK,KAAK,aAAa,MAAM,QAAQ,KAAK,SAAS,KAAA;GAC/E,eAAe;GACf,UAAU;GACV,GACE,YAAY,YACR,kBAAkB,YAChB,aACA,WACF,YAAY,gBACV,kBAAkB,YAChB,mBACA,SACF,kBAAkB,YAChB,iBACA;GAEV,cAAc,kBAAkB,YAAY,aAAa,KAAA;GACzD,YAAY,IAAI,YAAY,KAAK,YAAY,YAAY,WAAW;GACpE,GAAG,uBAAuB;IACxB;IACA;IACA;IACA;GACF,CAAC;GACD,GAAG;EACL;EAEC,UAAA,eAAe,YACd,qBAAA,YAAA,EAAA,UAAA,CACG,KAAK,iBAAiB,IACpB,UAAU,kBAAkB;GAAE;GAAM;GAAQ;GAAK;EAAM,CAAC,KAAK,OAC5D,kBAAkB,UAAU,aAAa,iBAC3C,oBAAC,UAAD;GAAU,WAAU;GAAO,QAAQ;GAAI,OAAO;GAAe,GAAI;EAAgB,CAAA,IAC/E,kBAAkB,cACnB;GAAC;GAAkB;GAAmB;EAAgB,CAAC,CAAC,SAAS,OAAO,EAAE,KAAK,CAAC,IAAI,aAAa,KAClG,UAAU,OAAO;GACf;GACA;GACA,mBAAmB,KAAK,YAAY;GACpC;GACA;GACA;GACA;GACA;EACF,CAAC,IACC,cAAc,YAChB,oBAAC,uBAAD;GAA6B;GAAa;EAAQ,CAAA,IAChD,yBAAyB,UAAU,sBAAsB,QAC3D,oBAAC,gBAAD;GAAsB;GAAa;GACjC,UAAA,oBAAC,wBAAD,EAAwB,GAAI,eAAiB,CAAA;EAC/B,CAAA,IAEhB,oBAAC,wBAAD,EAAwB,GAAI,eAAiB,CAAA,GAE9C,KAAK,aAAa,KAAK,CAAC,UAAU,eAAe,qBAAA,YAAA,EAAA,UAAA;GAAE;GAAG,IAAI,SAAS;GAAO;EAAG,EAAA,CAAA,CAC9E,EAAA,CAAA;CAEK,CAAA;AAEf;AAEA,MAAa,yBAAyB,KACpC,oBACC,MAAM,SAAS,KAAK,SAAS,KAAK,IACrC;;AC9RA,MAAa,wBAAmD,EAC9D,cACA,KACA,gBACA,gBACA,OACA,YACA,GAAG,WACgD;CACnD,MAAM,EACJ,uBACA,SAAS,EACP,YACA,UAAU,EAAE,uBACZ,qBACA,sBACA,wBAEA;CACJ,MAAM,EAAE,cAAc,MAAM;CAE5B,MAAM,gBAAgB,sBAAsB,sBAAsB;EAChE,eAAe;EACf;EACA;EACA;CACF,CAAC;CAED,MAAM,iBAAiB;EACrB,GAAG,sBAAsB,qBAAqB;GAC5C;GACA;EACF,CAAC;EACD,GAAG;CACL;CAEA,MAAM,cAAc,CAAC,aAAa,oBAAoB;EAAE;EAAK;CAAM,CAAC;CAEpE,OACE,oBAAC,UAAD;EACE,WAAU;EACV,cAAY,oBAAoB,iBAAiB,IAAI,IAAI;EACzD,MAAM,SAA8B;GAClC,IAAI,MACF,gBAAgB,iBAAiB,IAAI;EAEzC;EACA,GAAI;EACJ,KAAK,WAAW;GACd,SAAS,YAAY,WAAW,MAAM,IAAI,SAAS,KAAA;GACnD,UAAU,aAAa,aAAa,KAAA;GACpC,KAAK,aAAa,GAAG,aAAa,SAAS,sBAAsB,CAAC,EAAE,OAAO,MAAM,KAAA;GACjF,WAAW,aAAa,cAAc,YAAY,MAAM,OAAO,KAAA;GAC/D,OAAO;GACP,GAAI,sBAAsB,eAAe,IAAI,KAAK;EACpD;EAEA,UAAA,oBAAC,WAAD;GACE,WAAU;GACV,SAAS,sBAAsB,CAAC,CAAC;GACjC,GAAI;GACJ,KAAK,WAAW;IACd,iBAAiB,aAAa,sBAAsB,KAAA;IACpD,cAAc,CAAC,IAAI,cAAc,IAAI,SAAS,KAAA;IAC9C,SAAS,YAAY,WAAW,MAAM,IAAI,SAAS,KAAA;IACnD,IAAI,CAAC,CAAC,eAAe,IAAI,cAAc,IAAI,SAAS;IACpD,YAAY,CAAC,aAAa,0BAA0B,KAAA;IACpD,OAAO;IACP,GAAI,sBAAsB,gBAAgB,IAAI,KAAK;GACrD;GAEC,UAAA,aACC,IAAI,cAAc,KAAK,cAEvB,oBAAC,UAAD;IAAU,IAAI,IAAI,cAAc;IAAG,cAAA;IAAa,eAAA;IAC7C,UAAA;GACO,CAAA;EAEH,CAAA;CACH,CAAA;AAEd;;ACxEA,MAAa,oBAA+C,EAC1D,mBACA,SACA,cACA,KACA,gBACA,gBACA,OACA,YACA,GAAG,WAC4C;CAC/C,MAAM,QAAQ,SAAS;CAEvB,MAAM,EACJ,SAAS,EACP,mBACA,kBACA,oBACA,oBACA,YACA,UACA,UAAU,EAAE,qBAAqB,0BAA0B,8BAC3D,sBACA,mBACA,yBAEF,MAAM,EAAE,gBAAgB,gBACxB,kBACE;CACJ,MAAM,EAAE,SAAS,gBAAgB,aAAa,aAAa,YAAY,YAAY,iBAAiB,MAAM;CAE1G,MAAM,eAAe,IAAI,gBAAgB;CAEzC,MAAM,EAAE,gBAAgB,oBAAoB,wBAAwB,qBAAqB,CAAC;CAE1F,MAAM,gBAAgB,iBAAiB;EAAE;EAAK;CAAM,CAAC;CACrD,MAAM,cAAc,oBAAoB,IAAI,YAAY;CACxD,MAAM,gBAAgB,aAAa,OAAO,IAAI;CAC9C,MAAM,eAAe,YAAY,OAAO,IAAI;CAE5C,MAAM,gBAAgB;EACpB,GAAG,sBAAsB,sBAAsB;GAC7C;GACA;GACA;EACF,CAAC;EACD,GAAG;CACL;CAEA,MAAM,yBAAmC;EACvC,IAAI,CAAC,oBAAoB,CAAC,uBAAuB,SAAS,QAAQ,KAAK,CAAC,gBAAgB,CAAC,IAAI,YAAY,GACvG,OAAO,CAAC;EAEV,OAAO,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,QAAQ,CAAC,CAAC,QAAQ,IAAI,EAAE,GAAG,aAAa,QAAQ,IAAI,EAAE,CAAC;CACnF;CACA,MAAM,CAAC,mBAAmB,kBAAkB,iBAAiB;CAE7D,MAAM,mBAAoB,sBAAsB,iBAAiB,aAAa,SAAS,gBAAiB;CACxG,MAAM,oBAAqB,sBAAsB,eAAe,SAAS,gBAAiB;CAE1F,MAAM,KAAK,sBAAsB,eAAe,IAAI,KAAK;CAEzD,MAAM,mBAAmB,YAAY,YAAY,KAAK,YAAY,gBAAgB,KAAK;CAIvF,MAAM,YAFkB,SAAS,OAAO,eAAe,OAAO,UAAU,IAAI,MAAM,GAAG,EAAE,KAElD;CAErC,MAAM,mBAAmB,OAAkB;EACzC,IAAI,qBAAqB,aACvB,cAAc,GAAG;CAErB;CAEA,MAAM,kBAAkB,MAAiB;EACvC,EAAE,eAAe;CACnB;CAEA,MAAM,SAAS,OAAmC,IAAI;CAEtD,MAAM,qBAAqB,gBACvB,6BACA,cACE,2BACA,KAAA;CAEN,MAAM,0BACJ,eAAe,UAAU,QACrB,gBACE,qBACA,MAAM,QAAQ,SAAS,SACrB,GAAG,QAAQ,qBAAqB,EAAG,MACnC,GAAG,OAAO,qBAAqB,EAAG,MACtC,KAAA;CAEN,OACE,qBAAA,YAAA,EAAA,UAAA,CACE,qBAAC,UAAD;EACE,cAAY,oBAAoB,iBAAiB,IAAI;EACrD,eAAa,CAAC,CAAC,eAAe,KAAA;EAC9B,iBAAe,iBAAiB,KAAA;EAChC,aAAa;EACb,YAAY;EACZ,MAAM,SAA8B;GAClC,IAAI,MAAM;IACR,OAAO,UAAU;IACjB,gBAAgB,eAAe,IAAI;GACrC;EACF;EACA,UAAU;EACV,GAAI;EACJ,OAAO;GACL,WAAW,aAAa,cAAc,WAAW,MAAM,OAAO,KAAA;GAC9D,GAAG,eAAe;EACpB;EACA,KAAK,WAAkB;GACrB,oBAAoB,0BAChB;IACE,iBAAiB,MAAM,yBAAyB,EAAG;IACnD,GAAG;GACL,IACA,KAAA;GACJ,iBAAiB,GAAG,oBAAoB;GACxC,QACE,CAAC,cAAc,sBAAsB,KAAA,KAAa,cAC9C,GAAG,oBAAoB,aAAa,qBAAqB,oBAAoB,IAAI,GAAG,MACpF,KAAA;GACN,WAAW;GACX,SAAS,YAAY,WAAW,MAAM,IAAI,SAAS,KAAA;GACnD,SAAS,cAAc,MAAO,iBAAiB,eAAe,KAAM;GACpE,UAAU,aACN,aACA,uBAAuB,SAAS,QAAQ,KAAK,cAC3C,WACA;GACN,IAAI,EACF,GAAG,0BAA0B;IAAE;IAAO;GAAM,CAAC,EAC/C;GACA,YAAY,qBACR;IACE,iBAAiB;IACjB,GAAG;GACL,IACA,KAAA;GACJ,KAAK,aACD,IACA,mBAAmB,KAAA,KAAa,cAC9B,GAAG,iBAAiB,aAAa,sBAAsB,eAAe,kBAAkB,IAAI,GAAG,MAC/F,KAAA;GACN,YAAY,aAAa,SAAS;GAClC,OAAO;GACP,QAAQ,uBAAuB,SAAS,QAAQ,KAAK,cAAc,IAAI;GACvE,GAAG;EACL;EAxDF,UAAA;GA0DG,qBAAqB,oBAAC,MAAD,EAAI,OAAO;IAAE,SAAS;IAAQ,OAAO;GAAmB,EAAI,CAAA,IAAI;IACpF,kBAAkB,aAAA,CAAc,KAAK,mBAAmB,sBAAsB;IAC9E,IAAI,OAAO;IACX,IAAI,mBAAmB;KACrB,oBAAqB,kBAAsC;KAC3D,OAAO,aAAa;IACtB;IACA,MAAM,QAAQ;KACZ;KACA;KACA;KACA;KACA;KACA;IACF;IACA,MAAM,MAAM,GAAG,KAAK,GAAG,GAAG;IAC1B,OAAO,OACL,aAAa,WACb,KAAK,OAAO,UAAU,kBAAkB,UACxC,CAAC,kBACD,CAAC,eACD,aAAa,OAAO,KAAK,MACzB,YAAY,OAAO,IAAI,KACrB,oBAAC,wBAAD,EAAkC,GAAI,MAAQ,GAAjB,GAAiB,IAE9C,oBAAC,mBAAD,EAA6B,GAAI,MAAQ,GAAjB,GAAiB,IAEzC;GACN,CAAC;GACA,sBAAsB,oBAAC,MAAD,EAAI,OAAO;IAAE,SAAS;IAAQ,OAAO;GAAoB,EAAI,CAAA,IAAI;EAChF;CACT,CAAA,GAAA,qBAAqB,CAAC,IAAI,aAAa,KACtC,oBAAC,sBAAD;EACE,cAAc;EACT;EACW;EACA;EACT;EACK;CACb,CAAA,CAEH,EAAA,CAAA;AAEN;AAEA,MAAa,wBAAwB,KACnC,mBACC,MAAM,SAAS,KAAK,QAAQ,KAAK,OAAO,KAAK,mBAAmB,KAAK,cACxE;;AC1NA,MAAa,iBAA4C,EACvD,mBACA,OACA,GAAG,WACyC;CAC5C,MAAM,EACJ,eACA,qBACA,aACA,YACA,SAAS,EACP,oBACA,oBACA,YACA,cACA,UACA,mBACA,mBACA,yBACA,yBAEF,MAAM,EAAE,gBAAgB,cAAc,oBACpC;CACJ,MAAM,EAAE,eAAe,cAAc,cAAc,eAAe,MAAM;CAExE,MAAM,iBAAiB;EACrB,GAAG,sBAAsB,mBAAmB,EAAE,MAAM,CAAC;EACrD,GAAG;CACL;CAEA,MAAM,mBAAoB,sBAAsB,iBAAiB,aAAa,SAAS,gBAAiB;CACxG,MAAM,oBAAqB,sBAAsB,eAAe,SAAS,gBAAiB;CAE1F,MAAM,eAAe,YAAY,CAAC,CAAC;CACnC,MAAM,eAAe,cAAc;EACjC,IAAI,CAAC,WAAW,QAAQ,UAAU,CAAC,WAAW,KAAK,QACjD,OAAO,CAAC;EAEV,OAAO,aAAa,QAAQ,QAAQ,IAAI,YAAY,CAAC,CAAC,CAAC,KAAK,MAAM,EAAE,EAAE;CACxE,GAAG,CAAC,YAAY,YAAY,CAAC;CAE7B,MAAM,OAAO,YAAY,KAAK;CAE9B,MAAM,iBAAiB,sBAAsB,OAAO,IAAI;CAExD,MAAM,EAAE,gBAAgB,kBAAkB,CAAC;CAE3C,MAAM,iBAAiB;EACrB;EACA,SAAS,KAAK;EACd;CACF;CAEA,OACE,qBAAA,YAAA,EAAA,UAAA;EACG,CAAC,uBAAuB,SAAS,QAAQ,KAAK,oBAAoB,KAAK,KACtE,oBAAC,WAAD;GACE,GAAI;GACJ,KAAK,WAAW;IACd,SAAS,YAAY,WAAW,MAAM,IAAI,SAAS,KAAA;IACnD,UAAU;IACV,KAAK,kBAAkB;IACvB,QAAQ;IACR,GAAI,sBAAsB,gBAAgB,IAAI,KAAK;GACrD;GAEC,UAAA,WAAW,CAAC,CAAC,KAAK,KAAK,mBAAmB;IACzC,MAAM,QAAQ;KACZ,GAAG;KACH;KACA;IACF;IACA,OAAO,aAAa,SAClB,oBAAC,uBAAD,EAAoC,GAAI,MAAQ,GAApB,IAAI,EAAgB,IAEhD,oBAAC,kBAAD,EAA+B,GAAI,MAAQ,GAApB,IAAI,EAAgB;GAE/C,CAAC;EACQ,CAAA;EAEb,oBAAC,WAAD;GACE,GAAI;GACJ,KAAK,WAAW;IACd,SAAS,YAAY,WAAW,MAAM,IAAI,SAAS,KAAA;IACnD,QAAQ,iBAAiB,GAAG,eAAe,aAAa,EAAE,MAAM,KAAA;IAChE,WAAW,CAAC,KAAK,SAAS,UAAU,KAAA;IACpC,UAAU;IACV,GAAI,sBAAsB,gBAAgB,IAAI,KAAK;GACrD;GAEC,UAAA,gBAAgB,aACd,CAAC,KAAK,SACL,oBAAC,MAAD;IACE,OAAO,EACL,SAAS,YAAY,WAAW,MAAM,IAAI,SAAS,KAAA,EACrD;IAEA,UAAA,oBAAC,MAAD;KACE,SAAS,MAAM,sBAAsB,CAAC,CAAC;KACvC,OAAO,EACL,SAAS,YAAY,WAAW,MAAM,IAAI,SAAS,KAAA,EACrD;KAEC,UAAA,0BAA0B,EAAE,MAAM,CAAC,KAClC,oBAAC,YAAD;MACE,IAAI;OACF,OAAO;OACP,WAAW;OACX,UAAU,cACR,cAAc,SAAS,cAAc,cAAc,SAAS,cAAc,OAAO,OAClF;OACD,IAAI;OACJ,WAAW;OACX,OAAO;MACT;MAEC,UAAA,gBAAgB,cAAc,SAC3B,aAAa,iBACb,aAAa;KACP,CAAA;IAEZ,CAAA;GACF,CAAA,IAEJ,oBAAA,YAAA,EAAA,WACI,eAAe,KAAA,CAAM,KAAK,iBAAiB,mBAAmB;IAC9D,IAAI,MAAM;IACV,IAAI,gBAAgB;KAClB,IAAI,mBAAmB;MACrB,IAAI,gBAAgB,QAAQ,MAAM,GAChC,OAAO;WAEP,iBAAiB,gBAAgB,QAAQ;KAE7C,OACE,iBAAiB,gBAAgB;KAEnC,MAAM,KAAK;IACb;IACA,MAAM,QAAQ;KACZ,GAAG;KACH;KACA;KACA;KACA;KACA,YAAY,iBAAkB,kBAAkC,KAAA;IAClE;IACA,MAAM,MAAM,GAAG,IAAI,GAAG,GAAG,IAAI;IAC7B,OAAO,aAAa,SAClB,oBAAC,uBAAD,EAAiC,GAAI,MAAQ,GAAjB,GAAiB,IAE7C,oBAAC,kBAAD,EAA4B,GAAI,MAAQ,GAAjB,GAAiB;GAE5C,CAAC,EACD,CAAA;EAEG,CAAA;EACV,CAAC,uBAAuB,SAAS,QAAQ,KAAK,oBAAoB,QAAQ,KACzE,oBAAC,WAAD;GACE,GAAI;GACJ,KAAK,WAAW;IACd,QAAQ,oBAAoB;IAC5B,SAAS,YAAY,WAAW,MAAM,IAAI,SAAS,KAAA;IACnD,UAAU;IACV,QAAQ;IACR,GAAI,sBAAsB,gBAAgB,IAAI,KAAK;GACrD;GAEC,UAAA,cAAc,CAAC,CAAC,KAAK,KAAK,mBAAmB;IAC5C,MAAM,QAAQ;KACZ,GAAG;KACH;KACA;IACF;IACA,OAAO,aAAa,SAClB,oBAAC,uBAAD,EAAoC,GAAI,MAAQ,GAApB,IAAI,EAAgB,IAEhD,oBAAC,kBAAD,EAA+B,GAAI,MAAQ,GAApB,IAAI,EAAgB;GAE/C,CAAC;EACQ,CAAA;CAEb,EAAA,CAAA;AAEN;AAEA,MAAa,qBAAqB,KAChC,gBACC,MAAM,SAAS,KAAK,MAAM,QAAQ,SAAS,KAAK,MAAM,QAAQ,IACjE;;AC7LA,MAAa,wBAAmD,EAC9D,UACA,OACA,GAAG,WACgD;CACnD,MAAM,EACJ,SAAS,EACP,OAAO,EAAE,kBACT,mBAEA;CAEJ,OACE,oBAAC,SAAD;EAAS,GAAI,sBAAsB,KAAK;EAAG,OAAO,MAAM,SAAS,aAAa;EAC5E,UAAA,oBAAC,YAAD;GACE,cAAY,KAAK,SAAS,aAAa;GACvC,eAAA;GACA,WAAU;GACV,MAAK;GACL,GAAI;GACJ,UAAU,MAAM;IACd,EAAE,gBAAgB;IAClB,MAAM,UAAU,CAAC;GACnB;GACA,KAAK,WAAW;IACd,YAAY,EACV,QAAQ,WACV;IACA,WAAW;KACT,iBAAiB;KACjB,SAAS;IACX;IACA,QAAQ;IACR,GAAG;IACH,SAAS,aAAa,QAAQ,IAAI;IAClC,GAAG;IACH,YAAY;IACZ,GAAI,sBAAsB,MAAM,IAAI,KAAK;GAC3C;GACA,OAAO,KAAA;GAEP,UAAA,oBAAC,gBAAD,CAAiB,CAAA;EACP,CAAA;CACL,CAAA;AAEb;;AChDA,MAAa,8BAAyD,EACpE,KACA,QACA,OACA,GAAG,WACsD;CACzD,MAAM,EACJ,SAAS,EAAE,4BACT;CAEJ,MAAM,kBAAkB;EACtB,GAAG,sBAAsB,uBAAuB;GAC9C;GACA;EACF,CAAC;EACD,GAAG;CACL;CAEA,MAAM,mBAAmB,UAAwC;EAC/D,iBAAiB,cAAc,KAAK;EACpC,IAAI;GACF,MAAM,aAAa,aAAa,OAAO,SAAwB,GAAG,CAAC;EACrE,SAAS,GAAG;GACV,QAAQ,MAAM,CAAC;EACjB;EACA,MAAM,eAAe,GAAG;CAC1B;CAEA,MAAM,iBAAiB,UAAwC;EAC7D,iBAAiB,YAAY,KAAK;EAClC,MAAM,eAAe,IAAI;EACzB,MAAM,cAAc,IAAI;CAC1B;CAEA,OACE,oBAAC,sBAAD;EACE,GAAI;EACJ,UAAS;EACT,WAAW;EACX,aAAa;EACN;CACR,CAAA;AAEL;;ACzCA,MAAa,oBAA+C,EAC1D,iBACA,KACA,OACA,GAAG,WAC4C;CAC/C,MAAM,EACJ,SAAS,EACP,OAAO,EAAE,WAAW,eACpB,cACA,4BAEA;CAEJ,MAAM,WAAW,IAAI,YAAY;CAEjC,MAAM,CAAC,eAAe,oBAAoB,SAAS,KAAK;CAExD,MAAM,mBAAmB,UAAyC;EAChE,iBAAiB,KAAK;EACtB,MAAM,gBAAgB;EACtB,IAAI,IAAI,WAAW,QAAQ,eAAe;CAC5C;CAEA,OACE,oBAAC,SAAD;EAAS,GAAI,sBAAsB;EAAG,MAAM;EAAe,OAAO,WAAW,aAAa,QAAQ,aAAa;EAC7G,UAAA,oBAAC,YAAD;GACE,cAAY,aAAa;GACzB,cAAc,iBAAiB,KAAK;GACpC,SAAS;GACT,eAAe,iBAAiB,IAAI;GACpC,oBAAoB,iBAAiB,IAAI;GACzC,oBAAoB,iBAAiB,KAAK;GAC1C,MAAK;GACL,GAAI;GACJ,KAAK,WAAW;IACd,QAAQ;IACR,OAAO;IACP,GAAI,sBAAsB,MAAM,IAAI,KAAK;GAC3C;GAEC,UAAA,WACC,oBAAC,WAAD,CAAY,CAAA,IAEZ,oBAAC,aAAD;IACE,UAAS;IACT,OAAO,EACL,WAAW,UAAU,0BAA0B,WAAW,MAAM,oBAAoB,QAAQ,MAAM,EAAE,MACtG;GACD,CAAA;EAEO,CAAA;CACL,CAAA;AAEb;;ACzDA,MAAa,6BAAwD,EACnE,KACA,OACA,GAAG,WAC4D;CAC/D,MAAM,EACJ,SAAS,EAAE,kBAAkB,4BAC3B;CACJ,MAAM,EAAE,YAAY,MAAM;CAI1B,IAAI,CAFW,sBAAsB,kBAAkB,GAE7C,GACR,OAAO;CAGT,MAAM,oBAAoB;EACxB;EACA;EACA,GAAG;CACL;CAEA,IAAI,0BAA0B,oBAAoB,CAAC,IAAI,YAAY,GACjE,OACE,qBAAC,KAAD;EACE,IAAI;GACF,SAAS;GACT,eAAe,YAAY,YAAY,QAAQ;EACjD;EAJF,UAAA,CAME,oBAAC,kBAAD;GAAkB,iBAAgB;GAAM,GAAI;EAAoB,CAAA,GAChE,oBAAC,kBAAD;GAAkB,iBAAgB;GAAS,GAAI;EAAoB,CAAA,CAChE;;CAIT,OACE,oBAAC,kBAAD;EAAkB,iBAAiB,0BAA0B,WAAW,WAAW;EAAO,GAAI;CAAoB,CAAA;AAEtH;;ACxCA,MAAa,4BAAuD,EAClE,QACA,OACA,GAAG,WACoD;CACvD,MAAM,EACJ,SAAS,EACP,OAAO,EAAE,eACT,mBAEA;CAEJ,MAAM,mBAAmB,iBAA0C;EACjE,OAAO,IAAI,YAAY;CACzB;CAEA,OACE,oBAAC,KAAD;EACE,GAAI;EACJ,KAAK,WAAW;GACd,UAAU;GACV,WAAW;GACX,GAAI,sBAAsB,MAAM,IAAI,KAAK;EAC3C;EAEC,UAAA,OAAO,YAAY,IAClB,oBAAC,SAAD;GAAS,OAAO,aAAa;GAC3B,UAAA,oBAAC,YAAD;IAAY,eAAe,gBAAgB,KAAK;IAAG,MAAK;IACtD,UAAA,oBAAC,aAAD,CAAc,CAAA;GACJ,CAAA;EACL,CAAA,IAET,qBAAA,YAAA,EAAA,UAAA,CACE,oBAAC,SAAD;GAAS,OAAO,aAAa;GAC3B,UAAA,oBAAC,YAAD;IAAY,eAAe,gBAAgB,OAAO;IAAG,MAAK;IACxD,UAAA,oBAAC,aAAD,EACE,OAAO,EACL,WAAW,gBACb,EACD,CAAA;GACS,CAAA;EACL,CAAA,GACT,oBAAC,SAAD;GAAS,OAAO,aAAa;GAC3B,UAAA,oBAAC,YAAD;IAAY,eAAe,gBAAgB,KAAK;IAAG,MAAK;IACtD,UAAA,oBAAC,aAAD,EACE,OAAO,EACL,WAAW,iBACb,EACD,CAAA;GACS,CAAA;EACL,CAAA,CACT,EAAA,CAAA;CAED,CAAA;AAET;;ACtDA,MAAa,yBAAoD,EAC/D,KACA,OACA,UAAU,QACV,GAAG,WACiD;CACpD,MAAM,EACJ,SAAS,EACP,OAAO,EAAE,YAAY,YACrB,cACA,qBACA,mBACA,oBACA,oBAEF,MAAM,EAAE,iBACR,gBACA,kBACE;CACJ,MAAM,EAAE,aAAa,YAAY,aAAa,MAAM;CAEpD,MAAM,aAAa,aAAa,OAAO,IAAI;CAC3C,MAAM,YAAY,YAAY,OAAO,IAAI;CAEzC,MAAM,qBAAqB;EACzB,IAAI,YAAY;GACd,sBAAsB;IAAE;IAAK;GAAM,CAAC;GACpC,eAAe,IAAI;EACrB,OAAO,IAAI,WAAW;GACpB,qBAAqB;IAAE;IAAK;GAAM,CAAC;GACnC,cAAc,IAAI;EACpB;EACA,IAAI,eAAe,CAAC;CACtB;CAEA,MAAM,wBAAwB;EAE5B,OAAO,OAAO,cAAc,WAAW,CAAC,CAAC,CAAC,CACvC,QAAQ,aAAa,IAAI,OAAO,UAAU,MAAM,MAAM,GAAG,CAAC,GAAG,EAAE,CAAC,EAC/D,SAAS,UAAU;GACnB,IAAI,MAAM,UAAU,KAAA,KAAa,OAAO,OAAO,KAAK,cAAwB,MAAM,IAAI,GACpF,IAAI,aAAa,MAAM,QAAQ,MAAM;EAEzC,CAAC;EACH,IAAI,YACF,oBAAoB;GAClB,wBAAwB,eAAe,IAAI;GAC3C;GACA;GACA,QAAQ,IAAI;EACd,CAAC;OACI,IAAI,WACT,mBAAmB;GACjB,uBAAuB,cAAc,IAAI;GACzC;GACA;GACA,QAAQ,IAAI;EACd,CAAC;CAEL;CAEA,OACE,oBAAC,KAAD;EACE,UAAU,MAAM,EAAE,gBAAgB;EAClC,KAAK,WAAW;GACd,SAAS;GACT,KAAK;GACL,GAAI,sBAAsB,MAAM,IAAI,KAAK;EAC3C;EAEC,UAAA,YAAY,SACX,qBAAA,YAAA,EAAA,UAAA,CACE,oBAAC,SAAD;GAAS,OAAO,aAAa;GAC3B,UAAA,oBAAC,YAAD;IAAY,cAAY,aAAa;IAAQ,SAAS;IACpD,UAAA,oBAAC,YAAD,CAAa,CAAA;GACH,CAAA;EACL,CAAA,IACN,cAAc,qBAAuB,aAAa,qBACnD,oBAAC,SAAD;GAAS,OAAO,aAAa;GAC3B,UAAA,oBAAC,YAAD;IAAY,cAAY,aAAa;IAAM,OAAM;IAAO,UAAU;IAAU,SAAS;IAClF,UAAA,WAAW,oBAAC,kBAAD,EAAkB,MAAM,GAAK,CAAA,IAAI,oBAAC,UAAD,CAAW,CAAA;GAC9C,CAAA;EACL,CAAA,CAEX,EAAA,CAAA,IAEF,qBAAA,YAAA,EAAA,UAAA,CACE,oBAAC,QAAD;GAAQ,SAAS;GAAc,IAAI,EAAE,UAAU,QAAQ;GACpD,UAAA,aAAa;EACR,CAAA,GACR,qBAAC,QAAD;GAAQ,UAAU;GAAU,SAAS;GAAiB,IAAI,EAAE,UAAU,QAAQ;GAAG,SAAQ;GAAzF,UAAA,CACG,YAAY,oBAAC,kBAAD;IAAkB,OAAM;IAAU,MAAM;GAAK,CAAA,GACzD,aAAa,IACR;EACR,CAAA,CAAA,EAAA,CAAA;CAED,CAAA;AAET;;ACnGA,MAAa,uBAAkD,EAC7D,OACA,GAAG,WAC+C;CAClD,MAAM,EACJ,sBACA,sBACA,uBACA,SAAS,EACP,OAAO,EAAE,+BACT,cACA,yBACA,qBAEF,0BACE;CACJ,MAAM,EAAE,SAAS,cAAc,MAAM;CAErC,MAAM,kBAAkB;EACtB,GAAG,sBAAsB,yBAAyB,EAChD,MACF,CAAC;EACD,GAAG;CACL;CAEA,MAAM,oBAAoB,qBAAqB;CAE/C,OACE,oBAAC,SAAD;EACE,GAAI,sBAAsB;EAC1B,OAAO,iBAAiB,UAAU,oBAAoB,aAAa,cAAc,aAAa;EAE9F,UAAA,oBAAC,QAAD,EAAA,UACE,oBAAC,YAAD;GACE,cAAY,aAAa;GACzB,UAAU,aAAc,CAAC,qBAAqB,CAAC,qBAAqB;GACpE,eAAe,sBAAsB,CAAC,iBAAiB;GACvD,GAAI;GACJ,KAAK,WAAW;IACd,QAAQ,YAAY,YAAY,YAAY;IAC5C,IAAI,YAAY,YAAY,aAAa,KAAA;IACzC,OAAO,YAAY,YAAY,YAAY;IAC3C,GAAI,sBAAsB,iBAAiB,IAAI,KAAK;GACtD;GACA,OAAO,KAAA;GAEN,UAAA,iBAAiB,YAChB,oBAAC,6BAAD,EACE,OAAO;IACL,WAAW,UAAU,oBAAoB,OAAO,sBAAsB,IAAI,MAAM,EAAE;IAClF,YAAY;GACd,EACD,CAAA;EAEO,CAAA,EACR,CAAA;CACC,CAAA;AAEb;;ACvDA,MAAa,oBAA+C,EAC1D,KACA,gBACA,YAC+C;CAC/C,MAAM,QAAQ,SAAS;CACvB,MAAM,EACJ,SAAS,EACP,OAAO,EAAE,kBACT,cACA,sBACA,sBACA,wBAEA;CACJ,MAAM,EAAE,YAAY,MAAM;CAE1B,MAAM,kBAAkB,sBAAsB,sBAAsB;EAClE;EACA;EACA;CACF,CAAC;CAED,MAAM,YAAY,IAAI,aAAa;CACnC,MAAM,aAAa,IAAI,cAAc;CAErC,MAAM,sBAAsB,UAAyC;EACnE,MAAM,gBAAgB;EACtB,IAAI,eAAe;EACnB,iBAAiB,UAAU,KAAK;CAClC;CAEA,MAAM,cAAc,CAAC,CAAC,oBAAoB;EAAE;EAAK;CAAM,CAAC;CAExD,OACE,oBAAC,SAAD;EACE,sBAAsB,CAAC,aAAa,CAAC;EACrC,GAAI,sBAAsB;EAC1B,OAAO,iBAAiB,UAAU,aAAa,aAAa,WAAW,aAAa;EAEpF,UAAA,oBAAC,QAAD,EAAA,UACE,oBAAC,YAAD;GACE,cAAY,aAAa;GACzB,UAAU,CAAC,aAAa,CAAC;GACzB,GAAI;GACJ,SAAS;GACT,KAAK,WAAW;IACd,QAAQ,YAAY,YAAY,YAAY;IAC5C,SAAS,CAAC,aAAa,CAAC,cAAc,KAAM;KAC3C,MAAM,cAAc,SAAS,yBAAyB,SAAS,OAAO,OAAO,GAAG,IAAI,QAAQ,GAAG;IAChG,OAAO,YAAY,YAAY,YAAY;IAC3C,GAAI,sBAAsB,iBAAiB,IAAI,KAAK;GACtD;GACA,OAAO,KAAA;GAEN,UAAA,iBAAiB,YAChB,oBAAC,gBAAD,EACE,OAAO;IACL,WAAW,UACT,CAAC,aAAa,CAAC,oBACX,yBAAyB,UAAU,MAAM,cAAc,QACrD,KACA,MACF,aACE,OACA,EACP;IACD,YAAY;GACd,EACD,CAAA;EAEO,CAAA,EACR,CAAA;CACC,CAAA;AAEb;;ACzEA,MAAa,oBACX,cACqD,aAAa,YAAY,UAAU,UAAU,KAAA;AAEpG,MAAa,eAA0C,cACrD,UAAU,OAAO,iBAAiB,YAAY,UAAU,aAAa,WAAW,IAAI,KAAA,MAAc,UAAU;AAE9G,MAAa,wBACX,YAC2B;CAC3B,MAAM,oBAA4C,CAAC;CACnD,MAAM,kBAAkB,SAA8C;EACpE,KAAK,SAAS,QAAQ;GACpB,MAAM,gBAAgB,iBAAiB,GAAG;GAC1C,IAAI,eACF,eAAe,aAAa;QAE5B,kBAAkB,KAAK,GAAG;EAE9B,CAAC;CACH;CACA,eAAe,OAAO;CACtB,OAAO;AACT;AAEA,MAAa,kBAA6C,EACxD,YACA,mBAImC;CACnC,MAAM,EACJ,iBAAiB,CAAC,GAClB,sBACA,YAAY,CAAC,GACb,UAAU,CAAC,GACX,OAAO,EAAE,kBAAkB,CAAC,MAAM,CAAC,MACjC;CACJ,OAAO,WAAW,KAAK,cAAc;EAEnC,IAAI,CAAC,UAAU,IACb,UAAU,KAAK,YAAY,SAAS;EAGtC,IAAI,CAAC,UAAU,eACb,UAAU,gBAAgB;EAE5B,MAAM,gBAAgB,iBAAiB,SAAS;EAChD,IAAI,eAAe,UAAU,aAAa,WAAW;GACnD,UAAU,gBAAgB;GAE1B,UAAU,UAAU,eAAe;IACjC,YAAY,CAAC,GAAG,aAAa;IAC7B;GACF,CAAC;EACH,OAAO,IAAI,UAAU,kBAAkB,QAAQ;GAE7C,IAAI,MAAM,QAAQ,UAAU,aAAa,GAAG;IAC1C,MAAM,SAAS,UAAU;IACzB,UAAU,gBAAgB,EACxB,YAAY,YAAY,OAAO,KAAK,OAAO,eAAe,GAAG,EAAE,UAAU,OAAO,CAAC,EACnF;GACF;GAGA,IAAI,OAAO,KAAK,SAAS,CAAC,CAAC,SAAS,gBAAgB,UAAU,GAAG,GAAG;IAClE,UAAU,WAAW,UAAU,gBAAgB,UAAU,QAAQ,UAAU;IAC3E,UAA2C,YAAY,gBAAgB,UAAU;GACnF;GAGA,IAAI,OAAO,KAAK,OAAO,CAAC,CAAC,SAAS,UAAU,MAAgB,GAC1D,UAAU,SAAS,QAAQ,UAAU;EAEzC,OAAO,IAAI,UAAU,kBAAkB,WACrC,YAAY;GACV,GAAI;GACJ,GAAG;EACL;EAEF,OAAO;CACT,CAAC;AACH;AAEA,MAAa,iBACX,eACA,cACA,gBACyB;CACzB,IAAI,cAAc,UAAU,GAC1B,cAAc,IAAI,aAAa,YAAY,CAAC;CAE9C,MAAM,iBAAiB,CAAC,GAAG,WAAW;CACtC,eAAe,OACb,eAAe,QAAQ,aAAa,EAAE,GACtC,GACA,eAAe,OAAO,eAAe,QAAQ,cAAc,EAAE,GAAG,CAAC,CAAC,CAAC,EACrE;CACA,OAAO;AACT;AAEA,MAAa,cACX,OACA,eACA,iBACS;CACT,MAAM,mBAAmB,cAAc,eAAe,cAAc,MAAM,MAAM,WAAW;CAC3F,MAAM,eAAe,gBAAgB;CACrC,MAAM,kBAAkB,EAAE,MAAM,CAAC,GAAG,QAAQ,CAAC,SAAS;EACpD,KAAK,iBAAiB,QAAQ,WAAW,IAAI,SAAS,MAAM,CAAC;EAC7D,OAAO,iBAAiB,QAAQ,WAAW,MAAM,SAAS,MAAM,CAAC;CACnE,EAAE;AACJ;AAEA,MAAa,4BACX,cACqB;CACrB,MAAM,EAAE,kBAAkB;CAC1B,IAAI,kBAAkB,gBACpB,OAAO;CAET,IAAI,eAAe,SAAS,OAAO,GACjC,OAAO;CAET,IAAI,kBAAkB,YAAY,kBAAkB,YAClD,OAAO;CAET,OAAO;AACT;AAcA,MAAa,wBAAwB,cAAgC,iBACnE,aAAa,SAAS,aAAa,OAAO,CAAC,CAAC,CAAC,YAAY,IAAI,aAAa,MAAM,CAAC;AAEnF,MAAa,uBAAkD,EAC7D,QACA,YAIiC;CACjC,MAAM,EACJ,SAAS,EAAE,8BACT;CACJ,MAAM,EAAE,WAAW;CACnB,MAAM,EAAE,cAAc;CACtB,MAAM,EAAE,kBAAkB;CAE1B,MAAM,eAAe,CAAC,EAAE,eAAe,WAAW,MAAM,KAAK,eAAe,WAAW,MAAM;CAC7F,MAAM,uBAAuB,kBAAkB;CAC/C,MAAM,sBAAsB,UAAU,aAAa,yBAAyB,SAAS;CAErF,MAAM,gBACJ,eAAe,SAAS,OAAO,KAAK;EAAC;EAAW;EAAoB;CAAe,CAAC,CAAC,SAAS,mBAAmB;CACnH,MAAM,iBAAiB,kBAAkB;CACzC,MAAM,sBAAsB,kBAAkB;CAC9C,MAAM,kBACJ,CAAC,gBAAgB,MAAM,CAAC,CAAC,SAAS,aAAc,KAAM,CAAC,kBAAkB,CAAC;CAM5E,OAAO;EACL,4BALiC,WAAW,2BAA2B;EAMvE;EACA,qBAL0B,OAAO,uBAKf;EAClB;EACA;EACA;EACA;EACA;EACA;CACF;AACF;AAEA,MAAa,sBAAiD,EAC5D,QACA,YAIkC;CAClC,MAAM,EAAE,WAAW;CACnB,MAAM,EAAE,cAAc;CACtB,MAAM,EAAE,qBAAqB,sBAAsB,qBAAqB,mBAAmB,oBAAoB;EAC7G;EACA;CACF,CAAC;CAED,OAAO,cAEH,UAAU,yBACR,kBAAkB,uBAAuB,yBAAyB,sBAChE,MAAM,KAAK,oBAAoB,KAAK,CAAC,CAAC,CACnC,QAAQ,UAAU,UAAU,QAAQ,UAAU,KAAA,CAAS,CAAC,CACxD,MAAM,GAAG,MAAM,EAAE,cAAc,CAAC,CAAC,IACpC,KAAA,IACN;EAAC,UAAU;EAAqB;EAAqB;EAAsB;EAAqB;CAAc,CAChH;AACF;;AC1NA,SAAgB,0BAAqD,EACnE,QACA,IACA,MACA,gBAMoG;CACpG,MAAM,EAAE,sBAAsB,yBAAyB,iBAAiB;CACxE,OAAO;EACL,GAAG;EACH,QAAQ,SAAS,aAAa,UAAW;EACzC;EACA,GAAG,0BAA0B;EAC7B;CACF;AACF;AAEA,MAAa,wBACX,iBACY;CACZ,MAAM,EAAE,kBAAkB,0BAA0B;CACpD,OAAO,CAAC,EAAE,oBAAoB,CAAC,uBAAuB,WAAW,QAAQ;AAC3E;AAEA,MAAa,qBACX,iBACY;CACZ,MAAM,EAAE,mBAAmB,sBAAsB;CACjD,OAAO,CAAC,EAAE,qBAAqB;AACjC;AAEA,MAAa,uBACX,iBACY;CACZ,MAAM,EACJ,iBACA,gBACA,mBACA,OAAO,EAAE,eACP;CACJ,OAAO,CAAC,EAAE,mBAAoB,kBAAkB,UAAU,UAAW;AACvE;AAEA,MAAa,wBACX,iBACY;CACZ,MAAM,EACJ,mBACA,iBACA,eACA,kBACA,OAAO,EAAE,kBACP;CACJ,OAAO,CAAC,EACN,oBACC,eAAe,sBAAsB,SACrC,iBAAiB,CAAC,SAAS,KAAK,CAAC,CAAC,SAAS,mBAAmB,EAAE;AAErE;AAEA,MAAa,0BACX,iBACY,CAAC,CAAC,aAAa;AAE7B,MAAa,wBACX,iBACY,CAAC,CAAC,aAAa;AAE7B,MAAa,uBACX,iBACY,aAAa,eAAe;AAE1C,MAAa,8BACX,iBAEA;CACE,qBAAqB,YAAY,KAAK;CACtC,kBAAkB,YAAY,KAAK;CACnC,aAAa,0BAA0B,WAAW,qBAAqB,YAAY,KAAK;CACxF,aAAa,yBAAyB,WAAW,oBAAoB,YAAY,KAAK;CACtF,uBAAuB,YAAY,KAAK;CACxC,qBAAqB,YAAY,KAAK;AACxC,CAAC,CAAC,OAAO,OAAO;AAElB,MAAa,+BACX,iBAEA;CACE,aAAa,0BAA0B,UAAU,qBAAqB,YAAY,KAAK;CACvF,aAAa,yBAAyB,UAAU,oBAAoB,YAAY,KAAK;CACrF,oBAAoB,YAAY,KAAK;AACvC,CAAC,CAAC,OAAO,OAAO;AAElB,MAAa,4BACX,cACA,QAAQ,UACK;CACb,MAAM,EACJ,OAAO,EAAE,aAAa,wBAAwB,CAAC,QAC7C;CAEJ,MAAM,uBAAiC,2BAA2B,YAAY;CAC9E,MAAM,wBAAkC,4BAA4B,YAAY;CAEhF,MAAM,sBAAsB,qBAAqB,aAAa,OAAO,CAAC,CAAC,KAAK,cAAc,YAAY,SAAS,CAAC;CAEhH,IAAI,sBAAsB,QACtB,sBACA,MAAM,qBAAK,IAAI,IAAI,CAAC,GAAG,uBAAuB,GAAG,mBAAmB,CAAC,CAAC;CAE1E,sBAAsB,oBAAoB,QACvC,UAAU,CAAC,qBAAqB,SAAS,KAAK,KAAK,CAAC,sBAAsB,SAAS,KAAK,CAC3F;CAEA,OAAO;EAAC,GAAG;EAAsB,GAAG;EAAqB,GAAG;CAAqB;AACnF;;AC7GA,MAAa,gCAA2D,EACtE,YACA,QACA,eACA,iBACA,kBACA,OACA,GAAG,WAC+D;CAClE,MAAM,EACJ,SAAS,EACP,sBACA,qBACA,cACA,cACA,UAAU,EAAE,4BAEZ;CACJ,MAAM,EAAE,cAAc;CACtB,MAAM,EAAE,kBAAkB;CAE1B,MAAM,gBAAgB,OAAO,aAAa;CAE1C,MAAM,4BAA4B,WAA8B;EAC9D,IAAI,kBAAkB,SACpB,QAAQ,SAAS,WAAW,gBAAmC;GAC7D,YAAY,iBAAiB,CAAC,aAAa;EAC7C,CAAC;OAED,OAAO,iBAAiB;CAE5B;CAEA,MAAM,cAAc,OAAsB,IAAI;CAE9C,MAAM,CAAC,YAAY,iBAAiB,SAAS,KAAK;CAElD,MAAM,mBAAmB,MAAoC;EAC3D,cAAc,IAAI;EAClB,IAAI;GACF,EAAE,aAAa,aAAa,YAAY,SAAwB,GAAG,CAAC;EACtE,SAAS,GAAG;GACV,QAAQ,MAAM,CAAC;EACjB;CACF;CAEA,MAAM,iBAAiB,OAAqC;EAC1D,cAAc,KAAK;EACnB,iBAAiB,IAAI;EACrB,IAAI,eACF,WAAW,OAAO,QAAQ,aAAa;CAE3C;CAEA,MAAM,mBAAmB,OAAkB;EACzC,IAAI,CAAC,cAAc,UAAU,yBAAyB,OACpD,iBAAiB,MAAM;CAE3B;CAEA,IAAI,CAAC,UAAU,UAAU,UAAU,0BAA0B,OAC3D,OAAO;CAGT,OACE,qBAAA,YAAA,EAAA,UAAA,CACE,oBAAC,UAAD;EACE,eAAA;EACA,aAAa;EACb,KAAK;EACL,GAAI;EACJ,KAAK,WAAW;GACd,YAAY;GACZ,gBAAgB;GAChB,IAAI;GACJ,SAAS,aAAa,KAAM;GAC5B,SAAS,aACL,cAAc,MAAM,QAAQ,KAAK,SACjC,eAAe,OAAO,OAAO,KAC3B,cAAc,wBACd;GACN,eAAe;GACf,IAAI,IAAI,OAAO,QAAQ,MAAO,EAAE;GAChC,IAAI;GACJ,GAAI,sBAAsB,MAAM,IAAI,KAAK;EAC3C;EAEA,UAAA,qBAAC,KAAD;GACE,IAAI;IACF,SAAS;IACT,UAAU;IACV,KAAK;GACP;GALF,UAAA;IAOG,kBAAkB,WACjB,wBACA,CAAC,oBACA,UAAU,yBAAyB,QAClC,oBAAC,sBAAD;KAAsB,WAAW;KAAe,aAAa;KAAwB;IAAQ,CAAA,IAE7F,oBAAC,KAAD,EAAK,IAAI,EAAE,OAAO,OAAO,EAAI,CAAA;IAEhC,wBACE,OAAO,UAAU,IAChB,oBAAC,0BAAD;KAAkC;KAAe;IAAQ,CAAA,IAEzD,oBAAC,KAAD,EAAK,IAAI,EAAE,OAAO,OAAO,EAAI,CAAA;IAEhC,eACC,oBAAC,kBAAD;KACE,SAAS;KACT,SACE,oBAAC,SAAD;MAAS,GAAI,sBAAsB;MAAG,OAAO,aAAa;MACxD,UAAA,oBAAC,QAAD,CAAS,CAAA;KACF,CAAA;KAEX,UAAU,CAAC,OAAO,WAAW;KAC7B,OAAO,UAAU;KACjB,gBAAgB,yBAAyB,MAAM;KAC/C,WAAW,EACT,YAAY,EACV,IAAI;MACF,IAAI;MACJ,SAAS,kBAAkB,YAAY,IAAI;KAC7C,EACF,EACF;IACD,CAAA,IAED,oBAAC,YAAD;KAAY,IAAI,EAAE,WAAW,SAAS;KAAI,UAAA,UAAU;IAAmB,CAAA;GAEtE;;CACG,CAAA,GACT,OAAO,SAAS,KAAK,GAAsB,MAC1C,oBAAC,8BAAD;EACc;EACZ,QAAQ;EACO;EACE;EAEC;EACX;CACR,GAHM,GAAG,EAAE,GAAG,EAAE,IAGhB,CACF,CACD,EAAA,CAAA;AAEN;;ACxJA,MAAa,2BAAsD,EACjE,UACA,aACA,OACA,GAAG,WACmD;CACtD,MAAM,EACJ,eACA,mBACA,sBACA,wBACA,wBACA,yBACA,oBACA,qBACA,cACA,SAAS,EACP,sBACA,qBACA,cACA,cACA,UAAU,EAAE,4BAEZ;CACJ,MAAM,EAAE,aAAa,YAAY,MAAM;CAEvC,MAAM,0BAA0B,UAAoB;EAClD,MAAM,UAAU,kBAAkB,CAAC,CAChC,QAAQ,WAAW,OAAO,UAAU,iBAAiB,KAAK,CAAC,CAC3D,QAAQ,KAAK,WAAW;GACvB,IAAI,OAAO,MAAM,SAAS,CAAC,OAAO,aAAa;GAC/C,OAAO;EACT,GAAG,CAAC,CAAwB;EAE9B,MAAM,qBAAqB,SAAS;GAAE,GAAG;GAAK,GAAG;EAAQ,EAAE;CAC7D;CAEA,MAAM,kBAAkB,cAAc;CACtC,MAAM,oBAAoB,qBAAqB;CAC/C,MAAM,kBAAkB,mBAAmB;CAC3C,MAAM,mBAAmB,oBAAoB;CAE7C,MAAM,aAAa,cAAc;EAC/B,MAAM,UAAU;EAChB,IAAI,YAAY,SAAS,KAAK,CAAC,QAAQ,MAAM,QAAQ,IAAI,UAAU,kBAAkB,OAAO,GAC1F,OAAO;GACL,GAAG;GACH,GAAG,MAAM,KAAK,IAAI,IAAI,WAAW,CAAC,CAAC,CAAC,KAAK,UAAU,kBAAkB,MAAM,QAAQ,KAAK,OAAO,KAAK,CAAC;GACrG,GAAG;EACL,CAAC,CAAC,OAAO,OAAO;EAElB,OAAO;CACT,GAAG;EAAC;EAAiB;EAAmB;EAAa;EAAiB;CAAgB,CAAC;CAEvF,MAAM,kBAAkB,WAAW,MAAM,QAAQ,IAAI,UAAU,kBAAkB,OAAO;CAExF,MAAM,wBAAwB,cAE1B,YAAY,WAAW,aAAa,YAAY,UAChD,CAAC,YAAY,OAAO,QAAQ,UAAU,WAAW,aAAa,YAAY,MAAM,GAElF,CAAC,aAAa,aAAa,WAAW,CACxC;CAEA,MAAM,CAAC,eAAe,oBAAoB,SAAmC,IAAI;CAEjF,OACE,qBAAC,MAAD;EACY;EACV,mBAAA;EACA,eAAe,YAAY,IAAI;EAC/B,MAAM,CAAC,CAAC;EACR,WAAW,EACT,MAAM;GACJ,OAAO,YAAY;GACnB,IAAI,EACF,iBAAiB,oBACnB;EACF,EACF;EACA,GAAI;EAbN,UAAA;GAeE,qBAAC,KAAD;IACE,IAAI;KACF,SAAS;KACT,gBAAgB;KAChB,GAAG;KACH,IAAI;IACN;IANF,UAAA;KAQG,gBACC,oBAAC,QAAD;MAAQ,UAAU,CAAC,wBAAwB;MAAG,eAAe,uBAAuB,KAAK;MACtF,UAAA,aAAa;KACR,CAAA;KAET,wBACC,oBAAC,QAAD;MACE,UAAU,CAAC;MACX,eAAe,MAAM,eAAe,yBAAyB,MAAM,SAAS,IAAI,CAAC;MAEhF,UAAA,aAAa;KACR,CAAA;KAET,uBACC,oBAAC,QAAD;MAAQ,UAAU,CAAC,uBAAuB;MAAG,eAAe,MAAM,mBAAmB,IAAI;MACtF,UAAA,aAAa;KACR,CAAA;KAET,gBACC,oBAAC,QAAD;MAAQ,UAAU,uBAAuB;MAAG,eAAe,uBAAuB,IAAI;MACnF,UAAA,aAAa;KACR,CAAA;IAEP;;GACL,oBAAC,SAAD,CAAU,CAAA;GACT,WAAW,KAAK,QAAQ,UACvB,oBAAC,8BAAD;IACc;IACJ;IACO;IACE;IAEC;IACX;GACR,GAHM,GAAG,MAAM,GAAG,OAAO,IAGzB,CACF;EACG;;AAEV;;ACpIA,MAAa,6BAAwD,EACnE,OACA,GAAG,WACqD;CACxD,MAAM,EACJ,SAAS,EACP,OAAO,EAAE,kBACT,mBAEA;CAEJ,MAAM,CAAC,UAAU,eAAe,SAA6B,IAAI;CAEjE,MAAM,eAAe,UAAmC;EACtD,YAAY,MAAM,aAAa;CACjC;CAEA,OACE,qBAAA,YAAA,EAAA,UAAA,CACE,oBAAC,SAAD;EAAS,OAAO,MAAM,SAAS,aAAa;EAC1C,UAAA,oBAAC,YAAD;GAAY,cAAY,aAAa;GAAiB,SAAS;GAAa,GAAI;GAAM,OAAO,KAAA;GAC3F,UAAA,oBAAC,gBAAD,CAAiB,CAAA;EACP,CAAA;CACL,CAAA,GACR,YAAY,oBAAC,yBAAD;EAAmC;EAAuB;EAAoB;CAAQ,CAAA,CACnG,EAAA,CAAA;AAEN;;AC7BA,MAAa,gCAA2D,EACtE,OACA,GAAG,WACwD;CAC3D,MAAM,EACJ,SAAS,EACP,OAAO,EAAE,kBAAkB,mBAAmB,oBAC9C,gBAEF,eACE;CACJ,MAAM,EAAE,YAAY,MAAM;CAE1B,MAAM,iCAAiC;EAErC,WADoB,YAAY,gBAAgB,YAAY,YAAY,YAAY,aAAa,aAC3E;CACxB;CAEA,OACE,oBAAC,SAAD;EAAS,OAAO,MAAM,SAAS,aAAa;EAC1C,UAAA,oBAAC,YAAD;GACE,cAAY,aAAa;GACzB,SAAS;GACT,GAAI;GACJ,OAAO,KAAA;GAEN,UAAA,YAAY,YACX,oBAAC,kBAAD,CAAmB,CAAA,IACjB,YAAY,gBACd,oBAAC,mBAAD,CAAoB,CAAA,IAEpB,oBAAC,kBAAD,CAAmB,CAAA;EAEX,CAAA;CACL,CAAA;AAEb;;ACpCA,MAAa,2BAAsD,EACjE,OACA,GAAG,WACmD;CACtD,MAAM,EACJ,SAAS,EACP,OAAO,EAAE,gBAAgB,qBACzB,gBAEF,yBACE;CACJ,MAAM,EAAE,sBAAsB,MAAM;CAEpC,MAAM,gCAAgC;EACpC,qBAAqB,CAAC,iBAAiB;CACzC;CAEA,OACE,oBAAC,SAAD;EAAS,OAAO,MAAM,SAAS,aAAa;EAC1C,UAAA,oBAAC,YAAD;GACE,cAAY,aAAa;GACzB,SAAS;GACT,GAAI;GACJ,OAAO,KAAA;GAEN,UAAA,oBAAoB,oBAAC,mBAAD,CAAoB,CAAA,IAAI,oBAAC,gBAAD,CAAiB,CAAA;EACpD,CAAA;CACL,CAAA;AAEb;;AC5BA,MAAa,8BAAyD,EACpE,OACA,GAAG,WACsD;CACzD,MAAM,EACJ,SAAS,EACP,OAAO,EAAE,oBAAoB,kBAC7B,gBAEF,oBACE;CACJ,MAAM,EAAE,iBAAiB,MAAM;CAE/B,MAAM,CAAC,eAAe,oBAAoB,SAAS,KAAK;CAExD,MAAM,+BAA+B;EACnC,iBAAiB,KAAK;EACtB,gBAAgB,CAAC,YAAY;CAC/B;CAEA,OACE,oBAAC,SAAD;EAAS,MAAM;EAAe,OAAO,MAAM,SAAS,aAAa;EAC/D,UAAA,oBAAC,YAAD;GACE,cAAY,aAAa;GACzB,cAAc,iBAAiB,KAAK;GACpC,SAAS;GACT,eAAe,iBAAiB,IAAI;GACpC,oBAAoB,iBAAiB,IAAI;GACzC,oBAAoB,iBAAiB,KAAK;GAC1C,GAAI;GACJ,OAAO,KAAA;GAEN,UAAA,eAAe,oBAAC,oBAAD,CAAqB,CAAA,IAAI,oBAAC,gBAAD,CAAiB,CAAA;EAChD,CAAA;CACL,CAAA;AAEb;;ACrCA,MAAa,gCAA2D,EACtE,OACA,GAAG,WACwD;CAC3D,MAAM,EACJ,SAAS,EACP,OAAO,EAAE,YAAY,iBAErB,gBAEF,MAAM,EAAE,kBACR,wBACE;CACJ,MAAM,EAAE,cAAc,qBAAqB,MAAM;CAEjD,MAAM,2BAA2B;EAC/B,oBAAoB,CAAC,gBAAgB;EACrC,qBAAqB,eAAe,SAAS,MAAM,CAAC;CACtD;CAEA,OACE,oBAAC,SAAD;EAAS,OAAO,MAAM,SAAS,aAAa;EAC1C,UAAA,oBAAC,QAAD,EAAA,UACE,oBAAC,YAAD;GACE,cAAY,MAAM,SAAS,aAAa;GACxC,UAAU,CAAC,CAAC,gBAAgB;GAC5B,SAAS;GACT,GAAI;GACJ,OAAO,KAAA;GAEN,UAAA,mBAAmB,oBAAC,eAAD,CAAgB,CAAA,IAAI,oBAAC,YAAD,CAAa,CAAA;EAC3C,CAAA,EACR,CAAA;CACC,CAAA;AAEb;;AC/BA,MAAa,sBAAiD,EAC5D,MACA,OACA,eACA,OACA,GAAG,WAC8C;CACjD,MAAM,EACJ,SAAS,EACP,OAAO,EAAE,uBAET;CAEJ,OACE,qBAAC,UAAD;EACE,IAAI;GACF,YAAY;GACZ,gBAAgB;GAChB,UAAU;GACV,IAAI;GACJ,IAAI;EACN;EACA,UAAU;EACV,GAAI;EATN,UAAA,CAWE,qBAAC,KAAD;GACE,IAAI;IACF,YAAY;IACZ,SAAS;GACX;GAJF,UAAA,CAME,oBAAC,cAAD,EAAA,UAAe,KAAmB,CAAA,GACjC,KACE;EACJ,CAAA,GAAA,iBACC,oBAAC,YAAD;GAAY,SAAS;GAAe,cAAc;GAAe,MAAK;GAAQ,IAAI,EAAE,GAAG,EAAE;GACvF,UAAA,oBAAC,gBAAD,CAAiB,CAAA;EACP,CAAA,CAEN;;AAEd;;ACrCA,MAAa,qBAAgD,EAC3D,UACA,YACA,KACA,aACA,gBACA,OACA,GAAG,WACoD;CACvD,MAAM,EACJ,SAAS,EACP,iBACA,eACA,OAAO,EAAE,YACT,cACA,UAAU,EAAE,uBACZ,+BAEA;CACJ,MAAM,EAAE,YAAY,MAAM;CAE1B,MAAM,YAAY,cAAc;EAC9B,MAAM,QAAqB,CAAC;EAC5B,MAAM,WAAW,sBAAsB,eAAe,GAAG,KAAK,CAAC,SAAS,KAAK,CAAC,CAAC,SAAS,eAAgB,KACtG,oBAAC,oBAAD;GACE,MAAM,oBAAC,UAAD,CAAW,CAAA;GAEjB,OAAO,aAAa;GACpB,SAAS;GACF;EACR,GAJM,MAIN;EAEH,IAAI,UACF,MAAM,KAAK,QAAQ;EAErB,MAAM,qBAAqB,2BAA2B;GACpD,iBAAiB,YAAY,IAAI;GACjC;GACA;GACA;EACF,CAAC;EACD,IAAI,oBAAoB,QACtB,MAAM,KAAK,GAAG,kBAAkB;EAElC,OAAO;CACT,GAAG;EACD;EACA;EACA;EACA;EACA,aAAa;EACb;EACA;EACA;EACA;EACA;CACF,CAAC;CAED,IAAI,CAAC,UAAU,QACb,OAAO;CAGT,OACE,oBAAC,MAAD;EACY;EACV,mBAAA;EACA,UAAU,UAAU,MAAM,gBAAgB;EAC1C,eAAe,YAAY,IAAI;EAC/B,MAAM,CAAC,CAAC;EACR,WAAW,EACT,MAAM;GACJ,OAAO,YAAY;GACnB,IAAI,EACF,iBAAiB,oBACnB;EACF,EACF;EACA,GAAI;EAEH,UAAA;CACG,CAAA;AAEV;;ACzFA,MAAM,yBAAyB;CAC7B,WAAW,EACT,SAAS,EACX;CACA,QAAQ;CACR,IAAI;CACJ,SAAS;CACT,YAAY;CACZ,OAAO;AACT;AASA,MAAa,iCAA4D,EACvE,MACA,KACA,gBACA,OACA,GAAG,WACyD;CAC5D,MAAM,EACJ,SAAS,EACP,mBACA,iBACA,eACA,OAAO,EAAE,UAAU,iBACnB,cACA,0BACA,oBAEF,kBACE;CAEJ,MAAM,EAAE,aAAa,eAAe,MAAM;CAE1C,MAAM,aAAa,aAAa,OAAO,IAAI;CAC3C,MAAM,YAAY,YAAY,OAAO,IAAI;CAEzC,MAAM,wBAAyB,cAAc,sBAAsB,SAAW,aAAa,oBAAoB;CAE/G,MAAM,CAAC,UAAU,eAAe,SAA6B,IAAI;CAEjE,MAAM,2BAA2B,UAAmC;EAClE,MAAM,gBAAgB;EACtB,MAAM,eAAe;EACrB,YAAY,MAAM,aAAa;CACjC;CAEA,MAAM,uBAAuB,UAAsB;EACjD,MAAM,gBAAgB;EACtB,cAAc,GAAG;EACjB,YAAY,IAAI;CAClB;CAEA,OACE,oBAAA,YAAA,EAAA,UACG,oBAAoB,CAAC,wBACpB,iBAAiB;EAAE;EAAM;EAAK;EAAgB;CAAM,CAAC,IACnD,wBACF,oBAAC,uBAAD;EAA4B;EAAY;CAAQ,CAAA,IAC9C,CAAC,4BACH,sBAAsB,eAAe,GAAG,KACxC,CAAC,SAAS,KAAK,CAAC,CAAC,SAAS,eAAgB,IAC1C,oBAAC,SAAD;EAAS,WAAU;EAAQ,OAAO,aAAa;EAC7C,UAAA,oBAAC,YAAD;GACE,cAAY,aAAa;GACzB,SAAS;GACT,IAAI;GACJ,GAAI;GAEJ,UAAA,oBAAC,UAAD,CAAW,CAAA;EACD,CAAA;CACL,CAAA,IACP,2BAA2B;EAC3B;EACA,iBAAiB,CAAC;EAClB;EACA;CACF,CAAC,CAAC,EAAE,SACJ,qBAAA,YAAA,EAAA,UAAA,CACE,oBAAC,SAAD;EAAS,GAAI,sBAAsB;EAAG,OAAO,aAAa;EACxD,UAAA,oBAAC,YAAD;GACE,cAAY,aAAa;GACzB,SAAS;GACT,MAAK;GACL,IAAI;GACJ,GAAI;GAEJ,UAAA,oBAAC,eAAD,CAAgB,CAAA;EACN,CAAA;CACL,CAAA,GACT,oBAAC,mBAAD;EACY;EACV,YAAY;EACP;EACQ;EACG;EACT;CACR,CAAA,CACD,EAAA,CAAA,IACA,KACJ,CAAA;AAEN;;ACvGA,MAAa,uBAAkD,EAC7D,QACA,mBACA,OACA,GAAG,WAC+C;CAClD,MAAM,QAAQ,SAAS;CACvB,MAAM,EACJ,SAAS,EAAE,qBAAqB,yBAAyB,8BACvD;CACJ,MAAM,EAAE,YAAY,MAAM;CAC1B,MAAM,EAAE,WAAW;CACnB,MAAM,EAAE,cAAc;CACtB,MAAM,EAAE,kBAAkB;CAE1B,MAAM,iBAAiB,uBAAuB,UAAU,kBAAkB,WAAW,OAAO,YAAY;CAExG,MAAM,OAAO;EAAE;EAAQ;CAAM;CAC7B,MAAM,iBAAiB;EACrB,GAAG,sBAAsB,yBAAyB,IAAI;EACtD,GAAG,sBAAsB,UAAU,yBAAyB,IAAI;EAChE,GAAG;CACL;CAEA,MAAM,iBAAiB,UAAqD;EAC1E,gBAAgB,YAAY,KAAK;EACjC,sBAAsB;GACpB,WAAW,OAAO,OAAO,UAAU;GACnC;GACA;EACF,CAAC;CACH;CAEA,OACE,oBAAC,WAAD;EACE,OAAO,kBAAkB,UAAU,WAAW,MAAM,cAAc,QAAQ,UAAU;EACpF,SAAS,OAAO;EAChB,cAAY;EACZ,eAAa,CAAC,CAAC,kBAAkB,KAAA;EACjC,UAAU,0BAA0B,IAAI,KAAA;EACxC,SAAQ;EACR,GAAI;EACJ,WAAW;EACX,KAAK,WAAW;GACd,YAAY;GACZ,GAAG,YAAY,YAAY,WAAW,YAAY,gBAAgB,SAAS;GAC3E,eAAe;GACf,GAAG,uBAAuB;IACxB;IACA,QAAQ;IACR;IACA;IACA;GACF,CAAC;GACD,GAAI,sBAAsB,gBAAgB,IAAI,KAAK;EACrD;EAEC,UAAA,eAAe,aACb,OAAO,gBACJ,OACC,sBAAsB,UAAU,QAAQ;GACvC;GACA;GACA;EACF,CAAC,KACD,UAAU,UACV;CACG,CAAA;AAEf;;AC/DA,MAAa,sBAAiD,EAC5D,mBACA,aACA,OACA,GAAG,WACqD;CACxD,MAAM,EACJ,SAAS,EACP,YACA,UAAU,EAAE,uBACZ,6BAEA;CAEJ,MAAM,EAAE,gBAAgB,oBAAoB,wBAAwB,qBAAqB,CAAC;CAG1F,IACE,CAAC,YAAY,SAAS,MACnB,WACE,OAAO,OAAO,OAAO,UAAU,WAAW,YAAY,CAAC,CAAC,OAAO,OAAO,UAAU,UACjF,OAAO,OAAO,UAAU,MAC5B,GAEA,OAAO;CAGT,MAAM,gBAAgB;EACpB,GAAG,sBAAsB,wBAAwB;GAC/C;GACA;EACF,CAAC;EACD,GAAG;CACL;CAEA,OACE,qBAAC,UAAD;EACE,GAAI;EACJ,KAAK,WAAW;GACd,iBAAiB;GACjB,SAAS,YAAY,WAAW,MAAM,IAAI,SAAS,KAAA;GACnD,UAAU;GACV,OAAO;GACP,GAAI,sBAAsB,eAAe,IAAI,KAAK;EACpD;EARF,UAAA;GAUG,qBAAqB,oBAAC,MAAD,EAAI,OAAO;IAAE,SAAS;IAAQ,OAAO;GAAmB,EAAI,CAAA,IAAI;IACpF,kBAAkB,YAAY,QAAA,CAAS,KAAK,uBAAuB,sBAAsB;IACzF,IAAI,SAAS;IACb,IAAI,mBAAmB;KACrB,oBAAqB,sBAA0C;KAC/D,SAAS,YAAY,QAAQ;IAC/B;IAEA,OAAO,SACL,oBAAC,qBAAD;KAA6B;KAA2C;KAA0B;IAAQ,GAAhE,OAAO,EAAyD,IACxG;GACN,CAAC;GACA,sBAAsB,oBAAC,MAAD,EAAI,OAAO;IAAE,SAAS;IAAQ,OAAO;GAAoB,EAAI,CAAA,IAAI;EAChF;;AAEd;;ACrEA,MAAa,mBAA8C,EACzD,mBACA,OACA,GAAG,WACkD;CACrD,MAAM,EACJ,SAAS,EAAE,oBAAoB,YAAY,uBAC3C,MAAM,EAAE,qBACN;CACJ,MAAM,EAAE,iBAAiB,MAAM;CAE/B,MAAM,mBAAmB;EACvB,GAAG,sBAAsB,qBAAqB,EAC5C,MACF,CAAC;EACD,GAAG;CACL;CAEA,MAAM,eAAe,gBAAgB,uBAAuB,uBAAuB;CAEnF,MAAM,eAAe,MAAM,gBAAgB;CAG3C,IACE,CAAC,aAAa,MAAM,gBAClB,YAAY,SAAS,MAClB,WACE,OAAO,OAAO,OAAO,UAAU,WAAW,YAAY,CAAC,CAAC,OAAO,OAAO,UAAU,UACjF,OAAO,OAAO,UAAU,MAC5B,CACF,GAEA,OAAO;CAGT,OACE,oBAAC,aAAD;EACE,GAAI;EACJ,MAAM,QAAiC;GACrC,eAAe,UAAU;GACzB,IAAI,kBAAkB,OAAO,OAAO,iBAAiB,QAAQ,UAC3D,iBAAiB,IAAI,UAAU;EAEnC;EACA,KAAK,WAAW;GACd,QAAQ,cAAc,IAAI,KAAA;GAC1B,SAAS,YAAY,WAAW,MAAM,IAAI,SAAS,KAAA;GACnD,SAAS,cAAc,MAAO,KAAA;GAC9B,SAAS,cACL,MAAM,QAAQ,SAAS,UACrB,aAAa,MAAM,QAAQ,KAAK,SAChC,aAAa,MAAM,QAAQ,KAAK,SAClC,KAAA;GACJ,UAAU,cAAc,WAAW;GACnC,QAAQ,cAAc,IAAI,KAAA;GAC1B,GAAI,sBAAsB,kBAAkB,IAAI,KAAK;EACvD;EAEC,UAAA,aAAa,KAAK,gBACjB,oBAAC,oBAAD;GACqB;GACN;GAEN;EACR,GAFM,YAAY,EAElB,CACF;CACU,CAAA;AAEjB;;ACjEA,MAAa,sBAAiD,EAC5D,KACA,gBACA,OACA,GAAG,WAC8C;CACjD,MAAM,EACJ,SAAS,EACP,yBACA,cACA,2BACA,wBACA,oBAEA;CACJ,MAAM,EAAE,SAAS,cAAc,MAAM;CAErC,MAAM,YAAY,CAAC;CAEnB,MAAM,kBAAkB,YACpB,kBAAkB,SAChB,MAAM,yBAAyB,IAC/B,MAAM,qBAAqB,IAC7B,KAAA;CAEJ,MAAM,YAAY,YAAY,kBAAkB,iBAAiB;EAAE;EAAK;CAAM,CAAC;CAE/E,MAAM,gBAAgB;EACpB,GAAI,YACA,sBAAsB,2BAA2B,EAAE,MAAM,CAAC,IAC1D,sBAAsB,wBAAwB;GAC5C;GACA;GACA;EACF,CAAC;EACL,GAAG;CACL;CAEA,MAAM,oBAAoB,MACtB,2BAA2B;EACzB;EACA;EACA;CACF,CAAC,IACD,KAAA;CAEJ,MAAM,oBAAoB,wBAAwB,EAAE,MAAM,CAAC;CAE3D,MAAM,cAAc;EAClB,cAAc,YAAY,aAAa,kBAAkB,aAAa;EACtE,SAAS;EACT,UAAU,aAAc,OAAO,CAAC,IAAI,aAAa,KAAM,KAAK,OAAO;EACnE,WAAW,UAAU;GACnB,MAAM,gBAAgB;GACtB,IAAI,WACF,kBAAkB,KAAK;QAEvB,kBAAmB,KAAK;EAE5B;EACA,MAAO,YAAY,YAAY,UAAU;EACzC,WAAW,EACT,OAAO,EACL,cAAc,YAAY,aAAa,kBAAkB,aAAa,gBACxE,EACF;EACA,GAAG;EACH,UAAU,MAAqC;GAC7C,EAAE,gBAAgB;GAClB,eAAe,UAAU,CAAC;EAC5B;EACA,KAAK,WAAkB;GACrB,QAAQ,YAAY,YAAY,YAAY;GAC5C,GAAG,YAAY,YAAY,YAAY,KAAA;GACvC,OAAO,YAAY,YAAY,YAAY;GAC3C,QAAQ;GACR,GAAG,sBAAsB,eAAe,IAAI,KAAK;EACnD;EACA,OAAO,KAAA;CACT;CAEA,OACE,oBAAC,SAAD;EACE,GAAI,sBAAsB;EAC1B,OAAO,eAAe,UAAU,YAAY,aAAa,kBAAkB,aAAa;EAEvF,UAAA,4BAA4B,QAC3B,oBAAC,OAAD,EAAO,GAAK,YAA6B,CAAA,IAEzC,oBAAC,UAAD;GACE,eACE,CAAC,aAAa,YACV,MAAM,sBAAsB,IAC5B,KAAK,kBAAkB,KAAK,IAAI,oBAAoB;GAE1D,GAAI;EACL,CAAA;CAEI,CAAA;AAEb;;ACrGA,MAAa,0BAAqD,EAChE,kBACA,OACA,GAAG,WACkD;CACrD,MAAM,EACJ,iBACA,6BACA,SAAS,EACP,oBACA,iBACA,cACA,kBACA,gCACA,4BACA,4BACA,iCACA,YAEF,MAAM,EAAE,oBACN;CACJ,MAAM,EAAE,SAAS,UAAU,cAAc,oBAAoB,MAAM;CAEnE,MAAM,aAAa;EACjB,GAAG,sBAAsB,4BAA4B,EACnD,MACF,CAAC;EACD,GAAG;CACL;CAEA,MAAM,YAAY,sBAAsB,gCAAgC,EACtE,MACF,CAAC;CAED,MAAM,gBAAgB,YAAY,gBAAgB,CAAC,CAAC,KAAK;CACzD,MAAM,mBAAmB,4BAA4B,CAAC,CAAC,KAAK;CAE5D,MAAM,mBAAmB,cAChB,mBAAmB,OAAO,OAAO,YAAY,CAAC,CAAC,OAAO,OAAO,CAAC,CAAC,SAAS,kBAC/E;EAAC;EAAc;EAAkB;CAAgB,CACnD;CACA,MAAM,gBACJ,mBAAmB,IACjB,qBAAC,OAAD;EACE,WAAU;EACV,IAAI;GACF,YAAY;GACZ,KAAK;EACP;EALF,UAAA,CAOG,aAAa,qCACV,QAAQ,mBAAmB,iBAAiB,eAAe,aAAa,QAAQ,CAAC,CAAC,EAClF,QAAQ,cAAc,cAAc,eAAe,aAAa,QAAQ,CAAC,GAC7E,oBAAC,QAAD;GACE,UAAU,UAAU,wBAAwB,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,IAAI;GACzE,MAAK;GACL,IAAI,EAAE,GAAG,MAAM;GAEd,UAAA,aAAa;EACR,CAAA,CACH;CACL,CAAA,IAAA;CAEN,MAAM,eACJ,SAAS,SAAS,IAChB,qBAAC,QAAD,EAAA,UAAA;EACG,aAAa;EAAW;EACxB,SAAS,KAAK,UAAU,UACvB,qBAAC,UAAD,EAAA,UAAA,CACG,QAAQ,IAAI,aAAa,SAAS,IACnC,oBAAC,MAAD;GACE,OAAO,MAAM,UAAU,QAAQ,CAAC,EAAE,UAAU;GAC5C,gBAAgB,MAAM,UAAU,QAAQ,CAAC,EAAE,eAAe;GAC1D,GAAI;EACL,CAAA,CACO,EAAA,GAPK,GAAG,MAAM,GAAG,UAOjB,CACX;CACG,EAAA,CAAA,IACJ;CAEN,OACE,oBAAC,UAAD;EAAU,IAAI,mBAAmB,CAAC,CAAC,iBAAiB,CAAC,CAAC;EAAc,SAAS,mBAAmB,MAAM;EACpG,UAAA,oBAAC,OAAD;GACE,OAAM;GACN,MAAM;GACN,GAAI;GACJ,KAAK,WAAW;IACd,uBAAuB;KACrB,UAAU,QAAQ,cAAc,SAAS,eAAe,IAAI;KAC5D,OAAO;IACT;IACA,cAAc;IACd,UAAU;IACV,MAAM;IACN,IAAI,mBAAmB,IAAI,+BAA+B,WAAW,UAAU,KAAA;IAC/E,GAAG;IACH,UAAU;IACV,OAAO;IACP,KAAK;IACL,OAAO;IACP,QAAQ;IACR,GAAI,sBAAsB,YAAY,IAAI,KAAK;GACjD;GAEC,UAAA,kCAAkC;IACjC;IACA;IACA;GACF,CAAC,KACC,qBAAA,YAAA,EAAA,UAAA,CACG,YAAY,SAAS,oBAAC,YAAD,EAAA,UAAa,WAAW,MAAkB,CAAA,GAChE,qBAAC,OAAD;IACE,IAAI,EACF,GACE,+BAA+B,iBAC3B,gBACA,YAAY,aACV,oBACA,YAAY,gBACV,mBACA,iBACZ;IAVF,UAAA;KAYG,YAAY;KACZ,YAAY,aAAa,iBAAiB,iBAAiB,oBAAC,MAAD,CAAK,CAAA;KACjE,qBAAC,KAAD;MAAK,IAAI,EAAE,SAAS,OAAO;MAA3B,UAAA;OACG,sBAAsB,mBAAmB,+BAA+B,kBACvE,oBAAC,oBAAD,EAA2B,MAAQ,CAAA;OAClC;OACF;MACE;;KACJ,iBAAiB,gBAAgB,oBAAC,MAAD,CAAK,CAAA;KACtC;IACI;GACP,CAAA,CAAA,EAAA,CAAA;EAEC,CAAA;CACC,CAAA;AAEd;;AC5IA,MAAa,oBAAoB,iBAA+D;CAC9F;EACE,SAAS;EACT,OAAO,aAAa;EACpB,QAAQ;EACR,QAAQ;CACV;CACA;EACE,SAAS;EACT,OAAO,aAAa;EACpB,QAAQ;EACR,QAAQ;CACV;CACA;EACE,SAAS;EACT,OAAO,aAAa;EACpB,QAAQ;EACR,QAAQ;CACV;CACA;EACE,SAAS;EACT,OAAO,aAAa;EACpB,QAAQ;EACR,QAAQ;CACV;CACA;EACE,SAAS;EACT,OAAO,aAAa;EACpB,QAAQ;EACR,QAAQ;CACV;CACA;EACE,SAAS;EACT,OAAO,aAAa;EACpB,QAAQ;EACR,QAAQ;CACV;CACA;EACE,SAAS;EACT,OAAO,aAAa;EACpB,QAAQ;EACR,QAAQ;CACV;CACA;EACE,SAAS;EACT,OAAO,aAAa;EACpB,QAAQ;EACR,QAAQ;CACV;CACA;EACE,SAAS;EACT,OAAO,aAAa;EACpB,QAAQ;EACR,QAAQ;CACV;CACA;EACE,SAAS;EACT,OAAO,aAAa;EACpB,QAAQ;EACR,QAAQ;CACV;CACA;EACE,SAAS;EACT,OAAO,aAAa;EACpB,QAAQ;EACR,QAAQ;CACV;CACA;EACE,SAAS;EACT,OAAO,aAAa;EACpB,QAAQ;EACR,QAAQ;CACV;CACA;EACE,SAAS;EACT,OAAO,aAAa;EACpB,QAAQ;EACR,QAAQ;CACV;CACA;EACE,SAAS;EACT,OAAO,aAAa;EACpB,QAAQ;EACR,QAAQ;CACV;AACF;AAEA,MAAM,aAAa;CAAC;CAAW;CAAoB;AAAe;AAClE,MAAM,aAAa,CAAC,SAAS,UAAU;AACvC,MAAM,WAAW;CAAC;CAAmB;CAAkB;AAAa;AACpE,MAAM,gBAAgB;CAAC;CAAgB;CAAc;CAAkB;AAAO;AAY9E,MAAa,wBAAmD,EAC9D,UACA,QACA,UACA,aACA,gBACA,OACA,GAAG,WACgD;CACnD,MAAM,EACJ,SAAS,EACP,yBACA,yBACA,cACA,UAAU,EAAE,uBACZ,iCACA,mCAEF,oBACA,sBACE;CACJ,MAAM,EAAE,SAAS,mBAAmB,MAAM;CAC1C,MAAM,EAAE,WAAW,UAAU,CAAC;CAC9B,MAAM,EAAE,cAAc,UAAU,CAAC;CACjC,MAAM,qBAAqB,QAAQ,eAAe;CAElD,IAAI,6BAA6B,WAAW,2BAA2B;CAEvE,IAAI,cAAc,SAAS,WAAW,aAAuB,GAC3D,6BAA6B,CAAC,GAAG,YAAY,GAAI,8BAA8B,CAAC,CAAE,CAAC,CAAC,QAAQ,WAC1F,WAAW,SAAS,MAAM,CAC5B;CAGF,MAAM,CAAC,yBAAyB,eAC9B,iBAAiB,YAAY,CAAC,CAAC,QAAQ,iBACrC,YACI,+BAA+B,KAAA,KAAa,4BAA4B,SAAS,aAAa,MAAM,KACnG,CAAC,2BAA2B,wBAAwB,SAAS,aAAa,MAAM,MACjF;EAAC;EAAY;EAAS;CAAY,CAAC,CAAC,SAAS,aAAa,MAAM,CACtE,CACF;CAEA,MAAM,0BAA0B,WAA6B;EAC3D,MAAM,iBAAiB,WAAW,aAAa;EAC/C,IAAI,CAAC,UAAU,CAAC,QAEd,kBAAkB,MAAM;OACnB,IAAI,WAAW,gBAAgB;GAEpC,oBAAoB,UAAU;IAC5B,GAAG;KACF,OAAO,KAAK;GACf,EAAE;GAGF,IAAI,WAAW,SAAS,MAAM,GAAG;IAE/B,IAAI,uBAAuB,OAAO,CAAC,WAAW,SAAS,cAAc,GACnE,OAAO,eAAe,GAAG;SACpB,IAAI,oBACT,OAAO,eAAe,kBAAkB;GAE5C,OAAO,IAAI,WAAW,kBAAkB,kBAAkB,SAAS,SAAS,MAAgB,GAAG;IAE7F,IAAI,8BAA8B,UAAW,oBAAuC,QAAQ;KAC1F,OAAO,eAAe,CAAC,CAAC;KACxB,iBAAiB,CAAC,CAAC;IACrB,OAAO,IAAI,oBACT,OAAO,eAAe,kBAAkB;GAE5C,OAAO,IAAI,WAAW,eAAe,SAAS,OAAO,KAAK,WAAW,SAAS,MAA0B,GAAG;IAEzG,IACE,CAAC,MAAM,QAAQ,kBAAkB,KAChC,CAAE,oBAAuC,OAAO,MAAM,MAAM,EAAE,KAAK,CAAC,WAAW,SAAS,cAAc,GACvG;KACA,OAAO,eAAe,CAAC,IAAI,EAAE,CAAC;KAC9B,iBAAiB,EAAE;IACrB,OACE,OAAO,eAAe,kBAAkB;GAE5C,OAEE,IAAI,MAAM,QAAQ,kBAAkB,GAAG;IACrC,OAAO,eAAe,EAAE;IACxB,iBAAiB,EAAE;GACrB,OAAO,IAAI,uBAAuB,OAAO,WAAW,SAAS,cAAc,GACzE,OAAO,eAAe,KAAA,CAAS;QAE/B,OAAO,eAAe,kBAAkB;EAG9C;EACA,YAAY,IAAI;EAChB,WAAW;CACb;CAEA,MAAM,eAAe,CAAC,CAAC,UAAU,YAAY,UAAU,YAAY;CAEnE,OACE,oBAAC,MAAD;EACY;EACV,cAAc;GAAE,YAAY;GAAS,UAAU;EAAS;EACxD,mBAAA;EACA,eAAe,YAAY,IAAI;EAC/B,MAAM,CAAC,CAAC;EACR,WAAW,EACT,MAAM;GACJ,OAAO,YAAY;GACnB,IAAI,EACF,iBAAiB,oBACnB;EACF,EACF;EACA,GAAI;EAEF,WAAA,UAAU,UAAU,YACjB,UAAU,kCAAkC;GAC3C;GACA;GACA,oBAAoB;GACpB;EACF,CAAC,KACD,kCAAkC;GAChC;GACA;GACA,oBAAoB;GACpB;EACF,CAAC,IACD,kCAAkC;GAChC;GACA,oBAAoB;GACpB;EACF,CAAC,MACH,sBAAsB,KAAK,EAAE,SAAS,OAAO,QAAQ,UAAU,UAC7D,oBAAC,oBAAD;GACW;GACT,MAAM;GAEC;GACP,eAAe,uBAAuB,MAA0B;GAChE,UAAU,WAAW;GACd;GACP,OAAO;EACR,GANM,KAMN,CACF;CACC,CAAA;AAEV;;ACzPA,MAAa,wBAAmD,EAC9D,UACA,QACA,aACA,OACA,GAAG,WACgD;CACnD,MAAM,EACJ,mBACA,SAAS,EACP,yBACA,yBACA,qBACA,qBACA,sBACA,gBACA,cACA,eACA,sBACA,OAAO,EACL,cACA,iBACA,gBACA,mBACA,aACA,gBACA,UACA,gBACA,qBAEF,cACA,UAAU,EAAE,uBACZ,gCAEF,MAAM,EAAE,mBACR,oBACA,gBACA,mBACA,yBACE;CACJ,MAAM,EAAE,WAAW;CACnB,MAAM,EAAE,cAAc;CACtB,MAAM,EAAE,cAAc,kBAAkB,SAAS,sBAAsB,MAAM;CAC7E,MAAM,oBAAoB,OAAO,eAAe;CAEhD,MAAM,CAAC,oBAAoB,yBAAyB,SAA6B,IAAI;CAErF,MAAM,wBAAwB;EAC5B,OAAO,aAAa;EACpB,YAAY,IAAI;CAClB;CAEA,MAAM,sBAAsB;EAC1B,OAAO,cAAc,KAAK;EAC1B,YAAY,IAAI;CAClB;CAEA,MAAM,uBAAuB;EAC3B,OAAO,cAAc,IAAI;EACzB,YAAY,IAAI;CAClB;CAEA,MAAM,8BAA8B;EAClC,mBAAmB,SAAS;GAAE,GAAG;GAAK,kBAAkB;EAAM,EAAE;EAChE,OAAO,UAAU;EACjB,YAAY,IAAI;CAClB;CAEA,MAAM,yBAAyB;EAC7B,OAAO,iBAAiB,KAAK;EAC7B,YAAY,IAAI;CAClB;CAEA,MAAM,mBAAmB,iBAA0C;EACjE,OAAO,IAAI,YAAY;EACvB,YAAY,IAAI;CAClB;CAEA,MAAM,4BAA4B;EAChC,OAAO,eAAe;EACtB,gBAAgB,QAAQ,CAAC,kBAAkB,GAAG,GAAG,CAAC;EAClD,YAAY,IAAI;CAClB;CAEA,MAAM,0BAA0B;EAC9B,OAAO,eAAe,KAAA,CAAS;EAC/B,YAAY,IAAI;EAChB,IAAI,CAAC,SAAS,UAAU,CAAC,CAAC,SAAS,mBAAmB,GACpD,oBAAoB,UAAU;GAC5B,GAAG;IACF,OAAO,KAAK,6BAA6B,MAAM;EAClD,EAAE;CAEN;CAEA,MAAM,6BAA6B;EACjC,qBAAqB,IAAI;EACzB,qBAAqB,gBAAgB,UAAU,GAAG,OAAO,GAAG,IAAI,EAAE,MAAM,CAAC;EACzE,YAAY,IAAI;CAClB;CAEA,MAAM,6BAA6B;EACjC,kBAAkB,CAAC,CAChB,QAAQ,QAAQ,IAAI,UAAU,iBAAiB,KAAK,CAAC,CACrD,SAAS,QAAQ,IAAI,iBAAiB,IAAI,CAAC;EAC9C,YAAY,IAAI;CAClB;CAEA,MAAM,4BAA4B,UAAmC;EACnE,MAAM,gBAAgB;EACtB,sBAAsB,MAAM,aAAa;CAC3C;CAEA,MAAM,iBAAiB,CAAC,CAAC,UAAU;CAEnC,MAAM,EAAE,4BAA4B,wBAAwB,oBAAoB;EAAE;EAAQ;CAAM,CAAC;CAEjG,MAAM,wBACJ,2BACA,UAAU,4BAA4B,SACtC,CAAC,mBACA,+BAA+B,KAAA,KAAa,CAAC,CAAC,4BAA4B;CAE7E,MAAM,0BAA0B;EAC9B,GAAI,iBAAiB,OAAO,WAAW,IACnC;GACE,yBAAyB,SACvB,oBAAC,oBAAD;IACE,UAAU,OAAO,YAAY,MAAM;IACnC,MAAM,oBAAC,cAAD,CAAe,CAAA;IAErB,OAAO,aAAa;IACpB,SAAS;IACF;GACR,GAJM,CAIN;GAEH,oBAAC,oBAAD;IACE,UAAU,OAAO,YAAY,MAAM;IACnC,MAAM,oBAAC,UAAD,EAAU,OAAO,EAAE,WAAW,4BAA4B,EAAI,CAAA;IAEpE,OAAO,aAAa,iBAAiB,QAAQ,YAAY,OAAO,UAAU,MAAM,CAAC;IACjF,SAAS;IACF;GACR,GAJM,CAIN;GACD,oBAAC,oBAAD;IACE,UAAU,OAAO,YAAY,MAAM;IACnC,SAAS,uBAAuB,kBAAkB;IAClD,MAAM,oBAAC,UAAD,CAAW,CAAA;IAEjB,OAAO,aAAa,kBAAkB,QAAQ,YAAY,OAAO,UAAU,MAAM,CAAC;IAClF,SAAS;IACF;GACR,GAJM,CAIN;EACH,IACA,CAAC;EACL,GAAI,uBAAuB,OAAO,aAAa,IAC3C;GACE,oBAAC,oBAAD;IACE,UACE,CAAC,qBACA,MAAM,QAAQ,iBAAiB,KAAK,CAAC,kBAAkB,QAAQ,UAAU,KAAK,CAAC,CAAC;IAEnF,MAAM,oBAAC,mBAAD,CAAoB,CAAA;IAE1B,OAAO,aAAa;IACpB,SAAS;IACF;GACR,GAJM,CAIN;GACD,4BAA4B,eAC1B,oBAAC,oBAAD;IACE,UAAU,qBAAqB,CAAC;IAChC,SAAS,kBAAkB;IAC3B,MAAM,oBAAC,gBAAD,CAAiB,CAAA;IAEvB,OAAO,aAAa,gBAAgB,QAAQ,YAAY,OAAO,UAAU,MAAM,CAAC;IAChF,SAAS,oBAAoB,2BAA2B;IACxD,eAAe,wBAAwB,2BAA2B,KAAA;IAC3D;GACR,GALM,CAKN;GAEH,yBACE,oBAAC,sBAAD;IACE,UAAU;IACF;IAER,UAAU;IACV,aAAa;IACN;GACR,GAJM,CAIN;EAEL,CAAC,CAAC,OAAO,OAAO,IAChB,CAAC;EACL,GAAI,kBAAkB,OAAO,YAAY,IACrC,CACE,oBAAC,oBAAD;GACE,SAAS;GACT,MAAM,oBAAC,iBAAD,CAAkB,CAAA;GAExB,OAAO,aAAa,OAAO,aAAa,IAAI,oBAAoB,gBAAgB,EAAE,QAChF,YACA,OAAO,UAAU,MAAM,CACzB;GACA,SAAS;GACF;EACR,GAPM,CAON,CACH,IACA,CAAC;EACL,GAAI,uBAAuB,OAAO,UAAU,IACxC;GACE,oBAAC,oBAAD;IACE,UAAU,OAAO,YAAY,MAAM,WAAW,CAAC,OAAO,UAAU;IAChE,MAAM,oBAAC,aAAD,EAAa,OAAO,EAAE,WAAW,gBAAgB,EAAI,CAAA;IAE3D,OAAO,aAAa;IACpB,eAAe,gBAAgB,OAAO;IAC/B;GACR,GAJM,CAIN;GACD,oBAAC,oBAAD;IACE,UAAU,OAAO,YAAY,MAAM,SAAS,CAAC,OAAO,UAAU;IAC9D,MAAM,oBAAC,aAAD,EAAa,OAAO,EAAE,WAAW,iBAAiB,EAAI,CAAA;IAE5D,OAAO,aAAa;IACpB,eAAe,gBAAgB,KAAK;IAC7B;GACR,GAJM,CAIN;GACD,oBAAC,oBAAD;IACE,UAAU,CAAC,OAAO,YAAY;IAC9B,SAAS;IACT,MAAM,oBAAC,aAAD,CAAc,CAAA;IAEpB,OAAO,aAAa;IACpB,eAAe,gBAAgB,KAAK;IAC7B;GACR,GAJM,CAIN;EACH,IACA,CAAC;EACL,GAAI,wBAAwB,OAAO,aAAa,IAC5C,CACE,oBAAC,oBAAD;GACE,UAAU,aAAa,OAAO,QAAQ,KAAA;GACtC,MAAM,oBAAC,gBAAD,CAAiB,CAAA;GAEvB,OAAO,aAAa;GACpB,SAAS;GACF;EACR,GAJM,EAIN,CACH,IACA,CAAC;EACL,GAAI,eACA,CACE,oBAAC,oBAAD;GACE,UAAU,CAAC,OAAO,WAAW;GAC7B,MAAM,oBAAC,mBAAD,CAAoB,CAAA;GAE1B,OAAO,aAAa,YAAY,QAAQ,YAAY,OAAO,UAAU,MAAM,CAAC;GAC5E,SAAS;GACF;EACR,GAJM,EAIN,GACD,oBAAC,oBAAD;GACE,UAAU,CAAC,OAAO,OAAO,gBAAgB,CAAC,CAAC,QAAQ,YAAY,CAAC,OAAO,CAAC,CAAC;GACzE,MAAM,oBAAC,gBAAD,CAAiB,CAAA;GAEvB,OAAO,aAAa,gBAAgB,QAAQ,YAAY,OAAO,UAAU,MAAM,CAAC;GAChF,SAAS;GACF;EACR,GAJM,EAIN,CACH,IACA,CAAC;CACP,CAAC,CAAC,OAAO,OAAO;CAEhB,OACE,oBAAC,MAAD;EACY;EACV,mBAAA;EACA,eAAe,YAAY,IAAI;EAC/B,MAAM,CAAC,CAAC;EACR,WAAW,EACT,MAAM;GACJ,OAAO,YAAY;GACnB,IAAI,EACF,iBAAiB,oBACnB;EACF,EACF;EACA,GAAI;EAEH,UAAA,UAAU,+BAA+B;GACxC,iBAAiB,YAAY,IAAI;GACjC;GACA;GACA;EACF,CAAC,KACC,+BAA+B;GAC7B,iBAAiB,YAAY,IAAI;GACjC;GACA;GACA;EACF,CAAC,KACD;CACE,CAAA;AAEV;;AC9SA,MAAa,wCAAmE,EAC9E,QACA,OACA,GAAG,WACgE;CACnE,MAAM,EACJ,SAAS,EACP,OAAO,EAAE,gBACT,cACA,kCAEA;CACJ,MAAM,EAAE,WAAW;CACnB,MAAM,EAAE,cAAc;CAEtB,MAAM,CAAC,UAAU,eAAe,SAA6B,IAAI;CAEjE,MAAM,eAAe,UAAmC;EACtD,MAAM,gBAAgB;EACtB,MAAM,eAAe;EACrB,YAAY,MAAM,aAAa;CACjC;CAEA,MAAM,kBAAkB;EACtB,GAAG,sBAAsB,6BAA6B;GACpD;GACA;EACF,CAAC;EACD,GAAG,sBAAsB,UAAU,6BAA6B;GAC9D;GACA;EACF,CAAC;EACD,GAAG;CACL;CAEA,OACE,qBAAA,YAAA,EAAA,UAAA,CACE,oBAAC,SAAD;EAAS,GAAI,sBAAsB,KAAK;EAAG,OAAO,iBAAiB,SAAS,aAAa;EACvF,UAAA,oBAAC,YAAD;GACE,cAAY,aAAa;GACzB,SAAS;GACT,MAAK;GACL,GAAI;GACJ,KAAK,WAAW;IACd,WAAW,EACT,SAAS,EACX;IACA,QAAQ;IACR,GAAG;IACH,SAAS;IACT,YAAY;IACZ,OAAO;IACP,GAAI,sBAAsB,iBAAiB,IAAI,KAAK;GACtD;GACA,OAAO,KAAA;GAEN,UAAA,iBAAiB,YAAY,oBAAC,cAAD,EAAc,OAAO,EAAE,WAAW,aAAa,EAAI,CAAA;EACvE,CAAA;CACL,CAAA,GACR,YAAY,oBAAC,sBAAD;EAAgC;EAAkB;EAAqB;EAAoB;CAAQ,CAAA,CAChH,EAAA,CAAA;AAEN;;AChEA,MAAa,sBAAiD,EAC5D,QACA,OACA,GAAG,WAC8C;CACjD,MAAM,EACJ,SAAS,EAAE,cAAc,6BACvB;CACJ,MAAM,EAAE,YAAY,MAAM;CAC1B,MAAM,EAAE,cAAc;CAEtB,MAAM,gBAAgB;EACpB,GAAG,sBAAsB,wBAAwB;GAC/C;GACA;EACF,CAAC;EACD,GAAG,sBAAsB,UAAU,wBAAwB;GACzD;GACA;EACF,CAAC;EACD,GAAG;CACL;CAEA,MAAM,cAAc,aAAa,gBAAgB,QAAQ,YAAY,UAAU,MAAM;CAErF,OACE,oBAAC,SAAD;EAAS,GAAI,sBAAsB;EAAG,OAAO,eAAe,SAAS;EACnE,UAAA,oBAAC,kBAAD;GACE,SACE,oBAAC,UAAD;IACE,SAAS,OAAO,eAAe,MAAM;IACrC,OAAO,OAAO,eAAe,MAAM,KAAA,IAAY,YAAY;IAC3D,eAAe,OAAO,eAAe,MAAM,KAAA;IAC3C,MAAM,YAAY,YAAY,UAAU;IACxC,GAAI;IACJ,WAAW,GAAG,YAAY;KACxB,OAAO,eACL,OAAO,eAAe,MAAM,KAAA,IACxB,SACA,OAAO,eAAe,MAAM,SAC1B,UACA,KAAA,CACR;KACA,eAAe,WAAW,GAAG,OAAO;IACtC;IACA,UAAU,MAAM;KACd,EAAE,gBAAgB;KAClB,eAAe,UAAU,CAAC;IAC5B;IACA,KAAK,WAAW;KACd,QAAQ;KACR,OAAO;KACP,GAAI,sBAAsB,eAAe,IAAI,KAAK;IACpD;GACD,CAAA;GAEH,mBAAA;GACA,OAAO,cAAc,SAAS;GAC9B,IAAI;IAAE,OAAO;IAAkB,YAAY;IAAU,IAAI;GAAO;GAChE,OAAO,KAAA;EACR,CAAA;CACM,CAAA;AAEb;;ACvCA,MAAa,uBAAkD,EAC7D,QACA,kBACA,OACA,GAAG,WAC+C;CAClD,MAAM,EACJ,SAAS,EACP,yBACA,OAAO,EAAE,WAAW,kBACpB,cACA,iBACA,4BACA,0BACA,8BACA,yBACA,4BAEF,MAAM,EAAE,mBACR,uBACE;CACJ,MAAM,EAAE,WAAW;CACnB,MAAM,EAAE,cAAc;CACtB,MAAM,EAAE,kBAAkB;CAE1B,MAAM,OAAO;EAAE;EAAQ;EAAkB;CAAM;CAE/C,MAAM,iBAAiB;EACrB,GAAG,sBAAsB,yBAAyB,IAAI;EACtD,GAAG,sBAAsB,UAAU,yBAAyB,IAAI;EAChE,GAAG;CACL;CAEA,MAAM,oBAAoB;EACxB,GAAG,sBAAsB,4BAA4B,IAAI;EACzD,GAAG,sBAAsB,UAAU,4BAA4B,IAAI;CACrE;CAEA,MAAM,kBAAkB;EACtB,GAAG,sBAAsB,0BAA0B,IAAI;EACvD,GAAG,sBAAsB,UAAU,0BAA0B,IAAI;CACnE;CAEA,MAAM,sBAAsB;EAC1B,GAAG,sBAAsB,8BAA8B,IAAI;EAC3D,GAAG,sBAAsB,UAAU,8BAA8B,IAAI;CACvE;CAEA,MAAM,kBAAkB;EACtB,GAAG,sBAAsB,0BAA0B,IAAI;EACvD,GAAG,sBAAsB,UAAU,0BAA0B,IAAI;CACnE;CAEA,MAAM,EACJ,4BACA,qBACA,qBACA,sBACA,cACA,qBACA,eACA,gBACA,oBACE,oBAAoB;EAAE;EAAQ;CAAM,CAAC;CAEzC,MAAM,kBAAkB,mBAAmB;EAAE;EAAQ;CAAM,CAAC;CAE5D,MAAM,kBAAkB,CAAC,SAAS,UAAU,CAAC,CAAC,SAAS,mBAAmB,IACtE,qBAAqB,cAAc,mBAAmB,IACtD;CAEJ,MAAM,oBAAoB,CAAC,gBACtB,gBAAgB,eAAe,aAAa,gBAAgB,QAAQ,YAAY,OAAO,UAAU,MAAM,CAAC,IACzG,qBAAqB,IACnB,aAAa,MACb,qBAAqB,IACnB,aAAa,MACb;CAER,MAAM,uBAAuB,CAAC,EAC5B,2BACA,UAAU,4BAA4B,SACtC,CAAC,qBACA,+BAA+B,KAAA,KAAa,CAAC,CAAC,4BAA4B;CAG7E,MAAM,CAAC,UAAU,eAAe,SAA6B,IAAI;CACjE,MAAM,CAAC,aAAa,kBAAkB,eACpC,sBACK,OAAO,eAAe,KAAkB,CAAC,IAC1C,gBACG,OAAO,eAAe,CAAC,GAAwB,qBAA+B,KAC/E,uBACE,OAAO,OAAO,eAAe,MAAM,WAChC,OAAO,eAAe,IACvB,KACA,OAAO,eAAe,KAAgB,EAClD;CACA,MAAM,CAAC,mBAAmB,wBAAwB,eAChD,uBAAyB,OAAO,eAAe,KAAK,OAAkC,IACxF;CAEA,MAAM,CAAC,yBAAyB,eAC9B,UACG,aAAsB;EACrB,IAAI,eACF,OAAO,gBAAgB,QAAmB;GACxC,MAAM,kBAAkB,OAAO,CAAC,IAAI,EAAE;GACtC,gBAAgB,oBAA8B,YAAY,KAAA;GAC1D,OAAO;EACT,CAAC;OAED,OAAO,eAAe,YAAY,KAAA,CAAS;CAE/C,GACA,kBAAmB,kBAAkB,MAAM,MAAO,CACpD,CACF;CAEA,MAAM,gBAAgB,aAAmC;EACvD,eAAe,YAAY,EAAE;EAC7B,sBAAsB,QAAQ;CAChC;CAEA,MAAM,yBAAyB,UAAyC;EACtE,MAAM,WACJ,eAAe,SAAS,SACpB,MAAM,OAAO,cACb,eAAe,SAAS,WACtB,MAAM,OAAO,gBACb,MAAM,OAAO;EACrB,aAAa,QAAQ;EACrB,gBAAgB,WAAW,KAAK;CAClC;CAEA,MAAM,iCACJ,QACA,UACA,YACG;EACH,aAAa,QAAQ;CACvB;CAEA,MAAM,4BAA4B,aAAoC;EACpE,qBAAqB,QAAQ;EAC7B,sBAAsB,iBAAiB,QAAQ,CAAC,CAAC,KAAK;CACxD;CAEA,MAAM,oBAAoB;EACxB,IAAI,qBAAqB;GACvB,eAAe,CAAC,CAAC;GACjB,OAAO,eAAe,CAAC,CAAC;EAC1B,OAAO,IAAI,eAAe;GACxB,eAAe,EAAE;GACjB,OAAO,gBAAgB,QAAkD;IACvE,MAAM,kBAAmB,MAAM,QAAQ,GAAG,KAAK,OAAQ,CAAC,IAAI,EAAE;IAC9D,gBAAgB,oBAA8B,KAAA;IAC9C,OAAO;GACT,CAAC;EACH,OAAO,IAAI,sBAAsB;GAC/B,qBAAqB,IAAI;GACzB,eAAe,EAAE;EAInB,OAAO;GACL,eAAe,EAAE;GACjB,OAAO,eAAe,KAAA,CAAS;EACjC;CACF;CAEA,MAAM,mCAAmC;EACvC,eAAe,EAAE;EACjB,OAAO,eAAe,KAAA,CAAS;EAC/B,oBAAoB,UAAU;GAC5B,GAAG;IACF,OAAO,KAAK,6BAA6B,MAAM;EAClD,EAAE;CACJ;CAEA,MAAM,wBAAwB,UAAmC;EAC/D,YAAY,MAAM,aAAa;CACjC;CAEA,MAAM,YAAY,OAAO,KAAK;CAC9B,MAAM,iBAAiB,OAAO,WAAW;CACzC,MAAM,oBAAoB,OAAO,eAAe;CAEhD,gBAAgB;EACd,eAAe,UAAU;CAC3B,CAAC;CAED,gBAAgB;EACd,IAAI,UAAU,SAAS;GACrB,MAAM,cAAc;GACpB,IAAI,gBAAgB,KAAA,GAClB,eAAe,QAAQ;QAClB,IAAI,iBAAiB,qBAAqB,KAAA,GAC/C,eAAgB,YAAiC,iBAAiB;QAElE,eAAe,WAAqB;EAExC;EACA,UAAU,UAAU;CACtB,GAAG;EAAC;EAAmB;EAAe;CAAgB,CAAC;CAEvD,IAAI,UAAU,QACZ,OAAO,oBAAA,YAAA,EAAA,UAAG,UAAU,SAAS;EAAE;EAAQ;EAAQ;EAAkB;CAAM,CAAC,EAAI,CAAA;CAG9E,MAAM,eACJ,CAAC,wBAAwB,CAAC,gBAAgB,CAAC,kBACzC,oBAAC,gBAAD;EACE,UAAS;EACT,IAAI;GACF,IAAI,kBAAkB,sBAAsB,SAAS,KAAA;GACrD,aACG,OAAO,gBAAgB,YAAY,MAAM,QAAQ,WAAW,MAAM,YAAY,SAAS,IACpF,YACA;EACR;EAEA,UAAA,oBAAC,SAAD;GAAS,WAAU;GAAQ,OAAO,aAAa,eAAe;GAC5D,UAAA,oBAAC,QAAD,EAAA,UACE,oBAAC,YAAD;IACE,cAAY,aAAa;IACzB,UAAU,CAAC,aAAa,SAAS,CAAC,EAAE;IACpC,SAAS;IACT,MAAK;IACL,IAAI;KACF,QAAQ;KACR,WAAW;KACX,OAAO;IACT;IAEA,UAAA,oBAAC,WAAD,CAAY,CAAA;GACF,CAAA,EACR,CAAA;EACC,CAAA;CACK,CAAA,IACd;CAEN,MAAM,iBAAiB,uBACrB,qBAAC,gBAAD;EAAgB,UAAS;EAAzB,UAAA,CACE,oBAAC,SAAD;GAAS,OAAO,aAAa;GAC3B,UAAA,oBAAC,QAAD,EAAA,UACE,oBAAC,YAAD;IACE,cAAY,aAAa;IACzB,SAAS;IACT,MAAK;IACL,IAAI;KAAE,QAAQ;KAAW,OAAO;IAAU;IAE1C,UAAA,oBAAC,gBAAD,CAAiB,CAAA;GACP,CAAA,EACR,CAAA;EACC,CAAA,GACR,mBAAmB,oBAAC,MAAD;GAAM,OAAO;GAAiB,UAAU;EAA6B,CAAA,CAC3E;CACd,CAAA,IAAA;CAEJ,MAAM,uBAAuC;EAC3C,WAAW;EACX,YAAY,uBACV,oBAAC,SAAD,EAAA,UACG,aAAa,WAAW,QAAQ,gBAAgB,qBAAqB,cAAc,mBAAmB,CAAC,EACnG,CAAA,IACL;EACJ,WAAW,aAAa;GACtB,gBAAgB,QAAS,GAAG,OAAO,GAAG,GAAG,oBAAoB,OAAO;GACpE,IAAI,eAAe,UACjB,eAAe,WAAW;EAE9B;EACA,QAAQ;EACR,aAAa,mBAAmB,kBAAkB,sBAAsB,KAAA,IAAY;EACpF,SAAS;EACT,GAAG;EACH,YAAY,MAAM;GAChB,EAAE,gBAAgB;GAClB,eAAe,YAAY,CAAC;EAC9B;EACA,WAAW;GACT,GAAG,eAAe;GAClB,gBAAgB;IACd,IAAI;KACF,UAAU;KACV,YAAY;KACZ,YAAY;IACd;IACA,GAAG,eAAe,WAAW;GAC/B;GACA,WAAW;IACT,cAAc;IACd,cAAc;IACd,UAAU,CAAC,CAAC;IACZ,IAAI;KACF,cAAc;KACd,OAAO,kBAAkB,IAAI,KAAA;IAC/B;IACA,OAAO;IACP,GAAG,eAAe,WAAW;GAC/B;GACA,OAAO,eACH;IAAE;IAAc;IAAgB,GAAG,eAAe,WAAW;GAAM,IACnE;IAAE;IAAgB,GAAG,eAAe,WAAW;GAAM;EAC3D;EACA,KAAK,WAAW;GACd,UAAU,eACN,UACA,2BAA2B,qBAAqB,IAC9C,UACA,gBACE,UACA,CAAC,kBACC,UACA;GACV,IAAI;GACJ,GAAG;GACH,OAAO;GACP,GAAI,sBAAsB,gBAAgB,IAAI,KAAK;EACrD;CACF;CAEA,MAAM,wBAAwB;EAC5B,WAAW,YAAyB;GAClC,aAAa,OAAO;EACtB;EACA,OAAO,eAAe;CACxB;CAEA,OACE,qBAAA,YAAA,EAAA,UAAA,CACG,eAAe,WAAW,MAAM,IAC/B,oBAAC,YAAD;EACE,GAAI;EACJ,GAAI;EACJ,WAAW;GACT,GAAG,iBAAiB;GACpB,OAAO;IACL,WAAW;IACX,eAAe,YAAY;IAC3B,GAAG,iBAAiB,WAAW;GACjC;GACA,WAAW;IACT,GAAI;IACJ,GAAG,iBAAiB,WAAW;GACjC;EACF;CACD,CAAA,IACC,eAAe,WAAW,UAAU,IACtC,oBAAC,gBAAD;EACE,GAAI;EACJ,GAAI;EACJ,WAAW;GACT,GAAG,qBAAqB;GACxB,OAAO;IACL,WAAW;IACX,eAAe,YAAY;IAC3B,GAAG,qBAAqB,WAAW;GACrC;GACA,WAAW;IACT,GAAI;IACJ,GAAG,qBAAqB,WAAW;GACrC;EACF;CACD,CAAA,IACC,eAAe,WAAW,MAAM,IAClC,oBAAC,YAAD;EACE,GAAI;EACJ,GAAI;EACJ,WAAW;GACT,GAAG,iBAAiB;GACpB,OAAO;IACL,WAAW;IACX,eAAe,YAAY;IAC3B,GAAG,iBAAiB,WAAW;GACjC;GACA,WAAW;IACT,GAAI;IACJ,GAAG,iBAAiB,WAAW;GACjC;EACF;CACD,CAAA,IACC,uBACF,oBAAC,cAAD;EACE,UAAA;EACA,iBAAiB,WAA2B,iBAAiB,MAAM,CAAC,CAAC;EACrE,YAAY;EACZ,WAAW,IAAI,aAAa,yBAAyB,QAAiC;EACtF,eAAe;EACf,SAAS,iBAAiB,KAAK,WAAW,iBAAiB,MAAM,CAAC,KAAK,CAAC;EACxE,GAAI;EACJ,cAAc,WAA0C;GACtD,MAAM,cAAc,sBAAsB,qBAAqB,SAAS,CAAC,CAAC;GAC1E,MAAM,kBAAkB,sBAAsB,qBAAqB,SAAS,CAAC,CAAC;GAC9E,OACE,oBAAC,WAAD;IACE,GAAI;IACJ,UAAU,OAAO;IACjB,WAAW,OAAO;IAClB,IAAI,OAAO;IACX,UAAU,MAAoC,EAAE,gBAAgB;IAChE,MAAM,OAAO;IACb,WAAW;KACT,GAAG,qBAAqB;KACxB,WAAW;MACT,GAAG,OAAO,UAAU;MACpB,GAAG;KACL;KACA,OAAO;MACL,GAAG,OAAO,UAAU;MACpB,gBAAgB,aAAa;KAC/B;KACA,YAAY,OAAO,UAAU;IAC/B;GACD,CAAA;EAEL;EACA,OAAO;CACR,CAAA,IAED,oBAAC,WAAD;EACE,QAAQ,kBAAkB;EAC1B,GAAI;EACJ,UAAU;EACV,UAAU,MAAoC,EAAE,gBAAgB;EAChE,WAAW;GACT,GAAG,qBAAqB;GACxB,YAAY;IACV,QAAQ,kBAAkB;IAC1B,GAAG,qBAAqB,WAAW;GACrC;GACA,QAAQ;IACN,cAAc;IACd,WAAW,EAAE,mBAAmB,KAAK;IACrC,UAAU;IACV,aAAa,uBACR,aACC,CAAC,MAAM,QAAQ,QAAQ,KAAK,UAAU,WAAW,IAC/C,oBAAC,KAAD;KAAK,IAAI,EAAE,SAAS,GAAI;KAAI,UAAA;IAAuB,CAAA,IAEnD,oBAAC,KAAD;KAAK,IAAI;MAAE,SAAS;MAAQ,UAAU;MAAQ,KAAK;KAAM;KACtD,UAAA,SAAS,KAAK,UAAkB;MAC/B,MAAM,gBAAgB,iBAAiB,MACpC,WAAW,iBAAiB,MAAM,CAAC,CAAC,UAAU,KACjD;MACA,OAAO,oBAAC,MAAD,EAAkB,OAAO,iBAAiB,aAAa,CAAC,CAAC,MAAQ,GAAtD,KAAsD;KAC1E,CAAC;IACE,CAAA,IAET,KAAA;IACJ,GAAG,qBAAqB,WAAW;GACrC;EACF;EACA,OAAO,sBAAuB,MAAM,QAAQ,WAAW,IAAI,cAAc,CAAC,IAAK;EAE7E,WAAA,kBAAkB,wBAAwB,CAC1C,oBAAC,UAAD;GAAU,UAAA;GAAS,SAAA;GAAQ,QAAA;GAAe,OAAM;GAC9C,UAAA,oBAAC,KAAD;IAAK,IAAI,EAAE,SAAS,GAAI;IAAI,UAAA;GAAuB,CAAA;EAC3C,GAF4B,GAE5B,GACV,GAAG,CACD,eAAe,YACb,iBAAiB,KAAK,QAAQ,UAAU;GACtC,MAAM,EAAE,OAAO,UAAU,iBAAiB,MAAM;GAChD,OACE,qBAAC,UAAD;IAEE,IAAI;KACF,YAAY;KACZ,SAAS;KACT,KAAK;KACL,GAAG;IACL;IACO;IART,UAAA;KAUG,uBACC,oBAAC,UAAD;MACE,UAAW,OAAO,eAAe,KAAK,CAAC,EAAA,CAA2B,SAAS,KAAK;MAChF,IAAI,EAAE,IAAI,SAAS;KACpB,CAAA;KAEF;KAAM;KAAE,CAAC,UAAU,uBAAuB,IAAI,oBAAoB,IAAI,KAAK,EAAE;IACtE;GAhBH,GAAA,GAAG,MAAM,GAAG,OAgBT;EAEd,CAAC,CACL,CACF;CACS,CAAA,GAEb,oBAAC,sBAAD;EACY;EACF;EACK;EACG;EACT;CACR,CAAA,CACD,EAAA,CAAA;AAEN;;AC1gBA,MAAa,yBAAoD,EAC/D,QACA,OACA,GAAG,WACiD;CACpD,OACE,oBAAC,KAAD;EACE,GAAI;EACJ,KAAK,WAAW;GACd,SAAS;GACT,KAAK;GACL,qBAAqB;GACrB,GAAI,sBAAsB,MAAM,IAAI,KAAK;EAC3C;EAEC,UAAA,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,qBACX,oBAAC,qBAAD;GAA6B;GAAiD;GAAyB;EAAQ,GAArE,gBAAqE,CAChH;CACE,CAAA;AAET;;ACnBA,MAAa,yBAAoD,EAC/D,QACA,OACA,GAAG,WACiD;CACpD,MAAM,EACJ,SAAS,EAAE,yBAAyB,cAAc,wBAClD,MAAM,EAAE,sBACN;CACJ,MAAM,EAAE,WAAW;CACnB,MAAM,EAAE,cAAc;CAEtB,MAAM,EAAE,wBAAwB,oBAAoB;EAAE;EAAQ;CAAM,CAAC;CAErE,MAAM,uBAAuB,2BAA2B,UAAU,4BAA4B;CAE9F,MAAM,cAAc;EAClB,GAAG,sBAAsB,sBAAsB;GAAE;GAAQ;EAAM,CAAC;EAChE,GAAG,sBAAsB,UAAU,sBAAsB;GAAE;GAAQ;EAAM,CAAC;EAC1E,GAAG;CACL;CAEA,IAAI,CAAC,KAAK,OACR,YAAY,QAAQ,KAAA,KAAa,YAAY,QAAQ,KAAA,IACjD,CAAC,YAAY,KAAK,YAAY,GAAG,IAChC,OAAO,uBAAuB,KAAK,CAAC,GAAG,CAAC;CAG/C,IAAI,MAAM,QAAQ,GAAG,GACnB,MAAM,IAAI;CAEZ,IAAI,MAAM,QAAQ,GAAG,GACnB,MAAM,IAAI;CAEZ,IAAI,QAAQ,MACV,MAAM;CAER,IAAI,QAAQ,MACV,MAAM;CAGR,MAAM,CAAC,cAAc,mBAAmB,SAAS,CAAC,KAAK,GAAG,CAAC;CAC3D,MAAM,oBAAoB,OAAO,eAAe;CAEhD,MAAM,YAAY,OAAO,KAAK;CAG9B,MAAM,iBAAiB,UAA+B;EACpD,IAAI,MAAM,QAAQ,eAAe,MAAM,QAAQ,cAC7C,MAAM,gBAAgB;CAE1B;CAEA,gBAAgB;EACd,IAAI,UAAU,SAAS;GACrB,IAAI,sBAAsB,KAAA,GACxB,gBAAgB,CAAC,KAAK,GAAG,CAAC;QACrB,IAAI,MAAM,QAAQ,iBAAiB,GACxC,gBAAgB,iBAAiB;EAErC;EACA,UAAU,UAAU;CACtB,GAAG;EAAC;EAAmB;EAAK;CAAG,CAAC;CAEhC,OACE,qBAAC,OAAD,EAAA,UAAA,CACE,oBAAC,QAAD;EACE,aAAA;EACK;EACA;EACL,WAAW,QAAQ,WAAW;GAC5B,gBAAgB,MAA0B;EAC5C;EACA,oBAAoB,QAAQ,UAAU;GACpC,IAAI,MAAM,QAAQ,KAAK,GAAG;IACxB,IAAI,MAAM,MAAM,OAAO,MAAM,MAAM,KAEjC,OAAO,eAAe,KAAA,CAAS;SAE/B,OAAO,eAAe,KAAyB;GAEnD;EACF;EACA,WAAW;EACX,OAAO;EACP,mBAAkB;EAClB,GAAI;EACJ,WAAW,EACT,OAAO,EACL,MAAM,SAAS;GACb,IAAI,MAAM;IACR,gBAAgB,QAAS,GAAG,OAAO,GAAG,OAAO;IAC7C,MAAM,YAAY,aAAa,WAAW;IAC1C,IAAI,aAAa,OAAO,cAAc,YAAY,UAAU,OAAO,OAAO,UAAU,QAAQ,UAC1F,UAAU,IAAI,UAAU;GAE5B;EACF,EACF,EACF;EACA,KAAK,WAAW;GACd,GAAG;GACH,UAAU,GAAG,OAAO,QAAQ,IAAI,GAAG;GACnC,IAAI,CAAC,uBAAuB,SAAS;GACrC,IAAI;GACJ,OAAO;GACP,GAAI,sBAAsB,aAAa,IAAI,KAAK;EAClD;CACD,CAAA,GACA,uBACC,oBAAC,gBAAD;EACE,IAAI;GACF,UAAU;GACV,YAAY;GACZ,GAAG;GACH,YAAY;EACd;EAEC,UAAA,aAAa,WAAW,QAAQ,gBAAgB,qBAAqB,cAAc,mBAAmB,CAAC;CAC1F,CAAA,IACd,IACC,EAAA,CAAA;AAEX;;AC1HA,MAAa,oCAA+D,EAC1E,QACA,OACA,GAAG,WAC4D;CAC/D,MAAM,EACJ,SAAS,EAAE,8BACT;CACJ,MAAM,EAAE,sBAAsB,MAAM;CACpC,MAAM,EAAE,WAAW;CACnB,MAAM,EAAE,cAAc;CACtB,MAAM,EAAE,kBAAkB,oBAAoB;EAAE;EAAQ;CAAM,CAAC;CAE/D,OACE,oBAAC,UAAD;EAAU,IAAI,qBAAqB,4BAA4B;EAAW,cAAA;EAAa,eAAA;EAAc,GAAI;EACtG,UAAA,UAAU,kBAAkB,aAC3B,oBAAC,oBAAD;GAA4B;GAAe;EAAQ,CAAA,IACjD,UAAU,kBAAkB,iBAC9B,oBAAC,uBAAD;GAA+B;GAAe;EAAQ,CAAA,IACpD,gBACF,oBAAC,uBAAD;GAA+B;GAAe;EAAQ,CAAA,IAEtD,oBAAC,qBAAD;GAA6B;GAAe;EAAQ,CAAA;CAE9C,CAAA;AAEd;;AC1BA,MAAa,gCAAyE,EACpF,QACA,OACA,GAAG,WACwD;CAC3D,MAAM,EACJ,SAAS,EACP,yBACA,OAAO,EAAE,iBACT,gBAEF,MAAM,EAAE,mBACR,yBACE;CACJ,MAAM,EAAE,WAAW;CACnB,MAAM,EAAE,cAAc;CAEtB,MAAM,cAAc,OAAO,eAAe;CAE1C,MAAM,CAAC,UAAU,eAAe,SAAmC,IAAI;CAEvE,MAAM,EAAE,qBAAqB,qBAAqB,eAAe,mBAAmB,oBAAoB;EACtG;EACA;CACF,CAAC;CAED,MAAM,kBAAkB,mBAAmB;EAAE;EAAQ;CAAM,CAAC;CAE5D,MAAM,kBAAkB,UACtB,iBACE,iBAAiB,MACd,WAAW,iBAAiB,MAAM,CAAC,CAAC,WAAW,UAAU,KAAA,IAAY,YAAY,SAAS,YAC7F,CACF,CAAC,CAAC;CAEJ,MAAM,iBACH,MAAM,QAAQ,WAAW,KAAK,YAAY,KAAK,OAAO,KAAO,CAAC,CAAC,eAAe,CAAC,MAAM,QAAQ,WAAW;CAE3G,MAAM,gBACJ,4BAA4B,aAAa,CAAC,iBACtC,aAAa,gBAAgB,QAAQ,YAAY,OAAO,UAAU,MAAM,CAAC,IACzE,aAAa,kBACV,QAAQ,YAAY,OAAO,UAAU,MAAM,CAAC,CAAC,CAC7C,QAAQ,gBAAgB,sBAAsB,qBAAqB,cAAc,mBAAmB,IAAI,EAAE,CAAC,CAC3G,QACC,iBACA,IACE,MAAM,QAAQ,WAAW,IACpB,YACE,KAAK,OAAO,UAAW,sBAAsB,eAAe,KAAK,IAAI,KAAM,CAAC,CAC5E,KAAK,KAAK,gBAAgB,aAAa,MAAM,aAAa,GAAG,GAAG,IACnE,iBACE,eAAe,IACd,YACR,EACH,CAAC,CACA,QAAQ,SAAO,EAAE;CAE1B,OACE,qBAAA,YAAA,EAAA,UAAA,CACE,oBAAC,MAAD;EACE,IACE,4BAA4B,aAC3B,CAAC,CAAC,eAAe,CAAC,iBAClB,kBAAkB,CAAC,CAAC,cAAc,MAAM,CAAC,CAAC,cAAc;EAE3D,eAAA;EAEA,UAAA,oBAAC,KAAD;GAAK,WAAU;GAAO,IAAI,EAAE,MAAM,MAAM;GACtC,UAAA,oBAAC,SAAD;IAAS,WAAU;IAAM,OAAO;IAC9B,UAAA,oBAAC,YAAD;KACE,eAAA;KACA,UAAU,UAAyC;MACjD,IAAI,4BAA4B,WAC9B,YAAY,MAAM,aAAa;WAE/B,qBAAqB,IAAI;MAE3B,qBAAqB;OACnB,gBAAgB,UAAU,GAAG,OAAO,GAAG,IAAI,EAAE,QAAQ;OACrD,gBAAgB,UAAU,GAAG,OAAO,GAAG,IAAI,EAAE,SAAS;MACxD,CAAC;MACD,MAAM,gBAAgB;KACxB;KACA,MAAK;KACL,GAAI;KACJ,KAAK,WAAW;MACd,QAAQ;MACR,IAAI;MACJ,SAAS,iBAAiB,IAAI;MAC9B,GAAG;MACH,WAAW;MACX,YAAY;MACZ,OAAO;MACP,GAAI,sBAAsB,MAAM,IAAI,KAAK;KAC3C;KAEA,UAAA,oBAAC,eAAD,CAAgB,CAAA;IACN,CAAA;GACL,CAAA;EACN,CAAA;CACD,CAAA,GACL,4BAA4B,aAC3B,oBAAC,SAAD;EACY;EACV,cAAc;GACZ,YAAY;GACZ,UAAU;EACZ;EACA,mBAAA;EACA,UAAU,UAAU,MAAM,gBAAgB;EAC1C,UAAU,UAA4C;GACpD,MAAM,kBAAkB;GACxB,YAAY,IAAI;EAClB;EACA,YAAY,UAAU,MAAM,QAAQ,WAAW,YAAY,IAAI;EAC/D,MAAM,CAAC,CAAC;EACR,WAAW,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,UAAU,EAAE,EAAE;EACpD,iBAAiB;GACf,YAAY;GACZ,UAAU;EACZ;EAEA,UAAA,oBAAC,KAAD;GAAK,IAAI,EAAE,GAAG,OAAO;GACnB,UAAA,oBAAC,kCAAD;IAA0C;IAAe;GAAQ,CAAA;EAC9D,CAAA;CACE,CAAA,CAEX,EAAA,CAAA;AAEN;;AClIA,MAAa,+BAA0D,EACrE,QACA,OACA,kBACA,GAAG,WACuD;CAC1D,MAAM,EACJ,SAAS,EAAE,sBAAsB,4BACjC,mBACA,qBACE;CACJ,MAAM,EAAE,cAAc;CACtB,MAAM,EAAE,gBAAgB,kBAAkB,MAAM;CAEhD,MAAM,kBAAkB;EACtB,GAAG,sBAAsB,0BAA0B;GAAE;GAAQ;EAAM,CAAC;EACpE,GAAG,sBAAsB,UAAU,0BAA0B;GAC3D;GACA;EACF,CAAC;EACD,GAAG;CACL;CAEA,MAAM,mBAAmB,UAAwC;EAC/D,iBAAiB,cAAc,KAAK;EACpC,kBAAkB,MAAM;EACxB,IAAI;GACF,MAAM,aAAa,aAAa,iBAAiB,SAAwB,GAAG,CAAC;EAC/E,SAAS,GAAG;GACV,QAAQ,MAAM,CAAC;EACjB;CACF;CAEA,MAAM,iBAAiB,UAAwC;EAC7D,iBAAiB,YAAY,KAAK;EAClC,IAAI,eAAe,OAAO,aACxB,OAAO,eAAe;OACjB,IAAI,wBAAwB,iBAAiB,eAAe,OAAO,gBAAgB,IACxF,WAAW,OAAO,QAAQ,aAAkC;EAE9D,kBAAkB,IAAI;EACtB,iBAAiB,IAAI;CACvB;CAEA,OACE,oBAAC,sBAAD;EAAsB,GAAI;EAAiB,WAAW;EAAe,aAAa;EAAwB;CAAQ,CAAA;AAEtH;;AClDA,MAAa,iCAA4D,EACvE,QACA,OACA,GAAG,WACyD;CAC5D,MAAM,EACJ,SAAS,EAAE,uBAAuB,oBAClC,sBACE;CACJ,MAAM,EAAE,YAAY,MAAM;CAC1B,MAAM,EAAE,WAAW;CAEnB,MAAM,UAAU,OAAO,iBAAiB;CAExC,MAAM,KAAK,YAAY,YAAY,SAAS,YAAY,gBAAgB,UAAU;CAElF,MAAM,KAAK,OAAO,UAAU,kBAAkB,YAAY,QAAQ;CAElE,OACE,oBAAC,KAAD;EACE,WAAU;EACV,qBAAqB;GACnB,mBAAmB,SAAS;IAC1B,GAAG;IACH,kBAAkB;GACpB,EAAE;GACF,OAAO,UAAU;EACnB;EACA,aAAa;EACb,cAAc;EACd,OAAO,EACL,WACE,OAAO,cAAc,KAAK,qBAAqB,UAC3C,eACG,0BAA0B,QAAQ,KAAK,MAAM,MAAM,MAAM,eAAe,eAAe,GACzF,OACD,KAAA,EACR;EACA,KAAK,WAAW;GACd,iBAAiB;IACf,iBAAiB,MAAM,QAAQ,KAAK;IACpC,SAAS,OAAO,WAAW,UAAU,qBAAqB,UAAU,IAAI;GAC1E;GACA,QAAQ;GACR,MAAM,0BAA0B,QAAQ,KAAK,KAAA;GAC7C,IAAI,0BAA0B,QAAQ,KAAK,KAAA;GAC3C,IAAI,0BAA0B,QAAQ,KAAK,KAAA;GAC3C,UAAU;GACV,IAAI;GACJ,OAAO,0BAA0B,QAAQ,KAAK,KAAA;EAChD;EAEA,UAAA,oBAAC,SAAD;GACE,WAAU;GACV,UAAA;GACA,aAAY;GACZ,KAAK,WAAW;IACd,cAAc;IACd,aAAa;IACb,QAAQ;IACR,aAAa;IACb,WAAW;IACX,YAAY,OAAO,cAAc,IAAI,KAAA,IAAY;IACjD,YAAY;IACZ,QAAQ;IACR,GAAI,sBAAsB,MAAM,IAAI,KAAK;GAC3C;EACD,CAAA;CACE,CAAA;AAET;;ACtEA,MAAa,8BAAyD,EACpE,QACA,OACA,GAAG,WACsD;CACzD,MAAM,EACJ,SAAS,EACP,OAAO,EAAE,mBAAmB,eAC5B,mBAEA;CACJ,MAAM,EAAE,WAAW;CACnB,MAAM,EAAE,cAAc;CACtB,MAAM,EAAE,WAAW,eAAe,YAAY,MAAM;CAEpD,MAAM,WAAW,CAAC,CAAC,OAAO,YAAY;CAEtC,MAAM,cACJ,aAAa,gBACT,KACA,OAAO,YAAY,IACjB,OAAO,YAAY,MAAM,SACvB,aAAa,mBAAmB,QAAQ,YAAY,UAAU,MAAM,IACpE,aAAa,kBAAkB,QAAQ,YAAY,UAAU,MAAM,IACrE,OAAO,oBAAoB,MAAM,SAC/B,aAAa,iBAAiB,QAAQ,YAAY,UAAU,MAAM,IAClE,aAAa,gBAAgB,QAAQ,YAAY,UAAU,MAAM;CAE3E,MAAM,YAAY,WAAY,OAAO,YAAY,IAAuB,KAAA;CAExE,OACE,oBAAC,SAAD;EAAS,WAAU;EAAM,OAAO;EAC9B,UAAA,oBAAC,OAAD;GAAO,cAAc,QAAQ,SAAS,IAAI,OAAO,aAAa,IAAI,IAAI;GAAG,SAAQ;GAC/E,UAAA,oBAAC,gBAAD;IACE,QAAA;IACA,cAAY;IACD;IACX,eACE,CAAC,YACI,UACC,oBAAC,aAAD;KACE,GAAI;KACO;KACX,OAAO,EACL,WAAW,8CACb;IACD,CAAA,IAEH;IAEN,UAAU,MAAM;KACd,EAAE,gBAAgB;KAClB,OAAO,OAAO,wBAAwB,CAAC,GAAG,CAAC;IAC7C;IACA,GAAI;IACJ,KAAK,WAAW;KACd,2BAA2B,EACzB,OAAO,GACL,MAAM,QAAQ,SAAS,SAAS,MAAM,QAAQ,KAAK,UAAU,MAAM,QAAQ,KAAK,UACjF,aACH;KACA,MAAM;KACN,SAAS,WAAW,IAAI;KACxB,YAAY;KACZ,OAAO;KACP,GAAI,sBAAsB,MAAM,IAAI,KAAK;IAC3C;GACD,CAAA;EACI,CAAA;CACA,CAAA;AAEb;;AC3DA,MAAa,qBAAgD,EAC3D,mBACA,QACA,mBACA,OACA,GAAG,WAC6C;CAChD,MAAM,QAAQ,SAAS;CACvB,MAAM,EACJ,SAAS,EACP,yBACA,uBACA,kBACA,qBACA,sBACA,sBACA,qBACA,gBACA,yBACA,iBACA,YACA,UAAU,EAAE,uBACZ,yBAEF,MAAM,EAAE,qBACR,qBACE;CACJ,MAAM,EAAE,gBAAgB,SAAS,gBAAgB,UAAU,eAAe,sBAAsB,MAAM;CACtG,MAAM,EAAE,WAAW;CACnB,MAAM,EAAE,cAAc;CACtB,MAAM,EAAE,kBAAkB;CAE1B,MAAM,iBAAiB;EACrB,GAAG,sBAAsB,uBAAuB;GAAE;GAAQ;EAAM,CAAC;EACjE,GAAG,sBAAsB,UAAU,uBAAuB;GACxD;GACA;EACF,CAAC;EACD,GAAG;CACL;CAEA,MAAM,iBAAiB,uBAAuB,UAAU,kBAAkB,WAAW,OAAO,YAAY;CAExG,MAAM,qBACH,uBAAuB,UAAU,wBAAwB,UAAU,wBAAwB;CAE9F,MAAM,iBACJ,yBAAyB,SACzB,UAAU,yBAAyB,UAClC,wBACE,wBAAwB,UAAU,yBAAyB,SAC3D,kBAAkB,UAAU,mBAAmB,SAAS,CAAC,SAAS,SAAS,OAAO,EAAE;CAEzF,MAAM,WAAW,cAAc;EAC7B,IAAI,KAAK;EACT,IAAI,OAAO,WAAW,GACpB,MAAM;EAER,IAAI,mBACF,MAAM;EAER,IAAI,gBACF,MAAM;EAER,OAAO;CACT,GAAG;EAAC;EAAQ;EAAmB;CAAc,CAAC;CAE9C,MAAM,kBAAkB,cAAc;EACpC,MAAM,mBACJ,eAAe,qBAAqB,OAAO,MAAM,qBAAqB,cAAc,CAAC,OAAO,WAAW;EAEzG,MAAM,cAAc,mBAChB,aAAa,oBAAoB,eACjC,gBAAgB,OAAO,OAAO,KAC5B,cAAc,MAAM,QAAQ,KAAK,SACjC,eAAe,OAAO,OAAO,KAC3B,cAAc,wBACd,KAAA;EAER,IAAI,kBACF,OAAO,0BAA0B,QAAQ,EAAE,aAAa,YAAY,IAAI,EAAE,YAAY,YAAY;EAUpG,OARwB,cACpB;GACE,YAAY;GACZ,aAAa;GACb,WAAW;EACb,IACA,KAAA;CAGN,GAAG;EACD,OAAO;EACP;EACA;EACA,eAAe;EACf;EACA;EACA,OAAO,WAAW;EAClB;EACA,MAAM,QAAQ;CAChB,CAAC;CAED,MAAM,mBAAmB,OAAkB;EACzC,IAAI,kBAAkB,eAAe,OAAO,aAC1C,iBAAiB,IAAI;EAEvB,IAAI,wBAAwB,kBAAkB,kBAAkB,SAC9D,iBAAiB,UAAU,yBAAyB,QAAQ,SAAS,IAAI;CAE7E;CAEA,MAAM,kBAAkB,MAAiB;EACvC,IAAI,UAAU,yBAAyB,OACrC,EAAE,eAAe;CAErB;CAEA,MAAM,iBAAiB,UAAqD;EAC1E,gBAAgB,YAAY,KAAK;EACjC,sBAAsB;GACpB,WAAW,OAAO,OAAO,UAAU;GACnC;GACA;GACA;EACF,CAAC;CACH;CAEA,MAAM,mBAAmB,OAAoC,IAAI;CAEjE,MAAM,YAAY,aACf,SAA+B;EAC9B,iBAAiB,UAAU;EAC3B,IAAI,MAAM;GACR,IAAI,kBAAkB,SACpB,kBAAkB,QAAQ,OAAO,MAAM;GAEzC,IAAI,kBAAkB,SACpB,mBAAmB,iBAAiB,IAAI;EAE5C;CACF,GACA;EAAC,OAAO;EAAI;EAAe;EAAmB;CAAiB,CACjE;CAEA,MAAM,gBACJ,sBAAsB,UAAU,QAAQ;EACtC;EACA;EACA;CACF,CAAC,KAAK,UAAU;CAElB,OACE,qBAAC,WAAD;EACE,OAAO,kBAAkB,UAAU,WAAW,MAAM,cAAc,QAAQ,UAAU;EACpF,aAAW,OAAO,YAAY,IAAK,OAAO,YAAY,MAAM,QAAQ,cAAc,eAAgB;EAClG,SAAS,OAAO;EAChB,iBAAe,OAAO,WAAW,KAAK,KAAA;EACtC,cAAY;EACZ,eAAa,CAAC,CAAC,kBAAkB,KAAA;EACjC,aAAW,OAAO,YAAY,KAAK,KAAA;EACnC,aAAa;EACb,YAAY;EACZ,KAAK;EACL,UAAU,0BAA0B,IAAI,KAAA;EACxC,GAAI;EACJ,WAAW;EACX,KAAK,WAAkB;GACrB,YAAY,EACV,uBAAuB,EACrB,SAAS,EACX,EACF;GACA,eAAe,YAAY,WAAW,MAAM,IAAI,WAAW,KAAA;GAC3D,YAAY;GACZ,UAAU;GACV,GACE,YAAY,YACR,WACA,YAAY,gBACV,kBAAkB,YAChB,YACA,SACF,kBAAkB,YAChB,iBACA;GACV,IAAI,kBAAkB,YAAY,IAAI,qBAAqB,YAAY,YAAY,WAAW;GAC9F,IACE,kBAAkB,WAAW,YAAY,YACrC,YACA,YAAY,gBACV,WACA;GACR,YAAY,mBAAmB,OAAO,WAAW,IAAI,SAAS,KAAA;GAC9D,eAAe;GACf,GAAG,uBAAuB;IACxB;IACA;IACA;IACA;IACA;GACF,CAAC;GACD,GAAG;EACL;EAlDF,UAAA,CAoDG,OAAO,gBACJ,OACC,eAAe,YACd,qBAAC,KAAD;GACE,WAAU;GACV,IAAI;IACF,YAAY;IACZ,SAAS;IACT,eAAe,gBAAgB,UAAU,UAAU,gBAAgB;IACnE,gBACE,kBAAkB,WAAW,gBAAgB,UAAU,WACnD,WACA,OAAO,aAAa,IAClB,kBACA;IACR,UAAU;IACV,OAAO;GACT;GAdF,UAAA;IAgBE,qBAAC,KAAD;KACE,WAAU;KACV,SAAS,OAAO,wBAAwB;KACxC,IAAI;MACF,YAAY;MACZ,QAAQ,OAAO,WAAW,KAAK,kBAAkB,UAAU,YAAY,KAAA;MACvE,SAAS;MACT,eAAe,gBAAgB,UAAU,UAAU,gBAAgB;MACnE,UAAU,kBAAkB,SAAS,WAAW,KAAA;MAChD,IAAI,gBAAgB,UAAU,WAAW,GAAG,SAAS,OAAO,KAAA;KAC9D;KAVF,UAAA;MAYE,oBAAC,KAAD;OACE,WAAU;OACV,IAAI;QACF,WAAW,EACT,cAAc,OAChB;QACA,UAAU,GAAG,KAAK,IAAI,UAAU,QAAQ,UAAU,GAAG,CAAC,EAAE;QACxD,UAAU,kBAAkB,SAAS,WAAW,KAAA;QAChD,cAAc;QACd,aAAa,UAAU,QAAQ,UAAU,KAAK,KAAK,WAAW;OAChE;OAEC,UAAA;MACE,CAAA;MACJ,OAAO,aAAa,KAAK,oBAAC,8BAAD;OAAsC;OAAe;MAAQ,CAAA;MACtF,OAAO,WAAW,KAAK,oBAAC,4BAAD;OAAoC;OAAe;MAAQ,CAAA;KAChF;;IACJ,kBAAkB,WACjB,qBAAC,KAAD;KACE,WAAU;KACV,IAAI,EACF,YAAY,SACd;KAJF,UAAA,CAMG,kBACC,oBAAC,6BAAD;MAAqC;MAAe;MAAyB;KAAmB,CAAA,GAEjG,qBAAqB,oBAAC,sCAAD;MAA8C;MAAe;KAAQ,CAAA,CACxF;;IAEN,OAAO,aAAa,KAAK,oBAAC,+BAAD;KAAuC;KAAe;IAAQ,CAAA;GACrF;EAEV,CAAA,GAAA,4BAA4B,eAAe,OAAO,aAAa,KAC9D,oBAAC,kCAAD;GAA0C;GAAe;EAAQ,CAAA,CAE1D;;AAEf;;ACrRA,MAAa,oBAA+C,EAC1D,mBACA,aACA,OACA,GAAG,WAC4C;CAC/C,MAAM,EACJ,SAAS,EACP,oBACA,YACA,UAAU,EAAE,uBACZ,2BAEA;CAEJ,MAAM,EAAE,gBAAgB,oBAAoB,wBAAwB,qBAAqB,CAAC;CAE1F,MAAM,gBAAgB;EACpB,GAAG,sBAAsB,sBAAsB;GAC7C;GACA;EACF,CAAC;EACD,GAAG;CACL;CAEA,OACE,qBAAC,UAAD;EACE,GAAI;EACJ,KAAK,WAAW;GACd,iBAAiB;GACjB,WAAW,aAAa,MAAM,MAAM,QAAQ,OAAO,OAAO,EAAG;GAC7D,SAAS,YAAY,WAAW,MAAM,IAAI,SAAS,KAAA;GACnD,UAAU,sBAAsB,eAAe,aAAa,WAAW;GACvE,KAAK;GACL,GAAI,sBAAsB,eAAe,IAAI,KAAK;EACpD;EATF,UAAA;GAWG,qBAAqB,oBAAC,MAAD,EAAI,OAAO;IAAE,SAAS;IAAQ,OAAO;GAAmB,EAAI,CAAA,IAAI;IACpF,kBAAkB,YAAY,QAAA,CAAS,KAAK,uBAAuB,sBAAsB;IACzF,IAAI,SAAS;IACb,IAAI,mBAAmB;KACrB,oBAAqB,sBAA0C;KAC/D,SAAS,YAAY,QAAQ;IAC/B;IAEA,OAAO,SACL,oBAAC,mBAAD;KACqB;KACX;KAEW;KACZ;IACR,GAHM,OAAO,EAGb,IACC;GACN,CAAC;GACA,sBAAsB,oBAAC,MAAD,EAAI,OAAO;IAAE,SAAS;IAAQ,OAAO;GAAoB,EAAI,CAAA,IAAI;EAChF;;AAEd;;ACjEA,MAAa,iBAA4C,EACvD,mBACA,OACA,GAAG,WACyC;CAC5C,MAAM,EACJ,SAAS,EAAE,oBAAoB,YAAY,mBAAmB,8BAC9D,MAAM,EAAE,mBACN;CACJ,MAAM,EAAE,cAAc,oBAAoB,MAAM;CAEhD,MAAM,iBAAiB;EACrB,GAAG,sBAAsB,mBAAmB,EAAE,MAAM,CAAC;EACrD,GAAG;CACL;CAEA,MAAM,eAAe,sBAAsB;CAE3C,OACE,oBAAC,WAAD;EACE,GAAI;EACJ,MAAM,QAAiC;GACrC,aAAa,UAAU;GACvB,IAAI,gBAAgB,OAAO,OAAO,eAAe,QAAQ,UACvD,eAAe,IAAI,UAAU;EAEjC;EACA,KAAK,WAAW;GACd,SAAS,YAAY,WAAW,MAAM,IAAI,SAAS,KAAA;GACnD,SAAS;GACT,UAAU,eAAe,WAAW;GACpC,KAAK,gBAAgB,YAAY,WAAW,MAAM,IAAI,IAAI,KAAA;GAC1D,QAAQ,eAAe,IAAI,KAAA;GAC3B,GAAI,sBAAsB,gBAAgB,IAAI,KAAK;EACrD;EAEC,UAAA,+BAA+B,mBAC/B,mBAAmB,MAAM,oBAAoB,CAAC,CAAC,KAAK,SAAS,KAC5D,oBAAC,MAAD;GACE,OAAO,EACL,SAAS,YAAY,WAAW,MAAM,IAAI,SAAS,KAAA,EACrD;GAEA,UAAA,oBAAC,MAAD;IACE,SAAS,MAAM,sBAAsB,CAAC,CAAC;IACvC,OAAO;KACL,SAAS,YAAY,WAAW,MAAM,IAAI,SAAS,KAAA;KACnD,SAAS;IACX;IAEA,UAAA,oBAAC,wBAAD,EAA+B,MAAQ,CAAA;GACrC,CAAA;EACF,CAAA,IAEJ,MACG,gBAAgB,CAAC,CACjB,KAAK,gBACJ,oBAAC,kBAAD;GACqB;GACN;GAEN;EACR,GAFM,YAAY,EAElB,CACF;CAEI,CAAA;AAEf;;ACnEA,MAAa,6BAAwD,EACnE,OACA,GAAG,WACqD;CACxD,MAAM,EACJ,SAAS,EACP,yBACA,OAAO,EAAE,WAAW,cACpB,cACA,iBACA,2BAEF,MAAM,EAAE,kBACR,oBACE;CACJ,MAAM,EAAE,cAAc,qBAAqB,MAAM;CAEjD,MAAM,iBAAiB;EACrB,GAAG,sBAAsB,yBAAyB,EAChD,MACF,CAAC;EACD,GAAG;CACL;CAEA,MAAM,YAAY,OAAO,KAAK;CAC9B,MAAM,CAAC,UAAU,eAAe,SAA6B,IAAI;CACjE,MAAM,CAAC,aAAa,kBAAkB,SAAS,gBAAgB,EAAE;CAEjE,MAAM,CAAC,yBAAyB,eAC9B,UACG,UAAyC;EACxC,gBAAgB,MAAM,OAAO,SAAS,KAAA,CAAS;CACjD,GACA,kBAAkB,MAAM,GAC1B,CACF;CAEA,MAAM,gBAAgB,UAAyC;EAC7D,eAAe,MAAM,OAAO,KAAK;EACjC,sBAAsB,KAAK;CAC7B;CAEA,MAAM,8BAA8B,UAAmC;EACrE,YAAY,MAAM,aAAa;CACjC;CAEA,MAAM,oBAAoB;EACxB,eAAe,EAAE;EACjB,gBAAgB,KAAA,CAAS;CAC3B;CAEA,gBAAgB;EACd,IAAI,UAAU,SAAS;GACrB,IAAI,iBAAiB,KAAA,GAAW;IAC9B,eAAe,EAAE;IACjB,gBAAgB,KAAA,CAAS;GAC3B,OACE,eAAe,YAAY;EAE/B;EACA,UAAU,UAAU;CACtB,GAAG,CAAC,cAAc,eAAe,CAAC;CAElC,MAAM,gBAAgB,sBAAsB,eAAe,SAAS;CAEpE,OACE,qBAAC,UAAD;EAAU,IAAI;EAAkB,cAAA;EAAa,aAAY;EAAa,eAAA;EAAtE,UAAA,CACE,oBAAC,WAAD;GACE,UAAU;GACV,aAAa,aAAa;GAC1B,MAAK;GACL,OAAO,eAAe;GACtB,SAAQ;GACR,GAAI;GACJ,WAAW,aAAa;IACtB,eAAe,UAAU;IACzB,IAAI,gBAAgB,UAClB,eAAe,WAAW;GAE9B;GACA,WAAW;IACT,WAAW;KAAE,cAAc;KAAO,GAAG,cAAc;IAAU;IAC7D,OAAO;KACL,cACE,oBAAC,gBAAD;MAAgB,UAAS;MACvB,UAAA,oBAAC,SAAD;OAAS,OAAO,aAAa,eAAe;OAC1C,UAAA,oBAAC,QAAD,EAAA,UACE,oBAAC,YAAD;QACE,cAAY,aAAa;QACzB,UAAU,CAAC,aAAa;QACxB,SAAS;QACT,MAAK;QAEL,UAAA,oBAAC,WAAD,CAAY,CAAA;OACF,CAAA,EACR,CAAA;MACC,CAAA;KACK,CAAA;KAElB,gBAAgB,0BACd,oBAAC,gBAAD;MAAgB,UAAS;MACvB,UAAA,oBAAC,SAAD;OAAS,OAAO,aAAa;OAC3B,UAAA,oBAAC,YAAD;QACE,cAAY,aAAa;QACzB,SAAS;QACT,MAAK;QACL,IAAI;SAAE,QAAQ;SAAW,OAAO;QAAU;QAE1C,UAAA,oBAAC,YAAD,CAAa,CAAA;OACH,CAAA;MACL,CAAA;KACK,CAAA,IAEhB,oBAAC,YAAD,EAAY,OAAO,EAAE,aAAa,MAAM,EAAI,CAAA;KAE9C,GAAG,cAAc;KACjB,IAAI;MAAE,IAAI;MAAG,GAAG,cAAc,OAAO;KAAG;IAC1C;GACF;EACD,CAAA,GACD,oBAAC,sBAAD;GAAgC;GAAU,UAAU;GAA0B;GAAoB;EAAQ,CAAA,CAClG;;AAEd;;ACtIA,MAAa,qBAAqB,EAAE,GAAG,eAAe;;ACgBtD,MAAM,SACJ,KACA,UACA,aACA,YACY;CACZ,MAAM,WAAW,SAAS,IAAI,SAAiC,QAAQ,GAAG,aAAuB,EAC/F,WAAW,SAAS,QACtB,CAAC;CACD,UAAU,QAAQ;CAClB,OAAO,SAAS;AAClB;AAEA,MAAM,cAAc,QAA0B,CAAC;AAE/C,MAAM,aAAa,UAAmC,MAAM,SAAS,CAAC,CAAC,YAAY,CAAC,CAAC,KAAK;AAE1F,MAAM,sBACJ,KACA,OACuB;CACvB,MAAM,QAAQ,IAAI,SAAiC,EAAE;CACrD,OAAO,UAAU,QAAQ,UAAU,KAAA,IAAY,KAAA,IAAY,UAAU,KAAK;AAC5E;AAEA,MAAM,YACJ,KACA,IACA,gBACY,CAAC,CAAC,mBAAmB,KAAK,EAAE,CAAC,EAAE,SAAS,UAAU,WAAW,CAAC;AAE5E,SAAS,cAAc,QAA0B,CAAC;AAElD,MAAM,cACJ,KACA,IACA,gBACY,CAAC,CAAC,mBAAmB,KAAK,EAAE,CAAC,EAAE,WAAW,UAAU,WAAW,CAAC;AAE9E,WAAW,cAAc,QAA0B,CAAC;AAEpD,MAAM,YACJ,KACA,IACA,gBACY,CAAC,CAAC,mBAAmB,KAAK,EAAE,CAAC,EAAE,SAAS,UAAU,WAAW,CAAC;AAE5E,SAAS,cAAc,QAA0B,CAAC;AAElD,MAAM,UACJ,KACA,IACA,gBACY,mBAAmB,KAAK,EAAE,MAAM,UAAU,WAAW;AAEnE,OAAO,cAAc,QAA0B,CAAC;AAEhD,MAAM,aACJ,KACA,IACA,gBACY,mBAAmB,KAAK,EAAE,MAAM,UAAU,WAAW;AAEnE,UAAU,cAAc,QAA0B,CAAC;AAEnD,MAAM,eACJ,KACA,IACA,gBAEA,CAAC,MAAM,CAAC,WAAW,KAAK,CAAC,MAAM,CAAC,IAAI,SAA0B,EAAE,CAAC,IAC7D,EAAE,IAAI,SAAiC,EAAE,KAAK,KAAK,CAAC,eACnD,mBAAmB,KAAK,EAAE,KAAK,MAAM,UAAU,WAAW;AAEjE,YAAY,cAAc,QAA0B,CAAC;AAErD,MAAM,wBACJ,KACA,IACA,gBACY,OAAO,KAAK,IAAI,WAAW,KAAK,YAAY,KAAK,IAAI,WAAW;AAE9E,qBAAqB,cAAc,QAA0B,CAAC;AAE9D,MAAM,YACJ,KACA,IACA,gBAEA,CAAC,MAAM,CAAC,WAAW,KAAK,CAAC,MAAM,CAAC,IAAI,SAA0B,EAAE,CAAC,IAC7D,EAAE,IAAI,SAAiC,EAAE,KAAK,KAAK,CAAC,eACnD,mBAAmB,KAAK,EAAE,KAAK,MAAM,UAAU,WAAW;AAEjE,SAAS,cAAc,QAA0B,CAAC;AAElD,MAAM,qBACJ,KACA,IACA,gBACY,OAAO,KAAK,IAAI,WAAW,KAAK,SAAS,KAAK,IAAI,WAAW;AAE3E,kBAAkB,cAAc,QAA0B,CAAC;AAE3D,MAAM,WACJ,KACA,IACA,kBAEC,aAAa,OAAO,MAAM,aAAa,OAAO,KAAA,KAAa,YAAY,KAAK,IAAI,aAAa,EAAE,OAC9F,CAAC,MAAM,CAAC,aAAa,EAAE,KAAK,CAAC,MAAM,CAAC,aAAa,EAAE,KAAK,CAAC,aAAa,KAAK,CAAC,aAAa,MACzF,aAAa,OAAO,MACpB,aAAa,OAAO,KAAA,KACpB,SAAS,KAAK,IAAI,aAAa,EAAE;AAErC,QAAQ,cAAc,QAA0B,CAAC;AAEjD,MAAM,oBACJ,KACA,IACA,kBAEC,aAAa,OAAO,MAAM,aAAa,OAAO,KAAA,KAAa,qBAAqB,KAAK,IAAI,aAAa,EAAE,OACvG,CAAC,MAAM,CAAC,aAAa,EAAE,KAAK,CAAC,MAAM,CAAC,aAAa,EAAE,KAAK,CAAC,aAAa,KAAK,CAAC,aAAa,MACzF,aAAa,OAAO,MACpB,aAAa,OAAO,KAAA,KACpB,kBAAkB,KAAK,IAAI,aAAa,EAAE;AAE9C,iBAAiB,cAAc,QAA0B,CAAC;AAE1D,MAAM,SACJ,KACA,IACA,iBACY,CAAC,IAAI,SAAiC,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC,KAAK;AAEzE,MAAM,cAAc,QAA0B,CAAC;AAE/C,MAAM,YACJ,KACA,IACA,iBACY,CAAC,CAAC,IAAI,SAAiC,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC,KAAK;AAE1E,SAAS,cAAc,QAA0B,CAAC;AAElD,MAAa,gBAAgB;CAC3B,aAAa;CACb,gBAAgB;CAChB,iBAAiB;CACjB;CACA;CACA;CACA;CACA;CACA;CACA,cAAc;CACd,uBAAuB;CACvB;CACA;CACA;CACA,gBAAgB;CAChB,yBAAyB;CACzB,eAAe;CACf;CACA;CACA;CACA;CACA;CACA,YAAY;AACd;ACzHA,MAAa,2BAA2B,cAAc;CACpD,gBAAgB;CAChB;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA,kBAAkB,uBAAuB;CACzC,qBAAqB,0BAA0B;CAC/C,iBAAiB,sBAAsB;CACvC,qBAAqB,0BAA0B;CAC/C,kBAAkB,uBAAuB;CACzC,WAAW;CACX;CACA,iBAAiB,sBAAsB;CACvC,cA9CA,kBAAkB,WAAW;EAC3B,YAAY;EACZ,iBAAiB,CAAC;EAClB,aAAa;EACb,SAAS;EACT,gBAAgB;EAChB,aAAa;EACb,aAAa;EACb,YAAY;EACZ,gBAAgB;EAChB,eAAe;EACf,YAAY;EACZ,cAAc;EACd,WAAW;EACX,UAAU;EACV,iBAAiB;EACjB,mBAAmB;EACnB,kBAAkB;EAClB,oBAAoB;EACpB,kBAAkB;EAClB,eAAe;EACf,qBAAqB;EACrB,GAAG;CACL,GAuBA;CACA,mBAAmB,wBAAwB;CAC3C;CACA;CACA;CACA;CACA;CACA;CACA,gBAAgB,qBAAqB;CACrC,SAAS;AACX,CAAC;;ACnFD,MAAa,cAAqC,MAA0B,UAC1EC,aAAY,MAAM,KAAK;AAEzB,SAAgB,wBAA4E;CAC1F,OAAO;EACL,WAAW,UAAU,WAAW;GAC9B,OAAO,OAAO,aAAa,aACvB;IACE,GAAG;IACH,YAAY;GACd,IACA;IACE,GAAG;IACH,aAAa;GACf;EACN;EACA,UAAU,WAAW;EACrB,QAAQ,WAAW;CACrB;AACF;AAEA,MAAa,aACX,OACA,aACA,WAAW,IACX,QAAQ,GACR,SACA,aAEAC,aAEE,OACA,kBACA,eACE,OAAO,OACL,CAAC,GACD,GAAG,qBAAqB,MAAM,QAAQ,OAAO,CAAC,CAAC,KAAK,SAAS,GAC1D,YAAY,GAAG,IAAI,GACtB,EAAE,CACJ,GACF,UACA,OACA,SACA,QACF;;ACrDF,MAAa,8BACX,iBACyB;CACzB,OAAO;EACL,OAAO,EAAE,MAAM,KAAK,gBAAgB,YAClC,oBAAC,+BAAD;GAAqC;GAAW;GAAqB;GAAuB;EAAQ,CAAA;EAEtG,GAAG,0BAA0B;GAC3B,QAAQ;GACR,IAAI;GACJ,MAAM;GACN;EACF,CAAC;CACH;AACF;;ACZA,MAAa,2BACX,iBACyB;CACzB,OAAO;EACL,OAAO,EAAE,KAAK,QAAQ,YACpB,oBAAC,4BAAD;GAAiC;GAAa;GAAwD;EAAQ,CAAA;EAEhH,MAAM;EACN,GAAG,0BAA0B;GAC3B,QAAQ;GACR,IAAI;GACJ,MAAM;GACN;EACF,CAAC;CACH;AACF;;ACZA,MAAa,6BACX,iBACyB;CACzB,MAAM,EACJ,eACA,iBACA,mBACA,sBACA,mBACA,OAAO,EAAE,eACP;CAEJ,MAAM,aACJ,yBAAyB,SACpB,EACC,OAAO,QACT,IACA,KAAA;CAEN,OAAO;EACL,OAAO,EAAE,MAAM,QAAQ,KAAK,gBAAgB,YAAY;GACtD,MAAM,oBAAoB;IAAE;IAAK;IAAgB;GAAM;GACvD,MAAM,gBAAgB,IAAI,SAAS;GACnC,IAAI,sBAAsB,YAAY,IAAI,kBACxC,OACE,qBAAC,OAAD;IACE,IAAI;KACF,YAAY;KACZ,eAAe;KACf,KAAK;IACP;IALF,UAAA;KAOE,oBAAC,kBAAD,EAAkB,GAAI,kBAAoB,CAAA;KAC1C,oBAAC,SAAD;MACE,GAAI,sBAAsB,OAAO;MACjC,OAAO,MAAM,UAAU,IAAI,gBAAgB,CAAC,EAAE,UAAU;MAExD,UAAA,oBAAC,QAAD,EAAA,UAAO,IAAI,cAAiC,CAAA;KACrC,CAAA;KACR,CAAC,CAAC,iBAAiB,qBAAC,QAAD,EAAA,UAAA;MAAM;MAAE;MAAc;KAAO,EAAA,CAAA;IAC5C;;QAGT,OACE,qBAAA,YAAA,EAAA,UAAA,CACE,oBAAC,kBAAD,EAAkB,GAAI,kBAAoB,CAAA,GACzC,OAAO,UAAU,cAAc;IAAE;IAAM;IAAQ;IAAK;GAAM,CAAC,CAC5D,EAAA,CAAA;EAGR;EACA,QAAQ,mBACH,EAAE,YAAY;GACb,OACE,qBAAA,YAAA,EAAA,UAAA,CACE,oBAAC,qBAAD,EAA4B,MAAQ,CAAA,GACnC,sBAAsB,YACrB,UAAU,KAAK,oBAAoB,MAAM,UAAU,eAAe,CAAC,EAAE,UAAU,MAAM,CAAC,EAAE,KAAK,IAAI,CACnG,EAAA,CAAA;EAEN,IACA,KAAA;EACJ,uBAAuB;EACvB,uBAAuB;EACvB,GAAG,0BAA0B;GAC3B,QAAQ;GACR,IAAI;GACJ,MACE,sBAAsB,WACjB,eAAe,QAAQ,MACxB,oBACE,kBACE,KACA,KACF;GACR;EACF,CAAC;CACH;AACF;;ACpFA,MAAa,8BACX,iBACyB;CACzB,MAAM,EAAE,cAAc,yBAAyB;CAC/C,MAAM,EACJ,YAAY,EAAE,WAAW,eACvB,aAAa;CAEjB,OAAO;EACL,OAAO,EAAE,KAAK,uBACV,yBAAyB,YAAY,kBAAkB,MAAM,YAAY,MAAM,aAAa,KAAK,IAAI,UACrG,KAAK;EACT,MAAM;EACN,cAAc,aAAa;EAC3B,GAAG,0BAA0B;GAC3B,QAAQ;GACR,IAAI;GACJ,MAAM;GACN;EACF,CAAC;CACH;AACF;;ACpBA,MAAa,8BACX,iBACyB;CACzB,OAAO;EACL,OAAO,EAAE,KAAK,YAAY,oBAAC,2BAAD;GAAgC;GAAY;EAAQ,CAAA;EAC9E,MAAM;EACN,GAAG,0BAA0B;GAC3B,QAAQ;GACR,IAAI;GACJ,MAAM;GACN;EACF,CAAC;CACH;AACF;;ACbA,MAAa,6BACX,iBACyB;CACzB,MAAM,EAAE,yBAAyB,oBAAoB;CAErD,OAAO;EACL,OAAO,EAAE,KAAK,gBAAgB,YAC5B,oBAAC,oBAAD;GAAyB;GAAqB;GAAuB;EAAQ,CAAA;EAE/E,MAAM;EACN,QACE,mBAAmB,2BAA2B,EAAE,YAAY,oBAAC,oBAAD,EAA2B,MAAQ,CAAA,IAAI,KAAA;EACrG,GAAG,0BAA0B;GAC3B,QAAQ;GACR,IAAI;GACJ,MAAM,kBAAkB,KAAK;GAC7B;EACF,CAAC;CACH;AACF;;ACcA,MAAa,oBAAoB;CAC/B,mBAAA;CACA,gBAAA;CACA,YAAA;CACA,iBAAA;CACA,kBAAA;CACA,cAAA;CACA,WAAA;CACA;CACA,kBAAA;CACA,mBAAA;CACA,kBAAA;CACA,gBAAA;CACA,iBAAA;CACA,UAAA;CACA,gBAAA;CACA,eAAA;CACA,gBAAA;CACA,mBAAA;CACA,eAAA;CACA,oBAAA;CACA,gBAAA;CACA,6BAAA;CACA,cAAA;CACA,eAAA;CACA,cAAA;CACA,aAAA;CACA,gBAAA;CACA,UAAA;CACA,YAAA;CACA,eAAA;CACA,UAAA;CACA,aAAA;CACA,gBAAA;CACA,mBAAA;AACF;;ACtEA,MAAa,sBAAwC;CACnD,UAAU;CACV,SAAS;CACT,KAAK;CACL,QAAQ;CACR,kBAAkB;CAClB,kBAAkB;CAClB,aAAa;CACb,aAAa;CACb,gBAAgB;CAChB,WAAW;CACX,aAAa;CACb,MAAM;CACN,UAAU;CACV,aAAa;CACb,eAAe;CACf,mBAAmB;CACnB,eAAe;CACf,MAAM;CACN,QAAQ;CACR,WAAW;CACX,mBAAmB;CACnB,sBAAsB;CACtB,uBAAuB;CACvB,eAAe;CACf,wBAAwB;CACxB,gBAAgB;CAChB,gBAAgB;CAChB,aAAa;CACb,gBAAgB;CAChB,cAAc;CACd,oBAAoB;CACpB,aAAa;CACb,mBAAmB;CACnB,4BAA4B;CAC5B,qBAAqB;CACrB,sBAAsB;CACtB,+BAA+B;CAC/B,gBAAgB;CAChB,yBAAyB;CACzB,YAAY;CACZ,gBAAgB;CAChB,iBAAiB;CACjB,kBAAkB;CAClB,kBAAkB;CAClB,mBAAmB;CACnB,eAAe;CACf,cAAc;CACd,cAAc;CACd,kBAAkB;CAClB,MAAM;CACN,eAAe;CACf,WAAW;CACX,SAAS;CACT,YAAY;CACZ,KAAK;CACL,KAAK;CACL,MAAM;CACN,oBAAoB;CACpB,gBAAgB;CAChB,IAAI;CACJ,IAAI;CACJ,KAAK;CACL,WAAW;CACX,YAAY;CACZ,iBAAiB;CACjB,YAAY;CACZ,YAAY;CACZ,WAAW;CACX,YAAY;CACZ,aAAa;CACb,MAAM;CACN,QAAQ;CACR,qCAAqC;CACrC,QAAQ;CACR,SAAS;CACT,gBAAgB;CAChB,iBAAiB;CACjB,iBAAiB;CACjB,gBAAgB;CAChB,iBAAiB;CACjB,kBAAkB;CAClB,mBAAmB;CACnB,oBAAoB;CACpB,QAAQ;CACR,eAAe;CACf,kBAAkB;CAClB,iBAAiB;CACjB,iBAAiB;CACjB,kBAAkB;CAClB,iBAAiB;CACjB,OAAO;CACP,UAAU;AACZ;;ACpFA,MAAa,oBAAoB;CAC/B,eAAe;CACf,SAAS;CACT,SAAS;CACT,MAAM;AACR;AAEA,MAAa,2BAA2B;CACtC,eAAe;CACf,mBAAmB;CACnB,qBAAqB;CACrB,sBAAsB;CACtB,oBAAoB;CACpB,sBAAsB;CACtB,eAAe;CACf,oBAAoB;CACpB,gBAAgB;CAChB,cAAc;CACd,gBAAgB;CAChB,eAAe;AACjB;AAEA,MAAa,uBAEqD,EAChE,gBACA,oBAAoB,OACpB,0BAA0B,aAC1B,uBACA,mBAAmB,YACnB,oBAAoB,SACpB,eACA,sBACA,kBAAkB,SAClB,0BAA0B,MAC1B,sBAAsB,MACtB,sBAAsB,MACtB,sBAAsB,MACtB,uBAAuB,OACvB,sBAAsB,OACtB,uBAAuB,OACvB,4BACA,sBAAsB,MACtB,kBAAkB,MAClB,iBACA,sBAAsB,OACtB,gCAAgC,MAChC,gBAAgB,MAChB,yBAAyB,MACzB,qBAAqB,MACrB,kCAAkC,MAClC,iBAAiB,OACjB,eAAe,MACf,0BAA0B,MAC1B,0BAA0B,MAC1B,kBAAkB,MAClB,mBAAmB,MACnB,mBAAmB,OACnB,qBAAqB,OACrB,yBACA,kBAAkB,MAClB,gBAAgB,MAChB,qBAAqB,OACrB,oBAAoB,MACpB,kBAAkB,MAClB,+BAA+B,MAC/B,mBAAmB,MACnB,WACA,OACA,KAAK,MAAM,GACX,YACA,cACA,iBACA,gBACA,kBACA,eACA,UACA,wBAAwB,WACxB,wBAAwB,SACxB,sBAAsB,OACtB,uBAAuB,SACvB,uBAAuB,SACvB,qBAAqB,UACrB,6BAA6B,OAC7B,0BAA0B,OAC1B,uBAAuB,UACvB,wBAAwB,UACxB,gBAAgB,QAChB,SACA,GAAG,WAC0B;CAC7B,MAAM,QAAQ,SAAS;CAEvB,QAAQ,eAAe;EAAE,GAAG;EAAmB,GAAG;CAAM,IAAI,CAAC,KAAK,CAAC;CACnE,eAAe,eACN;EACL,GAAG;EACH,GAAG;CACL,IACA,CAAC,YAAY,CACf;CACA,WAAW,cAAc,YAAY,UAAU,KAAK,GAAG,CAAC,UAAU,KAAK,CAAC;CAExE,CAAC,kBAAkB,gBAAgB;EAAE,GAAG;EAAoB,GAAG;CAAe,EAAE;CAChF,CAAC,aAAa,gBAAgB;EAAE,GAAG;EAAe,GAAG;CAAU,EAAE;CACjE,CAAC,WAAW,gBAAgB;EAAE,GAAG;EAAgB,GAAG;CAAQ,EAAE;CAC9D,gBAAgB,eAAe;EAAE,GAAG;EAAmB,GAAG;CAAc,IAAI,CAAC,aAAa,CAAC;CAC3F,uBAAuB,eACd;EACL,GAAG;EACH,GAAG;CACL,IACA,CAAC,oBAAoB,CACvB;CAEA,CAAC,CAAC,4BAA4B,4BAA4B,eAAe,CACvE,4BACA,uBACF,CAAC;CAED,IAAI,CAAC,uBACH,wBAAwB,MAAM,aAAa;CAG7C,aAAa,eAAe,uBAAuB,iBAAiB;CACpE,IAAI,eAAe,eAAe,2BAA2B,6BAC3D,aAAa;CAGf,IAAI,yBACF,qBAAqB;CAGvB,IAAI,qBAAqB,SAAS,qBAAqB,KAAA,GACrD,mBAAmB;CAGrB,IAAI,CAAC,KAAK,MAAM,QAAQ;EACtB,kBAAkB;EAClB,iBAAiB;EACjB,mBAAmB;EACnB,gBAAgB;CAClB;CAEA,OAAO;EACL;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,iBAAiB,KAAK,oBAAoB,KAAK,0BAA0B,OAAO,KAAA;EAChF,aAAa,QAAS,aAAa,MAAO,IAAI,UAAkC,KAAA;EAChF;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,GAAG;CACL;AACF;;AC5NA,MAAM,gBAAgB;CACpB,UAAU;CACV,IAAI;EACF,UAAU;EACV,GAAG;EACH,OAAO;CACT;AACF;AAEA,MAAa,6BACX,iBACyB;CACzB,OAAO;EACL,GAAG,0BAA0B;GAC3B,IAAI;GACJ,MAAM;GACN;EACF,CAAC;EACD,MAAM;EACN,GAAG;EACH,uBAAuB;EACvB,yBAAyB;EACzB,uBAAuB;CACzB;AACF;;ACtBA,MAAa,kBAA6C,UAA0C;CAClG,MAAM,EACJ,yBACA,SAAS,EAAE,kBAAkB,kBAAkB,eAC7C;CACJ,MAAM,EAAE,aAAa,SAAS,cAAc,cAAc,WAAW,YAAY,eAAe,YAC9F,MAAM;CAER,MAAM,mBAAmB,MAAM,QAAQ,QAAQ;CAC/C,MAAM,gBAAgB,YAAY,wBAAwB,CAAC,CAAC,KAAK;CAEjE,MAAM,GAAG,YAAY,kBAAkB,CAAC,IAAI,CAAC,CAAC;CAC9C,MAAM,oBAAoB,OAAe,IAAI;CAC7C,MAAM,cAAc,OAAe,IAAI;CAEvC,MAAM,eAAe,OAAO;EAAE;EAAa;EAAkB;EAAY;EAAO,cAAc,MAAM;CAAQ,CAAC;CAC7G,gBAAgB;EACd,aAAa,UAAU;GAAE;GAAa;GAAkB;GAAY;GAAO,cAAc,MAAM;EAAQ;CACzG,CAAC;CAED,gBAAgB;EACd,IAAI,OAAO,WAAW,aACpB,kBAAkB,UAAU,SAAS,KAAK,MAAM;CAEpD,GAAG,CAAC,CAAC;CAGL,gBAAgB;EACd,IAAI,OAAO,WAAW,aAAa;GACjC,IAAI,cAAc;IAChB,YAAY,UAAU,SAAS,KAAK,sBAAsB,CAAC,CAAC;IAC5D,SAAS,KAAK,MAAM,SAAS;GAC/B,OAAO;IACL,SAAS,KAAK,MAAM,SAAS,kBAAkB;IAC/C,IAAI,CAAC,YAAY,SACf;IAGF,OAAO,SAAS;KACd,UAAU;KACV,KAAK,KAAM,YAAY;IACzB,CAAC;GACH;EACF;CACF,GAAG,CAAC,YAAY,CAAC;CAGjB,gBAAgB;EACd,MAAM,EAAE,aAAa,OAAO,iBAAiB,aAAa;EAC1D,IAAI,qBAAqB,YAAY,QACnC,MAAM,eAAe,yBAAyB,YAAY,CAAC;CAE/D,GAAG,CAAC,gBAAgB,CAAC;CAGrB,gBAAgB;EACd,IAAI,CAAC,oBAAoB,aAAa,eACpC;EAEF,MAAM,EAAE,YAAY,UAAU,aAAa;EAC3C,MAAM,EAAE,WAAW,aAAa;EAChC,MAAM,aAAqB,gBAAgB,IAAI,KAAK,KAAK,gBAAgB,QAAQ,IAAI;EAGrF,IAF+B,YAAY,KAAK,aAAa,YAG3D,MAAM,aAAa,aAAa,CAAC;CAErC,GAAG;EAAC;EAAe;EAAkB;EAAW;CAAa,CAAC;CAG9D,MAAM,cAAc,OAAyB,OAAO;CACpD,gBAAgB;EACd,IAAI,QAAQ,QACV,YAAY,UAAU;CAE1B,GAAG,CAAC,OAAO,CAAC;CAEZ,gBAAgB;EACd,MAAM,EAAE,UAAU,aAAa;EAC/B,IAAI,CAAC,eAAe,KAAK,GACvB;EAEF,IAAI,cACF,MAAM,WAAW,CAAC,CAAC;OAEnB,MAAM,iBAAiB,YAAY,WAAW,CAAC,CAAC;CAEpD,GAAG,CAAC,YAAY,CAAC;CAGjB,gBAAgB;EACd,MAAM,EAAE,kBAAkB,UAAU,aAAa;EACjD,IAAI,oBAAoB,MAAM,oBAAoB,GAChD,iBAAiB;GACf,SAAS;EACX,GAAG,GAAG;CAEV,GAAG,CAAC,OAAO,CAAC;AACd;;;;;;;ACvDA,MAAa,wBACX,wBAC6B;CAC7B,MAAM,oBAAoB,OAAsB,IAAI;CACpD,MAAM,gBAAgB,OAA6B,IAAI;CACvD,MAAM,mBAAmB,OAAuB,IAAI;CACpD,MAAM,gBAAgB,OAAyC,CAAC,CAAC;CACjE,MAAM,kBAAkB,OAAyC,CAAC,CAAC;CACnE,MAAM,iBAAiB,OAAyB,IAAI;CACpD,MAAM,oBAAoB,OAAuB,IAAI;CACrD,MAAM,oBAAoB,OAA6C,CAAC,CAAC;CACzE,MAAM,gBAAgB,OAAuB,IAAI;CACjD,MAAM,gBAAgB,OAAuB,IAAI;CACjD,MAAM,eAAe,OAAgC,IAAI;CACzD,MAAM,iBAAiB,OAAgC,IAAI;CAG3D,MAAM,CAAC,gBAAgB,eAA+C;EACpE,MAAM,YAAY,oBAAoB,gBAAgB,CAAC;EACvD,UAAU,cACR,UAAU,eACV,yBAAyB;GACvB,GAAG;GACH,OAAO;IACL,GAAG,oBAAoB;IACvB,GAAG,oBAAoB;GACzB;EACF,CAAoC;EACtC,UAAU,iBAAiB,oBAAoB,kBAAkB;EACjE,OAAO;CACT,CAAC;CAED,oBAAoB,eAAe;CAEnC,MAAM,CAAC,YAAY,iBAAiB,SAAiC,aAAa,cAAc,IAAI;CACpG,MAAM,CAAC,aAAa,mBAAmB,SAAgC,aAAa,eAAe,IAAI;CACvG,MAAM,CAAC,iBAAiB,sBAAsB,eAC5C,OAAO,OACL,CAAC,GACD,GAAG,qBAAqB,oBAAoB,OAAiC,CAAC,CAAC,KAAK,SAAS,GAC1F,YAAY,GAAG,IACd,IAAI,oBAAoB,WACnB,IAAI,SAAS,QAAQ,WACrB,IAAI,YAAY,cAAc,kBAAkB,YAAY,GAAG,MAAM,yBAAyB,GAAG,EAC1G,EAAE,CACJ,CACF;CACA,MAAM,CAAC,aAAa,uBAAuB,SAA+B,aAAa,eAAe,CAAC,CAAC;CACxG,MAAM,CAAC,gBAAgB,0BAA0B,SAC/C,aAAa,kBAAmB,CAAC,CACnC;CACA,MAAM,CAAC,SAAS,cAAc,SAA2B,cAAc,WAAW,aAAa;CAC/F,MAAM,CAAC,gBAAgB,qBAAqB,SAAmC,aAAa,kBAAkB,IAAI;CAClH,MAAM,CAAC,aAAa,kBAAkB,SAAgC,aAAa,eAAe,IAAI;CACtG,MAAM,CAAC,aAAa,kBAAkB,SAAiC,aAAa,eAAe,IAAI;CACvG,MAAM,CAAC,YAAY,iBAAiB,SAAgC,aAAa,cAAc,IAAI;CACnG,MAAM,CAAC,gBAAgB,qBAAqB,SAA2B,aAAa,kBAAkB,OAAO;CAC7G,MAAM,CAAC,UAAU,oBAAoB,SAA4B,aAAa,YAAY,CAAC,CAAC;CAC5F,MAAM,CAAC,eAAe,oBAAoB,SACxC,aAAa,iBAAiB,IAChC;CACA,MAAM,CAAC,YAAY,iBAAiB,SAAyC,aAAa,cAAc,IAAI;CAC5G,MAAM,CAAC,cAAc,mBAAmB,SAAkB,cAAc,gBAAgB,KAAK;CAC7F,MAAM,CAAC,YAAY,sBAAsB,SACvC,cAAc,cAAc;EAAE,WAAW;EAAG,UAAU;CAAG,CAC3D;CACA,MAAM,CAAC,iBAAiB,sBAAsB,SAAkB,cAAc,mBAAmB,KAAK;CACtG,MAAM,CAAC,mBAAmB,wBAAwB,SAAkB,cAAc,qBAAqB,KAAK;CAC5G,MAAM,CAAC,kBAAkB,uBAAuB,SAAkB,cAAc,oBAAoB,KAAK;CACzG,MAAM,CAAC,qBAAqB,0BAA0B,SAAkB,cAAc,uBAAuB,KAAK;CAElH,oBAAoB,QAAQ;EAC1B;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,GAAG,oBAAoB;CACzB;CAGA,MAAM,uBAAuB;CAG7B,MAAM,gBAAgB,OAA4C,CAAC,CAAC;CACpE,qBAAqB,UACnB,qBAAqB,MAAM,eAAe,oBAC1C,qBAAqB,MAAM,kBAC3B,qBAAqB,MAAM,cACvB,cAAc,UACd,eAAe;EACb,YAAY;GACV,GAAI;IACF,qBAAqB,oBAAoB,KAAK,2BAA2B,oBAAoB;IAC7F,kBAAkB,oBAAoB,KAAK,wBAAwB,oBAAoB;IACvF,qBAAqB,oBAAoB,KAAK,2BAA2B,oBAAoB;IAC7F,oBAAoB,oBAAoB,KAAK,0BAA0B,oBAAoB;IAC3F,uBAAuB,oBAAoB,KAAK,0BAA0B,oBAAoB;IAC9F,qBAAqB,oBAAoB,KAAK,2BAA2B,oBAAoB;GAC/F,CAAC,CAAC,OAAO,OAAO;GAChB,GAAG,qBAAqB;GACxB,GAAI,CAAC,oBAAoB,oBAAoB,KAAK,0BAA0B,oBAAoB,CAAC,CAAC,CAAC,OACjG,OACF;EACF;EACA,cAAc;CAChB,CAAC;CACP,cAAc,UAAU,qBAAqB;CAG7C,qBAAqB,OAAO,eAEvB,qBAAqB,MAAM,aAAa,qBAAqB,MAAM,kBACpE,CAAC,qBAAqB,KAAK,SACvB,CAAC,GAAG,MAAM,KAAK,IAAI,qBAAqB,MAAM,WAAW,UAAU,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,UAClF,OAAO,OACL,CAAC,GACD,GAAG,qBAAqB,cAAc,OAAO,CAAC,CAAC,KAAK,SAAS,GAC1D,YAAY,GAAG,IAAI,KACtB,EAAE,CACJ,CACF,IACA,qBAAqB,MAC3B;EACE,qBAAqB;EACrB,qBAAqB,MAAM;EAC3B,qBAAqB,MAAM,WAAW;EACtC,qBAAqB,MAAM;CAC7B,CACF;CAEA,MAAM,CAAC,YAAY,eACjB,cAAc;EACZ,GAAG;EACH,gBAAgB;GACd,GAAG,yBAAyB;GAC5B,GAAG,qBAAqB;EAC1B;EACA,WAAW;GACT,GAAG,yBAAyB;GAC5B,GAAG,qBAAqB;EAC1B;EACA,SAAS;GACP,GAAG,yBAAyB;GAC5B,GAAG,qBAAqB;EAC1B;CACF,CAAC,CACH;CAEA,MAAM,eAAe;EACnB;EACA;EACA;EACA;EACA,GAAG;EACH;EACA,gBAAgB,kBAAkB;CACpC;CAEA,MAAM,aAAa,SAAS,YAAY;CAExC,MAAM,QAAQ,OAAO,OAAO,YAAY;EACtC,0BAA0B,WAAW,oBAAoB;EACzD,6BAA6B,WAAW,qBAAqB;EAC7D,2BAA2B,WAAW,kBAAkB;EACxD,MAAM;GACJ;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;EACF;EACA,eAAe,qBAAqB,sBAAsB;EAC1D,oBAAoB,qBAAqB,2BAA2B;EACpE,iBAAiB,QAAmD;GAClE,MAAM,UAAU,QAAQ,OAAO,UAAU,KAAK,IAAI;GAClD,MAAM,UAAU,sBAAsB,sBAAsB,OAAgC;GAC5F,IAAI,YAAY,KAAA,KAAa,YAAY,MACvC,gBAAgB,OAAgC;EAEpD;EACA,YAAY,qBAAqB,mBAAmB;EACpD,mBAAmB,qBAAqB,0BAA0B;EAClE,gBAAgB,qBAAqB,uBAAuB;EAC5D,gBAAgB,qBAAqB,uBAAuB;EAC5D,eAAe,qBAAqB,sBAAsB;EAC1D,mBAAmB,qBAAqB,0BAA0B;EAClE,kBAAkB,qBAAqB,yBAAyB;EAChE,eAAe,qBAAqB,sBAAsB;EAC1D,iBAAiB,qBAAqB,wBAAwB;EAC9D,oBAAoB,qBAAqB,2BAA2B;EACpE,sBAAsB,qBAAqB,6BAA6B;EACxE,qBAAqB,qBAAqB,4BAA4B;EACtE,wBAAwB,qBAAqB,+BAA+B;CAC9E,CAAC;CAED,eAAe,KAAK;CAEpB,OAAO;AACT;;AC1QA,MAAa,yBACX,iBAC6B,qBAAqB,oBAAoB,YAAY,CAAC;;ACIrF,MAAa,yBAAoD,EAC/D,cACA,OACA,GAAG,WACiD;CACpD,MAAM,EACJ,SAAS,EAAE,6BACT;CACJ,MAAM,EAAE,UAAU,qBAAqB,MAAM;CAE7C,MAAM,sBAAsB;EAC1B,GAAG,sBAAsB,wBAAwB;GAC/C;GACA;EACF,CAAC;EACD,GAAG;CACL;CAEA,OACE,oBAAC,UAAD;EACE,IAAI,qBAAqB,UAAU,oBAAoB;EACvD,cAAA;EACA,IAAI;GACF,QAAQ,eAAe,IAAI,KAAA;GAC3B,UAAU;GACV,KAAK,CAAC,eAAe,IAAI,KAAA;GACzB,OAAO;EACT;EACA,eAAA;EAEA,UAAA,oBAAC,gBAAD;GAAgB,aAAU;GAAO,cAAW;GAAU,IAAI,EAAE,UAAU,WAAW;GAAG,GAAI;EAAsB,CAAA;CACtG,CAAA;AAEd;;ACvBA,MAAM,qBAAqB;CAAC;CAAG;CAAI;CAAI;CAAI;CAAI;CAAI;CAAI;AAAG;AAc1D,MAAa,uBAAkD,EAC7D,WAAW,UACX,OACA,GAAG,WAC+C;CAClD,MAAM,QAAQ,SAAS;CACvB,MAAM,WAAW,cAAc,oBAAoB;CAEnD,MAAM,EACJ,SAAS,EACP,8BACA,OAAO,EAAE,iBAAiB,kBAAkB,eAAe,gBAC3D,IACA,cACA,oBACA,4BAEA;CACJ,MAAM,EACJ,YAAY,EAAE,YAAY,GAAG,WAAW,SACtC,MAAM;CAEV,MAAM,kBAAkB;EACtB,GAAG,sBAAsB,oBAAoB,EAC3C,MACF,CAAC;EACD,GAAG;CACL;CAEA,MAAM,gBAAgB,MAAM,YAAY;CACxC,MAAM,gBAAgB,MAAM,aAAa;CACzC,MAAM,2BAA2B,gBAAgB;CACjD,MAAM,gBAAgB,YAAY;CAClC,MAAM,eAAe,KAAK,IAAI,YAAY,WAAW,UAAU,aAAa;CAE5E,MAAM,EACJ,WAAW,OACX,qBAAqB,oBACrB,cAAc,CAAC,GACf,kBAAkB,0BAClB,iBAAiB,0BACjB,kBAAkB,MAClB,GAAG,wBACD,mBAAmB,CAAC;CAExB,MAAM,cAAc,aAAa,KAAK;CACtC,MAAM,cAAc,gBAAgB,iBAAiB;CAErD,IAAI,YAAY,aAAa,WAAW,OACtC,YAAY,SAAS;CAGvB,MAAM,eAAe,sBAAsB;CAE3C,OACE,qBAAC,KAAD;EACE,WAAU;EACV,IAAI;GACF,YAAY;GACZ,SAAS;GACT,UAAU;GACV,KAAK;GACL,gBAAgB;IAAE,IAAI;IAAiB,IAAI;GAAS;GACpD,aAAa;GACb,IAAI,aAAa,SAAS,+BAA+B,SAAS,KAAA;GAClE,UAAU;GACV,IAAI;GACJ,IAAI;GACJ,QAAQ;EACV;EAdF,UAAA,CAgBG,mBACC,qBAAC,KAAD;GAAK,IAAI;IAAE,YAAY;IAAU,SAAS;IAAQ,KAAK;GAAM;GAA7D,UAAA,CACE,oBAAC,YAAD;IAAY,SAAS,qBAAqB;IAAM,IAAI,EAAE,IAAI,EAAE;IACzD,UAAA,aAAa;GACJ,CAAA,GACZ,oBAAC,QAAD;IACY;IACV,kBAAA;IACA,YAAY;KACV,cAAc,aAAa;KAC3B,IAAI,qBAAqB;IAC3B;IACA,OAAO,aAAa;IACpB,WAAW,EAAE,mBAAmB,KAAK;IACrC,WAAW,UAAU,MAAM,YAAY,OAAO,MAAM,OAAO,KAAK,CAAC;IACjE,IAAI,EAAE,IAAI,EAAE;IACZ,OAAO;IACP,SAAQ;IACR,GAAI;IAEH,UAAA,mBAAmB,KAAK,WAAW;KAClC,MAAM,QAAQ,OAAO,WAAW,WAAW,OAAO,QAAQ;KAC1D,MAAM,QAAQ,OAAO,WAAW,WAAW,OAAO,QAAQ,GAAG;KAC7D,OACE,aAAa,aACZ,aAAa,SACZ,oBAAC,UAAD;MAA2B;MACxB,UAAA;KACK,GAFK,KAEL,IAER,oBAAC,UAAD;MAAsB,IAAI,EAAE,GAAG,EAAE;MAAU;MACxC,UAAA;KACO,GAFK,KAEL;IAGhB,CAAC;GACK,CAAA,CACL;EAEN,CAAA,GAAA,0BAA0B,UACzB,oBAAC,YAAD;GACE,OAAO;GACG;GACV,WAAW,IAAI,iBAAiB,MAAM,aAAa,eAAe,CAAC;GACnE,MAAM,YAAY;GAClB,aAAa,SACX,oBAAC,gBAAD;IACE,OAAO;KACL,OAAO;KACP,MAAM;KACN,MAAM;KACN,UAAU;IACZ;IACA,GAAI;GACL,CAAA;GAEc;GACD;GAChB,GAAI;EACL,CAAA,IACC,0BAA0B,YAC5B,qBAAA,YAAA,EAAA,UAAA,CACE,oBAAC,YAAD;GAAY,OAAM;GAAS,WAAU;GAAO,IAAI;IAAE,GAAG;IAAS,UAAU;GAAM;GAAG,SAAQ;GAAS,UAAA,GAChG,iBAAiB,IAAI,KAAK,gBAAgB,EAAA,CAAG,eAAe,aAAa,QAAQ,EAClF,GAAG,aAAa,eAAe,aAAa,QAAQ,EAAE,GACrD,aAAa,GACd,GAAG,cAAc,eAAe,aAAa,QAAQ;EAAgB,CAAA,GACtE,qBAAC,KAAD;GACE,IAAI,EACF,KAAK,KACP;GAHF,UAAA;IAKG,mBACC,oBAAC,SAAD;KAAS,GAAI;KAAc,OAAO,aAAa;KAC7C,UAAA,oBAAC,QAAD,EAAA,UACE,oBAAC,YAAD;MACE,cAAY,aAAa;MACzB,UAAU;MACV,eAAe,MAAM,UAAU;MAC/B,MAAK;MAEL,UAAA,oBAAC,eAAD,EAAe,GAAI,eAAe,KAAK,EAAI,CAAA;KACjC,CAAA,EACR,CAAA;IACC,CAAA;IAEX,oBAAC,SAAD;KAAS,GAAI;KAAc,OAAO,aAAa;KAC7C,UAAA,oBAAC,QAAD,EAAA,UACE,oBAAC,YAAD;MACE,cAAY,aAAa;MACzB,UAAU;MACV,eAAe,MAAM,aAAa;MAClC,MAAK;MAEL,UAAA,oBAAC,iBAAD,EAAiB,GAAI,eAAe,KAAK,EAAI,CAAA;KACnC,CAAA,EACR,CAAA;IACC,CAAA;IACT,oBAAC,SAAD;KAAS,GAAI;KAAc,OAAO,aAAa;KAC7C,UAAA,oBAAC,QAAD,EAAA,UACE,oBAAC,YAAD;MACE,cAAY,aAAa;MACzB,UAAU;MACV,eAAe,MAAM,SAAS;MAC9B,MAAK;MAEL,UAAA,oBAAC,kBAAD,EAAkB,GAAI,eAAe,KAAK,EAAI,CAAA;KACpC,CAAA,EACR,CAAA;IACC,CAAA;IACR,kBACC,oBAAC,SAAD;KAAS,GAAI;KAAc,OAAO,aAAa;KAC7C,UAAA,oBAAC,QAAD,EAAA,UACE,oBAAC,YAAD;MACE,cAAY,aAAa;MACzB,UAAU;MACV,eAAe,MAAM,SAAS;MAC9B,MAAK;MAEL,UAAA,oBAAC,cAAD,EAAc,GAAI,eAAe,KAAK,EAAI,CAAA;KAChC,CAAA,EACR,CAAA;IACC,CAAA;GAER;EACL,CAAA,CAAA,EAAA,CAAA,IACA,IACD;;AAET;;AC/NA,MAAa,uBAAkD,EAC7D,OACA,GAAG,WAC+C;CAClD,MAAM,EACJ,SAAS,EAAE,gBAAgB,gBAC3B,kBACA,2BACE;CAEJ,MAAM,EAAE,gBAAgB,UAAU,eAAe,wBAAwB,MAAM;CAE/E,MAAM,mBAAmB,WAAsC;EAC7D,iBAAiB,EAAE,IAAI,YAAY,CAAC;CACtC;CAEA,MAAM,kBAAkB,MAAiB;EACvC,EAAE,eAAe;CACnB;CAEA,MAAM,kCAAkC,MAAM,QAAQ,OAAO,wBAAwB,KAAA;CACrF,MAAM,4BAA4B,OAAO,sBAAsB;CAE/D,gBAAgB;EACd,0BAA0B,UAAU;CACtC,CAAC;CAED,gBAAgB;EACd,IAAI,iCACF,0BAA0B,QACxB,CAAC,CAAC,kBACA,CAAC,CAAC,kBACF,eAAe,UAAU,mBAAmB,SAC5C,CAAC,SAAS,SAAS,eAAe,EAAE,CACxC;CAEJ,GAAG;EAAC;EAAgB;EAAgB;EAAU;CAA+B,CAAC;CAE9E,OACE,oBAAC,MAAD;EAAM,IAAI;EACR,UAAA,oBAAC,KAAD;GACE,WAAU;GACV,aAAa;GACb,YAAY;GACZ,GAAI;GACJ,KAAK,WAAW;IACd,YAAY;IACZ,gBAAgB;IAChB,iBAAiB,MAAM,MAAM,QAAQ,KAAK,MAAM,eAAe,OAAO,cAAc,KAAM,EAAG;IAC7F,QAAQ,UAAU,MAAM,QAAQ,KAAK,KAAK;IAC1C,WAAW;IACX,SAAS;IACT,QAAQ;IACR,gBAAgB;IAChB,UAAU;IACV,OAAO;IACP,QAAQ;IACR,GAAI,sBAAsB,MAAM,IAAI,KAAK;GAC3C;GAEA,UAAA,oBAAC,YAAD;IACE,IAAI,EACF,WAAW,SACb;IAEC,UAAA,aAAa,cAAc,QAAQ,YAAY,gBAAgB,WAAW,UAAU,EAAE;GAC7E,CAAA;EACT,CAAA;CACD,CAAA;AAEV;;AClEA,MAAa,qBAAgD,EAC3D,OACA,GAAG,WAC6C;CAChD,MAAM,EACJ,SAAS,EACP,kBACA,uBACA,oBACA,4BACA,yBACA,oCAEF,MAAM,EAAE,uBACN;CACJ,MAAM,EAAE,iBAAiB,MAAM;CAE/B,MAAM,WAAW,cAAc,mBAAmB;CAElD,MAAM,eAAe;EACnB,GAAG,sBAAsB,uBAAuB,EAAE,MAAM,CAAC;EACzD,GAAG;CACL;CAEA,MAAM,mBAAmB,YAAY,CAAC,CAAC;CAEvC,OACE,qBAAC,KAAD;EACE,GAAI;EACJ,MAAM,SAAyB;GAC7B,IAAI,MAAM;IACR,iBAAiB,UAAU;IAC3B,IAAI,cAAc,OAAO,OAAO,aAAa,QAAQ,UACnD,aAAa,IAAI,UAAU;GAE/B;EACF;EACA,KAAK,WAAW;GACd,GAAG,uBAAuB;IAAE;IAAO;GAAM,CAAC;GAC1C,QAAQ,eAAe,MAAM,KAAA;GAC7B,WAAW,kBAAkB,MAAM,MAAM,QAAQ,KAAK,MAAM,EAAG,EAAE;GACjE,MAAM;GACN,UAAU,eAAe,UAAU;GACnC,OAAO;GACP,GAAI,sBAAsB,cAAc,IAAI,KAAK;EACnD;EAlBF,UAAA;GAoBE,oBAAC,uBAAD;IAAuB,cAAc;IAAc;GAAQ,CAAA;GAC1D,+BAA+B,YAC9B,oBAAC,wBAAD;IAA0C;IAAyB;GAAQ,CAAA;GAE5E,CAAC,QAAQ,QAAQ,CAAC,CAAC,SAAS,2BAA2B,EAAE,KAAK,oBAAC,qBAAD,EAA4B,MAAQ,CAAA;GACnG,qBAAC,KAAD;IACE,IAAI;KACF,YAAY;KACZ,WAAW;KACX,SAAS;KACT,gBAAgB;KAChB,GAAG;KACH,OAAO;IACT;IARF,UAAA,CAUG,mCAAmC,iCAAiC,EAAE,MAAM,CAAC,IAAI,oBAAC,QAAD,CAAO,CAAA,GACzF,oBAAC,KAAD;KACE,IAAI;MACF,SAAS;MACT,gBAAgB;MAChB,UAAU,mBAAmB,aAAa;MAC1C,OAAO;MACP,KAAK;KACP;KAEC,UAAA,oBAAoB,CAAC,QAAQ,QAAQ,CAAC,CAAC,SAAS,sBAAsB,EAAE,KACvE,oBAAC,qBAAD;MAAqB,UAAS;MAAgB;KAAQ,CAAA;IAErD,CAAA,CACF;;EACF;;AAET;;AC/EA,MAAa,8BAAyD,EACpE,OACA,GAAG,WACsD;CACzD,MAAM,EACJ,SAAS,EACP,yBACA,qBACA,sBACA,qBACA,qBACA,eACA,wBACA,oBACA,cACA,cACA,mCAEA;CAEJ,OACE,oBAAC,KAAD;EACE,GAAI;EACJ,KAAK,WAAW;GACd,YAAY;GACZ,SAAS;GACT,QAAQ;GACR,GAAI,sBAAsB,MAAM,IAAI,KAAK;EAC3C;EAEC,UAAA,+BAA+B,EAC9B,MACF,CAAC,KACC,qBAAA,YAAA,EAAA,UAAA;GACG,iBAAiB,sBAAsB,CAAC,cAAc,oBACrD,oBAAC,8BAAD,EAAqC,MAAQ,CAAA;GAE9C,iBAAiB,uBAAuB,4BAA4B,aACnE,oBAAC,yBAAD,EAAgC,MAAQ,CAAA;IAExC,gBAAgB,wBAAwB,wBAAwB,oBAAC,2BAAD,EAAkC,MAAQ,CAAA;GAC3G,uBAAuB,oBAAC,8BAAD,EAAqC,MAAQ,CAAA;GACpE,0BAA0B,oBAAC,4BAAD,EAAmC,MAAQ,CAAA;EACtE,EAAA,CAAA;CAED,CAAA;AAET;;AC7CA,MAAa,kBAA6C,EAAE,YAAqD;CAC/G,MAAM,EACJ,SAAS,EACP,oBACA,kBACA,8BACA,oBACA,sBACA,oBACA,4BACA,yBACA,iCAEF,MAAM,EAAE,oBACN;CAEJ,MAAM,EAAE,cAAc,qBAAqB,MAAM;CAEjD,MAAM,WAAW,cAAc,mBAAmB;CAClD,MAAM,WAAW,cAAc,oBAAoB;CAEnD,MAAM,eAAe,sBAAsB,oBAAoB,EAAE,MAAM,CAAC;CAExE,MAAM,mBAAmB,YAAY,CAAC,CAAC,iCAAkC,oBAAoB;CAE7F,MAAM,oBAAoB;EACxB,IAAI,CAAC,WACD,EACE,QAAQ,EACV,IACA,KAAA;EACJ;CACF;CAEA,OACE,qBAAC,KAAD;EACE,GAAI;EACJ,MAAM,QAAwB;GAC5B,cAAc,UAAU;GACxB,IAAI,cAAc,OAAO,OAAO,aAAa,QAAQ,UACnD,aAAa,IAAI,UAAU;EAE/B;EACA,KAAK,WAAW;GACd,GAAG,uBAAuB;IAAE;IAAO;GAAM,CAAC;GAC1C,UAAU,eAAe,WAAW;GACpC,KAAK,eAAe,MAAM,KAAA;GAC1B,GAAI,sBAAsB,cAAc,IAAI,KAAK;EACnD;EAbF,UAAA;GAeG,+BAA+B,SAC9B,oBAAC,wBAAD;IAA0C;IAAyB;GAAQ,CAAA;GAE5E,CAAC,QAAQ,KAAK,CAAC,CAAC,SAAS,2BAA2B,EAAE,KAAK,oBAAC,qBAAD,EAA4B,MAAQ,CAAA;GAChG,qBAAC,KAAD;IACE,IAAI;KACF,YAAY;KACZ,WAAW;KACX,SAAS;KACT,KAAK;KACL,gBAAgB;KAChB,GAAG;KACH,UAAU,mBAAmB,aAAa;KAC1C,OAAO;KACP,KAAK;KACL,OAAO;IACT;IAZF,UAAA;KAcG,sBAAsB,yBAAyB,UAAU,oBAAC,2BAAD,EAA2B,GAAI,kBAAoB,CAAA;KAC5G,gCAAgC,EAAE,MAAM,CAAC,KAAK,oBAAC,QAAD,CAAO,CAAA;KACrD,+BACC,qBAAC,KAAD;MACE,IAAI;OACF,YAAY;OACZ,SAAS;OACT,UAAU;OACV,KAAK;OACL,gBAAgB;MAClB;MAPF,UAAA,CASG,sBAAsB,yBAAyB,WAC9C,oBAAC,2BAAD,EAA2B,GAAI,kBAAoB,CAAA,GAErD,oBAAC,4BAAD,EAAmC,MAAQ,CAAA,CACxC;KAEL,CAAA,IAAA,sBAAsB,yBAAyB,WAAW,oBAAC,2BAAD,EAA2B,GAAI,kBAAoB,CAAA;IAE5G;;GACJ,oBAAoB,CAAC,QAAQ,KAAK,CAAC,CAAC,SAAS,sBAAsB,EAAE,KACpE,oBAAC,qBAAD;IAAqB,UAAS;IAAa;GAAQ,CAAA;GAErD,oBAAC,uBAAD;IAAuB,cAAA;IAAoB;GAAQ,CAAA;EAChD;;AAET;;ACrGA,MAAa,sBAAiD,EAC5D,OACA,GAAG,WACsD;CACzD,MAAM,EACJ,SAAS,EACP,iBACA,mBACA,eACA,OAAO,EAAE,aAAa,YACtB,cACA,UAAU,EAAE,uBACZ,6BAEF,MAAM,EAAE,oBACN;CACJ,MAAM,EAAE,YAAY,YAAY,MAAM;CACtC,MAAM,OAAO;CACb,MAAM,EAAE,QAAQ;CAChB,MAAM,EAAE,WAAW;CACnB,MAAM,EAAE,cAAc;CAEtB,MAAM,eAAe,UAA6C;EAChE,OAAO,kBAAkB;EACzB,MAAM,cAAc,IAAI;EACxB,cAAc,UAAU;CAC1B;CAEA,MAAM,oBAAoB,EACvB,sBAAsB,mBAAmB,IAAI,MAAM,kBAClD,sBAAsB,UAAU,mBAAmB,IAAI,MAAM,mBAC7D,oBAAC,oBAAD;EACE,MAAM,oBAAC,aAAD,CAAc,CAAA;EAEpB,OAAO,aAAa;EACpB,UAAU,UAAU;GAClB,MAAM,gBAAgB;GACtB,UAAU,UAAU,UAAU,KAAK,SAAS,CAAW;GACvD,YAAY;EACd;EACO;CACR,GARM,UAQN,GAEH,sBAAsB,eAAe,GAAG,KAAK,oBAAoB,UAC/D,oBAAC,oBAAD;EACE,MAAM,oBAAC,UAAD,CAAW,CAAA;EAEjB,OAAO,aAAa;EACpB,eAAe;GACb,gBAAgB;IAAE;IAAM;GAAM,CAAC;GAC/B,YAAY;EACd;EACO;CACR,GAPM,UAON,CAEL,CAAC,CAAC,OAAO,OAAO;CAEhB,MAAM,oBAAoB;EACxB;EACA,WAAW;EACX;EACA;EACA;EACA;CACF;CAEA,MAAM,YACJ,UAAU,4BAA4B,iBAAiB,KAAK,4BAA4B,iBAAiB;CAE3G,QACG,CAAC,CAAC,WAAW,UAAU,CAAC,CAAC,mBAAmB,WAC3C,oBAAC,MAAD;EACE,UAAU,cAAc;EACxB,mBAAA;EACA,UAAU,UAAU,MAAM,gBAAgB;EAC1C,SAAS;EACT,MAAM,CAAC,CAAC;EACR,WAAW,EACT,MAAM;GACJ,OAAO,YAAY;GACnB,IAAI,EACF,iBAAiB,oBACnB;EACF,EACF;EACA,iBAAiB;GAAE,YAAY;GAAM,UAAU;EAAE;EACjD,GAAI;EAEH,UAAA,aAAa;CACV,CAAA;AAGZ;;AC3FA,MAAa,oBAA+C,EAC1D,MACA,OACA,GAAG,WAC4C;CAC/C,MAAM,EACJ,SAAS,EACP,cACA,wBACA,uBACA,qBACA,oBACA,8BACA,8BAEF,gBACA,kBACE;CACJ,MAAM,EAAE,aAAa,eAAe,MAAM;CAC1C,MAAM,MAAO,eAAe;CAE5B,MAAM,cAAc;EAClB,GAAG,sBAAsB,uBAAuB;GAAE;GAAK;EAAM,CAAC;EAC9D,GAAI,eAAe,sBAAsB,wBAAwB;GAAE;GAAK;EAAM,CAAC;EAC/E,GAAG;CACL;CAEA,MAAM,yBAAyB,IAC5B,YAAY,CAAC,CACb,QAAQ,SAAS,KAAK,OAAO,UAAU,kBAAkB,MAAM,CAAC,CAChE,KAAK,SAAS,oBAAC,uBAAD;EAA6B;EAA2B;CAAQ,GAAxB,KAAK,EAAmB,CAAC;CAElF,OACE,oBAAC,QAAD;EACE,WAAA;EACA,UAAS;EACT,UAAU,OAAO,WAAW;GAC1B,IAAI,aAAa;IACf,sBAAsB;KAAE;KAAK;IAAM,CAAC;IACpC,eAAe,IAAI;GACrB,OAAO;IACL,qBAAqB;KAAE;KAAK;IAAM,CAAC;IACnC,cAAc,IAAI;GACpB;GACA,IAAI,eAAe,CAAC;GACpB,YAAY,UAAU,OAAO,MAAM;EACrC;EACM;EACN,GAAI;EAED,WAAA,eACD,+BAA+B;GAC7B;GACA;GACA;EACF,CAAC,KACD,6BAA6B;GAC3B;GACA;GACA;EACF,CAAC,MACD,qBAAA,YAAA,EAAA,UAAA;GACE,oBAAC,aAAD;IAAa,IAAI,EAAE,WAAW,SAAS;IAAI,UAAA,aAAa;GAAkB,CAAA;GAC1E,oBAAC,eAAD,EAAA,UACE,oBAAC,QAAD;IAAM,WAAW,MAAM,EAAE,eAAe;IACtC,UAAA,oBAAC,OAAD;KACE,IAAI;MACF,KAAK;MACL,YAAY;MACZ,OAAO;KACT;KAEC,UAAA;IACI,CAAA;GACH,CAAA,EACO,CAAA;GACf,oBAAC,eAAD;IAAe,IAAI,EAAE,GAAG,UAAU;IAChC,UAAA,oBAAC,uBAAD;KAA4B;KAAY;KAAO,SAAQ;IAAQ,CAAA;GAClD,CAAA;EACf,EAAA,CAAA;CAEE,CAAA;AAEZ;;ACxFA,MAAa,4BAKX,UACoE;CACpE,MAAM,EACJ,SAAS,EACP,8BACA,0BACA,qBACA,8BAEF,MAAM,EAAE,wBACN;CACJ,MAAM,EAAE,mBAAmB,MAAM;CAEjC,MAAM,yBAAyB,6BAC3B,sBAAsB,0BAA0B,EAC9C,MACF,CAAC,IACD,KAAA;CAEJ,MAAM,iBAAiB,MAAM,sBAAsB;CAEnD,MAAM,CAAC,mBAAmB,sBAAsB,cAE5C,sBACI,CACE,eAAe,QAAQ,MAAM,EAAE,YAAY,MAAM,OAAO,CAAC,CAAC,KAAK,MAAM,EAAE,eAAe,CAAC,GACvF,eACG,QAAQ,MAAM,EAAE,YAAY,MAAM,KAAK,CAAC,CACxC,KAAK,WAAW,eAAe,SAAS,OAAO,eAAe,IAAI,CAAC,CAAC,CACpE,MAAM,GAAG,MAAM,IAAI,CAAC,CACzB,IACA,CAAC,CAAC,GAAG,CAAC,CAAC,GACb,CAAC,qBAAqB,cAAc,CACtC;CAEA,MAAM,gBAAgB,kBAAkB;CACxC,MAAM,iBAAiB,mBAAmB;CAE1C,MAAM,sBAAsB,cACnB,gBAAgB,KAAK,eAAe,WAAW,MAAM,EAAE,OAAO,gBAAgB,EAAE,IAAI,KAAA,GAC3F,CAAC,gBAAgB,IAAI,cAAc,CACrC;CAEA,MAAM,oBAAoB,eAAe;EACvC,OAAO,eAAe;EACtB,SAAS,CAAC,CAAC;EACX,eAAe,UAAU,eAAe,MAAM,CAAC,QAAQ;EACvD,wBAAwB,kBAAkB;EAC1C,YAAY;EACZ,UAAU;EACV,gBAAgB,aACb,UAAiB;GAChB,MAAM,aAAa,yBAAyB,OAAO,mBAAmB;GACtE,IAAI,CAAC,iBAAiB,CAAC,gBACrB,OAAO;GAET,OAAO,CAAC,mBAAG,IAAI,IAAI;IAAC,GAAG;IAAmB,GAAG;IAAY,GAAG;GAAkB,CAAC,CAAC;EAClF,GACA;GAAC;GAAmB;GAAoB;GAAqB;GAAe;EAAc,CAC5F;EACA,GAAG;CACL,CAAC;CAED,IAAI,CAAC,4BACH;CAGF,MAAM,iBAAiB,kBAAkB,gBAAgB;CACzD,kBAAkB,iBAAiB;CACnC,MAAM,aAAa,eAAe;CAElC,IAAI,YAAY;EACd,MAAM,YAAY,kBAAkB,aAAa;EAEjD,MAAM,qBAAqB,eAAe,cAAc,EAAE,SAAS;EACnE,MAAM,mBAAmB,eAAe,kBAAkB,SAAS,EAAE,EAAE,OAAO;EAE9E,MAAM,sBAAsB,eAAe,aAAa,eAAe,EAAE,SAAS;EAClF,MAAM,oBAAoB,eAAe,aAAa,iBAAiB,EAAE,EAAE,OAAO;EAElF,kBAAkB,qBAAqB,qBAAqB;EAE5D,kBAAkB,sBAChB,YAAY,qBAAqB,iBAAiB,YAAY,sBAAsB;CACxF;CAEA,IAAI,8BAEF,6BAA6B,UAAU;CAGzC,OAAO;AACT;;ACzFA,MAAa,aAAwC,EAAE,OAAO,GAAG,WAA+C;CAC9G,MAAM,EACJ,gBACA,SAAS,EACP,oBACA,mBACA,iBACA,YACA,UACA,eACA,oBAEA;CACJ,MAAM,EAAE,gBAAgB,iBAAiB,MAAM;CAE/C,MAAM,aAAa;EACjB,GAAG,sBAAsB,eAAe,EAAE,MAAM,CAAC;EACjD,GAAG;CACL;CAEA,MAAM,UAAU,sBAAsB,eAAe,EAAE,MAAM,CAAC;CAE9D,MAAM,UAAU,eAAe;CAC/B,MAAM,iBAA4C,CAAC;CACnD,KAAK,IAAI,IAAI,GAAG,IAAI,QAAQ,QAAQ,KAAK;EACvC,MAAM,SAAS,QAAQ;EACvB,MAAM,UAAU,OAAO,QAAQ;EAC/B,eAAe,YAAY,cAAc,OAAO,EAAE,EAAE,UAAU;EAC9D,eAAe,SAAS,cAAc,OAAO,OAAO,EAAE,EAAE,UAAU;CACpE;CAIA,MAAM,wBAAwB;EAC5B,mBAHwB,yBAAyB,KAGjC;EAChB;CACF;CAEA,OACE,qBAAC,OAAD;EACE,cAAc,sBAAsB;EACpC,GAAI;EACJ,OAAO;GAAE,GAAG;GAAgB,GAAG,YAAY;EAAM;EACjD,KAAK,WAAW;GACd,gBAAgB;GAChB,SAAS,YAAY,WAAW,MAAM,IAAI,SAAS,KAAA;GACnD,UAAU;GACV,GAAI,sBAAsB,YAAY,IAAI,KAAK;EACjD;EATF,UAAA;GAWG,CAAC,CAAC,WAAW,oBAAC,WAAD,EAAA,UAAU,QAAiB,CAAA;GACxC,mBAAmB,oBAAC,eAAD,EAAe,GAAI,sBAAwB,CAAA;GAC9D,aAAa,gBAAgB,eAAe,mBAC3C,oBAAC,oBAAD,EAAoB,GAAI,sBAAwB,CAAA,IAEhD,oBAAC,eAAD,EAAe,GAAI,sBAAwB,CAAA;GAE5C,qBAAqB,oBAAC,iBAAD,EAAiB,GAAI,sBAAwB,CAAA;EAC9D;;AAEX;;ACjEA,MAAa,2BAAsD,EACjE,OACA,GAAG,WACmD;CACtD,MAAM,EACJ,SAAS,EACP,IACA,cACA,UAAU,EAAE,uBACZ,+BAEA;CAEJ,MAAM,wBAAwB;EAC5B,GAAG,sBAAsB,0BAA0B,EAAE,MAAM,CAAC;EAC5D,GAAG;CACL;CAEA,OACE,oBAAC,KAAD;EACE,IAAI;GACF,YAAY;GACZ,iBAAiB,MAAM,qBAAqB,EAAG;GAC/C,QAAQ;GACR,SAAS;GACT,gBAAgB;GAChB,MAAM;GACN,WAAW;GACX,UAAU;GACV,OAAO;GACP,KAAK;GACL,OAAO;GACP,QAAQ;EACV;EAEC,UAAA,uBAAuB,aACtB,oBAAC,kBAAD;GACE,cAAY,aAAa;GACzB,IAAI,gBAAgB;GACpB,GAAI;EACL,CAAA;CAEA,CAAA;AAET;;AC3CA,MAAM,4BAA4B,OAAO,WAAW,cAAc,kBAAkB;AAMpF,MAAa,sBAAiD,EAC5D,OACA,GAAG,WAC8C;CACjD,MAAM,EACJ,SAAS,EACP,mBACA,iBACA,qBACA,mBACA,oBACA,kBACA,0BAEF,MAAM,EAAE,kBAAkB,mBAAmB,oBAC3C;CACJ,MAAM,EAAE,YAAY,aAAa,YAAY,cAAc,WAAW,uBAAuB,MAAM;CAEnG,MAAM,UAAU,uBAAuB,UAAU,aAAa;CAE9D,MAAM,CAAC,oBAAoB,yBAAyB,SAAS,CAAC;CAE9D,MAAM,sBAAsB;EAC1B,GAAG,sBAAsB,wBAAwB,EAC/C,MACF,CAAC;EACD,GAAG;CACL;CAEA,gCAAgC;EAC9B,MAAM,wBAAwB;GAC5B,uBAAuB,cAAc,SAAS,gBAAgB,MAAM,iBAAiB,SAAS,gBAAgB,EAAE;EAClH;EAEA,gBAAgB;EAEhB,IAAI,OAAO,mBAAmB,eAAe,CAAC,kBAAkB,SAC9D;EAGF,MAAM,iBAAiB,IAAI,qBAAqB;GAC9C,KAAK,MAAM,WAAW,CAAC,cAAc,SAAS,iBAAiB,OAAO,GACpE,IAAI,SACF,eAAe,QAAQ,OAAO;GAGlC,gBAAgB;EAClB,CAAC;EACD,eAAe,QAAQ,kBAAkB,OAAO;EAEhD,aAAa,eAAe,WAAW;CACzC,GAAG;EAAC;EAAkB;EAAqB;EAAkB;EAAc;EAAmB;CAAa,CAAC;CAE5G,MAAM,kBAAkB,sBAAsB,WAAW;CACzD,MAAM,gBAAgB,oBAAoB,WAAW;CAErD,OACE,qBAAC,gBAAD;EACE,aAAW;EACX,oBAAkB,UAAU,iBAAiB,KAAA;EAC7C,GAAI;EACJ,MAAM,SAAyB;GAC7B,IAAI,MAAM;IACR,kBAAkB,UAAU;IAC5B,IAAI,qBAAqB,OAAO,OAAO,oBAAoB,QAAQ,UACjE,oBAAoB,IAAI,UAAU;GAEtC;EACF;EACA,OAAO;GACL,WAAW,eAAe,gBAAgB,mBAAmB,OAAO,KAAA;GACpE,GAAG,qBAAqB;EAC1B;EACA,KAAK,WAAW;GACd,WAAW,qBAAqB,6BAA6B,mBAAmB,gBAAgB,KAAA;GAChG,UAAU;GACV,UAAU;GACV,UAAU;GACV,GAAI,sBAAsB,qBAAqB,IAAI,KAAK;EAC1D;EAtBF,UAAA;GAwBG,UAAU,oBAAC,yBAAD,EAAgC,MAAQ,CAAA,IAAI;GACvD,oBAAC,WAAD,EAAkB,MAAQ,CAAA;IACxB,mBAAmB,kBAAkB,oBAAC,kBAAD;IAAkB,MAAA;IAAY;GAAQ,CAAA;GAC5E,qBAAqB,cAAc,oBAAC,oBAAD,EAA2B,MAAQ,CAAA;EACzD;;AAEpB;;AC3FA,MAAa,kBAA6C,EACxD,OACA,GAAG,WAC0C;CAC7C,MAAM,EACJ,SAAS,EACP,qBACA,kBACA,UAAU,EAAE,uBACZ,oBACA,qBACA,oBAEF,MAAM,EAAE,oBACN;CACJ,MAAM,EAAE,iBAAiB,MAAM;CAE/B,MAAM,aAAa;EACjB,GAAG,sBAAsB,oBAAoB,EAAE,MAAM,CAAC;EACtD,GAAG;CACL;CAEA,MAAM,QAAQ,SAAS;CAEvB,OACE,qBAAC,OAAD;EACE,WAAW;EACX,YAAY,MAAM,EAAE,QAAQ,YAAY,MAAM,gBAAgB,KAAK;EACnE,GAAI;EACJ,MAAM,QAAwB;GAC5B,cAAc,UAAU;GACxB,IAAI,YAAY,OAAO,OAAO,WAAW,QAAQ,UAC/C,WAAW,IAAI,UAAU;EAE7B;EACA,OAAO;GACL,GAAI,eACA;IACE,QAAQ;IACR,QAAQ;IACR,MAAM;IACN,QAAQ;IACR,WAAW;IACX,UAAU;IACV,SAAS;IACT,UAAU;IACV,OAAO;IACP,KAAK;IACL,OAAO;IACP,QAAQ,MAAM,OAAO;GACvB,IACA,CAAC;GACL,GAAG,YAAY;EACjB;EACA,KAAK,WAAW;GACd,iBAAiB;GACjB,iBAAiB;GACjB,UAAU;GACV,YAAY;GACZ,GAAI,sBAAsB,YAAY,IAAI,KAAK;EACjD;EAnCF,UAAA;GAqCG,qBAAqB,sBAAsB,kBAAkB,EAAE,MAAM,CAAC,KAAK,oBAAC,gBAAD,EAAuB,MAAQ,CAAA;GAC3G,oBAAC,oBAAD,EAA2B,MAAQ,CAAA;GAClC,wBACE,sBAAsB,qBAAqB,EAAE,MAAM,CAAC,KAAK,oBAAC,mBAAD,EAA0B,MAAQ,CAAA;EACzF;;AAEX;;ACvEA,MAAM,uBACJ,UACuC,MAAmC,UAAU,KAAA;AAMtF,MAAM,wBAAmD,EACvD,mBAC6D;CAC7D,MAAM,QAAQ,sBAAsB,YAAY;CAEhD,OAAO,oBAAC,gBAAD,EAAuB,MAAQ,CAAA;AACxC;AAEA,MAAa,sBAAiD,UAC5D,oBAAoB,KAAK,IAAI,oBAAC,gBAAD,EAAgB,OAAO,MAAM,MAAQ,CAAA,IAAI,oBAAC,sBAAD,EAAsB,cAAc,MAAQ,CAAA"}
|