@servicetitan/anvil2 3.15.2 → 3.16.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +24 -0
- package/dist/{AiMark-N8UfGfcV.js → AiMark-BfmK30vL.js} +2 -2
- package/dist/{AiMark-N8UfGfcV.js.map → AiMark-BfmK30vL.js.map} +1 -1
- package/dist/AiMark.js +1 -1
- package/dist/{Alert-DTKIlitZ.js → Alert-lLo1N7Tj.js} +2 -2
- package/dist/{Alert-DTKIlitZ.js.map → Alert-lLo1N7Tj.js.map} +1 -1
- package/dist/Alert.js +1 -1
- package/dist/{Announcement-Cnz80WGx.js → Announcement-PfnsVVz1.js} +5 -2
- package/dist/Announcement-PfnsVVz1.js.map +1 -0
- package/dist/Announcement.js +1 -1
- package/dist/{Breadcrumbs-B8UGx4Mq.js → Breadcrumbs-RdL4Fvmu.js} +2 -2
- package/dist/{Breadcrumbs-B8UGx4Mq.js.map → Breadcrumbs-RdL4Fvmu.js.map} +1 -1
- package/dist/Breadcrumbs.js +1 -1
- package/dist/{Calendar-Cv07q_tE.js → Calendar-DoLRAWLp.js} +2 -2
- package/dist/{Calendar-Cv07q_tE.js.map → Calendar-DoLRAWLp.js.map} +1 -1
- package/dist/{Calendar-CpmaI3b6.js → Calendar-IzXG1aJw.js} +2 -2
- package/dist/{Calendar-CpmaI3b6.js.map → Calendar-IzXG1aJw.js.map} +1 -1
- package/dist/Calendar.js +2 -2
- package/dist/{Checkbox-cB0D9W0a.js → Checkbox-CVxbe-iN.js} +3 -3
- package/dist/{Checkbox-cB0D9W0a.js.map → Checkbox-CVxbe-iN.js.map} +1 -1
- package/dist/{Checkbox-jomKCuAj.js → Checkbox-U-kuWhgc.js} +2 -2
- package/dist/{Checkbox-jomKCuAj.js.map → Checkbox-U-kuWhgc.js.map} +1 -1
- package/dist/Checkbox.js +1 -1
- package/dist/{Chip-DivZ3OuB.js → Chip-2OydLs66.js} +2 -2
- package/dist/{Chip-DivZ3OuB.js.map → Chip-2OydLs66.js.map} +1 -1
- package/dist/Chip.js +1 -1
- package/dist/Combobox.js +1 -1
- package/dist/{DataTable-_XXxSbvH.js → DataTable-DIXP9-Bx.js} +7 -7
- package/dist/{DataTable-_XXxSbvH.js.map → DataTable-DIXP9-Bx.js.map} +1 -1
- package/dist/{DateFieldRange-31zIfcR2.js → DateFieldRange-X2jdOTYY.js} +4 -4
- package/dist/{DateFieldRange-31zIfcR2.js.map → DateFieldRange-X2jdOTYY.js.map} +1 -1
- package/dist/DateFieldRange.js +1 -1
- package/dist/{DateFieldSingle-DDFe1inZ.js → DateFieldSingle-BJ16tpOz.js} +4 -4
- package/dist/{DateFieldSingle-DDFe1inZ.js.map → DateFieldSingle-BJ16tpOz.js.map} +1 -1
- package/dist/DateFieldSingle.js +1 -1
- package/dist/{DateFieldYearless-Cv34myLZ.js → DateFieldYearless-CMm8vtz_.js} +4 -4
- package/dist/{DateFieldYearless-Cv34myLZ.js.map → DateFieldYearless-CMm8vtz_.js.map} +1 -1
- package/dist/DateFieldYearless.js +1 -1
- package/dist/{DateFieldYearlessRange-D_ftkt3w.js → DateFieldYearlessRange-BHHs-Z1Q.js} +3 -3
- package/dist/{DateFieldYearlessRange-D_ftkt3w.js.map → DateFieldYearlessRange-BHHs-Z1Q.js.map} +1 -1
- package/dist/DateFieldYearlessRange.js +1 -1
- package/dist/{DaysOfTheWeek-D4tUHUay.js → DaysOfTheWeek-BHXxs0Bo.js} +2 -2
- package/dist/{DaysOfTheWeek-D4tUHUay.js.map → DaysOfTheWeek-BHXxs0Bo.js.map} +1 -1
- package/dist/DaysOfTheWeek.js +1 -1
- package/dist/{Dialog-B2QAFibn.js → Dialog-_tHqOsbr.js} +4 -4
- package/dist/{Dialog-B2QAFibn.js.map → Dialog-_tHqOsbr.js.map} +1 -1
- package/dist/Dialog.js +1 -1
- package/dist/{Drawer-CBIOWwh3.js → Drawer-D-ThWNp0.js} +4 -4
- package/dist/{Drawer-CBIOWwh3.js.map → Drawer-D-ThWNp0.js.map} +1 -1
- package/dist/Drawer.js +1 -1
- package/dist/DrillDown.js +1 -1
- package/dist/{EditCard-Q6WlsM4O.js → EditCard-B6l2vhBS.js} +2 -2
- package/dist/{EditCard-Q6WlsM4O.js.map → EditCard-B6l2vhBS.js.map} +1 -1
- package/dist/EditCard.js +1 -1
- package/dist/{FieldLabel-FsNIjn8T.js → FieldLabel-ThEmUiAq.js} +2 -2
- package/dist/{FieldLabel-FsNIjn8T.js.map → FieldLabel-ThEmUiAq.js.map} +1 -1
- package/dist/FieldLabel.js +1 -1
- package/dist/{FilterBar-PXv7_svO.js → FilterBar-CGsDg6Hy.js} +18 -16
- package/dist/FilterBar-CGsDg6Hy.js.map +1 -0
- package/dist/FilterBar.js +1 -1
- package/dist/{InputMask-BgZX650-.js → InputMask-BQigi5oW.js} +3 -3
- package/dist/{InputMask-BgZX650-.js.map → InputMask-BQigi5oW.js.map} +1 -1
- package/dist/InputMask.js +1 -1
- package/dist/{ListView-aRwUEGI3.js → ListView-YJscfG4x.js} +2 -2
- package/dist/{ListView-aRwUEGI3.js.map → ListView-YJscfG4x.js.map} +1 -1
- package/dist/ListView.js +1 -1
- package/dist/{Listbox-BCszel4v.js → Listbox-CD9ZptSZ.js} +2 -2
- package/dist/{Listbox-BCszel4v.js.map → Listbox-CD9ZptSZ.js.map} +1 -1
- package/dist/Listbox.js +1 -1
- package/dist/MultiSelectField.js +1 -1
- package/dist/{MultiSelectFieldSync-DY5wr7cT.js → MultiSelectFieldSync-Cq5sena6.js} +28 -28
- package/dist/{MultiSelectFieldSync-DY5wr7cT.js.map → MultiSelectFieldSync-Cq5sena6.js.map} +1 -1
- package/dist/MultiSelectFieldSync.css +71 -70
- package/dist/MultiSelectMenu.js +1 -1
- package/dist/{MultiSelectMenuSync-D3sfHivW.js → MultiSelectMenuSync-BhNXsgAN.js} +4 -4
- package/dist/{MultiSelectMenuSync-D3sfHivW.js.map → MultiSelectMenuSync-BhNXsgAN.js.map} +1 -1
- package/dist/{NumberField-CrvEEy_h.js → NumberField-CxmJx4gs.js} +3 -3
- package/dist/{NumberField-CrvEEy_h.js.map → NumberField-CxmJx4gs.js.map} +1 -1
- package/dist/NumberField.js +1 -1
- package/dist/{Page-CS6x6C7Y.js → Page-ZSHNJs7z.js} +8 -8
- package/dist/{Page-CS6x6C7Y.js.map → Page-ZSHNJs7z.js.map} +1 -1
- package/dist/Page.js +1 -1
- package/dist/{Pagination-DianLtHs.js → Pagination-Bsl99RRI.js} +5 -3
- package/dist/{Pagination-DianLtHs.js.map → Pagination-Bsl99RRI.js.map} +1 -1
- package/dist/Pagination.js +1 -1
- package/dist/{Popover-BsEwcuu4.js → Popover-CIh1CsoJ.js} +2 -2
- package/dist/{Popover-BsEwcuu4.js.map → Popover-CIh1CsoJ.js.map} +1 -1
- package/dist/Popover.js +1 -1
- package/dist/{ProgressBar-0pebwBJ0.js → ProgressBar-zPKYv4Il.js} +11 -14
- package/dist/ProgressBar-zPKYv4Il.js.map +1 -0
- package/dist/ProgressBar.css +10 -14
- package/dist/ProgressBar.js +1 -1
- package/dist/{Radio-BxXN612_.js → Radio-BYowelK2.js} +3 -3
- package/dist/{Radio-BxXN612_.js.map → Radio-BYowelK2.js.map} +1 -1
- package/dist/{Radio-CU2--1uW.js → Radio-C1VnatcL.js} +2 -2
- package/dist/{Radio-CU2--1uW.js.map → Radio-C1VnatcL.js.map} +1 -1
- package/dist/Radio.js +1 -1
- package/dist/{RichTextEditor-Dnc7vOjq.js → RichTextEditor-DcAVqd2d.js} +8 -8
- package/dist/{RichTextEditor-Dnc7vOjq.js.map → RichTextEditor-DcAVqd2d.js.map} +1 -1
- package/dist/RichTextEditor.js +1 -1
- package/dist/{SavedFiltersButton-BWlE7UnI.js → SavedFiltersButton-BLvi8j1T.js} +9 -9
- package/dist/{SavedFiltersButton-BWlE7UnI.js.map → SavedFiltersButton-BLvi8j1T.js.map} +1 -1
- package/dist/SavedFiltersButton.js +1 -1
- package/dist/{SelectCard-D2PAyR7T.js → SelectCard-DrmMU_GD.js} +3 -3
- package/dist/{SelectCard-D2PAyR7T.js.map → SelectCard-DrmMU_GD.js.map} +1 -1
- package/dist/SelectCard.js +1 -1
- package/dist/SelectField.js +1 -1
- package/dist/{SelectFieldLabel-BXJJQ0zt.js → SelectFieldLabel-BxsKvfqo.js} +2 -2
- package/dist/{SelectFieldLabel-BXJJQ0zt.js.map → SelectFieldLabel-BxsKvfqo.js.map} +1 -1
- package/dist/{SelectFieldSync-CkWoMhrv.js → SelectFieldSync-CeazN-gI.js} +37 -10
- package/dist/SelectFieldSync-CeazN-gI.js.map +1 -0
- package/dist/SelectMenu.js +1 -1
- package/dist/{SelectMenuSync-C-6mULc_.js → SelectMenuSync-CPpE6vUG.js} +4 -4
- package/dist/{SelectMenuSync-C-6mULc_.js.map → SelectMenuSync-CPpE6vUG.js.map} +1 -1
- package/dist/{SelectOptions-pAkVhulQ.js → SelectOptions-BDAu_9dv.js} +2 -2
- package/dist/{SelectOptions-pAkVhulQ.js.map → SelectOptions-BDAu_9dv.js.map} +1 -1
- package/dist/{SelectTrigger-B9WUUdIu.js → SelectTrigger-B4OUTO9S.js} +2 -2
- package/dist/{SelectTrigger-B9WUUdIu.js.map → SelectTrigger-B4OUTO9S.js.map} +1 -1
- package/dist/SelectTrigger.js +1 -1
- package/dist/{SelectTriggerBase-Dq7QDlPS.js → SelectTriggerBase-BTWSaiQ-.js} +4 -4
- package/dist/{SelectTriggerBase-Dq7QDlPS.js.map → SelectTriggerBase-BTWSaiQ-.js.map} +1 -1
- package/dist/SelectTriggerBase.css +51 -50
- package/dist/SelectTriggerBase.module-Dt4-6YvC.js +40 -0
- package/dist/SelectTriggerBase.module-Dt4-6YvC.js.map +1 -0
- package/dist/{Switch-BS4bw5KF.js → Switch-1iNdXTik.js} +2 -2
- package/dist/{Switch-BS4bw5KF.js.map → Switch-1iNdXTik.js.map} +1 -1
- package/dist/Switch.js +1 -1
- package/dist/Table.js +1 -1
- package/dist/{Text-B_-Ldn9K.js → Text-rihxXHSe.js} +2 -2
- package/dist/{Text-B_-Ldn9K.js.map → Text-rihxXHSe.js.map} +1 -1
- package/dist/Text.js +1 -1
- package/dist/{TextField-B6tVKoxq.js → TextField-Bxd-Qzoi.js} +2 -2
- package/dist/{TextField-B6tVKoxq.js.map → TextField-Bxd-Qzoi.js.map} +1 -1
- package/dist/{TextField-DxQ6-IhP.js → TextField-vuS7xeo-.js} +3 -3
- package/dist/{TextField-DxQ6-IhP.js.map → TextField-vuS7xeo-.js.map} +1 -1
- package/dist/TextField.js +1 -1
- package/dist/{Textarea-oChzBuWz.js → Textarea-ppapJUwh.js} +3 -3
- package/dist/{Textarea-oChzBuWz.js.map → Textarea-ppapJUwh.js.map} +1 -1
- package/dist/Textarea.js +1 -1
- package/dist/{TimeField-Dq7l8xNU.js → TimeField-Hwt_oRbg.js} +4 -4
- package/dist/{TimeField-Dq7l8xNU.js.map → TimeField-Hwt_oRbg.js.map} +1 -1
- package/dist/TimeField.js +1 -1
- package/dist/Toast.js +2 -2
- package/dist/{Toaster-oK4dSBPK.js → Toaster-SqkX0Kes.js} +3 -3
- package/dist/{Toaster-oK4dSBPK.js.map → Toaster-SqkX0Kes.js.map} +1 -1
- package/dist/{Toaster-CsZkAOVn.js → Toaster-dVGVVcat.js} +2 -2
- package/dist/{Toaster-CsZkAOVn.js.map → Toaster-dVGVVcat.js.map} +1 -1
- package/dist/{Toolbar-Bp-A2P4L.js → Toolbar-CMulzswf.js} +3 -3
- package/dist/{Toolbar-Bp-A2P4L.js.map → Toolbar-CMulzswf.js.map} +1 -1
- package/dist/{Toolbar-Do8KEjJJ.js → Toolbar-DGHZpFi9.js} +3 -3
- package/dist/{Toolbar-Do8KEjJJ.js.map → Toolbar-DGHZpFi9.js.map} +1 -1
- package/dist/Toolbar.js +1 -1
- package/dist/TreeSelectField.js +1 -1
- package/dist/{TreeSelectFieldSync-BXfLbDBM.js → TreeSelectFieldSync-DT6uZ3Ca.js} +21 -21
- package/dist/{TreeSelectFieldSync-BXfLbDBM.js.map → TreeSelectFieldSync-DT6uZ3Ca.js.map} +1 -1
- package/dist/TreeSelectFieldSync.css +36 -35
- package/dist/TreeSelectMenu.js +1 -1
- package/dist/{TreeSelectMenuSync-D7fQIyHr.js → TreeSelectMenuSync-D2TvKxP-.js} +3 -3
- package/dist/{TreeSelectMenuSync-D7fQIyHr.js.map → TreeSelectMenuSync-D2TvKxP-.js.map} +1 -1
- package/dist/{TypeaheadTextField-Dkh84OCF.js → TypeaheadTextField-DgazozK7.js} +3 -3
- package/dist/{TypeaheadTextField-Dkh84OCF.js.map → TypeaheadTextField-DgazozK7.js.map} +1 -1
- package/dist/TypeaheadTextField.js +1 -1
- package/dist/{YearlessDateInputWithPicker-7y8xhacx.js → YearlessDateInputWithPicker-Bc8a33D5.js} +2 -2
- package/dist/{YearlessDateInputWithPicker-7y8xhacx.js.map → YearlessDateInputWithPicker-Bc8a33D5.js.map} +1 -1
- package/dist/beta.js +16 -16
- package/dist/{bulkActionTypes-BVJZ01mE.js → bulkActionTypes-SukoplGV.js} +2 -2
- package/dist/{bulkActionTypes-BVJZ01mE.js.map → bulkActionTypes-SukoplGV.js.map} +1 -1
- package/dist/downshift.esm-U4VMqrF-.js.map +1 -1
- package/dist/extends-Bg2s_OKl.js.map +1 -1
- package/dist/{filter-state-CPCn-owS.js → filter-state-D3-SYfuy.js} +18 -18
- package/dist/{filter-state-CPCn-owS.js.map → filter-state-D3-SYfuy.js.map} +1 -1
- package/dist/{index-D1WfdON1.js → index-C2dOrf4N.js} +2 -2
- package/dist/{index-D1WfdON1.js.map → index-C2dOrf4N.js.map} +1 -1
- package/dist/index.js +42 -42
- package/dist/src/components/Pagination/Pagination.d.ts +28 -0
- package/dist/src/internal/components/LoadMoreSlot.d.ts +13 -0
- package/dist/src/internal/hooks/useAutoLoadMore.d.ts +40 -0
- package/dist/src/internal/hooks/useFocusReturnOnUnmount.d.ts +10 -0
- package/dist/{stripInlineMarkdown-CcwDEdw0.js → stripInlineMarkdown-BhYLEiXu.js} +2 -2
- package/dist/{stripInlineMarkdown-CcwDEdw0.js.map → stripInlineMarkdown-BhYLEiXu.js.map} +1 -1
- package/dist/{syncFilterUtils-ubEYuRGQ.js → syncFilterUtils-SMop8ckR.js} +179 -64
- package/dist/syncFilterUtils-SMop8ckR.js.map +1 -0
- package/dist/{treeSync-CkjyJSVq.js → treeSync-B38r1dRQ.js} +3 -3
- package/dist/{treeSync-CkjyJSVq.js.map → treeSync-B38r1dRQ.js.map} +1 -1
- package/dist/{useDrilldown-DOXav1An.js → useDrilldown-BOeeNUsy.js} +3 -3
- package/dist/{useDrilldown-DOXav1An.js.map → useDrilldown-BOeeNUsy.js.map} +1 -1
- package/dist/{useInfiniteCombobox-15_SoeWw.js → useInfiniteCombobox-ynkeFngn.js} +4 -4
- package/dist/{useInfiniteCombobox-15_SoeWw.js.map → useInfiniteCombobox-ynkeFngn.js.map} +1 -1
- package/dist/{useInitialFocus-0TZ78bPz.js → useInitialFocus-CGybEc6x.js} +2 -2
- package/dist/{useInitialFocus-0TZ78bPz.js.map → useInitialFocus-CGybEc6x.js.map} +1 -1
- package/dist/{useInvalidateOnOptionsChange-DiRbyJFp.js → useInvalidateOnOptionsChange-BD2VBpbK.js} +4 -4
- package/dist/{useInvalidateOnOptionsChange-DiRbyJFp.js.map → useInvalidateOnOptionsChange-BD2VBpbK.js.map} +1 -1
- package/dist/{usePopoverTransitionStates-B1opfxxn.js → usePopoverTransitionStates-CDXCdyKa.js} +2 -1
- package/dist/{usePopoverTransitionStates-B1opfxxn.js.map → usePopoverTransitionStates-CDXCdyKa.js.map} +1 -1
- package/package.json +6 -6
- package/dist/Announcement-Cnz80WGx.js.map +0 -1
- package/dist/FilterBar-PXv7_svO.js.map +0 -1
- package/dist/ProgressBar-0pebwBJ0.js.map +0 -1
- package/dist/SelectFieldSync-CkWoMhrv.js.map +0 -1
- package/dist/SelectTriggerBase.module-mYOfdBGA.js +0 -40
- package/dist/SelectTriggerBase.module-mYOfdBGA.js.map +0 -1
- package/dist/check_circle-C3DDoVXp.js +0 -8
- package/dist/check_circle-C3DDoVXp.js.map +0 -1
- package/dist/src/internal/components/InView.d.ts +0 -14
- package/dist/syncFilterUtils-ubEYuRGQ.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DataTable-_XXxSbvH.js","sources":["../public/assets/icons/st/resize_window_alt.svg","../src/internal/components/Surface/surfaceGeometry.ts","../src/internal/components/Surface/Surface.tsx","../src/beta/components/Table/formatters/booleanFormatter.tsx","../src/beta/components/Table/base/cells/TableEmptyCellContent.tsx","../src/beta/components/Table/internal/TruncateChips.tsx","../src/beta/components/Table/formatters/chipsFormatter.tsx","../src/beta/components/Table/formatters/currencyFormatter.tsx","../src/beta/components/Table/formatters/presets.ts","../src/beta/components/Table/formatters/dateFormatter.tsx","../src/beta/components/Table/formatters/dateTimeFormatter.tsx","../src/beta/components/Table/formatters/htmlToMarkdown.ts","../src/beta/components/Table/formatters/markdownFormatter.tsx","../src/beta/components/Table/formatters/htmlFormatter.tsx","../src/beta/components/Table/formatters/numberFormatter.tsx","../src/beta/components/Table/formatters/percentFormatter.tsx","../src/beta/components/Table/formatters/timeFormatter.tsx","../src/beta/components/Table/formatters/yearlessDateFormatter.tsx","../src/beta/components/Table/columnTypeDefaults.ts","../src/beta/components/Table/createColumnHelper.ts","../../../node_modules/.pnpm/@tanstack+table-core@8.21.3/node_modules/@tanstack/table-core/build/lib/index.mjs","../../../node_modules/.pnpm/@tanstack+react-table@8.21.3_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@tanstack/react-table/build/lib/index.mjs","../src/beta/components/Table/DataTable/parts.ts","../src/beta/components/Table/DataTable/internal/context/focus/DTFocusContext.tsx","../src/beta/components/Table/DataTable/internal/context/focus/useDTFocusDispatchContext.ts","../src/beta/components/Table/base/TableBase.tsx","../src/beta/components/Table/base/TableBody.tsx","../src/beta/components/Table/internal/getCommonPinningClasses.ts","../src/beta/components/Table/DataTable/internal/dataTableCellAffordanceHostClassName.ts","../src/beta/components/Table/DataTable/internal/DataTableCellAffordance.tsx","../src/beta/components/Table/DataTable/internal/editable-cells/DataTableEditableCellEditIcon.tsx","../src/beta/components/Table/base/cells/TableBodyCell.tsx","../src/beta/components/Table/DataTable/internal/util/cellPositionHelpers.ts","../src/beta/components/Table/DataTable/internal/util/cellTypeHelpers.ts","../src/beta/components/Table/internal/getCommonPinningStyles.ts","../src/beta/components/Table/DataTable/internal/context/rowClick/DataTableRowClickContext.tsx","../src/beta/components/Table/DataTable/internal/context/rowClick/useDataTableRowClick.ts","../src/beta/components/Table/DataTable/internal/util/getCellInteractives.ts","../src/beta/components/Table/DataTable/internal/constants.ts","../src/beta/components/Table/DataTable/internal/cells/DataTableBodyImmutableCell.tsx","../src/beta/components/Table/DataTable/internal/editable-cells/DataTableEditableTextCell.tsx","../src/beta/components/Table/DataTable/internal/editable-cells/DataTableEditableNumberCell.tsx","../src/beta/components/Table/DataTable/internal/editable-cells/useEditableMenuCell.ts","../src/beta/components/Table/DataTable/internal/editable-cells/DataTableEditableSelectCell.tsx","../src/beta/components/Table/DataTable/internal/editable-cells/DataTableEditableSelectAsyncCell.tsx","../src/beta/components/Table/DataTable/internal/editable-cells/DataTableEditableMultiselectCell.tsx","../src/beta/components/Table/DataTable/internal/editable-cells/DataTableEditableMultiselectAsyncCell.tsx","../src/beta/components/Table/DataTable/internal/editable-cells/DataTableEditableBooleanCell.tsx","../src/beta/components/Table/DataTable/internal/context/surface/DataTableSurfaceCoordinatorContext.ts","../src/beta/components/Table/DataTable/internal/context/surface/useDataTableSurfaceCoordinator.ts","../src/beta/components/Table/DataTable/internal/editable-cells/useCustomEditHelpers.ts","../src/beta/components/Table/DataTable/internal/editable-cells/DataTableEditableCustomCell.tsx","../src/beta/components/Table/DataTable/internal/cells/DataTableBodyMutableCell.tsx","../../hammer-icon/mdi/round/open_in_full.svg","../src/beta/components/Table/DataTable/internal/cells/DataTableOverflowCell.tsx","../src/beta/components/Table/DataTable/internal/cells/DataTableBodyCell.tsx","../src/beta/components/Table/DataTable/internal/DataTableBodyRow.tsx","../src/beta/components/Table/DataTable/internal/useColumnOrder.ts","../src/beta/components/Table/DataTable/internal/DataTableBody.tsx","../src/beta/components/Table/base/TableFooter.tsx","../src/beta/components/Table/base/cells/TableFooterCell.tsx","../src/beta/components/Table/DataTable/internal/cells/DataTableFooterCell.tsx","../src/beta/components/Table/DataTable/internal/DataTableFooter.tsx","../src/beta/components/Table/DataTable/internal/cells/useCellFocusListener.ts","../src/beta/components/Table/DataTable/internal/cells/CellStatus.tsx","../src/beta/components/Table/DataTable/internal/util/getTanStackColumnDef.tsx","../src/beta/components/Table/DataTable/internal/util/shallowSortingEqual.ts","../../hammer-icon/mdi/round/arrow_upward.svg","../../hammer-icon/mdi/round/arrow_downward.svg","../src/beta/components/Table/base/TableHeader.tsx","../src/beta/components/Table/base/cells/TableHeaderCell.tsx","../src/beta/components/Table/DataTable/internal/cells/DataTableHeaderCell.tsx","../src/beta/components/Table/internal/ResizeHandle.tsx","../src/beta/components/Table/DataTable/internal/DataTableHeader.tsx","../src/beta/components/Table/base/TableContainer.tsx","../src/beta/components/Table/DataTable/internal/DataTablePagination.tsx","../src/beta/components/Table/DataTable/internal/useAsyncData.tsx","../src/beta/components/Table/DataTable/internal/usePageDataCache.ts","../src/beta/components/Table/internal/scrollCellIntoView.ts","../src/beta/components/Table/DataTable/internal/context/focus/DTFocusProvider.tsx","../src/beta/components/Table/DataTable/internal/context/surface/DataTableSurfaceCoordinatorProvider.tsx","../src/beta/components/Table/DataTable/internal/context/rowClick/DataTableRowClickProvider.tsx","../src/beta/components/Table/DataTable/internal/useDataTableVirtualizer.ts","../src/beta/components/Table/DataTable/DataTable.tsx"],"sourcesContent":["import * as React from \"react\";\nconst SvgResizeWindowAlt = (props) => /* @__PURE__ */ React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", width: 24, height: 24, viewBox: \"0 0 24 24\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M4.4 21 21 4.425 19.575 3 3 19.575zm10.025 0L21 14.425 19.575 13 13 19.575z\" }));\nexport default SvgResizeWindowAlt;\n","/** Inset from the viewport edge used when clamping position and size. */\nexport const SURFACE_VIEWPORT_PADDING = 8;\nexport const SURFACE_MIN_WIDTH = 240;\nexport const SURFACE_MIN_HEIGHT = 120;\n\nexport type SurfaceGeometry = {\n x: number;\n y: number;\n width: number;\n /** Explicit height after resize; `null` means auto height. */\n height: number | null;\n /** When true, auto-placement must not overwrite user x/y/width. */\n isUserModified: boolean;\n /** When true, an explicit height is applied instead of max-height. */\n hasUserResized: boolean;\n};\n\nexport type SurfaceViewport = {\n width: number;\n height: number;\n};\n\nexport type SurfaceRect = {\n x: number;\n y: number;\n width: number;\n height: number;\n};\n\nexport type ClampSurfaceGeometryOptions = {\n /** Used when `height` is `null`. */\n measuredHeight?: number;\n /** After clamp, keep at least 1px overlap with this rect when possible. */\n intersectionBoundary?: SurfaceRect | null;\n};\n\ntype AxisCorrection = {\n value: number;\n delta: number;\n};\n\nfunction clampValue(value: number, min: number, max: number): number {\n return Math.min(Math.max(value, min), Math.max(min, max));\n}\n\n/** Remaining viewport width to the right of `x`, floored at {@link SURFACE_MIN_WIDTH}. */\nexport function getMaxSurfaceWidth(\n viewport: SurfaceViewport,\n x: number,\n): number {\n return Math.max(\n SURFACE_MIN_WIDTH,\n viewport.width - x - SURFACE_VIEWPORT_PADDING,\n );\n}\n\n/** Remaining viewport height below `y`, floored at {@link SURFACE_MIN_HEIGHT}. */\nexport function getMaxSurfaceHeight(\n viewport: SurfaceViewport,\n y: number,\n): number {\n return Math.max(\n SURFACE_MIN_HEIGHT,\n viewport.height - y - SURFACE_VIEWPORT_PADDING,\n );\n}\n\nfunction isFiniteRect(rect: SurfaceRect): boolean {\n return (\n Number.isFinite(rect.x) &&\n Number.isFinite(rect.y) &&\n Number.isFinite(rect.width) &&\n Number.isFinite(rect.height) &&\n rect.width > 0 &&\n rect.height > 0\n );\n}\n\nfunction getEffectiveSurfaceHeight(\n geometry: SurfaceGeometry,\n options: ClampSurfaceGeometryOptions,\n): number {\n if (geometry.height !== null) return geometry.height;\n\n return options.measuredHeight ?? SURFACE_MIN_HEIGHT;\n}\n\nfunction toSurfaceRect(\n geometry: SurfaceGeometry,\n options: ClampSurfaceGeometryOptions,\n): SurfaceRect {\n return {\n x: geometry.x,\n y: geometry.y,\n width: geometry.width,\n height: getEffectiveSurfaceHeight(geometry, options),\n };\n}\n\n/** True when the rects overlap by more than a shared edge. */\nexport function hasStrictRectIntersection(\n rect: SurfaceRect,\n boundary: SurfaceRect,\n): boolean {\n return (\n rect.x + rect.width > boundary.x &&\n boundary.x + boundary.width > rect.x &&\n rect.y + rect.height > boundary.y &&\n boundary.y + boundary.height > rect.y\n );\n}\n\nfunction getAxisCorrection({\n boundarySize,\n boundaryStart,\n max,\n min,\n size,\n start,\n}: {\n boundarySize: number;\n boundaryStart: number;\n max: number;\n min: number;\n size: number;\n start: number;\n}): AxisCorrection | null {\n const boundaryEnd = boundaryStart + boundarySize;\n const end = start + size;\n\n if (end > boundaryStart && start < boundaryEnd) {\n return { value: start, delta: 0 };\n }\n\n // Nudge 1px into the boundary so restored overlap is strict, not edge-touching.\n const target =\n end <= boundaryStart ? boundaryStart - size + 1 : boundaryEnd - 1;\n const value = clampValue(target, min, max);\n\n if (value + size <= boundaryStart || value >= boundaryEnd) {\n return null;\n }\n\n return { value, delta: Math.abs(value - start) };\n}\n\nfunction restoreBoundaryIntersection(\n geometry: SurfaceGeometry,\n viewport: SurfaceViewport,\n options: ClampSurfaceGeometryOptions,\n): SurfaceGeometry {\n const boundary = options.intersectionBoundary;\n\n if (!boundary || !isFiniteRect(boundary)) return geometry;\n\n const rect = toSurfaceRect(geometry, options);\n if (hasStrictRectIntersection(rect, boundary)) return geometry;\n\n const xCorrection = getAxisCorrection({\n boundarySize: boundary.width,\n boundaryStart: boundary.x,\n max: viewport.width - SURFACE_VIEWPORT_PADDING - rect.width,\n min: SURFACE_VIEWPORT_PADDING,\n size: rect.width,\n start: geometry.x,\n });\n const yCorrection = getAxisCorrection({\n boundarySize: boundary.height,\n boundaryStart: boundary.y,\n max: viewport.height - SURFACE_VIEWPORT_PADDING - rect.height,\n min: SURFACE_VIEWPORT_PADDING,\n size: rect.height,\n start: geometry.y,\n });\n\n if (!xCorrection || !yCorrection) return geometry;\n\n const xCorrected = {\n ...geometry,\n x: xCorrection.value,\n };\n const yCorrected = {\n ...geometry,\n y: yCorrection.value,\n };\n const xCorrectionIntersects = hasStrictRectIntersection(\n toSurfaceRect(xCorrected, options),\n boundary,\n );\n const yCorrectionIntersects = hasStrictRectIntersection(\n toSurfaceRect(yCorrected, options),\n boundary,\n );\n\n if (xCorrectionIntersects && yCorrectionIntersects) {\n return xCorrection.delta <= yCorrection.delta ? xCorrected : yCorrected;\n }\n\n if (xCorrectionIntersects) return xCorrected;\n if (yCorrectionIntersects) return yCorrected;\n\n const corrected = {\n ...geometry,\n x: xCorrection.value,\n y: yCorrection.value,\n };\n\n if (!hasStrictRectIntersection(toSurfaceRect(corrected, options), boundary)) {\n return geometry;\n }\n\n return corrected;\n}\n\n/** Clamps to the padded viewport, then restores optional boundary overlap. */\nexport function clampSurfaceGeometry(\n geometry: SurfaceGeometry,\n viewport: SurfaceViewport,\n options: ClampSurfaceGeometryOptions = {},\n): SurfaceGeometry {\n const width = clampValue(\n geometry.width,\n SURFACE_MIN_WIDTH,\n Math.max(SURFACE_MIN_WIDTH, viewport.width - SURFACE_VIEWPORT_PADDING * 2),\n );\n const effectiveHeight = clampValue(\n getEffectiveSurfaceHeight(geometry, options),\n SURFACE_MIN_HEIGHT,\n Math.max(\n SURFACE_MIN_HEIGHT,\n viewport.height - SURFACE_VIEWPORT_PADDING * 2,\n ),\n );\n const x = clampValue(\n geometry.x,\n SURFACE_VIEWPORT_PADDING,\n viewport.width - SURFACE_VIEWPORT_PADDING - width,\n );\n const y = clampValue(\n geometry.y,\n SURFACE_VIEWPORT_PADDING,\n viewport.height - SURFACE_VIEWPORT_PADDING - effectiveHeight,\n );\n const height =\n geometry.height === null\n ? null\n : clampValue(\n geometry.height,\n SURFACE_MIN_HEIGHT,\n getMaxSurfaceHeight(viewport, y),\n );\n\n return restoreBoundaryIntersection(\n {\n ...geometry,\n x,\n y,\n width: clampValue(\n width,\n SURFACE_MIN_WIDTH,\n getMaxSurfaceWidth(viewport, x),\n ),\n height,\n },\n viewport,\n options,\n );\n}\n\n/** Size-only clamp so a live resize does not slide `x`/`y` out from under the pointer. */\nexport function clampActiveResizeSurfaceGeometry(\n geometry: SurfaceGeometry,\n viewport: SurfaceViewport,\n): SurfaceGeometry {\n return {\n ...geometry,\n width: clampValue(\n geometry.width,\n SURFACE_MIN_WIDTH,\n getMaxSurfaceWidth(viewport, geometry.x),\n ),\n height:\n geometry.height === null\n ? null\n : clampValue(\n geometry.height,\n SURFACE_MIN_HEIGHT,\n getMaxSurfaceHeight(viewport, geometry.y),\n ),\n };\n}\n\n/** After resize ends, slides position so the surface intersects the boundary again. */\nexport function restoreSurfaceGeometryIntersection(\n geometry: SurfaceGeometry,\n viewport: SurfaceViewport,\n options: ClampSurfaceGeometryOptions = {},\n): SurfaceGeometry {\n const effectiveHeight = getEffectiveSurfaceHeight(geometry, options);\n\n return restoreBoundaryIntersection(\n {\n ...geometry,\n x: clampValue(\n geometry.x,\n SURFACE_VIEWPORT_PADDING,\n viewport.width - SURFACE_VIEWPORT_PADDING - geometry.width,\n ),\n y: clampValue(\n geometry.y,\n SURFACE_VIEWPORT_PADDING,\n viewport.height - SURFACE_VIEWPORT_PADDING - effectiveHeight,\n ),\n },\n viewport,\n options,\n );\n}\n","import {\n type ComponentPropsWithoutRef,\n type CSSProperties,\n type KeyboardEvent as ReactKeyboardEvent,\n type PointerEvent as ReactPointerEvent,\n type ReactElement,\n type ReactNode,\n type RefObject,\n createContext,\n forwardRef,\n useCallback,\n useContext,\n useEffect,\n useId,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport {\n autoPlacement,\n autoUpdate,\n computePosition,\n offset,\n shift,\n size,\n} from \"@floating-ui/react\";\nimport cx from \"classnames\";\nimport Close from \"@servicetitan/hammer-icon/mdi/round/close.svg\";\nimport DragIndicator from \"@servicetitan/hammer-icon/mdi/round/drag_indicator.svg\";\nimport ResizeWindowAlt from \"../../../../public/assets/icons/st/resize_window_alt.svg\";\nimport { Button } from \"../../../components/Button/Button\";\nimport { useBreakpoint, useMergeRefs } from \"../../../hooks\";\nimport { safeHidePopover, safeShowPopover } from \"../../functions\";\nimport {\n portalScopeClassNames,\n usePortalScopeStyle,\n} from \"../../functions/portalScopeClassNames\";\nimport { useOnClickOutside } from \"../../hooks/useOnClickOutside/useOnClickOutside\";\nimport { registerLayer, unregisterLayer } from \"../../utils\";\nimport {\n clampActiveResizeSurfaceGeometry,\n clampSurfaceGeometry,\n getMaxSurfaceWidth,\n restoreSurfaceGeometryIntersection,\n type ClampSurfaceGeometryOptions,\n type SurfaceGeometry,\n type SurfaceRect,\n type SurfaceViewport,\n SURFACE_VIEWPORT_PADDING,\n} from \"./surfaceGeometry\";\nimport styles from \"./Surface.module.scss\";\n\nexport type SurfaceProps = {\n /** Compound `Trigger` and `Content`. */\n children?: ReactNode;\n /** Whether `Content` is shown. */\n open: boolean;\n /** Shared id for trigger and content. Defaults to a generated `surface-*` id. */\n id?: string;\n};\n\ntype SurfaceContextProps = {\n open: boolean;\n surfaceId: string;\n triggerId: string;\n referenceElement: RefObject<HTMLElement | null>;\n setReference: (node: Element | null) => void;\n};\n\nconst SurfaceContext = createContext<SurfaceContextProps | null>(null);\n\nfunction useSurfaceContext() {\n const context = useContext(SurfaceContext);\n if (!context) {\n throw new Error(\n \"Surface compound components must be used within a <Surface> component.\",\n );\n }\n\n return context;\n}\n\nexport type SurfaceTriggerChildrenProps = {\n /** Assigns the trigger as the floating-ui reference. */\n ref: (node: Element | null) => void;\n id: string;\n \"aria-controls\": string;\n \"aria-haspopup\": \"dialog\";\n \"aria-expanded\": boolean;\n \"data-state\": \"open\" | \"closed\";\n};\n\nexport type SurfaceTriggerProps = {\n /** Render prop: spread the bag onto the real trigger element. */\n children: (props: SurfaceTriggerChildrenProps) => ReactElement;\n};\n\n/** Wires a trigger element to Surface content via a render prop. */\nexport function SurfaceTrigger({ children }: SurfaceTriggerProps) {\n const { open, setReference, surfaceId, triggerId } = useSurfaceContext();\n\n return children({\n ref: setReference,\n id: triggerId,\n \"aria-controls\": surfaceId,\n \"aria-haspopup\": \"dialog\",\n \"aria-expanded\": open,\n \"data-state\": open ? \"open\" : \"closed\",\n });\n}\n\nfunction resolveCssDimension(\n value: number | string | undefined,\n fallback: string,\n): string {\n if (typeof value === \"number\") return `${value}px`;\n if (typeof value === \"string\") return value;\n return fallback;\n}\n\nconst SURFACE_KEYBOARD_STEP = 8;\nconst SURFACE_KEYBOARD_SHIFT_STEP = 32;\n/** Held keys step on this interval, not every animation frame. */\nconst SURFACE_KEYBOARD_STEP_INTERVAL_MS = 33;\n\nconst SURFACE_ARROW_KEYS = [\n \"ArrowLeft\",\n \"ArrowRight\",\n \"ArrowUp\",\n \"ArrowDown\",\n] as const;\n\ntype SurfaceArrowKey = (typeof SURFACE_ARROW_KEYS)[number];\n\ntype SurfaceKeyboardInteractionMode = \"drag\" | \"resize\";\n\ntype SurfacePressedArrowKeys = Record<SurfaceArrowKey, boolean>;\n\ntype SurfaceKeyboardAxisDelta = {\n x: number;\n y: number;\n};\n\nfunction createSurfacePressedArrowKeys(): SurfacePressedArrowKeys {\n return {\n ArrowLeft: false,\n ArrowRight: false,\n ArrowUp: false,\n ArrowDown: false,\n };\n}\n\nfunction isSurfaceArrowKey(key: string): key is SurfaceArrowKey {\n return SURFACE_ARROW_KEYS.some((arrowKey) => arrowKey === key);\n}\n\nfunction getKeyboardAxisDelta(\n pressedKeys: SurfacePressedArrowKeys,\n): SurfaceKeyboardAxisDelta {\n return {\n x: Number(pressedKeys.ArrowRight) - Number(pressedKeys.ArrowLeft),\n y: Number(pressedKeys.ArrowDown) - Number(pressedKeys.ArrowUp),\n };\n}\n\nfunction hasPressedSurfaceArrowKey(\n pressedKeys: SurfacePressedArrowKeys,\n): boolean {\n return SURFACE_ARROW_KEYS.some((arrowKey) => pressedKeys[arrowKey]);\n}\n\nfunction hasKeyboardAxisDelta(axis: SurfaceKeyboardAxisDelta): boolean {\n return axis.x !== 0 || axis.y !== 0;\n}\n\ntype SurfaceInteraction =\n | { type: \"idle\" }\n | {\n type: \"dragging\";\n pointerId: number;\n startClientX: number;\n startClientY: number;\n startX: number;\n startY: number;\n }\n | {\n type: \"resizing\";\n pointerId: number;\n startClientX: number;\n startClientY: number;\n startWidth: number;\n startHeight: number;\n };\n\ntype ViewportSize = SurfaceViewport;\n\nfunction parsePixelDimension(value: string): number | null {\n const numericValue = Number.parseFloat(value);\n\n if (!Number.isFinite(numericValue)) return null;\n // Other CSS units fall through to measured size.\n if (value.trim().endsWith(\"px\")) return numericValue;\n\n return null;\n}\n\nfunction getViewportSize(): ViewportSize {\n return {\n width: window.innerWidth,\n height: window.innerHeight,\n };\n}\n\nfunction getMeasuredSurfaceHeight(element: HTMLElement): number {\n return element.getBoundingClientRect().height;\n}\n\nfunction getInteractionStep(shiftKey: boolean): number {\n return shiftKey ? SURFACE_KEYBOARD_SHIFT_STEP : SURFACE_KEYBOARD_STEP;\n}\n\nfunction getElementDimension(\n element: HTMLElement,\n authoredValue: string,\n fallback: number,\n dimension: \"width\" | \"height\",\n): number {\n const parsedValue = parsePixelDimension(authoredValue);\n if (parsedValue !== null) return parsedValue;\n\n const rect = element.getBoundingClientRect();\n const measuredValue = dimension === \"width\" ? rect.width : rect.height;\n\n return measuredValue > 0 ? measuredValue : fallback;\n}\n\n/**\n * @extends ComponentPropsWithoutRef<\"div\">\n */\nexport type SurfaceContentProps = Omit<\n ComponentPropsWithoutRef<\"div\">,\n \"children\" | \"id\" | \"title\"\n> & {\n /** Body below the header. */\n children: ReactNode;\n /** Close / commit (click-outside, header close). */\n onClose: () => void;\n /** Escape. Defaults to `onClose`. */\n onCancel?: () => void;\n /** Header title; also the default accessible name via `aria-labelledby`. */\n title?: ReactNode;\n /** Extra header actions, rendered before the close button. */\n headerContent?: ReactNode;\n /** Focused on open (next animation frame). */\n initialFocusRef?: RefObject<HTMLElement | null>;\n /** After place/drag/resize, keep overlapping this element's box. */\n intersectionBoundaryRef?: RefObject<HTMLElement | null>;\n /** CSS width. Numbers become `px`. Defaults to `325px`. */\n width?: number | string;\n /** CSS max-height. Numbers become `px`. Defaults to `450px`. */\n maxHeight?: number | string;\n /** Close-button accessible name. Defaults to `\"Close surface\"`. */\n closeButtonLabel?: string;\n};\n\n/** Positioned non-modal content (`popover=\"manual\"`); below `md` it becomes a drawer. */\nexport const SurfaceContent = forwardRef<HTMLDivElement, SurfaceContentProps>(\n function SurfaceContent(props, ref) {\n const {\n children,\n onClose,\n onCancel,\n title,\n headerContent,\n initialFocusRef,\n intersectionBoundaryRef,\n width,\n maxHeight,\n closeButtonLabel = \"Close surface\",\n className,\n style,\n onKeyDown,\n ...rest\n } = props;\n const { open, referenceElement, surfaceId } = useSurfaceContext();\n const breakpoint = useBreakpoint();\n // `useBreakpoint` is undefined until measured; treat that as popover, not drawer.\n const isDrawerMode = breakpoint ? !breakpoint.md : false;\n const [localElement, setLocalElement] = useState<HTMLDivElement | null>(\n null,\n );\n const localRef = useRef<HTMLDivElement | null>(null);\n const setLocalRef = useCallback((node: HTMLDivElement | null) => {\n localRef.current = node;\n setLocalElement(node);\n }, []);\n const surfaceRef = useMergeRefs([setLocalRef, ref]);\n const layerId = `${surfaceId}-layer`;\n const titleId = `${surfaceId}-title`;\n const resolvedWidth = resolveCssDimension(width, \"325px\");\n const resolvedMaxHeight = resolveCssDimension(maxHeight, \"450px\");\n const handleCancel = onCancel ?? onClose;\n const [geometry, setGeometry] = useState<SurfaceGeometry | null>(null);\n const interactionRef = useRef<SurfaceInteraction>({ type: \"idle\" });\n const keyboardInteractionModeRef =\n useRef<SurfaceKeyboardInteractionMode | null>(null);\n const pressedArrowKeysRef = useRef<SurfacePressedArrowKeys>(\n createSurfacePressedArrowKeys(),\n );\n const keyboardShiftKeyRef = useRef(false);\n const keyboardAnimationFrameRef = useRef<number | null>(null);\n const keyboardLastStepTimestampRef = useRef<number | null>(null);\n\n const getClampOptions = useCallback(\n (measuredHeight?: number): ClampSurfaceGeometryOptions => {\n const boundaryRect =\n intersectionBoundaryRef?.current?.getBoundingClientRect();\n const intersectionBoundary: SurfaceRect | null = boundaryRect\n ? {\n x: boundaryRect.x,\n y: boundaryRect.y,\n width: boundaryRect.width,\n height: boundaryRect.height,\n }\n : null;\n\n return {\n measuredHeight,\n intersectionBoundary,\n };\n },\n [intersectionBoundaryRef],\n );\n\n const restoreResizeIntersection = useCallback(() => {\n const viewport = getViewportSize();\n const measuredHeight = localRef.current\n ? getMeasuredSurfaceHeight(localRef.current)\n : undefined;\n const clampOptions = getClampOptions(measuredHeight);\n\n setGeometry((currentGeometry) =>\n currentGeometry\n ? restoreSurfaceGeometryIntersection(\n currentGeometry,\n viewport,\n clampOptions,\n )\n : currentGeometry,\n );\n }, [getClampOptions]);\n\n const cancelKeyboardAnimationFrame = useCallback(() => {\n if (keyboardAnimationFrameRef.current !== null) {\n window.cancelAnimationFrame(keyboardAnimationFrameRef.current);\n keyboardAnimationFrameRef.current = null;\n }\n\n keyboardLastStepTimestampRef.current = null;\n }, []);\n\n const clearKeyboardInteraction = useCallback(() => {\n cancelKeyboardAnimationFrame();\n keyboardInteractionModeRef.current = null;\n pressedArrowKeysRef.current = createSurfacePressedArrowKeys();\n keyboardShiftKeyRef.current = false;\n }, [cancelKeyboardAnimationFrame]);\n\n const applyKeyboardInteractionStep = useCallback(() => {\n const mode = keyboardInteractionModeRef.current;\n if (!mode) return;\n\n const axis = getKeyboardAxisDelta(pressedArrowKeysRef.current);\n if (!hasKeyboardAxisDelta(axis)) return;\n\n const step = getInteractionStep(keyboardShiftKeyRef.current);\n const viewport = getViewportSize();\n\n if (mode === \"drag\") {\n const measuredHeight = localRef.current\n ? getMeasuredSurfaceHeight(localRef.current)\n : undefined;\n const clampOptions = getClampOptions(measuredHeight);\n\n setGeometry((currentGeometry) =>\n currentGeometry\n ? clampSurfaceGeometry(\n {\n ...currentGeometry,\n x: currentGeometry.x + axis.x * step,\n y: currentGeometry.y + axis.y * step,\n isUserModified: true,\n },\n viewport,\n clampOptions,\n )\n : currentGeometry,\n );\n return;\n }\n\n setGeometry((currentGeometry) => {\n if (!currentGeometry || !localRef.current) return currentGeometry;\n\n const rect = localRef.current.getBoundingClientRect();\n\n return clampActiveResizeSurfaceGeometry(\n {\n ...currentGeometry,\n width: currentGeometry.width + axis.x * step,\n height: (currentGeometry.height ?? rect.height) + axis.y * step,\n isUserModified: true,\n hasUserResized: true,\n },\n viewport,\n );\n });\n }, [getClampOptions]);\n\n const runKeyboardInteractionFrame = useCallback(\n (timestamp: number) => {\n const mode = keyboardInteractionModeRef.current;\n const pressedKeys = pressedArrowKeysRef.current;\n\n if (!mode || !hasPressedSurfaceArrowKey(pressedKeys)) {\n clearKeyboardInteraction();\n return;\n }\n\n const axis = getKeyboardAxisDelta(pressedKeys);\n if (!hasKeyboardAxisDelta(axis)) {\n cancelKeyboardAnimationFrame();\n return;\n }\n\n const lastStepTimestamp = keyboardLastStepTimestampRef.current;\n if (\n lastStepTimestamp === null ||\n timestamp - lastStepTimestamp >= SURFACE_KEYBOARD_STEP_INTERVAL_MS\n ) {\n keyboardLastStepTimestampRef.current = timestamp;\n applyKeyboardInteractionStep();\n }\n\n keyboardAnimationFrameRef.current = window.requestAnimationFrame(\n runKeyboardInteractionFrame,\n );\n },\n [\n applyKeyboardInteractionStep,\n cancelKeyboardAnimationFrame,\n clearKeyboardInteraction,\n ],\n );\n\n const startKeyboardInteractionLoop = useCallback(() => {\n if (keyboardAnimationFrameRef.current !== null) return;\n\n keyboardLastStepTimestampRef.current = null;\n keyboardAnimationFrameRef.current = window.requestAnimationFrame(\n runKeyboardInteractionFrame,\n );\n }, [runKeyboardInteractionFrame]);\n\n useOnClickOutside({\n targets: [\n localElement ?? undefined,\n referenceElement.current ?? undefined,\n ],\n onClickOutside: () => {\n onClose();\n },\n disable: !open,\n layerId,\n });\n\n const updatePosition = useCallback(async () => {\n if (isDrawerMode || !localRef.current || !referenceElement.current)\n return;\n\n const surfaceElement = localRef.current;\n const position = await computePosition(\n referenceElement.current,\n surfaceElement,\n {\n placement: \"bottom-start\",\n middleware: [\n offset(8),\n autoPlacement({\n allowedPlacements: [\n \"bottom-start\",\n \"bottom-end\",\n \"top-start\",\n \"top-end\",\n ],\n padding: SURFACE_VIEWPORT_PADDING,\n }),\n shift({ padding: SURFACE_VIEWPORT_PADDING }),\n size({\n padding: SURFACE_VIEWPORT_PADDING,\n apply({ availableHeight, availableWidth, elements }) {\n // Keep user-dragged width; size() would otherwise reset it.\n const isUserModified =\n elements.floating.getAttribute(\"data-user-modified\") ===\n \"true\";\n Object.assign(elements.floating.style, {\n width: isUserModified\n ? elements.floating.style.width\n : resolvedWidth,\n maxWidth: `${Math.max(0, availableWidth)}px`,\n maxHeight: `min(${resolvedMaxHeight}, ${Math.max(0, availableHeight)}px)`,\n });\n },\n }),\n ],\n },\n );\n\n const viewport = getViewportSize();\n const measuredWidth = getElementDimension(\n surfaceElement,\n resolvedWidth,\n 325,\n \"width\",\n );\n const measuredHeight = getMeasuredSurfaceHeight(surfaceElement);\n const clampOptions = getClampOptions(measuredHeight);\n\n setGeometry((currentGeometry) => {\n if (currentGeometry?.isUserModified) {\n return clampSurfaceGeometry(currentGeometry, viewport, clampOptions);\n }\n\n return clampSurfaceGeometry(\n {\n x: position.x,\n y: position.y,\n width: measuredWidth,\n height: null,\n isUserModified: false,\n hasUserResized: false,\n },\n viewport,\n clampOptions,\n );\n });\n }, [\n getClampOptions,\n isDrawerMode,\n referenceElement,\n resolvedMaxHeight,\n resolvedWidth,\n ]);\n\n useEffect(() => {\n if (\n isDrawerMode ||\n !open ||\n !localRef.current ||\n !referenceElement.current\n ) {\n return;\n }\n\n return autoUpdate(referenceElement.current, localRef.current, () => {\n void updatePosition();\n });\n }, [isDrawerMode, open, referenceElement, updatePosition]);\n\n useEffect(() => {\n if (!localRef.current) return;\n\n if (open) {\n safeShowPopover(localRef.current);\n if (!isDrawerMode) {\n void updatePosition();\n }\n return;\n }\n\n interactionRef.current = { type: \"idle\" };\n clearKeyboardInteraction();\n setGeometry(null);\n safeHidePopover(localRef.current);\n }, [clearKeyboardInteraction, isDrawerMode, open, updatePosition]);\n\n useEffect(() => {\n if (!isDrawerMode) return;\n\n interactionRef.current = { type: \"idle\" };\n clearKeyboardInteraction();\n setGeometry(null);\n }, [clearKeyboardInteraction, isDrawerMode]);\n\n useEffect(() => {\n if (!open) return;\n\n registerLayer(layerId);\n return () => {\n unregisterLayer(layerId);\n };\n }, [layerId, open]);\n\n useEffect(() => {\n return () => {\n clearKeyboardInteraction();\n };\n }, [clearKeyboardInteraction]);\n\n useEffect(() => {\n if (!open || !initialFocusRef?.current) return;\n\n const focusHandle = window.requestAnimationFrame(() => {\n initialFocusRef.current?.focus();\n });\n\n return () => {\n window.cancelAnimationFrame(focusHandle);\n };\n }, [initialFocusRef, open]);\n\n const handleSurfaceKeyDown = useCallback(\n (event: ReactKeyboardEvent<HTMLDivElement>) => {\n onKeyDown?.(event);\n if (event.defaultPrevented) return;\n\n if (event.key === \"Escape\") {\n event.preventDefault();\n event.stopPropagation();\n handleCancel();\n }\n },\n [handleCancel, onKeyDown],\n );\n\n const handleDragPointerDown = useCallback(\n (event: ReactPointerEvent<HTMLButtonElement>) => {\n if (event.button !== 0 || isDrawerMode || !geometry) return;\n\n event.preventDefault();\n event.currentTarget.setPointerCapture(event.pointerId);\n interactionRef.current = {\n type: \"dragging\",\n pointerId: event.pointerId,\n startClientX: event.clientX,\n startClientY: event.clientY,\n startX: geometry.x,\n startY: geometry.y,\n };\n },\n [geometry, isDrawerMode],\n );\n\n const handleResizePointerDown = useCallback(\n (event: ReactPointerEvent<HTMLButtonElement>) => {\n if (\n event.button !== 0 ||\n isDrawerMode ||\n !geometry ||\n !localRef.current\n ) {\n return;\n }\n\n const rect = localRef.current.getBoundingClientRect();\n\n event.preventDefault();\n event.currentTarget.setPointerCapture(event.pointerId);\n interactionRef.current = {\n type: \"resizing\",\n pointerId: event.pointerId,\n startClientX: event.clientX,\n startClientY: event.clientY,\n startWidth: rect.width > 0 ? rect.width : geometry.width,\n startHeight: geometry.height ?? rect.height,\n };\n },\n [geometry, isDrawerMode],\n );\n\n const handleInteractionPointerMove = useCallback(\n (event: ReactPointerEvent<HTMLButtonElement>) => {\n const interaction = interactionRef.current;\n if (\n interaction.type === \"idle\" ||\n interaction.pointerId !== event.pointerId\n ) {\n return;\n }\n\n event.preventDefault();\n const deltaX = event.clientX - interaction.startClientX;\n const deltaY = event.clientY - interaction.startClientY;\n const viewport = getViewportSize();\n const measuredHeight = localRef.current\n ? getMeasuredSurfaceHeight(localRef.current)\n : undefined;\n const clampOptions = getClampOptions(measuredHeight);\n\n setGeometry((currentGeometry) => {\n if (!currentGeometry) return currentGeometry;\n\n if (interaction.type === \"dragging\") {\n return clampSurfaceGeometry(\n {\n ...currentGeometry,\n x: interaction.startX + deltaX,\n y: interaction.startY + deltaY,\n isUserModified: true,\n },\n viewport,\n clampOptions,\n );\n }\n\n return clampActiveResizeSurfaceGeometry(\n {\n ...currentGeometry,\n width: interaction.startWidth + deltaX,\n height: interaction.startHeight + deltaY,\n isUserModified: true,\n hasUserResized: true,\n },\n viewport,\n );\n });\n },\n [getClampOptions],\n );\n\n const handleInteractionPointerEnd = useCallback(\n (event: ReactPointerEvent<HTMLButtonElement>) => {\n const interaction = interactionRef.current;\n if (\n interaction.type === \"idle\" ||\n interaction.pointerId !== event.pointerId\n ) {\n return;\n }\n\n const shouldRestoreIntersection = interaction.type === \"resizing\";\n\n if (event.currentTarget.hasPointerCapture(event.pointerId)) {\n event.currentTarget.releasePointerCapture(event.pointerId);\n }\n\n interactionRef.current = { type: \"idle\" };\n\n if (shouldRestoreIntersection) {\n restoreResizeIntersection();\n }\n },\n [restoreResizeIntersection],\n );\n\n const handleDragKeyboardInteractionBlur = useCallback(() => {\n clearKeyboardInteraction();\n }, [clearKeyboardInteraction]);\n\n const handleResizeKeyboardInteractionBlur = useCallback(() => {\n restoreResizeIntersection();\n clearKeyboardInteraction();\n }, [clearKeyboardInteraction, restoreResizeIntersection]);\n\n const handleDragKeyDown = useCallback(\n (event: ReactKeyboardEvent<HTMLButtonElement>) => {\n if (isDrawerMode || !isSurfaceArrowKey(event.key)) return;\n\n event.preventDefault();\n event.stopPropagation();\n pressedArrowKeysRef.current[event.key] = true;\n keyboardShiftKeyRef.current = event.shiftKey;\n keyboardInteractionModeRef.current = \"drag\";\n startKeyboardInteractionLoop();\n },\n [isDrawerMode, startKeyboardInteractionLoop],\n );\n\n const handleDragKeyUp = useCallback(\n (event: ReactKeyboardEvent<HTMLButtonElement>) => {\n if (isDrawerMode || !isSurfaceArrowKey(event.key)) return;\n\n event.preventDefault();\n event.stopPropagation();\n pressedArrowKeysRef.current[event.key] = false;\n keyboardShiftKeyRef.current = event.shiftKey;\n\n if (!hasPressedSurfaceArrowKey(pressedArrowKeysRef.current)) {\n clearKeyboardInteraction();\n return;\n }\n\n keyboardInteractionModeRef.current = \"drag\";\n if (\n hasKeyboardAxisDelta(\n getKeyboardAxisDelta(pressedArrowKeysRef.current),\n )\n ) {\n startKeyboardInteractionLoop();\n }\n },\n [clearKeyboardInteraction, isDrawerMode, startKeyboardInteractionLoop],\n );\n\n const handleResizeKeyDown = useCallback(\n (event: ReactKeyboardEvent<HTMLButtonElement>) => {\n if (isDrawerMode || !isSurfaceArrowKey(event.key)) return;\n\n event.preventDefault();\n event.stopPropagation();\n pressedArrowKeysRef.current[event.key] = true;\n keyboardShiftKeyRef.current = event.shiftKey;\n keyboardInteractionModeRef.current = \"resize\";\n startKeyboardInteractionLoop();\n },\n [isDrawerMode, startKeyboardInteractionLoop],\n );\n\n const handleResizeKeyUp = useCallback(\n (event: ReactKeyboardEvent<HTMLButtonElement>) => {\n if (isDrawerMode || !isSurfaceArrowKey(event.key)) return;\n\n event.preventDefault();\n event.stopPropagation();\n pressedArrowKeysRef.current[event.key] = false;\n keyboardShiftKeyRef.current = event.shiftKey;\n\n if (!hasPressedSurfaceArrowKey(pressedArrowKeysRef.current)) {\n restoreResizeIntersection();\n clearKeyboardInteraction();\n return;\n }\n\n keyboardInteractionModeRef.current = \"resize\";\n if (\n hasKeyboardAxisDelta(\n getKeyboardAxisDelta(pressedArrowKeysRef.current),\n )\n ) {\n startKeyboardInteractionLoop();\n }\n },\n [\n clearKeyboardInteraction,\n isDrawerMode,\n restoreResizeIntersection,\n startKeyboardInteractionLoop,\n ],\n );\n\n const defaultLabelProps =\n !(\"aria-label\" in rest) && !(\"aria-labelledby\" in rest) && title\n ? { \"aria-labelledby\": titleId }\n : {};\n\n // Surface stays non-modal here: callers like DataTable custom editors rely on\n // surrounding table focus/navigation remaining available while the dialog is open.\n const dialogProps = {\n role: open ? \"dialog\" : undefined,\n \"aria-modal\": false,\n } as const;\n\n const surfaceStyle: CSSProperties = isDrawerMode\n ? { ...style }\n : {\n ...style,\n left: geometry ? `${geometry.x}px` : undefined,\n top: geometry ? `${geometry.y}px` : undefined,\n width: geometry ? `${geometry.width}px` : resolvedWidth,\n maxWidth: geometry\n ? `${getMaxSurfaceWidth(getViewportSize(), geometry.x)}px`\n : undefined,\n height:\n geometry?.hasUserResized && geometry.height !== null\n ? `${geometry.height}px`\n : undefined,\n maxHeight:\n geometry?.hasUserResized && geometry.height !== null\n ? undefined\n : resolvedMaxHeight,\n };\n\n const portalSurfaceStyle = usePortalScopeStyle(surfaceStyle);\n\n return (\n // eslint-disable-next-line jsx-a11y/no-static-element-interactions -- Surface dialog handles keyboard shortcuts for moving and resizing its nested controls.\n <div\n {...rest}\n {...defaultLabelProps}\n id={surfaceId}\n ref={surfaceRef}\n popover=\"manual\"\n {...dialogProps}\n tabIndex={-1}\n className={cx(className, styles[\"surface\"], portalScopeClassNames)}\n style={portalSurfaceStyle}\n onKeyDown={handleSurfaceKeyDown}\n data-anv=\"surface-content\"\n data-surface-variant={isDrawerMode ? \"drawer\" : \"popover\"}\n data-user-modified={geometry?.isUserModified ? \"true\" : undefined}\n >\n <div\n className={cx(styles[\"header\"], {\n [styles[\"header-bottom-border\"]]: title,\n })}\n >\n <div className={styles[\"header-copy\"]}>\n {title ? (\n <div id={titleId} className={styles[\"title\"]}>\n {title}\n </div>\n ) : null}\n </div>\n <div className={styles[\"header-actions\"]}>\n {headerContent}\n {!isDrawerMode ? (\n <Button\n appearance=\"ghost\"\n aria-label=\"Move surface\"\n className={styles[\"drag-handle\"]}\n data-anv=\"surface-drag-handle\"\n icon={DragIndicator}\n onBlur={handleDragKeyboardInteractionBlur}\n onKeyDown={handleDragKeyDown}\n onKeyUp={handleDragKeyUp}\n onPointerCancel={handleInteractionPointerEnd}\n onPointerDown={handleDragPointerDown}\n onPointerMove={handleInteractionPointerMove}\n onPointerUp={handleInteractionPointerEnd}\n size=\"small\"\n type=\"button\"\n />\n ) : null}\n <Button\n appearance=\"ghost\"\n aria-label={closeButtonLabel}\n className={styles[\"close-button\"]}\n data-anv=\"surface-close-button\"\n icon={Close}\n onClick={onClose}\n size=\"small\"\n type=\"button\"\n />\n </div>\n </div>\n <div\n className={cx(styles[\"content\"], {\n [styles[\"content-title-spacing\"]]: title,\n })}\n >\n {children}\n </div>\n {!isDrawerMode ? (\n <button\n aria-label=\"Resize surface\"\n className={styles[\"resize-handle\"]}\n data-anv=\"surface-resize-handle\"\n onBlur={handleResizeKeyboardInteractionBlur}\n onKeyDown={handleResizeKeyDown}\n onKeyUp={handleResizeKeyUp}\n onPointerDown={handleResizePointerDown}\n onPointerMove={handleInteractionPointerMove}\n onPointerUp={handleInteractionPointerEnd}\n onPointerCancel={handleInteractionPointerEnd}\n type=\"button\"\n >\n <ResizeWindowAlt aria-hidden=\"true\" data-anv=\"icon\" />\n </button>\n ) : null}\n </div>\n );\n },\n);\n\nSurfaceContent.displayName = \"SurfaceContent\";\n\n/**\n * Compound overlay: `Trigger` (render prop) plus positioned `Content`.\n *\n * @example\n * <Surface open={open}>\n * <Surface.Trigger>\n * {(triggerProps) => <Button {...triggerProps}>Open filters</Button>}\n * </Surface.Trigger>\n * <Surface.Content title=\"Filters\" onClose={() => setOpen(false)}>\n * <FilterForm />\n * </Surface.Content>\n * </Surface>\n */\nexport const Surface = Object.assign(\n function Surface({ children, open, id }: SurfaceProps) {\n const generatedId = useId();\n // useId includes colons; strip so the id is a valid CSS identifier.\n const cleanId = generatedId.replace(/:/g, \"\");\n const surfaceId = id ?? `surface-${cleanId}`;\n const triggerId = `${surfaceId}-trigger`;\n const referenceElement = useRef<HTMLElement | null>(null);\n\n const setReference = useCallback((node: Element | null) => {\n referenceElement.current = node as HTMLElement | null;\n }, []);\n\n const value = useMemo<SurfaceContextProps>(\n () => ({\n open,\n surfaceId,\n triggerId,\n referenceElement,\n setReference,\n }),\n [open, setReference, surfaceId, triggerId],\n );\n\n return (\n <SurfaceContext.Provider value={value}>\n {children}\n </SurfaceContext.Provider>\n );\n },\n {\n /** Render-prop trigger that registers the positioning reference. */\n Trigger: SurfaceTrigger,\n /** Positioned non-modal content; drawer below `md`. */\n Content: SurfaceContent,\n },\n);\n","export type BooleanFormatterOptions = {\n /** Label when `value` is `true`. Defaults to `\"True\"`. */\n trueLabel?: string;\n /** Label when `value` is `false`. Defaults to `\"False\"`. */\n falseLabel?: string;\n};\n\n/**\n * Formats a boolean for a table cell. `null` and `undefined` return `null`\n * (empty cell); they do not use either label.\n */\nexport const booleanFormatter = (\n value?: boolean | null,\n { trueLabel = \"True\", falseLabel = \"False\" }: BooleanFormatterOptions = {},\n) => {\n if (value == null) {\n return null;\n }\n return value ? trueLabel : falseLabel;\n};\n","import styles from \"./TableCells.module.scss\";\n\n/**\n * Em-dash placeholder that announces an empty table cell.\n */\nexport const TableEmptyCellContent = () => {\n return (\n <span aria-label=\"empty table cell\" className={styles[\"empty-cell\"]}>\n —\n </span>\n );\n};\n","import {\n type ComponentPropsWithoutRef,\n useCallback,\n useLayoutEffect,\n useRef,\n useState,\n} from \"react\";\nimport { Chip, type ChipProps } from \"../../../../components/Chip\";\nimport { Tooltip } from \"../../../../components/Tooltip\";\nimport cx from \"classnames\";\nimport styles from \"./TruncateChips.module.scss\";\n\nexport type TruncateChipsProps = ComponentPropsWithoutRef<\"div\"> & {\n /** Chips measured in order; trailing items collapse into the overflow chip. */\n items: ChipProps[];\n};\n\n/**\n * Renders a single row of chips and collapses any that do not\n * fit into a `+N` overflow chip with a tooltip listing the hidden labels.\n */\nexport const TruncateChips = ({\n items = [],\n className,\n ...rest\n}: TruncateChipsProps) => {\n const containerRef = useRef<HTMLDivElement>(null);\n const measurementRef = useRef<HTMLDivElement>(null);\n const measurementPlusRef = useRef<HTMLSpanElement>(null);\n const [visibleCount, setVisibleCount] = useState<number | null>(null);\n const overflowChipSize = items[0]?.size;\n\n const compute = useCallback(() => {\n const container = containerRef.current;\n const measurement = measurementRef.current;\n if (!container || !measurement) return;\n\n const parent = container.parentElement;\n if (!parent) return;\n\n // Chips fill the parent content box; clientWidth also includes its padding.\n const parentStyle = window.getComputedStyle(parent);\n const paddingLeft = parseFloat(parentStyle.paddingLeft) || 0;\n const paddingRight = parseFloat(parentStyle.paddingRight) || 0;\n const availableWidth = parent.clientWidth - paddingLeft - paddingRight;\n\n if (items.length === 0) {\n setVisibleCount(0);\n return;\n }\n if (availableWidth <= 0) return;\n\n const gap =\n parseFloat(window.getComputedStyle(measurement).columnGap || \"0\") || 0;\n const chipNodes = Array.from(measurement.children).slice(\n 0,\n items.length,\n ) as HTMLElement[];\n const plusWidth =\n measurementPlusRef.current?.getBoundingClientRect().width ?? 0;\n\n let widthUsed = 0;\n let fitAll = true;\n for (let i = 0; i < chipNodes.length; i++) {\n const chipWidth = chipNodes[i].getBoundingClientRect().width;\n const widthWithChip = widthUsed + (i > 0 ? gap : 0) + chipWidth;\n if (widthWithChip > availableWidth) {\n fitAll = false;\n break;\n }\n widthUsed = widthWithChip;\n }\n if (fitAll) {\n setVisibleCount(items.length);\n return;\n }\n\n // Once anything overflows, reserve the disclosure width before recomputing.\n const availableForChips = availableWidth - plusWidth - gap;\n widthUsed = 0;\n let fit = 0;\n for (let i = 0; i < chipNodes.length; i++) {\n const chipWidth = chipNodes[i].getBoundingClientRect().width;\n const next = widthUsed + (i > 0 ? gap : 0) + chipWidth;\n if (next > availableForChips) break;\n widthUsed = next;\n fit = i + 1;\n }\n setVisibleCount(fit);\n }, [items]);\n\n useLayoutEffect(() => {\n compute();\n\n const parent = containerRef.current?.parentElement;\n if (!parent) return;\n\n const observer = new ResizeObserver(() => {\n compute();\n });\n observer.observe(parent);\n\n return () => {\n observer.disconnect();\n };\n }, [compute]);\n\n const hiddenCount =\n visibleCount === null ? 0 : Math.max(0, items.length - visibleCount);\n const visibleItems =\n visibleCount === null ? [] : items.slice(0, visibleCount);\n const hiddenItems = visibleCount === null ? [] : items.slice(visibleCount);\n\n return (\n <div\n ref={containerRef}\n data-anv=\"truncate-chips\"\n className={cx(styles[\"truncate-chips\"], className)}\n style={{ visibility: visibleCount === null ? \"hidden\" : undefined }}\n {...rest}\n >\n {/* Natural-width copies stay out of flow so only the final row paints. */}\n <div\n ref={measurementRef}\n data-anv=\"truncate-chips-measurement\"\n className={styles[\"truncate-chips-measurement\"]}\n aria-hidden\n >\n {items.map((chip, index) => (\n <Chip key={index} {...chip} />\n ))}\n <Chip\n ref={measurementPlusRef}\n label={`+${items.length || 1}`}\n size={overflowChipSize}\n />\n </div>\n\n {visibleItems.map((chip, index) => (\n <Chip key={index} {...chip} />\n ))}\n {hiddenCount > 0 && (\n <Tooltip placement=\"top\">\n <Tooltip.Trigger>\n <Chip label={`+${hiddenCount}`} size={overflowChipSize} />\n </Tooltip.Trigger>\n <Tooltip.Content>\n {hiddenItems.map((item) => item.label).join(\", \")}\n </Tooltip.Content>\n </Tooltip>\n )}\n </div>\n );\n};\n","import { Chip, type ChipProps } from \"../../../../components/Chip\";\nimport { Flex } from \"../../../../components/Flex\";\nimport { TableEmptyCellContent } from \"../base/cells/TableEmptyCellContent\";\nimport { TruncateChips } from \"../internal/TruncateChips\";\n\n/**\n * One chip or many. Arrays must be all strings or all {@link ChipProps} — mixed\n * arrays are treated as `ChipProps[]`.\n */\nexport type ChipsValueType = string | string[] | ChipProps | ChipProps[];\n\nexport type ChipsFormatterOptions = {\n /**\n * When `true`, array values overflow into a +N disclosure instead of wrapping.\n * Ignored for a single chip. Defaults to wrapping.\n */\n truncateChips?: boolean;\n};\n\nconst getChipPropsWithDefaultSize = (chipProps: ChipProps): ChipProps => {\n if (chipProps.size !== undefined) {\n return chipProps;\n }\n\n // Chip forbids `small` when the chip is both clickable and dismissible.\n if (chipProps.onClick !== undefined && chipProps.onClose !== undefined) {\n return {\n ...chipProps,\n size: \"medium\",\n };\n }\n\n if (chipProps.onClick !== undefined) {\n return {\n ...chipProps,\n onClick: chipProps.onClick,\n onClose: undefined,\n size: \"small\",\n };\n }\n\n if (chipProps.onClose !== undefined) {\n return {\n ...chipProps,\n onClick: undefined,\n onClose: chipProps.onClose,\n size: \"small\",\n };\n }\n\n return {\n ...chipProps,\n onClick: undefined,\n onClose: undefined,\n size: \"small\",\n };\n};\n\n/**\n * Renders chips for a table cell. Falsy values and empty arrays become\n * {@link TableEmptyCellContent} (`—`). Unspecified `size` is `\"small\"`, or\n * `\"medium\"` when both `onClick` and `onClose` are set.\n */\nexport const chipsFormatter = (\n value?: ChipsValueType,\n { truncateChips }: ChipsFormatterOptions = { truncateChips: false },\n) => {\n if (!value) return <TableEmptyCellContent />;\n\n if (Array.isArray(value)) {\n if (value.length === 0) {\n return <TableEmptyCellContent />;\n }\n\n const isStringArray = value.every((v) => typeof v === \"string\");\n const items = isStringArray\n ? value.map((v) => getChipPropsWithDefaultSize({ label: v }))\n : (value as ChipProps[]).map(getChipPropsWithDefaultSize);\n\n if (truncateChips) {\n return <TruncateChips items={items} />;\n }\n\n return (\n <Flex direction=\"row\" gap=\"2\" wrap=\"wrap\">\n {items.map((item, index) => (\n <Chip key={`${item.label}-${index}`} {...item} />\n ))}\n </Flex>\n );\n }\n\n if (typeof value === \"string\") {\n return <Chip label={value} size=\"small\" />;\n }\n\n return <Chip {...getChipPropsWithDefaultSize(value)} />;\n};\n","export type CurrencyFormatterOptions = {\n /** `Intl` locale. Defaults to `\"en-US\"`. */\n locale?: Intl.LocalesArgument;\n /** ISO 4217 currency code. Defaults to `\"USD\"`. */\n currency?: Intl.NumberFormatOptions[\"currency\"];\n};\n\n/**\n * Formats a number as currency via `Intl`. Nullish values return `null`.\n */\nexport const currencyFormatter = (\n value?: number,\n options: CurrencyFormatterOptions = {},\n) => {\n const { locale = \"en-US\", currency = \"USD\" } = options;\n\n return value != null\n ? value.toLocaleString(locale, {\n style: \"currency\",\n currency,\n })\n : null;\n};\n","/** Named date bags for {@link dateFormatter} / {@link dateTimeFormatter}. */\nexport type DateFormatPreset = \"short\" | \"medium\" | \"long\" | \"full\";\n\n/** Named time bags for {@link timeFormatter} / {@link dateTimeFormatter}. */\nexport type TimeFormatPreset = \"short\" | \"medium\";\n\n/** `Intl.DateTimeFormatOptions` for each {@link DateFormatPreset}. */\nexport const dateFormatPresets: Record<\n DateFormatPreset,\n Intl.DateTimeFormatOptions\n> = {\n short: { year: \"numeric\", month: \"2-digit\", day: \"2-digit\" },\n medium: { year: \"numeric\", month: \"short\", day: \"2-digit\" },\n long: { year: \"numeric\", month: \"long\", day: \"2-digit\" },\n full: { weekday: \"long\", year: \"numeric\", month: \"long\", day: \"2-digit\" },\n};\n\n/** `Intl.DateTimeFormatOptions` for each {@link TimeFormatPreset}. */\nexport const timeFormatPresets: Record<\n TimeFormatPreset,\n Intl.DateTimeFormatOptions\n> = {\n short: { hour: \"2-digit\", minute: \"2-digit\" },\n medium: { hour: \"2-digit\", minute: \"2-digit\", second: \"2-digit\" },\n};\n","import { DateTime } from \"luxon\";\nimport { type DateFormatPreset, dateFormatPresets } from \"./presets\";\n\nexport type { DateFormatPreset };\n\nexport type DateFormatterOptions = {\n /** `Intl` locale. Defaults to `\"en-US\"`. */\n locale?: Intl.LocalesArgument;\n /**\n * Preset name or a custom `Intl.DateTimeFormatOptions` bag. Preset samples\n * below are `en-US`; other locales differ. Defaults to `\"short\"`.\n * - `\"short\"`: 01/15/2024\n * - `\"medium\"`: Jan 15, 2024\n * - `\"long\"`: January 15, 2024\n * - `\"full\"`: Monday, January 15, 2024\n */\n format?: DateFormatPreset | Intl.DateTimeFormatOptions;\n};\n\n/**\n * Formats a calendar date (`YYYY-MM-DD`) without applying a timezone offset.\n * For `Date` objects or ISO strings with time/zone, use {@link dateTimeFormatter}.\n * Invalid or missing values return `null`.\n */\nexport const dateFormatter = (\n value?: string | null,\n { locale = \"en-US\", format = \"short\" }: DateFormatterOptions = {},\n) => {\n if (value == null) {\n return null;\n }\n\n // UTC so a date-only ISO is not shifted by the local zone.\n const dateTime = DateTime.fromISO(value, { zone: \"utc\" });\n\n if (!dateTime.isValid) {\n return null;\n }\n\n const localeString = locale?.toString() ?? \"en-US\";\n\n if (typeof format === \"string\") {\n const preset = dateFormatPresets[format];\n return dateTime.setLocale(localeString).toLocaleString(preset);\n }\n\n return dateTime.setLocale(localeString).toLocaleString(format);\n};\n","import { DateTime } from \"luxon\";\nimport type { IanaZone } from \"../../../../types\";\nimport {\n type DateFormatPreset,\n type TimeFormatPreset,\n dateFormatPresets,\n timeFormatPresets,\n} from \"./presets\";\n\n/** Alias of {@link DateFormatPreset} for the date portion. */\nexport type DateTimeFormatDatePreset = DateFormatPreset;\n\n/** {@link TimeFormatPreset} plus `\"none\"` to omit the time. */\nexport type DateTimeFormatTimePreset = TimeFormatPreset | \"none\";\n\nexport type DateTimeFormatterOptions = {\n /** `Intl` locale. Defaults to `\"en-US\"`. */\n locale?: Intl.LocalesArgument;\n /**\n * Date portion: a {@link DateTimeFormatDatePreset} or a custom\n * `Intl.DateTimeFormatOptions` bag. Preset samples below are `en-US`.\n * Defaults to `\"short\"`.\n * - `\"short\"`: 01/15/2024\n * - `\"medium\"`: Jan 15, 2024\n * - `\"long\"`: January 15, 2024\n * - `\"full\"`: Monday, January 15, 2024\n */\n dateFormat?: DateTimeFormatDatePreset | Intl.DateTimeFormatOptions;\n /**\n * Time portion: a {@link DateTimeFormatTimePreset}, `\"none\"` (date only), or\n * a custom `Intl.DateTimeFormatOptions` bag. Preset samples below are `en-US`.\n * Defaults to `\"short\"`.\n * - `\"short\"`: 08:30 AM\n * - `\"medium\"`: 08:30:00 AM\n */\n timeFormat?: DateTimeFormatTimePreset | Intl.DateTimeFormatOptions;\n /**\n * IANA zone applied to `Date` values; omitted uses the local zone. ISO strings\n * ignore this: zoneless strings remain wall times, while strings with `Z` or\n * an offset are converted to the local zone.\n */\n timeZone?: IanaZone;\n};\n\nconst hasTimezoneInfo = (isoString: string): boolean => {\n return /(?:Z|[+-]\\d{2}:\\d{2})$/.test(isoString);\n};\n\n/**\n * Formats a date-time for a table cell. Invalid or missing values return `null`.\n *\n * `Date` values use the local zone (or {@link DateTimeFormatterOptions.timeZone}).\n * Zoneless ISO strings are wall times with no zone label; strings with `Z` or an\n * offset are instants converted to the local zone. Zoned values default to a\n * short zone name, which custom format options can override.\n */\nexport const dateTimeFormatter = (\n value?: string | Date | null,\n {\n locale = \"en-US\",\n dateFormat = \"short\",\n timeFormat = \"short\",\n timeZone,\n }: DateTimeFormatterOptions = {},\n) => {\n if (value == null) {\n return null;\n }\n\n let dateTime: DateTime;\n let includeTimezone = false;\n\n if (value instanceof Date) {\n if (timeZone) {\n dateTime = DateTime.fromJSDate(value, { zone: timeZone });\n } else {\n dateTime = DateTime.fromJSDate(value);\n }\n // `Date` is an instant; default a short zone name (later options can override).\n includeTimezone = true;\n } else {\n if (hasTimezoneInfo(value)) {\n dateTime = DateTime.fromISO(value);\n if (!dateTime.isValid) {\n return null;\n }\n includeTimezone = true;\n } else {\n // Zoneless ISO: UTC parse so the wall time is not shifted to local.\n dateTime = DateTime.fromISO(value, { zone: \"utc\" });\n }\n }\n\n if (!dateTime.isValid) {\n return null;\n }\n\n const localeString = locale?.toString() ?? \"en-US\";\n const localizedDateTime = dateTime.setLocale(localeString);\n\n const dateOptions: Intl.DateTimeFormatOptions =\n typeof dateFormat === \"string\" ? dateFormatPresets[dateFormat] : dateFormat;\n\n const timeOptions: Intl.DateTimeFormatOptions =\n typeof timeFormat === \"string\"\n ? timeFormat === \"none\"\n ? {}\n : timeFormatPresets[timeFormat]\n : timeFormat;\n\n const formatOptions: Intl.DateTimeFormatOptions = {\n ...(includeTimezone && { timeZoneName: \"short\" }),\n ...dateOptions,\n ...timeOptions,\n };\n\n return localizedDateTime.toLocaleString(formatOptions);\n};\n","const SUPPORTED_INLINE_TAGS = [\n \"strong\",\n \"b\",\n \"em\",\n \"i\",\n \"code\",\n \"mark\",\n \"s\",\n \"strike\",\n \"del\",\n];\n\nconst INLINE_TAG_REGEX = new RegExp(\n `<(${SUPPORTED_INLINE_TAGS.join(\"|\")})(\\\\s[^>]*)?>([\\\\s\\\\S]*?)</\\\\1>`,\n \"gi\",\n);\n\nconst INLINE_WRAPPERS: Record<string, [string, string]> = {\n strong: [\"**\", \"**\"],\n b: [\"**\", \"**\"],\n em: [\"*\", \"*\"],\n i: [\"*\", \"*\"],\n code: [\"`\", \"`\"],\n mark: [\"==\", \"==\"],\n s: [\"~~\", \"~~\"],\n strike: [\"~~\", \"~~\"],\n del: [\"~~\", \"~~\"],\n};\n\nfunction convertInlineTags(html: string): string {\n let result = html;\n let previous = \"\";\n\n while (result !== previous) {\n previous = result;\n result = result.replace(INLINE_TAG_REGEX, (_, tag, _attrs, content) => {\n const normalizedTag = tag.toLowerCase();\n const wrapper = INLINE_WRAPPERS[normalizedTag];\n if (!wrapper) return content;\n return wrapper[0] + convertInlineTags(content) + wrapper[1];\n });\n }\n\n return result;\n}\n\n// `u` (underline) and `span` (font size) come from RichTextEditor defaults.\n// There is no markdown equivalent, so unwrap and keep the text.\nconst UNWRAP_TAGS = [\"u\", \"span\"];\n\nconst UNWRAP_TAG_REGEX = new RegExp(\n `</?(?:${UNWRAP_TAGS.join(\"|\")})(\\\\s[^>]*)?>`,\n \"gi\",\n);\n\nfunction unwrapTags(html: string): string {\n return html.replace(UNWRAP_TAG_REGEX, \"\");\n}\n\nconst BR_REGEX = /<br\\s*\\/?>/gi;\nconst P_OPEN_REGEX = /<p(\\s[^>]*)?>/gi;\nconst P_CLOSE_REGEX = /<\\/p>/gi;\n\nconst HEADING_REGEX = /<h([1-3])(\\s[^>]*)?>([\\s\\S]*?)<\\/h\\1>/gi;\n\nfunction convertHeadings(html: string): string {\n return html.replace(HEADING_REGEX, (_, level: string, _attrs, content) => {\n const hashes = \"#\".repeat(Number(level));\n return `${hashes} ${content.trim()}\\n`;\n });\n}\n\nconst NAMED_ENTITIES: Record<string, string> = {\n amp: \"&\",\n lt: \"<\",\n gt: \">\",\n nbsp: \" \",\n quot: '\"',\n \"#39\": \"'\",\n};\n\nconst ENTITY_REGEX = /&(#x[0-9a-fA-F]+|#\\d+|[a-zA-Z]+);/g;\n\nfunction decodeEntities(text: string): string {\n return text.replace(ENTITY_REGEX, (match, entity: string) => {\n if (entity.startsWith(\"#x\")) {\n return String.fromCharCode(parseInt(entity.slice(2), 16));\n }\n if (entity.startsWith(\"#\")) {\n return String.fromCharCode(parseInt(entity.slice(1), 10));\n }\n return NAMED_ENTITIES[entity] ?? match;\n });\n}\n\nconst SUPPORTED_TAGS = [\n \"strong\",\n \"b\",\n \"em\",\n \"i\",\n \"code\",\n \"mark\",\n \"s\",\n \"strike\",\n \"del\",\n \"h1\",\n \"h2\",\n \"h3\",\n \"ul\",\n \"ol\",\n \"li\",\n \"br\",\n \"p\",\n];\n\nconst UNSUPPORTED_TAG_REGEX = new RegExp(\n `<(?!/?(?:${SUPPORTED_TAGS.join(\"|\")})\\\\b)[a-zA-Z][^>]*>[\\\\s\\\\S]*?</[a-zA-Z][^>]*>`,\n \"gi\",\n);\n\nconst ORPHANED_CLOSE_TAG_REGEX = new RegExp(\n `</(?!(?:${SUPPORTED_TAGS.join(\"|\")})\\\\b)[a-zA-Z][^>]*>`,\n \"gi\",\n);\n\nfunction removeUnsupportedTags(html: string): string {\n let result = html;\n let previous = \"\";\n\n // Nested unsupported tags: inner match first, then outer on the next pass.\n while (result !== previous) {\n previous = result;\n result = result.replace(UNSUPPORTED_TAG_REGEX, \"\");\n }\n\n result = result.replace(ORPHANED_CLOSE_TAG_REGEX, \"\");\n\n return result;\n}\n\nconst UL_REGEX = /<ul(\\s[^>]*)?>[\\s\\S]*?<\\/ul>/gi;\nconst OL_REGEX = /<ol(\\s[^>]*)?>[\\s\\S]*?<\\/ol>/gi;\nconst LI_REGEX = /<li(\\s[^>]*)?>[\\s\\S]*?<\\/li>/gi;\nconst LI_CONTENT_REGEX = /^<li(\\s[^>]*)?>|<\\/li>$/gi;\n\nfunction convertList(listHtml: string, ordered: boolean): string {\n const items = listHtml.match(LI_REGEX);\n if (!items) return \"\";\n\n return items\n .map((item, index) => {\n const content = convertInlineTags(\n item.replace(LI_CONTENT_REGEX, \"\").trim(),\n );\n return ordered ? `${index + 1}. ${content}` : `- ${content}`;\n })\n .join(\"\\n\");\n}\n\nfunction convertLists(html: string): string {\n let result = html;\n result = result.replace(UL_REGEX, (match) => convertList(match, false));\n result = result.replace(OL_REGEX, (match) => convertList(match, true));\n return result;\n}\n\n/**\n * Converts HTML to the subset {@link markdownFormatter} understands.\n *\n * Kept tags: strong, b, em, i, code, mark, s, strike, del, h1–h3, ul, ol, li,\n * br, p. `u` and `span` unwrap to plain text (alignment on p/h1–h3 is ignored).\n * Other tags and their content are dropped. Entities decode to plain text.\n * Nullish or empty input returns `\"\"`.\n */\nexport function htmlToMarkdown(value?: string | null): string {\n if (value == null || value === \"\") {\n return \"\";\n }\n\n let result = value;\n\n // Before removeUnsupportedTags, which would drop these tags *and* their text.\n result = unwrapTags(result);\n\n result = removeUnsupportedTags(result);\n\n // Before `<p>` handling so heading inner HTML still reaches the inline pass.\n result = convertHeadings(result);\n\n result = result.replace(P_OPEN_REGEX, \"\");\n result = result.replace(P_CLOSE_REGEX, \"\\n\");\n\n result = convertLists(result);\n\n result = result.replace(BR_REGEX, \"\\n\");\n\n result = convertInlineTags(result);\n\n // Last so entities inside tags still match as tags.\n result = decodeEntities(result);\n\n result = result.replace(/\\n+$/, \"\");\n\n return result;\n}\n","import type { ReactNode } from \"react\";\nimport styles from \"./MarkdownFormatter.module.scss\";\n\nconst INLINE_REGEX =\n /\\*\\*\\*(.+?)\\*\\*\\*|\\*\\*(.+?)\\*\\*|\\*(.+?)\\*|==(.+?)==|`(.+?)`|~~(.+?)~~/g;\n\nconst UNORDERED_LIST_REGEX = /^- (.+)$/;\nconst ORDERED_LIST_REGEX = /^\\d+\\. (.+)$/;\nconst HEADING_REGEX = /^(#{1,3}) +(\\S.*)$/;\n\nfunction parseInline(text: string): ReactNode[] {\n const parts: ReactNode[] = [];\n let lastIndex = 0;\n\n INLINE_REGEX.lastIndex = 0;\n let match: RegExpExecArray | null;\n\n while ((match = INLINE_REGEX.exec(text)) !== null) {\n if (match.index > lastIndex) {\n parts.push(text.substring(lastIndex, match.index));\n }\n\n const key = match.index;\n // Recursion mutates this shared `/g` regex; restore so the outer scan continues.\n const savedIndex = INLINE_REGEX.lastIndex;\n\n if (match[1]) {\n parts.push(\n <strong key={key}>\n <em>{parseInline(match[1])}</em>\n </strong>,\n );\n } else if (match[2]) {\n parts.push(<strong key={key}>{parseInline(match[2])}</strong>);\n } else if (match[3]) {\n parts.push(<em key={key}>{parseInline(match[3])}</em>);\n } else if (match[4]) {\n parts.push(\n <mark key={key} className={styles.highlight}>\n {parseInline(match[4])}\n </mark>,\n );\n } else if (match[5]) {\n // Nested markdown inside code would be wrong.\n parts.push(\n <code key={key} className={styles.code}>\n {match[5]}\n </code>,\n );\n } else if (match[6]) {\n parts.push(<s key={key}>{parseInline(match[6])}</s>);\n }\n\n INLINE_REGEX.lastIndex = savedIndex;\n lastIndex = savedIndex;\n }\n\n if (lastIndex < text.length) {\n parts.push(text.substring(lastIndex));\n }\n\n return parts;\n}\n\ntype Block =\n | { type: \"text\"; content: string }\n | { type: \"heading\"; level: 1 | 2 | 3; content: string }\n | { type: \"ul\"; items: string[] }\n | { type: \"ol\"; items: string[] };\n\nfunction parseBlocks(text: string): Block[] {\n const lines = text.split(\"\\n\");\n const blocks: Block[] = [];\n let i = 0;\n\n while (i < lines.length) {\n const line = lines[i];\n const headingMatch = line.match(HEADING_REGEX);\n const ulMatch = line.match(UNORDERED_LIST_REGEX);\n const olMatch = line.match(ORDERED_LIST_REGEX);\n\n if (headingMatch) {\n blocks.push({\n type: \"heading\",\n level: headingMatch[1].length as 1 | 2 | 3,\n content: headingMatch[2],\n });\n i++;\n } else if (ulMatch) {\n const items: string[] = [ulMatch[1]];\n i++;\n while (i < lines.length) {\n const nextUl = lines[i].match(UNORDERED_LIST_REGEX);\n if (!nextUl) break;\n items.push(nextUl[1]);\n i++;\n }\n blocks.push({ type: \"ul\", items });\n } else if (olMatch) {\n const items: string[] = [olMatch[1]];\n i++;\n while (i < lines.length) {\n const nextOl = lines[i].match(ORDERED_LIST_REGEX);\n if (!nextOl) break;\n items.push(nextOl[1]);\n i++;\n }\n blocks.push({ type: \"ol\", items });\n } else {\n if (line !== \"\") {\n blocks.push({ type: \"text\", content: line });\n }\n i++;\n }\n }\n\n return blocks;\n}\n\nfunction renderBlocks(blocks: Block[]): ReactNode[] {\n return blocks.map((block, index) => {\n switch (block.type) {\n case \"text\":\n return <span key={index}>{parseInline(block.content)}</span>;\n case \"heading\":\n // Styled text, not a heading element — document headings inside data\n // cells mislead assistive tech that navigates by heading.\n return (\n <span key={index} className={styles[`heading${block.level}`]}>\n {parseInline(block.content)}\n </span>\n );\n case \"ul\":\n return (\n <ul key={index} className={styles.list}>\n {block.items.map((item, i) => (\n <li key={i}>{parseInline(item)}</li>\n ))}\n </ul>\n );\n case \"ol\":\n return (\n <ol key={index} className={styles.list}>\n {block.items.map((item, i) => (\n <li key={i}>{parseInline(item)}</li>\n ))}\n </ol>\n );\n }\n });\n}\n\n/**\n * Renders a markdown subset in a DataTable cell: bold, italic, bold+italic,\n * strikethrough, inline code, `==highlight==`, `#`–`###` headings, and flat\n * `- ` / `N. ` lists. Empty or nullish values return `null`.\n */\nexport const markdownFormatter = (value?: string | null): ReactNode => {\n if (value == null || value === \"\") {\n return null;\n }\n\n const blocks = parseBlocks(value);\n\n if (blocks.length === 1 && blocks[0].type === \"text\") {\n return <>{parseInline(blocks[0].content)}</>;\n }\n\n return <div className={styles.container}>{renderBlocks(blocks)}</div>;\n};\n","import type { ReactNode } from \"react\";\nimport { htmlToMarkdown } from \"./htmlToMarkdown\";\nimport { markdownFormatter } from \"./markdownFormatter\";\n\n/**\n * DataTable cell HTML via {@link htmlToMarkdown} then {@link markdownFormatter}.\n * Empty or nullish HTML becomes `null`.\n */\nexport const htmlFormatter = (value?: string | null): ReactNode => {\n const markdown = htmlToMarkdown(value);\n return markdownFormatter(markdown);\n};\n","export type NumberFormatterOptions = {\n /** `Intl` locale. Defaults to `\"en-US\"`. */\n locale?: Intl.LocalesArgument;\n /** Floor on displayed fraction digits. Defaults to `0`. */\n minimumFractionDigits?: number;\n /** Cap on displayed fraction digits. Defaults to `2`. */\n maximumFractionDigits?: number;\n /** Grouping separators (thousands, etc.). Defaults to `true`. */\n useGrouping?: boolean;\n /**\n * `Intl.NumberFormat` notation. Defaults to `\"standard\"`.\n */\n notation?: \"standard\" | \"scientific\" | \"engineering\" | \"compact\";\n /**\n * `Intl.NumberFormat` sign display. Defaults to `\"auto\"`.\n */\n signDisplay?: \"auto\" | \"never\" | \"always\" | \"exceptZero\";\n};\n\n/**\n * Formats a number with `Intl` decimal style. `null` and `undefined` return\n * `null`.\n */\nexport const numberFormatter = (\n value?: number | null,\n options: NumberFormatterOptions = {},\n) => {\n const {\n locale = \"en-US\",\n minimumFractionDigits = 0,\n maximumFractionDigits = 2,\n useGrouping = true,\n notation = \"standard\",\n signDisplay = \"auto\",\n } = options;\n\n return value != null\n ? value.toLocaleString(locale, {\n style: \"decimal\",\n minimumFractionDigits,\n maximumFractionDigits,\n useGrouping,\n notation,\n signDisplay,\n })\n : null;\n};\n","export type PercentFormatterOptions = {\n /** Fraction digits for both min and max. Defaults to `2`. */\n decimals?: number;\n /** `Intl` locale. Defaults to `\"en-US\"`. */\n locale?: Intl.LocalesArgument;\n};\n\n/**\n * Formats a ratio as a percentage (`0.5` → `50%`) via `Intl` percent style.\n * Nullish values return `null`.\n */\nexport const percentFormatter = (\n value?: number,\n options: PercentFormatterOptions = {},\n) => {\n const { decimals = 2, locale = \"en-US\" } = options;\n\n return value != null\n ? value.toLocaleString(locale, {\n style: \"percent\",\n minimumFractionDigits: decimals,\n maximumFractionDigits: decimals,\n })\n : null;\n};\n","import { DateTime } from \"luxon\";\nimport { type TimeFormatPreset, timeFormatPresets } from \"./presets\";\n\nexport type { TimeFormatPreset };\n\nexport type TimeFormatterOptions = {\n /** `Intl` locale. Defaults to `\"en-US\"`. */\n locale?: Intl.LocalesArgument;\n /**\n * Preset name or a custom `Intl.DateTimeFormatOptions` bag. Preset samples\n * below are `en-US`. Defaults to `\"short\"`.\n * - `\"short\"`: 08:30 AM\n * - `\"medium\"`: 08:30:00 AM\n */\n format?: TimeFormatPreset | Intl.DateTimeFormatOptions;\n};\n\n/**\n * Formats a time-of-day string (`HH:mm` or `HH:mm:ss`) as a plain time with no\n * timezone conversion. Invalid or missing values return `null`.\n */\nexport const timeFormatter = (\n value?: string | null,\n { locale = \"en-US\", format = \"short\" }: TimeFormatterOptions = {},\n) => {\n if (value == null) {\n return null;\n }\n\n // Fixed UTC date keeps custom date fields deterministic and the clock time\n // zone-independent.\n const dateTime = DateTime.fromISO(`1970-01-01T${value}`, { zone: \"utc\" });\n\n if (!dateTime.isValid) {\n return null;\n }\n\n const localeString = locale?.toString() ?? \"en-US\";\n\n if (typeof format === \"string\") {\n const preset = timeFormatPresets[format];\n return dateTime.setLocale(localeString).toLocaleString(preset);\n }\n\n return dateTime.setLocale(localeString).toLocaleString(format);\n};\n","import { DateTime } from \"luxon\";\nimport type { YearlessDate } from \"../../../../components/DateFieldYearless/types\";\n\n/** Named month-day bags used when `format` is a string. */\nexport type YearlessDateFormatPreset = \"short\" | \"long\";\n\nexport type YearlessDateFormatterOptions = {\n /** `Intl` locale. Defaults to `\"en-US\"`. */\n locale?: Intl.LocalesArgument;\n /**\n * Preset name or a custom `Intl.DateTimeFormatOptions` bag. Preset samples\n * below are `en-US`. Defaults to `\"short\"`.\n * - `\"short\"`: Jan 05\n * - `\"long\"`: January 05\n */\n format?: YearlessDateFormatPreset | Intl.DateTimeFormatOptions;\n};\n\nconst formatPresets: Record<\n YearlessDateFormatPreset,\n Intl.DateTimeFormatOptions\n> = {\n short: { month: \"short\", day: \"2-digit\" },\n long: { month: \"long\", day: \"2-digit\" },\n};\n\n/**\n * Formats a month and day with no year. Accepts Temporal PlainMonthDay\n * (`\"--MM-DD\"`) or a {@link YearlessDate} object. Invalid or missing values\n * return `null`.\n */\nexport const yearlessDateFormatter = (\n value?: string | YearlessDate | null,\n { locale = \"en-US\", format = \"short\" }: YearlessDateFormatterOptions = {},\n) => {\n if (value == null) {\n return null;\n }\n\n let month: number;\n let day: number;\n\n if (typeof value === \"string\") {\n const match = value.match(/^--(\\d{2})-(\\d{2})$/);\n if (!match) {\n return null;\n }\n month = parseInt(match[1], 10);\n day = parseInt(match[2], 10);\n } else {\n if (value.month == null || value.day == null) {\n return null;\n }\n month = value.month;\n day = value.day;\n }\n\n const localeString = locale?.toString() ?? \"en-US\";\n\n // Leap-year reference so Feb 29 is valid.\n const dateTime = DateTime.fromObject(\n {\n year: 2000,\n month,\n day,\n },\n { locale: localeString },\n );\n\n if (!dateTime.isValid) {\n return null;\n }\n\n if (typeof format === \"string\") {\n const preset = formatPresets[format];\n return dateTime.toLocaleString(preset);\n }\n\n return dateTime.toLocaleString(format);\n};\n","import type { ReactNode } from \"react\";\nimport {\n booleanFormatter,\n type BooleanFormatterOptions,\n currencyFormatter,\n type CurrencyFormatterOptions,\n dateFormatter,\n type DateFormatterOptions,\n dateTimeFormatter,\n type DateTimeFormatterOptions,\n htmlFormatter,\n markdownFormatter,\n numberFormatter,\n type NumberFormatterOptions,\n percentFormatter,\n type PercentFormatterOptions,\n timeFormatter,\n type TimeFormatterOptions,\n} from \"./formatters\";\nimport type {\n ColumnType,\n ColumnTypeConfig,\n ColumnTypeOptionsMap,\n} from \"./types\";\n\n/**\n * Alignment and renderer factory applied when a column declares `type`.\n */\nexport type ColumnTypeDefaults = {\n /** Used unless the column supplies `align`. */\n align: \"start\" | \"center\" | \"end\";\n /**\n * Creates the default cell renderer from that type's formatter options.\n * `undefined` leaves text values on the raw-value render path.\n */\n createRenderCell: (\n options?: ColumnTypeOptionsMap[ColumnType],\n ) => ((value: unknown, rowDepth: number) => ReactNode) | undefined;\n};\n\n/**\n * Built-in formatter and alignment defaults keyed by {@link ColumnType}.\n */\nexport const COLUMN_TYPE_DEFAULTS: Record<ColumnType, ColumnTypeDefaults> = {\n text: {\n align: \"start\",\n createRenderCell: () => undefined,\n },\n number: {\n align: \"end\",\n createRenderCell: (options) => (value) =>\n numberFormatter(\n value as number | undefined,\n options as NumberFormatterOptions,\n ),\n },\n currency: {\n align: \"end\",\n createRenderCell: (options) => (value) =>\n currencyFormatter(\n value as number | undefined,\n options as CurrencyFormatterOptions,\n ),\n },\n percent: {\n align: \"end\",\n createRenderCell: (options) => (value) =>\n percentFormatter(\n value as number | undefined,\n options as PercentFormatterOptions,\n ),\n },\n date: {\n align: \"end\",\n createRenderCell: (options) => (value) =>\n dateFormatter(\n value as string | undefined,\n options as DateFormatterOptions,\n ),\n },\n dateTime: {\n align: \"end\",\n createRenderCell: (options) => (value) =>\n dateTimeFormatter(\n value as string | Date | undefined,\n options as DateTimeFormatterOptions,\n ),\n },\n time: {\n align: \"end\",\n createRenderCell: (options) => (value) =>\n timeFormatter(\n value as string | undefined,\n options as TimeFormatterOptions,\n ),\n },\n boolean: {\n align: \"start\",\n createRenderCell: (options) => (value) =>\n booleanFormatter(\n value as boolean | undefined,\n options as BooleanFormatterOptions,\n ),\n },\n markdown: {\n align: \"start\",\n createRenderCell: () => (value) =>\n markdownFormatter(value as string | undefined),\n },\n html: {\n align: \"start\",\n createRenderCell: () => (value) =>\n htmlFormatter(value as string | undefined),\n },\n};\n\n/** Normalizes shorthand and object column-type configurations to a tuple. */\nexport function resolveColumnTypeConfig<T extends ColumnType>(\n config: ColumnTypeConfig<T>,\n): [T, ColumnTypeOptionsMap[T] | undefined] {\n if (typeof config === \"string\") {\n return [config, undefined];\n }\n return [config.type, config.options];\n}\n\n/** Returns the built-in display defaults for a column type. */\nexport function getColumnTypeDefaults(type: ColumnType): ColumnTypeDefaults {\n return COLUMN_TYPE_DEFAULTS[type];\n}\n","import type { ReactNode } from \"react\";\nimport type {\n ColumnDef,\n ColumnOverflowConfig,\n ColumnTypeConfig,\n TextEditConfig,\n NumberEditConfig,\n SelectEditConfig,\n SelectAsyncEditConfig,\n MultiselectEditConfig,\n MultiselectAsyncEditConfig,\n BooleanEditConfig,\n CustomEditConfig,\n TableRow,\n ColumnHeaderConfig,\n ColumnReadRenderContext,\n ColumnReadRenderResult,\n} from \"./types\";\nimport type { MultiSelectMenuOption } from \"../../../components/MultiSelectMenu\";\n\ntype BaseColumnConfig<T> = ColumnHeaderConfig & {\n header?: ColumnDef<T>[\"header\"];\n /**\n * Deprecated string label used when `header` is omitted.\n * @deprecated Use `header.label` instead.\n */\n headerLabel?: string;\n /**\n * On leaf columns, overrides the alignment inferred from `type`. Group\n * headers stay start-aligned.\n */\n align?: \"start\" | \"center\" | \"end\";\n /**\n * Replaces the table's empty-cell content for this column. Applies to `null`,\n * `undefined`, and empty strings.\n */\n emptyCellContent?: ReactNode;\n /** One footer value, or one value per footer row. */\n footerContent?: ReactNode | ReactNode[];\n /** Same sizing contract as {@link ColumnBaseDef} `maxWidth`. */\n maxWidth?: number;\n /** Same sizing contract as {@link ColumnBaseDef} `minWidth`. */\n minWidth?: number;\n /** Same sizing contract as {@link ColumnBaseDef} `defaultWidth`. */\n defaultWidth?: number;\n /** Keeps the column against the chosen edge while horizontally scrolling. */\n pinned?: \"left\" | \"right\";\n /** Shows a pointer-driven resize handle. */\n resizable?: boolean;\n};\n\ntype BaseDataColumnConfig<T, K extends keyof T> = BaseColumnConfig<T> & {\n /**\n * Overrides the renderer inferred from `type`.\n */\n renderCell?: (\n value: T[K],\n context: ColumnReadRenderContext<TableRow<T>>,\n ) => ReactNode;\n /** Supplies sortable text when `renderCell` returns rich content. */\n getCellText?: (\n value: T[K],\n context: ColumnReadRenderContext<TableRow<T>>,\n ) => string;\n /**\n * Supplies rendered content and sortable text together. When set, it wins\n * over `renderCell` and `getCellText`. Prefer `getCellText` when only\n * sorting needs an alternate representation.\n */\n getReadRenderResult?: (\n value: T[K],\n context: ColumnReadRenderContext<TableRow<T>>,\n ) => ColumnReadRenderResult;\n /** Enables default sorting, or supplies a value comparator. */\n sortable?: boolean | ((valueA: T[K], valueB: T[K]) => number);\n /**\n * Supplies default formatting and alignment; explicit column options override\n * those defaults.\n */\n type?: ColumnTypeConfig;\n};\n\ntype GroupColumnConfig<T> = BaseColumnConfig<T> & {\n /** Leaf or nested columns displayed beneath this group header. */\n columns: ColumnDef<T>[];\n editConfig?: never;\n overflow?: never;\n renderCell?: never;\n sortable?: never;\n type?: never;\n};\n\ntype ReadOnlyColumnConfig<T, K extends keyof T> = BaseDataColumnConfig<T, K> & {\n editConfig?: undefined;\n /** Shows clipped read-only content in a disclosure Surface. */\n overflow?: ColumnOverflowConfig;\n};\n\ntype EditableColumnConfig<T, K extends keyof T> = BaseDataColumnConfig<T, K> & {\n overflow?: never;\n};\n\n/** Allows text editing only when the column value is string-compatible. */\ntype TextEditConfigColumnConfig<T, K extends keyof T> =\n NonNullable<T[K]> extends string\n ? EditableColumnConfig<T, K> & {\n editConfig: TextEditConfig<T, K>;\n }\n : never;\n\n/** Allows number editing only when the column value is number-compatible. */\ntype NumberEditConfigColumnConfig<T, K extends keyof T> =\n NonNullable<T[K]> extends number\n ? EditableColumnConfig<T, K> & {\n editConfig: NumberEditConfig<T, K>;\n }\n : never;\n\ntype SelectEditConfigColumnConfig<T, K extends keyof T> = EditableColumnConfig<\n T,\n K\n> & {\n editConfig: SelectEditConfig<T, K>;\n};\n\ntype SelectAsyncEditConfigColumnConfig<\n T,\n K extends keyof T,\n> = EditableColumnConfig<T, K> & {\n editConfig: SelectAsyncEditConfig<T>;\n};\n\ntype CellArrayItem =\n | object\n | string\n | number\n | boolean\n | bigint\n | symbol\n | null\n | undefined;\n\ntype CellArrayValue = readonly CellArrayItem[];\n\n/** Allows multiselect editing only when the column value is an array. */\ntype MultiselectEditConfigColumnConfig<T, K extends keyof T> =\n NonNullable<T[K]> extends CellArrayValue\n ? EditableColumnConfig<T, K> & {\n editConfig: MultiselectEditConfig<T, K>;\n }\n : never;\n\n/**\n * Allows async multiselect editing only for full option-object arrays, not\n * primitive arrays.\n */\ntype MultiselectAsyncEditConfigColumnConfig<T, K extends keyof T> =\n NonNullable<T[K]> extends MultiSelectMenuOption[]\n ? EditableColumnConfig<T, K> & {\n editConfig: MultiselectAsyncEditConfig<T>;\n }\n : never;\n\n/** Allows boolean editing only when the column value is boolean-compatible. */\ntype BooleanEditConfigColumnConfig<T, K extends keyof T> =\n NonNullable<T[K]> extends boolean\n ? EditableColumnConfig<T, K> & {\n editConfig: BooleanEditConfig<T, K>;\n }\n : never;\n\ntype CustomEditConfigColumnConfig<T, K extends keyof T> = EditableColumnConfig<\n T,\n K\n> & {\n editConfig: CustomEditConfig<T, K>;\n};\n\n/** Couples each edit mode to the column value types it supports. */\ntype ColumnConfig<T, K extends keyof T> =\n | ReadOnlyColumnConfig<T, K>\n | TextEditConfigColumnConfig<T, K>\n | NumberEditConfigColumnConfig<T, K>\n | SelectEditConfigColumnConfig<T, K>\n | SelectAsyncEditConfigColumnConfig<T, K>\n | MultiselectEditConfigColumnConfig<T, K>\n | MultiselectAsyncEditConfigColumnConfig<T, K>\n | BooleanEditConfigColumnConfig<T, K>\n | CustomEditConfigColumnConfig<T, K>;\n\n/**\n * Creates column definitions keyed to row type `T`. The returned overloads\n * constrain edit modes by value type and accept `{ group: string }` for grouped\n * columns.\n *\n * @example\n * ```ts\n * const column = createColumnHelper<{ name: string; amount: number }>();\n * column(\"amount\", {\n * header: { label: \"Amount\" },\n * type: \"currency\",\n * editConfig: { mode: \"number\", onChange: saveAmount },\n * });\n * column({ group: \"customer\" }, {\n * header: { label: \"Customer\" },\n * columns: [column(\"name\", { header: { label: \"Name\" } })],\n * });\n * ```\n */\nexport function createColumnHelper<T>() {\n function createColumn(\n id: { group: string },\n column: GroupColumnConfig<T>,\n ): ColumnDef<T>;\n function createColumn<K extends keyof T>(\n id: K,\n column: ColumnConfig<T, K>,\n ): ColumnDef<T>;\n function createColumn(\n id: keyof T | { group: string },\n column: ColumnConfig<T, keyof T> | GroupColumnConfig<T>,\n ): ColumnDef<T> {\n if (typeof id === \"object\" && \"group\" in id) {\n return {\n id: id.group as keyof T,\n ...column,\n } as ColumnDef<T>;\n }\n\n return {\n id,\n ...(column as ColumnConfig<T, keyof T>),\n } as ColumnDef<T>;\n }\n\n return createColumn;\n}\n","/**\n * table-core\n *\n * Copyright (c) TanStack\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE.md file in the root directory of this source tree.\n *\n * @license MIT\n */\n// type Person = {\n// firstName: string\n// lastName: string\n// age: number\n// visits: number\n// status: string\n// progress: number\n// createdAt: Date\n// nested: {\n// foo: [\n// {\n// bar: 'bar'\n// }\n// ]\n// bar: { subBar: boolean }[]\n// baz: {\n// foo: 'foo'\n// bar: {\n// baz: 'baz'\n// }\n// }\n// }\n// }\n\n// const test: DeepKeys<Person> = 'nested.foo.0.bar'\n// const test2: DeepKeys<Person> = 'nested.bar'\n\n// const helper = createColumnHelper<Person>()\n\n// helper.accessor('nested.foo', {\n// cell: info => info.getValue(),\n// })\n\n// helper.accessor('nested.foo.0.bar', {\n// cell: info => info.getValue(),\n// })\n\n// helper.accessor('nested.bar', {\n// cell: info => info.getValue(),\n// })\n\nfunction createColumnHelper() {\n return {\n accessor: (accessor, column) => {\n return typeof accessor === 'function' ? {\n ...column,\n accessorFn: accessor\n } : {\n ...column,\n accessorKey: accessor\n };\n },\n display: column => column,\n group: column => column\n };\n}\n\n// Is this type a tuple?\n\n// If this type is a tuple, what indices are allowed?\n\n///\n\nfunction functionalUpdate(updater, input) {\n return typeof updater === 'function' ? updater(input) : updater;\n}\nfunction noop() {\n //\n}\nfunction makeStateUpdater(key, instance) {\n return updater => {\n instance.setState(old => {\n return {\n ...old,\n [key]: functionalUpdate(updater, old[key])\n };\n });\n };\n}\nfunction isFunction(d) {\n return d instanceof Function;\n}\nfunction isNumberArray(d) {\n return Array.isArray(d) && d.every(val => typeof val === 'number');\n}\nfunction flattenBy(arr, getChildren) {\n const flat = [];\n const recurse = subArr => {\n subArr.forEach(item => {\n flat.push(item);\n const children = getChildren(item);\n if (children != null && children.length) {\n recurse(children);\n }\n });\n };\n recurse(arr);\n return flat;\n}\nfunction memo(getDeps, fn, opts) {\n let deps = [];\n let result;\n return depArgs => {\n let depTime;\n if (opts.key && opts.debug) depTime = Date.now();\n const newDeps = getDeps(depArgs);\n const depsChanged = newDeps.length !== deps.length || newDeps.some((dep, index) => deps[index] !== dep);\n if (!depsChanged) {\n return result;\n }\n deps = newDeps;\n let resultTime;\n if (opts.key && opts.debug) resultTime = Date.now();\n result = fn(...newDeps);\n opts == null || opts.onChange == null || opts.onChange(result);\n if (opts.key && opts.debug) {\n if (opts != null && opts.debug()) {\n const depEndTime = Math.round((Date.now() - depTime) * 100) / 100;\n const resultEndTime = Math.round((Date.now() - resultTime) * 100) / 100;\n const resultFpsPercentage = resultEndTime / 16;\n const pad = (str, num) => {\n str = String(str);\n while (str.length < num) {\n str = ' ' + str;\n }\n return str;\n };\n console.info(`%c⏱ ${pad(resultEndTime, 5)} /${pad(depEndTime, 5)} ms`, `\n font-size: .6rem;\n font-weight: bold;\n color: hsl(${Math.max(0, Math.min(120 - 120 * resultFpsPercentage, 120))}deg 100% 31%);`, opts == null ? void 0 : opts.key);\n }\n }\n return result;\n };\n}\nfunction getMemoOptions(tableOptions, debugLevel, key, onChange) {\n return {\n debug: () => {\n var _tableOptions$debugAl;\n return (_tableOptions$debugAl = tableOptions == null ? void 0 : tableOptions.debugAll) != null ? _tableOptions$debugAl : tableOptions[debugLevel];\n },\n key: process.env.NODE_ENV === 'development' && key,\n onChange\n };\n}\n\nfunction createCell(table, row, column, columnId) {\n const getRenderValue = () => {\n var _cell$getValue;\n return (_cell$getValue = cell.getValue()) != null ? _cell$getValue : table.options.renderFallbackValue;\n };\n const cell = {\n id: `${row.id}_${column.id}`,\n row,\n column,\n getValue: () => row.getValue(columnId),\n renderValue: getRenderValue,\n getContext: memo(() => [table, column, row, cell], (table, column, row, cell) => ({\n table,\n column,\n row,\n cell: cell,\n getValue: cell.getValue,\n renderValue: cell.renderValue\n }), getMemoOptions(table.options, 'debugCells', 'cell.getContext'))\n };\n table._features.forEach(feature => {\n feature.createCell == null || feature.createCell(cell, column, row, table);\n }, {});\n return cell;\n}\n\nfunction createColumn(table, columnDef, depth, parent) {\n var _ref, _resolvedColumnDef$id;\n const defaultColumn = table._getDefaultColumnDef();\n const resolvedColumnDef = {\n ...defaultColumn,\n ...columnDef\n };\n const accessorKey = resolvedColumnDef.accessorKey;\n let id = (_ref = (_resolvedColumnDef$id = resolvedColumnDef.id) != null ? _resolvedColumnDef$id : accessorKey ? typeof String.prototype.replaceAll === 'function' ? accessorKey.replaceAll('.', '_') : accessorKey.replace(/\\./g, '_') : undefined) != null ? _ref : typeof resolvedColumnDef.header === 'string' ? resolvedColumnDef.header : undefined;\n let accessorFn;\n if (resolvedColumnDef.accessorFn) {\n accessorFn = resolvedColumnDef.accessorFn;\n } else if (accessorKey) {\n // Support deep accessor keys\n if (accessorKey.includes('.')) {\n accessorFn = originalRow => {\n let result = originalRow;\n for (const key of accessorKey.split('.')) {\n var _result;\n result = (_result = result) == null ? void 0 : _result[key];\n if (process.env.NODE_ENV !== 'production' && result === undefined) {\n console.warn(`\"${key}\" in deeply nested key \"${accessorKey}\" returned undefined.`);\n }\n }\n return result;\n };\n } else {\n accessorFn = originalRow => originalRow[resolvedColumnDef.accessorKey];\n }\n }\n if (!id) {\n if (process.env.NODE_ENV !== 'production') {\n throw new Error(resolvedColumnDef.accessorFn ? `Columns require an id when using an accessorFn` : `Columns require an id when using a non-string header`);\n }\n throw new Error();\n }\n let column = {\n id: `${String(id)}`,\n accessorFn,\n parent: parent,\n depth,\n columnDef: resolvedColumnDef,\n columns: [],\n getFlatColumns: memo(() => [true], () => {\n var _column$columns;\n return [column, ...((_column$columns = column.columns) == null ? void 0 : _column$columns.flatMap(d => d.getFlatColumns()))];\n }, getMemoOptions(table.options, 'debugColumns', 'column.getFlatColumns')),\n getLeafColumns: memo(() => [table._getOrderColumnsFn()], orderColumns => {\n var _column$columns2;\n if ((_column$columns2 = column.columns) != null && _column$columns2.length) {\n let leafColumns = column.columns.flatMap(column => column.getLeafColumns());\n return orderColumns(leafColumns);\n }\n return [column];\n }, getMemoOptions(table.options, 'debugColumns', 'column.getLeafColumns'))\n };\n for (const feature of table._features) {\n feature.createColumn == null || feature.createColumn(column, table);\n }\n\n // Yes, we have to convert table to unknown, because we know more than the compiler here.\n return column;\n}\n\nconst debug = 'debugHeaders';\n//\n\nfunction createHeader(table, column, options) {\n var _options$id;\n const id = (_options$id = options.id) != null ? _options$id : column.id;\n let header = {\n id,\n column,\n index: options.index,\n isPlaceholder: !!options.isPlaceholder,\n placeholderId: options.placeholderId,\n depth: options.depth,\n subHeaders: [],\n colSpan: 0,\n rowSpan: 0,\n headerGroup: null,\n getLeafHeaders: () => {\n const leafHeaders = [];\n const recurseHeader = h => {\n if (h.subHeaders && h.subHeaders.length) {\n h.subHeaders.map(recurseHeader);\n }\n leafHeaders.push(h);\n };\n recurseHeader(header);\n return leafHeaders;\n },\n getContext: () => ({\n table,\n header: header,\n column\n })\n };\n table._features.forEach(feature => {\n feature.createHeader == null || feature.createHeader(header, table);\n });\n return header;\n}\nconst Headers = {\n createTable: table => {\n // Header Groups\n\n table.getHeaderGroups = memo(() => [table.getAllColumns(), table.getVisibleLeafColumns(), table.getState().columnPinning.left, table.getState().columnPinning.right], (allColumns, leafColumns, left, right) => {\n var _left$map$filter, _right$map$filter;\n const leftColumns = (_left$map$filter = left == null ? void 0 : left.map(columnId => leafColumns.find(d => d.id === columnId)).filter(Boolean)) != null ? _left$map$filter : [];\n const rightColumns = (_right$map$filter = right == null ? void 0 : right.map(columnId => leafColumns.find(d => d.id === columnId)).filter(Boolean)) != null ? _right$map$filter : [];\n const centerColumns = leafColumns.filter(column => !(left != null && left.includes(column.id)) && !(right != null && right.includes(column.id)));\n const headerGroups = buildHeaderGroups(allColumns, [...leftColumns, ...centerColumns, ...rightColumns], table);\n return headerGroups;\n }, getMemoOptions(table.options, debug, 'getHeaderGroups'));\n table.getCenterHeaderGroups = memo(() => [table.getAllColumns(), table.getVisibleLeafColumns(), table.getState().columnPinning.left, table.getState().columnPinning.right], (allColumns, leafColumns, left, right) => {\n leafColumns = leafColumns.filter(column => !(left != null && left.includes(column.id)) && !(right != null && right.includes(column.id)));\n return buildHeaderGroups(allColumns, leafColumns, table, 'center');\n }, getMemoOptions(table.options, debug, 'getCenterHeaderGroups'));\n table.getLeftHeaderGroups = memo(() => [table.getAllColumns(), table.getVisibleLeafColumns(), table.getState().columnPinning.left], (allColumns, leafColumns, left) => {\n var _left$map$filter2;\n const orderedLeafColumns = (_left$map$filter2 = left == null ? void 0 : left.map(columnId => leafColumns.find(d => d.id === columnId)).filter(Boolean)) != null ? _left$map$filter2 : [];\n return buildHeaderGroups(allColumns, orderedLeafColumns, table, 'left');\n }, getMemoOptions(table.options, debug, 'getLeftHeaderGroups'));\n table.getRightHeaderGroups = memo(() => [table.getAllColumns(), table.getVisibleLeafColumns(), table.getState().columnPinning.right], (allColumns, leafColumns, right) => {\n var _right$map$filter2;\n const orderedLeafColumns = (_right$map$filter2 = right == null ? void 0 : right.map(columnId => leafColumns.find(d => d.id === columnId)).filter(Boolean)) != null ? _right$map$filter2 : [];\n return buildHeaderGroups(allColumns, orderedLeafColumns, table, 'right');\n }, getMemoOptions(table.options, debug, 'getRightHeaderGroups'));\n\n // Footer Groups\n\n table.getFooterGroups = memo(() => [table.getHeaderGroups()], headerGroups => {\n return [...headerGroups].reverse();\n }, getMemoOptions(table.options, debug, 'getFooterGroups'));\n table.getLeftFooterGroups = memo(() => [table.getLeftHeaderGroups()], headerGroups => {\n return [...headerGroups].reverse();\n }, getMemoOptions(table.options, debug, 'getLeftFooterGroups'));\n table.getCenterFooterGroups = memo(() => [table.getCenterHeaderGroups()], headerGroups => {\n return [...headerGroups].reverse();\n }, getMemoOptions(table.options, debug, 'getCenterFooterGroups'));\n table.getRightFooterGroups = memo(() => [table.getRightHeaderGroups()], headerGroups => {\n return [...headerGroups].reverse();\n }, getMemoOptions(table.options, debug, 'getRightFooterGroups'));\n\n // Flat Headers\n\n table.getFlatHeaders = memo(() => [table.getHeaderGroups()], headerGroups => {\n return headerGroups.map(headerGroup => {\n return headerGroup.headers;\n }).flat();\n }, getMemoOptions(table.options, debug, 'getFlatHeaders'));\n table.getLeftFlatHeaders = memo(() => [table.getLeftHeaderGroups()], left => {\n return left.map(headerGroup => {\n return headerGroup.headers;\n }).flat();\n }, getMemoOptions(table.options, debug, 'getLeftFlatHeaders'));\n table.getCenterFlatHeaders = memo(() => [table.getCenterHeaderGroups()], left => {\n return left.map(headerGroup => {\n return headerGroup.headers;\n }).flat();\n }, getMemoOptions(table.options, debug, 'getCenterFlatHeaders'));\n table.getRightFlatHeaders = memo(() => [table.getRightHeaderGroups()], left => {\n return left.map(headerGroup => {\n return headerGroup.headers;\n }).flat();\n }, getMemoOptions(table.options, debug, 'getRightFlatHeaders'));\n\n // Leaf Headers\n\n table.getCenterLeafHeaders = memo(() => [table.getCenterFlatHeaders()], flatHeaders => {\n return flatHeaders.filter(header => {\n var _header$subHeaders;\n return !((_header$subHeaders = header.subHeaders) != null && _header$subHeaders.length);\n });\n }, getMemoOptions(table.options, debug, 'getCenterLeafHeaders'));\n table.getLeftLeafHeaders = memo(() => [table.getLeftFlatHeaders()], flatHeaders => {\n return flatHeaders.filter(header => {\n var _header$subHeaders2;\n return !((_header$subHeaders2 = header.subHeaders) != null && _header$subHeaders2.length);\n });\n }, getMemoOptions(table.options, debug, 'getLeftLeafHeaders'));\n table.getRightLeafHeaders = memo(() => [table.getRightFlatHeaders()], flatHeaders => {\n return flatHeaders.filter(header => {\n var _header$subHeaders3;\n return !((_header$subHeaders3 = header.subHeaders) != null && _header$subHeaders3.length);\n });\n }, getMemoOptions(table.options, debug, 'getRightLeafHeaders'));\n table.getLeafHeaders = memo(() => [table.getLeftHeaderGroups(), table.getCenterHeaderGroups(), table.getRightHeaderGroups()], (left, center, right) => {\n var _left$0$headers, _left$, _center$0$headers, _center$, _right$0$headers, _right$;\n return [...((_left$0$headers = (_left$ = left[0]) == null ? void 0 : _left$.headers) != null ? _left$0$headers : []), ...((_center$0$headers = (_center$ = center[0]) == null ? void 0 : _center$.headers) != null ? _center$0$headers : []), ...((_right$0$headers = (_right$ = right[0]) == null ? void 0 : _right$.headers) != null ? _right$0$headers : [])].map(header => {\n return header.getLeafHeaders();\n }).flat();\n }, getMemoOptions(table.options, debug, 'getLeafHeaders'));\n }\n};\nfunction buildHeaderGroups(allColumns, columnsToGroup, table, headerFamily) {\n var _headerGroups$0$heade, _headerGroups$;\n // Find the max depth of the columns:\n // build the leaf column row\n // build each buffer row going up\n // placeholder for non-existent level\n // real column for existing level\n\n let maxDepth = 0;\n const findMaxDepth = function (columns, depth) {\n if (depth === void 0) {\n depth = 1;\n }\n maxDepth = Math.max(maxDepth, depth);\n columns.filter(column => column.getIsVisible()).forEach(column => {\n var _column$columns;\n if ((_column$columns = column.columns) != null && _column$columns.length) {\n findMaxDepth(column.columns, depth + 1);\n }\n }, 0);\n };\n findMaxDepth(allColumns);\n let headerGroups = [];\n const createHeaderGroup = (headersToGroup, depth) => {\n // The header group we are creating\n const headerGroup = {\n depth,\n id: [headerFamily, `${depth}`].filter(Boolean).join('_'),\n headers: []\n };\n\n // The parent columns we're going to scan next\n const pendingParentHeaders = [];\n\n // Scan each column for parents\n headersToGroup.forEach(headerToGroup => {\n // What is the latest (last) parent column?\n\n const latestPendingParentHeader = [...pendingParentHeaders].reverse()[0];\n const isLeafHeader = headerToGroup.column.depth === headerGroup.depth;\n let column;\n let isPlaceholder = false;\n if (isLeafHeader && headerToGroup.column.parent) {\n // The parent header is new\n column = headerToGroup.column.parent;\n } else {\n // The parent header is repeated\n column = headerToGroup.column;\n isPlaceholder = true;\n }\n if (latestPendingParentHeader && (latestPendingParentHeader == null ? void 0 : latestPendingParentHeader.column) === column) {\n // This column is repeated. Add it as a sub header to the next batch\n latestPendingParentHeader.subHeaders.push(headerToGroup);\n } else {\n // This is a new header. Let's create it\n const header = createHeader(table, column, {\n id: [headerFamily, depth, column.id, headerToGroup == null ? void 0 : headerToGroup.id].filter(Boolean).join('_'),\n isPlaceholder,\n placeholderId: isPlaceholder ? `${pendingParentHeaders.filter(d => d.column === column).length}` : undefined,\n depth,\n index: pendingParentHeaders.length\n });\n\n // Add the headerToGroup as a subHeader of the new header\n header.subHeaders.push(headerToGroup);\n // Add the new header to the pendingParentHeaders to get grouped\n // in the next batch\n pendingParentHeaders.push(header);\n }\n headerGroup.headers.push(headerToGroup);\n headerToGroup.headerGroup = headerGroup;\n });\n headerGroups.push(headerGroup);\n if (depth > 0) {\n createHeaderGroup(pendingParentHeaders, depth - 1);\n }\n };\n const bottomHeaders = columnsToGroup.map((column, index) => createHeader(table, column, {\n depth: maxDepth,\n index\n }));\n createHeaderGroup(bottomHeaders, maxDepth - 1);\n headerGroups.reverse();\n\n // headerGroups = headerGroups.filter(headerGroup => {\n // return !headerGroup.headers.every(header => header.isPlaceholder)\n // })\n\n const recurseHeadersForSpans = headers => {\n const filteredHeaders = headers.filter(header => header.column.getIsVisible());\n return filteredHeaders.map(header => {\n let colSpan = 0;\n let rowSpan = 0;\n let childRowSpans = [0];\n if (header.subHeaders && header.subHeaders.length) {\n childRowSpans = [];\n recurseHeadersForSpans(header.subHeaders).forEach(_ref => {\n let {\n colSpan: childColSpan,\n rowSpan: childRowSpan\n } = _ref;\n colSpan += childColSpan;\n childRowSpans.push(childRowSpan);\n });\n } else {\n colSpan = 1;\n }\n const minChildRowSpan = Math.min(...childRowSpans);\n rowSpan = rowSpan + minChildRowSpan;\n header.colSpan = colSpan;\n header.rowSpan = rowSpan;\n return {\n colSpan,\n rowSpan\n };\n });\n };\n recurseHeadersForSpans((_headerGroups$0$heade = (_headerGroups$ = headerGroups[0]) == null ? void 0 : _headerGroups$.headers) != null ? _headerGroups$0$heade : []);\n return headerGroups;\n}\n\nconst createRow = (table, id, original, rowIndex, depth, subRows, parentId) => {\n let row = {\n id,\n index: rowIndex,\n original,\n depth,\n parentId,\n _valuesCache: {},\n _uniqueValuesCache: {},\n getValue: columnId => {\n if (row._valuesCache.hasOwnProperty(columnId)) {\n return row._valuesCache[columnId];\n }\n const column = table.getColumn(columnId);\n if (!(column != null && column.accessorFn)) {\n return undefined;\n }\n row._valuesCache[columnId] = column.accessorFn(row.original, rowIndex);\n return row._valuesCache[columnId];\n },\n getUniqueValues: columnId => {\n if (row._uniqueValuesCache.hasOwnProperty(columnId)) {\n return row._uniqueValuesCache[columnId];\n }\n const column = table.getColumn(columnId);\n if (!(column != null && column.accessorFn)) {\n return undefined;\n }\n if (!column.columnDef.getUniqueValues) {\n row._uniqueValuesCache[columnId] = [row.getValue(columnId)];\n return row._uniqueValuesCache[columnId];\n }\n row._uniqueValuesCache[columnId] = column.columnDef.getUniqueValues(row.original, rowIndex);\n return row._uniqueValuesCache[columnId];\n },\n renderValue: columnId => {\n var _row$getValue;\n return (_row$getValue = row.getValue(columnId)) != null ? _row$getValue : table.options.renderFallbackValue;\n },\n subRows: subRows != null ? subRows : [],\n getLeafRows: () => flattenBy(row.subRows, d => d.subRows),\n getParentRow: () => row.parentId ? table.getRow(row.parentId, true) : undefined,\n getParentRows: () => {\n let parentRows = [];\n let currentRow = row;\n while (true) {\n const parentRow = currentRow.getParentRow();\n if (!parentRow) break;\n parentRows.push(parentRow);\n currentRow = parentRow;\n }\n return parentRows.reverse();\n },\n getAllCells: memo(() => [table.getAllLeafColumns()], leafColumns => {\n return leafColumns.map(column => {\n return createCell(table, row, column, column.id);\n });\n }, getMemoOptions(table.options, 'debugRows', 'getAllCells')),\n _getAllCellsByColumnId: memo(() => [row.getAllCells()], allCells => {\n return allCells.reduce((acc, cell) => {\n acc[cell.column.id] = cell;\n return acc;\n }, {});\n }, getMemoOptions(table.options, 'debugRows', 'getAllCellsByColumnId'))\n };\n for (let i = 0; i < table._features.length; i++) {\n const feature = table._features[i];\n feature == null || feature.createRow == null || feature.createRow(row, table);\n }\n return row;\n};\n\n//\n\nconst ColumnFaceting = {\n createColumn: (column, table) => {\n column._getFacetedRowModel = table.options.getFacetedRowModel && table.options.getFacetedRowModel(table, column.id);\n column.getFacetedRowModel = () => {\n if (!column._getFacetedRowModel) {\n return table.getPreFilteredRowModel();\n }\n return column._getFacetedRowModel();\n };\n column._getFacetedUniqueValues = table.options.getFacetedUniqueValues && table.options.getFacetedUniqueValues(table, column.id);\n column.getFacetedUniqueValues = () => {\n if (!column._getFacetedUniqueValues) {\n return new Map();\n }\n return column._getFacetedUniqueValues();\n };\n column._getFacetedMinMaxValues = table.options.getFacetedMinMaxValues && table.options.getFacetedMinMaxValues(table, column.id);\n column.getFacetedMinMaxValues = () => {\n if (!column._getFacetedMinMaxValues) {\n return undefined;\n }\n return column._getFacetedMinMaxValues();\n };\n }\n};\n\nconst includesString = (row, columnId, filterValue) => {\n var _filterValue$toString, _row$getValue;\n const search = filterValue == null || (_filterValue$toString = filterValue.toString()) == null ? void 0 : _filterValue$toString.toLowerCase();\n return Boolean((_row$getValue = row.getValue(columnId)) == null || (_row$getValue = _row$getValue.toString()) == null || (_row$getValue = _row$getValue.toLowerCase()) == null ? void 0 : _row$getValue.includes(search));\n};\nincludesString.autoRemove = val => testFalsey(val);\nconst includesStringSensitive = (row, columnId, filterValue) => {\n var _row$getValue2;\n return Boolean((_row$getValue2 = row.getValue(columnId)) == null || (_row$getValue2 = _row$getValue2.toString()) == null ? void 0 : _row$getValue2.includes(filterValue));\n};\nincludesStringSensitive.autoRemove = val => testFalsey(val);\nconst equalsString = (row, columnId, filterValue) => {\n var _row$getValue3;\n return ((_row$getValue3 = row.getValue(columnId)) == null || (_row$getValue3 = _row$getValue3.toString()) == null ? void 0 : _row$getValue3.toLowerCase()) === (filterValue == null ? void 0 : filterValue.toLowerCase());\n};\nequalsString.autoRemove = val => testFalsey(val);\nconst arrIncludes = (row, columnId, filterValue) => {\n var _row$getValue4;\n return (_row$getValue4 = row.getValue(columnId)) == null ? void 0 : _row$getValue4.includes(filterValue);\n};\narrIncludes.autoRemove = val => testFalsey(val);\nconst arrIncludesAll = (row, columnId, filterValue) => {\n return !filterValue.some(val => {\n var _row$getValue5;\n return !((_row$getValue5 = row.getValue(columnId)) != null && _row$getValue5.includes(val));\n });\n};\narrIncludesAll.autoRemove = val => testFalsey(val) || !(val != null && val.length);\nconst arrIncludesSome = (row, columnId, filterValue) => {\n return filterValue.some(val => {\n var _row$getValue6;\n return (_row$getValue6 = row.getValue(columnId)) == null ? void 0 : _row$getValue6.includes(val);\n });\n};\narrIncludesSome.autoRemove = val => testFalsey(val) || !(val != null && val.length);\nconst equals = (row, columnId, filterValue) => {\n return row.getValue(columnId) === filterValue;\n};\nequals.autoRemove = val => testFalsey(val);\nconst weakEquals = (row, columnId, filterValue) => {\n return row.getValue(columnId) == filterValue;\n};\nweakEquals.autoRemove = val => testFalsey(val);\nconst inNumberRange = (row, columnId, filterValue) => {\n let [min, max] = filterValue;\n const rowValue = row.getValue(columnId);\n return rowValue >= min && rowValue <= max;\n};\ninNumberRange.resolveFilterValue = val => {\n let [unsafeMin, unsafeMax] = val;\n let parsedMin = typeof unsafeMin !== 'number' ? parseFloat(unsafeMin) : unsafeMin;\n let parsedMax = typeof unsafeMax !== 'number' ? parseFloat(unsafeMax) : unsafeMax;\n let min = unsafeMin === null || Number.isNaN(parsedMin) ? -Infinity : parsedMin;\n let max = unsafeMax === null || Number.isNaN(parsedMax) ? Infinity : parsedMax;\n if (min > max) {\n const temp = min;\n min = max;\n max = temp;\n }\n return [min, max];\n};\ninNumberRange.autoRemove = val => testFalsey(val) || testFalsey(val[0]) && testFalsey(val[1]);\n\n// Export\n\nconst filterFns = {\n includesString,\n includesStringSensitive,\n equalsString,\n arrIncludes,\n arrIncludesAll,\n arrIncludesSome,\n equals,\n weakEquals,\n inNumberRange\n};\n// Utils\n\nfunction testFalsey(val) {\n return val === undefined || val === null || val === '';\n}\n\n//\n\nconst ColumnFiltering = {\n getDefaultColumnDef: () => {\n return {\n filterFn: 'auto'\n };\n },\n getInitialState: state => {\n return {\n columnFilters: [],\n ...state\n };\n },\n getDefaultOptions: table => {\n return {\n onColumnFiltersChange: makeStateUpdater('columnFilters', table),\n filterFromLeafRows: false,\n maxLeafRowFilterDepth: 100\n };\n },\n createColumn: (column, table) => {\n column.getAutoFilterFn = () => {\n const firstRow = table.getCoreRowModel().flatRows[0];\n const value = firstRow == null ? void 0 : firstRow.getValue(column.id);\n if (typeof value === 'string') {\n return filterFns.includesString;\n }\n if (typeof value === 'number') {\n return filterFns.inNumberRange;\n }\n if (typeof value === 'boolean') {\n return filterFns.equals;\n }\n if (value !== null && typeof value === 'object') {\n return filterFns.equals;\n }\n if (Array.isArray(value)) {\n return filterFns.arrIncludes;\n }\n return filterFns.weakEquals;\n };\n column.getFilterFn = () => {\n var _table$options$filter, _table$options$filter2;\n return isFunction(column.columnDef.filterFn) ? column.columnDef.filterFn : column.columnDef.filterFn === 'auto' ? column.getAutoFilterFn() : // @ts-ignore\n (_table$options$filter = (_table$options$filter2 = table.options.filterFns) == null ? void 0 : _table$options$filter2[column.columnDef.filterFn]) != null ? _table$options$filter : filterFns[column.columnDef.filterFn];\n };\n column.getCanFilter = () => {\n var _column$columnDef$ena, _table$options$enable, _table$options$enable2;\n return ((_column$columnDef$ena = column.columnDef.enableColumnFilter) != null ? _column$columnDef$ena : true) && ((_table$options$enable = table.options.enableColumnFilters) != null ? _table$options$enable : true) && ((_table$options$enable2 = table.options.enableFilters) != null ? _table$options$enable2 : true) && !!column.accessorFn;\n };\n column.getIsFiltered = () => column.getFilterIndex() > -1;\n column.getFilterValue = () => {\n var _table$getState$colum;\n return (_table$getState$colum = table.getState().columnFilters) == null || (_table$getState$colum = _table$getState$colum.find(d => d.id === column.id)) == null ? void 0 : _table$getState$colum.value;\n };\n column.getFilterIndex = () => {\n var _table$getState$colum2, _table$getState$colum3;\n return (_table$getState$colum2 = (_table$getState$colum3 = table.getState().columnFilters) == null ? void 0 : _table$getState$colum3.findIndex(d => d.id === column.id)) != null ? _table$getState$colum2 : -1;\n };\n column.setFilterValue = value => {\n table.setColumnFilters(old => {\n const filterFn = column.getFilterFn();\n const previousFilter = old == null ? void 0 : old.find(d => d.id === column.id);\n const newFilter = functionalUpdate(value, previousFilter ? previousFilter.value : undefined);\n\n //\n if (shouldAutoRemoveFilter(filterFn, newFilter, column)) {\n var _old$filter;\n return (_old$filter = old == null ? void 0 : old.filter(d => d.id !== column.id)) != null ? _old$filter : [];\n }\n const newFilterObj = {\n id: column.id,\n value: newFilter\n };\n if (previousFilter) {\n var _old$map;\n return (_old$map = old == null ? void 0 : old.map(d => {\n if (d.id === column.id) {\n return newFilterObj;\n }\n return d;\n })) != null ? _old$map : [];\n }\n if (old != null && old.length) {\n return [...old, newFilterObj];\n }\n return [newFilterObj];\n });\n };\n },\n createRow: (row, _table) => {\n row.columnFilters = {};\n row.columnFiltersMeta = {};\n },\n createTable: table => {\n table.setColumnFilters = updater => {\n const leafColumns = table.getAllLeafColumns();\n const updateFn = old => {\n var _functionalUpdate;\n return (_functionalUpdate = functionalUpdate(updater, old)) == null ? void 0 : _functionalUpdate.filter(filter => {\n const column = leafColumns.find(d => d.id === filter.id);\n if (column) {\n const filterFn = column.getFilterFn();\n if (shouldAutoRemoveFilter(filterFn, filter.value, column)) {\n return false;\n }\n }\n return true;\n });\n };\n table.options.onColumnFiltersChange == null || table.options.onColumnFiltersChange(updateFn);\n };\n table.resetColumnFilters = defaultState => {\n var _table$initialState$c, _table$initialState;\n table.setColumnFilters(defaultState ? [] : (_table$initialState$c = (_table$initialState = table.initialState) == null ? void 0 : _table$initialState.columnFilters) != null ? _table$initialState$c : []);\n };\n table.getPreFilteredRowModel = () => table.getCoreRowModel();\n table.getFilteredRowModel = () => {\n if (!table._getFilteredRowModel && table.options.getFilteredRowModel) {\n table._getFilteredRowModel = table.options.getFilteredRowModel(table);\n }\n if (table.options.manualFiltering || !table._getFilteredRowModel) {\n return table.getPreFilteredRowModel();\n }\n return table._getFilteredRowModel();\n };\n }\n};\nfunction shouldAutoRemoveFilter(filterFn, value, column) {\n return (filterFn && filterFn.autoRemove ? filterFn.autoRemove(value, column) : false) || typeof value === 'undefined' || typeof value === 'string' && !value;\n}\n\nconst sum = (columnId, _leafRows, childRows) => {\n // It's faster to just add the aggregations together instead of\n // process leaf nodes individually\n return childRows.reduce((sum, next) => {\n const nextValue = next.getValue(columnId);\n return sum + (typeof nextValue === 'number' ? nextValue : 0);\n }, 0);\n};\nconst min = (columnId, _leafRows, childRows) => {\n let min;\n childRows.forEach(row => {\n const value = row.getValue(columnId);\n if (value != null && (min > value || min === undefined && value >= value)) {\n min = value;\n }\n });\n return min;\n};\nconst max = (columnId, _leafRows, childRows) => {\n let max;\n childRows.forEach(row => {\n const value = row.getValue(columnId);\n if (value != null && (max < value || max === undefined && value >= value)) {\n max = value;\n }\n });\n return max;\n};\nconst extent = (columnId, _leafRows, childRows) => {\n let min;\n let max;\n childRows.forEach(row => {\n const value = row.getValue(columnId);\n if (value != null) {\n if (min === undefined) {\n if (value >= value) min = max = value;\n } else {\n if (min > value) min = value;\n if (max < value) max = value;\n }\n }\n });\n return [min, max];\n};\nconst mean = (columnId, leafRows) => {\n let count = 0;\n let sum = 0;\n leafRows.forEach(row => {\n let value = row.getValue(columnId);\n if (value != null && (value = +value) >= value) {\n ++count, sum += value;\n }\n });\n if (count) return sum / count;\n return;\n};\nconst median = (columnId, leafRows) => {\n if (!leafRows.length) {\n return;\n }\n const values = leafRows.map(row => row.getValue(columnId));\n if (!isNumberArray(values)) {\n return;\n }\n if (values.length === 1) {\n return values[0];\n }\n const mid = Math.floor(values.length / 2);\n const nums = values.sort((a, b) => a - b);\n return values.length % 2 !== 0 ? nums[mid] : (nums[mid - 1] + nums[mid]) / 2;\n};\nconst unique = (columnId, leafRows) => {\n return Array.from(new Set(leafRows.map(d => d.getValue(columnId))).values());\n};\nconst uniqueCount = (columnId, leafRows) => {\n return new Set(leafRows.map(d => d.getValue(columnId))).size;\n};\nconst count = (_columnId, leafRows) => {\n return leafRows.length;\n};\nconst aggregationFns = {\n sum,\n min,\n max,\n extent,\n mean,\n median,\n unique,\n uniqueCount,\n count\n};\n\n//\n\nconst ColumnGrouping = {\n getDefaultColumnDef: () => {\n return {\n aggregatedCell: props => {\n var _toString, _props$getValue;\n return (_toString = (_props$getValue = props.getValue()) == null || _props$getValue.toString == null ? void 0 : _props$getValue.toString()) != null ? _toString : null;\n },\n aggregationFn: 'auto'\n };\n },\n getInitialState: state => {\n return {\n grouping: [],\n ...state\n };\n },\n getDefaultOptions: table => {\n return {\n onGroupingChange: makeStateUpdater('grouping', table),\n groupedColumnMode: 'reorder'\n };\n },\n createColumn: (column, table) => {\n column.toggleGrouping = () => {\n table.setGrouping(old => {\n // Find any existing grouping for this column\n if (old != null && old.includes(column.id)) {\n return old.filter(d => d !== column.id);\n }\n return [...(old != null ? old : []), column.id];\n });\n };\n column.getCanGroup = () => {\n var _column$columnDef$ena, _table$options$enable;\n return ((_column$columnDef$ena = column.columnDef.enableGrouping) != null ? _column$columnDef$ena : true) && ((_table$options$enable = table.options.enableGrouping) != null ? _table$options$enable : true) && (!!column.accessorFn || !!column.columnDef.getGroupingValue);\n };\n column.getIsGrouped = () => {\n var _table$getState$group;\n return (_table$getState$group = table.getState().grouping) == null ? void 0 : _table$getState$group.includes(column.id);\n };\n column.getGroupedIndex = () => {\n var _table$getState$group2;\n return (_table$getState$group2 = table.getState().grouping) == null ? void 0 : _table$getState$group2.indexOf(column.id);\n };\n column.getToggleGroupingHandler = () => {\n const canGroup = column.getCanGroup();\n return () => {\n if (!canGroup) return;\n column.toggleGrouping();\n };\n };\n column.getAutoAggregationFn = () => {\n const firstRow = table.getCoreRowModel().flatRows[0];\n const value = firstRow == null ? void 0 : firstRow.getValue(column.id);\n if (typeof value === 'number') {\n return aggregationFns.sum;\n }\n if (Object.prototype.toString.call(value) === '[object Date]') {\n return aggregationFns.extent;\n }\n };\n column.getAggregationFn = () => {\n var _table$options$aggreg, _table$options$aggreg2;\n if (!column) {\n throw new Error();\n }\n return isFunction(column.columnDef.aggregationFn) ? column.columnDef.aggregationFn : column.columnDef.aggregationFn === 'auto' ? column.getAutoAggregationFn() : (_table$options$aggreg = (_table$options$aggreg2 = table.options.aggregationFns) == null ? void 0 : _table$options$aggreg2[column.columnDef.aggregationFn]) != null ? _table$options$aggreg : aggregationFns[column.columnDef.aggregationFn];\n };\n },\n createTable: table => {\n table.setGrouping = updater => table.options.onGroupingChange == null ? void 0 : table.options.onGroupingChange(updater);\n table.resetGrouping = defaultState => {\n var _table$initialState$g, _table$initialState;\n table.setGrouping(defaultState ? [] : (_table$initialState$g = (_table$initialState = table.initialState) == null ? void 0 : _table$initialState.grouping) != null ? _table$initialState$g : []);\n };\n table.getPreGroupedRowModel = () => table.getFilteredRowModel();\n table.getGroupedRowModel = () => {\n if (!table._getGroupedRowModel && table.options.getGroupedRowModel) {\n table._getGroupedRowModel = table.options.getGroupedRowModel(table);\n }\n if (table.options.manualGrouping || !table._getGroupedRowModel) {\n return table.getPreGroupedRowModel();\n }\n return table._getGroupedRowModel();\n };\n },\n createRow: (row, table) => {\n row.getIsGrouped = () => !!row.groupingColumnId;\n row.getGroupingValue = columnId => {\n if (row._groupingValuesCache.hasOwnProperty(columnId)) {\n return row._groupingValuesCache[columnId];\n }\n const column = table.getColumn(columnId);\n if (!(column != null && column.columnDef.getGroupingValue)) {\n return row.getValue(columnId);\n }\n row._groupingValuesCache[columnId] = column.columnDef.getGroupingValue(row.original);\n return row._groupingValuesCache[columnId];\n };\n row._groupingValuesCache = {};\n },\n createCell: (cell, column, row, table) => {\n cell.getIsGrouped = () => column.getIsGrouped() && column.id === row.groupingColumnId;\n cell.getIsPlaceholder = () => !cell.getIsGrouped() && column.getIsGrouped();\n cell.getIsAggregated = () => {\n var _row$subRows;\n return !cell.getIsGrouped() && !cell.getIsPlaceholder() && !!((_row$subRows = row.subRows) != null && _row$subRows.length);\n };\n }\n};\nfunction orderColumns(leafColumns, grouping, groupedColumnMode) {\n if (!(grouping != null && grouping.length) || !groupedColumnMode) {\n return leafColumns;\n }\n const nonGroupingColumns = leafColumns.filter(col => !grouping.includes(col.id));\n if (groupedColumnMode === 'remove') {\n return nonGroupingColumns;\n }\n const groupingColumns = grouping.map(g => leafColumns.find(col => col.id === g)).filter(Boolean);\n return [...groupingColumns, ...nonGroupingColumns];\n}\n\n//\n\nconst ColumnOrdering = {\n getInitialState: state => {\n return {\n columnOrder: [],\n ...state\n };\n },\n getDefaultOptions: table => {\n return {\n onColumnOrderChange: makeStateUpdater('columnOrder', table)\n };\n },\n createColumn: (column, table) => {\n column.getIndex = memo(position => [_getVisibleLeafColumns(table, position)], columns => columns.findIndex(d => d.id === column.id), getMemoOptions(table.options, 'debugColumns', 'getIndex'));\n column.getIsFirstColumn = position => {\n var _columns$;\n const columns = _getVisibleLeafColumns(table, position);\n return ((_columns$ = columns[0]) == null ? void 0 : _columns$.id) === column.id;\n };\n column.getIsLastColumn = position => {\n var _columns;\n const columns = _getVisibleLeafColumns(table, position);\n return ((_columns = columns[columns.length - 1]) == null ? void 0 : _columns.id) === column.id;\n };\n },\n createTable: table => {\n table.setColumnOrder = updater => table.options.onColumnOrderChange == null ? void 0 : table.options.onColumnOrderChange(updater);\n table.resetColumnOrder = defaultState => {\n var _table$initialState$c;\n table.setColumnOrder(defaultState ? [] : (_table$initialState$c = table.initialState.columnOrder) != null ? _table$initialState$c : []);\n };\n table._getOrderColumnsFn = memo(() => [table.getState().columnOrder, table.getState().grouping, table.options.groupedColumnMode], (columnOrder, grouping, groupedColumnMode) => columns => {\n // Sort grouped columns to the start of the column list\n // before the headers are built\n let orderedColumns = [];\n\n // If there is no order, return the normal columns\n if (!(columnOrder != null && columnOrder.length)) {\n orderedColumns = columns;\n } else {\n const columnOrderCopy = [...columnOrder];\n\n // If there is an order, make a copy of the columns\n const columnsCopy = [...columns];\n\n // And make a new ordered array of the columns\n\n // Loop over the columns and place them in order into the new array\n while (columnsCopy.length && columnOrderCopy.length) {\n const targetColumnId = columnOrderCopy.shift();\n const foundIndex = columnsCopy.findIndex(d => d.id === targetColumnId);\n if (foundIndex > -1) {\n orderedColumns.push(columnsCopy.splice(foundIndex, 1)[0]);\n }\n }\n\n // If there are any columns left, add them to the end\n orderedColumns = [...orderedColumns, ...columnsCopy];\n }\n return orderColumns(orderedColumns, grouping, groupedColumnMode);\n }, getMemoOptions(table.options, 'debugTable', '_getOrderColumnsFn'));\n }\n};\n\n//\n\nconst getDefaultColumnPinningState = () => ({\n left: [],\n right: []\n});\nconst ColumnPinning = {\n getInitialState: state => {\n return {\n columnPinning: getDefaultColumnPinningState(),\n ...state\n };\n },\n getDefaultOptions: table => {\n return {\n onColumnPinningChange: makeStateUpdater('columnPinning', table)\n };\n },\n createColumn: (column, table) => {\n column.pin = position => {\n const columnIds = column.getLeafColumns().map(d => d.id).filter(Boolean);\n table.setColumnPinning(old => {\n var _old$left3, _old$right3;\n if (position === 'right') {\n var _old$left, _old$right;\n return {\n left: ((_old$left = old == null ? void 0 : old.left) != null ? _old$left : []).filter(d => !(columnIds != null && columnIds.includes(d))),\n right: [...((_old$right = old == null ? void 0 : old.right) != null ? _old$right : []).filter(d => !(columnIds != null && columnIds.includes(d))), ...columnIds]\n };\n }\n if (position === 'left') {\n var _old$left2, _old$right2;\n return {\n left: [...((_old$left2 = old == null ? void 0 : old.left) != null ? _old$left2 : []).filter(d => !(columnIds != null && columnIds.includes(d))), ...columnIds],\n right: ((_old$right2 = old == null ? void 0 : old.right) != null ? _old$right2 : []).filter(d => !(columnIds != null && columnIds.includes(d)))\n };\n }\n return {\n left: ((_old$left3 = old == null ? void 0 : old.left) != null ? _old$left3 : []).filter(d => !(columnIds != null && columnIds.includes(d))),\n right: ((_old$right3 = old == null ? void 0 : old.right) != null ? _old$right3 : []).filter(d => !(columnIds != null && columnIds.includes(d)))\n };\n });\n };\n column.getCanPin = () => {\n const leafColumns = column.getLeafColumns();\n return leafColumns.some(d => {\n var _d$columnDef$enablePi, _ref, _table$options$enable;\n return ((_d$columnDef$enablePi = d.columnDef.enablePinning) != null ? _d$columnDef$enablePi : true) && ((_ref = (_table$options$enable = table.options.enableColumnPinning) != null ? _table$options$enable : table.options.enablePinning) != null ? _ref : true);\n });\n };\n column.getIsPinned = () => {\n const leafColumnIds = column.getLeafColumns().map(d => d.id);\n const {\n left,\n right\n } = table.getState().columnPinning;\n const isLeft = leafColumnIds.some(d => left == null ? void 0 : left.includes(d));\n const isRight = leafColumnIds.some(d => right == null ? void 0 : right.includes(d));\n return isLeft ? 'left' : isRight ? 'right' : false;\n };\n column.getPinnedIndex = () => {\n var _table$getState$colum, _table$getState$colum2;\n const position = column.getIsPinned();\n return position ? (_table$getState$colum = (_table$getState$colum2 = table.getState().columnPinning) == null || (_table$getState$colum2 = _table$getState$colum2[position]) == null ? void 0 : _table$getState$colum2.indexOf(column.id)) != null ? _table$getState$colum : -1 : 0;\n };\n },\n createRow: (row, table) => {\n row.getCenterVisibleCells = memo(() => [row._getAllVisibleCells(), table.getState().columnPinning.left, table.getState().columnPinning.right], (allCells, left, right) => {\n const leftAndRight = [...(left != null ? left : []), ...(right != null ? right : [])];\n return allCells.filter(d => !leftAndRight.includes(d.column.id));\n }, getMemoOptions(table.options, 'debugRows', 'getCenterVisibleCells'));\n row.getLeftVisibleCells = memo(() => [row._getAllVisibleCells(), table.getState().columnPinning.left], (allCells, left) => {\n const cells = (left != null ? left : []).map(columnId => allCells.find(cell => cell.column.id === columnId)).filter(Boolean).map(d => ({\n ...d,\n position: 'left'\n }));\n return cells;\n }, getMemoOptions(table.options, 'debugRows', 'getLeftVisibleCells'));\n row.getRightVisibleCells = memo(() => [row._getAllVisibleCells(), table.getState().columnPinning.right], (allCells, right) => {\n const cells = (right != null ? right : []).map(columnId => allCells.find(cell => cell.column.id === columnId)).filter(Boolean).map(d => ({\n ...d,\n position: 'right'\n }));\n return cells;\n }, getMemoOptions(table.options, 'debugRows', 'getRightVisibleCells'));\n },\n createTable: table => {\n table.setColumnPinning = updater => table.options.onColumnPinningChange == null ? void 0 : table.options.onColumnPinningChange(updater);\n table.resetColumnPinning = defaultState => {\n var _table$initialState$c, _table$initialState;\n return table.setColumnPinning(defaultState ? getDefaultColumnPinningState() : (_table$initialState$c = (_table$initialState = table.initialState) == null ? void 0 : _table$initialState.columnPinning) != null ? _table$initialState$c : getDefaultColumnPinningState());\n };\n table.getIsSomeColumnsPinned = position => {\n var _pinningState$positio;\n const pinningState = table.getState().columnPinning;\n if (!position) {\n var _pinningState$left, _pinningState$right;\n return Boolean(((_pinningState$left = pinningState.left) == null ? void 0 : _pinningState$left.length) || ((_pinningState$right = pinningState.right) == null ? void 0 : _pinningState$right.length));\n }\n return Boolean((_pinningState$positio = pinningState[position]) == null ? void 0 : _pinningState$positio.length);\n };\n table.getLeftLeafColumns = memo(() => [table.getAllLeafColumns(), table.getState().columnPinning.left], (allColumns, left) => {\n return (left != null ? left : []).map(columnId => allColumns.find(column => column.id === columnId)).filter(Boolean);\n }, getMemoOptions(table.options, 'debugColumns', 'getLeftLeafColumns'));\n table.getRightLeafColumns = memo(() => [table.getAllLeafColumns(), table.getState().columnPinning.right], (allColumns, right) => {\n return (right != null ? right : []).map(columnId => allColumns.find(column => column.id === columnId)).filter(Boolean);\n }, getMemoOptions(table.options, 'debugColumns', 'getRightLeafColumns'));\n table.getCenterLeafColumns = memo(() => [table.getAllLeafColumns(), table.getState().columnPinning.left, table.getState().columnPinning.right], (allColumns, left, right) => {\n const leftAndRight = [...(left != null ? left : []), ...(right != null ? right : [])];\n return allColumns.filter(d => !leftAndRight.includes(d.id));\n }, getMemoOptions(table.options, 'debugColumns', 'getCenterLeafColumns'));\n }\n};\n\nfunction safelyAccessDocument(_document) {\n return _document || (typeof document !== 'undefined' ? document : null);\n}\n\n//\n\n//\n\nconst defaultColumnSizing = {\n size: 150,\n minSize: 20,\n maxSize: Number.MAX_SAFE_INTEGER\n};\nconst getDefaultColumnSizingInfoState = () => ({\n startOffset: null,\n startSize: null,\n deltaOffset: null,\n deltaPercentage: null,\n isResizingColumn: false,\n columnSizingStart: []\n});\nconst ColumnSizing = {\n getDefaultColumnDef: () => {\n return defaultColumnSizing;\n },\n getInitialState: state => {\n return {\n columnSizing: {},\n columnSizingInfo: getDefaultColumnSizingInfoState(),\n ...state\n };\n },\n getDefaultOptions: table => {\n return {\n columnResizeMode: 'onEnd',\n columnResizeDirection: 'ltr',\n onColumnSizingChange: makeStateUpdater('columnSizing', table),\n onColumnSizingInfoChange: makeStateUpdater('columnSizingInfo', table)\n };\n },\n createColumn: (column, table) => {\n column.getSize = () => {\n var _column$columnDef$min, _ref, _column$columnDef$max;\n const columnSize = table.getState().columnSizing[column.id];\n return Math.min(Math.max((_column$columnDef$min = column.columnDef.minSize) != null ? _column$columnDef$min : defaultColumnSizing.minSize, (_ref = columnSize != null ? columnSize : column.columnDef.size) != null ? _ref : defaultColumnSizing.size), (_column$columnDef$max = column.columnDef.maxSize) != null ? _column$columnDef$max : defaultColumnSizing.maxSize);\n };\n column.getStart = memo(position => [position, _getVisibleLeafColumns(table, position), table.getState().columnSizing], (position, columns) => columns.slice(0, column.getIndex(position)).reduce((sum, column) => sum + column.getSize(), 0), getMemoOptions(table.options, 'debugColumns', 'getStart'));\n column.getAfter = memo(position => [position, _getVisibleLeafColumns(table, position), table.getState().columnSizing], (position, columns) => columns.slice(column.getIndex(position) + 1).reduce((sum, column) => sum + column.getSize(), 0), getMemoOptions(table.options, 'debugColumns', 'getAfter'));\n column.resetSize = () => {\n table.setColumnSizing(_ref2 => {\n let {\n [column.id]: _,\n ...rest\n } = _ref2;\n return rest;\n });\n };\n column.getCanResize = () => {\n var _column$columnDef$ena, _table$options$enable;\n return ((_column$columnDef$ena = column.columnDef.enableResizing) != null ? _column$columnDef$ena : true) && ((_table$options$enable = table.options.enableColumnResizing) != null ? _table$options$enable : true);\n };\n column.getIsResizing = () => {\n return table.getState().columnSizingInfo.isResizingColumn === column.id;\n };\n },\n createHeader: (header, table) => {\n header.getSize = () => {\n let sum = 0;\n const recurse = header => {\n if (header.subHeaders.length) {\n header.subHeaders.forEach(recurse);\n } else {\n var _header$column$getSiz;\n sum += (_header$column$getSiz = header.column.getSize()) != null ? _header$column$getSiz : 0;\n }\n };\n recurse(header);\n return sum;\n };\n header.getStart = () => {\n if (header.index > 0) {\n const prevSiblingHeader = header.headerGroup.headers[header.index - 1];\n return prevSiblingHeader.getStart() + prevSiblingHeader.getSize();\n }\n return 0;\n };\n header.getResizeHandler = _contextDocument => {\n const column = table.getColumn(header.column.id);\n const canResize = column == null ? void 0 : column.getCanResize();\n return e => {\n if (!column || !canResize) {\n return;\n }\n e.persist == null || e.persist();\n if (isTouchStartEvent(e)) {\n // lets not respond to multiple touches (e.g. 2 or 3 fingers)\n if (e.touches && e.touches.length > 1) {\n return;\n }\n }\n const startSize = header.getSize();\n const columnSizingStart = header ? header.getLeafHeaders().map(d => [d.column.id, d.column.getSize()]) : [[column.id, column.getSize()]];\n const clientX = isTouchStartEvent(e) ? Math.round(e.touches[0].clientX) : e.clientX;\n const newColumnSizing = {};\n const updateOffset = (eventType, clientXPos) => {\n if (typeof clientXPos !== 'number') {\n return;\n }\n table.setColumnSizingInfo(old => {\n var _old$startOffset, _old$startSize;\n const deltaDirection = table.options.columnResizeDirection === 'rtl' ? -1 : 1;\n const deltaOffset = (clientXPos - ((_old$startOffset = old == null ? void 0 : old.startOffset) != null ? _old$startOffset : 0)) * deltaDirection;\n const deltaPercentage = Math.max(deltaOffset / ((_old$startSize = old == null ? void 0 : old.startSize) != null ? _old$startSize : 0), -0.999999);\n old.columnSizingStart.forEach(_ref3 => {\n let [columnId, headerSize] = _ref3;\n newColumnSizing[columnId] = Math.round(Math.max(headerSize + headerSize * deltaPercentage, 0) * 100) / 100;\n });\n return {\n ...old,\n deltaOffset,\n deltaPercentage\n };\n });\n if (table.options.columnResizeMode === 'onChange' || eventType === 'end') {\n table.setColumnSizing(old => ({\n ...old,\n ...newColumnSizing\n }));\n }\n };\n const onMove = clientXPos => updateOffset('move', clientXPos);\n const onEnd = clientXPos => {\n updateOffset('end', clientXPos);\n table.setColumnSizingInfo(old => ({\n ...old,\n isResizingColumn: false,\n startOffset: null,\n startSize: null,\n deltaOffset: null,\n deltaPercentage: null,\n columnSizingStart: []\n }));\n };\n const contextDocument = safelyAccessDocument(_contextDocument);\n const mouseEvents = {\n moveHandler: e => onMove(e.clientX),\n upHandler: e => {\n contextDocument == null || contextDocument.removeEventListener('mousemove', mouseEvents.moveHandler);\n contextDocument == null || contextDocument.removeEventListener('mouseup', mouseEvents.upHandler);\n onEnd(e.clientX);\n }\n };\n const touchEvents = {\n moveHandler: e => {\n if (e.cancelable) {\n e.preventDefault();\n e.stopPropagation();\n }\n onMove(e.touches[0].clientX);\n return false;\n },\n upHandler: e => {\n var _e$touches$;\n contextDocument == null || contextDocument.removeEventListener('touchmove', touchEvents.moveHandler);\n contextDocument == null || contextDocument.removeEventListener('touchend', touchEvents.upHandler);\n if (e.cancelable) {\n e.preventDefault();\n e.stopPropagation();\n }\n onEnd((_e$touches$ = e.touches[0]) == null ? void 0 : _e$touches$.clientX);\n }\n };\n const passiveIfSupported = passiveEventSupported() ? {\n passive: false\n } : false;\n if (isTouchStartEvent(e)) {\n contextDocument == null || contextDocument.addEventListener('touchmove', touchEvents.moveHandler, passiveIfSupported);\n contextDocument == null || contextDocument.addEventListener('touchend', touchEvents.upHandler, passiveIfSupported);\n } else {\n contextDocument == null || contextDocument.addEventListener('mousemove', mouseEvents.moveHandler, passiveIfSupported);\n contextDocument == null || contextDocument.addEventListener('mouseup', mouseEvents.upHandler, passiveIfSupported);\n }\n table.setColumnSizingInfo(old => ({\n ...old,\n startOffset: clientX,\n startSize,\n deltaOffset: 0,\n deltaPercentage: 0,\n columnSizingStart,\n isResizingColumn: column.id\n }));\n };\n };\n },\n createTable: table => {\n table.setColumnSizing = updater => table.options.onColumnSizingChange == null ? void 0 : table.options.onColumnSizingChange(updater);\n table.setColumnSizingInfo = updater => table.options.onColumnSizingInfoChange == null ? void 0 : table.options.onColumnSizingInfoChange(updater);\n table.resetColumnSizing = defaultState => {\n var _table$initialState$c;\n table.setColumnSizing(defaultState ? {} : (_table$initialState$c = table.initialState.columnSizing) != null ? _table$initialState$c : {});\n };\n table.resetHeaderSizeInfo = defaultState => {\n var _table$initialState$c2;\n table.setColumnSizingInfo(defaultState ? getDefaultColumnSizingInfoState() : (_table$initialState$c2 = table.initialState.columnSizingInfo) != null ? _table$initialState$c2 : getDefaultColumnSizingInfoState());\n };\n table.getTotalSize = () => {\n var _table$getHeaderGroup, _table$getHeaderGroup2;\n return (_table$getHeaderGroup = (_table$getHeaderGroup2 = table.getHeaderGroups()[0]) == null ? void 0 : _table$getHeaderGroup2.headers.reduce((sum, header) => {\n return sum + header.getSize();\n }, 0)) != null ? _table$getHeaderGroup : 0;\n };\n table.getLeftTotalSize = () => {\n var _table$getLeftHeaderG, _table$getLeftHeaderG2;\n return (_table$getLeftHeaderG = (_table$getLeftHeaderG2 = table.getLeftHeaderGroups()[0]) == null ? void 0 : _table$getLeftHeaderG2.headers.reduce((sum, header) => {\n return sum + header.getSize();\n }, 0)) != null ? _table$getLeftHeaderG : 0;\n };\n table.getCenterTotalSize = () => {\n var _table$getCenterHeade, _table$getCenterHeade2;\n return (_table$getCenterHeade = (_table$getCenterHeade2 = table.getCenterHeaderGroups()[0]) == null ? void 0 : _table$getCenterHeade2.headers.reduce((sum, header) => {\n return sum + header.getSize();\n }, 0)) != null ? _table$getCenterHeade : 0;\n };\n table.getRightTotalSize = () => {\n var _table$getRightHeader, _table$getRightHeader2;\n return (_table$getRightHeader = (_table$getRightHeader2 = table.getRightHeaderGroups()[0]) == null ? void 0 : _table$getRightHeader2.headers.reduce((sum, header) => {\n return sum + header.getSize();\n }, 0)) != null ? _table$getRightHeader : 0;\n };\n }\n};\nlet passiveSupported = null;\nfunction passiveEventSupported() {\n if (typeof passiveSupported === 'boolean') return passiveSupported;\n let supported = false;\n try {\n const options = {\n get passive() {\n supported = true;\n return false;\n }\n };\n const noop = () => {};\n window.addEventListener('test', noop, options);\n window.removeEventListener('test', noop);\n } catch (err) {\n supported = false;\n }\n passiveSupported = supported;\n return passiveSupported;\n}\nfunction isTouchStartEvent(e) {\n return e.type === 'touchstart';\n}\n\n//\n\nconst ColumnVisibility = {\n getInitialState: state => {\n return {\n columnVisibility: {},\n ...state\n };\n },\n getDefaultOptions: table => {\n return {\n onColumnVisibilityChange: makeStateUpdater('columnVisibility', table)\n };\n },\n createColumn: (column, table) => {\n column.toggleVisibility = value => {\n if (column.getCanHide()) {\n table.setColumnVisibility(old => ({\n ...old,\n [column.id]: value != null ? value : !column.getIsVisible()\n }));\n }\n };\n column.getIsVisible = () => {\n var _ref, _table$getState$colum;\n const childColumns = column.columns;\n return (_ref = childColumns.length ? childColumns.some(c => c.getIsVisible()) : (_table$getState$colum = table.getState().columnVisibility) == null ? void 0 : _table$getState$colum[column.id]) != null ? _ref : true;\n };\n column.getCanHide = () => {\n var _column$columnDef$ena, _table$options$enable;\n return ((_column$columnDef$ena = column.columnDef.enableHiding) != null ? _column$columnDef$ena : true) && ((_table$options$enable = table.options.enableHiding) != null ? _table$options$enable : true);\n };\n column.getToggleVisibilityHandler = () => {\n return e => {\n column.toggleVisibility == null || column.toggleVisibility(e.target.checked);\n };\n };\n },\n createRow: (row, table) => {\n row._getAllVisibleCells = memo(() => [row.getAllCells(), table.getState().columnVisibility], cells => {\n return cells.filter(cell => cell.column.getIsVisible());\n }, getMemoOptions(table.options, 'debugRows', '_getAllVisibleCells'));\n row.getVisibleCells = memo(() => [row.getLeftVisibleCells(), row.getCenterVisibleCells(), row.getRightVisibleCells()], (left, center, right) => [...left, ...center, ...right], getMemoOptions(table.options, 'debugRows', 'getVisibleCells'));\n },\n createTable: table => {\n const makeVisibleColumnsMethod = (key, getColumns) => {\n return memo(() => [getColumns(), getColumns().filter(d => d.getIsVisible()).map(d => d.id).join('_')], columns => {\n return columns.filter(d => d.getIsVisible == null ? void 0 : d.getIsVisible());\n }, getMemoOptions(table.options, 'debugColumns', key));\n };\n table.getVisibleFlatColumns = makeVisibleColumnsMethod('getVisibleFlatColumns', () => table.getAllFlatColumns());\n table.getVisibleLeafColumns = makeVisibleColumnsMethod('getVisibleLeafColumns', () => table.getAllLeafColumns());\n table.getLeftVisibleLeafColumns = makeVisibleColumnsMethod('getLeftVisibleLeafColumns', () => table.getLeftLeafColumns());\n table.getRightVisibleLeafColumns = makeVisibleColumnsMethod('getRightVisibleLeafColumns', () => table.getRightLeafColumns());\n table.getCenterVisibleLeafColumns = makeVisibleColumnsMethod('getCenterVisibleLeafColumns', () => table.getCenterLeafColumns());\n table.setColumnVisibility = updater => table.options.onColumnVisibilityChange == null ? void 0 : table.options.onColumnVisibilityChange(updater);\n table.resetColumnVisibility = defaultState => {\n var _table$initialState$c;\n table.setColumnVisibility(defaultState ? {} : (_table$initialState$c = table.initialState.columnVisibility) != null ? _table$initialState$c : {});\n };\n table.toggleAllColumnsVisible = value => {\n var _value;\n value = (_value = value) != null ? _value : !table.getIsAllColumnsVisible();\n table.setColumnVisibility(table.getAllLeafColumns().reduce((obj, column) => ({\n ...obj,\n [column.id]: !value ? !(column.getCanHide != null && column.getCanHide()) : value\n }), {}));\n };\n table.getIsAllColumnsVisible = () => !table.getAllLeafColumns().some(column => !(column.getIsVisible != null && column.getIsVisible()));\n table.getIsSomeColumnsVisible = () => table.getAllLeafColumns().some(column => column.getIsVisible == null ? void 0 : column.getIsVisible());\n table.getToggleAllColumnsVisibilityHandler = () => {\n return e => {\n var _target;\n table.toggleAllColumnsVisible((_target = e.target) == null ? void 0 : _target.checked);\n };\n };\n }\n};\nfunction _getVisibleLeafColumns(table, position) {\n return !position ? table.getVisibleLeafColumns() : position === 'center' ? table.getCenterVisibleLeafColumns() : position === 'left' ? table.getLeftVisibleLeafColumns() : table.getRightVisibleLeafColumns();\n}\n\n//\n\nconst GlobalFaceting = {\n createTable: table => {\n table._getGlobalFacetedRowModel = table.options.getFacetedRowModel && table.options.getFacetedRowModel(table, '__global__');\n table.getGlobalFacetedRowModel = () => {\n if (table.options.manualFiltering || !table._getGlobalFacetedRowModel) {\n return table.getPreFilteredRowModel();\n }\n return table._getGlobalFacetedRowModel();\n };\n table._getGlobalFacetedUniqueValues = table.options.getFacetedUniqueValues && table.options.getFacetedUniqueValues(table, '__global__');\n table.getGlobalFacetedUniqueValues = () => {\n if (!table._getGlobalFacetedUniqueValues) {\n return new Map();\n }\n return table._getGlobalFacetedUniqueValues();\n };\n table._getGlobalFacetedMinMaxValues = table.options.getFacetedMinMaxValues && table.options.getFacetedMinMaxValues(table, '__global__');\n table.getGlobalFacetedMinMaxValues = () => {\n if (!table._getGlobalFacetedMinMaxValues) {\n return;\n }\n return table._getGlobalFacetedMinMaxValues();\n };\n }\n};\n\n//\n\nconst GlobalFiltering = {\n getInitialState: state => {\n return {\n globalFilter: undefined,\n ...state\n };\n },\n getDefaultOptions: table => {\n return {\n onGlobalFilterChange: makeStateUpdater('globalFilter', table),\n globalFilterFn: 'auto',\n getColumnCanGlobalFilter: column => {\n var _table$getCoreRowMode;\n const value = (_table$getCoreRowMode = table.getCoreRowModel().flatRows[0]) == null || (_table$getCoreRowMode = _table$getCoreRowMode._getAllCellsByColumnId()[column.id]) == null ? void 0 : _table$getCoreRowMode.getValue();\n return typeof value === 'string' || typeof value === 'number';\n }\n };\n },\n createColumn: (column, table) => {\n column.getCanGlobalFilter = () => {\n var _column$columnDef$ena, _table$options$enable, _table$options$enable2, _table$options$getCol;\n return ((_column$columnDef$ena = column.columnDef.enableGlobalFilter) != null ? _column$columnDef$ena : true) && ((_table$options$enable = table.options.enableGlobalFilter) != null ? _table$options$enable : true) && ((_table$options$enable2 = table.options.enableFilters) != null ? _table$options$enable2 : true) && ((_table$options$getCol = table.options.getColumnCanGlobalFilter == null ? void 0 : table.options.getColumnCanGlobalFilter(column)) != null ? _table$options$getCol : true) && !!column.accessorFn;\n };\n },\n createTable: table => {\n table.getGlobalAutoFilterFn = () => {\n return filterFns.includesString;\n };\n table.getGlobalFilterFn = () => {\n var _table$options$filter, _table$options$filter2;\n const {\n globalFilterFn: globalFilterFn\n } = table.options;\n return isFunction(globalFilterFn) ? globalFilterFn : globalFilterFn === 'auto' ? table.getGlobalAutoFilterFn() : (_table$options$filter = (_table$options$filter2 = table.options.filterFns) == null ? void 0 : _table$options$filter2[globalFilterFn]) != null ? _table$options$filter : filterFns[globalFilterFn];\n };\n table.setGlobalFilter = updater => {\n table.options.onGlobalFilterChange == null || table.options.onGlobalFilterChange(updater);\n };\n table.resetGlobalFilter = defaultState => {\n table.setGlobalFilter(defaultState ? undefined : table.initialState.globalFilter);\n };\n }\n};\n\n//\n\nconst RowExpanding = {\n getInitialState: state => {\n return {\n expanded: {},\n ...state\n };\n },\n getDefaultOptions: table => {\n return {\n onExpandedChange: makeStateUpdater('expanded', table),\n paginateExpandedRows: true\n };\n },\n createTable: table => {\n let registered = false;\n let queued = false;\n table._autoResetExpanded = () => {\n var _ref, _table$options$autoRe;\n if (!registered) {\n table._queue(() => {\n registered = true;\n });\n return;\n }\n if ((_ref = (_table$options$autoRe = table.options.autoResetAll) != null ? _table$options$autoRe : table.options.autoResetExpanded) != null ? _ref : !table.options.manualExpanding) {\n if (queued) return;\n queued = true;\n table._queue(() => {\n table.resetExpanded();\n queued = false;\n });\n }\n };\n table.setExpanded = updater => table.options.onExpandedChange == null ? void 0 : table.options.onExpandedChange(updater);\n table.toggleAllRowsExpanded = expanded => {\n if (expanded != null ? expanded : !table.getIsAllRowsExpanded()) {\n table.setExpanded(true);\n } else {\n table.setExpanded({});\n }\n };\n table.resetExpanded = defaultState => {\n var _table$initialState$e, _table$initialState;\n table.setExpanded(defaultState ? {} : (_table$initialState$e = (_table$initialState = table.initialState) == null ? void 0 : _table$initialState.expanded) != null ? _table$initialState$e : {});\n };\n table.getCanSomeRowsExpand = () => {\n return table.getPrePaginationRowModel().flatRows.some(row => row.getCanExpand());\n };\n table.getToggleAllRowsExpandedHandler = () => {\n return e => {\n e.persist == null || e.persist();\n table.toggleAllRowsExpanded();\n };\n };\n table.getIsSomeRowsExpanded = () => {\n const expanded = table.getState().expanded;\n return expanded === true || Object.values(expanded).some(Boolean);\n };\n table.getIsAllRowsExpanded = () => {\n const expanded = table.getState().expanded;\n\n // If expanded is true, save some cycles and return true\n if (typeof expanded === 'boolean') {\n return expanded === true;\n }\n if (!Object.keys(expanded).length) {\n return false;\n }\n\n // If any row is not expanded, return false\n if (table.getRowModel().flatRows.some(row => !row.getIsExpanded())) {\n return false;\n }\n\n // They must all be expanded :shrug:\n return true;\n };\n table.getExpandedDepth = () => {\n let maxDepth = 0;\n const rowIds = table.getState().expanded === true ? Object.keys(table.getRowModel().rowsById) : Object.keys(table.getState().expanded);\n rowIds.forEach(id => {\n const splitId = id.split('.');\n maxDepth = Math.max(maxDepth, splitId.length);\n });\n return maxDepth;\n };\n table.getPreExpandedRowModel = () => table.getSortedRowModel();\n table.getExpandedRowModel = () => {\n if (!table._getExpandedRowModel && table.options.getExpandedRowModel) {\n table._getExpandedRowModel = table.options.getExpandedRowModel(table);\n }\n if (table.options.manualExpanding || !table._getExpandedRowModel) {\n return table.getPreExpandedRowModel();\n }\n return table._getExpandedRowModel();\n };\n },\n createRow: (row, table) => {\n row.toggleExpanded = expanded => {\n table.setExpanded(old => {\n var _expanded;\n const exists = old === true ? true : !!(old != null && old[row.id]);\n let oldExpanded = {};\n if (old === true) {\n Object.keys(table.getRowModel().rowsById).forEach(rowId => {\n oldExpanded[rowId] = true;\n });\n } else {\n oldExpanded = old;\n }\n expanded = (_expanded = expanded) != null ? _expanded : !exists;\n if (!exists && expanded) {\n return {\n ...oldExpanded,\n [row.id]: true\n };\n }\n if (exists && !expanded) {\n const {\n [row.id]: _,\n ...rest\n } = oldExpanded;\n return rest;\n }\n return old;\n });\n };\n row.getIsExpanded = () => {\n var _table$options$getIsR;\n const expanded = table.getState().expanded;\n return !!((_table$options$getIsR = table.options.getIsRowExpanded == null ? void 0 : table.options.getIsRowExpanded(row)) != null ? _table$options$getIsR : expanded === true || (expanded == null ? void 0 : expanded[row.id]));\n };\n row.getCanExpand = () => {\n var _table$options$getRow, _table$options$enable, _row$subRows;\n return (_table$options$getRow = table.options.getRowCanExpand == null ? void 0 : table.options.getRowCanExpand(row)) != null ? _table$options$getRow : ((_table$options$enable = table.options.enableExpanding) != null ? _table$options$enable : true) && !!((_row$subRows = row.subRows) != null && _row$subRows.length);\n };\n row.getIsAllParentsExpanded = () => {\n let isFullyExpanded = true;\n let currentRow = row;\n while (isFullyExpanded && currentRow.parentId) {\n currentRow = table.getRow(currentRow.parentId, true);\n isFullyExpanded = currentRow.getIsExpanded();\n }\n return isFullyExpanded;\n };\n row.getToggleExpandedHandler = () => {\n const canExpand = row.getCanExpand();\n return () => {\n if (!canExpand) return;\n row.toggleExpanded();\n };\n };\n }\n};\n\n//\n\nconst defaultPageIndex = 0;\nconst defaultPageSize = 10;\nconst getDefaultPaginationState = () => ({\n pageIndex: defaultPageIndex,\n pageSize: defaultPageSize\n});\nconst RowPagination = {\n getInitialState: state => {\n return {\n ...state,\n pagination: {\n ...getDefaultPaginationState(),\n ...(state == null ? void 0 : state.pagination)\n }\n };\n },\n getDefaultOptions: table => {\n return {\n onPaginationChange: makeStateUpdater('pagination', table)\n };\n },\n createTable: table => {\n let registered = false;\n let queued = false;\n table._autoResetPageIndex = () => {\n var _ref, _table$options$autoRe;\n if (!registered) {\n table._queue(() => {\n registered = true;\n });\n return;\n }\n if ((_ref = (_table$options$autoRe = table.options.autoResetAll) != null ? _table$options$autoRe : table.options.autoResetPageIndex) != null ? _ref : !table.options.manualPagination) {\n if (queued) return;\n queued = true;\n table._queue(() => {\n table.resetPageIndex();\n queued = false;\n });\n }\n };\n table.setPagination = updater => {\n const safeUpdater = old => {\n let newState = functionalUpdate(updater, old);\n return newState;\n };\n return table.options.onPaginationChange == null ? void 0 : table.options.onPaginationChange(safeUpdater);\n };\n table.resetPagination = defaultState => {\n var _table$initialState$p;\n table.setPagination(defaultState ? getDefaultPaginationState() : (_table$initialState$p = table.initialState.pagination) != null ? _table$initialState$p : getDefaultPaginationState());\n };\n table.setPageIndex = updater => {\n table.setPagination(old => {\n let pageIndex = functionalUpdate(updater, old.pageIndex);\n const maxPageIndex = typeof table.options.pageCount === 'undefined' || table.options.pageCount === -1 ? Number.MAX_SAFE_INTEGER : table.options.pageCount - 1;\n pageIndex = Math.max(0, Math.min(pageIndex, maxPageIndex));\n return {\n ...old,\n pageIndex\n };\n });\n };\n table.resetPageIndex = defaultState => {\n var _table$initialState$p2, _table$initialState;\n table.setPageIndex(defaultState ? defaultPageIndex : (_table$initialState$p2 = (_table$initialState = table.initialState) == null || (_table$initialState = _table$initialState.pagination) == null ? void 0 : _table$initialState.pageIndex) != null ? _table$initialState$p2 : defaultPageIndex);\n };\n table.resetPageSize = defaultState => {\n var _table$initialState$p3, _table$initialState2;\n table.setPageSize(defaultState ? defaultPageSize : (_table$initialState$p3 = (_table$initialState2 = table.initialState) == null || (_table$initialState2 = _table$initialState2.pagination) == null ? void 0 : _table$initialState2.pageSize) != null ? _table$initialState$p3 : defaultPageSize);\n };\n table.setPageSize = updater => {\n table.setPagination(old => {\n const pageSize = Math.max(1, functionalUpdate(updater, old.pageSize));\n const topRowIndex = old.pageSize * old.pageIndex;\n const pageIndex = Math.floor(topRowIndex / pageSize);\n return {\n ...old,\n pageIndex,\n pageSize\n };\n });\n };\n //deprecated\n table.setPageCount = updater => table.setPagination(old => {\n var _table$options$pageCo;\n let newPageCount = functionalUpdate(updater, (_table$options$pageCo = table.options.pageCount) != null ? _table$options$pageCo : -1);\n if (typeof newPageCount === 'number') {\n newPageCount = Math.max(-1, newPageCount);\n }\n return {\n ...old,\n pageCount: newPageCount\n };\n });\n table.getPageOptions = memo(() => [table.getPageCount()], pageCount => {\n let pageOptions = [];\n if (pageCount && pageCount > 0) {\n pageOptions = [...new Array(pageCount)].fill(null).map((_, i) => i);\n }\n return pageOptions;\n }, getMemoOptions(table.options, 'debugTable', 'getPageOptions'));\n table.getCanPreviousPage = () => table.getState().pagination.pageIndex > 0;\n table.getCanNextPage = () => {\n const {\n pageIndex\n } = table.getState().pagination;\n const pageCount = table.getPageCount();\n if (pageCount === -1) {\n return true;\n }\n if (pageCount === 0) {\n return false;\n }\n return pageIndex < pageCount - 1;\n };\n table.previousPage = () => {\n return table.setPageIndex(old => old - 1);\n };\n table.nextPage = () => {\n return table.setPageIndex(old => {\n return old + 1;\n });\n };\n table.firstPage = () => {\n return table.setPageIndex(0);\n };\n table.lastPage = () => {\n return table.setPageIndex(table.getPageCount() - 1);\n };\n table.getPrePaginationRowModel = () => table.getExpandedRowModel();\n table.getPaginationRowModel = () => {\n if (!table._getPaginationRowModel && table.options.getPaginationRowModel) {\n table._getPaginationRowModel = table.options.getPaginationRowModel(table);\n }\n if (table.options.manualPagination || !table._getPaginationRowModel) {\n return table.getPrePaginationRowModel();\n }\n return table._getPaginationRowModel();\n };\n table.getPageCount = () => {\n var _table$options$pageCo2;\n return (_table$options$pageCo2 = table.options.pageCount) != null ? _table$options$pageCo2 : Math.ceil(table.getRowCount() / table.getState().pagination.pageSize);\n };\n table.getRowCount = () => {\n var _table$options$rowCou;\n return (_table$options$rowCou = table.options.rowCount) != null ? _table$options$rowCou : table.getPrePaginationRowModel().rows.length;\n };\n }\n};\n\n//\n\nconst getDefaultRowPinningState = () => ({\n top: [],\n bottom: []\n});\nconst RowPinning = {\n getInitialState: state => {\n return {\n rowPinning: getDefaultRowPinningState(),\n ...state\n };\n },\n getDefaultOptions: table => {\n return {\n onRowPinningChange: makeStateUpdater('rowPinning', table)\n };\n },\n createRow: (row, table) => {\n row.pin = (position, includeLeafRows, includeParentRows) => {\n const leafRowIds = includeLeafRows ? row.getLeafRows().map(_ref => {\n let {\n id\n } = _ref;\n return id;\n }) : [];\n const parentRowIds = includeParentRows ? row.getParentRows().map(_ref2 => {\n let {\n id\n } = _ref2;\n return id;\n }) : [];\n const rowIds = new Set([...parentRowIds, row.id, ...leafRowIds]);\n table.setRowPinning(old => {\n var _old$top3, _old$bottom3;\n if (position === 'bottom') {\n var _old$top, _old$bottom;\n return {\n top: ((_old$top = old == null ? void 0 : old.top) != null ? _old$top : []).filter(d => !(rowIds != null && rowIds.has(d))),\n bottom: [...((_old$bottom = old == null ? void 0 : old.bottom) != null ? _old$bottom : []).filter(d => !(rowIds != null && rowIds.has(d))), ...Array.from(rowIds)]\n };\n }\n if (position === 'top') {\n var _old$top2, _old$bottom2;\n return {\n top: [...((_old$top2 = old == null ? void 0 : old.top) != null ? _old$top2 : []).filter(d => !(rowIds != null && rowIds.has(d))), ...Array.from(rowIds)],\n bottom: ((_old$bottom2 = old == null ? void 0 : old.bottom) != null ? _old$bottom2 : []).filter(d => !(rowIds != null && rowIds.has(d)))\n };\n }\n return {\n top: ((_old$top3 = old == null ? void 0 : old.top) != null ? _old$top3 : []).filter(d => !(rowIds != null && rowIds.has(d))),\n bottom: ((_old$bottom3 = old == null ? void 0 : old.bottom) != null ? _old$bottom3 : []).filter(d => !(rowIds != null && rowIds.has(d)))\n };\n });\n };\n row.getCanPin = () => {\n var _ref3;\n const {\n enableRowPinning,\n enablePinning\n } = table.options;\n if (typeof enableRowPinning === 'function') {\n return enableRowPinning(row);\n }\n return (_ref3 = enableRowPinning != null ? enableRowPinning : enablePinning) != null ? _ref3 : true;\n };\n row.getIsPinned = () => {\n const rowIds = [row.id];\n const {\n top,\n bottom\n } = table.getState().rowPinning;\n const isTop = rowIds.some(d => top == null ? void 0 : top.includes(d));\n const isBottom = rowIds.some(d => bottom == null ? void 0 : bottom.includes(d));\n return isTop ? 'top' : isBottom ? 'bottom' : false;\n };\n row.getPinnedIndex = () => {\n var _ref4, _visiblePinnedRowIds$;\n const position = row.getIsPinned();\n if (!position) return -1;\n const visiblePinnedRowIds = (_ref4 = position === 'top' ? table.getTopRows() : table.getBottomRows()) == null ? void 0 : _ref4.map(_ref5 => {\n let {\n id\n } = _ref5;\n return id;\n });\n return (_visiblePinnedRowIds$ = visiblePinnedRowIds == null ? void 0 : visiblePinnedRowIds.indexOf(row.id)) != null ? _visiblePinnedRowIds$ : -1;\n };\n },\n createTable: table => {\n table.setRowPinning = updater => table.options.onRowPinningChange == null ? void 0 : table.options.onRowPinningChange(updater);\n table.resetRowPinning = defaultState => {\n var _table$initialState$r, _table$initialState;\n return table.setRowPinning(defaultState ? getDefaultRowPinningState() : (_table$initialState$r = (_table$initialState = table.initialState) == null ? void 0 : _table$initialState.rowPinning) != null ? _table$initialState$r : getDefaultRowPinningState());\n };\n table.getIsSomeRowsPinned = position => {\n var _pinningState$positio;\n const pinningState = table.getState().rowPinning;\n if (!position) {\n var _pinningState$top, _pinningState$bottom;\n return Boolean(((_pinningState$top = pinningState.top) == null ? void 0 : _pinningState$top.length) || ((_pinningState$bottom = pinningState.bottom) == null ? void 0 : _pinningState$bottom.length));\n }\n return Boolean((_pinningState$positio = pinningState[position]) == null ? void 0 : _pinningState$positio.length);\n };\n table._getPinnedRows = (visibleRows, pinnedRowIds, position) => {\n var _table$options$keepPi;\n const rows = ((_table$options$keepPi = table.options.keepPinnedRows) != null ? _table$options$keepPi : true) ?\n //get all rows that are pinned even if they would not be otherwise visible\n //account for expanded parent rows, but not pagination or filtering\n (pinnedRowIds != null ? pinnedRowIds : []).map(rowId => {\n const row = table.getRow(rowId, true);\n return row.getIsAllParentsExpanded() ? row : null;\n }) :\n //else get only visible rows that are pinned\n (pinnedRowIds != null ? pinnedRowIds : []).map(rowId => visibleRows.find(row => row.id === rowId));\n return rows.filter(Boolean).map(d => ({\n ...d,\n position\n }));\n };\n table.getTopRows = memo(() => [table.getRowModel().rows, table.getState().rowPinning.top], (allRows, topPinnedRowIds) => table._getPinnedRows(allRows, topPinnedRowIds, 'top'), getMemoOptions(table.options, 'debugRows', 'getTopRows'));\n table.getBottomRows = memo(() => [table.getRowModel().rows, table.getState().rowPinning.bottom], (allRows, bottomPinnedRowIds) => table._getPinnedRows(allRows, bottomPinnedRowIds, 'bottom'), getMemoOptions(table.options, 'debugRows', 'getBottomRows'));\n table.getCenterRows = memo(() => [table.getRowModel().rows, table.getState().rowPinning.top, table.getState().rowPinning.bottom], (allRows, top, bottom) => {\n const topAndBottom = new Set([...(top != null ? top : []), ...(bottom != null ? bottom : [])]);\n return allRows.filter(d => !topAndBottom.has(d.id));\n }, getMemoOptions(table.options, 'debugRows', 'getCenterRows'));\n }\n};\n\n//\n\nconst RowSelection = {\n getInitialState: state => {\n return {\n rowSelection: {},\n ...state\n };\n },\n getDefaultOptions: table => {\n return {\n onRowSelectionChange: makeStateUpdater('rowSelection', table),\n enableRowSelection: true,\n enableMultiRowSelection: true,\n enableSubRowSelection: true\n // enableGroupingRowSelection: false,\n // isAdditiveSelectEvent: (e: unknown) => !!e.metaKey,\n // isInclusiveSelectEvent: (e: unknown) => !!e.shiftKey,\n };\n },\n createTable: table => {\n table.setRowSelection = updater => table.options.onRowSelectionChange == null ? void 0 : table.options.onRowSelectionChange(updater);\n table.resetRowSelection = defaultState => {\n var _table$initialState$r;\n return table.setRowSelection(defaultState ? {} : (_table$initialState$r = table.initialState.rowSelection) != null ? _table$initialState$r : {});\n };\n table.toggleAllRowsSelected = value => {\n table.setRowSelection(old => {\n value = typeof value !== 'undefined' ? value : !table.getIsAllRowsSelected();\n const rowSelection = {\n ...old\n };\n const preGroupedFlatRows = table.getPreGroupedRowModel().flatRows;\n\n // We don't use `mutateRowIsSelected` here for performance reasons.\n // All of the rows are flat already, so it wouldn't be worth it\n if (value) {\n preGroupedFlatRows.forEach(row => {\n if (!row.getCanSelect()) {\n return;\n }\n rowSelection[row.id] = true;\n });\n } else {\n preGroupedFlatRows.forEach(row => {\n delete rowSelection[row.id];\n });\n }\n return rowSelection;\n });\n };\n table.toggleAllPageRowsSelected = value => table.setRowSelection(old => {\n const resolvedValue = typeof value !== 'undefined' ? value : !table.getIsAllPageRowsSelected();\n const rowSelection = {\n ...old\n };\n table.getRowModel().rows.forEach(row => {\n mutateRowIsSelected(rowSelection, row.id, resolvedValue, true, table);\n });\n return rowSelection;\n });\n\n // addRowSelectionRange: rowId => {\n // const {\n // rows,\n // rowsById,\n // options: { selectGroupingRows, selectSubRows },\n // } = table\n\n // const findSelectedRow = (rows: Row[]) => {\n // let found\n // rows.find(d => {\n // if (d.getIsSelected()) {\n // found = d\n // return true\n // }\n // const subFound = findSelectedRow(d.subRows || [])\n // if (subFound) {\n // found = subFound\n // return true\n // }\n // return false\n // })\n // return found\n // }\n\n // const firstRow = findSelectedRow(rows) || rows[0]\n // const lastRow = rowsById[rowId]\n\n // let include = false\n // const selectedRowIds = {}\n\n // const addRow = (row: Row) => {\n // mutateRowIsSelected(selectedRowIds, row.id, true, {\n // rowsById,\n // selectGroupingRows: selectGroupingRows!,\n // selectSubRows: selectSubRows!,\n // })\n // }\n\n // table.rows.forEach(row => {\n // const isFirstRow = row.id === firstRow.id\n // const isLastRow = row.id === lastRow.id\n\n // if (isFirstRow || isLastRow) {\n // if (!include) {\n // include = true\n // } else if (include) {\n // addRow(row)\n // include = false\n // }\n // }\n\n // if (include) {\n // addRow(row)\n // }\n // })\n\n // table.setRowSelection(selectedRowIds)\n // },\n table.getPreSelectedRowModel = () => table.getCoreRowModel();\n table.getSelectedRowModel = memo(() => [table.getState().rowSelection, table.getCoreRowModel()], (rowSelection, rowModel) => {\n if (!Object.keys(rowSelection).length) {\n return {\n rows: [],\n flatRows: [],\n rowsById: {}\n };\n }\n return selectRowsFn(table, rowModel);\n }, getMemoOptions(table.options, 'debugTable', 'getSelectedRowModel'));\n table.getFilteredSelectedRowModel = memo(() => [table.getState().rowSelection, table.getFilteredRowModel()], (rowSelection, rowModel) => {\n if (!Object.keys(rowSelection).length) {\n return {\n rows: [],\n flatRows: [],\n rowsById: {}\n };\n }\n return selectRowsFn(table, rowModel);\n }, getMemoOptions(table.options, 'debugTable', 'getFilteredSelectedRowModel'));\n table.getGroupedSelectedRowModel = memo(() => [table.getState().rowSelection, table.getSortedRowModel()], (rowSelection, rowModel) => {\n if (!Object.keys(rowSelection).length) {\n return {\n rows: [],\n flatRows: [],\n rowsById: {}\n };\n }\n return selectRowsFn(table, rowModel);\n }, getMemoOptions(table.options, 'debugTable', 'getGroupedSelectedRowModel'));\n\n ///\n\n // getGroupingRowCanSelect: rowId => {\n // const row = table.getRow(rowId)\n\n // if (!row) {\n // throw new Error()\n // }\n\n // if (typeof table.options.enableGroupingRowSelection === 'function') {\n // return table.options.enableGroupingRowSelection(row)\n // }\n\n // return table.options.enableGroupingRowSelection ?? false\n // },\n\n table.getIsAllRowsSelected = () => {\n const preGroupedFlatRows = table.getFilteredRowModel().flatRows;\n const {\n rowSelection\n } = table.getState();\n let isAllRowsSelected = Boolean(preGroupedFlatRows.length && Object.keys(rowSelection).length);\n if (isAllRowsSelected) {\n if (preGroupedFlatRows.some(row => row.getCanSelect() && !rowSelection[row.id])) {\n isAllRowsSelected = false;\n }\n }\n return isAllRowsSelected;\n };\n table.getIsAllPageRowsSelected = () => {\n const paginationFlatRows = table.getPaginationRowModel().flatRows.filter(row => row.getCanSelect());\n const {\n rowSelection\n } = table.getState();\n let isAllPageRowsSelected = !!paginationFlatRows.length;\n if (isAllPageRowsSelected && paginationFlatRows.some(row => !rowSelection[row.id])) {\n isAllPageRowsSelected = false;\n }\n return isAllPageRowsSelected;\n };\n table.getIsSomeRowsSelected = () => {\n var _table$getState$rowSe;\n const totalSelected = Object.keys((_table$getState$rowSe = table.getState().rowSelection) != null ? _table$getState$rowSe : {}).length;\n return totalSelected > 0 && totalSelected < table.getFilteredRowModel().flatRows.length;\n };\n table.getIsSomePageRowsSelected = () => {\n const paginationFlatRows = table.getPaginationRowModel().flatRows;\n return table.getIsAllPageRowsSelected() ? false : paginationFlatRows.filter(row => row.getCanSelect()).some(d => d.getIsSelected() || d.getIsSomeSelected());\n };\n table.getToggleAllRowsSelectedHandler = () => {\n return e => {\n table.toggleAllRowsSelected(e.target.checked);\n };\n };\n table.getToggleAllPageRowsSelectedHandler = () => {\n return e => {\n table.toggleAllPageRowsSelected(e.target.checked);\n };\n };\n },\n createRow: (row, table) => {\n row.toggleSelected = (value, opts) => {\n const isSelected = row.getIsSelected();\n table.setRowSelection(old => {\n var _opts$selectChildren;\n value = typeof value !== 'undefined' ? value : !isSelected;\n if (row.getCanSelect() && isSelected === value) {\n return old;\n }\n const selectedRowIds = {\n ...old\n };\n mutateRowIsSelected(selectedRowIds, row.id, value, (_opts$selectChildren = opts == null ? void 0 : opts.selectChildren) != null ? _opts$selectChildren : true, table);\n return selectedRowIds;\n });\n };\n row.getIsSelected = () => {\n const {\n rowSelection\n } = table.getState();\n return isRowSelected(row, rowSelection);\n };\n row.getIsSomeSelected = () => {\n const {\n rowSelection\n } = table.getState();\n return isSubRowSelected(row, rowSelection) === 'some';\n };\n row.getIsAllSubRowsSelected = () => {\n const {\n rowSelection\n } = table.getState();\n return isSubRowSelected(row, rowSelection) === 'all';\n };\n row.getCanSelect = () => {\n var _table$options$enable;\n if (typeof table.options.enableRowSelection === 'function') {\n return table.options.enableRowSelection(row);\n }\n return (_table$options$enable = table.options.enableRowSelection) != null ? _table$options$enable : true;\n };\n row.getCanSelectSubRows = () => {\n var _table$options$enable2;\n if (typeof table.options.enableSubRowSelection === 'function') {\n return table.options.enableSubRowSelection(row);\n }\n return (_table$options$enable2 = table.options.enableSubRowSelection) != null ? _table$options$enable2 : true;\n };\n row.getCanMultiSelect = () => {\n var _table$options$enable3;\n if (typeof table.options.enableMultiRowSelection === 'function') {\n return table.options.enableMultiRowSelection(row);\n }\n return (_table$options$enable3 = table.options.enableMultiRowSelection) != null ? _table$options$enable3 : true;\n };\n row.getToggleSelectedHandler = () => {\n const canSelect = row.getCanSelect();\n return e => {\n var _target;\n if (!canSelect) return;\n row.toggleSelected((_target = e.target) == null ? void 0 : _target.checked);\n };\n };\n }\n};\nconst mutateRowIsSelected = (selectedRowIds, id, value, includeChildren, table) => {\n var _row$subRows;\n const row = table.getRow(id, true);\n\n // const isGrouped = row.getIsGrouped()\n\n // if ( // TODO: enforce grouping row selection rules\n // !isGrouped ||\n // (isGrouped && table.options.enableGroupingRowSelection)\n // ) {\n if (value) {\n if (!row.getCanMultiSelect()) {\n Object.keys(selectedRowIds).forEach(key => delete selectedRowIds[key]);\n }\n if (row.getCanSelect()) {\n selectedRowIds[id] = true;\n }\n } else {\n delete selectedRowIds[id];\n }\n // }\n\n if (includeChildren && (_row$subRows = row.subRows) != null && _row$subRows.length && row.getCanSelectSubRows()) {\n row.subRows.forEach(row => mutateRowIsSelected(selectedRowIds, row.id, value, includeChildren, table));\n }\n};\nfunction selectRowsFn(table, rowModel) {\n const rowSelection = table.getState().rowSelection;\n const newSelectedFlatRows = [];\n const newSelectedRowsById = {};\n\n // Filters top level and nested rows\n const recurseRows = function (rows, depth) {\n return rows.map(row => {\n var _row$subRows2;\n const isSelected = isRowSelected(row, rowSelection);\n if (isSelected) {\n newSelectedFlatRows.push(row);\n newSelectedRowsById[row.id] = row;\n }\n if ((_row$subRows2 = row.subRows) != null && _row$subRows2.length) {\n row = {\n ...row,\n subRows: recurseRows(row.subRows)\n };\n }\n if (isSelected) {\n return row;\n }\n }).filter(Boolean);\n };\n return {\n rows: recurseRows(rowModel.rows),\n flatRows: newSelectedFlatRows,\n rowsById: newSelectedRowsById\n };\n}\nfunction isRowSelected(row, selection) {\n var _selection$row$id;\n return (_selection$row$id = selection[row.id]) != null ? _selection$row$id : false;\n}\nfunction isSubRowSelected(row, selection, table) {\n var _row$subRows3;\n if (!((_row$subRows3 = row.subRows) != null && _row$subRows3.length)) return false;\n let allChildrenSelected = true;\n let someSelected = false;\n row.subRows.forEach(subRow => {\n // Bail out early if we know both of these\n if (someSelected && !allChildrenSelected) {\n return;\n }\n if (subRow.getCanSelect()) {\n if (isRowSelected(subRow, selection)) {\n someSelected = true;\n } else {\n allChildrenSelected = false;\n }\n }\n\n // Check row selection of nested subrows\n if (subRow.subRows && subRow.subRows.length) {\n const subRowChildrenSelected = isSubRowSelected(subRow, selection);\n if (subRowChildrenSelected === 'all') {\n someSelected = true;\n } else if (subRowChildrenSelected === 'some') {\n someSelected = true;\n allChildrenSelected = false;\n } else {\n allChildrenSelected = false;\n }\n }\n });\n return allChildrenSelected ? 'all' : someSelected ? 'some' : false;\n}\n\nconst reSplitAlphaNumeric = /([0-9]+)/gm;\nconst alphanumeric = (rowA, rowB, columnId) => {\n return compareAlphanumeric(toString(rowA.getValue(columnId)).toLowerCase(), toString(rowB.getValue(columnId)).toLowerCase());\n};\nconst alphanumericCaseSensitive = (rowA, rowB, columnId) => {\n return compareAlphanumeric(toString(rowA.getValue(columnId)), toString(rowB.getValue(columnId)));\n};\n\n// The text filter is more basic (less numeric support)\n// but is much faster\nconst text = (rowA, rowB, columnId) => {\n return compareBasic(toString(rowA.getValue(columnId)).toLowerCase(), toString(rowB.getValue(columnId)).toLowerCase());\n};\n\n// The text filter is more basic (less numeric support)\n// but is much faster\nconst textCaseSensitive = (rowA, rowB, columnId) => {\n return compareBasic(toString(rowA.getValue(columnId)), toString(rowB.getValue(columnId)));\n};\nconst datetime = (rowA, rowB, columnId) => {\n const a = rowA.getValue(columnId);\n const b = rowB.getValue(columnId);\n\n // Can handle nullish values\n // Use > and < because == (and ===) doesn't work with\n // Date objects (would require calling getTime()).\n return a > b ? 1 : a < b ? -1 : 0;\n};\nconst basic = (rowA, rowB, columnId) => {\n return compareBasic(rowA.getValue(columnId), rowB.getValue(columnId));\n};\n\n// Utils\n\nfunction compareBasic(a, b) {\n return a === b ? 0 : a > b ? 1 : -1;\n}\nfunction toString(a) {\n if (typeof a === 'number') {\n if (isNaN(a) || a === Infinity || a === -Infinity) {\n return '';\n }\n return String(a);\n }\n if (typeof a === 'string') {\n return a;\n }\n return '';\n}\n\n// Mixed sorting is slow, but very inclusive of many edge cases.\n// It handles numbers, mixed alphanumeric combinations, and even\n// null, undefined, and Infinity\nfunction compareAlphanumeric(aStr, bStr) {\n // Split on number groups, but keep the delimiter\n // Then remove falsey split values\n const a = aStr.split(reSplitAlphaNumeric).filter(Boolean);\n const b = bStr.split(reSplitAlphaNumeric).filter(Boolean);\n\n // While\n while (a.length && b.length) {\n const aa = a.shift();\n const bb = b.shift();\n const an = parseInt(aa, 10);\n const bn = parseInt(bb, 10);\n const combo = [an, bn].sort();\n\n // Both are string\n if (isNaN(combo[0])) {\n if (aa > bb) {\n return 1;\n }\n if (bb > aa) {\n return -1;\n }\n continue;\n }\n\n // One is a string, one is a number\n if (isNaN(combo[1])) {\n return isNaN(an) ? -1 : 1;\n }\n\n // Both are numbers\n if (an > bn) {\n return 1;\n }\n if (bn > an) {\n return -1;\n }\n }\n return a.length - b.length;\n}\n\n// Exports\n\nconst sortingFns = {\n alphanumeric,\n alphanumericCaseSensitive,\n text,\n textCaseSensitive,\n datetime,\n basic\n};\n\n//\n\nconst RowSorting = {\n getInitialState: state => {\n return {\n sorting: [],\n ...state\n };\n },\n getDefaultColumnDef: () => {\n return {\n sortingFn: 'auto',\n sortUndefined: 1\n };\n },\n getDefaultOptions: table => {\n return {\n onSortingChange: makeStateUpdater('sorting', table),\n isMultiSortEvent: e => {\n return e.shiftKey;\n }\n };\n },\n createColumn: (column, table) => {\n column.getAutoSortingFn = () => {\n const firstRows = table.getFilteredRowModel().flatRows.slice(10);\n let isString = false;\n for (const row of firstRows) {\n const value = row == null ? void 0 : row.getValue(column.id);\n if (Object.prototype.toString.call(value) === '[object Date]') {\n return sortingFns.datetime;\n }\n if (typeof value === 'string') {\n isString = true;\n if (value.split(reSplitAlphaNumeric).length > 1) {\n return sortingFns.alphanumeric;\n }\n }\n }\n if (isString) {\n return sortingFns.text;\n }\n return sortingFns.basic;\n };\n column.getAutoSortDir = () => {\n const firstRow = table.getFilteredRowModel().flatRows[0];\n const value = firstRow == null ? void 0 : firstRow.getValue(column.id);\n if (typeof value === 'string') {\n return 'asc';\n }\n return 'desc';\n };\n column.getSortingFn = () => {\n var _table$options$sortin, _table$options$sortin2;\n if (!column) {\n throw new Error();\n }\n return isFunction(column.columnDef.sortingFn) ? column.columnDef.sortingFn : column.columnDef.sortingFn === 'auto' ? column.getAutoSortingFn() : (_table$options$sortin = (_table$options$sortin2 = table.options.sortingFns) == null ? void 0 : _table$options$sortin2[column.columnDef.sortingFn]) != null ? _table$options$sortin : sortingFns[column.columnDef.sortingFn];\n };\n column.toggleSorting = (desc, multi) => {\n // if (column.columns.length) {\n // column.columns.forEach((c, i) => {\n // if (c.id) {\n // table.toggleColumnSorting(c.id, undefined, multi || !!i)\n // }\n // })\n // return\n // }\n\n // this needs to be outside of table.setSorting to be in sync with rerender\n const nextSortingOrder = column.getNextSortingOrder();\n const hasManualValue = typeof desc !== 'undefined' && desc !== null;\n table.setSorting(old => {\n // Find any existing sorting for this column\n const existingSorting = old == null ? void 0 : old.find(d => d.id === column.id);\n const existingIndex = old == null ? void 0 : old.findIndex(d => d.id === column.id);\n let newSorting = [];\n\n // What should we do with this sort action?\n let sortAction;\n let nextDesc = hasManualValue ? desc : nextSortingOrder === 'desc';\n\n // Multi-mode\n if (old != null && old.length && column.getCanMultiSort() && multi) {\n if (existingSorting) {\n sortAction = 'toggle';\n } else {\n sortAction = 'add';\n }\n } else {\n // Normal mode\n if (old != null && old.length && existingIndex !== old.length - 1) {\n sortAction = 'replace';\n } else if (existingSorting) {\n sortAction = 'toggle';\n } else {\n sortAction = 'replace';\n }\n }\n\n // Handle toggle states that will remove the sorting\n if (sortAction === 'toggle') {\n // If we are \"actually\" toggling (not a manual set value), should we remove the sorting?\n if (!hasManualValue) {\n // Is our intention to remove?\n if (!nextSortingOrder) {\n sortAction = 'remove';\n }\n }\n }\n if (sortAction === 'add') {\n var _table$options$maxMul;\n newSorting = [...old, {\n id: column.id,\n desc: nextDesc\n }];\n // Take latest n columns\n newSorting.splice(0, newSorting.length - ((_table$options$maxMul = table.options.maxMultiSortColCount) != null ? _table$options$maxMul : Number.MAX_SAFE_INTEGER));\n } else if (sortAction === 'toggle') {\n // This flips (or sets) the\n newSorting = old.map(d => {\n if (d.id === column.id) {\n return {\n ...d,\n desc: nextDesc\n };\n }\n return d;\n });\n } else if (sortAction === 'remove') {\n newSorting = old.filter(d => d.id !== column.id);\n } else {\n newSorting = [{\n id: column.id,\n desc: nextDesc\n }];\n }\n return newSorting;\n });\n };\n column.getFirstSortDir = () => {\n var _ref, _column$columnDef$sor;\n const sortDescFirst = (_ref = (_column$columnDef$sor = column.columnDef.sortDescFirst) != null ? _column$columnDef$sor : table.options.sortDescFirst) != null ? _ref : column.getAutoSortDir() === 'desc';\n return sortDescFirst ? 'desc' : 'asc';\n };\n column.getNextSortingOrder = multi => {\n var _table$options$enable, _table$options$enable2;\n const firstSortDirection = column.getFirstSortDir();\n const isSorted = column.getIsSorted();\n if (!isSorted) {\n return firstSortDirection;\n }\n if (isSorted !== firstSortDirection && ((_table$options$enable = table.options.enableSortingRemoval) != null ? _table$options$enable : true) && (\n // If enableSortRemove, enable in general\n multi ? (_table$options$enable2 = table.options.enableMultiRemove) != null ? _table$options$enable2 : true : true) // If multi, don't allow if enableMultiRemove))\n ) {\n return false;\n }\n return isSorted === 'desc' ? 'asc' : 'desc';\n };\n column.getCanSort = () => {\n var _column$columnDef$ena, _table$options$enable3;\n return ((_column$columnDef$ena = column.columnDef.enableSorting) != null ? _column$columnDef$ena : true) && ((_table$options$enable3 = table.options.enableSorting) != null ? _table$options$enable3 : true) && !!column.accessorFn;\n };\n column.getCanMultiSort = () => {\n var _ref2, _column$columnDef$ena2;\n return (_ref2 = (_column$columnDef$ena2 = column.columnDef.enableMultiSort) != null ? _column$columnDef$ena2 : table.options.enableMultiSort) != null ? _ref2 : !!column.accessorFn;\n };\n column.getIsSorted = () => {\n var _table$getState$sorti;\n const columnSort = (_table$getState$sorti = table.getState().sorting) == null ? void 0 : _table$getState$sorti.find(d => d.id === column.id);\n return !columnSort ? false : columnSort.desc ? 'desc' : 'asc';\n };\n column.getSortIndex = () => {\n var _table$getState$sorti2, _table$getState$sorti3;\n return (_table$getState$sorti2 = (_table$getState$sorti3 = table.getState().sorting) == null ? void 0 : _table$getState$sorti3.findIndex(d => d.id === column.id)) != null ? _table$getState$sorti2 : -1;\n };\n column.clearSorting = () => {\n //clear sorting for just 1 column\n table.setSorting(old => old != null && old.length ? old.filter(d => d.id !== column.id) : []);\n };\n column.getToggleSortingHandler = () => {\n const canSort = column.getCanSort();\n return e => {\n if (!canSort) return;\n e.persist == null || e.persist();\n column.toggleSorting == null || column.toggleSorting(undefined, column.getCanMultiSort() ? table.options.isMultiSortEvent == null ? void 0 : table.options.isMultiSortEvent(e) : false);\n };\n };\n },\n createTable: table => {\n table.setSorting = updater => table.options.onSortingChange == null ? void 0 : table.options.onSortingChange(updater);\n table.resetSorting = defaultState => {\n var _table$initialState$s, _table$initialState;\n table.setSorting(defaultState ? [] : (_table$initialState$s = (_table$initialState = table.initialState) == null ? void 0 : _table$initialState.sorting) != null ? _table$initialState$s : []);\n };\n table.getPreSortedRowModel = () => table.getGroupedRowModel();\n table.getSortedRowModel = () => {\n if (!table._getSortedRowModel && table.options.getSortedRowModel) {\n table._getSortedRowModel = table.options.getSortedRowModel(table);\n }\n if (table.options.manualSorting || !table._getSortedRowModel) {\n return table.getPreSortedRowModel();\n }\n return table._getSortedRowModel();\n };\n }\n};\n\nconst builtInFeatures = [Headers, ColumnVisibility, ColumnOrdering, ColumnPinning, ColumnFaceting, ColumnFiltering, GlobalFaceting,\n//depends on ColumnFaceting\nGlobalFiltering,\n//depends on ColumnFiltering\nRowSorting, ColumnGrouping,\n//depends on RowSorting\nRowExpanding, RowPagination, RowPinning, RowSelection, ColumnSizing];\n\n//\n\nfunction createTable(options) {\n var _options$_features, _options$initialState;\n if (process.env.NODE_ENV !== 'production' && (options.debugAll || options.debugTable)) {\n console.info('Creating Table Instance...');\n }\n const _features = [...builtInFeatures, ...((_options$_features = options._features) != null ? _options$_features : [])];\n let table = {\n _features\n };\n const defaultOptions = table._features.reduce((obj, feature) => {\n return Object.assign(obj, feature.getDefaultOptions == null ? void 0 : feature.getDefaultOptions(table));\n }, {});\n const mergeOptions = options => {\n if (table.options.mergeOptions) {\n return table.options.mergeOptions(defaultOptions, options);\n }\n return {\n ...defaultOptions,\n ...options\n };\n };\n const coreInitialState = {};\n let initialState = {\n ...coreInitialState,\n ...((_options$initialState = options.initialState) != null ? _options$initialState : {})\n };\n table._features.forEach(feature => {\n var _feature$getInitialSt;\n initialState = (_feature$getInitialSt = feature.getInitialState == null ? void 0 : feature.getInitialState(initialState)) != null ? _feature$getInitialSt : initialState;\n });\n const queued = [];\n let queuedTimeout = false;\n const coreInstance = {\n _features,\n options: {\n ...defaultOptions,\n ...options\n },\n initialState,\n _queue: cb => {\n queued.push(cb);\n if (!queuedTimeout) {\n queuedTimeout = true;\n\n // Schedule a microtask to run the queued callbacks after\n // the current call stack (render, etc) has finished.\n Promise.resolve().then(() => {\n while (queued.length) {\n queued.shift()();\n }\n queuedTimeout = false;\n }).catch(error => setTimeout(() => {\n throw error;\n }));\n }\n },\n reset: () => {\n table.setState(table.initialState);\n },\n setOptions: updater => {\n const newOptions = functionalUpdate(updater, table.options);\n table.options = mergeOptions(newOptions);\n },\n getState: () => {\n return table.options.state;\n },\n setState: updater => {\n table.options.onStateChange == null || table.options.onStateChange(updater);\n },\n _getRowId: (row, index, parent) => {\n var _table$options$getRow;\n return (_table$options$getRow = table.options.getRowId == null ? void 0 : table.options.getRowId(row, index, parent)) != null ? _table$options$getRow : `${parent ? [parent.id, index].join('.') : index}`;\n },\n getCoreRowModel: () => {\n if (!table._getCoreRowModel) {\n table._getCoreRowModel = table.options.getCoreRowModel(table);\n }\n return table._getCoreRowModel();\n },\n // The final calls start at the bottom of the model,\n // expanded rows, which then work their way up\n\n getRowModel: () => {\n return table.getPaginationRowModel();\n },\n //in next version, we should just pass in the row model as the optional 2nd arg\n getRow: (id, searchAll) => {\n let row = (searchAll ? table.getPrePaginationRowModel() : table.getRowModel()).rowsById[id];\n if (!row) {\n row = table.getCoreRowModel().rowsById[id];\n if (!row) {\n if (process.env.NODE_ENV !== 'production') {\n throw new Error(`getRow could not find row with ID: ${id}`);\n }\n throw new Error();\n }\n }\n return row;\n },\n _getDefaultColumnDef: memo(() => [table.options.defaultColumn], defaultColumn => {\n var _defaultColumn;\n defaultColumn = (_defaultColumn = defaultColumn) != null ? _defaultColumn : {};\n return {\n header: props => {\n const resolvedColumnDef = props.header.column.columnDef;\n if (resolvedColumnDef.accessorKey) {\n return resolvedColumnDef.accessorKey;\n }\n if (resolvedColumnDef.accessorFn) {\n return resolvedColumnDef.id;\n }\n return null;\n },\n // footer: props => props.header.column.id,\n cell: props => {\n var _props$renderValue$to, _props$renderValue;\n return (_props$renderValue$to = (_props$renderValue = props.renderValue()) == null || _props$renderValue.toString == null ? void 0 : _props$renderValue.toString()) != null ? _props$renderValue$to : null;\n },\n ...table._features.reduce((obj, feature) => {\n return Object.assign(obj, feature.getDefaultColumnDef == null ? void 0 : feature.getDefaultColumnDef());\n }, {}),\n ...defaultColumn\n };\n }, getMemoOptions(options, 'debugColumns', '_getDefaultColumnDef')),\n _getColumnDefs: () => table.options.columns,\n getAllColumns: memo(() => [table._getColumnDefs()], columnDefs => {\n const recurseColumns = function (columnDefs, parent, depth) {\n if (depth === void 0) {\n depth = 0;\n }\n return columnDefs.map(columnDef => {\n const column = createColumn(table, columnDef, depth, parent);\n const groupingColumnDef = columnDef;\n column.columns = groupingColumnDef.columns ? recurseColumns(groupingColumnDef.columns, column, depth + 1) : [];\n return column;\n });\n };\n return recurseColumns(columnDefs);\n }, getMemoOptions(options, 'debugColumns', 'getAllColumns')),\n getAllFlatColumns: memo(() => [table.getAllColumns()], allColumns => {\n return allColumns.flatMap(column => {\n return column.getFlatColumns();\n });\n }, getMemoOptions(options, 'debugColumns', 'getAllFlatColumns')),\n _getAllFlatColumnsById: memo(() => [table.getAllFlatColumns()], flatColumns => {\n return flatColumns.reduce((acc, column) => {\n acc[column.id] = column;\n return acc;\n }, {});\n }, getMemoOptions(options, 'debugColumns', 'getAllFlatColumnsById')),\n getAllLeafColumns: memo(() => [table.getAllColumns(), table._getOrderColumnsFn()], (allColumns, orderColumns) => {\n let leafColumns = allColumns.flatMap(column => column.getLeafColumns());\n return orderColumns(leafColumns);\n }, getMemoOptions(options, 'debugColumns', 'getAllLeafColumns')),\n getColumn: columnId => {\n const column = table._getAllFlatColumnsById()[columnId];\n if (process.env.NODE_ENV !== 'production' && !column) {\n console.error(`[Table] Column with id '${columnId}' does not exist.`);\n }\n return column;\n }\n };\n Object.assign(table, coreInstance);\n for (let index = 0; index < table._features.length; index++) {\n const feature = table._features[index];\n feature == null || feature.createTable == null || feature.createTable(table);\n }\n return table;\n}\n\nfunction getCoreRowModel() {\n return table => memo(() => [table.options.data], data => {\n const rowModel = {\n rows: [],\n flatRows: [],\n rowsById: {}\n };\n const accessRows = function (originalRows, depth, parentRow) {\n if (depth === void 0) {\n depth = 0;\n }\n const rows = [];\n for (let i = 0; i < originalRows.length; i++) {\n // This could be an expensive check at scale, so we should move it somewhere else, but where?\n // if (!id) {\n // if (process.env.NODE_ENV !== 'production') {\n // throw new Error(`getRowId expected an ID, but got ${id}`)\n // }\n // }\n\n // Make the row\n const row = createRow(table, table._getRowId(originalRows[i], i, parentRow), originalRows[i], i, depth, undefined, parentRow == null ? void 0 : parentRow.id);\n\n // Keep track of every row in a flat array\n rowModel.flatRows.push(row);\n // Also keep track of every row by its ID\n rowModel.rowsById[row.id] = row;\n // Push table row into parent\n rows.push(row);\n\n // Get the original subrows\n if (table.options.getSubRows) {\n var _row$originalSubRows;\n row.originalSubRows = table.options.getSubRows(originalRows[i], i);\n\n // Then recursively access them\n if ((_row$originalSubRows = row.originalSubRows) != null && _row$originalSubRows.length) {\n row.subRows = accessRows(row.originalSubRows, depth + 1, row);\n }\n }\n }\n return rows;\n };\n rowModel.rows = accessRows(data);\n return rowModel;\n }, getMemoOptions(table.options, 'debugTable', 'getRowModel', () => table._autoResetPageIndex()));\n}\n\nfunction getExpandedRowModel() {\n return table => memo(() => [table.getState().expanded, table.getPreExpandedRowModel(), table.options.paginateExpandedRows], (expanded, rowModel, paginateExpandedRows) => {\n if (!rowModel.rows.length || expanded !== true && !Object.keys(expanded != null ? expanded : {}).length) {\n return rowModel;\n }\n if (!paginateExpandedRows) {\n // Only expand rows at this point if they are being paginated\n return rowModel;\n }\n return expandRows(rowModel);\n }, getMemoOptions(table.options, 'debugTable', 'getExpandedRowModel'));\n}\nfunction expandRows(rowModel) {\n const expandedRows = [];\n const handleRow = row => {\n var _row$subRows;\n expandedRows.push(row);\n if ((_row$subRows = row.subRows) != null && _row$subRows.length && row.getIsExpanded()) {\n row.subRows.forEach(handleRow);\n }\n };\n rowModel.rows.forEach(handleRow);\n return {\n rows: expandedRows,\n flatRows: rowModel.flatRows,\n rowsById: rowModel.rowsById\n };\n}\n\nfunction getFacetedMinMaxValues() {\n return (table, columnId) => memo(() => {\n var _table$getColumn;\n return [(_table$getColumn = table.getColumn(columnId)) == null ? void 0 : _table$getColumn.getFacetedRowModel()];\n }, facetedRowModel => {\n if (!facetedRowModel) return undefined;\n const uniqueValues = facetedRowModel.flatRows.flatMap(flatRow => {\n var _flatRow$getUniqueVal;\n return (_flatRow$getUniqueVal = flatRow.getUniqueValues(columnId)) != null ? _flatRow$getUniqueVal : [];\n }).map(Number).filter(value => !Number.isNaN(value));\n if (!uniqueValues.length) return;\n let facetedMinValue = uniqueValues[0];\n let facetedMaxValue = uniqueValues[uniqueValues.length - 1];\n for (const value of uniqueValues) {\n if (value < facetedMinValue) facetedMinValue = value;else if (value > facetedMaxValue) facetedMaxValue = value;\n }\n return [facetedMinValue, facetedMaxValue];\n }, getMemoOptions(table.options, 'debugTable', 'getFacetedMinMaxValues'));\n}\n\nfunction filterRows(rows, filterRowImpl, table) {\n if (table.options.filterFromLeafRows) {\n return filterRowModelFromLeafs(rows, filterRowImpl, table);\n }\n return filterRowModelFromRoot(rows, filterRowImpl, table);\n}\nfunction filterRowModelFromLeafs(rowsToFilter, filterRow, table) {\n var _table$options$maxLea;\n const newFilteredFlatRows = [];\n const newFilteredRowsById = {};\n const maxDepth = (_table$options$maxLea = table.options.maxLeafRowFilterDepth) != null ? _table$options$maxLea : 100;\n const recurseFilterRows = function (rowsToFilter, depth) {\n if (depth === void 0) {\n depth = 0;\n }\n const rows = [];\n\n // Filter from children up first\n for (let i = 0; i < rowsToFilter.length; i++) {\n var _row$subRows;\n let row = rowsToFilter[i];\n const newRow = createRow(table, row.id, row.original, row.index, row.depth, undefined, row.parentId);\n newRow.columnFilters = row.columnFilters;\n if ((_row$subRows = row.subRows) != null && _row$subRows.length && depth < maxDepth) {\n newRow.subRows = recurseFilterRows(row.subRows, depth + 1);\n row = newRow;\n if (filterRow(row) && !newRow.subRows.length) {\n rows.push(row);\n newFilteredRowsById[row.id] = row;\n newFilteredFlatRows.push(row);\n continue;\n }\n if (filterRow(row) || newRow.subRows.length) {\n rows.push(row);\n newFilteredRowsById[row.id] = row;\n newFilteredFlatRows.push(row);\n continue;\n }\n } else {\n row = newRow;\n if (filterRow(row)) {\n rows.push(row);\n newFilteredRowsById[row.id] = row;\n newFilteredFlatRows.push(row);\n }\n }\n }\n return rows;\n };\n return {\n rows: recurseFilterRows(rowsToFilter),\n flatRows: newFilteredFlatRows,\n rowsById: newFilteredRowsById\n };\n}\nfunction filterRowModelFromRoot(rowsToFilter, filterRow, table) {\n var _table$options$maxLea2;\n const newFilteredFlatRows = [];\n const newFilteredRowsById = {};\n const maxDepth = (_table$options$maxLea2 = table.options.maxLeafRowFilterDepth) != null ? _table$options$maxLea2 : 100;\n\n // Filters top level and nested rows\n const recurseFilterRows = function (rowsToFilter, depth) {\n if (depth === void 0) {\n depth = 0;\n }\n // Filter from parents downward first\n\n const rows = [];\n\n // Apply the filter to any subRows\n for (let i = 0; i < rowsToFilter.length; i++) {\n let row = rowsToFilter[i];\n const pass = filterRow(row);\n if (pass) {\n var _row$subRows2;\n if ((_row$subRows2 = row.subRows) != null && _row$subRows2.length && depth < maxDepth) {\n const newRow = createRow(table, row.id, row.original, row.index, row.depth, undefined, row.parentId);\n newRow.subRows = recurseFilterRows(row.subRows, depth + 1);\n row = newRow;\n }\n rows.push(row);\n newFilteredFlatRows.push(row);\n newFilteredRowsById[row.id] = row;\n }\n }\n return rows;\n };\n return {\n rows: recurseFilterRows(rowsToFilter),\n flatRows: newFilteredFlatRows,\n rowsById: newFilteredRowsById\n };\n}\n\nfunction getFacetedRowModel() {\n return (table, columnId) => memo(() => [table.getPreFilteredRowModel(), table.getState().columnFilters, table.getState().globalFilter, table.getFilteredRowModel()], (preRowModel, columnFilters, globalFilter) => {\n if (!preRowModel.rows.length || !(columnFilters != null && columnFilters.length) && !globalFilter) {\n return preRowModel;\n }\n const filterableIds = [...columnFilters.map(d => d.id).filter(d => d !== columnId), globalFilter ? '__global__' : undefined].filter(Boolean);\n const filterRowsImpl = row => {\n // Horizontally filter rows through each column\n for (let i = 0; i < filterableIds.length; i++) {\n if (row.columnFilters[filterableIds[i]] === false) {\n return false;\n }\n }\n return true;\n };\n return filterRows(preRowModel.rows, filterRowsImpl, table);\n }, getMemoOptions(table.options, 'debugTable', 'getFacetedRowModel'));\n}\n\nfunction getFacetedUniqueValues() {\n return (table, columnId) => memo(() => {\n var _table$getColumn;\n return [(_table$getColumn = table.getColumn(columnId)) == null ? void 0 : _table$getColumn.getFacetedRowModel()];\n }, facetedRowModel => {\n if (!facetedRowModel) return new Map();\n let facetedUniqueValues = new Map();\n for (let i = 0; i < facetedRowModel.flatRows.length; i++) {\n const values = facetedRowModel.flatRows[i].getUniqueValues(columnId);\n for (let j = 0; j < values.length; j++) {\n const value = values[j];\n if (facetedUniqueValues.has(value)) {\n var _facetedUniqueValues$;\n facetedUniqueValues.set(value, ((_facetedUniqueValues$ = facetedUniqueValues.get(value)) != null ? _facetedUniqueValues$ : 0) + 1);\n } else {\n facetedUniqueValues.set(value, 1);\n }\n }\n }\n return facetedUniqueValues;\n }, getMemoOptions(table.options, 'debugTable', `getFacetedUniqueValues_${columnId}`));\n}\n\nfunction getFilteredRowModel() {\n return table => memo(() => [table.getPreFilteredRowModel(), table.getState().columnFilters, table.getState().globalFilter], (rowModel, columnFilters, globalFilter) => {\n if (!rowModel.rows.length || !(columnFilters != null && columnFilters.length) && !globalFilter) {\n for (let i = 0; i < rowModel.flatRows.length; i++) {\n rowModel.flatRows[i].columnFilters = {};\n rowModel.flatRows[i].columnFiltersMeta = {};\n }\n return rowModel;\n }\n const resolvedColumnFilters = [];\n const resolvedGlobalFilters = [];\n (columnFilters != null ? columnFilters : []).forEach(d => {\n var _filterFn$resolveFilt;\n const column = table.getColumn(d.id);\n if (!column) {\n return;\n }\n const filterFn = column.getFilterFn();\n if (!filterFn) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(`Could not find a valid 'column.filterFn' for column with the ID: ${column.id}.`);\n }\n return;\n }\n resolvedColumnFilters.push({\n id: d.id,\n filterFn,\n resolvedValue: (_filterFn$resolveFilt = filterFn.resolveFilterValue == null ? void 0 : filterFn.resolveFilterValue(d.value)) != null ? _filterFn$resolveFilt : d.value\n });\n });\n const filterableIds = (columnFilters != null ? columnFilters : []).map(d => d.id);\n const globalFilterFn = table.getGlobalFilterFn();\n const globallyFilterableColumns = table.getAllLeafColumns().filter(column => column.getCanGlobalFilter());\n if (globalFilter && globalFilterFn && globallyFilterableColumns.length) {\n filterableIds.push('__global__');\n globallyFilterableColumns.forEach(column => {\n var _globalFilterFn$resol;\n resolvedGlobalFilters.push({\n id: column.id,\n filterFn: globalFilterFn,\n resolvedValue: (_globalFilterFn$resol = globalFilterFn.resolveFilterValue == null ? void 0 : globalFilterFn.resolveFilterValue(globalFilter)) != null ? _globalFilterFn$resol : globalFilter\n });\n });\n }\n let currentColumnFilter;\n let currentGlobalFilter;\n\n // Flag the prefiltered row model with each filter state\n for (let j = 0; j < rowModel.flatRows.length; j++) {\n const row = rowModel.flatRows[j];\n row.columnFilters = {};\n if (resolvedColumnFilters.length) {\n for (let i = 0; i < resolvedColumnFilters.length; i++) {\n currentColumnFilter = resolvedColumnFilters[i];\n const id = currentColumnFilter.id;\n\n // Tag the row with the column filter state\n row.columnFilters[id] = currentColumnFilter.filterFn(row, id, currentColumnFilter.resolvedValue, filterMeta => {\n row.columnFiltersMeta[id] = filterMeta;\n });\n }\n }\n if (resolvedGlobalFilters.length) {\n for (let i = 0; i < resolvedGlobalFilters.length; i++) {\n currentGlobalFilter = resolvedGlobalFilters[i];\n const id = currentGlobalFilter.id;\n // Tag the row with the first truthy global filter state\n if (currentGlobalFilter.filterFn(row, id, currentGlobalFilter.resolvedValue, filterMeta => {\n row.columnFiltersMeta[id] = filterMeta;\n })) {\n row.columnFilters.__global__ = true;\n break;\n }\n }\n if (row.columnFilters.__global__ !== true) {\n row.columnFilters.__global__ = false;\n }\n }\n }\n const filterRowsImpl = row => {\n // Horizontally filter rows through each column\n for (let i = 0; i < filterableIds.length; i++) {\n if (row.columnFilters[filterableIds[i]] === false) {\n return false;\n }\n }\n return true;\n };\n\n // Filter final rows using all of the active filters\n return filterRows(rowModel.rows, filterRowsImpl, table);\n }, getMemoOptions(table.options, 'debugTable', 'getFilteredRowModel', () => table._autoResetPageIndex()));\n}\n\nfunction getGroupedRowModel() {\n return table => memo(() => [table.getState().grouping, table.getPreGroupedRowModel()], (grouping, rowModel) => {\n if (!rowModel.rows.length || !grouping.length) {\n rowModel.rows.forEach(row => {\n row.depth = 0;\n row.parentId = undefined;\n });\n return rowModel;\n }\n\n // Filter the grouping list down to columns that exist\n const existingGrouping = grouping.filter(columnId => table.getColumn(columnId));\n const groupedFlatRows = [];\n const groupedRowsById = {};\n // const onlyGroupedFlatRows: Row[] = [];\n // const onlyGroupedRowsById: Record<RowId, Row> = {};\n // const nonGroupedFlatRows: Row[] = [];\n // const nonGroupedRowsById: Record<RowId, Row> = {};\n\n // Recursively group the data\n const groupUpRecursively = function (rows, depth, parentId) {\n if (depth === void 0) {\n depth = 0;\n }\n // Grouping depth has been been met\n // Stop grouping and simply rewrite thd depth and row relationships\n if (depth >= existingGrouping.length) {\n return rows.map(row => {\n row.depth = depth;\n groupedFlatRows.push(row);\n groupedRowsById[row.id] = row;\n if (row.subRows) {\n row.subRows = groupUpRecursively(row.subRows, depth + 1, row.id);\n }\n return row;\n });\n }\n const columnId = existingGrouping[depth];\n\n // Group the rows together for this level\n const rowGroupsMap = groupBy(rows, columnId);\n\n // Perform aggregations for each group\n const aggregatedGroupedRows = Array.from(rowGroupsMap.entries()).map((_ref, index) => {\n let [groupingValue, groupedRows] = _ref;\n let id = `${columnId}:${groupingValue}`;\n id = parentId ? `${parentId}>${id}` : id;\n\n // First, Recurse to group sub rows before aggregation\n const subRows = groupUpRecursively(groupedRows, depth + 1, id);\n subRows.forEach(subRow => {\n subRow.parentId = id;\n });\n\n // Flatten the leaf rows of the rows in this group\n const leafRows = depth ? flattenBy(groupedRows, row => row.subRows) : groupedRows;\n const row = createRow(table, id, leafRows[0].original, index, depth, undefined, parentId);\n Object.assign(row, {\n groupingColumnId: columnId,\n groupingValue,\n subRows,\n leafRows,\n getValue: columnId => {\n // Don't aggregate columns that are in the grouping\n if (existingGrouping.includes(columnId)) {\n if (row._valuesCache.hasOwnProperty(columnId)) {\n return row._valuesCache[columnId];\n }\n if (groupedRows[0]) {\n var _groupedRows$0$getVal;\n row._valuesCache[columnId] = (_groupedRows$0$getVal = groupedRows[0].getValue(columnId)) != null ? _groupedRows$0$getVal : undefined;\n }\n return row._valuesCache[columnId];\n }\n if (row._groupingValuesCache.hasOwnProperty(columnId)) {\n return row._groupingValuesCache[columnId];\n }\n\n // Aggregate the values\n const column = table.getColumn(columnId);\n const aggregateFn = column == null ? void 0 : column.getAggregationFn();\n if (aggregateFn) {\n row._groupingValuesCache[columnId] = aggregateFn(columnId, leafRows, groupedRows);\n return row._groupingValuesCache[columnId];\n }\n }\n });\n subRows.forEach(subRow => {\n groupedFlatRows.push(subRow);\n groupedRowsById[subRow.id] = subRow;\n // if (subRow.getIsGrouped?.()) {\n // onlyGroupedFlatRows.push(subRow);\n // onlyGroupedRowsById[subRow.id] = subRow;\n // } else {\n // nonGroupedFlatRows.push(subRow);\n // nonGroupedRowsById[subRow.id] = subRow;\n // }\n });\n return row;\n });\n return aggregatedGroupedRows;\n };\n const groupedRows = groupUpRecursively(rowModel.rows, 0);\n groupedRows.forEach(subRow => {\n groupedFlatRows.push(subRow);\n groupedRowsById[subRow.id] = subRow;\n // if (subRow.getIsGrouped?.()) {\n // onlyGroupedFlatRows.push(subRow);\n // onlyGroupedRowsById[subRow.id] = subRow;\n // } else {\n // nonGroupedFlatRows.push(subRow);\n // nonGroupedRowsById[subRow.id] = subRow;\n // }\n });\n return {\n rows: groupedRows,\n flatRows: groupedFlatRows,\n rowsById: groupedRowsById\n };\n }, getMemoOptions(table.options, 'debugTable', 'getGroupedRowModel', () => {\n table._queue(() => {\n table._autoResetExpanded();\n table._autoResetPageIndex();\n });\n }));\n}\nfunction groupBy(rows, columnId) {\n const groupMap = new Map();\n return rows.reduce((map, row) => {\n const resKey = `${row.getGroupingValue(columnId)}`;\n const previous = map.get(resKey);\n if (!previous) {\n map.set(resKey, [row]);\n } else {\n previous.push(row);\n }\n return map;\n }, groupMap);\n}\n\nfunction getPaginationRowModel(opts) {\n return table => memo(() => [table.getState().pagination, table.getPrePaginationRowModel(), table.options.paginateExpandedRows ? undefined : table.getState().expanded], (pagination, rowModel) => {\n if (!rowModel.rows.length) {\n return rowModel;\n }\n const {\n pageSize,\n pageIndex\n } = pagination;\n let {\n rows,\n flatRows,\n rowsById\n } = rowModel;\n const pageStart = pageSize * pageIndex;\n const pageEnd = pageStart + pageSize;\n rows = rows.slice(pageStart, pageEnd);\n let paginatedRowModel;\n if (!table.options.paginateExpandedRows) {\n paginatedRowModel = expandRows({\n rows,\n flatRows,\n rowsById\n });\n } else {\n paginatedRowModel = {\n rows,\n flatRows,\n rowsById\n };\n }\n paginatedRowModel.flatRows = [];\n const handleRow = row => {\n paginatedRowModel.flatRows.push(row);\n if (row.subRows.length) {\n row.subRows.forEach(handleRow);\n }\n };\n paginatedRowModel.rows.forEach(handleRow);\n return paginatedRowModel;\n }, getMemoOptions(table.options, 'debugTable', 'getPaginationRowModel'));\n}\n\nfunction getSortedRowModel() {\n return table => memo(() => [table.getState().sorting, table.getPreSortedRowModel()], (sorting, rowModel) => {\n if (!rowModel.rows.length || !(sorting != null && sorting.length)) {\n return rowModel;\n }\n const sortingState = table.getState().sorting;\n const sortedFlatRows = [];\n\n // Filter out sortings that correspond to non existing columns\n const availableSorting = sortingState.filter(sort => {\n var _table$getColumn;\n return (_table$getColumn = table.getColumn(sort.id)) == null ? void 0 : _table$getColumn.getCanSort();\n });\n const columnInfoById = {};\n availableSorting.forEach(sortEntry => {\n const column = table.getColumn(sortEntry.id);\n if (!column) return;\n columnInfoById[sortEntry.id] = {\n sortUndefined: column.columnDef.sortUndefined,\n invertSorting: column.columnDef.invertSorting,\n sortingFn: column.getSortingFn()\n };\n });\n const sortData = rows => {\n // This will also perform a stable sorting using the row index\n // if needed.\n const sortedData = rows.map(row => ({\n ...row\n }));\n sortedData.sort((rowA, rowB) => {\n for (let i = 0; i < availableSorting.length; i += 1) {\n var _sortEntry$desc;\n const sortEntry = availableSorting[i];\n const columnInfo = columnInfoById[sortEntry.id];\n const sortUndefined = columnInfo.sortUndefined;\n const isDesc = (_sortEntry$desc = sortEntry == null ? void 0 : sortEntry.desc) != null ? _sortEntry$desc : false;\n let sortInt = 0;\n\n // All sorting ints should always return in ascending order\n if (sortUndefined) {\n const aValue = rowA.getValue(sortEntry.id);\n const bValue = rowB.getValue(sortEntry.id);\n const aUndefined = aValue === undefined;\n const bUndefined = bValue === undefined;\n if (aUndefined || bUndefined) {\n if (sortUndefined === 'first') return aUndefined ? -1 : 1;\n if (sortUndefined === 'last') return aUndefined ? 1 : -1;\n sortInt = aUndefined && bUndefined ? 0 : aUndefined ? sortUndefined : -sortUndefined;\n }\n }\n if (sortInt === 0) {\n sortInt = columnInfo.sortingFn(rowA, rowB, sortEntry.id);\n }\n\n // If sorting is non-zero, take care of desc and inversion\n if (sortInt !== 0) {\n if (isDesc) {\n sortInt *= -1;\n }\n if (columnInfo.invertSorting) {\n sortInt *= -1;\n }\n return sortInt;\n }\n }\n return rowA.index - rowB.index;\n });\n\n // If there are sub-rows, sort them\n sortedData.forEach(row => {\n var _row$subRows;\n sortedFlatRows.push(row);\n if ((_row$subRows = row.subRows) != null && _row$subRows.length) {\n row.subRows = sortData(row.subRows);\n }\n });\n return sortedData;\n };\n return {\n rows: sortData(rowModel.rows),\n flatRows: sortedFlatRows,\n rowsById: rowModel.rowsById\n };\n }, getMemoOptions(table.options, 'debugTable', 'getSortedRowModel', () => table._autoResetPageIndex()));\n}\n\nexport { ColumnFaceting, ColumnFiltering, ColumnGrouping, ColumnOrdering, ColumnPinning, ColumnSizing, ColumnVisibility, GlobalFaceting, GlobalFiltering, Headers, RowExpanding, RowPagination, RowPinning, RowSelection, RowSorting, _getVisibleLeafColumns, aggregationFns, buildHeaderGroups, createCell, createColumn, createColumnHelper, createRow, createTable, defaultColumnSizing, expandRows, filterFns, flattenBy, functionalUpdate, getCoreRowModel, getExpandedRowModel, getFacetedMinMaxValues, getFacetedRowModel, getFacetedUniqueValues, getFilteredRowModel, getGroupedRowModel, getMemoOptions, getPaginationRowModel, getSortedRowModel, isFunction, isNumberArray, isRowSelected, isSubRowSelected, makeStateUpdater, memo, noop, orderColumns, passiveEventSupported, reSplitAlphaNumeric, selectRowsFn, shouldAutoRemoveFilter, sortingFns };\n//# sourceMappingURL=index.mjs.map\n","/**\n * react-table\n *\n * Copyright (c) TanStack\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE.md file in the root directory of this source tree.\n *\n * @license MIT\n */\nimport * as React from 'react';\nimport { createTable } from '@tanstack/table-core';\nexport * from '@tanstack/table-core';\n\n//\n\n/**\n * If rendering headers, cells, or footers with custom markup, use flexRender instead of `cell.getValue()` or `cell.renderValue()`.\n */\nfunction flexRender(Comp, props) {\n return !Comp ? null : isReactComponent(Comp) ? /*#__PURE__*/React.createElement(Comp, props) : Comp;\n}\nfunction isReactComponent(component) {\n return isClassComponent(component) || typeof component === 'function' || isExoticComponent(component);\n}\nfunction isClassComponent(component) {\n return typeof component === 'function' && (() => {\n const proto = Object.getPrototypeOf(component);\n return proto.prototype && proto.prototype.isReactComponent;\n })();\n}\nfunction isExoticComponent(component) {\n return typeof component === 'object' && typeof component.$$typeof === 'symbol' && ['react.memo', 'react.forward_ref'].includes(component.$$typeof.description);\n}\nfunction useReactTable(options) {\n // Compose in the generic options to the user options\n const resolvedOptions = {\n state: {},\n // Dummy state\n onStateChange: () => {},\n // noop\n renderFallbackValue: null,\n ...options\n };\n\n // Create a new table and store it in state\n const [tableRef] = React.useState(() => ({\n current: createTable(resolvedOptions)\n }));\n\n // By default, manage table state here using the table's initial state\n const [state, setState] = React.useState(() => tableRef.current.initialState);\n\n // Compose the default state above with any user state. This will allow the user\n // to only control a subset of the state if desired.\n tableRef.current.setOptions(prev => ({\n ...prev,\n ...options,\n state: {\n ...state,\n ...options.state\n },\n // Similarly, we'll maintain both our internal state and any user-provided\n // state.\n onStateChange: updater => {\n setState(updater);\n options.onStateChange == null || options.onStateChange(updater);\n }\n }));\n return tableRef.current;\n}\n\nexport { flexRender, useReactTable };\n//# sourceMappingURL=index.mjs.map\n","/**\n * `data-anv-part` values for DataTable internals. Scope by the consumer's\n * `data-cy` (or other `data-*`) on the root, then `data-row-id` /\n * `data-anv-column-id`.\n */\nexport const PARTS = {\n row: \"row\",\n cell: \"cell\",\n sortToggle: \"sort-toggle\",\n selectCheckbox: \"select-checkbox\",\n selectAllCheckbox: \"select-all-checkbox\",\n expandButton: \"expand-button\",\n expandAllButton: \"expand-all-button\",\n resizeHandle: \"resize-handle\",\n editableInput: \"editable-input\",\n} as const;\n","import { createContext } from \"react\";\nimport type { CellPosition } from \"../../../../internal/types\";\n\nexport type DTFocusState = {\n focusedCell: CellPosition | null;\n /** Cell that receives focus when the grid root is entered. */\n focusRestorePoint: CellPosition;\n};\n\nexport type DTFocusStateContextValue = {\n getFocusedCell: () => CellPosition | null;\n};\n\nexport type DTFocusCellAction = {\n type: \"FOCUS_CELL\";\n payload: {\n cellPosition: CellPosition;\n };\n};\n\nexport type DTFocusTableAction = {\n type: \"FOCUS_TABLE\";\n};\n\nexport type DTFocusMoveAction = {\n type: \"MOVE_FOCUS\";\n payload: {\n direction: \"up\" | \"down\" | \"left\" | \"right\";\n };\n};\n\nexport type DTFocusJumpAction = {\n type: \"JUMP_FOCUS\";\n payload: {\n direction: \"up\" | \"down\" | \"left\" | \"right\";\n };\n};\n\nexport type DTFocusCellManuallyAction = {\n type: \"FOCUS_CELL_MANUALLY\";\n payload: {\n cellPosition: CellPosition;\n };\n};\n\nexport type DTBlurAction = {\n type: \"BLUR\";\n};\n\nexport type DTFocusAction =\n | DTFocusCellAction\n | DTFocusTableAction\n | DTFocusMoveAction\n | DTFocusJumpAction\n | DTBlurAction\n | DTFocusCellManuallyAction;\n\nexport const DTFocusStateContext = createContext<DTFocusStateContextValue>({\n getFocusedCell: () => null,\n});\nexport const DTFocusDispatchContext = createContext<\n React.Dispatch<DTFocusAction>\n>(() => {});\n","import { useCallback, useContext } from \"react\";\nimport { DTFocusDispatchContext } from \"./DTFocusContext\";\nimport type { CellPosition } from \"../../../../internal/types\";\n\n/** Returns focus commands from the nearest data-table focus provider. */\nexport function useDTFocusDispatchContext() {\n const dispatch = useContext(DTFocusDispatchContext);\n\n const focusTableGenerally = useCallback(() => {\n dispatch({\n type: \"FOCUS_TABLE\",\n });\n }, [dispatch]);\n\n const moveFocusToCell = useCallback(\n (cellPosition: CellPosition) => {\n dispatch({\n type: \"FOCUS_CELL\",\n payload: { cellPosition },\n });\n },\n [dispatch],\n );\n\n const moveFocus = useCallback(\n (direction: \"up\" | \"down\" | \"left\" | \"right\") => {\n dispatch({\n type: \"MOVE_FOCUS\",\n payload: { direction },\n });\n },\n [dispatch],\n );\n\n const jumpFocus = useCallback(\n (direction: \"up\" | \"down\" | \"left\" | \"right\") => {\n dispatch({\n type: \"JUMP_FOCUS\",\n payload: { direction },\n });\n },\n [dispatch],\n );\n\n const blur = useCallback(() => {\n dispatch({\n type: \"BLUR\",\n });\n }, [dispatch]);\n\n return {\n focusTableGenerally,\n moveFocusToCell,\n moveFocus,\n jumpFocus,\n blur,\n dispatch,\n };\n}\n","import type { ComponentPropsWithoutRef } from \"react\";\nimport cx from \"classnames\";\n\nimport { useDTFocusDispatchContext } from \"../DataTable/internal/context/focus/useDTFocusDispatchContext\";\n\nimport styles from \"./TableBase.module.scss\";\n\nexport type SimpleTableBaseProps = ComponentPropsWithoutRef<\"table\">;\n\nexport type DataTableBaseProps = Omit<\n ComponentPropsWithoutRef<\"div\">,\n \"aria-colcount\" | \"aria-rowcount\"\n> & {\n /** Total leaf-column count exposed through `aria-colcount`. */\n colCount: number;\n /** Total header, body, and footer row count exposed through `aria-rowcount`. */\n rowCount: number;\n /** Uses tree-grid semantics when rows can contain child rows. */\n hasSubRows?: boolean;\n};\n\n/**\n * Selects native table markup or an ARIA grid from the corresponding prop\n * branch.\n */\nexport type TableBaseProps =\n | ({\n /** Renders a native `table`. */\n type: \"simple\";\n } & SimpleTableBaseProps)\n | ({\n /** Renders a focus-managed `grid` or `treegrid`. */\n type: \"data-table\";\n } & DataTableBaseProps);\n\nconst SimpleTableBase = ({\n children,\n className,\n ...rest\n}: SimpleTableBaseProps) => {\n const tableBaseClassNames = cx(className, styles[\"table-base\"]);\n return (\n <table\n data-anv=\"simple-table-base\"\n {...rest}\n className={tableBaseClassNames}\n >\n {children}\n </table>\n );\n};\n\nconst DataTableBase = ({\n children,\n className,\n colCount,\n rowCount,\n hasSubRows,\n ...rest\n}: DataTableBaseProps) => {\n const tableBaseClassNames = cx(className, styles[\"data-table-base\"]);\n const { focusTableGenerally, blur, moveFocusToCell } =\n useDTFocusDispatchContext();\n\n const handleBlur = (event: React.FocusEvent<HTMLDivElement>) => {\n if (!event.currentTarget.contains(event.relatedTarget as Node)) {\n blur();\n }\n };\n\n const handleFocus = (event: React.FocusEvent<HTMLDivElement>) => {\n if (event.target === event.currentTarget) {\n // Re-enter the grid at the roving-tabindex restore point.\n focusTableGenerally();\n return;\n }\n // Nested controls identify their owning cell so re-entry resumes there.\n const targetEl = event.target as HTMLElement;\n const cellEl = targetEl.closest<HTMLElement>(\"[data-cell-pos]\");\n const cellPosAttr = cellEl?.getAttribute(\"data-cell-pos\");\n if (cellPosAttr) {\n const [rowIndex, columnIndex] = cellPosAttr.split(\",\").map(Number);\n if (!Number.isNaN(rowIndex) && !Number.isNaN(columnIndex)) {\n moveFocusToCell({ rowIndex, columnIndex });\n }\n }\n };\n\n return (\n <div\n data-anv=\"data-table-base\"\n {...rest}\n className={tableBaseClassNames}\n aria-colcount={colCount}\n aria-rowcount={rowCount}\n role={hasSubRows ? \"treegrid\" : \"grid\"}\n tabIndex={0}\n onFocus={handleFocus}\n onBlur={handleBlur}\n >\n {children}\n </div>\n );\n};\n\n/**\n * Structural root for a native table or focus-managed ARIA data grid.\n */\nexport const TableBase = ({ type, ...rest }: TableBaseProps) => {\n if (type === \"simple\") {\n return <SimpleTableBase {...rest} />;\n }\n\n if (\"rowCount\" in rest && \"colCount\" in rest) {\n return (\n <DataTableBase\n {...rest}\n rowCount={rest.rowCount}\n colCount={rest.colCount}\n />\n );\n }\n};\n","import type { ComponentPropsWithoutRef } from \"react\";\nimport cx from \"classnames\";\n\nimport styles from \"./TableBody.module.scss\";\n\n/**\n * Selects native table-body markup or an ARIA row group from the corresponding\n * prop branch.\n */\nexport type TableBodyProps =\n | ({\n /** Renders a native `tbody`. */\n type: \"simple\";\n } & ComponentPropsWithoutRef<\"tbody\">)\n | ({\n /** Renders a `rowgroup` for an ARIA grid. */\n type: \"data-table\";\n } & ComponentPropsWithoutRef<\"div\">);\n\n/**\n * Body region for a native table or ARIA data grid.\n */\nexport function TableBody({ type, children, ...rest }: TableBodyProps) {\n const classes = cx(styles[\"table-body\"], rest.className);\n const Element = type === \"simple\" ? \"tbody\" : \"div\";\n\n return (\n <Element\n {...rest}\n data-anv=\"table-body\"\n className={classes}\n role={type === \"simple\" ? undefined : \"rowgroup\"}\n >\n {children}\n </Element>\n );\n}\n","import type { Column } from \"@tanstack/react-table\";\nimport cx from \"classnames\";\nimport styles from \"../base/cells/TableCells.module.scss\";\n\n/**\n * Returns first/last edge classes for a pinned column so CSS can draw the\n * pinned region's overflow affordance.\n */\nexport const getCommonPinningClasses = <T>(\n column: Column<T>,\n): string | undefined => {\n const isPinned = column.getIsPinned();\n if (!isPinned) return undefined;\n\n return cx({\n [styles[\"first-pinned-left-column\"]]:\n isPinned === \"left\" && column.getIsFirstColumn(\"left\"),\n [styles[\"last-pinned-left-column\"]]:\n isPinned === \"left\" && column.getIsLastColumn(\"left\"),\n [styles[\"first-pinned-right-column\"]]:\n isPinned === \"right\" && column.getIsFirstColumn(\"right\"),\n [styles[\"last-pinned-right-column\"]]:\n isPinned === \"right\" && column.getIsLastColumn(\"right\"),\n });\n};\n","import styles from \"./DataTableCellAffordance.module.scss\";\n\n/** Host class that reveals {@link DataTableCellAffordance} on hover or focus. */\nexport const dataTableCellAffordanceHostClassName =\n styles[\"data-table-body-cell-affordance-host\"];\n","import type { ReactNode } from \"react\";\nimport cx from \"classnames\";\n\nimport styles from \"./DataTableCellAffordance.module.scss\";\n\nexport type DataTableCellAffordanceProps = {\n children: ReactNode;\n /**\n * Lets the overlay receive pointer events. Defaults to `false` (display-only\n * icons such as edit).\n */\n interactive?: boolean;\n};\n\n/**\n * Decorative overlay shown on a host cell's hover/focus. Hidden from the\n * accessibility tree.\n */\nexport function DataTableCellAffordance({\n children,\n interactive = false,\n}: DataTableCellAffordanceProps) {\n return (\n <span\n className={cx(styles[\"data-table-body-cell-affordance-container\"], {\n [styles[\"data-table-body-cell-affordance-container-interactive\"]]:\n interactive,\n })}\n aria-hidden\n >\n {children}\n </span>\n );\n}\n","import { Icon } from \"../../../../../../components\";\nimport { DataTableCellAffordance } from \"../DataTableCellAffordance\";\n\nimport EditIcon from \"../../../../../../../public/assets/icons/material/round/edit.svg\";\n\n/** Decorative edit affordance; not a separate control. */\nexport const DataTableEditableCellEditIcon = () => {\n return (\n <DataTableCellAffordance>\n <Icon svg={EditIcon} size=\"small\" color=\"subtle\" />\n </DataTableCellAffordance>\n );\n};\n","import { type ComponentPropsWithoutRef, forwardRef } from \"react\";\nimport cx from \"classnames\";\n\nimport type { CommonTableCellProps } from \"./types\";\n\nimport styles from \"./TableCells.module.scss\";\n\nexport type SimpleTableBodyCellProps = ComponentPropsWithoutRef<\"td\"> &\n CommonTableCellProps;\n\nexport type DataTableBodyCellProps = ComponentPropsWithoutRef<\"div\"> &\n CommonTableCellProps;\n\n/**\n * Selects a native or ARIA body cell from the corresponding prop branch.\n */\nexport type TableBodyCellProps =\n | ({\n /** Renders a native `td`. */\n type: \"simple\";\n } & SimpleTableBodyCellProps)\n | ({\n /** Renders a `gridcell` for an ARIA grid. */\n type: \"data-table\";\n } & DataTableBodyCellProps);\n\n/**\n * Body cell for a native table or ARIA data grid.\n */\nexport const TableBodyCell = forwardRef<\n HTMLTableCellElement | HTMLDivElement,\n TableBodyCellProps\n>(({ type, children, className, isExpandCell, isSelectCell, ...rest }, ref) => {\n const classes = cx(styles[\"table-body-cell\"], className, {\n [styles[\"table-cell-internal-expand\"]]: isExpandCell,\n [styles[\"table-cell-internal-select\"]]: isSelectCell,\n });\n const CellElement = type === \"simple\" ? \"td\" : \"div\";\n\n return (\n <CellElement\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- could be table cell or div\n ref={ref as any}\n data-anv=\"table-body-cell\"\n {...rest}\n className={classes}\n role={type === \"simple\" ? undefined : \"gridcell\"}\n >\n {children}\n </CellElement>\n );\n});\n\nTableBodyCell.displayName = \"TableBodyCell\";\n","import type { CellPosition } from \"../../../internal/types\";\n\nexport function formatCellPositionString(cellPosition: CellPosition): string {\n return `${cellPosition.rowIndex},${cellPosition.columnIndex}`;\n}\n\nexport function areCellPositionsEqual(\n pos1: CellPosition | null | undefined,\n pos2: CellPosition | null | undefined,\n): boolean {\n if (!pos1 || !pos2) return false;\n return (\n pos1.rowIndex === pos2.rowIndex && pos1.columnIndex === pos2.columnIndex\n );\n}\n","import type { Cell } from \"@tanstack/react-table\";\nimport type {\n ColumnDef,\n ColumnReadRenderResult,\n TableRow,\n} from \"../../../types\";\n\n/**\n * Leaf column `id` from `meta.columnDef` when present, else TanStack's string\n * `column.id`.\n */\nexport function getColumnId<T>(cell: Cell<T, unknown>): keyof T {\n const columnDef = cell.column.columnDef.meta?.columnDef as\n | ColumnDef<T>\n | undefined;\n if (columnDef?.id) {\n return columnDef.id as keyof T;\n }\n return cell.column.id as keyof T;\n}\n\n/**\n * Cell value as `T[K]`. TanStack's `Cell` type does not keep `T[K]` at the\n * table instance, so this is an assertion.\n */\nexport function getCellValue<T, K extends keyof T>(\n cell: Cell<T, unknown>,\n _columnId: K,\n): T[K] {\n const value = cell.getValue();\n return value as T[K];\n}\n\nexport function getCellReadRenderResult<T>(\n cell: Cell<T, unknown>,\n): ColumnReadRenderResult | undefined {\n return cell.column.columnDef.meta?.getReadRenderResult?.(cell.getValue(), {\n row: cell.row.original as TableRow<T>,\n depth: cell.row.depth,\n });\n}\n\nexport function getCellReadRenderRawString<T>(\n cell: Cell<T, unknown>,\n): string | undefined {\n return getCellReadRenderResult(cell)?.rawString;\n}\n\n/**\n * `editConfig.onChange` narrowed to `T[K]`. The config type is the column-id\n * union, which is wider than one cell.\n */\nexport function getCellOnChange<T, K extends keyof T>(\n cell: Cell<T, unknown>,\n _columnId: K,\n): ((value: T[K], rowId: string) => void) | undefined {\n const meta = cell.column.columnDef.meta;\n const onChange = (meta?.editConfig as { onChange?: unknown } | undefined)\n ?.onChange;\n return onChange as ((value: T[K], rowId: string) => void) | undefined;\n}\n\n/**\n * Warns when a cell value's runtime type does not match `editMode`.\n */\nexport function logWarningForInvalidCellValueType({\n columnId,\n editMode,\n expectedType,\n receivedType,\n}: {\n columnId: string;\n editMode: string;\n expectedType: string;\n receivedType: string;\n}): void {\n console.warn(\n `[DataTable] Column \"${columnId}\" with editMode \"${editMode}\" expects ${expectedType}, received ${receivedType}.`,\n );\n}\n","import { type CSSProperties, useMemo } from \"react\";\nimport type { Column } from \"@tanstack/react-table\";\n\n/**\n * Positions a pinned column at TanStack's accumulated edge offset. Column\n * width remains owned by the table's CSS grid.\n */\nexport const getCommonPinningStyles = <T>(column: Column<T>): CSSProperties => {\n const isPinned = column.getIsPinned();\n\n return {\n left: isPinned === \"left\" ? `${column.getStart(\"left\")}px` : undefined,\n right: isPinned === \"right\" ? `${column.getAfter(\"right\")}px` : undefined,\n position: isPinned ? \"sticky\" : \"relative\",\n zIndex: isPinned ? 1 : 0,\n };\n};\n\n// Shared frozen object so unpinned cells keep a stable style identity.\nconst EMPTY_PINNING_STYLES: CSSProperties = Object.freeze({\n left: undefined,\n right: undefined,\n position: \"relative\",\n zIndex: 0,\n});\n\n/**\n * Sticky edge offsets for pinned columns; unpinned cells share one frozen\n * style object.\n */\nexport const useCommonPinningStyles = <T>(column: Column<T>): CSSProperties => {\n const isPinned = column.getIsPinned();\n const left = column.getStart(\"left\");\n const right = column.getAfter(\"right\");\n\n return useMemo(() => {\n if (!isPinned) return EMPTY_PINNING_STYLES;\n return {\n left: isPinned === \"left\" ? `${left}px` : undefined,\n right: isPinned === \"right\" ? `${right}px` : undefined,\n position: \"sticky\",\n zIndex: 1,\n };\n }, [left, right, isPinned]);\n};\n","import { createContext } from \"react\";\n\nexport type DataTableRowClickContextValue = {\n /** Enables row-click affordances when the consumer supplied a handler. */\n isRowClickEnabled: boolean;\n /** Invokes the latest callback when present unless the row is read-only. */\n clickRow: (rowId: string) => void;\n};\n\nexport const DataTableRowClickContext =\n createContext<DataTableRowClickContextValue>({\n isRowClickEnabled: false,\n clickRow: () => {},\n });\n","import { useContext } from \"react\";\nimport { DataTableRowClickContext } from \"./DataTableRowClickContext\";\n\n/** Defaults to disabled + no-op `clickRow` when no provider is mounted. */\nexport function useDataTableRowClick() {\n return useContext(DataTableRowClickContext);\n}\n","/** Includes `[tabindex]`, which also matches negative values. */\nconst FOCUSABLE_SELECTOR = [\n \"button:not([disabled])\",\n \"a[href]\",\n 'input:not([disabled]):not([type=\"hidden\"])',\n \"select:not([disabled])\",\n \"textarea:not([disabled])\",\n \"[tabindex]\",\n].join(\",\");\n\n/**\n * Marks a descendant this cell owns so it can still be found after nav mode\n * sets `tabIndex=-1`.\n */\nexport const CELL_MANAGED_ATTR = \"data-anv-cell-managed-tabindex\";\n\n/** Tabbable descendants not yet under this cell's tabindex control. */\nexport function getUnmanagedTabbables(cellEl: HTMLElement): HTMLElement[] {\n return Array.from(\n cellEl.querySelectorAll<HTMLElement>(FOCUSABLE_SELECTOR),\n ).filter((el) => !el.hasAttribute(CELL_MANAGED_ATTR) && el.tabIndex >= 0);\n}\n\n/** Owned descendants, including nav-mode `tabIndex=-1` nodes a tabbable query would miss. */\nexport function getManagedInteractives(cellEl: HTMLElement): HTMLElement[] {\n return Array.from(\n cellEl.querySelectorAll<HTMLElement>(`[${CELL_MANAGED_ATTR}]`),\n );\n}\n","/**\n * Expand-arrow column.\n */\nexport const INTERNAL_ROW_ACTION_PRIMARY_COLUMN_ID =\n \"a2-table-internal-row-action-primary\";\n\n/**\n * Row-selection checkbox column.\n */\nexport const INTERNAL_ROW_ACTION_SECONDARY_COLUMN_ID =\n \"a2-table-internal-row-action-secondary\";\n\n/**\n * Per-row height for the virtualizer `estimateSize` and the first-load spacer\n * (`rowsPerPage * this`, then clamped). Measurement replaces it after first\n * paint, so it only shapes the pre-measurement scroll range and spacer.\n */\nexport const DEFAULT_ESTIMATED_ROW_HEIGHT = 35;\n\n/**\n * Ceiling for the first-load loading spacer. Uncapped `rowsPerPage * estimated\n * row height` is taller than the viewport at large page sizes and leaves a\n * tall empty spinner well.\n */\nexport const MAX_INITIAL_LOADING_HEIGHT = 400;\n\n/**\n * Floor for the first-load loading spacer so a small page size still contains\n * the centered medium Spinner.\n */\nexport const MIN_INITIAL_LOADING_HEIGHT = 80;\n\n/**\n * First-load spacer height when `rowsPerPage` is not a positive number.\n * `paginationObject?.rowsPerPage ?? 25` only replaces nullish values, so `0`,\n * negatives, and `NaN` skip the estimated-height clamp and use this instead.\n */\nexport const DEFAULT_INITIAL_LOADING_HEIGHT = 200;\n","import { useCallback, useLayoutEffect, useRef, useState } from \"react\";\nimport cx from \"classnames\";\n\nimport { TableBodyCell } from \"../../../base/cells/TableBodyCell\";\nimport type { DataTableBodyCellProps as BaseDataTableBodyCellProps } from \"../../../base/cells/TableBodyCell\";\n\nimport styles from \"./DataTableCells.module.scss\";\nimport baseTableCellStyles from \"../../../base/cells/TableCells.module.scss\";\nimport type { Cell } from \"@tanstack/react-table\";\nimport { useCommonPinningStyles } from \"../../../internal/getCommonPinningStyles\";\nimport { useDTFocusDispatchContext } from \"../context/focus/useDTFocusDispatchContext\";\nimport { useDataTableRowClick } from \"../context/rowClick/useDataTableRowClick\";\nimport { formatCellPositionString } from \"../util/cellPositionHelpers\";\nimport {\n CELL_MANAGED_ATTR,\n getManagedInteractives,\n getUnmanagedTabbables,\n} from \"../util/getCellInteractives\";\nimport type { CellPosition } from \"../../../internal/types\";\nimport {\n INTERNAL_ROW_ACTION_PRIMARY_COLUMN_ID,\n INTERNAL_ROW_ACTION_SECONDARY_COLUMN_ID,\n} from \"../constants\";\nimport type { TableRow } from \"../../../types\";\n\nexport type DataTableBodyImmutableCellProps<T> = Omit<\n BaseDataTableBodyCellProps,\n \"onChange\"\n> & {\n /** Coordinates used by the grid's roving-focus manager. */\n cellPosition: CellPosition;\n /** Supplies row and column state for actions and validation styling. */\n cell: Cell<T, unknown>;\n};\n\n/**\n * Read-only ARIA grid cell with roving navigation and keyboard activation for\n * row actions or embedded controls.\n */\nexport function DataTableBodyImmutableCell<T>(\n props: DataTableBodyImmutableCellProps<T>,\n) {\n const { cell, cellPosition, children, ...rest } = props;\n\n const cellRef = useRef<HTMLTableCellElement>(null);\n\n const column = cell.column;\n\n const rowCanExpand = cell.row.getCanExpand();\n const rowIsExpanded = cell.row.getIsExpanded();\n const toggleRowExpanded = cell.row.toggleExpanded;\n\n const columnId = column.id;\n const isPrimaryActionColumn =\n columnId === INTERNAL_ROW_ACTION_PRIMARY_COLUMN_ID;\n const isSecondaryActionColumn =\n columnId === INTERNAL_ROW_ACTION_SECONDARY_COLUMN_ID;\n const isNestedRow = !!cell.row.getParentRow()?.getCanExpand();\n\n const isExpandCell = isPrimaryActionColumn && rowCanExpand;\n const isSelectCell =\n (isPrimaryActionColumn && isNestedRow && cell.row.getCanSelect()) ||\n (isSecondaryActionColumn && !isNestedRow);\n\n const meta = (cell.row.original as TableRow<T>).meta;\n const cellError = meta?.errors?.[column.id as keyof T];\n const cellWarning = meta?.warnings?.[column.id as keyof T];\n\n const classes = cx(styles[\"data-table-body-cell\"], rest.className, {\n [styles[\"data-table-body-cell-error\"]]: !!cellError,\n [styles[\"data-table-body-cell-warning\"]]: !cellError && !!cellWarning,\n [baseTableCellStyles[\"table-cell-internal-expand\"]]: isExpandCell,\n [baseTableCellStyles[\"table-cell-internal-select\"]]: isSelectCell,\n });\n const commonPinningStyles = useCommonPinningStyles<T>(column);\n\n const { jumpFocus, moveFocus } = useDTFocusDispatchContext();\n const { isRowClickEnabled, clickRow } = useDataTableRowClick();\n\n const [isInteractionMode, setIsInteractionMode] = useState(false);\n\n // Cell content can swap after any render, so newly mounted descendants must\n // be discovered each time; the marker makes unchanged descendants a no-op.\n useLayoutEffect(() => {\n if (!cellRef.current) return;\n const newOnes = getUnmanagedTabbables(cellRef.current);\n newOnes.forEach((el) => {\n el.setAttribute(CELL_MANAGED_ATTR, \"\");\n if (!isInteractionMode) {\n el.tabIndex = -1;\n }\n });\n });\n\n const exitInteractionMode = useCallback(() => {\n if (!cellRef.current) return;\n getManagedInteractives(cellRef.current).forEach((el) => {\n el.tabIndex = -1;\n });\n setIsInteractionMode(false);\n }, []);\n\n const handleKeyDown = useCallback(\n (event: React.KeyboardEvent<HTMLTableCellElement>) => {\n if (isInteractionMode) {\n if (event.key === \"Escape\") {\n event.preventDefault();\n // Close an open popover or menu before restoring grid navigation so\n // its surface is not left open after focus returns to the cell.\n const openTrigger = cellRef.current\n ? getManagedInteractives(cellRef.current)\n .filter((el) => !(el as HTMLButtonElement).disabled)\n .find((el) => el.getAttribute(\"aria-expanded\") === \"true\")\n : null;\n openTrigger?.click();\n exitInteractionMode();\n cellRef.current?.focus();\n }\n return;\n }\n\n switch (event.key) {\n case \"Escape\": {\n // Popover focus restoration targets its trigger; return focus to the\n // cell so the grid receives subsequent navigation keys.\n if (!cellRef.current) return;\n const openTrigger = getManagedInteractives(cellRef.current)\n .filter((el) => !(el as HTMLButtonElement).disabled)\n .find((el) => el.getAttribute(\"aria-expanded\") === \"true\");\n if (openTrigger) {\n event.preventDefault();\n openTrigger.click();\n cellRef.current.focus();\n }\n return;\n }\n case \"ArrowUp\":\n event.preventDefault();\n moveFocus(\"up\");\n return;\n case \"ArrowDown\":\n event.preventDefault();\n moveFocus(\"down\");\n return;\n case \"ArrowLeft\":\n event.preventDefault();\n if (rowCanExpand && rowIsExpanded) {\n toggleRowExpanded();\n return;\n }\n moveFocus(\"left\");\n return;\n case \"ArrowRight\":\n event.preventDefault();\n if (rowCanExpand && !rowIsExpanded) {\n toggleRowExpanded();\n return;\n }\n moveFocus(\"right\");\n return;\n case \"Home\": {\n event.preventDefault();\n jumpFocus(\"left\");\n return;\n }\n case \"End\": {\n event.preventDefault();\n jumpFocus(\"right\");\n return;\n }\n case \"Enter\":\n case \" \": {\n if (isExpandCell || isSelectCell) {\n event.preventDefault();\n if (isExpandCell) {\n toggleRowExpanded();\n }\n if (isSelectCell) {\n cell.row.toggleSelected();\n }\n return;\n }\n if (!cellRef.current) return;\n const interactives = getManagedInteractives(cellRef.current).filter(\n (el) => !(el as HTMLButtonElement).disabled,\n );\n if (interactives.length === 0) {\n // Enter activates a configured row action; Space remains available\n // for native page scrolling.\n if (event.key === \"Enter\" && isRowClickEnabled) {\n event.preventDefault();\n clickRow(cell.row.id);\n }\n return;\n }\n event.preventDefault();\n if (interactives.length === 1) {\n // Keep a single control at `-1` so the next Tab exits the cell\n // instead of revisiting its trigger.\n interactives[0].focus();\n interactives[0].click();\n return;\n }\n interactives.forEach((el) => {\n el.tabIndex = 0;\n });\n interactives[0].focus();\n setIsInteractionMode(true);\n return;\n }\n default:\n break;\n }\n },\n [\n isInteractionMode,\n exitInteractionMode,\n moveFocus,\n jumpFocus,\n isExpandCell,\n isSelectCell,\n cell,\n rowCanExpand,\n rowIsExpanded,\n toggleRowExpanded,\n isRowClickEnabled,\n clickRow,\n ],\n );\n\n const handleBlur = useCallback(\n (event: React.FocusEvent<HTMLTableCellElement>) => {\n if (cellRef.current?.contains(event.relatedTarget as Node | null)) return;\n exitInteractionMode();\n },\n [exitInteractionMode],\n );\n\n return (\n <TableBodyCell\n type=\"data-table\"\n {...rest}\n className={classes}\n ref={cellRef}\n tabIndex={-1}\n style={commonPinningStyles}\n onKeyDown={handleKeyDown}\n onBlur={handleBlur}\n data-cell-pos={formatCellPositionString(cellPosition)}\n data-anv-cell-interaction-mode={isInteractionMode || undefined}\n >\n {children}\n </TableBodyCell>\n );\n}\n","import {\n forwardRef,\n useCallback,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport cx from \"classnames\";\n\nimport { SrOnly } from \"../../../../../../components\";\nimport { ANV_PART_ATTR } from \"../../../../../../internal/constants/anvParts\";\nimport { PARTS } from \"../../parts\";\n\nimport { dataTableCellAffordanceHostClassName } from \"../dataTableCellAffordanceHostClassName\";\nimport { DataTableEditableCellEditIcon } from \"./DataTableEditableCellEditIcon\";\nimport { TableBodyCell } from \"../../../base/cells/TableBodyCell\";\n\nimport styles from \"./DataTableEditableCells.module.scss\";\nimport dataTableCellStyles from \"../cells/DataTableCells.module.scss\";\nimport { formatCellPositionString } from \"../util/cellPositionHelpers\";\nimport type {\n EditableCellImperativeHandle,\n BaseEditableCellProps,\n} from \"./types\";\nimport { useDTFocusDispatchContext } from \"../context/focus/useDTFocusDispatchContext\";\nimport {\n getColumnId,\n getCellValue,\n getCellOnChange,\n logWarningForInvalidCellValueType,\n} from \"../util/cellTypeHelpers\";\nimport { DataTableBodyImmutableCell } from \"../cells/DataTableBodyImmutableCell\";\n\nexport type DataTableEditableTextCellProps<T> = BaseEditableCellProps<T>;\n\nfunction DataTableEditableTextCellInner<T>(\n props: DataTableEditableTextCellProps<T>,\n ref: React.Ref<EditableCellImperativeHandle>,\n) {\n const { cell, cellProps, cellPosition, children } = props;\n const { onKeyDown: onCellKeyDown } = cellProps;\n const inputRef = useRef<HTMLInputElement>(null);\n const cellRef = useRef<HTMLTableCellElement>(null);\n const rowId = cell.row.id;\n const [isEditing, setIsEditing] = useState(false);\n\n const columnId = getColumnId(cell);\n const cellValue = getCellValue(cell, columnId);\n\n const [initialValue, isValidValueType] = useMemo(() => {\n if (cellValue === undefined || cellValue === null) {\n return [\"\", true];\n }\n\n if (typeof cellValue === \"string\") {\n return [cellValue, true];\n }\n\n logWarningForInvalidCellValueType({\n columnId: String(columnId),\n editMode: \"text\",\n expectedType: \"string\",\n receivedType: Array.isArray(cellValue) ? \"array\" : typeof cellValue,\n });\n return [\"\", false];\n }, [cellValue, columnId]);\n\n const [draftValue, setDraftValue] = useState(initialValue);\n const [tabIndex, setTabIndex] = useState(-1);\n const { moveFocusToCell } = useDTFocusDispatchContext();\n\n useImperativeHandle(ref, () => ({\n invoke: beginEditing,\n focus: () => {\n cellRef.current?.focus();\n setTabIndex(0);\n },\n }));\n\n // Enter/F2/Escape focus the cell first; blur must not commit after those keys.\n const skipCommitOnBlur = useRef(false);\n\n const onChange = getCellOnChange(cell, columnId);\n\n const commitValue = useCallback(() => {\n if (draftValue !== initialValue) {\n onChange?.(draftValue as T[typeof columnId], rowId);\n }\n setIsEditing(false);\n }, [rowId, draftValue, onChange, initialValue]);\n\n const resetValue = useCallback(() => {\n setDraftValue(initialValue);\n skipCommitOnBlur.current = true;\n cellRef.current?.focus();\n setIsEditing(false);\n }, [initialValue]);\n\n const beginEditing = useCallback(() => {\n setIsEditing(true);\n }, [setIsEditing]);\n\n const handleInputChange = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n setDraftValue(e.target.value);\n },\n [setDraftValue],\n );\n\n const handleInputKeyDown = useCallback(\n (event: React.KeyboardEvent<HTMLInputElement>) => {\n if (event.key === \"Enter\" || event.key === \"F2\") {\n event.preventDefault();\n skipCommitOnBlur.current = true;\n cellRef.current?.focus();\n commitValue();\n return;\n } else if (event.key === \"Escape\") {\n event.preventDefault();\n resetValue();\n return;\n }\n },\n [commitValue, resetValue],\n );\n\n const handleInputBlur = useCallback(() => {\n if (skipCommitOnBlur.current) {\n skipCommitOnBlur.current = false;\n return;\n }\n commitValue();\n }, [commitValue]);\n\n const classes = cx(\n dataTableCellAffordanceHostClassName,\n styles[\"data-table-body-cell-editable\"],\n cellProps.className,\n {\n [dataTableCellStyles[\"data-table-body-cell-editing\"]]: isEditing,\n },\n );\n\n const handleCellKeyDown = useCallback(\n (event: React.KeyboardEvent<HTMLTableCellElement>) => {\n if (isEditing) {\n return;\n }\n onCellKeyDown?.(event);\n },\n [onCellKeyDown, isEditing],\n );\n\n const handleCellFocus = useCallback(\n (event: React.FocusEvent<HTMLTableCellElement>) => {\n if (event.target !== cellRef.current) {\n return;\n }\n event.preventDefault();\n setTabIndex(0);\n },\n [setTabIndex],\n );\n\n const handleCellBlur = useCallback(\n (e: React.FocusEvent<HTMLElement>) => {\n if (cellRef.current?.contains(e.relatedTarget as Node)) {\n return;\n }\n setTabIndex(-1);\n },\n [setTabIndex, cellRef],\n );\n\n const handleCellMouseDown = useCallback(\n (e: React.MouseEvent<HTMLTableCellElement>) => {\n e.preventDefault();\n e.stopPropagation();\n beginEditing();\n moveFocusToCell(cellPosition);\n },\n [beginEditing, cellPosition, moveFocusToCell],\n );\n\n useEffect(() => {\n if (isEditing) {\n inputRef.current?.focus();\n }\n }, [isEditing]);\n\n if (!isValidValueType) {\n const { cellProps: _cellProps, ...immutableCellProps } = props;\n return <DataTableBodyImmutableCell {...immutableCellProps} />;\n }\n\n return (\n <TableBodyCell\n ref={cellRef}\n type=\"data-table\"\n className={classes}\n style={cellProps.style}\n onMouseDown={handleCellMouseDown}\n onKeyDown={handleCellKeyDown}\n tabIndex={tabIndex}\n onFocus={handleCellFocus}\n onBlur={handleCellBlur}\n data-cell-pos={formatCellPositionString(cellPosition)}\n data-anv-editable-cell=\"true\"\n >\n {isEditing ? (\n <>\n <input\n ref={inputRef}\n type=\"text\"\n name={`${cell.column.id}-row-${cellPosition.rowIndex}`}\n value={draftValue}\n className={styles[\"data-table-body-cell-input\"]}\n onChange={handleInputChange}\n onBlur={handleInputBlur}\n onKeyDown={handleInputKeyDown}\n {...{ [ANV_PART_ATTR]: PARTS.editableInput }}\n />\n </>\n ) : (\n <>\n {children}\n {!isEditing && <DataTableEditableCellEditIcon />}\n </>\n )}\n <SrOnly>\n {isEditing\n ? \"Press Enter or F2 to save cell value.\"\n : \"Press Enter or F2 to edit cell value. Press Escape to cancel.\"}\n </SrOnly>\n </TableBodyCell>\n );\n}\n\n/**\n * Inline text editor. Enter/F2 and blur commit; Escape restores the committed\n * value. Invalid cell types fall back to a read-only body cell.\n */\nexport const DataTableEditableTextCell = Object.assign(\n forwardRef(DataTableEditableTextCellInner) as <T>(\n props: DataTableEditableTextCellProps<T> & {\n ref?: React.Ref<EditableCellImperativeHandle>;\n },\n ) => React.ReactElement,\n { displayName: \"DataTableEditableTextCell\" },\n);\n","import {\n forwardRef,\n useCallback,\n useEffect,\n useId,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport cx from \"classnames\";\n\nimport { SrOnly } from \"../../../../../../components\";\nimport { ANV_PART_ATTR } from \"../../../../../../internal/constants/anvParts\";\nimport { PARTS } from \"../../parts\";\n\nimport { DataTableEditableCellEditIcon } from \"./DataTableEditableCellEditIcon\";\nimport { TableBodyCell } from \"../../../base/cells/TableBodyCell\";\n\nimport styles from \"./DataTableEditableCells.module.scss\";\nimport dataTableCellStyles from \"../cells/DataTableCells.module.scss\";\nimport { formatCellPositionString } from \"../util/cellPositionHelpers\";\nimport type {\n EditableCellImperativeHandle,\n BaseEditableCellProps,\n} from \"./types\";\nimport { useDTFocusDispatchContext } from \"../context/focus/useDTFocusDispatchContext\";\nimport {\n getColumnId,\n getCellValue,\n getCellOnChange,\n logWarningForInvalidCellValueType,\n} from \"../util/cellTypeHelpers\";\nimport { DataTableBodyImmutableCell } from \"../cells/DataTableBodyImmutableCell\";\nimport { useNumberField } from \"../../../../../../internal/hooks/useNumberField/useNumberField\";\nimport { useMergeRefs } from \"../../../../../../hooks/useMergeRefs\";\n\nexport type DataTableEditableNumberCellProps<T> = BaseEditableCellProps<T>;\n\nfunction DataTableEditableNumberCellInner<T>(\n props: DataTableEditableNumberCellProps<T>,\n ref: React.Ref<EditableCellImperativeHandle>,\n) {\n const { cell, cellProps, cellPosition, children } = props;\n const { onKeyDown: onCellKeyDown } = cellProps;\n const cellRef = useRef<HTMLTableCellElement>(null);\n const localInputRef = useRef<HTMLInputElement>(null);\n const rowId = cell.row.id;\n const [isEditing, setIsEditing] = useState(false);\n\n const columnId = getColumnId(cell);\n const cellValue = getCellValue(cell, columnId);\n\n const [initialValue, isValidValueType] = useMemo(() => {\n let value: number | null;\n let isValid = true;\n\n if (cellValue === undefined || cellValue === null) {\n value = null;\n isValid = true;\n return [value, isValid];\n }\n\n if (typeof cellValue === \"number\") {\n value = cellValue;\n } else {\n value = null;\n isValid = false;\n }\n\n if (!isValid) {\n logWarningForInvalidCellValueType({\n columnId: String(columnId),\n editMode: \"number\",\n expectedType: \"number\",\n receivedType: Array.isArray(cellValue) ? \"array\" : typeof cellValue,\n });\n }\n return [value, isValid];\n }, [cellValue, columnId]);\n\n const editConfig = cell.column.columnDef.meta?.editConfig;\n const numberEditOptions = useMemo(() => {\n if (editConfig && editConfig.mode === \"number\") {\n const { mode: _, onChange: __, ...options } = editConfig;\n return options;\n }\n return {};\n }, [editConfig]);\n\n const [draftValue, setDraftValue] = useState<number | null>(initialValue);\n\n const { inputRef: numberFieldInputRef, inputProps } = useNumberField({\n value: draftValue,\n onChange: setDraftValue,\n ...numberEditOptions,\n });\n\n const combinedInputRef = useMergeRefs([localInputRef, numberFieldInputRef]);\n\n const [tabIndex, setTabIndex] = useState(-1);\n const { moveFocusToCell } = useDTFocusDispatchContext();\n\n const instructionsId = useId();\n const headerLabel =\n cell.column.columnDef.meta?.columnDef?.headerLabel ?? String(columnId);\n const inputAriaLabel = `${headerLabel}, row ${cellPosition.rowIndex + 1}`;\n\n // Enter/F2/Escape focus the cell first; blur must not commit after those keys.\n const skipCommitOnBlur = useRef(false);\n\n const onChange = getCellOnChange(cell, columnId);\n\n const commitValue = useCallback(() => {\n if (draftValue !== initialValue) {\n onChange?.(draftValue as T[typeof columnId], rowId);\n }\n setIsEditing(false);\n }, [rowId, draftValue, onChange, initialValue]);\n\n const resetValue = useCallback(() => {\n setDraftValue(initialValue);\n skipCommitOnBlur.current = true;\n cellRef.current?.focus();\n setIsEditing(false);\n }, [initialValue]);\n\n const beginEditing = useCallback(() => {\n setDraftValue(initialValue);\n setIsEditing(true);\n }, [initialValue]);\n\n useImperativeHandle(ref, () => ({\n invoke: beginEditing,\n focus: () => {\n cellRef.current?.focus();\n setTabIndex(0);\n },\n }));\n\n const handleInputKeyDown = useCallback(\n (event: React.KeyboardEvent<HTMLInputElement>) => {\n if (event.key === \"Enter\" || event.key === \"F2\") {\n event.preventDefault();\n skipCommitOnBlur.current = true;\n cellRef.current?.focus();\n commitValue();\n return;\n } else if (event.key === \"Escape\") {\n event.preventDefault();\n resetValue();\n return;\n }\n },\n [commitValue, resetValue],\n );\n\n const handleInputBlur = useCallback(() => {\n if (skipCommitOnBlur.current) {\n skipCommitOnBlur.current = false;\n return;\n }\n commitValue();\n }, [commitValue]);\n\n const classes = cx(\n styles[\"data-table-body-cell-editable\"],\n cellProps.className,\n {\n [dataTableCellStyles[\"data-table-body-cell-editing\"]]: isEditing,\n },\n );\n\n const handleCellKeyDown = useCallback(\n (event: React.KeyboardEvent<HTMLTableCellElement>) => {\n if (isEditing) {\n return;\n }\n onCellKeyDown?.(event);\n },\n [onCellKeyDown, isEditing],\n );\n\n const handleCellFocus = useCallback(\n (event: React.FocusEvent<HTMLTableCellElement>) => {\n if (event.target !== cellRef.current) {\n return;\n }\n event.preventDefault();\n setTabIndex(0);\n },\n [setTabIndex],\n );\n\n const handleCellBlur = useCallback(\n (e: React.FocusEvent<HTMLElement>) => {\n if (cellRef.current?.contains(e.relatedTarget as Node)) {\n return;\n }\n setTabIndex(-1);\n },\n [setTabIndex, cellRef],\n );\n\n const handleCellMouseDown = useCallback(\n (e: React.MouseEvent<HTMLTableCellElement>) => {\n e.preventDefault();\n e.stopPropagation();\n beginEditing();\n moveFocusToCell(cellPosition);\n },\n [beginEditing, cellPosition, moveFocusToCell],\n );\n\n useEffect(() => {\n if (isEditing) {\n localInputRef.current?.focus();\n }\n }, [isEditing]);\n\n if (!isValidValueType) {\n const { cellProps: _cellProps, ...immutableCellProps } = props;\n return <DataTableBodyImmutableCell {...immutableCellProps} />;\n }\n\n return (\n <TableBodyCell\n ref={cellRef}\n type=\"data-table\"\n className={classes}\n style={cellProps.style}\n onMouseDown={handleCellMouseDown}\n onKeyDown={handleCellKeyDown}\n tabIndex={tabIndex}\n onFocus={handleCellFocus}\n onBlur={handleCellBlur}\n data-cell-pos={formatCellPositionString(cellPosition)}\n data-anv-editable-cell=\"true\"\n >\n {isEditing ? (\n <>\n <input\n ref={combinedInputRef}\n {...inputProps}\n name={`${cell.column.id}-row-${cellPosition.rowIndex}`}\n aria-label={inputAriaLabel}\n aria-describedby={instructionsId}\n className={styles[\"data-table-body-cell-input\"]}\n onBlur={handleInputBlur}\n onKeyDown={handleInputKeyDown}\n {...{ [ANV_PART_ATTR]: PARTS.editableInput }}\n />\n </>\n ) : (\n <>\n {children}\n {!isEditing && <DataTableEditableCellEditIcon />}\n </>\n )}\n <SrOnly id={instructionsId}>\n {isEditing\n ? \"Press Enter or F2 to save cell value.\"\n : \"Press Enter or F2 to edit cell value. Press Escape to cancel.\"}\n </SrOnly>\n </TableBodyCell>\n );\n}\n\n/**\n * Inline number editor. Enter/F2 and blur commit; Escape restores the committed\n * value. Opening reseeds the draft from the cell.\n */\nexport const DataTableEditableNumberCell = Object.assign(\n forwardRef(DataTableEditableNumberCellInner) as <T>(\n props: DataTableEditableNumberCellProps<T> & {\n ref?: React.Ref<EditableCellImperativeHandle>;\n },\n ) => React.ReactElement,\n { displayName: \"DataTableEditableNumberCell\" },\n);\n","import { useCallback, useRef, useState, useImperativeHandle } from \"react\";\nimport type { CellPosition } from \"../../../internal/types\";\nimport type {\n EditableCellImperativeHandle,\n EditableCellCellProps,\n} from \"./types\";\nimport { useDTFocusDispatchContext } from \"../context/focus/useDTFocusDispatchContext\";\n\ntype UseEditableMenuCellOptions = {\n cellPosition: CellPosition;\n onCellKeyDown: EditableCellCellProps[\"onKeyDown\"];\n ref: React.Ref<EditableCellImperativeHandle>;\n};\n\n/**\n * Shared open/close and focus wiring for menu-based editable cells. While the\n * menu is closed, keys stay on the grid; while open they go to the menu.\n */\nexport function useEditableMenuCell({\n cellPosition,\n onCellKeyDown,\n ref,\n}: UseEditableMenuCellOptions) {\n const [tabIndex, setTabIndex] = useState(-1);\n const { moveFocusToCell } = useDTFocusDispatchContext();\n const cellRef = useRef<HTMLTableCellElement>(null);\n const triggerClickRef = useRef<(() => void) | null>(null);\n\n useImperativeHandle(ref, () => ({\n invoke: () => {\n triggerClickRef.current?.();\n },\n focus: () => {\n cellRef.current?.focus();\n setTabIndex(0);\n },\n }));\n\n const handleCellKeyDown = useCallback(\n (\n event: React.KeyboardEvent<HTMLElement>,\n menuKeyDown:\n | ((event: React.KeyboardEvent<HTMLButtonElement>) => void)\n | undefined,\n isOpen: boolean,\n ) => {\n if (isOpen) {\n menuKeyDown?.(event as React.KeyboardEvent<HTMLButtonElement>);\n return;\n }\n onCellKeyDown?.(event as React.KeyboardEvent<HTMLDivElement>);\n },\n [onCellKeyDown],\n );\n\n // F2 closes the open menu through the trigger so focus returns to the cell.\n const handleMenuKeyDown = useCallback((e: React.KeyboardEvent) => {\n if (e.key === \"F2\") {\n e.preventDefault();\n triggerClickRef.current?.();\n }\n }, []);\n\n // Cell blur skipped the tabindex reset while the menu held focus, so implicit\n // close must do it.\n const handleImplicitClose = useCallback(() => {\n setTabIndex(-1);\n }, []);\n\n const handleCellMouseDown = useCallback(\n (triggerOnClick: () => void) => () => {\n moveFocusToCell(cellPosition);\n triggerOnClick();\n },\n [cellPosition, moveFocusToCell],\n );\n\n const handleCellBlur = useCallback((e: React.FocusEvent<HTMLElement>) => {\n const popoverId = (e.currentTarget as HTMLElement).getAttribute(\n \"aria-controls\",\n );\n const popoverEl = popoverId ? document.getElementById(popoverId) : null;\n if (popoverEl?.contains(e.relatedTarget as Node)) {\n return;\n }\n setTabIndex(-1);\n }, []);\n\n const handleCellFocus = useCallback(\n (event: React.FocusEvent<HTMLTableCellElement>) => {\n if (event.target !== cellRef.current) {\n return;\n }\n event.preventDefault();\n setTabIndex(0);\n },\n [],\n );\n\n return {\n tabIndex,\n cellRef,\n triggerClickRef,\n handleCellKeyDown,\n handleMenuKeyDown,\n handleImplicitClose,\n handleCellMouseDown,\n handleCellBlur,\n handleCellFocus,\n };\n}\n","import { forwardRef, type Ref, useMemo } from \"react\";\nimport cx from \"classnames\";\n\nimport { SelectMenuSync } from \"../../../../../../components/SelectMenu/SelectMenuSync\";\nimport type { SelectMenuOption } from \"../../../../../../components/SelectMenu/types\";\n\nimport { SrOnly } from \"../../../../../../components/SrOnly\";\n\nimport { dataTableCellAffordanceHostClassName } from \"../dataTableCellAffordanceHostClassName\";\nimport { DataTableEditableCellEditIcon } from \"./DataTableEditableCellEditIcon\";\nimport { TableBodyCell } from \"../../../base/cells/TableBodyCell\";\n\nimport styles from \"./DataTableEditableCells.module.scss\";\nimport type { EditableCellImperativeHandle } from \"./types\";\nimport { formatCellPositionString } from \"../util/cellPositionHelpers\";\nimport { mergeRefs } from \"../../../../../../hooks/useMergeRefs/useMergeRefs\";\nimport type { BaseEditableCellProps } from \"./types\";\nimport { getColumnId, getCellValue } from \"../util/cellTypeHelpers\";\nimport { DataTableBodyImmutableCell } from \"../cells/DataTableBodyImmutableCell\";\nimport { useEditableMenuCell } from \"./useEditableMenuCell\";\n\nexport type DataTableEditableSelectCellProps<T> = BaseEditableCellProps<T>;\n\nfunction DataTableEditableSelectCellInner<T>(\n props: DataTableEditableSelectCellProps<T>,\n ref: React.Ref<EditableCellImperativeHandle>,\n) {\n const { cell, cellProps, cellPosition, children } = props;\n const { onKeyDown: onCellKeyDown, className, ...restCellProps } = cellProps;\n\n const columnId = getColumnId(cell);\n const cellValue = getCellValue(cell, columnId);\n\n const meta = cell.column.columnDef.meta;\n const editConfig = meta?.editConfig;\n const selectEditConfig =\n editConfig?.mode === \"select\" ? editConfig : undefined;\n\n const options: SelectMenuOption[] = useMemo(\n () => selectEditConfig?.options ?? [],\n [selectEditConfig],\n );\n\n const onChange = selectEditConfig?.onChange;\n\n const {\n mode: _mode,\n options: _options,\n onChange: _onChange,\n ...selectMenuPassthroughProps\n } = selectEditConfig ?? {};\n\n const isValidValueType = useMemo(() => {\n if (Array.isArray(cellValue)) return false;\n return true;\n }, [cellValue]);\n\n const rowId = cell.row.id;\n\n const {\n tabIndex,\n cellRef,\n triggerClickRef,\n handleCellKeyDown,\n handleMenuKeyDown,\n handleImplicitClose,\n handleCellMouseDown,\n handleCellBlur,\n handleCellFocus,\n } = useEditableMenuCell({ cellPosition, onCellKeyDown, ref });\n\n const selectedOption = useMemo(() => {\n if (cellValue === undefined || cellValue === null) return null;\n return options.find((o) => String(o.id) === String(cellValue)) ?? null;\n }, [options, cellValue]);\n\n const hasEditableConfig = !!selectEditConfig;\n\n if (!isValidValueType || !hasEditableConfig) {\n const { cellProps: _cellProps, ...immutableCellProps } = props;\n return <DataTableBodyImmutableCell {...immutableCellProps} />;\n }\n\n return (\n <SelectMenuSync\n trigger={({\n ref: triggerRef,\n onClick,\n onKeyDown: menuKeyDown,\n \"aria-controls\": ariaControls,\n \"aria-expanded\": ariaExpanded,\n \"aria-haspopup\": ariaHaspopup,\n \"data-state\": dataState,\n }) => {\n triggerClickRef.current = onClick;\n const isOpen = ariaExpanded;\n return (\n <TableBodyCell\n ref={mergeRefs([\n triggerRef as Ref<HTMLElement>,\n cellRef as Ref<HTMLElement>,\n ])}\n tabIndex={tabIndex}\n type=\"data-table\"\n {...restCellProps}\n className={cx(\n dataTableCellAffordanceHostClassName,\n styles[\"data-table-body-cell-editable\"],\n className,\n )}\n onMouseDown={handleCellMouseDown(onClick)}\n onBlur={handleCellBlur}\n onFocus={handleCellFocus}\n data-cell-pos={formatCellPositionString(cellPosition)}\n data-anv-editable-cell=\"true\"\n aria-controls={ariaControls}\n aria-expanded={ariaExpanded}\n aria-haspopup={ariaHaspopup}\n data-state={dataState}\n onKeyDown={(e) => handleCellKeyDown(e, menuKeyDown, isOpen)}\n >\n {children}\n {!isOpen && <DataTableEditableCellEditIcon />}\n <SrOnly>\n {isOpen\n ? \"Press Enter or Space to select a cell value. Press Escape or F2 to cancel.\"\n : \"Press Enter or F2 to edit cell value.\"}\n </SrOnly>\n </TableBodyCell>\n );\n }}\n label={String(\n cell.column.columnDef.meta?.columnDef?.headerLabel ?? \"Select\",\n )}\n options={options}\n value={selectedOption}\n onSelectedOptionChange={(option) => {\n onChange?.(option, rowId);\n }}\n onMenuKeyDown={handleMenuKeyDown}\n onImplicitClose={handleImplicitClose}\n {...selectMenuPassthroughProps}\n />\n );\n}\n\n/**\n * Sync single-select menu editor. Arrays or missing `editConfig` fall back to a\n * read-only body cell.\n */\nexport const DataTableEditableSelectCell = Object.assign(\n forwardRef(DataTableEditableSelectCellInner) as <T>(\n props: DataTableEditableSelectCellProps<T> & {\n ref?: React.Ref<EditableCellImperativeHandle>;\n },\n ) => React.ReactElement,\n { displayName: \"DataTableEditableSelectCell\" },\n);\n","import { forwardRef, type Ref, useCallback, useMemo } from \"react\";\nimport cx from \"classnames\";\n\nimport { SelectMenu } from \"../../../../../../components/SelectMenu/SelectMenu\";\nimport type { SelectMenuOption } from \"../../../../../../components/SelectMenu/types\";\nimport type {\n SelectAsyncCellEagerLoader,\n SelectAsyncCellPageLoader,\n SelectAsyncCellOffsetLoader,\n SelectAsyncCellGroupLoader,\n} from \"../../../types\";\n\nimport { SrOnly } from \"../../../../../../components/SrOnly\";\n\nimport { DataTableEditableCellEditIcon } from \"./DataTableEditableCellEditIcon\";\nimport { TableBodyCell } from \"../../../base/cells/TableBodyCell\";\n\nimport styles from \"./DataTableEditableCells.module.scss\";\nimport type { EditableCellImperativeHandle } from \"./types\";\nimport { formatCellPositionString } from \"../util/cellPositionHelpers\";\nimport { mergeRefs } from \"../../../../../../hooks/useMergeRefs/useMergeRefs\";\nimport type { BaseEditableCellProps } from \"./types\";\nimport { getColumnId, getCellValue } from \"../util/cellTypeHelpers\";\nimport { DataTableBodyImmutableCell } from \"../cells/DataTableBodyImmutableCell\";\nimport { useEditableMenuCell } from \"./useEditableMenuCell\";\n\nexport type DataTableEditableSelectAsyncCellProps<T> = BaseEditableCellProps<T>;\n\nfunction DataTableEditableSelectAsyncCellInner<T>(\n props: DataTableEditableSelectAsyncCellProps<T>,\n ref: React.Ref<EditableCellImperativeHandle>,\n) {\n const { cell, cellProps, cellPosition, children } = props;\n const { onKeyDown: onCellKeyDown, className, ...restCellProps } = cellProps;\n\n const columnId = getColumnId(cell);\n const cellValue = getCellValue(cell, columnId);\n\n const editConfig = cell.column.columnDef.meta?.editConfig;\n const asyncEditConfig =\n editConfig?.mode === \"select-async\" ? editConfig : undefined;\n\n const isValidValueType = useMemo(() => {\n if (Array.isArray(cellValue)) return false;\n return true;\n }, [cellValue]);\n\n const rowId = cell.row.id;\n const row = cell.row.original as T;\n\n const context = useMemo(() => ({ row, rowId }), [row, rowId]);\n\n const {\n mode: _mode,\n lazy,\n lazyOptions,\n loadOptions: cellLoader,\n onChange,\n cache: cacheProp,\n ...passthroughProps\n } = asyncEditConfig ?? {};\n\n // Bind `{ row, rowId }` as `context` so SelectMenu's loader stays row-free.\n const loadOptions = useCallback(\n (searchValue: string, ...rest: unknown[]) => {\n if (!cellLoader) return [];\n if (lazy === \"page\") {\n const [pageNumber, pageSize] = rest as [number, number];\n return (cellLoader as SelectAsyncCellPageLoader<T>)(\n searchValue,\n pageNumber,\n pageSize,\n context,\n );\n }\n if (lazy === \"offset\") {\n const [offset, limit] = rest as [number, number];\n return (cellLoader as SelectAsyncCellOffsetLoader<T>)(\n searchValue,\n offset,\n limit,\n context,\n );\n }\n if (lazy === \"group\") {\n const [previousGroupKey] = rest as [string | number | null];\n return (cellLoader as SelectAsyncCellGroupLoader<T>)(\n searchValue,\n previousGroupKey,\n context,\n );\n }\n return (cellLoader as SelectAsyncCellEagerLoader<T>)(\n searchValue,\n context,\n );\n },\n [cellLoader, context, lazy],\n );\n\n const cache = cacheProp ?? { enabled: false };\n\n const {\n tabIndex,\n cellRef,\n triggerClickRef,\n handleCellKeyDown,\n handleMenuKeyDown,\n handleImplicitClose,\n handleCellMouseDown,\n handleCellBlur,\n handleCellFocus,\n } = useEditableMenuCell({ cellPosition, onCellKeyDown, ref });\n\n // No loaded options to match; synthesize a display option from the stored id.\n const selectedOption = useMemo(() => {\n if (cellValue === undefined || cellValue === null) return null;\n if (typeof cellValue === \"object\") return null;\n return { id: cellValue as string | number, label: String(cellValue) };\n }, [cellValue]);\n\n if (!isValidValueType || !asyncEditConfig) {\n const { cellProps: _cellProps, ...immutableCellProps } = props;\n return <DataTableBodyImmutableCell {...immutableCellProps} />;\n }\n\n return (\n <SelectMenu\n // After destructure, `lazy`/`loadOptions` are no longer one union branch.\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n lazy={lazy as any}\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n loadOptions={loadOptions as any}\n lazyOptions={lazyOptions}\n cache={cache}\n {...passthroughProps}\n trigger={({\n ref: triggerRef,\n onClick,\n onKeyDown: menuKeyDown,\n \"aria-controls\": ariaControls,\n \"aria-expanded\": ariaExpanded,\n \"aria-haspopup\": ariaHaspopup,\n \"data-state\": dataState,\n }) => {\n triggerClickRef.current = onClick;\n const isOpen = ariaExpanded;\n return (\n <TableBodyCell\n ref={mergeRefs([\n triggerRef as Ref<HTMLElement>,\n cellRef as Ref<HTMLElement>,\n ])}\n tabIndex={tabIndex}\n type=\"data-table\"\n {...restCellProps}\n className={cx(styles[\"data-table-body-cell-editable\"], className)}\n onMouseDown={handleCellMouseDown(onClick)}\n onBlur={handleCellBlur}\n onFocus={handleCellFocus}\n data-cell-pos={formatCellPositionString(cellPosition)}\n data-anv-editable-cell=\"true\"\n aria-controls={ariaControls}\n aria-expanded={ariaExpanded}\n aria-haspopup={ariaHaspopup}\n data-state={dataState}\n onKeyDown={(e) => handleCellKeyDown(e, menuKeyDown, isOpen)}\n >\n {children}\n {!isOpen && <DataTableEditableCellEditIcon />}\n <SrOnly>\n {isOpen\n ? \"Press Enter or Space to select a cell value. Press Escape or F2 to cancel.\"\n : \"Press Enter or F2 to edit cell value.\"}\n </SrOnly>\n </TableBodyCell>\n );\n }}\n label={String(\n cell.column.columnDef.meta?.columnDef?.headerLabel ?? \"Select\",\n )}\n value={selectedOption as SelectMenuOption | null}\n onSelectedOptionChange={(option) => {\n onChange?.(option, rowId);\n }}\n onMenuKeyDown={handleMenuKeyDown}\n onImplicitClose={handleImplicitClose}\n />\n );\n}\n\n/**\n * Async single-select menu editor. `loadOptions` receives `{ row, rowId }` as\n * `context`. Cache defaults to disabled so rows do not share option results.\n * Arrays or missing `editConfig` fall back to a read-only body cell.\n */\nexport const DataTableEditableSelectAsyncCell = Object.assign(\n forwardRef(DataTableEditableSelectAsyncCellInner) as <T>(\n props: DataTableEditableSelectAsyncCellProps<T> & {\n ref?: React.Ref<EditableCellImperativeHandle>;\n },\n ) => React.ReactElement,\n { displayName: \"DataTableEditableSelectAsyncCell\" },\n);\n","import { forwardRef, type Ref, useMemo } from \"react\";\nimport cx from \"classnames\";\n\nimport { SrOnly } from \"../../../../../../components/SrOnly\";\n\nimport { MultiSelectMenuSync } from \"../../../../../../components/MultiSelectMenu/MultiSelectMenuSync\";\nimport type { MultiSelectMenuOption } from \"../../../../../../components/MultiSelectMenu/types\";\n\nimport { DataTableEditableCellEditIcon } from \"./DataTableEditableCellEditIcon\";\nimport { TableBodyCell } from \"../../../base/cells/TableBodyCell\";\n\nimport styles from \"./DataTableEditableCells.module.scss\";\nimport type { EditableCellImperativeHandle } from \"./types\";\nimport { formatCellPositionString } from \"../util/cellPositionHelpers\";\nimport { mergeRefs } from \"../../../../../../hooks/useMergeRefs/useMergeRefs\";\nimport type { BaseEditableCellProps } from \"./types\";\nimport {\n getColumnId,\n getCellValue,\n logWarningForInvalidCellValueType,\n} from \"../util/cellTypeHelpers\";\nimport { DataTableBodyImmutableCell } from \"../cells/DataTableBodyImmutableCell\";\nimport { useEditableMenuCell } from \"./useEditableMenuCell\";\n\nexport type DataTableEditableMultiselectCellProps<T> = BaseEditableCellProps<T>;\n\nexport function DataTableEditableMultiselectCellInner<T>(\n props: DataTableEditableMultiselectCellProps<T>,\n ref: React.Ref<EditableCellImperativeHandle>,\n) {\n const { cell, cellProps, cellPosition, children } = props;\n const { onKeyDown: onCellKeyDown, className, ...restCellProps } = cellProps;\n\n const columnId = getColumnId(cell);\n const cellValue = getCellValue(cell, columnId);\n\n const isValidValueType = useMemo(() => {\n if (cellValue === null || cellValue === undefined) return true;\n if (Array.isArray(cellValue)) return true;\n logWarningForInvalidCellValueType({\n columnId: String(columnId),\n editMode: \"multiselect\",\n expectedType: \"array of primitive values\",\n receivedType: typeof cellValue,\n });\n return false;\n }, [cellValue, columnId]);\n\n const meta = cell.column.columnDef.meta;\n const editConfig = meta?.editConfig;\n const multiselectEditConfig =\n editConfig?.mode === \"multiselect\" ? editConfig : undefined;\n\n const options: MultiSelectMenuOption[] = useMemo(\n () => multiselectEditConfig?.options ?? [],\n [multiselectEditConfig],\n );\n\n const onChange = multiselectEditConfig?.onChange;\n\n const {\n mode: _mode,\n options: _options,\n onChange: _onChange,\n ...multiSelectMenuPassthroughProps\n } = multiselectEditConfig ?? {};\n\n const rowId = cell.row.id;\n\n const {\n tabIndex,\n cellRef,\n triggerClickRef,\n handleCellKeyDown,\n handleMenuKeyDown,\n handleImplicitClose,\n handleCellMouseDown,\n handleCellBlur,\n handleCellFocus,\n } = useEditableMenuCell({ cellPosition, onCellKeyDown, ref });\n\n const selectedOptions = useMemo(() => {\n if (!Array.isArray(cellValue)) return [];\n const valueStrings = cellValue.map((v) => String(v));\n return options.filter((o) => valueStrings.includes(String(o.id)));\n }, [options, cellValue]);\n\n const hasEditableConfig = !!multiselectEditConfig;\n\n if (!isValidValueType || !hasEditableConfig) {\n const { cellProps: _cellProps, ...immutableCellProps } = props;\n return <DataTableBodyImmutableCell {...immutableCellProps} />;\n }\n\n return (\n <MultiSelectMenuSync\n trigger={({\n ref: triggerRef,\n onClick,\n onKeyDown: menuKeyDown,\n \"aria-controls\": ariaControls,\n \"aria-expanded\": ariaExpanded,\n \"aria-haspopup\": ariaHaspopup,\n \"data-state\": dataState,\n }) => {\n triggerClickRef.current = onClick;\n const isOpen = ariaExpanded;\n return (\n <TableBodyCell\n ref={mergeRefs([\n triggerRef as Ref<HTMLElement>,\n cellRef as Ref<HTMLElement>,\n ])}\n tabIndex={tabIndex}\n type=\"data-table\"\n {...restCellProps}\n className={cx(styles[\"data-table-body-cell-editable\"], className)}\n onMouseDown={handleCellMouseDown(onClick)}\n onBlur={handleCellBlur}\n onFocus={handleCellFocus}\n data-cell-pos={formatCellPositionString(cellPosition)}\n data-anv-editable-cell=\"true\"\n aria-controls={ariaControls}\n aria-expanded={ariaExpanded}\n aria-haspopup={ariaHaspopup}\n data-state={dataState}\n onKeyDown={(e) => handleCellKeyDown(e, menuKeyDown, isOpen)}\n >\n {children}\n {!isOpen && <DataTableEditableCellEditIcon />}\n <SrOnly>\n {isOpen\n ? \"Press Enter or Space to select cell values. Press Escape or F2 to close.\"\n : \"Press Enter or F2 to edit cell value.\"}\n </SrOnly>\n </TableBodyCell>\n );\n }}\n label={String(\n cell.column.columnDef.meta?.columnDef?.headerLabel ?? \"Select\",\n )}\n options={options}\n value={selectedOptions}\n onSelectedOptionsChange={(selected) => {\n onChange?.(selected, rowId);\n }}\n onMenuKeyDown={handleMenuKeyDown}\n onImplicitClose={handleImplicitClose}\n {...multiSelectMenuPassthroughProps}\n />\n );\n}\n\n/**\n * Sync multi-select menu editor. Cell value is an id array. Non-array values\n * (except nullish) or missing `editConfig` fall back to a read-only body cell.\n */\nexport const DataTableEditableMultiselectCell = Object.assign(\n forwardRef(DataTableEditableMultiselectCellInner) as <T>(\n props: DataTableEditableMultiselectCellProps<T> & {\n ref?: React.Ref<EditableCellImperativeHandle>;\n },\n ) => React.ReactElement,\n { displayName: \"DataTableEditableMultiselectCell\" },\n);\n","import { forwardRef, type Ref, useCallback, useMemo } from \"react\";\nimport cx from \"classnames\";\n\nimport { SrOnly } from \"../../../../../../components/SrOnly\";\n\nimport { MultiSelectMenu } from \"../../../../../../components/MultiSelectMenu/MultiSelectMenu\";\nimport type { MultiSelectMenuOption } from \"../../../../../../components/MultiSelectMenu/types\";\nimport type {\n MultiselectAsyncCellEagerLoader,\n MultiselectAsyncCellPageLoader,\n MultiselectAsyncCellOffsetLoader,\n MultiselectAsyncCellGroupLoader,\n} from \"../../../types\";\n\nimport { DataTableEditableCellEditIcon } from \"./DataTableEditableCellEditIcon\";\nimport { TableBodyCell } from \"../../../base/cells/TableBodyCell\";\n\nimport styles from \"./DataTableEditableCells.module.scss\";\nimport type { EditableCellImperativeHandle } from \"./types\";\nimport { formatCellPositionString } from \"../util/cellPositionHelpers\";\nimport { mergeRefs } from \"../../../../../../hooks/useMergeRefs/useMergeRefs\";\nimport type { BaseEditableCellProps } from \"./types\";\nimport { getColumnId, getCellValue } from \"../util/cellTypeHelpers\";\nimport { DataTableBodyImmutableCell } from \"../cells/DataTableBodyImmutableCell\";\nimport { useEditableMenuCell } from \"./useEditableMenuCell\";\n\nexport type DataTableEditableMultiselectAsyncCellProps<T> =\n BaseEditableCellProps<T>;\n\nexport function DataTableEditableMultiselectAsyncCellInner<T>(\n props: DataTableEditableMultiselectAsyncCellProps<T>,\n ref: React.Ref<EditableCellImperativeHandle>,\n) {\n const { cell, cellProps, cellPosition, children } = props;\n const { onKeyDown: onCellKeyDown, className, ...restCellProps } = cellProps;\n\n const columnId = getColumnId(cell);\n const cellValue = getCellValue(cell, columnId);\n\n const editConfig = cell.column.columnDef.meta?.editConfig;\n const asyncEditConfig =\n editConfig?.mode === \"multiselect-async\" ? editConfig : undefined;\n\n const isValidValueType = useMemo(() => {\n if (cellValue === null || cellValue === undefined) return true;\n if (Array.isArray(cellValue)) return true;\n return false;\n }, [cellValue]);\n\n const rowId = cell.row.id;\n const row = cell.row.original as T;\n\n const context = useMemo(() => ({ row, rowId }), [row, rowId]);\n\n const {\n mode: _mode,\n lazy,\n lazyOptions,\n loadOptions: cellLoader,\n onChange,\n cache: cacheProp,\n ...passthroughProps\n } = asyncEditConfig ?? {};\n\n // Bind `{ row, rowId }` as `context` so MultiSelectMenu's loader stays row-free.\n const loadOptions = useCallback(\n (searchValue: string, ...rest: unknown[]) => {\n if (!cellLoader) return [];\n if (lazy === \"page\") {\n const [pageNumber, pageSize] = rest as [number, number];\n return (cellLoader as MultiselectAsyncCellPageLoader<T>)(\n searchValue,\n pageNumber,\n pageSize,\n context,\n );\n }\n if (lazy === \"offset\") {\n const [offset, limit] = rest as [number, number];\n return (cellLoader as MultiselectAsyncCellOffsetLoader<T>)(\n searchValue,\n offset,\n limit,\n context,\n );\n }\n if (lazy === \"group\") {\n const [previousGroupKey] = rest as [string | number | null];\n return (cellLoader as MultiselectAsyncCellGroupLoader<T>)(\n searchValue,\n previousGroupKey,\n context,\n );\n }\n return (cellLoader as MultiselectAsyncCellEagerLoader<T>)(\n searchValue,\n context,\n );\n },\n [cellLoader, context, lazy],\n );\n\n const cache = cacheProp ?? { enabled: false };\n\n const {\n tabIndex,\n cellRef,\n triggerClickRef,\n handleCellKeyDown,\n handleMenuKeyDown,\n handleImplicitClose,\n handleCellMouseDown,\n handleCellBlur,\n handleCellFocus,\n } = useEditableMenuCell({ cellPosition, onCellKeyDown, ref });\n\n const selectedOptions = useMemo(() => {\n if (!Array.isArray(cellValue)) return [];\n return cellValue as MultiSelectMenuOption[];\n }, [cellValue]);\n\n if (!isValidValueType || !asyncEditConfig) {\n const { cellProps: _cellProps, ...immutableCellProps } = props;\n return <DataTableBodyImmutableCell {...immutableCellProps} />;\n }\n\n return (\n <MultiSelectMenu\n // After destructure, `lazy`/`loadOptions` are no longer one union branch.\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n lazy={lazy as any}\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n loadOptions={loadOptions as any}\n lazyOptions={lazyOptions}\n cache={cache}\n {...passthroughProps}\n trigger={({\n ref: triggerRef,\n onClick,\n onKeyDown: menuKeyDown,\n \"aria-controls\": ariaControls,\n \"aria-expanded\": ariaExpanded,\n \"aria-haspopup\": ariaHaspopup,\n \"data-state\": dataState,\n }) => {\n triggerClickRef.current = onClick;\n const isOpen = ariaExpanded;\n return (\n <TableBodyCell\n ref={mergeRefs([\n triggerRef as Ref<HTMLElement>,\n cellRef as Ref<HTMLElement>,\n ])}\n tabIndex={tabIndex}\n type=\"data-table\"\n {...restCellProps}\n className={cx(styles[\"data-table-body-cell-editable\"], className)}\n onMouseDown={handleCellMouseDown(onClick)}\n onBlur={handleCellBlur}\n onFocus={handleCellFocus}\n data-cell-pos={formatCellPositionString(cellPosition)}\n data-anv-editable-cell=\"true\"\n aria-controls={ariaControls}\n aria-expanded={ariaExpanded}\n aria-haspopup={ariaHaspopup}\n data-state={dataState}\n onKeyDown={(e) => handleCellKeyDown(e, menuKeyDown, isOpen)}\n >\n {children}\n {!isOpen && <DataTableEditableCellEditIcon />}\n <SrOnly>\n {isOpen\n ? \"Press Enter or Space to select cell values. Press Escape or F2 to close.\"\n : \"Press Enter or F2 to edit cell value.\"}\n </SrOnly>\n </TableBodyCell>\n );\n }}\n label={String(\n cell.column.columnDef.meta?.columnDef?.headerLabel ?? \"Select\",\n )}\n value={selectedOptions}\n onSelectedOptionsChange={(selected) => {\n onChange?.(selected, rowId);\n }}\n onMenuKeyDown={handleMenuKeyDown}\n onImplicitClose={handleImplicitClose}\n />\n );\n}\n\n/**\n * Async multi-select menu editor. Cell value is `MultiSelectMenuOption[]`, not\n * ids. `loadOptions` receives `{ row, rowId }` as `context`; cache defaults to\n * disabled. Missing `editConfig` or a non-array, non-nullish value falls back\n * to a read-only body cell.\n */\nexport const DataTableEditableMultiselectAsyncCell = Object.assign(\n forwardRef(DataTableEditableMultiselectAsyncCellInner) as <T>(\n props: DataTableEditableMultiselectAsyncCellProps<T> & {\n ref?: React.Ref<EditableCellImperativeHandle>;\n },\n ) => React.ReactElement,\n { displayName: \"DataTableEditableMultiselectAsyncCell\" },\n);\n","import { forwardRef, type Ref, useMemo } from \"react\";\nimport cx from \"classnames\";\n\nimport { SelectMenuSync } from \"../../../../../../components/SelectMenu/SelectMenuSync\";\nimport type { SelectMenuOption } from \"../../../../../../components/SelectMenu/types\";\n\nimport { SrOnly } from \"../../../../../../components/SrOnly\";\n\nimport { DataTableEditableCellEditIcon } from \"./DataTableEditableCellEditIcon\";\nimport { TableBodyCell } from \"../../../base/cells/TableBodyCell\";\n\nimport styles from \"./DataTableEditableCells.module.scss\";\nimport type { EditableCellImperativeHandle } from \"./types\";\nimport { formatCellPositionString } from \"../util/cellPositionHelpers\";\nimport { mergeRefs } from \"../../../../../../hooks/useMergeRefs/useMergeRefs\";\nimport type { BaseEditableCellProps } from \"./types\";\nimport {\n getColumnId,\n getCellValue,\n logWarningForInvalidCellValueType,\n} from \"../util/cellTypeHelpers\";\nimport { DataTableBodyImmutableCell } from \"../cells/DataTableBodyImmutableCell\";\nimport type { BooleanFormatterOptions } from \"../../../formatters\";\nimport { useEditableMenuCell } from \"./useEditableMenuCell\";\n\nexport type DataTableEditableBooleanCellProps<T> = BaseEditableCellProps<T>;\n\nfunction DataTableEditableBooleanCellInner<T>(\n props: DataTableEditableBooleanCellProps<T>,\n ref: React.Ref<EditableCellImperativeHandle>,\n) {\n const { cell, cellProps, cellPosition, children } = props;\n const { onKeyDown: onCellKeyDown, className, ...restCellProps } = cellProps;\n\n const columnId = getColumnId(cell);\n const cellValue = getCellValue(cell, columnId);\n\n const meta = cell.column.columnDef.meta;\n const editConfig = meta?.editConfig;\n const booleanEditConfig =\n editConfig?.mode === \"boolean\" ? editConfig : undefined;\n\n const [, isValidValueType] = useMemo(() => {\n let value: boolean | null;\n let isValid = true;\n\n if (cellValue === undefined || cellValue === null) {\n value = null;\n isValid = true;\n return [value, isValid];\n }\n\n if (typeof cellValue === \"boolean\") {\n value = cellValue;\n } else {\n value = null;\n isValid = false;\n }\n\n if (!isValid) {\n logWarningForInvalidCellValueType({\n columnId: String(columnId),\n editMode: \"boolean\",\n expectedType: \"boolean\",\n receivedType: Array.isArray(cellValue) ? \"array\" : typeof cellValue,\n });\n }\n return [value, isValid];\n }, [cellValue, columnId]);\n\n const options: SelectMenuOption[] = useMemo(() => {\n const config =\n booleanEditConfig?.mode === \"boolean\"\n ? booleanEditConfig\n : {\n trueLabel: undefined,\n falseLabel: undefined,\n allowNull: false,\n nullLabel: undefined,\n };\n\n const typeConfig = cell.column.columnDef.meta?.columnDef?.type;\n const typeOptions: BooleanFormatterOptions | undefined =\n typeof typeConfig === \"object\" && typeConfig.type === \"boolean\"\n ? (typeConfig.options as BooleanFormatterOptions)\n : undefined;\n\n const items: SelectMenuOption[] = [\n {\n id: \"true\",\n label: config.trueLabel ?? typeOptions?.trueLabel ?? \"True\",\n },\n {\n id: \"false\",\n label: config.falseLabel ?? typeOptions?.falseLabel ?? \"False\",\n },\n ];\n if (config.allowNull) {\n items.push({ id: \"null\", label: config.nullLabel ?? \"Unset\" });\n }\n return items;\n }, [booleanEditConfig, cell.column.columnDef.meta?.columnDef?.type]);\n\n const rowId = cell.row.id;\n const onChange = booleanEditConfig?.onChange;\n const hasEditableConfig = !!booleanEditConfig;\n\n const {\n tabIndex,\n cellRef,\n triggerClickRef,\n handleCellKeyDown,\n handleMenuKeyDown,\n handleImplicitClose,\n handleCellMouseDown,\n handleCellBlur,\n handleCellFocus,\n } = useEditableMenuCell({ cellPosition, onCellKeyDown, ref });\n\n // `undefined` is unselected; `null` matches the Unset option id `\"null\"`.\n const selectedOption = useMemo(() => {\n if (cellValue === undefined) return null;\n return options.find((o) => o.id === String(cellValue)) ?? null;\n }, [options, cellValue]);\n\n if (!isValidValueType || !hasEditableConfig) {\n const { cellProps: _cellProps, ...immutableCellProps } = props;\n return <DataTableBodyImmutableCell {...immutableCellProps} />;\n }\n\n return (\n <SelectMenuSync\n trigger={({\n ref: triggerRef,\n onClick,\n onKeyDown: menuKeyDown,\n \"aria-controls\": ariaControls,\n \"aria-expanded\": ariaExpanded,\n \"aria-haspopup\": ariaHaspopup,\n \"data-state\": dataState,\n }) => {\n triggerClickRef.current = onClick;\n const isOpen = ariaExpanded;\n return (\n <TableBodyCell\n ref={mergeRefs([\n triggerRef as Ref<HTMLElement>,\n cellRef as Ref<HTMLElement>,\n ])}\n tabIndex={tabIndex}\n type=\"data-table\"\n {...restCellProps}\n className={cx(styles[\"data-table-body-cell-editable\"], className)}\n onMouseDown={handleCellMouseDown(onClick)}\n onBlur={handleCellBlur}\n onFocus={handleCellFocus}\n data-cell-pos={formatCellPositionString(cellPosition)}\n data-anv-editable-cell=\"true\"\n aria-controls={ariaControls}\n aria-expanded={ariaExpanded}\n aria-haspopup={ariaHaspopup}\n data-state={dataState}\n onKeyDown={(e) => handleCellKeyDown(e, menuKeyDown, isOpen)}\n >\n {children}\n {!isOpen && <DataTableEditableCellEditIcon />}\n <SrOnly>\n {isOpen\n ? \"Press Enter or Space to select a cell value. Press Escape or F2 to cancel.\"\n : \"Press Enter or F2 to edit cell value.\"}\n </SrOnly>\n </TableBodyCell>\n );\n }}\n label={String(\n cell.column.columnDef.meta?.columnDef?.headerLabel ?? \"Select\",\n )}\n options={options}\n value={selectedOption}\n onSelectedOptionChange={(option) => {\n if (!option) return;\n const id = String(option.id);\n const value = id === \"true\" ? true : id === \"false\" ? false : null;\n onChange?.(value as T[typeof columnId], rowId);\n }}\n disableSearch\n onMenuKeyDown={handleMenuKeyDown}\n onImplicitClose={handleImplicitClose}\n popoverWidth=\"reference\"\n />\n );\n}\n\n/**\n * Menu editor for boolean cells. Missing boolean `editConfig`, or a value that\n * is neither boolean nor nullish, falls back to a read-only body cell. Labels\n * prefer `editConfig`, then formatter options, then True/False; Unset only when\n * `allowNull`.\n */\nexport const DataTableEditableBooleanCell = Object.assign(\n forwardRef(DataTableEditableBooleanCellInner) as <T>(\n props: DataTableEditableBooleanCellProps<T> & {\n ref?: React.Ref<EditableCellImperativeHandle>;\n },\n ) => React.ReactElement,\n { displayName: \"DataTableEditableBooleanCell\" },\n);\n","import { createContext, type RefObject } from \"react\";\n\nexport type DataTableSurfaceRegistration = {\n id: string;\n /** Closes the surface, optionally suppressing focus restoration. */\n close: (options?: { restoreFocus?: boolean }) => void;\n};\n\nexport type DataTableSurfaceCoordinator = {\n /** Closes the previous surface without restoring focus, then registers this one. */\n requestOpen: (registration: DataTableSurfaceRegistration) => void;\n /** Clears the active registration only when its id matches. */\n clear: (id: string) => void;\n /** After place/drag/resize, keep overlapping this element's box; DataTable passes the table container. */\n intersectionBoundaryRef?: RefObject<HTMLElement | null>;\n};\n\nexport const DataTableSurfaceCoordinatorContext =\n createContext<DataTableSurfaceCoordinator | null>(null);\n","import { useContext } from \"react\";\n\nimport { DataTableSurfaceCoordinatorContext } from \"./DataTableSurfaceCoordinatorContext\";\n\n/** Returns the nearest surface coordinator, or `null` outside its provider. */\nexport function useDataTableSurfaceCoordinator() {\n return useContext(DataTableSurfaceCoordinatorContext);\n}\n","import { useCallback, useMemo, useRef, useState } from \"react\";\n\nimport type {\n CustomEditCloseReason,\n CustomEditConfig,\n CustomEditController,\n CustomEditDraftValue,\n CustomEditFieldValueUpdater,\n CustomEditInitialValue,\n CustomEditPresentObjectValue,\n CustomEditValidation,\n TableRow,\n} from \"../../../types\";\n\ntype CustomObjectValue = object;\n\ntype CustomEditHelperValue<T, K extends keyof T> = CustomEditDraftValue<T, K>;\n\ntype CustomEditHelperPresentValue<\n T,\n K extends keyof T,\n> = CustomEditPresentObjectValue<T, K>;\n\ntype CustomEditHelperInitialValue<\n T,\n K extends keyof T,\n> = CustomEditInitialValue<T, K>;\n\ntype CloseAction = \"submit\" | \"discard\";\n\nfunction isCustomDraftValueUpdater<TValue>(\n nextValue: TValue | ((previousValue: TValue) => TValue),\n): nextValue is (previousValue: TValue) => TValue {\n return typeof nextValue === \"function\";\n}\n\nfunction isCustomFieldValueUpdater<\n TValue extends CustomObjectValue,\n TField extends keyof TValue,\n>(\n nextValue: CustomEditFieldValueUpdater<TValue, TField>,\n): nextValue is (\n previousValue: TValue[TField] | undefined,\n draftValue: Partial<TValue>,\n) => TValue[TField] {\n return typeof nextValue === \"function\";\n}\n\nfunction isObjectDraftValue<TValue extends CustomObjectValue>(\n value: unknown,\n): value is Partial<TValue> {\n return value !== null && typeof value === \"object\" && !Array.isArray(value);\n}\n\nfunction getDraftObject<TValue extends CustomObjectValue>(\n draftValue: unknown,\n): Partial<TValue> {\n // Arrays and primitives contribute no fields to dirty/changed-field checks.\n return isObjectDraftValue<TValue>(draftValue) ? draftValue : {};\n}\n\nfunction deriveChangedFields<TValue extends CustomObjectValue>(\n initialValue: unknown,\n draftValue: unknown,\n): ReadonlyArray<keyof TValue> {\n const initialObject = getDraftObject<TValue>(initialValue);\n const draftObject = getDraftObject<TValue>(draftValue);\n const orderedKeys = Array.from(\n new Set([...Object.keys(initialObject), ...Object.keys(draftObject)]),\n ) as Array<keyof TValue>;\n\n return orderedKeys.filter(\n (field) => !Object.is(initialObject[field], draftObject[field]),\n );\n}\n\nfunction deriveIsDirty(\n initialValue: unknown,\n draftValue: unknown,\n changedFields: ReadonlyArray<PropertyKey>,\n): boolean {\n const initialValueIsNullish = initialValue == null;\n const draftValueIsNullish = draftValue == null;\n\n if (initialValueIsNullish || draftValueIsNullish) {\n // Both nullish: dirty only when `null` vs `undefined`. One-sided nullish is\n // always dirty.\n return initialValueIsNullish && draftValueIsNullish\n ? !Object.is(initialValue, draftValue)\n : true;\n }\n\n return changedFields.length > 0;\n}\n\nfunction deriveValidation<TValue extends CustomObjectValue, TDraftValue>(\n validateDraft:\n | ((\n draftValue: TDraftValue,\n rowId: string,\n ) => CustomEditValidation<TValue> | undefined)\n | undefined,\n draftValue: TDraftValue,\n rowId: string,\n): CustomEditValidation<TValue> {\n return validateDraft?.(draftValue, rowId) ?? {};\n}\n\nfunction hasValidationErrors<TValue extends CustomObjectValue>(\n validation: CustomEditValidation<TValue>,\n): boolean {\n const formError = validation.formError;\n const fieldErrors = Object.values(validation.fieldErrors ?? {});\n\n // `false` is an explicit all-clear, not an error.\n return (\n (formError != null && formError !== false) ||\n fieldErrors.some((fieldError) => fieldError != null && fieldError !== false)\n );\n}\n\nexport type CustomEditControllerState<\n TValue extends CustomObjectValue,\n TDraftValue = Partial<TValue>,\n TInitialValue = TValue,\n> = {\n /** Draft, dirty, validation, and close APIs for the custom renderer. */\n controller: CustomEditController<TValue, TDraftValue, TInitialValue>;\n /** Invokes the callback last registered with `setInitialFocus`. */\n runInitialFocus: () => void;\n};\n\nexport type UseCustomEditControllerStateOptions<T, K extends keyof T> = {\n /** Row whose column value seeds the draft. */\n row: TableRow<T>;\n /** Field on the row being edited. */\n columnId: K;\n /** Validate, commit, and request-close callbacks for this column. */\n editConfig: CustomEditConfig<T, K>;\n /** After a close that was not blocked by validation or `onRequestClose`. */\n onCloseEditor?: () => void;\n};\n\nexport type UseCustomEditHelperStateOptions<\n T,\n K extends keyof T,\n> = UseCustomEditControllerStateOptions<T, K>;\n\n/**\n * React custom-edit controller. Escape discards; other `requestClose` reasons\n * submit. `blockOnValidationError` blocks submit only; `onRequestClose`\n * returning `false` blocks submit and discard.\n */\nexport function useCustomEditControllerState<T, K extends keyof T>({\n row,\n columnId,\n editConfig,\n onCloseEditor,\n}: UseCustomEditControllerStateOptions<T, K>): CustomEditControllerState<\n CustomEditHelperPresentValue<T, K>,\n CustomEditHelperValue<T, K>,\n CustomEditHelperInitialValue<T, K>\n> {\n const rowId = String(row.id);\n const initialValueRef = useRef(\n row[columnId] as CustomEditHelperInitialValue<T, K>,\n );\n const initialValue = initialValueRef.current;\n const [draftValue, setDraftValueState] = useState<\n CustomEditHelperValue<T, K>\n >(initialValue as CustomEditHelperValue<T, K>);\n const draftValueRef = useRef(draftValue);\n const initialFocusRef = useRef<(() => void) | null>(null);\n\n const getValidation = useCallback(\n (nextDraftValue: CustomEditHelperValue<T, K>) =>\n deriveValidation<\n CustomEditHelperPresentValue<T, K>,\n CustomEditHelperValue<T, K>\n >(editConfig.validateDraft, nextDraftValue, rowId),\n [editConfig.validateDraft, rowId],\n );\n\n const setDraftValue = useCallback<\n CustomEditController<\n CustomEditHelperPresentValue<T, K>,\n CustomEditHelperValue<T, K>,\n CustomEditHelperInitialValue<T, K>\n >[\"setDraftValue\"]\n >(\n (nextValue) => {\n const previousValue = draftValueRef.current;\n const resolvedValue = isCustomDraftValueUpdater(nextValue)\n ? nextValue(previousValue)\n : nextValue;\n\n draftValueRef.current = resolvedValue;\n setDraftValueState(resolvedValue);\n editConfig.onDraftUpdate?.(resolvedValue, rowId);\n\n return resolvedValue;\n },\n [editConfig, rowId],\n );\n\n const setDraftField = useCallback<\n CustomEditController<\n CustomEditHelperPresentValue<T, K>,\n CustomEditHelperValue<T, K>,\n CustomEditHelperInitialValue<T, K>\n >[\"setDraftField\"]\n >(\n (field, nextValue) => {\n return setDraftValue((previousValue) => {\n const previousObject =\n getDraftObject<CustomEditHelperPresentValue<T, K>>(previousValue);\n\n return {\n ...previousObject,\n [field]: isCustomFieldValueUpdater(nextValue)\n ? nextValue(previousObject[field], previousObject)\n : nextValue,\n } as CustomEditHelperValue<T, K>;\n });\n },\n [setDraftValue],\n );\n\n const performClose = useCallback(\n (reason: CustomEditCloseReason, action: CloseAction) => {\n const currentDraftValue = draftValueRef.current;\n const changedFields = deriveChangedFields<\n CustomEditHelperPresentValue<T, K>\n >(initialValue, currentDraftValue);\n const validation = getValidation(currentDraftValue);\n const request = {\n reason,\n draftValue: currentDraftValue,\n initialValue,\n isDirty: deriveIsDirty(initialValue, currentDraftValue, changedFields),\n validation,\n };\n\n if (\n action === \"submit\" &&\n editConfig.blockOnValidationError === true &&\n hasValidationErrors(validation)\n ) {\n return false;\n }\n\n if (editConfig.onRequestClose?.(request) === false) {\n return false;\n }\n\n if (action === \"submit\") {\n editConfig.onCommit(currentDraftValue, rowId);\n } else {\n draftValueRef.current = initialValue as CustomEditHelperValue<T, K>;\n setDraftValueState(initialValue as CustomEditHelperValue<T, K>);\n editConfig.onDraftUpdate?.(\n initialValue as CustomEditHelperValue<T, K>,\n rowId,\n );\n }\n\n onCloseEditor?.();\n },\n [editConfig, getValidation, initialValue, onCloseEditor, rowId],\n );\n\n const requestClose = useCallback<\n CustomEditController<\n CustomEditHelperPresentValue<T, K>,\n CustomEditHelperValue<T, K>,\n CustomEditHelperInitialValue<T, K>\n >[\"requestClose\"]\n >(\n (reason) => {\n performClose(reason, reason === \"escape\" ? \"discard\" : \"submit\");\n },\n [performClose],\n );\n\n const submit = useCallback<\n CustomEditController<\n CustomEditHelperPresentValue<T, K>,\n CustomEditHelperValue<T, K>,\n CustomEditHelperInitialValue<T, K>\n >[\"submit\"]\n >(() => {\n performClose(\"programmatic\", \"submit\");\n }, [performClose]);\n\n const discard = useCallback<\n CustomEditController<\n CustomEditHelperPresentValue<T, K>,\n CustomEditHelperValue<T, K>,\n CustomEditHelperInitialValue<T, K>\n >[\"discard\"]\n >(() => {\n performClose(\"programmatic\", \"discard\");\n }, [performClose]);\n\n const setInitialFocus = useCallback<\n CustomEditController<\n CustomEditHelperPresentValue<T, K>,\n CustomEditHelperValue<T, K>,\n CustomEditHelperInitialValue<T, K>\n >[\"setInitialFocus\"]\n >((focus) => {\n initialFocusRef.current = focus;\n }, []);\n\n const handleSubmit = useCallback<\n CustomEditController<\n CustomEditHelperPresentValue<T, K>,\n CustomEditHelperValue<T, K>,\n CustomEditHelperInitialValue<T, K>\n >[\"handleSubmit\"]\n >(\n (event) => {\n event?.preventDefault?.();\n requestClose(\"submit\");\n },\n [requestClose],\n );\n\n const changedFields = useMemo(\n () =>\n deriveChangedFields<CustomEditHelperPresentValue<T, K>>(\n initialValue,\n draftValue,\n ),\n [draftValue, initialValue],\n );\n\n const isDirty = useMemo(\n () => deriveIsDirty(initialValue, draftValue, changedFields),\n [changedFields, draftValue, initialValue],\n );\n\n const validation = useMemo(\n () => getValidation(draftValue),\n [draftValue, getValidation],\n );\n\n const controller = useMemo<\n CustomEditController<\n CustomEditHelperPresentValue<T, K>,\n CustomEditHelperValue<T, K>,\n CustomEditHelperInitialValue<T, K>\n >\n >(\n () => ({\n draftValue,\n initialValue,\n isDirty,\n changedFields,\n validation,\n setDraftValue,\n setDraftField,\n submit,\n discard,\n requestClose,\n setInitialFocus,\n handleSubmit,\n }),\n [\n changedFields,\n discard,\n draftValue,\n handleSubmit,\n initialValue,\n isDirty,\n requestClose,\n setDraftValue,\n setInitialFocus,\n setDraftField,\n submit,\n validation,\n ],\n );\n\n const runInitialFocus = useCallback(() => {\n initialFocusRef.current?.();\n }, []);\n\n return {\n controller,\n runInitialFocus,\n };\n}\n\n/** Alias of {@link useCustomEditControllerState}. */\nexport const useCustomEditHelperState = useCustomEditControllerState;\n\n/**\n * Imperative twin of {@link useCustomEditControllerState} for tests and\n * non-React callers. Same Escape/submit/discard and validation-block contract.\n */\nexport function createCustomEditControllerState<T, K extends keyof T>({\n row,\n columnId,\n editConfig,\n onCloseEditor,\n}: UseCustomEditControllerStateOptions<T, K>): CustomEditControllerState<\n CustomEditHelperPresentValue<T, K>,\n CustomEditHelperValue<T, K>,\n CustomEditHelperInitialValue<T, K>\n> {\n const initialValue = row[columnId] as CustomEditHelperInitialValue<T, K>;\n const rowId = String(row.id);\n let draftValue = initialValue as CustomEditHelperValue<T, K>;\n let initialFocus: (() => void) | null = null;\n\n const getValidation = (nextDraftValue: CustomEditHelperValue<T, K>) =>\n deriveValidation<\n CustomEditHelperPresentValue<T, K>,\n CustomEditHelperValue<T, K>\n >(editConfig.validateDraft, nextDraftValue, rowId);\n\n const syncDerivedState = () => {\n controller.draftValue = draftValue;\n controller.changedFields = deriveChangedFields<\n CustomEditHelperPresentValue<T, K>\n >(initialValue, draftValue);\n controller.isDirty = deriveIsDirty(\n initialValue,\n draftValue,\n controller.changedFields,\n );\n controller.validation = getValidation(draftValue);\n };\n\n const performClose = (reason: CustomEditCloseReason, action: CloseAction) => {\n const validation = getValidation(draftValue);\n const changedFields = deriveChangedFields<\n CustomEditHelperPresentValue<T, K>\n >(initialValue, draftValue);\n const request = {\n reason,\n draftValue,\n initialValue,\n isDirty: deriveIsDirty(initialValue, draftValue, changedFields),\n validation,\n };\n\n if (\n action === \"submit\" &&\n editConfig.blockOnValidationError === true &&\n hasValidationErrors(validation)\n ) {\n return false;\n }\n\n if (editConfig.onRequestClose?.(request) === false) {\n return false;\n }\n\n if (action === \"submit\") {\n editConfig.onCommit(draftValue, rowId);\n } else {\n draftValue = initialValue as CustomEditHelperValue<T, K>;\n editConfig.onDraftUpdate?.(\n initialValue as CustomEditHelperValue<T, K>,\n rowId,\n );\n syncDerivedState();\n }\n\n onCloseEditor?.();\n };\n\n const controller: CustomEditController<\n CustomEditHelperPresentValue<T, K>,\n CustomEditHelperValue<T, K>,\n CustomEditHelperInitialValue<T, K>\n > = {\n draftValue,\n initialValue,\n isDirty: false,\n changedFields: [],\n validation: getValidation(draftValue),\n setDraftValue: (nextValue) => {\n draftValue = isCustomDraftValueUpdater(nextValue)\n ? nextValue(draftValue)\n : nextValue;\n editConfig.onDraftUpdate?.(draftValue, rowId);\n syncDerivedState();\n return draftValue;\n },\n setDraftField: (field, nextValue) => {\n const previousObject =\n getDraftObject<CustomEditHelperPresentValue<T, K>>(draftValue);\n\n return controller.setDraftValue({\n ...previousObject,\n [field]: isCustomFieldValueUpdater(nextValue)\n ? nextValue(previousObject[field], previousObject)\n : nextValue,\n } as CustomEditHelperValue<T, K>);\n },\n submit: () => {\n performClose(\"programmatic\", \"submit\");\n },\n discard: () => {\n performClose(\"programmatic\", \"discard\");\n },\n requestClose: (reason) => {\n performClose(reason, reason === \"escape\" ? \"discard\" : \"submit\");\n },\n setInitialFocus: (focus) => {\n initialFocus = focus;\n },\n handleSubmit: (event) => {\n event?.preventDefault?.();\n controller.requestClose(\"submit\");\n },\n };\n\n syncDerivedState();\n\n return {\n controller,\n runInitialFocus: () => {\n initialFocus?.();\n },\n };\n}\n\n/** Alias of {@link createCustomEditControllerState}. */\nexport const createCustomEditHelperState = createCustomEditControllerState;\n","import {\n type Ref,\n forwardRef,\n useCallback,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport type { KeyboardEvent as ReactKeyboardEvent } from \"react\";\nimport cx from \"classnames\";\nimport type { Cell } from \"@tanstack/react-table\";\n\nimport { SrOnly } from \"../../../../../../components\";\nimport { Surface } from \"../../../../../../internal/components\";\nimport { mergeRefs } from \"../../../../../../hooks/useMergeRefs/useMergeRefs\";\n\nimport { dataTableCellAffordanceHostClassName } from \"../dataTableCellAffordanceHostClassName\";\nimport { DataTableEditableCellEditIcon } from \"./DataTableEditableCellEditIcon\";\nimport { TableBodyCell } from \"../../../base/cells/TableBodyCell\";\n\nimport styles from \"./DataTableEditableCells.module.scss\";\nimport dataTableCellStyles from \"../cells/DataTableCells.module.scss\";\nimport { formatCellPositionString } from \"../util/cellPositionHelpers\";\nimport type {\n BaseEditableCellProps,\n EditableCellImperativeHandle,\n} from \"./types\";\nimport { useDTFocusDispatchContext } from \"../context/focus/useDTFocusDispatchContext\";\nimport { useDataTableSurfaceCoordinator } from \"../context/surface/useDataTableSurfaceCoordinator\";\nimport {\n getCellValue,\n getColumnId,\n logWarningForInvalidCellValueType,\n} from \"../util/cellTypeHelpers\";\nimport { DataTableBodyImmutableCell } from \"../cells/DataTableBodyImmutableCell\";\nimport type {\n CustomEditConfig,\n CustomEditController,\n CustomEditRenderContext,\n TableRow,\n} from \"../../../types\";\nimport { useCustomEditControllerState } from \"./useCustomEditHelpers\";\n\ntype DataTableEditableCustomCellProps<T> = BaseEditableCellProps<T>;\n\nconst NON_SUBMIT_INPUT_TYPES = new Set([\n \"button\",\n \"submit\",\n \"reset\",\n \"checkbox\",\n \"radio\",\n \"file\",\n]);\n\nfunction isNativeInteractiveElement(target: HTMLElement) {\n const interactiveSelector = [\n \"button\",\n \"a[href]\",\n \"summary\",\n \"select\",\n 'input[type=\"button\"]',\n 'input[type=\"submit\"]',\n 'input[type=\"reset\"]',\n 'input[type=\"checkbox\"]',\n 'input[type=\"radio\"]',\n 'input[type=\"file\"]',\n ].join(\", \");\n\n return Boolean(target.closest(interactiveSelector));\n}\n\nfunction isEnterOwnedByTextEntry(target: HTMLElement) {\n if (target.isContentEditable || target.closest('[contenteditable=\"true\"]')) {\n return false;\n }\n\n if (target instanceof HTMLTextAreaElement || target.closest(\"textarea\")) {\n return false;\n }\n\n if (target.closest(\"select\")) {\n return false;\n }\n\n if (target instanceof HTMLInputElement) {\n return !NON_SUBMIT_INPUT_TYPES.has(target.type);\n }\n\n const input = target.closest(\"input\");\n if (input instanceof HTMLInputElement) {\n return !NON_SUBMIT_INPUT_TYPES.has(input.type);\n }\n\n return Boolean(\n target.closest(\n 'input:not([type=\"button\"]):not([type=\"submit\"]):not([type=\"reset\"]):not([type=\"checkbox\"]):not([type=\"radio\"]):not([type=\"file\"])',\n ),\n );\n}\n\nfunction findSubmitForm(target: HTMLElement) {\n return target.closest(\"form\");\n}\n\n/**\n * Finds the form whose text-entry Enter key may be treated as submission.\n * Controls with their own Enter behavior opt out.\n */\nfunction getCustomEditorSubmitForm(target: EventTarget | null) {\n if (!(target instanceof HTMLElement)) {\n return null;\n }\n\n const interactiveRole = target.closest(\n '[role=\"button\"], [role=\"link\"], [role=\"menuitem\"], [role=\"option\"], [role=\"switch\"], [role=\"checkbox\"], [role=\"radio\"], [role=\"tab\"], [role=\"combobox\"], [role=\"listbox\"]',\n );\n\n if (interactiveRole || isNativeInteractiveElement(target)) {\n return null;\n }\n\n if (!isEnterOwnedByTextEntry(target)) {\n return null;\n }\n\n return findSubmitForm(target);\n}\n\ntype AnyCustomEditController = CustomEditController<\n Record<string, unknown>,\n Partial<Record<string, unknown>> | null | undefined,\n Record<string, unknown> | null | undefined\n>;\n\ntype CustomEditorContentProps<T, K extends keyof T> = {\n cell: Cell<T, unknown>;\n columnId: K;\n editConfig: CustomEditConfig<T, K>;\n onControllerChange: (controller: AnyCustomEditController | null) => void;\n onRequestCloseEditor: () => void;\n};\n\nfunction CustomEditorContent<T, K extends keyof T>({\n cell,\n columnId,\n editConfig,\n onControllerChange,\n onRequestCloseEditor,\n}: CustomEditorContentProps<T, K>) {\n const row = cell.row.original as TableRow<T>;\n const rowId = String(cell.row.id);\n const { controller, runInitialFocus } = useCustomEditControllerState({\n row,\n columnId,\n editConfig,\n onCloseEditor: onRequestCloseEditor,\n });\n\n useEffect(() => {\n onControllerChange(controller as unknown as AnyCustomEditController);\n\n return () => {\n onControllerChange(null);\n };\n }, [controller, onControllerChange]);\n\n useEffect(() => {\n // Match Surface's next-frame focus timing after the renderer registers its target.\n const focusHandle = window.requestAnimationFrame(() => {\n runInitialFocus();\n });\n\n return () => {\n window.cancelAnimationFrame(focusHandle);\n };\n }, [runInitialFocus]);\n\n const renderContext = {\n row,\n rowId,\n value: row[columnId],\n controller,\n } satisfies CustomEditRenderContext<T, K>;\n\n return <>{editConfig.renderEditor(renderContext)}</>;\n}\n\nfunction DataTableEditableCustomCellInner<T>(\n props: DataTableEditableCustomCellProps<T>,\n ref: React.Ref<EditableCellImperativeHandle>,\n) {\n const { cell, cellProps, cellPosition, children } = props;\n const { onKeyDown: onCellKeyDown } = cellProps;\n const cellRef = useRef<HTMLDivElement>(null);\n const customEditControllerRef = useRef<AnyCustomEditController | null>(null);\n // Surface reports both dismissals through onClose; capture preserves the reason.\n const closeReasonRef = useRef<\"outside-click\" | \"close-button\">(\n \"outside-click\",\n );\n const shouldRestoreFocusRef = useRef(true);\n const [isOpen, setIsOpen] = useState(false);\n const [tabIndex, setTabIndex] = useState(-1);\n const { moveFocusToCell } = useDTFocusDispatchContext();\n const surfaceCoordinator = useDataTableSurfaceCoordinator();\n\n const columnId = getColumnId(cell);\n const cellValue = getCellValue(cell, columnId);\n\n const meta = cell.column.columnDef.meta;\n const editConfig = meta?.editConfig;\n const customEditConfig =\n editConfig?.mode === \"custom\"\n ? (editConfig as CustomEditConfig<T, typeof columnId>)\n : undefined;\n\n const isValidValueType = useMemo(() => {\n if (\n cellValue == null ||\n (typeof cellValue === \"object\" && !Array.isArray(cellValue))\n ) {\n return true;\n }\n\n logWarningForInvalidCellValueType({\n columnId: String(columnId),\n editMode: \"custom\",\n expectedType: \"non-array object, null, or undefined\",\n receivedType: Array.isArray(cellValue) ? \"array\" : typeof cellValue,\n });\n\n return false;\n }, [cellValue, columnId]);\n\n const surfaceId = useMemo(\n () =>\n `data-table-custom-surface-${String(cell.id).replace(/[^a-zA-Z0-9_-]/g, \"-\")}`,\n [cell.id],\n );\n const cellInstructionsId = `${surfaceId}-cell-instructions`;\n const surfaceInstructionsId = `${surfaceId}-surface-instructions`;\n\n const defaultSurfaceTitle = String(\n cell.column.columnDef.meta?.columnDef?.header?.label ??\n cell.column.columnDef.meta?.columnDef?.headerLabel ??\n columnId,\n );\n const surfaceTitle = customEditConfig?.surface?.title ?? null;\n const accessibleSurfaceLabel = `Edit ${defaultSurfaceTitle}`;\n const closeButtonLabel =\n customEditConfig?.surface?.closeButtonLabel ??\n `Commit changes and close ${defaultSurfaceTitle} custom editable cell`;\n\n const restoreFocusToOriginCell = useCallback(() => {\n window.requestAnimationFrame(() => {\n moveFocusToCell(cellPosition);\n cellRef.current?.focus();\n setTabIndex(0);\n });\n }, [cellPosition, moveFocusToCell]);\n\n const closeSurface = useCallback(\n (options: { restoreFocus?: boolean } = {}) => {\n customEditControllerRef.current = null;\n shouldRestoreFocusRef.current =\n options.restoreFocus ?? shouldRestoreFocusRef.current;\n setIsOpen(false);\n surfaceCoordinator?.clear(surfaceId);\n\n if (shouldRestoreFocusRef.current) {\n restoreFocusToOriginCell();\n }\n\n shouldRestoreFocusRef.current = true;\n },\n [restoreFocusToOriginCell, surfaceCoordinator, surfaceId],\n );\n\n const beginEditing = useCallback(() => {\n surfaceCoordinator?.requestOpen({\n id: surfaceId,\n close: (options) => {\n shouldRestoreFocusRef.current = options?.restoreFocus ?? true;\n if (customEditControllerRef.current) {\n customEditControllerRef.current.requestClose(\"programmatic\");\n return;\n }\n\n closeSurface(options);\n },\n });\n shouldRestoreFocusRef.current = true;\n setIsOpen(true);\n setTabIndex(0);\n moveFocusToCell(cellPosition);\n }, [\n cellPosition,\n closeSurface,\n moveFocusToCell,\n surfaceCoordinator,\n surfaceId,\n ]);\n\n useEffect(() => {\n return () => {\n surfaceCoordinator?.clear(surfaceId);\n };\n }, [surfaceCoordinator, surfaceId]);\n\n const handleSurfaceClose = useCallback(() => {\n const controller = customEditControllerRef.current;\n const reason = closeReasonRef.current;\n closeReasonRef.current = \"outside-click\";\n\n if (!controller) {\n return;\n }\n\n controller.requestClose(reason);\n }, []);\n\n const handleSurfaceCancel = useCallback(() => {\n customEditControllerRef.current?.requestClose(\"escape\");\n }, []);\n\n const handleSurfaceClickCapture = useCallback(\n (event: React.MouseEvent<HTMLDivElement>) => {\n if (\n (event.target as HTMLElement | null)?.closest(\n '[data-anv=\"surface-close-button\"]',\n )\n ) {\n closeReasonRef.current = \"close-button\";\n }\n },\n [],\n );\n\n const handleSurfaceKeyDown = useCallback(\n (event: ReactKeyboardEvent<HTMLDivElement>) => {\n customEditConfig?.surface?.onKeyDown?.(event);\n if (event.defaultPrevented) {\n return;\n }\n\n const submitForm = getCustomEditorSubmitForm(event.target);\n if (\n event.key !== \"Enter\" ||\n event.shiftKey ||\n event.altKey ||\n event.ctrlKey ||\n event.metaKey ||\n (\"isComposing\" in event && event.isComposing) ||\n !submitForm\n ) {\n return;\n }\n\n event.preventDefault();\n event.stopPropagation();\n submitForm.requestSubmit();\n },\n [customEditConfig],\n );\n\n useImperativeHandle(\n ref,\n () => ({\n invoke: beginEditing,\n focus: () => {\n cellRef.current?.focus();\n setTabIndex(0);\n },\n }),\n [beginEditing],\n );\n\n const classes = cx(\n dataTableCellAffordanceHostClassName,\n styles[\"data-table-body-cell-editable\"],\n cellProps.className,\n {\n [dataTableCellStyles[\"data-table-body-cell-editing\"]]: isOpen,\n },\n );\n\n const handleCellKeyDown = useCallback(\n (event: React.KeyboardEvent<HTMLDivElement>) => {\n if (isOpen) {\n return;\n }\n\n onCellKeyDown?.(event);\n },\n [isOpen, onCellKeyDown],\n );\n\n const handleCellFocus = useCallback(\n (event: React.FocusEvent<HTMLDivElement>) => {\n if (event.target !== cellRef.current) {\n return;\n }\n\n event.preventDefault();\n setTabIndex(0);\n },\n [],\n );\n\n const handleCellBlur = useCallback(\n (event: React.FocusEvent<HTMLDivElement>) => {\n const nextTarget = event.relatedTarget as Node | null;\n const surfaceElement = document.getElementById(surfaceId);\n\n if (\n (nextTarget && cellRef.current?.contains(nextTarget)) ||\n (nextTarget && surfaceElement?.contains(nextTarget))\n ) {\n return;\n }\n\n setTabIndex(-1);\n },\n [surfaceId],\n );\n\n const handleCellPointerDown = useCallback(\n (event: React.PointerEvent<HTMLDivElement>) => {\n if (event.pointerType === \"mouse\" && event.button !== 0) {\n return;\n }\n\n event.preventDefault();\n event.stopPropagation();\n beginEditing();\n },\n [beginEditing],\n );\n\n if (!isValidValueType || !customEditConfig) {\n const { cellProps: _cellProps, ...immutableCellProps } = props;\n return <DataTableBodyImmutableCell {...immutableCellProps} />;\n }\n\n return (\n <Surface id={surfaceId} open={isOpen}>\n <Surface.Trigger>\n {(triggerProps) => (\n <TableBodyCell\n ref={mergeRefs([\n triggerProps.ref as Ref<HTMLElement>,\n cellRef as Ref<HTMLElement>,\n ])}\n id={triggerProps.id}\n type=\"data-table\"\n className={classes}\n style={cellProps.style}\n tabIndex={tabIndex}\n onFocus={handleCellFocus}\n onBlur={handleCellBlur}\n onPointerDown={handleCellPointerDown}\n onKeyDown={handleCellKeyDown}\n data-cell-pos={formatCellPositionString(cellPosition)}\n data-anv-editable-cell=\"true\"\n aria-controls={triggerProps[\"aria-controls\"]}\n aria-expanded={triggerProps[\"aria-expanded\"]}\n aria-haspopup={triggerProps[\"aria-haspopup\"]}\n aria-describedby={cellInstructionsId}\n data-state={triggerProps[\"data-state\"]}\n >\n {children}\n {!isOpen && <DataTableEditableCellEditIcon />}\n <SrOnly id={cellInstructionsId}>\n {isOpen\n ? \"Custom editable cell editor is open. Press Escape to discard changes. Click outside, close the editor, or use editor controls to save current changes.\"\n : \"Custom editable cell. Press Enter, Space, or F2 to open the editor.\"}\n </SrOnly>\n </TableBodyCell>\n )}\n </Surface.Trigger>\n <Surface.Content\n intersectionBoundaryRef={surfaceCoordinator?.intersectionBoundaryRef}\n onClose={handleSurfaceClose}\n onCancel={handleSurfaceCancel}\n onClickCapture={handleSurfaceClickCapture}\n onKeyDown={handleSurfaceKeyDown}\n aria-describedby={surfaceInstructionsId}\n {...(surfaceTitle ? {} : { \"aria-label\": accessibleSurfaceLabel })}\n closeButtonLabel={closeButtonLabel}\n title={surfaceTitle}\n width={customEditConfig.surface?.width}\n maxHeight={customEditConfig.surface?.maxHeight}\n >\n <SrOnly id={surfaceInstructionsId}>\n Custom editable cell dialog. Press Escape to discard changes. Clicking\n outside or the close button commits the current draft.\n </SrOnly>\n {isOpen ? (\n <CustomEditorContent\n cell={cell}\n columnId={columnId}\n editConfig={customEditConfig}\n onControllerChange={(controller) => {\n customEditControllerRef.current = controller;\n }}\n onRequestCloseEditor={closeSurface}\n />\n ) : null}\n </Surface.Content>\n </Surface>\n );\n}\n\n/**\n * Editable grid cell that hosts a consumer-rendered object editor in a\n * coordinated surface.\n */\nexport const DataTableEditableCustomCell = Object.assign(\n forwardRef(DataTableEditableCustomCellInner) as <T>(\n props: DataTableEditableCustomCellProps<T> & {\n ref?: React.Ref<EditableCellImperativeHandle>;\n },\n ) => React.ReactElement,\n { displayName: \"DataTableEditableCustomCell\" },\n);\n","import { useCallback, useMemo, useRef } from \"react\";\nimport cx from \"classnames\";\n\nimport type { DataTableBodyCellProps as BaseDataTableBodyCellProps } from \"../../../base/cells/TableBodyCell\";\nimport { DataTableEditableTextCell } from \"../editable-cells/DataTableEditableTextCell\";\nimport { DataTableEditableNumberCell } from \"../editable-cells/DataTableEditableNumberCell\";\nimport { DataTableEditableSelectCell } from \"../editable-cells/DataTableEditableSelectCell\";\nimport { DataTableEditableSelectAsyncCell } from \"../editable-cells/DataTableEditableSelectAsyncCell\";\nimport { DataTableEditableMultiselectCell } from \"../editable-cells/DataTableEditableMultiselectCell\";\nimport { DataTableEditableMultiselectAsyncCell } from \"../editable-cells/DataTableEditableMultiselectAsyncCell\";\nimport { DataTableEditableBooleanCell } from \"../editable-cells/DataTableEditableBooleanCell\";\nimport { DataTableEditableCustomCell } from \"../editable-cells/DataTableEditableCustomCell\";\n\nimport styles from \"./DataTableCells.module.scss\";\nimport type { Cell } from \"@tanstack/react-table\";\nimport { useCommonPinningStyles } from \"../../../internal/getCommonPinningStyles\";\nimport { useDTFocusDispatchContext } from \"../context/focus/useDTFocusDispatchContext\";\nimport type { EditableCellImperativeHandle } from \"../editable-cells/types\";\nimport type { CellPosition } from \"../../../internal/types\";\nimport type { TableRow } from \"../../../types\";\nimport { dataTableCellAffordanceHostClassName } from \"../dataTableCellAffordanceHostClassName\";\n\nexport type DataTableBodyMutableCellProps<T> = Omit<\n BaseDataTableBodyCellProps,\n \"onChange\"\n> & {\n /** Coordinates used by the grid's roving-focus manager. */\n cellPosition: CellPosition;\n /** Supplies row and column state for the configured editor and validation styling. */\n cell: Cell<T, unknown>;\n};\n\n/**\n * Editable ARIA grid cell with roving navigation. Delegates to the editor\n * configured by the column and invokes it with Enter, Space, or F2.\n */\nexport function DataTableBodyMutableCell<T>(\n props: DataTableBodyMutableCellProps<T>,\n) {\n const { cell, cellPosition, children, ...rest } = props;\n const editableCellRef = useRef<EditableCellImperativeHandle>(null);\n\n const column = cell.column;\n\n const rowCanExpand = cell.row.getCanExpand();\n const rowIsExpanded = cell.row.getIsExpanded();\n const toggleRowExpanded = cell.row.toggleExpanded;\n\n const meta = (cell.row.original as TableRow<T>).meta;\n const cellError = meta?.errors?.[column.id as keyof T];\n const cellWarning = meta?.warnings?.[column.id as keyof T];\n\n const classes = cx(\n styles[\"data-table-body-cell\"],\n dataTableCellAffordanceHostClassName,\n rest.className,\n {\n [styles[\"data-table-body-cell-error\"]]: !!cellError,\n [styles[\"data-table-body-cell-warning\"]]: !cellError && !!cellWarning,\n },\n );\n const commonPinningStyles = useCommonPinningStyles<T>(column);\n\n const { jumpFocus, moveFocus } = useDTFocusDispatchContext();\n\n const editMode = column.columnDef.meta?.editMode;\n\n const handleKeyDown = useCallback(\n (event: React.KeyboardEvent<HTMLTableCellElement>) => {\n switch (event.key) {\n case \"ArrowUp\":\n event.preventDefault();\n moveFocus(\"up\");\n return;\n case \"ArrowDown\":\n event.preventDefault();\n moveFocus(\"down\");\n return;\n case \"ArrowLeft\":\n event.preventDefault();\n if (rowCanExpand && rowIsExpanded) {\n toggleRowExpanded();\n return;\n }\n moveFocus(\"left\");\n return;\n case \"ArrowRight\":\n if (rowCanExpand && !rowIsExpanded) {\n toggleRowExpanded();\n return;\n }\n event.preventDefault();\n moveFocus(\"right\");\n return;\n case \"Home\": {\n event.preventDefault();\n jumpFocus(\"left\");\n return;\n }\n case \"End\": {\n event.preventDefault();\n jumpFocus(\"right\");\n return;\n }\n case \"Enter\":\n case \"F2\":\n case \" \": {\n event.preventDefault();\n editableCellRef.current?.invoke();\n return;\n }\n default:\n break;\n }\n },\n [moveFocus, jumpFocus, rowCanExpand, rowIsExpanded, toggleRowExpanded],\n );\n\n const EditableComponent = useMemo(() => {\n if (editMode === \"text\") {\n return DataTableEditableTextCell;\n }\n if (editMode === \"number\") {\n return DataTableEditableNumberCell;\n }\n if (editMode === \"select\") {\n return DataTableEditableSelectCell;\n }\n if (editMode === \"select-async\") {\n return DataTableEditableSelectAsyncCell;\n }\n if (editMode === \"multiselect\") {\n return DataTableEditableMultiselectCell;\n }\n if (editMode === \"multiselect-async\") {\n return DataTableEditableMultiselectAsyncCell;\n }\n if (editMode === \"boolean\") {\n return DataTableEditableBooleanCell;\n }\n if (editMode === \"custom\") {\n return DataTableEditableCustomCell;\n }\n }, [editMode]);\n\n if (!EditableComponent) {\n return null;\n }\n\n return (\n <EditableComponent<T>\n ref={editableCellRef}\n cellPosition={cellPosition}\n cell={cell}\n cellProps={{\n ...rest,\n className: classes,\n onKeyDown: handleKeyDown,\n style: commonPinningStyles,\n }}\n >\n {children}\n </EditableComponent>\n );\n}\n","import * as React from \"react\";\nconst SvgOpenInFull = (props) => /* @__PURE__ */ React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", width: \"1em\", height: \"1em\", viewBox: \"0 0 24 24\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M21 8.59V4c0-.55-.45-1-1-1h-4.59c-.89 0-1.34 1.08-.71 1.71l1.59 1.59-10 10-1.59-1.59c-.62-.63-1.7-.19-1.7.7V20c0 .55.45 1 1 1h4.59c.89 0 1.34-1.08.71-1.71L7.71 17.7l10-10 1.59 1.59c.62.63 1.7.19 1.7-.7z\" }));\nexport default SvgOpenInFull;\n","import {\n type ReactNode,\n type Ref,\n useCallback,\n useLayoutEffect,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport cx from \"classnames\";\n\nimport { Icon, SrOnly } from \"../../../../../../components\";\nimport { Surface } from \"../../../../../../internal/components\";\nimport { mergeRefs } from \"../../../../../../hooks/useMergeRefs/useMergeRefs\";\nimport OpenInFullIcon from \"../../../../../../../public/assets/icons/material/round/open_in_full.svg\";\n\nimport { DataTableCellAffordance } from \"../DataTableCellAffordance\";\nimport { dataTableCellAffordanceHostClassName } from \"../dataTableCellAffordanceHostClassName\";\nimport { TableBodyCell } from \"../../../base/cells/TableBodyCell\";\nimport type { DataTableBodyImmutableCellProps } from \"./DataTableBodyImmutableCell\";\nimport { formatCellPositionString } from \"../util/cellPositionHelpers\";\nimport { useCommonPinningStyles } from \"../../../internal/getCommonPinningStyles\";\nimport { useDTFocusDispatchContext } from \"../context/focus/useDTFocusDispatchContext\";\nimport { useDataTableSurfaceCoordinator } from \"../context/surface/useDataTableSurfaceCoordinator\";\nimport type { TableRow } from \"../../../types\";\n\nimport styles from \"./DataTableOverflowCell.module.scss\";\nimport cellStyles from \"./DataTableCells.module.scss\";\n\nconst OVERFLOW_TOLERANCE_PX = 1;\n\ntype OverflowState = {\n horizontal: boolean;\n vertical: boolean;\n};\n\nfunction isOverflowing(element: HTMLElement): OverflowState {\n return {\n horizontal:\n element.scrollWidth - element.clientWidth > OVERFLOW_TOLERANCE_PX,\n vertical:\n element.scrollHeight - element.clientHeight > OVERFLOW_TOLERANCE_PX,\n };\n}\n\nfunction hasOverflow(state: OverflowState) {\n return state.horizontal || state.vertical;\n}\n\nfunction getSurfaceTitle<T>(props: DataTableBodyImmutableCellProps<T>) {\n const columnDef = props.cell.column.columnDef.meta?.columnDef;\n return String(\n columnDef?.header?.label ?? columnDef?.headerLabel ?? props.cell.column.id,\n );\n}\n\n/**\n * Read-only ARIA grid cell that opens clipped content in a disclosure surface.\n * Supports pointer activation and the grid's disclosure and navigation keys.\n */\nexport function DataTableOverflowCell<T>(\n props: DataTableBodyImmutableCellProps<T>,\n) {\n const { cell, cellPosition, children, ...rest } = props;\n const cellRef = useRef<HTMLDivElement>(null);\n const surfaceContentRef = useRef<HTMLDivElement>(null);\n const viewportRef = useRef<HTMLDivElement>(null);\n const [overflow, setOverflow] = useState<OverflowState>({\n horizontal: false,\n vertical: false,\n });\n const [isOpen, setIsOpen] = useState(false);\n const [isCellFocused, setIsCellFocused] = useState(false);\n const [isCellHovered, setIsCellHovered] = useState(false);\n const [tabIndex, setTabIndex] = useState(-1);\n const { moveFocus, jumpFocus, moveFocusToCell } = useDTFocusDispatchContext();\n const surfaceCoordinator = useDataTableSurfaceCoordinator();\n const surfaceTitle = getSurfaceTitle(props);\n const rowCanExpand = cell.row.getCanExpand();\n const rowIsExpanded = cell.row.getIsExpanded();\n const toggleRowExpanded = cell.row.toggleExpanded;\n const meta = (cell.row.original as TableRow<T>).meta;\n const cellError = meta?.errors?.[cell.column.id as keyof T];\n const cellWarning = meta?.warnings?.[cell.column.id as keyof T];\n const surfaceId = useMemo(\n () =>\n `data-table-overflow-surface-${String(cell.id).replace(/[^a-zA-Z0-9_-]/g, \"-\")}`,\n [cell.id],\n );\n const cellInstructionsId = `${surfaceId}-cell-instructions`;\n const surfaceInstructionsId = `${surfaceId}-surface-instructions`;\n const isClipped = hasOverflow(overflow);\n const isResizeObserverEnabled = isOpen || isCellFocused || isCellHovered;\n const shouldRestoreFocusRef = useRef(true);\n const commonPinningStyles = useCommonPinningStyles<T>(cell.column);\n\n const updateOverflow = useCallback((): OverflowState | null => {\n const viewport = viewportRef.current;\n if (!viewport) {\n return null;\n }\n\n const nextOverflow = isOverflowing(viewport);\n setOverflow((currentOverflow) => {\n if (\n currentOverflow.horizontal === nextOverflow.horizontal &&\n currentOverflow.vertical === nextOverflow.vertical\n ) {\n return currentOverflow;\n }\n\n return nextOverflow;\n });\n\n return nextOverflow;\n }, []);\n\n useLayoutEffect(() => {\n updateOverflow();\n }, [children, updateOverflow]);\n\n useEffect(() => {\n const viewport = viewportRef.current;\n if (\n !isResizeObserverEnabled ||\n !viewport ||\n typeof ResizeObserver === \"undefined\"\n ) {\n return;\n }\n\n const resizeObserver = new ResizeObserver(() => {\n updateOverflow();\n });\n\n resizeObserver.observe(viewport);\n\n return () => {\n resizeObserver.disconnect();\n };\n }, [isResizeObserverEnabled, updateOverflow]);\n\n const restoreFocusToOriginCell = useCallback(() => {\n window.requestAnimationFrame(() => {\n moveFocusToCell(cellPosition);\n cellRef.current?.focus();\n setTabIndex(0);\n });\n }, [cellPosition, moveFocusToCell]);\n\n const closeSurface = useCallback(\n (options: { restoreFocus?: boolean } = {}) => {\n shouldRestoreFocusRef.current =\n options.restoreFocus ?? shouldRestoreFocusRef.current;\n setIsOpen(false);\n surfaceCoordinator?.clear(surfaceId);\n\n if (shouldRestoreFocusRef.current) {\n restoreFocusToOriginCell();\n }\n\n shouldRestoreFocusRef.current = true;\n },\n [restoreFocusToOriginCell, surfaceCoordinator, surfaceId],\n );\n\n const openSurface = useCallback(() => {\n const nextOverflow = updateOverflow();\n if (!hasOverflow(nextOverflow ?? overflow)) {\n return false;\n }\n\n surfaceCoordinator?.requestOpen({\n id: surfaceId,\n close: closeSurface,\n });\n shouldRestoreFocusRef.current = true;\n setIsOpen(true);\n setTabIndex(0);\n moveFocusToCell(cellPosition);\n\n return true;\n }, [\n cellPosition,\n closeSurface,\n moveFocusToCell,\n overflow,\n surfaceCoordinator,\n surfaceId,\n updateOverflow,\n ]);\n\n useEffect(() => {\n return () => {\n surfaceCoordinator?.clear(surfaceId);\n };\n }, [surfaceCoordinator, surfaceId]);\n\n const handleCellFocus = useCallback(\n (event: React.FocusEvent<HTMLDivElement>) => {\n if (event.target !== cellRef.current) {\n return;\n }\n\n updateOverflow();\n setIsCellFocused(true);\n setTabIndex(0);\n },\n [updateOverflow],\n );\n\n const handleCellBlur = useCallback(\n (event: React.FocusEvent<HTMLDivElement>) => {\n const nextTarget = event.relatedTarget as Node | null;\n const surfaceElement = document.getElementById(surfaceId);\n\n if (\n (nextTarget && cellRef.current?.contains(nextTarget)) ||\n (nextTarget && surfaceElement?.contains(nextTarget))\n ) {\n return;\n }\n\n setIsCellFocused(false);\n setTabIndex(-1);\n },\n [surfaceId],\n );\n\n const handleCellPointerEnter = useCallback(() => {\n updateOverflow();\n setIsCellHovered(true);\n }, [updateOverflow]);\n\n const handleCellPointerLeave = useCallback(() => {\n setIsCellHovered(false);\n }, []);\n\n const handleCellPointerDown = useCallback(\n (event: React.PointerEvent<HTMLDivElement>) => {\n if (event.pointerType === \"mouse\" && event.button !== 0) {\n return;\n }\n\n if (!openSurface()) {\n return;\n }\n\n event.preventDefault();\n event.stopPropagation();\n },\n [openSurface],\n );\n\n const handleCellKeyDown = useCallback(\n (event: React.KeyboardEvent<HTMLDivElement>) => {\n switch (event.key) {\n case \"ArrowUp\":\n event.preventDefault();\n moveFocus(\"up\");\n return;\n case \"ArrowDown\":\n event.preventDefault();\n moveFocus(\"down\");\n return;\n case \"ArrowLeft\":\n event.preventDefault();\n if (rowCanExpand && rowIsExpanded) {\n toggleRowExpanded();\n return;\n }\n moveFocus(\"left\");\n return;\n case \"ArrowRight\":\n event.preventDefault();\n if (rowCanExpand && !rowIsExpanded) {\n toggleRowExpanded();\n return;\n }\n moveFocus(\"right\");\n return;\n case \"Home\":\n event.preventDefault();\n jumpFocus(\"left\");\n return;\n case \"End\":\n event.preventDefault();\n jumpFocus(\"right\");\n return;\n case \"Enter\":\n case \" \":\n case \"F2\":\n if (openSurface()) {\n event.preventDefault();\n }\n return;\n default:\n return;\n }\n },\n [\n jumpFocus,\n moveFocus,\n openSurface,\n rowCanExpand,\n rowIsExpanded,\n toggleRowExpanded,\n ],\n );\n\n const hasSurfaceTrigger = isClipped || isOpen;\n const hasCellInstructions = isClipped || isOpen;\n\n const classes = cx(\n cellStyles[\"data-table-body-cell\"],\n {\n [dataTableCellAffordanceHostClassName]: isClipped,\n [cellStyles[\"data-table-body-cell-error\"]]: !!cellError,\n [cellStyles[\"data-table-body-cell-warning\"]]: !cellError && !!cellWarning,\n },\n styles[\"data-table-body-cell-overflow\"],\n rest.className,\n );\n\n const content = (\n <div\n ref={viewportRef}\n className={styles[\"data-table-body-cell-overflow-viewport\"]}\n >\n <div className={styles[\"data-table-body-cell-overflow-content\"]}>\n {children as ReactNode}\n </div>\n </div>\n );\n\n return (\n <Surface id={surfaceId} open={isOpen}>\n <Surface.Trigger>\n {(triggerProps) => (\n <TableBodyCell\n ref={mergeRefs([\n triggerProps.ref as Ref<HTMLElement>,\n cellRef as Ref<HTMLElement>,\n ])}\n type=\"data-table\"\n {...rest}\n id={triggerProps.id}\n className={classes}\n tabIndex={tabIndex}\n style={commonPinningStyles}\n onFocus={handleCellFocus}\n onBlur={handleCellBlur}\n onPointerEnter={handleCellPointerEnter}\n onPointerLeave={handleCellPointerLeave}\n onPointerDown={handleCellPointerDown}\n onKeyDown={handleCellKeyDown}\n data-cell-pos={formatCellPositionString(cellPosition)}\n aria-controls={\n hasSurfaceTrigger ? triggerProps[\"aria-controls\"] : undefined\n }\n aria-expanded={\n hasSurfaceTrigger ? triggerProps[\"aria-expanded\"] : undefined\n }\n aria-haspopup={\n hasSurfaceTrigger ? triggerProps[\"aria-haspopup\"] : undefined\n }\n aria-describedby={\n hasSurfaceTrigger ? cellInstructionsId : undefined\n }\n data-state={\n hasSurfaceTrigger ? triggerProps[\"data-state\"] : undefined\n }\n >\n {content}\n {isClipped ? (\n <DataTableCellAffordance interactive>\n <Icon svg={OpenInFullIcon} size=\"small\" color=\"subtle\" />\n </DataTableCellAffordance>\n ) : null}\n {hasCellInstructions ? (\n <SrOnly id={cellInstructionsId}>\n Cell content is clipped. Press Enter, Space, or F2 to show full\n content.\n </SrOnly>\n ) : null}\n </TableBodyCell>\n )}\n </Surface.Trigger>\n <Surface.Content\n intersectionBoundaryRef={surfaceCoordinator?.intersectionBoundaryRef}\n initialFocusRef={surfaceContentRef}\n onClose={closeSurface}\n onCancel={closeSurface}\n aria-label={`Full content for ${surfaceTitle}`}\n aria-describedby={surfaceInstructionsId}\n closeButtonLabel={`Close full content for ${surfaceTitle}`}\n >\n {isOpen ? (\n <>\n <SrOnly id={surfaceInstructionsId}>\n Full cell content disclosure. Press Escape or close to return\n focus to the cell.\n </SrOnly>\n <div\n ref={surfaceContentRef}\n tabIndex={-1}\n className={\n styles[\"data-table-body-cell-overflow-surface-content\"]\n }\n >\n {children as ReactNode}\n </div>\n </>\n ) : null}\n </Surface.Content>\n </Surface>\n );\n}\n","import type { DataTableBodyCellProps as BaseDataTableBodyCellProps } from \"../../../base/cells/TableBodyCell\";\nimport type { Cell } from \"@tanstack/react-table\";\nimport { DataTableBodyMutableCell } from \"./DataTableBodyMutableCell\";\nimport { DataTableBodyImmutableCell } from \"./DataTableBodyImmutableCell\";\nimport { DataTableOverflowCell } from \"./DataTableOverflowCell\";\nimport { formatCellPositionString } from \"../util/cellPositionHelpers\";\nimport type { ReactNode } from \"react\";\nimport type { CellPosition } from \"../../../internal/types\";\n\nexport type DataTableBodyCellProps<T> = Omit<\n BaseDataTableBodyCellProps,\n \"onChange\"\n> & {\n /** Grid coordinates used for roving tabindex and `data-cell-pos`. */\n cellPosition: CellPosition;\n /** TanStack cell; column meta chooses the renderer. */\n cell: Cell<T, unknown>;\n children: ReactNode;\n};\n\n/**\n * Body-cell dispatcher: editable when `editMode` is set, overflow surface when\n * `overflow.mode` is `\"surface\"`, otherwise the immutable cell.\n */\nexport function DataTableBodyCell<T>(props: DataTableBodyCellProps<T>) {\n const { cell, cellPosition, children, ...rest } = props;\n\n const column = cell.column;\n const editMode = column.columnDef.meta?.editMode;\n\n const overflow = column.columnDef.meta?.overflow;\n\n const Component = editMode\n ? DataTableBodyMutableCell<T>\n : overflow?.mode === \"surface\"\n ? DataTableOverflowCell<T>\n : DataTableBodyImmutableCell<T>;\n return (\n <Component\n cell={cell}\n cellPosition={cellPosition}\n {...rest}\n data-cell-pos={formatCellPositionString(cellPosition)}\n >\n {children}\n </Component>\n );\n}\n","import {\n type CSSProperties,\n Fragment,\n type MouseEvent as ReactMouseEvent,\n type ReactNode,\n memo,\n useCallback,\n useLayoutEffect,\n useRef,\n} from \"react\";\nimport cx from \"classnames\";\nimport { flexRender, type Row } from \"@tanstack/react-table\";\n\nimport { Flex } from \"../../../../../components\";\n\nimport { getCommonPinningClasses } from \"../../internal/getCommonPinningClasses\";\n\nimport { DataTableBodyCell } from \"./cells/DataTableBodyCell\";\n\nimport styles from \"./DataTableBody.module.scss\";\nimport {\n INTERNAL_ROW_ACTION_PRIMARY_COLUMN_ID,\n INTERNAL_ROW_ACTION_SECONDARY_COLUMN_ID,\n} from \"./constants\";\nimport type { useColumnOrder } from \"./useColumnOrder\";\nimport { useDataTableRowClick } from \"./context/rowClick/useDataTableRowClick\";\nimport { ANV_PART_ATTR } from \"../../../../../internal/constants/anvParts\";\nimport { PARTS } from \"../parts\";\n\nconst HOVER_ATTR = \"data-anv-is-hovered-row\";\nconst SELECTED_ATTR = \"data-anv-is-selected-row\";\nconst HAS_SUB_COMPONENT_ATTR = \"data-anv-has-sub-component\";\n\n// Controls, checkbox chrome, and editable cells must not fire onClickRow.\n// `label` / `[data-anv=\"checkbox\"]` catch icon/label wrappers whose target is\n// not the input. `[data-anv-editable-cell]` is a data attribute so matching\n// survives CSS-module hashing; the cell node itself must match because padding\n// clicks land on the cell, not an inner control.\nconst ROW_CLICK_IGNORE_SELECTOR =\n 'button, a, input, select, textarea, label, [role=\"button\"], [role=\"checkbox\"], [role=\"menuitem\"], [data-anv=\"checkbox\"], [data-anv-editable-cell]';\n\n/** Treats boolean `subComponent` as absent so a leftover `false` does not render. */\nfunction hasRowSubComponent<T>(value: T): value is T & {\n subComponent: Exclude<ReactNode, boolean | null | undefined>;\n} {\n if (\n typeof value !== \"object\" ||\n value === null ||\n !(\"subComponent\" in value)\n ) {\n return false;\n }\n\n return typeof value.subComponent !== \"boolean\" && value.subComponent != null;\n}\n\n/**\n * Sort/filter can change which children are visible between renders, so this\n * is recomputed on demand instead of memoized.\n */\nfunction collectDescendantRowIds<T>(row: Row<T>, out: string[]): void {\n for (const child of row.subRows) {\n out.push(child.id);\n if (child.subRows.length > 0) {\n collectDescendantRowIds(child, out);\n }\n }\n}\n\nexport type DataTableBodyRowProps<T> = {\n /**\n * Column-order identity for `areRowPropsEqual` only. Render uses\n * `columnIndexMap`; a new array still re-renders after pin/reorder.\n */\n columnOrder: ReturnType<typeof useColumnOrder>[\"columnOrder\"];\n /**\n * O(1) leaf-column-index → visual position. Avoids\n * `columnOrder.indexOf(...)` per cell.\n */\n columnIndexMap: ReturnType<typeof useColumnOrder>[\"columnIndexMap\"];\n /** TanStack row. `id` is `data-row-id`; `original.subComponent` is the sibling slot. */\n row: Row<T>;\n /**\n * Index among header + body rows (headers counted first). Converted to\n * 1-based `aria-rowindex`.\n */\n rowIndex: number;\n /**\n * Table-wide grouping flag. Gates `aria-expanded` / `aria-level` even when\n * this row cannot expand.\n */\n tableHasSubRows: boolean;\n /**\n * When true: `aria-expanded` if this row can expand, and the sibling\n * `subComponent` slot if `original` has one.\n */\n isExpanded: boolean;\n /** With `tableHasSubRows`, exposes `aria-expanded`. */\n canExpand: boolean;\n /**\n * Nesting level (0 = root). When greater than 0, sets `--a2-row-depth` for\n * indent on the expand-arrow and first data cell.\n */\n depth: number;\n /**\n * Parent can expand. Nested leaves still get `aria-level` when the table\n * has subrows.\n */\n parentRowCanExpand: boolean;\n /**\n * `isSelected`, `isSomeSelected`, and `isAncestorSelected` OR together for\n * `data-anv-is-selected-row` (full, indeterminate, and inherited paint).\n */\n isSelected: boolean;\n /** Some but not all descendants selected. */\n isSomeSelected: boolean;\n /**\n * Passed as a boolean so `areRowPropsEqual` stays a cheap identity check\n * instead of walking ancestors per compare.\n */\n isAncestorSelected: boolean;\n /**\n * From `readOnlyRowIds`. Grays plain-text cells; skips the row-click\n * handler and affordance. Checkbox disabling is gated separately via\n * `enableRowSelection`.\n */\n isReadOnly: boolean;\n /**\n * Opt-in memo key. When omitted, the row always re-renders with its parent.\n * When set, skip re-render only if this value and the table-managed props\n * compared in `areRowPropsEqual` are unchanged. Include any extra-row\n * input the cells read (for example a highlight id).\n */\n getRowVersion?: (row: T) => unknown;\n};\n\nfunction DataTableBodyRowInner<T>({\n columnOrder: _columnOrder,\n columnIndexMap,\n row,\n rowIndex,\n tableHasSubRows,\n isExpanded,\n canExpand,\n depth,\n parentRowCanExpand,\n isSelected,\n isSomeSelected,\n isAncestorSelected,\n isReadOnly,\n}: DataTableBodyRowProps<T>) {\n const visibleCells = row.getVisibleCells();\n\n const id = row.id;\n const original = row.original;\n const hasSubComponent = hasRowSubComponent(original);\n\n const rowRef = useRef<HTMLDivElement>(null);\n\n const isSelectedRow = isSelected || isSomeSelected || isAncestorSelected;\n\n const { isRowClickEnabled, clickRow } = useDataTableRowClick();\n const isRowClickable = isRowClickEnabled && !isReadOnly;\n\n const handleRowClick = useCallback(\n (event: ReactMouseEvent<HTMLDivElement>) => {\n const target = event.target as HTMLElement | null;\n if (target?.closest(ROW_CLICK_IGNORE_SELECTOR)) return;\n clickRow(row.id);\n },\n [clickRow, row.id],\n );\n\n // Scope to the nearest `[data-anv=\"data-table-base\"]` so multiple tables\n // cannot share hover state.\n const setRowHover = useCallback(\n (rowEl: HTMLDivElement, on: boolean) => {\n const apply = (el: Element | null) => {\n if (!el) return;\n if (on) {\n el.setAttribute(HOVER_ATTR, \"true\");\n } else {\n el.removeAttribute(HOVER_ATTR);\n }\n };\n\n apply(rowEl);\n\n const base = rowEl.closest('[data-anv=\"data-table-base\"]');\n const scope: ParentNode = base ?? rowEl.ownerDocument;\n\n // Sibling slot is not a DOM descendant of the row.\n apply(scope.querySelector(`#${CSS.escape(`${row.id}-sub-component`)}`));\n\n const descendantIds: string[] = [];\n collectDescendantRowIds(row, descendantIds);\n for (const childId of descendantIds) {\n apply(scope.querySelector(`[data-row-id=\"${CSS.escape(childId)}\"]`));\n }\n },\n [row],\n );\n\n const handleMouseEnter = useCallback(\n (event: ReactMouseEvent<HTMLDivElement>) => {\n setRowHover(event.currentTarget, true);\n },\n [setRowHover],\n );\n\n const handleMouseLeave = useCallback(\n (event: ReactMouseEvent<HTMLDivElement>) => {\n setRowHover(event.currentTarget, false);\n },\n [setRowHover],\n );\n\n const handleSubComponentMouseEnter = useCallback(\n (event: ReactMouseEvent<HTMLDivElement>) => {\n event.currentTarget.setAttribute(HOVER_ATTR, \"true\");\n },\n [],\n );\n\n const handleSubComponentMouseLeave = useCallback(\n (event: ReactMouseEvent<HTMLDivElement>) => {\n event.currentTarget.removeAttribute(HOVER_ATTR);\n },\n [],\n );\n\n // `setRowHover` only stamps rows that exist at mouseenter. A later mount\n // (expand a hovered parent, virtualized child scrolling in) would stay\n // unpainted until the next mouse move. Re-check every render so new\n // sub-components and re-keyed rows inherit the stamp; layout effect so it\n // lands before paint.\n useLayoutEffect(() => {\n const rowEl = rowRef.current;\n if (!rowEl) return;\n\n const base = rowEl.closest('[data-anv=\"data-table-base\"]');\n const scope: ParentNode = base ?? rowEl.ownerDocument;\n\n // Body rows are flat DOM siblings; only the TanStack parent chain finds ancestors.\n const anyAncestorHovered = row.getParentRows().some((parent) => {\n const el = scope.querySelector(\n `[data-row-id=\"${CSS.escape(parent.id)}\"]`,\n );\n return el?.getAttribute(HOVER_ATTR) === \"true\";\n });\n\n if (anyAncestorHovered) {\n rowEl.setAttribute(HOVER_ATTR, \"true\");\n }\n\n // Stamp on first paint when expanding a hovered row; mouseenter already passed.\n if (rowEl.getAttribute(HOVER_ATTR) === \"true\") {\n const subComp = scope.querySelector(\n `#${CSS.escape(`${row.id}-sub-component`)}`,\n );\n if (subComp) subComp.setAttribute(HOVER_ATTR, \"true\");\n }\n });\n\n return (\n <Fragment key={row.id}>\n {/* Row click mirrors the checkbox cell; keyboard activation is on the cell. */}\n {/* eslint-disable-next-line jsx-a11y/click-events-have-key-events, jsx-a11y/no-static-element-interactions */}\n <div\n ref={rowRef}\n role=\"row\"\n aria-rowindex={rowIndex + 1}\n aria-expanded={tableHasSubRows && canExpand ? isExpanded : undefined}\n aria-level={\n tableHasSubRows && (canExpand || parentRowCanExpand)\n ? depth + 1\n : undefined\n }\n data-row-id={row.id}\n {...{ [ANV_PART_ATTR]: PARTS.row }}\n {...(hasSubComponent ? { [HAS_SUB_COMPONENT_ATTR]: \"true\" } : {})}\n {...(isSelectedRow ? { [SELECTED_ATTR]: \"true\" } : {})}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n onClick={isRowClickable ? handleRowClick : undefined}\n {...(isRowClickable ? { \"data-anv-row-clickable\": \"true\" } : {})}\n className={cx(styles[\"data-table-body-row\"], {\n [styles[\"data-table-body-row-read-only\"]]: isReadOnly,\n })}\n style={\n depth > 0 ? ({ \"--a2-row-depth\": depth } as CSSProperties) : undefined\n }\n >\n {(() => {\n // Checkbox column stays unindented so it stays aligned across depths.\n let firstDataCellClaimed = false;\n return visibleCells.map((cell) => {\n const isLastInParentGroup = cell.column.parent\n ? cell.column.parent.getLeafColumns().slice(-1)[0] === cell.column\n : false;\n\n const isExpandColumn =\n cell.column.id === INTERNAL_ROW_ACTION_PRIMARY_COLUMN_ID;\n const isCheckboxColumn =\n cell.column.id === INTERNAL_ROW_ACTION_SECONDARY_COLUMN_ID;\n const isInternalActionColumn = isExpandColumn || isCheckboxColumn;\n const isFirstDataCell =\n !isInternalActionColumn && !firstDataCellClaimed;\n if (!isInternalActionColumn) {\n firstDataCellClaimed = true;\n }\n\n const cellClasses = cx(getCommonPinningClasses(cell.column), {\n [styles[\"data-table-body-cell-group\"]]:\n \"columns\" in cell.column.columnDef ||\n (cell.column.parent && isLastInParentGroup),\n [styles[\"data-table-body-cell-depth-indent\"]]: isFirstDataCell,\n [styles[\"data-table-body-cell-action-depth-indent\"]]:\n isExpandColumn,\n });\n const columnIndex =\n columnIndexMap.get(cell.column.getIndex()) ?? -1;\n return (\n <DataTableBodyCell<T>\n key={cell.id}\n cell={cell}\n cellPosition={{ rowIndex, columnIndex }}\n aria-colindex={columnIndex + 1}\n className={cellClasses}\n data-anv-column-id={cell.column.id}\n {...{ [ANV_PART_ATTR]: PARTS.cell }}\n >\n {flexRender(cell.column.columnDef.cell, cell.getContext())}\n </DataTableBodyCell>\n );\n });\n })()}\n </div>\n {isExpanded && hasSubComponent && (\n <div\n id={`${id}-sub-component`}\n aria-hidden={!isExpanded}\n {...{ [HAS_SUB_COMPONENT_ATTR]: \"true\" }}\n {...(isSelectedRow ? { [SELECTED_ATTR]: \"true\" } : {})}\n className={styles[\"data-table-body-sub-component-row\"]}\n onMouseEnter={handleSubComponentMouseEnter}\n onMouseLeave={handleSubComponentMouseLeave}\n >\n <div className={styles[\"data-table-body-sub-component-container\"]}>\n <Flex className={styles[\"data-table-body-sub-component-content\"]}>\n {original.subComponent}\n </Flex>\n </div>\n </div>\n )}\n </Fragment>\n );\n}\n\n/**\n * `React.memo` comparator. Returns false when `getRowVersion` is omitted so\n * cells that read unknown parent state cannot stale.\n */\nfunction areRowPropsEqual<T>(\n prev: DataTableBodyRowProps<T>,\n next: DataTableBodyRowProps<T>,\n): boolean {\n const getRowVersion = next.getRowVersion;\n if (!getRowVersion) {\n return false;\n }\n return (\n prev.row.id === next.row.id &&\n getRowVersion(prev.row.original) === getRowVersion(next.row.original) &&\n prev.rowIndex === next.rowIndex &&\n prev.isExpanded === next.isExpanded &&\n prev.canExpand === next.canExpand &&\n prev.depth === next.depth &&\n prev.parentRowCanExpand === next.parentRowCanExpand &&\n prev.tableHasSubRows === next.tableHasSubRows &&\n prev.columnOrder === next.columnOrder &&\n prev.isSelected === next.isSelected &&\n prev.isSomeSelected === next.isSomeSelected &&\n prev.isAncestorSelected === next.isAncestorSelected &&\n prev.isReadOnly === next.isReadOnly\n );\n}\n\n/**\n * One body row plus an optional sibling `subComponent` slot. Hover and\n * selection paint via data attributes (including descendants) so they stay\n * off the React render path. Memoization is opt-in through `getRowVersion`.\n */\nexport const DataTableBodyRow = memo(\n DataTableBodyRowInner,\n areRowPropsEqual,\n) as typeof DataTableBodyRowInner;\n","import { useCallback, useMemo } from \"react\";\nimport type { Column, Table as TanstackTable } from \"@tanstack/react-table\";\n\n/**\n * Visual leaf-column order: pinned left, unpinned, then pinned right.\n * `columnIndexMap` maps each leaf `getIndex()` to that visual position.\n */\nexport const useColumnOrder = <T>({ table }: { table: TanstackTable<T> }) => {\n const getColumnIndexes = useCallback((column: Column<T>) => {\n if (column.columns?.length > 0) {\n return column.columns.map((c) => c.getIndex());\n }\n return [column.getIndex()];\n }, []);\n\n const columnOrder = useMemo(() => {\n const left: number[] = [];\n const right: number[] = [];\n const middle: number[] = [];\n\n table.getAllColumns().forEach((column) => {\n if (column.getIsPinned() === \"left\") {\n left.push(...getColumnIndexes(column));\n } else if (column.getIsPinned() === \"right\") {\n right.push(...getColumnIndexes(column));\n } else {\n middle.push(...getColumnIndexes(column));\n }\n });\n return left.concat(middle).concat(right);\n }, [table, getColumnIndexes]);\n\n const columnIndexMap = useMemo(() => {\n const map = new Map<number, number>();\n for (let i = 0; i < columnOrder.length; i++) {\n map.set(columnOrder[i], i);\n }\n return map;\n }, [columnOrder]);\n\n return {\n columnOrder,\n columnIndexMap,\n };\n};\n","import { type ComponentPropsWithoutRef, useMemo } from \"react\";\nimport type { Table as TanstackTable } from \"@tanstack/react-table\";\nimport { TableBody } from \"../../base/TableBody\";\nimport { DataTableBodyRow } from \"./DataTableBodyRow\";\nimport { useColumnOrder } from \"./useColumnOrder\";\nimport type { DataTableVirtualizer } from \"./useDataTableVirtualizer\";\nimport styles from \"./DataTableBody.module.scss\";\n\nexport type DataTableBodyProps<T> = {\n /** TanStack instance: row model, header-group count for row indices, column order. */\n table: TanstackTable<T>;\n /**\n * Table-wide grouping flag. Forwarded as `tableHasSubRows` so rows can\n * expose `aria-expanded` / `aria-level` even when they cannot expand.\n */\n hasSubRows: boolean;\n /**\n * When set, only visible virtual items render in an absolutely positioned\n * stack. When omitted, every row stays in the parent CSS grid.\n */\n virtualizer: DataTableVirtualizer | undefined;\n /**\n * Opt-in memo key forwarded to each row. When omitted, rows re-render with\n * this body. When set, skip re-render unless this value or table-managed\n * row UI state changes.\n */\n getRowVersion?: (row: T) => unknown;\n /**\n * Read-only rows keyed by id. Forwarded as `isReadOnly` so those rows gray\n * plain text and skip row-click. Selection checkbox disabling is gated\n * separately via `enableRowSelection`.\n */\n readOnlyRowMap: Record<string, boolean>;\n} & ComponentPropsWithoutRef<\"div\">;\n\nfunction NonVirtualizedContent<T>({\n table,\n hasSubRows,\n getRowVersion,\n readOnlyRowMap,\n}: {\n table: TanstackTable<T>;\n hasSubRows: boolean;\n getRowVersion?: (row: T) => unknown;\n readOnlyRowMap: Record<string, boolean>;\n}) {\n const { columnOrder, columnIndexMap } = useColumnOrder({ table });\n const headerCount = table.getHeaderGroups().length;\n return (\n <>\n {table.getRowModel().rows.map((row, rowIndex) => {\n const isAncestorSelected = row\n .getParentRows()\n .some((parent) => parent.getIsSelected());\n return (\n <DataTableBodyRow<T>\n columnOrder={columnOrder}\n columnIndexMap={columnIndexMap}\n key={row.id}\n row={row}\n rowIndex={rowIndex + headerCount}\n tableHasSubRows={hasSubRows}\n isExpanded={row.getIsExpanded()}\n canExpand={row.getCanExpand()}\n depth={row.depth}\n parentRowCanExpand={row.getParentRow()?.getCanExpand() ?? false}\n isSelected={row.getIsSelected()}\n isSomeSelected={row.getIsSomeSelected()}\n isAncestorSelected={isAncestorSelected}\n isReadOnly={!!readOnlyRowMap[row.id]}\n getRowVersion={getRowVersion}\n />\n );\n })}\n </>\n );\n}\n\nfunction VirtualizedContent<T>({\n table,\n hasSubRows,\n virtualizer,\n getRowVersion,\n readOnlyRowMap,\n}: {\n table: TanstackTable<T>;\n hasSubRows: boolean;\n virtualizer: DataTableVirtualizer;\n getRowVersion?: (row: T) => unknown;\n readOnlyRowMap: Record<string, boolean>;\n}) {\n const { columnOrder, columnIndexMap } = useColumnOrder({ table });\n const headerCount = table.getHeaderGroups().length;\n const rows = table.getRowModel().rows;\n const virtualItems = virtualizer.getVirtualItems();\n const totalSize = virtualizer.getTotalSize();\n\n const measureRef = useMemo(\n () => (el: HTMLDivElement | null) => {\n if (el) virtualizer.measureElement(el);\n },\n [virtualizer],\n );\n\n return (\n <div\n className={styles[\"data-table-body-virtualized\"]}\n // `:has([data-virtualized-body])` on TableBase switches the table from\n // CSS grid to block so header rows can use explicit template columns.\n data-virtualized-body=\"true\"\n style={{ height: `${totalSize}px` }}\n >\n {virtualItems.map((virtualRow) => {\n const row = rows[virtualRow.index];\n const isAncestorSelected = row\n .getParentRows()\n .some((parent) => parent.getIsSelected());\n return (\n <div\n key={row.id}\n ref={measureRef}\n data-index={virtualRow.index}\n className={styles[\"data-table-body-row-virtualized\"]}\n style={{ transform: `translateY(${virtualRow.start}px)` }}\n >\n <DataTableBodyRow<T>\n columnOrder={columnOrder}\n columnIndexMap={columnIndexMap}\n row={row}\n rowIndex={virtualRow.index + headerCount}\n tableHasSubRows={hasSubRows}\n isExpanded={row.getIsExpanded()}\n canExpand={row.getCanExpand()}\n depth={row.depth}\n parentRowCanExpand={row.getParentRow()?.getCanExpand() ?? false}\n isSelected={row.getIsSelected()}\n isSomeSelected={row.getIsSomeSelected()}\n isAncestorSelected={isAncestorSelected}\n isReadOnly={!!readOnlyRowMap[row.id]}\n getRowVersion={getRowVersion}\n />\n </div>\n );\n })}\n </div>\n );\n}\n\n/**\n * Data-table body. Maps TanStack rows through `TableBody` to\n * `DataTableBodyRow`, forwarding grouping, read-only, and memo keys.\n */\nexport function DataTableBody<T>(props: DataTableBodyProps<T>) {\n const {\n table,\n hasSubRows,\n virtualizer,\n getRowVersion,\n readOnlyRowMap,\n ...rest\n } = props;\n return (\n <TableBody type=\"data-table\" {...rest}>\n {virtualizer ? (\n <VirtualizedContent\n table={table}\n hasSubRows={hasSubRows}\n virtualizer={virtualizer}\n getRowVersion={getRowVersion}\n readOnlyRowMap={readOnlyRowMap}\n />\n ) : (\n <NonVirtualizedContent\n table={table}\n hasSubRows={hasSubRows}\n getRowVersion={getRowVersion}\n readOnlyRowMap={readOnlyRowMap}\n />\n )}\n </TableBody>\n );\n}\n","import type { ComponentPropsWithoutRef } from \"react\";\nimport cx from \"classnames\";\n\nimport styles from \"./TableFooter.module.scss\";\n\n/**\n * Selects native table-footer markup or an ARIA row group from the\n * corresponding prop branch.\n */\nexport type TableFooterProps =\n | ({\n /** Renders a native `tfoot`. */\n type: \"simple\";\n } & ComponentPropsWithoutRef<\"tfoot\">)\n | ({\n /** Renders a `rowgroup` for an ARIA grid. */\n type: \"data-table\";\n } & ComponentPropsWithoutRef<\"div\">);\n\n/**\n * Sticky footer region for a native table or ARIA data grid.\n */\nexport function TableFooter({ type, children, ...rest }: TableFooterProps) {\n const classes = cx(styles[\"table-footer\"], rest.className);\n const Element = type === \"simple\" ? \"tfoot\" : \"div\";\n\n return (\n <Element\n {...rest}\n className={classes}\n role={type === \"simple\" ? undefined : \"rowgroup\"}\n >\n {children}\n </Element>\n );\n}\n","import { type ComponentPropsWithoutRef, forwardRef } from \"react\";\nimport cx from \"classnames\";\n\nimport styles from \"./TableCells.module.scss\";\n\nexport type SimpleTableFooterCellProps = ComponentPropsWithoutRef<\"td\"> & {\n colSpan?: number;\n};\n\nexport type DataTableFooterCellProps = ComponentPropsWithoutRef<\"div\"> & {\n /** Number of logical columns represented by this footer cell. */\n colSpan?: number;\n};\n\n/**\n * Selects a native or ARIA footer cell from the corresponding prop branch.\n */\nexport type TableFooterCellProps =\n | ({\n /** Renders a native `td`. */\n type: \"simple\";\n } & SimpleTableFooterCellProps)\n | ({\n /** Renders a `gridcell` for an ARIA grid. */\n type: \"data-table\";\n } & DataTableFooterCellProps);\n\n/**\n * Footer cell for a native table or ARIA data grid.\n */\nexport const TableFooterCell = forwardRef<\n HTMLTableCellElement | HTMLDivElement,\n TableFooterCellProps\n>((props, ref) => {\n const { type, children, className, ...rest } = props;\n\n const classes = cx(styles[\"table-footer-cell\"], className);\n const CellElement = type === \"simple\" ? \"td\" : \"div\";\n\n return (\n <CellElement\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- could be table cell or div\n ref={ref as any}\n data-anv=\"table-footer-cell\"\n {...rest}\n className={classes}\n role={type === \"simple\" ? undefined : \"gridcell\"}\n >\n {children}\n </CellElement>\n );\n});\n\nTableFooterCell.displayName = \"TableFooterCell\";\n","import { useCallback, useRef } from \"react\";\nimport cx from \"classnames\";\n\nimport { TableFooterCell } from \"../../../base/cells/TableFooterCell\";\nimport type { DataTableFooterCellProps as BaseDataTableFooterCellProps } from \"../../../base/cells/TableFooterCell\";\n\nimport styles from \"./DataTableCells.module.scss\";\nimport { useDTFocusDispatchContext } from \"../context/focus/useDTFocusDispatchContext\";\nimport { formatCellPositionString } from \"../util/cellPositionHelpers\";\n\nexport type DataTableFooterCellProps = BaseDataTableFooterCellProps & {\n /** Grid coordinates used for roving tabindex and `data-cell-pos`. */\n cellPosition: { rowIndex: number; columnIndex: number };\n};\n\n/**\n * Footer gridcell. Tabindex is written by `DTFocusProvider`; this cell only\n * handles arrow/Home/End movement.\n */\nexport function DataTableFooterCell(props: DataTableFooterCellProps) {\n const { cellPosition, children, className, ...rest } = props;\n\n const footerCellRef = useRef<HTMLDivElement>(null);\n\n const { jumpFocus, moveFocus } = useDTFocusDispatchContext();\n\n const handleKeyDown = useCallback(\n (event: React.KeyboardEvent<HTMLTableCellElement>) => {\n switch (event.key) {\n case \"ArrowUp\":\n event.preventDefault();\n moveFocus(\"up\");\n return;\n case \"ArrowDown\":\n event.preventDefault();\n moveFocus(\"down\");\n return;\n case \"ArrowLeft\":\n event.preventDefault();\n moveFocus(\"left\");\n return;\n case \"ArrowRight\":\n event.preventDefault();\n moveFocus(\"right\");\n return;\n case \"Home\": {\n event.preventDefault();\n jumpFocus(\"left\");\n return;\n }\n case \"End\": {\n event.preventDefault();\n jumpFocus(\"right\");\n return;\n }\n default:\n break;\n }\n },\n [moveFocus, jumpFocus],\n );\n\n return (\n <TableFooterCell\n type=\"data-table\"\n {...rest}\n ref={footerCellRef}\n tabIndex={-1}\n onKeyDown={handleKeyDown}\n className={cx(styles[\"data-table-footer-cell\"], className)}\n data-cell-pos={formatCellPositionString(cellPosition)}\n >\n {children}\n </TableFooterCell>\n );\n}\n","import type { ComponentPropsWithoutRef } from \"react\";\nimport type { Table as TanstackTable } from \"@tanstack/react-table\";\nimport cx from \"classnames\";\n\nimport { getCommonPinningStyles } from \"../../internal/getCommonPinningStyles\";\nimport { getCommonPinningClasses } from \"../../internal/getCommonPinningClasses\";\n\nimport type { ColumnDef } from \"../../types\";\nimport type { DataTableProps, DataTableRowData } from \"../DataTable\";\nimport { TableFooter } from \"../../base/TableFooter\";\nimport { DataTableFooterCell } from \"./cells/DataTableFooterCell\";\n\nimport styles from \"./DataTableFooter.module.scss\";\nimport { useColumnOrder } from \"./useColumnOrder\";\n\nexport type DefaultTableFooterRowsProps<T extends DataTableRowData> = {\n /** Supplies header/row counts for `aria-rowindex` and the visual column order. */\n table: TanstackTable<T>;\n /**\n * Column tree used to look up `footerContent` on leaves. Group columns are\n * skipped so nested headers do not get a footer cell.\n */\n columns: ColumnDef<T>[];\n};\n\nexport type CustomTableFooterRowsProps<T extends DataTableRowData> = {\n /**\n * Visible leaf header count (`table.getFlatHeaders().length`).\n */\n columnCount: number;\n /** Row-major `{ content, colSpan }` cells for the custom path. */\n customFooter: DataTableProps<T>[\"customFooter\"];\n /** Supplies header/row counts for `aria-rowindex`. */\n table: TanstackTable<T>;\n};\n\nexport type DataTableFooterProps<T extends DataTableRowData> = {\n /** Supplies header/row counts for `aria-rowindex` and the visual column order. */\n table: TanstackTable<T>;\n /**\n * Column tree for leaf `footerContent`. Array values become extra rows; a\n * scalar fills row 0.\n */\n columns: ColumnDef<T>[];\n /**\n * Row-major custom cells. When set (even empty), this path is used instead\n * of column `footerContent`.\n */\n customFooter?: DataTableProps<T>[\"customFooter\"];\n} & ComponentPropsWithoutRef<\"div\">;\n\nfunction DefaultTableFooterRows<T extends DataTableRowData>({\n table,\n columns,\n}: DefaultTableFooterRowsProps<T>) {\n const findColumnById = (\n cols: ColumnDef<T>[],\n id: string,\n ): ColumnDef<T> | undefined => {\n for (const col of cols) {\n if (col.id === id) {\n return col;\n }\n if (col.columns && Array.isArray(col.columns)) {\n const found = findColumnById(col.columns, id);\n if (found) {\n return found;\n }\n }\n }\n return undefined;\n };\n\n const getMaxFooterRows = (column: ColumnDef<T>): number => {\n let currentMax = 0;\n\n if (Array.isArray(column.footerContent)) {\n currentMax = column.footerContent.length;\n } else if (column.footerContent) {\n currentMax = 1;\n }\n\n if (column.columns && Array.isArray(column.columns)) {\n const nestedMax = Math.max(\n ...column.columns.map((nestedCol) => getMaxFooterRows(nestedCol)),\n 0,\n );\n currentMax = Math.max(currentMax, nestedMax);\n }\n\n return currentMax;\n };\n\n const maxFooterRows = Math.max(\n ...columns.map((column) => getMaxFooterRows(column)),\n 1,\n );\n\n const { columnOrder } = useColumnOrder({ table });\n\n return Array.from({ length: maxFooterRows }, (_, footerIndex) => {\n const rowIndex =\n footerIndex +\n table.getHeaderGroups().length +\n table.getRowModel().rows.length;\n return (\n <div\n key={`footer-row-${rowIndex}`}\n role=\"row\"\n data-anv=\"table-footer-row\"\n className={styles[\"data-table-footer-row\"]}\n aria-rowindex={rowIndex + 1}\n >\n {table\n .getFlatHeaders()\n .filter((header) => {\n const column = findColumnById(columns, header.column.id);\n return !column?.columns || column.columns.length === 0;\n })\n .map((header) => {\n const column = findColumnById(columns, header.column.id);\n\n let footerContent = null;\n if (Array.isArray(column?.footerContent)) {\n footerContent = column.footerContent[footerIndex] || null;\n } else if (column?.footerContent && footerIndex === 0) {\n footerContent = column.footerContent;\n }\n\n const columnIndex = columnOrder.indexOf(header.column.getIndex());\n\n return (\n <DataTableFooterCell\n key={header.id}\n className={getCommonPinningClasses(header.column)}\n style={getCommonPinningStyles(header.column)}\n cellPosition={{ rowIndex, columnIndex }}\n >\n {footerContent}\n </DataTableFooterCell>\n );\n })}\n </div>\n );\n });\n}\n\nfunction CustomTableFooterRows<T extends DataTableRowData>({\n customFooter,\n columnCount,\n table,\n}: CustomTableFooterRowsProps<T>) {\n return customFooter?.map((footerRow, footerIndex) => {\n const rowIndex =\n footerIndex +\n table.getHeaderGroups().length +\n table.getRowModel().rows.length;\n return (\n <div\n key={footerIndex}\n role=\"row\"\n data-anv=\"table-footer-row\"\n className={styles[\"data-table-footer-row\"]}\n aria-rowindex={rowIndex + 1}\n >\n {(() => {\n let columnIndex = 0;\n return Array.from({\n // Slot count = visible columns − extra span beyond 1 per cell.\n length:\n columnCount -\n footerRow.reduce((acc, curr) => acc + curr.colSpan, 0) +\n footerRow.length,\n }).map((_, index) => {\n const footer = footerRow[index] ?? { content: \"\", colSpan: 1 };\n const gridColumn =\n footer.colSpan > 1 ? `span ${footer.colSpan}` : undefined;\n\n const cell = (\n <DataTableFooterCell\n key={index}\n colSpan={footer.colSpan}\n style={{\n gridColumn,\n }}\n cellPosition={{ rowIndex, columnIndex }}\n >\n {footer.content}\n </DataTableFooterCell>\n );\n\n columnIndex += footer.colSpan;\n return cell;\n });\n })()}\n </div>\n );\n });\n}\n\n/**\n * Footer region. `customFooter` replaces column `footerContent` when set.\n * `aria-rowindex` continues after header and body rows.\n */\nexport function DataTableFooter<T extends DataTableRowData>({\n table,\n customFooter,\n columns,\n ...rest\n}: DataTableFooterProps<T>) {\n const columnCount = table.getFlatHeaders().length;\n const classes = cx(styles[\"data-table-footer\"], rest.className);\n\n return (\n <TableFooter type=\"data-table\" {...rest} className={classes}>\n {customFooter ? (\n <CustomTableFooterRows\n table={table}\n customFooter={customFooter}\n columnCount={columnCount}\n />\n ) : (\n <DefaultTableFooterRows table={table} columns={columns} />\n )}\n </TableFooter>\n );\n}\n","import { useEffect, useState, type RefObject } from \"react\";\n\n/**\n * Whether the nearest `[data-anv=\"table-body-cell\"]` ancestor currently\n * contains focus. Starts `false` until a `focusin` on that cell.\n */\nexport function useCellFocusListener(\n elementRef: RefObject<HTMLElement>,\n): boolean {\n const [isFocused, setIsFocused] = useState(false);\n\n useEffect(() => {\n const el = elementRef.current;\n if (!el) return;\n const cell = el.closest<HTMLElement>('[data-anv=\"table-body-cell\"]');\n if (!cell) return;\n\n const onFocusIn = () => setIsFocused(true);\n const onFocusOut = (e: FocusEvent) => {\n if (!cell.contains(e.relatedTarget as Node)) setIsFocused(false);\n };\n cell.addEventListener(\"focusin\", onFocusIn);\n cell.addEventListener(\"focusout\", onFocusOut);\n return () => {\n cell.removeEventListener(\"focusin\", onFocusIn);\n cell.removeEventListener(\"focusout\", onFocusOut);\n };\n }, [elementRef]);\n\n return isFocused;\n}\n","import { StatusIcon } from \"../../../../../../internal/components/StatusIcon\";\nimport styles from \"./DataTableCells.module.scss\";\nimport { Tooltip } from \"../../../../../../components\";\nimport { useCellFocusListener } from \"./useCellFocusListener\";\nimport { useRef, useState } from \"react\";\n\nexport type CellStatusProps = {\n /**\n * `true` shows the icon only. A string is the tooltip and is appended to the\n * icon's accessible name.\n */\n status: boolean | string;\n /** Picks the icon, color, and default accessible name. */\n variant: \"error\" | \"warning\";\n};\n\nconst variantConfig = {\n error: {\n className: \"cell-error-icon\",\n label: \"Cell has an error\",\n },\n warning: {\n className: \"cell-warning-icon\",\n label: \"Cell has a warning\",\n },\n} as const;\n\n/**\n * Error or warning icon for a cell. A string `status` also opens a tooltip\n * while the cell is focused or the icon is hovered.\n */\nexport function CellStatus({ status, variant }: CellStatusProps) {\n const message = typeof status === \"string\" ? status : undefined;\n const ref = useRef<HTMLSpanElement>(null);\n const isCellFocused = useCellFocusListener(ref);\n const [isHovered, setIsHovered] = useState(false);\n const config = variantConfig[variant];\n\n const icon = (\n <StatusIcon\n variant={variant}\n size=\"small\"\n className={styles[config.className]}\n rootProps={{\n \"aria-label\": message\n ? `${config.label}: ${message}`\n : `${config.label}.`,\n }}\n />\n );\n\n if (!message) {\n return (\n <span ref={ref} className={styles[\"cell-status\"]}>\n {icon}\n </span>\n );\n }\n\n const isTooltipOpen = isCellFocused || isHovered;\n\n return (\n <Tooltip open={isTooltipOpen}>\n {/* Tooltip stays controlled; hover is tracked locally so keyboard-open\n does not fight Tooltip's internal hover state. */}\n <Tooltip.Trigger\n ref={ref}\n className={styles[\"cell-status\"]}\n onMouseEnter={() => setIsHovered(true)}\n onMouseLeave={() => setIsHovered(false)}\n >\n {icon}\n </Tooltip.Trigger>\n <Tooltip.Content>{message}</Tooltip.Content>\n </Tooltip>\n );\n}\n","import { createColumnHelper, type ColumnHelper } from \"@tanstack/react-table\";\n\nimport { FieldLabel } from \"../../../../../../components/FieldLabel\";\nimport cellContentStyles from \"../cells/DataTableCells.module.scss\";\n\nimport { type ReactNode, Fragment, isValidElement } from \"react\";\nimport cx from \"classnames\";\n\nimport type {\n ColumnDef,\n ColumnHeader,\n ColumnReadRenderContext,\n ColumnReadRenderResult,\n ColumnType,\n ColumnTypeConfig,\n EditMode,\n TableRow,\n} from \"../../../types\";\n\nimport { TableEmptyCellContent } from \"../../../base/cells/TableEmptyCellContent\";\nimport { CellStatus } from \"../cells/CellStatus\";\nimport {\n getColumnTypeDefaults,\n resolveColumnTypeConfig,\n} from \"../../../columnTypeDefaults\";\n\ndeclare module \"@tanstack/react-table\" {\n interface ColumnMeta<TData, TValue> {\n editMode?: EditMode;\n editConfig?: ColumnDef<TData>[\"editConfig\"];\n overflow?: ColumnDef<TData>[\"overflow\"];\n /** Original Anvil column def, for type narrowing in cell helpers. */\n columnDef?: ColumnDef<TData>;\n /**\n * Custom read display metadata shared between rendering, editing, and sorting.\n */\n readRenderResult?: ColumnReadRenderResult;\n getCellText?: (\n value: TValue,\n context: { row: TableRow<TData>; depth: number },\n ) => string;\n getReadRenderResult?: (\n value: TValue,\n context: { row: TableRow<TData>; depth: number },\n ) => ColumnReadRenderResult;\n /** Hides expand-all / select-all in this internal column's header. */\n disableHeaderAction?: boolean;\n headerAlign?: HeaderAlign;\n isGroupHeader?: boolean;\n }\n}\n\nexport type TanStackColumnDefProps<T> = {\n /** Leaf or group; groups recurse via `columns`. */\n columnDef: ColumnDef<T>;\n emptyCellContent?: ReactNode;\n};\n\ntype TanStackColumnDef<T extends object> =\n | ReturnType<ColumnHelper<T>[\"group\"]>\n | ReturnType<ColumnHelper<T>[\"accessor\"]>;\n\ntype LeafColumnDef<T> = Extract<ColumnDef<T>, { columns?: undefined }>;\n\ntype HeaderAlign = \"start\" | \"center\" | \"end\";\n\ntype HeaderJustifyContent = \"flex-start\" | \"center\" | \"flex-end\";\n\ntype NormalizedColumnHeader = ColumnHeader & {\n label: string;\n};\n\nfunction getColumnReadRenderResult<T extends object>({\n value,\n context,\n renderCell,\n getCellText,\n getReadRenderResult,\n}: {\n value: T[keyof T];\n context: ColumnReadRenderContext<TableRow<T>>;\n renderCell?: LeafColumnDef<T>[\"renderCell\"];\n getCellText?: LeafColumnDef<T>[\"getCellText\"];\n getReadRenderResult?: LeafColumnDef<T>[\"getReadRenderResult\"];\n}): ColumnReadRenderResult {\n if (getReadRenderResult) {\n return getReadRenderResult(value, context);\n }\n\n const rawString = getCellText?.(value, context);\n\n if (renderCell) {\n const content = renderCell(value, context);\n\n return {\n content,\n rawString:\n rawString ?? (typeof content === \"string\" ? content : undefined),\n };\n }\n\n return {\n content: renderRawCellValue(value),\n rawString: rawString ?? (typeof value === \"string\" ? value : undefined),\n };\n}\n\nfunction resolveHeaderAlign<T extends object>(\n align?: ColumnDef<T>[\"align\"],\n isGroup = false,\n): HeaderAlign {\n if (isGroup) {\n return \"start\";\n }\n\n return align ?? \"start\";\n}\n\nfunction getHeaderJustifyContent(align: HeaderAlign): HeaderJustifyContent {\n if (align === \"center\") {\n return \"center\";\n }\n\n if (align === \"end\") {\n return \"flex-end\";\n }\n\n return \"flex-start\";\n}\n\nfunction normalizeColumnHeader<T extends object>(\n columnDef: ColumnDef<T>,\n): NormalizedColumnHeader {\n return {\n label:\n columnDef.header?.label ?? columnDef.headerLabel ?? String(columnDef.id),\n required: columnDef.header?.required,\n moreInfo: columnDef.header?.moreInfo,\n };\n}\n\nfunction renderColumnHeader<T extends object>(\n header: NormalizedColumnHeader,\n {\n align,\n isGroup = false,\n }: {\n align?: ColumnDef<T>[\"align\"];\n isGroup?: boolean;\n },\n) {\n const resolvedAlign = resolveHeaderAlign(align, isGroup);\n\n return (\n <div\n data-a2-datatable-header-wrapper=\"true\"\n data-a2-datatable-header-align={resolvedAlign}\n data-a2-datatable-header-kind={isGroup ? \"group\" : \"leaf\"}\n style={{\n justifyContent: getHeaderJustifyContent(resolvedAlign),\n maxWidth: \"100%\",\n width: \"fit-content\",\n }}\n >\n <div\n data-a2-datatable-header-content=\"true\"\n style={{ maxWidth: \"100%\", width: \"fit-content\" }}\n >\n <FieldLabel\n el=\"div\"\n required={header.required}\n moreInfo={header.moreInfo}\n style={{\n maxWidth: \"100%\",\n textAlign: resolvedAlign,\n width: \"fit-content\",\n }}\n >\n {header.label}\n </FieldLabel>\n </div>\n </div>\n );\n}\n\nfunction renderRawCellValue<TValue>(value: TValue): ReactNode {\n if (value === null || value === undefined) {\n return null;\n }\n\n if (value === \"\") {\n return \"\";\n }\n\n if (\n typeof value === \"string\" ||\n typeof value === \"number\" ||\n typeof value === \"bigint\"\n ) {\n return value;\n }\n\n if (typeof value === \"boolean\") {\n return String(value);\n }\n\n if (typeof value === \"symbol\") {\n return value.toString();\n }\n\n if (typeof value === \"object\" && isValidElement(value)) {\n return value;\n }\n\n if (Array.isArray(value)) {\n return value.map((item, index) => (\n <Fragment key={index}>{renderRawCellValue(item)}</Fragment>\n ));\n }\n\n return String(value);\n}\n\n/**\n * Translates an Anvil {@link ColumnDef} into a TanStack column, storing the\n * original def on `meta.columnDef` for later type narrowing.\n */\nexport function getTanStackColumnDef<T extends object>({\n columnDef,\n emptyCellContent,\n}: TanStackColumnDefProps<T>): TanStackColumnDef<T> {\n const normalizedHeader = normalizeColumnHeader(columnDef);\n\n const columnHelper = createColumnHelper<T>();\n\n if (columnDef.columns && columnDef.columns.length > 0) {\n return columnHelper.group({\n id: columnDef.id as string,\n header: () =>\n renderColumnHeader(normalizedHeader, {\n align: columnDef.align,\n isGroup: true,\n }),\n columns: columnDef.columns.map((column) =>\n getTanStackColumnDef({\n columnDef: column,\n emptyCellContent,\n }),\n ),\n meta: {\n columnDef,\n headerAlign: resolveHeaderAlign(columnDef.align, true),\n isGroupHeader: true,\n },\n footer: columnDef.footerContent\n ? () => columnDef.footerContent\n : undefined,\n enableResizing: columnDef.resizable,\n }) as TanStackColumnDef<T>;\n }\n\n const leafColumnDef = columnDef as LeafColumnDef<T>;\n\n let resolvedAlign = leafColumnDef.align;\n let resolvedRenderCell = leafColumnDef.renderCell;\n\n if (leafColumnDef.type) {\n const [columnType, typeOptions] = resolveColumnTypeConfig(\n leafColumnDef.type as ColumnTypeConfig<ColumnType>,\n );\n const typeDefaults = getColumnTypeDefaults(columnType);\n\n if (resolvedAlign === undefined) {\n resolvedAlign = typeDefaults.align;\n }\n if (resolvedRenderCell === undefined) {\n resolvedRenderCell = typeDefaults.createRenderCell(\n typeOptions,\n ) as typeof resolvedRenderCell;\n }\n }\n\n const resolvedEmptyContent = leafColumnDef.emptyCellContent ??\n emptyCellContent ?? <TableEmptyCellContent />;\n\n const metaColumnDef = {\n ...columnDef,\n headerLabel: normalizedHeader.label,\n };\n\n const resolveReadRenderResult = (\n value: T[keyof T],\n context: { row: TableRow<T>; depth: number },\n ) =>\n getColumnReadRenderResult<T>({\n value,\n context,\n renderCell: resolvedRenderCell,\n getCellText: leafColumnDef.getCellText,\n getReadRenderResult: leafColumnDef.getReadRenderResult,\n });\n\n // Custom editors sort on `rawString` when `sortable` is `true`. A sortable\n // function later in this object replaces this `sortingFn`.\n const shouldUseCustomReadStringSorting =\n leafColumnDef.editConfig?.mode === \"custom\" &&\n leafColumnDef.sortable === true;\n\n return columnHelper.accessor((row) => row[leafColumnDef.id], {\n id: leafColumnDef.id as string,\n cell: (info) => {\n const rawCellValue = info.row.original[leafColumnDef.id];\n const readRenderResult = resolveReadRenderResult(rawCellValue, {\n row: info.row.original as TableRow<T>,\n depth: info.row.depth,\n });\n\n let cellContent = readRenderResult.content;\n if (cellContent === \"\") {\n cellContent = resolvedEmptyContent;\n }\n\n const meta = (info.row.original as TableRow<T>).meta;\n const cellError = meta?.errors?.[leafColumnDef.id as keyof T];\n const cellWarning = meta?.warnings?.[leafColumnDef.id as keyof T];\n\n return (\n <div\n className={cx(cellContentStyles[\"data-table-cell-content\"], {\n [cellContentStyles[\"data-table-cell-overflow-content\"]]:\n leafColumnDef.overflow,\n })}\n data-align={resolvedAlign ?? \"start\"}\n >\n {cellError ? (\n <CellStatus status={cellError} variant=\"error\" />\n ) : cellWarning ? (\n <CellStatus status={cellWarning} variant=\"warning\" />\n ) : null}\n {cellContent ?? resolvedEmptyContent}\n </div>\n );\n },\n header: () =>\n renderColumnHeader(normalizedHeader, {\n align: resolvedAlign,\n }),\n footer: leafColumnDef.footerContent\n ? () => leafColumnDef.footerContent\n : undefined,\n minSize: leafColumnDef.minWidth,\n maxSize: leafColumnDef.maxWidth,\n // TanStack's `size` is the column's starting width — we use `defaultWidth`\n // when provided and fall back to `minWidth` so the auto-sizing basis\n // matches the manual-resize floor by default.\n size: leafColumnDef.defaultWidth ?? leafColumnDef.minWidth,\n enableResizing: leafColumnDef.resizable,\n enableSorting: !!leafColumnDef.sortable,\n meta: {\n editMode: leafColumnDef.editConfig?.mode,\n editConfig: leafColumnDef.editConfig,\n // Editable cells own the surface; overflow disclosure is not used.\n overflow: leafColumnDef.editConfig ? undefined : leafColumnDef.overflow,\n columnDef: metaColumnDef,\n getReadRenderResult: (value, context) =>\n resolveReadRenderResult(value as T[keyof T], context),\n headerAlign: resolveHeaderAlign(resolvedAlign),\n isGroupHeader: false,\n },\n\n ...(shouldUseCustomReadStringSorting\n ? {\n sortingFn: (rowA, rowB) => {\n const rawStringA = resolveReadRenderResult(\n rowA.original[leafColumnDef.id],\n {\n row: rowA.original as TableRow<T>,\n depth: rowA.depth,\n },\n ).rawString;\n const rawStringB = resolveReadRenderResult(\n rowB.original[leafColumnDef.id],\n {\n row: rowB.original as TableRow<T>,\n depth: rowB.depth,\n },\n ).rawString;\n\n if (\n typeof rawStringA !== \"string\" ||\n typeof rawStringB !== \"string\"\n ) {\n return 0;\n }\n\n return rawStringA.localeCompare(rawStringB);\n },\n }\n : undefined),\n\n ...(leafColumnDef.sortable && typeof leafColumnDef.sortable === \"function\"\n ? {\n sortingFn: (rowA, rowB) => {\n if (typeof leafColumnDef.sortable === \"function\") {\n return leafColumnDef.sortable(\n rowA.original[leafColumnDef.id],\n rowB.original[leafColumnDef.id],\n );\n }\n return 0;\n },\n }\n : undefined),\n }) as TanStackColumnDef<T>;\n}\n","import type { SortingState } from \"@tanstack/react-table\";\n\n/** Same length and matching `id`/`desc` at each index; ignores extra fields. */\nexport function shallowSortingEqual(a: SortingState, b: SortingState): boolean {\n if (a.length !== b.length) return false;\n for (let i = 0; i < a.length; i++) {\n if (a[i].id !== b[i].id || a[i].desc !== b[i].desc) return false;\n }\n return true;\n}\n","import * as React from \"react\";\nconst SvgArrowUpward = (props) => /* @__PURE__ */ React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", width: \"1em\", height: \"1em\", viewBox: \"0 0 24 24\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M13 19V7.83l4.88 4.88c.39.39 1.03.39 1.42 0a.996.996 0 0 0 0-1.41l-6.59-6.59a.996.996 0 0 0-1.41 0l-6.6 6.58a.996.996 0 1 0 1.41 1.41L11 7.83V19c0 .55.45 1 1 1s1-.45 1-1z\" }));\nexport default SvgArrowUpward;\n","import * as React from \"react\";\nconst SvgArrowDownward = (props) => /* @__PURE__ */ React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", width: \"1em\", height: \"1em\", viewBox: \"0 0 24 24\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M11 5v11.17l-4.88-4.88c-.39-.39-1.03-.39-1.42 0a.996.996 0 0 0 0 1.41l6.59 6.59c.39.39 1.02.39 1.41 0l6.59-6.59a.996.996 0 1 0-1.41-1.41L13 16.17V5c0-.55-.45-1-1-1s-1 .45-1 1z\" }));\nexport default SvgArrowDownward;\n","import type { ComponentPropsWithoutRef } from \"react\";\nimport cx from \"classnames\";\n\nimport styles from \"./TableHeader.module.scss\";\n\n/**\n * Selects native table-header markup or an ARIA row group from the\n * corresponding prop branch.\n */\nexport type TableHeaderProps =\n | ({\n /** Renders a native `thead`. */\n type: \"simple\";\n } & ComponentPropsWithoutRef<\"thead\">)\n | ({\n /** Renders a `rowgroup` for an ARIA grid. */\n type: \"data-table\";\n } & ComponentPropsWithoutRef<\"div\">);\n\n/**\n * Sticky header region for a native table or ARIA data grid.\n */\nexport function TableHeader({ type, children, ...rest }: TableHeaderProps) {\n const classes = cx(styles[\"table-header\"], rest.className);\n\n const Element = type === \"simple\" ? \"thead\" : \"div\";\n return (\n <Element\n {...rest}\n className={classes}\n role={type === \"simple\" ? undefined : \"rowgroup\"}\n >\n {children}\n </Element>\n );\n}\n","import { type ComponentPropsWithoutRef, forwardRef } from \"react\";\nimport cx from \"classnames\";\n\nimport type { CommonTableCellProps } from \"./types\";\n\nimport styles from \"./TableCells.module.scss\";\n\nexport type CommonTableHeaderCellProps = CommonTableCellProps & {\n /** Shows a column-group divider except on the last cell in the row. */\n isGroup?: boolean;\n /** Shows the interactive cursor for a sortable column. */\n isSortable?: boolean;\n /** Shows the interactive cursor when the whole header cell activates an action. */\n isInteractiveHeaderCell?: boolean;\n};\n\nexport type SimpleTableHeaderCellProps = CommonTableHeaderCellProps &\n ComponentPropsWithoutRef<\"th\">;\n\nexport type DataTableHeaderCellProps = CommonTableHeaderCellProps &\n ComponentPropsWithoutRef<\"div\">;\n\n/**\n * Selects a native or ARIA column-header cell from the corresponding prop\n * branch.\n */\nexport type TableHeaderCellProps =\n | ({\n /** Renders a native `th`. */\n type: \"simple\";\n } & SimpleTableHeaderCellProps)\n | ({\n /** Renders a `columnheader` for an ARIA grid. */\n type: \"data-table\";\n } & DataTableHeaderCellProps);\n\n/**\n * Header cell for a native table or ARIA data grid.\n */\nexport const TableHeaderCell = forwardRef<\n HTMLTableCellElement | HTMLDivElement,\n TableHeaderCellProps\n>(\n (\n {\n type,\n children,\n className,\n isGroup,\n isSortable,\n isInteractiveHeaderCell,\n isSelectCell,\n isExpandCell,\n ...rest\n },\n ref,\n ) => {\n const classes = cx(styles[\"table-header-cell\"], className, {\n [styles[\"table-header-cell-group\"]]: isGroup,\n [styles[\"table-header-cell-sortable\"]]: isSortable,\n [styles[\"table-header-cell-interactive\"]]: isInteractiveHeaderCell,\n [styles[\"table-cell-internal-expand\"]]: isExpandCell,\n [styles[\"table-cell-internal-select\"]]: isSelectCell,\n });\n const CellElement = type === \"simple\" ? \"th\" : \"div\";\n\n return (\n <CellElement\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- could be table cell or div\n ref={ref as any}\n data-anv=\"table-header-cell\"\n {...rest}\n className={classes}\n role={type === \"simple\" ? undefined : \"columnheader\"}\n >\n {children}\n </CellElement>\n );\n },\n);\n\nTableHeaderCell.displayName = \"TableHeaderCell\";\n","import { forwardRef, type Ref, useCallback, useRef } from \"react\";\nimport cx from \"classnames\";\n\nimport { TableHeaderCell } from \"../../../base/cells/TableHeaderCell\";\nimport type { HeaderContext } from \"@tanstack/react-table\";\nimport type { DataTableHeaderCellProps as BaseDataTableHeaderCellProps } from \"../../../base/cells/TableHeaderCell\";\nimport { SrOnly } from \"../../../../../../components\";\n\nimport styles from \"./DataTableCells.module.scss\";\nimport { useDTFocusDispatchContext } from \"../context/focus/useDTFocusDispatchContext\";\nimport { formatCellPositionString } from \"../util/cellPositionHelpers\";\nimport {\n INTERNAL_ROW_ACTION_PRIMARY_COLUMN_ID,\n INTERNAL_ROW_ACTION_SECONDARY_COLUMN_ID,\n} from \"../constants\";\nimport { ANV_PART_ATTR } from \"../../../../../../internal/constants/anvParts\";\nimport { PARTS } from \"../../parts\";\n\nconst INTERACTIVE_DESCENDANT_SELECTOR = [\n \"button\",\n \"a[href]\",\n \"input\",\n \"select\",\n \"textarea\",\n '[role=\"button\"]',\n '[role=\"link\"]',\n '[contenteditable=\"true\"]',\n].join(\", \");\n\nfunction isInteractiveDescendant(\n target: EventTarget | null,\n currentTarget: HTMLElement,\n) {\n if (!(target instanceof Element)) {\n return false;\n }\n\n const interactiveElement = target.closest(INTERACTIVE_DESCENDANT_SELECTOR);\n\n return !!interactiveElement && currentTarget.contains(interactiveElement);\n}\n\nexport type DataTableHeaderCellProps<T, TValue> =\n BaseDataTableHeaderCellProps & {\n /** Coordinates used by the grid's roving-focus manager. */\n cellPosition: { rowIndex: number; columnIndex: number };\n /** Supplies column actions and sort state for this rendered header. */\n header: HeaderContext<T, TValue>;\n };\n\nfunction DataTableHeaderCellInner<T, TValue>(\n props: DataTableHeaderCellProps<T, TValue>,\n forwardedRef: Ref<HTMLDivElement>,\n) {\n const { cellPosition, children, header, className, ...rest } = props;\n\n const internalRef = useRef<HTMLDivElement>(null);\n\n const setRefs = useCallback(\n (element: HTMLDivElement | null) => {\n (internalRef as React.MutableRefObject<HTMLDivElement | null>).current =\n element;\n if (typeof forwardedRef === \"function\") {\n forwardedRef(element);\n } else if (forwardedRef) {\n (\n forwardedRef as React.MutableRefObject<HTMLDivElement | null>\n ).current = element;\n }\n },\n [forwardedRef],\n );\n\n // A resize drag can end outside its handle and retarget the resulting click\n // to the header cell; preserve where the interaction began to avoid sorting.\n const startedOnResizeHandleRef = useRef(false);\n\n const { jumpFocus, moveFocus } = useDTFocusDispatchContext();\n\n const columnId = header.column.id;\n const isExpandCell = columnId === INTERNAL_ROW_ACTION_PRIMARY_COLUMN_ID;\n const isSelectCell = columnId === INTERNAL_ROW_ACTION_SECONDARY_COLUMN_ID;\n const isSortingCell = header.column.getCanSort();\n\n const handleKeyDown = useCallback(\n (event: React.KeyboardEvent<HTMLDivElement>) => {\n switch (event.key) {\n case \"ArrowUp\":\n event.preventDefault();\n moveFocus(\"up\");\n return;\n case \"ArrowDown\":\n event.preventDefault();\n moveFocus(\"down\");\n return;\n case \"ArrowLeft\":\n event.preventDefault();\n moveFocus(\"left\");\n return;\n case \"ArrowRight\":\n event.preventDefault();\n moveFocus(\"right\");\n return;\n case \"Home\": {\n event.preventDefault();\n jumpFocus(\"left\");\n return;\n }\n case \"End\": {\n event.preventDefault();\n jumpFocus(\"right\");\n return;\n }\n case \" \":\n case \"Enter\": {\n if (isInteractiveDescendant(event.target, event.currentTarget)) {\n return;\n }\n\n const isDisabled = header.column.columnDef.meta?.disableHeaderAction;\n if (isSelectCell && !isDisabled) {\n event.preventDefault();\n header.table.toggleAllPageRowsSelected();\n return;\n }\n if (isExpandCell && !isDisabled) {\n event.preventDefault();\n header.table.toggleAllRowsExpanded();\n return;\n }\n if (isSortingCell) {\n event.preventDefault();\n header.column.toggleSorting();\n return;\n }\n return;\n }\n default:\n break;\n }\n },\n [\n moveFocus,\n jumpFocus,\n header.column,\n header.table,\n isExpandCell,\n isSelectCell,\n isSortingCell,\n ],\n );\n\n const handlePointerDownCapture = useCallback(\n (event: React.PointerEvent<HTMLDivElement>) => {\n startedOnResizeHandleRef.current =\n event.target instanceof Element &&\n event.target.closest('[aria-roledescription=\"Resize handle\"]') !== null;\n },\n [],\n );\n\n const handleClick = useCallback(\n (event: React.MouseEvent<HTMLDivElement>) => {\n if (isSortingCell) {\n if (startedOnResizeHandleRef.current) {\n startedOnResizeHandleRef.current = false;\n return;\n }\n\n if (!(event.target instanceof Element)) {\n return;\n }\n\n const resizeHandle = event.target.closest(\n '[aria-roledescription=\"Resize handle\"]',\n );\n\n if (\n resizeHandle ||\n isInteractiveDescendant(event.target, event.currentTarget)\n ) {\n return;\n }\n\n header.column.getToggleSortingHandler()?.(event);\n }\n },\n [header.column, isSortingCell],\n );\n\n return (\n <TableHeaderCell\n type=\"data-table\"\n {...rest}\n ref={setRefs}\n // The focus provider promotes the current restore-point cell to `0`.\n tabIndex={-1}\n onPointerDownCapture={handlePointerDownCapture}\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n className={cx(styles[\"data-table-header-cell\"], className)}\n data-cell-pos={formatCellPositionString(cellPosition)}\n {...(isSortingCell ? { [ANV_PART_ATTR]: PARTS.sortToggle } : {})}\n aria-sort={\n header.column.getIsSorted() === \"asc\"\n ? \"ascending\"\n : header.column.getIsSorted() === \"desc\"\n ? \"descending\"\n : undefined\n }\n >\n {children}\n {isSortingCell && (\n <SrOnly>\n {header.column.getIsSorted() === \"asc\"\n ? \"Sorted ascending.\"\n : header.column.getIsSorted() === \"desc\"\n ? \"Sorted descending.\"\n : \"Not sorted.\"}{\" \"}\n Click to toggle sort.\n </SrOnly>\n )}\n </TableHeaderCell>\n );\n}\n\n/** ARIA grid header cell with roving focus and column-specific actions. */\nexport const DataTableHeaderCell = forwardRef(DataTableHeaderCellInner) as <\n T,\n TValue,\n>(\n props: DataTableHeaderCellProps<T, TValue> & { ref?: Ref<HTMLDivElement> },\n) => ReturnType<typeof DataTableHeaderCellInner>;\n","import cx from \"classnames\";\nimport type { Header } from \"@tanstack/react-table\";\nimport type { ComponentPropsWithoutRef } from \"react\";\n\nimport styles from \"./ResizeHandle.module.scss\";\n\nexport type ResizeHandleProps<T> = {\n /** Header whose column width the pointer gesture controls. */\n header: Header<T, unknown>;\n /** Runs before TanStack's resize handler starts the gesture. */\n onResizeStart?: () => void;\n /** Runs when mouse or touch input ends. */\n onResizeEnd?: () => void;\n} & Omit<\n ComponentPropsWithoutRef<\"div\">,\n | \"role\"\n | \"children\"\n | \"onMouseDown\"\n | \"onTouchStart\"\n | \"onMouseUp\"\n | \"onTouchEnd\"\n | \"onDoubleClick\"\n>;\n\n/**\n * Pointer resize handle for a table column. Double-click restores the\n * column's configured size (`defaultWidth`, else `minWidth`).\n */\nexport function ResizeHandle<T>({\n header,\n onResizeStart,\n onResizeEnd,\n className,\n ...rest\n}: ResizeHandleProps<T>) {\n const classes = cx(styles[\"resize-handle\"], className, {\n [styles[\"resizing\"]]: header.column.getIsResizing(),\n });\n\n const handleResizeStart = (\n e: React.MouseEvent<HTMLDivElement> | React.TouchEvent<HTMLDivElement>,\n ) => {\n onResizeStart?.();\n header.getResizeHandler()(e);\n };\n\n return (\n <div\n role=\"button\"\n // TODO: enable keyboard resizing\n tabIndex={-1}\n onDoubleClick={() => header.column.resetSize()}\n onMouseDown={handleResizeStart}\n onTouchStart={handleResizeStart}\n onMouseUp={onResizeEnd}\n onTouchEnd={onResizeEnd}\n className={classes}\n aria-label=\"Resize column\"\n aria-pressed={header.column.getIsResizing()}\n aria-roledescription=\"Resize handle\"\n {...rest}\n />\n );\n}\n","import {\n type ComponentPropsWithoutRef,\n useCallback,\n useRef,\n type RefObject,\n} from \"react\";\nimport { flushSync } from \"react-dom\";\nimport { flexRender, type Table as TanstackTable } from \"@tanstack/react-table\";\n\nimport IconArrowUpward from \"../../../../../../public/assets/icons/material/round/arrow_upward.svg\";\nimport IconArrowDownward from \"../../../../../../public/assets/icons/material/round/arrow_downward.svg\";\n\nimport { TableHeader } from \"../../base/TableHeader\";\nimport { DataTableHeaderCell } from \"./cells/DataTableHeaderCell\";\nimport { Flex, Icon } from \"../../../../../components\";\nimport { getCommonPinningClasses } from \"../../internal/getCommonPinningClasses\";\nimport { getCommonPinningStyles } from \"../../internal/getCommonPinningStyles\";\nimport { ResizeHandle } from \"../../internal/ResizeHandle\";\n\nimport styles from \"./DataTableHeader.module.scss\";\nimport { useColumnOrder } from \"./useColumnOrder\";\nimport {\n INTERNAL_ROW_ACTION_PRIMARY_COLUMN_ID,\n INTERNAL_ROW_ACTION_SECONDARY_COLUMN_ID,\n} from \"./constants\";\nimport { ANV_PART_ATTR } from \"../../../../../internal/constants/anvParts\";\nimport { PARTS } from \"../parts\";\n\ntype HeaderContentAlign = \"flex-start\" | \"center\" | \"flex-end\";\n\nfunction getHeaderContentAlign(\n align?: \"start\" | \"center\" | \"end\",\n): HeaderContentAlign {\n if (align === \"center\") {\n return \"center\";\n }\n\n if (align === \"end\") {\n return \"flex-end\";\n }\n\n return \"flex-start\";\n}\n\ntype DataTableHeaderProps<T> = {\n /** Supplies header groups plus column sorting, sizing, and metadata. */\n table: TanstackTable<T>;\n /**\n * Table root used to scope imperative column-hover attributes to this table.\n */\n tableRef: RefObject<HTMLDivElement>;\n} & ComponentPropsWithoutRef<\"div\">;\n\n/**\n * Renders DataTable header rows from TanStack header groups, including group\n * spans, sort indicators, and column resize handles.\n */\nexport function DataTableHeader<T>({\n table,\n tableRef,\n}: DataTableHeaderProps<T>) {\n const getTableBase = useCallback(\n () =>\n tableRef.current?.querySelector<HTMLElement>(\n '[data-anv=\"data-table-base\"]',\n ) ?? null,\n [tableRef],\n );\n\n const handleHoverColumn = useCallback(\n (columnId: string) => {\n const base = getTableBase();\n if (!base) return;\n base.setAttribute(\"data-anv-hover-col\", columnId);\n base\n .querySelectorAll(`[data-anv-column-id=\"${CSS.escape(columnId)}\"]`)\n .forEach((el) => el.setAttribute(\"data-anv-is-hovered-col\", \"true\"));\n },\n [getTableBase],\n );\n\n const handleHoverColumnLeave = useCallback(\n (columnId: string) => {\n const base = getTableBase();\n if (!base) return;\n if (base.getAttribute(\"data-anv-hover-col\") !== columnId) return;\n base.removeAttribute(\"data-anv-hover-col\");\n base\n .querySelectorAll(\n `[data-anv-column-id=\"${CSS.escape(columnId)}\"][data-anv-is-hovered-col=\"true\"]`,\n )\n .forEach((el) => el.removeAttribute(\"data-anv-is-hovered-col\"));\n },\n [getTableBase],\n );\n\n const cellRefs = useRef<Map<string, HTMLDivElement>>(new Map());\n\n // Seed controlled sizing from the rendered width before TanStack measures\n // the resize gesture. `flushSync` makes that width visible in the same event.\n const createResizeStartHandler = useCallback(\n (columnId: string) => () => {\n const cellElement = cellRefs.current.get(columnId);\n if (cellElement) {\n const actualWidth = cellElement.getBoundingClientRect().width;\n flushSync(() => {\n table.setColumnSizing((prev) => ({\n ...prev,\n [columnId]: actualWidth,\n }));\n });\n }\n },\n [table],\n );\n\n const { columnOrder } = useColumnOrder({ table });\n\n return (\n <TableHeader type=\"data-table\">\n {table.getHeaderGroups().map((headerGroup, index) => (\n <div\n key={headerGroup.id}\n className={styles[\"data-table-header-row\"]}\n role=\"row\"\n aria-rowindex={index + 1}\n >\n {headerGroup.headers.map((header) => {\n const isLastInParentGroup = header.column.parent\n ? header.column.parent.getLeafColumns().slice(-1)[0] ===\n header.column\n : false;\n\n const isInternalSelectColumn =\n header.column.id === INTERNAL_ROW_ACTION_SECONDARY_COLUMN_ID;\n const isInternalExpandColumn =\n header.column.id === INTERNAL_ROW_ACTION_PRIMARY_COLUMN_ID;\n\n const gridColumn =\n header.colSpan > 1 ? `span ${header.colSpan}` : undefined;\n\n const headerContentAlign = getHeaderContentAlign(\n header.column.columnDef.meta?.headerAlign,\n );\n const isGroupHeader = header.subHeaders.length > 0;\n const hasGroupDivider =\n isGroupHeader ||\n Boolean(header.column.parent && isLastInParentGroup);\n const isHeaderActionDisabled =\n header.column.columnDef.meta?.disableHeaderAction === true;\n const headerCellInteractive =\n !isGroupHeader &&\n (header.column.getCanSort() ||\n ((isInternalExpandColumn || isInternalSelectColumn) &&\n !isHeaderActionDisabled));\n\n return (\n <DataTableHeaderCell\n header={header.getContext()}\n key={header.id}\n ref={(el: HTMLDivElement | null) => {\n if (el) {\n cellRefs.current.set(header.column.id, el);\n } else {\n cellRefs.current.delete(header.column.id);\n }\n }}\n className={getCommonPinningClasses(header.column)}\n data-anv-column-id={header.column.id}\n style={{\n gridColumn,\n ...getCommonPinningStyles(header.column),\n }}\n aria-colspan={header.colSpan}\n isGroup={hasGroupDivider}\n isSortable={header.column.getCanSort()}\n isInteractiveHeaderCell={headerCellInteractive}\n isSelectCell={isInternalSelectColumn}\n isExpandCell={isInternalExpandColumn}\n onMouseEnter={\n headerCellInteractive\n ? () => handleHoverColumn(header.column.id)\n : undefined\n }\n onMouseLeave={\n headerCellInteractive\n ? () => handleHoverColumnLeave(header.column.id)\n : undefined\n }\n cellPosition={{\n rowIndex: index,\n columnIndex: columnOrder.indexOf(header.column.getIndex()),\n }}\n >\n {header.isPlaceholder ? null : (\n <Flex\n direction=\"row\"\n alignItems=\"center\"\n gap={2}\n style={{\n width: \"100%\",\n }}\n >\n <Flex\n direction=\"row\"\n alignItems=\"center\"\n justifyContent={headerContentAlign}\n gap={2}\n grow={1}\n style={{\n minWidth: 0,\n width: \"100%\",\n }}\n >\n {flexRender(\n header.column.columnDef.header,\n header.getContext(),\n )}\n {header.column.getIsSorted() ? (\n <span\n style={{\n alignItems: \"center\",\n display: \"flex\",\n flexShrink: 0,\n }}\n >\n {{\n asc: <Icon svg={IconArrowUpward} size=\"small\" />,\n desc: <Icon svg={IconArrowDownward} size=\"small\" />,\n }[header.column.getIsSorted() as string] ?? null}\n </span>\n ) : null}\n </Flex>\n {header.column.columnDef.enableResizing && (\n <ResizeHandle\n header={header}\n onResizeStart={createResizeStartHandler(\n header.column.id,\n )}\n {...{ [ANV_PART_ATTR]: PARTS.resizeHandle }}\n />\n )}\n </Flex>\n )}\n </DataTableHeaderCell>\n );\n })}\n </div>\n ))}\n </TableHeader>\n );\n}\n","import { type ComponentPropsWithoutRef, forwardRef } from \"react\";\nimport cx from \"classnames\";\n\nimport type { LayoutUtilProps } from \"../../../../types\";\nimport { useLayoutPropsUtil } from \"../../../../internal/hooks/useLayoutPropsUtil\";\n\nimport styles from \"./TableContainer.module.scss\";\n\nexport type TableContainerProps = LayoutUtilProps &\n ComponentPropsWithoutRef<\"div\">;\n\n/**\n * Provides the table surface and an inner vertical scrolling region.\n */\nexport const TableContainer = forwardRef<HTMLDivElement, TableContainerProps>(\n (props, ref) => {\n const { layoutStyles, componentProps } = useLayoutPropsUtil(props);\n const { children, className, style, ...rest } = componentProps;\n\n const tableContainerClassNames = cx(className, styles[\"table-container\"]);\n const styleCombined = {\n ...style,\n ...layoutStyles,\n };\n\n return (\n <div\n style={styleCombined}\n ref={ref}\n {...rest}\n className={tableContainerClassNames}\n data-anv=\"table-container\"\n >\n <div\n className={styles[\"table-scroll-container\"]}\n data-anv=\"table-scroll-container\"\n >\n {children}\n </div>\n </div>\n );\n },\n);\n\nTableContainer.displayName = \"TableContainer\";\n","import IconKeyboardArrowLeft from \"@servicetitan/hammer-icon/mdi/round/keyboard_arrow_left.svg\";\nimport IconKeyboardArrowRight from \"@servicetitan/hammer-icon/mdi/round/keyboard_arrow_right.svg\";\n\nimport { Button } from \"../../../../../components/Button\";\nimport {\n Pagination,\n type PaginationProps,\n} from \"../../../../../components/Pagination\";\nimport { SrOnly } from \"../../../../../components/SrOnly\";\nimport { useTrackingId } from \"../../../../../hooks\";\nimport { Pagination as BasePagination } from \"../../../../../components/Pagination/internal/Pagination\";\nimport { ANV_PART_ATTR } from \"../../../../../internal/constants/anvParts\";\nimport { PARTS as PAGINATION_PARTS } from \"../../../../../components/Pagination/parts\";\n\nimport styles from \"./DataTablePagination.module.scss\";\n\ntype DataTableCursorPaginationProps = Pick<\n PaginationProps,\n | \"page\"\n | \"itemsPerPage\"\n | \"onPageChange\"\n | \"onItemsPerPageChange\"\n | \"itemsPerPageOptions\"\n> & {\n /** Explicit `true` enables Next. Omitted or false leaves it disabled. */\n hasNextPage?: boolean;\n /**\n * Explicit `true` enables Previous when `page` is greater than 1. Omitted\n * or false leaves it disabled.\n */\n hasPrevPage?: boolean;\n};\n\n/**\n * Numbered pagination fields picked from {@link PaginationProps}, including\n * `totalItemCount`.\n */\nexport type DataTablePaginationProps = Pick<\n PaginationProps,\n | \"page\"\n | \"itemsPerPage\"\n | \"totalItemCount\"\n | \"showCount\"\n | \"onPageChange\"\n | \"onItemsPerPageChange\"\n | \"itemsPerPageOptions\"\n>;\n\n/**\n * Numbered page chrome for DataTable. `showCount` defaults to `true`.\n */\nexport const DataTablePagination = ({\n showCount = true,\n ...props\n}: DataTablePaginationProps) => {\n return (\n <Pagination\n className={styles[\"pagination\"]}\n {...props}\n showCount={showCount}\n />\n );\n};\n\n/**\n * Prev/next chrome when the table has no `totalItemCount`. Next/Previous stay\n * disabled unless the matching flag is exactly `true`.\n */\nexport const DataTableCursorPagination = ({\n page,\n itemsPerPage,\n itemsPerPageOptions,\n hasNextPage,\n hasPrevPage,\n onPageChange,\n onItemsPerPageChange,\n}: DataTableCursorPaginationProps) => {\n const canGoToPreviousPage = hasPrevPage === true && page > 1;\n const canGoToNextPage = hasNextPage === true;\n const trackingId = useTrackingId({\n name: \"Pagination\",\n data: {\n \"aria-label\": \"Pagination navigation\",\n },\n });\n const previousPageAvailability = canGoToPreviousPage\n ? \"available\"\n : \"unavailable\";\n const nextPageAvailability = canGoToNextPage ? \"available\" : \"unavailable\";\n\n return (\n <nav\n className={styles[\"pagination\"]}\n aria-label=\"Pagination navigation\"\n data-tracking-id={trackingId}\n >\n <ul className={styles[\"cursor-pagination-list\"]}>\n <li className={styles[\"cursor-pagination-item\"]}>\n <Button\n appearance=\"ghost\"\n icon={IconKeyboardArrowLeft}\n size=\"small\"\n aria-label=\"Previous page\"\n disabled={!canGoToPreviousPage}\n onClick={() => {\n if (canGoToPreviousPage) {\n onPageChange?.(Math.max(1, page - 1));\n }\n }}\n {...{ [ANV_PART_ATTR]: PAGINATION_PARTS.prevPageButton }}\n />\n </li>\n <li className={styles[\"cursor-pagination-item\"]}>\n <Button\n appearance=\"ghost\"\n icon={IconKeyboardArrowRight}\n size=\"small\"\n aria-label=\"Next page\"\n disabled={!canGoToNextPage}\n onClick={() => {\n if (canGoToNextPage) {\n onPageChange?.(page + 1);\n }\n }}\n {...{ [ANV_PART_ATTR]: PAGINATION_PARTS.nextPageButton }}\n />\n </li>\n </ul>\n {itemsPerPageOptions && (\n <BasePagination.ItemsPerPageMenu\n itemsPerPage={itemsPerPage}\n itemsPerPageOptions={itemsPerPageOptions}\n onItemsPerPageChange={(itemsPerPage) => {\n onItemsPerPageChange?.(itemsPerPage);\n }}\n />\n )}\n <SrOnly aria-live=\"polite\" aria-atomic=\"true\">\n Page {page}. Previous page {previousPageAvailability}. Next page{\" \"}\n {nextPageAvailability}.\n </SrOnly>\n </nav>\n );\n};\n","import { useState, useEffect, useRef } from \"react\";\n\n/**\n * Resolves a value-or-promise into `{ data, error, isLoading }`.\n *\n * A non-Promise argument is returned from the same render with `isLoading:\n * false`, so array identity is preserved. Promise results come from state\n * (initially `{ data: null, isLoading: true }`); a newer argument identity\n * bumps a request id so an older in-flight Promise cannot write back.\n */\nexport const useAsyncData = <T,>(dataOrPromise: T | Promise<T>) => {\n const [resolvedData, setResolvedData] = useState<T | null>(null);\n const [error, setError] = useState(false);\n const [isLoading, setIsLoading] = useState(true);\n const latestRequestRef = useRef({ dataOrPromise, id: 0 });\n\n // Bump during render so this pass's effect captures the new id before the\n // previous Promise settles.\n if (latestRequestRef.current.dataOrPromise !== dataOrPromise) {\n latestRequestRef.current = {\n dataOrPromise,\n id: latestRequestRef.current.id + 1,\n };\n }\n\n const requestId = latestRequestRef.current.id;\n\n useEffect(() => {\n async function resolveData() {\n if (dataOrPromise instanceof Promise) {\n setIsLoading(true);\n setError(false);\n try {\n const data = await dataOrPromise;\n\n if (latestRequestRef.current.id !== requestId) {\n return;\n }\n\n setResolvedData(data);\n setError(false);\n setIsLoading(false);\n } catch (_error) {\n if (latestRequestRef.current.id !== requestId) {\n return;\n }\n\n setError(true);\n setIsLoading(false);\n setResolvedData(null);\n }\n } else {\n setResolvedData(dataOrPromise);\n setError(false);\n setIsLoading(false);\n }\n }\n resolveData();\n }, [dataOrPromise, requestId]);\n\n if (!(dataOrPromise instanceof Promise)) {\n return { data: dataOrPromise, error: false, isLoading: false };\n }\n\n return { data: resolvedData, error, isLoading };\n};\n","import { useCallback, useRef } from \"react\";\nimport type { TableRow } from \"../../types\";\nimport type { DataTableCacheOptions, SortedColumn } from \"../types\";\n\nconst DEFAULT_CACHE_MAX_SIZE = 15;\n\n/**\n * Caches `loadPageData` rows by page index. Hits return synchronously; misses\n * call the loader. `refreshKey`, `refreshCounter`, `rowsPerPage`, and sort\n * `id`/`desc` replace the Map during render so a later `getOrLoad` cannot\n * read a stale page. In-flight resolves after a generation bump still fulfill\n * the caller but are not written into the Map. Caching is on by default with\n * a 15-entry FIFO cap; with no loader, `getOrLoad` returns `[]`.\n */\nexport function usePageDataCache<T>(config: {\n loadPageData?: (params: {\n pageIndex: number;\n pageSize: number;\n sorting?: SortedColumn;\n }) => TableRow<T>[] | Promise<TableRow<T>[]>;\n cache?: DataTableCacheOptions;\n refreshKey?: string | number;\n refreshCounter: number;\n rowsPerPage: number;\n sorting?: SortedColumn;\n}): {\n getOrLoad: (\n pageIndex: number,\n pageSize: number,\n sorting?: SortedColumn,\n ) => TableRow<T>[] | Promise<TableRow<T>[]>;\n clearCache: () => void;\n} {\n const { loadPageData, cache: cacheConfig } = config;\n\n const cacheEnabled = cacheConfig?.enabled !== false;\n const cacheMaxSize = cacheConfig?.maxSize ?? DEFAULT_CACHE_MAX_SIZE;\n\n const pageCacheRef = useRef(new Map<number, TableRow<T>[]>());\n const loadPageDataRef = useRef(loadPageData);\n loadPageDataRef.current = loadPageData;\n\n const generationRef = useRef(0);\n\n const prevRefreshKeyRef = useRef(config.refreshKey);\n const prevRefreshCounterRef = useRef(config.refreshCounter);\n const prevRowsPerPageRef = useRef(config.rowsPerPage);\n const prevSortingRef = useRef(config.sorting);\n\n if (\n prevRefreshKeyRef.current !== config.refreshKey ||\n prevRefreshCounterRef.current !== config.refreshCounter ||\n prevRowsPerPageRef.current !== config.rowsPerPage ||\n prevSortingRef.current?.id !== config.sorting?.id ||\n prevSortingRef.current?.desc !== config.sorting?.desc\n ) {\n pageCacheRef.current = new Map();\n generationRef.current += 1;\n prevRefreshKeyRef.current = config.refreshKey;\n prevRefreshCounterRef.current = config.refreshCounter;\n prevRowsPerPageRef.current = config.rowsPerPage;\n prevSortingRef.current = config.sorting;\n }\n\n const getOrLoad = useCallback(\n (\n pageIndex: number,\n pageSize: number,\n sorting?: SortedColumn,\n ): TableRow<T>[] | Promise<TableRow<T>[]> => {\n if (cacheEnabled) {\n const cached = pageCacheRef.current.get(pageIndex);\n if (cached) return cached;\n }\n\n const loader = loadPageDataRef.current;\n if (!loader) return [];\n\n const result = loader({ pageIndex, pageSize, sorting });\n\n if (!cacheEnabled) return result;\n\n const requestGeneration = generationRef.current;\n\n if (result instanceof Promise) {\n return result.then((data) => {\n if (generationRef.current !== requestGeneration) return data;\n const cache = pageCacheRef.current;\n if (cache.size >= cacheMaxSize) {\n const oldest = cache.keys().next().value;\n if (oldest != null) cache.delete(oldest);\n }\n cache.set(pageIndex, data);\n return data;\n });\n }\n\n const cache = pageCacheRef.current;\n if (cache.size >= cacheMaxSize) {\n const oldest = cache.keys().next().value;\n if (oldest != null) cache.delete(oldest);\n }\n cache.set(pageIndex, result);\n return result;\n },\n [cacheEnabled, cacheMaxSize],\n );\n\n const clearCache = useCallback(() => {\n pageCacheRef.current = new Map();\n generationRef.current += 1;\n }, []);\n\n return { getOrLoad, clearCache };\n}\n","/**\n * Smoothly reveals a keyboard-targeted cell without placing it beneath sticky\n * row groups or pinned columns. Header and footer cells scroll only\n * horizontally.\n */\nexport function scrollCellIntoView(\n element: HTMLElement,\n stickyDimensions: { leftWidth: number; rightWidth: number },\n): void {\n const isBodyCell = element.getAttribute(\"data-anv\") === \"table-body-cell\";\n\n const scrollContainer = element.closest(\n '[data-anv=\"table-scroll-container\"]',\n ) as HTMLElement | null;\n\n if (!scrollContainer) return;\n\n const headerElement =\n scrollContainer.querySelectorAll('[role=\"rowgroup\"]')[0];\n const footerElement = scrollContainer\n .querySelector('[data-anv=\"table-footer-row\"]')\n ?.closest('[role=\"rowgroup\"]') as HTMLElement | undefined;\n\n const dimensions = {\n headerHeight: headerElement?.getBoundingClientRect().height ?? 0,\n footerHeight: footerElement?.getBoundingClientRect().height ?? 0,\n leftWidth: stickyDimensions.leftWidth,\n rightWidth: stickyDimensions.rightWidth,\n };\n\n // Sticky cells move with their pinned edge and need no horizontal correction.\n const cellStyle = window.getComputedStyle(element);\n const isHorizontallySticky =\n cellStyle.position === \"sticky\" &&\n (cellStyle.left !== \"auto\" || cellStyle.right !== \"auto\");\n\n const elementRect = element.getBoundingClientRect();\n const scrollContainerRect = scrollContainer.getBoundingClientRect();\n\n // Bounding rect dimensions include scrollbars, but sticky elements position\n // relative to the content area which excludes scrollbars.\n const contentWidth = scrollContainer.clientWidth;\n const contentHeight = scrollContainer.clientHeight;\n\n const visibleLeft = scrollContainerRect.x + dimensions.leftWidth;\n const visibleRight =\n scrollContainerRect.x + contentWidth - dimensions.rightWidth;\n const visibleTop = scrollContainerRect.y + dimensions.headerHeight;\n const visibleBottom =\n scrollContainerRect.y + contentHeight - dimensions.footerHeight;\n\n const isFullyVisible =\n elementRect.x >= visibleLeft &&\n elementRect.x + elementRect.width <= visibleRight &&\n (isBodyCell\n ? elementRect.y >= visibleTop &&\n elementRect.y + elementRect.height <= visibleBottom\n : true);\n\n if (isFullyVisible) return;\n\n const getScrollByLeft = (): number => {\n if (isHorizontallySticky) return 0;\n if (elementRect.x < visibleLeft) {\n return elementRect.x - visibleLeft;\n }\n if (elementRect.x + elementRect.width > visibleRight) {\n return elementRect.x + elementRect.width - visibleRight;\n }\n return 0;\n };\n\n const getScrollByTop = (): number => {\n if (!isBodyCell) return 0;\n if (elementRect.y < visibleTop) {\n return elementRect.y - visibleTop;\n }\n if (elementRect.y + elementRect.height > visibleBottom) {\n return elementRect.y + elementRect.height - visibleBottom;\n }\n return 0;\n };\n\n const scrollLeft = getScrollByLeft();\n const scrollTop = getScrollByTop();\n\n if (scrollLeft !== 0 || scrollTop !== 0) {\n scrollContainer.scrollBy({\n left: scrollLeft,\n top: scrollTop,\n behavior: \"smooth\",\n });\n }\n}\n","import { useRef, useCallback, useMemo, useLayoutEffect } from \"react\";\nimport {\n type DTFocusAction,\n DTFocusDispatchContext,\n type DTFocusState,\n DTFocusStateContext,\n} from \"./DTFocusContext\";\nimport type { CellPosition } from \"../../../../internal/types\";\nimport {\n areCellPositionsEqual,\n formatCellPositionString,\n} from \"../../util/cellPositionHelpers\";\nimport { scrollCellIntoView } from \"../../../../internal/scrollCellIntoView\";\nimport type { DataTableVirtualizer } from \"../../useDataTableVirtualizer\";\n\nconst initialState: DTFocusState = {\n focusedCell: null,\n focusRestorePoint: { rowIndex: 0, columnIndex: 0 },\n};\n\nfunction reducer(\n state: DTFocusState,\n action: DTFocusAction,\n rowCount: number,\n columnCount: number,\n): DTFocusState {\n switch (action.type) {\n case \"FOCUS_CELL_MANUALLY\": {\n return {\n ...state,\n focusedCell: action.payload.cellPosition,\n };\n }\n case \"FOCUS_CELL\": {\n return {\n ...state,\n focusedCell: action.payload.cellPosition,\n focusRestorePoint: action.payload.cellPosition,\n };\n }\n case \"FOCUS_TABLE\": {\n return {\n ...state,\n focusedCell: state.focusRestorePoint,\n };\n }\n case \"MOVE_FOCUS\": {\n let newFocusedCell: CellPosition;\n\n const currentColumnIndex = state.focusedCell?.columnIndex ?? 0;\n const currentRowIndex = state.focusedCell?.rowIndex ?? 0;\n\n if (action.payload.direction === \"left\") {\n newFocusedCell = {\n rowIndex: currentRowIndex,\n columnIndex: Math.max(0, currentColumnIndex - 1),\n };\n } else if (action.payload.direction === \"right\") {\n newFocusedCell = {\n rowIndex: currentRowIndex,\n columnIndex: Math.min(columnCount - 1, currentColumnIndex + 1),\n };\n } else if (action.payload.direction === \"up\") {\n newFocusedCell = {\n rowIndex: Math.max(0, currentRowIndex - 1),\n columnIndex: currentColumnIndex,\n };\n } else if (action.payload.direction === \"down\") {\n newFocusedCell = {\n rowIndex: Math.min(rowCount - 1, currentRowIndex + 1),\n columnIndex: currentColumnIndex,\n };\n } else {\n newFocusedCell = {\n rowIndex: currentRowIndex,\n columnIndex: currentColumnIndex,\n };\n }\n return {\n ...state,\n focusedCell: newFocusedCell,\n };\n }\n case \"JUMP_FOCUS\": {\n let newFocusedCell: CellPosition;\n const currentColumnIndex = state.focusedCell?.columnIndex ?? 0;\n const currentRowIndex = state.focusedCell?.rowIndex ?? 0;\n if (action.payload.direction === \"left\") {\n newFocusedCell = {\n rowIndex: currentRowIndex,\n columnIndex: 0,\n };\n } else if (action.payload.direction === \"right\") {\n newFocusedCell = {\n rowIndex: currentRowIndex,\n columnIndex: columnCount - 1,\n };\n } else if (action.payload.direction === \"up\") {\n newFocusedCell = {\n rowIndex: 0,\n columnIndex: currentColumnIndex,\n };\n } else if (action.payload.direction === \"down\") {\n newFocusedCell = {\n rowIndex: rowCount - 1,\n columnIndex: currentColumnIndex,\n };\n } else {\n newFocusedCell = {\n rowIndex: currentRowIndex,\n columnIndex: currentColumnIndex,\n };\n }\n return {\n ...state,\n focusedCell: newFocusedCell,\n };\n }\n case \"BLUR\": {\n return {\n ...state,\n focusedCell: null,\n focusRestorePoint: state.focusedCell ?? { columnIndex: 0, rowIndex: 0 },\n };\n }\n default: {\n throw new Error(\"Unknown action\");\n }\n }\n}\n\nexport interface DTFocusProviderProps {\n children: React.ReactNode;\n rowCount: number;\n columnCount: number;\n tableRef: React.RefObject<HTMLDivElement>;\n leftPinnedWidth: number;\n rightPinnedWidth: number;\n virtualizer?: DataTableVirtualizer;\n headerRowCount: number;\n}\n\n/**\n * Coordinates roving focus across rendered and virtualized data-table cells.\n */\nexport function DTFocusProvider({\n children,\n rowCount,\n columnCount,\n tableRef,\n leftPinnedWidth,\n rightPinnedWidth,\n virtualizer,\n headerRowCount,\n}: DTFocusProviderProps) {\n const stateRef = useRef<DTFocusState>(initialState);\n\n const lastTabbablePosRef = useRef<CellPosition | null>(null);\n\n const syncRovingTabindex = useCallback(() => {\n const restorePoint = stateRef.current.focusRestorePoint;\n const prev = lastTabbablePosRef.current;\n const nextEl = tableRef.current?.querySelector(\n `[data-cell-pos=\"${formatCellPositionString(restorePoint)}\"]`,\n ) as HTMLElement | null;\n\n // Remounted cells reset to tabIndex=-1 without changing their coordinates.\n const restorePointUnchanged =\n prev &&\n prev.rowIndex === restorePoint.rowIndex &&\n prev.columnIndex === restorePoint.columnIndex;\n if (restorePointUnchanged && nextEl?.tabIndex === 0) {\n return;\n }\n\n const prevEl =\n prev && !restorePointUnchanged\n ? (tableRef.current?.querySelector(\n `[data-cell-pos=\"${formatCellPositionString(prev)}\"]`,\n ) as HTMLElement | null)\n : null;\n if (prevEl) prevEl.tabIndex = -1;\n if (nextEl) nextEl.tabIndex = 0;\n lastTabbablePosRef.current = restorePoint;\n }, [tableRef]);\n\n // Shape changes can remount the restore-point cell with tabIndex=-1.\n useLayoutEffect(() => {\n syncRovingTabindex();\n }, [syncRovingTabindex, rowCount, columnCount]);\n\n const dispatch = useCallback(\n (action: DTFocusAction) => {\n const newState = reducer(stateRef.current, action, rowCount, columnCount);\n let shouldSkipFocusUpdate = false;\n if (\n areCellPositionsEqual(\n newState.focusedCell,\n stateRef.current.focusedCell,\n )\n ) {\n shouldSkipFocusUpdate = true;\n }\n stateRef.current = newState;\n syncRovingTabindex();\n\n if (!newState.focusedCell || shouldSkipFocusUpdate) {\n return;\n }\n\n const focusTargetCell = () => {\n if (!newState.focusedCell) return;\n // Skip stale rAF-deferred invocations: during sustained keyboard nav,\n // multiple dispatches can queue rAF callbacks before any of them run.\n // If a later dispatch has superseded this one, don't query/focus/fall\n // back for the old target — that would snap focus to (0,0) mid-scroll.\n if (\n !areCellPositionsEqual(\n newState.focusedCell,\n stateRef.current.focusedCell,\n )\n ) {\n return;\n }\n const element = tableRef.current?.querySelector(\n `[data-cell-pos=\"${formatCellPositionString(newState.focusedCell)}\"]`,\n ) as HTMLElement | null;\n\n if (element) {\n element.focus();\n scrollCellIntoView(element, {\n leftWidth: leftPinnedWidth,\n rightWidth: rightPinnedWidth,\n });\n } else {\n // A reduced page can invalidate the previous cell coordinates.\n dispatch({\n type: \"FOCUS_CELL_MANUALLY\",\n payload: { cellPosition: { rowIndex: 0, columnIndex: 0 } },\n });\n }\n };\n\n if (virtualizer && newState.focusedCell) {\n // Translate the focused cell's row index (which includes header rows)\n // into a body-row index for the virtualizer. Header rows\n // 0..headerRowCount-1 are always in the DOM — skip scrollToIndex for\n // those. Footer rows live past `rowCount` and also aren't virtualized,\n // so bound the index by the virtualizer's row count to avoid wasting\n // a frame of focus latency on a no-op scroll.\n const virtualRowIndex = newState.focusedCell.rowIndex - headerRowCount;\n const bodyRowCount = virtualizer.options.count;\n if (virtualRowIndex >= 0 && virtualRowIndex < bodyRowCount) {\n virtualizer.scrollToIndex(virtualRowIndex, { align: \"auto\" });\n // Defer focus to next frame so the virtualizer has a chance to render\n // the target row into the DOM.\n requestAnimationFrame(focusTargetCell);\n return;\n }\n }\n\n focusTargetCell();\n },\n [\n rowCount,\n columnCount,\n tableRef,\n leftPinnedWidth,\n rightPinnedWidth,\n syncRovingTabindex,\n virtualizer,\n headerRowCount,\n ],\n );\n\n const state = useMemo(\n () => ({ getFocusedCell: () => stateRef.current.focusedCell }),\n [],\n );\n\n return (\n <DTFocusStateContext.Provider value={state}>\n <DTFocusDispatchContext.Provider value={dispatch}>\n {children}\n </DTFocusDispatchContext.Provider>\n </DTFocusStateContext.Provider>\n );\n}\n","import { useCallback, useMemo, useRef, type RefObject } from \"react\";\n\nimport {\n DataTableSurfaceCoordinatorContext,\n type DataTableSurfaceRegistration,\n} from \"./DataTableSurfaceCoordinatorContext\";\n\ntype ActiveDataTableSurface = DataTableSurfaceRegistration;\n\ntype DataTableSurfaceCoordinatorProviderProps = {\n children: React.ReactNode;\n intersectionBoundaryRef?: RefObject<HTMLElement | null>;\n};\n\n/** Ensures only one cell-owned surface remains open at a time. */\nexport function DataTableSurfaceCoordinatorProvider({\n children,\n intersectionBoundaryRef,\n}: DataTableSurfaceCoordinatorProviderProps) {\n const activeSurfaceRef = useRef<ActiveDataTableSurface | null>(null);\n\n const requestOpen = useCallback(\n (registration: DataTableSurfaceRegistration) => {\n const activeSurface = activeSurfaceRef.current;\n\n if (activeSurface && activeSurface.id !== registration.id) {\n activeSurface.close({ restoreFocus: false });\n }\n\n activeSurfaceRef.current = registration;\n },\n [],\n );\n\n const clear = useCallback((id: string) => {\n if (activeSurfaceRef.current?.id === id) {\n activeSurfaceRef.current = null;\n }\n }, []);\n\n const value = useMemo(\n () => ({\n requestOpen,\n clear,\n intersectionBoundaryRef,\n }),\n [clear, intersectionBoundaryRef, requestOpen],\n );\n\n return (\n <DataTableSurfaceCoordinatorContext.Provider value={value}>\n {children}\n </DataTableSurfaceCoordinatorContext.Provider>\n );\n}\n","import { type ReactNode, useCallback, useMemo, useRef } from \"react\";\nimport { DataTableRowClickContext } from \"./DataTableRowClickContext\";\n\nexport type DataTableRowClickProviderProps = {\n /** Consumer callback. Its presence enables row click. */\n onClickRow?: (rowId: string) => void;\n /**\n * Read-only row ids keyed by stringified id. Read-only rows never fire the\n * row-click callback.\n */\n readOnlyRowMap: Record<string, boolean>;\n children: ReactNode;\n};\n\n/**\n * Keeps `clickRow` stable while reading the latest callback and read-only map\n * from refs.\n */\nexport function DataTableRowClickProvider({\n onClickRow,\n readOnlyRowMap,\n children,\n}: DataTableRowClickProviderProps) {\n const onClickRowRef = useRef(onClickRow);\n onClickRowRef.current = onClickRow;\n const readOnlyRowMapRef = useRef(readOnlyRowMap);\n readOnlyRowMapRef.current = readOnlyRowMap;\n\n const clickRow = useCallback((rowId: string) => {\n if (readOnlyRowMapRef.current[rowId]) return;\n onClickRowRef.current?.(rowId);\n }, []);\n\n const isRowClickEnabled = !!onClickRow;\n\n const value = useMemo(\n () => ({ isRowClickEnabled, clickRow }),\n [isRowClickEnabled, clickRow],\n );\n\n return (\n <DataTableRowClickContext.Provider value={value}>\n {children}\n </DataTableRowClickContext.Provider>\n );\n}\n","import { type RefObject, useMemo } from \"react\";\nimport { useVirtualizer, type Virtualizer } from \"@tanstack/react-virtual\";\nimport { DEFAULT_ESTIMATED_ROW_HEIGHT } from \"./constants\";\n\n/**\n * Minimum body row count that turns virtualization on. Fewer rows stay fully\n * mounted, including editable cells.\n */\nexport const VIRTUALIZATION_THRESHOLD = 50;\n\nexport type DataTableVirtualizer = Virtualizer<HTMLDivElement, HTMLDivElement>;\n\n/**\n * TanStack row virtualizer for the DataTable body, or `undefined` so the body\n * can flat-render.\n *\n * Virtualizes when `rowCount` is at least {@link VIRTUALIZATION_THRESHOLD},\n * unless `disabled`. `forced` virtualizes below the threshold; `disabled` wins\n * if both are set.\n */\nexport function useDataTableVirtualizer({\n rowCount,\n scrollRef,\n disabled,\n forced,\n}: {\n rowCount: number;\n scrollRef: RefObject<HTMLDivElement>;\n disabled?: boolean;\n forced?: boolean;\n}): DataTableVirtualizer | undefined {\n const shouldVirtualize =\n !disabled && (forced || rowCount >= VIRTUALIZATION_THRESHOLD);\n\n const virtualizer = useVirtualizer<HTMLDivElement, HTMLDivElement>({\n count: shouldVirtualize ? rowCount : 0,\n // The outer TableContainer does not scroll; overflow lives on\n // [data-anv=\"table-scroll-container\"]. Fall back to the outer node when\n // that child is absent.\n getScrollElement: () => {\n const outer = scrollRef.current;\n if (!outer) return null;\n return (\n outer.querySelector<HTMLDivElement>(\n '[data-anv=\"table-scroll-container\"]',\n ) ?? outer\n );\n },\n estimateSize: () => DEFAULT_ESTIMATED_ROW_HEIGHT,\n overscan: 5,\n // jsdom's getBoundingClientRect is 0; skip measure so estimateSize stays.\n measureElement:\n typeof window !== \"undefined\" &&\n typeof navigator !== \"undefined\" &&\n navigator.userAgent.indexOf(\"jsdom\") === -1\n ? (el) =>\n el?.getBoundingClientRect().height ?? DEFAULT_ESTIMATED_ROW_HEIGHT\n : undefined,\n });\n\n return useMemo(\n () => (shouldVirtualize ? virtualizer : undefined),\n [shouldVirtualize, virtualizer],\n );\n}\n","import {\n type ComponentPropsWithoutRef,\n forwardRef,\n type Ref,\n useCallback,\n useContext,\n useEffect,\n useImperativeHandle,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n type ReactNode,\n} from \"react\";\nimport {\n getCoreRowModel,\n getPaginationRowModel,\n getSortedRowModel,\n useReactTable,\n type ColumnPinningState,\n type RowSelectionState,\n type TableOptions,\n type ExpandedState,\n getExpandedRowModel,\n type SortingState,\n} from \"@tanstack/react-table\";\nimport cx from \"classnames\";\n\nimport type { DataAttributes, LayoutUtilProps, Svg } from \"../../../../types\";\nimport { useLayoutPropsUtil } from \"../../../../internal/hooks/useLayoutPropsUtil\";\nimport { ANV_PART_ATTR } from \"../../../../internal/constants/anvParts\";\n\nimport Checkbox from \"../../../../components/Checkbox\";\nimport Button from \"../../../../components/Button\";\nimport Flex from \"../../../../components/Flex\";\nimport ExpandIcon from \"../../../../../public/assets/icons/material/round/chevron_right.svg\";\nimport { PARTS } from \"./parts\";\n\nimport type { ColumnDef, CustomTableFooterCellProps, TableRow } from \"../types\";\nimport { TableBase } from \"../base/TableBase\";\nimport { DataTableBody } from \"./internal/DataTableBody\";\nimport { DataTableFooter } from \"./internal/DataTableFooter\";\nimport { getTanStackColumnDef } from \"./internal/util/getTanStackColumnDef\";\nimport { shallowSortingEqual } from \"./internal/util/shallowSortingEqual\";\nimport { DataTableHeader } from \"./internal/DataTableHeader\";\nimport { TableContainer } from \"../base/TableContainer\";\nimport {\n DataTableCursorPagination,\n DataTablePagination,\n} from \"./internal/DataTablePagination\";\nimport { useOptionallyControlledState } from \"../../../../internal\";\nimport type {\n DataTableCacheOptions,\n DataTableEmptyState,\n DataTablePaginationConfig,\n DataTableRef,\n SortedColumn,\n} from \"./types\";\n\nexport type {\n DataTableCacheOptions,\n DataTableRef,\n DataTableEmptyState,\n SortedColumn,\n};\n\nimport styles from \"./DataTable.module.scss\";\n\nimport { Spinner, SrOnly } from \"../../../../components\";\nimport { ThemeProviderContext } from \"../../../../providers/ThemeProvider/internal/ThemeProviderContext\";\nimport { useAsyncData } from \"./internal/useAsyncData\";\nimport { usePageDataCache } from \"./internal/usePageDataCache\";\nimport { DTFocusProvider } from \"./internal/context/focus/DTFocusProvider\";\nimport { DataTableSurfaceCoordinatorProvider } from \"./internal/context/surface/DataTableSurfaceCoordinatorProvider\";\nimport { DataTableRowClickProvider } from \"./internal/context/rowClick/DataTableRowClickProvider\";\nimport {\n DEFAULT_ESTIMATED_ROW_HEIGHT,\n DEFAULT_INITIAL_LOADING_HEIGHT,\n INTERNAL_ROW_ACTION_PRIMARY_COLUMN_ID,\n INTERNAL_ROW_ACTION_SECONDARY_COLUMN_ID,\n MAX_INITIAL_LOADING_HEIGHT,\n MIN_INITIAL_LOADING_HEIGHT,\n} from \"./internal/constants\";\nimport { CellStatus } from \"./internal/cells/CellStatus\";\nimport { useDataTableVirtualizer } from \"./internal/useDataTableVirtualizer\";\n\nconst EMPTY_DATA: never[] = [];\n\nexport type DataTableRowData = object;\n\n/**\n * @extends LayoutUtilProps\n * @extends ComponentPropsWithoutRef<\"div\">\n * @extends DataAttributes\n */\nexport type DataTableProps<T extends DataTableRowData> = LayoutUtilProps &\n ComponentPropsWithoutRef<\"div\"> &\n DataAttributes & {\n /**\n * Column defs from `createColumnHelper`. Nested `columns` become grouped\n * headers.\n */\n columns: ColumnDef<T>[];\n /**\n * Footer rows that replace column `footerContent` when set.\n */\n customFooter?: CustomTableFooterCellProps[][];\n /**\n * Rows to render, or a Promise of rows (loading spacer until it settles).\n * Each row needs an `id`. Omit or pass `[]` for an empty body.\n */\n data?: TableRow<T>[] | Promise<TableRow<T>[]>;\n /**\n * Uncontrolled initial expansion. `\"all\"` expands every expandable row.\n */\n defaultExpandedRowIds?: \"all\" | TableRow<T>[\"id\"][];\n /**\n * Hides the header expand-all control. Individual rows can still expand.\n * @default false\n */\n disableExpandAll?: boolean;\n /**\n * Uncontrolled initial selection. Ignored when `isSelectable` is off.\n */\n defaultSelectedRowIds?: TableRow<T>[\"id\"][];\n /**\n * Uncontrolled initial sort. DataTable keeps a single {@link SortedColumn}.\n */\n defaultSortedColumn?: SortedColumn;\n /**\n * Controlled expansion. `\"all\"` expands every expandable row. Omit for\n * uncontrolled (`defaultExpandedRowIds`).\n */\n expandedRowIds?: \"all\" | TableRow<T>[\"id\"][];\n /**\n * Hides the header select-all control. Individual rows can still be selected.\n * @default false\n */\n disableSelectAll?: boolean;\n /**\n * Adds the selection column. `true` enables every non-read-only row; a\n * predicate receives the row and returning `false` disables that row's\n * checkbox. Does not select rows — use `selectedRowIds` /\n * `defaultSelectedRowIds`.\n * @default false\n */\n isSelectable?: boolean | ((row: T) => boolean);\n /**\n * Fires with `\"all\"` or the expanded ids after an expand/collapse.\n */\n onExpandRow?: (expandedRowIds: \"all\" | TableRow<T>[\"id\"][]) => void;\n /**\n * Fires with the selected row ids after a selection change.\n */\n onSelectRow?: (selectedRowIds: TableRow<T>[\"id\"][]) => void;\n /**\n * Called when a row is clicked, or activated from the keyboard (Enter\n * while a non-interactive cell in the row is focused). Passes the clicked\n * row's id, in the same form as `onSelectRow` (the row's id coerced to a\n * string).\n *\n * Clicks on interactive cell content (links, buttons, the selection\n * checkbox, menus) and on editable cells do not trigger this callback,\n * and read-only rows (`readOnlyRowIds`) never trigger it.\n *\n * Custom cell content with its own click behavior must use a real\n * interactive element (`<button>`, `<a>`) or carry an interactive role\n * (e.g. `role=\"button\"`) so it is recognized and excluded — this is also\n * required for keyboard and screen-reader accessibility. A click handler on\n * a bare `<div>`/`<span>` (no role) still bubbles and will also fire\n * `onClickRow`; call `event.stopPropagation()` in that handler if you need\n * to opt such an element out.\n */\n onClickRow?: (rowId: TableRow<T>[\"id\"]) => void;\n /**\n * Fires with the active {@link SortedColumn}, or `undefined` when sort is\n * cleared.\n */\n onSort?: (sortedColumn: SortedColumn | undefined) => void;\n /**\n * Enables the pager. `true` uses offset defaults (`rowsPerPage: 25`).\n * `false` or omit shows every row. An object is {@link DataTablePaginationConfig}.\n */\n pagination?: boolean | DataTablePaginationConfig<T>;\n /**\n * Row ids that should render as read-only. Read-only rows gray their\n * plain-text cell content and render their selection checkbox as disabled\n * and read-only. Links, chips, and custom cell content are unaffected.\n *\n * Pre-seeded `selectedRowIds` is still honored — `readOnlyRowIds` only\n * gates user interaction (checkbox toggling), not the visual state.\n */\n readOnlyRowIds?: TableRow<T>[\"id\"][];\n /**\n * Controlled selection. Omit for uncontrolled (`defaultSelectedRowIds`).\n * Ignored when `isSelectable` is off.\n */\n selectedRowIds?: TableRow<T>[\"id\"][];\n /**\n * Controlled sort. Omit for uncontrolled (`defaultSortedColumn`).\n */\n sortedColumn?: SortedColumn;\n /**\n * {@link DataTableEmptyState} for an empty current page while not loading.\n */\n emptyState?: DataTableEmptyState;\n /**\n * Fallback when a cell value is `null`, `undefined`, or `\"\"`. Defaults to\n * an em dash. A column's `emptyCellContent` wins over this.\n */\n emptyCellContent?: ReactNode;\n /**\n * Skips row virtualization at any row count. Default is to virtualize at\n * 50+ body rows. Wins over `forceVirtualization`.\n * @default false\n */\n disableVirtualization?: boolean;\n /**\n * Virtualizes below the 50-row threshold. Ignored when\n * `disableVirtualization` is `true`.\n * @default false\n */\n forceVirtualization?: boolean;\n /**\n * Optional function that returns a value signaling whether a row has\n * changed since the last render. When supplied, each row is memoized:\n * a row will only re-render when the returned value differs, or when\n * table-managed row state (selection, expansion, etc.) changes.\n * When omitted, every row re-renders whenever the DataTable re-renders.\n *\n * Consumers should bake anything outside the row's own data that\n * affects cell rendering into the version value (e.g.\n * `` `${row.updatedAt}-${highlightedId}` ``), otherwise cells may\n * appear stale when external state changes.\n */\n getRowVersion?: (row: T) => unknown;\n };\n\nconst REACT_FORWARD_REF = Symbol.for(\"react.forward_ref\");\nconst REACT_MEMO = Symbol.for(\"react.memo\");\n\n/** Function components and forwardRef/memo; not elements or `{ light, dark }` pairs. */\nfunction isEmptyStateSvgComponent(value: unknown): value is Svg {\n if (typeof value === \"function\") return true;\n if (typeof value !== \"object\" || value == null) return false;\n const type = (value as { $$typeof?: unknown }).$$typeof;\n if (type === REACT_FORWARD_REF) {\n return typeof (value as { render?: unknown }).render === \"function\";\n }\n return type === REACT_MEMO;\n}\n\nfunction DataTableInner<T extends DataTableRowData>(\n props: DataTableProps<T>,\n ref: Ref<DataTableRef>,\n) {\n const { layoutStyles, componentProps } = useLayoutPropsUtil(props);\n const {\n data: dataProp,\n columns: columnsProp,\n customFooter,\n defaultExpandedRowIds,\n defaultSelectedRowIds,\n defaultSortedColumn,\n disableExpandAll,\n disableSelectAll,\n expandedRowIds,\n isSelectable,\n onSelectRow,\n onClickRow,\n readOnlyRowIds,\n onSort,\n onExpandRow,\n pagination,\n selectedRowIds,\n sortedColumn,\n emptyState,\n emptyCellContent,\n disableVirtualization,\n forceVirtualization,\n getRowVersion,\n className,\n style,\n ...rest\n } = componentProps;\n const styleCombined = {\n ...style,\n ...layoutStyles,\n };\n\n const tableRef = useRef<HTMLDivElement>(null);\n // Drives the loading spacer so quick loads don't stutter the table height.\n const lastBodyHeightRef = useRef<number | null>(null);\n\n const [rowSelection, setRowSelection] =\n useOptionallyControlledState<RowSelectionState>({\n controlledValue:\n isSelectable && selectedRowIds\n ? Object.fromEntries(selectedRowIds.map((id) => [id, true]))\n : undefined,\n defaultValue: isSelectable\n ? defaultSelectedRowIds\n ? Object.fromEntries(defaultSelectedRowIds.map((id) => [id, true]))\n : {}\n : {},\n onChange: (newRowSelection) => {\n onSelectRow?.(Object.keys(newRowSelection) as TableRow<T>[\"id\"][]);\n },\n });\n\n const readOnlyRowMap = useMemo<Record<string, boolean>>(\n () =>\n readOnlyRowIds\n ? Object.fromEntries(readOnlyRowIds.map((id) => [String(id), true]))\n : {},\n [readOnlyRowIds],\n );\n\n const sortedColumnId = sortedColumn?.id;\n const sortedColumnDesc = sortedColumn?.desc;\n const controlledSorting = useMemo<SortingState | undefined>(\n () =>\n sortedColumnId !== undefined\n ? [{ id: sortedColumnId, desc: sortedColumnDesc ?? false }]\n : undefined,\n [sortedColumnId, sortedColumnDesc],\n );\n\n const [sorting, setSorting] = useOptionallyControlledState<SortingState>({\n controlledValue: controlledSorting,\n defaultValue: defaultSortedColumn ? [defaultSortedColumn] : undefined,\n onChange: (newSorting) => {\n onSort?.(newSorting[0]);\n },\n });\n\n const isPaginated = !!pagination;\n const paginationObject =\n typeof pagination === \"object\" ? pagination : undefined;\n const rowsPerPage = paginationObject?.rowsPerPage ?? 25;\n const refreshKey = paginationObject?.refreshKey;\n const isCursorPagination = paginationObject?.mode === \"cursor\";\n\n const [currentPageIndex, setCurrentPageIndex] =\n useOptionallyControlledState<number>({\n controlledValue: paginationObject?.currentPageIndex,\n defaultValue: paginationObject?.defaultPageIndex ?? 0,\n onChange: (newPageIndex) => {\n paginationObject?.onPageChange?.(newPageIndex);\n },\n });\n\n const [refreshCounter, setRefreshCounter] = useState(0);\n\n const pageLoader = paginationObject?.loadPageData;\n const isAsyncPaginated = !!pageLoader && typeof pageLoader === \"function\";\n\n const effectiveCacheConfig = useMemo<\n DataTableCacheOptions | undefined\n >(() => {\n if (isCursorPagination && paginationObject?.cache === undefined) {\n return { enabled: false };\n }\n\n return paginationObject?.cache;\n }, [isCursorPagination, paginationObject?.cache]);\n\n const { getOrLoad, clearCache } = usePageDataCache<T>({\n loadPageData: pageLoader,\n cache: effectiveCacheConfig,\n refreshKey,\n refreshCounter,\n rowsPerPage,\n sorting: sorting?.[0],\n });\n\n useImperativeHandle(\n ref,\n () => ({\n refresh: () => {\n setRefreshCounter((c) => c + 1);\n setCurrentPageIndex(0);\n },\n clearCache,\n }),\n [setCurrentPageIndex, clearCache],\n );\n\n const isFirstRender = useRef(true);\n\n useEffect(() => {\n // Skip the mount pass so an initial `refreshKey` does not bounce to page 0.\n if (isFirstRender.current) {\n isFirstRender.current = false;\n return;\n }\n if (refreshKey !== undefined) {\n setCurrentPageIndex(0);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps -- setCurrentPageIndex excluded to prevent reset on every page change\n }, [refreshKey]);\n\n const dataSource = useMemo(() => {\n if (!isAsyncPaginated) {\n return dataProp;\n }\n\n return getOrLoad(currentPageIndex ?? 0, rowsPerPage, sorting?.[0]);\n // eslint-disable-next-line react-hooks/exhaustive-deps -- pageLoader omitted intentionally\n }, [\n isAsyncPaginated,\n currentPageIndex,\n rowsPerPage,\n dataProp,\n refreshKey,\n refreshCounter,\n getOrLoad,\n sorting,\n ]);\n\n const {\n data: resolvedData,\n // Settled loader errors are unused; the table has no error surface.\n error: _error,\n isLoading,\n } = useAsyncData(dataSource);\n const totalItemCount = isCursorPagination\n ? undefined\n : (paginationObject?.totalRowCount ?? resolvedData?.length ?? 0);\n\n const hasSubRows = useMemo(\n () => !!resolvedData?.some((row) => (row?.subRows?.length ?? 0) > 0),\n [resolvedData],\n );\n const hasSubComponent = useMemo(\n () => !!resolvedData?.some((row) => row?.subComponent != null),\n [resolvedData],\n );\n const isExpandable = hasSubRows || hasSubComponent;\n\n const [expanded, setExpanded] = useOptionallyControlledState<ExpandedState>({\n controlledValue:\n isExpandable && expandedRowIds\n ? expandedRowIds === \"all\"\n ? true\n : Object.fromEntries(expandedRowIds.map((id) => [id, true]))\n : undefined,\n defaultValue: isExpandable\n ? defaultExpandedRowIds\n ? defaultExpandedRowIds === \"all\"\n ? true\n : Object.fromEntries(defaultExpandedRowIds.map((id) => [id, true]))\n : {}\n : {},\n onChange: (newExpanded) => {\n if (newExpanded === true) {\n onExpandRow?.(\"all\");\n } else {\n onExpandRow?.(Object.keys(newExpanded) as TableRow<T>[\"id\"][]);\n }\n },\n });\n\n // Keep TanStack empty while loading so the spacer isn't sitting on stale rows.\n const tableData = isLoading ? EMPTY_DATA : resolvedData;\n\n // Measure only on load completion — never on the intermediate render where\n // TanStack has re-sliced to the incoming page but isLoading is still false.\n useLayoutEffect(() => {\n if (isLoading) return;\n const body = tableRef.current?.querySelector<HTMLElement>(\n '[data-anv=\"table-body\"]',\n );\n if (body && body.offsetHeight > 0) {\n lastBodyHeightRef.current = body.offsetHeight;\n }\n }, [isLoading]);\n\n const loadingSpacerHeight =\n lastBodyHeightRef.current ??\n (rowsPerPage > 0\n ? Math.min(\n Math.max(\n rowsPerPage * DEFAULT_ESTIMATED_ROW_HEIGHT,\n MIN_INITIAL_LOADING_HEIGHT,\n ),\n MAX_INITIAL_LOADING_HEIGHT,\n )\n : DEFAULT_INITIAL_LOADING_HEIGHT);\n\n const hasRowStatus = useMemo(() => {\n return tableData?.some((row) => {\n const meta = (row as TableRow<T>).meta;\n return meta?.rowError || meta?.rowWarning;\n });\n }, [tableData]);\n\n const columnPinning = useMemo((): ColumnPinningState => {\n const { left, right } = {\n left: columnsProp\n .filter((column) => column.pinned === \"left\")\n .map((c) => String(c.id)),\n right: columnsProp\n .filter((column) => column.pinned === \"right\")\n .map((c) => String(c.id)),\n };\n\n // Left-pinned data columns must keep select/expand/status sticky with them.\n const hasInternalColumns = isSelectable || isExpandable || hasRowStatus;\n const standardPinnedColumns = [];\n if (isSelectable) {\n standardPinnedColumns.push(INTERNAL_ROW_ACTION_SECONDARY_COLUMN_ID);\n }\n if (isExpandable) {\n standardPinnedColumns.push(INTERNAL_ROW_ACTION_PRIMARY_COLUMN_ID);\n }\n if (hasRowStatus) {\n standardPinnedColumns.push(\"a2-table-internal-row-status\");\n }\n\n return {\n left:\n hasInternalColumns && left && left.length > 0\n ? [...standardPinnedColumns, ...left]\n : (left ?? []),\n right: right ?? [],\n };\n }, [columnsProp, hasRowStatus, isSelectable, isExpandable]);\n\n const columns = useMemo(() => {\n const tableColumns: TableOptions<T>[\"columns\"] = columnsProp.map((column) =>\n getTanStackColumnDef({\n columnDef: column,\n emptyCellContent,\n }),\n );\n\n // Status is unshifted before data columns; expand/select unshift after this.\n if (hasRowStatus) {\n tableColumns.unshift({\n id: \"a2-table-internal-row-status\",\n size: 32,\n maxSize: 32,\n minSize: 32,\n header: () => null,\n cell: ({ row }) => {\n const meta = (row.original as TableRow<T>).meta;\n const rowError = meta?.rowError;\n const rowWarning = meta?.rowWarning;\n if (rowError) return <CellStatus status={rowError} variant=\"error\" />;\n if (rowWarning)\n return <CellStatus status={rowWarning} variant=\"warning\" />;\n return null;\n },\n });\n }\n\n if (isExpandable) {\n tableColumns.unshift({\n id: INTERNAL_ROW_ACTION_PRIMARY_COLUMN_ID,\n size: 44,\n maxSize: 44,\n minSize: 44,\n meta: { disableHeaderAction: disableExpandAll },\n header: ({ table }) => {\n if (disableExpandAll) return null;\n return (\n <Flex grow={1} justifyContent=\"center\">\n <Button\n tabIndex={-1}\n onClick={table.getToggleAllRowsExpandedHandler()}\n appearance=\"ghost\"\n className={cx(styles[\"expand-button\"], {\n [styles[\"expanded\"]]: table.getIsAllRowsExpanded(),\n })}\n size=\"small\"\n icon={ExpandIcon}\n aria-label={\n table.getIsAllRowsExpanded()\n ? \"Collapse all rows\"\n : \"Expand all rows\"\n }\n data-cell-action=\"expand\"\n {...{ [ANV_PART_ATTR]: PARTS.expandAllButton }}\n />\n </Flex>\n );\n },\n cell: ({ row }) => {\n if (row.getCanExpand()) {\n return (\n <Button\n tabIndex={-1}\n onClick={row.getToggleExpandedHandler()}\n appearance=\"ghost\"\n size=\"small\"\n icon={ExpandIcon}\n className={cx(styles[\"expand-button\"], {\n [styles[\"expanded\"]]: row.getIsExpanded(),\n })}\n aria-label={row.getIsExpanded() ? \"Collapse row\" : \"Expand row\"}\n aria-expanded={\n hasSubComponent && row.getCanExpand()\n ? row.getIsExpanded()\n : undefined\n }\n aria-controls={\n hasSubComponent && row.getCanExpand()\n ? `${row.id}-sub-component`\n : undefined\n }\n data-cell-action=\"expand\"\n {...{ [ANV_PART_ATTR]: PARTS.expandButton }}\n />\n );\n }\n return null;\n },\n });\n }\n\n if (isSelectable) {\n tableColumns.unshift({\n id: INTERNAL_ROW_ACTION_SECONDARY_COLUMN_ID,\n size: 44,\n maxSize: 44,\n minSize: 44,\n meta: { disableHeaderAction: disableSelectAll },\n header: ({ table }) => {\n if (disableSelectAll) return null;\n return (\n <Flex grow={1} justifyContent=\"center\">\n <Checkbox\n tabIndex={-1}\n aria-label={\n table.getIsAllPageRowsSelected()\n ? \"Deselect all rows\"\n : \"Select all rows\"\n }\n checked={table.getIsAllPageRowsSelected()}\n indeterminate={table.getIsSomePageRowsSelected()}\n onChange={table.getToggleAllPageRowsSelectedHandler()}\n data-cell-action=\"select\"\n {...{ [ANV_PART_ATTR]: PARTS.selectAllCheckbox }}\n />\n </Flex>\n );\n },\n cell: ({ row }) => {\n const original = row.original as TableRow<T>;\n const isReadOnlyRow = Boolean(readOnlyRowMap[String(original.id)]);\n\n return (\n <Checkbox\n tabIndex={-1}\n aria-label={row.getIsSelected() ? \"Deselect row\" : \"Select row\"}\n checked={row.getIsSelected()}\n disabled={!row.getCanSelect()}\n readOnly={isReadOnlyRow}\n indeterminate={row.getIsSomeSelected()}\n onChange={row.getToggleSelectedHandler()}\n data-cell-action=\"select\"\n {...{ [ANV_PART_ATTR]: PARTS.selectCheckbox }}\n />\n );\n },\n });\n }\n\n return tableColumns;\n }, [\n columnsProp,\n disableExpandAll,\n disableSelectAll,\n emptyCellContent,\n hasRowStatus,\n hasSubComponent,\n isExpandable,\n isSelectable,\n readOnlyRowMap,\n ]);\n\n const table = useReactTable({\n data: tableData ?? [],\n columns,\n getCoreRowModel: getCoreRowModel(),\n getSortedRowModel: getSortedRowModel(),\n ...(isPaginated &&\n !isCursorPagination && {\n getPaginationRowModel: getPaginationRowModel(),\n }),\n ...(isExpandable && { getExpandedRowModel: getExpandedRowModel() }),\n getRowId: (row) => (row as TableRow<T>).id.toString(),\n getSubRows: (row) => (row as TableRow<T>).subRows ?? undefined,\n getRowCanExpand: (row) => {\n const originalRow = row.original as TableRow<T>;\n return (\n (originalRow?.subRows?.length ?? 0) > 0 ||\n originalRow?.subComponent != null\n );\n },\n state: {\n columnPinning,\n rowSelection,\n expanded,\n sorting,\n ...(isPaginated && {\n pagination: {\n pageIndex: currentPageIndex ?? 0,\n pageSize: rowsPerPage,\n },\n }),\n },\n manualPagination: !isPaginated || isAsyncPaginated || isCursorPagination,\n columnResizeMode: \"onChange\",\n manualSorting: isAsyncPaginated,\n // Pin ascending-first under manual sorting to keep the asc→desc→none cycle stable.\n sortDescFirst: isAsyncPaginated ? false : undefined,\n autoResetPageIndex: false,\n enableRowSelection: !isSelectable\n ? false\n : (row) => {\n const original = row.original as TableRow<T>;\n if (readOnlyRowMap[String(original.id)]) return false;\n return typeof isSelectable === \"function\"\n ? isSelectable(original)\n : true;\n },\n onRowSelectionChange: (newRowSelection) => {\n setRowSelection(newRowSelection as RowSelectionState);\n },\n onExpandedChange: (newExpanded) => {\n setExpanded(newExpanded as ExpandedState);\n },\n onSortingChange: (updaterOrValue) => {\n const newSorting =\n typeof updaterOrValue === \"function\"\n ? updaterOrValue(sorting)\n : updaterOrValue;\n\n // TanStack can re-fire the same sort; skip so the page index stays.\n if (shallowSortingEqual(newSorting, sorting ?? [])) {\n return;\n }\n\n setSorting(newSorting);\n if (isPaginated) {\n setCurrentPageIndex(0);\n }\n },\n });\n\n const rowVirtualizer = useDataTableVirtualizer({\n rowCount: table.getRowModel().rows.length,\n scrollRef: tableRef,\n disabled: disableVirtualization,\n forced: forceVirtualization,\n });\n\n const headers = table.getFlatHeaders();\n const headerRowCount = table.getHeaderGroups().length;\n const bodyRowCount = table.getRowModel().rows.length;\n const columnSizing = table.getState().columnSizing;\n\n const getMaxFooterRows = useCallback((column: ColumnDef<T>): number => {\n let currentMax = 0;\n\n if (Array.isArray(column.footerContent)) {\n currentMax = column.footerContent.length;\n } else if (column.footerContent) {\n currentMax = 1;\n }\n\n if (column.columns && Array.isArray(column.columns)) {\n const nestedMax = Math.max(\n ...column.columns.map((nestedCol) => getMaxFooterRows(nestedCol)),\n 0,\n );\n currentMax = Math.max(currentMax, nestedMax);\n }\n\n return currentMax;\n }, []);\n\n const footerLength = useMemo(() => {\n return Math.max(\n ...columnsProp.map((column) => getMaxFooterRows(column)),\n 0,\n );\n }, [columnsProp, getMaxFooterRows]);\n\n const hasFooters =\n footerLength > 0 || (customFooter !== undefined && customFooter.length > 0);\n\n const rowCount = useMemo(\n () => bodyRowCount + headerRowCount + footerLength,\n [bodyRowCount, headerRowCount, footerLength],\n );\n\n const isEmpty = !isLoading && (!tableData || tableData.length === 0);\n\n // `isEmpty` only reflects the current page. With server-side/cursor\n // pagination a page can be empty while other pages still hold data, so the\n // footer and pagination are hidden only when the dataset is empty entirely —\n // otherwise users could be trapped on an empty page with no way to navigate.\n const isTrulyEmpty =\n isEmpty &&\n (isCursorPagination\n ? !paginationObject?.hasPrevPage && !paginationObject?.hasNextPage\n : !totalItemCount);\n\n const { mode: themeMode } = useContext(ThemeProviderContext);\n const colorSchemeMode = themeMode ?? \"light\";\n\n const EmptyStateSvg = (() => {\n const svg = emptyState?.svg;\n if (isEmptyStateSvgComponent(svg)) return svg;\n if (!svg) return undefined;\n const picked =\n colorSchemeMode === \"dark\"\n ? (svg.dark ?? svg.light)\n : (svg.light ?? svg.dark);\n return isEmptyStateSvgComponent(picked) ? picked : undefined;\n })();\n\n /**\n * `getFlatHeaders()` is a new array on every TanStack state change. Fingerprint\n * the leaf id/size/pin/maxSize so the grid-template memo does not rebuild on\n * selection, sort, or expand.\n */\n const headerFingerprint = useMemo(() => {\n let fp = \"\";\n for (const header of headers) {\n if (header.subHeaders?.length !== 0) continue;\n fp +=\n header.column.id +\n \":\" +\n header.column.getSize() +\n \":\" +\n (header.column.getIsPinned() ?? \"\") +\n \":\" +\n (header.column.columnDef.maxSize ?? \"\") +\n \"|\";\n }\n return fp;\n }, [headers]);\n\n const cssVars = useMemo(() => {\n const vars: { [key: string]: number | string } = {};\n\n const leafHeaders = headers.filter(\n (header) => header.subHeaders?.length === 0,\n );\n\n const allHaveMaxWidth = leafHeaders.every(\n (header) => header.column.columnDef.maxSize != null,\n );\n\n const gridColumns = leafHeaders\n .map((header) => {\n const columnId = header.column.id;\n const hasBeenResized = columnId in columnSizing;\n const currentSize = header.column.getSize();\n\n if (hasBeenResized) {\n return `${currentSize}px`;\n }\n\n // Sticky offsets sum configured sizes; a flexible track would gap\n // adjacent pinned columns.\n if (header.column.getIsPinned()) {\n return `${currentSize}px`;\n }\n\n // Grow up to maxWidth; never auto-shrink below getSize() — overflow\n // scrolls horizontally instead.\n const maxSize = header.column.columnDef.maxSize;\n return `minmax(${currentSize}px, ${maxSize ? `${maxSize}px` : \"1fr\"})`;\n })\n .join(\" \");\n vars[\"--a2-grid-template-columns\"] = gridColumns;\n\n vars[\"--a2-table-width\"] = allHaveMaxWidth ? \"max-content\" : \"100%\";\n\n return vars;\n // headerFingerprint stands in for `headers`: it changes only when the\n // leaf-column structure actually changes, not on every state-driven\n // re-render. The headers/columnSizing reads inside the memo body still\n // reflect current state because they re-run together when fingerprint\n // changes.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [headerFingerprint, columnSizing]);\n\n const columnCount = useMemo(() => {\n return headers.filter((header) => header.subHeaders?.length === 0).length;\n }, [headers]);\n\n const containerClassName = cx(styles[\"data-table-container\"], className, {\n [styles[\"container-with-pagination\"]]: pagination && !isTrulyEmpty,\n });\n\n return (\n <DTFocusProvider\n rowCount={rowCount}\n columnCount={columnCount}\n tableRef={tableRef}\n leftPinnedWidth={table.getLeftTotalSize()}\n rightPinnedWidth={table.getRightTotalSize()}\n virtualizer={rowVirtualizer}\n headerRowCount={headerRowCount}\n >\n <DataTableSurfaceCoordinatorProvider intersectionBoundaryRef={tableRef}>\n <TableContainer\n {...rest}\n ref={tableRef}\n style={{\n ...styleCombined,\n width: cssVars[\"--a2-table-width\"],\n }}\n className={containerClassName}\n >\n <TableBase\n type=\"data-table\"\n style={cssVars}\n rowCount={rowCount}\n colCount={columnCount}\n hasSubRows={hasSubRows}\n >\n <DataTableHeader table={table} tableRef={tableRef} />\n <DataTableRowClickProvider\n // Cast is sound: the provider is intentionally non-generic, and TanStack\n // stringifies every row id (getRowId: (row) => row.id.toString()), so the\n // public (rowId: TableRow<T>[\"id\"]) => void always receives a string at runtime.\n onClickRow={onClickRow as ((rowId: string) => void) | undefined}\n readOnlyRowMap={readOnlyRowMap}\n >\n <DataTableBody\n table={table}\n hasSubRows={hasSubRows}\n virtualizer={rowVirtualizer}\n getRowVersion={getRowVersion}\n readOnlyRowMap={readOnlyRowMap}\n />\n </DataTableRowClickProvider>\n {isEmpty && emptyState && (\n <>\n <SrOnly>No data to display.</SrOnly>\n <div className={styles[\"empty-state-container\"]}>\n <Flex\n justifyContent=\"center\"\n alignItems=\"center\"\n direction=\"column\"\n gap={2}\n >\n {EmptyStateSvg && <EmptyStateSvg aria-hidden=\"true\" />}\n {emptyState.content}\n </Flex>\n </div>\n </>\n )}\n {isLoading && (\n <>\n <SrOnly>Loading data. Please wait.</SrOnly>\n <div\n style={{\n height: `${loadingSpacerHeight}px`,\n }}\n role=\"presentation\"\n aria-hidden=\"true\"\n >\n <Flex\n justifyContent=\"center\"\n alignItems=\"center\"\n style={{\n position: \"absolute\",\n top: 0,\n bottom: 0,\n left: 0,\n right: 0,\n margin: \"auto\",\n zIndex: 3,\n }}\n >\n <Spinner />\n </Flex>\n </div>\n </>\n )}\n {hasFooters && !isTrulyEmpty && (\n <DataTableFooter\n className={\n pagination ? styles[\"footer-with-pagination\"] : undefined\n }\n table={table}\n columns={columnsProp}\n customFooter={customFooter}\n />\n )}\n </TableBase>\n {pagination &&\n !isTrulyEmpty &&\n (isCursorPagination ? (\n <DataTableCursorPagination\n itemsPerPage={rowsPerPage}\n page={(currentPageIndex ?? 0) + 1}\n hasNextPage={paginationObject?.hasNextPage}\n hasPrevPage={paginationObject?.hasPrevPage}\n onPageChange={(page) => {\n setCurrentPageIndex(page - 1);\n }}\n onItemsPerPageChange={(itemsPerPage) => {\n paginationObject?.onRowsPerPageChange?.(itemsPerPage);\n }}\n itemsPerPageOptions={\n paginationObject?.onRowsPerPageChange\n ? paginationObject.rowsPerPageOptions\n : undefined\n }\n />\n ) : (\n <DataTablePagination\n itemsPerPage={rowsPerPage}\n showCount={paginationObject?.showCount ?? true}\n page={(currentPageIndex ?? 0) + 1}\n totalItemCount={totalItemCount}\n onPageChange={(page) => {\n setCurrentPageIndex(page - 1);\n }}\n onItemsPerPageChange={(itemsPerPage) => {\n paginationObject?.onRowsPerPageChange?.(itemsPerPage);\n }}\n itemsPerPageOptions={paginationObject?.rowsPerPageOptions}\n />\n ))}\n </TableContainer>\n </DataTableSurfaceCoordinatorProvider>\n </DTFocusProvider>\n );\n}\n\n/**\n * Sortable, pageable data grid with optional selection, expansion, pinning,\n * and cell editing. Attach a {@link DataTableRef} to `refresh` or `clearCache`.\n */\nexport const DataTable = forwardRef(DataTableInner) as (<\n T extends DataTableRowData,\n>(\n props: DataTableProps<T> & { ref?: Ref<DataTableRef> },\n) => ReturnType<typeof DataTableInner>) &\n Pick<\n ReturnType<\n typeof forwardRef<DataTableRef, DataTableProps<DataTableRowData>>\n >,\n \"$$typeof\"\n >;\n"],"names":["SurfaceContent","styles","DragIndicator","Close","ResizeWindowAlt","Surface","HEADING_REGEX","createColumnHelper","EditIcon","baseTableCellStyles","dataTableCellStyles","changedFields","validation","cellStyles","OpenInFullIcon","Fragment","memo","cellContentStyles","IconArrowUpward","IconArrowDownward","Pagination","IconKeyboardArrowLeft","PAGINATION_PARTS","IconKeyboardArrowRight","BasePagination","itemsPerPage","cache","table","ExpandIcon"],"mappings":"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","x_google_ignoreList":[20,21]}
|
|
1
|
+
{"version":3,"file":"DataTable-DIXP9-Bx.js","sources":["../public/assets/icons/st/resize_window_alt.svg","../src/internal/components/Surface/surfaceGeometry.ts","../src/internal/components/Surface/Surface.tsx","../src/beta/components/Table/formatters/booleanFormatter.tsx","../src/beta/components/Table/base/cells/TableEmptyCellContent.tsx","../src/beta/components/Table/internal/TruncateChips.tsx","../src/beta/components/Table/formatters/chipsFormatter.tsx","../src/beta/components/Table/formatters/currencyFormatter.tsx","../src/beta/components/Table/formatters/presets.ts","../src/beta/components/Table/formatters/dateFormatter.tsx","../src/beta/components/Table/formatters/dateTimeFormatter.tsx","../src/beta/components/Table/formatters/htmlToMarkdown.ts","../src/beta/components/Table/formatters/markdownFormatter.tsx","../src/beta/components/Table/formatters/htmlFormatter.tsx","../src/beta/components/Table/formatters/numberFormatter.tsx","../src/beta/components/Table/formatters/percentFormatter.tsx","../src/beta/components/Table/formatters/timeFormatter.tsx","../src/beta/components/Table/formatters/yearlessDateFormatter.tsx","../src/beta/components/Table/columnTypeDefaults.ts","../src/beta/components/Table/createColumnHelper.ts","../../../node_modules/.pnpm/@tanstack+table-core@8.21.3/node_modules/@tanstack/table-core/build/lib/index.mjs","../../../node_modules/.pnpm/@tanstack+react-table@8.21.3_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@tanstack/react-table/build/lib/index.mjs","../src/beta/components/Table/DataTable/parts.ts","../src/beta/components/Table/DataTable/internal/context/focus/DTFocusContext.tsx","../src/beta/components/Table/DataTable/internal/context/focus/useDTFocusDispatchContext.ts","../src/beta/components/Table/base/TableBase.tsx","../src/beta/components/Table/base/TableBody.tsx","../src/beta/components/Table/internal/getCommonPinningClasses.ts","../src/beta/components/Table/DataTable/internal/dataTableCellAffordanceHostClassName.ts","../src/beta/components/Table/DataTable/internal/DataTableCellAffordance.tsx","../src/beta/components/Table/DataTable/internal/editable-cells/DataTableEditableCellEditIcon.tsx","../src/beta/components/Table/base/cells/TableBodyCell.tsx","../src/beta/components/Table/DataTable/internal/util/cellPositionHelpers.ts","../src/beta/components/Table/DataTable/internal/util/cellTypeHelpers.ts","../src/beta/components/Table/internal/getCommonPinningStyles.ts","../src/beta/components/Table/DataTable/internal/context/rowClick/DataTableRowClickContext.tsx","../src/beta/components/Table/DataTable/internal/context/rowClick/useDataTableRowClick.ts","../src/beta/components/Table/DataTable/internal/util/getCellInteractives.ts","../src/beta/components/Table/DataTable/internal/constants.ts","../src/beta/components/Table/DataTable/internal/cells/DataTableBodyImmutableCell.tsx","../src/beta/components/Table/DataTable/internal/editable-cells/DataTableEditableTextCell.tsx","../src/beta/components/Table/DataTable/internal/editable-cells/DataTableEditableNumberCell.tsx","../src/beta/components/Table/DataTable/internal/editable-cells/useEditableMenuCell.ts","../src/beta/components/Table/DataTable/internal/editable-cells/DataTableEditableSelectCell.tsx","../src/beta/components/Table/DataTable/internal/editable-cells/DataTableEditableSelectAsyncCell.tsx","../src/beta/components/Table/DataTable/internal/editable-cells/DataTableEditableMultiselectCell.tsx","../src/beta/components/Table/DataTable/internal/editable-cells/DataTableEditableMultiselectAsyncCell.tsx","../src/beta/components/Table/DataTable/internal/editable-cells/DataTableEditableBooleanCell.tsx","../src/beta/components/Table/DataTable/internal/context/surface/DataTableSurfaceCoordinatorContext.ts","../src/beta/components/Table/DataTable/internal/context/surface/useDataTableSurfaceCoordinator.ts","../src/beta/components/Table/DataTable/internal/editable-cells/useCustomEditHelpers.ts","../src/beta/components/Table/DataTable/internal/editable-cells/DataTableEditableCustomCell.tsx","../src/beta/components/Table/DataTable/internal/cells/DataTableBodyMutableCell.tsx","../../hammer-icon/mdi/round/open_in_full.svg","../src/beta/components/Table/DataTable/internal/cells/DataTableOverflowCell.tsx","../src/beta/components/Table/DataTable/internal/cells/DataTableBodyCell.tsx","../src/beta/components/Table/DataTable/internal/DataTableBodyRow.tsx","../src/beta/components/Table/DataTable/internal/useColumnOrder.ts","../src/beta/components/Table/DataTable/internal/DataTableBody.tsx","../src/beta/components/Table/base/TableFooter.tsx","../src/beta/components/Table/base/cells/TableFooterCell.tsx","../src/beta/components/Table/DataTable/internal/cells/DataTableFooterCell.tsx","../src/beta/components/Table/DataTable/internal/DataTableFooter.tsx","../src/beta/components/Table/DataTable/internal/cells/useCellFocusListener.ts","../src/beta/components/Table/DataTable/internal/cells/CellStatus.tsx","../src/beta/components/Table/DataTable/internal/util/getTanStackColumnDef.tsx","../src/beta/components/Table/DataTable/internal/util/shallowSortingEqual.ts","../../hammer-icon/mdi/round/arrow_upward.svg","../../hammer-icon/mdi/round/arrow_downward.svg","../src/beta/components/Table/base/TableHeader.tsx","../src/beta/components/Table/base/cells/TableHeaderCell.tsx","../src/beta/components/Table/DataTable/internal/cells/DataTableHeaderCell.tsx","../src/beta/components/Table/internal/ResizeHandle.tsx","../src/beta/components/Table/DataTable/internal/DataTableHeader.tsx","../src/beta/components/Table/base/TableContainer.tsx","../src/beta/components/Table/DataTable/internal/DataTablePagination.tsx","../src/beta/components/Table/DataTable/internal/useAsyncData.tsx","../src/beta/components/Table/DataTable/internal/usePageDataCache.ts","../src/beta/components/Table/internal/scrollCellIntoView.ts","../src/beta/components/Table/DataTable/internal/context/focus/DTFocusProvider.tsx","../src/beta/components/Table/DataTable/internal/context/surface/DataTableSurfaceCoordinatorProvider.tsx","../src/beta/components/Table/DataTable/internal/context/rowClick/DataTableRowClickProvider.tsx","../src/beta/components/Table/DataTable/internal/useDataTableVirtualizer.ts","../src/beta/components/Table/DataTable/DataTable.tsx"],"sourcesContent":["import * as React from \"react\";\nconst SvgResizeWindowAlt = (props) => /* @__PURE__ */ React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", width: 24, height: 24, viewBox: \"0 0 24 24\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M4.4 21 21 4.425 19.575 3 3 19.575zm10.025 0L21 14.425 19.575 13 13 19.575z\" }));\nexport default SvgResizeWindowAlt;\n","/** Inset from the viewport edge used when clamping position and size. */\nexport const SURFACE_VIEWPORT_PADDING = 8;\nexport const SURFACE_MIN_WIDTH = 240;\nexport const SURFACE_MIN_HEIGHT = 120;\n\nexport type SurfaceGeometry = {\n x: number;\n y: number;\n width: number;\n /** Explicit height after resize; `null` means auto height. */\n height: number | null;\n /** When true, auto-placement must not overwrite user x/y/width. */\n isUserModified: boolean;\n /** When true, an explicit height is applied instead of max-height. */\n hasUserResized: boolean;\n};\n\nexport type SurfaceViewport = {\n width: number;\n height: number;\n};\n\nexport type SurfaceRect = {\n x: number;\n y: number;\n width: number;\n height: number;\n};\n\nexport type ClampSurfaceGeometryOptions = {\n /** Used when `height` is `null`. */\n measuredHeight?: number;\n /** After clamp, keep at least 1px overlap with this rect when possible. */\n intersectionBoundary?: SurfaceRect | null;\n};\n\ntype AxisCorrection = {\n value: number;\n delta: number;\n};\n\nfunction clampValue(value: number, min: number, max: number): number {\n return Math.min(Math.max(value, min), Math.max(min, max));\n}\n\n/** Remaining viewport width to the right of `x`, floored at {@link SURFACE_MIN_WIDTH}. */\nexport function getMaxSurfaceWidth(\n viewport: SurfaceViewport,\n x: number,\n): number {\n return Math.max(\n SURFACE_MIN_WIDTH,\n viewport.width - x - SURFACE_VIEWPORT_PADDING,\n );\n}\n\n/** Remaining viewport height below `y`, floored at {@link SURFACE_MIN_HEIGHT}. */\nexport function getMaxSurfaceHeight(\n viewport: SurfaceViewport,\n y: number,\n): number {\n return Math.max(\n SURFACE_MIN_HEIGHT,\n viewport.height - y - SURFACE_VIEWPORT_PADDING,\n );\n}\n\nfunction isFiniteRect(rect: SurfaceRect): boolean {\n return (\n Number.isFinite(rect.x) &&\n Number.isFinite(rect.y) &&\n Number.isFinite(rect.width) &&\n Number.isFinite(rect.height) &&\n rect.width > 0 &&\n rect.height > 0\n );\n}\n\nfunction getEffectiveSurfaceHeight(\n geometry: SurfaceGeometry,\n options: ClampSurfaceGeometryOptions,\n): number {\n if (geometry.height !== null) return geometry.height;\n\n return options.measuredHeight ?? SURFACE_MIN_HEIGHT;\n}\n\nfunction toSurfaceRect(\n geometry: SurfaceGeometry,\n options: ClampSurfaceGeometryOptions,\n): SurfaceRect {\n return {\n x: geometry.x,\n y: geometry.y,\n width: geometry.width,\n height: getEffectiveSurfaceHeight(geometry, options),\n };\n}\n\n/** True when the rects overlap by more than a shared edge. */\nexport function hasStrictRectIntersection(\n rect: SurfaceRect,\n boundary: SurfaceRect,\n): boolean {\n return (\n rect.x + rect.width > boundary.x &&\n boundary.x + boundary.width > rect.x &&\n rect.y + rect.height > boundary.y &&\n boundary.y + boundary.height > rect.y\n );\n}\n\nfunction getAxisCorrection({\n boundarySize,\n boundaryStart,\n max,\n min,\n size,\n start,\n}: {\n boundarySize: number;\n boundaryStart: number;\n max: number;\n min: number;\n size: number;\n start: number;\n}): AxisCorrection | null {\n const boundaryEnd = boundaryStart + boundarySize;\n const end = start + size;\n\n if (end > boundaryStart && start < boundaryEnd) {\n return { value: start, delta: 0 };\n }\n\n // Nudge 1px into the boundary so restored overlap is strict, not edge-touching.\n const target =\n end <= boundaryStart ? boundaryStart - size + 1 : boundaryEnd - 1;\n const value = clampValue(target, min, max);\n\n if (value + size <= boundaryStart || value >= boundaryEnd) {\n return null;\n }\n\n return { value, delta: Math.abs(value - start) };\n}\n\nfunction restoreBoundaryIntersection(\n geometry: SurfaceGeometry,\n viewport: SurfaceViewport,\n options: ClampSurfaceGeometryOptions,\n): SurfaceGeometry {\n const boundary = options.intersectionBoundary;\n\n if (!boundary || !isFiniteRect(boundary)) return geometry;\n\n const rect = toSurfaceRect(geometry, options);\n if (hasStrictRectIntersection(rect, boundary)) return geometry;\n\n const xCorrection = getAxisCorrection({\n boundarySize: boundary.width,\n boundaryStart: boundary.x,\n max: viewport.width - SURFACE_VIEWPORT_PADDING - rect.width,\n min: SURFACE_VIEWPORT_PADDING,\n size: rect.width,\n start: geometry.x,\n });\n const yCorrection = getAxisCorrection({\n boundarySize: boundary.height,\n boundaryStart: boundary.y,\n max: viewport.height - SURFACE_VIEWPORT_PADDING - rect.height,\n min: SURFACE_VIEWPORT_PADDING,\n size: rect.height,\n start: geometry.y,\n });\n\n if (!xCorrection || !yCorrection) return geometry;\n\n const xCorrected = {\n ...geometry,\n x: xCorrection.value,\n };\n const yCorrected = {\n ...geometry,\n y: yCorrection.value,\n };\n const xCorrectionIntersects = hasStrictRectIntersection(\n toSurfaceRect(xCorrected, options),\n boundary,\n );\n const yCorrectionIntersects = hasStrictRectIntersection(\n toSurfaceRect(yCorrected, options),\n boundary,\n );\n\n if (xCorrectionIntersects && yCorrectionIntersects) {\n return xCorrection.delta <= yCorrection.delta ? xCorrected : yCorrected;\n }\n\n if (xCorrectionIntersects) return xCorrected;\n if (yCorrectionIntersects) return yCorrected;\n\n const corrected = {\n ...geometry,\n x: xCorrection.value,\n y: yCorrection.value,\n };\n\n if (!hasStrictRectIntersection(toSurfaceRect(corrected, options), boundary)) {\n return geometry;\n }\n\n return corrected;\n}\n\n/** Clamps to the padded viewport, then restores optional boundary overlap. */\nexport function clampSurfaceGeometry(\n geometry: SurfaceGeometry,\n viewport: SurfaceViewport,\n options: ClampSurfaceGeometryOptions = {},\n): SurfaceGeometry {\n const width = clampValue(\n geometry.width,\n SURFACE_MIN_WIDTH,\n Math.max(SURFACE_MIN_WIDTH, viewport.width - SURFACE_VIEWPORT_PADDING * 2),\n );\n const effectiveHeight = clampValue(\n getEffectiveSurfaceHeight(geometry, options),\n SURFACE_MIN_HEIGHT,\n Math.max(\n SURFACE_MIN_HEIGHT,\n viewport.height - SURFACE_VIEWPORT_PADDING * 2,\n ),\n );\n const x = clampValue(\n geometry.x,\n SURFACE_VIEWPORT_PADDING,\n viewport.width - SURFACE_VIEWPORT_PADDING - width,\n );\n const y = clampValue(\n geometry.y,\n SURFACE_VIEWPORT_PADDING,\n viewport.height - SURFACE_VIEWPORT_PADDING - effectiveHeight,\n );\n const height =\n geometry.height === null\n ? null\n : clampValue(\n geometry.height,\n SURFACE_MIN_HEIGHT,\n getMaxSurfaceHeight(viewport, y),\n );\n\n return restoreBoundaryIntersection(\n {\n ...geometry,\n x,\n y,\n width: clampValue(\n width,\n SURFACE_MIN_WIDTH,\n getMaxSurfaceWidth(viewport, x),\n ),\n height,\n },\n viewport,\n options,\n );\n}\n\n/** Size-only clamp so a live resize does not slide `x`/`y` out from under the pointer. */\nexport function clampActiveResizeSurfaceGeometry(\n geometry: SurfaceGeometry,\n viewport: SurfaceViewport,\n): SurfaceGeometry {\n return {\n ...geometry,\n width: clampValue(\n geometry.width,\n SURFACE_MIN_WIDTH,\n getMaxSurfaceWidth(viewport, geometry.x),\n ),\n height:\n geometry.height === null\n ? null\n : clampValue(\n geometry.height,\n SURFACE_MIN_HEIGHT,\n getMaxSurfaceHeight(viewport, geometry.y),\n ),\n };\n}\n\n/** After resize ends, slides position so the surface intersects the boundary again. */\nexport function restoreSurfaceGeometryIntersection(\n geometry: SurfaceGeometry,\n viewport: SurfaceViewport,\n options: ClampSurfaceGeometryOptions = {},\n): SurfaceGeometry {\n const effectiveHeight = getEffectiveSurfaceHeight(geometry, options);\n\n return restoreBoundaryIntersection(\n {\n ...geometry,\n x: clampValue(\n geometry.x,\n SURFACE_VIEWPORT_PADDING,\n viewport.width - SURFACE_VIEWPORT_PADDING - geometry.width,\n ),\n y: clampValue(\n geometry.y,\n SURFACE_VIEWPORT_PADDING,\n viewport.height - SURFACE_VIEWPORT_PADDING - effectiveHeight,\n ),\n },\n viewport,\n options,\n );\n}\n","import {\n type ComponentPropsWithoutRef,\n type CSSProperties,\n type KeyboardEvent as ReactKeyboardEvent,\n type PointerEvent as ReactPointerEvent,\n type ReactElement,\n type ReactNode,\n type RefObject,\n createContext,\n forwardRef,\n useCallback,\n useContext,\n useEffect,\n useId,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport {\n autoPlacement,\n autoUpdate,\n computePosition,\n offset,\n shift,\n size,\n} from \"@floating-ui/react\";\nimport cx from \"classnames\";\nimport Close from \"@servicetitan/hammer-icon/mdi/round/close.svg\";\nimport DragIndicator from \"@servicetitan/hammer-icon/mdi/round/drag_indicator.svg\";\nimport ResizeWindowAlt from \"../../../../public/assets/icons/st/resize_window_alt.svg\";\nimport { Button } from \"../../../components/Button/Button\";\nimport { useBreakpoint, useMergeRefs } from \"../../../hooks\";\nimport { safeHidePopover, safeShowPopover } from \"../../functions\";\nimport {\n portalScopeClassNames,\n usePortalScopeStyle,\n} from \"../../functions/portalScopeClassNames\";\nimport { useOnClickOutside } from \"../../hooks/useOnClickOutside/useOnClickOutside\";\nimport { registerLayer, unregisterLayer } from \"../../utils\";\nimport {\n clampActiveResizeSurfaceGeometry,\n clampSurfaceGeometry,\n getMaxSurfaceWidth,\n restoreSurfaceGeometryIntersection,\n type ClampSurfaceGeometryOptions,\n type SurfaceGeometry,\n type SurfaceRect,\n type SurfaceViewport,\n SURFACE_VIEWPORT_PADDING,\n} from \"./surfaceGeometry\";\nimport styles from \"./Surface.module.scss\";\n\nexport type SurfaceProps = {\n /** Compound `Trigger` and `Content`. */\n children?: ReactNode;\n /** Whether `Content` is shown. */\n open: boolean;\n /** Shared id for trigger and content. Defaults to a generated `surface-*` id. */\n id?: string;\n};\n\ntype SurfaceContextProps = {\n open: boolean;\n surfaceId: string;\n triggerId: string;\n referenceElement: RefObject<HTMLElement | null>;\n setReference: (node: Element | null) => void;\n};\n\nconst SurfaceContext = createContext<SurfaceContextProps | null>(null);\n\nfunction useSurfaceContext() {\n const context = useContext(SurfaceContext);\n if (!context) {\n throw new Error(\n \"Surface compound components must be used within a <Surface> component.\",\n );\n }\n\n return context;\n}\n\nexport type SurfaceTriggerChildrenProps = {\n /** Assigns the trigger as the floating-ui reference. */\n ref: (node: Element | null) => void;\n id: string;\n \"aria-controls\": string;\n \"aria-haspopup\": \"dialog\";\n \"aria-expanded\": boolean;\n \"data-state\": \"open\" | \"closed\";\n};\n\nexport type SurfaceTriggerProps = {\n /** Render prop: spread the bag onto the real trigger element. */\n children: (props: SurfaceTriggerChildrenProps) => ReactElement;\n};\n\n/** Wires a trigger element to Surface content via a render prop. */\nexport function SurfaceTrigger({ children }: SurfaceTriggerProps) {\n const { open, setReference, surfaceId, triggerId } = useSurfaceContext();\n\n return children({\n ref: setReference,\n id: triggerId,\n \"aria-controls\": surfaceId,\n \"aria-haspopup\": \"dialog\",\n \"aria-expanded\": open,\n \"data-state\": open ? \"open\" : \"closed\",\n });\n}\n\nfunction resolveCssDimension(\n value: number | string | undefined,\n fallback: string,\n): string {\n if (typeof value === \"number\") return `${value}px`;\n if (typeof value === \"string\") return value;\n return fallback;\n}\n\nconst SURFACE_KEYBOARD_STEP = 8;\nconst SURFACE_KEYBOARD_SHIFT_STEP = 32;\n/** Held keys step on this interval, not every animation frame. */\nconst SURFACE_KEYBOARD_STEP_INTERVAL_MS = 33;\n\nconst SURFACE_ARROW_KEYS = [\n \"ArrowLeft\",\n \"ArrowRight\",\n \"ArrowUp\",\n \"ArrowDown\",\n] as const;\n\ntype SurfaceArrowKey = (typeof SURFACE_ARROW_KEYS)[number];\n\ntype SurfaceKeyboardInteractionMode = \"drag\" | \"resize\";\n\ntype SurfacePressedArrowKeys = Record<SurfaceArrowKey, boolean>;\n\ntype SurfaceKeyboardAxisDelta = {\n x: number;\n y: number;\n};\n\nfunction createSurfacePressedArrowKeys(): SurfacePressedArrowKeys {\n return {\n ArrowLeft: false,\n ArrowRight: false,\n ArrowUp: false,\n ArrowDown: false,\n };\n}\n\nfunction isSurfaceArrowKey(key: string): key is SurfaceArrowKey {\n return SURFACE_ARROW_KEYS.some((arrowKey) => arrowKey === key);\n}\n\nfunction getKeyboardAxisDelta(\n pressedKeys: SurfacePressedArrowKeys,\n): SurfaceKeyboardAxisDelta {\n return {\n x: Number(pressedKeys.ArrowRight) - Number(pressedKeys.ArrowLeft),\n y: Number(pressedKeys.ArrowDown) - Number(pressedKeys.ArrowUp),\n };\n}\n\nfunction hasPressedSurfaceArrowKey(\n pressedKeys: SurfacePressedArrowKeys,\n): boolean {\n return SURFACE_ARROW_KEYS.some((arrowKey) => pressedKeys[arrowKey]);\n}\n\nfunction hasKeyboardAxisDelta(axis: SurfaceKeyboardAxisDelta): boolean {\n return axis.x !== 0 || axis.y !== 0;\n}\n\ntype SurfaceInteraction =\n | { type: \"idle\" }\n | {\n type: \"dragging\";\n pointerId: number;\n startClientX: number;\n startClientY: number;\n startX: number;\n startY: number;\n }\n | {\n type: \"resizing\";\n pointerId: number;\n startClientX: number;\n startClientY: number;\n startWidth: number;\n startHeight: number;\n };\n\ntype ViewportSize = SurfaceViewport;\n\nfunction parsePixelDimension(value: string): number | null {\n const numericValue = Number.parseFloat(value);\n\n if (!Number.isFinite(numericValue)) return null;\n // Other CSS units fall through to measured size.\n if (value.trim().endsWith(\"px\")) return numericValue;\n\n return null;\n}\n\nfunction getViewportSize(): ViewportSize {\n return {\n width: window.innerWidth,\n height: window.innerHeight,\n };\n}\n\nfunction getMeasuredSurfaceHeight(element: HTMLElement): number {\n return element.getBoundingClientRect().height;\n}\n\nfunction getInteractionStep(shiftKey: boolean): number {\n return shiftKey ? SURFACE_KEYBOARD_SHIFT_STEP : SURFACE_KEYBOARD_STEP;\n}\n\nfunction getElementDimension(\n element: HTMLElement,\n authoredValue: string,\n fallback: number,\n dimension: \"width\" | \"height\",\n): number {\n const parsedValue = parsePixelDimension(authoredValue);\n if (parsedValue !== null) return parsedValue;\n\n const rect = element.getBoundingClientRect();\n const measuredValue = dimension === \"width\" ? rect.width : rect.height;\n\n return measuredValue > 0 ? measuredValue : fallback;\n}\n\n/**\n * @extends ComponentPropsWithoutRef<\"div\">\n */\nexport type SurfaceContentProps = Omit<\n ComponentPropsWithoutRef<\"div\">,\n \"children\" | \"id\" | \"title\"\n> & {\n /** Body below the header. */\n children: ReactNode;\n /** Close / commit (click-outside, header close). */\n onClose: () => void;\n /** Escape. Defaults to `onClose`. */\n onCancel?: () => void;\n /** Header title; also the default accessible name via `aria-labelledby`. */\n title?: ReactNode;\n /** Extra header actions, rendered before the close button. */\n headerContent?: ReactNode;\n /** Focused on open (next animation frame). */\n initialFocusRef?: RefObject<HTMLElement | null>;\n /** After place/drag/resize, keep overlapping this element's box. */\n intersectionBoundaryRef?: RefObject<HTMLElement | null>;\n /** CSS width. Numbers become `px`. Defaults to `325px`. */\n width?: number | string;\n /** CSS max-height. Numbers become `px`. Defaults to `450px`. */\n maxHeight?: number | string;\n /** Close-button accessible name. Defaults to `\"Close surface\"`. */\n closeButtonLabel?: string;\n};\n\n/** Positioned non-modal content (`popover=\"manual\"`); below `md` it becomes a drawer. */\nexport const SurfaceContent = forwardRef<HTMLDivElement, SurfaceContentProps>(\n function SurfaceContent(props, ref) {\n const {\n children,\n onClose,\n onCancel,\n title,\n headerContent,\n initialFocusRef,\n intersectionBoundaryRef,\n width,\n maxHeight,\n closeButtonLabel = \"Close surface\",\n className,\n style,\n onKeyDown,\n ...rest\n } = props;\n const { open, referenceElement, surfaceId } = useSurfaceContext();\n const breakpoint = useBreakpoint();\n // `useBreakpoint` is undefined until measured; treat that as popover, not drawer.\n const isDrawerMode = breakpoint ? !breakpoint.md : false;\n const [localElement, setLocalElement] = useState<HTMLDivElement | null>(\n null,\n );\n const localRef = useRef<HTMLDivElement | null>(null);\n const setLocalRef = useCallback((node: HTMLDivElement | null) => {\n localRef.current = node;\n setLocalElement(node);\n }, []);\n const surfaceRef = useMergeRefs([setLocalRef, ref]);\n const layerId = `${surfaceId}-layer`;\n const titleId = `${surfaceId}-title`;\n const resolvedWidth = resolveCssDimension(width, \"325px\");\n const resolvedMaxHeight = resolveCssDimension(maxHeight, \"450px\");\n const handleCancel = onCancel ?? onClose;\n const [geometry, setGeometry] = useState<SurfaceGeometry | null>(null);\n const interactionRef = useRef<SurfaceInteraction>({ type: \"idle\" });\n const keyboardInteractionModeRef =\n useRef<SurfaceKeyboardInteractionMode | null>(null);\n const pressedArrowKeysRef = useRef<SurfacePressedArrowKeys>(\n createSurfacePressedArrowKeys(),\n );\n const keyboardShiftKeyRef = useRef(false);\n const keyboardAnimationFrameRef = useRef<number | null>(null);\n const keyboardLastStepTimestampRef = useRef<number | null>(null);\n\n const getClampOptions = useCallback(\n (measuredHeight?: number): ClampSurfaceGeometryOptions => {\n const boundaryRect =\n intersectionBoundaryRef?.current?.getBoundingClientRect();\n const intersectionBoundary: SurfaceRect | null = boundaryRect\n ? {\n x: boundaryRect.x,\n y: boundaryRect.y,\n width: boundaryRect.width,\n height: boundaryRect.height,\n }\n : null;\n\n return {\n measuredHeight,\n intersectionBoundary,\n };\n },\n [intersectionBoundaryRef],\n );\n\n const restoreResizeIntersection = useCallback(() => {\n const viewport = getViewportSize();\n const measuredHeight = localRef.current\n ? getMeasuredSurfaceHeight(localRef.current)\n : undefined;\n const clampOptions = getClampOptions(measuredHeight);\n\n setGeometry((currentGeometry) =>\n currentGeometry\n ? restoreSurfaceGeometryIntersection(\n currentGeometry,\n viewport,\n clampOptions,\n )\n : currentGeometry,\n );\n }, [getClampOptions]);\n\n const cancelKeyboardAnimationFrame = useCallback(() => {\n if (keyboardAnimationFrameRef.current !== null) {\n window.cancelAnimationFrame(keyboardAnimationFrameRef.current);\n keyboardAnimationFrameRef.current = null;\n }\n\n keyboardLastStepTimestampRef.current = null;\n }, []);\n\n const clearKeyboardInteraction = useCallback(() => {\n cancelKeyboardAnimationFrame();\n keyboardInteractionModeRef.current = null;\n pressedArrowKeysRef.current = createSurfacePressedArrowKeys();\n keyboardShiftKeyRef.current = false;\n }, [cancelKeyboardAnimationFrame]);\n\n const applyKeyboardInteractionStep = useCallback(() => {\n const mode = keyboardInteractionModeRef.current;\n if (!mode) return;\n\n const axis = getKeyboardAxisDelta(pressedArrowKeysRef.current);\n if (!hasKeyboardAxisDelta(axis)) return;\n\n const step = getInteractionStep(keyboardShiftKeyRef.current);\n const viewport = getViewportSize();\n\n if (mode === \"drag\") {\n const measuredHeight = localRef.current\n ? getMeasuredSurfaceHeight(localRef.current)\n : undefined;\n const clampOptions = getClampOptions(measuredHeight);\n\n setGeometry((currentGeometry) =>\n currentGeometry\n ? clampSurfaceGeometry(\n {\n ...currentGeometry,\n x: currentGeometry.x + axis.x * step,\n y: currentGeometry.y + axis.y * step,\n isUserModified: true,\n },\n viewport,\n clampOptions,\n )\n : currentGeometry,\n );\n return;\n }\n\n setGeometry((currentGeometry) => {\n if (!currentGeometry || !localRef.current) return currentGeometry;\n\n const rect = localRef.current.getBoundingClientRect();\n\n return clampActiveResizeSurfaceGeometry(\n {\n ...currentGeometry,\n width: currentGeometry.width + axis.x * step,\n height: (currentGeometry.height ?? rect.height) + axis.y * step,\n isUserModified: true,\n hasUserResized: true,\n },\n viewport,\n );\n });\n }, [getClampOptions]);\n\n const runKeyboardInteractionFrame = useCallback(\n (timestamp: number) => {\n const mode = keyboardInteractionModeRef.current;\n const pressedKeys = pressedArrowKeysRef.current;\n\n if (!mode || !hasPressedSurfaceArrowKey(pressedKeys)) {\n clearKeyboardInteraction();\n return;\n }\n\n const axis = getKeyboardAxisDelta(pressedKeys);\n if (!hasKeyboardAxisDelta(axis)) {\n cancelKeyboardAnimationFrame();\n return;\n }\n\n const lastStepTimestamp = keyboardLastStepTimestampRef.current;\n if (\n lastStepTimestamp === null ||\n timestamp - lastStepTimestamp >= SURFACE_KEYBOARD_STEP_INTERVAL_MS\n ) {\n keyboardLastStepTimestampRef.current = timestamp;\n applyKeyboardInteractionStep();\n }\n\n keyboardAnimationFrameRef.current = window.requestAnimationFrame(\n runKeyboardInteractionFrame,\n );\n },\n [\n applyKeyboardInteractionStep,\n cancelKeyboardAnimationFrame,\n clearKeyboardInteraction,\n ],\n );\n\n const startKeyboardInteractionLoop = useCallback(() => {\n if (keyboardAnimationFrameRef.current !== null) return;\n\n keyboardLastStepTimestampRef.current = null;\n keyboardAnimationFrameRef.current = window.requestAnimationFrame(\n runKeyboardInteractionFrame,\n );\n }, [runKeyboardInteractionFrame]);\n\n useOnClickOutside({\n targets: [\n localElement ?? undefined,\n referenceElement.current ?? undefined,\n ],\n onClickOutside: () => {\n onClose();\n },\n disable: !open,\n layerId,\n });\n\n const updatePosition = useCallback(async () => {\n if (isDrawerMode || !localRef.current || !referenceElement.current)\n return;\n\n const surfaceElement = localRef.current;\n const position = await computePosition(\n referenceElement.current,\n surfaceElement,\n {\n placement: \"bottom-start\",\n middleware: [\n offset(8),\n autoPlacement({\n allowedPlacements: [\n \"bottom-start\",\n \"bottom-end\",\n \"top-start\",\n \"top-end\",\n ],\n padding: SURFACE_VIEWPORT_PADDING,\n }),\n shift({ padding: SURFACE_VIEWPORT_PADDING }),\n size({\n padding: SURFACE_VIEWPORT_PADDING,\n apply({ availableHeight, availableWidth, elements }) {\n // Keep user-dragged width; size() would otherwise reset it.\n const isUserModified =\n elements.floating.getAttribute(\"data-user-modified\") ===\n \"true\";\n Object.assign(elements.floating.style, {\n width: isUserModified\n ? elements.floating.style.width\n : resolvedWidth,\n maxWidth: `${Math.max(0, availableWidth)}px`,\n maxHeight: `min(${resolvedMaxHeight}, ${Math.max(0, availableHeight)}px)`,\n });\n },\n }),\n ],\n },\n );\n\n const viewport = getViewportSize();\n const measuredWidth = getElementDimension(\n surfaceElement,\n resolvedWidth,\n 325,\n \"width\",\n );\n const measuredHeight = getMeasuredSurfaceHeight(surfaceElement);\n const clampOptions = getClampOptions(measuredHeight);\n\n setGeometry((currentGeometry) => {\n if (currentGeometry?.isUserModified) {\n return clampSurfaceGeometry(currentGeometry, viewport, clampOptions);\n }\n\n return clampSurfaceGeometry(\n {\n x: position.x,\n y: position.y,\n width: measuredWidth,\n height: null,\n isUserModified: false,\n hasUserResized: false,\n },\n viewport,\n clampOptions,\n );\n });\n }, [\n getClampOptions,\n isDrawerMode,\n referenceElement,\n resolvedMaxHeight,\n resolvedWidth,\n ]);\n\n useEffect(() => {\n if (\n isDrawerMode ||\n !open ||\n !localRef.current ||\n !referenceElement.current\n ) {\n return;\n }\n\n return autoUpdate(referenceElement.current, localRef.current, () => {\n void updatePosition();\n });\n }, [isDrawerMode, open, referenceElement, updatePosition]);\n\n useEffect(() => {\n if (!localRef.current) return;\n\n if (open) {\n safeShowPopover(localRef.current);\n if (!isDrawerMode) {\n void updatePosition();\n }\n return;\n }\n\n interactionRef.current = { type: \"idle\" };\n clearKeyboardInteraction();\n setGeometry(null);\n safeHidePopover(localRef.current);\n }, [clearKeyboardInteraction, isDrawerMode, open, updatePosition]);\n\n useEffect(() => {\n if (!isDrawerMode) return;\n\n interactionRef.current = { type: \"idle\" };\n clearKeyboardInteraction();\n setGeometry(null);\n }, [clearKeyboardInteraction, isDrawerMode]);\n\n useEffect(() => {\n if (!open) return;\n\n registerLayer(layerId);\n return () => {\n unregisterLayer(layerId);\n };\n }, [layerId, open]);\n\n useEffect(() => {\n return () => {\n clearKeyboardInteraction();\n };\n }, [clearKeyboardInteraction]);\n\n useEffect(() => {\n if (!open || !initialFocusRef?.current) return;\n\n const focusHandle = window.requestAnimationFrame(() => {\n initialFocusRef.current?.focus();\n });\n\n return () => {\n window.cancelAnimationFrame(focusHandle);\n };\n }, [initialFocusRef, open]);\n\n const handleSurfaceKeyDown = useCallback(\n (event: ReactKeyboardEvent<HTMLDivElement>) => {\n onKeyDown?.(event);\n if (event.defaultPrevented) return;\n\n if (event.key === \"Escape\") {\n event.preventDefault();\n event.stopPropagation();\n handleCancel();\n }\n },\n [handleCancel, onKeyDown],\n );\n\n const handleDragPointerDown = useCallback(\n (event: ReactPointerEvent<HTMLButtonElement>) => {\n if (event.button !== 0 || isDrawerMode || !geometry) return;\n\n event.preventDefault();\n event.currentTarget.setPointerCapture(event.pointerId);\n interactionRef.current = {\n type: \"dragging\",\n pointerId: event.pointerId,\n startClientX: event.clientX,\n startClientY: event.clientY,\n startX: geometry.x,\n startY: geometry.y,\n };\n },\n [geometry, isDrawerMode],\n );\n\n const handleResizePointerDown = useCallback(\n (event: ReactPointerEvent<HTMLButtonElement>) => {\n if (\n event.button !== 0 ||\n isDrawerMode ||\n !geometry ||\n !localRef.current\n ) {\n return;\n }\n\n const rect = localRef.current.getBoundingClientRect();\n\n event.preventDefault();\n event.currentTarget.setPointerCapture(event.pointerId);\n interactionRef.current = {\n type: \"resizing\",\n pointerId: event.pointerId,\n startClientX: event.clientX,\n startClientY: event.clientY,\n startWidth: rect.width > 0 ? rect.width : geometry.width,\n startHeight: geometry.height ?? rect.height,\n };\n },\n [geometry, isDrawerMode],\n );\n\n const handleInteractionPointerMove = useCallback(\n (event: ReactPointerEvent<HTMLButtonElement>) => {\n const interaction = interactionRef.current;\n if (\n interaction.type === \"idle\" ||\n interaction.pointerId !== event.pointerId\n ) {\n return;\n }\n\n event.preventDefault();\n const deltaX = event.clientX - interaction.startClientX;\n const deltaY = event.clientY - interaction.startClientY;\n const viewport = getViewportSize();\n const measuredHeight = localRef.current\n ? getMeasuredSurfaceHeight(localRef.current)\n : undefined;\n const clampOptions = getClampOptions(measuredHeight);\n\n setGeometry((currentGeometry) => {\n if (!currentGeometry) return currentGeometry;\n\n if (interaction.type === \"dragging\") {\n return clampSurfaceGeometry(\n {\n ...currentGeometry,\n x: interaction.startX + deltaX,\n y: interaction.startY + deltaY,\n isUserModified: true,\n },\n viewport,\n clampOptions,\n );\n }\n\n return clampActiveResizeSurfaceGeometry(\n {\n ...currentGeometry,\n width: interaction.startWidth + deltaX,\n height: interaction.startHeight + deltaY,\n isUserModified: true,\n hasUserResized: true,\n },\n viewport,\n );\n });\n },\n [getClampOptions],\n );\n\n const handleInteractionPointerEnd = useCallback(\n (event: ReactPointerEvent<HTMLButtonElement>) => {\n const interaction = interactionRef.current;\n if (\n interaction.type === \"idle\" ||\n interaction.pointerId !== event.pointerId\n ) {\n return;\n }\n\n const shouldRestoreIntersection = interaction.type === \"resizing\";\n\n if (event.currentTarget.hasPointerCapture(event.pointerId)) {\n event.currentTarget.releasePointerCapture(event.pointerId);\n }\n\n interactionRef.current = { type: \"idle\" };\n\n if (shouldRestoreIntersection) {\n restoreResizeIntersection();\n }\n },\n [restoreResizeIntersection],\n );\n\n const handleDragKeyboardInteractionBlur = useCallback(() => {\n clearKeyboardInteraction();\n }, [clearKeyboardInteraction]);\n\n const handleResizeKeyboardInteractionBlur = useCallback(() => {\n restoreResizeIntersection();\n clearKeyboardInteraction();\n }, [clearKeyboardInteraction, restoreResizeIntersection]);\n\n const handleDragKeyDown = useCallback(\n (event: ReactKeyboardEvent<HTMLButtonElement>) => {\n if (isDrawerMode || !isSurfaceArrowKey(event.key)) return;\n\n event.preventDefault();\n event.stopPropagation();\n pressedArrowKeysRef.current[event.key] = true;\n keyboardShiftKeyRef.current = event.shiftKey;\n keyboardInteractionModeRef.current = \"drag\";\n startKeyboardInteractionLoop();\n },\n [isDrawerMode, startKeyboardInteractionLoop],\n );\n\n const handleDragKeyUp = useCallback(\n (event: ReactKeyboardEvent<HTMLButtonElement>) => {\n if (isDrawerMode || !isSurfaceArrowKey(event.key)) return;\n\n event.preventDefault();\n event.stopPropagation();\n pressedArrowKeysRef.current[event.key] = false;\n keyboardShiftKeyRef.current = event.shiftKey;\n\n if (!hasPressedSurfaceArrowKey(pressedArrowKeysRef.current)) {\n clearKeyboardInteraction();\n return;\n }\n\n keyboardInteractionModeRef.current = \"drag\";\n if (\n hasKeyboardAxisDelta(\n getKeyboardAxisDelta(pressedArrowKeysRef.current),\n )\n ) {\n startKeyboardInteractionLoop();\n }\n },\n [clearKeyboardInteraction, isDrawerMode, startKeyboardInteractionLoop],\n );\n\n const handleResizeKeyDown = useCallback(\n (event: ReactKeyboardEvent<HTMLButtonElement>) => {\n if (isDrawerMode || !isSurfaceArrowKey(event.key)) return;\n\n event.preventDefault();\n event.stopPropagation();\n pressedArrowKeysRef.current[event.key] = true;\n keyboardShiftKeyRef.current = event.shiftKey;\n keyboardInteractionModeRef.current = \"resize\";\n startKeyboardInteractionLoop();\n },\n [isDrawerMode, startKeyboardInteractionLoop],\n );\n\n const handleResizeKeyUp = useCallback(\n (event: ReactKeyboardEvent<HTMLButtonElement>) => {\n if (isDrawerMode || !isSurfaceArrowKey(event.key)) return;\n\n event.preventDefault();\n event.stopPropagation();\n pressedArrowKeysRef.current[event.key] = false;\n keyboardShiftKeyRef.current = event.shiftKey;\n\n if (!hasPressedSurfaceArrowKey(pressedArrowKeysRef.current)) {\n restoreResizeIntersection();\n clearKeyboardInteraction();\n return;\n }\n\n keyboardInteractionModeRef.current = \"resize\";\n if (\n hasKeyboardAxisDelta(\n getKeyboardAxisDelta(pressedArrowKeysRef.current),\n )\n ) {\n startKeyboardInteractionLoop();\n }\n },\n [\n clearKeyboardInteraction,\n isDrawerMode,\n restoreResizeIntersection,\n startKeyboardInteractionLoop,\n ],\n );\n\n const defaultLabelProps =\n !(\"aria-label\" in rest) && !(\"aria-labelledby\" in rest) && title\n ? { \"aria-labelledby\": titleId }\n : {};\n\n // Surface stays non-modal here: callers like DataTable custom editors rely on\n // surrounding table focus/navigation remaining available while the dialog is open.\n const dialogProps = {\n role: open ? \"dialog\" : undefined,\n \"aria-modal\": false,\n } as const;\n\n const surfaceStyle: CSSProperties = isDrawerMode\n ? { ...style }\n : {\n ...style,\n left: geometry ? `${geometry.x}px` : undefined,\n top: geometry ? `${geometry.y}px` : undefined,\n width: geometry ? `${geometry.width}px` : resolvedWidth,\n maxWidth: geometry\n ? `${getMaxSurfaceWidth(getViewportSize(), geometry.x)}px`\n : undefined,\n height:\n geometry?.hasUserResized && geometry.height !== null\n ? `${geometry.height}px`\n : undefined,\n maxHeight:\n geometry?.hasUserResized && geometry.height !== null\n ? undefined\n : resolvedMaxHeight,\n };\n\n const portalSurfaceStyle = usePortalScopeStyle(surfaceStyle);\n\n return (\n // eslint-disable-next-line jsx-a11y/no-static-element-interactions -- Surface dialog handles keyboard shortcuts for moving and resizing its nested controls.\n <div\n {...rest}\n {...defaultLabelProps}\n id={surfaceId}\n ref={surfaceRef}\n popover=\"manual\"\n {...dialogProps}\n tabIndex={-1}\n className={cx(className, styles[\"surface\"], portalScopeClassNames)}\n style={portalSurfaceStyle}\n onKeyDown={handleSurfaceKeyDown}\n data-anv=\"surface-content\"\n data-surface-variant={isDrawerMode ? \"drawer\" : \"popover\"}\n data-user-modified={geometry?.isUserModified ? \"true\" : undefined}\n >\n <div\n className={cx(styles[\"header\"], {\n [styles[\"header-bottom-border\"]]: title,\n })}\n >\n <div className={styles[\"header-copy\"]}>\n {title ? (\n <div id={titleId} className={styles[\"title\"]}>\n {title}\n </div>\n ) : null}\n </div>\n <div className={styles[\"header-actions\"]}>\n {headerContent}\n {!isDrawerMode ? (\n <Button\n appearance=\"ghost\"\n aria-label=\"Move surface\"\n className={styles[\"drag-handle\"]}\n data-anv=\"surface-drag-handle\"\n icon={DragIndicator}\n onBlur={handleDragKeyboardInteractionBlur}\n onKeyDown={handleDragKeyDown}\n onKeyUp={handleDragKeyUp}\n onPointerCancel={handleInteractionPointerEnd}\n onPointerDown={handleDragPointerDown}\n onPointerMove={handleInteractionPointerMove}\n onPointerUp={handleInteractionPointerEnd}\n size=\"small\"\n type=\"button\"\n />\n ) : null}\n <Button\n appearance=\"ghost\"\n aria-label={closeButtonLabel}\n className={styles[\"close-button\"]}\n data-anv=\"surface-close-button\"\n icon={Close}\n onClick={onClose}\n size=\"small\"\n type=\"button\"\n />\n </div>\n </div>\n <div\n className={cx(styles[\"content\"], {\n [styles[\"content-title-spacing\"]]: title,\n })}\n >\n {children}\n </div>\n {!isDrawerMode ? (\n <button\n aria-label=\"Resize surface\"\n className={styles[\"resize-handle\"]}\n data-anv=\"surface-resize-handle\"\n onBlur={handleResizeKeyboardInteractionBlur}\n onKeyDown={handleResizeKeyDown}\n onKeyUp={handleResizeKeyUp}\n onPointerDown={handleResizePointerDown}\n onPointerMove={handleInteractionPointerMove}\n onPointerUp={handleInteractionPointerEnd}\n onPointerCancel={handleInteractionPointerEnd}\n type=\"button\"\n >\n <ResizeWindowAlt aria-hidden=\"true\" data-anv=\"icon\" />\n </button>\n ) : null}\n </div>\n );\n },\n);\n\nSurfaceContent.displayName = \"SurfaceContent\";\n\n/**\n * Compound overlay: `Trigger` (render prop) plus positioned `Content`.\n *\n * @example\n * <Surface open={open}>\n * <Surface.Trigger>\n * {(triggerProps) => <Button {...triggerProps}>Open filters</Button>}\n * </Surface.Trigger>\n * <Surface.Content title=\"Filters\" onClose={() => setOpen(false)}>\n * <FilterForm />\n * </Surface.Content>\n * </Surface>\n */\nexport const Surface = Object.assign(\n function Surface({ children, open, id }: SurfaceProps) {\n const generatedId = useId();\n // useId includes colons; strip so the id is a valid CSS identifier.\n const cleanId = generatedId.replace(/:/g, \"\");\n const surfaceId = id ?? `surface-${cleanId}`;\n const triggerId = `${surfaceId}-trigger`;\n const referenceElement = useRef<HTMLElement | null>(null);\n\n const setReference = useCallback((node: Element | null) => {\n referenceElement.current = node as HTMLElement | null;\n }, []);\n\n const value = useMemo<SurfaceContextProps>(\n () => ({\n open,\n surfaceId,\n triggerId,\n referenceElement,\n setReference,\n }),\n [open, setReference, surfaceId, triggerId],\n );\n\n return (\n <SurfaceContext.Provider value={value}>\n {children}\n </SurfaceContext.Provider>\n );\n },\n {\n /** Render-prop trigger that registers the positioning reference. */\n Trigger: SurfaceTrigger,\n /** Positioned non-modal content; drawer below `md`. */\n Content: SurfaceContent,\n },\n);\n","export type BooleanFormatterOptions = {\n /** Label when `value` is `true`. Defaults to `\"True\"`. */\n trueLabel?: string;\n /** Label when `value` is `false`. Defaults to `\"False\"`. */\n falseLabel?: string;\n};\n\n/**\n * Formats a boolean for a table cell. `null` and `undefined` return `null`\n * (empty cell); they do not use either label.\n */\nexport const booleanFormatter = (\n value?: boolean | null,\n { trueLabel = \"True\", falseLabel = \"False\" }: BooleanFormatterOptions = {},\n) => {\n if (value == null) {\n return null;\n }\n return value ? trueLabel : falseLabel;\n};\n","import styles from \"./TableCells.module.scss\";\n\n/**\n * Em-dash placeholder that announces an empty table cell.\n */\nexport const TableEmptyCellContent = () => {\n return (\n <span aria-label=\"empty table cell\" className={styles[\"empty-cell\"]}>\n —\n </span>\n );\n};\n","import {\n type ComponentPropsWithoutRef,\n useCallback,\n useLayoutEffect,\n useRef,\n useState,\n} from \"react\";\nimport { Chip, type ChipProps } from \"../../../../components/Chip\";\nimport { Tooltip } from \"../../../../components/Tooltip\";\nimport cx from \"classnames\";\nimport styles from \"./TruncateChips.module.scss\";\n\nexport type TruncateChipsProps = ComponentPropsWithoutRef<\"div\"> & {\n /** Chips measured in order; trailing items collapse into the overflow chip. */\n items: ChipProps[];\n};\n\n/**\n * Renders a single row of chips and collapses any that do not\n * fit into a `+N` overflow chip with a tooltip listing the hidden labels.\n */\nexport const TruncateChips = ({\n items = [],\n className,\n ...rest\n}: TruncateChipsProps) => {\n const containerRef = useRef<HTMLDivElement>(null);\n const measurementRef = useRef<HTMLDivElement>(null);\n const measurementPlusRef = useRef<HTMLSpanElement>(null);\n const [visibleCount, setVisibleCount] = useState<number | null>(null);\n const overflowChipSize = items[0]?.size;\n\n const compute = useCallback(() => {\n const container = containerRef.current;\n const measurement = measurementRef.current;\n if (!container || !measurement) return;\n\n const parent = container.parentElement;\n if (!parent) return;\n\n // Chips fill the parent content box; clientWidth also includes its padding.\n const parentStyle = window.getComputedStyle(parent);\n const paddingLeft = parseFloat(parentStyle.paddingLeft) || 0;\n const paddingRight = parseFloat(parentStyle.paddingRight) || 0;\n const availableWidth = parent.clientWidth - paddingLeft - paddingRight;\n\n if (items.length === 0) {\n setVisibleCount(0);\n return;\n }\n if (availableWidth <= 0) return;\n\n const gap =\n parseFloat(window.getComputedStyle(measurement).columnGap || \"0\") || 0;\n const chipNodes = Array.from(measurement.children).slice(\n 0,\n items.length,\n ) as HTMLElement[];\n const plusWidth =\n measurementPlusRef.current?.getBoundingClientRect().width ?? 0;\n\n let widthUsed = 0;\n let fitAll = true;\n for (let i = 0; i < chipNodes.length; i++) {\n const chipWidth = chipNodes[i].getBoundingClientRect().width;\n const widthWithChip = widthUsed + (i > 0 ? gap : 0) + chipWidth;\n if (widthWithChip > availableWidth) {\n fitAll = false;\n break;\n }\n widthUsed = widthWithChip;\n }\n if (fitAll) {\n setVisibleCount(items.length);\n return;\n }\n\n // Once anything overflows, reserve the disclosure width before recomputing.\n const availableForChips = availableWidth - plusWidth - gap;\n widthUsed = 0;\n let fit = 0;\n for (let i = 0; i < chipNodes.length; i++) {\n const chipWidth = chipNodes[i].getBoundingClientRect().width;\n const next = widthUsed + (i > 0 ? gap : 0) + chipWidth;\n if (next > availableForChips) break;\n widthUsed = next;\n fit = i + 1;\n }\n setVisibleCount(fit);\n }, [items]);\n\n useLayoutEffect(() => {\n compute();\n\n const parent = containerRef.current?.parentElement;\n if (!parent) return;\n\n const observer = new ResizeObserver(() => {\n compute();\n });\n observer.observe(parent);\n\n return () => {\n observer.disconnect();\n };\n }, [compute]);\n\n const hiddenCount =\n visibleCount === null ? 0 : Math.max(0, items.length - visibleCount);\n const visibleItems =\n visibleCount === null ? [] : items.slice(0, visibleCount);\n const hiddenItems = visibleCount === null ? [] : items.slice(visibleCount);\n\n return (\n <div\n ref={containerRef}\n data-anv=\"truncate-chips\"\n className={cx(styles[\"truncate-chips\"], className)}\n style={{ visibility: visibleCount === null ? \"hidden\" : undefined }}\n {...rest}\n >\n {/* Natural-width copies stay out of flow so only the final row paints. */}\n <div\n ref={measurementRef}\n data-anv=\"truncate-chips-measurement\"\n className={styles[\"truncate-chips-measurement\"]}\n aria-hidden\n >\n {items.map((chip, index) => (\n <Chip key={index} {...chip} />\n ))}\n <Chip\n ref={measurementPlusRef}\n label={`+${items.length || 1}`}\n size={overflowChipSize}\n />\n </div>\n\n {visibleItems.map((chip, index) => (\n <Chip key={index} {...chip} />\n ))}\n {hiddenCount > 0 && (\n <Tooltip placement=\"top\">\n <Tooltip.Trigger>\n <Chip label={`+${hiddenCount}`} size={overflowChipSize} />\n </Tooltip.Trigger>\n <Tooltip.Content>\n {hiddenItems.map((item) => item.label).join(\", \")}\n </Tooltip.Content>\n </Tooltip>\n )}\n </div>\n );\n};\n","import { Chip, type ChipProps } from \"../../../../components/Chip\";\nimport { Flex } from \"../../../../components/Flex\";\nimport { TableEmptyCellContent } from \"../base/cells/TableEmptyCellContent\";\nimport { TruncateChips } from \"../internal/TruncateChips\";\n\n/**\n * One chip or many. Arrays must be all strings or all {@link ChipProps} — mixed\n * arrays are treated as `ChipProps[]`.\n */\nexport type ChipsValueType = string | string[] | ChipProps | ChipProps[];\n\nexport type ChipsFormatterOptions = {\n /**\n * When `true`, array values overflow into a +N disclosure instead of wrapping.\n * Ignored for a single chip. Defaults to wrapping.\n */\n truncateChips?: boolean;\n};\n\nconst getChipPropsWithDefaultSize = (chipProps: ChipProps): ChipProps => {\n if (chipProps.size !== undefined) {\n return chipProps;\n }\n\n // Chip forbids `small` when the chip is both clickable and dismissible.\n if (chipProps.onClick !== undefined && chipProps.onClose !== undefined) {\n return {\n ...chipProps,\n size: \"medium\",\n };\n }\n\n if (chipProps.onClick !== undefined) {\n return {\n ...chipProps,\n onClick: chipProps.onClick,\n onClose: undefined,\n size: \"small\",\n };\n }\n\n if (chipProps.onClose !== undefined) {\n return {\n ...chipProps,\n onClick: undefined,\n onClose: chipProps.onClose,\n size: \"small\",\n };\n }\n\n return {\n ...chipProps,\n onClick: undefined,\n onClose: undefined,\n size: \"small\",\n };\n};\n\n/**\n * Renders chips for a table cell. Falsy values and empty arrays become\n * {@link TableEmptyCellContent} (`—`). Unspecified `size` is `\"small\"`, or\n * `\"medium\"` when both `onClick` and `onClose` are set.\n */\nexport const chipsFormatter = (\n value?: ChipsValueType,\n { truncateChips }: ChipsFormatterOptions = { truncateChips: false },\n) => {\n if (!value) return <TableEmptyCellContent />;\n\n if (Array.isArray(value)) {\n if (value.length === 0) {\n return <TableEmptyCellContent />;\n }\n\n const isStringArray = value.every((v) => typeof v === \"string\");\n const items = isStringArray\n ? value.map((v) => getChipPropsWithDefaultSize({ label: v }))\n : (value as ChipProps[]).map(getChipPropsWithDefaultSize);\n\n if (truncateChips) {\n return <TruncateChips items={items} />;\n }\n\n return (\n <Flex direction=\"row\" gap=\"2\" wrap=\"wrap\">\n {items.map((item, index) => (\n <Chip key={`${item.label}-${index}`} {...item} />\n ))}\n </Flex>\n );\n }\n\n if (typeof value === \"string\") {\n return <Chip label={value} size=\"small\" />;\n }\n\n return <Chip {...getChipPropsWithDefaultSize(value)} />;\n};\n","export type CurrencyFormatterOptions = {\n /** `Intl` locale. Defaults to `\"en-US\"`. */\n locale?: Intl.LocalesArgument;\n /** ISO 4217 currency code. Defaults to `\"USD\"`. */\n currency?: Intl.NumberFormatOptions[\"currency\"];\n};\n\n/**\n * Formats a number as currency via `Intl`. Nullish values return `null`.\n */\nexport const currencyFormatter = (\n value?: number,\n options: CurrencyFormatterOptions = {},\n) => {\n const { locale = \"en-US\", currency = \"USD\" } = options;\n\n return value != null\n ? value.toLocaleString(locale, {\n style: \"currency\",\n currency,\n })\n : null;\n};\n","/** Named date bags for {@link dateFormatter} / {@link dateTimeFormatter}. */\nexport type DateFormatPreset = \"short\" | \"medium\" | \"long\" | \"full\";\n\n/** Named time bags for {@link timeFormatter} / {@link dateTimeFormatter}. */\nexport type TimeFormatPreset = \"short\" | \"medium\";\n\n/** `Intl.DateTimeFormatOptions` for each {@link DateFormatPreset}. */\nexport const dateFormatPresets: Record<\n DateFormatPreset,\n Intl.DateTimeFormatOptions\n> = {\n short: { year: \"numeric\", month: \"2-digit\", day: \"2-digit\" },\n medium: { year: \"numeric\", month: \"short\", day: \"2-digit\" },\n long: { year: \"numeric\", month: \"long\", day: \"2-digit\" },\n full: { weekday: \"long\", year: \"numeric\", month: \"long\", day: \"2-digit\" },\n};\n\n/** `Intl.DateTimeFormatOptions` for each {@link TimeFormatPreset}. */\nexport const timeFormatPresets: Record<\n TimeFormatPreset,\n Intl.DateTimeFormatOptions\n> = {\n short: { hour: \"2-digit\", minute: \"2-digit\" },\n medium: { hour: \"2-digit\", minute: \"2-digit\", second: \"2-digit\" },\n};\n","import { DateTime } from \"luxon\";\nimport { type DateFormatPreset, dateFormatPresets } from \"./presets\";\n\nexport type { DateFormatPreset };\n\nexport type DateFormatterOptions = {\n /** `Intl` locale. Defaults to `\"en-US\"`. */\n locale?: Intl.LocalesArgument;\n /**\n * Preset name or a custom `Intl.DateTimeFormatOptions` bag. Preset samples\n * below are `en-US`; other locales differ. Defaults to `\"short\"`.\n * - `\"short\"`: 01/15/2024\n * - `\"medium\"`: Jan 15, 2024\n * - `\"long\"`: January 15, 2024\n * - `\"full\"`: Monday, January 15, 2024\n */\n format?: DateFormatPreset | Intl.DateTimeFormatOptions;\n};\n\n/**\n * Formats a calendar date (`YYYY-MM-DD`) without applying a timezone offset.\n * For `Date` objects or ISO strings with time/zone, use {@link dateTimeFormatter}.\n * Invalid or missing values return `null`.\n */\nexport const dateFormatter = (\n value?: string | null,\n { locale = \"en-US\", format = \"short\" }: DateFormatterOptions = {},\n) => {\n if (value == null) {\n return null;\n }\n\n // UTC so a date-only ISO is not shifted by the local zone.\n const dateTime = DateTime.fromISO(value, { zone: \"utc\" });\n\n if (!dateTime.isValid) {\n return null;\n }\n\n const localeString = locale?.toString() ?? \"en-US\";\n\n if (typeof format === \"string\") {\n const preset = dateFormatPresets[format];\n return dateTime.setLocale(localeString).toLocaleString(preset);\n }\n\n return dateTime.setLocale(localeString).toLocaleString(format);\n};\n","import { DateTime } from \"luxon\";\nimport type { IanaZone } from \"../../../../types\";\nimport {\n type DateFormatPreset,\n type TimeFormatPreset,\n dateFormatPresets,\n timeFormatPresets,\n} from \"./presets\";\n\n/** Alias of {@link DateFormatPreset} for the date portion. */\nexport type DateTimeFormatDatePreset = DateFormatPreset;\n\n/** {@link TimeFormatPreset} plus `\"none\"` to omit the time. */\nexport type DateTimeFormatTimePreset = TimeFormatPreset | \"none\";\n\nexport type DateTimeFormatterOptions = {\n /** `Intl` locale. Defaults to `\"en-US\"`. */\n locale?: Intl.LocalesArgument;\n /**\n * Date portion: a {@link DateTimeFormatDatePreset} or a custom\n * `Intl.DateTimeFormatOptions` bag. Preset samples below are `en-US`.\n * Defaults to `\"short\"`.\n * - `\"short\"`: 01/15/2024\n * - `\"medium\"`: Jan 15, 2024\n * - `\"long\"`: January 15, 2024\n * - `\"full\"`: Monday, January 15, 2024\n */\n dateFormat?: DateTimeFormatDatePreset | Intl.DateTimeFormatOptions;\n /**\n * Time portion: a {@link DateTimeFormatTimePreset}, `\"none\"` (date only), or\n * a custom `Intl.DateTimeFormatOptions` bag. Preset samples below are `en-US`.\n * Defaults to `\"short\"`.\n * - `\"short\"`: 08:30 AM\n * - `\"medium\"`: 08:30:00 AM\n */\n timeFormat?: DateTimeFormatTimePreset | Intl.DateTimeFormatOptions;\n /**\n * IANA zone applied to `Date` values; omitted uses the local zone. ISO strings\n * ignore this: zoneless strings remain wall times, while strings with `Z` or\n * an offset are converted to the local zone.\n */\n timeZone?: IanaZone;\n};\n\nconst hasTimezoneInfo = (isoString: string): boolean => {\n return /(?:Z|[+-]\\d{2}:\\d{2})$/.test(isoString);\n};\n\n/**\n * Formats a date-time for a table cell. Invalid or missing values return `null`.\n *\n * `Date` values use the local zone (or {@link DateTimeFormatterOptions.timeZone}).\n * Zoneless ISO strings are wall times with no zone label; strings with `Z` or an\n * offset are instants converted to the local zone. Zoned values default to a\n * short zone name, which custom format options can override.\n */\nexport const dateTimeFormatter = (\n value?: string | Date | null,\n {\n locale = \"en-US\",\n dateFormat = \"short\",\n timeFormat = \"short\",\n timeZone,\n }: DateTimeFormatterOptions = {},\n) => {\n if (value == null) {\n return null;\n }\n\n let dateTime: DateTime;\n let includeTimezone = false;\n\n if (value instanceof Date) {\n if (timeZone) {\n dateTime = DateTime.fromJSDate(value, { zone: timeZone });\n } else {\n dateTime = DateTime.fromJSDate(value);\n }\n // `Date` is an instant; default a short zone name (later options can override).\n includeTimezone = true;\n } else {\n if (hasTimezoneInfo(value)) {\n dateTime = DateTime.fromISO(value);\n if (!dateTime.isValid) {\n return null;\n }\n includeTimezone = true;\n } else {\n // Zoneless ISO: UTC parse so the wall time is not shifted to local.\n dateTime = DateTime.fromISO(value, { zone: \"utc\" });\n }\n }\n\n if (!dateTime.isValid) {\n return null;\n }\n\n const localeString = locale?.toString() ?? \"en-US\";\n const localizedDateTime = dateTime.setLocale(localeString);\n\n const dateOptions: Intl.DateTimeFormatOptions =\n typeof dateFormat === \"string\" ? dateFormatPresets[dateFormat] : dateFormat;\n\n const timeOptions: Intl.DateTimeFormatOptions =\n typeof timeFormat === \"string\"\n ? timeFormat === \"none\"\n ? {}\n : timeFormatPresets[timeFormat]\n : timeFormat;\n\n const formatOptions: Intl.DateTimeFormatOptions = {\n ...(includeTimezone && { timeZoneName: \"short\" }),\n ...dateOptions,\n ...timeOptions,\n };\n\n return localizedDateTime.toLocaleString(formatOptions);\n};\n","const SUPPORTED_INLINE_TAGS = [\n \"strong\",\n \"b\",\n \"em\",\n \"i\",\n \"code\",\n \"mark\",\n \"s\",\n \"strike\",\n \"del\",\n];\n\nconst INLINE_TAG_REGEX = new RegExp(\n `<(${SUPPORTED_INLINE_TAGS.join(\"|\")})(\\\\s[^>]*)?>([\\\\s\\\\S]*?)</\\\\1>`,\n \"gi\",\n);\n\nconst INLINE_WRAPPERS: Record<string, [string, string]> = {\n strong: [\"**\", \"**\"],\n b: [\"**\", \"**\"],\n em: [\"*\", \"*\"],\n i: [\"*\", \"*\"],\n code: [\"`\", \"`\"],\n mark: [\"==\", \"==\"],\n s: [\"~~\", \"~~\"],\n strike: [\"~~\", \"~~\"],\n del: [\"~~\", \"~~\"],\n};\n\nfunction convertInlineTags(html: string): string {\n let result = html;\n let previous = \"\";\n\n while (result !== previous) {\n previous = result;\n result = result.replace(INLINE_TAG_REGEX, (_, tag, _attrs, content) => {\n const normalizedTag = tag.toLowerCase();\n const wrapper = INLINE_WRAPPERS[normalizedTag];\n if (!wrapper) return content;\n return wrapper[0] + convertInlineTags(content) + wrapper[1];\n });\n }\n\n return result;\n}\n\n// `u` (underline) and `span` (font size) come from RichTextEditor defaults.\n// There is no markdown equivalent, so unwrap and keep the text.\nconst UNWRAP_TAGS = [\"u\", \"span\"];\n\nconst UNWRAP_TAG_REGEX = new RegExp(\n `</?(?:${UNWRAP_TAGS.join(\"|\")})(\\\\s[^>]*)?>`,\n \"gi\",\n);\n\nfunction unwrapTags(html: string): string {\n return html.replace(UNWRAP_TAG_REGEX, \"\");\n}\n\nconst BR_REGEX = /<br\\s*\\/?>/gi;\nconst P_OPEN_REGEX = /<p(\\s[^>]*)?>/gi;\nconst P_CLOSE_REGEX = /<\\/p>/gi;\n\nconst HEADING_REGEX = /<h([1-3])(\\s[^>]*)?>([\\s\\S]*?)<\\/h\\1>/gi;\n\nfunction convertHeadings(html: string): string {\n return html.replace(HEADING_REGEX, (_, level: string, _attrs, content) => {\n const hashes = \"#\".repeat(Number(level));\n return `${hashes} ${content.trim()}\\n`;\n });\n}\n\nconst NAMED_ENTITIES: Record<string, string> = {\n amp: \"&\",\n lt: \"<\",\n gt: \">\",\n nbsp: \" \",\n quot: '\"',\n \"#39\": \"'\",\n};\n\nconst ENTITY_REGEX = /&(#x[0-9a-fA-F]+|#\\d+|[a-zA-Z]+);/g;\n\nfunction decodeEntities(text: string): string {\n return text.replace(ENTITY_REGEX, (match, entity: string) => {\n if (entity.startsWith(\"#x\")) {\n return String.fromCharCode(parseInt(entity.slice(2), 16));\n }\n if (entity.startsWith(\"#\")) {\n return String.fromCharCode(parseInt(entity.slice(1), 10));\n }\n return NAMED_ENTITIES[entity] ?? match;\n });\n}\n\nconst SUPPORTED_TAGS = [\n \"strong\",\n \"b\",\n \"em\",\n \"i\",\n \"code\",\n \"mark\",\n \"s\",\n \"strike\",\n \"del\",\n \"h1\",\n \"h2\",\n \"h3\",\n \"ul\",\n \"ol\",\n \"li\",\n \"br\",\n \"p\",\n];\n\nconst UNSUPPORTED_TAG_REGEX = new RegExp(\n `<(?!/?(?:${SUPPORTED_TAGS.join(\"|\")})\\\\b)[a-zA-Z][^>]*>[\\\\s\\\\S]*?</[a-zA-Z][^>]*>`,\n \"gi\",\n);\n\nconst ORPHANED_CLOSE_TAG_REGEX = new RegExp(\n `</(?!(?:${SUPPORTED_TAGS.join(\"|\")})\\\\b)[a-zA-Z][^>]*>`,\n \"gi\",\n);\n\nfunction removeUnsupportedTags(html: string): string {\n let result = html;\n let previous = \"\";\n\n // Nested unsupported tags: inner match first, then outer on the next pass.\n while (result !== previous) {\n previous = result;\n result = result.replace(UNSUPPORTED_TAG_REGEX, \"\");\n }\n\n result = result.replace(ORPHANED_CLOSE_TAG_REGEX, \"\");\n\n return result;\n}\n\nconst UL_REGEX = /<ul(\\s[^>]*)?>[\\s\\S]*?<\\/ul>/gi;\nconst OL_REGEX = /<ol(\\s[^>]*)?>[\\s\\S]*?<\\/ol>/gi;\nconst LI_REGEX = /<li(\\s[^>]*)?>[\\s\\S]*?<\\/li>/gi;\nconst LI_CONTENT_REGEX = /^<li(\\s[^>]*)?>|<\\/li>$/gi;\n\nfunction convertList(listHtml: string, ordered: boolean): string {\n const items = listHtml.match(LI_REGEX);\n if (!items) return \"\";\n\n return items\n .map((item, index) => {\n const content = convertInlineTags(\n item.replace(LI_CONTENT_REGEX, \"\").trim(),\n );\n return ordered ? `${index + 1}. ${content}` : `- ${content}`;\n })\n .join(\"\\n\");\n}\n\nfunction convertLists(html: string): string {\n let result = html;\n result = result.replace(UL_REGEX, (match) => convertList(match, false));\n result = result.replace(OL_REGEX, (match) => convertList(match, true));\n return result;\n}\n\n/**\n * Converts HTML to the subset {@link markdownFormatter} understands.\n *\n * Kept tags: strong, b, em, i, code, mark, s, strike, del, h1–h3, ul, ol, li,\n * br, p. `u` and `span` unwrap to plain text (alignment on p/h1–h3 is ignored).\n * Other tags and their content are dropped. Entities decode to plain text.\n * Nullish or empty input returns `\"\"`.\n */\nexport function htmlToMarkdown(value?: string | null): string {\n if (value == null || value === \"\") {\n return \"\";\n }\n\n let result = value;\n\n // Before removeUnsupportedTags, which would drop these tags *and* their text.\n result = unwrapTags(result);\n\n result = removeUnsupportedTags(result);\n\n // Before `<p>` handling so heading inner HTML still reaches the inline pass.\n result = convertHeadings(result);\n\n result = result.replace(P_OPEN_REGEX, \"\");\n result = result.replace(P_CLOSE_REGEX, \"\\n\");\n\n result = convertLists(result);\n\n result = result.replace(BR_REGEX, \"\\n\");\n\n result = convertInlineTags(result);\n\n // Last so entities inside tags still match as tags.\n result = decodeEntities(result);\n\n result = result.replace(/\\n+$/, \"\");\n\n return result;\n}\n","import type { ReactNode } from \"react\";\nimport styles from \"./MarkdownFormatter.module.scss\";\n\nconst INLINE_REGEX =\n /\\*\\*\\*(.+?)\\*\\*\\*|\\*\\*(.+?)\\*\\*|\\*(.+?)\\*|==(.+?)==|`(.+?)`|~~(.+?)~~/g;\n\nconst UNORDERED_LIST_REGEX = /^- (.+)$/;\nconst ORDERED_LIST_REGEX = /^\\d+\\. (.+)$/;\nconst HEADING_REGEX = /^(#{1,3}) +(\\S.*)$/;\n\nfunction parseInline(text: string): ReactNode[] {\n const parts: ReactNode[] = [];\n let lastIndex = 0;\n\n INLINE_REGEX.lastIndex = 0;\n let match: RegExpExecArray | null;\n\n while ((match = INLINE_REGEX.exec(text)) !== null) {\n if (match.index > lastIndex) {\n parts.push(text.substring(lastIndex, match.index));\n }\n\n const key = match.index;\n // Recursion mutates this shared `/g` regex; restore so the outer scan continues.\n const savedIndex = INLINE_REGEX.lastIndex;\n\n if (match[1]) {\n parts.push(\n <strong key={key}>\n <em>{parseInline(match[1])}</em>\n </strong>,\n );\n } else if (match[2]) {\n parts.push(<strong key={key}>{parseInline(match[2])}</strong>);\n } else if (match[3]) {\n parts.push(<em key={key}>{parseInline(match[3])}</em>);\n } else if (match[4]) {\n parts.push(\n <mark key={key} className={styles.highlight}>\n {parseInline(match[4])}\n </mark>,\n );\n } else if (match[5]) {\n // Nested markdown inside code would be wrong.\n parts.push(\n <code key={key} className={styles.code}>\n {match[5]}\n </code>,\n );\n } else if (match[6]) {\n parts.push(<s key={key}>{parseInline(match[6])}</s>);\n }\n\n INLINE_REGEX.lastIndex = savedIndex;\n lastIndex = savedIndex;\n }\n\n if (lastIndex < text.length) {\n parts.push(text.substring(lastIndex));\n }\n\n return parts;\n}\n\ntype Block =\n | { type: \"text\"; content: string }\n | { type: \"heading\"; level: 1 | 2 | 3; content: string }\n | { type: \"ul\"; items: string[] }\n | { type: \"ol\"; items: string[] };\n\nfunction parseBlocks(text: string): Block[] {\n const lines = text.split(\"\\n\");\n const blocks: Block[] = [];\n let i = 0;\n\n while (i < lines.length) {\n const line = lines[i];\n const headingMatch = line.match(HEADING_REGEX);\n const ulMatch = line.match(UNORDERED_LIST_REGEX);\n const olMatch = line.match(ORDERED_LIST_REGEX);\n\n if (headingMatch) {\n blocks.push({\n type: \"heading\",\n level: headingMatch[1].length as 1 | 2 | 3,\n content: headingMatch[2],\n });\n i++;\n } else if (ulMatch) {\n const items: string[] = [ulMatch[1]];\n i++;\n while (i < lines.length) {\n const nextUl = lines[i].match(UNORDERED_LIST_REGEX);\n if (!nextUl) break;\n items.push(nextUl[1]);\n i++;\n }\n blocks.push({ type: \"ul\", items });\n } else if (olMatch) {\n const items: string[] = [olMatch[1]];\n i++;\n while (i < lines.length) {\n const nextOl = lines[i].match(ORDERED_LIST_REGEX);\n if (!nextOl) break;\n items.push(nextOl[1]);\n i++;\n }\n blocks.push({ type: \"ol\", items });\n } else {\n if (line !== \"\") {\n blocks.push({ type: \"text\", content: line });\n }\n i++;\n }\n }\n\n return blocks;\n}\n\nfunction renderBlocks(blocks: Block[]): ReactNode[] {\n return blocks.map((block, index) => {\n switch (block.type) {\n case \"text\":\n return <span key={index}>{parseInline(block.content)}</span>;\n case \"heading\":\n // Styled text, not a heading element — document headings inside data\n // cells mislead assistive tech that navigates by heading.\n return (\n <span key={index} className={styles[`heading${block.level}`]}>\n {parseInline(block.content)}\n </span>\n );\n case \"ul\":\n return (\n <ul key={index} className={styles.list}>\n {block.items.map((item, i) => (\n <li key={i}>{parseInline(item)}</li>\n ))}\n </ul>\n );\n case \"ol\":\n return (\n <ol key={index} className={styles.list}>\n {block.items.map((item, i) => (\n <li key={i}>{parseInline(item)}</li>\n ))}\n </ol>\n );\n }\n });\n}\n\n/**\n * Renders a markdown subset in a DataTable cell: bold, italic, bold+italic,\n * strikethrough, inline code, `==highlight==`, `#`–`###` headings, and flat\n * `- ` / `N. ` lists. Empty or nullish values return `null`.\n */\nexport const markdownFormatter = (value?: string | null): ReactNode => {\n if (value == null || value === \"\") {\n return null;\n }\n\n const blocks = parseBlocks(value);\n\n if (blocks.length === 1 && blocks[0].type === \"text\") {\n return <>{parseInline(blocks[0].content)}</>;\n }\n\n return <div className={styles.container}>{renderBlocks(blocks)}</div>;\n};\n","import type { ReactNode } from \"react\";\nimport { htmlToMarkdown } from \"./htmlToMarkdown\";\nimport { markdownFormatter } from \"./markdownFormatter\";\n\n/**\n * DataTable cell HTML via {@link htmlToMarkdown} then {@link markdownFormatter}.\n * Empty or nullish HTML becomes `null`.\n */\nexport const htmlFormatter = (value?: string | null): ReactNode => {\n const markdown = htmlToMarkdown(value);\n return markdownFormatter(markdown);\n};\n","export type NumberFormatterOptions = {\n /** `Intl` locale. Defaults to `\"en-US\"`. */\n locale?: Intl.LocalesArgument;\n /** Floor on displayed fraction digits. Defaults to `0`. */\n minimumFractionDigits?: number;\n /** Cap on displayed fraction digits. Defaults to `2`. */\n maximumFractionDigits?: number;\n /** Grouping separators (thousands, etc.). Defaults to `true`. */\n useGrouping?: boolean;\n /**\n * `Intl.NumberFormat` notation. Defaults to `\"standard\"`.\n */\n notation?: \"standard\" | \"scientific\" | \"engineering\" | \"compact\";\n /**\n * `Intl.NumberFormat` sign display. Defaults to `\"auto\"`.\n */\n signDisplay?: \"auto\" | \"never\" | \"always\" | \"exceptZero\";\n};\n\n/**\n * Formats a number with `Intl` decimal style. `null` and `undefined` return\n * `null`.\n */\nexport const numberFormatter = (\n value?: number | null,\n options: NumberFormatterOptions = {},\n) => {\n const {\n locale = \"en-US\",\n minimumFractionDigits = 0,\n maximumFractionDigits = 2,\n useGrouping = true,\n notation = \"standard\",\n signDisplay = \"auto\",\n } = options;\n\n return value != null\n ? value.toLocaleString(locale, {\n style: \"decimal\",\n minimumFractionDigits,\n maximumFractionDigits,\n useGrouping,\n notation,\n signDisplay,\n })\n : null;\n};\n","export type PercentFormatterOptions = {\n /** Fraction digits for both min and max. Defaults to `2`. */\n decimals?: number;\n /** `Intl` locale. Defaults to `\"en-US\"`. */\n locale?: Intl.LocalesArgument;\n};\n\n/**\n * Formats a ratio as a percentage (`0.5` → `50%`) via `Intl` percent style.\n * Nullish values return `null`.\n */\nexport const percentFormatter = (\n value?: number,\n options: PercentFormatterOptions = {},\n) => {\n const { decimals = 2, locale = \"en-US\" } = options;\n\n return value != null\n ? value.toLocaleString(locale, {\n style: \"percent\",\n minimumFractionDigits: decimals,\n maximumFractionDigits: decimals,\n })\n : null;\n};\n","import { DateTime } from \"luxon\";\nimport { type TimeFormatPreset, timeFormatPresets } from \"./presets\";\n\nexport type { TimeFormatPreset };\n\nexport type TimeFormatterOptions = {\n /** `Intl` locale. Defaults to `\"en-US\"`. */\n locale?: Intl.LocalesArgument;\n /**\n * Preset name or a custom `Intl.DateTimeFormatOptions` bag. Preset samples\n * below are `en-US`. Defaults to `\"short\"`.\n * - `\"short\"`: 08:30 AM\n * - `\"medium\"`: 08:30:00 AM\n */\n format?: TimeFormatPreset | Intl.DateTimeFormatOptions;\n};\n\n/**\n * Formats a time-of-day string (`HH:mm` or `HH:mm:ss`) as a plain time with no\n * timezone conversion. Invalid or missing values return `null`.\n */\nexport const timeFormatter = (\n value?: string | null,\n { locale = \"en-US\", format = \"short\" }: TimeFormatterOptions = {},\n) => {\n if (value == null) {\n return null;\n }\n\n // Fixed UTC date keeps custom date fields deterministic and the clock time\n // zone-independent.\n const dateTime = DateTime.fromISO(`1970-01-01T${value}`, { zone: \"utc\" });\n\n if (!dateTime.isValid) {\n return null;\n }\n\n const localeString = locale?.toString() ?? \"en-US\";\n\n if (typeof format === \"string\") {\n const preset = timeFormatPresets[format];\n return dateTime.setLocale(localeString).toLocaleString(preset);\n }\n\n return dateTime.setLocale(localeString).toLocaleString(format);\n};\n","import { DateTime } from \"luxon\";\nimport type { YearlessDate } from \"../../../../components/DateFieldYearless/types\";\n\n/** Named month-day bags used when `format` is a string. */\nexport type YearlessDateFormatPreset = \"short\" | \"long\";\n\nexport type YearlessDateFormatterOptions = {\n /** `Intl` locale. Defaults to `\"en-US\"`. */\n locale?: Intl.LocalesArgument;\n /**\n * Preset name or a custom `Intl.DateTimeFormatOptions` bag. Preset samples\n * below are `en-US`. Defaults to `\"short\"`.\n * - `\"short\"`: Jan 05\n * - `\"long\"`: January 05\n */\n format?: YearlessDateFormatPreset | Intl.DateTimeFormatOptions;\n};\n\nconst formatPresets: Record<\n YearlessDateFormatPreset,\n Intl.DateTimeFormatOptions\n> = {\n short: { month: \"short\", day: \"2-digit\" },\n long: { month: \"long\", day: \"2-digit\" },\n};\n\n/**\n * Formats a month and day with no year. Accepts Temporal PlainMonthDay\n * (`\"--MM-DD\"`) or a {@link YearlessDate} object. Invalid or missing values\n * return `null`.\n */\nexport const yearlessDateFormatter = (\n value?: string | YearlessDate | null,\n { locale = \"en-US\", format = \"short\" }: YearlessDateFormatterOptions = {},\n) => {\n if (value == null) {\n return null;\n }\n\n let month: number;\n let day: number;\n\n if (typeof value === \"string\") {\n const match = value.match(/^--(\\d{2})-(\\d{2})$/);\n if (!match) {\n return null;\n }\n month = parseInt(match[1], 10);\n day = parseInt(match[2], 10);\n } else {\n if (value.month == null || value.day == null) {\n return null;\n }\n month = value.month;\n day = value.day;\n }\n\n const localeString = locale?.toString() ?? \"en-US\";\n\n // Leap-year reference so Feb 29 is valid.\n const dateTime = DateTime.fromObject(\n {\n year: 2000,\n month,\n day,\n },\n { locale: localeString },\n );\n\n if (!dateTime.isValid) {\n return null;\n }\n\n if (typeof format === \"string\") {\n const preset = formatPresets[format];\n return dateTime.toLocaleString(preset);\n }\n\n return dateTime.toLocaleString(format);\n};\n","import type { ReactNode } from \"react\";\nimport {\n booleanFormatter,\n type BooleanFormatterOptions,\n currencyFormatter,\n type CurrencyFormatterOptions,\n dateFormatter,\n type DateFormatterOptions,\n dateTimeFormatter,\n type DateTimeFormatterOptions,\n htmlFormatter,\n markdownFormatter,\n numberFormatter,\n type NumberFormatterOptions,\n percentFormatter,\n type PercentFormatterOptions,\n timeFormatter,\n type TimeFormatterOptions,\n} from \"./formatters\";\nimport type {\n ColumnType,\n ColumnTypeConfig,\n ColumnTypeOptionsMap,\n} from \"./types\";\n\n/**\n * Alignment and renderer factory applied when a column declares `type`.\n */\nexport type ColumnTypeDefaults = {\n /** Used unless the column supplies `align`. */\n align: \"start\" | \"center\" | \"end\";\n /**\n * Creates the default cell renderer from that type's formatter options.\n * `undefined` leaves text values on the raw-value render path.\n */\n createRenderCell: (\n options?: ColumnTypeOptionsMap[ColumnType],\n ) => ((value: unknown, rowDepth: number) => ReactNode) | undefined;\n};\n\n/**\n * Built-in formatter and alignment defaults keyed by {@link ColumnType}.\n */\nexport const COLUMN_TYPE_DEFAULTS: Record<ColumnType, ColumnTypeDefaults> = {\n text: {\n align: \"start\",\n createRenderCell: () => undefined,\n },\n number: {\n align: \"end\",\n createRenderCell: (options) => (value) =>\n numberFormatter(\n value as number | undefined,\n options as NumberFormatterOptions,\n ),\n },\n currency: {\n align: \"end\",\n createRenderCell: (options) => (value) =>\n currencyFormatter(\n value as number | undefined,\n options as CurrencyFormatterOptions,\n ),\n },\n percent: {\n align: \"end\",\n createRenderCell: (options) => (value) =>\n percentFormatter(\n value as number | undefined,\n options as PercentFormatterOptions,\n ),\n },\n date: {\n align: \"end\",\n createRenderCell: (options) => (value) =>\n dateFormatter(\n value as string | undefined,\n options as DateFormatterOptions,\n ),\n },\n dateTime: {\n align: \"end\",\n createRenderCell: (options) => (value) =>\n dateTimeFormatter(\n value as string | Date | undefined,\n options as DateTimeFormatterOptions,\n ),\n },\n time: {\n align: \"end\",\n createRenderCell: (options) => (value) =>\n timeFormatter(\n value as string | undefined,\n options as TimeFormatterOptions,\n ),\n },\n boolean: {\n align: \"start\",\n createRenderCell: (options) => (value) =>\n booleanFormatter(\n value as boolean | undefined,\n options as BooleanFormatterOptions,\n ),\n },\n markdown: {\n align: \"start\",\n createRenderCell: () => (value) =>\n markdownFormatter(value as string | undefined),\n },\n html: {\n align: \"start\",\n createRenderCell: () => (value) =>\n htmlFormatter(value as string | undefined),\n },\n};\n\n/** Normalizes shorthand and object column-type configurations to a tuple. */\nexport function resolveColumnTypeConfig<T extends ColumnType>(\n config: ColumnTypeConfig<T>,\n): [T, ColumnTypeOptionsMap[T] | undefined] {\n if (typeof config === \"string\") {\n return [config, undefined];\n }\n return [config.type, config.options];\n}\n\n/** Returns the built-in display defaults for a column type. */\nexport function getColumnTypeDefaults(type: ColumnType): ColumnTypeDefaults {\n return COLUMN_TYPE_DEFAULTS[type];\n}\n","import type { ReactNode } from \"react\";\nimport type {\n ColumnDef,\n ColumnOverflowConfig,\n ColumnTypeConfig,\n TextEditConfig,\n NumberEditConfig,\n SelectEditConfig,\n SelectAsyncEditConfig,\n MultiselectEditConfig,\n MultiselectAsyncEditConfig,\n BooleanEditConfig,\n CustomEditConfig,\n TableRow,\n ColumnHeaderConfig,\n ColumnReadRenderContext,\n ColumnReadRenderResult,\n} from \"./types\";\nimport type { MultiSelectMenuOption } from \"../../../components/MultiSelectMenu\";\n\ntype BaseColumnConfig<T> = ColumnHeaderConfig & {\n header?: ColumnDef<T>[\"header\"];\n /**\n * Deprecated string label used when `header` is omitted.\n * @deprecated Use `header.label` instead.\n */\n headerLabel?: string;\n /**\n * On leaf columns, overrides the alignment inferred from `type`. Group\n * headers stay start-aligned.\n */\n align?: \"start\" | \"center\" | \"end\";\n /**\n * Replaces the table's empty-cell content for this column. Applies to `null`,\n * `undefined`, and empty strings.\n */\n emptyCellContent?: ReactNode;\n /** One footer value, or one value per footer row. */\n footerContent?: ReactNode | ReactNode[];\n /** Same sizing contract as {@link ColumnBaseDef} `maxWidth`. */\n maxWidth?: number;\n /** Same sizing contract as {@link ColumnBaseDef} `minWidth`. */\n minWidth?: number;\n /** Same sizing contract as {@link ColumnBaseDef} `defaultWidth`. */\n defaultWidth?: number;\n /** Keeps the column against the chosen edge while horizontally scrolling. */\n pinned?: \"left\" | \"right\";\n /** Shows a pointer-driven resize handle. */\n resizable?: boolean;\n};\n\ntype BaseDataColumnConfig<T, K extends keyof T> = BaseColumnConfig<T> & {\n /**\n * Overrides the renderer inferred from `type`.\n */\n renderCell?: (\n value: T[K],\n context: ColumnReadRenderContext<TableRow<T>>,\n ) => ReactNode;\n /** Supplies sortable text when `renderCell` returns rich content. */\n getCellText?: (\n value: T[K],\n context: ColumnReadRenderContext<TableRow<T>>,\n ) => string;\n /**\n * Supplies rendered content and sortable text together. When set, it wins\n * over `renderCell` and `getCellText`. Prefer `getCellText` when only\n * sorting needs an alternate representation.\n */\n getReadRenderResult?: (\n value: T[K],\n context: ColumnReadRenderContext<TableRow<T>>,\n ) => ColumnReadRenderResult;\n /** Enables default sorting, or supplies a value comparator. */\n sortable?: boolean | ((valueA: T[K], valueB: T[K]) => number);\n /**\n * Supplies default formatting and alignment; explicit column options override\n * those defaults.\n */\n type?: ColumnTypeConfig;\n};\n\ntype GroupColumnConfig<T> = BaseColumnConfig<T> & {\n /** Leaf or nested columns displayed beneath this group header. */\n columns: ColumnDef<T>[];\n editConfig?: never;\n overflow?: never;\n renderCell?: never;\n sortable?: never;\n type?: never;\n};\n\ntype ReadOnlyColumnConfig<T, K extends keyof T> = BaseDataColumnConfig<T, K> & {\n editConfig?: undefined;\n /** Shows clipped read-only content in a disclosure Surface. */\n overflow?: ColumnOverflowConfig;\n};\n\ntype EditableColumnConfig<T, K extends keyof T> = BaseDataColumnConfig<T, K> & {\n overflow?: never;\n};\n\n/** Allows text editing only when the column value is string-compatible. */\ntype TextEditConfigColumnConfig<T, K extends keyof T> =\n NonNullable<T[K]> extends string\n ? EditableColumnConfig<T, K> & {\n editConfig: TextEditConfig<T, K>;\n }\n : never;\n\n/** Allows number editing only when the column value is number-compatible. */\ntype NumberEditConfigColumnConfig<T, K extends keyof T> =\n NonNullable<T[K]> extends number\n ? EditableColumnConfig<T, K> & {\n editConfig: NumberEditConfig<T, K>;\n }\n : never;\n\ntype SelectEditConfigColumnConfig<T, K extends keyof T> = EditableColumnConfig<\n T,\n K\n> & {\n editConfig: SelectEditConfig<T, K>;\n};\n\ntype SelectAsyncEditConfigColumnConfig<\n T,\n K extends keyof T,\n> = EditableColumnConfig<T, K> & {\n editConfig: SelectAsyncEditConfig<T>;\n};\n\ntype CellArrayItem =\n | object\n | string\n | number\n | boolean\n | bigint\n | symbol\n | null\n | undefined;\n\ntype CellArrayValue = readonly CellArrayItem[];\n\n/** Allows multiselect editing only when the column value is an array. */\ntype MultiselectEditConfigColumnConfig<T, K extends keyof T> =\n NonNullable<T[K]> extends CellArrayValue\n ? EditableColumnConfig<T, K> & {\n editConfig: MultiselectEditConfig<T, K>;\n }\n : never;\n\n/**\n * Allows async multiselect editing only for full option-object arrays, not\n * primitive arrays.\n */\ntype MultiselectAsyncEditConfigColumnConfig<T, K extends keyof T> =\n NonNullable<T[K]> extends MultiSelectMenuOption[]\n ? EditableColumnConfig<T, K> & {\n editConfig: MultiselectAsyncEditConfig<T>;\n }\n : never;\n\n/** Allows boolean editing only when the column value is boolean-compatible. */\ntype BooleanEditConfigColumnConfig<T, K extends keyof T> =\n NonNullable<T[K]> extends boolean\n ? EditableColumnConfig<T, K> & {\n editConfig: BooleanEditConfig<T, K>;\n }\n : never;\n\ntype CustomEditConfigColumnConfig<T, K extends keyof T> = EditableColumnConfig<\n T,\n K\n> & {\n editConfig: CustomEditConfig<T, K>;\n};\n\n/** Couples each edit mode to the column value types it supports. */\ntype ColumnConfig<T, K extends keyof T> =\n | ReadOnlyColumnConfig<T, K>\n | TextEditConfigColumnConfig<T, K>\n | NumberEditConfigColumnConfig<T, K>\n | SelectEditConfigColumnConfig<T, K>\n | SelectAsyncEditConfigColumnConfig<T, K>\n | MultiselectEditConfigColumnConfig<T, K>\n | MultiselectAsyncEditConfigColumnConfig<T, K>\n | BooleanEditConfigColumnConfig<T, K>\n | CustomEditConfigColumnConfig<T, K>;\n\n/**\n * Creates column definitions keyed to row type `T`. The returned overloads\n * constrain edit modes by value type and accept `{ group: string }` for grouped\n * columns.\n *\n * @example\n * ```ts\n * const column = createColumnHelper<{ name: string; amount: number }>();\n * column(\"amount\", {\n * header: { label: \"Amount\" },\n * type: \"currency\",\n * editConfig: { mode: \"number\", onChange: saveAmount },\n * });\n * column({ group: \"customer\" }, {\n * header: { label: \"Customer\" },\n * columns: [column(\"name\", { header: { label: \"Name\" } })],\n * });\n * ```\n */\nexport function createColumnHelper<T>() {\n function createColumn(\n id: { group: string },\n column: GroupColumnConfig<T>,\n ): ColumnDef<T>;\n function createColumn<K extends keyof T>(\n id: K,\n column: ColumnConfig<T, K>,\n ): ColumnDef<T>;\n function createColumn(\n id: keyof T | { group: string },\n column: ColumnConfig<T, keyof T> | GroupColumnConfig<T>,\n ): ColumnDef<T> {\n if (typeof id === \"object\" && \"group\" in id) {\n return {\n id: id.group as keyof T,\n ...column,\n } as ColumnDef<T>;\n }\n\n return {\n id,\n ...(column as ColumnConfig<T, keyof T>),\n } as ColumnDef<T>;\n }\n\n return createColumn;\n}\n","/**\n * table-core\n *\n * Copyright (c) TanStack\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE.md file in the root directory of this source tree.\n *\n * @license MIT\n */\n// type Person = {\n// firstName: string\n// lastName: string\n// age: number\n// visits: number\n// status: string\n// progress: number\n// createdAt: Date\n// nested: {\n// foo: [\n// {\n// bar: 'bar'\n// }\n// ]\n// bar: { subBar: boolean }[]\n// baz: {\n// foo: 'foo'\n// bar: {\n// baz: 'baz'\n// }\n// }\n// }\n// }\n\n// const test: DeepKeys<Person> = 'nested.foo.0.bar'\n// const test2: DeepKeys<Person> = 'nested.bar'\n\n// const helper = createColumnHelper<Person>()\n\n// helper.accessor('nested.foo', {\n// cell: info => info.getValue(),\n// })\n\n// helper.accessor('nested.foo.0.bar', {\n// cell: info => info.getValue(),\n// })\n\n// helper.accessor('nested.bar', {\n// cell: info => info.getValue(),\n// })\n\nfunction createColumnHelper() {\n return {\n accessor: (accessor, column) => {\n return typeof accessor === 'function' ? {\n ...column,\n accessorFn: accessor\n } : {\n ...column,\n accessorKey: accessor\n };\n },\n display: column => column,\n group: column => column\n };\n}\n\n// Is this type a tuple?\n\n// If this type is a tuple, what indices are allowed?\n\n///\n\nfunction functionalUpdate(updater, input) {\n return typeof updater === 'function' ? updater(input) : updater;\n}\nfunction noop() {\n //\n}\nfunction makeStateUpdater(key, instance) {\n return updater => {\n instance.setState(old => {\n return {\n ...old,\n [key]: functionalUpdate(updater, old[key])\n };\n });\n };\n}\nfunction isFunction(d) {\n return d instanceof Function;\n}\nfunction isNumberArray(d) {\n return Array.isArray(d) && d.every(val => typeof val === 'number');\n}\nfunction flattenBy(arr, getChildren) {\n const flat = [];\n const recurse = subArr => {\n subArr.forEach(item => {\n flat.push(item);\n const children = getChildren(item);\n if (children != null && children.length) {\n recurse(children);\n }\n });\n };\n recurse(arr);\n return flat;\n}\nfunction memo(getDeps, fn, opts) {\n let deps = [];\n let result;\n return depArgs => {\n let depTime;\n if (opts.key && opts.debug) depTime = Date.now();\n const newDeps = getDeps(depArgs);\n const depsChanged = newDeps.length !== deps.length || newDeps.some((dep, index) => deps[index] !== dep);\n if (!depsChanged) {\n return result;\n }\n deps = newDeps;\n let resultTime;\n if (opts.key && opts.debug) resultTime = Date.now();\n result = fn(...newDeps);\n opts == null || opts.onChange == null || opts.onChange(result);\n if (opts.key && opts.debug) {\n if (opts != null && opts.debug()) {\n const depEndTime = Math.round((Date.now() - depTime) * 100) / 100;\n const resultEndTime = Math.round((Date.now() - resultTime) * 100) / 100;\n const resultFpsPercentage = resultEndTime / 16;\n const pad = (str, num) => {\n str = String(str);\n while (str.length < num) {\n str = ' ' + str;\n }\n return str;\n };\n console.info(`%c⏱ ${pad(resultEndTime, 5)} /${pad(depEndTime, 5)} ms`, `\n font-size: .6rem;\n font-weight: bold;\n color: hsl(${Math.max(0, Math.min(120 - 120 * resultFpsPercentage, 120))}deg 100% 31%);`, opts == null ? void 0 : opts.key);\n }\n }\n return result;\n };\n}\nfunction getMemoOptions(tableOptions, debugLevel, key, onChange) {\n return {\n debug: () => {\n var _tableOptions$debugAl;\n return (_tableOptions$debugAl = tableOptions == null ? void 0 : tableOptions.debugAll) != null ? _tableOptions$debugAl : tableOptions[debugLevel];\n },\n key: process.env.NODE_ENV === 'development' && key,\n onChange\n };\n}\n\nfunction createCell(table, row, column, columnId) {\n const getRenderValue = () => {\n var _cell$getValue;\n return (_cell$getValue = cell.getValue()) != null ? _cell$getValue : table.options.renderFallbackValue;\n };\n const cell = {\n id: `${row.id}_${column.id}`,\n row,\n column,\n getValue: () => row.getValue(columnId),\n renderValue: getRenderValue,\n getContext: memo(() => [table, column, row, cell], (table, column, row, cell) => ({\n table,\n column,\n row,\n cell: cell,\n getValue: cell.getValue,\n renderValue: cell.renderValue\n }), getMemoOptions(table.options, 'debugCells', 'cell.getContext'))\n };\n table._features.forEach(feature => {\n feature.createCell == null || feature.createCell(cell, column, row, table);\n }, {});\n return cell;\n}\n\nfunction createColumn(table, columnDef, depth, parent) {\n var _ref, _resolvedColumnDef$id;\n const defaultColumn = table._getDefaultColumnDef();\n const resolvedColumnDef = {\n ...defaultColumn,\n ...columnDef\n };\n const accessorKey = resolvedColumnDef.accessorKey;\n let id = (_ref = (_resolvedColumnDef$id = resolvedColumnDef.id) != null ? _resolvedColumnDef$id : accessorKey ? typeof String.prototype.replaceAll === 'function' ? accessorKey.replaceAll('.', '_') : accessorKey.replace(/\\./g, '_') : undefined) != null ? _ref : typeof resolvedColumnDef.header === 'string' ? resolvedColumnDef.header : undefined;\n let accessorFn;\n if (resolvedColumnDef.accessorFn) {\n accessorFn = resolvedColumnDef.accessorFn;\n } else if (accessorKey) {\n // Support deep accessor keys\n if (accessorKey.includes('.')) {\n accessorFn = originalRow => {\n let result = originalRow;\n for (const key of accessorKey.split('.')) {\n var _result;\n result = (_result = result) == null ? void 0 : _result[key];\n if (process.env.NODE_ENV !== 'production' && result === undefined) {\n console.warn(`\"${key}\" in deeply nested key \"${accessorKey}\" returned undefined.`);\n }\n }\n return result;\n };\n } else {\n accessorFn = originalRow => originalRow[resolvedColumnDef.accessorKey];\n }\n }\n if (!id) {\n if (process.env.NODE_ENV !== 'production') {\n throw new Error(resolvedColumnDef.accessorFn ? `Columns require an id when using an accessorFn` : `Columns require an id when using a non-string header`);\n }\n throw new Error();\n }\n let column = {\n id: `${String(id)}`,\n accessorFn,\n parent: parent,\n depth,\n columnDef: resolvedColumnDef,\n columns: [],\n getFlatColumns: memo(() => [true], () => {\n var _column$columns;\n return [column, ...((_column$columns = column.columns) == null ? void 0 : _column$columns.flatMap(d => d.getFlatColumns()))];\n }, getMemoOptions(table.options, 'debugColumns', 'column.getFlatColumns')),\n getLeafColumns: memo(() => [table._getOrderColumnsFn()], orderColumns => {\n var _column$columns2;\n if ((_column$columns2 = column.columns) != null && _column$columns2.length) {\n let leafColumns = column.columns.flatMap(column => column.getLeafColumns());\n return orderColumns(leafColumns);\n }\n return [column];\n }, getMemoOptions(table.options, 'debugColumns', 'column.getLeafColumns'))\n };\n for (const feature of table._features) {\n feature.createColumn == null || feature.createColumn(column, table);\n }\n\n // Yes, we have to convert table to unknown, because we know more than the compiler here.\n return column;\n}\n\nconst debug = 'debugHeaders';\n//\n\nfunction createHeader(table, column, options) {\n var _options$id;\n const id = (_options$id = options.id) != null ? _options$id : column.id;\n let header = {\n id,\n column,\n index: options.index,\n isPlaceholder: !!options.isPlaceholder,\n placeholderId: options.placeholderId,\n depth: options.depth,\n subHeaders: [],\n colSpan: 0,\n rowSpan: 0,\n headerGroup: null,\n getLeafHeaders: () => {\n const leafHeaders = [];\n const recurseHeader = h => {\n if (h.subHeaders && h.subHeaders.length) {\n h.subHeaders.map(recurseHeader);\n }\n leafHeaders.push(h);\n };\n recurseHeader(header);\n return leafHeaders;\n },\n getContext: () => ({\n table,\n header: header,\n column\n })\n };\n table._features.forEach(feature => {\n feature.createHeader == null || feature.createHeader(header, table);\n });\n return header;\n}\nconst Headers = {\n createTable: table => {\n // Header Groups\n\n table.getHeaderGroups = memo(() => [table.getAllColumns(), table.getVisibleLeafColumns(), table.getState().columnPinning.left, table.getState().columnPinning.right], (allColumns, leafColumns, left, right) => {\n var _left$map$filter, _right$map$filter;\n const leftColumns = (_left$map$filter = left == null ? void 0 : left.map(columnId => leafColumns.find(d => d.id === columnId)).filter(Boolean)) != null ? _left$map$filter : [];\n const rightColumns = (_right$map$filter = right == null ? void 0 : right.map(columnId => leafColumns.find(d => d.id === columnId)).filter(Boolean)) != null ? _right$map$filter : [];\n const centerColumns = leafColumns.filter(column => !(left != null && left.includes(column.id)) && !(right != null && right.includes(column.id)));\n const headerGroups = buildHeaderGroups(allColumns, [...leftColumns, ...centerColumns, ...rightColumns], table);\n return headerGroups;\n }, getMemoOptions(table.options, debug, 'getHeaderGroups'));\n table.getCenterHeaderGroups = memo(() => [table.getAllColumns(), table.getVisibleLeafColumns(), table.getState().columnPinning.left, table.getState().columnPinning.right], (allColumns, leafColumns, left, right) => {\n leafColumns = leafColumns.filter(column => !(left != null && left.includes(column.id)) && !(right != null && right.includes(column.id)));\n return buildHeaderGroups(allColumns, leafColumns, table, 'center');\n }, getMemoOptions(table.options, debug, 'getCenterHeaderGroups'));\n table.getLeftHeaderGroups = memo(() => [table.getAllColumns(), table.getVisibleLeafColumns(), table.getState().columnPinning.left], (allColumns, leafColumns, left) => {\n var _left$map$filter2;\n const orderedLeafColumns = (_left$map$filter2 = left == null ? void 0 : left.map(columnId => leafColumns.find(d => d.id === columnId)).filter(Boolean)) != null ? _left$map$filter2 : [];\n return buildHeaderGroups(allColumns, orderedLeafColumns, table, 'left');\n }, getMemoOptions(table.options, debug, 'getLeftHeaderGroups'));\n table.getRightHeaderGroups = memo(() => [table.getAllColumns(), table.getVisibleLeafColumns(), table.getState().columnPinning.right], (allColumns, leafColumns, right) => {\n var _right$map$filter2;\n const orderedLeafColumns = (_right$map$filter2 = right == null ? void 0 : right.map(columnId => leafColumns.find(d => d.id === columnId)).filter(Boolean)) != null ? _right$map$filter2 : [];\n return buildHeaderGroups(allColumns, orderedLeafColumns, table, 'right');\n }, getMemoOptions(table.options, debug, 'getRightHeaderGroups'));\n\n // Footer Groups\n\n table.getFooterGroups = memo(() => [table.getHeaderGroups()], headerGroups => {\n return [...headerGroups].reverse();\n }, getMemoOptions(table.options, debug, 'getFooterGroups'));\n table.getLeftFooterGroups = memo(() => [table.getLeftHeaderGroups()], headerGroups => {\n return [...headerGroups].reverse();\n }, getMemoOptions(table.options, debug, 'getLeftFooterGroups'));\n table.getCenterFooterGroups = memo(() => [table.getCenterHeaderGroups()], headerGroups => {\n return [...headerGroups].reverse();\n }, getMemoOptions(table.options, debug, 'getCenterFooterGroups'));\n table.getRightFooterGroups = memo(() => [table.getRightHeaderGroups()], headerGroups => {\n return [...headerGroups].reverse();\n }, getMemoOptions(table.options, debug, 'getRightFooterGroups'));\n\n // Flat Headers\n\n table.getFlatHeaders = memo(() => [table.getHeaderGroups()], headerGroups => {\n return headerGroups.map(headerGroup => {\n return headerGroup.headers;\n }).flat();\n }, getMemoOptions(table.options, debug, 'getFlatHeaders'));\n table.getLeftFlatHeaders = memo(() => [table.getLeftHeaderGroups()], left => {\n return left.map(headerGroup => {\n return headerGroup.headers;\n }).flat();\n }, getMemoOptions(table.options, debug, 'getLeftFlatHeaders'));\n table.getCenterFlatHeaders = memo(() => [table.getCenterHeaderGroups()], left => {\n return left.map(headerGroup => {\n return headerGroup.headers;\n }).flat();\n }, getMemoOptions(table.options, debug, 'getCenterFlatHeaders'));\n table.getRightFlatHeaders = memo(() => [table.getRightHeaderGroups()], left => {\n return left.map(headerGroup => {\n return headerGroup.headers;\n }).flat();\n }, getMemoOptions(table.options, debug, 'getRightFlatHeaders'));\n\n // Leaf Headers\n\n table.getCenterLeafHeaders = memo(() => [table.getCenterFlatHeaders()], flatHeaders => {\n return flatHeaders.filter(header => {\n var _header$subHeaders;\n return !((_header$subHeaders = header.subHeaders) != null && _header$subHeaders.length);\n });\n }, getMemoOptions(table.options, debug, 'getCenterLeafHeaders'));\n table.getLeftLeafHeaders = memo(() => [table.getLeftFlatHeaders()], flatHeaders => {\n return flatHeaders.filter(header => {\n var _header$subHeaders2;\n return !((_header$subHeaders2 = header.subHeaders) != null && _header$subHeaders2.length);\n });\n }, getMemoOptions(table.options, debug, 'getLeftLeafHeaders'));\n table.getRightLeafHeaders = memo(() => [table.getRightFlatHeaders()], flatHeaders => {\n return flatHeaders.filter(header => {\n var _header$subHeaders3;\n return !((_header$subHeaders3 = header.subHeaders) != null && _header$subHeaders3.length);\n });\n }, getMemoOptions(table.options, debug, 'getRightLeafHeaders'));\n table.getLeafHeaders = memo(() => [table.getLeftHeaderGroups(), table.getCenterHeaderGroups(), table.getRightHeaderGroups()], (left, center, right) => {\n var _left$0$headers, _left$, _center$0$headers, _center$, _right$0$headers, _right$;\n return [...((_left$0$headers = (_left$ = left[0]) == null ? void 0 : _left$.headers) != null ? _left$0$headers : []), ...((_center$0$headers = (_center$ = center[0]) == null ? void 0 : _center$.headers) != null ? _center$0$headers : []), ...((_right$0$headers = (_right$ = right[0]) == null ? void 0 : _right$.headers) != null ? _right$0$headers : [])].map(header => {\n return header.getLeafHeaders();\n }).flat();\n }, getMemoOptions(table.options, debug, 'getLeafHeaders'));\n }\n};\nfunction buildHeaderGroups(allColumns, columnsToGroup, table, headerFamily) {\n var _headerGroups$0$heade, _headerGroups$;\n // Find the max depth of the columns:\n // build the leaf column row\n // build each buffer row going up\n // placeholder for non-existent level\n // real column for existing level\n\n let maxDepth = 0;\n const findMaxDepth = function (columns, depth) {\n if (depth === void 0) {\n depth = 1;\n }\n maxDepth = Math.max(maxDepth, depth);\n columns.filter(column => column.getIsVisible()).forEach(column => {\n var _column$columns;\n if ((_column$columns = column.columns) != null && _column$columns.length) {\n findMaxDepth(column.columns, depth + 1);\n }\n }, 0);\n };\n findMaxDepth(allColumns);\n let headerGroups = [];\n const createHeaderGroup = (headersToGroup, depth) => {\n // The header group we are creating\n const headerGroup = {\n depth,\n id: [headerFamily, `${depth}`].filter(Boolean).join('_'),\n headers: []\n };\n\n // The parent columns we're going to scan next\n const pendingParentHeaders = [];\n\n // Scan each column for parents\n headersToGroup.forEach(headerToGroup => {\n // What is the latest (last) parent column?\n\n const latestPendingParentHeader = [...pendingParentHeaders].reverse()[0];\n const isLeafHeader = headerToGroup.column.depth === headerGroup.depth;\n let column;\n let isPlaceholder = false;\n if (isLeafHeader && headerToGroup.column.parent) {\n // The parent header is new\n column = headerToGroup.column.parent;\n } else {\n // The parent header is repeated\n column = headerToGroup.column;\n isPlaceholder = true;\n }\n if (latestPendingParentHeader && (latestPendingParentHeader == null ? void 0 : latestPendingParentHeader.column) === column) {\n // This column is repeated. Add it as a sub header to the next batch\n latestPendingParentHeader.subHeaders.push(headerToGroup);\n } else {\n // This is a new header. Let's create it\n const header = createHeader(table, column, {\n id: [headerFamily, depth, column.id, headerToGroup == null ? void 0 : headerToGroup.id].filter(Boolean).join('_'),\n isPlaceholder,\n placeholderId: isPlaceholder ? `${pendingParentHeaders.filter(d => d.column === column).length}` : undefined,\n depth,\n index: pendingParentHeaders.length\n });\n\n // Add the headerToGroup as a subHeader of the new header\n header.subHeaders.push(headerToGroup);\n // Add the new header to the pendingParentHeaders to get grouped\n // in the next batch\n pendingParentHeaders.push(header);\n }\n headerGroup.headers.push(headerToGroup);\n headerToGroup.headerGroup = headerGroup;\n });\n headerGroups.push(headerGroup);\n if (depth > 0) {\n createHeaderGroup(pendingParentHeaders, depth - 1);\n }\n };\n const bottomHeaders = columnsToGroup.map((column, index) => createHeader(table, column, {\n depth: maxDepth,\n index\n }));\n createHeaderGroup(bottomHeaders, maxDepth - 1);\n headerGroups.reverse();\n\n // headerGroups = headerGroups.filter(headerGroup => {\n // return !headerGroup.headers.every(header => header.isPlaceholder)\n // })\n\n const recurseHeadersForSpans = headers => {\n const filteredHeaders = headers.filter(header => header.column.getIsVisible());\n return filteredHeaders.map(header => {\n let colSpan = 0;\n let rowSpan = 0;\n let childRowSpans = [0];\n if (header.subHeaders && header.subHeaders.length) {\n childRowSpans = [];\n recurseHeadersForSpans(header.subHeaders).forEach(_ref => {\n let {\n colSpan: childColSpan,\n rowSpan: childRowSpan\n } = _ref;\n colSpan += childColSpan;\n childRowSpans.push(childRowSpan);\n });\n } else {\n colSpan = 1;\n }\n const minChildRowSpan = Math.min(...childRowSpans);\n rowSpan = rowSpan + minChildRowSpan;\n header.colSpan = colSpan;\n header.rowSpan = rowSpan;\n return {\n colSpan,\n rowSpan\n };\n });\n };\n recurseHeadersForSpans((_headerGroups$0$heade = (_headerGroups$ = headerGroups[0]) == null ? void 0 : _headerGroups$.headers) != null ? _headerGroups$0$heade : []);\n return headerGroups;\n}\n\nconst createRow = (table, id, original, rowIndex, depth, subRows, parentId) => {\n let row = {\n id,\n index: rowIndex,\n original,\n depth,\n parentId,\n _valuesCache: {},\n _uniqueValuesCache: {},\n getValue: columnId => {\n if (row._valuesCache.hasOwnProperty(columnId)) {\n return row._valuesCache[columnId];\n }\n const column = table.getColumn(columnId);\n if (!(column != null && column.accessorFn)) {\n return undefined;\n }\n row._valuesCache[columnId] = column.accessorFn(row.original, rowIndex);\n return row._valuesCache[columnId];\n },\n getUniqueValues: columnId => {\n if (row._uniqueValuesCache.hasOwnProperty(columnId)) {\n return row._uniqueValuesCache[columnId];\n }\n const column = table.getColumn(columnId);\n if (!(column != null && column.accessorFn)) {\n return undefined;\n }\n if (!column.columnDef.getUniqueValues) {\n row._uniqueValuesCache[columnId] = [row.getValue(columnId)];\n return row._uniqueValuesCache[columnId];\n }\n row._uniqueValuesCache[columnId] = column.columnDef.getUniqueValues(row.original, rowIndex);\n return row._uniqueValuesCache[columnId];\n },\n renderValue: columnId => {\n var _row$getValue;\n return (_row$getValue = row.getValue(columnId)) != null ? _row$getValue : table.options.renderFallbackValue;\n },\n subRows: subRows != null ? subRows : [],\n getLeafRows: () => flattenBy(row.subRows, d => d.subRows),\n getParentRow: () => row.parentId ? table.getRow(row.parentId, true) : undefined,\n getParentRows: () => {\n let parentRows = [];\n let currentRow = row;\n while (true) {\n const parentRow = currentRow.getParentRow();\n if (!parentRow) break;\n parentRows.push(parentRow);\n currentRow = parentRow;\n }\n return parentRows.reverse();\n },\n getAllCells: memo(() => [table.getAllLeafColumns()], leafColumns => {\n return leafColumns.map(column => {\n return createCell(table, row, column, column.id);\n });\n }, getMemoOptions(table.options, 'debugRows', 'getAllCells')),\n _getAllCellsByColumnId: memo(() => [row.getAllCells()], allCells => {\n return allCells.reduce((acc, cell) => {\n acc[cell.column.id] = cell;\n return acc;\n }, {});\n }, getMemoOptions(table.options, 'debugRows', 'getAllCellsByColumnId'))\n };\n for (let i = 0; i < table._features.length; i++) {\n const feature = table._features[i];\n feature == null || feature.createRow == null || feature.createRow(row, table);\n }\n return row;\n};\n\n//\n\nconst ColumnFaceting = {\n createColumn: (column, table) => {\n column._getFacetedRowModel = table.options.getFacetedRowModel && table.options.getFacetedRowModel(table, column.id);\n column.getFacetedRowModel = () => {\n if (!column._getFacetedRowModel) {\n return table.getPreFilteredRowModel();\n }\n return column._getFacetedRowModel();\n };\n column._getFacetedUniqueValues = table.options.getFacetedUniqueValues && table.options.getFacetedUniqueValues(table, column.id);\n column.getFacetedUniqueValues = () => {\n if (!column._getFacetedUniqueValues) {\n return new Map();\n }\n return column._getFacetedUniqueValues();\n };\n column._getFacetedMinMaxValues = table.options.getFacetedMinMaxValues && table.options.getFacetedMinMaxValues(table, column.id);\n column.getFacetedMinMaxValues = () => {\n if (!column._getFacetedMinMaxValues) {\n return undefined;\n }\n return column._getFacetedMinMaxValues();\n };\n }\n};\n\nconst includesString = (row, columnId, filterValue) => {\n var _filterValue$toString, _row$getValue;\n const search = filterValue == null || (_filterValue$toString = filterValue.toString()) == null ? void 0 : _filterValue$toString.toLowerCase();\n return Boolean((_row$getValue = row.getValue(columnId)) == null || (_row$getValue = _row$getValue.toString()) == null || (_row$getValue = _row$getValue.toLowerCase()) == null ? void 0 : _row$getValue.includes(search));\n};\nincludesString.autoRemove = val => testFalsey(val);\nconst includesStringSensitive = (row, columnId, filterValue) => {\n var _row$getValue2;\n return Boolean((_row$getValue2 = row.getValue(columnId)) == null || (_row$getValue2 = _row$getValue2.toString()) == null ? void 0 : _row$getValue2.includes(filterValue));\n};\nincludesStringSensitive.autoRemove = val => testFalsey(val);\nconst equalsString = (row, columnId, filterValue) => {\n var _row$getValue3;\n return ((_row$getValue3 = row.getValue(columnId)) == null || (_row$getValue3 = _row$getValue3.toString()) == null ? void 0 : _row$getValue3.toLowerCase()) === (filterValue == null ? void 0 : filterValue.toLowerCase());\n};\nequalsString.autoRemove = val => testFalsey(val);\nconst arrIncludes = (row, columnId, filterValue) => {\n var _row$getValue4;\n return (_row$getValue4 = row.getValue(columnId)) == null ? void 0 : _row$getValue4.includes(filterValue);\n};\narrIncludes.autoRemove = val => testFalsey(val);\nconst arrIncludesAll = (row, columnId, filterValue) => {\n return !filterValue.some(val => {\n var _row$getValue5;\n return !((_row$getValue5 = row.getValue(columnId)) != null && _row$getValue5.includes(val));\n });\n};\narrIncludesAll.autoRemove = val => testFalsey(val) || !(val != null && val.length);\nconst arrIncludesSome = (row, columnId, filterValue) => {\n return filterValue.some(val => {\n var _row$getValue6;\n return (_row$getValue6 = row.getValue(columnId)) == null ? void 0 : _row$getValue6.includes(val);\n });\n};\narrIncludesSome.autoRemove = val => testFalsey(val) || !(val != null && val.length);\nconst equals = (row, columnId, filterValue) => {\n return row.getValue(columnId) === filterValue;\n};\nequals.autoRemove = val => testFalsey(val);\nconst weakEquals = (row, columnId, filterValue) => {\n return row.getValue(columnId) == filterValue;\n};\nweakEquals.autoRemove = val => testFalsey(val);\nconst inNumberRange = (row, columnId, filterValue) => {\n let [min, max] = filterValue;\n const rowValue = row.getValue(columnId);\n return rowValue >= min && rowValue <= max;\n};\ninNumberRange.resolveFilterValue = val => {\n let [unsafeMin, unsafeMax] = val;\n let parsedMin = typeof unsafeMin !== 'number' ? parseFloat(unsafeMin) : unsafeMin;\n let parsedMax = typeof unsafeMax !== 'number' ? parseFloat(unsafeMax) : unsafeMax;\n let min = unsafeMin === null || Number.isNaN(parsedMin) ? -Infinity : parsedMin;\n let max = unsafeMax === null || Number.isNaN(parsedMax) ? Infinity : parsedMax;\n if (min > max) {\n const temp = min;\n min = max;\n max = temp;\n }\n return [min, max];\n};\ninNumberRange.autoRemove = val => testFalsey(val) || testFalsey(val[0]) && testFalsey(val[1]);\n\n// Export\n\nconst filterFns = {\n includesString,\n includesStringSensitive,\n equalsString,\n arrIncludes,\n arrIncludesAll,\n arrIncludesSome,\n equals,\n weakEquals,\n inNumberRange\n};\n// Utils\n\nfunction testFalsey(val) {\n return val === undefined || val === null || val === '';\n}\n\n//\n\nconst ColumnFiltering = {\n getDefaultColumnDef: () => {\n return {\n filterFn: 'auto'\n };\n },\n getInitialState: state => {\n return {\n columnFilters: [],\n ...state\n };\n },\n getDefaultOptions: table => {\n return {\n onColumnFiltersChange: makeStateUpdater('columnFilters', table),\n filterFromLeafRows: false,\n maxLeafRowFilterDepth: 100\n };\n },\n createColumn: (column, table) => {\n column.getAutoFilterFn = () => {\n const firstRow = table.getCoreRowModel().flatRows[0];\n const value = firstRow == null ? void 0 : firstRow.getValue(column.id);\n if (typeof value === 'string') {\n return filterFns.includesString;\n }\n if (typeof value === 'number') {\n return filterFns.inNumberRange;\n }\n if (typeof value === 'boolean') {\n return filterFns.equals;\n }\n if (value !== null && typeof value === 'object') {\n return filterFns.equals;\n }\n if (Array.isArray(value)) {\n return filterFns.arrIncludes;\n }\n return filterFns.weakEquals;\n };\n column.getFilterFn = () => {\n var _table$options$filter, _table$options$filter2;\n return isFunction(column.columnDef.filterFn) ? column.columnDef.filterFn : column.columnDef.filterFn === 'auto' ? column.getAutoFilterFn() : // @ts-ignore\n (_table$options$filter = (_table$options$filter2 = table.options.filterFns) == null ? void 0 : _table$options$filter2[column.columnDef.filterFn]) != null ? _table$options$filter : filterFns[column.columnDef.filterFn];\n };\n column.getCanFilter = () => {\n var _column$columnDef$ena, _table$options$enable, _table$options$enable2;\n return ((_column$columnDef$ena = column.columnDef.enableColumnFilter) != null ? _column$columnDef$ena : true) && ((_table$options$enable = table.options.enableColumnFilters) != null ? _table$options$enable : true) && ((_table$options$enable2 = table.options.enableFilters) != null ? _table$options$enable2 : true) && !!column.accessorFn;\n };\n column.getIsFiltered = () => column.getFilterIndex() > -1;\n column.getFilterValue = () => {\n var _table$getState$colum;\n return (_table$getState$colum = table.getState().columnFilters) == null || (_table$getState$colum = _table$getState$colum.find(d => d.id === column.id)) == null ? void 0 : _table$getState$colum.value;\n };\n column.getFilterIndex = () => {\n var _table$getState$colum2, _table$getState$colum3;\n return (_table$getState$colum2 = (_table$getState$colum3 = table.getState().columnFilters) == null ? void 0 : _table$getState$colum3.findIndex(d => d.id === column.id)) != null ? _table$getState$colum2 : -1;\n };\n column.setFilterValue = value => {\n table.setColumnFilters(old => {\n const filterFn = column.getFilterFn();\n const previousFilter = old == null ? void 0 : old.find(d => d.id === column.id);\n const newFilter = functionalUpdate(value, previousFilter ? previousFilter.value : undefined);\n\n //\n if (shouldAutoRemoveFilter(filterFn, newFilter, column)) {\n var _old$filter;\n return (_old$filter = old == null ? void 0 : old.filter(d => d.id !== column.id)) != null ? _old$filter : [];\n }\n const newFilterObj = {\n id: column.id,\n value: newFilter\n };\n if (previousFilter) {\n var _old$map;\n return (_old$map = old == null ? void 0 : old.map(d => {\n if (d.id === column.id) {\n return newFilterObj;\n }\n return d;\n })) != null ? _old$map : [];\n }\n if (old != null && old.length) {\n return [...old, newFilterObj];\n }\n return [newFilterObj];\n });\n };\n },\n createRow: (row, _table) => {\n row.columnFilters = {};\n row.columnFiltersMeta = {};\n },\n createTable: table => {\n table.setColumnFilters = updater => {\n const leafColumns = table.getAllLeafColumns();\n const updateFn = old => {\n var _functionalUpdate;\n return (_functionalUpdate = functionalUpdate(updater, old)) == null ? void 0 : _functionalUpdate.filter(filter => {\n const column = leafColumns.find(d => d.id === filter.id);\n if (column) {\n const filterFn = column.getFilterFn();\n if (shouldAutoRemoveFilter(filterFn, filter.value, column)) {\n return false;\n }\n }\n return true;\n });\n };\n table.options.onColumnFiltersChange == null || table.options.onColumnFiltersChange(updateFn);\n };\n table.resetColumnFilters = defaultState => {\n var _table$initialState$c, _table$initialState;\n table.setColumnFilters(defaultState ? [] : (_table$initialState$c = (_table$initialState = table.initialState) == null ? void 0 : _table$initialState.columnFilters) != null ? _table$initialState$c : []);\n };\n table.getPreFilteredRowModel = () => table.getCoreRowModel();\n table.getFilteredRowModel = () => {\n if (!table._getFilteredRowModel && table.options.getFilteredRowModel) {\n table._getFilteredRowModel = table.options.getFilteredRowModel(table);\n }\n if (table.options.manualFiltering || !table._getFilteredRowModel) {\n return table.getPreFilteredRowModel();\n }\n return table._getFilteredRowModel();\n };\n }\n};\nfunction shouldAutoRemoveFilter(filterFn, value, column) {\n return (filterFn && filterFn.autoRemove ? filterFn.autoRemove(value, column) : false) || typeof value === 'undefined' || typeof value === 'string' && !value;\n}\n\nconst sum = (columnId, _leafRows, childRows) => {\n // It's faster to just add the aggregations together instead of\n // process leaf nodes individually\n return childRows.reduce((sum, next) => {\n const nextValue = next.getValue(columnId);\n return sum + (typeof nextValue === 'number' ? nextValue : 0);\n }, 0);\n};\nconst min = (columnId, _leafRows, childRows) => {\n let min;\n childRows.forEach(row => {\n const value = row.getValue(columnId);\n if (value != null && (min > value || min === undefined && value >= value)) {\n min = value;\n }\n });\n return min;\n};\nconst max = (columnId, _leafRows, childRows) => {\n let max;\n childRows.forEach(row => {\n const value = row.getValue(columnId);\n if (value != null && (max < value || max === undefined && value >= value)) {\n max = value;\n }\n });\n return max;\n};\nconst extent = (columnId, _leafRows, childRows) => {\n let min;\n let max;\n childRows.forEach(row => {\n const value = row.getValue(columnId);\n if (value != null) {\n if (min === undefined) {\n if (value >= value) min = max = value;\n } else {\n if (min > value) min = value;\n if (max < value) max = value;\n }\n }\n });\n return [min, max];\n};\nconst mean = (columnId, leafRows) => {\n let count = 0;\n let sum = 0;\n leafRows.forEach(row => {\n let value = row.getValue(columnId);\n if (value != null && (value = +value) >= value) {\n ++count, sum += value;\n }\n });\n if (count) return sum / count;\n return;\n};\nconst median = (columnId, leafRows) => {\n if (!leafRows.length) {\n return;\n }\n const values = leafRows.map(row => row.getValue(columnId));\n if (!isNumberArray(values)) {\n return;\n }\n if (values.length === 1) {\n return values[0];\n }\n const mid = Math.floor(values.length / 2);\n const nums = values.sort((a, b) => a - b);\n return values.length % 2 !== 0 ? nums[mid] : (nums[mid - 1] + nums[mid]) / 2;\n};\nconst unique = (columnId, leafRows) => {\n return Array.from(new Set(leafRows.map(d => d.getValue(columnId))).values());\n};\nconst uniqueCount = (columnId, leafRows) => {\n return new Set(leafRows.map(d => d.getValue(columnId))).size;\n};\nconst count = (_columnId, leafRows) => {\n return leafRows.length;\n};\nconst aggregationFns = {\n sum,\n min,\n max,\n extent,\n mean,\n median,\n unique,\n uniqueCount,\n count\n};\n\n//\n\nconst ColumnGrouping = {\n getDefaultColumnDef: () => {\n return {\n aggregatedCell: props => {\n var _toString, _props$getValue;\n return (_toString = (_props$getValue = props.getValue()) == null || _props$getValue.toString == null ? void 0 : _props$getValue.toString()) != null ? _toString : null;\n },\n aggregationFn: 'auto'\n };\n },\n getInitialState: state => {\n return {\n grouping: [],\n ...state\n };\n },\n getDefaultOptions: table => {\n return {\n onGroupingChange: makeStateUpdater('grouping', table),\n groupedColumnMode: 'reorder'\n };\n },\n createColumn: (column, table) => {\n column.toggleGrouping = () => {\n table.setGrouping(old => {\n // Find any existing grouping for this column\n if (old != null && old.includes(column.id)) {\n return old.filter(d => d !== column.id);\n }\n return [...(old != null ? old : []), column.id];\n });\n };\n column.getCanGroup = () => {\n var _column$columnDef$ena, _table$options$enable;\n return ((_column$columnDef$ena = column.columnDef.enableGrouping) != null ? _column$columnDef$ena : true) && ((_table$options$enable = table.options.enableGrouping) != null ? _table$options$enable : true) && (!!column.accessorFn || !!column.columnDef.getGroupingValue);\n };\n column.getIsGrouped = () => {\n var _table$getState$group;\n return (_table$getState$group = table.getState().grouping) == null ? void 0 : _table$getState$group.includes(column.id);\n };\n column.getGroupedIndex = () => {\n var _table$getState$group2;\n return (_table$getState$group2 = table.getState().grouping) == null ? void 0 : _table$getState$group2.indexOf(column.id);\n };\n column.getToggleGroupingHandler = () => {\n const canGroup = column.getCanGroup();\n return () => {\n if (!canGroup) return;\n column.toggleGrouping();\n };\n };\n column.getAutoAggregationFn = () => {\n const firstRow = table.getCoreRowModel().flatRows[0];\n const value = firstRow == null ? void 0 : firstRow.getValue(column.id);\n if (typeof value === 'number') {\n return aggregationFns.sum;\n }\n if (Object.prototype.toString.call(value) === '[object Date]') {\n return aggregationFns.extent;\n }\n };\n column.getAggregationFn = () => {\n var _table$options$aggreg, _table$options$aggreg2;\n if (!column) {\n throw new Error();\n }\n return isFunction(column.columnDef.aggregationFn) ? column.columnDef.aggregationFn : column.columnDef.aggregationFn === 'auto' ? column.getAutoAggregationFn() : (_table$options$aggreg = (_table$options$aggreg2 = table.options.aggregationFns) == null ? void 0 : _table$options$aggreg2[column.columnDef.aggregationFn]) != null ? _table$options$aggreg : aggregationFns[column.columnDef.aggregationFn];\n };\n },\n createTable: table => {\n table.setGrouping = updater => table.options.onGroupingChange == null ? void 0 : table.options.onGroupingChange(updater);\n table.resetGrouping = defaultState => {\n var _table$initialState$g, _table$initialState;\n table.setGrouping(defaultState ? [] : (_table$initialState$g = (_table$initialState = table.initialState) == null ? void 0 : _table$initialState.grouping) != null ? _table$initialState$g : []);\n };\n table.getPreGroupedRowModel = () => table.getFilteredRowModel();\n table.getGroupedRowModel = () => {\n if (!table._getGroupedRowModel && table.options.getGroupedRowModel) {\n table._getGroupedRowModel = table.options.getGroupedRowModel(table);\n }\n if (table.options.manualGrouping || !table._getGroupedRowModel) {\n return table.getPreGroupedRowModel();\n }\n return table._getGroupedRowModel();\n };\n },\n createRow: (row, table) => {\n row.getIsGrouped = () => !!row.groupingColumnId;\n row.getGroupingValue = columnId => {\n if (row._groupingValuesCache.hasOwnProperty(columnId)) {\n return row._groupingValuesCache[columnId];\n }\n const column = table.getColumn(columnId);\n if (!(column != null && column.columnDef.getGroupingValue)) {\n return row.getValue(columnId);\n }\n row._groupingValuesCache[columnId] = column.columnDef.getGroupingValue(row.original);\n return row._groupingValuesCache[columnId];\n };\n row._groupingValuesCache = {};\n },\n createCell: (cell, column, row, table) => {\n cell.getIsGrouped = () => column.getIsGrouped() && column.id === row.groupingColumnId;\n cell.getIsPlaceholder = () => !cell.getIsGrouped() && column.getIsGrouped();\n cell.getIsAggregated = () => {\n var _row$subRows;\n return !cell.getIsGrouped() && !cell.getIsPlaceholder() && !!((_row$subRows = row.subRows) != null && _row$subRows.length);\n };\n }\n};\nfunction orderColumns(leafColumns, grouping, groupedColumnMode) {\n if (!(grouping != null && grouping.length) || !groupedColumnMode) {\n return leafColumns;\n }\n const nonGroupingColumns = leafColumns.filter(col => !grouping.includes(col.id));\n if (groupedColumnMode === 'remove') {\n return nonGroupingColumns;\n }\n const groupingColumns = grouping.map(g => leafColumns.find(col => col.id === g)).filter(Boolean);\n return [...groupingColumns, ...nonGroupingColumns];\n}\n\n//\n\nconst ColumnOrdering = {\n getInitialState: state => {\n return {\n columnOrder: [],\n ...state\n };\n },\n getDefaultOptions: table => {\n return {\n onColumnOrderChange: makeStateUpdater('columnOrder', table)\n };\n },\n createColumn: (column, table) => {\n column.getIndex = memo(position => [_getVisibleLeafColumns(table, position)], columns => columns.findIndex(d => d.id === column.id), getMemoOptions(table.options, 'debugColumns', 'getIndex'));\n column.getIsFirstColumn = position => {\n var _columns$;\n const columns = _getVisibleLeafColumns(table, position);\n return ((_columns$ = columns[0]) == null ? void 0 : _columns$.id) === column.id;\n };\n column.getIsLastColumn = position => {\n var _columns;\n const columns = _getVisibleLeafColumns(table, position);\n return ((_columns = columns[columns.length - 1]) == null ? void 0 : _columns.id) === column.id;\n };\n },\n createTable: table => {\n table.setColumnOrder = updater => table.options.onColumnOrderChange == null ? void 0 : table.options.onColumnOrderChange(updater);\n table.resetColumnOrder = defaultState => {\n var _table$initialState$c;\n table.setColumnOrder(defaultState ? [] : (_table$initialState$c = table.initialState.columnOrder) != null ? _table$initialState$c : []);\n };\n table._getOrderColumnsFn = memo(() => [table.getState().columnOrder, table.getState().grouping, table.options.groupedColumnMode], (columnOrder, grouping, groupedColumnMode) => columns => {\n // Sort grouped columns to the start of the column list\n // before the headers are built\n let orderedColumns = [];\n\n // If there is no order, return the normal columns\n if (!(columnOrder != null && columnOrder.length)) {\n orderedColumns = columns;\n } else {\n const columnOrderCopy = [...columnOrder];\n\n // If there is an order, make a copy of the columns\n const columnsCopy = [...columns];\n\n // And make a new ordered array of the columns\n\n // Loop over the columns and place them in order into the new array\n while (columnsCopy.length && columnOrderCopy.length) {\n const targetColumnId = columnOrderCopy.shift();\n const foundIndex = columnsCopy.findIndex(d => d.id === targetColumnId);\n if (foundIndex > -1) {\n orderedColumns.push(columnsCopy.splice(foundIndex, 1)[0]);\n }\n }\n\n // If there are any columns left, add them to the end\n orderedColumns = [...orderedColumns, ...columnsCopy];\n }\n return orderColumns(orderedColumns, grouping, groupedColumnMode);\n }, getMemoOptions(table.options, 'debugTable', '_getOrderColumnsFn'));\n }\n};\n\n//\n\nconst getDefaultColumnPinningState = () => ({\n left: [],\n right: []\n});\nconst ColumnPinning = {\n getInitialState: state => {\n return {\n columnPinning: getDefaultColumnPinningState(),\n ...state\n };\n },\n getDefaultOptions: table => {\n return {\n onColumnPinningChange: makeStateUpdater('columnPinning', table)\n };\n },\n createColumn: (column, table) => {\n column.pin = position => {\n const columnIds = column.getLeafColumns().map(d => d.id).filter(Boolean);\n table.setColumnPinning(old => {\n var _old$left3, _old$right3;\n if (position === 'right') {\n var _old$left, _old$right;\n return {\n left: ((_old$left = old == null ? void 0 : old.left) != null ? _old$left : []).filter(d => !(columnIds != null && columnIds.includes(d))),\n right: [...((_old$right = old == null ? void 0 : old.right) != null ? _old$right : []).filter(d => !(columnIds != null && columnIds.includes(d))), ...columnIds]\n };\n }\n if (position === 'left') {\n var _old$left2, _old$right2;\n return {\n left: [...((_old$left2 = old == null ? void 0 : old.left) != null ? _old$left2 : []).filter(d => !(columnIds != null && columnIds.includes(d))), ...columnIds],\n right: ((_old$right2 = old == null ? void 0 : old.right) != null ? _old$right2 : []).filter(d => !(columnIds != null && columnIds.includes(d)))\n };\n }\n return {\n left: ((_old$left3 = old == null ? void 0 : old.left) != null ? _old$left3 : []).filter(d => !(columnIds != null && columnIds.includes(d))),\n right: ((_old$right3 = old == null ? void 0 : old.right) != null ? _old$right3 : []).filter(d => !(columnIds != null && columnIds.includes(d)))\n };\n });\n };\n column.getCanPin = () => {\n const leafColumns = column.getLeafColumns();\n return leafColumns.some(d => {\n var _d$columnDef$enablePi, _ref, _table$options$enable;\n return ((_d$columnDef$enablePi = d.columnDef.enablePinning) != null ? _d$columnDef$enablePi : true) && ((_ref = (_table$options$enable = table.options.enableColumnPinning) != null ? _table$options$enable : table.options.enablePinning) != null ? _ref : true);\n });\n };\n column.getIsPinned = () => {\n const leafColumnIds = column.getLeafColumns().map(d => d.id);\n const {\n left,\n right\n } = table.getState().columnPinning;\n const isLeft = leafColumnIds.some(d => left == null ? void 0 : left.includes(d));\n const isRight = leafColumnIds.some(d => right == null ? void 0 : right.includes(d));\n return isLeft ? 'left' : isRight ? 'right' : false;\n };\n column.getPinnedIndex = () => {\n var _table$getState$colum, _table$getState$colum2;\n const position = column.getIsPinned();\n return position ? (_table$getState$colum = (_table$getState$colum2 = table.getState().columnPinning) == null || (_table$getState$colum2 = _table$getState$colum2[position]) == null ? void 0 : _table$getState$colum2.indexOf(column.id)) != null ? _table$getState$colum : -1 : 0;\n };\n },\n createRow: (row, table) => {\n row.getCenterVisibleCells = memo(() => [row._getAllVisibleCells(), table.getState().columnPinning.left, table.getState().columnPinning.right], (allCells, left, right) => {\n const leftAndRight = [...(left != null ? left : []), ...(right != null ? right : [])];\n return allCells.filter(d => !leftAndRight.includes(d.column.id));\n }, getMemoOptions(table.options, 'debugRows', 'getCenterVisibleCells'));\n row.getLeftVisibleCells = memo(() => [row._getAllVisibleCells(), table.getState().columnPinning.left], (allCells, left) => {\n const cells = (left != null ? left : []).map(columnId => allCells.find(cell => cell.column.id === columnId)).filter(Boolean).map(d => ({\n ...d,\n position: 'left'\n }));\n return cells;\n }, getMemoOptions(table.options, 'debugRows', 'getLeftVisibleCells'));\n row.getRightVisibleCells = memo(() => [row._getAllVisibleCells(), table.getState().columnPinning.right], (allCells, right) => {\n const cells = (right != null ? right : []).map(columnId => allCells.find(cell => cell.column.id === columnId)).filter(Boolean).map(d => ({\n ...d,\n position: 'right'\n }));\n return cells;\n }, getMemoOptions(table.options, 'debugRows', 'getRightVisibleCells'));\n },\n createTable: table => {\n table.setColumnPinning = updater => table.options.onColumnPinningChange == null ? void 0 : table.options.onColumnPinningChange(updater);\n table.resetColumnPinning = defaultState => {\n var _table$initialState$c, _table$initialState;\n return table.setColumnPinning(defaultState ? getDefaultColumnPinningState() : (_table$initialState$c = (_table$initialState = table.initialState) == null ? void 0 : _table$initialState.columnPinning) != null ? _table$initialState$c : getDefaultColumnPinningState());\n };\n table.getIsSomeColumnsPinned = position => {\n var _pinningState$positio;\n const pinningState = table.getState().columnPinning;\n if (!position) {\n var _pinningState$left, _pinningState$right;\n return Boolean(((_pinningState$left = pinningState.left) == null ? void 0 : _pinningState$left.length) || ((_pinningState$right = pinningState.right) == null ? void 0 : _pinningState$right.length));\n }\n return Boolean((_pinningState$positio = pinningState[position]) == null ? void 0 : _pinningState$positio.length);\n };\n table.getLeftLeafColumns = memo(() => [table.getAllLeafColumns(), table.getState().columnPinning.left], (allColumns, left) => {\n return (left != null ? left : []).map(columnId => allColumns.find(column => column.id === columnId)).filter(Boolean);\n }, getMemoOptions(table.options, 'debugColumns', 'getLeftLeafColumns'));\n table.getRightLeafColumns = memo(() => [table.getAllLeafColumns(), table.getState().columnPinning.right], (allColumns, right) => {\n return (right != null ? right : []).map(columnId => allColumns.find(column => column.id === columnId)).filter(Boolean);\n }, getMemoOptions(table.options, 'debugColumns', 'getRightLeafColumns'));\n table.getCenterLeafColumns = memo(() => [table.getAllLeafColumns(), table.getState().columnPinning.left, table.getState().columnPinning.right], (allColumns, left, right) => {\n const leftAndRight = [...(left != null ? left : []), ...(right != null ? right : [])];\n return allColumns.filter(d => !leftAndRight.includes(d.id));\n }, getMemoOptions(table.options, 'debugColumns', 'getCenterLeafColumns'));\n }\n};\n\nfunction safelyAccessDocument(_document) {\n return _document || (typeof document !== 'undefined' ? document : null);\n}\n\n//\n\n//\n\nconst defaultColumnSizing = {\n size: 150,\n minSize: 20,\n maxSize: Number.MAX_SAFE_INTEGER\n};\nconst getDefaultColumnSizingInfoState = () => ({\n startOffset: null,\n startSize: null,\n deltaOffset: null,\n deltaPercentage: null,\n isResizingColumn: false,\n columnSizingStart: []\n});\nconst ColumnSizing = {\n getDefaultColumnDef: () => {\n return defaultColumnSizing;\n },\n getInitialState: state => {\n return {\n columnSizing: {},\n columnSizingInfo: getDefaultColumnSizingInfoState(),\n ...state\n };\n },\n getDefaultOptions: table => {\n return {\n columnResizeMode: 'onEnd',\n columnResizeDirection: 'ltr',\n onColumnSizingChange: makeStateUpdater('columnSizing', table),\n onColumnSizingInfoChange: makeStateUpdater('columnSizingInfo', table)\n };\n },\n createColumn: (column, table) => {\n column.getSize = () => {\n var _column$columnDef$min, _ref, _column$columnDef$max;\n const columnSize = table.getState().columnSizing[column.id];\n return Math.min(Math.max((_column$columnDef$min = column.columnDef.minSize) != null ? _column$columnDef$min : defaultColumnSizing.minSize, (_ref = columnSize != null ? columnSize : column.columnDef.size) != null ? _ref : defaultColumnSizing.size), (_column$columnDef$max = column.columnDef.maxSize) != null ? _column$columnDef$max : defaultColumnSizing.maxSize);\n };\n column.getStart = memo(position => [position, _getVisibleLeafColumns(table, position), table.getState().columnSizing], (position, columns) => columns.slice(0, column.getIndex(position)).reduce((sum, column) => sum + column.getSize(), 0), getMemoOptions(table.options, 'debugColumns', 'getStart'));\n column.getAfter = memo(position => [position, _getVisibleLeafColumns(table, position), table.getState().columnSizing], (position, columns) => columns.slice(column.getIndex(position) + 1).reduce((sum, column) => sum + column.getSize(), 0), getMemoOptions(table.options, 'debugColumns', 'getAfter'));\n column.resetSize = () => {\n table.setColumnSizing(_ref2 => {\n let {\n [column.id]: _,\n ...rest\n } = _ref2;\n return rest;\n });\n };\n column.getCanResize = () => {\n var _column$columnDef$ena, _table$options$enable;\n return ((_column$columnDef$ena = column.columnDef.enableResizing) != null ? _column$columnDef$ena : true) && ((_table$options$enable = table.options.enableColumnResizing) != null ? _table$options$enable : true);\n };\n column.getIsResizing = () => {\n return table.getState().columnSizingInfo.isResizingColumn === column.id;\n };\n },\n createHeader: (header, table) => {\n header.getSize = () => {\n let sum = 0;\n const recurse = header => {\n if (header.subHeaders.length) {\n header.subHeaders.forEach(recurse);\n } else {\n var _header$column$getSiz;\n sum += (_header$column$getSiz = header.column.getSize()) != null ? _header$column$getSiz : 0;\n }\n };\n recurse(header);\n return sum;\n };\n header.getStart = () => {\n if (header.index > 0) {\n const prevSiblingHeader = header.headerGroup.headers[header.index - 1];\n return prevSiblingHeader.getStart() + prevSiblingHeader.getSize();\n }\n return 0;\n };\n header.getResizeHandler = _contextDocument => {\n const column = table.getColumn(header.column.id);\n const canResize = column == null ? void 0 : column.getCanResize();\n return e => {\n if (!column || !canResize) {\n return;\n }\n e.persist == null || e.persist();\n if (isTouchStartEvent(e)) {\n // lets not respond to multiple touches (e.g. 2 or 3 fingers)\n if (e.touches && e.touches.length > 1) {\n return;\n }\n }\n const startSize = header.getSize();\n const columnSizingStart = header ? header.getLeafHeaders().map(d => [d.column.id, d.column.getSize()]) : [[column.id, column.getSize()]];\n const clientX = isTouchStartEvent(e) ? Math.round(e.touches[0].clientX) : e.clientX;\n const newColumnSizing = {};\n const updateOffset = (eventType, clientXPos) => {\n if (typeof clientXPos !== 'number') {\n return;\n }\n table.setColumnSizingInfo(old => {\n var _old$startOffset, _old$startSize;\n const deltaDirection = table.options.columnResizeDirection === 'rtl' ? -1 : 1;\n const deltaOffset = (clientXPos - ((_old$startOffset = old == null ? void 0 : old.startOffset) != null ? _old$startOffset : 0)) * deltaDirection;\n const deltaPercentage = Math.max(deltaOffset / ((_old$startSize = old == null ? void 0 : old.startSize) != null ? _old$startSize : 0), -0.999999);\n old.columnSizingStart.forEach(_ref3 => {\n let [columnId, headerSize] = _ref3;\n newColumnSizing[columnId] = Math.round(Math.max(headerSize + headerSize * deltaPercentage, 0) * 100) / 100;\n });\n return {\n ...old,\n deltaOffset,\n deltaPercentage\n };\n });\n if (table.options.columnResizeMode === 'onChange' || eventType === 'end') {\n table.setColumnSizing(old => ({\n ...old,\n ...newColumnSizing\n }));\n }\n };\n const onMove = clientXPos => updateOffset('move', clientXPos);\n const onEnd = clientXPos => {\n updateOffset('end', clientXPos);\n table.setColumnSizingInfo(old => ({\n ...old,\n isResizingColumn: false,\n startOffset: null,\n startSize: null,\n deltaOffset: null,\n deltaPercentage: null,\n columnSizingStart: []\n }));\n };\n const contextDocument = safelyAccessDocument(_contextDocument);\n const mouseEvents = {\n moveHandler: e => onMove(e.clientX),\n upHandler: e => {\n contextDocument == null || contextDocument.removeEventListener('mousemove', mouseEvents.moveHandler);\n contextDocument == null || contextDocument.removeEventListener('mouseup', mouseEvents.upHandler);\n onEnd(e.clientX);\n }\n };\n const touchEvents = {\n moveHandler: e => {\n if (e.cancelable) {\n e.preventDefault();\n e.stopPropagation();\n }\n onMove(e.touches[0].clientX);\n return false;\n },\n upHandler: e => {\n var _e$touches$;\n contextDocument == null || contextDocument.removeEventListener('touchmove', touchEvents.moveHandler);\n contextDocument == null || contextDocument.removeEventListener('touchend', touchEvents.upHandler);\n if (e.cancelable) {\n e.preventDefault();\n e.stopPropagation();\n }\n onEnd((_e$touches$ = e.touches[0]) == null ? void 0 : _e$touches$.clientX);\n }\n };\n const passiveIfSupported = passiveEventSupported() ? {\n passive: false\n } : false;\n if (isTouchStartEvent(e)) {\n contextDocument == null || contextDocument.addEventListener('touchmove', touchEvents.moveHandler, passiveIfSupported);\n contextDocument == null || contextDocument.addEventListener('touchend', touchEvents.upHandler, passiveIfSupported);\n } else {\n contextDocument == null || contextDocument.addEventListener('mousemove', mouseEvents.moveHandler, passiveIfSupported);\n contextDocument == null || contextDocument.addEventListener('mouseup', mouseEvents.upHandler, passiveIfSupported);\n }\n table.setColumnSizingInfo(old => ({\n ...old,\n startOffset: clientX,\n startSize,\n deltaOffset: 0,\n deltaPercentage: 0,\n columnSizingStart,\n isResizingColumn: column.id\n }));\n };\n };\n },\n createTable: table => {\n table.setColumnSizing = updater => table.options.onColumnSizingChange == null ? void 0 : table.options.onColumnSizingChange(updater);\n table.setColumnSizingInfo = updater => table.options.onColumnSizingInfoChange == null ? void 0 : table.options.onColumnSizingInfoChange(updater);\n table.resetColumnSizing = defaultState => {\n var _table$initialState$c;\n table.setColumnSizing(defaultState ? {} : (_table$initialState$c = table.initialState.columnSizing) != null ? _table$initialState$c : {});\n };\n table.resetHeaderSizeInfo = defaultState => {\n var _table$initialState$c2;\n table.setColumnSizingInfo(defaultState ? getDefaultColumnSizingInfoState() : (_table$initialState$c2 = table.initialState.columnSizingInfo) != null ? _table$initialState$c2 : getDefaultColumnSizingInfoState());\n };\n table.getTotalSize = () => {\n var _table$getHeaderGroup, _table$getHeaderGroup2;\n return (_table$getHeaderGroup = (_table$getHeaderGroup2 = table.getHeaderGroups()[0]) == null ? void 0 : _table$getHeaderGroup2.headers.reduce((sum, header) => {\n return sum + header.getSize();\n }, 0)) != null ? _table$getHeaderGroup : 0;\n };\n table.getLeftTotalSize = () => {\n var _table$getLeftHeaderG, _table$getLeftHeaderG2;\n return (_table$getLeftHeaderG = (_table$getLeftHeaderG2 = table.getLeftHeaderGroups()[0]) == null ? void 0 : _table$getLeftHeaderG2.headers.reduce((sum, header) => {\n return sum + header.getSize();\n }, 0)) != null ? _table$getLeftHeaderG : 0;\n };\n table.getCenterTotalSize = () => {\n var _table$getCenterHeade, _table$getCenterHeade2;\n return (_table$getCenterHeade = (_table$getCenterHeade2 = table.getCenterHeaderGroups()[0]) == null ? void 0 : _table$getCenterHeade2.headers.reduce((sum, header) => {\n return sum + header.getSize();\n }, 0)) != null ? _table$getCenterHeade : 0;\n };\n table.getRightTotalSize = () => {\n var _table$getRightHeader, _table$getRightHeader2;\n return (_table$getRightHeader = (_table$getRightHeader2 = table.getRightHeaderGroups()[0]) == null ? void 0 : _table$getRightHeader2.headers.reduce((sum, header) => {\n return sum + header.getSize();\n }, 0)) != null ? _table$getRightHeader : 0;\n };\n }\n};\nlet passiveSupported = null;\nfunction passiveEventSupported() {\n if (typeof passiveSupported === 'boolean') return passiveSupported;\n let supported = false;\n try {\n const options = {\n get passive() {\n supported = true;\n return false;\n }\n };\n const noop = () => {};\n window.addEventListener('test', noop, options);\n window.removeEventListener('test', noop);\n } catch (err) {\n supported = false;\n }\n passiveSupported = supported;\n return passiveSupported;\n}\nfunction isTouchStartEvent(e) {\n return e.type === 'touchstart';\n}\n\n//\n\nconst ColumnVisibility = {\n getInitialState: state => {\n return {\n columnVisibility: {},\n ...state\n };\n },\n getDefaultOptions: table => {\n return {\n onColumnVisibilityChange: makeStateUpdater('columnVisibility', table)\n };\n },\n createColumn: (column, table) => {\n column.toggleVisibility = value => {\n if (column.getCanHide()) {\n table.setColumnVisibility(old => ({\n ...old,\n [column.id]: value != null ? value : !column.getIsVisible()\n }));\n }\n };\n column.getIsVisible = () => {\n var _ref, _table$getState$colum;\n const childColumns = column.columns;\n return (_ref = childColumns.length ? childColumns.some(c => c.getIsVisible()) : (_table$getState$colum = table.getState().columnVisibility) == null ? void 0 : _table$getState$colum[column.id]) != null ? _ref : true;\n };\n column.getCanHide = () => {\n var _column$columnDef$ena, _table$options$enable;\n return ((_column$columnDef$ena = column.columnDef.enableHiding) != null ? _column$columnDef$ena : true) && ((_table$options$enable = table.options.enableHiding) != null ? _table$options$enable : true);\n };\n column.getToggleVisibilityHandler = () => {\n return e => {\n column.toggleVisibility == null || column.toggleVisibility(e.target.checked);\n };\n };\n },\n createRow: (row, table) => {\n row._getAllVisibleCells = memo(() => [row.getAllCells(), table.getState().columnVisibility], cells => {\n return cells.filter(cell => cell.column.getIsVisible());\n }, getMemoOptions(table.options, 'debugRows', '_getAllVisibleCells'));\n row.getVisibleCells = memo(() => [row.getLeftVisibleCells(), row.getCenterVisibleCells(), row.getRightVisibleCells()], (left, center, right) => [...left, ...center, ...right], getMemoOptions(table.options, 'debugRows', 'getVisibleCells'));\n },\n createTable: table => {\n const makeVisibleColumnsMethod = (key, getColumns) => {\n return memo(() => [getColumns(), getColumns().filter(d => d.getIsVisible()).map(d => d.id).join('_')], columns => {\n return columns.filter(d => d.getIsVisible == null ? void 0 : d.getIsVisible());\n }, getMemoOptions(table.options, 'debugColumns', key));\n };\n table.getVisibleFlatColumns = makeVisibleColumnsMethod('getVisibleFlatColumns', () => table.getAllFlatColumns());\n table.getVisibleLeafColumns = makeVisibleColumnsMethod('getVisibleLeafColumns', () => table.getAllLeafColumns());\n table.getLeftVisibleLeafColumns = makeVisibleColumnsMethod('getLeftVisibleLeafColumns', () => table.getLeftLeafColumns());\n table.getRightVisibleLeafColumns = makeVisibleColumnsMethod('getRightVisibleLeafColumns', () => table.getRightLeafColumns());\n table.getCenterVisibleLeafColumns = makeVisibleColumnsMethod('getCenterVisibleLeafColumns', () => table.getCenterLeafColumns());\n table.setColumnVisibility = updater => table.options.onColumnVisibilityChange == null ? void 0 : table.options.onColumnVisibilityChange(updater);\n table.resetColumnVisibility = defaultState => {\n var _table$initialState$c;\n table.setColumnVisibility(defaultState ? {} : (_table$initialState$c = table.initialState.columnVisibility) != null ? _table$initialState$c : {});\n };\n table.toggleAllColumnsVisible = value => {\n var _value;\n value = (_value = value) != null ? _value : !table.getIsAllColumnsVisible();\n table.setColumnVisibility(table.getAllLeafColumns().reduce((obj, column) => ({\n ...obj,\n [column.id]: !value ? !(column.getCanHide != null && column.getCanHide()) : value\n }), {}));\n };\n table.getIsAllColumnsVisible = () => !table.getAllLeafColumns().some(column => !(column.getIsVisible != null && column.getIsVisible()));\n table.getIsSomeColumnsVisible = () => table.getAllLeafColumns().some(column => column.getIsVisible == null ? void 0 : column.getIsVisible());\n table.getToggleAllColumnsVisibilityHandler = () => {\n return e => {\n var _target;\n table.toggleAllColumnsVisible((_target = e.target) == null ? void 0 : _target.checked);\n };\n };\n }\n};\nfunction _getVisibleLeafColumns(table, position) {\n return !position ? table.getVisibleLeafColumns() : position === 'center' ? table.getCenterVisibleLeafColumns() : position === 'left' ? table.getLeftVisibleLeafColumns() : table.getRightVisibleLeafColumns();\n}\n\n//\n\nconst GlobalFaceting = {\n createTable: table => {\n table._getGlobalFacetedRowModel = table.options.getFacetedRowModel && table.options.getFacetedRowModel(table, '__global__');\n table.getGlobalFacetedRowModel = () => {\n if (table.options.manualFiltering || !table._getGlobalFacetedRowModel) {\n return table.getPreFilteredRowModel();\n }\n return table._getGlobalFacetedRowModel();\n };\n table._getGlobalFacetedUniqueValues = table.options.getFacetedUniqueValues && table.options.getFacetedUniqueValues(table, '__global__');\n table.getGlobalFacetedUniqueValues = () => {\n if (!table._getGlobalFacetedUniqueValues) {\n return new Map();\n }\n return table._getGlobalFacetedUniqueValues();\n };\n table._getGlobalFacetedMinMaxValues = table.options.getFacetedMinMaxValues && table.options.getFacetedMinMaxValues(table, '__global__');\n table.getGlobalFacetedMinMaxValues = () => {\n if (!table._getGlobalFacetedMinMaxValues) {\n return;\n }\n return table._getGlobalFacetedMinMaxValues();\n };\n }\n};\n\n//\n\nconst GlobalFiltering = {\n getInitialState: state => {\n return {\n globalFilter: undefined,\n ...state\n };\n },\n getDefaultOptions: table => {\n return {\n onGlobalFilterChange: makeStateUpdater('globalFilter', table),\n globalFilterFn: 'auto',\n getColumnCanGlobalFilter: column => {\n var _table$getCoreRowMode;\n const value = (_table$getCoreRowMode = table.getCoreRowModel().flatRows[0]) == null || (_table$getCoreRowMode = _table$getCoreRowMode._getAllCellsByColumnId()[column.id]) == null ? void 0 : _table$getCoreRowMode.getValue();\n return typeof value === 'string' || typeof value === 'number';\n }\n };\n },\n createColumn: (column, table) => {\n column.getCanGlobalFilter = () => {\n var _column$columnDef$ena, _table$options$enable, _table$options$enable2, _table$options$getCol;\n return ((_column$columnDef$ena = column.columnDef.enableGlobalFilter) != null ? _column$columnDef$ena : true) && ((_table$options$enable = table.options.enableGlobalFilter) != null ? _table$options$enable : true) && ((_table$options$enable2 = table.options.enableFilters) != null ? _table$options$enable2 : true) && ((_table$options$getCol = table.options.getColumnCanGlobalFilter == null ? void 0 : table.options.getColumnCanGlobalFilter(column)) != null ? _table$options$getCol : true) && !!column.accessorFn;\n };\n },\n createTable: table => {\n table.getGlobalAutoFilterFn = () => {\n return filterFns.includesString;\n };\n table.getGlobalFilterFn = () => {\n var _table$options$filter, _table$options$filter2;\n const {\n globalFilterFn: globalFilterFn\n } = table.options;\n return isFunction(globalFilterFn) ? globalFilterFn : globalFilterFn === 'auto' ? table.getGlobalAutoFilterFn() : (_table$options$filter = (_table$options$filter2 = table.options.filterFns) == null ? void 0 : _table$options$filter2[globalFilterFn]) != null ? _table$options$filter : filterFns[globalFilterFn];\n };\n table.setGlobalFilter = updater => {\n table.options.onGlobalFilterChange == null || table.options.onGlobalFilterChange(updater);\n };\n table.resetGlobalFilter = defaultState => {\n table.setGlobalFilter(defaultState ? undefined : table.initialState.globalFilter);\n };\n }\n};\n\n//\n\nconst RowExpanding = {\n getInitialState: state => {\n return {\n expanded: {},\n ...state\n };\n },\n getDefaultOptions: table => {\n return {\n onExpandedChange: makeStateUpdater('expanded', table),\n paginateExpandedRows: true\n };\n },\n createTable: table => {\n let registered = false;\n let queued = false;\n table._autoResetExpanded = () => {\n var _ref, _table$options$autoRe;\n if (!registered) {\n table._queue(() => {\n registered = true;\n });\n return;\n }\n if ((_ref = (_table$options$autoRe = table.options.autoResetAll) != null ? _table$options$autoRe : table.options.autoResetExpanded) != null ? _ref : !table.options.manualExpanding) {\n if (queued) return;\n queued = true;\n table._queue(() => {\n table.resetExpanded();\n queued = false;\n });\n }\n };\n table.setExpanded = updater => table.options.onExpandedChange == null ? void 0 : table.options.onExpandedChange(updater);\n table.toggleAllRowsExpanded = expanded => {\n if (expanded != null ? expanded : !table.getIsAllRowsExpanded()) {\n table.setExpanded(true);\n } else {\n table.setExpanded({});\n }\n };\n table.resetExpanded = defaultState => {\n var _table$initialState$e, _table$initialState;\n table.setExpanded(defaultState ? {} : (_table$initialState$e = (_table$initialState = table.initialState) == null ? void 0 : _table$initialState.expanded) != null ? _table$initialState$e : {});\n };\n table.getCanSomeRowsExpand = () => {\n return table.getPrePaginationRowModel().flatRows.some(row => row.getCanExpand());\n };\n table.getToggleAllRowsExpandedHandler = () => {\n return e => {\n e.persist == null || e.persist();\n table.toggleAllRowsExpanded();\n };\n };\n table.getIsSomeRowsExpanded = () => {\n const expanded = table.getState().expanded;\n return expanded === true || Object.values(expanded).some(Boolean);\n };\n table.getIsAllRowsExpanded = () => {\n const expanded = table.getState().expanded;\n\n // If expanded is true, save some cycles and return true\n if (typeof expanded === 'boolean') {\n return expanded === true;\n }\n if (!Object.keys(expanded).length) {\n return false;\n }\n\n // If any row is not expanded, return false\n if (table.getRowModel().flatRows.some(row => !row.getIsExpanded())) {\n return false;\n }\n\n // They must all be expanded :shrug:\n return true;\n };\n table.getExpandedDepth = () => {\n let maxDepth = 0;\n const rowIds = table.getState().expanded === true ? Object.keys(table.getRowModel().rowsById) : Object.keys(table.getState().expanded);\n rowIds.forEach(id => {\n const splitId = id.split('.');\n maxDepth = Math.max(maxDepth, splitId.length);\n });\n return maxDepth;\n };\n table.getPreExpandedRowModel = () => table.getSortedRowModel();\n table.getExpandedRowModel = () => {\n if (!table._getExpandedRowModel && table.options.getExpandedRowModel) {\n table._getExpandedRowModel = table.options.getExpandedRowModel(table);\n }\n if (table.options.manualExpanding || !table._getExpandedRowModel) {\n return table.getPreExpandedRowModel();\n }\n return table._getExpandedRowModel();\n };\n },\n createRow: (row, table) => {\n row.toggleExpanded = expanded => {\n table.setExpanded(old => {\n var _expanded;\n const exists = old === true ? true : !!(old != null && old[row.id]);\n let oldExpanded = {};\n if (old === true) {\n Object.keys(table.getRowModel().rowsById).forEach(rowId => {\n oldExpanded[rowId] = true;\n });\n } else {\n oldExpanded = old;\n }\n expanded = (_expanded = expanded) != null ? _expanded : !exists;\n if (!exists && expanded) {\n return {\n ...oldExpanded,\n [row.id]: true\n };\n }\n if (exists && !expanded) {\n const {\n [row.id]: _,\n ...rest\n } = oldExpanded;\n return rest;\n }\n return old;\n });\n };\n row.getIsExpanded = () => {\n var _table$options$getIsR;\n const expanded = table.getState().expanded;\n return !!((_table$options$getIsR = table.options.getIsRowExpanded == null ? void 0 : table.options.getIsRowExpanded(row)) != null ? _table$options$getIsR : expanded === true || (expanded == null ? void 0 : expanded[row.id]));\n };\n row.getCanExpand = () => {\n var _table$options$getRow, _table$options$enable, _row$subRows;\n return (_table$options$getRow = table.options.getRowCanExpand == null ? void 0 : table.options.getRowCanExpand(row)) != null ? _table$options$getRow : ((_table$options$enable = table.options.enableExpanding) != null ? _table$options$enable : true) && !!((_row$subRows = row.subRows) != null && _row$subRows.length);\n };\n row.getIsAllParentsExpanded = () => {\n let isFullyExpanded = true;\n let currentRow = row;\n while (isFullyExpanded && currentRow.parentId) {\n currentRow = table.getRow(currentRow.parentId, true);\n isFullyExpanded = currentRow.getIsExpanded();\n }\n return isFullyExpanded;\n };\n row.getToggleExpandedHandler = () => {\n const canExpand = row.getCanExpand();\n return () => {\n if (!canExpand) return;\n row.toggleExpanded();\n };\n };\n }\n};\n\n//\n\nconst defaultPageIndex = 0;\nconst defaultPageSize = 10;\nconst getDefaultPaginationState = () => ({\n pageIndex: defaultPageIndex,\n pageSize: defaultPageSize\n});\nconst RowPagination = {\n getInitialState: state => {\n return {\n ...state,\n pagination: {\n ...getDefaultPaginationState(),\n ...(state == null ? void 0 : state.pagination)\n }\n };\n },\n getDefaultOptions: table => {\n return {\n onPaginationChange: makeStateUpdater('pagination', table)\n };\n },\n createTable: table => {\n let registered = false;\n let queued = false;\n table._autoResetPageIndex = () => {\n var _ref, _table$options$autoRe;\n if (!registered) {\n table._queue(() => {\n registered = true;\n });\n return;\n }\n if ((_ref = (_table$options$autoRe = table.options.autoResetAll) != null ? _table$options$autoRe : table.options.autoResetPageIndex) != null ? _ref : !table.options.manualPagination) {\n if (queued) return;\n queued = true;\n table._queue(() => {\n table.resetPageIndex();\n queued = false;\n });\n }\n };\n table.setPagination = updater => {\n const safeUpdater = old => {\n let newState = functionalUpdate(updater, old);\n return newState;\n };\n return table.options.onPaginationChange == null ? void 0 : table.options.onPaginationChange(safeUpdater);\n };\n table.resetPagination = defaultState => {\n var _table$initialState$p;\n table.setPagination(defaultState ? getDefaultPaginationState() : (_table$initialState$p = table.initialState.pagination) != null ? _table$initialState$p : getDefaultPaginationState());\n };\n table.setPageIndex = updater => {\n table.setPagination(old => {\n let pageIndex = functionalUpdate(updater, old.pageIndex);\n const maxPageIndex = typeof table.options.pageCount === 'undefined' || table.options.pageCount === -1 ? Number.MAX_SAFE_INTEGER : table.options.pageCount - 1;\n pageIndex = Math.max(0, Math.min(pageIndex, maxPageIndex));\n return {\n ...old,\n pageIndex\n };\n });\n };\n table.resetPageIndex = defaultState => {\n var _table$initialState$p2, _table$initialState;\n table.setPageIndex(defaultState ? defaultPageIndex : (_table$initialState$p2 = (_table$initialState = table.initialState) == null || (_table$initialState = _table$initialState.pagination) == null ? void 0 : _table$initialState.pageIndex) != null ? _table$initialState$p2 : defaultPageIndex);\n };\n table.resetPageSize = defaultState => {\n var _table$initialState$p3, _table$initialState2;\n table.setPageSize(defaultState ? defaultPageSize : (_table$initialState$p3 = (_table$initialState2 = table.initialState) == null || (_table$initialState2 = _table$initialState2.pagination) == null ? void 0 : _table$initialState2.pageSize) != null ? _table$initialState$p3 : defaultPageSize);\n };\n table.setPageSize = updater => {\n table.setPagination(old => {\n const pageSize = Math.max(1, functionalUpdate(updater, old.pageSize));\n const topRowIndex = old.pageSize * old.pageIndex;\n const pageIndex = Math.floor(topRowIndex / pageSize);\n return {\n ...old,\n pageIndex,\n pageSize\n };\n });\n };\n //deprecated\n table.setPageCount = updater => table.setPagination(old => {\n var _table$options$pageCo;\n let newPageCount = functionalUpdate(updater, (_table$options$pageCo = table.options.pageCount) != null ? _table$options$pageCo : -1);\n if (typeof newPageCount === 'number') {\n newPageCount = Math.max(-1, newPageCount);\n }\n return {\n ...old,\n pageCount: newPageCount\n };\n });\n table.getPageOptions = memo(() => [table.getPageCount()], pageCount => {\n let pageOptions = [];\n if (pageCount && pageCount > 0) {\n pageOptions = [...new Array(pageCount)].fill(null).map((_, i) => i);\n }\n return pageOptions;\n }, getMemoOptions(table.options, 'debugTable', 'getPageOptions'));\n table.getCanPreviousPage = () => table.getState().pagination.pageIndex > 0;\n table.getCanNextPage = () => {\n const {\n pageIndex\n } = table.getState().pagination;\n const pageCount = table.getPageCount();\n if (pageCount === -1) {\n return true;\n }\n if (pageCount === 0) {\n return false;\n }\n return pageIndex < pageCount - 1;\n };\n table.previousPage = () => {\n return table.setPageIndex(old => old - 1);\n };\n table.nextPage = () => {\n return table.setPageIndex(old => {\n return old + 1;\n });\n };\n table.firstPage = () => {\n return table.setPageIndex(0);\n };\n table.lastPage = () => {\n return table.setPageIndex(table.getPageCount() - 1);\n };\n table.getPrePaginationRowModel = () => table.getExpandedRowModel();\n table.getPaginationRowModel = () => {\n if (!table._getPaginationRowModel && table.options.getPaginationRowModel) {\n table._getPaginationRowModel = table.options.getPaginationRowModel(table);\n }\n if (table.options.manualPagination || !table._getPaginationRowModel) {\n return table.getPrePaginationRowModel();\n }\n return table._getPaginationRowModel();\n };\n table.getPageCount = () => {\n var _table$options$pageCo2;\n return (_table$options$pageCo2 = table.options.pageCount) != null ? _table$options$pageCo2 : Math.ceil(table.getRowCount() / table.getState().pagination.pageSize);\n };\n table.getRowCount = () => {\n var _table$options$rowCou;\n return (_table$options$rowCou = table.options.rowCount) != null ? _table$options$rowCou : table.getPrePaginationRowModel().rows.length;\n };\n }\n};\n\n//\n\nconst getDefaultRowPinningState = () => ({\n top: [],\n bottom: []\n});\nconst RowPinning = {\n getInitialState: state => {\n return {\n rowPinning: getDefaultRowPinningState(),\n ...state\n };\n },\n getDefaultOptions: table => {\n return {\n onRowPinningChange: makeStateUpdater('rowPinning', table)\n };\n },\n createRow: (row, table) => {\n row.pin = (position, includeLeafRows, includeParentRows) => {\n const leafRowIds = includeLeafRows ? row.getLeafRows().map(_ref => {\n let {\n id\n } = _ref;\n return id;\n }) : [];\n const parentRowIds = includeParentRows ? row.getParentRows().map(_ref2 => {\n let {\n id\n } = _ref2;\n return id;\n }) : [];\n const rowIds = new Set([...parentRowIds, row.id, ...leafRowIds]);\n table.setRowPinning(old => {\n var _old$top3, _old$bottom3;\n if (position === 'bottom') {\n var _old$top, _old$bottom;\n return {\n top: ((_old$top = old == null ? void 0 : old.top) != null ? _old$top : []).filter(d => !(rowIds != null && rowIds.has(d))),\n bottom: [...((_old$bottom = old == null ? void 0 : old.bottom) != null ? _old$bottom : []).filter(d => !(rowIds != null && rowIds.has(d))), ...Array.from(rowIds)]\n };\n }\n if (position === 'top') {\n var _old$top2, _old$bottom2;\n return {\n top: [...((_old$top2 = old == null ? void 0 : old.top) != null ? _old$top2 : []).filter(d => !(rowIds != null && rowIds.has(d))), ...Array.from(rowIds)],\n bottom: ((_old$bottom2 = old == null ? void 0 : old.bottom) != null ? _old$bottom2 : []).filter(d => !(rowIds != null && rowIds.has(d)))\n };\n }\n return {\n top: ((_old$top3 = old == null ? void 0 : old.top) != null ? _old$top3 : []).filter(d => !(rowIds != null && rowIds.has(d))),\n bottom: ((_old$bottom3 = old == null ? void 0 : old.bottom) != null ? _old$bottom3 : []).filter(d => !(rowIds != null && rowIds.has(d)))\n };\n });\n };\n row.getCanPin = () => {\n var _ref3;\n const {\n enableRowPinning,\n enablePinning\n } = table.options;\n if (typeof enableRowPinning === 'function') {\n return enableRowPinning(row);\n }\n return (_ref3 = enableRowPinning != null ? enableRowPinning : enablePinning) != null ? _ref3 : true;\n };\n row.getIsPinned = () => {\n const rowIds = [row.id];\n const {\n top,\n bottom\n } = table.getState().rowPinning;\n const isTop = rowIds.some(d => top == null ? void 0 : top.includes(d));\n const isBottom = rowIds.some(d => bottom == null ? void 0 : bottom.includes(d));\n return isTop ? 'top' : isBottom ? 'bottom' : false;\n };\n row.getPinnedIndex = () => {\n var _ref4, _visiblePinnedRowIds$;\n const position = row.getIsPinned();\n if (!position) return -1;\n const visiblePinnedRowIds = (_ref4 = position === 'top' ? table.getTopRows() : table.getBottomRows()) == null ? void 0 : _ref4.map(_ref5 => {\n let {\n id\n } = _ref5;\n return id;\n });\n return (_visiblePinnedRowIds$ = visiblePinnedRowIds == null ? void 0 : visiblePinnedRowIds.indexOf(row.id)) != null ? _visiblePinnedRowIds$ : -1;\n };\n },\n createTable: table => {\n table.setRowPinning = updater => table.options.onRowPinningChange == null ? void 0 : table.options.onRowPinningChange(updater);\n table.resetRowPinning = defaultState => {\n var _table$initialState$r, _table$initialState;\n return table.setRowPinning(defaultState ? getDefaultRowPinningState() : (_table$initialState$r = (_table$initialState = table.initialState) == null ? void 0 : _table$initialState.rowPinning) != null ? _table$initialState$r : getDefaultRowPinningState());\n };\n table.getIsSomeRowsPinned = position => {\n var _pinningState$positio;\n const pinningState = table.getState().rowPinning;\n if (!position) {\n var _pinningState$top, _pinningState$bottom;\n return Boolean(((_pinningState$top = pinningState.top) == null ? void 0 : _pinningState$top.length) || ((_pinningState$bottom = pinningState.bottom) == null ? void 0 : _pinningState$bottom.length));\n }\n return Boolean((_pinningState$positio = pinningState[position]) == null ? void 0 : _pinningState$positio.length);\n };\n table._getPinnedRows = (visibleRows, pinnedRowIds, position) => {\n var _table$options$keepPi;\n const rows = ((_table$options$keepPi = table.options.keepPinnedRows) != null ? _table$options$keepPi : true) ?\n //get all rows that are pinned even if they would not be otherwise visible\n //account for expanded parent rows, but not pagination or filtering\n (pinnedRowIds != null ? pinnedRowIds : []).map(rowId => {\n const row = table.getRow(rowId, true);\n return row.getIsAllParentsExpanded() ? row : null;\n }) :\n //else get only visible rows that are pinned\n (pinnedRowIds != null ? pinnedRowIds : []).map(rowId => visibleRows.find(row => row.id === rowId));\n return rows.filter(Boolean).map(d => ({\n ...d,\n position\n }));\n };\n table.getTopRows = memo(() => [table.getRowModel().rows, table.getState().rowPinning.top], (allRows, topPinnedRowIds) => table._getPinnedRows(allRows, topPinnedRowIds, 'top'), getMemoOptions(table.options, 'debugRows', 'getTopRows'));\n table.getBottomRows = memo(() => [table.getRowModel().rows, table.getState().rowPinning.bottom], (allRows, bottomPinnedRowIds) => table._getPinnedRows(allRows, bottomPinnedRowIds, 'bottom'), getMemoOptions(table.options, 'debugRows', 'getBottomRows'));\n table.getCenterRows = memo(() => [table.getRowModel().rows, table.getState().rowPinning.top, table.getState().rowPinning.bottom], (allRows, top, bottom) => {\n const topAndBottom = new Set([...(top != null ? top : []), ...(bottom != null ? bottom : [])]);\n return allRows.filter(d => !topAndBottom.has(d.id));\n }, getMemoOptions(table.options, 'debugRows', 'getCenterRows'));\n }\n};\n\n//\n\nconst RowSelection = {\n getInitialState: state => {\n return {\n rowSelection: {},\n ...state\n };\n },\n getDefaultOptions: table => {\n return {\n onRowSelectionChange: makeStateUpdater('rowSelection', table),\n enableRowSelection: true,\n enableMultiRowSelection: true,\n enableSubRowSelection: true\n // enableGroupingRowSelection: false,\n // isAdditiveSelectEvent: (e: unknown) => !!e.metaKey,\n // isInclusiveSelectEvent: (e: unknown) => !!e.shiftKey,\n };\n },\n createTable: table => {\n table.setRowSelection = updater => table.options.onRowSelectionChange == null ? void 0 : table.options.onRowSelectionChange(updater);\n table.resetRowSelection = defaultState => {\n var _table$initialState$r;\n return table.setRowSelection(defaultState ? {} : (_table$initialState$r = table.initialState.rowSelection) != null ? _table$initialState$r : {});\n };\n table.toggleAllRowsSelected = value => {\n table.setRowSelection(old => {\n value = typeof value !== 'undefined' ? value : !table.getIsAllRowsSelected();\n const rowSelection = {\n ...old\n };\n const preGroupedFlatRows = table.getPreGroupedRowModel().flatRows;\n\n // We don't use `mutateRowIsSelected` here for performance reasons.\n // All of the rows are flat already, so it wouldn't be worth it\n if (value) {\n preGroupedFlatRows.forEach(row => {\n if (!row.getCanSelect()) {\n return;\n }\n rowSelection[row.id] = true;\n });\n } else {\n preGroupedFlatRows.forEach(row => {\n delete rowSelection[row.id];\n });\n }\n return rowSelection;\n });\n };\n table.toggleAllPageRowsSelected = value => table.setRowSelection(old => {\n const resolvedValue = typeof value !== 'undefined' ? value : !table.getIsAllPageRowsSelected();\n const rowSelection = {\n ...old\n };\n table.getRowModel().rows.forEach(row => {\n mutateRowIsSelected(rowSelection, row.id, resolvedValue, true, table);\n });\n return rowSelection;\n });\n\n // addRowSelectionRange: rowId => {\n // const {\n // rows,\n // rowsById,\n // options: { selectGroupingRows, selectSubRows },\n // } = table\n\n // const findSelectedRow = (rows: Row[]) => {\n // let found\n // rows.find(d => {\n // if (d.getIsSelected()) {\n // found = d\n // return true\n // }\n // const subFound = findSelectedRow(d.subRows || [])\n // if (subFound) {\n // found = subFound\n // return true\n // }\n // return false\n // })\n // return found\n // }\n\n // const firstRow = findSelectedRow(rows) || rows[0]\n // const lastRow = rowsById[rowId]\n\n // let include = false\n // const selectedRowIds = {}\n\n // const addRow = (row: Row) => {\n // mutateRowIsSelected(selectedRowIds, row.id, true, {\n // rowsById,\n // selectGroupingRows: selectGroupingRows!,\n // selectSubRows: selectSubRows!,\n // })\n // }\n\n // table.rows.forEach(row => {\n // const isFirstRow = row.id === firstRow.id\n // const isLastRow = row.id === lastRow.id\n\n // if (isFirstRow || isLastRow) {\n // if (!include) {\n // include = true\n // } else if (include) {\n // addRow(row)\n // include = false\n // }\n // }\n\n // if (include) {\n // addRow(row)\n // }\n // })\n\n // table.setRowSelection(selectedRowIds)\n // },\n table.getPreSelectedRowModel = () => table.getCoreRowModel();\n table.getSelectedRowModel = memo(() => [table.getState().rowSelection, table.getCoreRowModel()], (rowSelection, rowModel) => {\n if (!Object.keys(rowSelection).length) {\n return {\n rows: [],\n flatRows: [],\n rowsById: {}\n };\n }\n return selectRowsFn(table, rowModel);\n }, getMemoOptions(table.options, 'debugTable', 'getSelectedRowModel'));\n table.getFilteredSelectedRowModel = memo(() => [table.getState().rowSelection, table.getFilteredRowModel()], (rowSelection, rowModel) => {\n if (!Object.keys(rowSelection).length) {\n return {\n rows: [],\n flatRows: [],\n rowsById: {}\n };\n }\n return selectRowsFn(table, rowModel);\n }, getMemoOptions(table.options, 'debugTable', 'getFilteredSelectedRowModel'));\n table.getGroupedSelectedRowModel = memo(() => [table.getState().rowSelection, table.getSortedRowModel()], (rowSelection, rowModel) => {\n if (!Object.keys(rowSelection).length) {\n return {\n rows: [],\n flatRows: [],\n rowsById: {}\n };\n }\n return selectRowsFn(table, rowModel);\n }, getMemoOptions(table.options, 'debugTable', 'getGroupedSelectedRowModel'));\n\n ///\n\n // getGroupingRowCanSelect: rowId => {\n // const row = table.getRow(rowId)\n\n // if (!row) {\n // throw new Error()\n // }\n\n // if (typeof table.options.enableGroupingRowSelection === 'function') {\n // return table.options.enableGroupingRowSelection(row)\n // }\n\n // return table.options.enableGroupingRowSelection ?? false\n // },\n\n table.getIsAllRowsSelected = () => {\n const preGroupedFlatRows = table.getFilteredRowModel().flatRows;\n const {\n rowSelection\n } = table.getState();\n let isAllRowsSelected = Boolean(preGroupedFlatRows.length && Object.keys(rowSelection).length);\n if (isAllRowsSelected) {\n if (preGroupedFlatRows.some(row => row.getCanSelect() && !rowSelection[row.id])) {\n isAllRowsSelected = false;\n }\n }\n return isAllRowsSelected;\n };\n table.getIsAllPageRowsSelected = () => {\n const paginationFlatRows = table.getPaginationRowModel().flatRows.filter(row => row.getCanSelect());\n const {\n rowSelection\n } = table.getState();\n let isAllPageRowsSelected = !!paginationFlatRows.length;\n if (isAllPageRowsSelected && paginationFlatRows.some(row => !rowSelection[row.id])) {\n isAllPageRowsSelected = false;\n }\n return isAllPageRowsSelected;\n };\n table.getIsSomeRowsSelected = () => {\n var _table$getState$rowSe;\n const totalSelected = Object.keys((_table$getState$rowSe = table.getState().rowSelection) != null ? _table$getState$rowSe : {}).length;\n return totalSelected > 0 && totalSelected < table.getFilteredRowModel().flatRows.length;\n };\n table.getIsSomePageRowsSelected = () => {\n const paginationFlatRows = table.getPaginationRowModel().flatRows;\n return table.getIsAllPageRowsSelected() ? false : paginationFlatRows.filter(row => row.getCanSelect()).some(d => d.getIsSelected() || d.getIsSomeSelected());\n };\n table.getToggleAllRowsSelectedHandler = () => {\n return e => {\n table.toggleAllRowsSelected(e.target.checked);\n };\n };\n table.getToggleAllPageRowsSelectedHandler = () => {\n return e => {\n table.toggleAllPageRowsSelected(e.target.checked);\n };\n };\n },\n createRow: (row, table) => {\n row.toggleSelected = (value, opts) => {\n const isSelected = row.getIsSelected();\n table.setRowSelection(old => {\n var _opts$selectChildren;\n value = typeof value !== 'undefined' ? value : !isSelected;\n if (row.getCanSelect() && isSelected === value) {\n return old;\n }\n const selectedRowIds = {\n ...old\n };\n mutateRowIsSelected(selectedRowIds, row.id, value, (_opts$selectChildren = opts == null ? void 0 : opts.selectChildren) != null ? _opts$selectChildren : true, table);\n return selectedRowIds;\n });\n };\n row.getIsSelected = () => {\n const {\n rowSelection\n } = table.getState();\n return isRowSelected(row, rowSelection);\n };\n row.getIsSomeSelected = () => {\n const {\n rowSelection\n } = table.getState();\n return isSubRowSelected(row, rowSelection) === 'some';\n };\n row.getIsAllSubRowsSelected = () => {\n const {\n rowSelection\n } = table.getState();\n return isSubRowSelected(row, rowSelection) === 'all';\n };\n row.getCanSelect = () => {\n var _table$options$enable;\n if (typeof table.options.enableRowSelection === 'function') {\n return table.options.enableRowSelection(row);\n }\n return (_table$options$enable = table.options.enableRowSelection) != null ? _table$options$enable : true;\n };\n row.getCanSelectSubRows = () => {\n var _table$options$enable2;\n if (typeof table.options.enableSubRowSelection === 'function') {\n return table.options.enableSubRowSelection(row);\n }\n return (_table$options$enable2 = table.options.enableSubRowSelection) != null ? _table$options$enable2 : true;\n };\n row.getCanMultiSelect = () => {\n var _table$options$enable3;\n if (typeof table.options.enableMultiRowSelection === 'function') {\n return table.options.enableMultiRowSelection(row);\n }\n return (_table$options$enable3 = table.options.enableMultiRowSelection) != null ? _table$options$enable3 : true;\n };\n row.getToggleSelectedHandler = () => {\n const canSelect = row.getCanSelect();\n return e => {\n var _target;\n if (!canSelect) return;\n row.toggleSelected((_target = e.target) == null ? void 0 : _target.checked);\n };\n };\n }\n};\nconst mutateRowIsSelected = (selectedRowIds, id, value, includeChildren, table) => {\n var _row$subRows;\n const row = table.getRow(id, true);\n\n // const isGrouped = row.getIsGrouped()\n\n // if ( // TODO: enforce grouping row selection rules\n // !isGrouped ||\n // (isGrouped && table.options.enableGroupingRowSelection)\n // ) {\n if (value) {\n if (!row.getCanMultiSelect()) {\n Object.keys(selectedRowIds).forEach(key => delete selectedRowIds[key]);\n }\n if (row.getCanSelect()) {\n selectedRowIds[id] = true;\n }\n } else {\n delete selectedRowIds[id];\n }\n // }\n\n if (includeChildren && (_row$subRows = row.subRows) != null && _row$subRows.length && row.getCanSelectSubRows()) {\n row.subRows.forEach(row => mutateRowIsSelected(selectedRowIds, row.id, value, includeChildren, table));\n }\n};\nfunction selectRowsFn(table, rowModel) {\n const rowSelection = table.getState().rowSelection;\n const newSelectedFlatRows = [];\n const newSelectedRowsById = {};\n\n // Filters top level and nested rows\n const recurseRows = function (rows, depth) {\n return rows.map(row => {\n var _row$subRows2;\n const isSelected = isRowSelected(row, rowSelection);\n if (isSelected) {\n newSelectedFlatRows.push(row);\n newSelectedRowsById[row.id] = row;\n }\n if ((_row$subRows2 = row.subRows) != null && _row$subRows2.length) {\n row = {\n ...row,\n subRows: recurseRows(row.subRows)\n };\n }\n if (isSelected) {\n return row;\n }\n }).filter(Boolean);\n };\n return {\n rows: recurseRows(rowModel.rows),\n flatRows: newSelectedFlatRows,\n rowsById: newSelectedRowsById\n };\n}\nfunction isRowSelected(row, selection) {\n var _selection$row$id;\n return (_selection$row$id = selection[row.id]) != null ? _selection$row$id : false;\n}\nfunction isSubRowSelected(row, selection, table) {\n var _row$subRows3;\n if (!((_row$subRows3 = row.subRows) != null && _row$subRows3.length)) return false;\n let allChildrenSelected = true;\n let someSelected = false;\n row.subRows.forEach(subRow => {\n // Bail out early if we know both of these\n if (someSelected && !allChildrenSelected) {\n return;\n }\n if (subRow.getCanSelect()) {\n if (isRowSelected(subRow, selection)) {\n someSelected = true;\n } else {\n allChildrenSelected = false;\n }\n }\n\n // Check row selection of nested subrows\n if (subRow.subRows && subRow.subRows.length) {\n const subRowChildrenSelected = isSubRowSelected(subRow, selection);\n if (subRowChildrenSelected === 'all') {\n someSelected = true;\n } else if (subRowChildrenSelected === 'some') {\n someSelected = true;\n allChildrenSelected = false;\n } else {\n allChildrenSelected = false;\n }\n }\n });\n return allChildrenSelected ? 'all' : someSelected ? 'some' : false;\n}\n\nconst reSplitAlphaNumeric = /([0-9]+)/gm;\nconst alphanumeric = (rowA, rowB, columnId) => {\n return compareAlphanumeric(toString(rowA.getValue(columnId)).toLowerCase(), toString(rowB.getValue(columnId)).toLowerCase());\n};\nconst alphanumericCaseSensitive = (rowA, rowB, columnId) => {\n return compareAlphanumeric(toString(rowA.getValue(columnId)), toString(rowB.getValue(columnId)));\n};\n\n// The text filter is more basic (less numeric support)\n// but is much faster\nconst text = (rowA, rowB, columnId) => {\n return compareBasic(toString(rowA.getValue(columnId)).toLowerCase(), toString(rowB.getValue(columnId)).toLowerCase());\n};\n\n// The text filter is more basic (less numeric support)\n// but is much faster\nconst textCaseSensitive = (rowA, rowB, columnId) => {\n return compareBasic(toString(rowA.getValue(columnId)), toString(rowB.getValue(columnId)));\n};\nconst datetime = (rowA, rowB, columnId) => {\n const a = rowA.getValue(columnId);\n const b = rowB.getValue(columnId);\n\n // Can handle nullish values\n // Use > and < because == (and ===) doesn't work with\n // Date objects (would require calling getTime()).\n return a > b ? 1 : a < b ? -1 : 0;\n};\nconst basic = (rowA, rowB, columnId) => {\n return compareBasic(rowA.getValue(columnId), rowB.getValue(columnId));\n};\n\n// Utils\n\nfunction compareBasic(a, b) {\n return a === b ? 0 : a > b ? 1 : -1;\n}\nfunction toString(a) {\n if (typeof a === 'number') {\n if (isNaN(a) || a === Infinity || a === -Infinity) {\n return '';\n }\n return String(a);\n }\n if (typeof a === 'string') {\n return a;\n }\n return '';\n}\n\n// Mixed sorting is slow, but very inclusive of many edge cases.\n// It handles numbers, mixed alphanumeric combinations, and even\n// null, undefined, and Infinity\nfunction compareAlphanumeric(aStr, bStr) {\n // Split on number groups, but keep the delimiter\n // Then remove falsey split values\n const a = aStr.split(reSplitAlphaNumeric).filter(Boolean);\n const b = bStr.split(reSplitAlphaNumeric).filter(Boolean);\n\n // While\n while (a.length && b.length) {\n const aa = a.shift();\n const bb = b.shift();\n const an = parseInt(aa, 10);\n const bn = parseInt(bb, 10);\n const combo = [an, bn].sort();\n\n // Both are string\n if (isNaN(combo[0])) {\n if (aa > bb) {\n return 1;\n }\n if (bb > aa) {\n return -1;\n }\n continue;\n }\n\n // One is a string, one is a number\n if (isNaN(combo[1])) {\n return isNaN(an) ? -1 : 1;\n }\n\n // Both are numbers\n if (an > bn) {\n return 1;\n }\n if (bn > an) {\n return -1;\n }\n }\n return a.length - b.length;\n}\n\n// Exports\n\nconst sortingFns = {\n alphanumeric,\n alphanumericCaseSensitive,\n text,\n textCaseSensitive,\n datetime,\n basic\n};\n\n//\n\nconst RowSorting = {\n getInitialState: state => {\n return {\n sorting: [],\n ...state\n };\n },\n getDefaultColumnDef: () => {\n return {\n sortingFn: 'auto',\n sortUndefined: 1\n };\n },\n getDefaultOptions: table => {\n return {\n onSortingChange: makeStateUpdater('sorting', table),\n isMultiSortEvent: e => {\n return e.shiftKey;\n }\n };\n },\n createColumn: (column, table) => {\n column.getAutoSortingFn = () => {\n const firstRows = table.getFilteredRowModel().flatRows.slice(10);\n let isString = false;\n for (const row of firstRows) {\n const value = row == null ? void 0 : row.getValue(column.id);\n if (Object.prototype.toString.call(value) === '[object Date]') {\n return sortingFns.datetime;\n }\n if (typeof value === 'string') {\n isString = true;\n if (value.split(reSplitAlphaNumeric).length > 1) {\n return sortingFns.alphanumeric;\n }\n }\n }\n if (isString) {\n return sortingFns.text;\n }\n return sortingFns.basic;\n };\n column.getAutoSortDir = () => {\n const firstRow = table.getFilteredRowModel().flatRows[0];\n const value = firstRow == null ? void 0 : firstRow.getValue(column.id);\n if (typeof value === 'string') {\n return 'asc';\n }\n return 'desc';\n };\n column.getSortingFn = () => {\n var _table$options$sortin, _table$options$sortin2;\n if (!column) {\n throw new Error();\n }\n return isFunction(column.columnDef.sortingFn) ? column.columnDef.sortingFn : column.columnDef.sortingFn === 'auto' ? column.getAutoSortingFn() : (_table$options$sortin = (_table$options$sortin2 = table.options.sortingFns) == null ? void 0 : _table$options$sortin2[column.columnDef.sortingFn]) != null ? _table$options$sortin : sortingFns[column.columnDef.sortingFn];\n };\n column.toggleSorting = (desc, multi) => {\n // if (column.columns.length) {\n // column.columns.forEach((c, i) => {\n // if (c.id) {\n // table.toggleColumnSorting(c.id, undefined, multi || !!i)\n // }\n // })\n // return\n // }\n\n // this needs to be outside of table.setSorting to be in sync with rerender\n const nextSortingOrder = column.getNextSortingOrder();\n const hasManualValue = typeof desc !== 'undefined' && desc !== null;\n table.setSorting(old => {\n // Find any existing sorting for this column\n const existingSorting = old == null ? void 0 : old.find(d => d.id === column.id);\n const existingIndex = old == null ? void 0 : old.findIndex(d => d.id === column.id);\n let newSorting = [];\n\n // What should we do with this sort action?\n let sortAction;\n let nextDesc = hasManualValue ? desc : nextSortingOrder === 'desc';\n\n // Multi-mode\n if (old != null && old.length && column.getCanMultiSort() && multi) {\n if (existingSorting) {\n sortAction = 'toggle';\n } else {\n sortAction = 'add';\n }\n } else {\n // Normal mode\n if (old != null && old.length && existingIndex !== old.length - 1) {\n sortAction = 'replace';\n } else if (existingSorting) {\n sortAction = 'toggle';\n } else {\n sortAction = 'replace';\n }\n }\n\n // Handle toggle states that will remove the sorting\n if (sortAction === 'toggle') {\n // If we are \"actually\" toggling (not a manual set value), should we remove the sorting?\n if (!hasManualValue) {\n // Is our intention to remove?\n if (!nextSortingOrder) {\n sortAction = 'remove';\n }\n }\n }\n if (sortAction === 'add') {\n var _table$options$maxMul;\n newSorting = [...old, {\n id: column.id,\n desc: nextDesc\n }];\n // Take latest n columns\n newSorting.splice(0, newSorting.length - ((_table$options$maxMul = table.options.maxMultiSortColCount) != null ? _table$options$maxMul : Number.MAX_SAFE_INTEGER));\n } else if (sortAction === 'toggle') {\n // This flips (or sets) the\n newSorting = old.map(d => {\n if (d.id === column.id) {\n return {\n ...d,\n desc: nextDesc\n };\n }\n return d;\n });\n } else if (sortAction === 'remove') {\n newSorting = old.filter(d => d.id !== column.id);\n } else {\n newSorting = [{\n id: column.id,\n desc: nextDesc\n }];\n }\n return newSorting;\n });\n };\n column.getFirstSortDir = () => {\n var _ref, _column$columnDef$sor;\n const sortDescFirst = (_ref = (_column$columnDef$sor = column.columnDef.sortDescFirst) != null ? _column$columnDef$sor : table.options.sortDescFirst) != null ? _ref : column.getAutoSortDir() === 'desc';\n return sortDescFirst ? 'desc' : 'asc';\n };\n column.getNextSortingOrder = multi => {\n var _table$options$enable, _table$options$enable2;\n const firstSortDirection = column.getFirstSortDir();\n const isSorted = column.getIsSorted();\n if (!isSorted) {\n return firstSortDirection;\n }\n if (isSorted !== firstSortDirection && ((_table$options$enable = table.options.enableSortingRemoval) != null ? _table$options$enable : true) && (\n // If enableSortRemove, enable in general\n multi ? (_table$options$enable2 = table.options.enableMultiRemove) != null ? _table$options$enable2 : true : true) // If multi, don't allow if enableMultiRemove))\n ) {\n return false;\n }\n return isSorted === 'desc' ? 'asc' : 'desc';\n };\n column.getCanSort = () => {\n var _column$columnDef$ena, _table$options$enable3;\n return ((_column$columnDef$ena = column.columnDef.enableSorting) != null ? _column$columnDef$ena : true) && ((_table$options$enable3 = table.options.enableSorting) != null ? _table$options$enable3 : true) && !!column.accessorFn;\n };\n column.getCanMultiSort = () => {\n var _ref2, _column$columnDef$ena2;\n return (_ref2 = (_column$columnDef$ena2 = column.columnDef.enableMultiSort) != null ? _column$columnDef$ena2 : table.options.enableMultiSort) != null ? _ref2 : !!column.accessorFn;\n };\n column.getIsSorted = () => {\n var _table$getState$sorti;\n const columnSort = (_table$getState$sorti = table.getState().sorting) == null ? void 0 : _table$getState$sorti.find(d => d.id === column.id);\n return !columnSort ? false : columnSort.desc ? 'desc' : 'asc';\n };\n column.getSortIndex = () => {\n var _table$getState$sorti2, _table$getState$sorti3;\n return (_table$getState$sorti2 = (_table$getState$sorti3 = table.getState().sorting) == null ? void 0 : _table$getState$sorti3.findIndex(d => d.id === column.id)) != null ? _table$getState$sorti2 : -1;\n };\n column.clearSorting = () => {\n //clear sorting for just 1 column\n table.setSorting(old => old != null && old.length ? old.filter(d => d.id !== column.id) : []);\n };\n column.getToggleSortingHandler = () => {\n const canSort = column.getCanSort();\n return e => {\n if (!canSort) return;\n e.persist == null || e.persist();\n column.toggleSorting == null || column.toggleSorting(undefined, column.getCanMultiSort() ? table.options.isMultiSortEvent == null ? void 0 : table.options.isMultiSortEvent(e) : false);\n };\n };\n },\n createTable: table => {\n table.setSorting = updater => table.options.onSortingChange == null ? void 0 : table.options.onSortingChange(updater);\n table.resetSorting = defaultState => {\n var _table$initialState$s, _table$initialState;\n table.setSorting(defaultState ? [] : (_table$initialState$s = (_table$initialState = table.initialState) == null ? void 0 : _table$initialState.sorting) != null ? _table$initialState$s : []);\n };\n table.getPreSortedRowModel = () => table.getGroupedRowModel();\n table.getSortedRowModel = () => {\n if (!table._getSortedRowModel && table.options.getSortedRowModel) {\n table._getSortedRowModel = table.options.getSortedRowModel(table);\n }\n if (table.options.manualSorting || !table._getSortedRowModel) {\n return table.getPreSortedRowModel();\n }\n return table._getSortedRowModel();\n };\n }\n};\n\nconst builtInFeatures = [Headers, ColumnVisibility, ColumnOrdering, ColumnPinning, ColumnFaceting, ColumnFiltering, GlobalFaceting,\n//depends on ColumnFaceting\nGlobalFiltering,\n//depends on ColumnFiltering\nRowSorting, ColumnGrouping,\n//depends on RowSorting\nRowExpanding, RowPagination, RowPinning, RowSelection, ColumnSizing];\n\n//\n\nfunction createTable(options) {\n var _options$_features, _options$initialState;\n if (process.env.NODE_ENV !== 'production' && (options.debugAll || options.debugTable)) {\n console.info('Creating Table Instance...');\n }\n const _features = [...builtInFeatures, ...((_options$_features = options._features) != null ? _options$_features : [])];\n let table = {\n _features\n };\n const defaultOptions = table._features.reduce((obj, feature) => {\n return Object.assign(obj, feature.getDefaultOptions == null ? void 0 : feature.getDefaultOptions(table));\n }, {});\n const mergeOptions = options => {\n if (table.options.mergeOptions) {\n return table.options.mergeOptions(defaultOptions, options);\n }\n return {\n ...defaultOptions,\n ...options\n };\n };\n const coreInitialState = {};\n let initialState = {\n ...coreInitialState,\n ...((_options$initialState = options.initialState) != null ? _options$initialState : {})\n };\n table._features.forEach(feature => {\n var _feature$getInitialSt;\n initialState = (_feature$getInitialSt = feature.getInitialState == null ? void 0 : feature.getInitialState(initialState)) != null ? _feature$getInitialSt : initialState;\n });\n const queued = [];\n let queuedTimeout = false;\n const coreInstance = {\n _features,\n options: {\n ...defaultOptions,\n ...options\n },\n initialState,\n _queue: cb => {\n queued.push(cb);\n if (!queuedTimeout) {\n queuedTimeout = true;\n\n // Schedule a microtask to run the queued callbacks after\n // the current call stack (render, etc) has finished.\n Promise.resolve().then(() => {\n while (queued.length) {\n queued.shift()();\n }\n queuedTimeout = false;\n }).catch(error => setTimeout(() => {\n throw error;\n }));\n }\n },\n reset: () => {\n table.setState(table.initialState);\n },\n setOptions: updater => {\n const newOptions = functionalUpdate(updater, table.options);\n table.options = mergeOptions(newOptions);\n },\n getState: () => {\n return table.options.state;\n },\n setState: updater => {\n table.options.onStateChange == null || table.options.onStateChange(updater);\n },\n _getRowId: (row, index, parent) => {\n var _table$options$getRow;\n return (_table$options$getRow = table.options.getRowId == null ? void 0 : table.options.getRowId(row, index, parent)) != null ? _table$options$getRow : `${parent ? [parent.id, index].join('.') : index}`;\n },\n getCoreRowModel: () => {\n if (!table._getCoreRowModel) {\n table._getCoreRowModel = table.options.getCoreRowModel(table);\n }\n return table._getCoreRowModel();\n },\n // The final calls start at the bottom of the model,\n // expanded rows, which then work their way up\n\n getRowModel: () => {\n return table.getPaginationRowModel();\n },\n //in next version, we should just pass in the row model as the optional 2nd arg\n getRow: (id, searchAll) => {\n let row = (searchAll ? table.getPrePaginationRowModel() : table.getRowModel()).rowsById[id];\n if (!row) {\n row = table.getCoreRowModel().rowsById[id];\n if (!row) {\n if (process.env.NODE_ENV !== 'production') {\n throw new Error(`getRow could not find row with ID: ${id}`);\n }\n throw new Error();\n }\n }\n return row;\n },\n _getDefaultColumnDef: memo(() => [table.options.defaultColumn], defaultColumn => {\n var _defaultColumn;\n defaultColumn = (_defaultColumn = defaultColumn) != null ? _defaultColumn : {};\n return {\n header: props => {\n const resolvedColumnDef = props.header.column.columnDef;\n if (resolvedColumnDef.accessorKey) {\n return resolvedColumnDef.accessorKey;\n }\n if (resolvedColumnDef.accessorFn) {\n return resolvedColumnDef.id;\n }\n return null;\n },\n // footer: props => props.header.column.id,\n cell: props => {\n var _props$renderValue$to, _props$renderValue;\n return (_props$renderValue$to = (_props$renderValue = props.renderValue()) == null || _props$renderValue.toString == null ? void 0 : _props$renderValue.toString()) != null ? _props$renderValue$to : null;\n },\n ...table._features.reduce((obj, feature) => {\n return Object.assign(obj, feature.getDefaultColumnDef == null ? void 0 : feature.getDefaultColumnDef());\n }, {}),\n ...defaultColumn\n };\n }, getMemoOptions(options, 'debugColumns', '_getDefaultColumnDef')),\n _getColumnDefs: () => table.options.columns,\n getAllColumns: memo(() => [table._getColumnDefs()], columnDefs => {\n const recurseColumns = function (columnDefs, parent, depth) {\n if (depth === void 0) {\n depth = 0;\n }\n return columnDefs.map(columnDef => {\n const column = createColumn(table, columnDef, depth, parent);\n const groupingColumnDef = columnDef;\n column.columns = groupingColumnDef.columns ? recurseColumns(groupingColumnDef.columns, column, depth + 1) : [];\n return column;\n });\n };\n return recurseColumns(columnDefs);\n }, getMemoOptions(options, 'debugColumns', 'getAllColumns')),\n getAllFlatColumns: memo(() => [table.getAllColumns()], allColumns => {\n return allColumns.flatMap(column => {\n return column.getFlatColumns();\n });\n }, getMemoOptions(options, 'debugColumns', 'getAllFlatColumns')),\n _getAllFlatColumnsById: memo(() => [table.getAllFlatColumns()], flatColumns => {\n return flatColumns.reduce((acc, column) => {\n acc[column.id] = column;\n return acc;\n }, {});\n }, getMemoOptions(options, 'debugColumns', 'getAllFlatColumnsById')),\n getAllLeafColumns: memo(() => [table.getAllColumns(), table._getOrderColumnsFn()], (allColumns, orderColumns) => {\n let leafColumns = allColumns.flatMap(column => column.getLeafColumns());\n return orderColumns(leafColumns);\n }, getMemoOptions(options, 'debugColumns', 'getAllLeafColumns')),\n getColumn: columnId => {\n const column = table._getAllFlatColumnsById()[columnId];\n if (process.env.NODE_ENV !== 'production' && !column) {\n console.error(`[Table] Column with id '${columnId}' does not exist.`);\n }\n return column;\n }\n };\n Object.assign(table, coreInstance);\n for (let index = 0; index < table._features.length; index++) {\n const feature = table._features[index];\n feature == null || feature.createTable == null || feature.createTable(table);\n }\n return table;\n}\n\nfunction getCoreRowModel() {\n return table => memo(() => [table.options.data], data => {\n const rowModel = {\n rows: [],\n flatRows: [],\n rowsById: {}\n };\n const accessRows = function (originalRows, depth, parentRow) {\n if (depth === void 0) {\n depth = 0;\n }\n const rows = [];\n for (let i = 0; i < originalRows.length; i++) {\n // This could be an expensive check at scale, so we should move it somewhere else, but where?\n // if (!id) {\n // if (process.env.NODE_ENV !== 'production') {\n // throw new Error(`getRowId expected an ID, but got ${id}`)\n // }\n // }\n\n // Make the row\n const row = createRow(table, table._getRowId(originalRows[i], i, parentRow), originalRows[i], i, depth, undefined, parentRow == null ? void 0 : parentRow.id);\n\n // Keep track of every row in a flat array\n rowModel.flatRows.push(row);\n // Also keep track of every row by its ID\n rowModel.rowsById[row.id] = row;\n // Push table row into parent\n rows.push(row);\n\n // Get the original subrows\n if (table.options.getSubRows) {\n var _row$originalSubRows;\n row.originalSubRows = table.options.getSubRows(originalRows[i], i);\n\n // Then recursively access them\n if ((_row$originalSubRows = row.originalSubRows) != null && _row$originalSubRows.length) {\n row.subRows = accessRows(row.originalSubRows, depth + 1, row);\n }\n }\n }\n return rows;\n };\n rowModel.rows = accessRows(data);\n return rowModel;\n }, getMemoOptions(table.options, 'debugTable', 'getRowModel', () => table._autoResetPageIndex()));\n}\n\nfunction getExpandedRowModel() {\n return table => memo(() => [table.getState().expanded, table.getPreExpandedRowModel(), table.options.paginateExpandedRows], (expanded, rowModel, paginateExpandedRows) => {\n if (!rowModel.rows.length || expanded !== true && !Object.keys(expanded != null ? expanded : {}).length) {\n return rowModel;\n }\n if (!paginateExpandedRows) {\n // Only expand rows at this point if they are being paginated\n return rowModel;\n }\n return expandRows(rowModel);\n }, getMemoOptions(table.options, 'debugTable', 'getExpandedRowModel'));\n}\nfunction expandRows(rowModel) {\n const expandedRows = [];\n const handleRow = row => {\n var _row$subRows;\n expandedRows.push(row);\n if ((_row$subRows = row.subRows) != null && _row$subRows.length && row.getIsExpanded()) {\n row.subRows.forEach(handleRow);\n }\n };\n rowModel.rows.forEach(handleRow);\n return {\n rows: expandedRows,\n flatRows: rowModel.flatRows,\n rowsById: rowModel.rowsById\n };\n}\n\nfunction getFacetedMinMaxValues() {\n return (table, columnId) => memo(() => {\n var _table$getColumn;\n return [(_table$getColumn = table.getColumn(columnId)) == null ? void 0 : _table$getColumn.getFacetedRowModel()];\n }, facetedRowModel => {\n if (!facetedRowModel) return undefined;\n const uniqueValues = facetedRowModel.flatRows.flatMap(flatRow => {\n var _flatRow$getUniqueVal;\n return (_flatRow$getUniqueVal = flatRow.getUniqueValues(columnId)) != null ? _flatRow$getUniqueVal : [];\n }).map(Number).filter(value => !Number.isNaN(value));\n if (!uniqueValues.length) return;\n let facetedMinValue = uniqueValues[0];\n let facetedMaxValue = uniqueValues[uniqueValues.length - 1];\n for (const value of uniqueValues) {\n if (value < facetedMinValue) facetedMinValue = value;else if (value > facetedMaxValue) facetedMaxValue = value;\n }\n return [facetedMinValue, facetedMaxValue];\n }, getMemoOptions(table.options, 'debugTable', 'getFacetedMinMaxValues'));\n}\n\nfunction filterRows(rows, filterRowImpl, table) {\n if (table.options.filterFromLeafRows) {\n return filterRowModelFromLeafs(rows, filterRowImpl, table);\n }\n return filterRowModelFromRoot(rows, filterRowImpl, table);\n}\nfunction filterRowModelFromLeafs(rowsToFilter, filterRow, table) {\n var _table$options$maxLea;\n const newFilteredFlatRows = [];\n const newFilteredRowsById = {};\n const maxDepth = (_table$options$maxLea = table.options.maxLeafRowFilterDepth) != null ? _table$options$maxLea : 100;\n const recurseFilterRows = function (rowsToFilter, depth) {\n if (depth === void 0) {\n depth = 0;\n }\n const rows = [];\n\n // Filter from children up first\n for (let i = 0; i < rowsToFilter.length; i++) {\n var _row$subRows;\n let row = rowsToFilter[i];\n const newRow = createRow(table, row.id, row.original, row.index, row.depth, undefined, row.parentId);\n newRow.columnFilters = row.columnFilters;\n if ((_row$subRows = row.subRows) != null && _row$subRows.length && depth < maxDepth) {\n newRow.subRows = recurseFilterRows(row.subRows, depth + 1);\n row = newRow;\n if (filterRow(row) && !newRow.subRows.length) {\n rows.push(row);\n newFilteredRowsById[row.id] = row;\n newFilteredFlatRows.push(row);\n continue;\n }\n if (filterRow(row) || newRow.subRows.length) {\n rows.push(row);\n newFilteredRowsById[row.id] = row;\n newFilteredFlatRows.push(row);\n continue;\n }\n } else {\n row = newRow;\n if (filterRow(row)) {\n rows.push(row);\n newFilteredRowsById[row.id] = row;\n newFilteredFlatRows.push(row);\n }\n }\n }\n return rows;\n };\n return {\n rows: recurseFilterRows(rowsToFilter),\n flatRows: newFilteredFlatRows,\n rowsById: newFilteredRowsById\n };\n}\nfunction filterRowModelFromRoot(rowsToFilter, filterRow, table) {\n var _table$options$maxLea2;\n const newFilteredFlatRows = [];\n const newFilteredRowsById = {};\n const maxDepth = (_table$options$maxLea2 = table.options.maxLeafRowFilterDepth) != null ? _table$options$maxLea2 : 100;\n\n // Filters top level and nested rows\n const recurseFilterRows = function (rowsToFilter, depth) {\n if (depth === void 0) {\n depth = 0;\n }\n // Filter from parents downward first\n\n const rows = [];\n\n // Apply the filter to any subRows\n for (let i = 0; i < rowsToFilter.length; i++) {\n let row = rowsToFilter[i];\n const pass = filterRow(row);\n if (pass) {\n var _row$subRows2;\n if ((_row$subRows2 = row.subRows) != null && _row$subRows2.length && depth < maxDepth) {\n const newRow = createRow(table, row.id, row.original, row.index, row.depth, undefined, row.parentId);\n newRow.subRows = recurseFilterRows(row.subRows, depth + 1);\n row = newRow;\n }\n rows.push(row);\n newFilteredFlatRows.push(row);\n newFilteredRowsById[row.id] = row;\n }\n }\n return rows;\n };\n return {\n rows: recurseFilterRows(rowsToFilter),\n flatRows: newFilteredFlatRows,\n rowsById: newFilteredRowsById\n };\n}\n\nfunction getFacetedRowModel() {\n return (table, columnId) => memo(() => [table.getPreFilteredRowModel(), table.getState().columnFilters, table.getState().globalFilter, table.getFilteredRowModel()], (preRowModel, columnFilters, globalFilter) => {\n if (!preRowModel.rows.length || !(columnFilters != null && columnFilters.length) && !globalFilter) {\n return preRowModel;\n }\n const filterableIds = [...columnFilters.map(d => d.id).filter(d => d !== columnId), globalFilter ? '__global__' : undefined].filter(Boolean);\n const filterRowsImpl = row => {\n // Horizontally filter rows through each column\n for (let i = 0; i < filterableIds.length; i++) {\n if (row.columnFilters[filterableIds[i]] === false) {\n return false;\n }\n }\n return true;\n };\n return filterRows(preRowModel.rows, filterRowsImpl, table);\n }, getMemoOptions(table.options, 'debugTable', 'getFacetedRowModel'));\n}\n\nfunction getFacetedUniqueValues() {\n return (table, columnId) => memo(() => {\n var _table$getColumn;\n return [(_table$getColumn = table.getColumn(columnId)) == null ? void 0 : _table$getColumn.getFacetedRowModel()];\n }, facetedRowModel => {\n if (!facetedRowModel) return new Map();\n let facetedUniqueValues = new Map();\n for (let i = 0; i < facetedRowModel.flatRows.length; i++) {\n const values = facetedRowModel.flatRows[i].getUniqueValues(columnId);\n for (let j = 0; j < values.length; j++) {\n const value = values[j];\n if (facetedUniqueValues.has(value)) {\n var _facetedUniqueValues$;\n facetedUniqueValues.set(value, ((_facetedUniqueValues$ = facetedUniqueValues.get(value)) != null ? _facetedUniqueValues$ : 0) + 1);\n } else {\n facetedUniqueValues.set(value, 1);\n }\n }\n }\n return facetedUniqueValues;\n }, getMemoOptions(table.options, 'debugTable', `getFacetedUniqueValues_${columnId}`));\n}\n\nfunction getFilteredRowModel() {\n return table => memo(() => [table.getPreFilteredRowModel(), table.getState().columnFilters, table.getState().globalFilter], (rowModel, columnFilters, globalFilter) => {\n if (!rowModel.rows.length || !(columnFilters != null && columnFilters.length) && !globalFilter) {\n for (let i = 0; i < rowModel.flatRows.length; i++) {\n rowModel.flatRows[i].columnFilters = {};\n rowModel.flatRows[i].columnFiltersMeta = {};\n }\n return rowModel;\n }\n const resolvedColumnFilters = [];\n const resolvedGlobalFilters = [];\n (columnFilters != null ? columnFilters : []).forEach(d => {\n var _filterFn$resolveFilt;\n const column = table.getColumn(d.id);\n if (!column) {\n return;\n }\n const filterFn = column.getFilterFn();\n if (!filterFn) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(`Could not find a valid 'column.filterFn' for column with the ID: ${column.id}.`);\n }\n return;\n }\n resolvedColumnFilters.push({\n id: d.id,\n filterFn,\n resolvedValue: (_filterFn$resolveFilt = filterFn.resolveFilterValue == null ? void 0 : filterFn.resolveFilterValue(d.value)) != null ? _filterFn$resolveFilt : d.value\n });\n });\n const filterableIds = (columnFilters != null ? columnFilters : []).map(d => d.id);\n const globalFilterFn = table.getGlobalFilterFn();\n const globallyFilterableColumns = table.getAllLeafColumns().filter(column => column.getCanGlobalFilter());\n if (globalFilter && globalFilterFn && globallyFilterableColumns.length) {\n filterableIds.push('__global__');\n globallyFilterableColumns.forEach(column => {\n var _globalFilterFn$resol;\n resolvedGlobalFilters.push({\n id: column.id,\n filterFn: globalFilterFn,\n resolvedValue: (_globalFilterFn$resol = globalFilterFn.resolveFilterValue == null ? void 0 : globalFilterFn.resolveFilterValue(globalFilter)) != null ? _globalFilterFn$resol : globalFilter\n });\n });\n }\n let currentColumnFilter;\n let currentGlobalFilter;\n\n // Flag the prefiltered row model with each filter state\n for (let j = 0; j < rowModel.flatRows.length; j++) {\n const row = rowModel.flatRows[j];\n row.columnFilters = {};\n if (resolvedColumnFilters.length) {\n for (let i = 0; i < resolvedColumnFilters.length; i++) {\n currentColumnFilter = resolvedColumnFilters[i];\n const id = currentColumnFilter.id;\n\n // Tag the row with the column filter state\n row.columnFilters[id] = currentColumnFilter.filterFn(row, id, currentColumnFilter.resolvedValue, filterMeta => {\n row.columnFiltersMeta[id] = filterMeta;\n });\n }\n }\n if (resolvedGlobalFilters.length) {\n for (let i = 0; i < resolvedGlobalFilters.length; i++) {\n currentGlobalFilter = resolvedGlobalFilters[i];\n const id = currentGlobalFilter.id;\n // Tag the row with the first truthy global filter state\n if (currentGlobalFilter.filterFn(row, id, currentGlobalFilter.resolvedValue, filterMeta => {\n row.columnFiltersMeta[id] = filterMeta;\n })) {\n row.columnFilters.__global__ = true;\n break;\n }\n }\n if (row.columnFilters.__global__ !== true) {\n row.columnFilters.__global__ = false;\n }\n }\n }\n const filterRowsImpl = row => {\n // Horizontally filter rows through each column\n for (let i = 0; i < filterableIds.length; i++) {\n if (row.columnFilters[filterableIds[i]] === false) {\n return false;\n }\n }\n return true;\n };\n\n // Filter final rows using all of the active filters\n return filterRows(rowModel.rows, filterRowsImpl, table);\n }, getMemoOptions(table.options, 'debugTable', 'getFilteredRowModel', () => table._autoResetPageIndex()));\n}\n\nfunction getGroupedRowModel() {\n return table => memo(() => [table.getState().grouping, table.getPreGroupedRowModel()], (grouping, rowModel) => {\n if (!rowModel.rows.length || !grouping.length) {\n rowModel.rows.forEach(row => {\n row.depth = 0;\n row.parentId = undefined;\n });\n return rowModel;\n }\n\n // Filter the grouping list down to columns that exist\n const existingGrouping = grouping.filter(columnId => table.getColumn(columnId));\n const groupedFlatRows = [];\n const groupedRowsById = {};\n // const onlyGroupedFlatRows: Row[] = [];\n // const onlyGroupedRowsById: Record<RowId, Row> = {};\n // const nonGroupedFlatRows: Row[] = [];\n // const nonGroupedRowsById: Record<RowId, Row> = {};\n\n // Recursively group the data\n const groupUpRecursively = function (rows, depth, parentId) {\n if (depth === void 0) {\n depth = 0;\n }\n // Grouping depth has been been met\n // Stop grouping and simply rewrite thd depth and row relationships\n if (depth >= existingGrouping.length) {\n return rows.map(row => {\n row.depth = depth;\n groupedFlatRows.push(row);\n groupedRowsById[row.id] = row;\n if (row.subRows) {\n row.subRows = groupUpRecursively(row.subRows, depth + 1, row.id);\n }\n return row;\n });\n }\n const columnId = existingGrouping[depth];\n\n // Group the rows together for this level\n const rowGroupsMap = groupBy(rows, columnId);\n\n // Perform aggregations for each group\n const aggregatedGroupedRows = Array.from(rowGroupsMap.entries()).map((_ref, index) => {\n let [groupingValue, groupedRows] = _ref;\n let id = `${columnId}:${groupingValue}`;\n id = parentId ? `${parentId}>${id}` : id;\n\n // First, Recurse to group sub rows before aggregation\n const subRows = groupUpRecursively(groupedRows, depth + 1, id);\n subRows.forEach(subRow => {\n subRow.parentId = id;\n });\n\n // Flatten the leaf rows of the rows in this group\n const leafRows = depth ? flattenBy(groupedRows, row => row.subRows) : groupedRows;\n const row = createRow(table, id, leafRows[0].original, index, depth, undefined, parentId);\n Object.assign(row, {\n groupingColumnId: columnId,\n groupingValue,\n subRows,\n leafRows,\n getValue: columnId => {\n // Don't aggregate columns that are in the grouping\n if (existingGrouping.includes(columnId)) {\n if (row._valuesCache.hasOwnProperty(columnId)) {\n return row._valuesCache[columnId];\n }\n if (groupedRows[0]) {\n var _groupedRows$0$getVal;\n row._valuesCache[columnId] = (_groupedRows$0$getVal = groupedRows[0].getValue(columnId)) != null ? _groupedRows$0$getVal : undefined;\n }\n return row._valuesCache[columnId];\n }\n if (row._groupingValuesCache.hasOwnProperty(columnId)) {\n return row._groupingValuesCache[columnId];\n }\n\n // Aggregate the values\n const column = table.getColumn(columnId);\n const aggregateFn = column == null ? void 0 : column.getAggregationFn();\n if (aggregateFn) {\n row._groupingValuesCache[columnId] = aggregateFn(columnId, leafRows, groupedRows);\n return row._groupingValuesCache[columnId];\n }\n }\n });\n subRows.forEach(subRow => {\n groupedFlatRows.push(subRow);\n groupedRowsById[subRow.id] = subRow;\n // if (subRow.getIsGrouped?.()) {\n // onlyGroupedFlatRows.push(subRow);\n // onlyGroupedRowsById[subRow.id] = subRow;\n // } else {\n // nonGroupedFlatRows.push(subRow);\n // nonGroupedRowsById[subRow.id] = subRow;\n // }\n });\n return row;\n });\n return aggregatedGroupedRows;\n };\n const groupedRows = groupUpRecursively(rowModel.rows, 0);\n groupedRows.forEach(subRow => {\n groupedFlatRows.push(subRow);\n groupedRowsById[subRow.id] = subRow;\n // if (subRow.getIsGrouped?.()) {\n // onlyGroupedFlatRows.push(subRow);\n // onlyGroupedRowsById[subRow.id] = subRow;\n // } else {\n // nonGroupedFlatRows.push(subRow);\n // nonGroupedRowsById[subRow.id] = subRow;\n // }\n });\n return {\n rows: groupedRows,\n flatRows: groupedFlatRows,\n rowsById: groupedRowsById\n };\n }, getMemoOptions(table.options, 'debugTable', 'getGroupedRowModel', () => {\n table._queue(() => {\n table._autoResetExpanded();\n table._autoResetPageIndex();\n });\n }));\n}\nfunction groupBy(rows, columnId) {\n const groupMap = new Map();\n return rows.reduce((map, row) => {\n const resKey = `${row.getGroupingValue(columnId)}`;\n const previous = map.get(resKey);\n if (!previous) {\n map.set(resKey, [row]);\n } else {\n previous.push(row);\n }\n return map;\n }, groupMap);\n}\n\nfunction getPaginationRowModel(opts) {\n return table => memo(() => [table.getState().pagination, table.getPrePaginationRowModel(), table.options.paginateExpandedRows ? undefined : table.getState().expanded], (pagination, rowModel) => {\n if (!rowModel.rows.length) {\n return rowModel;\n }\n const {\n pageSize,\n pageIndex\n } = pagination;\n let {\n rows,\n flatRows,\n rowsById\n } = rowModel;\n const pageStart = pageSize * pageIndex;\n const pageEnd = pageStart + pageSize;\n rows = rows.slice(pageStart, pageEnd);\n let paginatedRowModel;\n if (!table.options.paginateExpandedRows) {\n paginatedRowModel = expandRows({\n rows,\n flatRows,\n rowsById\n });\n } else {\n paginatedRowModel = {\n rows,\n flatRows,\n rowsById\n };\n }\n paginatedRowModel.flatRows = [];\n const handleRow = row => {\n paginatedRowModel.flatRows.push(row);\n if (row.subRows.length) {\n row.subRows.forEach(handleRow);\n }\n };\n paginatedRowModel.rows.forEach(handleRow);\n return paginatedRowModel;\n }, getMemoOptions(table.options, 'debugTable', 'getPaginationRowModel'));\n}\n\nfunction getSortedRowModel() {\n return table => memo(() => [table.getState().sorting, table.getPreSortedRowModel()], (sorting, rowModel) => {\n if (!rowModel.rows.length || !(sorting != null && sorting.length)) {\n return rowModel;\n }\n const sortingState = table.getState().sorting;\n const sortedFlatRows = [];\n\n // Filter out sortings that correspond to non existing columns\n const availableSorting = sortingState.filter(sort => {\n var _table$getColumn;\n return (_table$getColumn = table.getColumn(sort.id)) == null ? void 0 : _table$getColumn.getCanSort();\n });\n const columnInfoById = {};\n availableSorting.forEach(sortEntry => {\n const column = table.getColumn(sortEntry.id);\n if (!column) return;\n columnInfoById[sortEntry.id] = {\n sortUndefined: column.columnDef.sortUndefined,\n invertSorting: column.columnDef.invertSorting,\n sortingFn: column.getSortingFn()\n };\n });\n const sortData = rows => {\n // This will also perform a stable sorting using the row index\n // if needed.\n const sortedData = rows.map(row => ({\n ...row\n }));\n sortedData.sort((rowA, rowB) => {\n for (let i = 0; i < availableSorting.length; i += 1) {\n var _sortEntry$desc;\n const sortEntry = availableSorting[i];\n const columnInfo = columnInfoById[sortEntry.id];\n const sortUndefined = columnInfo.sortUndefined;\n const isDesc = (_sortEntry$desc = sortEntry == null ? void 0 : sortEntry.desc) != null ? _sortEntry$desc : false;\n let sortInt = 0;\n\n // All sorting ints should always return in ascending order\n if (sortUndefined) {\n const aValue = rowA.getValue(sortEntry.id);\n const bValue = rowB.getValue(sortEntry.id);\n const aUndefined = aValue === undefined;\n const bUndefined = bValue === undefined;\n if (aUndefined || bUndefined) {\n if (sortUndefined === 'first') return aUndefined ? -1 : 1;\n if (sortUndefined === 'last') return aUndefined ? 1 : -1;\n sortInt = aUndefined && bUndefined ? 0 : aUndefined ? sortUndefined : -sortUndefined;\n }\n }\n if (sortInt === 0) {\n sortInt = columnInfo.sortingFn(rowA, rowB, sortEntry.id);\n }\n\n // If sorting is non-zero, take care of desc and inversion\n if (sortInt !== 0) {\n if (isDesc) {\n sortInt *= -1;\n }\n if (columnInfo.invertSorting) {\n sortInt *= -1;\n }\n return sortInt;\n }\n }\n return rowA.index - rowB.index;\n });\n\n // If there are sub-rows, sort them\n sortedData.forEach(row => {\n var _row$subRows;\n sortedFlatRows.push(row);\n if ((_row$subRows = row.subRows) != null && _row$subRows.length) {\n row.subRows = sortData(row.subRows);\n }\n });\n return sortedData;\n };\n return {\n rows: sortData(rowModel.rows),\n flatRows: sortedFlatRows,\n rowsById: rowModel.rowsById\n };\n }, getMemoOptions(table.options, 'debugTable', 'getSortedRowModel', () => table._autoResetPageIndex()));\n}\n\nexport { ColumnFaceting, ColumnFiltering, ColumnGrouping, ColumnOrdering, ColumnPinning, ColumnSizing, ColumnVisibility, GlobalFaceting, GlobalFiltering, Headers, RowExpanding, RowPagination, RowPinning, RowSelection, RowSorting, _getVisibleLeafColumns, aggregationFns, buildHeaderGroups, createCell, createColumn, createColumnHelper, createRow, createTable, defaultColumnSizing, expandRows, filterFns, flattenBy, functionalUpdate, getCoreRowModel, getExpandedRowModel, getFacetedMinMaxValues, getFacetedRowModel, getFacetedUniqueValues, getFilteredRowModel, getGroupedRowModel, getMemoOptions, getPaginationRowModel, getSortedRowModel, isFunction, isNumberArray, isRowSelected, isSubRowSelected, makeStateUpdater, memo, noop, orderColumns, passiveEventSupported, reSplitAlphaNumeric, selectRowsFn, shouldAutoRemoveFilter, sortingFns };\n//# sourceMappingURL=index.mjs.map\n","/**\n * react-table\n *\n * Copyright (c) TanStack\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE.md file in the root directory of this source tree.\n *\n * @license MIT\n */\nimport * as React from 'react';\nimport { createTable } from '@tanstack/table-core';\nexport * from '@tanstack/table-core';\n\n//\n\n/**\n * If rendering headers, cells, or footers with custom markup, use flexRender instead of `cell.getValue()` or `cell.renderValue()`.\n */\nfunction flexRender(Comp, props) {\n return !Comp ? null : isReactComponent(Comp) ? /*#__PURE__*/React.createElement(Comp, props) : Comp;\n}\nfunction isReactComponent(component) {\n return isClassComponent(component) || typeof component === 'function' || isExoticComponent(component);\n}\nfunction isClassComponent(component) {\n return typeof component === 'function' && (() => {\n const proto = Object.getPrototypeOf(component);\n return proto.prototype && proto.prototype.isReactComponent;\n })();\n}\nfunction isExoticComponent(component) {\n return typeof component === 'object' && typeof component.$$typeof === 'symbol' && ['react.memo', 'react.forward_ref'].includes(component.$$typeof.description);\n}\nfunction useReactTable(options) {\n // Compose in the generic options to the user options\n const resolvedOptions = {\n state: {},\n // Dummy state\n onStateChange: () => {},\n // noop\n renderFallbackValue: null,\n ...options\n };\n\n // Create a new table and store it in state\n const [tableRef] = React.useState(() => ({\n current: createTable(resolvedOptions)\n }));\n\n // By default, manage table state here using the table's initial state\n const [state, setState] = React.useState(() => tableRef.current.initialState);\n\n // Compose the default state above with any user state. This will allow the user\n // to only control a subset of the state if desired.\n tableRef.current.setOptions(prev => ({\n ...prev,\n ...options,\n state: {\n ...state,\n ...options.state\n },\n // Similarly, we'll maintain both our internal state and any user-provided\n // state.\n onStateChange: updater => {\n setState(updater);\n options.onStateChange == null || options.onStateChange(updater);\n }\n }));\n return tableRef.current;\n}\n\nexport { flexRender, useReactTable };\n//# sourceMappingURL=index.mjs.map\n","/**\n * `data-anv-part` values for DataTable internals. Scope by the consumer's\n * `data-cy` (or other `data-*`) on the root, then `data-row-id` /\n * `data-anv-column-id`.\n */\nexport const PARTS = {\n row: \"row\",\n cell: \"cell\",\n sortToggle: \"sort-toggle\",\n selectCheckbox: \"select-checkbox\",\n selectAllCheckbox: \"select-all-checkbox\",\n expandButton: \"expand-button\",\n expandAllButton: \"expand-all-button\",\n resizeHandle: \"resize-handle\",\n editableInput: \"editable-input\",\n} as const;\n","import { createContext } from \"react\";\nimport type { CellPosition } from \"../../../../internal/types\";\n\nexport type DTFocusState = {\n focusedCell: CellPosition | null;\n /** Cell that receives focus when the grid root is entered. */\n focusRestorePoint: CellPosition;\n};\n\nexport type DTFocusStateContextValue = {\n getFocusedCell: () => CellPosition | null;\n};\n\nexport type DTFocusCellAction = {\n type: \"FOCUS_CELL\";\n payload: {\n cellPosition: CellPosition;\n };\n};\n\nexport type DTFocusTableAction = {\n type: \"FOCUS_TABLE\";\n};\n\nexport type DTFocusMoveAction = {\n type: \"MOVE_FOCUS\";\n payload: {\n direction: \"up\" | \"down\" | \"left\" | \"right\";\n };\n};\n\nexport type DTFocusJumpAction = {\n type: \"JUMP_FOCUS\";\n payload: {\n direction: \"up\" | \"down\" | \"left\" | \"right\";\n };\n};\n\nexport type DTFocusCellManuallyAction = {\n type: \"FOCUS_CELL_MANUALLY\";\n payload: {\n cellPosition: CellPosition;\n };\n};\n\nexport type DTBlurAction = {\n type: \"BLUR\";\n};\n\nexport type DTFocusAction =\n | DTFocusCellAction\n | DTFocusTableAction\n | DTFocusMoveAction\n | DTFocusJumpAction\n | DTBlurAction\n | DTFocusCellManuallyAction;\n\nexport const DTFocusStateContext = createContext<DTFocusStateContextValue>({\n getFocusedCell: () => null,\n});\nexport const DTFocusDispatchContext = createContext<\n React.Dispatch<DTFocusAction>\n>(() => {});\n","import { useCallback, useContext } from \"react\";\nimport { DTFocusDispatchContext } from \"./DTFocusContext\";\nimport type { CellPosition } from \"../../../../internal/types\";\n\n/** Returns focus commands from the nearest data-table focus provider. */\nexport function useDTFocusDispatchContext() {\n const dispatch = useContext(DTFocusDispatchContext);\n\n const focusTableGenerally = useCallback(() => {\n dispatch({\n type: \"FOCUS_TABLE\",\n });\n }, [dispatch]);\n\n const moveFocusToCell = useCallback(\n (cellPosition: CellPosition) => {\n dispatch({\n type: \"FOCUS_CELL\",\n payload: { cellPosition },\n });\n },\n [dispatch],\n );\n\n const moveFocus = useCallback(\n (direction: \"up\" | \"down\" | \"left\" | \"right\") => {\n dispatch({\n type: \"MOVE_FOCUS\",\n payload: { direction },\n });\n },\n [dispatch],\n );\n\n const jumpFocus = useCallback(\n (direction: \"up\" | \"down\" | \"left\" | \"right\") => {\n dispatch({\n type: \"JUMP_FOCUS\",\n payload: { direction },\n });\n },\n [dispatch],\n );\n\n const blur = useCallback(() => {\n dispatch({\n type: \"BLUR\",\n });\n }, [dispatch]);\n\n return {\n focusTableGenerally,\n moveFocusToCell,\n moveFocus,\n jumpFocus,\n blur,\n dispatch,\n };\n}\n","import type { ComponentPropsWithoutRef } from \"react\";\nimport cx from \"classnames\";\n\nimport { useDTFocusDispatchContext } from \"../DataTable/internal/context/focus/useDTFocusDispatchContext\";\n\nimport styles from \"./TableBase.module.scss\";\n\nexport type SimpleTableBaseProps = ComponentPropsWithoutRef<\"table\">;\n\nexport type DataTableBaseProps = Omit<\n ComponentPropsWithoutRef<\"div\">,\n \"aria-colcount\" | \"aria-rowcount\"\n> & {\n /** Total leaf-column count exposed through `aria-colcount`. */\n colCount: number;\n /** Total header, body, and footer row count exposed through `aria-rowcount`. */\n rowCount: number;\n /** Uses tree-grid semantics when rows can contain child rows. */\n hasSubRows?: boolean;\n};\n\n/**\n * Selects native table markup or an ARIA grid from the corresponding prop\n * branch.\n */\nexport type TableBaseProps =\n | ({\n /** Renders a native `table`. */\n type: \"simple\";\n } & SimpleTableBaseProps)\n | ({\n /** Renders a focus-managed `grid` or `treegrid`. */\n type: \"data-table\";\n } & DataTableBaseProps);\n\nconst SimpleTableBase = ({\n children,\n className,\n ...rest\n}: SimpleTableBaseProps) => {\n const tableBaseClassNames = cx(className, styles[\"table-base\"]);\n return (\n <table\n data-anv=\"simple-table-base\"\n {...rest}\n className={tableBaseClassNames}\n >\n {children}\n </table>\n );\n};\n\nconst DataTableBase = ({\n children,\n className,\n colCount,\n rowCount,\n hasSubRows,\n ...rest\n}: DataTableBaseProps) => {\n const tableBaseClassNames = cx(className, styles[\"data-table-base\"]);\n const { focusTableGenerally, blur, moveFocusToCell } =\n useDTFocusDispatchContext();\n\n const handleBlur = (event: React.FocusEvent<HTMLDivElement>) => {\n if (!event.currentTarget.contains(event.relatedTarget as Node)) {\n blur();\n }\n };\n\n const handleFocus = (event: React.FocusEvent<HTMLDivElement>) => {\n if (event.target === event.currentTarget) {\n // Re-enter the grid at the roving-tabindex restore point.\n focusTableGenerally();\n return;\n }\n // Nested controls identify their owning cell so re-entry resumes there.\n const targetEl = event.target as HTMLElement;\n const cellEl = targetEl.closest<HTMLElement>(\"[data-cell-pos]\");\n const cellPosAttr = cellEl?.getAttribute(\"data-cell-pos\");\n if (cellPosAttr) {\n const [rowIndex, columnIndex] = cellPosAttr.split(\",\").map(Number);\n if (!Number.isNaN(rowIndex) && !Number.isNaN(columnIndex)) {\n moveFocusToCell({ rowIndex, columnIndex });\n }\n }\n };\n\n return (\n <div\n data-anv=\"data-table-base\"\n {...rest}\n className={tableBaseClassNames}\n aria-colcount={colCount}\n aria-rowcount={rowCount}\n role={hasSubRows ? \"treegrid\" : \"grid\"}\n tabIndex={0}\n onFocus={handleFocus}\n onBlur={handleBlur}\n >\n {children}\n </div>\n );\n};\n\n/**\n * Structural root for a native table or focus-managed ARIA data grid.\n */\nexport const TableBase = ({ type, ...rest }: TableBaseProps) => {\n if (type === \"simple\") {\n return <SimpleTableBase {...rest} />;\n }\n\n if (\"rowCount\" in rest && \"colCount\" in rest) {\n return (\n <DataTableBase\n {...rest}\n rowCount={rest.rowCount}\n colCount={rest.colCount}\n />\n );\n }\n};\n","import type { ComponentPropsWithoutRef } from \"react\";\nimport cx from \"classnames\";\n\nimport styles from \"./TableBody.module.scss\";\n\n/**\n * Selects native table-body markup or an ARIA row group from the corresponding\n * prop branch.\n */\nexport type TableBodyProps =\n | ({\n /** Renders a native `tbody`. */\n type: \"simple\";\n } & ComponentPropsWithoutRef<\"tbody\">)\n | ({\n /** Renders a `rowgroup` for an ARIA grid. */\n type: \"data-table\";\n } & ComponentPropsWithoutRef<\"div\">);\n\n/**\n * Body region for a native table or ARIA data grid.\n */\nexport function TableBody({ type, children, ...rest }: TableBodyProps) {\n const classes = cx(styles[\"table-body\"], rest.className);\n const Element = type === \"simple\" ? \"tbody\" : \"div\";\n\n return (\n <Element\n {...rest}\n data-anv=\"table-body\"\n className={classes}\n role={type === \"simple\" ? undefined : \"rowgroup\"}\n >\n {children}\n </Element>\n );\n}\n","import type { Column } from \"@tanstack/react-table\";\nimport cx from \"classnames\";\nimport styles from \"../base/cells/TableCells.module.scss\";\n\n/**\n * Returns first/last edge classes for a pinned column so CSS can draw the\n * pinned region's overflow affordance.\n */\nexport const getCommonPinningClasses = <T>(\n column: Column<T>,\n): string | undefined => {\n const isPinned = column.getIsPinned();\n if (!isPinned) return undefined;\n\n return cx({\n [styles[\"first-pinned-left-column\"]]:\n isPinned === \"left\" && column.getIsFirstColumn(\"left\"),\n [styles[\"last-pinned-left-column\"]]:\n isPinned === \"left\" && column.getIsLastColumn(\"left\"),\n [styles[\"first-pinned-right-column\"]]:\n isPinned === \"right\" && column.getIsFirstColumn(\"right\"),\n [styles[\"last-pinned-right-column\"]]:\n isPinned === \"right\" && column.getIsLastColumn(\"right\"),\n });\n};\n","import styles from \"./DataTableCellAffordance.module.scss\";\n\n/** Host class that reveals {@link DataTableCellAffordance} on hover or focus. */\nexport const dataTableCellAffordanceHostClassName =\n styles[\"data-table-body-cell-affordance-host\"];\n","import type { ReactNode } from \"react\";\nimport cx from \"classnames\";\n\nimport styles from \"./DataTableCellAffordance.module.scss\";\n\nexport type DataTableCellAffordanceProps = {\n children: ReactNode;\n /**\n * Lets the overlay receive pointer events. Defaults to `false` (display-only\n * icons such as edit).\n */\n interactive?: boolean;\n};\n\n/**\n * Decorative overlay shown on a host cell's hover/focus. Hidden from the\n * accessibility tree.\n */\nexport function DataTableCellAffordance({\n children,\n interactive = false,\n}: DataTableCellAffordanceProps) {\n return (\n <span\n className={cx(styles[\"data-table-body-cell-affordance-container\"], {\n [styles[\"data-table-body-cell-affordance-container-interactive\"]]:\n interactive,\n })}\n aria-hidden\n >\n {children}\n </span>\n );\n}\n","import { Icon } from \"../../../../../../components\";\nimport { DataTableCellAffordance } from \"../DataTableCellAffordance\";\n\nimport EditIcon from \"../../../../../../../public/assets/icons/material/round/edit.svg\";\n\n/** Decorative edit affordance; not a separate control. */\nexport const DataTableEditableCellEditIcon = () => {\n return (\n <DataTableCellAffordance>\n <Icon svg={EditIcon} size=\"small\" color=\"subtle\" />\n </DataTableCellAffordance>\n );\n};\n","import { type ComponentPropsWithoutRef, forwardRef } from \"react\";\nimport cx from \"classnames\";\n\nimport type { CommonTableCellProps } from \"./types\";\n\nimport styles from \"./TableCells.module.scss\";\n\nexport type SimpleTableBodyCellProps = ComponentPropsWithoutRef<\"td\"> &\n CommonTableCellProps;\n\nexport type DataTableBodyCellProps = ComponentPropsWithoutRef<\"div\"> &\n CommonTableCellProps;\n\n/**\n * Selects a native or ARIA body cell from the corresponding prop branch.\n */\nexport type TableBodyCellProps =\n | ({\n /** Renders a native `td`. */\n type: \"simple\";\n } & SimpleTableBodyCellProps)\n | ({\n /** Renders a `gridcell` for an ARIA grid. */\n type: \"data-table\";\n } & DataTableBodyCellProps);\n\n/**\n * Body cell for a native table or ARIA data grid.\n */\nexport const TableBodyCell = forwardRef<\n HTMLTableCellElement | HTMLDivElement,\n TableBodyCellProps\n>(({ type, children, className, isExpandCell, isSelectCell, ...rest }, ref) => {\n const classes = cx(styles[\"table-body-cell\"], className, {\n [styles[\"table-cell-internal-expand\"]]: isExpandCell,\n [styles[\"table-cell-internal-select\"]]: isSelectCell,\n });\n const CellElement = type === \"simple\" ? \"td\" : \"div\";\n\n return (\n <CellElement\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- could be table cell or div\n ref={ref as any}\n data-anv=\"table-body-cell\"\n {...rest}\n className={classes}\n role={type === \"simple\" ? undefined : \"gridcell\"}\n >\n {children}\n </CellElement>\n );\n});\n\nTableBodyCell.displayName = \"TableBodyCell\";\n","import type { CellPosition } from \"../../../internal/types\";\n\nexport function formatCellPositionString(cellPosition: CellPosition): string {\n return `${cellPosition.rowIndex},${cellPosition.columnIndex}`;\n}\n\nexport function areCellPositionsEqual(\n pos1: CellPosition | null | undefined,\n pos2: CellPosition | null | undefined,\n): boolean {\n if (!pos1 || !pos2) return false;\n return (\n pos1.rowIndex === pos2.rowIndex && pos1.columnIndex === pos2.columnIndex\n );\n}\n","import type { Cell } from \"@tanstack/react-table\";\nimport type {\n ColumnDef,\n ColumnReadRenderResult,\n TableRow,\n} from \"../../../types\";\n\n/**\n * Leaf column `id` from `meta.columnDef` when present, else TanStack's string\n * `column.id`.\n */\nexport function getColumnId<T>(cell: Cell<T, unknown>): keyof T {\n const columnDef = cell.column.columnDef.meta?.columnDef as\n | ColumnDef<T>\n | undefined;\n if (columnDef?.id) {\n return columnDef.id as keyof T;\n }\n return cell.column.id as keyof T;\n}\n\n/**\n * Cell value as `T[K]`. TanStack's `Cell` type does not keep `T[K]` at the\n * table instance, so this is an assertion.\n */\nexport function getCellValue<T, K extends keyof T>(\n cell: Cell<T, unknown>,\n _columnId: K,\n): T[K] {\n const value = cell.getValue();\n return value as T[K];\n}\n\nexport function getCellReadRenderResult<T>(\n cell: Cell<T, unknown>,\n): ColumnReadRenderResult | undefined {\n return cell.column.columnDef.meta?.getReadRenderResult?.(cell.getValue(), {\n row: cell.row.original as TableRow<T>,\n depth: cell.row.depth,\n });\n}\n\nexport function getCellReadRenderRawString<T>(\n cell: Cell<T, unknown>,\n): string | undefined {\n return getCellReadRenderResult(cell)?.rawString;\n}\n\n/**\n * `editConfig.onChange` narrowed to `T[K]`. The config type is the column-id\n * union, which is wider than one cell.\n */\nexport function getCellOnChange<T, K extends keyof T>(\n cell: Cell<T, unknown>,\n _columnId: K,\n): ((value: T[K], rowId: string) => void) | undefined {\n const meta = cell.column.columnDef.meta;\n const onChange = (meta?.editConfig as { onChange?: unknown } | undefined)\n ?.onChange;\n return onChange as ((value: T[K], rowId: string) => void) | undefined;\n}\n\n/**\n * Warns when a cell value's runtime type does not match `editMode`.\n */\nexport function logWarningForInvalidCellValueType({\n columnId,\n editMode,\n expectedType,\n receivedType,\n}: {\n columnId: string;\n editMode: string;\n expectedType: string;\n receivedType: string;\n}): void {\n console.warn(\n `[DataTable] Column \"${columnId}\" with editMode \"${editMode}\" expects ${expectedType}, received ${receivedType}.`,\n );\n}\n","import { type CSSProperties, useMemo } from \"react\";\nimport type { Column } from \"@tanstack/react-table\";\n\n/**\n * Positions a pinned column at TanStack's accumulated edge offset. Column\n * width remains owned by the table's CSS grid.\n */\nexport const getCommonPinningStyles = <T>(column: Column<T>): CSSProperties => {\n const isPinned = column.getIsPinned();\n\n return {\n left: isPinned === \"left\" ? `${column.getStart(\"left\")}px` : undefined,\n right: isPinned === \"right\" ? `${column.getAfter(\"right\")}px` : undefined,\n position: isPinned ? \"sticky\" : \"relative\",\n zIndex: isPinned ? 1 : 0,\n };\n};\n\n// Shared frozen object so unpinned cells keep a stable style identity.\nconst EMPTY_PINNING_STYLES: CSSProperties = Object.freeze({\n left: undefined,\n right: undefined,\n position: \"relative\",\n zIndex: 0,\n});\n\n/**\n * Sticky edge offsets for pinned columns; unpinned cells share one frozen\n * style object.\n */\nexport const useCommonPinningStyles = <T>(column: Column<T>): CSSProperties => {\n const isPinned = column.getIsPinned();\n const left = column.getStart(\"left\");\n const right = column.getAfter(\"right\");\n\n return useMemo(() => {\n if (!isPinned) return EMPTY_PINNING_STYLES;\n return {\n left: isPinned === \"left\" ? `${left}px` : undefined,\n right: isPinned === \"right\" ? `${right}px` : undefined,\n position: \"sticky\",\n zIndex: 1,\n };\n }, [left, right, isPinned]);\n};\n","import { createContext } from \"react\";\n\nexport type DataTableRowClickContextValue = {\n /** Enables row-click affordances when the consumer supplied a handler. */\n isRowClickEnabled: boolean;\n /** Invokes the latest callback when present unless the row is read-only. */\n clickRow: (rowId: string) => void;\n};\n\nexport const DataTableRowClickContext =\n createContext<DataTableRowClickContextValue>({\n isRowClickEnabled: false,\n clickRow: () => {},\n });\n","import { useContext } from \"react\";\nimport { DataTableRowClickContext } from \"./DataTableRowClickContext\";\n\n/** Defaults to disabled + no-op `clickRow` when no provider is mounted. */\nexport function useDataTableRowClick() {\n return useContext(DataTableRowClickContext);\n}\n","/** Includes `[tabindex]`, which also matches negative values. */\nconst FOCUSABLE_SELECTOR = [\n \"button:not([disabled])\",\n \"a[href]\",\n 'input:not([disabled]):not([type=\"hidden\"])',\n \"select:not([disabled])\",\n \"textarea:not([disabled])\",\n \"[tabindex]\",\n].join(\",\");\n\n/**\n * Marks a descendant this cell owns so it can still be found after nav mode\n * sets `tabIndex=-1`.\n */\nexport const CELL_MANAGED_ATTR = \"data-anv-cell-managed-tabindex\";\n\n/** Tabbable descendants not yet under this cell's tabindex control. */\nexport function getUnmanagedTabbables(cellEl: HTMLElement): HTMLElement[] {\n return Array.from(\n cellEl.querySelectorAll<HTMLElement>(FOCUSABLE_SELECTOR),\n ).filter((el) => !el.hasAttribute(CELL_MANAGED_ATTR) && el.tabIndex >= 0);\n}\n\n/** Owned descendants, including nav-mode `tabIndex=-1` nodes a tabbable query would miss. */\nexport function getManagedInteractives(cellEl: HTMLElement): HTMLElement[] {\n return Array.from(\n cellEl.querySelectorAll<HTMLElement>(`[${CELL_MANAGED_ATTR}]`),\n );\n}\n","/**\n * Expand-arrow column.\n */\nexport const INTERNAL_ROW_ACTION_PRIMARY_COLUMN_ID =\n \"a2-table-internal-row-action-primary\";\n\n/**\n * Row-selection checkbox column.\n */\nexport const INTERNAL_ROW_ACTION_SECONDARY_COLUMN_ID =\n \"a2-table-internal-row-action-secondary\";\n\n/**\n * Per-row height for the virtualizer `estimateSize` and the first-load spacer\n * (`rowsPerPage * this`, then clamped). Measurement replaces it after first\n * paint, so it only shapes the pre-measurement scroll range and spacer.\n */\nexport const DEFAULT_ESTIMATED_ROW_HEIGHT = 35;\n\n/**\n * Ceiling for the first-load loading spacer. Uncapped `rowsPerPage * estimated\n * row height` is taller than the viewport at large page sizes and leaves a\n * tall empty spinner well.\n */\nexport const MAX_INITIAL_LOADING_HEIGHT = 400;\n\n/**\n * Floor for the first-load loading spacer so a small page size still contains\n * the centered medium Spinner.\n */\nexport const MIN_INITIAL_LOADING_HEIGHT = 80;\n\n/**\n * First-load spacer height when `rowsPerPage` is not a positive number.\n * `paginationObject?.rowsPerPage ?? 25` only replaces nullish values, so `0`,\n * negatives, and `NaN` skip the estimated-height clamp and use this instead.\n */\nexport const DEFAULT_INITIAL_LOADING_HEIGHT = 200;\n","import { useCallback, useLayoutEffect, useRef, useState } from \"react\";\nimport cx from \"classnames\";\n\nimport { TableBodyCell } from \"../../../base/cells/TableBodyCell\";\nimport type { DataTableBodyCellProps as BaseDataTableBodyCellProps } from \"../../../base/cells/TableBodyCell\";\n\nimport styles from \"./DataTableCells.module.scss\";\nimport baseTableCellStyles from \"../../../base/cells/TableCells.module.scss\";\nimport type { Cell } from \"@tanstack/react-table\";\nimport { useCommonPinningStyles } from \"../../../internal/getCommonPinningStyles\";\nimport { useDTFocusDispatchContext } from \"../context/focus/useDTFocusDispatchContext\";\nimport { useDataTableRowClick } from \"../context/rowClick/useDataTableRowClick\";\nimport { formatCellPositionString } from \"../util/cellPositionHelpers\";\nimport {\n CELL_MANAGED_ATTR,\n getManagedInteractives,\n getUnmanagedTabbables,\n} from \"../util/getCellInteractives\";\nimport type { CellPosition } from \"../../../internal/types\";\nimport {\n INTERNAL_ROW_ACTION_PRIMARY_COLUMN_ID,\n INTERNAL_ROW_ACTION_SECONDARY_COLUMN_ID,\n} from \"../constants\";\nimport type { TableRow } from \"../../../types\";\n\nexport type DataTableBodyImmutableCellProps<T> = Omit<\n BaseDataTableBodyCellProps,\n \"onChange\"\n> & {\n /** Coordinates used by the grid's roving-focus manager. */\n cellPosition: CellPosition;\n /** Supplies row and column state for actions and validation styling. */\n cell: Cell<T, unknown>;\n};\n\n/**\n * Read-only ARIA grid cell with roving navigation and keyboard activation for\n * row actions or embedded controls.\n */\nexport function DataTableBodyImmutableCell<T>(\n props: DataTableBodyImmutableCellProps<T>,\n) {\n const { cell, cellPosition, children, ...rest } = props;\n\n const cellRef = useRef<HTMLTableCellElement>(null);\n\n const column = cell.column;\n\n const rowCanExpand = cell.row.getCanExpand();\n const rowIsExpanded = cell.row.getIsExpanded();\n const toggleRowExpanded = cell.row.toggleExpanded;\n\n const columnId = column.id;\n const isPrimaryActionColumn =\n columnId === INTERNAL_ROW_ACTION_PRIMARY_COLUMN_ID;\n const isSecondaryActionColumn =\n columnId === INTERNAL_ROW_ACTION_SECONDARY_COLUMN_ID;\n const isNestedRow = !!cell.row.getParentRow()?.getCanExpand();\n\n const isExpandCell = isPrimaryActionColumn && rowCanExpand;\n const isSelectCell =\n (isPrimaryActionColumn && isNestedRow && cell.row.getCanSelect()) ||\n (isSecondaryActionColumn && !isNestedRow);\n\n const meta = (cell.row.original as TableRow<T>).meta;\n const cellError = meta?.errors?.[column.id as keyof T];\n const cellWarning = meta?.warnings?.[column.id as keyof T];\n\n const classes = cx(styles[\"data-table-body-cell\"], rest.className, {\n [styles[\"data-table-body-cell-error\"]]: !!cellError,\n [styles[\"data-table-body-cell-warning\"]]: !cellError && !!cellWarning,\n [baseTableCellStyles[\"table-cell-internal-expand\"]]: isExpandCell,\n [baseTableCellStyles[\"table-cell-internal-select\"]]: isSelectCell,\n });\n const commonPinningStyles = useCommonPinningStyles<T>(column);\n\n const { jumpFocus, moveFocus } = useDTFocusDispatchContext();\n const { isRowClickEnabled, clickRow } = useDataTableRowClick();\n\n const [isInteractionMode, setIsInteractionMode] = useState(false);\n\n // Cell content can swap after any render, so newly mounted descendants must\n // be discovered each time; the marker makes unchanged descendants a no-op.\n useLayoutEffect(() => {\n if (!cellRef.current) return;\n const newOnes = getUnmanagedTabbables(cellRef.current);\n newOnes.forEach((el) => {\n el.setAttribute(CELL_MANAGED_ATTR, \"\");\n if (!isInteractionMode) {\n el.tabIndex = -1;\n }\n });\n });\n\n const exitInteractionMode = useCallback(() => {\n if (!cellRef.current) return;\n getManagedInteractives(cellRef.current).forEach((el) => {\n el.tabIndex = -1;\n });\n setIsInteractionMode(false);\n }, []);\n\n const handleKeyDown = useCallback(\n (event: React.KeyboardEvent<HTMLTableCellElement>) => {\n if (isInteractionMode) {\n if (event.key === \"Escape\") {\n event.preventDefault();\n // Close an open popover or menu before restoring grid navigation so\n // its surface is not left open after focus returns to the cell.\n const openTrigger = cellRef.current\n ? getManagedInteractives(cellRef.current)\n .filter((el) => !(el as HTMLButtonElement).disabled)\n .find((el) => el.getAttribute(\"aria-expanded\") === \"true\")\n : null;\n openTrigger?.click();\n exitInteractionMode();\n cellRef.current?.focus();\n }\n return;\n }\n\n switch (event.key) {\n case \"Escape\": {\n // Popover focus restoration targets its trigger; return focus to the\n // cell so the grid receives subsequent navigation keys.\n if (!cellRef.current) return;\n const openTrigger = getManagedInteractives(cellRef.current)\n .filter((el) => !(el as HTMLButtonElement).disabled)\n .find((el) => el.getAttribute(\"aria-expanded\") === \"true\");\n if (openTrigger) {\n event.preventDefault();\n openTrigger.click();\n cellRef.current.focus();\n }\n return;\n }\n case \"ArrowUp\":\n event.preventDefault();\n moveFocus(\"up\");\n return;\n case \"ArrowDown\":\n event.preventDefault();\n moveFocus(\"down\");\n return;\n case \"ArrowLeft\":\n event.preventDefault();\n if (rowCanExpand && rowIsExpanded) {\n toggleRowExpanded();\n return;\n }\n moveFocus(\"left\");\n return;\n case \"ArrowRight\":\n event.preventDefault();\n if (rowCanExpand && !rowIsExpanded) {\n toggleRowExpanded();\n return;\n }\n moveFocus(\"right\");\n return;\n case \"Home\": {\n event.preventDefault();\n jumpFocus(\"left\");\n return;\n }\n case \"End\": {\n event.preventDefault();\n jumpFocus(\"right\");\n return;\n }\n case \"Enter\":\n case \" \": {\n if (isExpandCell || isSelectCell) {\n event.preventDefault();\n if (isExpandCell) {\n toggleRowExpanded();\n }\n if (isSelectCell) {\n cell.row.toggleSelected();\n }\n return;\n }\n if (!cellRef.current) return;\n const interactives = getManagedInteractives(cellRef.current).filter(\n (el) => !(el as HTMLButtonElement).disabled,\n );\n if (interactives.length === 0) {\n // Enter activates a configured row action; Space remains available\n // for native page scrolling.\n if (event.key === \"Enter\" && isRowClickEnabled) {\n event.preventDefault();\n clickRow(cell.row.id);\n }\n return;\n }\n event.preventDefault();\n if (interactives.length === 1) {\n // Keep a single control at `-1` so the next Tab exits the cell\n // instead of revisiting its trigger.\n interactives[0].focus();\n interactives[0].click();\n return;\n }\n interactives.forEach((el) => {\n el.tabIndex = 0;\n });\n interactives[0].focus();\n setIsInteractionMode(true);\n return;\n }\n default:\n break;\n }\n },\n [\n isInteractionMode,\n exitInteractionMode,\n moveFocus,\n jumpFocus,\n isExpandCell,\n isSelectCell,\n cell,\n rowCanExpand,\n rowIsExpanded,\n toggleRowExpanded,\n isRowClickEnabled,\n clickRow,\n ],\n );\n\n const handleBlur = useCallback(\n (event: React.FocusEvent<HTMLTableCellElement>) => {\n if (cellRef.current?.contains(event.relatedTarget as Node | null)) return;\n exitInteractionMode();\n },\n [exitInteractionMode],\n );\n\n return (\n <TableBodyCell\n type=\"data-table\"\n {...rest}\n className={classes}\n ref={cellRef}\n tabIndex={-1}\n style={commonPinningStyles}\n onKeyDown={handleKeyDown}\n onBlur={handleBlur}\n data-cell-pos={formatCellPositionString(cellPosition)}\n data-anv-cell-interaction-mode={isInteractionMode || undefined}\n >\n {children}\n </TableBodyCell>\n );\n}\n","import {\n forwardRef,\n useCallback,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport cx from \"classnames\";\n\nimport { SrOnly } from \"../../../../../../components\";\nimport { ANV_PART_ATTR } from \"../../../../../../internal/constants/anvParts\";\nimport { PARTS } from \"../../parts\";\n\nimport { dataTableCellAffordanceHostClassName } from \"../dataTableCellAffordanceHostClassName\";\nimport { DataTableEditableCellEditIcon } from \"./DataTableEditableCellEditIcon\";\nimport { TableBodyCell } from \"../../../base/cells/TableBodyCell\";\n\nimport styles from \"./DataTableEditableCells.module.scss\";\nimport dataTableCellStyles from \"../cells/DataTableCells.module.scss\";\nimport { formatCellPositionString } from \"../util/cellPositionHelpers\";\nimport type {\n EditableCellImperativeHandle,\n BaseEditableCellProps,\n} from \"./types\";\nimport { useDTFocusDispatchContext } from \"../context/focus/useDTFocusDispatchContext\";\nimport {\n getColumnId,\n getCellValue,\n getCellOnChange,\n logWarningForInvalidCellValueType,\n} from \"../util/cellTypeHelpers\";\nimport { DataTableBodyImmutableCell } from \"../cells/DataTableBodyImmutableCell\";\n\nexport type DataTableEditableTextCellProps<T> = BaseEditableCellProps<T>;\n\nfunction DataTableEditableTextCellInner<T>(\n props: DataTableEditableTextCellProps<T>,\n ref: React.Ref<EditableCellImperativeHandle>,\n) {\n const { cell, cellProps, cellPosition, children } = props;\n const { onKeyDown: onCellKeyDown } = cellProps;\n const inputRef = useRef<HTMLInputElement>(null);\n const cellRef = useRef<HTMLTableCellElement>(null);\n const rowId = cell.row.id;\n const [isEditing, setIsEditing] = useState(false);\n\n const columnId = getColumnId(cell);\n const cellValue = getCellValue(cell, columnId);\n\n const [initialValue, isValidValueType] = useMemo(() => {\n if (cellValue === undefined || cellValue === null) {\n return [\"\", true];\n }\n\n if (typeof cellValue === \"string\") {\n return [cellValue, true];\n }\n\n logWarningForInvalidCellValueType({\n columnId: String(columnId),\n editMode: \"text\",\n expectedType: \"string\",\n receivedType: Array.isArray(cellValue) ? \"array\" : typeof cellValue,\n });\n return [\"\", false];\n }, [cellValue, columnId]);\n\n const [draftValue, setDraftValue] = useState(initialValue);\n const [tabIndex, setTabIndex] = useState(-1);\n const { moveFocusToCell } = useDTFocusDispatchContext();\n\n useImperativeHandle(ref, () => ({\n invoke: beginEditing,\n focus: () => {\n cellRef.current?.focus();\n setTabIndex(0);\n },\n }));\n\n // Enter/F2/Escape focus the cell first; blur must not commit after those keys.\n const skipCommitOnBlur = useRef(false);\n\n const onChange = getCellOnChange(cell, columnId);\n\n const commitValue = useCallback(() => {\n if (draftValue !== initialValue) {\n onChange?.(draftValue as T[typeof columnId], rowId);\n }\n setIsEditing(false);\n }, [rowId, draftValue, onChange, initialValue]);\n\n const resetValue = useCallback(() => {\n setDraftValue(initialValue);\n skipCommitOnBlur.current = true;\n cellRef.current?.focus();\n setIsEditing(false);\n }, [initialValue]);\n\n const beginEditing = useCallback(() => {\n setIsEditing(true);\n }, [setIsEditing]);\n\n const handleInputChange = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n setDraftValue(e.target.value);\n },\n [setDraftValue],\n );\n\n const handleInputKeyDown = useCallback(\n (event: React.KeyboardEvent<HTMLInputElement>) => {\n if (event.key === \"Enter\" || event.key === \"F2\") {\n event.preventDefault();\n skipCommitOnBlur.current = true;\n cellRef.current?.focus();\n commitValue();\n return;\n } else if (event.key === \"Escape\") {\n event.preventDefault();\n resetValue();\n return;\n }\n },\n [commitValue, resetValue],\n );\n\n const handleInputBlur = useCallback(() => {\n if (skipCommitOnBlur.current) {\n skipCommitOnBlur.current = false;\n return;\n }\n commitValue();\n }, [commitValue]);\n\n const classes = cx(\n dataTableCellAffordanceHostClassName,\n styles[\"data-table-body-cell-editable\"],\n cellProps.className,\n {\n [dataTableCellStyles[\"data-table-body-cell-editing\"]]: isEditing,\n },\n );\n\n const handleCellKeyDown = useCallback(\n (event: React.KeyboardEvent<HTMLTableCellElement>) => {\n if (isEditing) {\n return;\n }\n onCellKeyDown?.(event);\n },\n [onCellKeyDown, isEditing],\n );\n\n const handleCellFocus = useCallback(\n (event: React.FocusEvent<HTMLTableCellElement>) => {\n if (event.target !== cellRef.current) {\n return;\n }\n event.preventDefault();\n setTabIndex(0);\n },\n [setTabIndex],\n );\n\n const handleCellBlur = useCallback(\n (e: React.FocusEvent<HTMLElement>) => {\n if (cellRef.current?.contains(e.relatedTarget as Node)) {\n return;\n }\n setTabIndex(-1);\n },\n [setTabIndex, cellRef],\n );\n\n const handleCellMouseDown = useCallback(\n (e: React.MouseEvent<HTMLTableCellElement>) => {\n e.preventDefault();\n e.stopPropagation();\n beginEditing();\n moveFocusToCell(cellPosition);\n },\n [beginEditing, cellPosition, moveFocusToCell],\n );\n\n useEffect(() => {\n if (isEditing) {\n inputRef.current?.focus();\n }\n }, [isEditing]);\n\n if (!isValidValueType) {\n const { cellProps: _cellProps, ...immutableCellProps } = props;\n return <DataTableBodyImmutableCell {...immutableCellProps} />;\n }\n\n return (\n <TableBodyCell\n ref={cellRef}\n type=\"data-table\"\n className={classes}\n style={cellProps.style}\n onMouseDown={handleCellMouseDown}\n onKeyDown={handleCellKeyDown}\n tabIndex={tabIndex}\n onFocus={handleCellFocus}\n onBlur={handleCellBlur}\n data-cell-pos={formatCellPositionString(cellPosition)}\n data-anv-editable-cell=\"true\"\n >\n {isEditing ? (\n <>\n <input\n ref={inputRef}\n type=\"text\"\n name={`${cell.column.id}-row-${cellPosition.rowIndex}`}\n value={draftValue}\n className={styles[\"data-table-body-cell-input\"]}\n onChange={handleInputChange}\n onBlur={handleInputBlur}\n onKeyDown={handleInputKeyDown}\n {...{ [ANV_PART_ATTR]: PARTS.editableInput }}\n />\n </>\n ) : (\n <>\n {children}\n {!isEditing && <DataTableEditableCellEditIcon />}\n </>\n )}\n <SrOnly>\n {isEditing\n ? \"Press Enter or F2 to save cell value.\"\n : \"Press Enter or F2 to edit cell value. Press Escape to cancel.\"}\n </SrOnly>\n </TableBodyCell>\n );\n}\n\n/**\n * Inline text editor. Enter/F2 and blur commit; Escape restores the committed\n * value. Invalid cell types fall back to a read-only body cell.\n */\nexport const DataTableEditableTextCell = Object.assign(\n forwardRef(DataTableEditableTextCellInner) as <T>(\n props: DataTableEditableTextCellProps<T> & {\n ref?: React.Ref<EditableCellImperativeHandle>;\n },\n ) => React.ReactElement,\n { displayName: \"DataTableEditableTextCell\" },\n);\n","import {\n forwardRef,\n useCallback,\n useEffect,\n useId,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport cx from \"classnames\";\n\nimport { SrOnly } from \"../../../../../../components\";\nimport { ANV_PART_ATTR } from \"../../../../../../internal/constants/anvParts\";\nimport { PARTS } from \"../../parts\";\n\nimport { DataTableEditableCellEditIcon } from \"./DataTableEditableCellEditIcon\";\nimport { TableBodyCell } from \"../../../base/cells/TableBodyCell\";\n\nimport styles from \"./DataTableEditableCells.module.scss\";\nimport dataTableCellStyles from \"../cells/DataTableCells.module.scss\";\nimport { formatCellPositionString } from \"../util/cellPositionHelpers\";\nimport type {\n EditableCellImperativeHandle,\n BaseEditableCellProps,\n} from \"./types\";\nimport { useDTFocusDispatchContext } from \"../context/focus/useDTFocusDispatchContext\";\nimport {\n getColumnId,\n getCellValue,\n getCellOnChange,\n logWarningForInvalidCellValueType,\n} from \"../util/cellTypeHelpers\";\nimport { DataTableBodyImmutableCell } from \"../cells/DataTableBodyImmutableCell\";\nimport { useNumberField } from \"../../../../../../internal/hooks/useNumberField/useNumberField\";\nimport { useMergeRefs } from \"../../../../../../hooks/useMergeRefs\";\n\nexport type DataTableEditableNumberCellProps<T> = BaseEditableCellProps<T>;\n\nfunction DataTableEditableNumberCellInner<T>(\n props: DataTableEditableNumberCellProps<T>,\n ref: React.Ref<EditableCellImperativeHandle>,\n) {\n const { cell, cellProps, cellPosition, children } = props;\n const { onKeyDown: onCellKeyDown } = cellProps;\n const cellRef = useRef<HTMLTableCellElement>(null);\n const localInputRef = useRef<HTMLInputElement>(null);\n const rowId = cell.row.id;\n const [isEditing, setIsEditing] = useState(false);\n\n const columnId = getColumnId(cell);\n const cellValue = getCellValue(cell, columnId);\n\n const [initialValue, isValidValueType] = useMemo(() => {\n let value: number | null;\n let isValid = true;\n\n if (cellValue === undefined || cellValue === null) {\n value = null;\n isValid = true;\n return [value, isValid];\n }\n\n if (typeof cellValue === \"number\") {\n value = cellValue;\n } else {\n value = null;\n isValid = false;\n }\n\n if (!isValid) {\n logWarningForInvalidCellValueType({\n columnId: String(columnId),\n editMode: \"number\",\n expectedType: \"number\",\n receivedType: Array.isArray(cellValue) ? \"array\" : typeof cellValue,\n });\n }\n return [value, isValid];\n }, [cellValue, columnId]);\n\n const editConfig = cell.column.columnDef.meta?.editConfig;\n const numberEditOptions = useMemo(() => {\n if (editConfig && editConfig.mode === \"number\") {\n const { mode: _, onChange: __, ...options } = editConfig;\n return options;\n }\n return {};\n }, [editConfig]);\n\n const [draftValue, setDraftValue] = useState<number | null>(initialValue);\n\n const { inputRef: numberFieldInputRef, inputProps } = useNumberField({\n value: draftValue,\n onChange: setDraftValue,\n ...numberEditOptions,\n });\n\n const combinedInputRef = useMergeRefs([localInputRef, numberFieldInputRef]);\n\n const [tabIndex, setTabIndex] = useState(-1);\n const { moveFocusToCell } = useDTFocusDispatchContext();\n\n const instructionsId = useId();\n const headerLabel =\n cell.column.columnDef.meta?.columnDef?.headerLabel ?? String(columnId);\n const inputAriaLabel = `${headerLabel}, row ${cellPosition.rowIndex + 1}`;\n\n // Enter/F2/Escape focus the cell first; blur must not commit after those keys.\n const skipCommitOnBlur = useRef(false);\n\n const onChange = getCellOnChange(cell, columnId);\n\n const commitValue = useCallback(() => {\n if (draftValue !== initialValue) {\n onChange?.(draftValue as T[typeof columnId], rowId);\n }\n setIsEditing(false);\n }, [rowId, draftValue, onChange, initialValue]);\n\n const resetValue = useCallback(() => {\n setDraftValue(initialValue);\n skipCommitOnBlur.current = true;\n cellRef.current?.focus();\n setIsEditing(false);\n }, [initialValue]);\n\n const beginEditing = useCallback(() => {\n setDraftValue(initialValue);\n setIsEditing(true);\n }, [initialValue]);\n\n useImperativeHandle(ref, () => ({\n invoke: beginEditing,\n focus: () => {\n cellRef.current?.focus();\n setTabIndex(0);\n },\n }));\n\n const handleInputKeyDown = useCallback(\n (event: React.KeyboardEvent<HTMLInputElement>) => {\n if (event.key === \"Enter\" || event.key === \"F2\") {\n event.preventDefault();\n skipCommitOnBlur.current = true;\n cellRef.current?.focus();\n commitValue();\n return;\n } else if (event.key === \"Escape\") {\n event.preventDefault();\n resetValue();\n return;\n }\n },\n [commitValue, resetValue],\n );\n\n const handleInputBlur = useCallback(() => {\n if (skipCommitOnBlur.current) {\n skipCommitOnBlur.current = false;\n return;\n }\n commitValue();\n }, [commitValue]);\n\n const classes = cx(\n styles[\"data-table-body-cell-editable\"],\n cellProps.className,\n {\n [dataTableCellStyles[\"data-table-body-cell-editing\"]]: isEditing,\n },\n );\n\n const handleCellKeyDown = useCallback(\n (event: React.KeyboardEvent<HTMLTableCellElement>) => {\n if (isEditing) {\n return;\n }\n onCellKeyDown?.(event);\n },\n [onCellKeyDown, isEditing],\n );\n\n const handleCellFocus = useCallback(\n (event: React.FocusEvent<HTMLTableCellElement>) => {\n if (event.target !== cellRef.current) {\n return;\n }\n event.preventDefault();\n setTabIndex(0);\n },\n [setTabIndex],\n );\n\n const handleCellBlur = useCallback(\n (e: React.FocusEvent<HTMLElement>) => {\n if (cellRef.current?.contains(e.relatedTarget as Node)) {\n return;\n }\n setTabIndex(-1);\n },\n [setTabIndex, cellRef],\n );\n\n const handleCellMouseDown = useCallback(\n (e: React.MouseEvent<HTMLTableCellElement>) => {\n e.preventDefault();\n e.stopPropagation();\n beginEditing();\n moveFocusToCell(cellPosition);\n },\n [beginEditing, cellPosition, moveFocusToCell],\n );\n\n useEffect(() => {\n if (isEditing) {\n localInputRef.current?.focus();\n }\n }, [isEditing]);\n\n if (!isValidValueType) {\n const { cellProps: _cellProps, ...immutableCellProps } = props;\n return <DataTableBodyImmutableCell {...immutableCellProps} />;\n }\n\n return (\n <TableBodyCell\n ref={cellRef}\n type=\"data-table\"\n className={classes}\n style={cellProps.style}\n onMouseDown={handleCellMouseDown}\n onKeyDown={handleCellKeyDown}\n tabIndex={tabIndex}\n onFocus={handleCellFocus}\n onBlur={handleCellBlur}\n data-cell-pos={formatCellPositionString(cellPosition)}\n data-anv-editable-cell=\"true\"\n >\n {isEditing ? (\n <>\n <input\n ref={combinedInputRef}\n {...inputProps}\n name={`${cell.column.id}-row-${cellPosition.rowIndex}`}\n aria-label={inputAriaLabel}\n aria-describedby={instructionsId}\n className={styles[\"data-table-body-cell-input\"]}\n onBlur={handleInputBlur}\n onKeyDown={handleInputKeyDown}\n {...{ [ANV_PART_ATTR]: PARTS.editableInput }}\n />\n </>\n ) : (\n <>\n {children}\n {!isEditing && <DataTableEditableCellEditIcon />}\n </>\n )}\n <SrOnly id={instructionsId}>\n {isEditing\n ? \"Press Enter or F2 to save cell value.\"\n : \"Press Enter or F2 to edit cell value. Press Escape to cancel.\"}\n </SrOnly>\n </TableBodyCell>\n );\n}\n\n/**\n * Inline number editor. Enter/F2 and blur commit; Escape restores the committed\n * value. Opening reseeds the draft from the cell.\n */\nexport const DataTableEditableNumberCell = Object.assign(\n forwardRef(DataTableEditableNumberCellInner) as <T>(\n props: DataTableEditableNumberCellProps<T> & {\n ref?: React.Ref<EditableCellImperativeHandle>;\n },\n ) => React.ReactElement,\n { displayName: \"DataTableEditableNumberCell\" },\n);\n","import { useCallback, useRef, useState, useImperativeHandle } from \"react\";\nimport type { CellPosition } from \"../../../internal/types\";\nimport type {\n EditableCellImperativeHandle,\n EditableCellCellProps,\n} from \"./types\";\nimport { useDTFocusDispatchContext } from \"../context/focus/useDTFocusDispatchContext\";\n\ntype UseEditableMenuCellOptions = {\n cellPosition: CellPosition;\n onCellKeyDown: EditableCellCellProps[\"onKeyDown\"];\n ref: React.Ref<EditableCellImperativeHandle>;\n};\n\n/**\n * Shared open/close and focus wiring for menu-based editable cells. While the\n * menu is closed, keys stay on the grid; while open they go to the menu.\n */\nexport function useEditableMenuCell({\n cellPosition,\n onCellKeyDown,\n ref,\n}: UseEditableMenuCellOptions) {\n const [tabIndex, setTabIndex] = useState(-1);\n const { moveFocusToCell } = useDTFocusDispatchContext();\n const cellRef = useRef<HTMLTableCellElement>(null);\n const triggerClickRef = useRef<(() => void) | null>(null);\n\n useImperativeHandle(ref, () => ({\n invoke: () => {\n triggerClickRef.current?.();\n },\n focus: () => {\n cellRef.current?.focus();\n setTabIndex(0);\n },\n }));\n\n const handleCellKeyDown = useCallback(\n (\n event: React.KeyboardEvent<HTMLElement>,\n menuKeyDown:\n | ((event: React.KeyboardEvent<HTMLButtonElement>) => void)\n | undefined,\n isOpen: boolean,\n ) => {\n if (isOpen) {\n menuKeyDown?.(event as React.KeyboardEvent<HTMLButtonElement>);\n return;\n }\n onCellKeyDown?.(event as React.KeyboardEvent<HTMLDivElement>);\n },\n [onCellKeyDown],\n );\n\n // F2 closes the open menu through the trigger so focus returns to the cell.\n const handleMenuKeyDown = useCallback((e: React.KeyboardEvent) => {\n if (e.key === \"F2\") {\n e.preventDefault();\n triggerClickRef.current?.();\n }\n }, []);\n\n // Cell blur skipped the tabindex reset while the menu held focus, so implicit\n // close must do it.\n const handleImplicitClose = useCallback(() => {\n setTabIndex(-1);\n }, []);\n\n const handleCellMouseDown = useCallback(\n (triggerOnClick: () => void) => () => {\n moveFocusToCell(cellPosition);\n triggerOnClick();\n },\n [cellPosition, moveFocusToCell],\n );\n\n const handleCellBlur = useCallback((e: React.FocusEvent<HTMLElement>) => {\n const popoverId = (e.currentTarget as HTMLElement).getAttribute(\n \"aria-controls\",\n );\n const popoverEl = popoverId ? document.getElementById(popoverId) : null;\n if (popoverEl?.contains(e.relatedTarget as Node)) {\n return;\n }\n setTabIndex(-1);\n }, []);\n\n const handleCellFocus = useCallback(\n (event: React.FocusEvent<HTMLTableCellElement>) => {\n if (event.target !== cellRef.current) {\n return;\n }\n event.preventDefault();\n setTabIndex(0);\n },\n [],\n );\n\n return {\n tabIndex,\n cellRef,\n triggerClickRef,\n handleCellKeyDown,\n handleMenuKeyDown,\n handleImplicitClose,\n handleCellMouseDown,\n handleCellBlur,\n handleCellFocus,\n };\n}\n","import { forwardRef, type Ref, useMemo } from \"react\";\nimport cx from \"classnames\";\n\nimport { SelectMenuSync } from \"../../../../../../components/SelectMenu/SelectMenuSync\";\nimport type { SelectMenuOption } from \"../../../../../../components/SelectMenu/types\";\n\nimport { SrOnly } from \"../../../../../../components/SrOnly\";\n\nimport { dataTableCellAffordanceHostClassName } from \"../dataTableCellAffordanceHostClassName\";\nimport { DataTableEditableCellEditIcon } from \"./DataTableEditableCellEditIcon\";\nimport { TableBodyCell } from \"../../../base/cells/TableBodyCell\";\n\nimport styles from \"./DataTableEditableCells.module.scss\";\nimport type { EditableCellImperativeHandle } from \"./types\";\nimport { formatCellPositionString } from \"../util/cellPositionHelpers\";\nimport { mergeRefs } from \"../../../../../../hooks/useMergeRefs/useMergeRefs\";\nimport type { BaseEditableCellProps } from \"./types\";\nimport { getColumnId, getCellValue } from \"../util/cellTypeHelpers\";\nimport { DataTableBodyImmutableCell } from \"../cells/DataTableBodyImmutableCell\";\nimport { useEditableMenuCell } from \"./useEditableMenuCell\";\n\nexport type DataTableEditableSelectCellProps<T> = BaseEditableCellProps<T>;\n\nfunction DataTableEditableSelectCellInner<T>(\n props: DataTableEditableSelectCellProps<T>,\n ref: React.Ref<EditableCellImperativeHandle>,\n) {\n const { cell, cellProps, cellPosition, children } = props;\n const { onKeyDown: onCellKeyDown, className, ...restCellProps } = cellProps;\n\n const columnId = getColumnId(cell);\n const cellValue = getCellValue(cell, columnId);\n\n const meta = cell.column.columnDef.meta;\n const editConfig = meta?.editConfig;\n const selectEditConfig =\n editConfig?.mode === \"select\" ? editConfig : undefined;\n\n const options: SelectMenuOption[] = useMemo(\n () => selectEditConfig?.options ?? [],\n [selectEditConfig],\n );\n\n const onChange = selectEditConfig?.onChange;\n\n const {\n mode: _mode,\n options: _options,\n onChange: _onChange,\n ...selectMenuPassthroughProps\n } = selectEditConfig ?? {};\n\n const isValidValueType = useMemo(() => {\n if (Array.isArray(cellValue)) return false;\n return true;\n }, [cellValue]);\n\n const rowId = cell.row.id;\n\n const {\n tabIndex,\n cellRef,\n triggerClickRef,\n handleCellKeyDown,\n handleMenuKeyDown,\n handleImplicitClose,\n handleCellMouseDown,\n handleCellBlur,\n handleCellFocus,\n } = useEditableMenuCell({ cellPosition, onCellKeyDown, ref });\n\n const selectedOption = useMemo(() => {\n if (cellValue === undefined || cellValue === null) return null;\n return options.find((o) => String(o.id) === String(cellValue)) ?? null;\n }, [options, cellValue]);\n\n const hasEditableConfig = !!selectEditConfig;\n\n if (!isValidValueType || !hasEditableConfig) {\n const { cellProps: _cellProps, ...immutableCellProps } = props;\n return <DataTableBodyImmutableCell {...immutableCellProps} />;\n }\n\n return (\n <SelectMenuSync\n trigger={({\n ref: triggerRef,\n onClick,\n onKeyDown: menuKeyDown,\n \"aria-controls\": ariaControls,\n \"aria-expanded\": ariaExpanded,\n \"aria-haspopup\": ariaHaspopup,\n \"data-state\": dataState,\n }) => {\n triggerClickRef.current = onClick;\n const isOpen = ariaExpanded;\n return (\n <TableBodyCell\n ref={mergeRefs([\n triggerRef as Ref<HTMLElement>,\n cellRef as Ref<HTMLElement>,\n ])}\n tabIndex={tabIndex}\n type=\"data-table\"\n {...restCellProps}\n className={cx(\n dataTableCellAffordanceHostClassName,\n styles[\"data-table-body-cell-editable\"],\n className,\n )}\n onMouseDown={handleCellMouseDown(onClick)}\n onBlur={handleCellBlur}\n onFocus={handleCellFocus}\n data-cell-pos={formatCellPositionString(cellPosition)}\n data-anv-editable-cell=\"true\"\n aria-controls={ariaControls}\n aria-expanded={ariaExpanded}\n aria-haspopup={ariaHaspopup}\n data-state={dataState}\n onKeyDown={(e) => handleCellKeyDown(e, menuKeyDown, isOpen)}\n >\n {children}\n {!isOpen && <DataTableEditableCellEditIcon />}\n <SrOnly>\n {isOpen\n ? \"Press Enter or Space to select a cell value. Press Escape or F2 to cancel.\"\n : \"Press Enter or F2 to edit cell value.\"}\n </SrOnly>\n </TableBodyCell>\n );\n }}\n label={String(\n cell.column.columnDef.meta?.columnDef?.headerLabel ?? \"Select\",\n )}\n options={options}\n value={selectedOption}\n onSelectedOptionChange={(option) => {\n onChange?.(option, rowId);\n }}\n onMenuKeyDown={handleMenuKeyDown}\n onImplicitClose={handleImplicitClose}\n {...selectMenuPassthroughProps}\n />\n );\n}\n\n/**\n * Sync single-select menu editor. Arrays or missing `editConfig` fall back to a\n * read-only body cell.\n */\nexport const DataTableEditableSelectCell = Object.assign(\n forwardRef(DataTableEditableSelectCellInner) as <T>(\n props: DataTableEditableSelectCellProps<T> & {\n ref?: React.Ref<EditableCellImperativeHandle>;\n },\n ) => React.ReactElement,\n { displayName: \"DataTableEditableSelectCell\" },\n);\n","import { forwardRef, type Ref, useCallback, useMemo } from \"react\";\nimport cx from \"classnames\";\n\nimport { SelectMenu } from \"../../../../../../components/SelectMenu/SelectMenu\";\nimport type { SelectMenuOption } from \"../../../../../../components/SelectMenu/types\";\nimport type {\n SelectAsyncCellEagerLoader,\n SelectAsyncCellPageLoader,\n SelectAsyncCellOffsetLoader,\n SelectAsyncCellGroupLoader,\n} from \"../../../types\";\n\nimport { SrOnly } from \"../../../../../../components/SrOnly\";\n\nimport { DataTableEditableCellEditIcon } from \"./DataTableEditableCellEditIcon\";\nimport { TableBodyCell } from \"../../../base/cells/TableBodyCell\";\n\nimport styles from \"./DataTableEditableCells.module.scss\";\nimport type { EditableCellImperativeHandle } from \"./types\";\nimport { formatCellPositionString } from \"../util/cellPositionHelpers\";\nimport { mergeRefs } from \"../../../../../../hooks/useMergeRefs/useMergeRefs\";\nimport type { BaseEditableCellProps } from \"./types\";\nimport { getColumnId, getCellValue } from \"../util/cellTypeHelpers\";\nimport { DataTableBodyImmutableCell } from \"../cells/DataTableBodyImmutableCell\";\nimport { useEditableMenuCell } from \"./useEditableMenuCell\";\n\nexport type DataTableEditableSelectAsyncCellProps<T> = BaseEditableCellProps<T>;\n\nfunction DataTableEditableSelectAsyncCellInner<T>(\n props: DataTableEditableSelectAsyncCellProps<T>,\n ref: React.Ref<EditableCellImperativeHandle>,\n) {\n const { cell, cellProps, cellPosition, children } = props;\n const { onKeyDown: onCellKeyDown, className, ...restCellProps } = cellProps;\n\n const columnId = getColumnId(cell);\n const cellValue = getCellValue(cell, columnId);\n\n const editConfig = cell.column.columnDef.meta?.editConfig;\n const asyncEditConfig =\n editConfig?.mode === \"select-async\" ? editConfig : undefined;\n\n const isValidValueType = useMemo(() => {\n if (Array.isArray(cellValue)) return false;\n return true;\n }, [cellValue]);\n\n const rowId = cell.row.id;\n const row = cell.row.original as T;\n\n const context = useMemo(() => ({ row, rowId }), [row, rowId]);\n\n const {\n mode: _mode,\n lazy,\n lazyOptions,\n loadOptions: cellLoader,\n onChange,\n cache: cacheProp,\n ...passthroughProps\n } = asyncEditConfig ?? {};\n\n // Bind `{ row, rowId }` as `context` so SelectMenu's loader stays row-free.\n const loadOptions = useCallback(\n (searchValue: string, ...rest: unknown[]) => {\n if (!cellLoader) return [];\n if (lazy === \"page\") {\n const [pageNumber, pageSize] = rest as [number, number];\n return (cellLoader as SelectAsyncCellPageLoader<T>)(\n searchValue,\n pageNumber,\n pageSize,\n context,\n );\n }\n if (lazy === \"offset\") {\n const [offset, limit] = rest as [number, number];\n return (cellLoader as SelectAsyncCellOffsetLoader<T>)(\n searchValue,\n offset,\n limit,\n context,\n );\n }\n if (lazy === \"group\") {\n const [previousGroupKey] = rest as [string | number | null];\n return (cellLoader as SelectAsyncCellGroupLoader<T>)(\n searchValue,\n previousGroupKey,\n context,\n );\n }\n return (cellLoader as SelectAsyncCellEagerLoader<T>)(\n searchValue,\n context,\n );\n },\n [cellLoader, context, lazy],\n );\n\n const cache = cacheProp ?? { enabled: false };\n\n const {\n tabIndex,\n cellRef,\n triggerClickRef,\n handleCellKeyDown,\n handleMenuKeyDown,\n handleImplicitClose,\n handleCellMouseDown,\n handleCellBlur,\n handleCellFocus,\n } = useEditableMenuCell({ cellPosition, onCellKeyDown, ref });\n\n // No loaded options to match; synthesize a display option from the stored id.\n const selectedOption = useMemo(() => {\n if (cellValue === undefined || cellValue === null) return null;\n if (typeof cellValue === \"object\") return null;\n return { id: cellValue as string | number, label: String(cellValue) };\n }, [cellValue]);\n\n if (!isValidValueType || !asyncEditConfig) {\n const { cellProps: _cellProps, ...immutableCellProps } = props;\n return <DataTableBodyImmutableCell {...immutableCellProps} />;\n }\n\n return (\n <SelectMenu\n // After destructure, `lazy`/`loadOptions` are no longer one union branch.\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n lazy={lazy as any}\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n loadOptions={loadOptions as any}\n lazyOptions={lazyOptions}\n cache={cache}\n {...passthroughProps}\n trigger={({\n ref: triggerRef,\n onClick,\n onKeyDown: menuKeyDown,\n \"aria-controls\": ariaControls,\n \"aria-expanded\": ariaExpanded,\n \"aria-haspopup\": ariaHaspopup,\n \"data-state\": dataState,\n }) => {\n triggerClickRef.current = onClick;\n const isOpen = ariaExpanded;\n return (\n <TableBodyCell\n ref={mergeRefs([\n triggerRef as Ref<HTMLElement>,\n cellRef as Ref<HTMLElement>,\n ])}\n tabIndex={tabIndex}\n type=\"data-table\"\n {...restCellProps}\n className={cx(styles[\"data-table-body-cell-editable\"], className)}\n onMouseDown={handleCellMouseDown(onClick)}\n onBlur={handleCellBlur}\n onFocus={handleCellFocus}\n data-cell-pos={formatCellPositionString(cellPosition)}\n data-anv-editable-cell=\"true\"\n aria-controls={ariaControls}\n aria-expanded={ariaExpanded}\n aria-haspopup={ariaHaspopup}\n data-state={dataState}\n onKeyDown={(e) => handleCellKeyDown(e, menuKeyDown, isOpen)}\n >\n {children}\n {!isOpen && <DataTableEditableCellEditIcon />}\n <SrOnly>\n {isOpen\n ? \"Press Enter or Space to select a cell value. Press Escape or F2 to cancel.\"\n : \"Press Enter or F2 to edit cell value.\"}\n </SrOnly>\n </TableBodyCell>\n );\n }}\n label={String(\n cell.column.columnDef.meta?.columnDef?.headerLabel ?? \"Select\",\n )}\n value={selectedOption as SelectMenuOption | null}\n onSelectedOptionChange={(option) => {\n onChange?.(option, rowId);\n }}\n onMenuKeyDown={handleMenuKeyDown}\n onImplicitClose={handleImplicitClose}\n />\n );\n}\n\n/**\n * Async single-select menu editor. `loadOptions` receives `{ row, rowId }` as\n * `context`. Cache defaults to disabled so rows do not share option results.\n * Arrays or missing `editConfig` fall back to a read-only body cell.\n */\nexport const DataTableEditableSelectAsyncCell = Object.assign(\n forwardRef(DataTableEditableSelectAsyncCellInner) as <T>(\n props: DataTableEditableSelectAsyncCellProps<T> & {\n ref?: React.Ref<EditableCellImperativeHandle>;\n },\n ) => React.ReactElement,\n { displayName: \"DataTableEditableSelectAsyncCell\" },\n);\n","import { forwardRef, type Ref, useMemo } from \"react\";\nimport cx from \"classnames\";\n\nimport { SrOnly } from \"../../../../../../components/SrOnly\";\n\nimport { MultiSelectMenuSync } from \"../../../../../../components/MultiSelectMenu/MultiSelectMenuSync\";\nimport type { MultiSelectMenuOption } from \"../../../../../../components/MultiSelectMenu/types\";\n\nimport { DataTableEditableCellEditIcon } from \"./DataTableEditableCellEditIcon\";\nimport { TableBodyCell } from \"../../../base/cells/TableBodyCell\";\n\nimport styles from \"./DataTableEditableCells.module.scss\";\nimport type { EditableCellImperativeHandle } from \"./types\";\nimport { formatCellPositionString } from \"../util/cellPositionHelpers\";\nimport { mergeRefs } from \"../../../../../../hooks/useMergeRefs/useMergeRefs\";\nimport type { BaseEditableCellProps } from \"./types\";\nimport {\n getColumnId,\n getCellValue,\n logWarningForInvalidCellValueType,\n} from \"../util/cellTypeHelpers\";\nimport { DataTableBodyImmutableCell } from \"../cells/DataTableBodyImmutableCell\";\nimport { useEditableMenuCell } from \"./useEditableMenuCell\";\n\nexport type DataTableEditableMultiselectCellProps<T> = BaseEditableCellProps<T>;\n\nexport function DataTableEditableMultiselectCellInner<T>(\n props: DataTableEditableMultiselectCellProps<T>,\n ref: React.Ref<EditableCellImperativeHandle>,\n) {\n const { cell, cellProps, cellPosition, children } = props;\n const { onKeyDown: onCellKeyDown, className, ...restCellProps } = cellProps;\n\n const columnId = getColumnId(cell);\n const cellValue = getCellValue(cell, columnId);\n\n const isValidValueType = useMemo(() => {\n if (cellValue === null || cellValue === undefined) return true;\n if (Array.isArray(cellValue)) return true;\n logWarningForInvalidCellValueType({\n columnId: String(columnId),\n editMode: \"multiselect\",\n expectedType: \"array of primitive values\",\n receivedType: typeof cellValue,\n });\n return false;\n }, [cellValue, columnId]);\n\n const meta = cell.column.columnDef.meta;\n const editConfig = meta?.editConfig;\n const multiselectEditConfig =\n editConfig?.mode === \"multiselect\" ? editConfig : undefined;\n\n const options: MultiSelectMenuOption[] = useMemo(\n () => multiselectEditConfig?.options ?? [],\n [multiselectEditConfig],\n );\n\n const onChange = multiselectEditConfig?.onChange;\n\n const {\n mode: _mode,\n options: _options,\n onChange: _onChange,\n ...multiSelectMenuPassthroughProps\n } = multiselectEditConfig ?? {};\n\n const rowId = cell.row.id;\n\n const {\n tabIndex,\n cellRef,\n triggerClickRef,\n handleCellKeyDown,\n handleMenuKeyDown,\n handleImplicitClose,\n handleCellMouseDown,\n handleCellBlur,\n handleCellFocus,\n } = useEditableMenuCell({ cellPosition, onCellKeyDown, ref });\n\n const selectedOptions = useMemo(() => {\n if (!Array.isArray(cellValue)) return [];\n const valueStrings = cellValue.map((v) => String(v));\n return options.filter((o) => valueStrings.includes(String(o.id)));\n }, [options, cellValue]);\n\n const hasEditableConfig = !!multiselectEditConfig;\n\n if (!isValidValueType || !hasEditableConfig) {\n const { cellProps: _cellProps, ...immutableCellProps } = props;\n return <DataTableBodyImmutableCell {...immutableCellProps} />;\n }\n\n return (\n <MultiSelectMenuSync\n trigger={({\n ref: triggerRef,\n onClick,\n onKeyDown: menuKeyDown,\n \"aria-controls\": ariaControls,\n \"aria-expanded\": ariaExpanded,\n \"aria-haspopup\": ariaHaspopup,\n \"data-state\": dataState,\n }) => {\n triggerClickRef.current = onClick;\n const isOpen = ariaExpanded;\n return (\n <TableBodyCell\n ref={mergeRefs([\n triggerRef as Ref<HTMLElement>,\n cellRef as Ref<HTMLElement>,\n ])}\n tabIndex={tabIndex}\n type=\"data-table\"\n {...restCellProps}\n className={cx(styles[\"data-table-body-cell-editable\"], className)}\n onMouseDown={handleCellMouseDown(onClick)}\n onBlur={handleCellBlur}\n onFocus={handleCellFocus}\n data-cell-pos={formatCellPositionString(cellPosition)}\n data-anv-editable-cell=\"true\"\n aria-controls={ariaControls}\n aria-expanded={ariaExpanded}\n aria-haspopup={ariaHaspopup}\n data-state={dataState}\n onKeyDown={(e) => handleCellKeyDown(e, menuKeyDown, isOpen)}\n >\n {children}\n {!isOpen && <DataTableEditableCellEditIcon />}\n <SrOnly>\n {isOpen\n ? \"Press Enter or Space to select cell values. Press Escape or F2 to close.\"\n : \"Press Enter or F2 to edit cell value.\"}\n </SrOnly>\n </TableBodyCell>\n );\n }}\n label={String(\n cell.column.columnDef.meta?.columnDef?.headerLabel ?? \"Select\",\n )}\n options={options}\n value={selectedOptions}\n onSelectedOptionsChange={(selected) => {\n onChange?.(selected, rowId);\n }}\n onMenuKeyDown={handleMenuKeyDown}\n onImplicitClose={handleImplicitClose}\n {...multiSelectMenuPassthroughProps}\n />\n );\n}\n\n/**\n * Sync multi-select menu editor. Cell value is an id array. Non-array values\n * (except nullish) or missing `editConfig` fall back to a read-only body cell.\n */\nexport const DataTableEditableMultiselectCell = Object.assign(\n forwardRef(DataTableEditableMultiselectCellInner) as <T>(\n props: DataTableEditableMultiselectCellProps<T> & {\n ref?: React.Ref<EditableCellImperativeHandle>;\n },\n ) => React.ReactElement,\n { displayName: \"DataTableEditableMultiselectCell\" },\n);\n","import { forwardRef, type Ref, useCallback, useMemo } from \"react\";\nimport cx from \"classnames\";\n\nimport { SrOnly } from \"../../../../../../components/SrOnly\";\n\nimport { MultiSelectMenu } from \"../../../../../../components/MultiSelectMenu/MultiSelectMenu\";\nimport type { MultiSelectMenuOption } from \"../../../../../../components/MultiSelectMenu/types\";\nimport type {\n MultiselectAsyncCellEagerLoader,\n MultiselectAsyncCellPageLoader,\n MultiselectAsyncCellOffsetLoader,\n MultiselectAsyncCellGroupLoader,\n} from \"../../../types\";\n\nimport { DataTableEditableCellEditIcon } from \"./DataTableEditableCellEditIcon\";\nimport { TableBodyCell } from \"../../../base/cells/TableBodyCell\";\n\nimport styles from \"./DataTableEditableCells.module.scss\";\nimport type { EditableCellImperativeHandle } from \"./types\";\nimport { formatCellPositionString } from \"../util/cellPositionHelpers\";\nimport { mergeRefs } from \"../../../../../../hooks/useMergeRefs/useMergeRefs\";\nimport type { BaseEditableCellProps } from \"./types\";\nimport { getColumnId, getCellValue } from \"../util/cellTypeHelpers\";\nimport { DataTableBodyImmutableCell } from \"../cells/DataTableBodyImmutableCell\";\nimport { useEditableMenuCell } from \"./useEditableMenuCell\";\n\nexport type DataTableEditableMultiselectAsyncCellProps<T> =\n BaseEditableCellProps<T>;\n\nexport function DataTableEditableMultiselectAsyncCellInner<T>(\n props: DataTableEditableMultiselectAsyncCellProps<T>,\n ref: React.Ref<EditableCellImperativeHandle>,\n) {\n const { cell, cellProps, cellPosition, children } = props;\n const { onKeyDown: onCellKeyDown, className, ...restCellProps } = cellProps;\n\n const columnId = getColumnId(cell);\n const cellValue = getCellValue(cell, columnId);\n\n const editConfig = cell.column.columnDef.meta?.editConfig;\n const asyncEditConfig =\n editConfig?.mode === \"multiselect-async\" ? editConfig : undefined;\n\n const isValidValueType = useMemo(() => {\n if (cellValue === null || cellValue === undefined) return true;\n if (Array.isArray(cellValue)) return true;\n return false;\n }, [cellValue]);\n\n const rowId = cell.row.id;\n const row = cell.row.original as T;\n\n const context = useMemo(() => ({ row, rowId }), [row, rowId]);\n\n const {\n mode: _mode,\n lazy,\n lazyOptions,\n loadOptions: cellLoader,\n onChange,\n cache: cacheProp,\n ...passthroughProps\n } = asyncEditConfig ?? {};\n\n // Bind `{ row, rowId }` as `context` so MultiSelectMenu's loader stays row-free.\n const loadOptions = useCallback(\n (searchValue: string, ...rest: unknown[]) => {\n if (!cellLoader) return [];\n if (lazy === \"page\") {\n const [pageNumber, pageSize] = rest as [number, number];\n return (cellLoader as MultiselectAsyncCellPageLoader<T>)(\n searchValue,\n pageNumber,\n pageSize,\n context,\n );\n }\n if (lazy === \"offset\") {\n const [offset, limit] = rest as [number, number];\n return (cellLoader as MultiselectAsyncCellOffsetLoader<T>)(\n searchValue,\n offset,\n limit,\n context,\n );\n }\n if (lazy === \"group\") {\n const [previousGroupKey] = rest as [string | number | null];\n return (cellLoader as MultiselectAsyncCellGroupLoader<T>)(\n searchValue,\n previousGroupKey,\n context,\n );\n }\n return (cellLoader as MultiselectAsyncCellEagerLoader<T>)(\n searchValue,\n context,\n );\n },\n [cellLoader, context, lazy],\n );\n\n const cache = cacheProp ?? { enabled: false };\n\n const {\n tabIndex,\n cellRef,\n triggerClickRef,\n handleCellKeyDown,\n handleMenuKeyDown,\n handleImplicitClose,\n handleCellMouseDown,\n handleCellBlur,\n handleCellFocus,\n } = useEditableMenuCell({ cellPosition, onCellKeyDown, ref });\n\n const selectedOptions = useMemo(() => {\n if (!Array.isArray(cellValue)) return [];\n return cellValue as MultiSelectMenuOption[];\n }, [cellValue]);\n\n if (!isValidValueType || !asyncEditConfig) {\n const { cellProps: _cellProps, ...immutableCellProps } = props;\n return <DataTableBodyImmutableCell {...immutableCellProps} />;\n }\n\n return (\n <MultiSelectMenu\n // After destructure, `lazy`/`loadOptions` are no longer one union branch.\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n lazy={lazy as any}\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n loadOptions={loadOptions as any}\n lazyOptions={lazyOptions}\n cache={cache}\n {...passthroughProps}\n trigger={({\n ref: triggerRef,\n onClick,\n onKeyDown: menuKeyDown,\n \"aria-controls\": ariaControls,\n \"aria-expanded\": ariaExpanded,\n \"aria-haspopup\": ariaHaspopup,\n \"data-state\": dataState,\n }) => {\n triggerClickRef.current = onClick;\n const isOpen = ariaExpanded;\n return (\n <TableBodyCell\n ref={mergeRefs([\n triggerRef as Ref<HTMLElement>,\n cellRef as Ref<HTMLElement>,\n ])}\n tabIndex={tabIndex}\n type=\"data-table\"\n {...restCellProps}\n className={cx(styles[\"data-table-body-cell-editable\"], className)}\n onMouseDown={handleCellMouseDown(onClick)}\n onBlur={handleCellBlur}\n onFocus={handleCellFocus}\n data-cell-pos={formatCellPositionString(cellPosition)}\n data-anv-editable-cell=\"true\"\n aria-controls={ariaControls}\n aria-expanded={ariaExpanded}\n aria-haspopup={ariaHaspopup}\n data-state={dataState}\n onKeyDown={(e) => handleCellKeyDown(e, menuKeyDown, isOpen)}\n >\n {children}\n {!isOpen && <DataTableEditableCellEditIcon />}\n <SrOnly>\n {isOpen\n ? \"Press Enter or Space to select cell values. Press Escape or F2 to close.\"\n : \"Press Enter or F2 to edit cell value.\"}\n </SrOnly>\n </TableBodyCell>\n );\n }}\n label={String(\n cell.column.columnDef.meta?.columnDef?.headerLabel ?? \"Select\",\n )}\n value={selectedOptions}\n onSelectedOptionsChange={(selected) => {\n onChange?.(selected, rowId);\n }}\n onMenuKeyDown={handleMenuKeyDown}\n onImplicitClose={handleImplicitClose}\n />\n );\n}\n\n/**\n * Async multi-select menu editor. Cell value is `MultiSelectMenuOption[]`, not\n * ids. `loadOptions` receives `{ row, rowId }` as `context`; cache defaults to\n * disabled. Missing `editConfig` or a non-array, non-nullish value falls back\n * to a read-only body cell.\n */\nexport const DataTableEditableMultiselectAsyncCell = Object.assign(\n forwardRef(DataTableEditableMultiselectAsyncCellInner) as <T>(\n props: DataTableEditableMultiselectAsyncCellProps<T> & {\n ref?: React.Ref<EditableCellImperativeHandle>;\n },\n ) => React.ReactElement,\n { displayName: \"DataTableEditableMultiselectAsyncCell\" },\n);\n","import { forwardRef, type Ref, useMemo } from \"react\";\nimport cx from \"classnames\";\n\nimport { SelectMenuSync } from \"../../../../../../components/SelectMenu/SelectMenuSync\";\nimport type { SelectMenuOption } from \"../../../../../../components/SelectMenu/types\";\n\nimport { SrOnly } from \"../../../../../../components/SrOnly\";\n\nimport { DataTableEditableCellEditIcon } from \"./DataTableEditableCellEditIcon\";\nimport { TableBodyCell } from \"../../../base/cells/TableBodyCell\";\n\nimport styles from \"./DataTableEditableCells.module.scss\";\nimport type { EditableCellImperativeHandle } from \"./types\";\nimport { formatCellPositionString } from \"../util/cellPositionHelpers\";\nimport { mergeRefs } from \"../../../../../../hooks/useMergeRefs/useMergeRefs\";\nimport type { BaseEditableCellProps } from \"./types\";\nimport {\n getColumnId,\n getCellValue,\n logWarningForInvalidCellValueType,\n} from \"../util/cellTypeHelpers\";\nimport { DataTableBodyImmutableCell } from \"../cells/DataTableBodyImmutableCell\";\nimport type { BooleanFormatterOptions } from \"../../../formatters\";\nimport { useEditableMenuCell } from \"./useEditableMenuCell\";\n\nexport type DataTableEditableBooleanCellProps<T> = BaseEditableCellProps<T>;\n\nfunction DataTableEditableBooleanCellInner<T>(\n props: DataTableEditableBooleanCellProps<T>,\n ref: React.Ref<EditableCellImperativeHandle>,\n) {\n const { cell, cellProps, cellPosition, children } = props;\n const { onKeyDown: onCellKeyDown, className, ...restCellProps } = cellProps;\n\n const columnId = getColumnId(cell);\n const cellValue = getCellValue(cell, columnId);\n\n const meta = cell.column.columnDef.meta;\n const editConfig = meta?.editConfig;\n const booleanEditConfig =\n editConfig?.mode === \"boolean\" ? editConfig : undefined;\n\n const [, isValidValueType] = useMemo(() => {\n let value: boolean | null;\n let isValid = true;\n\n if (cellValue === undefined || cellValue === null) {\n value = null;\n isValid = true;\n return [value, isValid];\n }\n\n if (typeof cellValue === \"boolean\") {\n value = cellValue;\n } else {\n value = null;\n isValid = false;\n }\n\n if (!isValid) {\n logWarningForInvalidCellValueType({\n columnId: String(columnId),\n editMode: \"boolean\",\n expectedType: \"boolean\",\n receivedType: Array.isArray(cellValue) ? \"array\" : typeof cellValue,\n });\n }\n return [value, isValid];\n }, [cellValue, columnId]);\n\n const options: SelectMenuOption[] = useMemo(() => {\n const config =\n booleanEditConfig?.mode === \"boolean\"\n ? booleanEditConfig\n : {\n trueLabel: undefined,\n falseLabel: undefined,\n allowNull: false,\n nullLabel: undefined,\n };\n\n const typeConfig = cell.column.columnDef.meta?.columnDef?.type;\n const typeOptions: BooleanFormatterOptions | undefined =\n typeof typeConfig === \"object\" && typeConfig.type === \"boolean\"\n ? (typeConfig.options as BooleanFormatterOptions)\n : undefined;\n\n const items: SelectMenuOption[] = [\n {\n id: \"true\",\n label: config.trueLabel ?? typeOptions?.trueLabel ?? \"True\",\n },\n {\n id: \"false\",\n label: config.falseLabel ?? typeOptions?.falseLabel ?? \"False\",\n },\n ];\n if (config.allowNull) {\n items.push({ id: \"null\", label: config.nullLabel ?? \"Unset\" });\n }\n return items;\n }, [booleanEditConfig, cell.column.columnDef.meta?.columnDef?.type]);\n\n const rowId = cell.row.id;\n const onChange = booleanEditConfig?.onChange;\n const hasEditableConfig = !!booleanEditConfig;\n\n const {\n tabIndex,\n cellRef,\n triggerClickRef,\n handleCellKeyDown,\n handleMenuKeyDown,\n handleImplicitClose,\n handleCellMouseDown,\n handleCellBlur,\n handleCellFocus,\n } = useEditableMenuCell({ cellPosition, onCellKeyDown, ref });\n\n // `undefined` is unselected; `null` matches the Unset option id `\"null\"`.\n const selectedOption = useMemo(() => {\n if (cellValue === undefined) return null;\n return options.find((o) => o.id === String(cellValue)) ?? null;\n }, [options, cellValue]);\n\n if (!isValidValueType || !hasEditableConfig) {\n const { cellProps: _cellProps, ...immutableCellProps } = props;\n return <DataTableBodyImmutableCell {...immutableCellProps} />;\n }\n\n return (\n <SelectMenuSync\n trigger={({\n ref: triggerRef,\n onClick,\n onKeyDown: menuKeyDown,\n \"aria-controls\": ariaControls,\n \"aria-expanded\": ariaExpanded,\n \"aria-haspopup\": ariaHaspopup,\n \"data-state\": dataState,\n }) => {\n triggerClickRef.current = onClick;\n const isOpen = ariaExpanded;\n return (\n <TableBodyCell\n ref={mergeRefs([\n triggerRef as Ref<HTMLElement>,\n cellRef as Ref<HTMLElement>,\n ])}\n tabIndex={tabIndex}\n type=\"data-table\"\n {...restCellProps}\n className={cx(styles[\"data-table-body-cell-editable\"], className)}\n onMouseDown={handleCellMouseDown(onClick)}\n onBlur={handleCellBlur}\n onFocus={handleCellFocus}\n data-cell-pos={formatCellPositionString(cellPosition)}\n data-anv-editable-cell=\"true\"\n aria-controls={ariaControls}\n aria-expanded={ariaExpanded}\n aria-haspopup={ariaHaspopup}\n data-state={dataState}\n onKeyDown={(e) => handleCellKeyDown(e, menuKeyDown, isOpen)}\n >\n {children}\n {!isOpen && <DataTableEditableCellEditIcon />}\n <SrOnly>\n {isOpen\n ? \"Press Enter or Space to select a cell value. Press Escape or F2 to cancel.\"\n : \"Press Enter or F2 to edit cell value.\"}\n </SrOnly>\n </TableBodyCell>\n );\n }}\n label={String(\n cell.column.columnDef.meta?.columnDef?.headerLabel ?? \"Select\",\n )}\n options={options}\n value={selectedOption}\n onSelectedOptionChange={(option) => {\n if (!option) return;\n const id = String(option.id);\n const value = id === \"true\" ? true : id === \"false\" ? false : null;\n onChange?.(value as T[typeof columnId], rowId);\n }}\n disableSearch\n onMenuKeyDown={handleMenuKeyDown}\n onImplicitClose={handleImplicitClose}\n popoverWidth=\"reference\"\n />\n );\n}\n\n/**\n * Menu editor for boolean cells. Missing boolean `editConfig`, or a value that\n * is neither boolean nor nullish, falls back to a read-only body cell. Labels\n * prefer `editConfig`, then formatter options, then True/False; Unset only when\n * `allowNull`.\n */\nexport const DataTableEditableBooleanCell = Object.assign(\n forwardRef(DataTableEditableBooleanCellInner) as <T>(\n props: DataTableEditableBooleanCellProps<T> & {\n ref?: React.Ref<EditableCellImperativeHandle>;\n },\n ) => React.ReactElement,\n { displayName: \"DataTableEditableBooleanCell\" },\n);\n","import { createContext, type RefObject } from \"react\";\n\nexport type DataTableSurfaceRegistration = {\n id: string;\n /** Closes the surface, optionally suppressing focus restoration. */\n close: (options?: { restoreFocus?: boolean }) => void;\n};\n\nexport type DataTableSurfaceCoordinator = {\n /** Closes the previous surface without restoring focus, then registers this one. */\n requestOpen: (registration: DataTableSurfaceRegistration) => void;\n /** Clears the active registration only when its id matches. */\n clear: (id: string) => void;\n /** After place/drag/resize, keep overlapping this element's box; DataTable passes the table container. */\n intersectionBoundaryRef?: RefObject<HTMLElement | null>;\n};\n\nexport const DataTableSurfaceCoordinatorContext =\n createContext<DataTableSurfaceCoordinator | null>(null);\n","import { useContext } from \"react\";\n\nimport { DataTableSurfaceCoordinatorContext } from \"./DataTableSurfaceCoordinatorContext\";\n\n/** Returns the nearest surface coordinator, or `null` outside its provider. */\nexport function useDataTableSurfaceCoordinator() {\n return useContext(DataTableSurfaceCoordinatorContext);\n}\n","import { useCallback, useMemo, useRef, useState } from \"react\";\n\nimport type {\n CustomEditCloseReason,\n CustomEditConfig,\n CustomEditController,\n CustomEditDraftValue,\n CustomEditFieldValueUpdater,\n CustomEditInitialValue,\n CustomEditPresentObjectValue,\n CustomEditValidation,\n TableRow,\n} from \"../../../types\";\n\ntype CustomObjectValue = object;\n\ntype CustomEditHelperValue<T, K extends keyof T> = CustomEditDraftValue<T, K>;\n\ntype CustomEditHelperPresentValue<\n T,\n K extends keyof T,\n> = CustomEditPresentObjectValue<T, K>;\n\ntype CustomEditHelperInitialValue<\n T,\n K extends keyof T,\n> = CustomEditInitialValue<T, K>;\n\ntype CloseAction = \"submit\" | \"discard\";\n\nfunction isCustomDraftValueUpdater<TValue>(\n nextValue: TValue | ((previousValue: TValue) => TValue),\n): nextValue is (previousValue: TValue) => TValue {\n return typeof nextValue === \"function\";\n}\n\nfunction isCustomFieldValueUpdater<\n TValue extends CustomObjectValue,\n TField extends keyof TValue,\n>(\n nextValue: CustomEditFieldValueUpdater<TValue, TField>,\n): nextValue is (\n previousValue: TValue[TField] | undefined,\n draftValue: Partial<TValue>,\n) => TValue[TField] {\n return typeof nextValue === \"function\";\n}\n\nfunction isObjectDraftValue<TValue extends CustomObjectValue>(\n value: unknown,\n): value is Partial<TValue> {\n return value !== null && typeof value === \"object\" && !Array.isArray(value);\n}\n\nfunction getDraftObject<TValue extends CustomObjectValue>(\n draftValue: unknown,\n): Partial<TValue> {\n // Arrays and primitives contribute no fields to dirty/changed-field checks.\n return isObjectDraftValue<TValue>(draftValue) ? draftValue : {};\n}\n\nfunction deriveChangedFields<TValue extends CustomObjectValue>(\n initialValue: unknown,\n draftValue: unknown,\n): ReadonlyArray<keyof TValue> {\n const initialObject = getDraftObject<TValue>(initialValue);\n const draftObject = getDraftObject<TValue>(draftValue);\n const orderedKeys = Array.from(\n new Set([...Object.keys(initialObject), ...Object.keys(draftObject)]),\n ) as Array<keyof TValue>;\n\n return orderedKeys.filter(\n (field) => !Object.is(initialObject[field], draftObject[field]),\n );\n}\n\nfunction deriveIsDirty(\n initialValue: unknown,\n draftValue: unknown,\n changedFields: ReadonlyArray<PropertyKey>,\n): boolean {\n const initialValueIsNullish = initialValue == null;\n const draftValueIsNullish = draftValue == null;\n\n if (initialValueIsNullish || draftValueIsNullish) {\n // Both nullish: dirty only when `null` vs `undefined`. One-sided nullish is\n // always dirty.\n return initialValueIsNullish && draftValueIsNullish\n ? !Object.is(initialValue, draftValue)\n : true;\n }\n\n return changedFields.length > 0;\n}\n\nfunction deriveValidation<TValue extends CustomObjectValue, TDraftValue>(\n validateDraft:\n | ((\n draftValue: TDraftValue,\n rowId: string,\n ) => CustomEditValidation<TValue> | undefined)\n | undefined,\n draftValue: TDraftValue,\n rowId: string,\n): CustomEditValidation<TValue> {\n return validateDraft?.(draftValue, rowId) ?? {};\n}\n\nfunction hasValidationErrors<TValue extends CustomObjectValue>(\n validation: CustomEditValidation<TValue>,\n): boolean {\n const formError = validation.formError;\n const fieldErrors = Object.values(validation.fieldErrors ?? {});\n\n // `false` is an explicit all-clear, not an error.\n return (\n (formError != null && formError !== false) ||\n fieldErrors.some((fieldError) => fieldError != null && fieldError !== false)\n );\n}\n\nexport type CustomEditControllerState<\n TValue extends CustomObjectValue,\n TDraftValue = Partial<TValue>,\n TInitialValue = TValue,\n> = {\n /** Draft, dirty, validation, and close APIs for the custom renderer. */\n controller: CustomEditController<TValue, TDraftValue, TInitialValue>;\n /** Invokes the callback last registered with `setInitialFocus`. */\n runInitialFocus: () => void;\n};\n\nexport type UseCustomEditControllerStateOptions<T, K extends keyof T> = {\n /** Row whose column value seeds the draft. */\n row: TableRow<T>;\n /** Field on the row being edited. */\n columnId: K;\n /** Validate, commit, and request-close callbacks for this column. */\n editConfig: CustomEditConfig<T, K>;\n /** After a close that was not blocked by validation or `onRequestClose`. */\n onCloseEditor?: () => void;\n};\n\nexport type UseCustomEditHelperStateOptions<\n T,\n K extends keyof T,\n> = UseCustomEditControllerStateOptions<T, K>;\n\n/**\n * React custom-edit controller. Escape discards; other `requestClose` reasons\n * submit. `blockOnValidationError` blocks submit only; `onRequestClose`\n * returning `false` blocks submit and discard.\n */\nexport function useCustomEditControllerState<T, K extends keyof T>({\n row,\n columnId,\n editConfig,\n onCloseEditor,\n}: UseCustomEditControllerStateOptions<T, K>): CustomEditControllerState<\n CustomEditHelperPresentValue<T, K>,\n CustomEditHelperValue<T, K>,\n CustomEditHelperInitialValue<T, K>\n> {\n const rowId = String(row.id);\n const initialValueRef = useRef(\n row[columnId] as CustomEditHelperInitialValue<T, K>,\n );\n const initialValue = initialValueRef.current;\n const [draftValue, setDraftValueState] = useState<\n CustomEditHelperValue<T, K>\n >(initialValue as CustomEditHelperValue<T, K>);\n const draftValueRef = useRef(draftValue);\n const initialFocusRef = useRef<(() => void) | null>(null);\n\n const getValidation = useCallback(\n (nextDraftValue: CustomEditHelperValue<T, K>) =>\n deriveValidation<\n CustomEditHelperPresentValue<T, K>,\n CustomEditHelperValue<T, K>\n >(editConfig.validateDraft, nextDraftValue, rowId),\n [editConfig.validateDraft, rowId],\n );\n\n const setDraftValue = useCallback<\n CustomEditController<\n CustomEditHelperPresentValue<T, K>,\n CustomEditHelperValue<T, K>,\n CustomEditHelperInitialValue<T, K>\n >[\"setDraftValue\"]\n >(\n (nextValue) => {\n const previousValue = draftValueRef.current;\n const resolvedValue = isCustomDraftValueUpdater(nextValue)\n ? nextValue(previousValue)\n : nextValue;\n\n draftValueRef.current = resolvedValue;\n setDraftValueState(resolvedValue);\n editConfig.onDraftUpdate?.(resolvedValue, rowId);\n\n return resolvedValue;\n },\n [editConfig, rowId],\n );\n\n const setDraftField = useCallback<\n CustomEditController<\n CustomEditHelperPresentValue<T, K>,\n CustomEditHelperValue<T, K>,\n CustomEditHelperInitialValue<T, K>\n >[\"setDraftField\"]\n >(\n (field, nextValue) => {\n return setDraftValue((previousValue) => {\n const previousObject =\n getDraftObject<CustomEditHelperPresentValue<T, K>>(previousValue);\n\n return {\n ...previousObject,\n [field]: isCustomFieldValueUpdater(nextValue)\n ? nextValue(previousObject[field], previousObject)\n : nextValue,\n } as CustomEditHelperValue<T, K>;\n });\n },\n [setDraftValue],\n );\n\n const performClose = useCallback(\n (reason: CustomEditCloseReason, action: CloseAction) => {\n const currentDraftValue = draftValueRef.current;\n const changedFields = deriveChangedFields<\n CustomEditHelperPresentValue<T, K>\n >(initialValue, currentDraftValue);\n const validation = getValidation(currentDraftValue);\n const request = {\n reason,\n draftValue: currentDraftValue,\n initialValue,\n isDirty: deriveIsDirty(initialValue, currentDraftValue, changedFields),\n validation,\n };\n\n if (\n action === \"submit\" &&\n editConfig.blockOnValidationError === true &&\n hasValidationErrors(validation)\n ) {\n return false;\n }\n\n if (editConfig.onRequestClose?.(request) === false) {\n return false;\n }\n\n if (action === \"submit\") {\n editConfig.onCommit(currentDraftValue, rowId);\n } else {\n draftValueRef.current = initialValue as CustomEditHelperValue<T, K>;\n setDraftValueState(initialValue as CustomEditHelperValue<T, K>);\n editConfig.onDraftUpdate?.(\n initialValue as CustomEditHelperValue<T, K>,\n rowId,\n );\n }\n\n onCloseEditor?.();\n },\n [editConfig, getValidation, initialValue, onCloseEditor, rowId],\n );\n\n const requestClose = useCallback<\n CustomEditController<\n CustomEditHelperPresentValue<T, K>,\n CustomEditHelperValue<T, K>,\n CustomEditHelperInitialValue<T, K>\n >[\"requestClose\"]\n >(\n (reason) => {\n performClose(reason, reason === \"escape\" ? \"discard\" : \"submit\");\n },\n [performClose],\n );\n\n const submit = useCallback<\n CustomEditController<\n CustomEditHelperPresentValue<T, K>,\n CustomEditHelperValue<T, K>,\n CustomEditHelperInitialValue<T, K>\n >[\"submit\"]\n >(() => {\n performClose(\"programmatic\", \"submit\");\n }, [performClose]);\n\n const discard = useCallback<\n CustomEditController<\n CustomEditHelperPresentValue<T, K>,\n CustomEditHelperValue<T, K>,\n CustomEditHelperInitialValue<T, K>\n >[\"discard\"]\n >(() => {\n performClose(\"programmatic\", \"discard\");\n }, [performClose]);\n\n const setInitialFocus = useCallback<\n CustomEditController<\n CustomEditHelperPresentValue<T, K>,\n CustomEditHelperValue<T, K>,\n CustomEditHelperInitialValue<T, K>\n >[\"setInitialFocus\"]\n >((focus) => {\n initialFocusRef.current = focus;\n }, []);\n\n const handleSubmit = useCallback<\n CustomEditController<\n CustomEditHelperPresentValue<T, K>,\n CustomEditHelperValue<T, K>,\n CustomEditHelperInitialValue<T, K>\n >[\"handleSubmit\"]\n >(\n (event) => {\n event?.preventDefault?.();\n requestClose(\"submit\");\n },\n [requestClose],\n );\n\n const changedFields = useMemo(\n () =>\n deriveChangedFields<CustomEditHelperPresentValue<T, K>>(\n initialValue,\n draftValue,\n ),\n [draftValue, initialValue],\n );\n\n const isDirty = useMemo(\n () => deriveIsDirty(initialValue, draftValue, changedFields),\n [changedFields, draftValue, initialValue],\n );\n\n const validation = useMemo(\n () => getValidation(draftValue),\n [draftValue, getValidation],\n );\n\n const controller = useMemo<\n CustomEditController<\n CustomEditHelperPresentValue<T, K>,\n CustomEditHelperValue<T, K>,\n CustomEditHelperInitialValue<T, K>\n >\n >(\n () => ({\n draftValue,\n initialValue,\n isDirty,\n changedFields,\n validation,\n setDraftValue,\n setDraftField,\n submit,\n discard,\n requestClose,\n setInitialFocus,\n handleSubmit,\n }),\n [\n changedFields,\n discard,\n draftValue,\n handleSubmit,\n initialValue,\n isDirty,\n requestClose,\n setDraftValue,\n setInitialFocus,\n setDraftField,\n submit,\n validation,\n ],\n );\n\n const runInitialFocus = useCallback(() => {\n initialFocusRef.current?.();\n }, []);\n\n return {\n controller,\n runInitialFocus,\n };\n}\n\n/** Alias of {@link useCustomEditControllerState}. */\nexport const useCustomEditHelperState = useCustomEditControllerState;\n\n/**\n * Imperative twin of {@link useCustomEditControllerState} for tests and\n * non-React callers. Same Escape/submit/discard and validation-block contract.\n */\nexport function createCustomEditControllerState<T, K extends keyof T>({\n row,\n columnId,\n editConfig,\n onCloseEditor,\n}: UseCustomEditControllerStateOptions<T, K>): CustomEditControllerState<\n CustomEditHelperPresentValue<T, K>,\n CustomEditHelperValue<T, K>,\n CustomEditHelperInitialValue<T, K>\n> {\n const initialValue = row[columnId] as CustomEditHelperInitialValue<T, K>;\n const rowId = String(row.id);\n let draftValue = initialValue as CustomEditHelperValue<T, K>;\n let initialFocus: (() => void) | null = null;\n\n const getValidation = (nextDraftValue: CustomEditHelperValue<T, K>) =>\n deriveValidation<\n CustomEditHelperPresentValue<T, K>,\n CustomEditHelperValue<T, K>\n >(editConfig.validateDraft, nextDraftValue, rowId);\n\n const syncDerivedState = () => {\n controller.draftValue = draftValue;\n controller.changedFields = deriveChangedFields<\n CustomEditHelperPresentValue<T, K>\n >(initialValue, draftValue);\n controller.isDirty = deriveIsDirty(\n initialValue,\n draftValue,\n controller.changedFields,\n );\n controller.validation = getValidation(draftValue);\n };\n\n const performClose = (reason: CustomEditCloseReason, action: CloseAction) => {\n const validation = getValidation(draftValue);\n const changedFields = deriveChangedFields<\n CustomEditHelperPresentValue<T, K>\n >(initialValue, draftValue);\n const request = {\n reason,\n draftValue,\n initialValue,\n isDirty: deriveIsDirty(initialValue, draftValue, changedFields),\n validation,\n };\n\n if (\n action === \"submit\" &&\n editConfig.blockOnValidationError === true &&\n hasValidationErrors(validation)\n ) {\n return false;\n }\n\n if (editConfig.onRequestClose?.(request) === false) {\n return false;\n }\n\n if (action === \"submit\") {\n editConfig.onCommit(draftValue, rowId);\n } else {\n draftValue = initialValue as CustomEditHelperValue<T, K>;\n editConfig.onDraftUpdate?.(\n initialValue as CustomEditHelperValue<T, K>,\n rowId,\n );\n syncDerivedState();\n }\n\n onCloseEditor?.();\n };\n\n const controller: CustomEditController<\n CustomEditHelperPresentValue<T, K>,\n CustomEditHelperValue<T, K>,\n CustomEditHelperInitialValue<T, K>\n > = {\n draftValue,\n initialValue,\n isDirty: false,\n changedFields: [],\n validation: getValidation(draftValue),\n setDraftValue: (nextValue) => {\n draftValue = isCustomDraftValueUpdater(nextValue)\n ? nextValue(draftValue)\n : nextValue;\n editConfig.onDraftUpdate?.(draftValue, rowId);\n syncDerivedState();\n return draftValue;\n },\n setDraftField: (field, nextValue) => {\n const previousObject =\n getDraftObject<CustomEditHelperPresentValue<T, K>>(draftValue);\n\n return controller.setDraftValue({\n ...previousObject,\n [field]: isCustomFieldValueUpdater(nextValue)\n ? nextValue(previousObject[field], previousObject)\n : nextValue,\n } as CustomEditHelperValue<T, K>);\n },\n submit: () => {\n performClose(\"programmatic\", \"submit\");\n },\n discard: () => {\n performClose(\"programmatic\", \"discard\");\n },\n requestClose: (reason) => {\n performClose(reason, reason === \"escape\" ? \"discard\" : \"submit\");\n },\n setInitialFocus: (focus) => {\n initialFocus = focus;\n },\n handleSubmit: (event) => {\n event?.preventDefault?.();\n controller.requestClose(\"submit\");\n },\n };\n\n syncDerivedState();\n\n return {\n controller,\n runInitialFocus: () => {\n initialFocus?.();\n },\n };\n}\n\n/** Alias of {@link createCustomEditControllerState}. */\nexport const createCustomEditHelperState = createCustomEditControllerState;\n","import {\n type Ref,\n forwardRef,\n useCallback,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport type { KeyboardEvent as ReactKeyboardEvent } from \"react\";\nimport cx from \"classnames\";\nimport type { Cell } from \"@tanstack/react-table\";\n\nimport { SrOnly } from \"../../../../../../components\";\nimport { Surface } from \"../../../../../../internal/components\";\nimport { mergeRefs } from \"../../../../../../hooks/useMergeRefs/useMergeRefs\";\n\nimport { dataTableCellAffordanceHostClassName } from \"../dataTableCellAffordanceHostClassName\";\nimport { DataTableEditableCellEditIcon } from \"./DataTableEditableCellEditIcon\";\nimport { TableBodyCell } from \"../../../base/cells/TableBodyCell\";\n\nimport styles from \"./DataTableEditableCells.module.scss\";\nimport dataTableCellStyles from \"../cells/DataTableCells.module.scss\";\nimport { formatCellPositionString } from \"../util/cellPositionHelpers\";\nimport type {\n BaseEditableCellProps,\n EditableCellImperativeHandle,\n} from \"./types\";\nimport { useDTFocusDispatchContext } from \"../context/focus/useDTFocusDispatchContext\";\nimport { useDataTableSurfaceCoordinator } from \"../context/surface/useDataTableSurfaceCoordinator\";\nimport {\n getCellValue,\n getColumnId,\n logWarningForInvalidCellValueType,\n} from \"../util/cellTypeHelpers\";\nimport { DataTableBodyImmutableCell } from \"../cells/DataTableBodyImmutableCell\";\nimport type {\n CustomEditConfig,\n CustomEditController,\n CustomEditRenderContext,\n TableRow,\n} from \"../../../types\";\nimport { useCustomEditControllerState } from \"./useCustomEditHelpers\";\n\ntype DataTableEditableCustomCellProps<T> = BaseEditableCellProps<T>;\n\nconst NON_SUBMIT_INPUT_TYPES = new Set([\n \"button\",\n \"submit\",\n \"reset\",\n \"checkbox\",\n \"radio\",\n \"file\",\n]);\n\nfunction isNativeInteractiveElement(target: HTMLElement) {\n const interactiveSelector = [\n \"button\",\n \"a[href]\",\n \"summary\",\n \"select\",\n 'input[type=\"button\"]',\n 'input[type=\"submit\"]',\n 'input[type=\"reset\"]',\n 'input[type=\"checkbox\"]',\n 'input[type=\"radio\"]',\n 'input[type=\"file\"]',\n ].join(\", \");\n\n return Boolean(target.closest(interactiveSelector));\n}\n\nfunction isEnterOwnedByTextEntry(target: HTMLElement) {\n if (target.isContentEditable || target.closest('[contenteditable=\"true\"]')) {\n return false;\n }\n\n if (target instanceof HTMLTextAreaElement || target.closest(\"textarea\")) {\n return false;\n }\n\n if (target.closest(\"select\")) {\n return false;\n }\n\n if (target instanceof HTMLInputElement) {\n return !NON_SUBMIT_INPUT_TYPES.has(target.type);\n }\n\n const input = target.closest(\"input\");\n if (input instanceof HTMLInputElement) {\n return !NON_SUBMIT_INPUT_TYPES.has(input.type);\n }\n\n return Boolean(\n target.closest(\n 'input:not([type=\"button\"]):not([type=\"submit\"]):not([type=\"reset\"]):not([type=\"checkbox\"]):not([type=\"radio\"]):not([type=\"file\"])',\n ),\n );\n}\n\nfunction findSubmitForm(target: HTMLElement) {\n return target.closest(\"form\");\n}\n\n/**\n * Finds the form whose text-entry Enter key may be treated as submission.\n * Controls with their own Enter behavior opt out.\n */\nfunction getCustomEditorSubmitForm(target: EventTarget | null) {\n if (!(target instanceof HTMLElement)) {\n return null;\n }\n\n const interactiveRole = target.closest(\n '[role=\"button\"], [role=\"link\"], [role=\"menuitem\"], [role=\"option\"], [role=\"switch\"], [role=\"checkbox\"], [role=\"radio\"], [role=\"tab\"], [role=\"combobox\"], [role=\"listbox\"]',\n );\n\n if (interactiveRole || isNativeInteractiveElement(target)) {\n return null;\n }\n\n if (!isEnterOwnedByTextEntry(target)) {\n return null;\n }\n\n return findSubmitForm(target);\n}\n\ntype AnyCustomEditController = CustomEditController<\n Record<string, unknown>,\n Partial<Record<string, unknown>> | null | undefined,\n Record<string, unknown> | null | undefined\n>;\n\ntype CustomEditorContentProps<T, K extends keyof T> = {\n cell: Cell<T, unknown>;\n columnId: K;\n editConfig: CustomEditConfig<T, K>;\n onControllerChange: (controller: AnyCustomEditController | null) => void;\n onRequestCloseEditor: () => void;\n};\n\nfunction CustomEditorContent<T, K extends keyof T>({\n cell,\n columnId,\n editConfig,\n onControllerChange,\n onRequestCloseEditor,\n}: CustomEditorContentProps<T, K>) {\n const row = cell.row.original as TableRow<T>;\n const rowId = String(cell.row.id);\n const { controller, runInitialFocus } = useCustomEditControllerState({\n row,\n columnId,\n editConfig,\n onCloseEditor: onRequestCloseEditor,\n });\n\n useEffect(() => {\n onControllerChange(controller as unknown as AnyCustomEditController);\n\n return () => {\n onControllerChange(null);\n };\n }, [controller, onControllerChange]);\n\n useEffect(() => {\n // Match Surface's next-frame focus timing after the renderer registers its target.\n const focusHandle = window.requestAnimationFrame(() => {\n runInitialFocus();\n });\n\n return () => {\n window.cancelAnimationFrame(focusHandle);\n };\n }, [runInitialFocus]);\n\n const renderContext = {\n row,\n rowId,\n value: row[columnId],\n controller,\n } satisfies CustomEditRenderContext<T, K>;\n\n return <>{editConfig.renderEditor(renderContext)}</>;\n}\n\nfunction DataTableEditableCustomCellInner<T>(\n props: DataTableEditableCustomCellProps<T>,\n ref: React.Ref<EditableCellImperativeHandle>,\n) {\n const { cell, cellProps, cellPosition, children } = props;\n const { onKeyDown: onCellKeyDown } = cellProps;\n const cellRef = useRef<HTMLDivElement>(null);\n const customEditControllerRef = useRef<AnyCustomEditController | null>(null);\n // Surface reports both dismissals through onClose; capture preserves the reason.\n const closeReasonRef = useRef<\"outside-click\" | \"close-button\">(\n \"outside-click\",\n );\n const shouldRestoreFocusRef = useRef(true);\n const [isOpen, setIsOpen] = useState(false);\n const [tabIndex, setTabIndex] = useState(-1);\n const { moveFocusToCell } = useDTFocusDispatchContext();\n const surfaceCoordinator = useDataTableSurfaceCoordinator();\n\n const columnId = getColumnId(cell);\n const cellValue = getCellValue(cell, columnId);\n\n const meta = cell.column.columnDef.meta;\n const editConfig = meta?.editConfig;\n const customEditConfig =\n editConfig?.mode === \"custom\"\n ? (editConfig as CustomEditConfig<T, typeof columnId>)\n : undefined;\n\n const isValidValueType = useMemo(() => {\n if (\n cellValue == null ||\n (typeof cellValue === \"object\" && !Array.isArray(cellValue))\n ) {\n return true;\n }\n\n logWarningForInvalidCellValueType({\n columnId: String(columnId),\n editMode: \"custom\",\n expectedType: \"non-array object, null, or undefined\",\n receivedType: Array.isArray(cellValue) ? \"array\" : typeof cellValue,\n });\n\n return false;\n }, [cellValue, columnId]);\n\n const surfaceId = useMemo(\n () =>\n `data-table-custom-surface-${String(cell.id).replace(/[^a-zA-Z0-9_-]/g, \"-\")}`,\n [cell.id],\n );\n const cellInstructionsId = `${surfaceId}-cell-instructions`;\n const surfaceInstructionsId = `${surfaceId}-surface-instructions`;\n\n const defaultSurfaceTitle = String(\n cell.column.columnDef.meta?.columnDef?.header?.label ??\n cell.column.columnDef.meta?.columnDef?.headerLabel ??\n columnId,\n );\n const surfaceTitle = customEditConfig?.surface?.title ?? null;\n const accessibleSurfaceLabel = `Edit ${defaultSurfaceTitle}`;\n const closeButtonLabel =\n customEditConfig?.surface?.closeButtonLabel ??\n `Commit changes and close ${defaultSurfaceTitle} custom editable cell`;\n\n const restoreFocusToOriginCell = useCallback(() => {\n window.requestAnimationFrame(() => {\n moveFocusToCell(cellPosition);\n cellRef.current?.focus();\n setTabIndex(0);\n });\n }, [cellPosition, moveFocusToCell]);\n\n const closeSurface = useCallback(\n (options: { restoreFocus?: boolean } = {}) => {\n customEditControllerRef.current = null;\n shouldRestoreFocusRef.current =\n options.restoreFocus ?? shouldRestoreFocusRef.current;\n setIsOpen(false);\n surfaceCoordinator?.clear(surfaceId);\n\n if (shouldRestoreFocusRef.current) {\n restoreFocusToOriginCell();\n }\n\n shouldRestoreFocusRef.current = true;\n },\n [restoreFocusToOriginCell, surfaceCoordinator, surfaceId],\n );\n\n const beginEditing = useCallback(() => {\n surfaceCoordinator?.requestOpen({\n id: surfaceId,\n close: (options) => {\n shouldRestoreFocusRef.current = options?.restoreFocus ?? true;\n if (customEditControllerRef.current) {\n customEditControllerRef.current.requestClose(\"programmatic\");\n return;\n }\n\n closeSurface(options);\n },\n });\n shouldRestoreFocusRef.current = true;\n setIsOpen(true);\n setTabIndex(0);\n moveFocusToCell(cellPosition);\n }, [\n cellPosition,\n closeSurface,\n moveFocusToCell,\n surfaceCoordinator,\n surfaceId,\n ]);\n\n useEffect(() => {\n return () => {\n surfaceCoordinator?.clear(surfaceId);\n };\n }, [surfaceCoordinator, surfaceId]);\n\n const handleSurfaceClose = useCallback(() => {\n const controller = customEditControllerRef.current;\n const reason = closeReasonRef.current;\n closeReasonRef.current = \"outside-click\";\n\n if (!controller) {\n return;\n }\n\n controller.requestClose(reason);\n }, []);\n\n const handleSurfaceCancel = useCallback(() => {\n customEditControllerRef.current?.requestClose(\"escape\");\n }, []);\n\n const handleSurfaceClickCapture = useCallback(\n (event: React.MouseEvent<HTMLDivElement>) => {\n if (\n (event.target as HTMLElement | null)?.closest(\n '[data-anv=\"surface-close-button\"]',\n )\n ) {\n closeReasonRef.current = \"close-button\";\n }\n },\n [],\n );\n\n const handleSurfaceKeyDown = useCallback(\n (event: ReactKeyboardEvent<HTMLDivElement>) => {\n customEditConfig?.surface?.onKeyDown?.(event);\n if (event.defaultPrevented) {\n return;\n }\n\n const submitForm = getCustomEditorSubmitForm(event.target);\n if (\n event.key !== \"Enter\" ||\n event.shiftKey ||\n event.altKey ||\n event.ctrlKey ||\n event.metaKey ||\n (\"isComposing\" in event && event.isComposing) ||\n !submitForm\n ) {\n return;\n }\n\n event.preventDefault();\n event.stopPropagation();\n submitForm.requestSubmit();\n },\n [customEditConfig],\n );\n\n useImperativeHandle(\n ref,\n () => ({\n invoke: beginEditing,\n focus: () => {\n cellRef.current?.focus();\n setTabIndex(0);\n },\n }),\n [beginEditing],\n );\n\n const classes = cx(\n dataTableCellAffordanceHostClassName,\n styles[\"data-table-body-cell-editable\"],\n cellProps.className,\n {\n [dataTableCellStyles[\"data-table-body-cell-editing\"]]: isOpen,\n },\n );\n\n const handleCellKeyDown = useCallback(\n (event: React.KeyboardEvent<HTMLDivElement>) => {\n if (isOpen) {\n return;\n }\n\n onCellKeyDown?.(event);\n },\n [isOpen, onCellKeyDown],\n );\n\n const handleCellFocus = useCallback(\n (event: React.FocusEvent<HTMLDivElement>) => {\n if (event.target !== cellRef.current) {\n return;\n }\n\n event.preventDefault();\n setTabIndex(0);\n },\n [],\n );\n\n const handleCellBlur = useCallback(\n (event: React.FocusEvent<HTMLDivElement>) => {\n const nextTarget = event.relatedTarget as Node | null;\n const surfaceElement = document.getElementById(surfaceId);\n\n if (\n (nextTarget && cellRef.current?.contains(nextTarget)) ||\n (nextTarget && surfaceElement?.contains(nextTarget))\n ) {\n return;\n }\n\n setTabIndex(-1);\n },\n [surfaceId],\n );\n\n const handleCellPointerDown = useCallback(\n (event: React.PointerEvent<HTMLDivElement>) => {\n if (event.pointerType === \"mouse\" && event.button !== 0) {\n return;\n }\n\n event.preventDefault();\n event.stopPropagation();\n beginEditing();\n },\n [beginEditing],\n );\n\n if (!isValidValueType || !customEditConfig) {\n const { cellProps: _cellProps, ...immutableCellProps } = props;\n return <DataTableBodyImmutableCell {...immutableCellProps} />;\n }\n\n return (\n <Surface id={surfaceId} open={isOpen}>\n <Surface.Trigger>\n {(triggerProps) => (\n <TableBodyCell\n ref={mergeRefs([\n triggerProps.ref as Ref<HTMLElement>,\n cellRef as Ref<HTMLElement>,\n ])}\n id={triggerProps.id}\n type=\"data-table\"\n className={classes}\n style={cellProps.style}\n tabIndex={tabIndex}\n onFocus={handleCellFocus}\n onBlur={handleCellBlur}\n onPointerDown={handleCellPointerDown}\n onKeyDown={handleCellKeyDown}\n data-cell-pos={formatCellPositionString(cellPosition)}\n data-anv-editable-cell=\"true\"\n aria-controls={triggerProps[\"aria-controls\"]}\n aria-expanded={triggerProps[\"aria-expanded\"]}\n aria-haspopup={triggerProps[\"aria-haspopup\"]}\n aria-describedby={cellInstructionsId}\n data-state={triggerProps[\"data-state\"]}\n >\n {children}\n {!isOpen && <DataTableEditableCellEditIcon />}\n <SrOnly id={cellInstructionsId}>\n {isOpen\n ? \"Custom editable cell editor is open. Press Escape to discard changes. Click outside, close the editor, or use editor controls to save current changes.\"\n : \"Custom editable cell. Press Enter, Space, or F2 to open the editor.\"}\n </SrOnly>\n </TableBodyCell>\n )}\n </Surface.Trigger>\n <Surface.Content\n intersectionBoundaryRef={surfaceCoordinator?.intersectionBoundaryRef}\n onClose={handleSurfaceClose}\n onCancel={handleSurfaceCancel}\n onClickCapture={handleSurfaceClickCapture}\n onKeyDown={handleSurfaceKeyDown}\n aria-describedby={surfaceInstructionsId}\n {...(surfaceTitle ? {} : { \"aria-label\": accessibleSurfaceLabel })}\n closeButtonLabel={closeButtonLabel}\n title={surfaceTitle}\n width={customEditConfig.surface?.width}\n maxHeight={customEditConfig.surface?.maxHeight}\n >\n <SrOnly id={surfaceInstructionsId}>\n Custom editable cell dialog. Press Escape to discard changes. Clicking\n outside or the close button commits the current draft.\n </SrOnly>\n {isOpen ? (\n <CustomEditorContent\n cell={cell}\n columnId={columnId}\n editConfig={customEditConfig}\n onControllerChange={(controller) => {\n customEditControllerRef.current = controller;\n }}\n onRequestCloseEditor={closeSurface}\n />\n ) : null}\n </Surface.Content>\n </Surface>\n );\n}\n\n/**\n * Editable grid cell that hosts a consumer-rendered object editor in a\n * coordinated surface.\n */\nexport const DataTableEditableCustomCell = Object.assign(\n forwardRef(DataTableEditableCustomCellInner) as <T>(\n props: DataTableEditableCustomCellProps<T> & {\n ref?: React.Ref<EditableCellImperativeHandle>;\n },\n ) => React.ReactElement,\n { displayName: \"DataTableEditableCustomCell\" },\n);\n","import { useCallback, useMemo, useRef } from \"react\";\nimport cx from \"classnames\";\n\nimport type { DataTableBodyCellProps as BaseDataTableBodyCellProps } from \"../../../base/cells/TableBodyCell\";\nimport { DataTableEditableTextCell } from \"../editable-cells/DataTableEditableTextCell\";\nimport { DataTableEditableNumberCell } from \"../editable-cells/DataTableEditableNumberCell\";\nimport { DataTableEditableSelectCell } from \"../editable-cells/DataTableEditableSelectCell\";\nimport { DataTableEditableSelectAsyncCell } from \"../editable-cells/DataTableEditableSelectAsyncCell\";\nimport { DataTableEditableMultiselectCell } from \"../editable-cells/DataTableEditableMultiselectCell\";\nimport { DataTableEditableMultiselectAsyncCell } from \"../editable-cells/DataTableEditableMultiselectAsyncCell\";\nimport { DataTableEditableBooleanCell } from \"../editable-cells/DataTableEditableBooleanCell\";\nimport { DataTableEditableCustomCell } from \"../editable-cells/DataTableEditableCustomCell\";\n\nimport styles from \"./DataTableCells.module.scss\";\nimport type { Cell } from \"@tanstack/react-table\";\nimport { useCommonPinningStyles } from \"../../../internal/getCommonPinningStyles\";\nimport { useDTFocusDispatchContext } from \"../context/focus/useDTFocusDispatchContext\";\nimport type { EditableCellImperativeHandle } from \"../editable-cells/types\";\nimport type { CellPosition } from \"../../../internal/types\";\nimport type { TableRow } from \"../../../types\";\nimport { dataTableCellAffordanceHostClassName } from \"../dataTableCellAffordanceHostClassName\";\n\nexport type DataTableBodyMutableCellProps<T> = Omit<\n BaseDataTableBodyCellProps,\n \"onChange\"\n> & {\n /** Coordinates used by the grid's roving-focus manager. */\n cellPosition: CellPosition;\n /** Supplies row and column state for the configured editor and validation styling. */\n cell: Cell<T, unknown>;\n};\n\n/**\n * Editable ARIA grid cell with roving navigation. Delegates to the editor\n * configured by the column and invokes it with Enter, Space, or F2.\n */\nexport function DataTableBodyMutableCell<T>(\n props: DataTableBodyMutableCellProps<T>,\n) {\n const { cell, cellPosition, children, ...rest } = props;\n const editableCellRef = useRef<EditableCellImperativeHandle>(null);\n\n const column = cell.column;\n\n const rowCanExpand = cell.row.getCanExpand();\n const rowIsExpanded = cell.row.getIsExpanded();\n const toggleRowExpanded = cell.row.toggleExpanded;\n\n const meta = (cell.row.original as TableRow<T>).meta;\n const cellError = meta?.errors?.[column.id as keyof T];\n const cellWarning = meta?.warnings?.[column.id as keyof T];\n\n const classes = cx(\n styles[\"data-table-body-cell\"],\n dataTableCellAffordanceHostClassName,\n rest.className,\n {\n [styles[\"data-table-body-cell-error\"]]: !!cellError,\n [styles[\"data-table-body-cell-warning\"]]: !cellError && !!cellWarning,\n },\n );\n const commonPinningStyles = useCommonPinningStyles<T>(column);\n\n const { jumpFocus, moveFocus } = useDTFocusDispatchContext();\n\n const editMode = column.columnDef.meta?.editMode;\n\n const handleKeyDown = useCallback(\n (event: React.KeyboardEvent<HTMLTableCellElement>) => {\n switch (event.key) {\n case \"ArrowUp\":\n event.preventDefault();\n moveFocus(\"up\");\n return;\n case \"ArrowDown\":\n event.preventDefault();\n moveFocus(\"down\");\n return;\n case \"ArrowLeft\":\n event.preventDefault();\n if (rowCanExpand && rowIsExpanded) {\n toggleRowExpanded();\n return;\n }\n moveFocus(\"left\");\n return;\n case \"ArrowRight\":\n if (rowCanExpand && !rowIsExpanded) {\n toggleRowExpanded();\n return;\n }\n event.preventDefault();\n moveFocus(\"right\");\n return;\n case \"Home\": {\n event.preventDefault();\n jumpFocus(\"left\");\n return;\n }\n case \"End\": {\n event.preventDefault();\n jumpFocus(\"right\");\n return;\n }\n case \"Enter\":\n case \"F2\":\n case \" \": {\n event.preventDefault();\n editableCellRef.current?.invoke();\n return;\n }\n default:\n break;\n }\n },\n [moveFocus, jumpFocus, rowCanExpand, rowIsExpanded, toggleRowExpanded],\n );\n\n const EditableComponent = useMemo(() => {\n if (editMode === \"text\") {\n return DataTableEditableTextCell;\n }\n if (editMode === \"number\") {\n return DataTableEditableNumberCell;\n }\n if (editMode === \"select\") {\n return DataTableEditableSelectCell;\n }\n if (editMode === \"select-async\") {\n return DataTableEditableSelectAsyncCell;\n }\n if (editMode === \"multiselect\") {\n return DataTableEditableMultiselectCell;\n }\n if (editMode === \"multiselect-async\") {\n return DataTableEditableMultiselectAsyncCell;\n }\n if (editMode === \"boolean\") {\n return DataTableEditableBooleanCell;\n }\n if (editMode === \"custom\") {\n return DataTableEditableCustomCell;\n }\n }, [editMode]);\n\n if (!EditableComponent) {\n return null;\n }\n\n return (\n <EditableComponent<T>\n ref={editableCellRef}\n cellPosition={cellPosition}\n cell={cell}\n cellProps={{\n ...rest,\n className: classes,\n onKeyDown: handleKeyDown,\n style: commonPinningStyles,\n }}\n >\n {children}\n </EditableComponent>\n );\n}\n","import * as React from \"react\";\nconst SvgOpenInFull = (props) => /* @__PURE__ */ React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", width: \"1em\", height: \"1em\", viewBox: \"0 0 24 24\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M21 8.59V4c0-.55-.45-1-1-1h-4.59c-.89 0-1.34 1.08-.71 1.71l1.59 1.59-10 10-1.59-1.59c-.62-.63-1.7-.19-1.7.7V20c0 .55.45 1 1 1h4.59c.89 0 1.34-1.08.71-1.71L7.71 17.7l10-10 1.59 1.59c.62.63 1.7.19 1.7-.7z\" }));\nexport default SvgOpenInFull;\n","import {\n type ReactNode,\n type Ref,\n useCallback,\n useLayoutEffect,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport cx from \"classnames\";\n\nimport { Icon, SrOnly } from \"../../../../../../components\";\nimport { Surface } from \"../../../../../../internal/components\";\nimport { mergeRefs } from \"../../../../../../hooks/useMergeRefs/useMergeRefs\";\nimport OpenInFullIcon from \"../../../../../../../public/assets/icons/material/round/open_in_full.svg\";\n\nimport { DataTableCellAffordance } from \"../DataTableCellAffordance\";\nimport { dataTableCellAffordanceHostClassName } from \"../dataTableCellAffordanceHostClassName\";\nimport { TableBodyCell } from \"../../../base/cells/TableBodyCell\";\nimport type { DataTableBodyImmutableCellProps } from \"./DataTableBodyImmutableCell\";\nimport { formatCellPositionString } from \"../util/cellPositionHelpers\";\nimport { useCommonPinningStyles } from \"../../../internal/getCommonPinningStyles\";\nimport { useDTFocusDispatchContext } from \"../context/focus/useDTFocusDispatchContext\";\nimport { useDataTableSurfaceCoordinator } from \"../context/surface/useDataTableSurfaceCoordinator\";\nimport type { TableRow } from \"../../../types\";\n\nimport styles from \"./DataTableOverflowCell.module.scss\";\nimport cellStyles from \"./DataTableCells.module.scss\";\n\nconst OVERFLOW_TOLERANCE_PX = 1;\n\ntype OverflowState = {\n horizontal: boolean;\n vertical: boolean;\n};\n\nfunction isOverflowing(element: HTMLElement): OverflowState {\n return {\n horizontal:\n element.scrollWidth - element.clientWidth > OVERFLOW_TOLERANCE_PX,\n vertical:\n element.scrollHeight - element.clientHeight > OVERFLOW_TOLERANCE_PX,\n };\n}\n\nfunction hasOverflow(state: OverflowState) {\n return state.horizontal || state.vertical;\n}\n\nfunction getSurfaceTitle<T>(props: DataTableBodyImmutableCellProps<T>) {\n const columnDef = props.cell.column.columnDef.meta?.columnDef;\n return String(\n columnDef?.header?.label ?? columnDef?.headerLabel ?? props.cell.column.id,\n );\n}\n\n/**\n * Read-only ARIA grid cell that opens clipped content in a disclosure surface.\n * Supports pointer activation and the grid's disclosure and navigation keys.\n */\nexport function DataTableOverflowCell<T>(\n props: DataTableBodyImmutableCellProps<T>,\n) {\n const { cell, cellPosition, children, ...rest } = props;\n const cellRef = useRef<HTMLDivElement>(null);\n const surfaceContentRef = useRef<HTMLDivElement>(null);\n const viewportRef = useRef<HTMLDivElement>(null);\n const [overflow, setOverflow] = useState<OverflowState>({\n horizontal: false,\n vertical: false,\n });\n const [isOpen, setIsOpen] = useState(false);\n const [isCellFocused, setIsCellFocused] = useState(false);\n const [isCellHovered, setIsCellHovered] = useState(false);\n const [tabIndex, setTabIndex] = useState(-1);\n const { moveFocus, jumpFocus, moveFocusToCell } = useDTFocusDispatchContext();\n const surfaceCoordinator = useDataTableSurfaceCoordinator();\n const surfaceTitle = getSurfaceTitle(props);\n const rowCanExpand = cell.row.getCanExpand();\n const rowIsExpanded = cell.row.getIsExpanded();\n const toggleRowExpanded = cell.row.toggleExpanded;\n const meta = (cell.row.original as TableRow<T>).meta;\n const cellError = meta?.errors?.[cell.column.id as keyof T];\n const cellWarning = meta?.warnings?.[cell.column.id as keyof T];\n const surfaceId = useMemo(\n () =>\n `data-table-overflow-surface-${String(cell.id).replace(/[^a-zA-Z0-9_-]/g, \"-\")}`,\n [cell.id],\n );\n const cellInstructionsId = `${surfaceId}-cell-instructions`;\n const surfaceInstructionsId = `${surfaceId}-surface-instructions`;\n const isClipped = hasOverflow(overflow);\n const isResizeObserverEnabled = isOpen || isCellFocused || isCellHovered;\n const shouldRestoreFocusRef = useRef(true);\n const commonPinningStyles = useCommonPinningStyles<T>(cell.column);\n\n const updateOverflow = useCallback((): OverflowState | null => {\n const viewport = viewportRef.current;\n if (!viewport) {\n return null;\n }\n\n const nextOverflow = isOverflowing(viewport);\n setOverflow((currentOverflow) => {\n if (\n currentOverflow.horizontal === nextOverflow.horizontal &&\n currentOverflow.vertical === nextOverflow.vertical\n ) {\n return currentOverflow;\n }\n\n return nextOverflow;\n });\n\n return nextOverflow;\n }, []);\n\n useLayoutEffect(() => {\n updateOverflow();\n }, [children, updateOverflow]);\n\n useEffect(() => {\n const viewport = viewportRef.current;\n if (\n !isResizeObserverEnabled ||\n !viewport ||\n typeof ResizeObserver === \"undefined\"\n ) {\n return;\n }\n\n const resizeObserver = new ResizeObserver(() => {\n updateOverflow();\n });\n\n resizeObserver.observe(viewport);\n\n return () => {\n resizeObserver.disconnect();\n };\n }, [isResizeObserverEnabled, updateOverflow]);\n\n const restoreFocusToOriginCell = useCallback(() => {\n window.requestAnimationFrame(() => {\n moveFocusToCell(cellPosition);\n cellRef.current?.focus();\n setTabIndex(0);\n });\n }, [cellPosition, moveFocusToCell]);\n\n const closeSurface = useCallback(\n (options: { restoreFocus?: boolean } = {}) => {\n shouldRestoreFocusRef.current =\n options.restoreFocus ?? shouldRestoreFocusRef.current;\n setIsOpen(false);\n surfaceCoordinator?.clear(surfaceId);\n\n if (shouldRestoreFocusRef.current) {\n restoreFocusToOriginCell();\n }\n\n shouldRestoreFocusRef.current = true;\n },\n [restoreFocusToOriginCell, surfaceCoordinator, surfaceId],\n );\n\n const openSurface = useCallback(() => {\n const nextOverflow = updateOverflow();\n if (!hasOverflow(nextOverflow ?? overflow)) {\n return false;\n }\n\n surfaceCoordinator?.requestOpen({\n id: surfaceId,\n close: closeSurface,\n });\n shouldRestoreFocusRef.current = true;\n setIsOpen(true);\n setTabIndex(0);\n moveFocusToCell(cellPosition);\n\n return true;\n }, [\n cellPosition,\n closeSurface,\n moveFocusToCell,\n overflow,\n surfaceCoordinator,\n surfaceId,\n updateOverflow,\n ]);\n\n useEffect(() => {\n return () => {\n surfaceCoordinator?.clear(surfaceId);\n };\n }, [surfaceCoordinator, surfaceId]);\n\n const handleCellFocus = useCallback(\n (event: React.FocusEvent<HTMLDivElement>) => {\n if (event.target !== cellRef.current) {\n return;\n }\n\n updateOverflow();\n setIsCellFocused(true);\n setTabIndex(0);\n },\n [updateOverflow],\n );\n\n const handleCellBlur = useCallback(\n (event: React.FocusEvent<HTMLDivElement>) => {\n const nextTarget = event.relatedTarget as Node | null;\n const surfaceElement = document.getElementById(surfaceId);\n\n if (\n (nextTarget && cellRef.current?.contains(nextTarget)) ||\n (nextTarget && surfaceElement?.contains(nextTarget))\n ) {\n return;\n }\n\n setIsCellFocused(false);\n setTabIndex(-1);\n },\n [surfaceId],\n );\n\n const handleCellPointerEnter = useCallback(() => {\n updateOverflow();\n setIsCellHovered(true);\n }, [updateOverflow]);\n\n const handleCellPointerLeave = useCallback(() => {\n setIsCellHovered(false);\n }, []);\n\n const handleCellPointerDown = useCallback(\n (event: React.PointerEvent<HTMLDivElement>) => {\n if (event.pointerType === \"mouse\" && event.button !== 0) {\n return;\n }\n\n if (!openSurface()) {\n return;\n }\n\n event.preventDefault();\n event.stopPropagation();\n },\n [openSurface],\n );\n\n const handleCellKeyDown = useCallback(\n (event: React.KeyboardEvent<HTMLDivElement>) => {\n switch (event.key) {\n case \"ArrowUp\":\n event.preventDefault();\n moveFocus(\"up\");\n return;\n case \"ArrowDown\":\n event.preventDefault();\n moveFocus(\"down\");\n return;\n case \"ArrowLeft\":\n event.preventDefault();\n if (rowCanExpand && rowIsExpanded) {\n toggleRowExpanded();\n return;\n }\n moveFocus(\"left\");\n return;\n case \"ArrowRight\":\n event.preventDefault();\n if (rowCanExpand && !rowIsExpanded) {\n toggleRowExpanded();\n return;\n }\n moveFocus(\"right\");\n return;\n case \"Home\":\n event.preventDefault();\n jumpFocus(\"left\");\n return;\n case \"End\":\n event.preventDefault();\n jumpFocus(\"right\");\n return;\n case \"Enter\":\n case \" \":\n case \"F2\":\n if (openSurface()) {\n event.preventDefault();\n }\n return;\n default:\n return;\n }\n },\n [\n jumpFocus,\n moveFocus,\n openSurface,\n rowCanExpand,\n rowIsExpanded,\n toggleRowExpanded,\n ],\n );\n\n const hasSurfaceTrigger = isClipped || isOpen;\n const hasCellInstructions = isClipped || isOpen;\n\n const classes = cx(\n cellStyles[\"data-table-body-cell\"],\n {\n [dataTableCellAffordanceHostClassName]: isClipped,\n [cellStyles[\"data-table-body-cell-error\"]]: !!cellError,\n [cellStyles[\"data-table-body-cell-warning\"]]: !cellError && !!cellWarning,\n },\n styles[\"data-table-body-cell-overflow\"],\n rest.className,\n );\n\n const content = (\n <div\n ref={viewportRef}\n className={styles[\"data-table-body-cell-overflow-viewport\"]}\n >\n <div className={styles[\"data-table-body-cell-overflow-content\"]}>\n {children as ReactNode}\n </div>\n </div>\n );\n\n return (\n <Surface id={surfaceId} open={isOpen}>\n <Surface.Trigger>\n {(triggerProps) => (\n <TableBodyCell\n ref={mergeRefs([\n triggerProps.ref as Ref<HTMLElement>,\n cellRef as Ref<HTMLElement>,\n ])}\n type=\"data-table\"\n {...rest}\n id={triggerProps.id}\n className={classes}\n tabIndex={tabIndex}\n style={commonPinningStyles}\n onFocus={handleCellFocus}\n onBlur={handleCellBlur}\n onPointerEnter={handleCellPointerEnter}\n onPointerLeave={handleCellPointerLeave}\n onPointerDown={handleCellPointerDown}\n onKeyDown={handleCellKeyDown}\n data-cell-pos={formatCellPositionString(cellPosition)}\n aria-controls={\n hasSurfaceTrigger ? triggerProps[\"aria-controls\"] : undefined\n }\n aria-expanded={\n hasSurfaceTrigger ? triggerProps[\"aria-expanded\"] : undefined\n }\n aria-haspopup={\n hasSurfaceTrigger ? triggerProps[\"aria-haspopup\"] : undefined\n }\n aria-describedby={\n hasSurfaceTrigger ? cellInstructionsId : undefined\n }\n data-state={\n hasSurfaceTrigger ? triggerProps[\"data-state\"] : undefined\n }\n >\n {content}\n {isClipped ? (\n <DataTableCellAffordance interactive>\n <Icon svg={OpenInFullIcon} size=\"small\" color=\"subtle\" />\n </DataTableCellAffordance>\n ) : null}\n {hasCellInstructions ? (\n <SrOnly id={cellInstructionsId}>\n Cell content is clipped. Press Enter, Space, or F2 to show full\n content.\n </SrOnly>\n ) : null}\n </TableBodyCell>\n )}\n </Surface.Trigger>\n <Surface.Content\n intersectionBoundaryRef={surfaceCoordinator?.intersectionBoundaryRef}\n initialFocusRef={surfaceContentRef}\n onClose={closeSurface}\n onCancel={closeSurface}\n aria-label={`Full content for ${surfaceTitle}`}\n aria-describedby={surfaceInstructionsId}\n closeButtonLabel={`Close full content for ${surfaceTitle}`}\n >\n {isOpen ? (\n <>\n <SrOnly id={surfaceInstructionsId}>\n Full cell content disclosure. Press Escape or close to return\n focus to the cell.\n </SrOnly>\n <div\n ref={surfaceContentRef}\n tabIndex={-1}\n className={\n styles[\"data-table-body-cell-overflow-surface-content\"]\n }\n >\n {children as ReactNode}\n </div>\n </>\n ) : null}\n </Surface.Content>\n </Surface>\n );\n}\n","import type { DataTableBodyCellProps as BaseDataTableBodyCellProps } from \"../../../base/cells/TableBodyCell\";\nimport type { Cell } from \"@tanstack/react-table\";\nimport { DataTableBodyMutableCell } from \"./DataTableBodyMutableCell\";\nimport { DataTableBodyImmutableCell } from \"./DataTableBodyImmutableCell\";\nimport { DataTableOverflowCell } from \"./DataTableOverflowCell\";\nimport { formatCellPositionString } from \"../util/cellPositionHelpers\";\nimport type { ReactNode } from \"react\";\nimport type { CellPosition } from \"../../../internal/types\";\n\nexport type DataTableBodyCellProps<T> = Omit<\n BaseDataTableBodyCellProps,\n \"onChange\"\n> & {\n /** Grid coordinates used for roving tabindex and `data-cell-pos`. */\n cellPosition: CellPosition;\n /** TanStack cell; column meta chooses the renderer. */\n cell: Cell<T, unknown>;\n children: ReactNode;\n};\n\n/**\n * Body-cell dispatcher: editable when `editMode` is set, overflow surface when\n * `overflow.mode` is `\"surface\"`, otherwise the immutable cell.\n */\nexport function DataTableBodyCell<T>(props: DataTableBodyCellProps<T>) {\n const { cell, cellPosition, children, ...rest } = props;\n\n const column = cell.column;\n const editMode = column.columnDef.meta?.editMode;\n\n const overflow = column.columnDef.meta?.overflow;\n\n const Component = editMode\n ? DataTableBodyMutableCell<T>\n : overflow?.mode === \"surface\"\n ? DataTableOverflowCell<T>\n : DataTableBodyImmutableCell<T>;\n return (\n <Component\n cell={cell}\n cellPosition={cellPosition}\n {...rest}\n data-cell-pos={formatCellPositionString(cellPosition)}\n >\n {children}\n </Component>\n );\n}\n","import {\n type CSSProperties,\n Fragment,\n type MouseEvent as ReactMouseEvent,\n type ReactNode,\n memo,\n useCallback,\n useLayoutEffect,\n useRef,\n} from \"react\";\nimport cx from \"classnames\";\nimport { flexRender, type Row } from \"@tanstack/react-table\";\n\nimport { Flex } from \"../../../../../components\";\n\nimport { getCommonPinningClasses } from \"../../internal/getCommonPinningClasses\";\n\nimport { DataTableBodyCell } from \"./cells/DataTableBodyCell\";\n\nimport styles from \"./DataTableBody.module.scss\";\nimport {\n INTERNAL_ROW_ACTION_PRIMARY_COLUMN_ID,\n INTERNAL_ROW_ACTION_SECONDARY_COLUMN_ID,\n} from \"./constants\";\nimport type { useColumnOrder } from \"./useColumnOrder\";\nimport { useDataTableRowClick } from \"./context/rowClick/useDataTableRowClick\";\nimport { ANV_PART_ATTR } from \"../../../../../internal/constants/anvParts\";\nimport { PARTS } from \"../parts\";\n\nconst HOVER_ATTR = \"data-anv-is-hovered-row\";\nconst SELECTED_ATTR = \"data-anv-is-selected-row\";\nconst HAS_SUB_COMPONENT_ATTR = \"data-anv-has-sub-component\";\n\n// Controls, checkbox chrome, and editable cells must not fire onClickRow.\n// `label` / `[data-anv=\"checkbox\"]` catch icon/label wrappers whose target is\n// not the input. `[data-anv-editable-cell]` is a data attribute so matching\n// survives CSS-module hashing; the cell node itself must match because padding\n// clicks land on the cell, not an inner control.\nconst ROW_CLICK_IGNORE_SELECTOR =\n 'button, a, input, select, textarea, label, [role=\"button\"], [role=\"checkbox\"], [role=\"menuitem\"], [data-anv=\"checkbox\"], [data-anv-editable-cell]';\n\n/** Treats boolean `subComponent` as absent so a leftover `false` does not render. */\nfunction hasRowSubComponent<T>(value: T): value is T & {\n subComponent: Exclude<ReactNode, boolean | null | undefined>;\n} {\n if (\n typeof value !== \"object\" ||\n value === null ||\n !(\"subComponent\" in value)\n ) {\n return false;\n }\n\n return typeof value.subComponent !== \"boolean\" && value.subComponent != null;\n}\n\n/**\n * Sort/filter can change which children are visible between renders, so this\n * is recomputed on demand instead of memoized.\n */\nfunction collectDescendantRowIds<T>(row: Row<T>, out: string[]): void {\n for (const child of row.subRows) {\n out.push(child.id);\n if (child.subRows.length > 0) {\n collectDescendantRowIds(child, out);\n }\n }\n}\n\nexport type DataTableBodyRowProps<T> = {\n /**\n * Column-order identity for `areRowPropsEqual` only. Render uses\n * `columnIndexMap`; a new array still re-renders after pin/reorder.\n */\n columnOrder: ReturnType<typeof useColumnOrder>[\"columnOrder\"];\n /**\n * O(1) leaf-column-index → visual position. Avoids\n * `columnOrder.indexOf(...)` per cell.\n */\n columnIndexMap: ReturnType<typeof useColumnOrder>[\"columnIndexMap\"];\n /** TanStack row. `id` is `data-row-id`; `original.subComponent` is the sibling slot. */\n row: Row<T>;\n /**\n * Index among header + body rows (headers counted first). Converted to\n * 1-based `aria-rowindex`.\n */\n rowIndex: number;\n /**\n * Table-wide grouping flag. Gates `aria-expanded` / `aria-level` even when\n * this row cannot expand.\n */\n tableHasSubRows: boolean;\n /**\n * When true: `aria-expanded` if this row can expand, and the sibling\n * `subComponent` slot if `original` has one.\n */\n isExpanded: boolean;\n /** With `tableHasSubRows`, exposes `aria-expanded`. */\n canExpand: boolean;\n /**\n * Nesting level (0 = root). When greater than 0, sets `--a2-row-depth` for\n * indent on the expand-arrow and first data cell.\n */\n depth: number;\n /**\n * Parent can expand. Nested leaves still get `aria-level` when the table\n * has subrows.\n */\n parentRowCanExpand: boolean;\n /**\n * `isSelected`, `isSomeSelected`, and `isAncestorSelected` OR together for\n * `data-anv-is-selected-row` (full, indeterminate, and inherited paint).\n */\n isSelected: boolean;\n /** Some but not all descendants selected. */\n isSomeSelected: boolean;\n /**\n * Passed as a boolean so `areRowPropsEqual` stays a cheap identity check\n * instead of walking ancestors per compare.\n */\n isAncestorSelected: boolean;\n /**\n * From `readOnlyRowIds`. Grays plain-text cells; skips the row-click\n * handler and affordance. Checkbox disabling is gated separately via\n * `enableRowSelection`.\n */\n isReadOnly: boolean;\n /**\n * Opt-in memo key. When omitted, the row always re-renders with its parent.\n * When set, skip re-render only if this value and the table-managed props\n * compared in `areRowPropsEqual` are unchanged. Include any extra-row\n * input the cells read (for example a highlight id).\n */\n getRowVersion?: (row: T) => unknown;\n};\n\nfunction DataTableBodyRowInner<T>({\n columnOrder: _columnOrder,\n columnIndexMap,\n row,\n rowIndex,\n tableHasSubRows,\n isExpanded,\n canExpand,\n depth,\n parentRowCanExpand,\n isSelected,\n isSomeSelected,\n isAncestorSelected,\n isReadOnly,\n}: DataTableBodyRowProps<T>) {\n const visibleCells = row.getVisibleCells();\n\n const id = row.id;\n const original = row.original;\n const hasSubComponent = hasRowSubComponent(original);\n\n const rowRef = useRef<HTMLDivElement>(null);\n\n const isSelectedRow = isSelected || isSomeSelected || isAncestorSelected;\n\n const { isRowClickEnabled, clickRow } = useDataTableRowClick();\n const isRowClickable = isRowClickEnabled && !isReadOnly;\n\n const handleRowClick = useCallback(\n (event: ReactMouseEvent<HTMLDivElement>) => {\n const target = event.target as HTMLElement | null;\n if (target?.closest(ROW_CLICK_IGNORE_SELECTOR)) return;\n clickRow(row.id);\n },\n [clickRow, row.id],\n );\n\n // Scope to the nearest `[data-anv=\"data-table-base\"]` so multiple tables\n // cannot share hover state.\n const setRowHover = useCallback(\n (rowEl: HTMLDivElement, on: boolean) => {\n const apply = (el: Element | null) => {\n if (!el) return;\n if (on) {\n el.setAttribute(HOVER_ATTR, \"true\");\n } else {\n el.removeAttribute(HOVER_ATTR);\n }\n };\n\n apply(rowEl);\n\n const base = rowEl.closest('[data-anv=\"data-table-base\"]');\n const scope: ParentNode = base ?? rowEl.ownerDocument;\n\n // Sibling slot is not a DOM descendant of the row.\n apply(scope.querySelector(`#${CSS.escape(`${row.id}-sub-component`)}`));\n\n const descendantIds: string[] = [];\n collectDescendantRowIds(row, descendantIds);\n for (const childId of descendantIds) {\n apply(scope.querySelector(`[data-row-id=\"${CSS.escape(childId)}\"]`));\n }\n },\n [row],\n );\n\n const handleMouseEnter = useCallback(\n (event: ReactMouseEvent<HTMLDivElement>) => {\n setRowHover(event.currentTarget, true);\n },\n [setRowHover],\n );\n\n const handleMouseLeave = useCallback(\n (event: ReactMouseEvent<HTMLDivElement>) => {\n setRowHover(event.currentTarget, false);\n },\n [setRowHover],\n );\n\n const handleSubComponentMouseEnter = useCallback(\n (event: ReactMouseEvent<HTMLDivElement>) => {\n event.currentTarget.setAttribute(HOVER_ATTR, \"true\");\n },\n [],\n );\n\n const handleSubComponentMouseLeave = useCallback(\n (event: ReactMouseEvent<HTMLDivElement>) => {\n event.currentTarget.removeAttribute(HOVER_ATTR);\n },\n [],\n );\n\n // `setRowHover` only stamps rows that exist at mouseenter. A later mount\n // (expand a hovered parent, virtualized child scrolling in) would stay\n // unpainted until the next mouse move. Re-check every render so new\n // sub-components and re-keyed rows inherit the stamp; layout effect so it\n // lands before paint.\n useLayoutEffect(() => {\n const rowEl = rowRef.current;\n if (!rowEl) return;\n\n const base = rowEl.closest('[data-anv=\"data-table-base\"]');\n const scope: ParentNode = base ?? rowEl.ownerDocument;\n\n // Body rows are flat DOM siblings; only the TanStack parent chain finds ancestors.\n const anyAncestorHovered = row.getParentRows().some((parent) => {\n const el = scope.querySelector(\n `[data-row-id=\"${CSS.escape(parent.id)}\"]`,\n );\n return el?.getAttribute(HOVER_ATTR) === \"true\";\n });\n\n if (anyAncestorHovered) {\n rowEl.setAttribute(HOVER_ATTR, \"true\");\n }\n\n // Stamp on first paint when expanding a hovered row; mouseenter already passed.\n if (rowEl.getAttribute(HOVER_ATTR) === \"true\") {\n const subComp = scope.querySelector(\n `#${CSS.escape(`${row.id}-sub-component`)}`,\n );\n if (subComp) subComp.setAttribute(HOVER_ATTR, \"true\");\n }\n });\n\n return (\n <Fragment key={row.id}>\n {/* Row click mirrors the checkbox cell; keyboard activation is on the cell. */}\n {/* eslint-disable-next-line jsx-a11y/click-events-have-key-events, jsx-a11y/no-static-element-interactions */}\n <div\n ref={rowRef}\n role=\"row\"\n aria-rowindex={rowIndex + 1}\n aria-expanded={tableHasSubRows && canExpand ? isExpanded : undefined}\n aria-level={\n tableHasSubRows && (canExpand || parentRowCanExpand)\n ? depth + 1\n : undefined\n }\n data-row-id={row.id}\n {...{ [ANV_PART_ATTR]: PARTS.row }}\n {...(hasSubComponent ? { [HAS_SUB_COMPONENT_ATTR]: \"true\" } : {})}\n {...(isSelectedRow ? { [SELECTED_ATTR]: \"true\" } : {})}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n onClick={isRowClickable ? handleRowClick : undefined}\n {...(isRowClickable ? { \"data-anv-row-clickable\": \"true\" } : {})}\n className={cx(styles[\"data-table-body-row\"], {\n [styles[\"data-table-body-row-read-only\"]]: isReadOnly,\n })}\n style={\n depth > 0 ? ({ \"--a2-row-depth\": depth } as CSSProperties) : undefined\n }\n >\n {(() => {\n // Checkbox column stays unindented so it stays aligned across depths.\n let firstDataCellClaimed = false;\n return visibleCells.map((cell) => {\n const isLastInParentGroup = cell.column.parent\n ? cell.column.parent.getLeafColumns().slice(-1)[0] === cell.column\n : false;\n\n const isExpandColumn =\n cell.column.id === INTERNAL_ROW_ACTION_PRIMARY_COLUMN_ID;\n const isCheckboxColumn =\n cell.column.id === INTERNAL_ROW_ACTION_SECONDARY_COLUMN_ID;\n const isInternalActionColumn = isExpandColumn || isCheckboxColumn;\n const isFirstDataCell =\n !isInternalActionColumn && !firstDataCellClaimed;\n if (!isInternalActionColumn) {\n firstDataCellClaimed = true;\n }\n\n const cellClasses = cx(getCommonPinningClasses(cell.column), {\n [styles[\"data-table-body-cell-group\"]]:\n \"columns\" in cell.column.columnDef ||\n (cell.column.parent && isLastInParentGroup),\n [styles[\"data-table-body-cell-depth-indent\"]]: isFirstDataCell,\n [styles[\"data-table-body-cell-action-depth-indent\"]]:\n isExpandColumn,\n });\n const columnIndex =\n columnIndexMap.get(cell.column.getIndex()) ?? -1;\n return (\n <DataTableBodyCell<T>\n key={cell.id}\n cell={cell}\n cellPosition={{ rowIndex, columnIndex }}\n aria-colindex={columnIndex + 1}\n className={cellClasses}\n data-anv-column-id={cell.column.id}\n {...{ [ANV_PART_ATTR]: PARTS.cell }}\n >\n {flexRender(cell.column.columnDef.cell, cell.getContext())}\n </DataTableBodyCell>\n );\n });\n })()}\n </div>\n {isExpanded && hasSubComponent && (\n <div\n id={`${id}-sub-component`}\n aria-hidden={!isExpanded}\n {...{ [HAS_SUB_COMPONENT_ATTR]: \"true\" }}\n {...(isSelectedRow ? { [SELECTED_ATTR]: \"true\" } : {})}\n className={styles[\"data-table-body-sub-component-row\"]}\n onMouseEnter={handleSubComponentMouseEnter}\n onMouseLeave={handleSubComponentMouseLeave}\n >\n <div className={styles[\"data-table-body-sub-component-container\"]}>\n <Flex className={styles[\"data-table-body-sub-component-content\"]}>\n {original.subComponent}\n </Flex>\n </div>\n </div>\n )}\n </Fragment>\n );\n}\n\n/**\n * `React.memo` comparator. Returns false when `getRowVersion` is omitted so\n * cells that read unknown parent state cannot stale.\n */\nfunction areRowPropsEqual<T>(\n prev: DataTableBodyRowProps<T>,\n next: DataTableBodyRowProps<T>,\n): boolean {\n const getRowVersion = next.getRowVersion;\n if (!getRowVersion) {\n return false;\n }\n return (\n prev.row.id === next.row.id &&\n getRowVersion(prev.row.original) === getRowVersion(next.row.original) &&\n prev.rowIndex === next.rowIndex &&\n prev.isExpanded === next.isExpanded &&\n prev.canExpand === next.canExpand &&\n prev.depth === next.depth &&\n prev.parentRowCanExpand === next.parentRowCanExpand &&\n prev.tableHasSubRows === next.tableHasSubRows &&\n prev.columnOrder === next.columnOrder &&\n prev.isSelected === next.isSelected &&\n prev.isSomeSelected === next.isSomeSelected &&\n prev.isAncestorSelected === next.isAncestorSelected &&\n prev.isReadOnly === next.isReadOnly\n );\n}\n\n/**\n * One body row plus an optional sibling `subComponent` slot. Hover and\n * selection paint via data attributes (including descendants) so they stay\n * off the React render path. Memoization is opt-in through `getRowVersion`.\n */\nexport const DataTableBodyRow = memo(\n DataTableBodyRowInner,\n areRowPropsEqual,\n) as typeof DataTableBodyRowInner;\n","import { useCallback, useMemo } from \"react\";\nimport type { Column, Table as TanstackTable } from \"@tanstack/react-table\";\n\n/**\n * Visual leaf-column order: pinned left, unpinned, then pinned right.\n * `columnIndexMap` maps each leaf `getIndex()` to that visual position.\n */\nexport const useColumnOrder = <T>({ table }: { table: TanstackTable<T> }) => {\n const getColumnIndexes = useCallback((column: Column<T>) => {\n if (column.columns?.length > 0) {\n return column.columns.map((c) => c.getIndex());\n }\n return [column.getIndex()];\n }, []);\n\n const columnOrder = useMemo(() => {\n const left: number[] = [];\n const right: number[] = [];\n const middle: number[] = [];\n\n table.getAllColumns().forEach((column) => {\n if (column.getIsPinned() === \"left\") {\n left.push(...getColumnIndexes(column));\n } else if (column.getIsPinned() === \"right\") {\n right.push(...getColumnIndexes(column));\n } else {\n middle.push(...getColumnIndexes(column));\n }\n });\n return left.concat(middle).concat(right);\n }, [table, getColumnIndexes]);\n\n const columnIndexMap = useMemo(() => {\n const map = new Map<number, number>();\n for (let i = 0; i < columnOrder.length; i++) {\n map.set(columnOrder[i], i);\n }\n return map;\n }, [columnOrder]);\n\n return {\n columnOrder,\n columnIndexMap,\n };\n};\n","import { type ComponentPropsWithoutRef, useMemo } from \"react\";\nimport type { Table as TanstackTable } from \"@tanstack/react-table\";\nimport { TableBody } from \"../../base/TableBody\";\nimport { DataTableBodyRow } from \"./DataTableBodyRow\";\nimport { useColumnOrder } from \"./useColumnOrder\";\nimport type { DataTableVirtualizer } from \"./useDataTableVirtualizer\";\nimport styles from \"./DataTableBody.module.scss\";\n\nexport type DataTableBodyProps<T> = {\n /** TanStack instance: row model, header-group count for row indices, column order. */\n table: TanstackTable<T>;\n /**\n * Table-wide grouping flag. Forwarded as `tableHasSubRows` so rows can\n * expose `aria-expanded` / `aria-level` even when they cannot expand.\n */\n hasSubRows: boolean;\n /**\n * When set, only visible virtual items render in an absolutely positioned\n * stack. When omitted, every row stays in the parent CSS grid.\n */\n virtualizer: DataTableVirtualizer | undefined;\n /**\n * Opt-in memo key forwarded to each row. When omitted, rows re-render with\n * this body. When set, skip re-render unless this value or table-managed\n * row UI state changes.\n */\n getRowVersion?: (row: T) => unknown;\n /**\n * Read-only rows keyed by id. Forwarded as `isReadOnly` so those rows gray\n * plain text and skip row-click. Selection checkbox disabling is gated\n * separately via `enableRowSelection`.\n */\n readOnlyRowMap: Record<string, boolean>;\n} & ComponentPropsWithoutRef<\"div\">;\n\nfunction NonVirtualizedContent<T>({\n table,\n hasSubRows,\n getRowVersion,\n readOnlyRowMap,\n}: {\n table: TanstackTable<T>;\n hasSubRows: boolean;\n getRowVersion?: (row: T) => unknown;\n readOnlyRowMap: Record<string, boolean>;\n}) {\n const { columnOrder, columnIndexMap } = useColumnOrder({ table });\n const headerCount = table.getHeaderGroups().length;\n return (\n <>\n {table.getRowModel().rows.map((row, rowIndex) => {\n const isAncestorSelected = row\n .getParentRows()\n .some((parent) => parent.getIsSelected());\n return (\n <DataTableBodyRow<T>\n columnOrder={columnOrder}\n columnIndexMap={columnIndexMap}\n key={row.id}\n row={row}\n rowIndex={rowIndex + headerCount}\n tableHasSubRows={hasSubRows}\n isExpanded={row.getIsExpanded()}\n canExpand={row.getCanExpand()}\n depth={row.depth}\n parentRowCanExpand={row.getParentRow()?.getCanExpand() ?? false}\n isSelected={row.getIsSelected()}\n isSomeSelected={row.getIsSomeSelected()}\n isAncestorSelected={isAncestorSelected}\n isReadOnly={!!readOnlyRowMap[row.id]}\n getRowVersion={getRowVersion}\n />\n );\n })}\n </>\n );\n}\n\nfunction VirtualizedContent<T>({\n table,\n hasSubRows,\n virtualizer,\n getRowVersion,\n readOnlyRowMap,\n}: {\n table: TanstackTable<T>;\n hasSubRows: boolean;\n virtualizer: DataTableVirtualizer;\n getRowVersion?: (row: T) => unknown;\n readOnlyRowMap: Record<string, boolean>;\n}) {\n const { columnOrder, columnIndexMap } = useColumnOrder({ table });\n const headerCount = table.getHeaderGroups().length;\n const rows = table.getRowModel().rows;\n const virtualItems = virtualizer.getVirtualItems();\n const totalSize = virtualizer.getTotalSize();\n\n const measureRef = useMemo(\n () => (el: HTMLDivElement | null) => {\n if (el) virtualizer.measureElement(el);\n },\n [virtualizer],\n );\n\n return (\n <div\n className={styles[\"data-table-body-virtualized\"]}\n // `:has([data-virtualized-body])` on TableBase switches the table from\n // CSS grid to block so header rows can use explicit template columns.\n data-virtualized-body=\"true\"\n style={{ height: `${totalSize}px` }}\n >\n {virtualItems.map((virtualRow) => {\n const row = rows[virtualRow.index];\n const isAncestorSelected = row\n .getParentRows()\n .some((parent) => parent.getIsSelected());\n return (\n <div\n key={row.id}\n ref={measureRef}\n data-index={virtualRow.index}\n className={styles[\"data-table-body-row-virtualized\"]}\n style={{ transform: `translateY(${virtualRow.start}px)` }}\n >\n <DataTableBodyRow<T>\n columnOrder={columnOrder}\n columnIndexMap={columnIndexMap}\n row={row}\n rowIndex={virtualRow.index + headerCount}\n tableHasSubRows={hasSubRows}\n isExpanded={row.getIsExpanded()}\n canExpand={row.getCanExpand()}\n depth={row.depth}\n parentRowCanExpand={row.getParentRow()?.getCanExpand() ?? false}\n isSelected={row.getIsSelected()}\n isSomeSelected={row.getIsSomeSelected()}\n isAncestorSelected={isAncestorSelected}\n isReadOnly={!!readOnlyRowMap[row.id]}\n getRowVersion={getRowVersion}\n />\n </div>\n );\n })}\n </div>\n );\n}\n\n/**\n * Data-table body. Maps TanStack rows through `TableBody` to\n * `DataTableBodyRow`, forwarding grouping, read-only, and memo keys.\n */\nexport function DataTableBody<T>(props: DataTableBodyProps<T>) {\n const {\n table,\n hasSubRows,\n virtualizer,\n getRowVersion,\n readOnlyRowMap,\n ...rest\n } = props;\n return (\n <TableBody type=\"data-table\" {...rest}>\n {virtualizer ? (\n <VirtualizedContent\n table={table}\n hasSubRows={hasSubRows}\n virtualizer={virtualizer}\n getRowVersion={getRowVersion}\n readOnlyRowMap={readOnlyRowMap}\n />\n ) : (\n <NonVirtualizedContent\n table={table}\n hasSubRows={hasSubRows}\n getRowVersion={getRowVersion}\n readOnlyRowMap={readOnlyRowMap}\n />\n )}\n </TableBody>\n );\n}\n","import type { ComponentPropsWithoutRef } from \"react\";\nimport cx from \"classnames\";\n\nimport styles from \"./TableFooter.module.scss\";\n\n/**\n * Selects native table-footer markup or an ARIA row group from the\n * corresponding prop branch.\n */\nexport type TableFooterProps =\n | ({\n /** Renders a native `tfoot`. */\n type: \"simple\";\n } & ComponentPropsWithoutRef<\"tfoot\">)\n | ({\n /** Renders a `rowgroup` for an ARIA grid. */\n type: \"data-table\";\n } & ComponentPropsWithoutRef<\"div\">);\n\n/**\n * Sticky footer region for a native table or ARIA data grid.\n */\nexport function TableFooter({ type, children, ...rest }: TableFooterProps) {\n const classes = cx(styles[\"table-footer\"], rest.className);\n const Element = type === \"simple\" ? \"tfoot\" : \"div\";\n\n return (\n <Element\n {...rest}\n className={classes}\n role={type === \"simple\" ? undefined : \"rowgroup\"}\n >\n {children}\n </Element>\n );\n}\n","import { type ComponentPropsWithoutRef, forwardRef } from \"react\";\nimport cx from \"classnames\";\n\nimport styles from \"./TableCells.module.scss\";\n\nexport type SimpleTableFooterCellProps = ComponentPropsWithoutRef<\"td\"> & {\n colSpan?: number;\n};\n\nexport type DataTableFooterCellProps = ComponentPropsWithoutRef<\"div\"> & {\n /** Number of logical columns represented by this footer cell. */\n colSpan?: number;\n};\n\n/**\n * Selects a native or ARIA footer cell from the corresponding prop branch.\n */\nexport type TableFooterCellProps =\n | ({\n /** Renders a native `td`. */\n type: \"simple\";\n } & SimpleTableFooterCellProps)\n | ({\n /** Renders a `gridcell` for an ARIA grid. */\n type: \"data-table\";\n } & DataTableFooterCellProps);\n\n/**\n * Footer cell for a native table or ARIA data grid.\n */\nexport const TableFooterCell = forwardRef<\n HTMLTableCellElement | HTMLDivElement,\n TableFooterCellProps\n>((props, ref) => {\n const { type, children, className, ...rest } = props;\n\n const classes = cx(styles[\"table-footer-cell\"], className);\n const CellElement = type === \"simple\" ? \"td\" : \"div\";\n\n return (\n <CellElement\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- could be table cell or div\n ref={ref as any}\n data-anv=\"table-footer-cell\"\n {...rest}\n className={classes}\n role={type === \"simple\" ? undefined : \"gridcell\"}\n >\n {children}\n </CellElement>\n );\n});\n\nTableFooterCell.displayName = \"TableFooterCell\";\n","import { useCallback, useRef } from \"react\";\nimport cx from \"classnames\";\n\nimport { TableFooterCell } from \"../../../base/cells/TableFooterCell\";\nimport type { DataTableFooterCellProps as BaseDataTableFooterCellProps } from \"../../../base/cells/TableFooterCell\";\n\nimport styles from \"./DataTableCells.module.scss\";\nimport { useDTFocusDispatchContext } from \"../context/focus/useDTFocusDispatchContext\";\nimport { formatCellPositionString } from \"../util/cellPositionHelpers\";\n\nexport type DataTableFooterCellProps = BaseDataTableFooterCellProps & {\n /** Grid coordinates used for roving tabindex and `data-cell-pos`. */\n cellPosition: { rowIndex: number; columnIndex: number };\n};\n\n/**\n * Footer gridcell. Tabindex is written by `DTFocusProvider`; this cell only\n * handles arrow/Home/End movement.\n */\nexport function DataTableFooterCell(props: DataTableFooterCellProps) {\n const { cellPosition, children, className, ...rest } = props;\n\n const footerCellRef = useRef<HTMLDivElement>(null);\n\n const { jumpFocus, moveFocus } = useDTFocusDispatchContext();\n\n const handleKeyDown = useCallback(\n (event: React.KeyboardEvent<HTMLTableCellElement>) => {\n switch (event.key) {\n case \"ArrowUp\":\n event.preventDefault();\n moveFocus(\"up\");\n return;\n case \"ArrowDown\":\n event.preventDefault();\n moveFocus(\"down\");\n return;\n case \"ArrowLeft\":\n event.preventDefault();\n moveFocus(\"left\");\n return;\n case \"ArrowRight\":\n event.preventDefault();\n moveFocus(\"right\");\n return;\n case \"Home\": {\n event.preventDefault();\n jumpFocus(\"left\");\n return;\n }\n case \"End\": {\n event.preventDefault();\n jumpFocus(\"right\");\n return;\n }\n default:\n break;\n }\n },\n [moveFocus, jumpFocus],\n );\n\n return (\n <TableFooterCell\n type=\"data-table\"\n {...rest}\n ref={footerCellRef}\n tabIndex={-1}\n onKeyDown={handleKeyDown}\n className={cx(styles[\"data-table-footer-cell\"], className)}\n data-cell-pos={formatCellPositionString(cellPosition)}\n >\n {children}\n </TableFooterCell>\n );\n}\n","import type { ComponentPropsWithoutRef } from \"react\";\nimport type { Table as TanstackTable } from \"@tanstack/react-table\";\nimport cx from \"classnames\";\n\nimport { getCommonPinningStyles } from \"../../internal/getCommonPinningStyles\";\nimport { getCommonPinningClasses } from \"../../internal/getCommonPinningClasses\";\n\nimport type { ColumnDef } from \"../../types\";\nimport type { DataTableProps, DataTableRowData } from \"../DataTable\";\nimport { TableFooter } from \"../../base/TableFooter\";\nimport { DataTableFooterCell } from \"./cells/DataTableFooterCell\";\n\nimport styles from \"./DataTableFooter.module.scss\";\nimport { useColumnOrder } from \"./useColumnOrder\";\n\nexport type DefaultTableFooterRowsProps<T extends DataTableRowData> = {\n /** Supplies header/row counts for `aria-rowindex` and the visual column order. */\n table: TanstackTable<T>;\n /**\n * Column tree used to look up `footerContent` on leaves. Group columns are\n * skipped so nested headers do not get a footer cell.\n */\n columns: ColumnDef<T>[];\n};\n\nexport type CustomTableFooterRowsProps<T extends DataTableRowData> = {\n /**\n * Visible leaf header count (`table.getFlatHeaders().length`).\n */\n columnCount: number;\n /** Row-major `{ content, colSpan }` cells for the custom path. */\n customFooter: DataTableProps<T>[\"customFooter\"];\n /** Supplies header/row counts for `aria-rowindex`. */\n table: TanstackTable<T>;\n};\n\nexport type DataTableFooterProps<T extends DataTableRowData> = {\n /** Supplies header/row counts for `aria-rowindex` and the visual column order. */\n table: TanstackTable<T>;\n /**\n * Column tree for leaf `footerContent`. Array values become extra rows; a\n * scalar fills row 0.\n */\n columns: ColumnDef<T>[];\n /**\n * Row-major custom cells. When set (even empty), this path is used instead\n * of column `footerContent`.\n */\n customFooter?: DataTableProps<T>[\"customFooter\"];\n} & ComponentPropsWithoutRef<\"div\">;\n\nfunction DefaultTableFooterRows<T extends DataTableRowData>({\n table,\n columns,\n}: DefaultTableFooterRowsProps<T>) {\n const findColumnById = (\n cols: ColumnDef<T>[],\n id: string,\n ): ColumnDef<T> | undefined => {\n for (const col of cols) {\n if (col.id === id) {\n return col;\n }\n if (col.columns && Array.isArray(col.columns)) {\n const found = findColumnById(col.columns, id);\n if (found) {\n return found;\n }\n }\n }\n return undefined;\n };\n\n const getMaxFooterRows = (column: ColumnDef<T>): number => {\n let currentMax = 0;\n\n if (Array.isArray(column.footerContent)) {\n currentMax = column.footerContent.length;\n } else if (column.footerContent) {\n currentMax = 1;\n }\n\n if (column.columns && Array.isArray(column.columns)) {\n const nestedMax = Math.max(\n ...column.columns.map((nestedCol) => getMaxFooterRows(nestedCol)),\n 0,\n );\n currentMax = Math.max(currentMax, nestedMax);\n }\n\n return currentMax;\n };\n\n const maxFooterRows = Math.max(\n ...columns.map((column) => getMaxFooterRows(column)),\n 1,\n );\n\n const { columnOrder } = useColumnOrder({ table });\n\n return Array.from({ length: maxFooterRows }, (_, footerIndex) => {\n const rowIndex =\n footerIndex +\n table.getHeaderGroups().length +\n table.getRowModel().rows.length;\n return (\n <div\n key={`footer-row-${rowIndex}`}\n role=\"row\"\n data-anv=\"table-footer-row\"\n className={styles[\"data-table-footer-row\"]}\n aria-rowindex={rowIndex + 1}\n >\n {table\n .getFlatHeaders()\n .filter((header) => {\n const column = findColumnById(columns, header.column.id);\n return !column?.columns || column.columns.length === 0;\n })\n .map((header) => {\n const column = findColumnById(columns, header.column.id);\n\n let footerContent = null;\n if (Array.isArray(column?.footerContent)) {\n footerContent = column.footerContent[footerIndex] || null;\n } else if (column?.footerContent && footerIndex === 0) {\n footerContent = column.footerContent;\n }\n\n const columnIndex = columnOrder.indexOf(header.column.getIndex());\n\n return (\n <DataTableFooterCell\n key={header.id}\n className={getCommonPinningClasses(header.column)}\n style={getCommonPinningStyles(header.column)}\n cellPosition={{ rowIndex, columnIndex }}\n >\n {footerContent}\n </DataTableFooterCell>\n );\n })}\n </div>\n );\n });\n}\n\nfunction CustomTableFooterRows<T extends DataTableRowData>({\n customFooter,\n columnCount,\n table,\n}: CustomTableFooterRowsProps<T>) {\n return customFooter?.map((footerRow, footerIndex) => {\n const rowIndex =\n footerIndex +\n table.getHeaderGroups().length +\n table.getRowModel().rows.length;\n return (\n <div\n key={footerIndex}\n role=\"row\"\n data-anv=\"table-footer-row\"\n className={styles[\"data-table-footer-row\"]}\n aria-rowindex={rowIndex + 1}\n >\n {(() => {\n let columnIndex = 0;\n return Array.from({\n // Slot count = visible columns − extra span beyond 1 per cell.\n length:\n columnCount -\n footerRow.reduce((acc, curr) => acc + curr.colSpan, 0) +\n footerRow.length,\n }).map((_, index) => {\n const footer = footerRow[index] ?? { content: \"\", colSpan: 1 };\n const gridColumn =\n footer.colSpan > 1 ? `span ${footer.colSpan}` : undefined;\n\n const cell = (\n <DataTableFooterCell\n key={index}\n colSpan={footer.colSpan}\n style={{\n gridColumn,\n }}\n cellPosition={{ rowIndex, columnIndex }}\n >\n {footer.content}\n </DataTableFooterCell>\n );\n\n columnIndex += footer.colSpan;\n return cell;\n });\n })()}\n </div>\n );\n });\n}\n\n/**\n * Footer region. `customFooter` replaces column `footerContent` when set.\n * `aria-rowindex` continues after header and body rows.\n */\nexport function DataTableFooter<T extends DataTableRowData>({\n table,\n customFooter,\n columns,\n ...rest\n}: DataTableFooterProps<T>) {\n const columnCount = table.getFlatHeaders().length;\n const classes = cx(styles[\"data-table-footer\"], rest.className);\n\n return (\n <TableFooter type=\"data-table\" {...rest} className={classes}>\n {customFooter ? (\n <CustomTableFooterRows\n table={table}\n customFooter={customFooter}\n columnCount={columnCount}\n />\n ) : (\n <DefaultTableFooterRows table={table} columns={columns} />\n )}\n </TableFooter>\n );\n}\n","import { useEffect, useState, type RefObject } from \"react\";\n\n/**\n * Whether the nearest `[data-anv=\"table-body-cell\"]` ancestor currently\n * contains focus. Starts `false` until a `focusin` on that cell.\n */\nexport function useCellFocusListener(\n elementRef: RefObject<HTMLElement>,\n): boolean {\n const [isFocused, setIsFocused] = useState(false);\n\n useEffect(() => {\n const el = elementRef.current;\n if (!el) return;\n const cell = el.closest<HTMLElement>('[data-anv=\"table-body-cell\"]');\n if (!cell) return;\n\n const onFocusIn = () => setIsFocused(true);\n const onFocusOut = (e: FocusEvent) => {\n if (!cell.contains(e.relatedTarget as Node)) setIsFocused(false);\n };\n cell.addEventListener(\"focusin\", onFocusIn);\n cell.addEventListener(\"focusout\", onFocusOut);\n return () => {\n cell.removeEventListener(\"focusin\", onFocusIn);\n cell.removeEventListener(\"focusout\", onFocusOut);\n };\n }, [elementRef]);\n\n return isFocused;\n}\n","import { StatusIcon } from \"../../../../../../internal/components/StatusIcon\";\nimport styles from \"./DataTableCells.module.scss\";\nimport { Tooltip } from \"../../../../../../components\";\nimport { useCellFocusListener } from \"./useCellFocusListener\";\nimport { useRef, useState } from \"react\";\n\nexport type CellStatusProps = {\n /**\n * `true` shows the icon only. A string is the tooltip and is appended to the\n * icon's accessible name.\n */\n status: boolean | string;\n /** Picks the icon, color, and default accessible name. */\n variant: \"error\" | \"warning\";\n};\n\nconst variantConfig = {\n error: {\n className: \"cell-error-icon\",\n label: \"Cell has an error\",\n },\n warning: {\n className: \"cell-warning-icon\",\n label: \"Cell has a warning\",\n },\n} as const;\n\n/**\n * Error or warning icon for a cell. A string `status` also opens a tooltip\n * while the cell is focused or the icon is hovered.\n */\nexport function CellStatus({ status, variant }: CellStatusProps) {\n const message = typeof status === \"string\" ? status : undefined;\n const ref = useRef<HTMLSpanElement>(null);\n const isCellFocused = useCellFocusListener(ref);\n const [isHovered, setIsHovered] = useState(false);\n const config = variantConfig[variant];\n\n const icon = (\n <StatusIcon\n variant={variant}\n size=\"small\"\n className={styles[config.className]}\n rootProps={{\n \"aria-label\": message\n ? `${config.label}: ${message}`\n : `${config.label}.`,\n }}\n />\n );\n\n if (!message) {\n return (\n <span ref={ref} className={styles[\"cell-status\"]}>\n {icon}\n </span>\n );\n }\n\n const isTooltipOpen = isCellFocused || isHovered;\n\n return (\n <Tooltip open={isTooltipOpen}>\n {/* Tooltip stays controlled; hover is tracked locally so keyboard-open\n does not fight Tooltip's internal hover state. */}\n <Tooltip.Trigger\n ref={ref}\n className={styles[\"cell-status\"]}\n onMouseEnter={() => setIsHovered(true)}\n onMouseLeave={() => setIsHovered(false)}\n >\n {icon}\n </Tooltip.Trigger>\n <Tooltip.Content>{message}</Tooltip.Content>\n </Tooltip>\n );\n}\n","import { createColumnHelper, type ColumnHelper } from \"@tanstack/react-table\";\n\nimport { FieldLabel } from \"../../../../../../components/FieldLabel\";\nimport cellContentStyles from \"../cells/DataTableCells.module.scss\";\n\nimport { type ReactNode, Fragment, isValidElement } from \"react\";\nimport cx from \"classnames\";\n\nimport type {\n ColumnDef,\n ColumnHeader,\n ColumnReadRenderContext,\n ColumnReadRenderResult,\n ColumnType,\n ColumnTypeConfig,\n EditMode,\n TableRow,\n} from \"../../../types\";\n\nimport { TableEmptyCellContent } from \"../../../base/cells/TableEmptyCellContent\";\nimport { CellStatus } from \"../cells/CellStatus\";\nimport {\n getColumnTypeDefaults,\n resolveColumnTypeConfig,\n} from \"../../../columnTypeDefaults\";\n\ndeclare module \"@tanstack/react-table\" {\n interface ColumnMeta<TData, TValue> {\n editMode?: EditMode;\n editConfig?: ColumnDef<TData>[\"editConfig\"];\n overflow?: ColumnDef<TData>[\"overflow\"];\n /** Original Anvil column def, for type narrowing in cell helpers. */\n columnDef?: ColumnDef<TData>;\n /**\n * Custom read display metadata shared between rendering, editing, and sorting.\n */\n readRenderResult?: ColumnReadRenderResult;\n getCellText?: (\n value: TValue,\n context: { row: TableRow<TData>; depth: number },\n ) => string;\n getReadRenderResult?: (\n value: TValue,\n context: { row: TableRow<TData>; depth: number },\n ) => ColumnReadRenderResult;\n /** Hides expand-all / select-all in this internal column's header. */\n disableHeaderAction?: boolean;\n headerAlign?: HeaderAlign;\n isGroupHeader?: boolean;\n }\n}\n\nexport type TanStackColumnDefProps<T> = {\n /** Leaf or group; groups recurse via `columns`. */\n columnDef: ColumnDef<T>;\n emptyCellContent?: ReactNode;\n};\n\ntype TanStackColumnDef<T extends object> =\n | ReturnType<ColumnHelper<T>[\"group\"]>\n | ReturnType<ColumnHelper<T>[\"accessor\"]>;\n\ntype LeafColumnDef<T> = Extract<ColumnDef<T>, { columns?: undefined }>;\n\ntype HeaderAlign = \"start\" | \"center\" | \"end\";\n\ntype HeaderJustifyContent = \"flex-start\" | \"center\" | \"flex-end\";\n\ntype NormalizedColumnHeader = ColumnHeader & {\n label: string;\n};\n\nfunction getColumnReadRenderResult<T extends object>({\n value,\n context,\n renderCell,\n getCellText,\n getReadRenderResult,\n}: {\n value: T[keyof T];\n context: ColumnReadRenderContext<TableRow<T>>;\n renderCell?: LeafColumnDef<T>[\"renderCell\"];\n getCellText?: LeafColumnDef<T>[\"getCellText\"];\n getReadRenderResult?: LeafColumnDef<T>[\"getReadRenderResult\"];\n}): ColumnReadRenderResult {\n if (getReadRenderResult) {\n return getReadRenderResult(value, context);\n }\n\n const rawString = getCellText?.(value, context);\n\n if (renderCell) {\n const content = renderCell(value, context);\n\n return {\n content,\n rawString:\n rawString ?? (typeof content === \"string\" ? content : undefined),\n };\n }\n\n return {\n content: renderRawCellValue(value),\n rawString: rawString ?? (typeof value === \"string\" ? value : undefined),\n };\n}\n\nfunction resolveHeaderAlign<T extends object>(\n align?: ColumnDef<T>[\"align\"],\n isGroup = false,\n): HeaderAlign {\n if (isGroup) {\n return \"start\";\n }\n\n return align ?? \"start\";\n}\n\nfunction getHeaderJustifyContent(align: HeaderAlign): HeaderJustifyContent {\n if (align === \"center\") {\n return \"center\";\n }\n\n if (align === \"end\") {\n return \"flex-end\";\n }\n\n return \"flex-start\";\n}\n\nfunction normalizeColumnHeader<T extends object>(\n columnDef: ColumnDef<T>,\n): NormalizedColumnHeader {\n return {\n label:\n columnDef.header?.label ?? columnDef.headerLabel ?? String(columnDef.id),\n required: columnDef.header?.required,\n moreInfo: columnDef.header?.moreInfo,\n };\n}\n\nfunction renderColumnHeader<T extends object>(\n header: NormalizedColumnHeader,\n {\n align,\n isGroup = false,\n }: {\n align?: ColumnDef<T>[\"align\"];\n isGroup?: boolean;\n },\n) {\n const resolvedAlign = resolveHeaderAlign(align, isGroup);\n\n return (\n <div\n data-a2-datatable-header-wrapper=\"true\"\n data-a2-datatable-header-align={resolvedAlign}\n data-a2-datatable-header-kind={isGroup ? \"group\" : \"leaf\"}\n style={{\n justifyContent: getHeaderJustifyContent(resolvedAlign),\n maxWidth: \"100%\",\n width: \"fit-content\",\n }}\n >\n <div\n data-a2-datatable-header-content=\"true\"\n style={{ maxWidth: \"100%\", width: \"fit-content\" }}\n >\n <FieldLabel\n el=\"div\"\n required={header.required}\n moreInfo={header.moreInfo}\n style={{\n maxWidth: \"100%\",\n textAlign: resolvedAlign,\n width: \"fit-content\",\n }}\n >\n {header.label}\n </FieldLabel>\n </div>\n </div>\n );\n}\n\nfunction renderRawCellValue<TValue>(value: TValue): ReactNode {\n if (value === null || value === undefined) {\n return null;\n }\n\n if (value === \"\") {\n return \"\";\n }\n\n if (\n typeof value === \"string\" ||\n typeof value === \"number\" ||\n typeof value === \"bigint\"\n ) {\n return value;\n }\n\n if (typeof value === \"boolean\") {\n return String(value);\n }\n\n if (typeof value === \"symbol\") {\n return value.toString();\n }\n\n if (typeof value === \"object\" && isValidElement(value)) {\n return value;\n }\n\n if (Array.isArray(value)) {\n return value.map((item, index) => (\n <Fragment key={index}>{renderRawCellValue(item)}</Fragment>\n ));\n }\n\n return String(value);\n}\n\n/**\n * Translates an Anvil {@link ColumnDef} into a TanStack column, storing the\n * original def on `meta.columnDef` for later type narrowing.\n */\nexport function getTanStackColumnDef<T extends object>({\n columnDef,\n emptyCellContent,\n}: TanStackColumnDefProps<T>): TanStackColumnDef<T> {\n const normalizedHeader = normalizeColumnHeader(columnDef);\n\n const columnHelper = createColumnHelper<T>();\n\n if (columnDef.columns && columnDef.columns.length > 0) {\n return columnHelper.group({\n id: columnDef.id as string,\n header: () =>\n renderColumnHeader(normalizedHeader, {\n align: columnDef.align,\n isGroup: true,\n }),\n columns: columnDef.columns.map((column) =>\n getTanStackColumnDef({\n columnDef: column,\n emptyCellContent,\n }),\n ),\n meta: {\n columnDef,\n headerAlign: resolveHeaderAlign(columnDef.align, true),\n isGroupHeader: true,\n },\n footer: columnDef.footerContent\n ? () => columnDef.footerContent\n : undefined,\n enableResizing: columnDef.resizable,\n }) as TanStackColumnDef<T>;\n }\n\n const leafColumnDef = columnDef as LeafColumnDef<T>;\n\n let resolvedAlign = leafColumnDef.align;\n let resolvedRenderCell = leafColumnDef.renderCell;\n\n if (leafColumnDef.type) {\n const [columnType, typeOptions] = resolveColumnTypeConfig(\n leafColumnDef.type as ColumnTypeConfig<ColumnType>,\n );\n const typeDefaults = getColumnTypeDefaults(columnType);\n\n if (resolvedAlign === undefined) {\n resolvedAlign = typeDefaults.align;\n }\n if (resolvedRenderCell === undefined) {\n resolvedRenderCell = typeDefaults.createRenderCell(\n typeOptions,\n ) as typeof resolvedRenderCell;\n }\n }\n\n const resolvedEmptyContent = leafColumnDef.emptyCellContent ??\n emptyCellContent ?? <TableEmptyCellContent />;\n\n const metaColumnDef = {\n ...columnDef,\n headerLabel: normalizedHeader.label,\n };\n\n const resolveReadRenderResult = (\n value: T[keyof T],\n context: { row: TableRow<T>; depth: number },\n ) =>\n getColumnReadRenderResult<T>({\n value,\n context,\n renderCell: resolvedRenderCell,\n getCellText: leafColumnDef.getCellText,\n getReadRenderResult: leafColumnDef.getReadRenderResult,\n });\n\n // Custom editors sort on `rawString` when `sortable` is `true`. A sortable\n // function later in this object replaces this `sortingFn`.\n const shouldUseCustomReadStringSorting =\n leafColumnDef.editConfig?.mode === \"custom\" &&\n leafColumnDef.sortable === true;\n\n return columnHelper.accessor((row) => row[leafColumnDef.id], {\n id: leafColumnDef.id as string,\n cell: (info) => {\n const rawCellValue = info.row.original[leafColumnDef.id];\n const readRenderResult = resolveReadRenderResult(rawCellValue, {\n row: info.row.original as TableRow<T>,\n depth: info.row.depth,\n });\n\n let cellContent = readRenderResult.content;\n if (cellContent === \"\") {\n cellContent = resolvedEmptyContent;\n }\n\n const meta = (info.row.original as TableRow<T>).meta;\n const cellError = meta?.errors?.[leafColumnDef.id as keyof T];\n const cellWarning = meta?.warnings?.[leafColumnDef.id as keyof T];\n\n return (\n <div\n className={cx(cellContentStyles[\"data-table-cell-content\"], {\n [cellContentStyles[\"data-table-cell-overflow-content\"]]:\n leafColumnDef.overflow,\n })}\n data-align={resolvedAlign ?? \"start\"}\n >\n {cellError ? (\n <CellStatus status={cellError} variant=\"error\" />\n ) : cellWarning ? (\n <CellStatus status={cellWarning} variant=\"warning\" />\n ) : null}\n {cellContent ?? resolvedEmptyContent}\n </div>\n );\n },\n header: () =>\n renderColumnHeader(normalizedHeader, {\n align: resolvedAlign,\n }),\n footer: leafColumnDef.footerContent\n ? () => leafColumnDef.footerContent\n : undefined,\n minSize: leafColumnDef.minWidth,\n maxSize: leafColumnDef.maxWidth,\n // TanStack's `size` is the column's starting width — we use `defaultWidth`\n // when provided and fall back to `minWidth` so the auto-sizing basis\n // matches the manual-resize floor by default.\n size: leafColumnDef.defaultWidth ?? leafColumnDef.minWidth,\n enableResizing: leafColumnDef.resizable,\n enableSorting: !!leafColumnDef.sortable,\n meta: {\n editMode: leafColumnDef.editConfig?.mode,\n editConfig: leafColumnDef.editConfig,\n // Editable cells own the surface; overflow disclosure is not used.\n overflow: leafColumnDef.editConfig ? undefined : leafColumnDef.overflow,\n columnDef: metaColumnDef,\n getReadRenderResult: (value, context) =>\n resolveReadRenderResult(value as T[keyof T], context),\n headerAlign: resolveHeaderAlign(resolvedAlign),\n isGroupHeader: false,\n },\n\n ...(shouldUseCustomReadStringSorting\n ? {\n sortingFn: (rowA, rowB) => {\n const rawStringA = resolveReadRenderResult(\n rowA.original[leafColumnDef.id],\n {\n row: rowA.original as TableRow<T>,\n depth: rowA.depth,\n },\n ).rawString;\n const rawStringB = resolveReadRenderResult(\n rowB.original[leafColumnDef.id],\n {\n row: rowB.original as TableRow<T>,\n depth: rowB.depth,\n },\n ).rawString;\n\n if (\n typeof rawStringA !== \"string\" ||\n typeof rawStringB !== \"string\"\n ) {\n return 0;\n }\n\n return rawStringA.localeCompare(rawStringB);\n },\n }\n : undefined),\n\n ...(leafColumnDef.sortable && typeof leafColumnDef.sortable === \"function\"\n ? {\n sortingFn: (rowA, rowB) => {\n if (typeof leafColumnDef.sortable === \"function\") {\n return leafColumnDef.sortable(\n rowA.original[leafColumnDef.id],\n rowB.original[leafColumnDef.id],\n );\n }\n return 0;\n },\n }\n : undefined),\n }) as TanStackColumnDef<T>;\n}\n","import type { SortingState } from \"@tanstack/react-table\";\n\n/** Same length and matching `id`/`desc` at each index; ignores extra fields. */\nexport function shallowSortingEqual(a: SortingState, b: SortingState): boolean {\n if (a.length !== b.length) return false;\n for (let i = 0; i < a.length; i++) {\n if (a[i].id !== b[i].id || a[i].desc !== b[i].desc) return false;\n }\n return true;\n}\n","import * as React from \"react\";\nconst SvgArrowUpward = (props) => /* @__PURE__ */ React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", width: \"1em\", height: \"1em\", viewBox: \"0 0 24 24\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M13 19V7.83l4.88 4.88c.39.39 1.03.39 1.42 0a.996.996 0 0 0 0-1.41l-6.59-6.59a.996.996 0 0 0-1.41 0l-6.6 6.58a.996.996 0 1 0 1.41 1.41L11 7.83V19c0 .55.45 1 1 1s1-.45 1-1z\" }));\nexport default SvgArrowUpward;\n","import * as React from \"react\";\nconst SvgArrowDownward = (props) => /* @__PURE__ */ React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", width: \"1em\", height: \"1em\", viewBox: \"0 0 24 24\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M11 5v11.17l-4.88-4.88c-.39-.39-1.03-.39-1.42 0a.996.996 0 0 0 0 1.41l6.59 6.59c.39.39 1.02.39 1.41 0l6.59-6.59a.996.996 0 1 0-1.41-1.41L13 16.17V5c0-.55-.45-1-1-1s-1 .45-1 1z\" }));\nexport default SvgArrowDownward;\n","import type { ComponentPropsWithoutRef } from \"react\";\nimport cx from \"classnames\";\n\nimport styles from \"./TableHeader.module.scss\";\n\n/**\n * Selects native table-header markup or an ARIA row group from the\n * corresponding prop branch.\n */\nexport type TableHeaderProps =\n | ({\n /** Renders a native `thead`. */\n type: \"simple\";\n } & ComponentPropsWithoutRef<\"thead\">)\n | ({\n /** Renders a `rowgroup` for an ARIA grid. */\n type: \"data-table\";\n } & ComponentPropsWithoutRef<\"div\">);\n\n/**\n * Sticky header region for a native table or ARIA data grid.\n */\nexport function TableHeader({ type, children, ...rest }: TableHeaderProps) {\n const classes = cx(styles[\"table-header\"], rest.className);\n\n const Element = type === \"simple\" ? \"thead\" : \"div\";\n return (\n <Element\n {...rest}\n className={classes}\n role={type === \"simple\" ? undefined : \"rowgroup\"}\n >\n {children}\n </Element>\n );\n}\n","import { type ComponentPropsWithoutRef, forwardRef } from \"react\";\nimport cx from \"classnames\";\n\nimport type { CommonTableCellProps } from \"./types\";\n\nimport styles from \"./TableCells.module.scss\";\n\nexport type CommonTableHeaderCellProps = CommonTableCellProps & {\n /** Shows a column-group divider except on the last cell in the row. */\n isGroup?: boolean;\n /** Shows the interactive cursor for a sortable column. */\n isSortable?: boolean;\n /** Shows the interactive cursor when the whole header cell activates an action. */\n isInteractiveHeaderCell?: boolean;\n};\n\nexport type SimpleTableHeaderCellProps = CommonTableHeaderCellProps &\n ComponentPropsWithoutRef<\"th\">;\n\nexport type DataTableHeaderCellProps = CommonTableHeaderCellProps &\n ComponentPropsWithoutRef<\"div\">;\n\n/**\n * Selects a native or ARIA column-header cell from the corresponding prop\n * branch.\n */\nexport type TableHeaderCellProps =\n | ({\n /** Renders a native `th`. */\n type: \"simple\";\n } & SimpleTableHeaderCellProps)\n | ({\n /** Renders a `columnheader` for an ARIA grid. */\n type: \"data-table\";\n } & DataTableHeaderCellProps);\n\n/**\n * Header cell for a native table or ARIA data grid.\n */\nexport const TableHeaderCell = forwardRef<\n HTMLTableCellElement | HTMLDivElement,\n TableHeaderCellProps\n>(\n (\n {\n type,\n children,\n className,\n isGroup,\n isSortable,\n isInteractiveHeaderCell,\n isSelectCell,\n isExpandCell,\n ...rest\n },\n ref,\n ) => {\n const classes = cx(styles[\"table-header-cell\"], className, {\n [styles[\"table-header-cell-group\"]]: isGroup,\n [styles[\"table-header-cell-sortable\"]]: isSortable,\n [styles[\"table-header-cell-interactive\"]]: isInteractiveHeaderCell,\n [styles[\"table-cell-internal-expand\"]]: isExpandCell,\n [styles[\"table-cell-internal-select\"]]: isSelectCell,\n });\n const CellElement = type === \"simple\" ? \"th\" : \"div\";\n\n return (\n <CellElement\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- could be table cell or div\n ref={ref as any}\n data-anv=\"table-header-cell\"\n {...rest}\n className={classes}\n role={type === \"simple\" ? undefined : \"columnheader\"}\n >\n {children}\n </CellElement>\n );\n },\n);\n\nTableHeaderCell.displayName = \"TableHeaderCell\";\n","import { forwardRef, type Ref, useCallback, useRef } from \"react\";\nimport cx from \"classnames\";\n\nimport { TableHeaderCell } from \"../../../base/cells/TableHeaderCell\";\nimport type { HeaderContext } from \"@tanstack/react-table\";\nimport type { DataTableHeaderCellProps as BaseDataTableHeaderCellProps } from \"../../../base/cells/TableHeaderCell\";\nimport { SrOnly } from \"../../../../../../components\";\n\nimport styles from \"./DataTableCells.module.scss\";\nimport { useDTFocusDispatchContext } from \"../context/focus/useDTFocusDispatchContext\";\nimport { formatCellPositionString } from \"../util/cellPositionHelpers\";\nimport {\n INTERNAL_ROW_ACTION_PRIMARY_COLUMN_ID,\n INTERNAL_ROW_ACTION_SECONDARY_COLUMN_ID,\n} from \"../constants\";\nimport { ANV_PART_ATTR } from \"../../../../../../internal/constants/anvParts\";\nimport { PARTS } from \"../../parts\";\n\nconst INTERACTIVE_DESCENDANT_SELECTOR = [\n \"button\",\n \"a[href]\",\n \"input\",\n \"select\",\n \"textarea\",\n '[role=\"button\"]',\n '[role=\"link\"]',\n '[contenteditable=\"true\"]',\n].join(\", \");\n\nfunction isInteractiveDescendant(\n target: EventTarget | null,\n currentTarget: HTMLElement,\n) {\n if (!(target instanceof Element)) {\n return false;\n }\n\n const interactiveElement = target.closest(INTERACTIVE_DESCENDANT_SELECTOR);\n\n return !!interactiveElement && currentTarget.contains(interactiveElement);\n}\n\nexport type DataTableHeaderCellProps<T, TValue> =\n BaseDataTableHeaderCellProps & {\n /** Coordinates used by the grid's roving-focus manager. */\n cellPosition: { rowIndex: number; columnIndex: number };\n /** Supplies column actions and sort state for this rendered header. */\n header: HeaderContext<T, TValue>;\n };\n\nfunction DataTableHeaderCellInner<T, TValue>(\n props: DataTableHeaderCellProps<T, TValue>,\n forwardedRef: Ref<HTMLDivElement>,\n) {\n const { cellPosition, children, header, className, ...rest } = props;\n\n const internalRef = useRef<HTMLDivElement>(null);\n\n const setRefs = useCallback(\n (element: HTMLDivElement | null) => {\n (internalRef as React.MutableRefObject<HTMLDivElement | null>).current =\n element;\n if (typeof forwardedRef === \"function\") {\n forwardedRef(element);\n } else if (forwardedRef) {\n (\n forwardedRef as React.MutableRefObject<HTMLDivElement | null>\n ).current = element;\n }\n },\n [forwardedRef],\n );\n\n // A resize drag can end outside its handle and retarget the resulting click\n // to the header cell; preserve where the interaction began to avoid sorting.\n const startedOnResizeHandleRef = useRef(false);\n\n const { jumpFocus, moveFocus } = useDTFocusDispatchContext();\n\n const columnId = header.column.id;\n const isExpandCell = columnId === INTERNAL_ROW_ACTION_PRIMARY_COLUMN_ID;\n const isSelectCell = columnId === INTERNAL_ROW_ACTION_SECONDARY_COLUMN_ID;\n const isSortingCell = header.column.getCanSort();\n\n const handleKeyDown = useCallback(\n (event: React.KeyboardEvent<HTMLDivElement>) => {\n switch (event.key) {\n case \"ArrowUp\":\n event.preventDefault();\n moveFocus(\"up\");\n return;\n case \"ArrowDown\":\n event.preventDefault();\n moveFocus(\"down\");\n return;\n case \"ArrowLeft\":\n event.preventDefault();\n moveFocus(\"left\");\n return;\n case \"ArrowRight\":\n event.preventDefault();\n moveFocus(\"right\");\n return;\n case \"Home\": {\n event.preventDefault();\n jumpFocus(\"left\");\n return;\n }\n case \"End\": {\n event.preventDefault();\n jumpFocus(\"right\");\n return;\n }\n case \" \":\n case \"Enter\": {\n if (isInteractiveDescendant(event.target, event.currentTarget)) {\n return;\n }\n\n const isDisabled = header.column.columnDef.meta?.disableHeaderAction;\n if (isSelectCell && !isDisabled) {\n event.preventDefault();\n header.table.toggleAllPageRowsSelected();\n return;\n }\n if (isExpandCell && !isDisabled) {\n event.preventDefault();\n header.table.toggleAllRowsExpanded();\n return;\n }\n if (isSortingCell) {\n event.preventDefault();\n header.column.toggleSorting();\n return;\n }\n return;\n }\n default:\n break;\n }\n },\n [\n moveFocus,\n jumpFocus,\n header.column,\n header.table,\n isExpandCell,\n isSelectCell,\n isSortingCell,\n ],\n );\n\n const handlePointerDownCapture = useCallback(\n (event: React.PointerEvent<HTMLDivElement>) => {\n startedOnResizeHandleRef.current =\n event.target instanceof Element &&\n event.target.closest('[aria-roledescription=\"Resize handle\"]') !== null;\n },\n [],\n );\n\n const handleClick = useCallback(\n (event: React.MouseEvent<HTMLDivElement>) => {\n if (isSortingCell) {\n if (startedOnResizeHandleRef.current) {\n startedOnResizeHandleRef.current = false;\n return;\n }\n\n if (!(event.target instanceof Element)) {\n return;\n }\n\n const resizeHandle = event.target.closest(\n '[aria-roledescription=\"Resize handle\"]',\n );\n\n if (\n resizeHandle ||\n isInteractiveDescendant(event.target, event.currentTarget)\n ) {\n return;\n }\n\n header.column.getToggleSortingHandler()?.(event);\n }\n },\n [header.column, isSortingCell],\n );\n\n return (\n <TableHeaderCell\n type=\"data-table\"\n {...rest}\n ref={setRefs}\n // The focus provider promotes the current restore-point cell to `0`.\n tabIndex={-1}\n onPointerDownCapture={handlePointerDownCapture}\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n className={cx(styles[\"data-table-header-cell\"], className)}\n data-cell-pos={formatCellPositionString(cellPosition)}\n {...(isSortingCell ? { [ANV_PART_ATTR]: PARTS.sortToggle } : {})}\n aria-sort={\n header.column.getIsSorted() === \"asc\"\n ? \"ascending\"\n : header.column.getIsSorted() === \"desc\"\n ? \"descending\"\n : undefined\n }\n >\n {children}\n {isSortingCell && (\n <SrOnly>\n {header.column.getIsSorted() === \"asc\"\n ? \"Sorted ascending.\"\n : header.column.getIsSorted() === \"desc\"\n ? \"Sorted descending.\"\n : \"Not sorted.\"}{\" \"}\n Click to toggle sort.\n </SrOnly>\n )}\n </TableHeaderCell>\n );\n}\n\n/** ARIA grid header cell with roving focus and column-specific actions. */\nexport const DataTableHeaderCell = forwardRef(DataTableHeaderCellInner) as <\n T,\n TValue,\n>(\n props: DataTableHeaderCellProps<T, TValue> & { ref?: Ref<HTMLDivElement> },\n) => ReturnType<typeof DataTableHeaderCellInner>;\n","import cx from \"classnames\";\nimport type { Header } from \"@tanstack/react-table\";\nimport type { ComponentPropsWithoutRef } from \"react\";\n\nimport styles from \"./ResizeHandle.module.scss\";\n\nexport type ResizeHandleProps<T> = {\n /** Header whose column width the pointer gesture controls. */\n header: Header<T, unknown>;\n /** Runs before TanStack's resize handler starts the gesture. */\n onResizeStart?: () => void;\n /** Runs when mouse or touch input ends. */\n onResizeEnd?: () => void;\n} & Omit<\n ComponentPropsWithoutRef<\"div\">,\n | \"role\"\n | \"children\"\n | \"onMouseDown\"\n | \"onTouchStart\"\n | \"onMouseUp\"\n | \"onTouchEnd\"\n | \"onDoubleClick\"\n>;\n\n/**\n * Pointer resize handle for a table column. Double-click restores the\n * column's configured size (`defaultWidth`, else `minWidth`).\n */\nexport function ResizeHandle<T>({\n header,\n onResizeStart,\n onResizeEnd,\n className,\n ...rest\n}: ResizeHandleProps<T>) {\n const classes = cx(styles[\"resize-handle\"], className, {\n [styles[\"resizing\"]]: header.column.getIsResizing(),\n });\n\n const handleResizeStart = (\n e: React.MouseEvent<HTMLDivElement> | React.TouchEvent<HTMLDivElement>,\n ) => {\n onResizeStart?.();\n header.getResizeHandler()(e);\n };\n\n return (\n <div\n role=\"button\"\n // TODO: enable keyboard resizing\n tabIndex={-1}\n onDoubleClick={() => header.column.resetSize()}\n onMouseDown={handleResizeStart}\n onTouchStart={handleResizeStart}\n onMouseUp={onResizeEnd}\n onTouchEnd={onResizeEnd}\n className={classes}\n aria-label=\"Resize column\"\n aria-pressed={header.column.getIsResizing()}\n aria-roledescription=\"Resize handle\"\n {...rest}\n />\n );\n}\n","import {\n type ComponentPropsWithoutRef,\n useCallback,\n useRef,\n type RefObject,\n} from \"react\";\nimport { flushSync } from \"react-dom\";\nimport { flexRender, type Table as TanstackTable } from \"@tanstack/react-table\";\n\nimport IconArrowUpward from \"../../../../../../public/assets/icons/material/round/arrow_upward.svg\";\nimport IconArrowDownward from \"../../../../../../public/assets/icons/material/round/arrow_downward.svg\";\n\nimport { TableHeader } from \"../../base/TableHeader\";\nimport { DataTableHeaderCell } from \"./cells/DataTableHeaderCell\";\nimport { Flex, Icon } from \"../../../../../components\";\nimport { getCommonPinningClasses } from \"../../internal/getCommonPinningClasses\";\nimport { getCommonPinningStyles } from \"../../internal/getCommonPinningStyles\";\nimport { ResizeHandle } from \"../../internal/ResizeHandle\";\n\nimport styles from \"./DataTableHeader.module.scss\";\nimport { useColumnOrder } from \"./useColumnOrder\";\nimport {\n INTERNAL_ROW_ACTION_PRIMARY_COLUMN_ID,\n INTERNAL_ROW_ACTION_SECONDARY_COLUMN_ID,\n} from \"./constants\";\nimport { ANV_PART_ATTR } from \"../../../../../internal/constants/anvParts\";\nimport { PARTS } from \"../parts\";\n\ntype HeaderContentAlign = \"flex-start\" | \"center\" | \"flex-end\";\n\nfunction getHeaderContentAlign(\n align?: \"start\" | \"center\" | \"end\",\n): HeaderContentAlign {\n if (align === \"center\") {\n return \"center\";\n }\n\n if (align === \"end\") {\n return \"flex-end\";\n }\n\n return \"flex-start\";\n}\n\ntype DataTableHeaderProps<T> = {\n /** Supplies header groups plus column sorting, sizing, and metadata. */\n table: TanstackTable<T>;\n /**\n * Table root used to scope imperative column-hover attributes to this table.\n */\n tableRef: RefObject<HTMLDivElement>;\n} & ComponentPropsWithoutRef<\"div\">;\n\n/**\n * Renders DataTable header rows from TanStack header groups, including group\n * spans, sort indicators, and column resize handles.\n */\nexport function DataTableHeader<T>({\n table,\n tableRef,\n}: DataTableHeaderProps<T>) {\n const getTableBase = useCallback(\n () =>\n tableRef.current?.querySelector<HTMLElement>(\n '[data-anv=\"data-table-base\"]',\n ) ?? null,\n [tableRef],\n );\n\n const handleHoverColumn = useCallback(\n (columnId: string) => {\n const base = getTableBase();\n if (!base) return;\n base.setAttribute(\"data-anv-hover-col\", columnId);\n base\n .querySelectorAll(`[data-anv-column-id=\"${CSS.escape(columnId)}\"]`)\n .forEach((el) => el.setAttribute(\"data-anv-is-hovered-col\", \"true\"));\n },\n [getTableBase],\n );\n\n const handleHoverColumnLeave = useCallback(\n (columnId: string) => {\n const base = getTableBase();\n if (!base) return;\n if (base.getAttribute(\"data-anv-hover-col\") !== columnId) return;\n base.removeAttribute(\"data-anv-hover-col\");\n base\n .querySelectorAll(\n `[data-anv-column-id=\"${CSS.escape(columnId)}\"][data-anv-is-hovered-col=\"true\"]`,\n )\n .forEach((el) => el.removeAttribute(\"data-anv-is-hovered-col\"));\n },\n [getTableBase],\n );\n\n const cellRefs = useRef<Map<string, HTMLDivElement>>(new Map());\n\n // Seed controlled sizing from the rendered width before TanStack measures\n // the resize gesture. `flushSync` makes that width visible in the same event.\n const createResizeStartHandler = useCallback(\n (columnId: string) => () => {\n const cellElement = cellRefs.current.get(columnId);\n if (cellElement) {\n const actualWidth = cellElement.getBoundingClientRect().width;\n flushSync(() => {\n table.setColumnSizing((prev) => ({\n ...prev,\n [columnId]: actualWidth,\n }));\n });\n }\n },\n [table],\n );\n\n const { columnOrder } = useColumnOrder({ table });\n\n return (\n <TableHeader type=\"data-table\">\n {table.getHeaderGroups().map((headerGroup, index) => (\n <div\n key={headerGroup.id}\n className={styles[\"data-table-header-row\"]}\n role=\"row\"\n aria-rowindex={index + 1}\n >\n {headerGroup.headers.map((header) => {\n const isLastInParentGroup = header.column.parent\n ? header.column.parent.getLeafColumns().slice(-1)[0] ===\n header.column\n : false;\n\n const isInternalSelectColumn =\n header.column.id === INTERNAL_ROW_ACTION_SECONDARY_COLUMN_ID;\n const isInternalExpandColumn =\n header.column.id === INTERNAL_ROW_ACTION_PRIMARY_COLUMN_ID;\n\n const gridColumn =\n header.colSpan > 1 ? `span ${header.colSpan}` : undefined;\n\n const headerContentAlign = getHeaderContentAlign(\n header.column.columnDef.meta?.headerAlign,\n );\n const isGroupHeader = header.subHeaders.length > 0;\n const hasGroupDivider =\n isGroupHeader ||\n Boolean(header.column.parent && isLastInParentGroup);\n const isHeaderActionDisabled =\n header.column.columnDef.meta?.disableHeaderAction === true;\n const headerCellInteractive =\n !isGroupHeader &&\n (header.column.getCanSort() ||\n ((isInternalExpandColumn || isInternalSelectColumn) &&\n !isHeaderActionDisabled));\n\n return (\n <DataTableHeaderCell\n header={header.getContext()}\n key={header.id}\n ref={(el: HTMLDivElement | null) => {\n if (el) {\n cellRefs.current.set(header.column.id, el);\n } else {\n cellRefs.current.delete(header.column.id);\n }\n }}\n className={getCommonPinningClasses(header.column)}\n data-anv-column-id={header.column.id}\n style={{\n gridColumn,\n ...getCommonPinningStyles(header.column),\n }}\n aria-colspan={header.colSpan}\n isGroup={hasGroupDivider}\n isSortable={header.column.getCanSort()}\n isInteractiveHeaderCell={headerCellInteractive}\n isSelectCell={isInternalSelectColumn}\n isExpandCell={isInternalExpandColumn}\n onMouseEnter={\n headerCellInteractive\n ? () => handleHoverColumn(header.column.id)\n : undefined\n }\n onMouseLeave={\n headerCellInteractive\n ? () => handleHoverColumnLeave(header.column.id)\n : undefined\n }\n cellPosition={{\n rowIndex: index,\n columnIndex: columnOrder.indexOf(header.column.getIndex()),\n }}\n >\n {header.isPlaceholder ? null : (\n <Flex\n direction=\"row\"\n alignItems=\"center\"\n gap={2}\n style={{\n width: \"100%\",\n }}\n >\n <Flex\n direction=\"row\"\n alignItems=\"center\"\n justifyContent={headerContentAlign}\n gap={2}\n grow={1}\n style={{\n minWidth: 0,\n width: \"100%\",\n }}\n >\n {flexRender(\n header.column.columnDef.header,\n header.getContext(),\n )}\n {header.column.getIsSorted() ? (\n <span\n style={{\n alignItems: \"center\",\n display: \"flex\",\n flexShrink: 0,\n }}\n >\n {{\n asc: <Icon svg={IconArrowUpward} size=\"small\" />,\n desc: <Icon svg={IconArrowDownward} size=\"small\" />,\n }[header.column.getIsSorted() as string] ?? null}\n </span>\n ) : null}\n </Flex>\n {header.column.columnDef.enableResizing && (\n <ResizeHandle\n header={header}\n onResizeStart={createResizeStartHandler(\n header.column.id,\n )}\n {...{ [ANV_PART_ATTR]: PARTS.resizeHandle }}\n />\n )}\n </Flex>\n )}\n </DataTableHeaderCell>\n );\n })}\n </div>\n ))}\n </TableHeader>\n );\n}\n","import { type ComponentPropsWithoutRef, forwardRef } from \"react\";\nimport cx from \"classnames\";\n\nimport type { LayoutUtilProps } from \"../../../../types\";\nimport { useLayoutPropsUtil } from \"../../../../internal/hooks/useLayoutPropsUtil\";\n\nimport styles from \"./TableContainer.module.scss\";\n\nexport type TableContainerProps = LayoutUtilProps &\n ComponentPropsWithoutRef<\"div\">;\n\n/**\n * Provides the table surface and an inner vertical scrolling region.\n */\nexport const TableContainer = forwardRef<HTMLDivElement, TableContainerProps>(\n (props, ref) => {\n const { layoutStyles, componentProps } = useLayoutPropsUtil(props);\n const { children, className, style, ...rest } = componentProps;\n\n const tableContainerClassNames = cx(className, styles[\"table-container\"]);\n const styleCombined = {\n ...style,\n ...layoutStyles,\n };\n\n return (\n <div\n style={styleCombined}\n ref={ref}\n {...rest}\n className={tableContainerClassNames}\n data-anv=\"table-container\"\n >\n <div\n className={styles[\"table-scroll-container\"]}\n data-anv=\"table-scroll-container\"\n >\n {children}\n </div>\n </div>\n );\n },\n);\n\nTableContainer.displayName = \"TableContainer\";\n","import IconKeyboardArrowLeft from \"@servicetitan/hammer-icon/mdi/round/keyboard_arrow_left.svg\";\nimport IconKeyboardArrowRight from \"@servicetitan/hammer-icon/mdi/round/keyboard_arrow_right.svg\";\n\nimport { Button } from \"../../../../../components/Button\";\nimport {\n Pagination,\n type PaginationProps,\n} from \"../../../../../components/Pagination\";\nimport { SrOnly } from \"../../../../../components/SrOnly\";\nimport { useTrackingId } from \"../../../../../hooks\";\nimport { Pagination as BasePagination } from \"../../../../../components/Pagination/internal/Pagination\";\nimport { ANV_PART_ATTR } from \"../../../../../internal/constants/anvParts\";\nimport { PARTS as PAGINATION_PARTS } from \"../../../../../components/Pagination/parts\";\n\nimport styles from \"./DataTablePagination.module.scss\";\n\ntype DataTableCursorPaginationProps = Pick<\n PaginationProps,\n | \"page\"\n | \"itemsPerPage\"\n | \"onPageChange\"\n | \"onItemsPerPageChange\"\n | \"itemsPerPageOptions\"\n> & {\n /** Explicit `true` enables Next. Omitted or false leaves it disabled. */\n hasNextPage?: boolean;\n /**\n * Explicit `true` enables Previous when `page` is greater than 1. Omitted\n * or false leaves it disabled.\n */\n hasPrevPage?: boolean;\n};\n\n/**\n * Numbered pagination fields picked from {@link PaginationProps}, including\n * `totalItemCount`.\n */\nexport type DataTablePaginationProps = Pick<\n PaginationProps,\n | \"page\"\n | \"itemsPerPage\"\n | \"totalItemCount\"\n | \"showCount\"\n | \"onPageChange\"\n | \"onItemsPerPageChange\"\n | \"itemsPerPageOptions\"\n>;\n\n/**\n * Numbered page chrome for DataTable. `showCount` defaults to `true`.\n */\nexport const DataTablePagination = ({\n showCount = true,\n ...props\n}: DataTablePaginationProps) => {\n return (\n <Pagination\n className={styles[\"pagination\"]}\n {...props}\n showCount={showCount}\n />\n );\n};\n\n/**\n * Prev/next chrome when the table has no `totalItemCount`. Next/Previous stay\n * disabled unless the matching flag is exactly `true`.\n */\nexport const DataTableCursorPagination = ({\n page,\n itemsPerPage,\n itemsPerPageOptions,\n hasNextPage,\n hasPrevPage,\n onPageChange,\n onItemsPerPageChange,\n}: DataTableCursorPaginationProps) => {\n const canGoToPreviousPage = hasPrevPage === true && page > 1;\n const canGoToNextPage = hasNextPage === true;\n const trackingId = useTrackingId({\n name: \"Pagination\",\n data: {\n \"aria-label\": \"Pagination navigation\",\n },\n });\n const previousPageAvailability = canGoToPreviousPage\n ? \"available\"\n : \"unavailable\";\n const nextPageAvailability = canGoToNextPage ? \"available\" : \"unavailable\";\n\n return (\n <nav\n className={styles[\"pagination\"]}\n aria-label=\"Pagination navigation\"\n data-tracking-id={trackingId}\n >\n <ul className={styles[\"cursor-pagination-list\"]}>\n <li className={styles[\"cursor-pagination-item\"]}>\n <Button\n appearance=\"ghost\"\n icon={IconKeyboardArrowLeft}\n size=\"small\"\n aria-label=\"Previous page\"\n disabled={!canGoToPreviousPage}\n onClick={() => {\n if (canGoToPreviousPage) {\n onPageChange?.(Math.max(1, page - 1));\n }\n }}\n {...{ [ANV_PART_ATTR]: PAGINATION_PARTS.prevPageButton }}\n />\n </li>\n <li className={styles[\"cursor-pagination-item\"]}>\n <Button\n appearance=\"ghost\"\n icon={IconKeyboardArrowRight}\n size=\"small\"\n aria-label=\"Next page\"\n disabled={!canGoToNextPage}\n onClick={() => {\n if (canGoToNextPage) {\n onPageChange?.(page + 1);\n }\n }}\n {...{ [ANV_PART_ATTR]: PAGINATION_PARTS.nextPageButton }}\n />\n </li>\n </ul>\n {itemsPerPageOptions && (\n <BasePagination.ItemsPerPageMenu\n itemsPerPage={itemsPerPage}\n itemsPerPageOptions={itemsPerPageOptions}\n onItemsPerPageChange={(itemsPerPage) => {\n onItemsPerPageChange?.(itemsPerPage);\n }}\n />\n )}\n <SrOnly aria-live=\"polite\" aria-atomic=\"true\">\n Page {page}. Previous page {previousPageAvailability}. Next page{\" \"}\n {nextPageAvailability}.\n </SrOnly>\n </nav>\n );\n};\n","import { useState, useEffect, useRef } from \"react\";\n\n/**\n * Resolves a value-or-promise into `{ data, error, isLoading }`.\n *\n * A non-Promise argument is returned from the same render with `isLoading:\n * false`, so array identity is preserved. Promise results come from state\n * (initially `{ data: null, isLoading: true }`); a newer argument identity\n * bumps a request id so an older in-flight Promise cannot write back.\n */\nexport const useAsyncData = <T,>(dataOrPromise: T | Promise<T>) => {\n const [resolvedData, setResolvedData] = useState<T | null>(null);\n const [error, setError] = useState(false);\n const [isLoading, setIsLoading] = useState(true);\n const latestRequestRef = useRef({ dataOrPromise, id: 0 });\n\n // Bump during render so this pass's effect captures the new id before the\n // previous Promise settles.\n if (latestRequestRef.current.dataOrPromise !== dataOrPromise) {\n latestRequestRef.current = {\n dataOrPromise,\n id: latestRequestRef.current.id + 1,\n };\n }\n\n const requestId = latestRequestRef.current.id;\n\n useEffect(() => {\n async function resolveData() {\n if (dataOrPromise instanceof Promise) {\n setIsLoading(true);\n setError(false);\n try {\n const data = await dataOrPromise;\n\n if (latestRequestRef.current.id !== requestId) {\n return;\n }\n\n setResolvedData(data);\n setError(false);\n setIsLoading(false);\n } catch (_error) {\n if (latestRequestRef.current.id !== requestId) {\n return;\n }\n\n setError(true);\n setIsLoading(false);\n setResolvedData(null);\n }\n } else {\n setResolvedData(dataOrPromise);\n setError(false);\n setIsLoading(false);\n }\n }\n resolveData();\n }, [dataOrPromise, requestId]);\n\n if (!(dataOrPromise instanceof Promise)) {\n return { data: dataOrPromise, error: false, isLoading: false };\n }\n\n return { data: resolvedData, error, isLoading };\n};\n","import { useCallback, useRef } from \"react\";\nimport type { TableRow } from \"../../types\";\nimport type { DataTableCacheOptions, SortedColumn } from \"../types\";\n\nconst DEFAULT_CACHE_MAX_SIZE = 15;\n\n/**\n * Caches `loadPageData` rows by page index. Hits return synchronously; misses\n * call the loader. `refreshKey`, `refreshCounter`, `rowsPerPage`, and sort\n * `id`/`desc` replace the Map during render so a later `getOrLoad` cannot\n * read a stale page. In-flight resolves after a generation bump still fulfill\n * the caller but are not written into the Map. Caching is on by default with\n * a 15-entry FIFO cap; with no loader, `getOrLoad` returns `[]`.\n */\nexport function usePageDataCache<T>(config: {\n loadPageData?: (params: {\n pageIndex: number;\n pageSize: number;\n sorting?: SortedColumn;\n }) => TableRow<T>[] | Promise<TableRow<T>[]>;\n cache?: DataTableCacheOptions;\n refreshKey?: string | number;\n refreshCounter: number;\n rowsPerPage: number;\n sorting?: SortedColumn;\n}): {\n getOrLoad: (\n pageIndex: number,\n pageSize: number,\n sorting?: SortedColumn,\n ) => TableRow<T>[] | Promise<TableRow<T>[]>;\n clearCache: () => void;\n} {\n const { loadPageData, cache: cacheConfig } = config;\n\n const cacheEnabled = cacheConfig?.enabled !== false;\n const cacheMaxSize = cacheConfig?.maxSize ?? DEFAULT_CACHE_MAX_SIZE;\n\n const pageCacheRef = useRef(new Map<number, TableRow<T>[]>());\n const loadPageDataRef = useRef(loadPageData);\n loadPageDataRef.current = loadPageData;\n\n const generationRef = useRef(0);\n\n const prevRefreshKeyRef = useRef(config.refreshKey);\n const prevRefreshCounterRef = useRef(config.refreshCounter);\n const prevRowsPerPageRef = useRef(config.rowsPerPage);\n const prevSortingRef = useRef(config.sorting);\n\n if (\n prevRefreshKeyRef.current !== config.refreshKey ||\n prevRefreshCounterRef.current !== config.refreshCounter ||\n prevRowsPerPageRef.current !== config.rowsPerPage ||\n prevSortingRef.current?.id !== config.sorting?.id ||\n prevSortingRef.current?.desc !== config.sorting?.desc\n ) {\n pageCacheRef.current = new Map();\n generationRef.current += 1;\n prevRefreshKeyRef.current = config.refreshKey;\n prevRefreshCounterRef.current = config.refreshCounter;\n prevRowsPerPageRef.current = config.rowsPerPage;\n prevSortingRef.current = config.sorting;\n }\n\n const getOrLoad = useCallback(\n (\n pageIndex: number,\n pageSize: number,\n sorting?: SortedColumn,\n ): TableRow<T>[] | Promise<TableRow<T>[]> => {\n if (cacheEnabled) {\n const cached = pageCacheRef.current.get(pageIndex);\n if (cached) return cached;\n }\n\n const loader = loadPageDataRef.current;\n if (!loader) return [];\n\n const result = loader({ pageIndex, pageSize, sorting });\n\n if (!cacheEnabled) return result;\n\n const requestGeneration = generationRef.current;\n\n if (result instanceof Promise) {\n return result.then((data) => {\n if (generationRef.current !== requestGeneration) return data;\n const cache = pageCacheRef.current;\n if (cache.size >= cacheMaxSize) {\n const oldest = cache.keys().next().value;\n if (oldest != null) cache.delete(oldest);\n }\n cache.set(pageIndex, data);\n return data;\n });\n }\n\n const cache = pageCacheRef.current;\n if (cache.size >= cacheMaxSize) {\n const oldest = cache.keys().next().value;\n if (oldest != null) cache.delete(oldest);\n }\n cache.set(pageIndex, result);\n return result;\n },\n [cacheEnabled, cacheMaxSize],\n );\n\n const clearCache = useCallback(() => {\n pageCacheRef.current = new Map();\n generationRef.current += 1;\n }, []);\n\n return { getOrLoad, clearCache };\n}\n","/**\n * Smoothly reveals a keyboard-targeted cell without placing it beneath sticky\n * row groups or pinned columns. Header and footer cells scroll only\n * horizontally.\n */\nexport function scrollCellIntoView(\n element: HTMLElement,\n stickyDimensions: { leftWidth: number; rightWidth: number },\n): void {\n const isBodyCell = element.getAttribute(\"data-anv\") === \"table-body-cell\";\n\n const scrollContainer = element.closest(\n '[data-anv=\"table-scroll-container\"]',\n ) as HTMLElement | null;\n\n if (!scrollContainer) return;\n\n const headerElement =\n scrollContainer.querySelectorAll('[role=\"rowgroup\"]')[0];\n const footerElement = scrollContainer\n .querySelector('[data-anv=\"table-footer-row\"]')\n ?.closest('[role=\"rowgroup\"]') as HTMLElement | undefined;\n\n const dimensions = {\n headerHeight: headerElement?.getBoundingClientRect().height ?? 0,\n footerHeight: footerElement?.getBoundingClientRect().height ?? 0,\n leftWidth: stickyDimensions.leftWidth,\n rightWidth: stickyDimensions.rightWidth,\n };\n\n // Sticky cells move with their pinned edge and need no horizontal correction.\n const cellStyle = window.getComputedStyle(element);\n const isHorizontallySticky =\n cellStyle.position === \"sticky\" &&\n (cellStyle.left !== \"auto\" || cellStyle.right !== \"auto\");\n\n const elementRect = element.getBoundingClientRect();\n const scrollContainerRect = scrollContainer.getBoundingClientRect();\n\n // Bounding rect dimensions include scrollbars, but sticky elements position\n // relative to the content area which excludes scrollbars.\n const contentWidth = scrollContainer.clientWidth;\n const contentHeight = scrollContainer.clientHeight;\n\n const visibleLeft = scrollContainerRect.x + dimensions.leftWidth;\n const visibleRight =\n scrollContainerRect.x + contentWidth - dimensions.rightWidth;\n const visibleTop = scrollContainerRect.y + dimensions.headerHeight;\n const visibleBottom =\n scrollContainerRect.y + contentHeight - dimensions.footerHeight;\n\n const isFullyVisible =\n elementRect.x >= visibleLeft &&\n elementRect.x + elementRect.width <= visibleRight &&\n (isBodyCell\n ? elementRect.y >= visibleTop &&\n elementRect.y + elementRect.height <= visibleBottom\n : true);\n\n if (isFullyVisible) return;\n\n const getScrollByLeft = (): number => {\n if (isHorizontallySticky) return 0;\n if (elementRect.x < visibleLeft) {\n return elementRect.x - visibleLeft;\n }\n if (elementRect.x + elementRect.width > visibleRight) {\n return elementRect.x + elementRect.width - visibleRight;\n }\n return 0;\n };\n\n const getScrollByTop = (): number => {\n if (!isBodyCell) return 0;\n if (elementRect.y < visibleTop) {\n return elementRect.y - visibleTop;\n }\n if (elementRect.y + elementRect.height > visibleBottom) {\n return elementRect.y + elementRect.height - visibleBottom;\n }\n return 0;\n };\n\n const scrollLeft = getScrollByLeft();\n const scrollTop = getScrollByTop();\n\n if (scrollLeft !== 0 || scrollTop !== 0) {\n scrollContainer.scrollBy({\n left: scrollLeft,\n top: scrollTop,\n behavior: \"smooth\",\n });\n }\n}\n","import { useRef, useCallback, useMemo, useLayoutEffect } from \"react\";\nimport {\n type DTFocusAction,\n DTFocusDispatchContext,\n type DTFocusState,\n DTFocusStateContext,\n} from \"./DTFocusContext\";\nimport type { CellPosition } from \"../../../../internal/types\";\nimport {\n areCellPositionsEqual,\n formatCellPositionString,\n} from \"../../util/cellPositionHelpers\";\nimport { scrollCellIntoView } from \"../../../../internal/scrollCellIntoView\";\nimport type { DataTableVirtualizer } from \"../../useDataTableVirtualizer\";\n\nconst initialState: DTFocusState = {\n focusedCell: null,\n focusRestorePoint: { rowIndex: 0, columnIndex: 0 },\n};\n\nfunction reducer(\n state: DTFocusState,\n action: DTFocusAction,\n rowCount: number,\n columnCount: number,\n): DTFocusState {\n switch (action.type) {\n case \"FOCUS_CELL_MANUALLY\": {\n return {\n ...state,\n focusedCell: action.payload.cellPosition,\n };\n }\n case \"FOCUS_CELL\": {\n return {\n ...state,\n focusedCell: action.payload.cellPosition,\n focusRestorePoint: action.payload.cellPosition,\n };\n }\n case \"FOCUS_TABLE\": {\n return {\n ...state,\n focusedCell: state.focusRestorePoint,\n };\n }\n case \"MOVE_FOCUS\": {\n let newFocusedCell: CellPosition;\n\n const currentColumnIndex = state.focusedCell?.columnIndex ?? 0;\n const currentRowIndex = state.focusedCell?.rowIndex ?? 0;\n\n if (action.payload.direction === \"left\") {\n newFocusedCell = {\n rowIndex: currentRowIndex,\n columnIndex: Math.max(0, currentColumnIndex - 1),\n };\n } else if (action.payload.direction === \"right\") {\n newFocusedCell = {\n rowIndex: currentRowIndex,\n columnIndex: Math.min(columnCount - 1, currentColumnIndex + 1),\n };\n } else if (action.payload.direction === \"up\") {\n newFocusedCell = {\n rowIndex: Math.max(0, currentRowIndex - 1),\n columnIndex: currentColumnIndex,\n };\n } else if (action.payload.direction === \"down\") {\n newFocusedCell = {\n rowIndex: Math.min(rowCount - 1, currentRowIndex + 1),\n columnIndex: currentColumnIndex,\n };\n } else {\n newFocusedCell = {\n rowIndex: currentRowIndex,\n columnIndex: currentColumnIndex,\n };\n }\n return {\n ...state,\n focusedCell: newFocusedCell,\n };\n }\n case \"JUMP_FOCUS\": {\n let newFocusedCell: CellPosition;\n const currentColumnIndex = state.focusedCell?.columnIndex ?? 0;\n const currentRowIndex = state.focusedCell?.rowIndex ?? 0;\n if (action.payload.direction === \"left\") {\n newFocusedCell = {\n rowIndex: currentRowIndex,\n columnIndex: 0,\n };\n } else if (action.payload.direction === \"right\") {\n newFocusedCell = {\n rowIndex: currentRowIndex,\n columnIndex: columnCount - 1,\n };\n } else if (action.payload.direction === \"up\") {\n newFocusedCell = {\n rowIndex: 0,\n columnIndex: currentColumnIndex,\n };\n } else if (action.payload.direction === \"down\") {\n newFocusedCell = {\n rowIndex: rowCount - 1,\n columnIndex: currentColumnIndex,\n };\n } else {\n newFocusedCell = {\n rowIndex: currentRowIndex,\n columnIndex: currentColumnIndex,\n };\n }\n return {\n ...state,\n focusedCell: newFocusedCell,\n };\n }\n case \"BLUR\": {\n return {\n ...state,\n focusedCell: null,\n focusRestorePoint: state.focusedCell ?? { columnIndex: 0, rowIndex: 0 },\n };\n }\n default: {\n throw new Error(\"Unknown action\");\n }\n }\n}\n\nexport interface DTFocusProviderProps {\n children: React.ReactNode;\n rowCount: number;\n columnCount: number;\n tableRef: React.RefObject<HTMLDivElement>;\n leftPinnedWidth: number;\n rightPinnedWidth: number;\n virtualizer?: DataTableVirtualizer;\n headerRowCount: number;\n}\n\n/**\n * Coordinates roving focus across rendered and virtualized data-table cells.\n */\nexport function DTFocusProvider({\n children,\n rowCount,\n columnCount,\n tableRef,\n leftPinnedWidth,\n rightPinnedWidth,\n virtualizer,\n headerRowCount,\n}: DTFocusProviderProps) {\n const stateRef = useRef<DTFocusState>(initialState);\n\n const lastTabbablePosRef = useRef<CellPosition | null>(null);\n\n const syncRovingTabindex = useCallback(() => {\n const restorePoint = stateRef.current.focusRestorePoint;\n const prev = lastTabbablePosRef.current;\n const nextEl = tableRef.current?.querySelector(\n `[data-cell-pos=\"${formatCellPositionString(restorePoint)}\"]`,\n ) as HTMLElement | null;\n\n // Remounted cells reset to tabIndex=-1 without changing their coordinates.\n const restorePointUnchanged =\n prev &&\n prev.rowIndex === restorePoint.rowIndex &&\n prev.columnIndex === restorePoint.columnIndex;\n if (restorePointUnchanged && nextEl?.tabIndex === 0) {\n return;\n }\n\n const prevEl =\n prev && !restorePointUnchanged\n ? (tableRef.current?.querySelector(\n `[data-cell-pos=\"${formatCellPositionString(prev)}\"]`,\n ) as HTMLElement | null)\n : null;\n if (prevEl) prevEl.tabIndex = -1;\n if (nextEl) nextEl.tabIndex = 0;\n lastTabbablePosRef.current = restorePoint;\n }, [tableRef]);\n\n // Shape changes can remount the restore-point cell with tabIndex=-1.\n useLayoutEffect(() => {\n syncRovingTabindex();\n }, [syncRovingTabindex, rowCount, columnCount]);\n\n const dispatch = useCallback(\n (action: DTFocusAction) => {\n const newState = reducer(stateRef.current, action, rowCount, columnCount);\n let shouldSkipFocusUpdate = false;\n if (\n areCellPositionsEqual(\n newState.focusedCell,\n stateRef.current.focusedCell,\n )\n ) {\n shouldSkipFocusUpdate = true;\n }\n stateRef.current = newState;\n syncRovingTabindex();\n\n if (!newState.focusedCell || shouldSkipFocusUpdate) {\n return;\n }\n\n const focusTargetCell = () => {\n if (!newState.focusedCell) return;\n // Skip stale rAF-deferred invocations: during sustained keyboard nav,\n // multiple dispatches can queue rAF callbacks before any of them run.\n // If a later dispatch has superseded this one, don't query/focus/fall\n // back for the old target — that would snap focus to (0,0) mid-scroll.\n if (\n !areCellPositionsEqual(\n newState.focusedCell,\n stateRef.current.focusedCell,\n )\n ) {\n return;\n }\n const element = tableRef.current?.querySelector(\n `[data-cell-pos=\"${formatCellPositionString(newState.focusedCell)}\"]`,\n ) as HTMLElement | null;\n\n if (element) {\n element.focus();\n scrollCellIntoView(element, {\n leftWidth: leftPinnedWidth,\n rightWidth: rightPinnedWidth,\n });\n } else {\n // A reduced page can invalidate the previous cell coordinates.\n dispatch({\n type: \"FOCUS_CELL_MANUALLY\",\n payload: { cellPosition: { rowIndex: 0, columnIndex: 0 } },\n });\n }\n };\n\n if (virtualizer && newState.focusedCell) {\n // Translate the focused cell's row index (which includes header rows)\n // into a body-row index for the virtualizer. Header rows\n // 0..headerRowCount-1 are always in the DOM — skip scrollToIndex for\n // those. Footer rows live past `rowCount` and also aren't virtualized,\n // so bound the index by the virtualizer's row count to avoid wasting\n // a frame of focus latency on a no-op scroll.\n const virtualRowIndex = newState.focusedCell.rowIndex - headerRowCount;\n const bodyRowCount = virtualizer.options.count;\n if (virtualRowIndex >= 0 && virtualRowIndex < bodyRowCount) {\n virtualizer.scrollToIndex(virtualRowIndex, { align: \"auto\" });\n // Defer focus to next frame so the virtualizer has a chance to render\n // the target row into the DOM.\n requestAnimationFrame(focusTargetCell);\n return;\n }\n }\n\n focusTargetCell();\n },\n [\n rowCount,\n columnCount,\n tableRef,\n leftPinnedWidth,\n rightPinnedWidth,\n syncRovingTabindex,\n virtualizer,\n headerRowCount,\n ],\n );\n\n const state = useMemo(\n () => ({ getFocusedCell: () => stateRef.current.focusedCell }),\n [],\n );\n\n return (\n <DTFocusStateContext.Provider value={state}>\n <DTFocusDispatchContext.Provider value={dispatch}>\n {children}\n </DTFocusDispatchContext.Provider>\n </DTFocusStateContext.Provider>\n );\n}\n","import { useCallback, useMemo, useRef, type RefObject } from \"react\";\n\nimport {\n DataTableSurfaceCoordinatorContext,\n type DataTableSurfaceRegistration,\n} from \"./DataTableSurfaceCoordinatorContext\";\n\ntype ActiveDataTableSurface = DataTableSurfaceRegistration;\n\ntype DataTableSurfaceCoordinatorProviderProps = {\n children: React.ReactNode;\n intersectionBoundaryRef?: RefObject<HTMLElement | null>;\n};\n\n/** Ensures only one cell-owned surface remains open at a time. */\nexport function DataTableSurfaceCoordinatorProvider({\n children,\n intersectionBoundaryRef,\n}: DataTableSurfaceCoordinatorProviderProps) {\n const activeSurfaceRef = useRef<ActiveDataTableSurface | null>(null);\n\n const requestOpen = useCallback(\n (registration: DataTableSurfaceRegistration) => {\n const activeSurface = activeSurfaceRef.current;\n\n if (activeSurface && activeSurface.id !== registration.id) {\n activeSurface.close({ restoreFocus: false });\n }\n\n activeSurfaceRef.current = registration;\n },\n [],\n );\n\n const clear = useCallback((id: string) => {\n if (activeSurfaceRef.current?.id === id) {\n activeSurfaceRef.current = null;\n }\n }, []);\n\n const value = useMemo(\n () => ({\n requestOpen,\n clear,\n intersectionBoundaryRef,\n }),\n [clear, intersectionBoundaryRef, requestOpen],\n );\n\n return (\n <DataTableSurfaceCoordinatorContext.Provider value={value}>\n {children}\n </DataTableSurfaceCoordinatorContext.Provider>\n );\n}\n","import { type ReactNode, useCallback, useMemo, useRef } from \"react\";\nimport { DataTableRowClickContext } from \"./DataTableRowClickContext\";\n\nexport type DataTableRowClickProviderProps = {\n /** Consumer callback. Its presence enables row click. */\n onClickRow?: (rowId: string) => void;\n /**\n * Read-only row ids keyed by stringified id. Read-only rows never fire the\n * row-click callback.\n */\n readOnlyRowMap: Record<string, boolean>;\n children: ReactNode;\n};\n\n/**\n * Keeps `clickRow` stable while reading the latest callback and read-only map\n * from refs.\n */\nexport function DataTableRowClickProvider({\n onClickRow,\n readOnlyRowMap,\n children,\n}: DataTableRowClickProviderProps) {\n const onClickRowRef = useRef(onClickRow);\n onClickRowRef.current = onClickRow;\n const readOnlyRowMapRef = useRef(readOnlyRowMap);\n readOnlyRowMapRef.current = readOnlyRowMap;\n\n const clickRow = useCallback((rowId: string) => {\n if (readOnlyRowMapRef.current[rowId]) return;\n onClickRowRef.current?.(rowId);\n }, []);\n\n const isRowClickEnabled = !!onClickRow;\n\n const value = useMemo(\n () => ({ isRowClickEnabled, clickRow }),\n [isRowClickEnabled, clickRow],\n );\n\n return (\n <DataTableRowClickContext.Provider value={value}>\n {children}\n </DataTableRowClickContext.Provider>\n );\n}\n","import { type RefObject, useMemo } from \"react\";\nimport { useVirtualizer, type Virtualizer } from \"@tanstack/react-virtual\";\nimport { DEFAULT_ESTIMATED_ROW_HEIGHT } from \"./constants\";\n\n/**\n * Minimum body row count that turns virtualization on. Fewer rows stay fully\n * mounted, including editable cells.\n */\nexport const VIRTUALIZATION_THRESHOLD = 50;\n\nexport type DataTableVirtualizer = Virtualizer<HTMLDivElement, HTMLDivElement>;\n\n/**\n * TanStack row virtualizer for the DataTable body, or `undefined` so the body\n * can flat-render.\n *\n * Virtualizes when `rowCount` is at least {@link VIRTUALIZATION_THRESHOLD},\n * unless `disabled`. `forced` virtualizes below the threshold; `disabled` wins\n * if both are set.\n */\nexport function useDataTableVirtualizer({\n rowCount,\n scrollRef,\n disabled,\n forced,\n}: {\n rowCount: number;\n scrollRef: RefObject<HTMLDivElement>;\n disabled?: boolean;\n forced?: boolean;\n}): DataTableVirtualizer | undefined {\n const shouldVirtualize =\n !disabled && (forced || rowCount >= VIRTUALIZATION_THRESHOLD);\n\n const virtualizer = useVirtualizer<HTMLDivElement, HTMLDivElement>({\n count: shouldVirtualize ? rowCount : 0,\n // The outer TableContainer does not scroll; overflow lives on\n // [data-anv=\"table-scroll-container\"]. Fall back to the outer node when\n // that child is absent.\n getScrollElement: () => {\n const outer = scrollRef.current;\n if (!outer) return null;\n return (\n outer.querySelector<HTMLDivElement>(\n '[data-anv=\"table-scroll-container\"]',\n ) ?? outer\n );\n },\n estimateSize: () => DEFAULT_ESTIMATED_ROW_HEIGHT,\n overscan: 5,\n // jsdom's getBoundingClientRect is 0; skip measure so estimateSize stays.\n measureElement:\n typeof window !== \"undefined\" &&\n typeof navigator !== \"undefined\" &&\n navigator.userAgent.indexOf(\"jsdom\") === -1\n ? (el) =>\n el?.getBoundingClientRect().height ?? DEFAULT_ESTIMATED_ROW_HEIGHT\n : undefined,\n });\n\n return useMemo(\n () => (shouldVirtualize ? virtualizer : undefined),\n [shouldVirtualize, virtualizer],\n );\n}\n","import {\n type ComponentPropsWithoutRef,\n forwardRef,\n type Ref,\n useCallback,\n useContext,\n useEffect,\n useImperativeHandle,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n type ReactNode,\n} from \"react\";\nimport {\n getCoreRowModel,\n getPaginationRowModel,\n getSortedRowModel,\n useReactTable,\n type ColumnPinningState,\n type RowSelectionState,\n type TableOptions,\n type ExpandedState,\n getExpandedRowModel,\n type SortingState,\n} from \"@tanstack/react-table\";\nimport cx from \"classnames\";\n\nimport type { DataAttributes, LayoutUtilProps, Svg } from \"../../../../types\";\nimport { useLayoutPropsUtil } from \"../../../../internal/hooks/useLayoutPropsUtil\";\nimport { ANV_PART_ATTR } from \"../../../../internal/constants/anvParts\";\n\nimport Checkbox from \"../../../../components/Checkbox\";\nimport Button from \"../../../../components/Button\";\nimport Flex from \"../../../../components/Flex\";\nimport ExpandIcon from \"../../../../../public/assets/icons/material/round/chevron_right.svg\";\nimport { PARTS } from \"./parts\";\n\nimport type { ColumnDef, CustomTableFooterCellProps, TableRow } from \"../types\";\nimport { TableBase } from \"../base/TableBase\";\nimport { DataTableBody } from \"./internal/DataTableBody\";\nimport { DataTableFooter } from \"./internal/DataTableFooter\";\nimport { getTanStackColumnDef } from \"./internal/util/getTanStackColumnDef\";\nimport { shallowSortingEqual } from \"./internal/util/shallowSortingEqual\";\nimport { DataTableHeader } from \"./internal/DataTableHeader\";\nimport { TableContainer } from \"../base/TableContainer\";\nimport {\n DataTableCursorPagination,\n DataTablePagination,\n} from \"./internal/DataTablePagination\";\nimport { useOptionallyControlledState } from \"../../../../internal\";\nimport type {\n DataTableCacheOptions,\n DataTableEmptyState,\n DataTablePaginationConfig,\n DataTableRef,\n SortedColumn,\n} from \"./types\";\n\nexport type {\n DataTableCacheOptions,\n DataTableRef,\n DataTableEmptyState,\n SortedColumn,\n};\n\nimport styles from \"./DataTable.module.scss\";\n\nimport { Spinner, SrOnly } from \"../../../../components\";\nimport { ThemeProviderContext } from \"../../../../providers/ThemeProvider/internal/ThemeProviderContext\";\nimport { useAsyncData } from \"./internal/useAsyncData\";\nimport { usePageDataCache } from \"./internal/usePageDataCache\";\nimport { DTFocusProvider } from \"./internal/context/focus/DTFocusProvider\";\nimport { DataTableSurfaceCoordinatorProvider } from \"./internal/context/surface/DataTableSurfaceCoordinatorProvider\";\nimport { DataTableRowClickProvider } from \"./internal/context/rowClick/DataTableRowClickProvider\";\nimport {\n DEFAULT_ESTIMATED_ROW_HEIGHT,\n DEFAULT_INITIAL_LOADING_HEIGHT,\n INTERNAL_ROW_ACTION_PRIMARY_COLUMN_ID,\n INTERNAL_ROW_ACTION_SECONDARY_COLUMN_ID,\n MAX_INITIAL_LOADING_HEIGHT,\n MIN_INITIAL_LOADING_HEIGHT,\n} from \"./internal/constants\";\nimport { CellStatus } from \"./internal/cells/CellStatus\";\nimport { useDataTableVirtualizer } from \"./internal/useDataTableVirtualizer\";\n\nconst EMPTY_DATA: never[] = [];\n\nexport type DataTableRowData = object;\n\n/**\n * @extends LayoutUtilProps\n * @extends ComponentPropsWithoutRef<\"div\">\n * @extends DataAttributes\n */\nexport type DataTableProps<T extends DataTableRowData> = LayoutUtilProps &\n ComponentPropsWithoutRef<\"div\"> &\n DataAttributes & {\n /**\n * Column defs from `createColumnHelper`. Nested `columns` become grouped\n * headers.\n */\n columns: ColumnDef<T>[];\n /**\n * Footer rows that replace column `footerContent` when set.\n */\n customFooter?: CustomTableFooterCellProps[][];\n /**\n * Rows to render, or a Promise of rows (loading spacer until it settles).\n * Each row needs an `id`. Omit or pass `[]` for an empty body.\n */\n data?: TableRow<T>[] | Promise<TableRow<T>[]>;\n /**\n * Uncontrolled initial expansion. `\"all\"` expands every expandable row.\n */\n defaultExpandedRowIds?: \"all\" | TableRow<T>[\"id\"][];\n /**\n * Hides the header expand-all control. Individual rows can still expand.\n * @default false\n */\n disableExpandAll?: boolean;\n /**\n * Uncontrolled initial selection. Ignored when `isSelectable` is off.\n */\n defaultSelectedRowIds?: TableRow<T>[\"id\"][];\n /**\n * Uncontrolled initial sort. DataTable keeps a single {@link SortedColumn}.\n */\n defaultSortedColumn?: SortedColumn;\n /**\n * Controlled expansion. `\"all\"` expands every expandable row. Omit for\n * uncontrolled (`defaultExpandedRowIds`).\n */\n expandedRowIds?: \"all\" | TableRow<T>[\"id\"][];\n /**\n * Hides the header select-all control. Individual rows can still be selected.\n * @default false\n */\n disableSelectAll?: boolean;\n /**\n * Adds the selection column. `true` enables every non-read-only row; a\n * predicate receives the row and returning `false` disables that row's\n * checkbox. Does not select rows — use `selectedRowIds` /\n * `defaultSelectedRowIds`.\n * @default false\n */\n isSelectable?: boolean | ((row: T) => boolean);\n /**\n * Fires with `\"all\"` or the expanded ids after an expand/collapse.\n */\n onExpandRow?: (expandedRowIds: \"all\" | TableRow<T>[\"id\"][]) => void;\n /**\n * Fires with the selected row ids after a selection change.\n */\n onSelectRow?: (selectedRowIds: TableRow<T>[\"id\"][]) => void;\n /**\n * Called when a row is clicked, or activated from the keyboard (Enter\n * while a non-interactive cell in the row is focused). Passes the clicked\n * row's id, in the same form as `onSelectRow` (the row's id coerced to a\n * string).\n *\n * Clicks on interactive cell content (links, buttons, the selection\n * checkbox, menus) and on editable cells do not trigger this callback,\n * and read-only rows (`readOnlyRowIds`) never trigger it.\n *\n * Custom cell content with its own click behavior must use a real\n * interactive element (`<button>`, `<a>`) or carry an interactive role\n * (e.g. `role=\"button\"`) so it is recognized and excluded — this is also\n * required for keyboard and screen-reader accessibility. A click handler on\n * a bare `<div>`/`<span>` (no role) still bubbles and will also fire\n * `onClickRow`; call `event.stopPropagation()` in that handler if you need\n * to opt such an element out.\n */\n onClickRow?: (rowId: TableRow<T>[\"id\"]) => void;\n /**\n * Fires with the active {@link SortedColumn}, or `undefined` when sort is\n * cleared.\n */\n onSort?: (sortedColumn: SortedColumn | undefined) => void;\n /**\n * Enables the pager. `true` uses offset defaults (`rowsPerPage: 25`).\n * `false` or omit shows every row. An object is {@link DataTablePaginationConfig}.\n */\n pagination?: boolean | DataTablePaginationConfig<T>;\n /**\n * Row ids that should render as read-only. Read-only rows gray their\n * plain-text cell content and render their selection checkbox as disabled\n * and read-only. Links, chips, and custom cell content are unaffected.\n *\n * Pre-seeded `selectedRowIds` is still honored — `readOnlyRowIds` only\n * gates user interaction (checkbox toggling), not the visual state.\n */\n readOnlyRowIds?: TableRow<T>[\"id\"][];\n /**\n * Controlled selection. Omit for uncontrolled (`defaultSelectedRowIds`).\n * Ignored when `isSelectable` is off.\n */\n selectedRowIds?: TableRow<T>[\"id\"][];\n /**\n * Controlled sort. Omit for uncontrolled (`defaultSortedColumn`).\n */\n sortedColumn?: SortedColumn;\n /**\n * {@link DataTableEmptyState} for an empty current page while not loading.\n */\n emptyState?: DataTableEmptyState;\n /**\n * Fallback when a cell value is `null`, `undefined`, or `\"\"`. Defaults to\n * an em dash. A column's `emptyCellContent` wins over this.\n */\n emptyCellContent?: ReactNode;\n /**\n * Skips row virtualization at any row count. Default is to virtualize at\n * 50+ body rows. Wins over `forceVirtualization`.\n * @default false\n */\n disableVirtualization?: boolean;\n /**\n * Virtualizes below the 50-row threshold. Ignored when\n * `disableVirtualization` is `true`.\n * @default false\n */\n forceVirtualization?: boolean;\n /**\n * Optional function that returns a value signaling whether a row has\n * changed since the last render. When supplied, each row is memoized:\n * a row will only re-render when the returned value differs, or when\n * table-managed row state (selection, expansion, etc.) changes.\n * When omitted, every row re-renders whenever the DataTable re-renders.\n *\n * Consumers should bake anything outside the row's own data that\n * affects cell rendering into the version value (e.g.\n * `` `${row.updatedAt}-${highlightedId}` ``), otherwise cells may\n * appear stale when external state changes.\n */\n getRowVersion?: (row: T) => unknown;\n };\n\nconst REACT_FORWARD_REF = Symbol.for(\"react.forward_ref\");\nconst REACT_MEMO = Symbol.for(\"react.memo\");\n\n/** Function components and forwardRef/memo; not elements or `{ light, dark }` pairs. */\nfunction isEmptyStateSvgComponent(value: unknown): value is Svg {\n if (typeof value === \"function\") return true;\n if (typeof value !== \"object\" || value == null) return false;\n const type = (value as { $$typeof?: unknown }).$$typeof;\n if (type === REACT_FORWARD_REF) {\n return typeof (value as { render?: unknown }).render === \"function\";\n }\n return type === REACT_MEMO;\n}\n\nfunction DataTableInner<T extends DataTableRowData>(\n props: DataTableProps<T>,\n ref: Ref<DataTableRef>,\n) {\n const { layoutStyles, componentProps } = useLayoutPropsUtil(props);\n const {\n data: dataProp,\n columns: columnsProp,\n customFooter,\n defaultExpandedRowIds,\n defaultSelectedRowIds,\n defaultSortedColumn,\n disableExpandAll,\n disableSelectAll,\n expandedRowIds,\n isSelectable,\n onSelectRow,\n onClickRow,\n readOnlyRowIds,\n onSort,\n onExpandRow,\n pagination,\n selectedRowIds,\n sortedColumn,\n emptyState,\n emptyCellContent,\n disableVirtualization,\n forceVirtualization,\n getRowVersion,\n className,\n style,\n ...rest\n } = componentProps;\n const styleCombined = {\n ...style,\n ...layoutStyles,\n };\n\n const tableRef = useRef<HTMLDivElement>(null);\n // Drives the loading spacer so quick loads don't stutter the table height.\n const lastBodyHeightRef = useRef<number | null>(null);\n\n const [rowSelection, setRowSelection] =\n useOptionallyControlledState<RowSelectionState>({\n controlledValue:\n isSelectable && selectedRowIds\n ? Object.fromEntries(selectedRowIds.map((id) => [id, true]))\n : undefined,\n defaultValue: isSelectable\n ? defaultSelectedRowIds\n ? Object.fromEntries(defaultSelectedRowIds.map((id) => [id, true]))\n : {}\n : {},\n onChange: (newRowSelection) => {\n onSelectRow?.(Object.keys(newRowSelection) as TableRow<T>[\"id\"][]);\n },\n });\n\n const readOnlyRowMap = useMemo<Record<string, boolean>>(\n () =>\n readOnlyRowIds\n ? Object.fromEntries(readOnlyRowIds.map((id) => [String(id), true]))\n : {},\n [readOnlyRowIds],\n );\n\n const sortedColumnId = sortedColumn?.id;\n const sortedColumnDesc = sortedColumn?.desc;\n const controlledSorting = useMemo<SortingState | undefined>(\n () =>\n sortedColumnId !== undefined\n ? [{ id: sortedColumnId, desc: sortedColumnDesc ?? false }]\n : undefined,\n [sortedColumnId, sortedColumnDesc],\n );\n\n const [sorting, setSorting] = useOptionallyControlledState<SortingState>({\n controlledValue: controlledSorting,\n defaultValue: defaultSortedColumn ? [defaultSortedColumn] : undefined,\n onChange: (newSorting) => {\n onSort?.(newSorting[0]);\n },\n });\n\n const isPaginated = !!pagination;\n const paginationObject =\n typeof pagination === \"object\" ? pagination : undefined;\n const rowsPerPage = paginationObject?.rowsPerPage ?? 25;\n const refreshKey = paginationObject?.refreshKey;\n const isCursorPagination = paginationObject?.mode === \"cursor\";\n\n const [currentPageIndex, setCurrentPageIndex] =\n useOptionallyControlledState<number>({\n controlledValue: paginationObject?.currentPageIndex,\n defaultValue: paginationObject?.defaultPageIndex ?? 0,\n onChange: (newPageIndex) => {\n paginationObject?.onPageChange?.(newPageIndex);\n },\n });\n\n const [refreshCounter, setRefreshCounter] = useState(0);\n\n const pageLoader = paginationObject?.loadPageData;\n const isAsyncPaginated = !!pageLoader && typeof pageLoader === \"function\";\n\n const effectiveCacheConfig = useMemo<\n DataTableCacheOptions | undefined\n >(() => {\n if (isCursorPagination && paginationObject?.cache === undefined) {\n return { enabled: false };\n }\n\n return paginationObject?.cache;\n }, [isCursorPagination, paginationObject?.cache]);\n\n const { getOrLoad, clearCache } = usePageDataCache<T>({\n loadPageData: pageLoader,\n cache: effectiveCacheConfig,\n refreshKey,\n refreshCounter,\n rowsPerPage,\n sorting: sorting?.[0],\n });\n\n useImperativeHandle(\n ref,\n () => ({\n refresh: () => {\n setRefreshCounter((c) => c + 1);\n setCurrentPageIndex(0);\n },\n clearCache,\n }),\n [setCurrentPageIndex, clearCache],\n );\n\n const isFirstRender = useRef(true);\n\n useEffect(() => {\n // Skip the mount pass so an initial `refreshKey` does not bounce to page 0.\n if (isFirstRender.current) {\n isFirstRender.current = false;\n return;\n }\n if (refreshKey !== undefined) {\n setCurrentPageIndex(0);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps -- setCurrentPageIndex excluded to prevent reset on every page change\n }, [refreshKey]);\n\n const dataSource = useMemo(() => {\n if (!isAsyncPaginated) {\n return dataProp;\n }\n\n return getOrLoad(currentPageIndex ?? 0, rowsPerPage, sorting?.[0]);\n // eslint-disable-next-line react-hooks/exhaustive-deps -- pageLoader omitted intentionally\n }, [\n isAsyncPaginated,\n currentPageIndex,\n rowsPerPage,\n dataProp,\n refreshKey,\n refreshCounter,\n getOrLoad,\n sorting,\n ]);\n\n const {\n data: resolvedData,\n // Settled loader errors are unused; the table has no error surface.\n error: _error,\n isLoading,\n } = useAsyncData(dataSource);\n const totalItemCount = isCursorPagination\n ? undefined\n : (paginationObject?.totalRowCount ?? resolvedData?.length ?? 0);\n\n const hasSubRows = useMemo(\n () => !!resolvedData?.some((row) => (row?.subRows?.length ?? 0) > 0),\n [resolvedData],\n );\n const hasSubComponent = useMemo(\n () => !!resolvedData?.some((row) => row?.subComponent != null),\n [resolvedData],\n );\n const isExpandable = hasSubRows || hasSubComponent;\n\n const [expanded, setExpanded] = useOptionallyControlledState<ExpandedState>({\n controlledValue:\n isExpandable && expandedRowIds\n ? expandedRowIds === \"all\"\n ? true\n : Object.fromEntries(expandedRowIds.map((id) => [id, true]))\n : undefined,\n defaultValue: isExpandable\n ? defaultExpandedRowIds\n ? defaultExpandedRowIds === \"all\"\n ? true\n : Object.fromEntries(defaultExpandedRowIds.map((id) => [id, true]))\n : {}\n : {},\n onChange: (newExpanded) => {\n if (newExpanded === true) {\n onExpandRow?.(\"all\");\n } else {\n onExpandRow?.(Object.keys(newExpanded) as TableRow<T>[\"id\"][]);\n }\n },\n });\n\n // Keep TanStack empty while loading so the spacer isn't sitting on stale rows.\n const tableData = isLoading ? EMPTY_DATA : resolvedData;\n\n // Measure only on load completion — never on the intermediate render where\n // TanStack has re-sliced to the incoming page but isLoading is still false.\n useLayoutEffect(() => {\n if (isLoading) return;\n const body = tableRef.current?.querySelector<HTMLElement>(\n '[data-anv=\"table-body\"]',\n );\n if (body && body.offsetHeight > 0) {\n lastBodyHeightRef.current = body.offsetHeight;\n }\n }, [isLoading]);\n\n const loadingSpacerHeight =\n lastBodyHeightRef.current ??\n (rowsPerPage > 0\n ? Math.min(\n Math.max(\n rowsPerPage * DEFAULT_ESTIMATED_ROW_HEIGHT,\n MIN_INITIAL_LOADING_HEIGHT,\n ),\n MAX_INITIAL_LOADING_HEIGHT,\n )\n : DEFAULT_INITIAL_LOADING_HEIGHT);\n\n const hasRowStatus = useMemo(() => {\n return tableData?.some((row) => {\n const meta = (row as TableRow<T>).meta;\n return meta?.rowError || meta?.rowWarning;\n });\n }, [tableData]);\n\n const columnPinning = useMemo((): ColumnPinningState => {\n const { left, right } = {\n left: columnsProp\n .filter((column) => column.pinned === \"left\")\n .map((c) => String(c.id)),\n right: columnsProp\n .filter((column) => column.pinned === \"right\")\n .map((c) => String(c.id)),\n };\n\n // Left-pinned data columns must keep select/expand/status sticky with them.\n const hasInternalColumns = isSelectable || isExpandable || hasRowStatus;\n const standardPinnedColumns = [];\n if (isSelectable) {\n standardPinnedColumns.push(INTERNAL_ROW_ACTION_SECONDARY_COLUMN_ID);\n }\n if (isExpandable) {\n standardPinnedColumns.push(INTERNAL_ROW_ACTION_PRIMARY_COLUMN_ID);\n }\n if (hasRowStatus) {\n standardPinnedColumns.push(\"a2-table-internal-row-status\");\n }\n\n return {\n left:\n hasInternalColumns && left && left.length > 0\n ? [...standardPinnedColumns, ...left]\n : (left ?? []),\n right: right ?? [],\n };\n }, [columnsProp, hasRowStatus, isSelectable, isExpandable]);\n\n const columns = useMemo(() => {\n const tableColumns: TableOptions<T>[\"columns\"] = columnsProp.map((column) =>\n getTanStackColumnDef({\n columnDef: column,\n emptyCellContent,\n }),\n );\n\n // Status is unshifted before data columns; expand/select unshift after this.\n if (hasRowStatus) {\n tableColumns.unshift({\n id: \"a2-table-internal-row-status\",\n size: 32,\n maxSize: 32,\n minSize: 32,\n header: () => null,\n cell: ({ row }) => {\n const meta = (row.original as TableRow<T>).meta;\n const rowError = meta?.rowError;\n const rowWarning = meta?.rowWarning;\n if (rowError) return <CellStatus status={rowError} variant=\"error\" />;\n if (rowWarning)\n return <CellStatus status={rowWarning} variant=\"warning\" />;\n return null;\n },\n });\n }\n\n if (isExpandable) {\n tableColumns.unshift({\n id: INTERNAL_ROW_ACTION_PRIMARY_COLUMN_ID,\n size: 44,\n maxSize: 44,\n minSize: 44,\n meta: { disableHeaderAction: disableExpandAll },\n header: ({ table }) => {\n if (disableExpandAll) return null;\n return (\n <Flex grow={1} justifyContent=\"center\">\n <Button\n tabIndex={-1}\n onClick={table.getToggleAllRowsExpandedHandler()}\n appearance=\"ghost\"\n className={cx(styles[\"expand-button\"], {\n [styles[\"expanded\"]]: table.getIsAllRowsExpanded(),\n })}\n size=\"small\"\n icon={ExpandIcon}\n aria-label={\n table.getIsAllRowsExpanded()\n ? \"Collapse all rows\"\n : \"Expand all rows\"\n }\n data-cell-action=\"expand\"\n {...{ [ANV_PART_ATTR]: PARTS.expandAllButton }}\n />\n </Flex>\n );\n },\n cell: ({ row }) => {\n if (row.getCanExpand()) {\n return (\n <Button\n tabIndex={-1}\n onClick={row.getToggleExpandedHandler()}\n appearance=\"ghost\"\n size=\"small\"\n icon={ExpandIcon}\n className={cx(styles[\"expand-button\"], {\n [styles[\"expanded\"]]: row.getIsExpanded(),\n })}\n aria-label={row.getIsExpanded() ? \"Collapse row\" : \"Expand row\"}\n aria-expanded={\n hasSubComponent && row.getCanExpand()\n ? row.getIsExpanded()\n : undefined\n }\n aria-controls={\n hasSubComponent && row.getCanExpand()\n ? `${row.id}-sub-component`\n : undefined\n }\n data-cell-action=\"expand\"\n {...{ [ANV_PART_ATTR]: PARTS.expandButton }}\n />\n );\n }\n return null;\n },\n });\n }\n\n if (isSelectable) {\n tableColumns.unshift({\n id: INTERNAL_ROW_ACTION_SECONDARY_COLUMN_ID,\n size: 44,\n maxSize: 44,\n minSize: 44,\n meta: { disableHeaderAction: disableSelectAll },\n header: ({ table }) => {\n if (disableSelectAll) return null;\n return (\n <Flex grow={1} justifyContent=\"center\">\n <Checkbox\n tabIndex={-1}\n aria-label={\n table.getIsAllPageRowsSelected()\n ? \"Deselect all rows\"\n : \"Select all rows\"\n }\n checked={table.getIsAllPageRowsSelected()}\n indeterminate={table.getIsSomePageRowsSelected()}\n onChange={table.getToggleAllPageRowsSelectedHandler()}\n data-cell-action=\"select\"\n {...{ [ANV_PART_ATTR]: PARTS.selectAllCheckbox }}\n />\n </Flex>\n );\n },\n cell: ({ row }) => {\n const original = row.original as TableRow<T>;\n const isReadOnlyRow = Boolean(readOnlyRowMap[String(original.id)]);\n\n return (\n <Checkbox\n tabIndex={-1}\n aria-label={row.getIsSelected() ? \"Deselect row\" : \"Select row\"}\n checked={row.getIsSelected()}\n disabled={!row.getCanSelect()}\n readOnly={isReadOnlyRow}\n indeterminate={row.getIsSomeSelected()}\n onChange={row.getToggleSelectedHandler()}\n data-cell-action=\"select\"\n {...{ [ANV_PART_ATTR]: PARTS.selectCheckbox }}\n />\n );\n },\n });\n }\n\n return tableColumns;\n }, [\n columnsProp,\n disableExpandAll,\n disableSelectAll,\n emptyCellContent,\n hasRowStatus,\n hasSubComponent,\n isExpandable,\n isSelectable,\n readOnlyRowMap,\n ]);\n\n const table = useReactTable({\n data: tableData ?? [],\n columns,\n getCoreRowModel: getCoreRowModel(),\n getSortedRowModel: getSortedRowModel(),\n ...(isPaginated &&\n !isCursorPagination && {\n getPaginationRowModel: getPaginationRowModel(),\n }),\n ...(isExpandable && { getExpandedRowModel: getExpandedRowModel() }),\n getRowId: (row) => (row as TableRow<T>).id.toString(),\n getSubRows: (row) => (row as TableRow<T>).subRows ?? undefined,\n getRowCanExpand: (row) => {\n const originalRow = row.original as TableRow<T>;\n return (\n (originalRow?.subRows?.length ?? 0) > 0 ||\n originalRow?.subComponent != null\n );\n },\n state: {\n columnPinning,\n rowSelection,\n expanded,\n sorting,\n ...(isPaginated && {\n pagination: {\n pageIndex: currentPageIndex ?? 0,\n pageSize: rowsPerPage,\n },\n }),\n },\n manualPagination: !isPaginated || isAsyncPaginated || isCursorPagination,\n columnResizeMode: \"onChange\",\n manualSorting: isAsyncPaginated,\n // Pin ascending-first under manual sorting to keep the asc→desc→none cycle stable.\n sortDescFirst: isAsyncPaginated ? false : undefined,\n autoResetPageIndex: false,\n enableRowSelection: !isSelectable\n ? false\n : (row) => {\n const original = row.original as TableRow<T>;\n if (readOnlyRowMap[String(original.id)]) return false;\n return typeof isSelectable === \"function\"\n ? isSelectable(original)\n : true;\n },\n onRowSelectionChange: (newRowSelection) => {\n setRowSelection(newRowSelection as RowSelectionState);\n },\n onExpandedChange: (newExpanded) => {\n setExpanded(newExpanded as ExpandedState);\n },\n onSortingChange: (updaterOrValue) => {\n const newSorting =\n typeof updaterOrValue === \"function\"\n ? updaterOrValue(sorting)\n : updaterOrValue;\n\n // TanStack can re-fire the same sort; skip so the page index stays.\n if (shallowSortingEqual(newSorting, sorting ?? [])) {\n return;\n }\n\n setSorting(newSorting);\n if (isPaginated) {\n setCurrentPageIndex(0);\n }\n },\n });\n\n const rowVirtualizer = useDataTableVirtualizer({\n rowCount: table.getRowModel().rows.length,\n scrollRef: tableRef,\n disabled: disableVirtualization,\n forced: forceVirtualization,\n });\n\n const headers = table.getFlatHeaders();\n const headerRowCount = table.getHeaderGroups().length;\n const bodyRowCount = table.getRowModel().rows.length;\n const columnSizing = table.getState().columnSizing;\n\n const getMaxFooterRows = useCallback((column: ColumnDef<T>): number => {\n let currentMax = 0;\n\n if (Array.isArray(column.footerContent)) {\n currentMax = column.footerContent.length;\n } else if (column.footerContent) {\n currentMax = 1;\n }\n\n if (column.columns && Array.isArray(column.columns)) {\n const nestedMax = Math.max(\n ...column.columns.map((nestedCol) => getMaxFooterRows(nestedCol)),\n 0,\n );\n currentMax = Math.max(currentMax, nestedMax);\n }\n\n return currentMax;\n }, []);\n\n const footerLength = useMemo(() => {\n return Math.max(\n ...columnsProp.map((column) => getMaxFooterRows(column)),\n 0,\n );\n }, [columnsProp, getMaxFooterRows]);\n\n const hasFooters =\n footerLength > 0 || (customFooter !== undefined && customFooter.length > 0);\n\n const rowCount = useMemo(\n () => bodyRowCount + headerRowCount + footerLength,\n [bodyRowCount, headerRowCount, footerLength],\n );\n\n const isEmpty = !isLoading && (!tableData || tableData.length === 0);\n\n // `isEmpty` only reflects the current page. With server-side/cursor\n // pagination a page can be empty while other pages still hold data, so the\n // footer and pagination are hidden only when the dataset is empty entirely —\n // otherwise users could be trapped on an empty page with no way to navigate.\n const isTrulyEmpty =\n isEmpty &&\n (isCursorPagination\n ? !paginationObject?.hasPrevPage && !paginationObject?.hasNextPage\n : !totalItemCount);\n\n const { mode: themeMode } = useContext(ThemeProviderContext);\n const colorSchemeMode = themeMode ?? \"light\";\n\n const EmptyStateSvg = (() => {\n const svg = emptyState?.svg;\n if (isEmptyStateSvgComponent(svg)) return svg;\n if (!svg) return undefined;\n const picked =\n colorSchemeMode === \"dark\"\n ? (svg.dark ?? svg.light)\n : (svg.light ?? svg.dark);\n return isEmptyStateSvgComponent(picked) ? picked : undefined;\n })();\n\n /**\n * `getFlatHeaders()` is a new array on every TanStack state change. Fingerprint\n * the leaf id/size/pin/maxSize so the grid-template memo does not rebuild on\n * selection, sort, or expand.\n */\n const headerFingerprint = useMemo(() => {\n let fp = \"\";\n for (const header of headers) {\n if (header.subHeaders?.length !== 0) continue;\n fp +=\n header.column.id +\n \":\" +\n header.column.getSize() +\n \":\" +\n (header.column.getIsPinned() ?? \"\") +\n \":\" +\n (header.column.columnDef.maxSize ?? \"\") +\n \"|\";\n }\n return fp;\n }, [headers]);\n\n const cssVars = useMemo(() => {\n const vars: { [key: string]: number | string } = {};\n\n const leafHeaders = headers.filter(\n (header) => header.subHeaders?.length === 0,\n );\n\n const allHaveMaxWidth = leafHeaders.every(\n (header) => header.column.columnDef.maxSize != null,\n );\n\n const gridColumns = leafHeaders\n .map((header) => {\n const columnId = header.column.id;\n const hasBeenResized = columnId in columnSizing;\n const currentSize = header.column.getSize();\n\n if (hasBeenResized) {\n return `${currentSize}px`;\n }\n\n // Sticky offsets sum configured sizes; a flexible track would gap\n // adjacent pinned columns.\n if (header.column.getIsPinned()) {\n return `${currentSize}px`;\n }\n\n // Grow up to maxWidth; never auto-shrink below getSize() — overflow\n // scrolls horizontally instead.\n const maxSize = header.column.columnDef.maxSize;\n return `minmax(${currentSize}px, ${maxSize ? `${maxSize}px` : \"1fr\"})`;\n })\n .join(\" \");\n vars[\"--a2-grid-template-columns\"] = gridColumns;\n\n vars[\"--a2-table-width\"] = allHaveMaxWidth ? \"max-content\" : \"100%\";\n\n return vars;\n // headerFingerprint stands in for `headers`: it changes only when the\n // leaf-column structure actually changes, not on every state-driven\n // re-render. The headers/columnSizing reads inside the memo body still\n // reflect current state because they re-run together when fingerprint\n // changes.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [headerFingerprint, columnSizing]);\n\n const columnCount = useMemo(() => {\n return headers.filter((header) => header.subHeaders?.length === 0).length;\n }, [headers]);\n\n const containerClassName = cx(styles[\"data-table-container\"], className, {\n [styles[\"container-with-pagination\"]]: pagination && !isTrulyEmpty,\n });\n\n return (\n <DTFocusProvider\n rowCount={rowCount}\n columnCount={columnCount}\n tableRef={tableRef}\n leftPinnedWidth={table.getLeftTotalSize()}\n rightPinnedWidth={table.getRightTotalSize()}\n virtualizer={rowVirtualizer}\n headerRowCount={headerRowCount}\n >\n <DataTableSurfaceCoordinatorProvider intersectionBoundaryRef={tableRef}>\n <TableContainer\n {...rest}\n ref={tableRef}\n style={{\n ...styleCombined,\n width: cssVars[\"--a2-table-width\"],\n }}\n className={containerClassName}\n >\n <TableBase\n type=\"data-table\"\n style={cssVars}\n rowCount={rowCount}\n colCount={columnCount}\n hasSubRows={hasSubRows}\n >\n <DataTableHeader table={table} tableRef={tableRef} />\n <DataTableRowClickProvider\n // Cast is sound: the provider is intentionally non-generic, and TanStack\n // stringifies every row id (getRowId: (row) => row.id.toString()), so the\n // public (rowId: TableRow<T>[\"id\"]) => void always receives a string at runtime.\n onClickRow={onClickRow as ((rowId: string) => void) | undefined}\n readOnlyRowMap={readOnlyRowMap}\n >\n <DataTableBody\n table={table}\n hasSubRows={hasSubRows}\n virtualizer={rowVirtualizer}\n getRowVersion={getRowVersion}\n readOnlyRowMap={readOnlyRowMap}\n />\n </DataTableRowClickProvider>\n {isEmpty && emptyState && (\n <>\n <SrOnly>No data to display.</SrOnly>\n <div className={styles[\"empty-state-container\"]}>\n <Flex\n justifyContent=\"center\"\n alignItems=\"center\"\n direction=\"column\"\n gap={2}\n >\n {EmptyStateSvg && <EmptyStateSvg aria-hidden=\"true\" />}\n {emptyState.content}\n </Flex>\n </div>\n </>\n )}\n {isLoading && (\n <>\n <SrOnly>Loading data. Please wait.</SrOnly>\n <div\n style={{\n height: `${loadingSpacerHeight}px`,\n }}\n role=\"presentation\"\n aria-hidden=\"true\"\n >\n <Flex\n justifyContent=\"center\"\n alignItems=\"center\"\n style={{\n position: \"absolute\",\n top: 0,\n bottom: 0,\n left: 0,\n right: 0,\n margin: \"auto\",\n zIndex: 3,\n }}\n >\n <Spinner />\n </Flex>\n </div>\n </>\n )}\n {hasFooters && !isTrulyEmpty && (\n <DataTableFooter\n className={\n pagination ? styles[\"footer-with-pagination\"] : undefined\n }\n table={table}\n columns={columnsProp}\n customFooter={customFooter}\n />\n )}\n </TableBase>\n {pagination &&\n !isTrulyEmpty &&\n (isCursorPagination ? (\n <DataTableCursorPagination\n itemsPerPage={rowsPerPage}\n page={(currentPageIndex ?? 0) + 1}\n hasNextPage={paginationObject?.hasNextPage}\n hasPrevPage={paginationObject?.hasPrevPage}\n onPageChange={(page) => {\n setCurrentPageIndex(page - 1);\n }}\n onItemsPerPageChange={(itemsPerPage) => {\n paginationObject?.onRowsPerPageChange?.(itemsPerPage);\n }}\n itemsPerPageOptions={\n paginationObject?.onRowsPerPageChange\n ? paginationObject.rowsPerPageOptions\n : undefined\n }\n />\n ) : (\n <DataTablePagination\n itemsPerPage={rowsPerPage}\n showCount={paginationObject?.showCount ?? true}\n page={(currentPageIndex ?? 0) + 1}\n totalItemCount={totalItemCount}\n onPageChange={(page) => {\n setCurrentPageIndex(page - 1);\n }}\n onItemsPerPageChange={(itemsPerPage) => {\n paginationObject?.onRowsPerPageChange?.(itemsPerPage);\n }}\n itemsPerPageOptions={paginationObject?.rowsPerPageOptions}\n />\n ))}\n </TableContainer>\n </DataTableSurfaceCoordinatorProvider>\n </DTFocusProvider>\n );\n}\n\n/**\n * Sortable, pageable data grid with optional selection, expansion, pinning,\n * and cell editing. Attach a {@link DataTableRef} to `refresh` or `clearCache`.\n */\nexport const DataTable = forwardRef(DataTableInner) as (<\n T extends DataTableRowData,\n>(\n props: DataTableProps<T> & { ref?: Ref<DataTableRef> },\n) => ReturnType<typeof DataTableInner>) &\n Pick<\n ReturnType<\n typeof forwardRef<DataTableRef, DataTableProps<DataTableRowData>>\n >,\n \"$$typeof\"\n >;\n"],"names":["SurfaceContent","styles","DragIndicator","Close","ResizeWindowAlt","Surface","HEADING_REGEX","createColumnHelper","EditIcon","baseTableCellStyles","dataTableCellStyles","changedFields","validation","cellStyles","OpenInFullIcon","Fragment","memo","cellContentStyles","IconArrowUpward","IconArrowDownward","Pagination","IconKeyboardArrowLeft","PAGINATION_PARTS","IconKeyboardArrowRight","BasePagination","itemsPerPage","cache","table","ExpandIcon"],"mappings":"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","x_google_ignoreList":[20,21]}
|