@servicetitan/anvil2 2.2.0 → 2.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +18 -0
- package/dist/{Alert-DXoEusod.js → Alert-D9mBPs6z.js} +2 -2
- package/dist/{Alert-DXoEusod.js.map → Alert-D9mBPs6z.js.map} +1 -1
- package/dist/Alert.js +1 -1
- package/dist/{Announcement-SAypScAu.js → Announcement-B34cD6BC.js} +2 -2
- package/dist/{Announcement-SAypScAu.js.map → Announcement-B34cD6BC.js.map} +1 -1
- package/dist/Announcement.js +1 -1
- package/dist/{Button-l7pTJdPc.js → Button-DrNDkO2f.js} +2 -2
- package/dist/{Button-l7pTJdPc.js.map → Button-DrNDkO2f.js.map} +1 -1
- package/dist/Button.css +50 -50
- package/dist/Button.js +1 -1
- package/dist/Button.module-DwCq9XU0.js +26 -0
- package/dist/Button.module-DwCq9XU0.js.map +1 -0
- package/dist/{ButtonCompound-CX2kHgWe.js → ButtonCompound-D9VTKcL4.js} +2 -2
- package/dist/{ButtonCompound-CX2kHgWe.js.map → ButtonCompound-D9VTKcL4.js.map} +1 -1
- package/dist/ButtonCompound.js +1 -1
- package/dist/{ButtonLink-CRlyK750.js → ButtonLink-DDtrmbVM.js} +3 -2
- package/dist/ButtonLink-DDtrmbVM.js.map +1 -0
- package/dist/ButtonLink.js +1 -1
- package/dist/{ButtonToggle-BOVP_jEN.js → ButtonToggle-DrFewgOG.js} +3 -3
- package/dist/{ButtonToggle-BOVP_jEN.js.map → ButtonToggle-DrFewgOG.js.map} +1 -1
- package/dist/ButtonToggle.js +1 -1
- package/dist/{Calendar-oNlBgZKB.js → Calendar-CkgpKD7Q.js} +2 -2
- package/dist/{Calendar-oNlBgZKB.js.map → Calendar-CkgpKD7Q.js.map} +1 -1
- package/dist/{Calendar-D0CczOpQ.js → Calendar-CtkL4zYU.js} +3 -3
- package/dist/{Calendar-D0CczOpQ.js.map → Calendar-CtkL4zYU.js.map} +1 -1
- package/dist/Calendar.js +2 -2
- package/dist/{Checkbox-DuzAqrE7.js → Checkbox-CFgjreAl.js} +2 -2
- package/dist/{Checkbox-DuzAqrE7.js.map → Checkbox-CFgjreAl.js.map} +1 -1
- package/dist/{Checkbox-DIY-6agd.js → Checkbox-CxjZpzPp.js} +3 -3
- package/dist/{Checkbox-DIY-6agd.js.map → Checkbox-CxjZpzPp.js.map} +1 -1
- package/dist/Checkbox.js +1 -1
- package/dist/{Combobox-CSGn20KQ.js → Combobox-B6saoDAP.js} +4 -4
- package/dist/{Combobox-CSGn20KQ.js.map → Combobox-B6saoDAP.js.map} +1 -1
- package/dist/Combobox.js +1 -1
- package/dist/{DataTable-D30sE1Xt.js → DataTable-NzX8SCYT.js} +42 -12
- package/dist/{DataTable-D30sE1Xt.js.map → DataTable-NzX8SCYT.js.map} +1 -1
- package/dist/DataTable.css +9 -5
- package/dist/{DateFieldRange-DBOiqaML.js → DateFieldRange-DgGgNSzN.js} +4 -4
- package/dist/{DateFieldRange-DBOiqaML.js.map → DateFieldRange-DgGgNSzN.js.map} +1 -1
- package/dist/DateFieldRange.js +1 -1
- package/dist/{DateFieldSingle-C4hU55MP.js → DateFieldSingle-BR4nJNVl.js} +4 -4
- package/dist/{DateFieldSingle-C4hU55MP.js.map → DateFieldSingle-BR4nJNVl.js.map} +1 -1
- package/dist/DateFieldSingle.js +1 -1
- package/dist/{DateFieldYearless-BXkUiHIR.js → DateFieldYearless-mqvM2uVP.js} +4 -4
- package/dist/{DateFieldYearless-BXkUiHIR.js.map → DateFieldYearless-mqvM2uVP.js.map} +1 -1
- package/dist/DateFieldYearless.js +1 -1
- package/dist/{DateFieldYearlessRange-CGffFnVT.js → DateFieldYearlessRange-CLuyUoGF.js} +4 -4
- package/dist/{DateFieldYearlessRange-CGffFnVT.js.map → DateFieldYearlessRange-CLuyUoGF.js.map} +1 -1
- package/dist/DateFieldYearlessRange.js +1 -1
- package/dist/{DaysOfTheWeek-DJEDopC9.js → DaysOfTheWeek-D-WPj18i.js} +3 -3
- package/dist/{DaysOfTheWeek-DJEDopC9.js.map → DaysOfTheWeek-D-WPj18i.js.map} +1 -1
- package/dist/DaysOfTheWeek.js +1 -1
- package/dist/{Dialog-BbsZMnCA.js → Dialog-yA2jYtgv.js} +4 -4
- package/dist/{Dialog-BbsZMnCA.js.map → Dialog-yA2jYtgv.js.map} +1 -1
- package/dist/Dialog.js +1 -1
- package/dist/{DialogCancelButton-GuN5lgR-.js → DialogCancelButton-BfI9K4a4.js} +2 -2
- package/dist/{DialogCancelButton-GuN5lgR-.js.map → DialogCancelButton-BfI9K4a4.js.map} +1 -1
- package/dist/Dnd.js +1 -1
- package/dist/DndSort.js +2 -2
- package/dist/{Drawer-Dhq76ot3.js → Drawer-Dt4dqAxQ.js} +4 -4
- package/dist/{Drawer-Dhq76ot3.js.map → Drawer-Dt4dqAxQ.js.map} +1 -1
- package/dist/Drawer.js +1 -1
- package/dist/DrillDown.js +1 -1
- package/dist/{EditCard-DAiE-Hsc.js → EditCard-CH-JE4ba.js} +2 -2
- package/dist/{EditCard-DAiE-Hsc.js.map → EditCard-CH-JE4ba.js.map} +1 -1
- package/dist/EditCard.js +1 -1
- package/dist/{FieldDialog-CAuhkCZY.js → FieldDialog-BghhsL2B.js} +121 -36
- package/dist/FieldDialog-BghhsL2B.js.map +1 -0
- package/dist/FieldMessage-OeP_xSUE.js +132 -0
- package/dist/FieldMessage-OeP_xSUE.js.map +1 -0
- package/dist/FieldMessage.js +1 -1
- package/dist/{Helper-PNGm_U2X.js → Helper-B2UrgJvr.js} +2 -2
- package/dist/{Helper-PNGm_U2X.js.map → Helper-B2UrgJvr.js.map} +1 -1
- package/dist/{InputMask-Ds0W2fKy.js → InputMask-B7ZnJoR5.js} +2 -2
- package/dist/{InputMask-Ds0W2fKy.js.map → InputMask-B7ZnJoR5.js.map} +1 -1
- package/dist/InputMask.js +1 -1
- package/dist/{ListView-MMmJDM--.js → ListView-CN8zu-cq.js} +2 -2
- package/dist/{ListView-MMmJDM--.js.map → ListView-CN8zu-cq.js.map} +1 -1
- package/dist/ListView.js +1 -1
- package/dist/{Menu-3LIfRdTk.js → Menu-CpRnsr0v.js} +2 -2
- package/dist/{Menu-3LIfRdTk.js.map → Menu-CpRnsr0v.js.map} +1 -1
- package/dist/Menu.js +1 -1
- package/dist/MultiSelectField.js +1 -1
- package/dist/{MultiSelectFieldSync-Bey99LzJ.js → MultiSelectFieldSync-ChDuxvhE.js} +876 -255
- package/dist/MultiSelectFieldSync-ChDuxvhE.js.map +1 -0
- package/dist/{NumberField-CDkEUfXW.js → NumberField-ecubQsaf.js} +4 -4
- package/dist/{NumberField-CDkEUfXW.js.map → NumberField-ecubQsaf.js.map} +1 -1
- package/dist/NumberField.js +1 -1
- package/dist/{Page-BVxybI-j.js → Page-CkcnGPPK.js} +8 -8
- package/dist/{Page-BVxybI-j.js.map → Page-CkcnGPPK.js.map} +1 -1
- package/dist/Page.js +1 -1
- package/dist/{Pagination-DIatYUXX.js → Pagination-DO9NORlw.js} +4 -4
- package/dist/{Pagination-DIatYUXX.js.map → Pagination-DO9NORlw.js.map} +1 -1
- package/dist/Pagination.js +1 -1
- package/dist/{Popover-4C5IVk8T.js → Popover-D_BmwIOW.js} +3 -3
- package/dist/{Popover-4C5IVk8T.js.map → Popover-D_BmwIOW.js.map} +1 -1
- package/dist/Popover.js +1 -1
- package/dist/{ProgressBar-BGwp-qnf.js → ProgressBar-CBhVZIzK.js} +2 -2
- package/dist/{ProgressBar-BGwp-qnf.js.map → ProgressBar-CBhVZIzK.js.map} +1 -1
- package/dist/ProgressBar.js +1 -1
- package/dist/{Radio-D7hNws2b.js → Radio-BMFwnzyz.js} +2 -2
- package/dist/{Radio-D7hNws2b.js.map → Radio-BMFwnzyz.js.map} +1 -1
- package/dist/{Radio-BRcpSu-d.js → Radio-DtYoRq3m.js} +3 -3
- package/dist/{Radio-BRcpSu-d.js.map → Radio-DtYoRq3m.js.map} +1 -1
- package/dist/Radio.js +1 -1
- package/dist/{SearchField-CoeaOip5.js → SearchField-CtdtcrVV.js} +12 -4
- package/dist/SearchField-CtdtcrVV.js.map +1 -0
- package/dist/SearchField.js +1 -1
- package/dist/{SelectCard-Bag44PmE.js → SelectCard-yWBNnm7t.js} +32 -8
- package/dist/SelectCard-yWBNnm7t.js.map +1 -0
- package/dist/SelectCard.js +1 -1
- package/dist/SelectField.js +1 -1
- package/dist/SelectFieldSync-DfP3eETZ.js +1248 -0
- package/dist/SelectFieldSync-DfP3eETZ.js.map +1 -0
- package/dist/{SelectTrigger-DgsvUfyl.js → SelectTrigger-Cs5CGc4D.js} +2 -2
- package/dist/{SelectTrigger-DgsvUfyl.js.map → SelectTrigger-Cs5CGc4D.js.map} +1 -1
- package/dist/SelectTrigger.js +1 -1
- package/dist/{SelectTriggerBase-OxfNqdIq.js → SelectTriggerBase-Cs827tDp.js} +3 -3
- package/dist/{SelectTriggerBase-OxfNqdIq.js.map → SelectTriggerBase-Cs827tDp.js.map} +1 -1
- package/dist/{Stepper-D8lkCP8Y.js → Stepper-CzVKDg-N.js} +2 -2
- package/dist/{Stepper-D8lkCP8Y.js.map → Stepper-CzVKDg-N.js.map} +1 -1
- package/dist/Stepper.js +1 -1
- package/dist/{Switch-D0zwZCg4.js → Switch-CEmjmSiL.js} +2 -2
- package/dist/{Switch-D0zwZCg4.js.map → Switch-CEmjmSiL.js.map} +1 -1
- package/dist/Switch.js +1 -1
- package/dist/Table.js +1 -1
- package/dist/{TextField-Dfzn2HeL.js → TextField-D9VWORek.js} +2 -2
- package/dist/{TextField-Dfzn2HeL.js.map → TextField-D9VWORek.js.map} +1 -1
- package/dist/{TextField-BycenT6H.js → TextField-atI4M79b.js} +3 -3
- package/dist/{TextField-BycenT6H.js.map → TextField-atI4M79b.js.map} +1 -1
- package/dist/TextField.css +29 -25
- package/dist/TextField.js +1 -1
- package/dist/TextField.module-BP-hDP5m.js +22 -0
- package/dist/TextField.module-BP-hDP5m.js.map +1 -0
- package/dist/{Textarea-BwbwJP6z.js → Textarea-D-kPIsIN.js} +2 -2
- package/dist/{Textarea-BwbwJP6z.js.map → Textarea-D-kPIsIN.js.map} +1 -1
- package/dist/Textarea.js +1 -1
- package/dist/{TimeField-B0WSzSfJ.js → TimeField-CbdxhawY.js} +3 -3
- package/dist/{TimeField-B0WSzSfJ.js.map → TimeField-CbdxhawY.js.map} +1 -1
- package/dist/TimeField.js +1 -1
- package/dist/Toast.js +2 -2
- package/dist/{Toaster-9Q_yaKGu.js → Toaster-B652KIzq.js} +4 -4
- package/dist/{Toaster-9Q_yaKGu.js.map → Toaster-B652KIzq.js.map} +1 -1
- package/dist/{Toaster-DHo8dnWH.js → Toaster-Bisc1mlh.js} +2 -2
- package/dist/{Toaster-DHo8dnWH.js.map → Toaster-Bisc1mlh.js.map} +1 -1
- package/dist/{Toolbar-CVOenuCF.js → Toolbar-4VdevLJd.js} +78 -64
- package/dist/Toolbar-4VdevLJd.js.map +1 -0
- package/dist/Toolbar.css +37 -55
- package/dist/Toolbar.js +1 -1
- package/dist/{YearlessDateInputWithPicker-ztozRk-X.js → YearlessDateInputWithPicker-BADNBDmy.js} +3 -3
- package/dist/{YearlessDateInputWithPicker-ztozRk-X.js.map → YearlessDateInputWithPicker-BADNBDmy.js.map} +1 -1
- package/dist/beta/components/MultiSelectField/MultiSelectField.d.ts +1 -10
- package/dist/beta/components/MultiSelectField/internal/MultiSelectFieldComboboxMode.d.ts +5 -0
- package/dist/beta/components/MultiSelectField/internal/MultiSelectFieldInput.d.ts +0 -2
- package/dist/beta/components/MultiSelectField/internal/MultiSelectFieldList.d.ts +3 -7
- package/dist/beta/components/MultiSelectField/internal/MultiSelectFieldSelectMode.d.ts +6 -0
- package/dist/beta/components/MultiSelectField/internal/MultiSelectFieldTrigger.d.ts +30 -0
- package/dist/beta/components/MultiSelectField/internal/types.d.ts +67 -0
- package/dist/beta/components/MultiSelectField/internal/useChipLayout.d.ts +19 -0
- package/dist/beta/components/MultiSelectField/internal/useComboMultiple.d.ts +1 -2
- package/dist/beta/components/MultiSelectField/internal/useSelectModeMultiple.d.ts +40 -0
- package/dist/beta/components/MultiSelectField/internal/useToggleSelection.d.ts +21 -0
- package/dist/beta/components/MultiSelectField/types.d.ts +7 -0
- package/dist/beta/components/SelectField/internal/FieldDialog/FieldDialog.d.ts +1 -1
- package/dist/beta/components/SelectField/internal/FieldListBase.d.ts +3 -4
- package/dist/beta/components/SelectField/internal/SelectFieldComboboxMode.d.ts +6 -0
- package/dist/beta/components/SelectField/internal/SelectFieldInput.d.ts +0 -2
- package/dist/beta/components/SelectField/internal/SelectFieldLabel.d.ts +4 -3
- package/dist/beta/components/SelectField/internal/SelectFieldList.d.ts +3 -7
- package/dist/beta/components/SelectField/internal/SelectFieldListItem.d.ts +2 -4
- package/dist/beta/components/SelectField/internal/SelectFieldSelectMode.d.ts +6 -0
- package/dist/beta/components/SelectField/internal/SelectFieldTrigger.d.ts +27 -0
- package/dist/beta/components/SelectField/internal/buildDownshiftItems.d.ts +22 -0
- package/dist/beta/components/SelectField/internal/types.d.ts +57 -0
- package/dist/beta/components/SelectField/internal/useCombo.d.ts +1 -5
- package/dist/beta/components/SelectField/internal/useProcessedOptions.d.ts +19 -0
- package/dist/beta/components/SelectField/internal/useSelectMode.d.ts +34 -0
- package/dist/beta/components/SelectField/types.d.ts +7 -0
- package/dist/beta/components/Table/DataTable/DataTable.d.ts +9 -2
- package/dist/beta/components/Table/DataTable/types.d.ts +20 -0
- package/dist/beta/components/Toolbar/Toolbar.d.ts +17 -7
- package/dist/beta/components/Toolbar/ToolbarButton.d.ts +0 -1
- package/dist/beta/components/Toolbar/ToolbarButtonLink.d.ts +0 -1
- package/dist/beta/components/Toolbar/ToolbarButtonToggle.d.ts +0 -1
- package/dist/beta/components/Toolbar/ToolbarSearchField.d.ts +2 -3
- package/dist/beta/components/Toolbar/ToolbarSelect.d.ts +0 -1
- package/dist/beta/components/Toolbar/internal/{ToolbarOverflowContext.d.ts → ToolbarContext.d.ts} +14 -5
- package/dist/beta/components/Toolbar/internal/utils/test.d.ts +5 -3
- package/dist/beta/components/Toolbar/types.d.ts +5 -1
- package/dist/beta.js +7 -7
- package/dist/components/ButtonLink/ButtonLink.d.ts +3 -3
- package/dist/components/SearchField/SearchField.d.ts +8 -26
- package/dist/components/SearchField/internal/SearchField.d.ts +73 -0
- package/dist/components/Toolbar/Toolbar.d.ts +11 -5
- package/dist/components/Toolbar/ToolbarButton.d.ts +0 -1
- package/dist/components/Toolbar/ToolbarButtonLink.d.ts +0 -1
- package/dist/components/Toolbar/ToolbarButtonToggle.d.ts +0 -1
- package/dist/components/Toolbar/ToolbarSelect.d.ts +0 -1
- package/dist/components/Toolbar/internal/{ToolbarOverflowContext.d.ts → ToolbarContext.d.ts} +14 -5
- package/dist/components/Toolbar/internal/utils/test.d.ts +5 -3
- package/dist/components/Toolbar/types.d.ts +5 -1
- package/dist/{index-DFvIVS57.js → index-ClUtwV8V.js} +2 -2
- package/dist/{index-DFvIVS57.js.map → index-ClUtwV8V.js.map} +1 -1
- package/dist/{index.esm-K9kxJhLx.js → index.esm-BZV0wNKZ.js} +1 -2
- package/dist/{index.esm-K9kxJhLx.js.map → index.esm-BZV0wNKZ.js.map} +1 -1
- package/dist/index.js +80 -69
- package/dist/index.js.map +1 -1
- package/dist/index2.css +17 -23
- package/dist/{match-sorter.esm-B3vwg1-X.js → match-sorter.esm-adzV1NDp.js} +2 -2
- package/dist/{match-sorter.esm-B3vwg1-X.js.map → match-sorter.esm-adzV1NDp.js.map} +1 -1
- package/dist/{useDrilldown-jbU4Cs5l.js → useDrilldown-C8TRwNE9.js} +3 -3
- package/dist/{useDrilldown-jbU4Cs5l.js.map → useDrilldown-C8TRwNE9.js.map} +1 -1
- package/dist/{useInitialFocus-BRRbylek.js → useInitialFocus-CdoVwSbr.js} +2 -2
- package/dist/{useInitialFocus-BRRbylek.js.map → useInitialFocus-CdoVwSbr.js.map} +1 -1
- package/package.json +3 -2
- package/dist/Button.module-Ck7VrMqw.js +0 -26
- package/dist/Button.module-Ck7VrMqw.js.map +0 -1
- package/dist/ButtonLink-CRlyK750.js.map +0 -1
- package/dist/FieldDialog-CAuhkCZY.js.map +0 -1
- package/dist/FieldMessage-DS0COrjp.js +0 -132
- package/dist/FieldMessage-DS0COrjp.js.map +0 -1
- package/dist/MultiSelectFieldSync-Bey99LzJ.js.map +0 -1
- package/dist/SearchField-CoeaOip5.js.map +0 -1
- package/dist/SelectCard-Bag44PmE.js.map +0 -1
- package/dist/SelectFieldSync-CigqXq3T.js +0 -763
- package/dist/SelectFieldSync-CigqXq3T.js.map +0 -1
- package/dist/TextField.module-pD1felN8.js +0 -20
- package/dist/TextField.module-pD1felN8.js.map +0 -1
- package/dist/Toolbar-CVOenuCF.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DataTable-D30sE1Xt.js","sources":["../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/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.2.0_react@18.2.0__react@18.2.0/node_modules/@tanstack/react-table/build/lib/index.mjs","../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/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/constants.ts","../src/beta/components/Table/DataTable/internal/cells/CellFocusContext.tsx","../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/DataTableEditableSelectCell.tsx","../src/beta/components/Table/DataTable/internal/editable-cells/DataTableEditableMultiselectCell.tsx","../src/beta/components/Table/DataTable/internal/cells/DataTableBodyMutableCell.tsx","../src/beta/components/Table/DataTable/internal/cells/DataTableBodyCell.tsx","../src/beta/components/Table/DataTable/internal/context/hover/DTHoverContext.tsx","../src/beta/components/Table/DataTable/internal/context/hover/useDTHoverStateContext.ts","../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/CellError.tsx","../src/beta/components/Table/DataTable/internal/util/getTanStackColumnDef.tsx","../../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/context/hover/useDTHoverDispatchContext.ts","../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/context/hover/DTHoverProvider.tsx","../src/beta/components/Table/internal/scrollCellIntoView.ts","../src/beta/components/Table/DataTable/internal/context/focus/DTFocusProvider.tsx","../src/beta/components/Table/DataTable/DataTable.tsx"],"sourcesContent":["/**\n * Options type for the boolean formatter function\n */\nexport type BooleanFormatterOptions = {\n /**\n * The text to display for true values\n * @default \"True\"\n */\n trueLabel?: string;\n /**\n * The text to display for false values\n * @default \"False\"\n */\n falseLabel?: string;\n};\n\n/**\n * Helper function for formatting table cells with boolean values\n * @param value - The boolean value to format\n * @param options - The options for the boolean formatter\n * @returns The formatted boolean label or null for undefined/null values\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 * The empty cell content for table cells\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 ComponentPropsWithoutRef,\n useState,\n useRef,\n useLayoutEffect,\n} from \"react\";\nimport { Chip, ChipProps } from \"../../../../components/Chip\";\nimport cx from \"classnames\";\nimport styles from \"./TruncateChips.module.scss\";\n\n/**\n * Props for the TruncateChips component\n */\nexport type TruncateChipsProps = ComponentPropsWithoutRef<\"div\"> & {\n /**\n * Array of chip items to display\n */\n items: ChipProps[];\n};\n\n/**\n * Optimized TruncateChips component using measurement-based calculation.\n *\n * Features:\n * - Uses visible measurement chips to determine actual layout\n * - Responsive to container width changes\n * - Supports custom gap between chips\n * - Clean, predictable behavior\n *\n * @example\n * <TruncateChips\n * items={[\n * { label: \"React\", onClose: () => {} },\n * { label: \"TypeScript\", onClose: () => {} },\n * { label: \"JavaScript\", onClose: () => {} }\n * ]}\n * />\n */\nexport const TruncateChips = ({\n items = [],\n className,\n ...rest\n}: TruncateChipsProps) => {\n const containerRef = useRef<HTMLDivElement>(null);\n const chipsContainerRef = useRef<HTMLDivElement>(null);\n const [hiddenCount, setHiddenCount] = useState(0);\n const hiddenChips = useRef<{ el: HTMLElement; rect: DOMRect }[]>([]);\n const plusChipRef = useRef<HTMLSpanElement>(null);\n const [plusChipWidth, setPlusChipWidth] = useState(0);\n\n useLayoutEffect(() => {\n if (!chipsContainerRef.current) return;\n let totalHiddenCount = 0;\n const observer = new IntersectionObserver(\n (entries) => {\n const isResizing = document.querySelector(\n '[aria-label=\"Resize column\"][aria-pressed=\"true\"]',\n );\n if (isResizing) return;\n\n // Update the state of each element that was observed\n entries.forEach((entry) => {\n const target = entry.target as HTMLElement;\n\n if (entry.isIntersecting) {\n // Element is visible, keep it visible\n target.style.display = \"flex\";\n target.style.visibility = \"visible\";\n totalHiddenCount = Math.max(0, totalHiddenCount - 1);\n }\n\n if (!entry.isIntersecting) {\n // Element is outside the container, hide it\n hiddenChips.current.push({\n el: target,\n rect: target.getBoundingClientRect(),\n });\n target.style.visibility = \"hidden\";\n target.style.display = \"none\";\n totalHiddenCount++;\n }\n });\n\n setHiddenCount(totalHiddenCount);\n },\n {\n root: containerRef.current,\n rootMargin: \"0px\",\n threshold: 1,\n },\n );\n\n const children = Array.from(chipsContainerRef.current.children);\n children.forEach((child) => {\n observer.observe(child as HTMLElement);\n });\n\n // Cleanup observer on unmount or dependency change\n return () => {\n observer.disconnect();\n };\n }, [items]); // Re-run when items change\n\n useLayoutEffect(() => {\n if (!containerRef.current) return;\n const observer = new ResizeObserver((entries) => {\n const entry = entries[entries.length - 1];\n if (entry) {\n if (hiddenCount > 0 && containerRef.current) {\n const plusChipRect = plusChipRef.current?.getBoundingClientRect();\n setPlusChipWidth(plusChipRect?.width ?? 0);\n const containerRect = containerRef.current.getBoundingClientRect();\n const chipRect =\n hiddenChips.current[hiddenChips.current.length - 1].rect;\n\n const fitsHorizontally =\n chipRect.width <= containerRect.width &&\n chipRect.left >= containerRect.left &&\n chipRect.right <= containerRect.right;\n\n const fitsVertically =\n chipRect.height <= containerRect.height &&\n chipRect.top >= containerRect.top &&\n chipRect.bottom <= containerRect.bottom;\n\n const hasEnoughSpace = fitsHorizontally && fitsVertically;\n\n hiddenChips.current[hiddenCount - 1].el.style.display = hasEnoughSpace\n ? \"flex\"\n : \"none\";\n\n if (hasEnoughSpace) {\n hiddenChips.current.pop();\n }\n }\n }\n });\n\n observer.observe(containerRef.current);\n\n return () => {\n observer.disconnect();\n };\n }, [hiddenCount]);\n\n return (\n <div\n ref={containerRef}\n className={cx(styles[\"truncate-chips\"], className)}\n style={{\n marginInlineEnd: plusChipWidth,\n }}\n {...rest}\n >\n <div ref={chipsContainerRef} style={{ display: \"contents\" }}>\n {/* Visible chips container */}\n {items.map((chip, index) => (\n <Chip key={index} {...chip} style={{ visibility: \"hidden\" }} />\n ))}\n </div>\n\n {/* Visible plus chip */}\n {hiddenCount > 0 && <Chip label={`+${hiddenCount}`} ref={plusChipRef} />}\n </div>\n );\n};\n","import { Chip, ChipProps } from \"../../../../components/Chip\";\nimport { Flex } from \"../../../../components/Flex\";\nimport { TableEmptyCellContent } from \"../base/cells/TableEmptyCellContent\";\nimport { TruncateChips } from \"../internal/TruncateChips\";\n\n/**\n * The accepted value type for the chips formatter function\n */\nexport type ChipsValueType = string | string[] | ChipProps | ChipProps[];\n\n/**\n * Props for the chips formatter function\n */\nexport type ChipsFormatterOptions = {\n /**\n * Whether to truncate the chips instead of wrapping\n */\n truncateChips?: boolean;\n};\n\n/**\n * Helper function for formatting table cells with chips\n * @param value - The value to format\n * @param options - The options for the chips formatter\n * @returns The formatted chips\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) => ({ label: v }))\n : (value as ChipProps[]);\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} />;\n }\n\n return <Chip {...value} />;\n};\n","/**\n * Props for the currency formatter function\n */\nexport type CurrencyFormatterOptions = {\n /**\n * The locale to use for the currency formatter\n * @default \"en-US\"\n */\n locale?: Intl.LocalesArgument;\n /**\n * The currency to use for the currency formatter\n * @default \"USD\"\n */\n currency?: Intl.NumberFormatOptions[\"currency\"];\n};\n\n/**\n * Helper function for formatting table cells with currency, including i18n support\n * @param value - The value to format\n * @param options - The options for the currency formatter\n * @returns The formatted currency\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","/**\n * Date format preset options\n */\nexport type DateFormatPreset = \"short\" | \"medium\" | \"long\" | \"full\";\n\n/**\n * Time format preset options\n */\nexport type TimeFormatPreset = \"short\" | \"medium\";\n\n/**\n * Shared date format presets used by date formatters\n */\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/**\n * Shared time format presets used by time formatters\n */\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 { DateFormatPreset, dateFormatPresets } from \"./presets\";\n\nexport type { DateFormatPreset };\n\n/**\n * Options type for the date formatter function\n */\nexport type DateFormatterOptions = {\n /**\n * The locale to use for the date formatter\n * @default \"en-US\"\n */\n locale?: Intl.LocalesArgument;\n /**\n * The format preset or Intl.DateTimeFormatOptions object\n * - \"short\": 01/15/2024\n * - \"medium\": Jan 15, 2024\n * - \"long\": January 15, 2024\n * - \"full\": Monday, January 15, 2024\n * - Intl.DateTimeFormatOptions: Custom format (e.g., { weekday: \"long\", month: \"short\", day: \"numeric\" })\n * @default \"short\"\n */\n format?: DateFormatPreset | Intl.DateTimeFormatOptions;\n};\n\n/**\n * Helper function for formatting table cells with plain dates, including i18n support.\n *\n * Accepts plain date strings in the format \"YYYY-MM-DD\" (like Temporal.PlainDate).\n * For JavaScript Date objects or date-times with timezone information,\n * use `dateTimeFormatter` instead.\n *\n * @param value - The plain date string to format (ISO format \"YYYY-MM-DD\")\n * @param options - The options for the date formatter\n * @returns The formatted date string or null for undefined/null values\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 // Parse as plain date (UTC to avoid local timezone shifts)\n const dateTime = DateTime.fromISO(value, { zone: \"utc\" });\n\n if (!dateTime.isValid) {\n return null;\n }\n\n // Convert locale to string for Luxon compatibility\n const localeString = locale?.toString() ?? \"en-US\";\n\n // Check if format is a preset string or Intl options object\n if (typeof format === \"string\") {\n const preset = dateFormatPresets[format];\n return dateTime.setLocale(localeString).toLocaleString(preset);\n }\n\n // Custom Intl.DateTimeFormatOptions\n return dateTime.setLocale(localeString).toLocaleString(format);\n};\n","import { DateTime } from \"luxon\";\nimport { IanaZone } from \"../../../../types\";\nimport {\n DateFormatPreset,\n TimeFormatPreset,\n dateFormatPresets,\n timeFormatPresets,\n} from \"./presets\";\n\n/**\n * Date format preset options for dateTimeFormatter\n */\nexport type DateTimeFormatDatePreset = DateFormatPreset;\n\n/**\n * Time format preset options for dateTimeFormatter\n */\nexport type DateTimeFormatTimePreset = TimeFormatPreset | \"none\";\n\n/**\n * Options type for the date-time formatter function\n */\nexport type DateTimeFormatterOptions = {\n /**\n * The locale to use for the date-time formatter\n * @default \"en-US\"\n */\n locale?: Intl.LocalesArgument;\n /**\n * The format preset for the date portion or Intl.DateTimeFormatOptions object\n * - \"short\": 01/15/2024\n * - \"medium\": Jan 15, 2024\n * - \"long\": January 15, 2024\n * - \"full\": Monday, January 15, 2024\n * - Intl.DateTimeFormatOptions: Custom format (e.g., { weekday: \"long\", month: \"short\", day: \"numeric\" })\n * @default \"short\"\n */\n dateFormat?: DateTimeFormatDatePreset | Intl.DateTimeFormatOptions;\n /**\n * The format preset for the time portion or Intl.DateTimeFormatOptions object\n * - \"short\": 08:30 AM\n * - \"medium\": 08:30:00 AM\n * - \"none\": Omit time from display (useful for Date objects when you only want the date)\n * - Intl.DateTimeFormatOptions: Custom format (e.g., { hour: \"2-digit\", minute: \"2-digit\", hour12: false })\n * @default \"short\"\n */\n timeFormat?: DateTimeFormatTimePreset | Intl.DateTimeFormatOptions;\n /**\n * The IANA timezone to use for displaying Date objects (e.g., \"America/New_York\", \"Europe/London\", \"UTC\").\n * If not provided, uses the user's local timezone.\n *\n * **Note:** This option only applies to `Date` objects. For string inputs, timezone handling is automatic:\n * - Strings without timezone info (e.g., \"2024-01-15T09:30:00\") are treated as plain date-times with no conversion\n * - Strings with timezone info (e.g., \"2024-01-15T09:30:00Z\" or \"2024-01-15T09:30:00-05:00\") use their embedded timezone\n *\n * @default undefined (local timezone)\n */\n timeZone?: IanaZone;\n};\n\n/**\n * Detects if an ISO string contains timezone information (Z suffix or offset like +00:00, -08:00)\n */\nconst hasTimezoneInfo = (isoString: string): boolean => {\n return /(?:Z|[+-]\\d{2}:\\d{2})$/.test(isoString);\n};\n\n/**\n * Helper function for formatting table cells with date and time, including i18n support.\n *\n * For string inputs:\n * - Strings without timezone info are treated as \"plain date-times\" (no timezone conversion, no timezone displayed)\n * - Strings with timezone info (Z or offset) honor the provided timezone and display it (e.g., \"PST\", \"UTC\")\n *\n * For Date objects:\n * - Uses local timezone by default and displays the timezone\n * - Use the `timeZone` option to specify a different timezone (e.g., \"America/New_York\", \"UTC\")\n *\n * @param value - The date-time value to format (ISO string \"YYYY-MM-DDTHH:mm:ss\" or Date object)\n * @param options - The options for the date-time formatter\n * @returns The formatted date-time string or null for undefined/null values\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 // For Date objects, use specified timezone or local timezone\n if (timeZone) {\n dateTime = DateTime.fromJSDate(value, { zone: timeZone });\n } else {\n // Use local timezone - DateTime.fromJSDate uses local timezone by default\n dateTime = DateTime.fromJSDate(value);\n }\n // Always display timezone for Date objects\n includeTimezone = true;\n } else {\n // String input - detect timezone\n if (hasTimezoneInfo(value)) {\n // Has timezone info - parse and keep in original timezone to display timezone\n dateTime = DateTime.fromISO(value);\n if (!dateTime.isValid) {\n return null;\n }\n includeTimezone = true;\n } else {\n // No timezone info - treat as plain date-time (UTC parse)\n dateTime = DateTime.fromISO(value, { zone: \"utc\" });\n }\n }\n\n if (!dateTime.isValid) {\n return null;\n }\n\n // Convert locale to string for Luxon compatibility\n const localeString = locale?.toString() ?? \"en-US\";\n const localizedDateTime = dateTime.setLocale(localeString);\n\n // Resolve date format options\n const dateOptions: Intl.DateTimeFormatOptions =\n typeof dateFormat === \"string\" ? dateFormatPresets[dateFormat] : dateFormat;\n\n // Resolve time format options\n const timeOptions: Intl.DateTimeFormatOptions =\n typeof timeFormat === \"string\"\n ? timeFormat === \"none\"\n ? {}\n : timeFormatPresets[timeFormat]\n : timeFormat;\n\n // Combine date and time options, adding timezone if present in input\n const formatOptions: Intl.DateTimeFormatOptions = {\n ...(includeTimezone && { timeZoneName: \"short\" }),\n ...dateOptions,\n ...timeOptions,\n };\n\n return localizedDateTime.toLocaleString(formatOptions);\n};\n","/**\n * Options type for the number formatter function\n */\nexport type NumberFormatterOptions = {\n /**\n * The locale to use for the number formatter\n * @default \"en-US\"\n */\n locale?: Intl.LocalesArgument;\n /**\n * The minimum number of fraction digits to display\n * @default 0\n */\n minimumFractionDigits?: number;\n /**\n * The maximum number of fraction digits to display\n * @default 2\n */\n maximumFractionDigits?: number;\n /**\n * Whether to use grouping separators (e.g., thousands separator)\n * @default true\n */\n useGrouping?: boolean;\n /**\n * The notation style: \"standard\", \"scientific\", \"engineering\", or \"compact\"\n * @default \"standard\"\n */\n notation?: \"standard\" | \"scientific\" | \"engineering\" | \"compact\";\n /**\n * How to display the sign: \"auto\", \"never\", \"always\", or \"exceptZero\"\n * @default \"auto\"\n */\n signDisplay?: \"auto\" | \"never\" | \"always\" | \"exceptZero\";\n};\n\n/**\n * Helper function for formatting table cells with numbers, including i18n support\n * @param value - The value to format\n * @param options - The options for the number formatter\n * @returns The formatted number\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","/**\n * Options type for the percent formatter function\n */\nexport type PercentFormatterOptions = {\n /**\n * The number of decimals to display\n * @default 2\n */\n decimals?: number;\n /**\n * The locale to use for the percent formatter\n * @default \"en-US\"\n */\n locale?: Intl.LocalesArgument;\n};\n\n/**\n * Helper function for formatting table cells with percentages, including i18n support\n * @param value - The value to format\n * @param options - The options for the percent formatter\n * @returns The formatted percentage\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 { TimeFormatPreset, timeFormatPresets } from \"./presets\";\n\nexport type { TimeFormatPreset };\n\n/**\n * Options type for the time formatter function\n */\nexport type TimeFormatterOptions = {\n /**\n * The locale to use for the time formatter\n * @default \"en-US\"\n */\n locale?: Intl.LocalesArgument;\n /**\n * The format preset or Intl.DateTimeFormatOptions object\n * - \"short\": 08:30 AM\n * - \"medium\": 08:30:00 AM\n * - Intl.DateTimeFormatOptions: Custom format (e.g., { hour: \"2-digit\", minute: \"2-digit\", hour12: false })\n * @default \"short\"\n */\n format?: TimeFormatPreset | Intl.DateTimeFormatOptions;\n};\n\n/**\n * Helper function for formatting table cells with times, including i18n support.\n * Treats time strings as \"plain times\" without timezone conversion.\n * @param value - The time value to format (ISO time string \"HH:mm:ss\" or \"HH:mm\")\n * @param options - The options for the time formatter\n * @returns The formatted time string or null for undefined/null values\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 // Parse time-only string by prepending a reference date\n // Use UTC zone to treat as a \"plain time\" without timezone conversion\n const dateTime = DateTime.fromISO(`1970-01-01T${value}`, { zone: \"utc\" });\n\n if (!dateTime.isValid) {\n return null;\n }\n\n // Convert locale to string for Luxon compatibility\n const localeString = locale?.toString() ?? \"en-US\";\n\n // Check if format is a preset string or Intl options object\n if (typeof format === \"string\") {\n const preset = timeFormatPresets[format];\n return dateTime.setLocale(localeString).toLocaleString(preset);\n }\n\n // Custom Intl.DateTimeFormatOptions\n return dateTime.setLocale(localeString).toLocaleString(format);\n};\n","import { DateTime } from \"luxon\";\nimport { YearlessDate } from \"../../../../components/DateFieldYearless/types\";\n\n/**\n * Yearless date format preset options\n */\nexport type YearlessDateFormatPreset = \"short\" | \"long\";\n\n/**\n * Options type for the yearless date formatter function\n */\nexport type YearlessDateFormatterOptions = {\n /**\n * The locale to use for the yearless date formatter\n * @default \"en-US\"\n */\n locale?: Intl.LocalesArgument;\n /**\n * The format preset or Intl.DateTimeFormatOptions object\n * - \"short\": Jan 05\n * - \"long\": January 05\n * - Intl.DateTimeFormatOptions: Custom format (e.g., { month: \"long\", day: \"numeric\" })\n * @default \"short\"\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 * Helper function for formatting table cells with month and day (no year), including i18n support\n * @param value - The yearless date value to format. Accepts:\n * - Temporal PlainMonthDay string format: \"--MM-DD\" (e.g., \"--01-15\")\n * - YearlessDate object: { month: number, day: number }\n * @param options - The options for the yearless date formatter\n * @returns The formatted month-day string or null for undefined/null values\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 // Parse the --MM-DD format (Temporal PlainMonthDay string format)\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 // YearlessDate object format\n if (value.month == null || value.day == null) {\n return null;\n }\n month = value.month;\n day = value.day;\n }\n\n // Convert locale to string for Luxon compatibility\n const localeString = locale?.toString() ?? \"en-US\";\n\n // Create a DateTime with a leap year reference to support Feb 29\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 // Check if format is a preset string or Intl options object\n if (typeof format === \"string\") {\n const preset = formatPresets[format];\n return dateTime.toLocaleString(preset);\n }\n\n // Custom Intl.DateTimeFormatOptions\n return dateTime.toLocaleString(format);\n};\n","import { ReactNode } from \"react\";\nimport {\n booleanFormatter,\n BooleanFormatterOptions,\n currencyFormatter,\n CurrencyFormatterOptions,\n dateFormatter,\n DateFormatterOptions,\n dateTimeFormatter,\n DateTimeFormatterOptions,\n numberFormatter,\n NumberFormatterOptions,\n percentFormatter,\n PercentFormatterOptions,\n timeFormatter,\n TimeFormatterOptions,\n} from \"./formatters\";\nimport { ColumnType, ColumnTypeConfig, ColumnTypeOptionsMap } from \"./types\";\n\n/**\n * Display defaults for a column type.\n * Defines the default formatter and alignment for each column type.\n */\nexport type ColumnTypeDefaults = {\n /**\n * Default horizontal alignment for the column.\n */\n align: \"start\" | \"center\" | \"end\";\n /**\n * Factory function to create the default renderCell function.\n * Receives formatter options and returns the renderCell function.\n */\n createRenderCell: (\n options?: ColumnTypeOptionsMap[ColumnType],\n ) => ((value: unknown, rowDepth: number) => ReactNode) | undefined;\n};\n\n/**\n * Mapping of column types to their display defaults.\n * Used by the column helper to apply sensible defaults based on data type.\n */\nexport const COLUMN_TYPE_DEFAULTS: Record<ColumnType, ColumnTypeDefaults> = {\n text: {\n align: \"start\",\n createRenderCell: () => undefined, // No formatter, use raw value\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};\n\n/**\n * Extracts the column type string and options from a ColumnTypeConfig.\n *\n * @param config - The column type configuration (string or object)\n * @returns Tuple of [type string, options object or undefined]\n *\n * @example\n * ```ts\n * resolveColumnTypeConfig(\"currency\")\n * // Returns: [\"currency\", undefined]\n *\n * resolveColumnTypeConfig({ type: \"currency\", options: { currency: \"EUR\" } })\n * // Returns: [\"currency\", { currency: \"EUR\" }]\n * ```\n */\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/**\n * Gets the display defaults for a column type.\n *\n * @param type - The column type\n * @returns The column type defaults (align and createRenderCell)\n *\n * @example\n * ```ts\n * const defaults = getColumnTypeDefaults(\"currency\");\n * // Returns: { align: \"end\", createRenderCell: ... }\n * ```\n */\nexport function getColumnTypeDefaults(type: ColumnType): ColumnTypeDefaults {\n return COLUMN_TYPE_DEFAULTS[type];\n}\n","import { ReactNode } from \"react\";\nimport {\n ColumnDef,\n ColumnTypeConfig,\n TextEditConfig,\n NumberEditConfig,\n SelectEditConfig,\n MultiselectEditConfig,\n TableRow,\n} from \"./types\";\nimport { warnOnce } from \"../../../internal/functions\";\n\n/**\n * Utility type that extracts the element type from an array type\n */\ntype ArrayElement<T> = T extends (infer U)[] ? U : never;\n\n/**\n * Base column configuration without editMode-specific or editConfig-specific properties\n */\ntype BaseColumnConfig<T, K extends keyof T> = {\n /**\n * The label of the header\n */\n headerLabel: string;\n /**\n * The alignment of the header.\n * When using `type`, this is set automatically but can be overridden.\n */\n align?: \"start\" | \"center\" | \"end\";\n /**\n * Columns of a group column (for grouped columns)\n */\n columns?: ColumnDef<T>[];\n /**\n * The content of the footer cell. An array will display multiple footer rows\n */\n footerContent?: ReactNode | ReactNode[];\n /**\n * The maximum width of the column, in pixels\n */\n maxWidth?: number;\n /**\n * The minimum width of the column, in pixels\n */\n minWidth?: number;\n /**\n * The pinning location of the column\n */\n pinned?: \"left\" | \"right\";\n /**\n * Whether the column is resizable\n */\n resizable?: boolean;\n /**\n * The function to customize how the cell content is rendered.\n * When using `type`, a default renderer is provided but can be overridden.\n */\n renderCell?: (\n value: T[K],\n { row, depth }: { row?: TableRow<T>; depth?: number },\n ) => ReactNode;\n /**\n * Whether the column is sortable, or a function to customize the sorting logic\n */\n sortable?: boolean | ((valueA: T[K], valueB: T[K]) => number);\n /**\n * The column type for automatic display configuration.\n * Sets default `renderCell` (formatter) and `align` based on the data type.\n */\n type?: ColumnTypeConfig;\n};\n\n// =============================================================================\n// New editConfig-based configurations (recommended)\n// =============================================================================\n\n/**\n * Configuration for read-only columns (no editing)\n */\ntype ReadOnlyColumnConfig<T, K extends keyof T> = BaseColumnConfig<T, K> & {\n editConfig?: undefined;\n // Legacy props must be undefined when editConfig is not used\n editMode?: undefined;\n onChange?: never;\n options?: never;\n};\n\n/**\n * Configuration for text editable columns using editConfig.\n * Valid when T[K] is a string. Also permits booleans (until we add a boolean editable column type)\n */\ntype TextEditConfigColumnConfig<T, K extends keyof T> =\n NonNullable<T[K]> extends string | boolean\n ? BaseColumnConfig<T, K> & {\n editConfig: TextEditConfig<T, K>;\n // Legacy props must be undefined when using editConfig\n editMode?: undefined;\n onChange?: undefined;\n options?: undefined;\n }\n : never;\n\n/**\n * Configuration for number editable columns using editConfig.\n * Valid when T[K] is a number type.\n */\ntype NumberEditConfigColumnConfig<T, K extends keyof T> =\n NonNullable<T[K]> extends number\n ? BaseColumnConfig<T, K> & {\n editConfig: NumberEditConfig<T, K>;\n // Legacy props must be undefined when using editConfig\n editMode?: undefined;\n onChange?: undefined;\n options?: undefined;\n }\n : never;\n\n/**\n * Configuration for select editable columns using editConfig\n */\ntype SelectEditConfigColumnConfig<T, K extends keyof T> = BaseColumnConfig<\n T,\n K\n> & {\n editConfig: SelectEditConfig<T, K>;\n // Legacy props must be undefined when using editConfig\n editMode?: undefined;\n onChange?: undefined;\n options?: undefined;\n};\n\n/**\n * Configuration for multiselect editable columns using editConfig\n * Only valid when T[K] is an array type\n */\ntype MultiselectEditConfigColumnConfig<T, K extends keyof T> =\n NonNullable<T[K]> extends unknown[]\n ? BaseColumnConfig<T, K> & {\n editConfig: MultiselectEditConfig<T, K>;\n // Legacy props must be undefined when using editConfig\n editMode?: undefined;\n onChange?: undefined;\n options?: undefined;\n }\n : never;\n\n// =============================================================================\n// Legacy editMode-based configurations (deprecated)\n// =============================================================================\n\n/**\n * Configuration for text editable columns (legacy).\n * Valid when T[K] is a string. Also permits booleans (until we add a boolean editable column type)\n * @deprecated Use editConfig instead: `editConfig: { mode: \"text\", onChange: ... }`\n */\ntype TextEditableColumnConfig<T, K extends keyof T> =\n NonNullable<T[K]> extends string | boolean\n ? BaseColumnConfig<T, K> & {\n editConfig?: undefined;\n editMode: \"text\";\n onChange?: (value: string, rowId: string) => void;\n options?: never;\n }\n : never;\n\n/**\n * Configuration for select editable columns (legacy)\n * @deprecated Use editConfig instead: `editConfig: { mode: \"select\", options: [...], onChange: ... }`\n */\ntype SelectEditableColumnConfig<T, K extends keyof T> = BaseColumnConfig<\n T,\n K\n> & {\n editConfig?: undefined;\n editMode: \"select\";\n onChange?: (value: T[K], rowId: string) => void;\n options: { value: T[K]; label: string }[];\n};\n\n/**\n * Configuration for multiselect editable columns (legacy)\n * @deprecated Use editConfig instead: `editConfig: { mode: \"multiselect\", options: [...], onChange: ... }`\n */\ntype MultiselectEditableColumnConfig<T, K extends keyof T> =\n NonNullable<T[K]> extends unknown[]\n ? BaseColumnConfig<T, K> & {\n editConfig?: undefined;\n editMode: \"multiselect\";\n onChange?: (value: T[K], rowId: string) => void;\n options: { value: ArrayElement<NonNullable<T[K]>>; label: string }[];\n }\n : never;\n\n/**\n * Full column configuration type - union of all possible configurations.\n * Includes both new editConfig-based and legacy editMode-based configs.\n * TypeScript will enforce that the editMode/editConfig matches the value type constraints.\n */\ntype ColumnConfig<T, K extends keyof T> =\n // New editConfig-based (recommended)\n | ReadOnlyColumnConfig<T, K>\n | TextEditConfigColumnConfig<T, K>\n | NumberEditConfigColumnConfig<T, K>\n | SelectEditConfigColumnConfig<T, K>\n | MultiselectEditConfigColumnConfig<T, K>\n // Legacy editMode-based (deprecated)\n | TextEditableColumnConfig<T, K>\n | SelectEditableColumnConfig<T, K>\n | MultiselectEditableColumnConfig<T, K>;\n\n/**\n * Logs deprecation warnings for legacy column configuration patterns.\n * Only runs in non-production modes.\n */\nfunction logDeprecationWarnings<T, K extends keyof T>(\n id: K | { group: string },\n column: ColumnConfig<T, K>,\n): void {\n const columnId =\n typeof id === \"object\" && \"group\" in id ? id.group : String(id);\n\n // Check for legacy editMode usage\n if (\n \"editMode\" in column &&\n column.editMode &&\n !(\"editConfig\" in column && column.editConfig)\n ) {\n warnOnce(\n `[Anvil2 DataTable] Column \"${columnId}\" uses deprecated \\`editMode\\` prop. ` +\n `Migrate to \\`editConfig: { mode: \"${column.editMode}\", onChange: ... }\\``,\n );\n }\n\n // Check for legacy top-level onChange\n if (\n \"onChange\" in column &&\n column.onChange &&\n !(\"editConfig\" in column && column.editConfig)\n ) {\n warnOnce(\n `[Anvil2 DataTable] Column \"${columnId}\" uses deprecated top-level \\`onChange\\`. ` +\n `Move \\`onChange\\` inside \\`editConfig\\`.`,\n );\n }\n\n // Check for legacy top-level options\n if (\n \"options\" in column &&\n column.options &&\n !(\"editConfig\" in column && column.editConfig)\n ) {\n warnOnce(\n `[Anvil2 DataTable] Column \"${columnId}\" uses deprecated top-level \\`options\\`. ` +\n `Move \\`options\\` inside \\`editConfig\\`.`,\n );\n }\n}\n\n/**\n * Transforms editConfig into the internal editMode/onChange/options structure.\n * This maintains backwards compatibility with the existing DataTable implementation.\n */\nfunction transformEditConfig<T, K extends keyof T>(\n column: ColumnConfig<T, K>,\n): Partial<ColumnDef<T>> {\n if (!(\"editConfig\" in column) || !column.editConfig) {\n return {};\n }\n\n const { editConfig } = column;\n const result: Partial<ColumnDef<T>> = {\n editMode: editConfig.mode,\n onChange: editConfig.onChange as ColumnDef<T>[\"onChange\"],\n };\n\n // Add options for select/multiselect modes\n if (editConfig.mode === \"select\" || editConfig.mode === \"multiselect\") {\n if (\"options\" in editConfig) {\n result.options = editConfig.options as ColumnDef<T>[\"options\"];\n }\n }\n\n // Preserve the full editConfig for modes that need it (e.g., number)\n result.editConfig = editConfig as ColumnDef<T>[\"editConfig\"];\n\n return result;\n}\n\n/**\n * Factory function to create column helper function for defining Table columns.\n *\n * This helper provides type safety by enforcing that:\n * - `type` sets display defaults (formatter and alignment) for the column\n * - `editConfig` enables cell editing with proper type constraints\n * - `editConfig.mode: \"text\"` can only be used with string (or boolean columns, until we add a boolean mode)\n * - `editConfig.mode: \"number\"` can only be used with number columns\n * - `editConfig.mode: \"multiselect\"` can only be used with array columns\n * - `editConfig.mode: \"select\"` options values must match the column's value type\n * - `editConfig.onChange` callback receives the correct value type for the column\n *\n * @template T - The type of the row data\n * @returns A function that creates type-safe column definitions\n *\n * @example\n * ```ts\n * type Data = { name: string; amount: number; tags: string[] };\n * const createColumn = createColumnHelper<Data>();\n *\n * // Display-only column with type defaults\n * createColumn(\"amount\", { headerLabel: \"Amount\", type: \"currency\" });\n *\n * // Editable column with editConfig\n * createColumn(\"name\", {\n * headerLabel: \"Name\",\n * type: \"text\",\n * editConfig: { mode: \"text\", onChange: (value, rowId) => save(value, rowId) }\n * });\n *\n * // Number editing\n * createColumn(\"amount\", {\n * headerLabel: \"Amount\",\n * editConfig: {\n * mode: \"number\",\n * minValue: 0,\n * maxValue: 10000,\n * step: 0.01,\n * onChange: (value, rowId) => save(value, rowId)\n * }\n * });\n *\n * // Select editing\n * createColumn(\"status\", {\n * headerLabel: \"Status\",\n * editConfig: {\n * mode: \"select\",\n * options: [{ value: \"active\", label: \"Active\" }],\n * onChange: (value, rowId) => save(value, rowId)\n * }\n * });\n *\n * // Multiselect editing with array column\n * createColumn(\"tags\", {\n * headerLabel: \"Tags\",\n * editConfig: {\n * mode: \"multiselect\",\n * options: [{ value: \"urgent\", label: \"Urgent\" }],\n * onChange: (value, rowId) => save(value, rowId)\n * }\n * });\n * ```\n */\nexport function createColumnHelper<T>() {\n return function createColumn<K extends keyof T>(\n id: K | { group: string },\n column: ColumnConfig<T, K>,\n ): ColumnDef<T> {\n // Log deprecation warnings in development\n logDeprecationWarnings(id, column);\n\n // Transform editConfig to internal structure if present\n const editProps = transformEditConfig(column);\n\n if (typeof id === \"object\" && \"group\" in id) {\n // Group columns use the group string as the id\n // Cast is necessary here because group columns don't have a K in T\n return {\n id: id.group,\n ...column,\n ...editProps,\n } as unknown as ColumnDef<T>;\n }\n\n // For regular columns, we can safely assign the id\n // Type safety is enforced via ColumnConfig<T, K> at the call site\n return { id, ...column, ...editProps } as ColumnDef<T>;\n };\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","import { createContext } from \"react\";\nimport { CellPosition } from \"../../../../internal/types\";\n\nexport type DTFocusState = {\n /**\n * The currently focused cell or null if no cell is focused\n */\n focusedCell: CellPosition | null;\n /**\n * The last focused cell when the table was blurred or { rowIndex: 0, columnIndex: 0 } if never focused\n */\n focusRestorePoint: CellPosition;\n /**\n * Whether the focus has been disrupted by a sub component\n */\n hasFocusBeenDisrupted: boolean;\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 DTFocusSubComponentAction = {\n type: \"FOCUS_SUB_COMPONENT\";\n};\n\nexport type DTFocusSubComponentBlurAction = {\n type: \"BLUR_SUB_COMPONENT\";\n};\n\nexport type DTFocusAction =\n | DTFocusCellAction\n | DTFocusTableAction\n | DTFocusMoveAction\n | DTFocusJumpAction\n | DTBlurAction\n | DTFocusSubComponentAction\n | DTFocusSubComponentBlurAction\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 { CellPosition } from \"../../../../internal/types\";\n\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 /**\n * Moves the focus to the next valid cell in the given direction\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 /**\n * Moves the focus to the first/last valid cell in the given direction\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 const focusSubComponent = useCallback(() => {\n dispatch({ type: \"FOCUS_SUB_COMPONENT\" });\n }, [dispatch]);\n\n const blurSubComponent = useCallback(() => {\n dispatch({ type: \"BLUR_SUB_COMPONENT\" });\n }, [dispatch]);\n\n return {\n focusTableGenerally,\n moveFocusToCell,\n moveFocus,\n jumpFocus,\n blur,\n focusSubComponent,\n blurSubComponent,\n dispatch,\n };\n}\n","import { ComponentPropsWithoutRef } from \"react\";\nimport cx from \"classnames\";\n\nimport { useDTFocusDispatchContext } from \"../DataTable/internal/context/focus/useDTFocusDispatchContext\";\n\nimport styles from \"./TableBase.module.scss\";\n\n/**\n * Props for the SimpleTableBase component\n * @extends ComponentPropsWithoutRef<\"table\">\n */\nexport type SimpleTableBaseProps = ComponentPropsWithoutRef<\"table\">;\n\n/**\n * Props for the DataTableBase component\n * @extends Omit<ComponentPropsWithoutRef<\"div\">, \"aria-colcount\" | \"aria-rowcount\">\n */\nexport type DataTableBaseProps = Omit<\n ComponentPropsWithoutRef<\"div\">,\n \"aria-colcount\" | \"aria-rowcount\"\n> & {\n /**\n * The number of columns in the table\n */\n colCount: number;\n /**\n * The number of rows in the table\n */\n rowCount: number;\n /**\n * Whether the table has expandable rows\n */\n hasSubRows?: boolean;\n};\n\n/**\n * Props for the TableBase component\n * @extends SimpleTableBaseProps\n * @extends DataTableBaseProps\n */\nexport type TableBaseProps =\n | ({\n type: \"simple\";\n } & SimpleTableBaseProps)\n | ({\n type: \"data-table\";\n } & DataTableBaseProps);\n\n/**\n * Base table component for simple presentational tables\n * @param props - The props for the SimpleTableBase component\n * @param props.children - The children of the SimpleTableBase component\n * @param props.className - The class name of the SimpleTableBase component\n * @param props.ref - The ref of the SimpleTableBase component\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\n/**\n * Base table component for complex data tables\n * @param props - The props for the DataTableBase component\n * @param props.children - The children of the DataTableBase component\n * @param props.className - The class name of the DataTableBase component\n * @param props.ref - The ref of the DataTableBase component\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 } = 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 focusTableGenerally();\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 * Styled table component for simple presentational or complex data tables\n * @param props - The props for the TableBase component\n * @param props.type - The type of the TableBase component\n * @param props.children - The children of the TableBase component\n * @param props.className - The class name of the TableBase component\n * @param props.ref - The ref of the TableBase component\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 { ComponentPropsWithoutRef } from \"react\";\nimport cx from \"classnames\";\n\nimport styles from \"./TableBody.module.scss\";\n\n/**\n * Props for the TableBody component\n * @extends ComponentPropsWithoutRef<\"tbody\">\n * @extends ComponentPropsWithoutRef<\"div\">\n */\nexport type TableBodyProps =\n | ({\n /**\n * The type of table being rendered\n */\n type: \"simple\";\n } & ComponentPropsWithoutRef<\"tbody\">)\n | ({\n /**\n * The type of table being rendered\n */\n type: \"data-table\";\n } & ComponentPropsWithoutRef<\"div\">);\n\n/**\n * Table body component for simple presentational or complex data tables\n * @param props - The props for the TableBody component\n * @param props.type - The type of table being rendered\n * @param props.children - The children of the TableBody component\n * @param props.ref - The ref of the TableBody component\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 className={classes}\n role={type === \"simple\" ? undefined : \"rowgroup\"}\n >\n {children}\n </Element>\n );\n}\n","import { Column } from \"@tanstack/react-table\";\nimport styles from \"../base/cells/TableCells.module.scss\";\n\n/**\n * Get the common classes for adding shadow styles to pinned columns\n */\nexport const getCommonPinningClasses = <T>(\n column: Column<T>,\n): string | undefined => {\n const isPinned = column.getIsPinned();\n const isLastLeftPinnedColumn =\n isPinned === \"left\" && column.getIsLastColumn(\"left\");\n const isFirstRightPinnedColumn =\n isPinned === \"right\" && column.getIsFirstColumn(\"right\");\n\n if (isLastLeftPinnedColumn) {\n return styles[\"last-pinned-left-column\"];\n }\n if (isFirstRightPinnedColumn) {\n return styles[\"first-pinned-right-column\"];\n }\n};\n","import { Icon } from \"../../../../../../components\";\nimport EditIcon from \"../../../../../../../public/assets/icons/material/round/edit.svg\";\n\nimport styles from \"./DataTableEditableCells.module.scss\";\n\n/**\n * Edit icon for editable cells in data tables\n * @returns The edit icon\n */\nexport const DataTableEditableCellEditIcon = () => {\n return (\n <Icon\n svg={EditIcon}\n size=\"small\"\n color=\"subtle\"\n className={styles[\"data-table-body-cell-edit-icon\"]}\n aria-label=\"Edit cell value\"\n />\n );\n};\n","import { ComponentPropsWithoutRef, forwardRef } from \"react\";\nimport cx from \"classnames\";\n\nimport { 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 * The props for the TableBodyCell component\n */\nexport type TableBodyCellProps =\n | ({\n /**\n * The type of table being rendered\n */\n type: \"simple\";\n } & SimpleTableBodyCellProps)\n | ({\n /**\n * The type of table being rendered\n */\n type: \"data-table\";\n } & DataTableBodyCellProps);\n\n/**\n * The styled table body cell component\n * @param props - The props for the TableBodyCell component\n * @param props.type - The type of table being rendered\n * @param props.children - The children to render in the cell\n * @param props.className - The class name of the TableBodyCell component\n * @param props.rest - The rest of the props\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 { CellPosition } from \"../../../internal/types\";\n\nexport function formatCellPositionString(cellPosition: CellPosition): string {\n return `${cellPosition.rowIndex},${cellPosition.columnIndex}`;\n}\n\n/**\n * Checks if two cell positions are equal.\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 { Cell } from \"@tanstack/react-table\";\nimport { ColumnDef } from \"../../../types\";\n\n/**\n * Extracts the column ID from a cell, with proper type narrowing.\n * Uses the stored ColumnDef from meta if available, otherwise falls back to column.id.\n *\n * @param cell - The TanStack table cell instance\n * @returns The column ID as a keyof T\n */\nexport function getColumnId<T>(cell: Cell<T, unknown>): keyof T {\n // Access the stored ColumnDef from meta\n const columnDef = cell.column.columnDef.meta?.columnDef as\n | ColumnDef<T>\n | undefined;\n if (columnDef?.id) {\n return columnDef.id;\n }\n // Fallback to column.id (may be string, not keyof T)\n return cell.column.id as keyof T;\n}\n\n/**\n * Gets the cell value with proper type narrowing based on column ID.\n * Uses the column ID to narrow the return type from `unknown` to `T[K]`.\n *\n * @param cell - The TanStack table cell instance\n * @param _columnId - The column ID to use for type narrowing (unused at runtime, only for TypeScript)\n * @returns The cell value, typed as T[K]\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 // Runtime validation could be added here if needed\n // Note: This assertion is necessary because TanStack Table's Cell type\n // doesn't preserve the specific value type T[K] at the table instance level\n return value as T[K];\n}\n\n/**\n * Gets the onChange callback with proper typing based on column ID.\n * Returns a callback that accepts T[K] instead of the union type T[keyof T].\n *\n * @param cell - The TanStack table cell instance\n * @param _columnId - The column ID to use for type narrowing (unused at runtime, only for TypeScript)\n * @returns The onChange callback, typed to accept T[K], or undefined if not configured\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 // Note: This assertion is necessary because the meta.onChange is typed as\n // (value: T[keyof T], rowId: string) => void, but we know it should accept T[K]\n return cell.column.columnDef.meta?.onChange as\n | ((value: T[K], rowId: string) => void)\n | undefined;\n}\n\n/**\n * Logs a warning when a cell value type doesn't match the expected type for its editMode.\n *\n * @param params - The warning parameters\n * @param params.columnId - The column ID for the warning message\n * @param params.editMode - The editMode of the column\n * @param params.expectedType - The expected type description\n * @param params.receivedType - The actual type received\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 { CSSProperties, useMemo } from \"react\";\nimport { Column } from \"@tanstack/react-table\";\n\n/**\n * Get the common styles for sticky positioning of pinned columns\n * Width is handled by CSS Grid, so only positioning is needed\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\nexport const useCommonPinningStyles = <T>(column: Column<T>): CSSProperties => {\n const left = column.getStart(\"left\");\n const right = column.getAfter(\"right\");\n const isPinned = column.getIsPinned();\n\n return useMemo(\n () => ({\n left: isPinned === \"left\" ? `${left}px` : undefined,\n right: isPinned === \"right\" ? `${right}px` : undefined,\n position: isPinned ? \"sticky\" : \"relative\",\n zIndex: isPinned ? 1 : 0,\n }),\n [left, right, isPinned],\n );\n};\n","/**\n * Internal column ID for the primary row action column.\n * This column typically contains expand buttons, but may also contain\n * checkboxes for nested rows when selection is enabled.\n */\nexport const INTERNAL_ROW_ACTION_PRIMARY_COLUMN_ID =\n \"a2-table-internal-row-action-primary\";\n\n/**\n * Internal column ID for the secondary row action column.\n * This column contains checkboxes for row selection when enabled.\n * For nested rows, this column renders nothing (selection is handled\n * in the primary action column instead).\n */\nexport const INTERNAL_ROW_ACTION_SECONDARY_COLUMN_ID =\n \"a2-table-internal-row-action-secondary\";\n","import { createContext, useContext } from \"react\";\n\nexport type CellFocusContextValue = {\n /**\n * Whether the cell currently has focus\n */\n isCellFocused: boolean;\n};\n\n/**\n * Context for communicating cell focus state to child components.\n * Used by CellError to show tooltips when the cell is focused via keyboard.\n */\nexport const CellFocusContext = createContext<CellFocusContextValue | null>(\n null,\n);\n\n/**\n * Hook to consume the CellFocusContext.\n * Returns null if used outside of a CellFocusContext.Provider.\n */\nexport function useCellFocusContext(): CellFocusContextValue | null {\n return useContext(CellFocusContext);\n}\n","import { useCallback, useMemo, useRef, useState } from \"react\";\nimport cx from \"classnames\";\n\nimport { TableBodyCell } from \"../../../base/cells/TableBodyCell\";\nimport { DataTableBodyCellProps as BaseDataTableBodyCellProps } from \"../../../base/cells/TableBodyCell\";\n\nimport styles from \"./DataTableCells.module.scss\";\nimport baseTableCellStyles from \"../../../base/cells/TableCells.module.scss\";\nimport { Cell } from \"@tanstack/react-table\";\nimport { useCommonPinningStyles } from \"../../../internal/getCommonPinningStyles\";\nimport { useDTFocusDispatchContext } from \"../context/focus/useDTFocusDispatchContext\";\nimport { formatCellPositionString } from \"../util/cellPositionHelpers\";\nimport { CellPosition } from \"../../../internal/types\";\nimport {\n INTERNAL_ROW_ACTION_PRIMARY_COLUMN_ID,\n INTERNAL_ROW_ACTION_SECONDARY_COLUMN_ID,\n} from \"../constants\";\nimport { TableRow } from \"../../../types\";\nimport { CellFocusContext } from \"./CellFocusContext\";\n\n/**\n * Props for the DataTableBodyImmutableCell component\n */\nexport type DataTableBodyImmutableCellProps<T> = Omit<\n BaseDataTableBodyCellProps,\n \"onChange\"\n> & {\n /**\n * The position of the cell in the table\n */\n cellPosition: CellPosition;\n /**\n * The TanStack table cell instance\n */\n cell: Cell<T, unknown>;\n /**\n * Whether the cell is currently hovered\n */\n isHovered: boolean;\n};\n\n/**\n * Renders an immutable (non-editable) body cell in a DataTable. This component handles keyboard\n * navigation for focus management and row expansion/selection, but does not support cell editing.\n *\n * @param props - The props for the DataTableBodyImmutableCell component\n * @param props.cell - The TanStack table cell instance\n * @param props.cellPosition - The position of the cell in the table\n * @param props.children - The content to render in the cell\n * @param props.isHovered - Whether the cell is currently hovered\n * @returns The rendered immutable cell component\n */\nexport function DataTableBodyImmutableCell<T>(\n props: DataTableBodyImmutableCellProps<T>,\n) {\n const { cell, cellPosition, children, isHovered, ...rest } = props;\n\n const cellRef = useRef<HTMLTableCellElement>(null);\n const [tabIndex, setTabIndex] = useState(-1);\n const [isFocused, setIsFocused] = useState(false);\n const { moveFocusToCell } = useDTFocusDispatchContext();\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 // Derive cell action from column type and row state\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 cellError = (cell.row.original as TableRow<T>).meta?.errors?.[\n column.id as keyof T\n ];\n\n const classes = cx(styles[\"data-table-body-cell\"], rest.className, {\n [styles[\"data-table-body-cell-hovered\"]]: isHovered,\n [styles[\"data-table-body-cell-error\"]]: !!cellError,\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\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 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 return;\n }\n default:\n break;\n }\n },\n [\n moveFocus,\n jumpFocus,\n isExpandCell,\n isSelectCell,\n cell,\n rowCanExpand,\n rowIsExpanded,\n toggleRowExpanded,\n ],\n );\n\n const handleFocus = useCallback(() => {\n setTabIndex(0);\n setIsFocused(true);\n moveFocusToCell(cellPosition);\n }, [moveFocusToCell, cellPosition]);\n\n const handleBlur = useCallback(() => {\n setTabIndex(-1);\n setIsFocused(false);\n }, []);\n\n const cellFocusContextValue = useMemo(\n () => ({ isCellFocused: isFocused }),\n [isFocused],\n );\n\n return (\n <TableBodyCell\n type=\"data-table\"\n {...rest}\n className={classes}\n ref={cellRef}\n tabIndex={tabIndex}\n onFocus={handleFocus}\n onBlur={handleBlur}\n style={commonPinningStyles}\n onKeyDown={handleKeyDown}\n data-cell-pos={formatCellPositionString(cellPosition)}\n >\n <CellFocusContext.Provider value={cellFocusContextValue}>\n {children}\n </CellFocusContext.Provider>\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\";\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 { EditableCellImperativeHandle, BaseEditableCellProps } 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 { CellFocusContext } from \"../cells/CellFocusContext\";\n\nexport type DataTableEditableTextCellProps<T> = BaseEditableCellProps<T>;\n\n/**\n * Renders an editable text cell in a DataTable. This component provides a text input that appears\n * when the cell is activated, allowing users to edit the cell value. Supports keyboard navigation\n * and commit/cancel operations.\n *\n * @param props - The props for the DataTableEditableTextCell component\n * @param props.cell - The TanStack table cell instance\n * @param props.cellProps - Props for styling and event handling of the cell container\n * @param props.cellPosition - The position of the cell in the table\n * @param props.children - The content to display when not editing\n * @param props.isHovered - Whether the cell is currently hovered\n * @param ref - Ref to the imperative handle for programmatic control\n * @returns The rendered editable text cell component\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 // Use type-safe helpers to get column ID and value\n const columnId = getColumnId(cell);\n const cellValue = getCellValue(cell, columnId);\n\n const [initialValue, isValidValueType] = useMemo(() => {\n let value: string;\n let isValid = true;\n\n if (cellValue === undefined || cellValue === null) {\n value = \"\";\n isValid = true;\n return [value, isValid];\n }\n\n switch (typeof cellValue) {\n case \"string\":\n value = cellValue;\n break;\n case \"boolean\":\n // Booleans are converted to strings\n // Drop support for this once we implement boolean editMode\n value = String(cellValue);\n break;\n default:\n value = \"\";\n isValid = false;\n break;\n }\n if (!isValid) {\n logWarningForInvalidCellValueType({\n columnId: String(columnId),\n editMode: \"text\",\n expectedType: \"string\",\n receivedType: Array.isArray(cellValue) ? \"array\" : typeof cellValue,\n });\n }\n return [value, isValid];\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 const skipCommitOnBlur = useRef(false);\n\n const onChange = getCellOnChange(cell, columnId);\n\n const commitValue = useCallback(() => {\n if (draftValue !== initialValue) {\n // This assertion is necessary because draftValue is string but onChange expects T[K]\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 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 // Skip for interactions within the cell (e.g. clicking on the input)\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 // Skip for interactions within the cell (e.g. clicking on the input)\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 // Provide focus context to children (e.g., CellError) for keyboard accessibility.\n // Show tooltip when cell has focus but is not in editing mode.\n const cellFocusContextValue = useMemo(\n () => ({ isCellFocused: tabIndex === 0 && !isEditing }),\n [tabIndex, isEditing],\n );\n\n useEffect(() => {\n if (isEditing) {\n inputRef.current?.focus();\n }\n }, [isEditing]);\n\n if (!isValidValueType) {\n // Exclude cellProps to avoid passing it to the DOM\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 >\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 />\n </>\n ) : (\n <CellFocusContext.Provider value={cellFocusContextValue}>\n {children}\n {!isEditing && <DataTableEditableCellEditIcon />}\n </CellFocusContext.Provider>\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\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\";\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 { EditableCellImperativeHandle, BaseEditableCellProps } 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 { CellFocusContext } from \"../cells/CellFocusContext\";\nimport { useNumberField } from \"../../../../../../internal/hooks/useNumberField/useNumberField\";\nimport { useMergeRefs } from \"../../../../../../hooks/useMergeRefs\";\n\nexport type DataTableEditableNumberCellProps<T> = BaseEditableCellProps<T>;\n\n/**\n * Renders an editable number cell in a DataTable. This component provides a number input\n * that appears when the cell is activated, leveraging the useNumberField hook for formatting,\n * validation, and keyboard navigation (arrow keys for increment/decrement).\n *\n * Features:\n * - Uses useNumberField hook for precise decimal arithmetic and input formatting\n * - Supports configurable min/max values, step size, and fraction digits\n * - Keyboard navigation: Enter/F2 to commit, Escape to cancel\n * - Input masking with thousand separators and decimal precision\n *\n * @param props - The props for the DataTableEditableNumberCell component\n * @param props.cell - The TanStack table cell instance\n * @param props.cellProps - Props for styling and event handling of the cell container\n * @param props.cellPosition - The position of the cell in the table\n * @param props.children - The content to display when not editing\n * @param props.isHovered - Whether the cell is currently hovered\n * @param ref - Ref to the imperative handle for programmatic control\n * @returns The rendered editable number cell component\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 // Use type-safe helpers to get column ID and value\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 const skipCommitOnBlur = useRef(false);\n\n const onChange = getCellOnChange(cell, columnId);\n\n const commitValue = useCallback(() => {\n if (draftValue !== initialValue) {\n // The onChange expects T[K] which should be number for number columns\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 // Provide focus context to children (e.g., CellError) for keyboard accessibility.\n const cellFocusContextValue = useMemo(\n () => ({ isCellFocused: tabIndex === 0 && !isEditing }),\n [tabIndex, isEditing],\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 >\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 />\n </>\n ) : (\n <CellFocusContext.Provider value={cellFocusContextValue}>\n {children}\n {!isEditing && <DataTableEditableCellEditIcon />}\n </CellFocusContext.Provider>\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\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 {\n forwardRef,\n Ref,\n useCallback,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport cx from \"classnames\";\n\nimport { Menu } from \"../../../../../../components/Menu\";\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 dataTableCellStyles from \"../cells/DataTableCells.module.scss\";\nimport { EditableCellImperativeHandle } from \"./types\";\nimport { useDTFocusDispatchContext } from \"../context/focus/useDTFocusDispatchContext\";\nimport { formatCellPositionString } from \"../util/cellPositionHelpers\";\nimport { mergeRefs } from \"../../../../../../hooks/useMergeRefs/useMergeRefs\";\nimport { BaseEditableCellProps } from \"./types\";\nimport {\n getColumnId,\n getCellValue,\n getCellOnChange,\n logWarningForInvalidCellValueType,\n} from \"../util/cellTypeHelpers\";\nimport { DataTableBodyImmutableCell } from \"../cells/DataTableBodyImmutableCell\";\nimport { CellFocusContext } from \"../cells/CellFocusContext\";\n\nexport type DataTableEditableSelectCellProps<T> = BaseEditableCellProps<T>;\n\n/**\n * Renders an editable select cell in a DataTable. This component provides a dropdown menu that\n * appears when the cell is activated, allowing users to select a single value from a list of options.\n * Supports keyboard navigation and commit/cancel operations.\n *\n * @param props - The props for the DataTableEditableSelectCell component\n * @param props.cell - The TanStack table cell instance\n * @param props.cellProps - Props for styling and event handling of the cell container\n * @param props.cellPosition - The position of the cell in the table\n * @param props.children - The content to display when not editing\n * @param props.isHovered - Whether the cell is currently hovered\n * @param ref - Ref to the imperative handle for programmatic control\n * @returns The rendered editable select cell component\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 } = cellProps;\n const [isEditing, setIsEditing] = useState(false);\n\n // Use type-safe helpers to get column ID and value\n const columnId = getColumnId(cell);\n const cellValue = getCellValue(cell, columnId);\n\n const [initialValue, isValidValueType] = useMemo(() => {\n let value: string;\n let isValid = true;\n\n if (cellValue === undefined || cellValue === null) {\n value = \"\";\n isValid = true;\n return [value, isValid];\n }\n\n switch (typeof cellValue) {\n case \"string\":\n case \"number\":\n value = String(cellValue);\n break;\n case \"boolean\":\n value = String(cellValue);\n break;\n default:\n value = \"\";\n isValid = false;\n break;\n }\n if (!isValid) {\n logWarningForInvalidCellValueType({\n columnId: String(columnId),\n editMode: \"select\",\n expectedType: \"string | number | boolean\",\n receivedType: Array.isArray(cellValue) ? \"array\" : typeof cellValue,\n });\n }\n return [value, isValid];\n }, [cellValue, columnId]);\n\n const options = cell.column.columnDef.meta?.options ?? [];\n const [tabIndex, setTabIndex] = useState(-1);\n const { moveFocusToCell } = useDTFocusDispatchContext();\n const cellRef = useRef<HTMLTableCellElement>(null);\n const rowId = cell.row.id;\n const menuElement = useRef<Element | null>(null);\n\n useImperativeHandle(ref, () => ({\n invoke: beginEditing,\n focus: () => {\n cellRef.current?.focus();\n setTabIndex(0);\n },\n }));\n\n const beginEditing = useCallback(() => {\n setIsEditing(true);\n }, [setIsEditing]);\n\n const stopEditing = useCallback(() => {\n setIsEditing(false);\n }, [setIsEditing]);\n\n const onChange = getCellOnChange(cell, columnId);\n const commitValue = useCallback(\n (value: T[typeof columnId]) => {\n if (value !== initialValue) {\n onChange?.(value, rowId);\n }\n stopEditing();\n },\n [rowId, onChange, initialValue, stopEditing],\n );\n\n const cellClasses = cx(\n styles[\"data-table-body-cell-editable\"],\n cellProps.className,\n { [dataTableCellStyles[\"data-table-body-cell-editing\"]]: isEditing },\n );\n\n const handleCellKeyDown = useCallback(\n (\n event: React.KeyboardEvent<HTMLElement>,\n handleMenuKeydown:\n | ((event: React.KeyboardEvent<HTMLButtonElement>) => void)\n | undefined,\n ) => {\n if (isEditing) {\n if (event.key === \"Escape\" || event.key === \"F2\") {\n stopEditing();\n return;\n }\n handleMenuKeydown?.(event as React.KeyboardEvent<HTMLButtonElement>);\n return;\n }\n onCellKeyDown?.(event as React.KeyboardEvent<HTMLDivElement>);\n },\n [onCellKeyDown, isEditing, stopEditing],\n );\n\n const handleOutsidePress = useCallback(() => {\n stopEditing();\n setTabIndex(-1);\n }, [stopEditing]);\n\n const handleCellMouseDown = useCallback(() => {\n if (isEditing) {\n stopEditing();\n return;\n }\n moveFocusToCell(cellPosition);\n beginEditing();\n }, [beginEditing, cellPosition, moveFocusToCell, isEditing, stopEditing]);\n\n const handleCellBlur = useCallback(\n (e: React.FocusEvent<HTMLElement>) => {\n if (menuElement.current?.contains(e.relatedTarget as Node)) {\n // Skip for interactions within the menu\n return;\n }\n setTabIndex(-1);\n stopEditing();\n },\n [setTabIndex, menuElement, stopEditing],\n );\n\n const handleCellFocus = useCallback(\n (event: React.FocusEvent<HTMLTableCellElement>) => {\n if (event.target !== cellRef.current) {\n // Skip for interactions within the cell (e.g. clicking on the menu)\n return;\n }\n event.preventDefault();\n setTabIndex(0);\n },\n [setTabIndex],\n );\n\n const handleMenuItemClick = useCallback(\n (value: T[keyof T]) => {\n commitValue(value);\n },\n [commitValue],\n );\n\n const handleMenuItemKeyDown = useCallback(\n (event: React.KeyboardEvent<HTMLButtonElement>) => {\n if (event.key === \"Escape\" || event.key === \"F2\") {\n cellRef.current?.focus();\n stopEditing();\n }\n },\n [stopEditing],\n );\n\n // Provide focus context to children (e.g., CellError) for keyboard accessibility.\n // Show tooltip when cell has focus but is not in editing mode.\n const cellFocusContextValue = useMemo(\n () => ({ isCellFocused: tabIndex === 0 && !isEditing }),\n [tabIndex, isEditing],\n );\n\n if (!isValidValueType) {\n // Exclude cellProps to avoid passing it to the DOM\n const { cellProps: _cellProps, ...immutableCellProps } = props;\n return <DataTableBodyImmutableCell {...immutableCellProps} />;\n }\n\n return (\n <Menu\n open={isEditing}\n onOutsidePress={handleOutsidePress}\n trigger={({\n ref: triggerRef,\n onKeyDown: menuOnTriggerKeydown,\n [\"aria-controls\"]: triggerAriaControls,\n [\"aria-expanded\"]: triggerAriaExpanded,\n [\"aria-haspopup\"]: triggerAriaHaspopup,\n [\"data-open\"]: triggerDataOpen,\n [\"data-state\"]: triggerDataState,\n }) => {\n menuElement.current =\n document.querySelector(`#${triggerAriaControls}`) || null;\n return (\n <>\n <TableBodyCell\n ref={mergeRefs([\n triggerRef as Ref<HTMLElement>,\n cellRef as Ref<HTMLElement>,\n ])}\n tabIndex={tabIndex}\n type=\"data-table\"\n {...cellProps}\n className={cellClasses}\n onMouseDown={handleCellMouseDown}\n onBlur={handleCellBlur}\n onFocus={handleCellFocus}\n data-cell-pos={formatCellPositionString(cellPosition)}\n aria-controls={triggerAriaControls}\n aria-expanded={triggerAriaExpanded}\n aria-haspopup={triggerAriaHaspopup}\n data-open={triggerDataOpen}\n data-state={triggerDataState}\n onKeyDown={(e) => handleCellKeyDown(e, menuOnTriggerKeydown)}\n >\n <CellFocusContext.Provider value={cellFocusContextValue}>\n {children}\n {!isEditing && <DataTableEditableCellEditIcon />}\n </CellFocusContext.Provider>\n <SrOnly>\n {isEditing\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 }}\n >\n {isEditing &&\n options.map((item) => {\n return (\n <Menu.Item\n key={item.value as string}\n label={item.label}\n onClick={() => handleMenuItemClick(item.value)}\n onKeyDown={handleMenuItemKeyDown}\n />\n );\n })}\n </Menu>\n );\n}\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 {\n useRef,\n KeyboardEvent,\n useMemo,\n useState,\n useCallback,\n ChangeEvent,\n forwardRef,\n useImperativeHandle,\n Ref,\n} from \"react\";\nimport cx from \"classnames\";\n\nimport {\n Flex,\n ListView,\n Popover,\n SearchField,\n SrOnly,\n} from \"../../../../../../components\";\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 { EditableCellImperativeHandle } from \"./types\";\nimport { formatCellPositionString } from \"../util/cellPositionHelpers\";\nimport { useDTFocusDispatchContext } from \"../context/focus/useDTFocusDispatchContext\";\nimport { mergeRefs } from \"../../../../../../hooks/useMergeRefs/useMergeRefs\";\nimport { BaseEditableCellProps } from \"./types\";\nimport {\n getColumnId,\n getCellValue,\n getCellOnChange,\n logWarningForInvalidCellValueType,\n} from \"../util/cellTypeHelpers\";\nimport { DataTableBodyImmutableCell } from \"../cells/DataTableBodyImmutableCell\";\nimport { CellFocusContext } from \"../cells/CellFocusContext\";\n\nexport type DataTableEditableMultiselectCellProps<T> = BaseEditableCellProps<T>;\n\n/**\n * Renders an editable multiselect cell in a DataTable. This component provides a popover with a\n * searchable list that appears when the cell is activated, allowing users to select multiple values\n * from a list of options. Supports keyboard navigation, search filtering, and commit/cancel operations.\n *\n * @param props - The props for the DataTableEditableMultiselectCell component\n * @param props.cell - The TanStack table cell instance\n * @param props.cellProps - Props for styling and event handling of the cell container\n * @param props.cellPosition - The position of the cell in the table\n * @param props.children - The content to display when not editing\n * @param props.isHovered - Whether the cell is currently hovered\n * @param ref - Ref to the imperative handle for programmatic control\n * @returns The rendered editable multiselect cell component\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 } = cellProps;\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: string[];\n let isValid = true;\n\n if (cellValue === null || cellValue === undefined) {\n value = [];\n return [value, isValid];\n } else if (Array.isArray(cellValue)) {\n value = cellValue.map((v) => String(v));\n isValid = true;\n return [value, isValid];\n } else {\n value = [];\n isValid = false;\n logWarningForInvalidCellValueType({\n columnId: String(columnId),\n editMode: \"multiselect\",\n expectedType: \"array of primitive values\",\n receivedType: typeof cellValue,\n });\n return [value, isValid];\n }\n }, [cellValue, columnId]);\n\n const options = useMemo(\n () => cell.column.columnDef.meta?.options ?? [],\n [cell.column.columnDef.meta?.options],\n );\n const [tabIndex, setTabIndex] = useState(-1);\n const { moveFocusToCell } = useDTFocusDispatchContext();\n const cellRef = useRef<HTMLTableCellElement>(null);\n const rowId = cell.row.id;\n const [draftValue, setDraftValue] = useState(initialValue);\n\n const searchFieldRef = useRef<HTMLInputElement>(null);\n const [searchValue, setSearchValue] = useState(\"\");\n const listViewRef = useRef<HTMLUListElement>(null);\n const popoverElement = useRef<Element | null>(null);\n\n const { className, ...restCellProps } = cellProps;\n\n useImperativeHandle(ref, () => ({\n invoke: beginEditing,\n focus: () => {\n cellRef.current?.focus();\n setTabIndex(0);\n },\n }));\n\n const beginEditing = useCallback(() => {\n setIsEditing(true);\n }, [setIsEditing]);\n\n const stopEditing = useCallback(() => {\n setIsEditing(false);\n }, [setIsEditing]);\n\n const onChange = getCellOnChange(cell, columnId);\n const commitValue = useCallback(() => {\n setSearchValue(\"\");\n const arraysEqual =\n draftValue.length === initialValue.length &&\n draftValue.every((val, idx) => val === initialValue[idx]);\n if (!arraysEqual) {\n onChange?.(draftValue as T[typeof columnId], rowId);\n }\n stopEditing();\n }, [rowId, onChange, initialValue, stopEditing, draftValue]);\n\n const cellClasses = cx(styles[\"data-table-body-cell-editable\"], className, {\n [dataTableCellStyles[\"data-table-body-cell-editing\"]]: isEditing,\n });\n\n const resetValue = useCallback(() => {\n setDraftValue(initialValue);\n setSearchValue(\"\");\n stopEditing();\n }, [initialValue, stopEditing]);\n\n const handleCellKeyDown = useCallback(\n (\n event: React.KeyboardEvent<HTMLElement>,\n handlePopoverKeydown:\n | ((event: React.KeyboardEvent<HTMLButtonElement>) => void)\n | undefined,\n ) => {\n if (isEditing) {\n if (event.key === \"Escape\" || event.key === \"F2\") {\n stopEditing();\n return;\n }\n handlePopoverKeydown?.(event as React.KeyboardEvent<HTMLButtonElement>);\n return;\n }\n onCellKeyDown?.(event as React.KeyboardEvent<HTMLDivElement>);\n },\n [onCellKeyDown, isEditing, stopEditing],\n );\n\n const handleCellMouseDown = useCallback(() => {\n if (isEditing) {\n return;\n }\n moveFocusToCell(cellPosition);\n beginEditing();\n }, [beginEditing, cellPosition, moveFocusToCell, isEditing]);\n\n const handleCellBlur = useCallback(\n (e: React.FocusEvent<HTMLElement>) => {\n if (popoverElement.current?.contains(e.relatedTarget as Node)) {\n // Skip for interactions within the popover\n return;\n }\n setTabIndex(-1);\n stopEditing();\n },\n [stopEditing],\n );\n\n const handleCellFocus = useCallback(\n (event: React.FocusEvent<HTMLTableCellElement>) => {\n if (event.target !== cellRef.current) {\n // Skip for interactions within the cell (e.g. clicking on the popover)\n return;\n }\n event.preventDefault();\n setTabIndex(0);\n },\n [setTabIndex],\n );\n\n const handleListViewKeyDown = useCallback(\n (e: KeyboardEvent<HTMLDivElement>) => {\n if ((e.key === \"Tab\" && !e.shiftKey) || e.key === \"F2\") {\n e.preventDefault();\n e.stopPropagation();\n cellRef.current?.focus();\n commitValue();\n }\n if (e.key === \"Escape\") {\n cellRef.current?.focus();\n e.preventDefault();\n e.stopPropagation();\n resetValue();\n }\n if (e.key === \"ArrowDown\" || e.key === \"ArrowUp\") {\n e.preventDefault(); // prevent scrolling the page\n }\n },\n [commitValue, resetValue],\n );\n\n const handleSearchFieldKeyDown = useCallback(\n (e: KeyboardEvent<HTMLInputElement>) => {\n if (e.key === \"F2\") {\n cellRef.current?.focus();\n commitValue();\n }\n if (e.key === \"Escape\") {\n e.preventDefault();\n e.stopPropagation();\n cellRef.current?.focus();\n resetValue();\n }\n if (e.key === \"ArrowDown\") {\n e.preventDefault();\n e.stopPropagation();\n listViewRef.current?.focus();\n }\n },\n [commitValue, resetValue],\n );\n\n const handleListViewSelectionChange = useCallback(\n (items: unknown[]) => {\n if (isEditing) {\n const selectedItems = items as { value: unknown }[];\n setDraftValue(selectedItems.map((item) => String(item.value)));\n }\n },\n [isEditing],\n );\n\n const filteredItems = useMemo(() => {\n if (searchValue === \"\") return options;\n return options.filter((item) =>\n item.label.toLowerCase().includes(searchValue.toLowerCase()),\n );\n }, [options, searchValue]);\n\n // Convert draftValue (string[]) to ItemType[] for ListView\n const selectedItems = useMemo(() => {\n return options.filter(\n (item) =>\n typeof item.value === \"string\" && draftValue.includes(item.value),\n );\n }, [options, draftValue]);\n\n const handleOnClickOutside = useCallback(() => {\n cellRef.current?.focus();\n if (isEditing) {\n commitValue();\n }\n }, [commitValue, isEditing]);\n\n const handleOpenAnimationComplete = useCallback(() => {\n if (isEditing) {\n searchFieldRef.current?.focus();\n }\n }, [isEditing]);\n\n const handleSearchFieldChange = useCallback(\n (e: ChangeEvent<HTMLInputElement>) => {\n setSearchValue(e.target.value);\n },\n [],\n );\n\n // Provide focus context to children (e.g., CellError) for keyboard accessibility.\n // Show tooltip when cell has focus but is not in editing mode.\n const cellFocusContextValue = useMemo(\n () => ({ isCellFocused: tabIndex === 0 && !isEditing }),\n [tabIndex, isEditing],\n );\n\n if (!isValidValueType) {\n // Exclude cellProps to avoid passing it to the DOM\n const { cellProps: _cellProps, ...immutableCellProps } = props;\n return <DataTableBodyImmutableCell {...immutableCellProps} />;\n }\n\n return (\n <Popover\n open={isEditing}\n onOpenAnimationComplete={handleOpenAnimationComplete}\n onClickOutside={handleOnClickOutside}\n placement=\"bottom-start\"\n disableCaret\n >\n <Popover.Trigger>\n {({\n ref: popoverRef,\n onKeyDown: triggerOnKeyDown,\n [\"aria-expanded\"]: triggerAriaExpanded,\n [\"aria-haspopup\"]: triggerAriaHaspopup,\n [\"aria-details\"]: triggerAriaDetails,\n }) => {\n popoverElement.current =\n (triggerAriaDetails\n ? document.querySelector(`#${triggerAriaDetails}`)\n : null) || null;\n return (\n <TableBodyCell\n ref={mergeRefs([\n popoverRef as Ref<HTMLElement>,\n cellRef as Ref<HTMLElement>,\n ])}\n tabIndex={tabIndex}\n type=\"data-table\"\n {...restCellProps}\n className={cellClasses}\n onMouseDown={handleCellMouseDown}\n onBlur={handleCellBlur}\n onFocus={handleCellFocus}\n data-cell-pos={formatCellPositionString(cellPosition)}\n aria-expanded={triggerAriaExpanded}\n aria-haspopup={triggerAriaHaspopup}\n onKeyDown={(e) => handleCellKeyDown(e, triggerOnKeyDown)}\n >\n <CellFocusContext.Provider value={cellFocusContextValue}>\n {children}\n {!isEditing && <DataTableEditableCellEditIcon />}\n </CellFocusContext.Provider>\n <SrOnly>\n {isEditing\n ? \"Press Enter or Space to select cell values. Press F2 to save. Press Escape to cancel.\"\n : \"Press Enter or F2 to edit cell value.\"}\n </SrOnly>\n </TableBodyCell>\n );\n }}\n </Popover.Trigger>\n <Popover.Content>\n <Flex gap=\"4\" direction=\"column\">\n <SearchField\n ref={searchFieldRef}\n onChange={handleSearchFieldChange}\n onKeyDown={handleSearchFieldKeyDown}\n value={searchValue}\n />\n <ListView\n selected={selectedItems}\n onKeyDown={handleListViewKeyDown}\n items={filteredItems}\n onSelectionChange={handleListViewSelectionChange}\n ref={listViewRef}\n >\n {({ items }) =>\n items.map((item) => (\n <ListView.Option item={item} key={item.label}>\n {item.label}\n </ListView.Option>\n ))\n }\n </ListView>\n </Flex>\n </Popover.Content>\n </Popover>\n );\n}\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 { useCallback, useMemo, useRef } from \"react\";\nimport cx from \"classnames\";\n\nimport { 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 { DataTableEditableMultiselectCell } from \"../editable-cells/DataTableEditableMultiselectCell\";\n\nimport styles from \"./DataTableCells.module.scss\";\nimport { Cell } from \"@tanstack/react-table\";\nimport { useCommonPinningStyles } from \"../../../internal/getCommonPinningStyles\";\nimport { useDTFocusDispatchContext } from \"../context/focus/useDTFocusDispatchContext\";\nimport { EditableCellImperativeHandle } from \"../editable-cells/types\";\nimport { CellPosition } from \"../../../internal/types\";\nimport { TableRow } from \"../../../types\";\n\n/**\n * Props for the DataTableBodyMutableCell component\n */\nexport type DataTableBodyMutableCellProps<T> = Omit<\n BaseDataTableBodyCellProps,\n \"onChange\"\n> & {\n /**\n * The position of the cell in the table\n */\n cellPosition: CellPosition;\n /**\n * The TanStack table cell instance\n */\n cell: Cell<T, unknown>;\n /**\n * Whether the cell is currently hovered\n */\n isHovered: boolean;\n};\n\n/**\n * Renders a mutable (editable) body cell in a DataTable. This component handles keyboard navigation\n * and delegates to the appropriate editable cell component (text, select, or multiselect) based on\n * the column's editMode configuration.\n *\n * @param props - The props for the DataTableBodyMutableCell component\n * @param props.cell - The TanStack table cell instance\n * @param props.cellPosition - The position of the cell in the table\n * @param props.children - The content to render in the cell\n * @param props.isHovered - Whether the cell is currently hovered\n * @returns The rendered editable cell component or null if no editMode is configured\n */\nexport function DataTableBodyMutableCell<T>(\n props: DataTableBodyMutableCellProps<T>,\n) {\n const { cell, cellPosition, children, isHovered, ...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 cellError = (cell.row.original as TableRow<T>).meta?.errors?.[\n column.id as keyof T\n ];\n\n const classes = cx(styles[\"data-table-body-cell\"], rest.className, {\n [styles[\"data-table-body-cell-hovered\"]]: isHovered,\n [styles[\"data-table-body-cell-error\"]]: !!cellError,\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 === \"multiselect\") {\n return DataTableEditableMultiselectCell;\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 isHovered={isHovered}\n >\n {children}\n </EditableComponent>\n );\n}\n","import { DataTableBodyCellProps as BaseDataTableBodyCellProps } from \"../../../base/cells/TableBodyCell\";\nimport { Cell } from \"@tanstack/react-table\";\nimport { DataTableBodyMutableCell } from \"./DataTableBodyMutableCell\";\nimport { DataTableBodyImmutableCell } from \"./DataTableBodyImmutableCell\";\nimport { formatCellPositionString } from \"../util/cellPositionHelpers\";\nimport { ReactNode } from \"react\";\nimport { CellPosition } from \"../../../internal/types\";\n\nexport type DataTableBodyCellProps<T> = Omit<\n BaseDataTableBodyCellProps,\n \"onChange\"\n> & {\n cellPosition: CellPosition;\n cell: Cell<T, unknown>;\n children: ReactNode;\n isHovered: boolean;\n};\n\n/**\n * Renders a body cell in a DataTable, delegating to either a mutable (editable) or immutable cell\n * based on the column's editMode configuration.\n *\n * @param props - The props for the DataTableBodyCell component\n * @param props.cell - The TanStack table cell instance\n * @param props.cellPosition - The position of the cell in the table\n * @param props.children - The content to render in the cell\n * @param props.isHovered - Whether the cell is currently hovered\n * @returns The rendered cell component\n */\nexport function DataTableBodyCell<T>(props: DataTableBodyCellProps<T>) {\n const { cell, cellPosition, children, isHovered, ...rest } = props;\n\n const column = cell.column;\n const editMode = column.columnDef.meta?.editMode;\n\n const Component = editMode\n ? DataTableBodyMutableCell<T>\n : DataTableBodyImmutableCell<T>;\n return (\n <Component\n cell={cell}\n cellPosition={cellPosition}\n {...rest}\n data-cell-pos={formatCellPositionString(cellPosition)}\n isHovered={isHovered}\n >\n {children}\n </Component>\n );\n}\n","import { createContext } from \"react\";\n\nexport type DTHoverState = {\n hoveredColumnId: string | null;\n resizingColumnId: string | null;\n};\n\nexport type DTHoverStartAction = {\n type: \"HOVER_START\";\n payload: {\n columnId: string;\n };\n};\n\nexport type DTHoverEndAction = {\n type: \"HOVER_END\";\n payload: {\n columnId: string;\n };\n};\n\nexport type DTResizeStartAction = {\n type: \"RESIZE_START\";\n payload: {\n columnId: string;\n };\n};\n\nexport type DTResizeEndAction = {\n type: \"RESIZE_END\";\n payload: {\n columnId: string;\n };\n};\n\nexport type DTHoverAction =\n | DTHoverStartAction\n | DTHoverEndAction\n | DTResizeStartAction\n | DTResizeEndAction;\n\nexport const DTHoverStateContext = createContext<DTHoverState>({\n hoveredColumnId: null,\n resizingColumnId: null,\n});\nexport const DTHoverDispatchContext = createContext<\n React.Dispatch<DTHoverAction>\n>(() => {});\n","import { useContext } from \"react\";\nimport { DTHoverStateContext } from \"./DTHoverContext\";\n\nexport function useDTHoverStateContext() {\n const state = useContext(DTHoverStateContext);\n return {\n getIsHovered: (columnId: string) => {\n // If a resize is in progress, the column is not considered hovered\n return state.hoveredColumnId === columnId && !state.resizingColumnId;\n },\n hoveredColumnId: state.hoveredColumnId,\n };\n}\n","import { Fragment, ReactNode } from \"react\";\nimport cx from \"classnames\";\nimport { flexRender, Row } from \"@tanstack/react-table\";\n\nimport { Flex } from \"../../../../../components\";\n\nimport { getCommonPinningClasses } from \"../../internal/getCommonPinningClasses\";\nimport { TableRow } from \"../../types\";\n\nimport { DataTableBodyCell } from \"./cells/DataTableBodyCell\";\n\nimport styles from \"./DataTableBody.module.scss\";\nimport { useDTHoverStateContext } from \"./context/hover/useDTHoverStateContext\";\nimport { useColumnOrder } from \"./useColumnOrder\";\nimport { useDTFocusDispatchContext } from \"./context/focus/useDTFocusDispatchContext\";\n\nexport type DataTableBodyRowProps<T> = {\n columnOrder: ReturnType<typeof useColumnOrder>[\"columnOrder\"];\n row: Row<T>;\n rowIndex: number;\n tableHasSubRows: boolean;\n};\n\nexport function DataTableBodyRow<T>({\n columnOrder,\n row,\n rowIndex,\n tableHasSubRows,\n}: DataTableBodyRowProps<T>) {\n const visibleCells = row.getVisibleCells();\n\n const canExpand = row.getCanExpand();\n const isExpanded = row.getIsExpanded();\n const depth = row.depth;\n const id = row.id;\n const original = row.original;\n const parentRowCanExpand = row.getParentRow()?.getCanExpand() ?? false;\n\n const { hoveredColumnId } = useDTHoverStateContext();\n const { focusSubComponent, blurSubComponent } = useDTFocusDispatchContext();\n\n return (\n <Fragment key={row.id}>\n <div\n role=\"row\"\n aria-rowindex={rowIndex + 1} // aria-rowindex is 1-based, uses sorted position\n aria-expanded={tableHasSubRows && canExpand ? isExpanded : undefined}\n aria-level={\n tableHasSubRows && (canExpand || parentRowCanExpand)\n ? depth + 1\n : undefined\n }\n className={styles[\"data-table-body-row\"]}\n >\n {visibleCells.map((cell) => {\n const isLastInParentGroup = cell.column.parent\n ? cell.column.parent.getLeafColumns().slice(-1)[0] === cell.column\n : false;\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 });\n const columnIndex = columnOrder.indexOf(cell.column.getIndex());\n return (\n <DataTableBodyCell<T>\n key={cell.id}\n cell={cell}\n cellPosition={{ rowIndex, columnIndex }}\n aria-colindex={columnIndex + 1} // aria-colindex is 1-based\n className={cellClasses}\n isHovered={hoveredColumnId === cell.column.id}\n >\n {flexRender(cell.column.columnDef.cell, cell.getContext())}\n </DataTableBodyCell>\n );\n })}\n </div>\n {isExpanded && \"subComponent\" in (original as TableRow<T>) && (\n <div\n id={`${id}-sub-component`}\n aria-hidden={!isExpanded}\n className={styles[\"data-table-body-sub-component-row\"]}\n onFocus={() => {\n focusSubComponent();\n }}\n onBlur={() => {\n blurSubComponent();\n }}\n >\n <div className={styles[\"data-table-body-sub-component-container\"]}>\n <Flex className={styles[\"data-table-body-sub-component-content\"]}>\n {(original as TableRow<T>).subComponent as ReactNode}\n </Flex>\n </div>\n </div>\n )}\n </Fragment>\n );\n}\n","import { useCallback, useMemo } from \"react\";\nimport type { Column, Table as TanstackTable } from \"@tanstack/react-table\";\n\n/**\n * Hook to analyze the columns in the table to determine the visual position and pinning status\n * @param table - The table to analyze\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 return {\n columnOrder,\n };\n};\n","import { ComponentPropsWithoutRef } from \"react\";\nimport { Table as TanstackTable } from \"@tanstack/react-table\";\nimport { TableBody } from \"../../base/TableBody\";\nimport { DataTableBodyRow } from \"./DataTableBodyRow\";\nimport { useColumnOrder } from \"./useColumnOrder\";\n\n/**\n * Props for the DataTableBody component\n * @extends {ComponentPropsWithoutRef<\"div\">}\n */\nexport type DataTableBodyProps<T> = {\n /**\n * The table instance from @tanstack/react-table to render\n */\n table: TanstackTable<T>;\n /**\n * Whether the table has sub rows\n */\n hasSubRows: boolean;\n} & ComponentPropsWithoutRef<\"div\">;\n\nexport const DataTableBodyContent = <T,>({\n table,\n hasSubRows,\n}: {\n table: TanstackTable<T>;\n hasSubRows: boolean;\n}) => {\n const { columnOrder } = useColumnOrder({ table });\n return table\n .getRowModel()\n .rows.map((row, rowIndex) => (\n <DataTableBodyRow<T>\n columnOrder={columnOrder}\n key={row.id}\n row={row}\n rowIndex={rowIndex + table.getHeaderGroups().length}\n tableHasSubRows={hasSubRows}\n />\n ));\n};\n\nexport function DataTableBody<T>(props: DataTableBodyProps<T>) {\n const { table, hasSubRows, ...rest } = props;\n return (\n <TableBody type=\"data-table\" {...rest}>\n <DataTableBodyContent table={table} hasSubRows={hasSubRows} />\n </TableBody>\n );\n}\n","import { ComponentPropsWithoutRef } from \"react\";\nimport cx from \"classnames\";\n\nimport styles from \"./TableFooter.module.scss\";\n\n/**\n * Props for the TableFooter component\n * @extends ComponentPropsWithoutRef<\"tfoot\">\n * @extends ComponentPropsWithoutRef<\"div\">\n */\nexport type TableFooterProps =\n | ({\n /**\n * The type of table being rendered\n */\n type: \"simple\";\n } & ComponentPropsWithoutRef<\"tfoot\">)\n | ({\n /**\n * The type of table being rendered\n */\n type: \"data-table\";\n } & ComponentPropsWithoutRef<\"div\">);\n\n/**\n * Table footer component for simple presentational or complex data tables\n * @param props - The props for the TableFooter component\n * @param props.type - The type of table being rendered\n * @param props.children - The children of the TableFooter component\n * @param props.ref - The ref of the TableFooter component\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 { 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 colSpan?: number;\n};\n\n/**\n * The props for the TableFooterCell component\n */\nexport type TableFooterCellProps =\n | ({\n /**\n * The type of table being rendered\n */\n type: \"simple\";\n } & SimpleTableFooterCellProps)\n | ({\n /**\n * The type of table being rendered\n */\n type: \"data-table\";\n } & DataTableFooterCellProps);\n\n/**\n * The styled table footer cell component\n * @param props - The props for the TableFooterCell component\n * @param props.type - The type of table being rendered\n * @param props.children - The children to render in the cell\n * @param props.className - The class name of the TableFooterCell component\n * @param props.rest - The rest of the props\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, useState } from \"react\";\nimport cx from \"classnames\";\n\nimport { TableFooterCell } from \"../../../base/cells/TableFooterCell\";\nimport { 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\n/**\n * Props for the DataTableFooterCell component\n * @extends BaseDataTableFooterCellProps\n */\nexport type DataTableFooterCellProps = BaseDataTableFooterCellProps & {\n cellPosition: { rowIndex: number; columnIndex: number };\n};\n\n/**\n * Data table footer cell with focus management\n * @param props - The props for the DataTableFooterCell component\n * @param props.cellPosition - The cell position of the cell\n * @param props.children - The children of the DataTableFooterCell component\n * @param props.className - The class name of the DataTableFooterCell component\n * @param props.tabIndex - The tab index of the cell\n */\nexport function DataTableFooterCell(props: DataTableFooterCellProps) {\n const { cellPosition, children, className, ...rest } = props;\n const [tabIndex, setTabIndex] = useState(-1);\n\n const footerCellRef = useRef<HTMLDivElement>(null);\n\n const { moveFocusToCell } = useDTFocusDispatchContext();\n\n const handleFocus = useCallback(() => {\n moveFocusToCell(cellPosition);\n setTabIndex(0);\n }, [moveFocusToCell, cellPosition, setTabIndex]);\n\n const handleBlur = useCallback(() => {\n setTabIndex(-1);\n }, [setTabIndex]);\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={tabIndex}\n onFocus={handleFocus}\n onBlur={handleBlur}\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 { ComponentPropsWithoutRef } from \"react\";\nimport { Table as TanstackTable } from \"@tanstack/react-table\";\nimport cx from \"classnames\";\n\nimport { getCommonPinningStyles } from \"../../internal/getCommonPinningStyles\";\nimport { getCommonPinningClasses } from \"../../internal/getCommonPinningClasses\";\n\nimport { ColumnDef } from \"../../types\";\nimport { DataTableProps } from \"../DataTable\";\nimport { TableFooter } from \"../../base/TableFooter\";\nimport { DataTableFooterCell } from \"./cells/DataTableFooterCell\";\n\nimport styles from \"./DataTableFooter.module.scss\";\nimport { useColumnOrder } from \"./useColumnOrder\";\n\n/**\n * Props for the default/configured table footer rows\n * @extends TanstackTable<T>\n * @extends ColumnDef<T>[]\n */\nexport type DefaultTableFooterRowsProps<T> = {\n table: TanstackTable<T>;\n columns: ColumnDef<T>[];\n};\n\n/**\n * Props for the custom table footer rows\n * @extends DataTableProps<T>\n */\nexport type CustomTableFooterRowsProps<T> = {\n columnCount: number;\n customFooter: DataTableProps<T>[\"customFooter\"];\n table: TanstackTable<T>;\n};\n\n/**\n * Props for the DataTableFooter component\n * @extends ComponentPropsWithoutRef<\"div\">\n */\nexport type DataTableFooterProps<T> = {\n /**\n * The table instance from @tanstack/react-table to render\n */\n table: TanstackTable<T>;\n /**\n * The columns of the table\n */\n columns: ColumnDef<T>[];\n /**\n * The custom footer of the table\n */\n customFooter?: DataTableProps<T>[\"customFooter\"];\n} & ComponentPropsWithoutRef<\"div\">;\n\nfunction DefaultTableFooterRows<T>({\n table,\n columns,\n}: DefaultTableFooterRowsProps<T>) {\n // Recursively find a column by ID in the column tree\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 // Recursively get the maximum number of footer rows from a column and its nested columns\n const getMaxFooterRows = (column: ColumnDef<T>): number => {\n let currentMax = 0;\n\n // Check current column's footer content\n if (Array.isArray(column.footerContent)) {\n currentMax = column.footerContent.length;\n } else if (column.footerContent) {\n currentMax = 1;\n }\n\n // Recursively check nested columns\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 // Filter out columns that have nested columns (column groups)\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>({\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 length:\n // total columns\n columnCount -\n // minus columns merged using colSpan\n footerRow.reduce((acc, curr) => acc + curr.colSpan, 0) +\n // plus columns added in the custom footer row\n footerRow.length,\n }).map((_, index) => {\n const footer = footerRow[index] ?? { content: \"\", colSpan: 1 };\n // Use grid-column span for colspan cells\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 // Advance the column index by the colSpan for the next iteration\n columnIndex += footer.colSpan;\n return cell;\n });\n })()}\n </div>\n );\n });\n}\n\n/**\n * Data table footer, which can be either a configured or custom footer\n * @param props - The props for the DataTableFooter component\n * @param props.table - The table instance from @tanstack/react-table to render\n * @param props.customFooter - The custom footer of the table\n * @param props.columns - The columns of the table\n */\nexport function DataTableFooter<T>({\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 Error from \"@servicetitan/hammer-icon/mdi/round/error.svg\";\nimport { Icon } from \"../../../../../../components/Icon\";\nimport styles from \"./DataTableCells.module.scss\";\nimport { Tooltip } from \"../../../../../../components\";\nimport { useCellFocusContext } from \"./CellFocusContext\";\nimport { useState } from \"react\";\n\nexport type CellErrorProps = {\n /** Error value - true for error without message, string for error with accessible message */\n error: boolean | string;\n};\n\n/**\n * Renders an error icon for cells in error state.\n * When error is a string, it's used as the aria-label for accessibility.\n * When the parent cell is focused, the tooltip is displayed for keyboard accessibility.\n */\nexport function CellError({ error }: CellErrorProps) {\n const errorMessage = typeof error === \"string\" ? error : undefined;\n const cellFocusContext = useCellFocusContext();\n const [isHovered, setIsHovered] = useState(false);\n\n const icon = (\n <Icon\n svg={Error}\n className={styles[\"cell-error-icon\"]}\n aria-label={\n errorMessage\n ? `Cell has an error: ${errorMessage}`\n : \"Cell has an error.\"\n }\n />\n );\n\n if (!errorMessage) {\n return icon;\n }\n\n // When the cell is focused via keyboard, force the tooltip open, otherwise, open on hover.\n const isTooltipOpen = cellFocusContext?.isCellFocused || isHovered;\n\n return (\n <Tooltip open={isTooltipOpen}>\n {/* We have to track hover manually because the tooltip doesn't like being conditionally controlled */}\n <Tooltip.Trigger\n onMouseEnter={() => setIsHovered(true)}\n onMouseLeave={() => setIsHovered(false)}\n >\n {icon}\n </Tooltip.Trigger>\n <Tooltip.Content>{errorMessage}</Tooltip.Content>\n </Tooltip>\n );\n}\n","import {\n createColumnHelper,\n ColumnDef as TanstackColumnDef,\n} from \"@tanstack/react-table\";\n\nimport Flex from \"../../../../../../components/Flex\";\n\nimport {\n ColumnDef,\n ColumnType,\n ColumnTypeConfig,\n TableRow,\n} from \"../../../types\";\nimport { TableEmptyCellContent } from \"../../../base/cells/TableEmptyCellContent\";\nimport { CellError } from \"../cells/CellError\";\nimport {\n getColumnTypeDefaults,\n resolveColumnTypeConfig,\n} from \"../../../columnTypeDefaults\";\n\n// Extend TanStack Table's ColumnMeta type to include our custom properties\ndeclare module \"@tanstack/react-table\" {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n interface ColumnMeta<TData, TValue> {\n editMode?: ColumnDef<TData>[\"editMode\"];\n editConfig?: ColumnDef<TData>[\"editConfig\"];\n onChange?: ColumnDef<TData>[\"onChange\"];\n options?: ColumnDef<TData>[\"options\"];\n /**\n * The original column definition, stored for type narrowing and runtime access\n */\n columnDef?: ColumnDef<TData>;\n }\n}\n\n/**\n * Props for the getTanStackColumnDef function\n */\nexport type TanStackColumnDefProps<T> = {\n /**\n * The column definition to convert to a TanStack column definition\n */\n columnDef: ColumnDef<T>;\n};\n\n/**\n * Build the column definition for TanStack useReactTable.\n * This converts our ColumnDef<T> to TanStack's column definition format,\n * preserving the original column definition in meta for type narrowing.\n *\n * @param props - The props for the getTanStackColumnDef function\n * @param props.columnDef - The column definition to convert\n * @returns The column definition for TanStack useReactTable\n */\nexport function getTanStackColumnDef<T>({\n columnDef,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n}: TanStackColumnDefProps<T>): TanstackColumnDef<T, any> {\n const columnHelper = createColumnHelper<T>();\n\n // If this column has sub-columns, create a group column\n if (columnDef.columns && columnDef.columns.length > 0) {\n return columnHelper.group({\n id: columnDef.id as string,\n header: columnDef.headerLabel,\n columns: columnDef.columns.map((column) =>\n getTanStackColumnDef<T>({\n columnDef: column as ColumnDef<T>,\n }),\n ),\n footer: columnDef.footerContent\n ? () => columnDef.footerContent\n : undefined,\n enableResizing: columnDef.resizable,\n });\n }\n\n // Resolve type defaults if type is specified\n let resolvedAlign = columnDef.align;\n let resolvedRenderCell = columnDef.renderCell;\n\n if (columnDef.type) {\n const [columnType, typeOptions] = resolveColumnTypeConfig(\n columnDef.type as ColumnTypeConfig<ColumnType>,\n );\n const typeDefaults = getColumnTypeDefaults(columnType);\n\n // Apply type defaults if not explicitly overridden\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 // Otherwise, create an accessor column\n // The accessor preserves the type T[columnDef.id] as the value type,\n // though TanStack Table's Cell type doesn't expose this at the table level\n return columnHelper.accessor((row: T) => row[columnDef.id], {\n id: columnDef.id as string,\n cell: (info) => {\n let cellContent;\n if (resolvedRenderCell) {\n cellContent = resolvedRenderCell(info.getValue(), {\n row: info.row.original,\n depth: info.row.depth,\n });\n } else {\n cellContent = info.getValue();\n }\n if (cellContent === \"\") {\n cellContent = <TableEmptyCellContent />;\n }\n\n const cellError = (info.row.original as TableRow<T>).meta?.errors?.[\n columnDef.id as keyof T\n ];\n\n return (\n <Flex\n justifyContent={resolvedAlign}\n alignItems=\"center\"\n wrap=\"wrap\"\n gap=\"1\"\n style={{\n width: \"100%\",\n }}\n >\n {cellError && <CellError error={cellError} />}\n {cellContent ?? <TableEmptyCellContent />}\n </Flex>\n );\n },\n header: () => (\n <Flex justifyContent={resolvedAlign} wrap=\"wrap\" grow={1}>\n {columnDef.headerLabel}\n </Flex>\n ),\n footer: columnDef.footerContent ? () => columnDef.footerContent : undefined,\n minSize: columnDef.minWidth,\n maxSize: columnDef.maxWidth,\n enableResizing: columnDef.resizable,\n enableSorting: !!columnDef.sortable,\n meta: {\n editMode: columnDef.editMode,\n editConfig: columnDef.editConfig,\n onChange: columnDef.onChange,\n options: columnDef.options,\n columnDef: columnDef, // Store original for type narrowing\n },\n\n // If custom sorting function is provided, use it\n ...(columnDef.sortable && typeof columnDef.sortable === \"function\"\n ? {\n sortingFn: (rowA, rowB, colId) => {\n if (typeof columnDef.sortable === \"function\") {\n return columnDef.sortable(\n rowA.getValue(colId),\n rowB.getValue(colId),\n );\n }\n return 0;\n },\n }\n : undefined),\n });\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 { ComponentPropsWithoutRef } from \"react\";\nimport cx from \"classnames\";\n\nimport styles from \"./TableHeader.module.scss\";\n\n/**\n * Props for the TableHeader component\n * @extends ComponentPropsWithoutRef<\"thead\">\n * @extends ComponentPropsWithoutRef<\"div\">\n */\nexport type TableHeaderProps =\n | ({\n /**\n * The type of table being rendered\n */\n type: \"simple\";\n } & ComponentPropsWithoutRef<\"thead\">)\n | ({\n /**\n * The type of table being rendered\n */\n type: \"data-table\";\n } & ComponentPropsWithoutRef<\"div\">);\n\n/**\n * Table header component for simple presentational or complex data tables\n * @param props - The props for the TableHeader component\n * @param props.type - The type of table being rendered\n * @param props.children - The children of the TableHeader component\n * @param props.ref - The ref of the TableHeader component\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 { ComponentPropsWithoutRef, forwardRef } from \"react\";\nimport cx from \"classnames\";\n\nimport { CommonTableCellProps } from \"./types\";\n\nimport styles from \"./TableCells.module.scss\";\n\n/**\n * The common props for the TableHeaderCell component\n */\nexport type CommonTableHeaderCellProps = CommonTableCellProps & {\n /**\n * Whether the cell is a group cell (for grouped columns)\n */\n isGroup?: boolean;\n /**\n * Whether the header cell can be used to activate column sorting\n */\n isSortable?: boolean;\n};\n\nexport type SimpleTableHeaderCellProps = CommonTableHeaderCellProps &\n ComponentPropsWithoutRef<\"th\">;\n\nexport type DataTableHeaderCellProps = CommonTableHeaderCellProps &\n ComponentPropsWithoutRef<\"div\">;\n\n/**\n * The props for the TableHeaderCell component\n */\nexport type TableHeaderCellProps =\n | ({\n /**\n * The type of table being rendered\n */\n type: \"simple\";\n } & SimpleTableHeaderCellProps)\n | ({\n /**\n * The type of table being rendered\n */\n type: \"data-table\";\n } & DataTableHeaderCellProps);\n\n/**\n * The styled table header cell component\n * @param props - The props for the TableHeaderCell component\n * @param props.type - The type of table being rendered\n * @param props.children - The children to render in the cell\n * @param props.className - The class name of the TableHeaderCell component\n * @param props.rest - The rest of the props\n */\nexport const TableHeaderCell = forwardRef<\n HTMLTableCellElement | HTMLDivElement,\n TableHeaderCellProps\n>(\n (\n {\n type,\n children,\n className,\n isGroup,\n isSortable,\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-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, Ref, useCallback, useRef, useState } from \"react\";\nimport cx from \"classnames\";\n\nimport { TableHeaderCell } from \"../../../base/cells/TableHeaderCell\";\nimport { HeaderContext } from \"@tanstack/react-table\";\nimport { 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\";\n\n/**\n * Props for the DataTableHeaderCell component\n * @extends BaseDataTableHeaderCellProps\n */\nexport type DataTableHeaderCellProps<T> = BaseDataTableHeaderCellProps & {\n cellPosition: { rowIndex: number; columnIndex: number };\n header: HeaderContext<T, unknown>;\n};\n\n/**\n * Data table header cell with focus management\n * @param props - The props for the DataTableHeaderCell component\n * @param props.cellPosition - The cell position of the cell\n * @param props.children - The children of the DataTableHeaderCell component\n * @param props.header - The header of the DataTableHeaderCell component\n * @param props.isFocused - Whether the cell is focused\n */\nfunction DataTableHeaderCellInner<T>(\n props: DataTableHeaderCellProps<T>,\n forwardedRef: Ref<HTMLDivElement>,\n) {\n const { cellPosition, children, header, className, ...rest } = props;\n\n const internalRef = useRef<HTMLDivElement>(null);\n\n // Merge internal and forwarded refs\n const setRefs = useCallback(\n (element: HTMLDivElement | null) => {\n // Set internal ref\n (internalRef as React.MutableRefObject<HTMLDivElement | null>).current =\n element;\n // Set forwarded ref\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 const { moveFocusToCell } = useDTFocusDispatchContext();\n const [tabIndex, setTabIndex] = useState(-1);\n const handleFocus = useCallback(() => {\n moveFocusToCell(cellPosition);\n setTabIndex(0);\n }, [moveFocusToCell, cellPosition, setTabIndex]);\n\n const handleBlur = useCallback(() => {\n setTabIndex(-1);\n }, [setTabIndex]);\n\n const { jumpFocus, moveFocus } = useDTFocusDispatchContext();\n\n // Derive cell action from column ID\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.columnDef.enableSorting;\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 case \" \":\n case \"Enter\": {\n if (isSelectCell) {\n event.preventDefault();\n header.table.toggleAllRowsSelected();\n return;\n }\n if (isExpandCell) {\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 handleClick = useCallback(\n (event: React.MouseEvent) => {\n if (header.column.columnDef.enableSorting) {\n // Check if the click target is within a resize handle\n const target = event.target as HTMLElement;\n const resizeHandle = target.closest(\n '[aria-roledescription=\"Resize handle\"]',\n );\n\n // If clicking on resize handle, don't trigger sorting\n if (resizeHandle) {\n return;\n }\n\n // Otherwise, trigger sorting\n header.column.getToggleSortingHandler()?.(event);\n }\n },\n [header.column],\n );\n\n return (\n <TableHeaderCell\n type=\"data-table\"\n {...rest}\n ref={setRefs}\n tabIndex={tabIndex}\n onFocus={handleFocus}\n onClick={handleClick}\n onBlur={handleBlur}\n onKeyDown={handleKeyDown}\n className={cx(styles[\"data-table-header-cell\"], className)}\n data-cell-pos={formatCellPositionString(cellPosition)}\n aria-sort={\n header.column.getIsSorted() === \"asc\"\n ? \"ascending\"\n : header.column.getIsSorted() === \"desc\"\n ? \"descending\"\n : undefined\n }\n >\n {children}\n {header.column.columnDef.enableSorting && (\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/**\n * Data table header cell with focus management and ref forwarding\n */\nexport const DataTableHeaderCell = forwardRef(DataTableHeaderCellInner) as <T>(\n props: DataTableHeaderCellProps<T> & { ref?: Ref<HTMLDivElement> },\n) => ReturnType<typeof DataTableHeaderCellInner>;\n","import cx from \"classnames\";\nimport { Header } from \"@tanstack/react-table\";\n\nimport styles from \"./ResizeHandle.module.scss\";\n\n/**\n * Props for the ResizeHandle component\n * @property {Header<T, unknown>} header - The header instance from TanStack Table\n * @property {() => void} [onResizeStart] - Callback fired before resize begins, useful for initializing state\n */\nexport type ResizeHandleProps<T> = {\n header: Header<T, unknown>;\n onResizeStart?: () => void;\n onResizeEnd?: () => void;\n};\n\n/**\n * Resize handle component resizing table columns\n * @param props - The props for the ResizeHandle component\n * @param props.header - The header of the ResizeHandle component\n * @param props.onResizeStart - Optional callback fired before resize begins\n */\nexport function ResizeHandle<T>({\n header,\n onResizeStart,\n onResizeEnd,\n}: ResizeHandleProps<T>) {\n const classes = cx(styles[\"resize-handle\"], {\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 />\n );\n}\n","import { useContext } from \"react\";\nimport { DTHoverDispatchContext } from \"./DTHoverContext\";\n\nexport function useDTHoverDispatchContext() {\n return useContext(DTHoverDispatchContext);\n}\n","import { ComponentPropsWithoutRef, useCallback, useRef } from \"react\";\nimport { flushSync } from \"react-dom\";\nimport { flexRender, 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 { useDTHoverDispatchContext } from \"./context/hover/useDTHoverDispatchContext\";\nimport { useColumnOrder } from \"./useColumnOrder\";\nimport {\n INTERNAL_ROW_ACTION_PRIMARY_COLUMN_ID,\n INTERNAL_ROW_ACTION_SECONDARY_COLUMN_ID,\n} from \"./constants\";\n\n/**\n * Props for the DataTableHeader component\n * @extends TanstackTable<T>\n * @extends ComponentPropsWithoutRef<\"div\">\n */\ntype DataTableHeaderProps<T> = {\n table: TanstackTable<T>;\n} & ComponentPropsWithoutRef<\"div\">;\n\n/**\n * Data table header container\n * @param props - The props for the DataTableHeader component\n * @param props.table - The table instance from @tanstack/react-table to render\n */\nexport function DataTableHeader<T>({ table }: DataTableHeaderProps<T>) {\n const dispatch = useDTHoverDispatchContext();\n\n const handleHoverColumn = useCallback(\n (columnId: string) => {\n dispatch({\n type: \"HOVER_START\",\n payload: { columnId },\n });\n },\n [dispatch],\n );\n\n const handleHoverColumnLeave = useCallback(\n (columnId: string) => {\n dispatch({\n type: \"HOVER_END\",\n payload: { columnId },\n });\n },\n [dispatch],\n );\n\n // Store refs to header cells for measuring actual DOM width during resize\n const cellRefs = useRef<Map<string, HTMLDivElement>>(new Map());\n\n // Create a resize start handler that initializes columnSizing with the actual DOM width\n // Uses flushSync to ensure the DOM is updated with the new width before TanStack measures it\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 handleResizeEnd = useCallback(\n (columnId: string) => {\n dispatch({\n type: \"RESIZE_END\",\n payload: { columnId },\n });\n },\n [dispatch],\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 // Use grid-column span for grouped columns\n const gridColumn =\n header.colSpan > 1 ? `span ${header.colSpan}` : undefined;\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 style={{\n gridColumn,\n ...getCommonPinningStyles(header.column),\n }}\n aria-colspan={header.colSpan}\n isGroup={\n \"columns\" in header.column.columnDef ||\n (header.getContext().header.column.parent &&\n isLastInParentGroup)\n }\n isSortable={header.column.columnDef.enableSorting}\n isSelectCell={isInternalSelectColumn}\n isExpandCell={isInternalExpandColumn}\n onMouseEnter={\n isInternalExpandColumn || isInternalSelectColumn\n ? undefined\n : () => handleHoverColumn(header.column.id)\n }\n onMouseLeave={\n isInternalExpandColumn || isInternalSelectColumn\n ? undefined\n : () => handleHoverColumnLeave(header.column.id)\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=\"flex-end\"\n gap={2}\n style={{\n width: \"100%\",\n }}\n >\n <Flex direction=\"row\" alignItems=\"center\" gap={2} grow={1}>\n {flexRender(\n header.column.columnDef.header,\n header.getContext(),\n )}\n {{\n asc: <Icon svg={IconArrowUpward} size=\"small\" />,\n desc: <Icon svg={IconArrowDownward} size=\"small\" />,\n }[header.column.getIsSorted() as string] ?? null}\n </Flex>\n {header.column.columnDef.enableResizing && (\n <ResizeHandle\n header={header}\n onResizeStart={createResizeStartHandler(\n header.column.id,\n )}\n onResizeEnd={() => handleResizeEnd(header.column.id)}\n />\n )}\n </Flex>\n )}\n </DataTableHeaderCell>\n );\n })}\n </div>\n ))}\n </TableHeader>\n );\n}\n","import { ComponentPropsWithoutRef, forwardRef } from \"react\";\nimport cx from \"classnames\";\n\nimport { LayoutUtilProps } from \"../../../../types\";\nimport { useLayoutPropsUtil } from \"../../../../internal/hooks/useLayoutPropsUtil\";\n\nimport styles from \"./TableContainer.module.scss\";\n\n/**\n * Props for the TableContainer component\n * @extends LayoutUtilProps\n * @extends ComponentPropsWithoutRef<\"div\">\n */\nexport type TableContainerProps = LayoutUtilProps &\n ComponentPropsWithoutRef<\"div\">;\n\n/**\n * Styled container for tables that includes a scroll container and provides consistent background and border treatment\n * @param props - The props for the TableContainer component\n * @param props.children - The children of the TableContainer component\n * @param props.className - The class name of the TableContainer component\n * @param props.style - The style of the TableContainer component\n * @param props.ref - The ref of the TableContainer component\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 { Pagination, PaginationProps } from \"../../../../..\";\n\nimport styles from \"./DataTablePagination.module.scss\";\n\nexport type DataTablePaginationProps = Pick<\n PaginationProps,\n | \"page\"\n | \"itemsPerPage\"\n | \"totalItemCount\"\n | \"showCount\"\n | \"onPageChange\"\n | \"onItemsPerPageChange\"\n | \"itemsPerPageOptions\"\n>;\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","import { useState, useEffect } from \"react\";\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\n useEffect(() => {\n async function resolveData() {\n if (dataOrPromise instanceof Promise) {\n setIsLoading(true);\n try {\n const data = await dataOrPromise;\n setResolvedData(data);\n setIsLoading(false);\n } catch (_error) {\n setError(true);\n setIsLoading(false);\n setResolvedData(null);\n }\n } else {\n setResolvedData(dataOrPromise);\n setIsLoading(false);\n }\n }\n resolveData();\n }, [dataOrPromise]);\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 { useReducer } from \"react\";\nimport {\n DTHoverAction,\n DTHoverDispatchContext,\n DTHoverState,\n DTHoverStateContext,\n} from \"./DTHoverContext\";\n\nexport function DTHoverProvider({ children }: { children: React.ReactNode }) {\n const [state, dispatch] = useReducer(reducer, initialState);\n\n return (\n <DTHoverStateContext.Provider value={state}>\n <DTHoverDispatchContext.Provider value={dispatch}>\n {children}\n </DTHoverDispatchContext.Provider>\n </DTHoverStateContext.Provider>\n );\n}\n\nfunction reducer(state: DTHoverState, action: DTHoverAction): DTHoverState {\n switch (action.type) {\n case \"HOVER_START\": {\n return {\n ...state,\n hoveredColumnId: action.payload.columnId,\n };\n }\n case \"HOVER_END\": {\n // If the column currently in state is not the same as the column that is being left, don't update the state\n if (state.hoveredColumnId !== action.payload.columnId) {\n return state;\n }\n return {\n ...state,\n hoveredColumnId: null,\n };\n }\n case \"RESIZE_START\": {\n return {\n ...state,\n resizingColumnId: action.payload.columnId,\n };\n }\n case \"RESIZE_END\": {\n return {\n ...state,\n resizingColumnId: null,\n };\n }\n default: {\n throw new Error(\"Unknown action\");\n }\n }\n}\n\nconst initialState: DTHoverState = {\n hoveredColumnId: null,\n resizingColumnId: null,\n};\n","/**\n * Scrolls a table cell into view, accounting for sticky headers/footers and pinned columns.\n * Used for keyboard navigation to ensure focused cells are visible.\n *\n * @param element - The cell element to scroll into view\n * @param stickyDimensions - The dimensions of pinned columns\n * @param stickyDimensions.leftWidth - Width of left-pinned columns\n * @param stickyDimensions.rightWidth - Width of right-pinned columns\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 const elementRect = element.getBoundingClientRect();\n const scrollContainerRect = scrollContainer.getBoundingClientRect();\n\n // Use clientWidth/clientHeight instead of bounding rect dimensions.\n // getBoundingClientRect includes 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 // Calculate visible area (excluding sticky regions)\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 // Check if element is fully visible within the non-sticky area\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 // Calculate scroll offsets\n const getScrollByLeft = (): number => {\n // Element is under left pinned columns - scroll left to bring left edge to visibleLeft\n if (elementRect.x < visibleLeft) {\n return elementRect.x - visibleLeft;\n }\n // Element is under right pinned columns - scroll right to bring right edge to visibleRight\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 // Element is under header - scroll up to bring top of element to visibleTop\n if (elementRect.y < visibleTop) {\n return elementRect.y - visibleTop;\n }\n // Element is under footer - scroll down to bring bottom of element to visibleBottom\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 } from \"react\";\nimport {\n DTFocusAction,\n DTFocusDispatchContext,\n DTFocusState,\n DTFocusStateContext,\n} from \"./DTFocusContext\";\nimport { CellPosition } from \"../../../../internal/types\";\nimport {\n areCellPositionsEqual,\n formatCellPositionString,\n} from \"../../util/cellPositionHelpers\";\nimport { scrollCellIntoView } from \"../../../../internal/scrollCellIntoView\";\n\nconst initialState: DTFocusState = {\n focusedCell: null,\n focusRestorePoint: { rowIndex: 0, columnIndex: 0 },\n hasFocusBeenDisrupted: false,\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 hasFocusBeenDisrupted: false,\n };\n }\n case \"FOCUS_CELL\": {\n return {\n ...state,\n focusedCell: action.payload.cellPosition,\n focusRestorePoint: action.payload.cellPosition,\n hasFocusBeenDisrupted: false,\n };\n }\n case \"FOCUS_TABLE\": {\n return {\n ...state,\n // Focus the focus restore point (i.e. the last focused cell when the table was blurred or 0,0 if never focused)\n focusedCell: state.focusRestorePoint,\n };\n }\n // Move to the next cell in the given direction\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 // Jump to the first/last cell in the given direction\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 hasFocusBeenDisrupted: false,\n };\n }\n case \"FOCUS_SUB_COMPONENT\": {\n return {\n ...state,\n hasFocusBeenDisrupted: true,\n };\n }\n case \"BLUR_SUB_COMPONENT\": {\n // Meaningless action, but have it if we need it\n return {\n ...state,\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}\n\nexport function DTFocusProvider({\n children,\n rowCount,\n columnCount,\n tableRef,\n leftPinnedWidth,\n rightPinnedWidth,\n}: DTFocusProviderProps) {\n const stateRef = useRef<DTFocusState>(initialState);\n const dispatch = useCallback(\n (action: DTFocusAction) => {\n const newState = reducer(stateRef.current, action, rowCount, columnCount);\n let shouldSkipFocusUpdate = false;\n // If the focused cell is the same as the current focused cell, skip the update/focus\n if (\n areCellPositionsEqual(\n newState.focusedCell,\n stateRef.current.focusedCell,\n )\n ) {\n shouldSkipFocusUpdate = true;\n if (action.type === \"FOCUS_TABLE\" && newState.hasFocusBeenDisrupted) {\n shouldSkipFocusUpdate = false;\n }\n }\n stateRef.current = newState;\n\n // If there is no new cell to focus, skip focusing.\n if (!newState.focusedCell || shouldSkipFocusUpdate) {\n return;\n }\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 // Focus moved to a non-existent cell. This is possible if rows per page was reduced.\n dispatch({\n type: \"FOCUS_CELL_MANUALLY\",\n payload: { cellPosition: { rowIndex: 0, columnIndex: 0 } },\n });\n }\n },\n [rowCount, columnCount, tableRef, leftPinnedWidth, rightPinnedWidth],\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 {\n ComponentPropsWithoutRef,\n forwardRef,\n Ref,\n useCallback,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport {\n getCoreRowModel,\n getSortedRowModel,\n useReactTable,\n ColumnPinningState,\n RowSelectionState,\n TableOptions,\n ExpandedState,\n getExpandedRowModel,\n getGroupedRowModel,\n SortingState,\n HeaderContext,\n CellContext,\n} from \"@tanstack/react-table\";\nimport cx from \"classnames\";\n\nimport { LayoutUtilProps } from \"../../../../types\";\nimport { useLayoutPropsUtil } from \"../../../../internal/hooks/useLayoutPropsUtil\";\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\";\n\nimport { 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 { DataTableHeader } from \"./internal/DataTableHeader\";\nimport { TableContainer } from \"../base/TableContainer\";\nimport { DataTablePagination } from \"./internal/DataTablePagination\";\nimport { useOptionallyControlledState } from \"../../../../internal\";\nimport { DataTablePaginationConfig, DataTableRef } from \"./types\";\n\nexport type { DataTableRef };\n\nimport styles from \"./DataTable.module.scss\";\nimport { Spinner, SrOnly } from \"../../../../components\";\nimport { useAsyncData } from \"./internal/useAsyncData\";\nimport { DTHoverProvider } from \"./internal/context/hover/DTHoverProvider\";\nimport { DTFocusProvider } from \"./internal/context/focus/DTFocusProvider\";\nimport {\n INTERNAL_ROW_ACTION_PRIMARY_COLUMN_ID,\n INTERNAL_ROW_ACTION_SECONDARY_COLUMN_ID,\n} from \"./internal/constants\";\nimport { CellError } from \"./internal/cells/CellError\";\n\n/**\n * Represents a sorted column configuration for DataTable\n */\nexport type SortedColumn = {\n /**\n * The column identifier\n */\n id: string;\n /**\n * Whether the column is sorted in descending order\n */\n desc: boolean;\n};\n\n/**\n * Props for the DataTable component\n * @extends LayoutUtilProps\n * @extends ComponentPropsWithoutRef<\"div\">\n */\nexport type DataTableProps<T> = LayoutUtilProps &\n ComponentPropsWithoutRef<\"div\"> & {\n /**\n * The columns for the table, created with the `createColumnHelper` factory function.\n */\n columns: ColumnDef<T>[];\n /**\n * The custom footer content for the table. Will be overridden by the footer content of the columns.\n */\n customFooter?: CustomTableFooterCellProps[][];\n /**\n * The data for the table. Must be an array of objects with an `id` property.\n */\n data?: TableRow<T>[] | Promise<TableRow<T>[]>;\n /**\n * The default expanded row ids. Can be \"all\" to expand all rows, or an array of row ids to expand specific rows.\n */\n defaultExpandedRowIds?: \"all\" | TableRow<T>[\"id\"][];\n /**\n * The default selected row ids.\n */\n defaultSelectedRowIds?: TableRow<T>[\"id\"][];\n /**\n * The default sorted column.\n */\n defaultSortedColumn?: SortedColumn;\n /**\n * The expanded row ids.\n */\n expandedRowIds?: \"all\" | TableRow<T>[\"id\"][];\n /**\n * Whether the table is selectable. Can be a boolean or a function to customize the selection logic.\n * @default false\n */\n isSelectable?: boolean | ((row: T) => boolean);\n /**\n * Called when the row expansion state changes. Passes the expanded row ids.\n */\n onExpandRow?: (expandedRowIds: \"all\" | TableRow<T>[\"id\"][]) => void;\n /**\n * Called when the row selection state changes. Passes the selected row ids.\n */\n onSelectRow?: (selectedRowIds: TableRow<T>[\"id\"][]) => void;\n /**\n * Called when the column sorting state changes. Passes the sorted column.\n */\n onSort?: (sortedColumn: SortedColumn | undefined) => void;\n /**\n * Pagination configuration. When provided, enables pagination and filters data to show only the current page.\n * When `true`, the default pagination configuration is used.\n * When `false` or `undefined`, no pagination is applied and all data is shown.\n */\n pagination?: boolean | DataTablePaginationConfig<T>;\n /**\n * The selected row ids.\n */\n selectedRowIds?: TableRow<T>[\"id\"][];\n /**\n * The sorted column.\n */\n sortedColumn?: SortedColumn;\n };\n\nfunction DataTableInner<T>(props: DataTableProps<T>, ref: Ref<DataTableRef>) {\n const { layoutStyles, componentProps } = useLayoutPropsUtil(props);\n const {\n data: dataProp,\n columns: columnsProp,\n customFooter,\n defaultExpandedRowIds,\n defaultSelectedRowIds,\n defaultSortedColumn,\n expandedRowIds,\n isSelectable,\n onSelectRow,\n onSort,\n onExpandRow,\n pagination,\n selectedRowIds,\n sortedColumn,\n className,\n style,\n ...rest\n } = componentProps;\n const styleCombined = {\n ...style,\n ...layoutStyles,\n };\n\n const tableRef = useRef<HTMLDivElement>(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 [sorting, setSorting] = useOptionallyControlledState<SortingState>({\n controlledValue: sortedColumn ? [sortedColumn] : undefined,\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\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 useImperativeHandle(\n ref,\n () => ({\n refresh: () => {\n setRefreshCounter((c) => c + 1);\n setCurrentPageIndex(0);\n },\n }),\n [setCurrentPageIndex],\n );\n\n const isFirstRender = useRef(true);\n\n useEffect(() => {\n // Skip reset on initial render\n if (isFirstRender.current) {\n isFirstRender.current = false;\n return;\n }\n // Reset to page 0 when refreshKey changes\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 pageLoader = paginationObject?.loadPageData;\n const isAsyncPaginated = !!pageLoader && typeof pageLoader === \"function\";\n\n const dataSource = useMemo(() => {\n if (!isAsyncPaginated) {\n return dataProp;\n }\n\n return pageLoader({\n pageIndex: currentPageIndex ?? 0,\n pageSize: rowsPerPage,\n });\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 ]);\n\n const {\n data: resolvedData,\n //TODO: Table should represent error state\n error: _error,\n isLoading,\n } = useAsyncData(dataSource);\n const totalItemCount =\n paginationObject?.totalRowCount ?? resolvedData?.length ?? 0;\n\n const hasSubRows = !!resolvedData?.some(\n (row) => row?.subRows?.length ?? 0 > 0,\n );\n const hasSubComponent = !!resolvedData?.some(\n (row) => row?.subComponent != null,\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 const tableData = useMemo(() => {\n // If the data is still loading, show no data\n if (isLoading) return [];\n // If pagination is not enabled or is async, return the data as is.\n if (!isPaginated || isAsyncPaginated) return resolvedData;\n\n const maxPageIndex = Math.max(\n 0,\n Math.ceil(totalItemCount / rowsPerPage) - 1,\n );\n // Clamp page index to valid range\n const clampedPageIndex = Math.max(\n 0,\n Math.min(currentPageIndex ?? 0, maxPageIndex),\n );\n const startIndex = clampedPageIndex * rowsPerPage;\n const endIndex = startIndex + rowsPerPage;\n\n return resolvedData?.slice(startIndex, endIndex) ?? [];\n }, [\n isLoading,\n isPaginated,\n isAsyncPaginated,\n resolvedData,\n totalItemCount,\n rowsPerPage,\n currentPageIndex,\n ]);\n\n // Check if any row has a row-level error\n const hasRowErrors = useMemo(() => {\n return tableData?.some((row) => (row as TableRow<T>).meta?.rowError);\n }, [tableData]);\n\n // Calculate column pinning state (including select/expand/row-error columns if needed)\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 // If any are pinned left, we want to also pin select/expand/row-error columns\n const hasInternalColumns = isSelectable || isExpandable || hasRowErrors;\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 (hasRowErrors) {\n standardPinnedColumns.push(\"a2-table-internal-row-error\");\n }\n\n return {\n left:\n hasInternalColumns && left && left.length > 0\n ? [...standardPinnedColumns, ...left]\n : (left ?? []),\n right: right ?? [],\n };\n }, [columnsProp, hasRowErrors, isSelectable, isExpandable]);\n\n // Build columns for TanStack useReactTable\n const columns = useMemo(() => {\n const tableColumns: TableOptions<T>[\"columns\"] = columnsProp.map((column) =>\n getTanStackColumnDef({\n columnDef: column,\n }),\n );\n\n // Add row error column if any row has a row-level error\n // This goes after expand/select columns but before data columns\n if (hasRowErrors) {\n tableColumns.unshift({\n id: \"a2-table-internal-row-error\",\n size: 32,\n maxSize: 32,\n minSize: 32,\n header: () => null,\n cell: ({ row }: CellContext<T, unknown>) => {\n const rowError = (row.original as TableRow<T>).meta?.rowError;\n if (!rowError) return null;\n return <CellError error={rowError} />;\n },\n });\n }\n\n // Add expand column if subRows are present\n if (isExpandable) {\n tableColumns.unshift({\n id: INTERNAL_ROW_ACTION_PRIMARY_COLUMN_ID,\n size: 44,\n maxSize: 44,\n minSize: 44,\n header: ({ table }: HeaderContext<T, unknown>) => {\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 />\n </Flex>\n );\n },\n cell: ({ row }: CellContext<T, unknown>) => {\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 />\n );\n // show a checkbox for nested rows if isSelectable is true\n } else if (row.getParentRow()?.getCanExpand() && isSelectable) {\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 indeterminate={row.getIsSomeSelected()}\n onChange={row.getToggleSelectedHandler()}\n data-cell-action=\"select\"\n />\n );\n }\n },\n });\n }\n\n // Add select column if isSelectable is true\n if (isSelectable) {\n tableColumns.unshift({\n id: INTERNAL_ROW_ACTION_SECONDARY_COLUMN_ID,\n size: 44,\n maxSize: 44,\n minSize: 44,\n header: ({ table }: HeaderContext<T, unknown>) => (\n <Flex grow={1} justifyContent=\"center\">\n <Checkbox\n tabIndex={-1}\n aria-label={\n table.getIsAllRowsSelected()\n ? \"Deselect all rows\"\n : \"Select all rows\"\n }\n checked={table.getIsAllRowsSelected()}\n indeterminate={table.getIsSomeRowsSelected()}\n onChange={table.getToggleAllRowsSelectedHandler()}\n data-cell-action=\"select\"\n />\n </Flex>\n ),\n cell: ({ row }: CellContext<T, unknown>) => {\n if (row.getParentRow()?.getCanExpand() && isSelectable) {\n return null;\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 indeterminate={row.getIsSomeSelected()}\n onChange={row.getToggleSelectedHandler()}\n data-cell-action=\"select\"\n />\n );\n },\n });\n }\n\n return tableColumns;\n }, [columnsProp, hasRowErrors, hasSubComponent, isExpandable, isSelectable]);\n\n const table = useReactTable({\n data: tableData ?? [],\n columns,\n getCoreRowModel: getCoreRowModel(),\n getSortedRowModel: getSortedRowModel(),\n getExpandedRowModel: getExpandedRowModel(),\n getGroupedRowModel: getGroupedRowModel(),\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 },\n columnResizeMode: \"onChange\",\n enableRowSelection:\n typeof isSelectable === \"function\"\n ? (row) => isSelectable(row.original)\n : isSelectable,\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 const sortingChanged =\n JSON.stringify(newSorting) !== JSON.stringify(sorting);\n if (!sortingChanged) {\n return;\n }\n\n setSorting(newSorting);\n },\n });\n\n const headers = table.getFlatHeaders();\n const headerRowCount = table.getHeaderGroups().length;\n const bodyRowCount = table.getExpandedRowModel().rows.length;\n const columnSizing = table.getState().columnSizing;\n\n const getMaxFooterRows = useCallback((column: ColumnDef<T>): number => {\n let currentMax = 0;\n\n // Check current column's footer content\n if (Array.isArray(column.footerContent)) {\n currentMax = column.footerContent.length;\n } else if (column.footerContent) {\n currentMax = 1;\n }\n\n // Recursively check nested columns and find the maximum\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 /**\n * Create CSS variables for the column sizes and grid template\n */\n const cssVars = useMemo(() => {\n const vars: { [key: string]: number | string } = {};\n\n // Get leaf columns (non-grouped) in visual order\n const leafHeaders = headers.filter(\n (header) => header.subHeaders?.length === 0,\n );\n\n // Check if all columns have maxWidth defined\n const allHaveMaxWidth = leafHeaders.every(\n (header) => header.column.columnDef.maxSize != null,\n );\n\n // Build grid-template-columns from leaf column sizes using minmax()\n // Columns expand to fill available space up to their maxWidth\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 user has manually resized this column, lock it to that size\n if (hasBeenResized) {\n return `${currentSize}px`;\n }\n\n // Otherwise, allow expansion up to maxWidth (or 1fr if no max)\n const minSize = header.column.columnDef.minSize ?? currentSize;\n const maxSize = header.column.columnDef.maxSize;\n return `minmax(${minSize}px, ${maxSize ? `${maxSize}px` : \"1fr\"})`;\n })\n .join(\" \");\n vars[\"--a2-grid-template-columns\"] = gridColumns;\n\n // Set table width: 100% if any column can expand (no maxWidth), otherwise auto\n vars[\"--a2-table-width\"] = allHaveMaxWidth ? \"max-content\" : \"100%\";\n\n // Keep individual column size variables for other uses (resizing, etc.)\n for (let i = 0; i < headers.length; i++) {\n const header = headers[i]!;\n vars[`--a2-table-col-${header.column.getIndex()}-size`] =\n header.column.getSize();\n }\n return vars;\n }, [headers, columnSizing]);\n\n const columnCount = useMemo(() => {\n // don't count grouped column header cells\n return headers.filter((header) => header.subHeaders?.length === 0).length;\n }, [headers]);\n\n return (\n <DTFocusProvider\n rowCount={rowCount}\n columnCount={columnCount}\n tableRef={tableRef}\n leftPinnedWidth={table.getLeftTotalSize()}\n rightPinnedWidth={table.getRightTotalSize()}\n >\n <DTHoverProvider>\n <TableContainer\n {...rest}\n ref={tableRef}\n style={{\n ...styleCombined,\n width: cssVars[\"--a2-table-width\"],\n }}\n className={cx(className, {\n [styles[\"container-with-pagination\"]]: pagination,\n })}\n >\n <TableBase\n type=\"data-table\"\n style={cssVars}\n rowCount={rowCount}\n colCount={columnCount}\n hasSubRows={hasSubRows}\n >\n <DataTableHeader table={table} />\n <DataTableBody table={table} hasSubRows={hasSubRows} />\n {isLoading && (\n <>\n <SrOnly>Loading data. Please wait.</SrOnly>\n {/* Visual spacer to avoid collapsing the table body area */}\n <div\n style={{\n height: rowsPerPage ? `${rowsPerPage * 35}px` : \"200px\",\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 && (\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 <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 </DTHoverProvider>\n </DTFocusProvider>\n );\n}\n\n/**\n * Data table component for complex data grid layouts\n *\n * Features:\n * - Built-in focus management for accessibility\n * - Column resizing\n * - Column pinning\n * - Column grouping\n * - Controlled or uncontrolled column sorting\n * - Row selection\n * - Row expansion\n * - Row sub-component\n * - Row sub-rows\n * - Default and Strong backgrounds\n * - Pagination support with configurable items per page\n * - Imperative refresh via ref\n *\n * @param props - The props for the DataTable component\n * @param props.data - The data for the table. Must be an array of objects with an `id` property.\n * @param props.columns - The columns for the table, created with the `createColumnHelper` factory function.\n * @param props.customFooter - The custom footer content for the table. Will be overridden by the footer content of the columns.\n * @param props.defaultExpandedRowIds - The default expanded row ids.\n * @param props.defaultSelectedRowIds - The default selected row ids.\n * @param props.defaultSortedColumn - The default sorted column.\n * @param props.expandedRowIds - The expanded row ids.\n * @param props.isSelectable - Whether the table is selectable. Can be a boolean or a function to customize the selection logic.\n * @param props.onSelectRow - Called when the row selection state changes. Passes the selected row ids.\n * @param props.onSort - Called when the column sorting state changes. Passes the sorted column.\n * @param props.onExpandRow - Called when the row expansion state changes. Passes the expanded row ids.\n * @param props.pagination - Pagination configuration. When provided, enables pagination and filters data to show only the current page. When undefined, all data is shown and no pagination controls are rendered.\n * @param props.selectedRowIds - The selected row ids.\n * @param props.sortedColumn - The sorted column.\n * @param props.style - The style of the table container.\n * @param props.rest - The rest of the props for the DataTable component, spread to the div surrounding the table.\n *\n * @example\n * <DataTable\n * data={tableData}\n * columns={columns}\n * pagination={{\n * itemsPerPage: 25,\n * defaultPageIndex: 0,\n * onPageChange: (pageIndex) => console.log('Page changed to:', pageIndex),\n * showCount: true,\n * }}\n * />\n */\nexport const DataTable = forwardRef(DataTableInner) as <T>(\n props: DataTableProps<T> & { ref?: Ref<DataTableRef> },\n) => ReturnType<typeof DataTableInner>;\n"],"names":["styles","createColumnHelper","EditIcon","baseTableCellStyles","dataTableCellStyles","selectedItems","Fragment","Error","IconArrowUpward","IconArrowDownward","reducer","initialState","table","ExpandIcon"],"mappings":"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","x_google_ignoreList":[14,15]}
|
|
1
|
+
{"version":3,"file":"DataTable-NzX8SCYT.js","sources":["../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/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.2.0_react@18.2.0__react@18.2.0/node_modules/@tanstack/react-table/build/lib/index.mjs","../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/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/constants.ts","../src/beta/components/Table/DataTable/internal/cells/CellFocusContext.tsx","../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/DataTableEditableSelectCell.tsx","../src/beta/components/Table/DataTable/internal/editable-cells/DataTableEditableMultiselectCell.tsx","../src/beta/components/Table/DataTable/internal/cells/DataTableBodyMutableCell.tsx","../src/beta/components/Table/DataTable/internal/cells/DataTableBodyCell.tsx","../src/beta/components/Table/DataTable/internal/context/hover/DTHoverContext.tsx","../src/beta/components/Table/DataTable/internal/context/hover/useDTHoverStateContext.ts","../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/CellError.tsx","../src/beta/components/Table/DataTable/internal/util/getTanStackColumnDef.tsx","../../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/context/hover/useDTHoverDispatchContext.ts","../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/context/hover/DTHoverProvider.tsx","../src/beta/components/Table/internal/scrollCellIntoView.ts","../src/beta/components/Table/DataTable/internal/context/focus/DTFocusProvider.tsx","../src/beta/components/Table/DataTable/DataTable.tsx"],"sourcesContent":["/**\n * Options type for the boolean formatter function\n */\nexport type BooleanFormatterOptions = {\n /**\n * The text to display for true values\n * @default \"True\"\n */\n trueLabel?: string;\n /**\n * The text to display for false values\n * @default \"False\"\n */\n falseLabel?: string;\n};\n\n/**\n * Helper function for formatting table cells with boolean values\n * @param value - The boolean value to format\n * @param options - The options for the boolean formatter\n * @returns The formatted boolean label or null for undefined/null values\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 * The empty cell content for table cells\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 ComponentPropsWithoutRef,\n useState,\n useRef,\n useLayoutEffect,\n} from \"react\";\nimport { Chip, ChipProps } from \"../../../../components/Chip\";\nimport cx from \"classnames\";\nimport styles from \"./TruncateChips.module.scss\";\n\n/**\n * Props for the TruncateChips component\n */\nexport type TruncateChipsProps = ComponentPropsWithoutRef<\"div\"> & {\n /**\n * Array of chip items to display\n */\n items: ChipProps[];\n};\n\n/**\n * Optimized TruncateChips component using measurement-based calculation.\n *\n * Features:\n * - Uses visible measurement chips to determine actual layout\n * - Responsive to container width changes\n * - Supports custom gap between chips\n * - Clean, predictable behavior\n *\n * @example\n * <TruncateChips\n * items={[\n * { label: \"React\", onClose: () => {} },\n * { label: \"TypeScript\", onClose: () => {} },\n * { label: \"JavaScript\", onClose: () => {} }\n * ]}\n * />\n */\nexport const TruncateChips = ({\n items = [],\n className,\n ...rest\n}: TruncateChipsProps) => {\n const containerRef = useRef<HTMLDivElement>(null);\n const chipsContainerRef = useRef<HTMLDivElement>(null);\n const [hiddenCount, setHiddenCount] = useState(0);\n const hiddenChips = useRef<{ el: HTMLElement; rect: DOMRect }[]>([]);\n const plusChipRef = useRef<HTMLSpanElement>(null);\n const [plusChipWidth, setPlusChipWidth] = useState(0);\n\n useLayoutEffect(() => {\n if (!chipsContainerRef.current) return;\n let totalHiddenCount = 0;\n const observer = new IntersectionObserver(\n (entries) => {\n const isResizing = document.querySelector(\n '[aria-label=\"Resize column\"][aria-pressed=\"true\"]',\n );\n if (isResizing) return;\n\n // Update the state of each element that was observed\n entries.forEach((entry) => {\n const target = entry.target as HTMLElement;\n\n if (entry.isIntersecting) {\n // Element is visible, keep it visible\n target.style.display = \"flex\";\n target.style.visibility = \"visible\";\n totalHiddenCount = Math.max(0, totalHiddenCount - 1);\n }\n\n if (!entry.isIntersecting) {\n // Element is outside the container, hide it\n hiddenChips.current.push({\n el: target,\n rect: target.getBoundingClientRect(),\n });\n target.style.visibility = \"hidden\";\n target.style.display = \"none\";\n totalHiddenCount++;\n }\n });\n\n setHiddenCount(totalHiddenCount);\n },\n {\n root: containerRef.current,\n rootMargin: \"0px\",\n threshold: 1,\n },\n );\n\n const children = Array.from(chipsContainerRef.current.children);\n children.forEach((child) => {\n observer.observe(child as HTMLElement);\n });\n\n // Cleanup observer on unmount or dependency change\n return () => {\n observer.disconnect();\n };\n }, [items]); // Re-run when items change\n\n useLayoutEffect(() => {\n if (!containerRef.current) return;\n const observer = new ResizeObserver((entries) => {\n const entry = entries[entries.length - 1];\n if (entry) {\n if (hiddenCount > 0 && containerRef.current) {\n const plusChipRect = plusChipRef.current?.getBoundingClientRect();\n setPlusChipWidth(plusChipRect?.width ?? 0);\n const containerRect = containerRef.current.getBoundingClientRect();\n const chipRect =\n hiddenChips.current[hiddenChips.current.length - 1].rect;\n\n const fitsHorizontally =\n chipRect.width <= containerRect.width &&\n chipRect.left >= containerRect.left &&\n chipRect.right <= containerRect.right;\n\n const fitsVertically =\n chipRect.height <= containerRect.height &&\n chipRect.top >= containerRect.top &&\n chipRect.bottom <= containerRect.bottom;\n\n const hasEnoughSpace = fitsHorizontally && fitsVertically;\n\n hiddenChips.current[hiddenCount - 1].el.style.display = hasEnoughSpace\n ? \"flex\"\n : \"none\";\n\n if (hasEnoughSpace) {\n hiddenChips.current.pop();\n }\n }\n }\n });\n\n observer.observe(containerRef.current);\n\n return () => {\n observer.disconnect();\n };\n }, [hiddenCount]);\n\n return (\n <div\n ref={containerRef}\n className={cx(styles[\"truncate-chips\"], className)}\n style={{\n marginInlineEnd: plusChipWidth,\n }}\n {...rest}\n >\n <div ref={chipsContainerRef} style={{ display: \"contents\" }}>\n {/* Visible chips container */}\n {items.map((chip, index) => (\n <Chip key={index} {...chip} style={{ visibility: \"hidden\" }} />\n ))}\n </div>\n\n {/* Visible plus chip */}\n {hiddenCount > 0 && <Chip label={`+${hiddenCount}`} ref={plusChipRef} />}\n </div>\n );\n};\n","import { Chip, ChipProps } from \"../../../../components/Chip\";\nimport { Flex } from \"../../../../components/Flex\";\nimport { TableEmptyCellContent } from \"../base/cells/TableEmptyCellContent\";\nimport { TruncateChips } from \"../internal/TruncateChips\";\n\n/**\n * The accepted value type for the chips formatter function\n */\nexport type ChipsValueType = string | string[] | ChipProps | ChipProps[];\n\n/**\n * Props for the chips formatter function\n */\nexport type ChipsFormatterOptions = {\n /**\n * Whether to truncate the chips instead of wrapping\n */\n truncateChips?: boolean;\n};\n\n/**\n * Helper function for formatting table cells with chips\n * @param value - The value to format\n * @param options - The options for the chips formatter\n * @returns The formatted chips\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) => ({ label: v }))\n : (value as ChipProps[]);\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} />;\n }\n\n return <Chip {...value} />;\n};\n","/**\n * Props for the currency formatter function\n */\nexport type CurrencyFormatterOptions = {\n /**\n * The locale to use for the currency formatter\n * @default \"en-US\"\n */\n locale?: Intl.LocalesArgument;\n /**\n * The currency to use for the currency formatter\n * @default \"USD\"\n */\n currency?: Intl.NumberFormatOptions[\"currency\"];\n};\n\n/**\n * Helper function for formatting table cells with currency, including i18n support\n * @param value - The value to format\n * @param options - The options for the currency formatter\n * @returns The formatted currency\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","/**\n * Date format preset options\n */\nexport type DateFormatPreset = \"short\" | \"medium\" | \"long\" | \"full\";\n\n/**\n * Time format preset options\n */\nexport type TimeFormatPreset = \"short\" | \"medium\";\n\n/**\n * Shared date format presets used by date formatters\n */\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/**\n * Shared time format presets used by time formatters\n */\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 { DateFormatPreset, dateFormatPresets } from \"./presets\";\n\nexport type { DateFormatPreset };\n\n/**\n * Options type for the date formatter function\n */\nexport type DateFormatterOptions = {\n /**\n * The locale to use for the date formatter\n * @default \"en-US\"\n */\n locale?: Intl.LocalesArgument;\n /**\n * The format preset or Intl.DateTimeFormatOptions object\n * - \"short\": 01/15/2024\n * - \"medium\": Jan 15, 2024\n * - \"long\": January 15, 2024\n * - \"full\": Monday, January 15, 2024\n * - Intl.DateTimeFormatOptions: Custom format (e.g., { weekday: \"long\", month: \"short\", day: \"numeric\" })\n * @default \"short\"\n */\n format?: DateFormatPreset | Intl.DateTimeFormatOptions;\n};\n\n/**\n * Helper function for formatting table cells with plain dates, including i18n support.\n *\n * Accepts plain date strings in the format \"YYYY-MM-DD\" (like Temporal.PlainDate).\n * For JavaScript Date objects or date-times with timezone information,\n * use `dateTimeFormatter` instead.\n *\n * @param value - The plain date string to format (ISO format \"YYYY-MM-DD\")\n * @param options - The options for the date formatter\n * @returns The formatted date string or null for undefined/null values\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 // Parse as plain date (UTC to avoid local timezone shifts)\n const dateTime = DateTime.fromISO(value, { zone: \"utc\" });\n\n if (!dateTime.isValid) {\n return null;\n }\n\n // Convert locale to string for Luxon compatibility\n const localeString = locale?.toString() ?? \"en-US\";\n\n // Check if format is a preset string or Intl options object\n if (typeof format === \"string\") {\n const preset = dateFormatPresets[format];\n return dateTime.setLocale(localeString).toLocaleString(preset);\n }\n\n // Custom Intl.DateTimeFormatOptions\n return dateTime.setLocale(localeString).toLocaleString(format);\n};\n","import { DateTime } from \"luxon\";\nimport { IanaZone } from \"../../../../types\";\nimport {\n DateFormatPreset,\n TimeFormatPreset,\n dateFormatPresets,\n timeFormatPresets,\n} from \"./presets\";\n\n/**\n * Date format preset options for dateTimeFormatter\n */\nexport type DateTimeFormatDatePreset = DateFormatPreset;\n\n/**\n * Time format preset options for dateTimeFormatter\n */\nexport type DateTimeFormatTimePreset = TimeFormatPreset | \"none\";\n\n/**\n * Options type for the date-time formatter function\n */\nexport type DateTimeFormatterOptions = {\n /**\n * The locale to use for the date-time formatter\n * @default \"en-US\"\n */\n locale?: Intl.LocalesArgument;\n /**\n * The format preset for the date portion or Intl.DateTimeFormatOptions object\n * - \"short\": 01/15/2024\n * - \"medium\": Jan 15, 2024\n * - \"long\": January 15, 2024\n * - \"full\": Monday, January 15, 2024\n * - Intl.DateTimeFormatOptions: Custom format (e.g., { weekday: \"long\", month: \"short\", day: \"numeric\" })\n * @default \"short\"\n */\n dateFormat?: DateTimeFormatDatePreset | Intl.DateTimeFormatOptions;\n /**\n * The format preset for the time portion or Intl.DateTimeFormatOptions object\n * - \"short\": 08:30 AM\n * - \"medium\": 08:30:00 AM\n * - \"none\": Omit time from display (useful for Date objects when you only want the date)\n * - Intl.DateTimeFormatOptions: Custom format (e.g., { hour: \"2-digit\", minute: \"2-digit\", hour12: false })\n * @default \"short\"\n */\n timeFormat?: DateTimeFormatTimePreset | Intl.DateTimeFormatOptions;\n /**\n * The IANA timezone to use for displaying Date objects (e.g., \"America/New_York\", \"Europe/London\", \"UTC\").\n * If not provided, uses the user's local timezone.\n *\n * **Note:** This option only applies to `Date` objects. For string inputs, timezone handling is automatic:\n * - Strings without timezone info (e.g., \"2024-01-15T09:30:00\") are treated as plain date-times with no conversion\n * - Strings with timezone info (e.g., \"2024-01-15T09:30:00Z\" or \"2024-01-15T09:30:00-05:00\") use their embedded timezone\n *\n * @default undefined (local timezone)\n */\n timeZone?: IanaZone;\n};\n\n/**\n * Detects if an ISO string contains timezone information (Z suffix or offset like +00:00, -08:00)\n */\nconst hasTimezoneInfo = (isoString: string): boolean => {\n return /(?:Z|[+-]\\d{2}:\\d{2})$/.test(isoString);\n};\n\n/**\n * Helper function for formatting table cells with date and time, including i18n support.\n *\n * For string inputs:\n * - Strings without timezone info are treated as \"plain date-times\" (no timezone conversion, no timezone displayed)\n * - Strings with timezone info (Z or offset) honor the provided timezone and display it (e.g., \"PST\", \"UTC\")\n *\n * For Date objects:\n * - Uses local timezone by default and displays the timezone\n * - Use the `timeZone` option to specify a different timezone (e.g., \"America/New_York\", \"UTC\")\n *\n * @param value - The date-time value to format (ISO string \"YYYY-MM-DDTHH:mm:ss\" or Date object)\n * @param options - The options for the date-time formatter\n * @returns The formatted date-time string or null for undefined/null values\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 // For Date objects, use specified timezone or local timezone\n if (timeZone) {\n dateTime = DateTime.fromJSDate(value, { zone: timeZone });\n } else {\n // Use local timezone - DateTime.fromJSDate uses local timezone by default\n dateTime = DateTime.fromJSDate(value);\n }\n // Always display timezone for Date objects\n includeTimezone = true;\n } else {\n // String input - detect timezone\n if (hasTimezoneInfo(value)) {\n // Has timezone info - parse and keep in original timezone to display timezone\n dateTime = DateTime.fromISO(value);\n if (!dateTime.isValid) {\n return null;\n }\n includeTimezone = true;\n } else {\n // No timezone info - treat as plain date-time (UTC parse)\n dateTime = DateTime.fromISO(value, { zone: \"utc\" });\n }\n }\n\n if (!dateTime.isValid) {\n return null;\n }\n\n // Convert locale to string for Luxon compatibility\n const localeString = locale?.toString() ?? \"en-US\";\n const localizedDateTime = dateTime.setLocale(localeString);\n\n // Resolve date format options\n const dateOptions: Intl.DateTimeFormatOptions =\n typeof dateFormat === \"string\" ? dateFormatPresets[dateFormat] : dateFormat;\n\n // Resolve time format options\n const timeOptions: Intl.DateTimeFormatOptions =\n typeof timeFormat === \"string\"\n ? timeFormat === \"none\"\n ? {}\n : timeFormatPresets[timeFormat]\n : timeFormat;\n\n // Combine date and time options, adding timezone if present in input\n const formatOptions: Intl.DateTimeFormatOptions = {\n ...(includeTimezone && { timeZoneName: \"short\" }),\n ...dateOptions,\n ...timeOptions,\n };\n\n return localizedDateTime.toLocaleString(formatOptions);\n};\n","/**\n * Options type for the number formatter function\n */\nexport type NumberFormatterOptions = {\n /**\n * The locale to use for the number formatter\n * @default \"en-US\"\n */\n locale?: Intl.LocalesArgument;\n /**\n * The minimum number of fraction digits to display\n * @default 0\n */\n minimumFractionDigits?: number;\n /**\n * The maximum number of fraction digits to display\n * @default 2\n */\n maximumFractionDigits?: number;\n /**\n * Whether to use grouping separators (e.g., thousands separator)\n * @default true\n */\n useGrouping?: boolean;\n /**\n * The notation style: \"standard\", \"scientific\", \"engineering\", or \"compact\"\n * @default \"standard\"\n */\n notation?: \"standard\" | \"scientific\" | \"engineering\" | \"compact\";\n /**\n * How to display the sign: \"auto\", \"never\", \"always\", or \"exceptZero\"\n * @default \"auto\"\n */\n signDisplay?: \"auto\" | \"never\" | \"always\" | \"exceptZero\";\n};\n\n/**\n * Helper function for formatting table cells with numbers, including i18n support\n * @param value - The value to format\n * @param options - The options for the number formatter\n * @returns The formatted number\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","/**\n * Options type for the percent formatter function\n */\nexport type PercentFormatterOptions = {\n /**\n * The number of decimals to display\n * @default 2\n */\n decimals?: number;\n /**\n * The locale to use for the percent formatter\n * @default \"en-US\"\n */\n locale?: Intl.LocalesArgument;\n};\n\n/**\n * Helper function for formatting table cells with percentages, including i18n support\n * @param value - The value to format\n * @param options - The options for the percent formatter\n * @returns The formatted percentage\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 { TimeFormatPreset, timeFormatPresets } from \"./presets\";\n\nexport type { TimeFormatPreset };\n\n/**\n * Options type for the time formatter function\n */\nexport type TimeFormatterOptions = {\n /**\n * The locale to use for the time formatter\n * @default \"en-US\"\n */\n locale?: Intl.LocalesArgument;\n /**\n * The format preset or Intl.DateTimeFormatOptions object\n * - \"short\": 08:30 AM\n * - \"medium\": 08:30:00 AM\n * - Intl.DateTimeFormatOptions: Custom format (e.g., { hour: \"2-digit\", minute: \"2-digit\", hour12: false })\n * @default \"short\"\n */\n format?: TimeFormatPreset | Intl.DateTimeFormatOptions;\n};\n\n/**\n * Helper function for formatting table cells with times, including i18n support.\n * Treats time strings as \"plain times\" without timezone conversion.\n * @param value - The time value to format (ISO time string \"HH:mm:ss\" or \"HH:mm\")\n * @param options - The options for the time formatter\n * @returns The formatted time string or null for undefined/null values\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 // Parse time-only string by prepending a reference date\n // Use UTC zone to treat as a \"plain time\" without timezone conversion\n const dateTime = DateTime.fromISO(`1970-01-01T${value}`, { zone: \"utc\" });\n\n if (!dateTime.isValid) {\n return null;\n }\n\n // Convert locale to string for Luxon compatibility\n const localeString = locale?.toString() ?? \"en-US\";\n\n // Check if format is a preset string or Intl options object\n if (typeof format === \"string\") {\n const preset = timeFormatPresets[format];\n return dateTime.setLocale(localeString).toLocaleString(preset);\n }\n\n // Custom Intl.DateTimeFormatOptions\n return dateTime.setLocale(localeString).toLocaleString(format);\n};\n","import { DateTime } from \"luxon\";\nimport { YearlessDate } from \"../../../../components/DateFieldYearless/types\";\n\n/**\n * Yearless date format preset options\n */\nexport type YearlessDateFormatPreset = \"short\" | \"long\";\n\n/**\n * Options type for the yearless date formatter function\n */\nexport type YearlessDateFormatterOptions = {\n /**\n * The locale to use for the yearless date formatter\n * @default \"en-US\"\n */\n locale?: Intl.LocalesArgument;\n /**\n * The format preset or Intl.DateTimeFormatOptions object\n * - \"short\": Jan 05\n * - \"long\": January 05\n * - Intl.DateTimeFormatOptions: Custom format (e.g., { month: \"long\", day: \"numeric\" })\n * @default \"short\"\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 * Helper function for formatting table cells with month and day (no year), including i18n support\n * @param value - The yearless date value to format. Accepts:\n * - Temporal PlainMonthDay string format: \"--MM-DD\" (e.g., \"--01-15\")\n * - YearlessDate object: { month: number, day: number }\n * @param options - The options for the yearless date formatter\n * @returns The formatted month-day string or null for undefined/null values\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 // Parse the --MM-DD format (Temporal PlainMonthDay string format)\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 // YearlessDate object format\n if (value.month == null || value.day == null) {\n return null;\n }\n month = value.month;\n day = value.day;\n }\n\n // Convert locale to string for Luxon compatibility\n const localeString = locale?.toString() ?? \"en-US\";\n\n // Create a DateTime with a leap year reference to support Feb 29\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 // Check if format is a preset string or Intl options object\n if (typeof format === \"string\") {\n const preset = formatPresets[format];\n return dateTime.toLocaleString(preset);\n }\n\n // Custom Intl.DateTimeFormatOptions\n return dateTime.toLocaleString(format);\n};\n","import { ReactNode } from \"react\";\nimport {\n booleanFormatter,\n BooleanFormatterOptions,\n currencyFormatter,\n CurrencyFormatterOptions,\n dateFormatter,\n DateFormatterOptions,\n dateTimeFormatter,\n DateTimeFormatterOptions,\n numberFormatter,\n NumberFormatterOptions,\n percentFormatter,\n PercentFormatterOptions,\n timeFormatter,\n TimeFormatterOptions,\n} from \"./formatters\";\nimport { ColumnType, ColumnTypeConfig, ColumnTypeOptionsMap } from \"./types\";\n\n/**\n * Display defaults for a column type.\n * Defines the default formatter and alignment for each column type.\n */\nexport type ColumnTypeDefaults = {\n /**\n * Default horizontal alignment for the column.\n */\n align: \"start\" | \"center\" | \"end\";\n /**\n * Factory function to create the default renderCell function.\n * Receives formatter options and returns the renderCell function.\n */\n createRenderCell: (\n options?: ColumnTypeOptionsMap[ColumnType],\n ) => ((value: unknown, rowDepth: number) => ReactNode) | undefined;\n};\n\n/**\n * Mapping of column types to their display defaults.\n * Used by the column helper to apply sensible defaults based on data type.\n */\nexport const COLUMN_TYPE_DEFAULTS: Record<ColumnType, ColumnTypeDefaults> = {\n text: {\n align: \"start\",\n createRenderCell: () => undefined, // No formatter, use raw value\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};\n\n/**\n * Extracts the column type string and options from a ColumnTypeConfig.\n *\n * @param config - The column type configuration (string or object)\n * @returns Tuple of [type string, options object or undefined]\n *\n * @example\n * ```ts\n * resolveColumnTypeConfig(\"currency\")\n * // Returns: [\"currency\", undefined]\n *\n * resolveColumnTypeConfig({ type: \"currency\", options: { currency: \"EUR\" } })\n * // Returns: [\"currency\", { currency: \"EUR\" }]\n * ```\n */\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/**\n * Gets the display defaults for a column type.\n *\n * @param type - The column type\n * @returns The column type defaults (align and createRenderCell)\n *\n * @example\n * ```ts\n * const defaults = getColumnTypeDefaults(\"currency\");\n * // Returns: { align: \"end\", createRenderCell: ... }\n * ```\n */\nexport function getColumnTypeDefaults(type: ColumnType): ColumnTypeDefaults {\n return COLUMN_TYPE_DEFAULTS[type];\n}\n","import { ReactNode } from \"react\";\nimport {\n ColumnDef,\n ColumnTypeConfig,\n TextEditConfig,\n NumberEditConfig,\n SelectEditConfig,\n MultiselectEditConfig,\n TableRow,\n} from \"./types\";\nimport { warnOnce } from \"../../../internal/functions\";\n\n/**\n * Utility type that extracts the element type from an array type\n */\ntype ArrayElement<T> = T extends (infer U)[] ? U : never;\n\n/**\n * Base column configuration without editMode-specific or editConfig-specific properties\n */\ntype BaseColumnConfig<T, K extends keyof T> = {\n /**\n * The label of the header\n */\n headerLabel: string;\n /**\n * The alignment of the header.\n * When using `type`, this is set automatically but can be overridden.\n */\n align?: \"start\" | \"center\" | \"end\";\n /**\n * Columns of a group column (for grouped columns)\n */\n columns?: ColumnDef<T>[];\n /**\n * The content of the footer cell. An array will display multiple footer rows\n */\n footerContent?: ReactNode | ReactNode[];\n /**\n * The maximum width of the column, in pixels\n */\n maxWidth?: number;\n /**\n * The minimum width of the column, in pixels\n */\n minWidth?: number;\n /**\n * The pinning location of the column\n */\n pinned?: \"left\" | \"right\";\n /**\n * Whether the column is resizable\n */\n resizable?: boolean;\n /**\n * The function to customize how the cell content is rendered.\n * When using `type`, a default renderer is provided but can be overridden.\n */\n renderCell?: (\n value: T[K],\n { row, depth }: { row?: TableRow<T>; depth?: number },\n ) => ReactNode;\n /**\n * Whether the column is sortable, or a function to customize the sorting logic\n */\n sortable?: boolean | ((valueA: T[K], valueB: T[K]) => number);\n /**\n * The column type for automatic display configuration.\n * Sets default `renderCell` (formatter) and `align` based on the data type.\n */\n type?: ColumnTypeConfig;\n};\n\n// =============================================================================\n// New editConfig-based configurations (recommended)\n// =============================================================================\n\n/**\n * Configuration for read-only columns (no editing)\n */\ntype ReadOnlyColumnConfig<T, K extends keyof T> = BaseColumnConfig<T, K> & {\n editConfig?: undefined;\n // Legacy props must be undefined when editConfig is not used\n editMode?: undefined;\n onChange?: never;\n options?: never;\n};\n\n/**\n * Configuration for text editable columns using editConfig.\n * Valid when T[K] is a string. Also permits booleans (until we add a boolean editable column type)\n */\ntype TextEditConfigColumnConfig<T, K extends keyof T> =\n NonNullable<T[K]> extends string | boolean\n ? BaseColumnConfig<T, K> & {\n editConfig: TextEditConfig<T, K>;\n // Legacy props must be undefined when using editConfig\n editMode?: undefined;\n onChange?: undefined;\n options?: undefined;\n }\n : never;\n\n/**\n * Configuration for number editable columns using editConfig.\n * Valid when T[K] is a number type.\n */\ntype NumberEditConfigColumnConfig<T, K extends keyof T> =\n NonNullable<T[K]> extends number\n ? BaseColumnConfig<T, K> & {\n editConfig: NumberEditConfig<T, K>;\n // Legacy props must be undefined when using editConfig\n editMode?: undefined;\n onChange?: undefined;\n options?: undefined;\n }\n : never;\n\n/**\n * Configuration for select editable columns using editConfig\n */\ntype SelectEditConfigColumnConfig<T, K extends keyof T> = BaseColumnConfig<\n T,\n K\n> & {\n editConfig: SelectEditConfig<T, K>;\n // Legacy props must be undefined when using editConfig\n editMode?: undefined;\n onChange?: undefined;\n options?: undefined;\n};\n\n/**\n * Configuration for multiselect editable columns using editConfig\n * Only valid when T[K] is an array type\n */\ntype MultiselectEditConfigColumnConfig<T, K extends keyof T> =\n NonNullable<T[K]> extends unknown[]\n ? BaseColumnConfig<T, K> & {\n editConfig: MultiselectEditConfig<T, K>;\n // Legacy props must be undefined when using editConfig\n editMode?: undefined;\n onChange?: undefined;\n options?: undefined;\n }\n : never;\n\n// =============================================================================\n// Legacy editMode-based configurations (deprecated)\n// =============================================================================\n\n/**\n * Configuration for text editable columns (legacy).\n * Valid when T[K] is a string. Also permits booleans (until we add a boolean editable column type)\n * @deprecated Use editConfig instead: `editConfig: { mode: \"text\", onChange: ... }`\n */\ntype TextEditableColumnConfig<T, K extends keyof T> =\n NonNullable<T[K]> extends string | boolean\n ? BaseColumnConfig<T, K> & {\n editConfig?: undefined;\n editMode: \"text\";\n onChange?: (value: string, rowId: string) => void;\n options?: never;\n }\n : never;\n\n/**\n * Configuration for select editable columns (legacy)\n * @deprecated Use editConfig instead: `editConfig: { mode: \"select\", options: [...], onChange: ... }`\n */\ntype SelectEditableColumnConfig<T, K extends keyof T> = BaseColumnConfig<\n T,\n K\n> & {\n editConfig?: undefined;\n editMode: \"select\";\n onChange?: (value: T[K], rowId: string) => void;\n options: { value: T[K]; label: string }[];\n};\n\n/**\n * Configuration for multiselect editable columns (legacy)\n * @deprecated Use editConfig instead: `editConfig: { mode: \"multiselect\", options: [...], onChange: ... }`\n */\ntype MultiselectEditableColumnConfig<T, K extends keyof T> =\n NonNullable<T[K]> extends unknown[]\n ? BaseColumnConfig<T, K> & {\n editConfig?: undefined;\n editMode: \"multiselect\";\n onChange?: (value: T[K], rowId: string) => void;\n options: { value: ArrayElement<NonNullable<T[K]>>; label: string }[];\n }\n : never;\n\n/**\n * Full column configuration type - union of all possible configurations.\n * Includes both new editConfig-based and legacy editMode-based configs.\n * TypeScript will enforce that the editMode/editConfig matches the value type constraints.\n */\ntype ColumnConfig<T, K extends keyof T> =\n // New editConfig-based (recommended)\n | ReadOnlyColumnConfig<T, K>\n | TextEditConfigColumnConfig<T, K>\n | NumberEditConfigColumnConfig<T, K>\n | SelectEditConfigColumnConfig<T, K>\n | MultiselectEditConfigColumnConfig<T, K>\n // Legacy editMode-based (deprecated)\n | TextEditableColumnConfig<T, K>\n | SelectEditableColumnConfig<T, K>\n | MultiselectEditableColumnConfig<T, K>;\n\n/**\n * Logs deprecation warnings for legacy column configuration patterns.\n * Only runs in non-production modes.\n */\nfunction logDeprecationWarnings<T, K extends keyof T>(\n id: K | { group: string },\n column: ColumnConfig<T, K>,\n): void {\n const columnId =\n typeof id === \"object\" && \"group\" in id ? id.group : String(id);\n\n // Check for legacy editMode usage\n if (\n \"editMode\" in column &&\n column.editMode &&\n !(\"editConfig\" in column && column.editConfig)\n ) {\n warnOnce(\n `[Anvil2 DataTable] Column \"${columnId}\" uses deprecated \\`editMode\\` prop. ` +\n `Migrate to \\`editConfig: { mode: \"${column.editMode}\", onChange: ... }\\``,\n );\n }\n\n // Check for legacy top-level onChange\n if (\n \"onChange\" in column &&\n column.onChange &&\n !(\"editConfig\" in column && column.editConfig)\n ) {\n warnOnce(\n `[Anvil2 DataTable] Column \"${columnId}\" uses deprecated top-level \\`onChange\\`. ` +\n `Move \\`onChange\\` inside \\`editConfig\\`.`,\n );\n }\n\n // Check for legacy top-level options\n if (\n \"options\" in column &&\n column.options &&\n !(\"editConfig\" in column && column.editConfig)\n ) {\n warnOnce(\n `[Anvil2 DataTable] Column \"${columnId}\" uses deprecated top-level \\`options\\`. ` +\n `Move \\`options\\` inside \\`editConfig\\`.`,\n );\n }\n}\n\n/**\n * Transforms editConfig into the internal editMode/onChange/options structure.\n * This maintains backwards compatibility with the existing DataTable implementation.\n */\nfunction transformEditConfig<T, K extends keyof T>(\n column: ColumnConfig<T, K>,\n): Partial<ColumnDef<T>> {\n if (!(\"editConfig\" in column) || !column.editConfig) {\n return {};\n }\n\n const { editConfig } = column;\n const result: Partial<ColumnDef<T>> = {\n editMode: editConfig.mode,\n onChange: editConfig.onChange as ColumnDef<T>[\"onChange\"],\n };\n\n // Add options for select/multiselect modes\n if (editConfig.mode === \"select\" || editConfig.mode === \"multiselect\") {\n if (\"options\" in editConfig) {\n result.options = editConfig.options as ColumnDef<T>[\"options\"];\n }\n }\n\n // Preserve the full editConfig for modes that need it (e.g., number)\n result.editConfig = editConfig as ColumnDef<T>[\"editConfig\"];\n\n return result;\n}\n\n/**\n * Factory function to create column helper function for defining Table columns.\n *\n * This helper provides type safety by enforcing that:\n * - `type` sets display defaults (formatter and alignment) for the column\n * - `editConfig` enables cell editing with proper type constraints\n * - `editConfig.mode: \"text\"` can only be used with string (or boolean columns, until we add a boolean mode)\n * - `editConfig.mode: \"number\"` can only be used with number columns\n * - `editConfig.mode: \"multiselect\"` can only be used with array columns\n * - `editConfig.mode: \"select\"` options values must match the column's value type\n * - `editConfig.onChange` callback receives the correct value type for the column\n *\n * @template T - The type of the row data\n * @returns A function that creates type-safe column definitions\n *\n * @example\n * ```ts\n * type Data = { name: string; amount: number; tags: string[] };\n * const createColumn = createColumnHelper<Data>();\n *\n * // Display-only column with type defaults\n * createColumn(\"amount\", { headerLabel: \"Amount\", type: \"currency\" });\n *\n * // Editable column with editConfig\n * createColumn(\"name\", {\n * headerLabel: \"Name\",\n * type: \"text\",\n * editConfig: { mode: \"text\", onChange: (value, rowId) => save(value, rowId) }\n * });\n *\n * // Number editing\n * createColumn(\"amount\", {\n * headerLabel: \"Amount\",\n * editConfig: {\n * mode: \"number\",\n * minValue: 0,\n * maxValue: 10000,\n * step: 0.01,\n * onChange: (value, rowId) => save(value, rowId)\n * }\n * });\n *\n * // Select editing\n * createColumn(\"status\", {\n * headerLabel: \"Status\",\n * editConfig: {\n * mode: \"select\",\n * options: [{ value: \"active\", label: \"Active\" }],\n * onChange: (value, rowId) => save(value, rowId)\n * }\n * });\n *\n * // Multiselect editing with array column\n * createColumn(\"tags\", {\n * headerLabel: \"Tags\",\n * editConfig: {\n * mode: \"multiselect\",\n * options: [{ value: \"urgent\", label: \"Urgent\" }],\n * onChange: (value, rowId) => save(value, rowId)\n * }\n * });\n * ```\n */\nexport function createColumnHelper<T>() {\n return function createColumn<K extends keyof T>(\n id: K | { group: string },\n column: ColumnConfig<T, K>,\n ): ColumnDef<T> {\n // Log deprecation warnings in development\n logDeprecationWarnings(id, column);\n\n // Transform editConfig to internal structure if present\n const editProps = transformEditConfig(column);\n\n if (typeof id === \"object\" && \"group\" in id) {\n // Group columns use the group string as the id\n // Cast is necessary here because group columns don't have a K in T\n return {\n id: id.group,\n ...column,\n ...editProps,\n } as unknown as ColumnDef<T>;\n }\n\n // For regular columns, we can safely assign the id\n // Type safety is enforced via ColumnConfig<T, K> at the call site\n return { id, ...column, ...editProps } as ColumnDef<T>;\n };\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","import { createContext } from \"react\";\nimport { CellPosition } from \"../../../../internal/types\";\n\nexport type DTFocusState = {\n /**\n * The currently focused cell or null if no cell is focused\n */\n focusedCell: CellPosition | null;\n /**\n * The last focused cell when the table was blurred or { rowIndex: 0, columnIndex: 0 } if never focused\n */\n focusRestorePoint: CellPosition;\n /**\n * Whether the focus has been disrupted by a sub component\n */\n hasFocusBeenDisrupted: boolean;\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 DTFocusSubComponentAction = {\n type: \"FOCUS_SUB_COMPONENT\";\n};\n\nexport type DTFocusSubComponentBlurAction = {\n type: \"BLUR_SUB_COMPONENT\";\n};\n\nexport type DTFocusAction =\n | DTFocusCellAction\n | DTFocusTableAction\n | DTFocusMoveAction\n | DTFocusJumpAction\n | DTBlurAction\n | DTFocusSubComponentAction\n | DTFocusSubComponentBlurAction\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 { CellPosition } from \"../../../../internal/types\";\n\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 /**\n * Moves the focus to the next valid cell in the given direction\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 /**\n * Moves the focus to the first/last valid cell in the given direction\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 const focusSubComponent = useCallback(() => {\n dispatch({ type: \"FOCUS_SUB_COMPONENT\" });\n }, [dispatch]);\n\n const blurSubComponent = useCallback(() => {\n dispatch({ type: \"BLUR_SUB_COMPONENT\" });\n }, [dispatch]);\n\n return {\n focusTableGenerally,\n moveFocusToCell,\n moveFocus,\n jumpFocus,\n blur,\n focusSubComponent,\n blurSubComponent,\n dispatch,\n };\n}\n","import { ComponentPropsWithoutRef } from \"react\";\nimport cx from \"classnames\";\n\nimport { useDTFocusDispatchContext } from \"../DataTable/internal/context/focus/useDTFocusDispatchContext\";\n\nimport styles from \"./TableBase.module.scss\";\n\n/**\n * Props for the SimpleTableBase component\n * @extends ComponentPropsWithoutRef<\"table\">\n */\nexport type SimpleTableBaseProps = ComponentPropsWithoutRef<\"table\">;\n\n/**\n * Props for the DataTableBase component\n * @extends Omit<ComponentPropsWithoutRef<\"div\">, \"aria-colcount\" | \"aria-rowcount\">\n */\nexport type DataTableBaseProps = Omit<\n ComponentPropsWithoutRef<\"div\">,\n \"aria-colcount\" | \"aria-rowcount\"\n> & {\n /**\n * The number of columns in the table\n */\n colCount: number;\n /**\n * The number of rows in the table\n */\n rowCount: number;\n /**\n * Whether the table has expandable rows\n */\n hasSubRows?: boolean;\n};\n\n/**\n * Props for the TableBase component\n * @extends SimpleTableBaseProps\n * @extends DataTableBaseProps\n */\nexport type TableBaseProps =\n | ({\n type: \"simple\";\n } & SimpleTableBaseProps)\n | ({\n type: \"data-table\";\n } & DataTableBaseProps);\n\n/**\n * Base table component for simple presentational tables\n * @param props - The props for the SimpleTableBase component\n * @param props.children - The children of the SimpleTableBase component\n * @param props.className - The class name of the SimpleTableBase component\n * @param props.ref - The ref of the SimpleTableBase component\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\n/**\n * Base table component for complex data tables\n * @param props - The props for the DataTableBase component\n * @param props.children - The children of the DataTableBase component\n * @param props.className - The class name of the DataTableBase component\n * @param props.ref - The ref of the DataTableBase component\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 } = 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 focusTableGenerally();\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 * Styled table component for simple presentational or complex data tables\n * @param props - The props for the TableBase component\n * @param props.type - The type of the TableBase component\n * @param props.children - The children of the TableBase component\n * @param props.className - The class name of the TableBase component\n * @param props.ref - The ref of the TableBase component\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 { ComponentPropsWithoutRef } from \"react\";\nimport cx from \"classnames\";\n\nimport styles from \"./TableBody.module.scss\";\n\n/**\n * Props for the TableBody component\n * @extends ComponentPropsWithoutRef<\"tbody\">\n * @extends ComponentPropsWithoutRef<\"div\">\n */\nexport type TableBodyProps =\n | ({\n /**\n * The type of table being rendered\n */\n type: \"simple\";\n } & ComponentPropsWithoutRef<\"tbody\">)\n | ({\n /**\n * The type of table being rendered\n */\n type: \"data-table\";\n } & ComponentPropsWithoutRef<\"div\">);\n\n/**\n * Table body component for simple presentational or complex data tables\n * @param props - The props for the TableBody component\n * @param props.type - The type of table being rendered\n * @param props.children - The children of the TableBody component\n * @param props.ref - The ref of the TableBody component\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 className={classes}\n role={type === \"simple\" ? undefined : \"rowgroup\"}\n >\n {children}\n </Element>\n );\n}\n","import { Column } from \"@tanstack/react-table\";\nimport styles from \"../base/cells/TableCells.module.scss\";\n\n/**\n * Get the common classes for adding shadow styles to pinned columns\n */\nexport const getCommonPinningClasses = <T>(\n column: Column<T>,\n): string | undefined => {\n const isPinned = column.getIsPinned();\n const isLastLeftPinnedColumn =\n isPinned === \"left\" && column.getIsLastColumn(\"left\");\n const isFirstRightPinnedColumn =\n isPinned === \"right\" && column.getIsFirstColumn(\"right\");\n\n if (isLastLeftPinnedColumn) {\n return styles[\"last-pinned-left-column\"];\n }\n if (isFirstRightPinnedColumn) {\n return styles[\"first-pinned-right-column\"];\n }\n};\n","import { Icon } from \"../../../../../../components\";\nimport EditIcon from \"../../../../../../../public/assets/icons/material/round/edit.svg\";\n\nimport styles from \"./DataTableEditableCells.module.scss\";\n\n/**\n * Edit icon for editable cells in data tables\n * @returns The edit icon\n */\nexport const DataTableEditableCellEditIcon = () => {\n return (\n <Icon\n svg={EditIcon}\n size=\"small\"\n color=\"subtle\"\n className={styles[\"data-table-body-cell-edit-icon\"]}\n aria-label=\"Edit cell value\"\n />\n );\n};\n","import { ComponentPropsWithoutRef, forwardRef } from \"react\";\nimport cx from \"classnames\";\n\nimport { 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 * The props for the TableBodyCell component\n */\nexport type TableBodyCellProps =\n | ({\n /**\n * The type of table being rendered\n */\n type: \"simple\";\n } & SimpleTableBodyCellProps)\n | ({\n /**\n * The type of table being rendered\n */\n type: \"data-table\";\n } & DataTableBodyCellProps);\n\n/**\n * The styled table body cell component\n * @param props - The props for the TableBodyCell component\n * @param props.type - The type of table being rendered\n * @param props.children - The children to render in the cell\n * @param props.className - The class name of the TableBodyCell component\n * @param props.rest - The rest of the props\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 { CellPosition } from \"../../../internal/types\";\n\nexport function formatCellPositionString(cellPosition: CellPosition): string {\n return `${cellPosition.rowIndex},${cellPosition.columnIndex}`;\n}\n\n/**\n * Checks if two cell positions are equal.\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 { Cell } from \"@tanstack/react-table\";\nimport { ColumnDef } from \"../../../types\";\n\n/**\n * Extracts the column ID from a cell, with proper type narrowing.\n * Uses the stored ColumnDef from meta if available, otherwise falls back to column.id.\n *\n * @param cell - The TanStack table cell instance\n * @returns The column ID as a keyof T\n */\nexport function getColumnId<T>(cell: Cell<T, unknown>): keyof T {\n // Access the stored ColumnDef from meta\n const columnDef = cell.column.columnDef.meta?.columnDef as\n | ColumnDef<T>\n | undefined;\n if (columnDef?.id) {\n return columnDef.id;\n }\n // Fallback to column.id (may be string, not keyof T)\n return cell.column.id as keyof T;\n}\n\n/**\n * Gets the cell value with proper type narrowing based on column ID.\n * Uses the column ID to narrow the return type from `unknown` to `T[K]`.\n *\n * @param cell - The TanStack table cell instance\n * @param _columnId - The column ID to use for type narrowing (unused at runtime, only for TypeScript)\n * @returns The cell value, typed as T[K]\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 // Runtime validation could be added here if needed\n // Note: This assertion is necessary because TanStack Table's Cell type\n // doesn't preserve the specific value type T[K] at the table instance level\n return value as T[K];\n}\n\n/**\n * Gets the onChange callback with proper typing based on column ID.\n * Returns a callback that accepts T[K] instead of the union type T[keyof T].\n *\n * @param cell - The TanStack table cell instance\n * @param _columnId - The column ID to use for type narrowing (unused at runtime, only for TypeScript)\n * @returns The onChange callback, typed to accept T[K], or undefined if not configured\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 // Note: This assertion is necessary because the meta.onChange is typed as\n // (value: T[keyof T], rowId: string) => void, but we know it should accept T[K]\n return cell.column.columnDef.meta?.onChange as\n | ((value: T[K], rowId: string) => void)\n | undefined;\n}\n\n/**\n * Logs a warning when a cell value type doesn't match the expected type for its editMode.\n *\n * @param params - The warning parameters\n * @param params.columnId - The column ID for the warning message\n * @param params.editMode - The editMode of the column\n * @param params.expectedType - The expected type description\n * @param params.receivedType - The actual type received\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 { CSSProperties, useMemo } from \"react\";\nimport { Column } from \"@tanstack/react-table\";\n\n/**\n * Get the common styles for sticky positioning of pinned columns\n * Width is handled by CSS Grid, so only positioning is needed\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\nexport const useCommonPinningStyles = <T>(column: Column<T>): CSSProperties => {\n const left = column.getStart(\"left\");\n const right = column.getAfter(\"right\");\n const isPinned = column.getIsPinned();\n\n return useMemo(\n () => ({\n left: isPinned === \"left\" ? `${left}px` : undefined,\n right: isPinned === \"right\" ? `${right}px` : undefined,\n position: isPinned ? \"sticky\" : \"relative\",\n zIndex: isPinned ? 1 : 0,\n }),\n [left, right, isPinned],\n );\n};\n","/**\n * Internal column ID for the primary row action column.\n * This column typically contains expand buttons, but may also contain\n * checkboxes for nested rows when selection is enabled.\n */\nexport const INTERNAL_ROW_ACTION_PRIMARY_COLUMN_ID =\n \"a2-table-internal-row-action-primary\";\n\n/**\n * Internal column ID for the secondary row action column.\n * This column contains checkboxes for row selection when enabled.\n * For nested rows, this column renders nothing (selection is handled\n * in the primary action column instead).\n */\nexport const INTERNAL_ROW_ACTION_SECONDARY_COLUMN_ID =\n \"a2-table-internal-row-action-secondary\";\n","import { createContext, useContext } from \"react\";\n\nexport type CellFocusContextValue = {\n /**\n * Whether the cell currently has focus\n */\n isCellFocused: boolean;\n};\n\n/**\n * Context for communicating cell focus state to child components.\n * Used by CellError to show tooltips when the cell is focused via keyboard.\n */\nexport const CellFocusContext = createContext<CellFocusContextValue | null>(\n null,\n);\n\n/**\n * Hook to consume the CellFocusContext.\n * Returns null if used outside of a CellFocusContext.Provider.\n */\nexport function useCellFocusContext(): CellFocusContextValue | null {\n return useContext(CellFocusContext);\n}\n","import { useCallback, useMemo, useRef, useState } from \"react\";\nimport cx from \"classnames\";\n\nimport { TableBodyCell } from \"../../../base/cells/TableBodyCell\";\nimport { DataTableBodyCellProps as BaseDataTableBodyCellProps } from \"../../../base/cells/TableBodyCell\";\n\nimport styles from \"./DataTableCells.module.scss\";\nimport baseTableCellStyles from \"../../../base/cells/TableCells.module.scss\";\nimport { Cell } from \"@tanstack/react-table\";\nimport { useCommonPinningStyles } from \"../../../internal/getCommonPinningStyles\";\nimport { useDTFocusDispatchContext } from \"../context/focus/useDTFocusDispatchContext\";\nimport { formatCellPositionString } from \"../util/cellPositionHelpers\";\nimport { CellPosition } from \"../../../internal/types\";\nimport {\n INTERNAL_ROW_ACTION_PRIMARY_COLUMN_ID,\n INTERNAL_ROW_ACTION_SECONDARY_COLUMN_ID,\n} from \"../constants\";\nimport { TableRow } from \"../../../types\";\nimport { CellFocusContext } from \"./CellFocusContext\";\n\n/**\n * Props for the DataTableBodyImmutableCell component\n */\nexport type DataTableBodyImmutableCellProps<T> = Omit<\n BaseDataTableBodyCellProps,\n \"onChange\"\n> & {\n /**\n * The position of the cell in the table\n */\n cellPosition: CellPosition;\n /**\n * The TanStack table cell instance\n */\n cell: Cell<T, unknown>;\n /**\n * Whether the cell is currently hovered\n */\n isHovered: boolean;\n};\n\n/**\n * Renders an immutable (non-editable) body cell in a DataTable. This component handles keyboard\n * navigation for focus management and row expansion/selection, but does not support cell editing.\n *\n * @param props - The props for the DataTableBodyImmutableCell component\n * @param props.cell - The TanStack table cell instance\n * @param props.cellPosition - The position of the cell in the table\n * @param props.children - The content to render in the cell\n * @param props.isHovered - Whether the cell is currently hovered\n * @returns The rendered immutable cell component\n */\nexport function DataTableBodyImmutableCell<T>(\n props: DataTableBodyImmutableCellProps<T>,\n) {\n const { cell, cellPosition, children, isHovered, ...rest } = props;\n\n const cellRef = useRef<HTMLTableCellElement>(null);\n const [tabIndex, setTabIndex] = useState(-1);\n const [isFocused, setIsFocused] = useState(false);\n const { moveFocusToCell } = useDTFocusDispatchContext();\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 // Derive cell action from column type and row state\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 cellError = (cell.row.original as TableRow<T>).meta?.errors?.[\n column.id as keyof T\n ];\n\n const classes = cx(styles[\"data-table-body-cell\"], rest.className, {\n [styles[\"data-table-body-cell-hovered\"]]: isHovered,\n [styles[\"data-table-body-cell-error\"]]: !!cellError,\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\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 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 return;\n }\n default:\n break;\n }\n },\n [\n moveFocus,\n jumpFocus,\n isExpandCell,\n isSelectCell,\n cell,\n rowCanExpand,\n rowIsExpanded,\n toggleRowExpanded,\n ],\n );\n\n const handleFocus = useCallback(() => {\n setTabIndex(0);\n setIsFocused(true);\n moveFocusToCell(cellPosition);\n }, [moveFocusToCell, cellPosition]);\n\n const handleBlur = useCallback(() => {\n setTabIndex(-1);\n setIsFocused(false);\n }, []);\n\n const cellFocusContextValue = useMemo(\n () => ({ isCellFocused: isFocused }),\n [isFocused],\n );\n\n return (\n <TableBodyCell\n type=\"data-table\"\n {...rest}\n className={classes}\n ref={cellRef}\n tabIndex={tabIndex}\n onFocus={handleFocus}\n onBlur={handleBlur}\n style={commonPinningStyles}\n onKeyDown={handleKeyDown}\n data-cell-pos={formatCellPositionString(cellPosition)}\n >\n <CellFocusContext.Provider value={cellFocusContextValue}>\n {children}\n </CellFocusContext.Provider>\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\";\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 { EditableCellImperativeHandle, BaseEditableCellProps } 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 { CellFocusContext } from \"../cells/CellFocusContext\";\n\nexport type DataTableEditableTextCellProps<T> = BaseEditableCellProps<T>;\n\n/**\n * Renders an editable text cell in a DataTable. This component provides a text input that appears\n * when the cell is activated, allowing users to edit the cell value. Supports keyboard navigation\n * and commit/cancel operations.\n *\n * @param props - The props for the DataTableEditableTextCell component\n * @param props.cell - The TanStack table cell instance\n * @param props.cellProps - Props for styling and event handling of the cell container\n * @param props.cellPosition - The position of the cell in the table\n * @param props.children - The content to display when not editing\n * @param props.isHovered - Whether the cell is currently hovered\n * @param ref - Ref to the imperative handle for programmatic control\n * @returns The rendered editable text cell component\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 // Use type-safe helpers to get column ID and value\n const columnId = getColumnId(cell);\n const cellValue = getCellValue(cell, columnId);\n\n const [initialValue, isValidValueType] = useMemo(() => {\n let value: string;\n let isValid = true;\n\n if (cellValue === undefined || cellValue === null) {\n value = \"\";\n isValid = true;\n return [value, isValid];\n }\n\n switch (typeof cellValue) {\n case \"string\":\n value = cellValue;\n break;\n case \"boolean\":\n // Booleans are converted to strings\n // Drop support for this once we implement boolean editMode\n value = String(cellValue);\n break;\n default:\n value = \"\";\n isValid = false;\n break;\n }\n if (!isValid) {\n logWarningForInvalidCellValueType({\n columnId: String(columnId),\n editMode: \"text\",\n expectedType: \"string\",\n receivedType: Array.isArray(cellValue) ? \"array\" : typeof cellValue,\n });\n }\n return [value, isValid];\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 const skipCommitOnBlur = useRef(false);\n\n const onChange = getCellOnChange(cell, columnId);\n\n const commitValue = useCallback(() => {\n if (draftValue !== initialValue) {\n // This assertion is necessary because draftValue is string but onChange expects T[K]\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 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 // Skip for interactions within the cell (e.g. clicking on the input)\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 // Skip for interactions within the cell (e.g. clicking on the input)\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 // Provide focus context to children (e.g., CellError) for keyboard accessibility.\n // Show tooltip when cell has focus but is not in editing mode.\n const cellFocusContextValue = useMemo(\n () => ({ isCellFocused: tabIndex === 0 && !isEditing }),\n [tabIndex, isEditing],\n );\n\n useEffect(() => {\n if (isEditing) {\n inputRef.current?.focus();\n }\n }, [isEditing]);\n\n if (!isValidValueType) {\n // Exclude cellProps to avoid passing it to the DOM\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 >\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 />\n </>\n ) : (\n <CellFocusContext.Provider value={cellFocusContextValue}>\n {children}\n {!isEditing && <DataTableEditableCellEditIcon />}\n </CellFocusContext.Provider>\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\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\";\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 { EditableCellImperativeHandle, BaseEditableCellProps } 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 { CellFocusContext } from \"../cells/CellFocusContext\";\nimport { useNumberField } from \"../../../../../../internal/hooks/useNumberField/useNumberField\";\nimport { useMergeRefs } from \"../../../../../../hooks/useMergeRefs\";\n\nexport type DataTableEditableNumberCellProps<T> = BaseEditableCellProps<T>;\n\n/**\n * Renders an editable number cell in a DataTable. This component provides a number input\n * that appears when the cell is activated, leveraging the useNumberField hook for formatting,\n * validation, and keyboard navigation (arrow keys for increment/decrement).\n *\n * Features:\n * - Uses useNumberField hook for precise decimal arithmetic and input formatting\n * - Supports configurable min/max values, step size, and fraction digits\n * - Keyboard navigation: Enter/F2 to commit, Escape to cancel\n * - Input masking with thousand separators and decimal precision\n *\n * @param props - The props for the DataTableEditableNumberCell component\n * @param props.cell - The TanStack table cell instance\n * @param props.cellProps - Props for styling and event handling of the cell container\n * @param props.cellPosition - The position of the cell in the table\n * @param props.children - The content to display when not editing\n * @param props.isHovered - Whether the cell is currently hovered\n * @param ref - Ref to the imperative handle for programmatic control\n * @returns The rendered editable number cell component\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 // Use type-safe helpers to get column ID and value\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 const skipCommitOnBlur = useRef(false);\n\n const onChange = getCellOnChange(cell, columnId);\n\n const commitValue = useCallback(() => {\n if (draftValue !== initialValue) {\n // The onChange expects T[K] which should be number for number columns\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 // Provide focus context to children (e.g., CellError) for keyboard accessibility.\n const cellFocusContextValue = useMemo(\n () => ({ isCellFocused: tabIndex === 0 && !isEditing }),\n [tabIndex, isEditing],\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 >\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 />\n </>\n ) : (\n <CellFocusContext.Provider value={cellFocusContextValue}>\n {children}\n {!isEditing && <DataTableEditableCellEditIcon />}\n </CellFocusContext.Provider>\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\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 {\n forwardRef,\n Ref,\n useCallback,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport cx from \"classnames\";\n\nimport { Menu } from \"../../../../../../components/Menu\";\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 dataTableCellStyles from \"../cells/DataTableCells.module.scss\";\nimport { EditableCellImperativeHandle } from \"./types\";\nimport { useDTFocusDispatchContext } from \"../context/focus/useDTFocusDispatchContext\";\nimport { formatCellPositionString } from \"../util/cellPositionHelpers\";\nimport { mergeRefs } from \"../../../../../../hooks/useMergeRefs/useMergeRefs\";\nimport { BaseEditableCellProps } from \"./types\";\nimport {\n getColumnId,\n getCellValue,\n getCellOnChange,\n logWarningForInvalidCellValueType,\n} from \"../util/cellTypeHelpers\";\nimport { DataTableBodyImmutableCell } from \"../cells/DataTableBodyImmutableCell\";\nimport { CellFocusContext } from \"../cells/CellFocusContext\";\n\nexport type DataTableEditableSelectCellProps<T> = BaseEditableCellProps<T>;\n\n/**\n * Renders an editable select cell in a DataTable. This component provides a dropdown menu that\n * appears when the cell is activated, allowing users to select a single value from a list of options.\n * Supports keyboard navigation and commit/cancel operations.\n *\n * @param props - The props for the DataTableEditableSelectCell component\n * @param props.cell - The TanStack table cell instance\n * @param props.cellProps - Props for styling and event handling of the cell container\n * @param props.cellPosition - The position of the cell in the table\n * @param props.children - The content to display when not editing\n * @param props.isHovered - Whether the cell is currently hovered\n * @param ref - Ref to the imperative handle for programmatic control\n * @returns The rendered editable select cell component\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 } = cellProps;\n const [isEditing, setIsEditing] = useState(false);\n\n // Use type-safe helpers to get column ID and value\n const columnId = getColumnId(cell);\n const cellValue = getCellValue(cell, columnId);\n\n const [initialValue, isValidValueType] = useMemo(() => {\n let value: string;\n let isValid = true;\n\n if (cellValue === undefined || cellValue === null) {\n value = \"\";\n isValid = true;\n return [value, isValid];\n }\n\n switch (typeof cellValue) {\n case \"string\":\n case \"number\":\n value = String(cellValue);\n break;\n case \"boolean\":\n value = String(cellValue);\n break;\n default:\n value = \"\";\n isValid = false;\n break;\n }\n if (!isValid) {\n logWarningForInvalidCellValueType({\n columnId: String(columnId),\n editMode: \"select\",\n expectedType: \"string | number | boolean\",\n receivedType: Array.isArray(cellValue) ? \"array\" : typeof cellValue,\n });\n }\n return [value, isValid];\n }, [cellValue, columnId]);\n\n const options = cell.column.columnDef.meta?.options ?? [];\n const [tabIndex, setTabIndex] = useState(-1);\n const { moveFocusToCell } = useDTFocusDispatchContext();\n const cellRef = useRef<HTMLTableCellElement>(null);\n const rowId = cell.row.id;\n const menuElement = useRef<Element | null>(null);\n\n useImperativeHandle(ref, () => ({\n invoke: beginEditing,\n focus: () => {\n cellRef.current?.focus();\n setTabIndex(0);\n },\n }));\n\n const beginEditing = useCallback(() => {\n setIsEditing(true);\n }, [setIsEditing]);\n\n const stopEditing = useCallback(() => {\n setIsEditing(false);\n }, [setIsEditing]);\n\n const onChange = getCellOnChange(cell, columnId);\n const commitValue = useCallback(\n (value: T[typeof columnId]) => {\n if (value !== initialValue) {\n onChange?.(value, rowId);\n }\n stopEditing();\n },\n [rowId, onChange, initialValue, stopEditing],\n );\n\n const cellClasses = cx(\n styles[\"data-table-body-cell-editable\"],\n cellProps.className,\n { [dataTableCellStyles[\"data-table-body-cell-editing\"]]: isEditing },\n );\n\n const handleCellKeyDown = useCallback(\n (\n event: React.KeyboardEvent<HTMLElement>,\n handleMenuKeydown:\n | ((event: React.KeyboardEvent<HTMLButtonElement>) => void)\n | undefined,\n ) => {\n if (isEditing) {\n if (event.key === \"Escape\" || event.key === \"F2\") {\n stopEditing();\n return;\n }\n handleMenuKeydown?.(event as React.KeyboardEvent<HTMLButtonElement>);\n return;\n }\n onCellKeyDown?.(event as React.KeyboardEvent<HTMLDivElement>);\n },\n [onCellKeyDown, isEditing, stopEditing],\n );\n\n const handleOutsidePress = useCallback(() => {\n stopEditing();\n setTabIndex(-1);\n }, [stopEditing]);\n\n const handleCellMouseDown = useCallback(() => {\n if (isEditing) {\n stopEditing();\n return;\n }\n moveFocusToCell(cellPosition);\n beginEditing();\n }, [beginEditing, cellPosition, moveFocusToCell, isEditing, stopEditing]);\n\n const handleCellBlur = useCallback(\n (e: React.FocusEvent<HTMLElement>) => {\n if (menuElement.current?.contains(e.relatedTarget as Node)) {\n // Skip for interactions within the menu\n return;\n }\n setTabIndex(-1);\n stopEditing();\n },\n [setTabIndex, menuElement, stopEditing],\n );\n\n const handleCellFocus = useCallback(\n (event: React.FocusEvent<HTMLTableCellElement>) => {\n if (event.target !== cellRef.current) {\n // Skip for interactions within the cell (e.g. clicking on the menu)\n return;\n }\n event.preventDefault();\n setTabIndex(0);\n },\n [setTabIndex],\n );\n\n const handleMenuItemClick = useCallback(\n (value: T[keyof T]) => {\n commitValue(value);\n },\n [commitValue],\n );\n\n const handleMenuItemKeyDown = useCallback(\n (event: React.KeyboardEvent<HTMLButtonElement>) => {\n if (event.key === \"Escape\" || event.key === \"F2\") {\n cellRef.current?.focus();\n stopEditing();\n }\n },\n [stopEditing],\n );\n\n // Provide focus context to children (e.g., CellError) for keyboard accessibility.\n // Show tooltip when cell has focus but is not in editing mode.\n const cellFocusContextValue = useMemo(\n () => ({ isCellFocused: tabIndex === 0 && !isEditing }),\n [tabIndex, isEditing],\n );\n\n if (!isValidValueType) {\n // Exclude cellProps to avoid passing it to the DOM\n const { cellProps: _cellProps, ...immutableCellProps } = props;\n return <DataTableBodyImmutableCell {...immutableCellProps} />;\n }\n\n return (\n <Menu\n open={isEditing}\n onOutsidePress={handleOutsidePress}\n trigger={({\n ref: triggerRef,\n onKeyDown: menuOnTriggerKeydown,\n [\"aria-controls\"]: triggerAriaControls,\n [\"aria-expanded\"]: triggerAriaExpanded,\n [\"aria-haspopup\"]: triggerAriaHaspopup,\n [\"data-open\"]: triggerDataOpen,\n [\"data-state\"]: triggerDataState,\n }) => {\n menuElement.current =\n document.querySelector(`#${triggerAriaControls}`) || null;\n return (\n <>\n <TableBodyCell\n ref={mergeRefs([\n triggerRef as Ref<HTMLElement>,\n cellRef as Ref<HTMLElement>,\n ])}\n tabIndex={tabIndex}\n type=\"data-table\"\n {...cellProps}\n className={cellClasses}\n onMouseDown={handleCellMouseDown}\n onBlur={handleCellBlur}\n onFocus={handleCellFocus}\n data-cell-pos={formatCellPositionString(cellPosition)}\n aria-controls={triggerAriaControls}\n aria-expanded={triggerAriaExpanded}\n aria-haspopup={triggerAriaHaspopup}\n data-open={triggerDataOpen}\n data-state={triggerDataState}\n onKeyDown={(e) => handleCellKeyDown(e, menuOnTriggerKeydown)}\n >\n <CellFocusContext.Provider value={cellFocusContextValue}>\n {children}\n {!isEditing && <DataTableEditableCellEditIcon />}\n </CellFocusContext.Provider>\n <SrOnly>\n {isEditing\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 }}\n >\n {isEditing &&\n options.map((item) => {\n return (\n <Menu.Item\n key={item.value as string}\n label={item.label}\n onClick={() => handleMenuItemClick(item.value)}\n onKeyDown={handleMenuItemKeyDown}\n />\n );\n })}\n </Menu>\n );\n}\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 {\n useRef,\n KeyboardEvent,\n useMemo,\n useState,\n useCallback,\n ChangeEvent,\n forwardRef,\n useImperativeHandle,\n Ref,\n} from \"react\";\nimport cx from \"classnames\";\n\nimport {\n Flex,\n ListView,\n Popover,\n SearchField,\n SrOnly,\n} from \"../../../../../../components\";\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 { EditableCellImperativeHandle } from \"./types\";\nimport { formatCellPositionString } from \"../util/cellPositionHelpers\";\nimport { useDTFocusDispatchContext } from \"../context/focus/useDTFocusDispatchContext\";\nimport { mergeRefs } from \"../../../../../../hooks/useMergeRefs/useMergeRefs\";\nimport { BaseEditableCellProps } from \"./types\";\nimport {\n getColumnId,\n getCellValue,\n getCellOnChange,\n logWarningForInvalidCellValueType,\n} from \"../util/cellTypeHelpers\";\nimport { DataTableBodyImmutableCell } from \"../cells/DataTableBodyImmutableCell\";\nimport { CellFocusContext } from \"../cells/CellFocusContext\";\n\nexport type DataTableEditableMultiselectCellProps<T> = BaseEditableCellProps<T>;\n\n/**\n * Renders an editable multiselect cell in a DataTable. This component provides a popover with a\n * searchable list that appears when the cell is activated, allowing users to select multiple values\n * from a list of options. Supports keyboard navigation, search filtering, and commit/cancel operations.\n *\n * @param props - The props for the DataTableEditableMultiselectCell component\n * @param props.cell - The TanStack table cell instance\n * @param props.cellProps - Props for styling and event handling of the cell container\n * @param props.cellPosition - The position of the cell in the table\n * @param props.children - The content to display when not editing\n * @param props.isHovered - Whether the cell is currently hovered\n * @param ref - Ref to the imperative handle for programmatic control\n * @returns The rendered editable multiselect cell component\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 } = cellProps;\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: string[];\n let isValid = true;\n\n if (cellValue === null || cellValue === undefined) {\n value = [];\n return [value, isValid];\n } else if (Array.isArray(cellValue)) {\n value = cellValue.map((v) => String(v));\n isValid = true;\n return [value, isValid];\n } else {\n value = [];\n isValid = false;\n logWarningForInvalidCellValueType({\n columnId: String(columnId),\n editMode: \"multiselect\",\n expectedType: \"array of primitive values\",\n receivedType: typeof cellValue,\n });\n return [value, isValid];\n }\n }, [cellValue, columnId]);\n\n const options = useMemo(\n () => cell.column.columnDef.meta?.options ?? [],\n [cell.column.columnDef.meta?.options],\n );\n const [tabIndex, setTabIndex] = useState(-1);\n const { moveFocusToCell } = useDTFocusDispatchContext();\n const cellRef = useRef<HTMLTableCellElement>(null);\n const rowId = cell.row.id;\n const [draftValue, setDraftValue] = useState(initialValue);\n\n const searchFieldRef = useRef<HTMLInputElement>(null);\n const [searchValue, setSearchValue] = useState(\"\");\n const listViewRef = useRef<HTMLUListElement>(null);\n const popoverElement = useRef<Element | null>(null);\n\n const { className, ...restCellProps } = cellProps;\n\n useImperativeHandle(ref, () => ({\n invoke: beginEditing,\n focus: () => {\n cellRef.current?.focus();\n setTabIndex(0);\n },\n }));\n\n const beginEditing = useCallback(() => {\n setIsEditing(true);\n }, [setIsEditing]);\n\n const stopEditing = useCallback(() => {\n setIsEditing(false);\n }, [setIsEditing]);\n\n const onChange = getCellOnChange(cell, columnId);\n const commitValue = useCallback(() => {\n setSearchValue(\"\");\n const arraysEqual =\n draftValue.length === initialValue.length &&\n draftValue.every((val, idx) => val === initialValue[idx]);\n if (!arraysEqual) {\n onChange?.(draftValue as T[typeof columnId], rowId);\n }\n stopEditing();\n }, [rowId, onChange, initialValue, stopEditing, draftValue]);\n\n const cellClasses = cx(styles[\"data-table-body-cell-editable\"], className, {\n [dataTableCellStyles[\"data-table-body-cell-editing\"]]: isEditing,\n });\n\n const resetValue = useCallback(() => {\n setDraftValue(initialValue);\n setSearchValue(\"\");\n stopEditing();\n }, [initialValue, stopEditing]);\n\n const handleCellKeyDown = useCallback(\n (\n event: React.KeyboardEvent<HTMLElement>,\n handlePopoverKeydown:\n | ((event: React.KeyboardEvent<HTMLButtonElement>) => void)\n | undefined,\n ) => {\n if (isEditing) {\n if (event.key === \"Escape\" || event.key === \"F2\") {\n stopEditing();\n return;\n }\n handlePopoverKeydown?.(event as React.KeyboardEvent<HTMLButtonElement>);\n return;\n }\n onCellKeyDown?.(event as React.KeyboardEvent<HTMLDivElement>);\n },\n [onCellKeyDown, isEditing, stopEditing],\n );\n\n const handleCellMouseDown = useCallback(() => {\n if (isEditing) {\n return;\n }\n moveFocusToCell(cellPosition);\n beginEditing();\n }, [beginEditing, cellPosition, moveFocusToCell, isEditing]);\n\n const handleCellBlur = useCallback(\n (e: React.FocusEvent<HTMLElement>) => {\n if (popoverElement.current?.contains(e.relatedTarget as Node)) {\n // Skip for interactions within the popover\n return;\n }\n setTabIndex(-1);\n stopEditing();\n },\n [stopEditing],\n );\n\n const handleCellFocus = useCallback(\n (event: React.FocusEvent<HTMLTableCellElement>) => {\n if (event.target !== cellRef.current) {\n // Skip for interactions within the cell (e.g. clicking on the popover)\n return;\n }\n event.preventDefault();\n setTabIndex(0);\n },\n [setTabIndex],\n );\n\n const handleListViewKeyDown = useCallback(\n (e: KeyboardEvent<HTMLDivElement>) => {\n if ((e.key === \"Tab\" && !e.shiftKey) || e.key === \"F2\") {\n e.preventDefault();\n e.stopPropagation();\n cellRef.current?.focus();\n commitValue();\n }\n if (e.key === \"Escape\") {\n cellRef.current?.focus();\n e.preventDefault();\n e.stopPropagation();\n resetValue();\n }\n if (e.key === \"ArrowDown\" || e.key === \"ArrowUp\") {\n e.preventDefault(); // prevent scrolling the page\n }\n },\n [commitValue, resetValue],\n );\n\n const handleSearchFieldKeyDown = useCallback(\n (e: KeyboardEvent<HTMLInputElement>) => {\n if (e.key === \"F2\") {\n cellRef.current?.focus();\n commitValue();\n }\n if (e.key === \"Escape\") {\n e.preventDefault();\n e.stopPropagation();\n cellRef.current?.focus();\n resetValue();\n }\n if (e.key === \"ArrowDown\") {\n e.preventDefault();\n e.stopPropagation();\n listViewRef.current?.focus();\n }\n },\n [commitValue, resetValue],\n );\n\n const handleListViewSelectionChange = useCallback(\n (items: unknown[]) => {\n if (isEditing) {\n const selectedItems = items as { value: unknown }[];\n setDraftValue(selectedItems.map((item) => String(item.value)));\n }\n },\n [isEditing],\n );\n\n const filteredItems = useMemo(() => {\n if (searchValue === \"\") return options;\n return options.filter((item) =>\n item.label.toLowerCase().includes(searchValue.toLowerCase()),\n );\n }, [options, searchValue]);\n\n // Convert draftValue (string[]) to ItemType[] for ListView\n const selectedItems = useMemo(() => {\n return options.filter(\n (item) =>\n typeof item.value === \"string\" && draftValue.includes(item.value),\n );\n }, [options, draftValue]);\n\n const handleOnClickOutside = useCallback(() => {\n cellRef.current?.focus();\n if (isEditing) {\n commitValue();\n }\n }, [commitValue, isEditing]);\n\n const handleOpenAnimationComplete = useCallback(() => {\n if (isEditing) {\n searchFieldRef.current?.focus();\n }\n }, [isEditing]);\n\n const handleSearchFieldChange = useCallback(\n (e: ChangeEvent<HTMLInputElement>) => {\n setSearchValue(e.target.value);\n },\n [],\n );\n\n // Provide focus context to children (e.g., CellError) for keyboard accessibility.\n // Show tooltip when cell has focus but is not in editing mode.\n const cellFocusContextValue = useMemo(\n () => ({ isCellFocused: tabIndex === 0 && !isEditing }),\n [tabIndex, isEditing],\n );\n\n if (!isValidValueType) {\n // Exclude cellProps to avoid passing it to the DOM\n const { cellProps: _cellProps, ...immutableCellProps } = props;\n return <DataTableBodyImmutableCell {...immutableCellProps} />;\n }\n\n return (\n <Popover\n open={isEditing}\n onOpenAnimationComplete={handleOpenAnimationComplete}\n onClickOutside={handleOnClickOutside}\n placement=\"bottom-start\"\n disableCaret\n >\n <Popover.Trigger>\n {({\n ref: popoverRef,\n onKeyDown: triggerOnKeyDown,\n [\"aria-expanded\"]: triggerAriaExpanded,\n [\"aria-haspopup\"]: triggerAriaHaspopup,\n [\"aria-details\"]: triggerAriaDetails,\n }) => {\n popoverElement.current =\n (triggerAriaDetails\n ? document.querySelector(`#${triggerAriaDetails}`)\n : null) || null;\n return (\n <TableBodyCell\n ref={mergeRefs([\n popoverRef as Ref<HTMLElement>,\n cellRef as Ref<HTMLElement>,\n ])}\n tabIndex={tabIndex}\n type=\"data-table\"\n {...restCellProps}\n className={cellClasses}\n onMouseDown={handleCellMouseDown}\n onBlur={handleCellBlur}\n onFocus={handleCellFocus}\n data-cell-pos={formatCellPositionString(cellPosition)}\n aria-expanded={triggerAriaExpanded}\n aria-haspopup={triggerAriaHaspopup}\n onKeyDown={(e) => handleCellKeyDown(e, triggerOnKeyDown)}\n >\n <CellFocusContext.Provider value={cellFocusContextValue}>\n {children}\n {!isEditing && <DataTableEditableCellEditIcon />}\n </CellFocusContext.Provider>\n <SrOnly>\n {isEditing\n ? \"Press Enter or Space to select cell values. Press F2 to save. Press Escape to cancel.\"\n : \"Press Enter or F2 to edit cell value.\"}\n </SrOnly>\n </TableBodyCell>\n );\n }}\n </Popover.Trigger>\n <Popover.Content>\n <Flex gap=\"4\" direction=\"column\">\n <SearchField\n ref={searchFieldRef}\n onChange={handleSearchFieldChange}\n onKeyDown={handleSearchFieldKeyDown}\n value={searchValue}\n />\n <ListView\n selected={selectedItems}\n onKeyDown={handleListViewKeyDown}\n items={filteredItems}\n onSelectionChange={handleListViewSelectionChange}\n ref={listViewRef}\n >\n {({ items }) =>\n items.map((item) => (\n <ListView.Option item={item} key={item.label}>\n {item.label}\n </ListView.Option>\n ))\n }\n </ListView>\n </Flex>\n </Popover.Content>\n </Popover>\n );\n}\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 { useCallback, useMemo, useRef } from \"react\";\nimport cx from \"classnames\";\n\nimport { 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 { DataTableEditableMultiselectCell } from \"../editable-cells/DataTableEditableMultiselectCell\";\n\nimport styles from \"./DataTableCells.module.scss\";\nimport { Cell } from \"@tanstack/react-table\";\nimport { useCommonPinningStyles } from \"../../../internal/getCommonPinningStyles\";\nimport { useDTFocusDispatchContext } from \"../context/focus/useDTFocusDispatchContext\";\nimport { EditableCellImperativeHandle } from \"../editable-cells/types\";\nimport { CellPosition } from \"../../../internal/types\";\nimport { TableRow } from \"../../../types\";\n\n/**\n * Props for the DataTableBodyMutableCell component\n */\nexport type DataTableBodyMutableCellProps<T> = Omit<\n BaseDataTableBodyCellProps,\n \"onChange\"\n> & {\n /**\n * The position of the cell in the table\n */\n cellPosition: CellPosition;\n /**\n * The TanStack table cell instance\n */\n cell: Cell<T, unknown>;\n /**\n * Whether the cell is currently hovered\n */\n isHovered: boolean;\n};\n\n/**\n * Renders a mutable (editable) body cell in a DataTable. This component handles keyboard navigation\n * and delegates to the appropriate editable cell component (text, select, or multiselect) based on\n * the column's editMode configuration.\n *\n * @param props - The props for the DataTableBodyMutableCell component\n * @param props.cell - The TanStack table cell instance\n * @param props.cellPosition - The position of the cell in the table\n * @param props.children - The content to render in the cell\n * @param props.isHovered - Whether the cell is currently hovered\n * @returns The rendered editable cell component or null if no editMode is configured\n */\nexport function DataTableBodyMutableCell<T>(\n props: DataTableBodyMutableCellProps<T>,\n) {\n const { cell, cellPosition, children, isHovered, ...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 cellError = (cell.row.original as TableRow<T>).meta?.errors?.[\n column.id as keyof T\n ];\n\n const classes = cx(styles[\"data-table-body-cell\"], rest.className, {\n [styles[\"data-table-body-cell-hovered\"]]: isHovered,\n [styles[\"data-table-body-cell-error\"]]: !!cellError,\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 === \"multiselect\") {\n return DataTableEditableMultiselectCell;\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 isHovered={isHovered}\n >\n {children}\n </EditableComponent>\n );\n}\n","import { DataTableBodyCellProps as BaseDataTableBodyCellProps } from \"../../../base/cells/TableBodyCell\";\nimport { Cell } from \"@tanstack/react-table\";\nimport { DataTableBodyMutableCell } from \"./DataTableBodyMutableCell\";\nimport { DataTableBodyImmutableCell } from \"./DataTableBodyImmutableCell\";\nimport { formatCellPositionString } from \"../util/cellPositionHelpers\";\nimport { ReactNode } from \"react\";\nimport { CellPosition } from \"../../../internal/types\";\n\nexport type DataTableBodyCellProps<T> = Omit<\n BaseDataTableBodyCellProps,\n \"onChange\"\n> & {\n cellPosition: CellPosition;\n cell: Cell<T, unknown>;\n children: ReactNode;\n isHovered: boolean;\n};\n\n/**\n * Renders a body cell in a DataTable, delegating to either a mutable (editable) or immutable cell\n * based on the column's editMode configuration.\n *\n * @param props - The props for the DataTableBodyCell component\n * @param props.cell - The TanStack table cell instance\n * @param props.cellPosition - The position of the cell in the table\n * @param props.children - The content to render in the cell\n * @param props.isHovered - Whether the cell is currently hovered\n * @returns The rendered cell component\n */\nexport function DataTableBodyCell<T>(props: DataTableBodyCellProps<T>) {\n const { cell, cellPosition, children, isHovered, ...rest } = props;\n\n const column = cell.column;\n const editMode = column.columnDef.meta?.editMode;\n\n const Component = editMode\n ? DataTableBodyMutableCell<T>\n : DataTableBodyImmutableCell<T>;\n return (\n <Component\n cell={cell}\n cellPosition={cellPosition}\n {...rest}\n data-cell-pos={formatCellPositionString(cellPosition)}\n isHovered={isHovered}\n >\n {children}\n </Component>\n );\n}\n","import { createContext } from \"react\";\n\nexport type DTHoverState = {\n hoveredColumnId: string | null;\n resizingColumnId: string | null;\n};\n\nexport type DTHoverStartAction = {\n type: \"HOVER_START\";\n payload: {\n columnId: string;\n };\n};\n\nexport type DTHoverEndAction = {\n type: \"HOVER_END\";\n payload: {\n columnId: string;\n };\n};\n\nexport type DTResizeStartAction = {\n type: \"RESIZE_START\";\n payload: {\n columnId: string;\n };\n};\n\nexport type DTResizeEndAction = {\n type: \"RESIZE_END\";\n payload: {\n columnId: string;\n };\n};\n\nexport type DTHoverAction =\n | DTHoverStartAction\n | DTHoverEndAction\n | DTResizeStartAction\n | DTResizeEndAction;\n\nexport const DTHoverStateContext = createContext<DTHoverState>({\n hoveredColumnId: null,\n resizingColumnId: null,\n});\nexport const DTHoverDispatchContext = createContext<\n React.Dispatch<DTHoverAction>\n>(() => {});\n","import { useContext } from \"react\";\nimport { DTHoverStateContext } from \"./DTHoverContext\";\n\nexport function useDTHoverStateContext() {\n const state = useContext(DTHoverStateContext);\n return {\n getIsHovered: (columnId: string) => {\n // If a resize is in progress, the column is not considered hovered\n return state.hoveredColumnId === columnId && !state.resizingColumnId;\n },\n hoveredColumnId: state.hoveredColumnId,\n };\n}\n","import { Fragment, ReactNode } from \"react\";\nimport cx from \"classnames\";\nimport { flexRender, Row } from \"@tanstack/react-table\";\n\nimport { Flex } from \"../../../../../components\";\n\nimport { getCommonPinningClasses } from \"../../internal/getCommonPinningClasses\";\nimport { TableRow } from \"../../types\";\n\nimport { DataTableBodyCell } from \"./cells/DataTableBodyCell\";\n\nimport styles from \"./DataTableBody.module.scss\";\nimport { useDTHoverStateContext } from \"./context/hover/useDTHoverStateContext\";\nimport { useColumnOrder } from \"./useColumnOrder\";\nimport { useDTFocusDispatchContext } from \"./context/focus/useDTFocusDispatchContext\";\n\nexport type DataTableBodyRowProps<T> = {\n columnOrder: ReturnType<typeof useColumnOrder>[\"columnOrder\"];\n row: Row<T>;\n rowIndex: number;\n tableHasSubRows: boolean;\n};\n\nexport function DataTableBodyRow<T>({\n columnOrder,\n row,\n rowIndex,\n tableHasSubRows,\n}: DataTableBodyRowProps<T>) {\n const visibleCells = row.getVisibleCells();\n\n const canExpand = row.getCanExpand();\n const isExpanded = row.getIsExpanded();\n const depth = row.depth;\n const id = row.id;\n const original = row.original;\n const parentRowCanExpand = row.getParentRow()?.getCanExpand() ?? false;\n\n const { hoveredColumnId } = useDTHoverStateContext();\n const { focusSubComponent, blurSubComponent } = useDTFocusDispatchContext();\n\n return (\n <Fragment key={row.id}>\n <div\n role=\"row\"\n aria-rowindex={rowIndex + 1} // aria-rowindex is 1-based, uses sorted position\n aria-expanded={tableHasSubRows && canExpand ? isExpanded : undefined}\n aria-level={\n tableHasSubRows && (canExpand || parentRowCanExpand)\n ? depth + 1\n : undefined\n }\n className={styles[\"data-table-body-row\"]}\n >\n {visibleCells.map((cell) => {\n const isLastInParentGroup = cell.column.parent\n ? cell.column.parent.getLeafColumns().slice(-1)[0] === cell.column\n : false;\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 });\n const columnIndex = columnOrder.indexOf(cell.column.getIndex());\n return (\n <DataTableBodyCell<T>\n key={cell.id}\n cell={cell}\n cellPosition={{ rowIndex, columnIndex }}\n aria-colindex={columnIndex + 1} // aria-colindex is 1-based\n className={cellClasses}\n isHovered={hoveredColumnId === cell.column.id}\n >\n {flexRender(cell.column.columnDef.cell, cell.getContext())}\n </DataTableBodyCell>\n );\n })}\n </div>\n {isExpanded && \"subComponent\" in (original as TableRow<T>) && (\n <div\n id={`${id}-sub-component`}\n aria-hidden={!isExpanded}\n className={styles[\"data-table-body-sub-component-row\"]}\n onFocus={() => {\n focusSubComponent();\n }}\n onBlur={() => {\n blurSubComponent();\n }}\n >\n <div className={styles[\"data-table-body-sub-component-container\"]}>\n <Flex className={styles[\"data-table-body-sub-component-content\"]}>\n {(original as TableRow<T>).subComponent as ReactNode}\n </Flex>\n </div>\n </div>\n )}\n </Fragment>\n );\n}\n","import { useCallback, useMemo } from \"react\";\nimport type { Column, Table as TanstackTable } from \"@tanstack/react-table\";\n\n/**\n * Hook to analyze the columns in the table to determine the visual position and pinning status\n * @param table - The table to analyze\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 return {\n columnOrder,\n };\n};\n","import { ComponentPropsWithoutRef } from \"react\";\nimport { Table as TanstackTable } from \"@tanstack/react-table\";\nimport { TableBody } from \"../../base/TableBody\";\nimport { DataTableBodyRow } from \"./DataTableBodyRow\";\nimport { useColumnOrder } from \"./useColumnOrder\";\n\n/**\n * Props for the DataTableBody component\n * @extends {ComponentPropsWithoutRef<\"div\">}\n */\nexport type DataTableBodyProps<T> = {\n /**\n * The table instance from @tanstack/react-table to render\n */\n table: TanstackTable<T>;\n /**\n * Whether the table has sub rows\n */\n hasSubRows: boolean;\n} & ComponentPropsWithoutRef<\"div\">;\n\nexport const DataTableBodyContent = <T,>({\n table,\n hasSubRows,\n}: {\n table: TanstackTable<T>;\n hasSubRows: boolean;\n}) => {\n const { columnOrder } = useColumnOrder({ table });\n return table\n .getRowModel()\n .rows.map((row, rowIndex) => (\n <DataTableBodyRow<T>\n columnOrder={columnOrder}\n key={row.id}\n row={row}\n rowIndex={rowIndex + table.getHeaderGroups().length}\n tableHasSubRows={hasSubRows}\n />\n ));\n};\n\nexport function DataTableBody<T>(props: DataTableBodyProps<T>) {\n const { table, hasSubRows, ...rest } = props;\n return (\n <TableBody type=\"data-table\" {...rest}>\n <DataTableBodyContent table={table} hasSubRows={hasSubRows} />\n </TableBody>\n );\n}\n","import { ComponentPropsWithoutRef } from \"react\";\nimport cx from \"classnames\";\n\nimport styles from \"./TableFooter.module.scss\";\n\n/**\n * Props for the TableFooter component\n * @extends ComponentPropsWithoutRef<\"tfoot\">\n * @extends ComponentPropsWithoutRef<\"div\">\n */\nexport type TableFooterProps =\n | ({\n /**\n * The type of table being rendered\n */\n type: \"simple\";\n } & ComponentPropsWithoutRef<\"tfoot\">)\n | ({\n /**\n * The type of table being rendered\n */\n type: \"data-table\";\n } & ComponentPropsWithoutRef<\"div\">);\n\n/**\n * Table footer component for simple presentational or complex data tables\n * @param props - The props for the TableFooter component\n * @param props.type - The type of table being rendered\n * @param props.children - The children of the TableFooter component\n * @param props.ref - The ref of the TableFooter component\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 { 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 colSpan?: number;\n};\n\n/**\n * The props for the TableFooterCell component\n */\nexport type TableFooterCellProps =\n | ({\n /**\n * The type of table being rendered\n */\n type: \"simple\";\n } & SimpleTableFooterCellProps)\n | ({\n /**\n * The type of table being rendered\n */\n type: \"data-table\";\n } & DataTableFooterCellProps);\n\n/**\n * The styled table footer cell component\n * @param props - The props for the TableFooterCell component\n * @param props.type - The type of table being rendered\n * @param props.children - The children to render in the cell\n * @param props.className - The class name of the TableFooterCell component\n * @param props.rest - The rest of the props\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, useState } from \"react\";\nimport cx from \"classnames\";\n\nimport { TableFooterCell } from \"../../../base/cells/TableFooterCell\";\nimport { 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\n/**\n * Props for the DataTableFooterCell component\n * @extends BaseDataTableFooterCellProps\n */\nexport type DataTableFooterCellProps = BaseDataTableFooterCellProps & {\n cellPosition: { rowIndex: number; columnIndex: number };\n};\n\n/**\n * Data table footer cell with focus management\n * @param props - The props for the DataTableFooterCell component\n * @param props.cellPosition - The cell position of the cell\n * @param props.children - The children of the DataTableFooterCell component\n * @param props.className - The class name of the DataTableFooterCell component\n * @param props.tabIndex - The tab index of the cell\n */\nexport function DataTableFooterCell(props: DataTableFooterCellProps) {\n const { cellPosition, children, className, ...rest } = props;\n const [tabIndex, setTabIndex] = useState(-1);\n\n const footerCellRef = useRef<HTMLDivElement>(null);\n\n const { moveFocusToCell } = useDTFocusDispatchContext();\n\n const handleFocus = useCallback(() => {\n moveFocusToCell(cellPosition);\n setTabIndex(0);\n }, [moveFocusToCell, cellPosition, setTabIndex]);\n\n const handleBlur = useCallback(() => {\n setTabIndex(-1);\n }, [setTabIndex]);\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={tabIndex}\n onFocus={handleFocus}\n onBlur={handleBlur}\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 { ComponentPropsWithoutRef } from \"react\";\nimport { Table as TanstackTable } from \"@tanstack/react-table\";\nimport cx from \"classnames\";\n\nimport { getCommonPinningStyles } from \"../../internal/getCommonPinningStyles\";\nimport { getCommonPinningClasses } from \"../../internal/getCommonPinningClasses\";\n\nimport { ColumnDef } from \"../../types\";\nimport { DataTableProps } from \"../DataTable\";\nimport { TableFooter } from \"../../base/TableFooter\";\nimport { DataTableFooterCell } from \"./cells/DataTableFooterCell\";\n\nimport styles from \"./DataTableFooter.module.scss\";\nimport { useColumnOrder } from \"./useColumnOrder\";\n\n/**\n * Props for the default/configured table footer rows\n * @extends TanstackTable<T>\n * @extends ColumnDef<T>[]\n */\nexport type DefaultTableFooterRowsProps<T> = {\n table: TanstackTable<T>;\n columns: ColumnDef<T>[];\n};\n\n/**\n * Props for the custom table footer rows\n * @extends DataTableProps<T>\n */\nexport type CustomTableFooterRowsProps<T> = {\n columnCount: number;\n customFooter: DataTableProps<T>[\"customFooter\"];\n table: TanstackTable<T>;\n};\n\n/**\n * Props for the DataTableFooter component\n * @extends ComponentPropsWithoutRef<\"div\">\n */\nexport type DataTableFooterProps<T> = {\n /**\n * The table instance from @tanstack/react-table to render\n */\n table: TanstackTable<T>;\n /**\n * The columns of the table\n */\n columns: ColumnDef<T>[];\n /**\n * The custom footer of the table\n */\n customFooter?: DataTableProps<T>[\"customFooter\"];\n} & ComponentPropsWithoutRef<\"div\">;\n\nfunction DefaultTableFooterRows<T>({\n table,\n columns,\n}: DefaultTableFooterRowsProps<T>) {\n // Recursively find a column by ID in the column tree\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 // Recursively get the maximum number of footer rows from a column and its nested columns\n const getMaxFooterRows = (column: ColumnDef<T>): number => {\n let currentMax = 0;\n\n // Check current column's footer content\n if (Array.isArray(column.footerContent)) {\n currentMax = column.footerContent.length;\n } else if (column.footerContent) {\n currentMax = 1;\n }\n\n // Recursively check nested columns\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 // Filter out columns that have nested columns (column groups)\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>({\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 length:\n // total columns\n columnCount -\n // minus columns merged using colSpan\n footerRow.reduce((acc, curr) => acc + curr.colSpan, 0) +\n // plus columns added in the custom footer row\n footerRow.length,\n }).map((_, index) => {\n const footer = footerRow[index] ?? { content: \"\", colSpan: 1 };\n // Use grid-column span for colspan cells\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 // Advance the column index by the colSpan for the next iteration\n columnIndex += footer.colSpan;\n return cell;\n });\n })()}\n </div>\n );\n });\n}\n\n/**\n * Data table footer, which can be either a configured or custom footer\n * @param props - The props for the DataTableFooter component\n * @param props.table - The table instance from @tanstack/react-table to render\n * @param props.customFooter - The custom footer of the table\n * @param props.columns - The columns of the table\n */\nexport function DataTableFooter<T>({\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 Error from \"@servicetitan/hammer-icon/mdi/round/error.svg\";\nimport { Icon } from \"../../../../../../components/Icon\";\nimport styles from \"./DataTableCells.module.scss\";\nimport { Tooltip } from \"../../../../../../components\";\nimport { useCellFocusContext } from \"./CellFocusContext\";\nimport { useState } from \"react\";\n\nexport type CellErrorProps = {\n /** Error value - true for error without message, string for error with accessible message */\n error: boolean | string;\n};\n\n/**\n * Renders an error icon for cells in error state.\n * When error is a string, it's used as the aria-label for accessibility.\n * When the parent cell is focused, the tooltip is displayed for keyboard accessibility.\n */\nexport function CellError({ error }: CellErrorProps) {\n const errorMessage = typeof error === \"string\" ? error : undefined;\n const cellFocusContext = useCellFocusContext();\n const [isHovered, setIsHovered] = useState(false);\n\n const icon = (\n <Icon\n svg={Error}\n className={styles[\"cell-error-icon\"]}\n aria-label={\n errorMessage\n ? `Cell has an error: ${errorMessage}`\n : \"Cell has an error.\"\n }\n />\n );\n\n if (!errorMessage) {\n return icon;\n }\n\n // When the cell is focused via keyboard, force the tooltip open, otherwise, open on hover.\n const isTooltipOpen = cellFocusContext?.isCellFocused || isHovered;\n\n return (\n <Tooltip open={isTooltipOpen}>\n {/* We have to track hover manually because the tooltip doesn't like being conditionally controlled */}\n <Tooltip.Trigger\n onMouseEnter={() => setIsHovered(true)}\n onMouseLeave={() => setIsHovered(false)}\n >\n {icon}\n </Tooltip.Trigger>\n <Tooltip.Content>{errorMessage}</Tooltip.Content>\n </Tooltip>\n );\n}\n","import {\n createColumnHelper,\n ColumnDef as TanstackColumnDef,\n} from \"@tanstack/react-table\";\n\nimport Flex from \"../../../../../../components/Flex\";\n\nimport {\n ColumnDef,\n ColumnType,\n ColumnTypeConfig,\n TableRow,\n} from \"../../../types\";\nimport { TableEmptyCellContent } from \"../../../base/cells/TableEmptyCellContent\";\nimport { CellError } from \"../cells/CellError\";\nimport {\n getColumnTypeDefaults,\n resolveColumnTypeConfig,\n} from \"../../../columnTypeDefaults\";\n\n// Extend TanStack Table's ColumnMeta type to include our custom properties\ndeclare module \"@tanstack/react-table\" {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n interface ColumnMeta<TData, TValue> {\n editMode?: ColumnDef<TData>[\"editMode\"];\n editConfig?: ColumnDef<TData>[\"editConfig\"];\n onChange?: ColumnDef<TData>[\"onChange\"];\n options?: ColumnDef<TData>[\"options\"];\n /**\n * The original column definition, stored for type narrowing and runtime access\n */\n columnDef?: ColumnDef<TData>;\n }\n}\n\n/**\n * Props for the getTanStackColumnDef function\n */\nexport type TanStackColumnDefProps<T> = {\n /**\n * The column definition to convert to a TanStack column definition\n */\n columnDef: ColumnDef<T>;\n};\n\n/**\n * Build the column definition for TanStack useReactTable.\n * This converts our ColumnDef<T> to TanStack's column definition format,\n * preserving the original column definition in meta for type narrowing.\n *\n * @param props - The props for the getTanStackColumnDef function\n * @param props.columnDef - The column definition to convert\n * @returns The column definition for TanStack useReactTable\n */\nexport function getTanStackColumnDef<T>({\n columnDef,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n}: TanStackColumnDefProps<T>): TanstackColumnDef<T, any> {\n const columnHelper = createColumnHelper<T>();\n\n // If this column has sub-columns, create a group column\n if (columnDef.columns && columnDef.columns.length > 0) {\n return columnHelper.group({\n id: columnDef.id as string,\n header: columnDef.headerLabel,\n columns: columnDef.columns.map((column) =>\n getTanStackColumnDef<T>({\n columnDef: column as ColumnDef<T>,\n }),\n ),\n footer: columnDef.footerContent\n ? () => columnDef.footerContent\n : undefined,\n enableResizing: columnDef.resizable,\n });\n }\n\n // Resolve type defaults if type is specified\n let resolvedAlign = columnDef.align;\n let resolvedRenderCell = columnDef.renderCell;\n\n if (columnDef.type) {\n const [columnType, typeOptions] = resolveColumnTypeConfig(\n columnDef.type as ColumnTypeConfig<ColumnType>,\n );\n const typeDefaults = getColumnTypeDefaults(columnType);\n\n // Apply type defaults if not explicitly overridden\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 // Otherwise, create an accessor column\n // The accessor preserves the type T[columnDef.id] as the value type,\n // though TanStack Table's Cell type doesn't expose this at the table level\n return columnHelper.accessor((row: T) => row[columnDef.id], {\n id: columnDef.id as string,\n cell: (info) => {\n let cellContent;\n if (resolvedRenderCell) {\n cellContent = resolvedRenderCell(info.getValue(), {\n row: info.row.original,\n depth: info.row.depth,\n });\n } else {\n cellContent = info.getValue();\n }\n if (cellContent === \"\") {\n cellContent = <TableEmptyCellContent />;\n }\n\n const cellError = (info.row.original as TableRow<T>).meta?.errors?.[\n columnDef.id as keyof T\n ];\n\n return (\n <Flex\n justifyContent={resolvedAlign}\n alignItems=\"center\"\n wrap=\"wrap\"\n gap=\"1\"\n style={{\n width: \"100%\",\n }}\n >\n {cellError && <CellError error={cellError} />}\n {cellContent ?? <TableEmptyCellContent />}\n </Flex>\n );\n },\n header: () => (\n <Flex justifyContent={resolvedAlign} wrap=\"wrap\" grow={1}>\n {columnDef.headerLabel}\n </Flex>\n ),\n footer: columnDef.footerContent ? () => columnDef.footerContent : undefined,\n minSize: columnDef.minWidth,\n maxSize: columnDef.maxWidth,\n enableResizing: columnDef.resizable,\n enableSorting: !!columnDef.sortable,\n meta: {\n editMode: columnDef.editMode,\n editConfig: columnDef.editConfig,\n onChange: columnDef.onChange,\n options: columnDef.options,\n columnDef: columnDef, // Store original for type narrowing\n },\n\n // If custom sorting function is provided, use it\n ...(columnDef.sortable && typeof columnDef.sortable === \"function\"\n ? {\n sortingFn: (rowA, rowB, colId) => {\n if (typeof columnDef.sortable === \"function\") {\n return columnDef.sortable(\n rowA.getValue(colId),\n rowB.getValue(colId),\n );\n }\n return 0;\n },\n }\n : undefined),\n });\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 { ComponentPropsWithoutRef } from \"react\";\nimport cx from \"classnames\";\n\nimport styles from \"./TableHeader.module.scss\";\n\n/**\n * Props for the TableHeader component\n * @extends ComponentPropsWithoutRef<\"thead\">\n * @extends ComponentPropsWithoutRef<\"div\">\n */\nexport type TableHeaderProps =\n | ({\n /**\n * The type of table being rendered\n */\n type: \"simple\";\n } & ComponentPropsWithoutRef<\"thead\">)\n | ({\n /**\n * The type of table being rendered\n */\n type: \"data-table\";\n } & ComponentPropsWithoutRef<\"div\">);\n\n/**\n * Table header component for simple presentational or complex data tables\n * @param props - The props for the TableHeader component\n * @param props.type - The type of table being rendered\n * @param props.children - The children of the TableHeader component\n * @param props.ref - The ref of the TableHeader component\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 { ComponentPropsWithoutRef, forwardRef } from \"react\";\nimport cx from \"classnames\";\n\nimport { CommonTableCellProps } from \"./types\";\n\nimport styles from \"./TableCells.module.scss\";\n\n/**\n * The common props for the TableHeaderCell component\n */\nexport type CommonTableHeaderCellProps = CommonTableCellProps & {\n /**\n * Whether the cell is a group cell (for grouped columns)\n */\n isGroup?: boolean;\n /**\n * Whether the header cell can be used to activate column sorting\n */\n isSortable?: boolean;\n};\n\nexport type SimpleTableHeaderCellProps = CommonTableHeaderCellProps &\n ComponentPropsWithoutRef<\"th\">;\n\nexport type DataTableHeaderCellProps = CommonTableHeaderCellProps &\n ComponentPropsWithoutRef<\"div\">;\n\n/**\n * The props for the TableHeaderCell component\n */\nexport type TableHeaderCellProps =\n | ({\n /**\n * The type of table being rendered\n */\n type: \"simple\";\n } & SimpleTableHeaderCellProps)\n | ({\n /**\n * The type of table being rendered\n */\n type: \"data-table\";\n } & DataTableHeaderCellProps);\n\n/**\n * The styled table header cell component\n * @param props - The props for the TableHeaderCell component\n * @param props.type - The type of table being rendered\n * @param props.children - The children to render in the cell\n * @param props.className - The class name of the TableHeaderCell component\n * @param props.rest - The rest of the props\n */\nexport const TableHeaderCell = forwardRef<\n HTMLTableCellElement | HTMLDivElement,\n TableHeaderCellProps\n>(\n (\n {\n type,\n children,\n className,\n isGroup,\n isSortable,\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-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, Ref, useCallback, useRef, useState } from \"react\";\nimport cx from \"classnames\";\n\nimport { TableHeaderCell } from \"../../../base/cells/TableHeaderCell\";\nimport { HeaderContext } from \"@tanstack/react-table\";\nimport { 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\";\n\n/**\n * Props for the DataTableHeaderCell component\n * @extends BaseDataTableHeaderCellProps\n */\nexport type DataTableHeaderCellProps<T> = BaseDataTableHeaderCellProps & {\n cellPosition: { rowIndex: number; columnIndex: number };\n header: HeaderContext<T, unknown>;\n};\n\n/**\n * Data table header cell with focus management\n * @param props - The props for the DataTableHeaderCell component\n * @param props.cellPosition - The cell position of the cell\n * @param props.children - The children of the DataTableHeaderCell component\n * @param props.header - The header of the DataTableHeaderCell component\n * @param props.isFocused - Whether the cell is focused\n */\nfunction DataTableHeaderCellInner<T>(\n props: DataTableHeaderCellProps<T>,\n forwardedRef: Ref<HTMLDivElement>,\n) {\n const { cellPosition, children, header, className, ...rest } = props;\n\n const internalRef = useRef<HTMLDivElement>(null);\n\n // Merge internal and forwarded refs\n const setRefs = useCallback(\n (element: HTMLDivElement | null) => {\n // Set internal ref\n (internalRef as React.MutableRefObject<HTMLDivElement | null>).current =\n element;\n // Set forwarded ref\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 const { moveFocusToCell } = useDTFocusDispatchContext();\n const [tabIndex, setTabIndex] = useState(-1);\n const handleFocus = useCallback(() => {\n moveFocusToCell(cellPosition);\n setTabIndex(0);\n }, [moveFocusToCell, cellPosition, setTabIndex]);\n\n const handleBlur = useCallback(() => {\n setTabIndex(-1);\n }, [setTabIndex]);\n\n const { jumpFocus, moveFocus } = useDTFocusDispatchContext();\n\n // Derive cell action from column ID\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.columnDef.enableSorting;\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 case \" \":\n case \"Enter\": {\n if (isSelectCell) {\n event.preventDefault();\n header.table.toggleAllRowsSelected();\n return;\n }\n if (isExpandCell) {\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 handleClick = useCallback(\n (event: React.MouseEvent) => {\n if (header.column.columnDef.enableSorting) {\n // Check if the click target is within a resize handle\n const target = event.target as HTMLElement;\n const resizeHandle = target.closest(\n '[aria-roledescription=\"Resize handle\"]',\n );\n\n // If clicking on resize handle, don't trigger sorting\n if (resizeHandle) {\n return;\n }\n\n // Otherwise, trigger sorting\n header.column.getToggleSortingHandler()?.(event);\n }\n },\n [header.column],\n );\n\n return (\n <TableHeaderCell\n type=\"data-table\"\n {...rest}\n ref={setRefs}\n tabIndex={tabIndex}\n onFocus={handleFocus}\n onClick={handleClick}\n onBlur={handleBlur}\n onKeyDown={handleKeyDown}\n className={cx(styles[\"data-table-header-cell\"], className)}\n data-cell-pos={formatCellPositionString(cellPosition)}\n aria-sort={\n header.column.getIsSorted() === \"asc\"\n ? \"ascending\"\n : header.column.getIsSorted() === \"desc\"\n ? \"descending\"\n : undefined\n }\n >\n {children}\n {header.column.columnDef.enableSorting && (\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/**\n * Data table header cell with focus management and ref forwarding\n */\nexport const DataTableHeaderCell = forwardRef(DataTableHeaderCellInner) as <T>(\n props: DataTableHeaderCellProps<T> & { ref?: Ref<HTMLDivElement> },\n) => ReturnType<typeof DataTableHeaderCellInner>;\n","import cx from \"classnames\";\nimport { Header } from \"@tanstack/react-table\";\n\nimport styles from \"./ResizeHandle.module.scss\";\n\n/**\n * Props for the ResizeHandle component\n * @property {Header<T, unknown>} header - The header instance from TanStack Table\n * @property {() => void} [onResizeStart] - Callback fired before resize begins, useful for initializing state\n */\nexport type ResizeHandleProps<T> = {\n header: Header<T, unknown>;\n onResizeStart?: () => void;\n onResizeEnd?: () => void;\n};\n\n/**\n * Resize handle component resizing table columns\n * @param props - The props for the ResizeHandle component\n * @param props.header - The header of the ResizeHandle component\n * @param props.onResizeStart - Optional callback fired before resize begins\n */\nexport function ResizeHandle<T>({\n header,\n onResizeStart,\n onResizeEnd,\n}: ResizeHandleProps<T>) {\n const classes = cx(styles[\"resize-handle\"], {\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 />\n );\n}\n","import { useContext } from \"react\";\nimport { DTHoverDispatchContext } from \"./DTHoverContext\";\n\nexport function useDTHoverDispatchContext() {\n return useContext(DTHoverDispatchContext);\n}\n","import { ComponentPropsWithoutRef, useCallback, useRef } from \"react\";\nimport { flushSync } from \"react-dom\";\nimport { flexRender, 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 { useDTHoverDispatchContext } from \"./context/hover/useDTHoverDispatchContext\";\nimport { useColumnOrder } from \"./useColumnOrder\";\nimport {\n INTERNAL_ROW_ACTION_PRIMARY_COLUMN_ID,\n INTERNAL_ROW_ACTION_SECONDARY_COLUMN_ID,\n} from \"./constants\";\n\n/**\n * Props for the DataTableHeader component\n * @extends TanstackTable<T>\n * @extends ComponentPropsWithoutRef<\"div\">\n */\ntype DataTableHeaderProps<T> = {\n table: TanstackTable<T>;\n} & ComponentPropsWithoutRef<\"div\">;\n\n/**\n * Data table header container\n * @param props - The props for the DataTableHeader component\n * @param props.table - The table instance from @tanstack/react-table to render\n */\nexport function DataTableHeader<T>({ table }: DataTableHeaderProps<T>) {\n const dispatch = useDTHoverDispatchContext();\n\n const handleHoverColumn = useCallback(\n (columnId: string) => {\n dispatch({\n type: \"HOVER_START\",\n payload: { columnId },\n });\n },\n [dispatch],\n );\n\n const handleHoverColumnLeave = useCallback(\n (columnId: string) => {\n dispatch({\n type: \"HOVER_END\",\n payload: { columnId },\n });\n },\n [dispatch],\n );\n\n // Store refs to header cells for measuring actual DOM width during resize\n const cellRefs = useRef<Map<string, HTMLDivElement>>(new Map());\n\n // Create a resize start handler that initializes columnSizing with the actual DOM width\n // Uses flushSync to ensure the DOM is updated with the new width before TanStack measures it\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 handleResizeEnd = useCallback(\n (columnId: string) => {\n dispatch({\n type: \"RESIZE_END\",\n payload: { columnId },\n });\n },\n [dispatch],\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 // Use grid-column span for grouped columns\n const gridColumn =\n header.colSpan > 1 ? `span ${header.colSpan}` : undefined;\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 style={{\n gridColumn,\n ...getCommonPinningStyles(header.column),\n }}\n aria-colspan={header.colSpan}\n isGroup={\n \"columns\" in header.column.columnDef ||\n (header.getContext().header.column.parent &&\n isLastInParentGroup)\n }\n isSortable={header.column.columnDef.enableSorting}\n isSelectCell={isInternalSelectColumn}\n isExpandCell={isInternalExpandColumn}\n onMouseEnter={\n isInternalExpandColumn || isInternalSelectColumn\n ? undefined\n : () => handleHoverColumn(header.column.id)\n }\n onMouseLeave={\n isInternalExpandColumn || isInternalSelectColumn\n ? undefined\n : () => handleHoverColumnLeave(header.column.id)\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=\"flex-end\"\n gap={2}\n style={{\n width: \"100%\",\n }}\n >\n <Flex direction=\"row\" alignItems=\"center\" gap={2} grow={1}>\n {flexRender(\n header.column.columnDef.header,\n header.getContext(),\n )}\n {{\n asc: <Icon svg={IconArrowUpward} size=\"small\" />,\n desc: <Icon svg={IconArrowDownward} size=\"small\" />,\n }[header.column.getIsSorted() as string] ?? null}\n </Flex>\n {header.column.columnDef.enableResizing && (\n <ResizeHandle\n header={header}\n onResizeStart={createResizeStartHandler(\n header.column.id,\n )}\n onResizeEnd={() => handleResizeEnd(header.column.id)}\n />\n )}\n </Flex>\n )}\n </DataTableHeaderCell>\n );\n })}\n </div>\n ))}\n </TableHeader>\n );\n}\n","import { ComponentPropsWithoutRef, forwardRef } from \"react\";\nimport cx from \"classnames\";\n\nimport { LayoutUtilProps } from \"../../../../types\";\nimport { useLayoutPropsUtil } from \"../../../../internal/hooks/useLayoutPropsUtil\";\n\nimport styles from \"./TableContainer.module.scss\";\n\n/**\n * Props for the TableContainer component\n * @extends LayoutUtilProps\n * @extends ComponentPropsWithoutRef<\"div\">\n */\nexport type TableContainerProps = LayoutUtilProps &\n ComponentPropsWithoutRef<\"div\">;\n\n/**\n * Styled container for tables that includes a scroll container and provides consistent background and border treatment\n * @param props - The props for the TableContainer component\n * @param props.children - The children of the TableContainer component\n * @param props.className - The class name of the TableContainer component\n * @param props.style - The style of the TableContainer component\n * @param props.ref - The ref of the TableContainer component\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 { Pagination, PaginationProps } from \"../../../../..\";\n\nimport styles from \"./DataTablePagination.module.scss\";\n\nexport type DataTablePaginationProps = Pick<\n PaginationProps,\n | \"page\"\n | \"itemsPerPage\"\n | \"totalItemCount\"\n | \"showCount\"\n | \"onPageChange\"\n | \"onItemsPerPageChange\"\n | \"itemsPerPageOptions\"\n>;\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","import { useState, useEffect } from \"react\";\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\n useEffect(() => {\n async function resolveData() {\n if (dataOrPromise instanceof Promise) {\n setIsLoading(true);\n try {\n const data = await dataOrPromise;\n setResolvedData(data);\n setIsLoading(false);\n } catch (_error) {\n setError(true);\n setIsLoading(false);\n setResolvedData(null);\n }\n } else {\n setResolvedData(dataOrPromise);\n setIsLoading(false);\n }\n }\n resolveData();\n }, [dataOrPromise]);\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 { useReducer } from \"react\";\nimport {\n DTHoverAction,\n DTHoverDispatchContext,\n DTHoverState,\n DTHoverStateContext,\n} from \"./DTHoverContext\";\n\nexport function DTHoverProvider({ children }: { children: React.ReactNode }) {\n const [state, dispatch] = useReducer(reducer, initialState);\n\n return (\n <DTHoverStateContext.Provider value={state}>\n <DTHoverDispatchContext.Provider value={dispatch}>\n {children}\n </DTHoverDispatchContext.Provider>\n </DTHoverStateContext.Provider>\n );\n}\n\nfunction reducer(state: DTHoverState, action: DTHoverAction): DTHoverState {\n switch (action.type) {\n case \"HOVER_START\": {\n return {\n ...state,\n hoveredColumnId: action.payload.columnId,\n };\n }\n case \"HOVER_END\": {\n // If the column currently in state is not the same as the column that is being left, don't update the state\n if (state.hoveredColumnId !== action.payload.columnId) {\n return state;\n }\n return {\n ...state,\n hoveredColumnId: null,\n };\n }\n case \"RESIZE_START\": {\n return {\n ...state,\n resizingColumnId: action.payload.columnId,\n };\n }\n case \"RESIZE_END\": {\n return {\n ...state,\n resizingColumnId: null,\n };\n }\n default: {\n throw new Error(\"Unknown action\");\n }\n }\n}\n\nconst initialState: DTHoverState = {\n hoveredColumnId: null,\n resizingColumnId: null,\n};\n","/**\n * Scrolls a table cell into view, accounting for sticky headers/footers and pinned columns.\n * Used for keyboard navigation to ensure focused cells are visible.\n *\n * @param element - The cell element to scroll into view\n * @param stickyDimensions - The dimensions of pinned columns\n * @param stickyDimensions.leftWidth - Width of left-pinned columns\n * @param stickyDimensions.rightWidth - Width of right-pinned columns\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 const elementRect = element.getBoundingClientRect();\n const scrollContainerRect = scrollContainer.getBoundingClientRect();\n\n // Use clientWidth/clientHeight instead of bounding rect dimensions.\n // getBoundingClientRect includes 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 // Calculate visible area (excluding sticky regions)\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 // Check if element is fully visible within the non-sticky area\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 // Calculate scroll offsets\n const getScrollByLeft = (): number => {\n // Element is under left pinned columns - scroll left to bring left edge to visibleLeft\n if (elementRect.x < visibleLeft) {\n return elementRect.x - visibleLeft;\n }\n // Element is under right pinned columns - scroll right to bring right edge to visibleRight\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 // Element is under header - scroll up to bring top of element to visibleTop\n if (elementRect.y < visibleTop) {\n return elementRect.y - visibleTop;\n }\n // Element is under footer - scroll down to bring bottom of element to visibleBottom\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 } from \"react\";\nimport {\n DTFocusAction,\n DTFocusDispatchContext,\n DTFocusState,\n DTFocusStateContext,\n} from \"./DTFocusContext\";\nimport { CellPosition } from \"../../../../internal/types\";\nimport {\n areCellPositionsEqual,\n formatCellPositionString,\n} from \"../../util/cellPositionHelpers\";\nimport { scrollCellIntoView } from \"../../../../internal/scrollCellIntoView\";\n\nconst initialState: DTFocusState = {\n focusedCell: null,\n focusRestorePoint: { rowIndex: 0, columnIndex: 0 },\n hasFocusBeenDisrupted: false,\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 hasFocusBeenDisrupted: false,\n };\n }\n case \"FOCUS_CELL\": {\n return {\n ...state,\n focusedCell: action.payload.cellPosition,\n focusRestorePoint: action.payload.cellPosition,\n hasFocusBeenDisrupted: false,\n };\n }\n case \"FOCUS_TABLE\": {\n return {\n ...state,\n // Focus the focus restore point (i.e. the last focused cell when the table was blurred or 0,0 if never focused)\n focusedCell: state.focusRestorePoint,\n };\n }\n // Move to the next cell in the given direction\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 // Jump to the first/last cell in the given direction\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 hasFocusBeenDisrupted: false,\n };\n }\n case \"FOCUS_SUB_COMPONENT\": {\n return {\n ...state,\n hasFocusBeenDisrupted: true,\n };\n }\n case \"BLUR_SUB_COMPONENT\": {\n // Meaningless action, but have it if we need it\n return {\n ...state,\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}\n\nexport function DTFocusProvider({\n children,\n rowCount,\n columnCount,\n tableRef,\n leftPinnedWidth,\n rightPinnedWidth,\n}: DTFocusProviderProps) {\n const stateRef = useRef<DTFocusState>(initialState);\n const dispatch = useCallback(\n (action: DTFocusAction) => {\n const newState = reducer(stateRef.current, action, rowCount, columnCount);\n let shouldSkipFocusUpdate = false;\n // If the focused cell is the same as the current focused cell, skip the update/focus\n if (\n areCellPositionsEqual(\n newState.focusedCell,\n stateRef.current.focusedCell,\n )\n ) {\n shouldSkipFocusUpdate = true;\n if (action.type === \"FOCUS_TABLE\" && newState.hasFocusBeenDisrupted) {\n shouldSkipFocusUpdate = false;\n }\n }\n stateRef.current = newState;\n\n // If there is no new cell to focus, skip focusing.\n if (!newState.focusedCell || shouldSkipFocusUpdate) {\n return;\n }\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 // Focus moved to a non-existent cell. This is possible if rows per page was reduced.\n dispatch({\n type: \"FOCUS_CELL_MANUALLY\",\n payload: { cellPosition: { rowIndex: 0, columnIndex: 0 } },\n });\n }\n },\n [rowCount, columnCount, tableRef, leftPinnedWidth, rightPinnedWidth],\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 {\n ComponentPropsWithoutRef,\n forwardRef,\n Ref,\n useCallback,\n useContext,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport {\n getCoreRowModel,\n getSortedRowModel,\n useReactTable,\n ColumnPinningState,\n RowSelectionState,\n TableOptions,\n ExpandedState,\n getExpandedRowModel,\n getGroupedRowModel,\n SortingState,\n HeaderContext,\n CellContext,\n} from \"@tanstack/react-table\";\nimport cx from \"classnames\";\n\nimport { LayoutUtilProps } from \"../../../../types\";\nimport { useLayoutPropsUtil } from \"../../../../internal/hooks/useLayoutPropsUtil\";\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\";\n\nimport { 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 { DataTableHeader } from \"./internal/DataTableHeader\";\nimport { TableContainer } from \"../base/TableContainer\";\nimport { DataTablePagination } from \"./internal/DataTablePagination\";\nimport { useOptionallyControlledState } from \"../../../../internal\";\nimport {\n DataTableEmptyState,\n DataTablePaginationConfig,\n DataTableRef,\n} from \"./types\";\n\nexport type { DataTableRef, DataTableEmptyState };\n\nimport styles from \"./DataTable.module.scss\";\nimport { Spinner, SrOnly } from \"../../../../components\";\nimport { usePrefersColorScheme } from \"../../../../hooks\";\nimport { ThemeProviderContext } from \"../../../../providers/ThemeProvider/internal/ThemeProviderContext\";\nimport { useAsyncData } from \"./internal/useAsyncData\";\nimport { DTHoverProvider } from \"./internal/context/hover/DTHoverProvider\";\nimport { DTFocusProvider } from \"./internal/context/focus/DTFocusProvider\";\nimport {\n INTERNAL_ROW_ACTION_PRIMARY_COLUMN_ID,\n INTERNAL_ROW_ACTION_SECONDARY_COLUMN_ID,\n} from \"./internal/constants\";\nimport { CellError } from \"./internal/cells/CellError\";\n\n/**\n * Represents a sorted column configuration for DataTable\n */\nexport type SortedColumn = {\n /**\n * The column identifier\n */\n id: string;\n /**\n * Whether the column is sorted in descending order\n */\n desc: boolean;\n};\n\n/**\n * Props for the DataTable component\n * @extends LayoutUtilProps\n * @extends ComponentPropsWithoutRef<\"div\">\n */\nexport type DataTableProps<T> = LayoutUtilProps &\n ComponentPropsWithoutRef<\"div\"> & {\n /**\n * The columns for the table, created with the `createColumnHelper` factory function.\n */\n columns: ColumnDef<T>[];\n /**\n * The custom footer content for the table. Will be overridden by the footer content of the columns.\n */\n customFooter?: CustomTableFooterCellProps[][];\n /**\n * The data for the table. Must be an array of objects with an `id` property.\n */\n data?: TableRow<T>[] | Promise<TableRow<T>[]>;\n /**\n * The default expanded row ids. Can be \"all\" to expand all rows, or an array of row ids to expand specific rows.\n */\n defaultExpandedRowIds?: \"all\" | TableRow<T>[\"id\"][];\n /**\n * The default selected row ids.\n */\n defaultSelectedRowIds?: TableRow<T>[\"id\"][];\n /**\n * The default sorted column.\n */\n defaultSortedColumn?: SortedColumn;\n /**\n * The expanded row ids.\n */\n expandedRowIds?: \"all\" | TableRow<T>[\"id\"][];\n /**\n * Whether the table is selectable. Can be a boolean or a function to customize the selection logic.\n * @default false\n */\n isSelectable?: boolean | ((row: T) => boolean);\n /**\n * Called when the row expansion state changes. Passes the expanded row ids.\n */\n onExpandRow?: (expandedRowIds: \"all\" | TableRow<T>[\"id\"][]) => void;\n /**\n * Called when the row selection state changes. Passes the selected row ids.\n */\n onSelectRow?: (selectedRowIds: TableRow<T>[\"id\"][]) => void;\n /**\n * Called when the column sorting state changes. Passes the sorted column.\n */\n onSort?: (sortedColumn: SortedColumn | undefined) => void;\n /**\n * Pagination configuration. When provided, enables pagination and filters data to show only the current page.\n * When `true`, the default pagination configuration is used.\n * When `false` or `undefined`, no pagination is applied and all data is shown.\n */\n pagination?: boolean | DataTablePaginationConfig<T>;\n /**\n * The selected row ids.\n */\n selectedRowIds?: TableRow<T>[\"id\"][];\n /**\n * The sorted column.\n */\n sortedColumn?: SortedColumn;\n /**\n * Configuration for the empty state displayed when the table has no data.\n * Only shown when data is empty and the table is not loading.\n */\n emptyState?: DataTableEmptyState;\n };\n\nfunction DataTableInner<T>(props: DataTableProps<T>, ref: Ref<DataTableRef>) {\n const { layoutStyles, componentProps } = useLayoutPropsUtil(props);\n const {\n data: dataProp,\n columns: columnsProp,\n customFooter,\n defaultExpandedRowIds,\n defaultSelectedRowIds,\n defaultSortedColumn,\n expandedRowIds,\n isSelectable,\n onSelectRow,\n onSort,\n onExpandRow,\n pagination,\n selectedRowIds,\n sortedColumn,\n emptyState,\n className,\n style,\n ...rest\n } = componentProps;\n const styleCombined = {\n ...style,\n ...layoutStyles,\n };\n\n const tableRef = useRef<HTMLDivElement>(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 [sorting, setSorting] = useOptionallyControlledState<SortingState>({\n controlledValue: sortedColumn ? [sortedColumn] : undefined,\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\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 useImperativeHandle(\n ref,\n () => ({\n refresh: () => {\n setRefreshCounter((c) => c + 1);\n setCurrentPageIndex(0);\n },\n }),\n [setCurrentPageIndex],\n );\n\n const isFirstRender = useRef(true);\n\n useEffect(() => {\n // Skip reset on initial render\n if (isFirstRender.current) {\n isFirstRender.current = false;\n return;\n }\n // Reset to page 0 when refreshKey changes\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 pageLoader = paginationObject?.loadPageData;\n const isAsyncPaginated = !!pageLoader && typeof pageLoader === \"function\";\n\n const dataSource = useMemo(() => {\n if (!isAsyncPaginated) {\n return dataProp;\n }\n\n return pageLoader({\n pageIndex: currentPageIndex ?? 0,\n pageSize: rowsPerPage,\n });\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 ]);\n\n const {\n data: resolvedData,\n //TODO: Table should represent error state\n error: _error,\n isLoading,\n } = useAsyncData(dataSource);\n const totalItemCount =\n paginationObject?.totalRowCount ?? resolvedData?.length ?? 0;\n\n const hasSubRows = !!resolvedData?.some(\n (row) => row?.subRows?.length ?? 0 > 0,\n );\n const hasSubComponent = !!resolvedData?.some(\n (row) => row?.subComponent != null,\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 const tableData = useMemo(() => {\n // If the data is still loading, show no data\n if (isLoading) return [];\n // If pagination is not enabled or is async, return the data as is.\n if (!isPaginated || isAsyncPaginated) return resolvedData;\n\n const maxPageIndex = Math.max(\n 0,\n Math.ceil(totalItemCount / rowsPerPage) - 1,\n );\n // Clamp page index to valid range\n const clampedPageIndex = Math.max(\n 0,\n Math.min(currentPageIndex ?? 0, maxPageIndex),\n );\n const startIndex = clampedPageIndex * rowsPerPage;\n const endIndex = startIndex + rowsPerPage;\n\n return resolvedData?.slice(startIndex, endIndex) ?? [];\n }, [\n isLoading,\n isPaginated,\n isAsyncPaginated,\n resolvedData,\n totalItemCount,\n rowsPerPage,\n currentPageIndex,\n ]);\n\n // Check if any row has a row-level error\n const hasRowErrors = useMemo(() => {\n return tableData?.some((row) => (row as TableRow<T>).meta?.rowError);\n }, [tableData]);\n\n // Calculate column pinning state (including select/expand/row-error columns if needed)\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 // If any are pinned left, we want to also pin select/expand/row-error columns\n const hasInternalColumns = isSelectable || isExpandable || hasRowErrors;\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 (hasRowErrors) {\n standardPinnedColumns.push(\"a2-table-internal-row-error\");\n }\n\n return {\n left:\n hasInternalColumns && left && left.length > 0\n ? [...standardPinnedColumns, ...left]\n : (left ?? []),\n right: right ?? [],\n };\n }, [columnsProp, hasRowErrors, isSelectable, isExpandable]);\n\n // Build columns for TanStack useReactTable\n const columns = useMemo(() => {\n const tableColumns: TableOptions<T>[\"columns\"] = columnsProp.map((column) =>\n getTanStackColumnDef({\n columnDef: column,\n }),\n );\n\n // Add row error column if any row has a row-level error\n // This goes after expand/select columns but before data columns\n if (hasRowErrors) {\n tableColumns.unshift({\n id: \"a2-table-internal-row-error\",\n size: 32,\n maxSize: 32,\n minSize: 32,\n header: () => null,\n cell: ({ row }: CellContext<T, unknown>) => {\n const rowError = (row.original as TableRow<T>).meta?.rowError;\n if (!rowError) return null;\n return <CellError error={rowError} />;\n },\n });\n }\n\n // Add expand column if subRows are present\n if (isExpandable) {\n tableColumns.unshift({\n id: INTERNAL_ROW_ACTION_PRIMARY_COLUMN_ID,\n size: 44,\n maxSize: 44,\n minSize: 44,\n header: ({ table }: HeaderContext<T, unknown>) => {\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 />\n </Flex>\n );\n },\n cell: ({ row }: CellContext<T, unknown>) => {\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 />\n );\n // show a checkbox for nested rows if isSelectable is true\n } else if (row.getParentRow()?.getCanExpand() && isSelectable) {\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 indeterminate={row.getIsSomeSelected()}\n onChange={row.getToggleSelectedHandler()}\n data-cell-action=\"select\"\n />\n );\n }\n },\n });\n }\n\n // Add select column if isSelectable is true\n if (isSelectable) {\n tableColumns.unshift({\n id: INTERNAL_ROW_ACTION_SECONDARY_COLUMN_ID,\n size: 44,\n maxSize: 44,\n minSize: 44,\n header: ({ table }: HeaderContext<T, unknown>) => (\n <Flex grow={1} justifyContent=\"center\">\n <Checkbox\n tabIndex={-1}\n aria-label={\n table.getIsAllRowsSelected()\n ? \"Deselect all rows\"\n : \"Select all rows\"\n }\n checked={table.getIsAllRowsSelected()}\n indeterminate={table.getIsSomeRowsSelected()}\n onChange={table.getToggleAllRowsSelectedHandler()}\n data-cell-action=\"select\"\n />\n </Flex>\n ),\n cell: ({ row }: CellContext<T, unknown>) => {\n if (row.getParentRow()?.getCanExpand() && isSelectable) {\n return null;\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 indeterminate={row.getIsSomeSelected()}\n onChange={row.getToggleSelectedHandler()}\n data-cell-action=\"select\"\n />\n );\n },\n });\n }\n\n return tableColumns;\n }, [columnsProp, hasRowErrors, hasSubComponent, isExpandable, isSelectable]);\n\n const table = useReactTable({\n data: tableData ?? [],\n columns,\n getCoreRowModel: getCoreRowModel(),\n getSortedRowModel: getSortedRowModel(),\n getExpandedRowModel: getExpandedRowModel(),\n getGroupedRowModel: getGroupedRowModel(),\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 },\n columnResizeMode: \"onChange\",\n enableRowSelection:\n typeof isSelectable === \"function\"\n ? (row) => isSelectable(row.original)\n : isSelectable,\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 const sortingChanged =\n JSON.stringify(newSorting) !== JSON.stringify(sorting);\n if (!sortingChanged) {\n return;\n }\n\n setSorting(newSorting);\n },\n });\n\n const headers = table.getFlatHeaders();\n const headerRowCount = table.getHeaderGroups().length;\n const bodyRowCount = table.getExpandedRowModel().rows.length;\n const columnSizing = table.getState().columnSizing;\n\n const getMaxFooterRows = useCallback((column: ColumnDef<T>): number => {\n let currentMax = 0;\n\n // Check current column's footer content\n if (Array.isArray(column.footerContent)) {\n currentMax = column.footerContent.length;\n } else if (column.footerContent) {\n currentMax = 1;\n }\n\n // Recursively check nested columns and find the maximum\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 const { mode: themeMode } = useContext(ThemeProviderContext);\n const { mode: sysMode } = usePrefersColorScheme();\n const colorSchemeMode = themeMode ?? sysMode;\n\n const EmptyStateSvg = (() => {\n const svg = emptyState?.svg;\n if (!svg) return undefined;\n if (typeof svg === \"function\") return svg;\n return colorSchemeMode === \"dark\"\n ? (svg.dark ?? svg.light)\n : (svg.light ?? svg.dark);\n })();\n\n /**\n * Create CSS variables for the column sizes and grid template\n */\n const cssVars = useMemo(() => {\n const vars: { [key: string]: number | string } = {};\n\n // Get leaf columns (non-grouped) in visual order\n const leafHeaders = headers.filter(\n (header) => header.subHeaders?.length === 0,\n );\n\n // Check if all columns have maxWidth defined\n const allHaveMaxWidth = leafHeaders.every(\n (header) => header.column.columnDef.maxSize != null,\n );\n\n // Build grid-template-columns from leaf column sizes using minmax()\n // Columns expand to fill available space up to their maxWidth\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 user has manually resized this column, lock it to that size\n if (hasBeenResized) {\n return `${currentSize}px`;\n }\n\n // Otherwise, allow expansion up to maxWidth (or 1fr if no max)\n const minSize = header.column.columnDef.minSize ?? currentSize;\n const maxSize = header.column.columnDef.maxSize;\n return `minmax(${minSize}px, ${maxSize ? `${maxSize}px` : \"1fr\"})`;\n })\n .join(\" \");\n vars[\"--a2-grid-template-columns\"] = gridColumns;\n\n // Set table width: 100% if any column can expand (no maxWidth), otherwise auto\n vars[\"--a2-table-width\"] = allHaveMaxWidth ? \"max-content\" : \"100%\";\n\n // Keep individual column size variables for other uses (resizing, etc.)\n for (let i = 0; i < headers.length; i++) {\n const header = headers[i]!;\n vars[`--a2-table-col-${header.column.getIndex()}-size`] =\n header.column.getSize();\n }\n return vars;\n }, [headers, columnSizing]);\n\n const columnCount = useMemo(() => {\n // don't count grouped column header cells\n return headers.filter((header) => header.subHeaders?.length === 0).length;\n }, [headers]);\n\n return (\n <DTFocusProvider\n rowCount={rowCount}\n columnCount={columnCount}\n tableRef={tableRef}\n leftPinnedWidth={table.getLeftTotalSize()}\n rightPinnedWidth={table.getRightTotalSize()}\n >\n <DTHoverProvider>\n <TableContainer\n {...rest}\n ref={tableRef}\n style={{\n ...styleCombined,\n width: cssVars[\"--a2-table-width\"],\n }}\n className={cx(className, {\n [styles[\"container-with-pagination\"]]: pagination,\n })}\n >\n <TableBase\n type=\"data-table\"\n style={cssVars}\n rowCount={rowCount}\n colCount={columnCount}\n hasSubRows={hasSubRows}\n >\n <DataTableHeader table={table} />\n <DataTableBody table={table} hasSubRows={hasSubRows} />\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 {/* Visual spacer to avoid collapsing the table body area */}\n <div\n style={{\n height: rowsPerPage ? `${rowsPerPage * 35}px` : \"200px\",\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 && (\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 <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 </DTHoverProvider>\n </DTFocusProvider>\n );\n}\n\n/**\n * Data table component for complex data grid layouts\n *\n * Features:\n * - Built-in focus management for accessibility\n * - Column resizing\n * - Column pinning\n * - Column grouping\n * - Controlled or uncontrolled column sorting\n * - Row selection\n * - Row expansion\n * - Row sub-component\n * - Row sub-rows\n * - Default and Strong backgrounds\n * - Pagination support with configurable items per page\n * - Imperative refresh via ref\n * - Customizable empty state with optional SVG illustration and content\n *\n * @param props - The props for the DataTable component\n * @param props.data - The data for the table. Must be an array of objects with an `id` property.\n * @param props.columns - The columns for the table, created with the `createColumnHelper` factory function.\n * @param props.customFooter - The custom footer content for the table. Will be overridden by the footer content of the columns.\n * @param props.defaultExpandedRowIds - The default expanded row ids.\n * @param props.defaultSelectedRowIds - The default selected row ids.\n * @param props.defaultSortedColumn - The default sorted column.\n * @param props.expandedRowIds - The expanded row ids.\n * @param props.isSelectable - Whether the table is selectable. Can be a boolean or a function to customize the selection logic.\n * @param props.onSelectRow - Called when the row selection state changes. Passes the selected row ids.\n * @param props.onSort - Called when the column sorting state changes. Passes the sorted column.\n * @param props.onExpandRow - Called when the row expansion state changes. Passes the expanded row ids.\n * @param props.pagination - Pagination configuration. When provided, enables pagination and filters data to show only the current page. When undefined, all data is shown and no pagination controls are rendered.\n * @param props.selectedRowIds - The selected row ids.\n * @param props.sortedColumn - The sorted column.\n * @param props.emptyState - Configuration for the empty state displayed when the table has no data.\n * @param props.style - The style of the table container.\n * @param props.rest - The rest of the props for the DataTable component, spread to the div surrounding the table.\n *\n * @example\n * <DataTable\n * data={tableData}\n * columns={columns}\n * pagination={{\n * itemsPerPage: 25,\n * defaultPageIndex: 0,\n * onPageChange: (pageIndex) => console.log('Page changed to:', pageIndex),\n * showCount: true,\n * }}\n * />\n */\nexport const DataTable = forwardRef(DataTableInner) as <T>(\n props: DataTableProps<T> & { ref?: Ref<DataTableRef> },\n) => ReturnType<typeof DataTableInner>;\n"],"names":["styles","createColumnHelper","EditIcon","baseTableCellStyles","dataTableCellStyles","selectedItems","Fragment","Error","IconArrowUpward","IconArrowDownward","reducer","initialState","table","ExpandIcon"],"mappings":"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","x_google_ignoreList":[14,15]}
|