@economic/taco 14.0.0 → 14.1.0-EC-85807-code-report-fixes.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/dist/charts/components/Area/AreaChart.cjs.map +1 -1
- package/dist/charts/components/Area/AreaChart.d.ts +1 -1
- package/dist/charts/components/Area/AreaChart.js.map +1 -1
- package/dist/charts/components/Bar/BarChart.cjs +2 -2
- package/dist/charts/components/Bar/BarChart.cjs.map +1 -1
- package/dist/charts/components/Bar/BarChart.d.ts +1 -1
- package/dist/charts/components/Bar/BarChart.js +2 -2
- package/dist/charts/components/Bar/BarChart.js.map +1 -1
- package/dist/charts/components/ChartWrapper.cjs.map +1 -1
- package/dist/charts/components/ChartWrapper.js.map +1 -1
- package/dist/charts/components/Composed/BarLineChart.cjs.map +1 -1
- package/dist/charts/components/Composed/BarLineChart.d.ts +2 -2
- package/dist/charts/components/Composed/BarLineChart.js.map +1 -1
- package/dist/charts/components/Donut/DonutChart.cjs.map +1 -1
- package/dist/charts/components/Donut/DonutChart.d.ts +1 -1
- package/dist/charts/components/Donut/DonutChart.js.map +1 -1
- package/dist/charts/components/LegacyDonut/ActiveShape.cjs +7 -5
- package/dist/charts/components/LegacyDonut/ActiveShape.cjs.map +1 -1
- package/dist/charts/components/LegacyDonut/ActiveShape.d.ts +6 -3
- package/dist/charts/components/LegacyDonut/ActiveShape.js +7 -5
- package/dist/charts/components/LegacyDonut/ActiveShape.js.map +1 -1
- package/dist/charts/components/LegacyDonut/CenteredLabel.cjs +1 -1
- package/dist/charts/components/LegacyDonut/CenteredLabel.cjs.map +1 -1
- package/dist/charts/components/LegacyDonut/CenteredLabel.js +1 -1
- package/dist/charts/components/LegacyDonut/CenteredLabel.js.map +1 -1
- package/dist/charts/components/LegacyDonut/LegacyDonutChart.cjs +119 -103
- package/dist/charts/components/LegacyDonut/LegacyDonutChart.cjs.map +1 -1
- package/dist/charts/components/LegacyDonut/LegacyDonutChart.d.ts +13 -2
- package/dist/charts/components/LegacyDonut/LegacyDonutChart.js +119 -103
- package/dist/charts/components/LegacyDonut/LegacyDonutChart.js.map +1 -1
- package/dist/charts/components/LegacyDonut/Legend.cjs +1 -1
- package/dist/charts/components/LegacyDonut/Legend.cjs.map +1 -1
- package/dist/charts/components/LegacyDonut/Legend.js +1 -1
- package/dist/charts/components/LegacyDonut/Legend.js.map +1 -1
- package/dist/charts/components/Legend.cjs +1 -1
- package/dist/charts/components/Legend.cjs.map +1 -1
- package/dist/charts/components/Legend.js +1 -1
- package/dist/charts/components/Legend.js.map +1 -1
- package/dist/charts/components/Line/LineChart.cjs.map +1 -1
- package/dist/charts/components/Line/LineChart.d.ts +3 -2
- package/dist/charts/components/Line/LineChart.js.map +1 -1
- package/dist/charts/components/Pie/PieChart.cjs +4 -4
- package/dist/charts/components/Pie/PieChart.cjs.map +1 -1
- package/dist/charts/components/Pie/PieChart.js +4 -4
- package/dist/charts/components/Pie/PieChart.js.map +1 -1
- package/dist/charts/components/Pie/util.cjs.map +1 -1
- package/dist/charts/components/Pie/util.d.ts +2 -1
- package/dist/charts/components/Pie/util.js.map +1 -1
- package/dist/charts/components/Tooltip.cjs.map +1 -1
- package/dist/charts/components/Tooltip.d.ts +2 -3
- package/dist/charts/components/Tooltip.js.map +1 -1
- package/dist/charts/components/types.d.ts +9 -5
- package/dist/charts/components/useChartData.cjs +5 -3
- package/dist/charts/components/useChartData.cjs.map +1 -1
- package/dist/charts/components/useChartData.d.ts +6 -2
- package/dist/charts/components/useChartData.js +5 -3
- package/dist/charts/components/useChartData.js.map +1 -1
- package/dist/charts/utils/color.cjs +6 -10
- package/dist/charts/utils/color.cjs.map +1 -1
- package/dist/charts/utils/color.js +6 -10
- package/dist/charts/utils/color.js.map +1 -1
- package/dist/charts/utils/common.cjs +10 -10
- package/dist/charts/utils/common.cjs.map +1 -1
- package/dist/charts/utils/common.d.ts +5 -6
- package/dist/charts/utils/common.js +10 -10
- package/dist/charts/utils/common.js.map +1 -1
- package/dist/components/AlertDialog/Context.cjs.map +1 -1
- package/dist/components/AlertDialog/Context.d.ts +1 -1
- package/dist/components/AlertDialog/Context.js.map +1 -1
- package/dist/components/Calendar/Calendar.cjs.map +1 -1
- package/dist/components/Calendar/Calendar.js.map +1 -1
- package/dist/components/Combobox/Combobox.cjs.map +1 -1
- package/dist/components/Combobox/Combobox.js.map +1 -1
- package/dist/components/Combobox/useCombobox.cjs +2 -4
- package/dist/components/Combobox/useCombobox.cjs.map +1 -1
- package/dist/components/Combobox/useCombobox.d.ts +1 -1
- package/dist/components/Combobox/useCombobox.js +2 -4
- package/dist/components/Combobox/useCombobox.js.map +1 -1
- package/dist/components/Datepicker/useDatepicker.cjs.map +1 -1
- package/dist/components/Datepicker/useDatepicker.js.map +1 -1
- package/dist/components/Dialog/Context.cjs.map +1 -1
- package/dist/components/Dialog/Context.d.ts +1 -1
- package/dist/components/Dialog/Context.js.map +1 -1
- package/dist/components/Dialog/components/Content.cjs.map +1 -1
- package/dist/components/Dialog/components/Content.js.map +1 -1
- package/dist/components/Drawer/components/Content.cjs +1 -1
- package/dist/components/Drawer/components/Content.cjs.map +1 -1
- package/dist/components/Drawer/components/Content.js +1 -1
- package/dist/components/Drawer/components/Content.js.map +1 -1
- package/dist/components/Drawer/useDrawerStack.cjs.map +1 -1
- package/dist/components/Drawer/useDrawerStack.js.map +1 -1
- package/dist/components/Hanger/Hanger.cjs.map +1 -1
- package/dist/components/Hanger/Hanger.js.map +1 -1
- package/dist/components/Header/Header.cjs +1 -1
- package/dist/components/Header/Header.cjs.map +1 -1
- package/dist/components/Header/Header.js +1 -1
- package/dist/components/Header/Header.js.map +1 -1
- package/dist/components/Header/components/PrimaryNavigation.cjs.map +1 -1
- package/dist/components/Header/components/PrimaryNavigation.js.map +1 -1
- package/dist/components/Icon/Icon.cjs.map +1 -1
- package/dist/components/Icon/Icon.js.map +1 -1
- package/dist/components/Layout/components/Sidebar.cjs +2 -1
- package/dist/components/Layout/components/Sidebar.cjs.map +1 -1
- package/dist/components/Layout/components/Sidebar.js +2 -1
- package/dist/components/Layout/components/Sidebar.js.map +1 -1
- package/dist/components/LegacyComponents/IconButton/IconButton.cjs.map +1 -1
- package/dist/components/LegacyComponents/IconButton/IconButton.js.map +1 -1
- package/dist/components/List/components/Toggle.cjs +0 -2
- package/dist/components/List/components/Toggle.cjs.map +1 -1
- package/dist/components/List/components/Toggle.js +0 -2
- package/dist/components/List/components/Toggle.js.map +1 -1
- package/dist/components/Listbox/Listbox.cjs +2 -5
- package/dist/components/Listbox/Listbox.cjs.map +1 -1
- package/dist/components/Listbox/Listbox.js +2 -5
- package/dist/components/Listbox/Listbox.js.map +1 -1
- package/dist/components/Listbox/useListbox.cjs +1 -1
- package/dist/components/Listbox/useListbox.cjs.map +1 -1
- package/dist/components/Listbox/useListbox.js +1 -1
- package/dist/components/Listbox/useListbox.js.map +1 -1
- package/dist/components/Listbox/useMultiListbox.cjs +1 -1
- package/dist/components/Listbox/useMultiListbox.cjs.map +1 -1
- package/dist/components/Listbox/useMultiListbox.js +1 -1
- package/dist/components/Listbox/useMultiListbox.js.map +1 -1
- package/dist/components/Listbox/util.cjs.map +1 -1
- package/dist/components/Listbox/util.js.map +1 -1
- package/dist/components/Menu/components/Content.cjs.map +1 -1
- package/dist/components/Menu/components/Content.js.map +1 -1
- package/dist/components/Menu/components/Item.cjs.map +1 -1
- package/dist/components/Menu/components/Item.d.ts +2 -2
- package/dist/components/Menu/components/Item.js.map +1 -1
- package/dist/components/Menu/components/Trigger.cjs +1 -5
- package/dist/components/Menu/components/Trigger.cjs.map +1 -1
- package/dist/components/Menu/components/Trigger.js +1 -5
- package/dist/components/Menu/components/Trigger.js.map +1 -1
- package/dist/components/Pagination/usePaginationShortcuts.cjs +0 -1
- package/dist/components/Pagination/usePaginationShortcuts.cjs.map +1 -1
- package/dist/components/Pagination/usePaginationShortcuts.js +0 -1
- package/dist/components/Pagination/usePaginationShortcuts.js.map +1 -1
- package/dist/components/Provider/Provider.cjs.map +1 -1
- package/dist/components/Provider/Provider.d.ts +1 -1
- package/dist/components/Provider/Provider.js.map +1 -1
- package/dist/components/SearchInput/SearchInput.cjs +0 -1
- package/dist/components/SearchInput/SearchInput.cjs.map +1 -1
- package/dist/components/SearchInput/SearchInput.js +0 -1
- package/dist/components/SearchInput/SearchInput.js.map +1 -1
- package/dist/components/SearchInput2/SearchInput2.cjs +0 -1
- package/dist/components/SearchInput2/SearchInput2.cjs.map +1 -1
- package/dist/components/SearchInput2/SearchInput2.js +0 -1
- package/dist/components/SearchInput2/SearchInput2.js.map +1 -1
- package/dist/components/Select2/Select2.cjs +6 -7
- package/dist/components/Select2/Select2.cjs.map +1 -1
- package/dist/components/Select2/Select2.js +6 -7
- package/dist/components/Select2/Select2.js.map +1 -1
- package/dist/components/Select2/components/Search.cjs +0 -1
- package/dist/components/Select2/components/Search.cjs.map +1 -1
- package/dist/components/Select2/components/Search.js +0 -1
- package/dist/components/Select2/components/Search.js.map +1 -1
- package/dist/components/Select2/components/Trigger.cjs +1 -1
- package/dist/components/Select2/components/Trigger.cjs.map +1 -1
- package/dist/components/Select2/components/Trigger.js +1 -1
- package/dist/components/Select2/components/Trigger.js.map +1 -1
- package/dist/components/Table3/components/Columns/Cell/EditingControlCell.cjs +1 -1
- package/dist/components/Table3/components/Columns/Cell/EditingControlCell.cjs.map +1 -1
- package/dist/components/Table3/components/Columns/Cell/EditingControlCell.js +1 -1
- package/dist/components/Table3/components/Columns/Cell/EditingControlCell.js.map +1 -1
- package/dist/components/Table3/components/Columns/Cell/util.cjs.map +1 -1
- package/dist/components/Table3/components/Columns/Cell/util.js.map +1 -1
- package/dist/components/Table3/components/Editing/Alert.cjs +4 -4
- package/dist/components/Table3/components/Editing/Alert.cjs.map +1 -1
- package/dist/components/Table3/components/Editing/Alert.js +4 -4
- package/dist/components/Table3/components/Editing/Alert.js.map +1 -1
- package/dist/components/Table3/features/useEditingState.cjs +1 -1
- package/dist/components/Table3/features/useEditingState.cjs.map +1 -1
- package/dist/components/Table3/features/useEditingState.js +1 -1
- package/dist/components/Table3/features/useEditingState.js.map +1 -1
- package/dist/components/Table3/types.d.ts +2 -2
- package/dist/components/Table3/useTable3.cjs +8 -6
- package/dist/components/Table3/useTable3.cjs.map +1 -1
- package/dist/components/Table3/useTable3.js +8 -6
- package/dist/components/Table3/useTable3.js.map +1 -1
- package/dist/components/Table3/util/editing.cjs +1 -1
- package/dist/components/Table3/util/editing.cjs.map +1 -1
- package/dist/components/Table3/util/editing.d.ts +1 -1
- package/dist/components/Table3/util/editing.js +1 -1
- package/dist/components/Table3/util/editing.js.map +1 -1
- package/dist/hooks/useBoundaryOverflowDetection.cjs.map +1 -1
- package/dist/hooks/useBoundaryOverflowDetection.d.ts +1 -1
- package/dist/hooks/useBoundaryOverflowDetection.js.map +1 -1
- package/dist/hooks/useBoundingClientRectListener.cjs.map +1 -1
- package/dist/hooks/useBoundingClientRectListener.d.ts +1 -1
- package/dist/hooks/useBoundingClientRectListener.js.map +1 -1
- package/dist/hooks/useControlled.cjs +6 -10
- package/dist/hooks/useControlled.cjs.map +1 -1
- package/dist/hooks/useControlled.js +6 -10
- package/dist/hooks/useControlled.js.map +1 -1
- package/dist/hooks/useIsFormControl.cjs.map +1 -1
- package/dist/hooks/useIsFormControl.d.ts +1 -1
- package/dist/hooks/useIsFormControl.js.map +1 -1
- package/dist/hooks/useMergedRef.cjs.map +1 -1
- package/dist/hooks/useMergedRef.js.map +1 -1
- package/dist/hooks/usePrevious.cjs.map +1 -1
- package/dist/hooks/usePrevious.js.map +1 -1
- package/dist/primitives/Button.cjs.map +1 -1
- package/dist/primitives/Button.js.map +1 -1
- package/dist/primitives/Collection/components/Root.cjs +9 -16
- package/dist/primitives/Collection/components/Root.cjs.map +1 -1
- package/dist/primitives/Collection/components/Root.js +9 -16
- package/dist/primitives/Collection/components/Root.js.map +1 -1
- package/dist/primitives/Listbox2/components/Context.cjs.map +1 -1
- package/dist/primitives/Listbox2/components/Context.d.ts +1 -0
- package/dist/primitives/Listbox2/components/Context.js.map +1 -1
- package/dist/primitives/Listbox2/components/Option.cjs +8 -2
- package/dist/primitives/Listbox2/components/Option.cjs.map +1 -1
- package/dist/primitives/Listbox2/components/Option.js +8 -2
- package/dist/primitives/Listbox2/components/Option.js.map +1 -1
- package/dist/primitives/Listbox2/components/Root.cjs +3 -2
- package/dist/primitives/Listbox2/components/Root.cjs.map +1 -1
- package/dist/primitives/Listbox2/components/Root.js +3 -2
- package/dist/primitives/Listbox2/components/Root.js.map +1 -1
- package/dist/primitives/Sortable/components/Item.cjs +2 -4
- package/dist/primitives/Sortable/components/Item.cjs.map +1 -1
- package/dist/primitives/Sortable/components/Item.js +2 -4
- package/dist/primitives/Sortable/components/Item.js.map +1 -1
- package/dist/primitives/Table/Core/components/Body/Body.cjs +4 -4
- package/dist/primitives/Table/Core/components/Body/Body.cjs.map +1 -1
- package/dist/primitives/Table/Core/components/Body/Body.js +4 -4
- package/dist/primitives/Table/Core/components/Body/Body.js.map +1 -1
- package/dist/primitives/Table/Core/components/Columns/Cell/BuiltIns/DisplayCell.cjs.map +1 -1
- package/dist/primitives/Table/Core/components/Columns/Cell/BuiltIns/DisplayCell.js.map +1 -1
- package/dist/primitives/Table/Core/components/Columns/Cell/BuiltIns/GroupedCell.cjs.map +1 -1
- package/dist/primitives/Table/Core/components/Columns/Cell/BuiltIns/GroupedCell.js.map +1 -1
- package/dist/primitives/Table/Core/components/Columns/Cell/util.cjs +22 -16
- package/dist/primitives/Table/Core/components/Columns/Cell/util.cjs.map +1 -1
- package/dist/primitives/Table/Core/components/Columns/Cell/util.js +22 -16
- package/dist/primitives/Table/Core/components/Columns/Cell/util.js.map +1 -1
- package/dist/primitives/Table/Core/components/Footer/Summary.cjs.map +1 -1
- package/dist/primitives/Table/Core/components/Footer/Summary.js.map +1 -1
- package/dist/primitives/Table/Core/components/Header/util.cjs +4 -3
- package/dist/primitives/Table/Core/components/Header/util.cjs.map +1 -1
- package/dist/primitives/Table/Core/components/Header/util.js +4 -3
- package/dist/primitives/Table/Core/components/Header/util.js.map +1 -1
- package/dist/primitives/Table/Core/components/Toolbar/components/Filters/Filters.cjs +1 -1
- package/dist/primitives/Table/Core/components/Toolbar/components/Filters/Filters.cjs.map +1 -1
- package/dist/primitives/Table/Core/components/Toolbar/components/Filters/Filters.js +1 -1
- package/dist/primitives/Table/Core/components/Toolbar/components/Filters/Filters.js.map +1 -1
- package/dist/primitives/Table/Core/components/Toolbar/components/Filters/ManageFiltersPopover.cjs +4 -2
- package/dist/primitives/Table/Core/components/Toolbar/components/Filters/ManageFiltersPopover.cjs.map +1 -1
- package/dist/primitives/Table/Core/components/Toolbar/components/Filters/ManageFiltersPopover.js +4 -2
- package/dist/primitives/Table/Core/components/Toolbar/components/Filters/ManageFiltersPopover.js.map +1 -1
- package/dist/primitives/Table/Core/components/Toolbar/components/Filters/components/Filter.cjs.map +1 -1
- package/dist/primitives/Table/Core/components/Toolbar/components/Filters/components/Filter.js.map +1 -1
- package/dist/primitives/Table/Core/components/Toolbar/components/Print/Print.cjs +1 -1
- package/dist/primitives/Table/Core/components/Toolbar/components/Print/Print.cjs.map +1 -1
- package/dist/primitives/Table/Core/components/Toolbar/components/Print/Print.js +1 -1
- package/dist/primitives/Table/Core/components/Toolbar/components/Print/Print.js.map +1 -1
- package/dist/primitives/Table/Core/features/useTableRef.cjs +7 -0
- package/dist/primitives/Table/Core/features/useTableRef.cjs.map +1 -1
- package/dist/primitives/Table/Core/features/useTableRef.js +7 -0
- package/dist/primitives/Table/Core/features/useTableRef.js.map +1 -1
- package/dist/primitives/Table/Core/features/useTableRenderer.cjs +2 -2
- package/dist/primitives/Table/Core/features/useTableRenderer.cjs.map +1 -1
- package/dist/primitives/Table/Core/features/useTableRenderer.js +2 -2
- package/dist/primitives/Table/Core/features/useTableRenderer.js.map +1 -1
- package/dist/primitives/Table/Core/features/useTableStyleColumnFreezing.cjs +2 -2
- package/dist/primitives/Table/Core/features/useTableStyleColumnFreezing.cjs.map +1 -1
- package/dist/primitives/Table/Core/features/useTableStyleColumnFreezing.js +2 -2
- package/dist/primitives/Table/Core/features/useTableStyleColumnFreezing.js.map +1 -1
- package/dist/primitives/Table/Core/features/useTableStyleGrid.cjs.map +1 -1
- package/dist/primitives/Table/Core/features/useTableStyleGrid.js.map +1 -1
- package/dist/primitives/Table/Core/listeners/useTableRowActiveListener.cjs +2 -4
- package/dist/primitives/Table/Core/listeners/useTableRowActiveListener.cjs.map +1 -1
- package/dist/primitives/Table/Core/listeners/useTableRowActiveListener.d.ts +2 -2
- package/dist/primitives/Table/Core/listeners/useTableRowActiveListener.js +2 -4
- package/dist/primitives/Table/Core/listeners/useTableRowActiveListener.js.map +1 -1
- package/dist/primitives/Table/types.cjs.map +1 -1
- package/dist/primitives/Table/types.d.ts +6 -0
- package/dist/primitives/Table/types.js.map +1 -1
- package/dist/primitives/Table/useTableDataLoader2.cjs +36 -3
- package/dist/primitives/Table/useTableDataLoader2.cjs.map +1 -1
- package/dist/primitives/Table/useTableDataLoader2.d.ts +2 -1
- package/dist/primitives/Table/useTableDataLoader2.js +36 -3
- package/dist/primitives/Table/useTableDataLoader2.js.map +1 -1
- package/dist/primitives/Table/useTableManager/features/useTableRowActive.cjs +0 -1
- package/dist/primitives/Table/useTableManager/features/useTableRowActive.cjs.map +1 -1
- package/dist/primitives/Table/useTableManager/features/useTableRowActive.d.ts +1 -1
- package/dist/primitives/Table/useTableManager/features/useTableRowActive.js +0 -1
- package/dist/primitives/Table/useTableManager/features/useTableRowActive.js.map +1 -1
- package/dist/primitives/Table/useTableManager/features/useTableRowClick.cjs +0 -2
- package/dist/primitives/Table/useTableManager/features/useTableRowClick.cjs.map +1 -1
- package/dist/primitives/Table/useTableManager/features/useTableRowClick.js +0 -2
- package/dist/primitives/Table/useTableManager/features/useTableRowClick.js.map +1 -1
- package/dist/primitives/Table/useTableManager/features/useTableRowSelection.cjs +0 -1
- package/dist/primitives/Table/useTableManager/features/useTableRowSelection.cjs.map +1 -1
- package/dist/primitives/Table/useTableManager/features/useTableRowSelection.js +0 -1
- package/dist/primitives/Table/useTableManager/features/useTableRowSelection.js.map +1 -1
- package/dist/primitives/Table/useTableManager/features/useTableServerLoading.cjs +10 -1
- package/dist/primitives/Table/useTableManager/features/useTableServerLoading.cjs.map +1 -1
- package/dist/primitives/Table/useTableManager/features/useTableServerLoading.d.ts +3 -2
- package/dist/primitives/Table/useTableManager/features/useTableServerLoading.js +10 -1
- package/dist/primitives/Table/useTableManager/features/useTableServerLoading.js.map +1 -1
- package/dist/primitives/Table/useTableManager/useTableManager.cjs +1 -5
- package/dist/primitives/Table/useTableManager/useTableManager.cjs.map +1 -1
- package/dist/primitives/Table/useTableManager/useTableManager.js +1 -5
- package/dist/primitives/Table/useTableManager/useTableManager.js.map +1 -1
- package/dist/primitives/Table/useTableManager/util/dataTypes.cjs.map +1 -1
- package/dist/primitives/Table/useTableManager/util/dataTypes.d.ts +3 -3
- package/dist/primitives/Table/useTableManager/util/dataTypes.js.map +1 -1
- package/dist/primitives/Table/useTableManager/util/filtering.cjs.map +1 -1
- package/dist/primitives/Table/useTableManager/util/filtering.js.map +1 -1
- package/dist/primitives/Table/useTableManager/util/search.cjs +1 -1
- package/dist/primitives/Table/useTableManager/util/search.cjs.map +1 -1
- package/dist/primitives/Table/useTableManager/util/search.js +1 -1
- package/dist/primitives/Table/useTableManager/util/search.js.map +1 -1
- package/dist/primitives/Table/useTableManager/util/setup.cjs +3 -3
- package/dist/primitives/Table/useTableManager/util/setup.cjs.map +1 -1
- package/dist/primitives/Table/useTableManager/util/setup.js +3 -3
- package/dist/primitives/Table/useTableManager/util/setup.js.map +1 -1
- package/dist/types.cjs.map +1 -1
- package/dist/types.d.ts +1 -1
- package/dist/types.js.map +1 -1
- package/dist/utils/dataTypes.cjs +4 -4
- package/dist/utils/dataTypes.cjs.map +1 -1
- package/dist/utils/dataTypes.d.ts +1 -1
- package/dist/utils/dataTypes.js +4 -4
- package/dist/utils/dataTypes.js.map +1 -1
- package/dist/utils/date.cjs +14 -16
- package/dist/utils/date.cjs.map +1 -1
- package/dist/utils/date.js +14 -16
- package/dist/utils/date.js.map +1 -1
- package/dist/utils/debounce.cjs.map +1 -1
- package/dist/utils/debounce.d.ts +1 -1
- package/dist/utils/debounce.js.map +1 -1
- package/dist/utils/device.cjs +1 -1
- package/dist/utils/device.cjs.map +1 -1
- package/dist/utils/device.js +1 -1
- package/dist/utils/device.js.map +1 -1
- package/dist/utils/dom.cjs +1 -1
- package/dist/utils/dom.cjs.map +1 -1
- package/dist/utils/dom.d.ts +2 -2
- package/dist/utils/dom.js +1 -1
- package/dist/utils/dom.js.map +1 -1
- package/dist/utils/hooks/useDraggable.cjs.map +1 -1
- package/dist/utils/hooks/useDraggable.d.ts +9 -1
- package/dist/utils/hooks/useDraggable.js.map +1 -1
- package/dist/utils/hooks/useListKeyboardNavigation.cjs +1 -1
- package/dist/utils/hooks/useListKeyboardNavigation.cjs.map +1 -1
- package/dist/utils/hooks/useListKeyboardNavigation.js +1 -1
- package/dist/utils/hooks/useListKeyboardNavigation.js.map +1 -1
- package/dist/utils/hooks/useListScrollTo.cjs.map +1 -1
- package/dist/utils/hooks/useListScrollTo.d.ts +4 -1
- package/dist/utils/hooks/useListScrollTo.js.map +1 -1
- package/dist/utils/hooks/useOnClickOutside.cjs.map +1 -1
- package/dist/utils/hooks/useOnClickOutside.d.ts +1 -1
- package/dist/utils/hooks/useOnClickOutside.js.map +1 -1
- package/dist/utils/hooks/useTruncated.cjs.map +1 -1
- package/dist/utils/hooks/useTruncated.d.ts +2 -1
- package/dist/utils/hooks/useTruncated.js.map +1 -1
- package/dist/utils/mergeRefs.cjs.map +1 -1
- package/dist/utils/mergeRefs.d.ts +1 -1
- package/dist/utils/mergeRefs.js.map +1 -1
- package/dist/utils/storyutils.d.ts +1 -3
- package/package.json +4 -5
- package/plugins/tailwindcss-group-peer.js +1 -1
- package/scripts/stylelint-plugin/radius.mjs +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filtering.cjs","sources":["../../../../../src/primitives/Table/useTableManager/util/filtering.ts"],"sourcesContent":["import type { ColumnMeta as ReactTableColumnMeta } from '@tanstack/react-table';\n\nimport type { Localization } from '@/components';\nimport { NumericDataType } from '@/utils/dataTypes';\nimport { isWeakEqual as isWeakEqualDate } from '@/utils/date';\n\nimport type { TableFilterValue } from '../../types';\nimport { TableFilterComparator } from '../../types';\n\nimport { isMatched } from './search';\n\nexport const toLowerCase = (value: string | number) => String(value ?? '').toLocaleLowerCase();\nexport const isWeakContains = (left: string | number, right: string | number) => toLowerCase(left).includes(toLowerCase(right));\nexport const isWeakEqual = (left: string | number, right: string | number) => toLowerCase(left) === toLowerCase(right);\n\n// the filter type is only settable on the column definition, which would re-render all columns.\n// so instead we store it in the filter value, but that means we also have to destructure that\n// before we filter - that's why this custom filter function exists\nexport function columnFilterFn<TType = unknown>(\n row: TType,\n cellValue: unknown,\n meta: ReactTableColumnMeta<TType, unknown> | undefined,\n filter: TableFilterValue,\n localization: Localization\n) {\n try {\n const query = filter.value;\n const { dataType, dataTypeOptions } = meta ?? {};\n\n // handle empty states\n if (filter.comparator === TableFilterComparator.IsEmpty || filter.comparator === TableFilterComparator.IsNotEmpty) {\n const isEmpty = cellValue === undefined || cellValue === null || cellValue === '';\n return filter.comparator === TableFilterComparator.IsEmpty ? isEmpty : !isEmpty;\n }\n\n if (query === undefined || query === null || query === '') {\n return true;\n }\n\n // prep\n const evaluate = (matcher: (left: any, right: any) => boolean) => {\n return isMatched<TType>(query, cellValue, row, dataType, dataTypeOptions, localization, matcher);\n };\n\n // dates\n const isDateColumn = dataType === 'date' || dataType === 'datetime'; // || dataType === 'time'; // compare as string for now\n const valueAsDate = new Date(cellValue as string);\n\n // numbers\n const isNumberColumn = dataType === 'number' || dataType === 'amount';\n const compareNumbers = (fn: (left: number, right: number) => boolean) => {\n const input = typeof query === 'number' ? query : NumericDataType.parse(query, localization.locale);\n const value = cellValue as number; // assume it's a number since, they set the dataType\n\n if (input === undefined) {\n return false;\n }\n\n return fn(input, value);\n };\n\n switch (filter.comparator) {\n case TableFilterComparator.Contains:\n return evaluate(isWeakContains);\n\n case TableFilterComparator.DoesNotContain:\n return !evaluate(isWeakContains);\n\n case TableFilterComparator.IsEqualTo: {\n if (dataType === 'boolean') {\n return cellValue === query;\n }\n if (isDateColumn) {\n return isWeakEqualDate(query, valueAsDate);\n }\n\n return evaluate(isWeakEqual);\n }\n\n case TableFilterComparator.IsNotEqualTo: {\n if (dataType === 'boolean') {\n return cellValue !== query;\n }\n if (isDateColumn) {\n return !isWeakEqualDate(query, valueAsDate);\n }\n\n return !evaluate(isWeakEqual);\n }\n\n case TableFilterComparator.IsGreaterThan: {\n if (isDateColumn) {\n return query.getTime() < valueAsDate.getTime();\n }\n if (isNumberColumn) {\n return compareNumbers((q, v) => q < v);\n }\n\n return false;\n }\n\n case TableFilterComparator.IsLessThan: {\n if (isDateColumn) {\n return query.getTime() > valueAsDate.getTime();\n }\n if (isNumberColumn) {\n return compareNumbers((q, v) => q > v);\n }\n\n return false;\n }\n\n case TableFilterComparator.IsLessThanOrEqualTo: {\n if (isDateColumn) {\n return query.getTime() > valueAsDate.getTime() || isWeakEqualDate(valueAsDate, query);\n }\n if (isNumberColumn) {\n return compareNumbers((q, v) => q >= v);\n }\n\n return false;\n }\n\n case TableFilterComparator.IsGreaterThanOrEqualTo: {\n if (isDateColumn) {\n return query.getTime() < valueAsDate.getTime() || isWeakEqualDate(valueAsDate, query);\n }\n if (isNumberColumn) {\n return compareNumbers((q, v) => q <= v);\n }\n\n return false;\n }\n\n case TableFilterComparator.IsBetween: {\n const [fromValue, toValue] = query;\n\n if (isDateColumn) {\n if (fromValue !== undefined && valueAsDate.getTime() < fromValue.getTime()) {\n return false;\n }\n if (toValue !== undefined && valueAsDate.getTime() > toValue.getTime()) {\n return false;\n }\n\n return true;\n }\n if (isNumberColumn) {\n if (fromValue !== undefined && (cellValue as number) < fromValue) {\n return false;\n }\n\n if (toValue !== undefined && (cellValue as number) > toValue) {\n return false;\n }\n\n return true;\n }\n return false;\n }\n\n case TableFilterComparator.HasAnyOf:\n return Array.isArray(query) && Array.isArray(cellValue) ? query.some(item => cellValue.includes(item)) : false;\n\n case TableFilterComparator.HasNoneOf:\n return Array.isArray(query) && Array.isArray(cellValue)\n ? query.every(item => cellValue.includes(item) === false)\n : false;\n\n case TableFilterComparator.HasAllOf:\n return Array.isArray(query) && Array.isArray(cellValue)\n ? query.filter(v => cellValue.includes(v)).length === query.length\n : false;\n\n case TableFilterComparator.IsOneOf: {\n if (!Array.isArray(query)) {\n return false;\n }\n\n return query.some(v => isWeakEqual(String(cellValue), v));\n }\n\n case TableFilterComparator.IsNoneOf: {\n if (!Array.isArray(query)) {\n return false;\n }\n\n return query.every(v => !isWeakEqual(String(cellValue), v));\n }\n\n default:\n return false;\n }\n } catch (e) {\n // oxlint-disable-next-line no-console\n console.error(e);\n return true;\n }\n}\n"],"names":["TableFilterComparator","isMatched","NumericDataType","isWeakEqualDate"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"filtering.cjs","sources":["../../../../../src/primitives/Table/useTableManager/util/filtering.ts"],"sourcesContent":["import type { ColumnMeta as ReactTableColumnMeta } from '@tanstack/react-table';\n\nimport type { Localization } from '@/components';\nimport { NumericDataType } from '@/utils/dataTypes';\nimport { isWeakEqual as isWeakEqualDate } from '@/utils/date';\n\nimport type { TableFilterValue } from '../../types';\nimport { TableFilterComparator } from '../../types';\n\nimport { isMatched } from './search';\n\nexport const toLowerCase = (value: string | number) => String(value ?? '').toLocaleLowerCase();\nexport const isWeakContains = (left: string | number, right: string | number) => toLowerCase(left).includes(toLowerCase(right));\nexport const isWeakEqual = (left: string | number, right: string | number) => toLowerCase(left) === toLowerCase(right);\n\n// the filter type is only settable on the column definition, which would re-render all columns.\n// so instead we store it in the filter value, but that means we also have to destructure that\n// before we filter - that's why this custom filter function exists\nexport function columnFilterFn<TType = unknown>(\n row: TType,\n cellValue: unknown,\n meta: ReactTableColumnMeta<TType, unknown> | undefined,\n filter: TableFilterValue,\n localization: Localization\n) {\n try {\n const query = filter.value;\n const { dataType, dataTypeOptions } = meta ?? {};\n\n // handle empty states\n if (filter.comparator === TableFilterComparator.IsEmpty || filter.comparator === TableFilterComparator.IsNotEmpty) {\n const isEmpty = cellValue === undefined || cellValue === null || cellValue === '';\n return filter.comparator === TableFilterComparator.IsEmpty ? isEmpty : !isEmpty;\n }\n\n if (query === undefined || query === null || query === '') {\n return true;\n }\n\n // prep\n const evaluate = (matcher: (left: any, right: any) => boolean) => {\n return isMatched<TType>(query, cellValue, row, dataType, dataTypeOptions, localization, matcher);\n };\n\n // dates\n // || dataType === 'time'; // compare as string for now\n const isDateColumn = dataType === 'date' || dataType === 'datetime';\n const valueAsDate = new Date(cellValue as string);\n\n // numbers\n const isNumberColumn = dataType === 'number' || dataType === 'amount';\n const compareNumbers = (fn: (left: number, right: number) => boolean) => {\n const input = typeof query === 'number' ? query : NumericDataType.parse(query, localization.locale);\n // assume it's a number since, they set the dataType\n const value = cellValue as number;\n\n if (input === undefined) {\n return false;\n }\n\n return fn(input, value);\n };\n\n switch (filter.comparator) {\n case TableFilterComparator.Contains:\n return evaluate(isWeakContains);\n\n case TableFilterComparator.DoesNotContain:\n return !evaluate(isWeakContains);\n\n case TableFilterComparator.IsEqualTo: {\n if (dataType === 'boolean') {\n return cellValue === query;\n }\n if (isDateColumn) {\n return isWeakEqualDate(query, valueAsDate);\n }\n\n return evaluate(isWeakEqual);\n }\n\n case TableFilterComparator.IsNotEqualTo: {\n if (dataType === 'boolean') {\n return cellValue !== query;\n }\n if (isDateColumn) {\n return !isWeakEqualDate(query, valueAsDate);\n }\n\n return !evaluate(isWeakEqual);\n }\n\n case TableFilterComparator.IsGreaterThan: {\n if (isDateColumn) {\n return query.getTime() < valueAsDate.getTime();\n }\n if (isNumberColumn) {\n return compareNumbers((q, v) => q < v);\n }\n\n return false;\n }\n\n case TableFilterComparator.IsLessThan: {\n if (isDateColumn) {\n return query.getTime() > valueAsDate.getTime();\n }\n if (isNumberColumn) {\n return compareNumbers((q, v) => q > v);\n }\n\n return false;\n }\n\n case TableFilterComparator.IsLessThanOrEqualTo: {\n if (isDateColumn) {\n return query.getTime() > valueAsDate.getTime() || isWeakEqualDate(valueAsDate, query);\n }\n if (isNumberColumn) {\n return compareNumbers((q, v) => q >= v);\n }\n\n return false;\n }\n\n case TableFilterComparator.IsGreaterThanOrEqualTo: {\n if (isDateColumn) {\n return query.getTime() < valueAsDate.getTime() || isWeakEqualDate(valueAsDate, query);\n }\n if (isNumberColumn) {\n return compareNumbers((q, v) => q <= v);\n }\n\n return false;\n }\n\n case TableFilterComparator.IsBetween: {\n const [fromValue, toValue] = query;\n\n if (isDateColumn) {\n if (fromValue !== undefined && valueAsDate.getTime() < fromValue.getTime()) {\n return false;\n }\n if (toValue !== undefined && valueAsDate.getTime() > toValue.getTime()) {\n return false;\n }\n\n return true;\n }\n if (isNumberColumn) {\n if (fromValue !== undefined && (cellValue as number) < fromValue) {\n return false;\n }\n\n if (toValue !== undefined && (cellValue as number) > toValue) {\n return false;\n }\n\n return true;\n }\n return false;\n }\n\n case TableFilterComparator.HasAnyOf:\n return Array.isArray(query) && Array.isArray(cellValue) ? query.some(item => cellValue.includes(item)) : false;\n\n case TableFilterComparator.HasNoneOf:\n return Array.isArray(query) && Array.isArray(cellValue)\n ? query.every(item => cellValue.includes(item) === false)\n : false;\n\n case TableFilterComparator.HasAllOf:\n return Array.isArray(query) && Array.isArray(cellValue)\n ? query.filter(v => cellValue.includes(v)).length === query.length\n : false;\n\n case TableFilterComparator.IsOneOf: {\n if (!Array.isArray(query)) {\n return false;\n }\n\n return query.some(v => isWeakEqual(String(cellValue), v));\n }\n\n case TableFilterComparator.IsNoneOf: {\n if (!Array.isArray(query)) {\n return false;\n }\n\n return query.every(v => !isWeakEqual(String(cellValue), v));\n }\n\n default:\n return false;\n }\n } catch (e) {\n // oxlint-disable-next-line no-console\n console.error(e);\n return true;\n }\n}\n"],"names":["TableFilterComparator","isMatched","NumericDataType","isWeakEqualDate"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filtering.js","sources":["../../../../../src/primitives/Table/useTableManager/util/filtering.ts"],"sourcesContent":["import type { ColumnMeta as ReactTableColumnMeta } from '@tanstack/react-table';\n\nimport type { Localization } from '@/components';\nimport { NumericDataType } from '@/utils/dataTypes';\nimport { isWeakEqual as isWeakEqualDate } from '@/utils/date';\n\nimport type { TableFilterValue } from '../../types';\nimport { TableFilterComparator } from '../../types';\n\nimport { isMatched } from './search';\n\nexport const toLowerCase = (value: string | number) => String(value ?? '').toLocaleLowerCase();\nexport const isWeakContains = (left: string | number, right: string | number) => toLowerCase(left).includes(toLowerCase(right));\nexport const isWeakEqual = (left: string | number, right: string | number) => toLowerCase(left) === toLowerCase(right);\n\n// the filter type is only settable on the column definition, which would re-render all columns.\n// so instead we store it in the filter value, but that means we also have to destructure that\n// before we filter - that's why this custom filter function exists\nexport function columnFilterFn<TType = unknown>(\n row: TType,\n cellValue: unknown,\n meta: ReactTableColumnMeta<TType, unknown> | undefined,\n filter: TableFilterValue,\n localization: Localization\n) {\n try {\n const query = filter.value;\n const { dataType, dataTypeOptions } = meta ?? {};\n\n // handle empty states\n if (filter.comparator === TableFilterComparator.IsEmpty || filter.comparator === TableFilterComparator.IsNotEmpty) {\n const isEmpty = cellValue === undefined || cellValue === null || cellValue === '';\n return filter.comparator === TableFilterComparator.IsEmpty ? isEmpty : !isEmpty;\n }\n\n if (query === undefined || query === null || query === '') {\n return true;\n }\n\n // prep\n const evaluate = (matcher: (left: any, right: any) => boolean) => {\n return isMatched<TType>(query, cellValue, row, dataType, dataTypeOptions, localization, matcher);\n };\n\n // dates\n const isDateColumn = dataType === 'date' || dataType === 'datetime'; // || dataType === 'time'; // compare as string for now\n const valueAsDate = new Date(cellValue as string);\n\n // numbers\n const isNumberColumn = dataType === 'number' || dataType === 'amount';\n const compareNumbers = (fn: (left: number, right: number) => boolean) => {\n const input = typeof query === 'number' ? query : NumericDataType.parse(query, localization.locale);\n const value = cellValue as number; // assume it's a number since, they set the dataType\n\n if (input === undefined) {\n return false;\n }\n\n return fn(input, value);\n };\n\n switch (filter.comparator) {\n case TableFilterComparator.Contains:\n return evaluate(isWeakContains);\n\n case TableFilterComparator.DoesNotContain:\n return !evaluate(isWeakContains);\n\n case TableFilterComparator.IsEqualTo: {\n if (dataType === 'boolean') {\n return cellValue === query;\n }\n if (isDateColumn) {\n return isWeakEqualDate(query, valueAsDate);\n }\n\n return evaluate(isWeakEqual);\n }\n\n case TableFilterComparator.IsNotEqualTo: {\n if (dataType === 'boolean') {\n return cellValue !== query;\n }\n if (isDateColumn) {\n return !isWeakEqualDate(query, valueAsDate);\n }\n\n return !evaluate(isWeakEqual);\n }\n\n case TableFilterComparator.IsGreaterThan: {\n if (isDateColumn) {\n return query.getTime() < valueAsDate.getTime();\n }\n if (isNumberColumn) {\n return compareNumbers((q, v) => q < v);\n }\n\n return false;\n }\n\n case TableFilterComparator.IsLessThan: {\n if (isDateColumn) {\n return query.getTime() > valueAsDate.getTime();\n }\n if (isNumberColumn) {\n return compareNumbers((q, v) => q > v);\n }\n\n return false;\n }\n\n case TableFilterComparator.IsLessThanOrEqualTo: {\n if (isDateColumn) {\n return query.getTime() > valueAsDate.getTime() || isWeakEqualDate(valueAsDate, query);\n }\n if (isNumberColumn) {\n return compareNumbers((q, v) => q >= v);\n }\n\n return false;\n }\n\n case TableFilterComparator.IsGreaterThanOrEqualTo: {\n if (isDateColumn) {\n return query.getTime() < valueAsDate.getTime() || isWeakEqualDate(valueAsDate, query);\n }\n if (isNumberColumn) {\n return compareNumbers((q, v) => q <= v);\n }\n\n return false;\n }\n\n case TableFilterComparator.IsBetween: {\n const [fromValue, toValue] = query;\n\n if (isDateColumn) {\n if (fromValue !== undefined && valueAsDate.getTime() < fromValue.getTime()) {\n return false;\n }\n if (toValue !== undefined && valueAsDate.getTime() > toValue.getTime()) {\n return false;\n }\n\n return true;\n }\n if (isNumberColumn) {\n if (fromValue !== undefined && (cellValue as number) < fromValue) {\n return false;\n }\n\n if (toValue !== undefined && (cellValue as number) > toValue) {\n return false;\n }\n\n return true;\n }\n return false;\n }\n\n case TableFilterComparator.HasAnyOf:\n return Array.isArray(query) && Array.isArray(cellValue) ? query.some(item => cellValue.includes(item)) : false;\n\n case TableFilterComparator.HasNoneOf:\n return Array.isArray(query) && Array.isArray(cellValue)\n ? query.every(item => cellValue.includes(item) === false)\n : false;\n\n case TableFilterComparator.HasAllOf:\n return Array.isArray(query) && Array.isArray(cellValue)\n ? query.filter(v => cellValue.includes(v)).length === query.length\n : false;\n\n case TableFilterComparator.IsOneOf: {\n if (!Array.isArray(query)) {\n return false;\n }\n\n return query.some(v => isWeakEqual(String(cellValue), v));\n }\n\n case TableFilterComparator.IsNoneOf: {\n if (!Array.isArray(query)) {\n return false;\n }\n\n return query.every(v => !isWeakEqual(String(cellValue), v));\n }\n\n default:\n return false;\n }\n } catch (e) {\n // oxlint-disable-next-line no-console\n console.error(e);\n return true;\n }\n}\n"],"names":["isWeakEqualDate"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"filtering.js","sources":["../../../../../src/primitives/Table/useTableManager/util/filtering.ts"],"sourcesContent":["import type { ColumnMeta as ReactTableColumnMeta } from '@tanstack/react-table';\n\nimport type { Localization } from '@/components';\nimport { NumericDataType } from '@/utils/dataTypes';\nimport { isWeakEqual as isWeakEqualDate } from '@/utils/date';\n\nimport type { TableFilterValue } from '../../types';\nimport { TableFilterComparator } from '../../types';\n\nimport { isMatched } from './search';\n\nexport const toLowerCase = (value: string | number) => String(value ?? '').toLocaleLowerCase();\nexport const isWeakContains = (left: string | number, right: string | number) => toLowerCase(left).includes(toLowerCase(right));\nexport const isWeakEqual = (left: string | number, right: string | number) => toLowerCase(left) === toLowerCase(right);\n\n// the filter type is only settable on the column definition, which would re-render all columns.\n// so instead we store it in the filter value, but that means we also have to destructure that\n// before we filter - that's why this custom filter function exists\nexport function columnFilterFn<TType = unknown>(\n row: TType,\n cellValue: unknown,\n meta: ReactTableColumnMeta<TType, unknown> | undefined,\n filter: TableFilterValue,\n localization: Localization\n) {\n try {\n const query = filter.value;\n const { dataType, dataTypeOptions } = meta ?? {};\n\n // handle empty states\n if (filter.comparator === TableFilterComparator.IsEmpty || filter.comparator === TableFilterComparator.IsNotEmpty) {\n const isEmpty = cellValue === undefined || cellValue === null || cellValue === '';\n return filter.comparator === TableFilterComparator.IsEmpty ? isEmpty : !isEmpty;\n }\n\n if (query === undefined || query === null || query === '') {\n return true;\n }\n\n // prep\n const evaluate = (matcher: (left: any, right: any) => boolean) => {\n return isMatched<TType>(query, cellValue, row, dataType, dataTypeOptions, localization, matcher);\n };\n\n // dates\n // || dataType === 'time'; // compare as string for now\n const isDateColumn = dataType === 'date' || dataType === 'datetime';\n const valueAsDate = new Date(cellValue as string);\n\n // numbers\n const isNumberColumn = dataType === 'number' || dataType === 'amount';\n const compareNumbers = (fn: (left: number, right: number) => boolean) => {\n const input = typeof query === 'number' ? query : NumericDataType.parse(query, localization.locale);\n // assume it's a number since, they set the dataType\n const value = cellValue as number;\n\n if (input === undefined) {\n return false;\n }\n\n return fn(input, value);\n };\n\n switch (filter.comparator) {\n case TableFilterComparator.Contains:\n return evaluate(isWeakContains);\n\n case TableFilterComparator.DoesNotContain:\n return !evaluate(isWeakContains);\n\n case TableFilterComparator.IsEqualTo: {\n if (dataType === 'boolean') {\n return cellValue === query;\n }\n if (isDateColumn) {\n return isWeakEqualDate(query, valueAsDate);\n }\n\n return evaluate(isWeakEqual);\n }\n\n case TableFilterComparator.IsNotEqualTo: {\n if (dataType === 'boolean') {\n return cellValue !== query;\n }\n if (isDateColumn) {\n return !isWeakEqualDate(query, valueAsDate);\n }\n\n return !evaluate(isWeakEqual);\n }\n\n case TableFilterComparator.IsGreaterThan: {\n if (isDateColumn) {\n return query.getTime() < valueAsDate.getTime();\n }\n if (isNumberColumn) {\n return compareNumbers((q, v) => q < v);\n }\n\n return false;\n }\n\n case TableFilterComparator.IsLessThan: {\n if (isDateColumn) {\n return query.getTime() > valueAsDate.getTime();\n }\n if (isNumberColumn) {\n return compareNumbers((q, v) => q > v);\n }\n\n return false;\n }\n\n case TableFilterComparator.IsLessThanOrEqualTo: {\n if (isDateColumn) {\n return query.getTime() > valueAsDate.getTime() || isWeakEqualDate(valueAsDate, query);\n }\n if (isNumberColumn) {\n return compareNumbers((q, v) => q >= v);\n }\n\n return false;\n }\n\n case TableFilterComparator.IsGreaterThanOrEqualTo: {\n if (isDateColumn) {\n return query.getTime() < valueAsDate.getTime() || isWeakEqualDate(valueAsDate, query);\n }\n if (isNumberColumn) {\n return compareNumbers((q, v) => q <= v);\n }\n\n return false;\n }\n\n case TableFilterComparator.IsBetween: {\n const [fromValue, toValue] = query;\n\n if (isDateColumn) {\n if (fromValue !== undefined && valueAsDate.getTime() < fromValue.getTime()) {\n return false;\n }\n if (toValue !== undefined && valueAsDate.getTime() > toValue.getTime()) {\n return false;\n }\n\n return true;\n }\n if (isNumberColumn) {\n if (fromValue !== undefined && (cellValue as number) < fromValue) {\n return false;\n }\n\n if (toValue !== undefined && (cellValue as number) > toValue) {\n return false;\n }\n\n return true;\n }\n return false;\n }\n\n case TableFilterComparator.HasAnyOf:\n return Array.isArray(query) && Array.isArray(cellValue) ? query.some(item => cellValue.includes(item)) : false;\n\n case TableFilterComparator.HasNoneOf:\n return Array.isArray(query) && Array.isArray(cellValue)\n ? query.every(item => cellValue.includes(item) === false)\n : false;\n\n case TableFilterComparator.HasAllOf:\n return Array.isArray(query) && Array.isArray(cellValue)\n ? query.filter(v => cellValue.includes(v)).length === query.length\n : false;\n\n case TableFilterComparator.IsOneOf: {\n if (!Array.isArray(query)) {\n return false;\n }\n\n return query.some(v => isWeakEqual(String(cellValue), v));\n }\n\n case TableFilterComparator.IsNoneOf: {\n if (!Array.isArray(query)) {\n return false;\n }\n\n return query.every(v => !isWeakEqual(String(cellValue), v));\n }\n\n default:\n return false;\n }\n } catch (e) {\n // oxlint-disable-next-line no-console\n console.error(e);\n return true;\n }\n}\n"],"names":["isWeakEqualDate"],"mappings":"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"}
|
|
@@ -3,7 +3,7 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
|
3
3
|
const dataTypes = require("./dataTypes.cjs");
|
|
4
4
|
const filtering = require("./filtering.cjs");
|
|
5
5
|
const flattenCellValue = (cellValue) => {
|
|
6
|
-
return typeof cellValue === "object" ? Object.values(cellValue).map(flattenCellValue) : cellValue;
|
|
6
|
+
return typeof cellValue === "object" ? Object.values(cellValue).map((val) => flattenCellValue(val)) : cellValue;
|
|
7
7
|
};
|
|
8
8
|
function isMatched(query, cellValue, rowValue, dataType, dataTypeOptions, localization, matcher = filtering.isWeakContains) {
|
|
9
9
|
if (typeof cellValue === "object") {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search.cjs","sources":["../../../../../src/primitives/Table/useTableManager/util/search.ts"],"sourcesContent":["import type { Table as ReactTable, TableMeta as ReactTableMeta, Row as ReactTableRow } from '@tanstack/react-table';\n\nimport type { Localization } from '@/components';\n\nimport type { TableColumnDataType, TableColumnDataTypeOptions } from '../../types';\n\nimport { getDataTypeProperties } from './dataTypes';\nimport { isWeakContains } from './filtering';\n\nconst flattenCellValue = (cellValue: object | string): any => {\n return typeof cellValue === 'object' ? Object.values(cellValue).map(flattenCellValue) : cellValue;\n};\n\nexport function isMatched<TType = unknown>(\n query: any,\n cellValue: any,\n rowValue: TType,\n dataType: TableColumnDataType | undefined,\n dataTypeOptions: TableColumnDataTypeOptions | undefined,\n localization: Localization,\n matcher: (left: any, right: any) => boolean = isWeakContains\n) {\n if (typeof cellValue === 'object') {\n return flattenCellValue(cellValue)\n .flat(Infinity)\n .find((y: any) => matcher(y, query));\n }\n const dataTypeProperties = getDataTypeProperties<TType>(dataType);\n\n if (dataTypeProperties.getDisplayValue) {\n const cellDisplayValue = dataTypeProperties.getDisplayValue(cellValue, rowValue, {\n dataTypeOptions,\n localization,\n });\n\n if (Array.isArray(cellDisplayValue)) {\n return cellDisplayValue.some(cdv => matcher(cdv, query));\n }\n\n if (cellDisplayValue !== undefined && isWeakContains(cellDisplayValue, query)) {\n return true;\n }\n } else {\n const cellValueAsString = String(cellValue ?? '');\n\n if (cellValueAsString !== undefined && matcher(cellValueAsString, query)) {\n return true;\n }\n }\n\n if (typeof query !== typeof cellValue && dataTypeProperties.parse) {\n const parsedQuery = dataTypeProperties.parse(query, localization.locale);\n\n if (parsedQuery !== undefined && matcher(cellValue, parsedQuery)) {\n return true;\n }\n }\n\n return false;\n}\n\nexport function globalFilterFn<TType = unknown>(\n row: ReactTableRow<TType>,\n columnId: string,\n searchQuery: string,\n localization: Localization\n) {\n try {\n if (row.original) {\n const cellValue = row.getValue(columnId);\n const columnMeta = row._getAllCellsByColumnId()[columnId]?.column.columnDef.meta;\n\n return isMatched<TType>(\n searchQuery,\n cellValue,\n row.original,\n columnMeta?.dataType,\n columnMeta?.dataTypeOptions,\n localization\n );\n }\n } catch {\n // we don't care, just fail silently and return no results\n }\n\n return false;\n}\n\nexport function resetHighlightedColumnIndexes<TType = unknown>(\n searchQuery: string | undefined,\n table: ReactTable<TType>,\n localization: Localization,\n // When typing a search we want to jump to the first match. But when this runs to recompute highlights after\n // an edit is saved, moving the active row would yank focus to the top of the list\n moveActiveRowToFirstMatch = true\n) {\n const tableMeta = table.options.meta as ReactTableMeta<TType>;\n let firstRowIndex: undefined | number;\n\n if (searchQuery) {\n const indexes: number[][] = [];\n const columns = table.getVisibleLeafColumns();\n const rowGrouping = table.getState().grouping;\n\n table.getRowModel().rows.forEach((row, rowIndex) => {\n columns.forEach((column, columnIndex) => {\n try {\n let allowSearch = true;\n\n if (rowGrouping?.length) {\n // if it's the grouped row, only allow search of the grouped column - because that's all that's visible\n if (row.getIsGrouped()) {\n allowSearch = column.getIsGrouped();\n }\n // otherwise for other rows, don't search the grouped column - because it isn't visible\n else if (rowGrouping.includes(column.id)) {\n allowSearch = false;\n }\n }\n\n if (column.getIsVisible() && column.columnDef.enableGlobalFilter && allowSearch) {\n const cellValue = row.getValue(column.id);\n const dataType = column.columnDef.meta?.dataType;\n const dataTypeOptions = column.columnDef.meta?.dataTypeOptions;\n\n if (isMatched<TType>(searchQuery, cellValue, row.original, dataType, dataTypeOptions, localization)) {\n indexes.push([rowIndex, columnIndex]);\n }\n }\n } catch {\n //\n }\n });\n });\n\n tableMeta.search.setHighlightedColumnIndexes(indexes);\n\n if (indexes.length) {\n firstRowIndex = indexes[0]?.[0];\n tableMeta.search.setCurrentHighlightColumnIndex(0);\n } else {\n tableMeta.search.setCurrentHighlightColumnIndex(undefined);\n }\n } else {\n tableMeta.search.setHighlightedColumnIndexes([]);\n tableMeta.search.setCurrentHighlightColumnIndex(undefined);\n }\n\n if (firstRowIndex !== undefined && moveActiveRowToFirstMatch) {\n tableMeta.rowActive.setRowActiveIndex(firstRowIndex);\n }\n\n return firstRowIndex;\n}\n"],"names":["isWeakContains","getDataTypeProperties"],"mappings":";;;;AASA,MAAM,mBAAmB,CAAC,cAAoC;AAC1D,SAAO,OAAO,cAAc,WAAW,OAAO,OAAO,SAAS,EAAE,IAAI,
|
|
1
|
+
{"version":3,"file":"search.cjs","sources":["../../../../../src/primitives/Table/useTableManager/util/search.ts"],"sourcesContent":["import type { Table as ReactTable, TableMeta as ReactTableMeta, Row as ReactTableRow } from '@tanstack/react-table';\n\nimport type { Localization } from '@/components';\n\nimport type { TableColumnDataType, TableColumnDataTypeOptions } from '../../types';\n\nimport { getDataTypeProperties } from './dataTypes';\nimport { isWeakContains } from './filtering';\n\nconst flattenCellValue = (cellValue: object | string): any => {\n return typeof cellValue === 'object' ? Object.values(cellValue).map(val => flattenCellValue(val)) : cellValue;\n};\n\nexport function isMatched<TType = unknown>(\n query: any,\n cellValue: any,\n rowValue: TType,\n dataType: TableColumnDataType | undefined,\n dataTypeOptions: TableColumnDataTypeOptions | undefined,\n localization: Localization,\n matcher: (left: any, right: any) => boolean = isWeakContains\n) {\n if (typeof cellValue === 'object') {\n return flattenCellValue(cellValue)\n .flat(Infinity)\n .find((y: any) => matcher(y, query));\n }\n const dataTypeProperties = getDataTypeProperties<TType>(dataType);\n\n if (dataTypeProperties.getDisplayValue) {\n const cellDisplayValue = dataTypeProperties.getDisplayValue(cellValue, rowValue, {\n dataTypeOptions,\n localization,\n });\n\n if (Array.isArray(cellDisplayValue)) {\n return cellDisplayValue.some(cdv => matcher(cdv, query));\n }\n\n if (cellDisplayValue !== undefined && isWeakContains(cellDisplayValue, query)) {\n return true;\n }\n } else {\n const cellValueAsString = String(cellValue ?? '');\n\n if (cellValueAsString !== undefined && matcher(cellValueAsString, query)) {\n return true;\n }\n }\n\n if (typeof query !== typeof cellValue && dataTypeProperties.parse) {\n const parsedQuery = dataTypeProperties.parse(query, localization.locale);\n\n if (parsedQuery !== undefined && matcher(cellValue, parsedQuery)) {\n return true;\n }\n }\n\n return false;\n}\n\nexport function globalFilterFn<TType = unknown>(\n row: ReactTableRow<TType>,\n columnId: string,\n searchQuery: string,\n localization: Localization\n) {\n try {\n if (row.original) {\n const cellValue = row.getValue(columnId);\n const columnMeta = row._getAllCellsByColumnId()[columnId]?.column.columnDef.meta;\n\n return isMatched<TType>(\n searchQuery,\n cellValue,\n row.original,\n columnMeta?.dataType,\n columnMeta?.dataTypeOptions,\n localization\n );\n }\n } catch {\n // we don't care, just fail silently and return no results\n }\n\n return false;\n}\n\nexport function resetHighlightedColumnIndexes<TType = unknown>(\n searchQuery: string | undefined,\n table: ReactTable<TType>,\n localization: Localization,\n // When typing a search we want to jump to the first match. But when this runs to recompute highlights after\n // an edit is saved, moving the active row would yank focus to the top of the list\n moveActiveRowToFirstMatch = true\n) {\n const tableMeta = table.options.meta as ReactTableMeta<TType>;\n let firstRowIndex: undefined | number;\n\n if (searchQuery) {\n const indexes: number[][] = [];\n const columns = table.getVisibleLeafColumns();\n const rowGrouping = table.getState().grouping;\n\n table.getRowModel().rows.forEach((row, rowIndex) => {\n columns.forEach((column, columnIndex) => {\n try {\n let allowSearch = true;\n\n if (rowGrouping?.length) {\n // if it's the grouped row, only allow search of the grouped column - because that's all that's visible\n if (row.getIsGrouped()) {\n allowSearch = column.getIsGrouped();\n }\n // otherwise for other rows, don't search the grouped column - because it isn't visible\n else if (rowGrouping.includes(column.id)) {\n allowSearch = false;\n }\n }\n\n if (column.getIsVisible() && column.columnDef.enableGlobalFilter && allowSearch) {\n const cellValue = row.getValue(column.id);\n const dataType = column.columnDef.meta?.dataType;\n const dataTypeOptions = column.columnDef.meta?.dataTypeOptions;\n\n if (isMatched<TType>(searchQuery, cellValue, row.original, dataType, dataTypeOptions, localization)) {\n indexes.push([rowIndex, columnIndex]);\n }\n }\n } catch {\n //\n }\n });\n });\n\n tableMeta.search.setHighlightedColumnIndexes(indexes);\n\n if (indexes.length) {\n firstRowIndex = indexes[0]?.[0];\n tableMeta.search.setCurrentHighlightColumnIndex(0);\n } else {\n tableMeta.search.setCurrentHighlightColumnIndex(undefined);\n }\n } else {\n tableMeta.search.setHighlightedColumnIndexes([]);\n tableMeta.search.setCurrentHighlightColumnIndex(undefined);\n }\n\n if (firstRowIndex !== undefined && moveActiveRowToFirstMatch) {\n tableMeta.rowActive.setRowActiveIndex(firstRowIndex);\n }\n\n return firstRowIndex;\n}\n"],"names":["isWeakContains","getDataTypeProperties"],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { getDataTypeProperties } from "./dataTypes.js";
|
|
2
2
|
import { isWeakContains } from "./filtering.js";
|
|
3
3
|
const flattenCellValue = (cellValue) => {
|
|
4
|
-
return typeof cellValue === "object" ? Object.values(cellValue).map(flattenCellValue) : cellValue;
|
|
4
|
+
return typeof cellValue === "object" ? Object.values(cellValue).map((val) => flattenCellValue(val)) : cellValue;
|
|
5
5
|
};
|
|
6
6
|
function isMatched(query, cellValue, rowValue, dataType, dataTypeOptions, localization, matcher = isWeakContains) {
|
|
7
7
|
if (typeof cellValue === "object") {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search.js","sources":["../../../../../src/primitives/Table/useTableManager/util/search.ts"],"sourcesContent":["import type { Table as ReactTable, TableMeta as ReactTableMeta, Row as ReactTableRow } from '@tanstack/react-table';\n\nimport type { Localization } from '@/components';\n\nimport type { TableColumnDataType, TableColumnDataTypeOptions } from '../../types';\n\nimport { getDataTypeProperties } from './dataTypes';\nimport { isWeakContains } from './filtering';\n\nconst flattenCellValue = (cellValue: object | string): any => {\n return typeof cellValue === 'object' ? Object.values(cellValue).map(flattenCellValue) : cellValue;\n};\n\nexport function isMatched<TType = unknown>(\n query: any,\n cellValue: any,\n rowValue: TType,\n dataType: TableColumnDataType | undefined,\n dataTypeOptions: TableColumnDataTypeOptions | undefined,\n localization: Localization,\n matcher: (left: any, right: any) => boolean = isWeakContains\n) {\n if (typeof cellValue === 'object') {\n return flattenCellValue(cellValue)\n .flat(Infinity)\n .find((y: any) => matcher(y, query));\n }\n const dataTypeProperties = getDataTypeProperties<TType>(dataType);\n\n if (dataTypeProperties.getDisplayValue) {\n const cellDisplayValue = dataTypeProperties.getDisplayValue(cellValue, rowValue, {\n dataTypeOptions,\n localization,\n });\n\n if (Array.isArray(cellDisplayValue)) {\n return cellDisplayValue.some(cdv => matcher(cdv, query));\n }\n\n if (cellDisplayValue !== undefined && isWeakContains(cellDisplayValue, query)) {\n return true;\n }\n } else {\n const cellValueAsString = String(cellValue ?? '');\n\n if (cellValueAsString !== undefined && matcher(cellValueAsString, query)) {\n return true;\n }\n }\n\n if (typeof query !== typeof cellValue && dataTypeProperties.parse) {\n const parsedQuery = dataTypeProperties.parse(query, localization.locale);\n\n if (parsedQuery !== undefined && matcher(cellValue, parsedQuery)) {\n return true;\n }\n }\n\n return false;\n}\n\nexport function globalFilterFn<TType = unknown>(\n row: ReactTableRow<TType>,\n columnId: string,\n searchQuery: string,\n localization: Localization\n) {\n try {\n if (row.original) {\n const cellValue = row.getValue(columnId);\n const columnMeta = row._getAllCellsByColumnId()[columnId]?.column.columnDef.meta;\n\n return isMatched<TType>(\n searchQuery,\n cellValue,\n row.original,\n columnMeta?.dataType,\n columnMeta?.dataTypeOptions,\n localization\n );\n }\n } catch {\n // we don't care, just fail silently and return no results\n }\n\n return false;\n}\n\nexport function resetHighlightedColumnIndexes<TType = unknown>(\n searchQuery: string | undefined,\n table: ReactTable<TType>,\n localization: Localization,\n // When typing a search we want to jump to the first match. But when this runs to recompute highlights after\n // an edit is saved, moving the active row would yank focus to the top of the list\n moveActiveRowToFirstMatch = true\n) {\n const tableMeta = table.options.meta as ReactTableMeta<TType>;\n let firstRowIndex: undefined | number;\n\n if (searchQuery) {\n const indexes: number[][] = [];\n const columns = table.getVisibleLeafColumns();\n const rowGrouping = table.getState().grouping;\n\n table.getRowModel().rows.forEach((row, rowIndex) => {\n columns.forEach((column, columnIndex) => {\n try {\n let allowSearch = true;\n\n if (rowGrouping?.length) {\n // if it's the grouped row, only allow search of the grouped column - because that's all that's visible\n if (row.getIsGrouped()) {\n allowSearch = column.getIsGrouped();\n }\n // otherwise for other rows, don't search the grouped column - because it isn't visible\n else if (rowGrouping.includes(column.id)) {\n allowSearch = false;\n }\n }\n\n if (column.getIsVisible() && column.columnDef.enableGlobalFilter && allowSearch) {\n const cellValue = row.getValue(column.id);\n const dataType = column.columnDef.meta?.dataType;\n const dataTypeOptions = column.columnDef.meta?.dataTypeOptions;\n\n if (isMatched<TType>(searchQuery, cellValue, row.original, dataType, dataTypeOptions, localization)) {\n indexes.push([rowIndex, columnIndex]);\n }\n }\n } catch {\n //\n }\n });\n });\n\n tableMeta.search.setHighlightedColumnIndexes(indexes);\n\n if (indexes.length) {\n firstRowIndex = indexes[0]?.[0];\n tableMeta.search.setCurrentHighlightColumnIndex(0);\n } else {\n tableMeta.search.setCurrentHighlightColumnIndex(undefined);\n }\n } else {\n tableMeta.search.setHighlightedColumnIndexes([]);\n tableMeta.search.setCurrentHighlightColumnIndex(undefined);\n }\n\n if (firstRowIndex !== undefined && moveActiveRowToFirstMatch) {\n tableMeta.rowActive.setRowActiveIndex(firstRowIndex);\n }\n\n return firstRowIndex;\n}\n"],"names":[],"mappings":";;AASA,MAAM,mBAAmB,CAAC,cAAoC;AAC1D,SAAO,OAAO,cAAc,WAAW,OAAO,OAAO,SAAS,EAAE,IAAI,
|
|
1
|
+
{"version":3,"file":"search.js","sources":["../../../../../src/primitives/Table/useTableManager/util/search.ts"],"sourcesContent":["import type { Table as ReactTable, TableMeta as ReactTableMeta, Row as ReactTableRow } from '@tanstack/react-table';\n\nimport type { Localization } from '@/components';\n\nimport type { TableColumnDataType, TableColumnDataTypeOptions } from '../../types';\n\nimport { getDataTypeProperties } from './dataTypes';\nimport { isWeakContains } from './filtering';\n\nconst flattenCellValue = (cellValue: object | string): any => {\n return typeof cellValue === 'object' ? Object.values(cellValue).map(val => flattenCellValue(val)) : cellValue;\n};\n\nexport function isMatched<TType = unknown>(\n query: any,\n cellValue: any,\n rowValue: TType,\n dataType: TableColumnDataType | undefined,\n dataTypeOptions: TableColumnDataTypeOptions | undefined,\n localization: Localization,\n matcher: (left: any, right: any) => boolean = isWeakContains\n) {\n if (typeof cellValue === 'object') {\n return flattenCellValue(cellValue)\n .flat(Infinity)\n .find((y: any) => matcher(y, query));\n }\n const dataTypeProperties = getDataTypeProperties<TType>(dataType);\n\n if (dataTypeProperties.getDisplayValue) {\n const cellDisplayValue = dataTypeProperties.getDisplayValue(cellValue, rowValue, {\n dataTypeOptions,\n localization,\n });\n\n if (Array.isArray(cellDisplayValue)) {\n return cellDisplayValue.some(cdv => matcher(cdv, query));\n }\n\n if (cellDisplayValue !== undefined && isWeakContains(cellDisplayValue, query)) {\n return true;\n }\n } else {\n const cellValueAsString = String(cellValue ?? '');\n\n if (cellValueAsString !== undefined && matcher(cellValueAsString, query)) {\n return true;\n }\n }\n\n if (typeof query !== typeof cellValue && dataTypeProperties.parse) {\n const parsedQuery = dataTypeProperties.parse(query, localization.locale);\n\n if (parsedQuery !== undefined && matcher(cellValue, parsedQuery)) {\n return true;\n }\n }\n\n return false;\n}\n\nexport function globalFilterFn<TType = unknown>(\n row: ReactTableRow<TType>,\n columnId: string,\n searchQuery: string,\n localization: Localization\n) {\n try {\n if (row.original) {\n const cellValue = row.getValue(columnId);\n const columnMeta = row._getAllCellsByColumnId()[columnId]?.column.columnDef.meta;\n\n return isMatched<TType>(\n searchQuery,\n cellValue,\n row.original,\n columnMeta?.dataType,\n columnMeta?.dataTypeOptions,\n localization\n );\n }\n } catch {\n // we don't care, just fail silently and return no results\n }\n\n return false;\n}\n\nexport function resetHighlightedColumnIndexes<TType = unknown>(\n searchQuery: string | undefined,\n table: ReactTable<TType>,\n localization: Localization,\n // When typing a search we want to jump to the first match. But when this runs to recompute highlights after\n // an edit is saved, moving the active row would yank focus to the top of the list\n moveActiveRowToFirstMatch = true\n) {\n const tableMeta = table.options.meta as ReactTableMeta<TType>;\n let firstRowIndex: undefined | number;\n\n if (searchQuery) {\n const indexes: number[][] = [];\n const columns = table.getVisibleLeafColumns();\n const rowGrouping = table.getState().grouping;\n\n table.getRowModel().rows.forEach((row, rowIndex) => {\n columns.forEach((column, columnIndex) => {\n try {\n let allowSearch = true;\n\n if (rowGrouping?.length) {\n // if it's the grouped row, only allow search of the grouped column - because that's all that's visible\n if (row.getIsGrouped()) {\n allowSearch = column.getIsGrouped();\n }\n // otherwise for other rows, don't search the grouped column - because it isn't visible\n else if (rowGrouping.includes(column.id)) {\n allowSearch = false;\n }\n }\n\n if (column.getIsVisible() && column.columnDef.enableGlobalFilter && allowSearch) {\n const cellValue = row.getValue(column.id);\n const dataType = column.columnDef.meta?.dataType;\n const dataTypeOptions = column.columnDef.meta?.dataTypeOptions;\n\n if (isMatched<TType>(searchQuery, cellValue, row.original, dataType, dataTypeOptions, localization)) {\n indexes.push([rowIndex, columnIndex]);\n }\n }\n } catch {\n //\n }\n });\n });\n\n tableMeta.search.setHighlightedColumnIndexes(indexes);\n\n if (indexes.length) {\n firstRowIndex = indexes[0]?.[0];\n tableMeta.search.setCurrentHighlightColumnIndex(0);\n } else {\n tableMeta.search.setCurrentHighlightColumnIndex(undefined);\n }\n } else {\n tableMeta.search.setHighlightedColumnIndexes([]);\n tableMeta.search.setCurrentHighlightColumnIndex(undefined);\n }\n\n if (firstRowIndex !== undefined && moveActiveRowToFirstMatch) {\n tableMeta.rowActive.setRowActiveIndex(firstRowIndex);\n }\n\n return firstRowIndex;\n}\n"],"names":[],"mappings":";;AASA,MAAM,mBAAmB,CAAC,cAAoC;AAC1D,SAAO,OAAO,cAAc,WAAW,OAAO,OAAO,SAAS,EAAE,IAAI,CAAA,QAAO,iBAAiB,GAAG,CAAC,IAAI;AACxG;AAEO,SAAS,UACZ,OACA,WACA,UACA,UACA,iBACA,cACA,UAA8C,gBAChD;AACE,MAAI,OAAO,cAAc,UAAU;AAC/B,WAAO,iBAAiB,SAAS,EAC5B,KAAK,QAAQ,EACb,KAAK,CAAC,MAAW,QAAQ,GAAG,KAAK,CAAC;AAAA,EAC3C;AACA,QAAM,qBAAqB,sBAA6B,QAAQ;AAEhE,MAAI,mBAAmB,iBAAiB;AACpC,UAAM,mBAAmB,mBAAmB,gBAAgB,WAAW,UAAU;AAAA,MAC7E;AAAA,MACA;AAAA,IAAA,CACH;AAED,QAAI,MAAM,QAAQ,gBAAgB,GAAG;AACjC,aAAO,iBAAiB,KAAK,CAAA,QAAO,QAAQ,KAAK,KAAK,CAAC;AAAA,IAC3D;AAEA,QAAI,qBAAqB,UAAa,eAAe,kBAAkB,KAAK,GAAG;AAC3E,aAAO;AAAA,IACX;AAAA,EACJ,OAAO;AACH,UAAM,oBAAoB,OAAO,aAAa,EAAE;AAEhD,QAAI,sBAAsB,UAAa,QAAQ,mBAAmB,KAAK,GAAG;AACtE,aAAO;AAAA,IACX;AAAA,EACJ;AAEA,MAAI,OAAO,UAAU,OAAO,aAAa,mBAAmB,OAAO;AAC/D,UAAM,cAAc,mBAAmB,MAAM,OAAO,aAAa,MAAM;AAEvE,QAAI,gBAAgB,UAAa,QAAQ,WAAW,WAAW,GAAG;AAC9D,aAAO;AAAA,IACX;AAAA,EACJ;AAEA,SAAO;AACX;AAEO,SAAS,eACZ,KACA,UACA,aACA,cACF;AACE,MAAI;AACA,QAAI,IAAI,UAAU;AACd,YAAM,YAAY,IAAI,SAAS,QAAQ;AACvC,YAAM,aAAa,IAAI,uBAAA,EAAyB,QAAQ,GAAG,OAAO,UAAU;AAE5E,aAAO;AAAA,QACH;AAAA,QACA;AAAA,QACA,IAAI;AAAA,QACJ,YAAY;AAAA,QACZ,YAAY;AAAA,QACZ;AAAA,MAAA;AAAA,IAER;AAAA,EACJ,QAAQ;AAAA,EAER;AAEA,SAAO;AACX;AAEO,SAAS,8BACZ,aACA,OACA,cAGA,4BAA4B,MAC9B;AACE,QAAM,YAAY,MAAM,QAAQ;AAChC,MAAI;AAEJ,MAAI,aAAa;AACb,UAAM,UAAsB,CAAA;AAC5B,UAAM,UAAU,MAAM,sBAAA;AACtB,UAAM,cAAc,MAAM,SAAA,EAAW;AAErC,UAAM,cAAc,KAAK,QAAQ,CAAC,KAAK,aAAa;AAChD,cAAQ,QAAQ,CAAC,QAAQ,gBAAgB;AACrC,YAAI;AACA,cAAI,cAAc;AAElB,cAAI,aAAa,QAAQ;AAErB,gBAAI,IAAI,gBAAgB;AACpB,4BAAc,OAAO,aAAA;AAAA,YACzB,WAES,YAAY,SAAS,OAAO,EAAE,GAAG;AACtC,4BAAc;AAAA,YAClB;AAAA,UACJ;AAEA,cAAI,OAAO,aAAA,KAAkB,OAAO,UAAU,sBAAsB,aAAa;AAC7E,kBAAM,YAAY,IAAI,SAAS,OAAO,EAAE;AACxC,kBAAM,WAAW,OAAO,UAAU,MAAM;AACxC,kBAAM,kBAAkB,OAAO,UAAU,MAAM;AAE/C,gBAAI,UAAiB,aAAa,WAAW,IAAI,UAAU,UAAU,iBAAiB,YAAY,GAAG;AACjG,sBAAQ,KAAK,CAAC,UAAU,WAAW,CAAC;AAAA,YACxC;AAAA,UACJ;AAAA,QACJ,QAAQ;AAAA,QAER;AAAA,MACJ,CAAC;AAAA,IACL,CAAC;AAED,cAAU,OAAO,4BAA4B,OAAO;AAEpD,QAAI,QAAQ,QAAQ;AAChB,sBAAgB,QAAQ,CAAC,IAAI,CAAC;AAC9B,gBAAU,OAAO,+BAA+B,CAAC;AAAA,IACrD,OAAO;AACH,gBAAU,OAAO,+BAA+B,MAAS;AAAA,IAC7D;AAAA,EACJ,OAAO;AACH,cAAU,OAAO,4BAA4B,EAAE;AAC/C,cAAU,OAAO,+BAA+B,MAAS;AAAA,EAC7D;AAEA,MAAI,kBAAkB,UAAa,2BAA2B;AAC1D,cAAU,UAAU,kBAAkB,aAAa;AAAA,EACvD;AAEA,SAAO;AACX;"}
|
|
@@ -251,12 +251,12 @@ function configureReactTableOptions(options, props, localization) {
|
|
|
251
251
|
enableColumnFilters: options.enableFiltering ?? false,
|
|
252
252
|
enableColumnResizing: options.enableColumnResizing ?? false,
|
|
253
253
|
enableExpanding: options.enableRowExpansion ?? false,
|
|
254
|
-
enableGrouping: true,
|
|
255
254
|
// users can't customise row grouping, so it can just be always enabled and left to the defaultRowGroupColumnId prop
|
|
255
|
+
enableGrouping: true,
|
|
256
256
|
enableHiding: options.enableColumnHiding ?? false,
|
|
257
257
|
enablePinning: options.enableColumnFreezing ?? false,
|
|
258
|
-
enableRowPinning: true,
|
|
259
258
|
// users can't customise row pinning, so it can just be always enabled
|
|
259
|
+
enableRowPinning: true,
|
|
260
260
|
enableRowSelection: reactTableEnableRowSelection ?? false,
|
|
261
261
|
enableSorting: options.enableSorting ?? false,
|
|
262
262
|
// models for default features
|
|
@@ -316,7 +316,7 @@ function useReactTableInitialState(props, columns$1, persistedSettings, defaults
|
|
|
316
316
|
columnPinning.left
|
|
317
317
|
);
|
|
318
318
|
if (columnPinning?.left?.length) {
|
|
319
|
-
const lastPinnedColumn = columnPinning.left
|
|
319
|
+
const lastPinnedColumn = columnPinning.left.at(-1);
|
|
320
320
|
if (lastPinnedColumn !== void 0) {
|
|
321
321
|
columnPinning.left = columns.freezeUptoExternalColumn(columnOrder.indexOf(lastPinnedColumn), columnOrder);
|
|
322
322
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup.cjs","sources":["../../../../../src/primitives/Table/useTableManager/util/setup.ts"],"sourcesContent":["import type {\n TableOptions as ReactTableOptions,\n Row as ReactTableRow,\n Table as ReactTableInstance,\n CellContext as ReactTableCellContext,\n Column as ReactTableColumn,\n ColumnDef as ReactTableColumnDef,\n ColumnPinningState as ReactTableColumnPinningState,\n ColumnSizingState as ReactTableColumnSizingState,\n ColumnSort as ReactTableColumnSort,\n TableState as ReactTableState,\n VisibilityState as ReactTableVisibilityState,\n} from '@tanstack/react-table';\nimport {\n createColumnHelper,\n expandRows,\n getExpandedRowModel,\n getFilteredRowModel,\n getGroupedRowModel,\n getMemoOptions,\n getSortedRowModel,\n memo,\n} from '@tanstack/react-table';\nimport get from 'lodash/get';\nimport React from 'react';\n\nimport type { Localization } from '@/components';\n\nimport type { TableColumnProps, TableFeatureProps, TableGroupProps, TableProps, TableSettings } from '../../types';\nimport type { useTableManagerInternalColumns, useTableManagerInternalColumn } from '../types';\n\nimport { CELL_MIN_WIDTH, ensureOrdering, freezeUptoExternalColumn, unfreezeAllExternalColumns } from './columns';\nimport { getDataTypeProperties } from './dataTypes';\nimport { columnFilterFn } from './filtering';\nimport { globalFilterFn } from './search';\nimport { ignoreInternalColumns } from './settings';\nimport { getSortingFn } from './sorting';\n\n// mapping children to react-table columns\nfunction processChildren<TType>(\n child: React.ReactNode,\n columns: ReactTableColumnDef<TType>[],\n defaultSizing: ReactTableColumnSizingState,\n defaultSorting: ReactTableColumnSort[],\n defaultVisibility: ReactTableVisibilityState,\n settings: TableSettings,\n defaultRowGroupColumnId: keyof TType | undefined,\n localization: Localization\n): ReactTableColumnDef<TType>[] {\n const columnHelper = createColumnHelper<TType>();\n\n if (React.isValidElement<TableGroupProps>(child) && child.props.children) {\n const { children, id, header } = child.props;\n\n columns.push(\n columnHelper.group({\n id,\n header,\n columns: React.Children.toArray(children).reduce(\n (columns: ReactTableColumnDef<TType>[], child) =>\n processChildren<TType>(\n child,\n columns,\n defaultSizing,\n defaultSorting,\n defaultVisibility,\n settings,\n defaultRowGroupColumnId,\n localization\n ),\n []\n ),\n // we don't want to let column groups be grouped/aggregrated\n enableGrouping: false,\n })\n );\n } else if (React.isValidElement<TableColumnProps<TType>>(child) && (child.props.accessor || child.props.id)) {\n const {\n id: untypedId,\n accessor: accessorKey,\n // renderers\n renderer,\n aggregate,\n footer,\n header,\n // options\n aggregationFn,\n defaultHidden,\n defaultWidth,\n enableEditing = !!child.props.control,\n enableFiltering: enableColumnFilter = true,\n enableGrouping = false,\n enableHiding = true,\n enableOrdering = true,\n enablePrinting = true,\n enableResizing = true,\n enableSearch: enableGlobalFilter = true,\n enableSorting = true,\n enableTruncate = false,\n minWidth: minSize = CELL_MIN_WIDTH[settings.fontSize ?? 'medium'] ?? CELL_MIN_WIDTH.medium,\n sort,\n sortFn,\n ...meta\n } = child.props;\n\n // always have an id, if none is defined use the accessor (at least one has to be defined)\n const id = untypedId ?? (accessorKey as string);\n\n const dataTypeProperties = getDataTypeProperties<TType>(child.props.dataType);\n\n if (defaultHidden && enableHiding) {\n defaultVisibility[id] = false;\n }\n\n if (defaultWidth) {\n defaultSizing[id] = defaultWidth as any;\n }\n\n const isGrouped = defaultRowGroupColumnId === id;\n\n if (child.props.sort !== undefined || isGrouped) {\n defaultSorting.push({\n id,\n desc: sort === 'desc',\n });\n }\n\n const column: ReactTableColumnDef<TType, any> = {\n id,\n // dot notated accessors will throw if they return null or undefined, so use accessorFn (instead of accessorKey) to avoid that\n accessorFn: row => get(row, accessorKey as string),\n // The header can be either a string or a React.JSX.Element, but react-table expects it to be a string or a\n // renderer function, so `() => header` ensures compatibility when header is a React.JSX.Element.\n // If we just pass `() => header`, then we will loose truncation for string headers.\n header: typeof header === 'string' ? header : () => header,\n // features\n enableColumnFilter,\n enableGlobalFilter,\n enableGrouping,\n enableHiding: isGrouped ? false : enableHiding,\n enableResizing,\n enableSorting,\n // config - sizing\n minSize,\n // meta\n meta: {\n ...(meta as any),\n align: meta.align ?? dataTypeProperties.align,\n defaultWidth,\n enableOrdering: isGrouped ? false : enableOrdering,\n enablePrinting,\n enableTruncate,\n enableEditing,\n header,\n },\n };\n\n const formattedValueRenderer = (value: any, row: TType) => {\n const displayValue = dataTypeProperties.getDisplayValue?.(value, row, {\n dataTypeOptions: meta.dataTypeOptions as any,\n localization,\n });\n const safeValue = value !== undefined && value !== null ? String(value) : value;\n\n if (Array.isArray(displayValue)) {\n return displayValue[0] ?? safeValue;\n }\n\n return displayValue ?? safeValue;\n };\n\n const rendererArgs = (info: ReactTableCellContext<TType, any>): any => ({\n row: info.row.original,\n get value() {\n return info.getValue();\n },\n get formattedValue() {\n return formattedValueRenderer(info.getValue(), info.row.original);\n },\n });\n\n // renderers - use defined renderers first, then fall back to data type renderers (if there is one)\n if (typeof renderer === 'function') {\n column.cell = info => renderer(rendererArgs(info));\n } else {\n column.cell = info => formattedValueRenderer(info.getValue(), info.row.original);\n }\n\n if (typeof footer === 'function') {\n column.footer = info =>\n footer(info.table.getRowModel().rows.flatMap(row => (row.original === undefined ? [] : row.original)));\n }\n\n // config - filtering\n if (enableColumnFilter) {\n column.filterFn = 'tacoFilter' as any;\n }\n\n // config - grouping/aggregation\n if (enableGrouping) {\n column.aggregationFn = aggregationFn;\n\n if (typeof aggregate === 'function') {\n column.aggregatedCell = info => aggregate(rendererArgs(info));\n }\n }\n\n // config - sorting\n if (enableSorting) {\n column.sortingFn = getSortingFn<TType>(child.props.dataType, sortFn);\n column.sortDescFirst = false;\n column.sortUndefined = 1;\n }\n\n columns.push(column);\n }\n\n return columns;\n}\n\nfunction createInternalColumn<TType = unknown>(\n id: string,\n column: useTableManagerInternalColumn<TType>,\n defaultSizing: ReactTableColumnSizingState\n) {\n if (column.size) {\n defaultSizing[id] = column.size;\n }\n\n return {\n id,\n accessorKey: id,\n header: column.header,\n cell: column.renderer,\n // features\n enableColumnFilter: false,\n enableGlobalFilter: false,\n enableGrouping: false,\n enableHiding: false,\n enableResizing: false,\n enableSorting: false,\n // config - sizing\n size: column.size,\n minSize: column.size,\n // meta\n meta: {\n ...(column.meta as any),\n enableOrdering: false,\n enablePrinting: false,\n enableTruncate: false,\n },\n } as ReactTableColumnDef<TType, any>;\n}\n\nexport function mapTableChildrenToColumns<TType = unknown>(\n props: TableProps<TType>,\n settings: TableSettings,\n options: TableFeatureProps<TType>,\n internalColumns: useTableManagerInternalColumns<TType> | undefined,\n localization: Localization\n) {\n const { children, defaultRowGroupColumnId } = props;\n const defaultSizing: ReactTableColumnSizingState = {};\n const defaultSorting: ReactTableColumnSort[] = [];\n const defaultVisibility: ReactTableVisibilityState = {};\n\n const columns = React.Children.toArray(children).reduce(\n (columns: ReactTableColumnDef<TType>[], child) =>\n processChildren<TType>(\n child,\n columns,\n defaultSizing,\n defaultSorting,\n defaultVisibility,\n settings,\n defaultRowGroupColumnId,\n localization\n ),\n\n []\n );\n\n if (internalColumns) {\n if (options.enableRowExpansion && props.rowExpansionRenderer && internalColumns.rowExpansion) {\n const column = createInternalColumn<TType>('__expansion', internalColumns.rowExpansion, defaultSizing);\n columns.unshift(column);\n }\n\n if (options.enableRowSelection && internalColumns.rowSelection) {\n const column = createInternalColumn<TType>('__select', internalColumns.rowSelection, defaultSizing);\n columns.unshift(column);\n }\n\n if (options.enableRowDrag && props.onRowDrag && internalColumns.rowDrag) {\n const column = createInternalColumn<TType>('__drag', internalColumns.rowDrag, defaultSizing);\n columns.unshift(column);\n }\n\n if (options.enableRowActions && props.rowActions?.length && internalColumns.rowActions) {\n const column = createInternalColumn<TType>('__actions', internalColumns.rowActions, defaultSizing);\n columns.push(column);\n }\n }\n\n return { columns, defaultSizing, defaultSorting, defaultVisibility };\n}\n\n// react-table skips expansion entirely while nothing is expanded, which would also stop row groups from\n// expanding and hide every row inside them. group rows are always expanded (see getIsRowExpanded below),\n// so when grouping we expand regardless of the row expansion state.\nfunction getRowGroupExpandedRowModel<TType = unknown>() {\n return (table: ReactTableInstance<TType>) =>\n memo(\n () => [table.getState().expanded, table.getPreExpandedRowModel()] as const,\n (_expanded, rowModel) => (rowModel.rows.length ? expandRows(rowModel) : rowModel),\n getMemoOptions(table.options, 'debugTable', 'getExpandedRowModel')\n );\n}\n\nexport function configureReactTableOptions<TType = unknown>(\n options: TableFeatureProps<TType>,\n props: TableProps<TType>,\n localization: Localization\n) {\n // We don't want to expose internal Tanstack Table row, so we need to wrap enableRowSelection callback into additional function,\n // which receives the React Table Row object and passes row.original to a callback.\n const reactTableEnableRowSelection =\n typeof options.enableRowSelection === 'function'\n ? (row: ReactTableRow<TType>) => (options.enableRowSelection as (row: TType) => boolean)(row.original)\n : options.enableRowSelection;\n\n let getRowId;\n\n if (props.rowIdentityAccessor) {\n getRowId = (originalRow: TType | undefined, index: number) => {\n if (originalRow) {\n return String(originalRow[props.rowIdentityAccessor as keyof TType]);\n }\n\n return String(index);\n };\n }\n\n const tableOptions: Partial<ReactTableOptions<TType>> = {\n defaultColumn: {\n enableColumnFilter: options.enableFiltering || true,\n enableGrouping: false,\n enableHiding: options.enableColumnHiding || true,\n enableResizing: options.enableColumnResizing || true,\n enableGlobalFilter: options.enableSearch || true,\n enableSorting: options.enableSorting || true,\n minSize: 1,\n // the default is 150, which is a bit random\n size: 1,\n },\n enableColumnFilters: options.enableFiltering ?? false,\n enableColumnResizing: options.enableColumnResizing ?? false,\n enableExpanding: options.enableRowExpansion ?? false,\n enableGrouping: true, // users can't customise row grouping, so it can just be always enabled and left to the defaultRowGroupColumnId prop\n enableHiding: options.enableColumnHiding ?? false,\n enablePinning: options.enableColumnFreezing ?? false,\n enableRowPinning: true, // users can't customise row pinning, so it can just be always enabled\n enableRowSelection: reactTableEnableRowSelection ?? false,\n enableSorting: options.enableSorting ?? false,\n // models for default features\n getExpandedRowModel: props.defaultRowGroupColumnId ? getRowGroupExpandedRowModel<TType>() : getExpandedRowModel<TType>(),\n getGroupedRowModel: getGroupedRowModel<TType>(),\n // group rows are expanded by grouping, not by row expansion, so their state is fixed - returning\n // undefined for data rows lets react-table fall back to the row expansion state for them\n getIsRowExpanded: ((row: ReactTableRow<TType>) => (row.getIsGrouped() ? true : undefined)) as (\n row: ReactTableRow<TType>\n ) => boolean,\n getRowId,\n groupedColumnMode: false,\n keepPinnedRows: false,\n };\n\n if (options.enableRowExpansion) {\n // Prevent expansion state from resetting when data changes (e.g., after editing)\n tableOptions.autoResetExpanded = false;\n }\n\n if (tableOptions.enableColumnResizing) {\n tableOptions.columnResizeMode = 'onChange';\n }\n\n if (tableOptions.enableColumnFilters) {\n // enter controlled filter mode (controlled could be local state, but usually the server)\n if (props.onChangeFilter) {\n // tableOptions.manualFiltering = true;\n // we don't set it because it breaks global filtering (used for search, which is fully client side)\n //\n // tableOptions.onColumnFiltersChange = ...\n // we don't set this because it expects state to be maintained externally, and we don't want\n // consumers to control state outside the table. instead we have a listener that calls onFilter\n } else {\n tableOptions.getFilteredRowModel = getFilteredRowModel<TType>();\n tableOptions.filterFns = {\n tacoFilter: (row: ReactTableRow<TType>, columnId: string, filter: any) => {\n const meta = row._getAllCellsByColumnId()[columnId]?.column.columnDef.meta;\n return columnFilterFn(row.original, row.getValue(columnId), meta, filter, localization);\n },\n };\n }\n }\n\n if (options.enableSearch) {\n // always set these because enableGlobalFilter can be toggled on and off by the user\n tableOptions.getFilteredRowModel = getFilteredRowModel<TType>();\n tableOptions.globalFilterFn = (row: ReactTableRow<TType>, columnId: string, searchQuery: any) =>\n globalFilterFn(row, columnId, searchQuery, localization);\n tableOptions.getColumnCanGlobalFilter = (column: ReactTableColumn<TType>) =>\n column.columnDef.meta?.enableSearch !== false && column.getIsVisible();\n\n // enter controlled search mode (controlled could be local state, but usually the server)\n if (props.onChangeSearch) {\n if (props._experimentalDataLoader2) {\n tableOptions.manualFiltering = true;\n } else {\n // tableOptions.manualFiltering = true;\n // we don't set this because controlled search is not currently supported, search is always client side\n //\n // tableOptions.onGlobalFilterChange = ...\n // we don't set this because it expects state to be maintained externally, and we don't want\n // consumers to control state outside the table. instead we have a listener that calls onSearch.\n //\n // we also don't always filter when searching, we have the highlight functionality as the default\n // and filtering can be toggled by the user\n }\n }\n }\n\n if (tableOptions.enableSorting) {\n // enter controlled sort mode (controlled could be local state, but usually the server)\n if (props.onChangeSort) {\n tableOptions.manualSorting = true;\n\n // tableOptions.onSortingChange = ...\n // we don't set this because it expects state to be maintained externally, and we don't want\n // consumers to control state outside the table. instead we have a listener that calls onSort\n } else {\n tableOptions.getSortedRowModel = getSortedRowModel();\n }\n }\n\n return tableOptions;\n}\n\nexport function useReactTableInitialState<TType = unknown>(\n props: TableProps<TType>,\n columns: ReactTableColumnDef<TType>[],\n persistedSettings: TableSettings,\n defaults: {\n defaultSizing: ReactTableColumnSizingState;\n defaultSorting: ReactTableColumnSort[];\n defaultVisibility: ReactTableVisibilityState;\n }\n): Partial<ReactTableState> {\n return React.useMemo(() => {\n const ignoreNotDefinedColumns = (column: ReactTableColumnDef<TType>) =>\n columns.find(definedColumn => definedColumn.id === column.id);\n\n const columnPinning: ReactTableColumnPinningState =\n persistedSettings.columnPinning ?? props.defaultSettings?.columnPinning ?? {};\n\n const columnOrder = ensureOrdering<TType>(\n columns,\n persistedSettings.columnOrder ?? props.defaultSettings?.columnOrder,\n columnPinning.left\n );\n\n // ensure internal columns are pinned, and are pinned in the correct order\n if (columnPinning?.left?.length) {\n const lastPinnedColumn = columnPinning.left[columnPinning.left.length - 1];\n\n if (lastPinnedColumn !== undefined) {\n columnPinning.left = freezeUptoExternalColumn(columnOrder.indexOf(lastPinnedColumn), columnOrder);\n }\n } else if (props.defaultColumnFreezingIndex === undefined) {\n columnPinning.left = unfreezeAllExternalColumns(columnOrder);\n } else {\n columnPinning.left = freezeUptoExternalColumn(props.defaultColumnFreezingIndex, columnOrder);\n }\n\n const columnSizing = {\n ...defaults.defaultSizing,\n ...props.defaultSettings?.columnSizing,\n ...persistedSettings.columnSizing,\n };\n\n const state: Partial<ReactTableState> = {\n columnFilters: persistedSettings.columnFilters ?? props.defaultSettings?.columnFilters ?? [],\n columnOrder,\n columnPinning,\n columnSizing: ignoreInternalColumns(columnSizing),\n columnVisibility:\n persistedSettings.columnVisibility ?? props.defaultSettings?.columnVisibility ?? defaults.defaultVisibility ?? {},\n globalFilter: persistedSettings.searchQuery ?? props.defaultSettings?.searchQuery,\n sorting: persistedSettings.sorting\n ? persistedSettings.sorting.filter(ignoreNotDefinedColumns)\n : (props.defaultSettings?.sorting ?? defaults.defaultSorting),\n };\n\n if (props.defaultRowGroupColumnId) {\n state.grouping = [props.defaultRowGroupColumnId as string];\n // row groups should (all) always be expanded by default\n state.expanded = true;\n }\n\n return state;\n }, []);\n}\n"],"names":["columns","settings","createColumnHelper","child","CELL_MIN_WIDTH","getDataTypeProperties","getSortingFn","memo","expandRows","getMemoOptions","getExpandedRowModel","getGroupedRowModel","getFilteredRowModel","columnFilterFn","globalFilterFn","getSortedRowModel","ensureOrdering","freezeUptoExternalColumn","unfreezeAllExternalColumns","ignoreInternalColumns"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"setup.cjs","sources":["../../../../../src/primitives/Table/useTableManager/util/setup.ts"],"sourcesContent":["import type {\n TableOptions as ReactTableOptions,\n Row as ReactTableRow,\n Table as ReactTableInstance,\n CellContext as ReactTableCellContext,\n Column as ReactTableColumn,\n ColumnDef as ReactTableColumnDef,\n ColumnPinningState as ReactTableColumnPinningState,\n ColumnSizingState as ReactTableColumnSizingState,\n ColumnSort as ReactTableColumnSort,\n TableState as ReactTableState,\n VisibilityState as ReactTableVisibilityState,\n} from '@tanstack/react-table';\nimport {\n createColumnHelper,\n expandRows,\n getExpandedRowModel,\n getFilteredRowModel,\n getGroupedRowModel,\n getMemoOptions,\n getSortedRowModel,\n memo,\n} from '@tanstack/react-table';\nimport get from 'lodash/get';\nimport React from 'react';\n\nimport type { Localization } from '@/components';\n\nimport type { TableColumnProps, TableFeatureProps, TableGroupProps, TableProps, TableSettings } from '../../types';\nimport type { useTableManagerInternalColumns, useTableManagerInternalColumn } from '../types';\n\nimport { CELL_MIN_WIDTH, ensureOrdering, freezeUptoExternalColumn, unfreezeAllExternalColumns } from './columns';\nimport { getDataTypeProperties } from './dataTypes';\nimport { columnFilterFn } from './filtering';\nimport { globalFilterFn } from './search';\nimport { ignoreInternalColumns } from './settings';\nimport { getSortingFn } from './sorting';\n\n// mapping children to react-table columns\nfunction processChildren<TType>(\n child: React.ReactNode,\n columns: ReactTableColumnDef<TType>[],\n defaultSizing: ReactTableColumnSizingState,\n defaultSorting: ReactTableColumnSort[],\n defaultVisibility: ReactTableVisibilityState,\n settings: TableSettings,\n defaultRowGroupColumnId: keyof TType | undefined,\n localization: Localization\n): ReactTableColumnDef<TType>[] {\n const columnHelper = createColumnHelper<TType>();\n\n if (React.isValidElement<TableGroupProps>(child) && child.props.children) {\n const { children, id, header } = child.props;\n\n columns.push(\n columnHelper.group({\n id,\n header,\n columns: React.Children.toArray(children).reduce(\n (columns: ReactTableColumnDef<TType>[], child) =>\n processChildren<TType>(\n child,\n columns,\n defaultSizing,\n defaultSorting,\n defaultVisibility,\n settings,\n defaultRowGroupColumnId,\n localization\n ),\n []\n ),\n // we don't want to let column groups be grouped/aggregrated\n enableGrouping: false,\n })\n );\n } else if (React.isValidElement<TableColumnProps<TType>>(child) && (child.props.accessor || child.props.id)) {\n const {\n id: untypedId,\n accessor: accessorKey,\n // renderers\n renderer,\n aggregate,\n footer,\n header,\n // options\n aggregationFn,\n defaultHidden,\n defaultWidth,\n enableEditing = !!child.props.control,\n enableFiltering: enableColumnFilter = true,\n enableGrouping = false,\n enableHiding = true,\n enableOrdering = true,\n enablePrinting = true,\n enableResizing = true,\n enableSearch: enableGlobalFilter = true,\n enableSorting = true,\n enableTruncate = false,\n minWidth: minSize = CELL_MIN_WIDTH[settings.fontSize ?? 'medium'] ?? CELL_MIN_WIDTH.medium,\n sort,\n sortFn,\n ...meta\n } = child.props;\n\n // always have an id, if none is defined use the accessor (at least one has to be defined)\n const id = untypedId ?? (accessorKey as string);\n\n const dataTypeProperties = getDataTypeProperties<TType>(child.props.dataType);\n\n if (defaultHidden && enableHiding) {\n defaultVisibility[id] = false;\n }\n\n if (defaultWidth) {\n defaultSizing[id] = defaultWidth as any;\n }\n\n const isGrouped = defaultRowGroupColumnId === id;\n\n if (child.props.sort !== undefined || isGrouped) {\n defaultSorting.push({\n id,\n desc: sort === 'desc',\n });\n }\n\n const column: ReactTableColumnDef<TType, any> = {\n id,\n // dot notated accessors will throw if they return null or undefined, so use accessorFn (instead of accessorKey) to avoid that\n accessorFn: row => get(row, accessorKey as string),\n // The header can be either a string or a React.JSX.Element, but react-table expects it to be a string or a\n // renderer function, so `() => header` ensures compatibility when header is a React.JSX.Element.\n // If we just pass `() => header`, then we will loose truncation for string headers.\n header: typeof header === 'string' ? header : () => header,\n // features\n enableColumnFilter,\n enableGlobalFilter,\n enableGrouping,\n enableHiding: isGrouped ? false : enableHiding,\n enableResizing,\n enableSorting,\n // config - sizing\n minSize,\n // meta\n meta: {\n ...(meta as any),\n align: meta.align ?? dataTypeProperties.align,\n defaultWidth,\n enableOrdering: isGrouped ? false : enableOrdering,\n enablePrinting,\n enableTruncate,\n enableEditing,\n header,\n },\n };\n\n const formattedValueRenderer = (value: any, row: TType) => {\n const displayValue = dataTypeProperties.getDisplayValue?.(value, row, {\n dataTypeOptions: meta.dataTypeOptions as any,\n localization,\n });\n const safeValue = value !== undefined && value !== null ? String(value) : value;\n\n if (Array.isArray(displayValue)) {\n return displayValue[0] ?? safeValue;\n }\n\n return displayValue ?? safeValue;\n };\n\n const rendererArgs = (info: ReactTableCellContext<TType, any>): any => ({\n row: info.row.original,\n get value() {\n return info.getValue();\n },\n get formattedValue() {\n return formattedValueRenderer(info.getValue(), info.row.original);\n },\n });\n\n // renderers - use defined renderers first, then fall back to data type renderers (if there is one)\n if (typeof renderer === 'function') {\n column.cell = info => renderer(rendererArgs(info));\n } else {\n column.cell = info => formattedValueRenderer(info.getValue(), info.row.original);\n }\n\n if (typeof footer === 'function') {\n column.footer = info =>\n footer(info.table.getRowModel().rows.flatMap(row => (row.original === undefined ? [] : row.original)));\n }\n\n // config - filtering\n if (enableColumnFilter) {\n column.filterFn = 'tacoFilter' as any;\n }\n\n // config - grouping/aggregation\n if (enableGrouping) {\n column.aggregationFn = aggregationFn;\n\n if (typeof aggregate === 'function') {\n column.aggregatedCell = info => aggregate(rendererArgs(info));\n }\n }\n\n // config - sorting\n if (enableSorting) {\n column.sortingFn = getSortingFn<TType>(child.props.dataType, sortFn);\n column.sortDescFirst = false;\n column.sortUndefined = 1;\n }\n\n columns.push(column);\n }\n\n return columns;\n}\n\nfunction createInternalColumn<TType = unknown>(\n id: string,\n column: useTableManagerInternalColumn<TType>,\n defaultSizing: ReactTableColumnSizingState\n) {\n if (column.size) {\n defaultSizing[id] = column.size;\n }\n\n return {\n id,\n accessorKey: id,\n header: column.header,\n cell: column.renderer,\n // features\n enableColumnFilter: false,\n enableGlobalFilter: false,\n enableGrouping: false,\n enableHiding: false,\n enableResizing: false,\n enableSorting: false,\n // config - sizing\n size: column.size,\n minSize: column.size,\n // meta\n meta: {\n ...(column.meta as any),\n enableOrdering: false,\n enablePrinting: false,\n enableTruncate: false,\n },\n } as ReactTableColumnDef<TType, any>;\n}\n\nexport function mapTableChildrenToColumns<TType = unknown>(\n props: TableProps<TType>,\n settings: TableSettings,\n options: TableFeatureProps<TType>,\n internalColumns: useTableManagerInternalColumns<TType> | undefined,\n localization: Localization\n) {\n const { children, defaultRowGroupColumnId } = props;\n const defaultSizing: ReactTableColumnSizingState = {};\n const defaultSorting: ReactTableColumnSort[] = [];\n const defaultVisibility: ReactTableVisibilityState = {};\n\n const columns = React.Children.toArray(children).reduce(\n (columns: ReactTableColumnDef<TType>[], child) =>\n processChildren<TType>(\n child,\n columns,\n defaultSizing,\n defaultSorting,\n defaultVisibility,\n settings,\n defaultRowGroupColumnId,\n localization\n ),\n\n []\n );\n\n if (internalColumns) {\n if (options.enableRowExpansion && props.rowExpansionRenderer && internalColumns.rowExpansion) {\n const column = createInternalColumn<TType>('__expansion', internalColumns.rowExpansion, defaultSizing);\n columns.unshift(column);\n }\n\n if (options.enableRowSelection && internalColumns.rowSelection) {\n const column = createInternalColumn<TType>('__select', internalColumns.rowSelection, defaultSizing);\n columns.unshift(column);\n }\n\n if (options.enableRowDrag && props.onRowDrag && internalColumns.rowDrag) {\n const column = createInternalColumn<TType>('__drag', internalColumns.rowDrag, defaultSizing);\n columns.unshift(column);\n }\n\n if (options.enableRowActions && props.rowActions?.length && internalColumns.rowActions) {\n const column = createInternalColumn<TType>('__actions', internalColumns.rowActions, defaultSizing);\n columns.push(column);\n }\n }\n\n return { columns, defaultSizing, defaultSorting, defaultVisibility };\n}\n\n// react-table skips expansion entirely while nothing is expanded, which would also stop row groups from\n// expanding and hide every row inside them. group rows are always expanded (see getIsRowExpanded below),\n// so when grouping we expand regardless of the row expansion state.\nfunction getRowGroupExpandedRowModel<TType = unknown>() {\n return (table: ReactTableInstance<TType>) =>\n memo(\n () => [table.getState().expanded, table.getPreExpandedRowModel()] as const,\n (_expanded, rowModel) => (rowModel.rows.length ? expandRows(rowModel) : rowModel),\n getMemoOptions(table.options, 'debugTable', 'getExpandedRowModel')\n );\n}\n\nexport function configureReactTableOptions<TType = unknown>(\n options: TableFeatureProps<TType>,\n props: TableProps<TType>,\n localization: Localization\n) {\n // We don't want to expose internal Tanstack Table row, so we need to wrap enableRowSelection callback into additional function,\n // which receives the React Table Row object and passes row.original to a callback.\n const reactTableEnableRowSelection =\n typeof options.enableRowSelection === 'function'\n ? (row: ReactTableRow<TType>) => (options.enableRowSelection as (row: TType) => boolean)(row.original)\n : options.enableRowSelection;\n\n let getRowId;\n\n if (props.rowIdentityAccessor) {\n getRowId = (originalRow: TType | undefined, index: number) => {\n if (originalRow) {\n return String(originalRow[props.rowIdentityAccessor as keyof TType]);\n }\n\n return String(index);\n };\n }\n\n const tableOptions: Partial<ReactTableOptions<TType>> = {\n defaultColumn: {\n enableColumnFilter: options.enableFiltering || true,\n enableGrouping: false,\n enableHiding: options.enableColumnHiding || true,\n enableResizing: options.enableColumnResizing || true,\n enableGlobalFilter: options.enableSearch || true,\n enableSorting: options.enableSorting || true,\n minSize: 1,\n // the default is 150, which is a bit random\n size: 1,\n },\n enableColumnFilters: options.enableFiltering ?? false,\n enableColumnResizing: options.enableColumnResizing ?? false,\n enableExpanding: options.enableRowExpansion ?? false,\n // users can't customise row grouping, so it can just be always enabled and left to the defaultRowGroupColumnId prop\n enableGrouping: true,\n enableHiding: options.enableColumnHiding ?? false,\n enablePinning: options.enableColumnFreezing ?? false,\n // users can't customise row pinning, so it can just be always enabled\n enableRowPinning: true,\n enableRowSelection: reactTableEnableRowSelection ?? false,\n enableSorting: options.enableSorting ?? false,\n // models for default features\n getExpandedRowModel: props.defaultRowGroupColumnId ? getRowGroupExpandedRowModel<TType>() : getExpandedRowModel<TType>(),\n getGroupedRowModel: getGroupedRowModel<TType>(),\n // group rows are expanded by grouping, not by row expansion, so their state is fixed - returning\n // undefined for data rows lets react-table fall back to the row expansion state for them\n getIsRowExpanded: ((row: ReactTableRow<TType>) => (row.getIsGrouped() ? true : undefined)) as (\n row: ReactTableRow<TType>\n ) => boolean,\n getRowId,\n groupedColumnMode: false,\n keepPinnedRows: false,\n };\n\n if (options.enableRowExpansion) {\n // Prevent expansion state from resetting when data changes (e.g., after editing)\n tableOptions.autoResetExpanded = false;\n }\n\n if (tableOptions.enableColumnResizing) {\n tableOptions.columnResizeMode = 'onChange';\n }\n\n if (tableOptions.enableColumnFilters) {\n // enter controlled filter mode (controlled could be local state, but usually the server)\n if (props.onChangeFilter) {\n // tableOptions.manualFiltering = true;\n // we don't set it because it breaks global filtering (used for search, which is fully client side)\n //\n // tableOptions.onColumnFiltersChange = ...\n // we don't set this because it expects state to be maintained externally, and we don't want\n // consumers to control state outside the table. instead we have a listener that calls onFilter\n } else {\n tableOptions.getFilteredRowModel = getFilteredRowModel<TType>();\n tableOptions.filterFns = {\n tacoFilter: (row: ReactTableRow<TType>, columnId: string, filter: any) => {\n const meta = row._getAllCellsByColumnId()[columnId]?.column.columnDef.meta;\n return columnFilterFn(row.original, row.getValue(columnId), meta, filter, localization);\n },\n };\n }\n }\n\n if (options.enableSearch) {\n // always set these because enableGlobalFilter can be toggled on and off by the user\n tableOptions.getFilteredRowModel = getFilteredRowModel<TType>();\n tableOptions.globalFilterFn = (row: ReactTableRow<TType>, columnId: string, searchQuery: any) =>\n globalFilterFn(row, columnId, searchQuery, localization);\n tableOptions.getColumnCanGlobalFilter = (column: ReactTableColumn<TType>) =>\n column.columnDef.meta?.enableSearch !== false && column.getIsVisible();\n\n // enter controlled search mode (controlled could be local state, but usually the server)\n if (props.onChangeSearch) {\n if (props._experimentalDataLoader2) {\n tableOptions.manualFiltering = true;\n } else {\n // tableOptions.manualFiltering = true;\n // we don't set this because controlled search is not currently supported, search is always client side\n //\n // tableOptions.onGlobalFilterChange = ...\n // we don't set this because it expects state to be maintained externally, and we don't want\n // consumers to control state outside the table. instead we have a listener that calls onSearch.\n //\n // we also don't always filter when searching, we have the highlight functionality as the default\n // and filtering can be toggled by the user\n }\n }\n }\n\n if (tableOptions.enableSorting) {\n // enter controlled sort mode (controlled could be local state, but usually the server)\n if (props.onChangeSort) {\n tableOptions.manualSorting = true;\n\n // tableOptions.onSortingChange = ...\n // we don't set this because it expects state to be maintained externally, and we don't want\n // consumers to control state outside the table. instead we have a listener that calls onSort\n } else {\n tableOptions.getSortedRowModel = getSortedRowModel();\n }\n }\n\n return tableOptions;\n}\n\nexport function useReactTableInitialState<TType = unknown>(\n props: TableProps<TType>,\n columns: ReactTableColumnDef<TType>[],\n persistedSettings: TableSettings,\n defaults: {\n defaultSizing: ReactTableColumnSizingState;\n defaultSorting: ReactTableColumnSort[];\n defaultVisibility: ReactTableVisibilityState;\n }\n): Partial<ReactTableState> {\n return React.useMemo(() => {\n const ignoreNotDefinedColumns = (column: ReactTableColumnDef<TType>) =>\n columns.find(definedColumn => definedColumn.id === column.id);\n\n const columnPinning: ReactTableColumnPinningState =\n persistedSettings.columnPinning ?? props.defaultSettings?.columnPinning ?? {};\n\n const columnOrder = ensureOrdering<TType>(\n columns,\n persistedSettings.columnOrder ?? props.defaultSettings?.columnOrder,\n columnPinning.left\n );\n\n // ensure internal columns are pinned, and are pinned in the correct order\n if (columnPinning?.left?.length) {\n const lastPinnedColumn = columnPinning.left.at(-1);\n\n if (lastPinnedColumn !== undefined) {\n columnPinning.left = freezeUptoExternalColumn(columnOrder.indexOf(lastPinnedColumn), columnOrder);\n }\n } else if (props.defaultColumnFreezingIndex === undefined) {\n columnPinning.left = unfreezeAllExternalColumns(columnOrder);\n } else {\n columnPinning.left = freezeUptoExternalColumn(props.defaultColumnFreezingIndex, columnOrder);\n }\n\n const columnSizing = {\n ...defaults.defaultSizing,\n ...props.defaultSettings?.columnSizing,\n ...persistedSettings.columnSizing,\n };\n\n const state: Partial<ReactTableState> = {\n columnFilters: persistedSettings.columnFilters ?? props.defaultSettings?.columnFilters ?? [],\n columnOrder,\n columnPinning,\n columnSizing: ignoreInternalColumns(columnSizing),\n columnVisibility:\n persistedSettings.columnVisibility ?? props.defaultSettings?.columnVisibility ?? defaults.defaultVisibility ?? {},\n globalFilter: persistedSettings.searchQuery ?? props.defaultSettings?.searchQuery,\n sorting: persistedSettings.sorting\n ? persistedSettings.sorting.filter(ignoreNotDefinedColumns)\n : (props.defaultSettings?.sorting ?? defaults.defaultSorting),\n };\n\n if (props.defaultRowGroupColumnId) {\n state.grouping = [props.defaultRowGroupColumnId as string];\n // row groups should (all) always be expanded by default\n state.expanded = true;\n }\n\n return state;\n }, []);\n}\n"],"names":["columns","settings","createColumnHelper","child","CELL_MIN_WIDTH","getDataTypeProperties","getSortingFn","memo","expandRows","getMemoOptions","getExpandedRowModel","getGroupedRowModel","getFilteredRowModel","columnFilterFn","globalFilterFn","getSortedRowModel","ensureOrdering","freezeUptoExternalColumn","unfreezeAllExternalColumns","ignoreInternalColumns"],"mappings":";;;;;;;;;;;AAuCA,SAAS,gBACL,OACAA,WACA,eACA,gBACA,mBACAC,WACA,yBACA,cAC4B;AAC5B,QAAM,eAAeC,WAAAA,mBAAA;AAErB,MAAI,MAAM,eAAgC,KAAK,KAAK,MAAM,MAAM,UAAU;AACtE,UAAM,EAAE,UAAU,IAAI,OAAA,IAAW,MAAM;AAEvCF,cAAQ;AAAA,MACJ,aAAa,MAAM;AAAA,QACf;AAAA,QACA;AAAA,QACA,SAAS,MAAM,SAAS,QAAQ,QAAQ,EAAE;AAAA,UACtC,CAACA,UAAuCG,WACpC;AAAA,YACIA;AAAAA,YACAH;AAAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACAC;AAAA,YACA;AAAA,YACA;AAAA,UAAA;AAAA,UAER,CAAA;AAAA,QAAC;AAAA;AAAA,QAGL,gBAAgB;AAAA,MAAA,CACnB;AAAA,IAAA;AAAA,EAET,WAAW,MAAM,eAAwC,KAAK,MAAM,MAAM,MAAM,YAAY,MAAM,MAAM,KAAK;AACzG,UAAM;AAAA,MACF,IAAI;AAAA,MACJ,UAAU;AAAA;AAAA,MAEV;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA;AAAA,MAEA;AAAA,MACA;AAAA,MACA;AAAA,MACA,gBAAgB,CAAC,CAAC,MAAM,MAAM;AAAA,MAC9B,iBAAiB,qBAAqB;AAAA,MACtC,iBAAiB;AAAA,MACjB,eAAe;AAAA,MACf,iBAAiB;AAAA,MACjB,iBAAiB;AAAA,MACjB,iBAAiB;AAAA,MACjB,cAAc,qBAAqB;AAAA,MACnC,gBAAgB;AAAA,MAChB,iBAAiB;AAAA,MACjB,UAAU,UAAUG,uBAAeH,UAAS,YAAY,QAAQ,KAAKG,QAAAA,eAAe;AAAA,MACpF;AAAA,MACA;AAAA,MACA,GAAG;AAAA,IAAA,IACH,MAAM;AAGV,UAAM,KAAK,aAAc;AAEzB,UAAM,qBAAqBC,UAAAA,sBAA6B,MAAM,MAAM,QAAQ;AAE5E,QAAI,iBAAiB,cAAc;AAC/B,wBAAkB,EAAE,IAAI;AAAA,IAC5B;AAEA,QAAI,cAAc;AACd,oBAAc,EAAE,IAAI;AAAA,IACxB;AAEA,UAAM,YAAY,4BAA4B;AAE9C,QAAI,MAAM,MAAM,SAAS,UAAa,WAAW;AAC7C,qBAAe,KAAK;AAAA,QAChB;AAAA,QACA,MAAM,SAAS;AAAA,MAAA,CAClB;AAAA,IACL;AAEA,UAAM,SAA0C;AAAA,MAC5C;AAAA;AAAA,MAEA,YAAY,CAAA,QAAO,IAAI,KAAK,WAAqB;AAAA;AAAA;AAAA;AAAA,MAIjD,QAAQ,OAAO,WAAW,WAAW,SAAS,MAAM;AAAA;AAAA,MAEpD;AAAA,MACA;AAAA,MACA;AAAA,MACA,cAAc,YAAY,QAAQ;AAAA,MAClC;AAAA,MACA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA,MAAM;AAAA,QACF,GAAI;AAAA,QACJ,OAAO,KAAK,SAAS,mBAAmB;AAAA,QACxC;AAAA,QACA,gBAAgB,YAAY,QAAQ;AAAA,QACpC;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MAAA;AAAA,IACJ;AAGJ,UAAM,yBAAyB,CAAC,OAAY,QAAe;AACvD,YAAM,eAAe,mBAAmB,kBAAkB,OAAO,KAAK;AAAA,QAClE,iBAAiB,KAAK;AAAA,QACtB;AAAA,MAAA,CACH;AACD,YAAM,YAAY,UAAU,UAAa,UAAU,OAAO,OAAO,KAAK,IAAI;AAE1E,UAAI,MAAM,QAAQ,YAAY,GAAG;AAC7B,eAAO,aAAa,CAAC,KAAK;AAAA,MAC9B;AAEA,aAAO,gBAAgB;AAAA,IAC3B;AAEA,UAAM,eAAe,CAAC,UAAkD;AAAA,MACpE,KAAK,KAAK,IAAI;AAAA,MACd,IAAI,QAAQ;AACR,eAAO,KAAK,SAAA;AAAA,MAChB;AAAA,MACA,IAAI,iBAAiB;AACjB,eAAO,uBAAuB,KAAK,SAAA,GAAY,KAAK,IAAI,QAAQ;AAAA,MACpE;AAAA,IAAA;AAIJ,QAAI,OAAO,aAAa,YAAY;AAChC,aAAO,OAAO,CAAA,SAAQ,SAAS,aAAa,IAAI,CAAC;AAAA,IACrD,OAAO;AACH,aAAO,OAAO,UAAQ,uBAAuB,KAAK,YAAY,KAAK,IAAI,QAAQ;AAAA,IACnF;AAEA,QAAI,OAAO,WAAW,YAAY;AAC9B,aAAO,SAAS,CAAA,SACZ,OAAO,KAAK,MAAM,cAAc,KAAK,QAAQ,CAAA,QAAQ,IAAI,aAAa,SAAY,KAAK,IAAI,QAAS,CAAC;AAAA,IAC7G;AAGA,QAAI,oBAAoB;AACpB,aAAO,WAAW;AAAA,IACtB;AAGA,QAAI,gBAAgB;AAChB,aAAO,gBAAgB;AAEvB,UAAI,OAAO,cAAc,YAAY;AACjC,eAAO,iBAAiB,CAAA,SAAQ,UAAU,aAAa,IAAI,CAAC;AAAA,MAChE;AAAA,IACJ;AAGA,QAAI,eAAe;AACf,aAAO,YAAYC,QAAAA,aAAoB,MAAM,MAAM,UAAU,MAAM;AACnE,aAAO,gBAAgB;AACvB,aAAO,gBAAgB;AAAA,IAC3B;AAEAN,cAAQ,KAAK,MAAM;AAAA,EACvB;AAEA,SAAOA;AACX;AAEA,SAAS,qBACL,IACA,QACA,eACF;AACE,MAAI,OAAO,MAAM;AACb,kBAAc,EAAE,IAAI,OAAO;AAAA,EAC/B;AAEA,SAAO;AAAA,IACH;AAAA,IACA,aAAa;AAAA,IACb,QAAQ,OAAO;AAAA,IACf,MAAM,OAAO;AAAA;AAAA,IAEb,oBAAoB;AAAA,IACpB,oBAAoB;AAAA,IACpB,gBAAgB;AAAA,IAChB,cAAc;AAAA,IACd,gBAAgB;AAAA,IAChB,eAAe;AAAA;AAAA,IAEf,MAAM,OAAO;AAAA,IACb,SAAS,OAAO;AAAA;AAAA,IAEhB,MAAM;AAAA,MACF,GAAI,OAAO;AAAA,MACX,gBAAgB;AAAA,MAChB,gBAAgB;AAAA,MAChB,gBAAgB;AAAA,IAAA;AAAA,EACpB;AAER;AAEO,SAAS,0BACZ,OACAC,WACA,SACA,iBACA,cACF;AACE,QAAM,EAAE,UAAU,wBAAA,IAA4B;AAC9C,QAAM,gBAA6C,CAAA;AACnD,QAAM,iBAAyC,CAAA;AAC/C,QAAM,oBAA+C,CAAA;AAErD,QAAMD,WAAU,MAAM,SAAS,QAAQ,QAAQ,EAAE;AAAA,IAC7C,CAACA,WAAuC,UACpC;AAAA,MACI;AAAA,MACAA;AAAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACAC;AAAA,MACA;AAAA,MACA;AAAA,IAAA;AAAA,IAGR,CAAA;AAAA,EAAC;AAGL,MAAI,iBAAiB;AACjB,QAAI,QAAQ,sBAAsB,MAAM,wBAAwB,gBAAgB,cAAc;AAC1F,YAAM,SAAS,qBAA4B,eAAe,gBAAgB,cAAc,aAAa;AACrG,MAAAD,SAAQ,QAAQ,MAAM;AAAA,IAC1B;AAEA,QAAI,QAAQ,sBAAsB,gBAAgB,cAAc;AAC5D,YAAM,SAAS,qBAA4B,YAAY,gBAAgB,cAAc,aAAa;AAClG,MAAAA,SAAQ,QAAQ,MAAM;AAAA,IAC1B;AAEA,QAAI,QAAQ,iBAAiB,MAAM,aAAa,gBAAgB,SAAS;AACrE,YAAM,SAAS,qBAA4B,UAAU,gBAAgB,SAAS,aAAa;AAC3F,MAAAA,SAAQ,QAAQ,MAAM;AAAA,IAC1B;AAEA,QAAI,QAAQ,oBAAoB,MAAM,YAAY,UAAU,gBAAgB,YAAY;AACpF,YAAM,SAAS,qBAA4B,aAAa,gBAAgB,YAAY,aAAa;AACjG,MAAAA,SAAQ,KAAK,MAAM;AAAA,IACvB;AAAA,EACJ;AAEA,SAAO,EAAE,SAAAA,UAAS,eAAe,gBAAgB,kBAAA;AACrD;AAKA,SAAS,8BAA+C;AACpD,SAAO,CAAC,UACJO,WAAAA;AAAAA,IACI,MAAM,CAAC,MAAM,SAAA,EAAW,UAAU,MAAM,wBAAwB;AAAA,IAChE,CAAC,WAAW,aAAc,SAAS,KAAK,SAASC,WAAAA,WAAW,QAAQ,IAAI;AAAA,IACxEC,WAAAA,eAAe,MAAM,SAAS,cAAc,qBAAqB;AAAA,EAAA;AAE7E;AAEO,SAAS,2BACZ,SACA,OACA,cACF;AAGE,QAAM,+BACF,OAAO,QAAQ,uBAAuB,aAChC,CAAC,QAA+B,QAAQ,mBAA+C,IAAI,QAAQ,IACnG,QAAQ;AAElB,MAAI;AAEJ,MAAI,MAAM,qBAAqB;AAC3B,eAAW,CAAC,aAAgC,UAAkB;AAC1D,UAAI,aAAa;AACb,eAAO,OAAO,YAAY,MAAM,mBAAkC,CAAC;AAAA,MACvE;AAEA,aAAO,OAAO,KAAK;AAAA,IACvB;AAAA,EACJ;AAEA,QAAM,eAAkD;AAAA,IACpD,eAAe;AAAA,MACX,oBAAoB,QAAQ,mBAAmB;AAAA,MAC/C,gBAAgB;AAAA,MAChB,cAAc,QAAQ,sBAAsB;AAAA,MAC5C,gBAAgB,QAAQ,wBAAwB;AAAA,MAChD,oBAAoB,QAAQ,gBAAgB;AAAA,MAC5C,eAAe,QAAQ,iBAAiB;AAAA,MACxC,SAAS;AAAA;AAAA,MAET,MAAM;AAAA,IAAA;AAAA,IAEV,qBAAqB,QAAQ,mBAAmB;AAAA,IAChD,sBAAsB,QAAQ,wBAAwB;AAAA,IACtD,iBAAiB,QAAQ,sBAAsB;AAAA;AAAA,IAE/C,gBAAgB;AAAA,IAChB,cAAc,QAAQ,sBAAsB;AAAA,IAC5C,eAAe,QAAQ,wBAAwB;AAAA;AAAA,IAE/C,kBAAkB;AAAA,IAClB,oBAAoB,gCAAgC;AAAA,IACpD,eAAe,QAAQ,iBAAiB;AAAA;AAAA,IAExC,qBAAqB,MAAM,0BAA0B,4BAAA,IAAuCC,WAAAA,oBAAA;AAAA,IAC5F,oBAAoBC,WAAAA,mBAAA;AAAA;AAAA;AAAA,IAGpB,mBAAmB,CAAC,QAA+B,IAAI,aAAA,IAAiB,OAAO;AAAA,IAG/E;AAAA,IACA,mBAAmB;AAAA,IACnB,gBAAgB;AAAA,EAAA;AAGpB,MAAI,QAAQ,oBAAoB;AAE5B,iBAAa,oBAAoB;AAAA,EACrC;AAEA,MAAI,aAAa,sBAAsB;AACnC,iBAAa,mBAAmB;AAAA,EACpC;AAEA,MAAI,aAAa,qBAAqB;AAElC,QAAI,MAAM,eAAgB;AAAA,SAOnB;AACH,mBAAa,sBAAsBC,+BAAA;AACnC,mBAAa,YAAY;AAAA,QACrB,YAAY,CAAC,KAA2B,UAAkB,WAAgB;AACtE,gBAAM,OAAO,IAAI,uBAAA,EAAyB,QAAQ,GAAG,OAAO,UAAU;AACtE,iBAAOC,UAAAA,eAAe,IAAI,UAAU,IAAI,SAAS,QAAQ,GAAG,MAAM,QAAQ,YAAY;AAAA,QAC1F;AAAA,MAAA;AAAA,IAER;AAAA,EACJ;AAEA,MAAI,QAAQ,cAAc;AAEtB,iBAAa,sBAAsBD,+BAAA;AACnC,iBAAa,iBAAiB,CAAC,KAA2B,UAAkB,gBACxEE,OAAAA,eAAe,KAAK,UAAU,aAAa,YAAY;AAC3D,iBAAa,2BAA2B,CAAC,WACrC,OAAO,UAAU,MAAM,iBAAiB,SAAS,OAAO,aAAA;AAG5D,QAAI,MAAM,gBAAgB;AACtB,UAAI,MAAM,0BAA0B;AAChC,qBAAa,kBAAkB;AAAA,MACnC;AAAA,IAWJ;AAAA,EACJ;AAEA,MAAI,aAAa,eAAe;AAE5B,QAAI,MAAM,cAAc;AACpB,mBAAa,gBAAgB;AAAA,IAKjC,OAAO;AACH,mBAAa,oBAAoBC,6BAAA;AAAA,IACrC;AAAA,EACJ;AAEA,SAAO;AACX;AAEO,SAAS,0BACZ,OACAf,WACA,mBACA,UAKwB;AACxB,SAAO,MAAM,QAAQ,MAAM;AACvB,UAAM,0BAA0B,CAAC,WAC7BA,UAAQ,KAAK,CAAA,kBAAiB,cAAc,OAAO,OAAO,EAAE;AAEhE,UAAM,gBACF,kBAAkB,iBAAiB,MAAM,iBAAiB,iBAAiB,CAAA;AAE/E,UAAM,cAAcgB,QAAAA;AAAAA,MAChBhB;AAAAA,MACA,kBAAkB,eAAe,MAAM,iBAAiB;AAAA,MACxD,cAAc;AAAA,IAAA;AAIlB,QAAI,eAAe,MAAM,QAAQ;AAC7B,YAAM,mBAAmB,cAAc,KAAK,GAAG,EAAE;AAEjD,UAAI,qBAAqB,QAAW;AAChC,sBAAc,OAAOiB,iCAAyB,YAAY,QAAQ,gBAAgB,GAAG,WAAW;AAAA,MACpG;AAAA,IACJ,WAAW,MAAM,+BAA+B,QAAW;AACvD,oBAAc,OAAOC,QAAAA,2BAA2B,WAAW;AAAA,IAC/D,OAAO;AACH,oBAAc,OAAOD,QAAAA,yBAAyB,MAAM,4BAA4B,WAAW;AAAA,IAC/F;AAEA,UAAM,eAAe;AAAA,MACjB,GAAG,SAAS;AAAA,MACZ,GAAG,MAAM,iBAAiB;AAAA,MAC1B,GAAG,kBAAkB;AAAA,IAAA;AAGzB,UAAM,QAAkC;AAAA,MACpC,eAAe,kBAAkB,iBAAiB,MAAM,iBAAiB,iBAAiB,CAAA;AAAA,MAC1F;AAAA,MACA;AAAA,MACA,cAAcE,SAAAA,sBAAsB,YAAY;AAAA,MAChD,kBACI,kBAAkB,oBAAoB,MAAM,iBAAiB,oBAAoB,SAAS,qBAAqB,CAAA;AAAA,MACnH,cAAc,kBAAkB,eAAe,MAAM,iBAAiB;AAAA,MACtE,SAAS,kBAAkB,UACrB,kBAAkB,QAAQ,OAAO,uBAAuB,IACvD,MAAM,iBAAiB,WAAW,SAAS;AAAA,IAAA;AAGtD,QAAI,MAAM,yBAAyB;AAC/B,YAAM,WAAW,CAAC,MAAM,uBAAiC;AAEzD,YAAM,WAAW;AAAA,IACrB;AAEA,WAAO;AAAA,EACX,GAAG,CAAA,CAAE;AACT;;;;"}
|
|
@@ -249,12 +249,12 @@ function configureReactTableOptions(options, props, localization) {
|
|
|
249
249
|
enableColumnFilters: options.enableFiltering ?? false,
|
|
250
250
|
enableColumnResizing: options.enableColumnResizing ?? false,
|
|
251
251
|
enableExpanding: options.enableRowExpansion ?? false,
|
|
252
|
-
enableGrouping: true,
|
|
253
252
|
// users can't customise row grouping, so it can just be always enabled and left to the defaultRowGroupColumnId prop
|
|
253
|
+
enableGrouping: true,
|
|
254
254
|
enableHiding: options.enableColumnHiding ?? false,
|
|
255
255
|
enablePinning: options.enableColumnFreezing ?? false,
|
|
256
|
-
enableRowPinning: true,
|
|
257
256
|
// users can't customise row pinning, so it can just be always enabled
|
|
257
|
+
enableRowPinning: true,
|
|
258
258
|
enableRowSelection: reactTableEnableRowSelection ?? false,
|
|
259
259
|
enableSorting: options.enableSorting ?? false,
|
|
260
260
|
// models for default features
|
|
@@ -314,7 +314,7 @@ function useReactTableInitialState(props, columns, persistedSettings, defaults)
|
|
|
314
314
|
columnPinning.left
|
|
315
315
|
);
|
|
316
316
|
if (columnPinning?.left?.length) {
|
|
317
|
-
const lastPinnedColumn = columnPinning.left
|
|
317
|
+
const lastPinnedColumn = columnPinning.left.at(-1);
|
|
318
318
|
if (lastPinnedColumn !== void 0) {
|
|
319
319
|
columnPinning.left = freezeUptoExternalColumn(columnOrder.indexOf(lastPinnedColumn), columnOrder);
|
|
320
320
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup.js","sources":["../../../../../src/primitives/Table/useTableManager/util/setup.ts"],"sourcesContent":["import type {\n TableOptions as ReactTableOptions,\n Row as ReactTableRow,\n Table as ReactTableInstance,\n CellContext as ReactTableCellContext,\n Column as ReactTableColumn,\n ColumnDef as ReactTableColumnDef,\n ColumnPinningState as ReactTableColumnPinningState,\n ColumnSizingState as ReactTableColumnSizingState,\n ColumnSort as ReactTableColumnSort,\n TableState as ReactTableState,\n VisibilityState as ReactTableVisibilityState,\n} from '@tanstack/react-table';\nimport {\n createColumnHelper,\n expandRows,\n getExpandedRowModel,\n getFilteredRowModel,\n getGroupedRowModel,\n getMemoOptions,\n getSortedRowModel,\n memo,\n} from '@tanstack/react-table';\nimport get from 'lodash/get';\nimport React from 'react';\n\nimport type { Localization } from '@/components';\n\nimport type { TableColumnProps, TableFeatureProps, TableGroupProps, TableProps, TableSettings } from '../../types';\nimport type { useTableManagerInternalColumns, useTableManagerInternalColumn } from '../types';\n\nimport { CELL_MIN_WIDTH, ensureOrdering, freezeUptoExternalColumn, unfreezeAllExternalColumns } from './columns';\nimport { getDataTypeProperties } from './dataTypes';\nimport { columnFilterFn } from './filtering';\nimport { globalFilterFn } from './search';\nimport { ignoreInternalColumns } from './settings';\nimport { getSortingFn } from './sorting';\n\n// mapping children to react-table columns\nfunction processChildren<TType>(\n child: React.ReactNode,\n columns: ReactTableColumnDef<TType>[],\n defaultSizing: ReactTableColumnSizingState,\n defaultSorting: ReactTableColumnSort[],\n defaultVisibility: ReactTableVisibilityState,\n settings: TableSettings,\n defaultRowGroupColumnId: keyof TType | undefined,\n localization: Localization\n): ReactTableColumnDef<TType>[] {\n const columnHelper = createColumnHelper<TType>();\n\n if (React.isValidElement<TableGroupProps>(child) && child.props.children) {\n const { children, id, header } = child.props;\n\n columns.push(\n columnHelper.group({\n id,\n header,\n columns: React.Children.toArray(children).reduce(\n (columns: ReactTableColumnDef<TType>[], child) =>\n processChildren<TType>(\n child,\n columns,\n defaultSizing,\n defaultSorting,\n defaultVisibility,\n settings,\n defaultRowGroupColumnId,\n localization\n ),\n []\n ),\n // we don't want to let column groups be grouped/aggregrated\n enableGrouping: false,\n })\n );\n } else if (React.isValidElement<TableColumnProps<TType>>(child) && (child.props.accessor || child.props.id)) {\n const {\n id: untypedId,\n accessor: accessorKey,\n // renderers\n renderer,\n aggregate,\n footer,\n header,\n // options\n aggregationFn,\n defaultHidden,\n defaultWidth,\n enableEditing = !!child.props.control,\n enableFiltering: enableColumnFilter = true,\n enableGrouping = false,\n enableHiding = true,\n enableOrdering = true,\n enablePrinting = true,\n enableResizing = true,\n enableSearch: enableGlobalFilter = true,\n enableSorting = true,\n enableTruncate = false,\n minWidth: minSize = CELL_MIN_WIDTH[settings.fontSize ?? 'medium'] ?? CELL_MIN_WIDTH.medium,\n sort,\n sortFn,\n ...meta\n } = child.props;\n\n // always have an id, if none is defined use the accessor (at least one has to be defined)\n const id = untypedId ?? (accessorKey as string);\n\n const dataTypeProperties = getDataTypeProperties<TType>(child.props.dataType);\n\n if (defaultHidden && enableHiding) {\n defaultVisibility[id] = false;\n }\n\n if (defaultWidth) {\n defaultSizing[id] = defaultWidth as any;\n }\n\n const isGrouped = defaultRowGroupColumnId === id;\n\n if (child.props.sort !== undefined || isGrouped) {\n defaultSorting.push({\n id,\n desc: sort === 'desc',\n });\n }\n\n const column: ReactTableColumnDef<TType, any> = {\n id,\n // dot notated accessors will throw if they return null or undefined, so use accessorFn (instead of accessorKey) to avoid that\n accessorFn: row => get(row, accessorKey as string),\n // The header can be either a string or a React.JSX.Element, but react-table expects it to be a string or a\n // renderer function, so `() => header` ensures compatibility when header is a React.JSX.Element.\n // If we just pass `() => header`, then we will loose truncation for string headers.\n header: typeof header === 'string' ? header : () => header,\n // features\n enableColumnFilter,\n enableGlobalFilter,\n enableGrouping,\n enableHiding: isGrouped ? false : enableHiding,\n enableResizing,\n enableSorting,\n // config - sizing\n minSize,\n // meta\n meta: {\n ...(meta as any),\n align: meta.align ?? dataTypeProperties.align,\n defaultWidth,\n enableOrdering: isGrouped ? false : enableOrdering,\n enablePrinting,\n enableTruncate,\n enableEditing,\n header,\n },\n };\n\n const formattedValueRenderer = (value: any, row: TType) => {\n const displayValue = dataTypeProperties.getDisplayValue?.(value, row, {\n dataTypeOptions: meta.dataTypeOptions as any,\n localization,\n });\n const safeValue = value !== undefined && value !== null ? String(value) : value;\n\n if (Array.isArray(displayValue)) {\n return displayValue[0] ?? safeValue;\n }\n\n return displayValue ?? safeValue;\n };\n\n const rendererArgs = (info: ReactTableCellContext<TType, any>): any => ({\n row: info.row.original,\n get value() {\n return info.getValue();\n },\n get formattedValue() {\n return formattedValueRenderer(info.getValue(), info.row.original);\n },\n });\n\n // renderers - use defined renderers first, then fall back to data type renderers (if there is one)\n if (typeof renderer === 'function') {\n column.cell = info => renderer(rendererArgs(info));\n } else {\n column.cell = info => formattedValueRenderer(info.getValue(), info.row.original);\n }\n\n if (typeof footer === 'function') {\n column.footer = info =>\n footer(info.table.getRowModel().rows.flatMap(row => (row.original === undefined ? [] : row.original)));\n }\n\n // config - filtering\n if (enableColumnFilter) {\n column.filterFn = 'tacoFilter' as any;\n }\n\n // config - grouping/aggregation\n if (enableGrouping) {\n column.aggregationFn = aggregationFn;\n\n if (typeof aggregate === 'function') {\n column.aggregatedCell = info => aggregate(rendererArgs(info));\n }\n }\n\n // config - sorting\n if (enableSorting) {\n column.sortingFn = getSortingFn<TType>(child.props.dataType, sortFn);\n column.sortDescFirst = false;\n column.sortUndefined = 1;\n }\n\n columns.push(column);\n }\n\n return columns;\n}\n\nfunction createInternalColumn<TType = unknown>(\n id: string,\n column: useTableManagerInternalColumn<TType>,\n defaultSizing: ReactTableColumnSizingState\n) {\n if (column.size) {\n defaultSizing[id] = column.size;\n }\n\n return {\n id,\n accessorKey: id,\n header: column.header,\n cell: column.renderer,\n // features\n enableColumnFilter: false,\n enableGlobalFilter: false,\n enableGrouping: false,\n enableHiding: false,\n enableResizing: false,\n enableSorting: false,\n // config - sizing\n size: column.size,\n minSize: column.size,\n // meta\n meta: {\n ...(column.meta as any),\n enableOrdering: false,\n enablePrinting: false,\n enableTruncate: false,\n },\n } as ReactTableColumnDef<TType, any>;\n}\n\nexport function mapTableChildrenToColumns<TType = unknown>(\n props: TableProps<TType>,\n settings: TableSettings,\n options: TableFeatureProps<TType>,\n internalColumns: useTableManagerInternalColumns<TType> | undefined,\n localization: Localization\n) {\n const { children, defaultRowGroupColumnId } = props;\n const defaultSizing: ReactTableColumnSizingState = {};\n const defaultSorting: ReactTableColumnSort[] = [];\n const defaultVisibility: ReactTableVisibilityState = {};\n\n const columns = React.Children.toArray(children).reduce(\n (columns: ReactTableColumnDef<TType>[], child) =>\n processChildren<TType>(\n child,\n columns,\n defaultSizing,\n defaultSorting,\n defaultVisibility,\n settings,\n defaultRowGroupColumnId,\n localization\n ),\n\n []\n );\n\n if (internalColumns) {\n if (options.enableRowExpansion && props.rowExpansionRenderer && internalColumns.rowExpansion) {\n const column = createInternalColumn<TType>('__expansion', internalColumns.rowExpansion, defaultSizing);\n columns.unshift(column);\n }\n\n if (options.enableRowSelection && internalColumns.rowSelection) {\n const column = createInternalColumn<TType>('__select', internalColumns.rowSelection, defaultSizing);\n columns.unshift(column);\n }\n\n if (options.enableRowDrag && props.onRowDrag && internalColumns.rowDrag) {\n const column = createInternalColumn<TType>('__drag', internalColumns.rowDrag, defaultSizing);\n columns.unshift(column);\n }\n\n if (options.enableRowActions && props.rowActions?.length && internalColumns.rowActions) {\n const column = createInternalColumn<TType>('__actions', internalColumns.rowActions, defaultSizing);\n columns.push(column);\n }\n }\n\n return { columns, defaultSizing, defaultSorting, defaultVisibility };\n}\n\n// react-table skips expansion entirely while nothing is expanded, which would also stop row groups from\n// expanding and hide every row inside them. group rows are always expanded (see getIsRowExpanded below),\n// so when grouping we expand regardless of the row expansion state.\nfunction getRowGroupExpandedRowModel<TType = unknown>() {\n return (table: ReactTableInstance<TType>) =>\n memo(\n () => [table.getState().expanded, table.getPreExpandedRowModel()] as const,\n (_expanded, rowModel) => (rowModel.rows.length ? expandRows(rowModel) : rowModel),\n getMemoOptions(table.options, 'debugTable', 'getExpandedRowModel')\n );\n}\n\nexport function configureReactTableOptions<TType = unknown>(\n options: TableFeatureProps<TType>,\n props: TableProps<TType>,\n localization: Localization\n) {\n // We don't want to expose internal Tanstack Table row, so we need to wrap enableRowSelection callback into additional function,\n // which receives the React Table Row object and passes row.original to a callback.\n const reactTableEnableRowSelection =\n typeof options.enableRowSelection === 'function'\n ? (row: ReactTableRow<TType>) => (options.enableRowSelection as (row: TType) => boolean)(row.original)\n : options.enableRowSelection;\n\n let getRowId;\n\n if (props.rowIdentityAccessor) {\n getRowId = (originalRow: TType | undefined, index: number) => {\n if (originalRow) {\n return String(originalRow[props.rowIdentityAccessor as keyof TType]);\n }\n\n return String(index);\n };\n }\n\n const tableOptions: Partial<ReactTableOptions<TType>> = {\n defaultColumn: {\n enableColumnFilter: options.enableFiltering || true,\n enableGrouping: false,\n enableHiding: options.enableColumnHiding || true,\n enableResizing: options.enableColumnResizing || true,\n enableGlobalFilter: options.enableSearch || true,\n enableSorting: options.enableSorting || true,\n minSize: 1,\n // the default is 150, which is a bit random\n size: 1,\n },\n enableColumnFilters: options.enableFiltering ?? false,\n enableColumnResizing: options.enableColumnResizing ?? false,\n enableExpanding: options.enableRowExpansion ?? false,\n enableGrouping: true, // users can't customise row grouping, so it can just be always enabled and left to the defaultRowGroupColumnId prop\n enableHiding: options.enableColumnHiding ?? false,\n enablePinning: options.enableColumnFreezing ?? false,\n enableRowPinning: true, // users can't customise row pinning, so it can just be always enabled\n enableRowSelection: reactTableEnableRowSelection ?? false,\n enableSorting: options.enableSorting ?? false,\n // models for default features\n getExpandedRowModel: props.defaultRowGroupColumnId ? getRowGroupExpandedRowModel<TType>() : getExpandedRowModel<TType>(),\n getGroupedRowModel: getGroupedRowModel<TType>(),\n // group rows are expanded by grouping, not by row expansion, so their state is fixed - returning\n // undefined for data rows lets react-table fall back to the row expansion state for them\n getIsRowExpanded: ((row: ReactTableRow<TType>) => (row.getIsGrouped() ? true : undefined)) as (\n row: ReactTableRow<TType>\n ) => boolean,\n getRowId,\n groupedColumnMode: false,\n keepPinnedRows: false,\n };\n\n if (options.enableRowExpansion) {\n // Prevent expansion state from resetting when data changes (e.g., after editing)\n tableOptions.autoResetExpanded = false;\n }\n\n if (tableOptions.enableColumnResizing) {\n tableOptions.columnResizeMode = 'onChange';\n }\n\n if (tableOptions.enableColumnFilters) {\n // enter controlled filter mode (controlled could be local state, but usually the server)\n if (props.onChangeFilter) {\n // tableOptions.manualFiltering = true;\n // we don't set it because it breaks global filtering (used for search, which is fully client side)\n //\n // tableOptions.onColumnFiltersChange = ...\n // we don't set this because it expects state to be maintained externally, and we don't want\n // consumers to control state outside the table. instead we have a listener that calls onFilter\n } else {\n tableOptions.getFilteredRowModel = getFilteredRowModel<TType>();\n tableOptions.filterFns = {\n tacoFilter: (row: ReactTableRow<TType>, columnId: string, filter: any) => {\n const meta = row._getAllCellsByColumnId()[columnId]?.column.columnDef.meta;\n return columnFilterFn(row.original, row.getValue(columnId), meta, filter, localization);\n },\n };\n }\n }\n\n if (options.enableSearch) {\n // always set these because enableGlobalFilter can be toggled on and off by the user\n tableOptions.getFilteredRowModel = getFilteredRowModel<TType>();\n tableOptions.globalFilterFn = (row: ReactTableRow<TType>, columnId: string, searchQuery: any) =>\n globalFilterFn(row, columnId, searchQuery, localization);\n tableOptions.getColumnCanGlobalFilter = (column: ReactTableColumn<TType>) =>\n column.columnDef.meta?.enableSearch !== false && column.getIsVisible();\n\n // enter controlled search mode (controlled could be local state, but usually the server)\n if (props.onChangeSearch) {\n if (props._experimentalDataLoader2) {\n tableOptions.manualFiltering = true;\n } else {\n // tableOptions.manualFiltering = true;\n // we don't set this because controlled search is not currently supported, search is always client side\n //\n // tableOptions.onGlobalFilterChange = ...\n // we don't set this because it expects state to be maintained externally, and we don't want\n // consumers to control state outside the table. instead we have a listener that calls onSearch.\n //\n // we also don't always filter when searching, we have the highlight functionality as the default\n // and filtering can be toggled by the user\n }\n }\n }\n\n if (tableOptions.enableSorting) {\n // enter controlled sort mode (controlled could be local state, but usually the server)\n if (props.onChangeSort) {\n tableOptions.manualSorting = true;\n\n // tableOptions.onSortingChange = ...\n // we don't set this because it expects state to be maintained externally, and we don't want\n // consumers to control state outside the table. instead we have a listener that calls onSort\n } else {\n tableOptions.getSortedRowModel = getSortedRowModel();\n }\n }\n\n return tableOptions;\n}\n\nexport function useReactTableInitialState<TType = unknown>(\n props: TableProps<TType>,\n columns: ReactTableColumnDef<TType>[],\n persistedSettings: TableSettings,\n defaults: {\n defaultSizing: ReactTableColumnSizingState;\n defaultSorting: ReactTableColumnSort[];\n defaultVisibility: ReactTableVisibilityState;\n }\n): Partial<ReactTableState> {\n return React.useMemo(() => {\n const ignoreNotDefinedColumns = (column: ReactTableColumnDef<TType>) =>\n columns.find(definedColumn => definedColumn.id === column.id);\n\n const columnPinning: ReactTableColumnPinningState =\n persistedSettings.columnPinning ?? props.defaultSettings?.columnPinning ?? {};\n\n const columnOrder = ensureOrdering<TType>(\n columns,\n persistedSettings.columnOrder ?? props.defaultSettings?.columnOrder,\n columnPinning.left\n );\n\n // ensure internal columns are pinned, and are pinned in the correct order\n if (columnPinning?.left?.length) {\n const lastPinnedColumn = columnPinning.left[columnPinning.left.length - 1];\n\n if (lastPinnedColumn !== undefined) {\n columnPinning.left = freezeUptoExternalColumn(columnOrder.indexOf(lastPinnedColumn), columnOrder);\n }\n } else if (props.defaultColumnFreezingIndex === undefined) {\n columnPinning.left = unfreezeAllExternalColumns(columnOrder);\n } else {\n columnPinning.left = freezeUptoExternalColumn(props.defaultColumnFreezingIndex, columnOrder);\n }\n\n const columnSizing = {\n ...defaults.defaultSizing,\n ...props.defaultSettings?.columnSizing,\n ...persistedSettings.columnSizing,\n };\n\n const state: Partial<ReactTableState> = {\n columnFilters: persistedSettings.columnFilters ?? props.defaultSettings?.columnFilters ?? [],\n columnOrder,\n columnPinning,\n columnSizing: ignoreInternalColumns(columnSizing),\n columnVisibility:\n persistedSettings.columnVisibility ?? props.defaultSettings?.columnVisibility ?? defaults.defaultVisibility ?? {},\n globalFilter: persistedSettings.searchQuery ?? props.defaultSettings?.searchQuery,\n sorting: persistedSettings.sorting\n ? persistedSettings.sorting.filter(ignoreNotDefinedColumns)\n : (props.defaultSettings?.sorting ?? defaults.defaultSorting),\n };\n\n if (props.defaultRowGroupColumnId) {\n state.grouping = [props.defaultRowGroupColumnId as string];\n // row groups should (all) always be expanded by default\n state.expanded = true;\n }\n\n return state;\n }, []);\n}\n"],"names":["React","columns","child"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"setup.js","sources":["../../../../../src/primitives/Table/useTableManager/util/setup.ts"],"sourcesContent":["import type {\n TableOptions as ReactTableOptions,\n Row as ReactTableRow,\n Table as ReactTableInstance,\n CellContext as ReactTableCellContext,\n Column as ReactTableColumn,\n ColumnDef as ReactTableColumnDef,\n ColumnPinningState as ReactTableColumnPinningState,\n ColumnSizingState as ReactTableColumnSizingState,\n ColumnSort as ReactTableColumnSort,\n TableState as ReactTableState,\n VisibilityState as ReactTableVisibilityState,\n} from '@tanstack/react-table';\nimport {\n createColumnHelper,\n expandRows,\n getExpandedRowModel,\n getFilteredRowModel,\n getGroupedRowModel,\n getMemoOptions,\n getSortedRowModel,\n memo,\n} from '@tanstack/react-table';\nimport get from 'lodash/get';\nimport React from 'react';\n\nimport type { Localization } from '@/components';\n\nimport type { TableColumnProps, TableFeatureProps, TableGroupProps, TableProps, TableSettings } from '../../types';\nimport type { useTableManagerInternalColumns, useTableManagerInternalColumn } from '../types';\n\nimport { CELL_MIN_WIDTH, ensureOrdering, freezeUptoExternalColumn, unfreezeAllExternalColumns } from './columns';\nimport { getDataTypeProperties } from './dataTypes';\nimport { columnFilterFn } from './filtering';\nimport { globalFilterFn } from './search';\nimport { ignoreInternalColumns } from './settings';\nimport { getSortingFn } from './sorting';\n\n// mapping children to react-table columns\nfunction processChildren<TType>(\n child: React.ReactNode,\n columns: ReactTableColumnDef<TType>[],\n defaultSizing: ReactTableColumnSizingState,\n defaultSorting: ReactTableColumnSort[],\n defaultVisibility: ReactTableVisibilityState,\n settings: TableSettings,\n defaultRowGroupColumnId: keyof TType | undefined,\n localization: Localization\n): ReactTableColumnDef<TType>[] {\n const columnHelper = createColumnHelper<TType>();\n\n if (React.isValidElement<TableGroupProps>(child) && child.props.children) {\n const { children, id, header } = child.props;\n\n columns.push(\n columnHelper.group({\n id,\n header,\n columns: React.Children.toArray(children).reduce(\n (columns: ReactTableColumnDef<TType>[], child) =>\n processChildren<TType>(\n child,\n columns,\n defaultSizing,\n defaultSorting,\n defaultVisibility,\n settings,\n defaultRowGroupColumnId,\n localization\n ),\n []\n ),\n // we don't want to let column groups be grouped/aggregrated\n enableGrouping: false,\n })\n );\n } else if (React.isValidElement<TableColumnProps<TType>>(child) && (child.props.accessor || child.props.id)) {\n const {\n id: untypedId,\n accessor: accessorKey,\n // renderers\n renderer,\n aggregate,\n footer,\n header,\n // options\n aggregationFn,\n defaultHidden,\n defaultWidth,\n enableEditing = !!child.props.control,\n enableFiltering: enableColumnFilter = true,\n enableGrouping = false,\n enableHiding = true,\n enableOrdering = true,\n enablePrinting = true,\n enableResizing = true,\n enableSearch: enableGlobalFilter = true,\n enableSorting = true,\n enableTruncate = false,\n minWidth: minSize = CELL_MIN_WIDTH[settings.fontSize ?? 'medium'] ?? CELL_MIN_WIDTH.medium,\n sort,\n sortFn,\n ...meta\n } = child.props;\n\n // always have an id, if none is defined use the accessor (at least one has to be defined)\n const id = untypedId ?? (accessorKey as string);\n\n const dataTypeProperties = getDataTypeProperties<TType>(child.props.dataType);\n\n if (defaultHidden && enableHiding) {\n defaultVisibility[id] = false;\n }\n\n if (defaultWidth) {\n defaultSizing[id] = defaultWidth as any;\n }\n\n const isGrouped = defaultRowGroupColumnId === id;\n\n if (child.props.sort !== undefined || isGrouped) {\n defaultSorting.push({\n id,\n desc: sort === 'desc',\n });\n }\n\n const column: ReactTableColumnDef<TType, any> = {\n id,\n // dot notated accessors will throw if they return null or undefined, so use accessorFn (instead of accessorKey) to avoid that\n accessorFn: row => get(row, accessorKey as string),\n // The header can be either a string or a React.JSX.Element, but react-table expects it to be a string or a\n // renderer function, so `() => header` ensures compatibility when header is a React.JSX.Element.\n // If we just pass `() => header`, then we will loose truncation for string headers.\n header: typeof header === 'string' ? header : () => header,\n // features\n enableColumnFilter,\n enableGlobalFilter,\n enableGrouping,\n enableHiding: isGrouped ? false : enableHiding,\n enableResizing,\n enableSorting,\n // config - sizing\n minSize,\n // meta\n meta: {\n ...(meta as any),\n align: meta.align ?? dataTypeProperties.align,\n defaultWidth,\n enableOrdering: isGrouped ? false : enableOrdering,\n enablePrinting,\n enableTruncate,\n enableEditing,\n header,\n },\n };\n\n const formattedValueRenderer = (value: any, row: TType) => {\n const displayValue = dataTypeProperties.getDisplayValue?.(value, row, {\n dataTypeOptions: meta.dataTypeOptions as any,\n localization,\n });\n const safeValue = value !== undefined && value !== null ? String(value) : value;\n\n if (Array.isArray(displayValue)) {\n return displayValue[0] ?? safeValue;\n }\n\n return displayValue ?? safeValue;\n };\n\n const rendererArgs = (info: ReactTableCellContext<TType, any>): any => ({\n row: info.row.original,\n get value() {\n return info.getValue();\n },\n get formattedValue() {\n return formattedValueRenderer(info.getValue(), info.row.original);\n },\n });\n\n // renderers - use defined renderers first, then fall back to data type renderers (if there is one)\n if (typeof renderer === 'function') {\n column.cell = info => renderer(rendererArgs(info));\n } else {\n column.cell = info => formattedValueRenderer(info.getValue(), info.row.original);\n }\n\n if (typeof footer === 'function') {\n column.footer = info =>\n footer(info.table.getRowModel().rows.flatMap(row => (row.original === undefined ? [] : row.original)));\n }\n\n // config - filtering\n if (enableColumnFilter) {\n column.filterFn = 'tacoFilter' as any;\n }\n\n // config - grouping/aggregation\n if (enableGrouping) {\n column.aggregationFn = aggregationFn;\n\n if (typeof aggregate === 'function') {\n column.aggregatedCell = info => aggregate(rendererArgs(info));\n }\n }\n\n // config - sorting\n if (enableSorting) {\n column.sortingFn = getSortingFn<TType>(child.props.dataType, sortFn);\n column.sortDescFirst = false;\n column.sortUndefined = 1;\n }\n\n columns.push(column);\n }\n\n return columns;\n}\n\nfunction createInternalColumn<TType = unknown>(\n id: string,\n column: useTableManagerInternalColumn<TType>,\n defaultSizing: ReactTableColumnSizingState\n) {\n if (column.size) {\n defaultSizing[id] = column.size;\n }\n\n return {\n id,\n accessorKey: id,\n header: column.header,\n cell: column.renderer,\n // features\n enableColumnFilter: false,\n enableGlobalFilter: false,\n enableGrouping: false,\n enableHiding: false,\n enableResizing: false,\n enableSorting: false,\n // config - sizing\n size: column.size,\n minSize: column.size,\n // meta\n meta: {\n ...(column.meta as any),\n enableOrdering: false,\n enablePrinting: false,\n enableTruncate: false,\n },\n } as ReactTableColumnDef<TType, any>;\n}\n\nexport function mapTableChildrenToColumns<TType = unknown>(\n props: TableProps<TType>,\n settings: TableSettings,\n options: TableFeatureProps<TType>,\n internalColumns: useTableManagerInternalColumns<TType> | undefined,\n localization: Localization\n) {\n const { children, defaultRowGroupColumnId } = props;\n const defaultSizing: ReactTableColumnSizingState = {};\n const defaultSorting: ReactTableColumnSort[] = [];\n const defaultVisibility: ReactTableVisibilityState = {};\n\n const columns = React.Children.toArray(children).reduce(\n (columns: ReactTableColumnDef<TType>[], child) =>\n processChildren<TType>(\n child,\n columns,\n defaultSizing,\n defaultSorting,\n defaultVisibility,\n settings,\n defaultRowGroupColumnId,\n localization\n ),\n\n []\n );\n\n if (internalColumns) {\n if (options.enableRowExpansion && props.rowExpansionRenderer && internalColumns.rowExpansion) {\n const column = createInternalColumn<TType>('__expansion', internalColumns.rowExpansion, defaultSizing);\n columns.unshift(column);\n }\n\n if (options.enableRowSelection && internalColumns.rowSelection) {\n const column = createInternalColumn<TType>('__select', internalColumns.rowSelection, defaultSizing);\n columns.unshift(column);\n }\n\n if (options.enableRowDrag && props.onRowDrag && internalColumns.rowDrag) {\n const column = createInternalColumn<TType>('__drag', internalColumns.rowDrag, defaultSizing);\n columns.unshift(column);\n }\n\n if (options.enableRowActions && props.rowActions?.length && internalColumns.rowActions) {\n const column = createInternalColumn<TType>('__actions', internalColumns.rowActions, defaultSizing);\n columns.push(column);\n }\n }\n\n return { columns, defaultSizing, defaultSorting, defaultVisibility };\n}\n\n// react-table skips expansion entirely while nothing is expanded, which would also stop row groups from\n// expanding and hide every row inside them. group rows are always expanded (see getIsRowExpanded below),\n// so when grouping we expand regardless of the row expansion state.\nfunction getRowGroupExpandedRowModel<TType = unknown>() {\n return (table: ReactTableInstance<TType>) =>\n memo(\n () => [table.getState().expanded, table.getPreExpandedRowModel()] as const,\n (_expanded, rowModel) => (rowModel.rows.length ? expandRows(rowModel) : rowModel),\n getMemoOptions(table.options, 'debugTable', 'getExpandedRowModel')\n );\n}\n\nexport function configureReactTableOptions<TType = unknown>(\n options: TableFeatureProps<TType>,\n props: TableProps<TType>,\n localization: Localization\n) {\n // We don't want to expose internal Tanstack Table row, so we need to wrap enableRowSelection callback into additional function,\n // which receives the React Table Row object and passes row.original to a callback.\n const reactTableEnableRowSelection =\n typeof options.enableRowSelection === 'function'\n ? (row: ReactTableRow<TType>) => (options.enableRowSelection as (row: TType) => boolean)(row.original)\n : options.enableRowSelection;\n\n let getRowId;\n\n if (props.rowIdentityAccessor) {\n getRowId = (originalRow: TType | undefined, index: number) => {\n if (originalRow) {\n return String(originalRow[props.rowIdentityAccessor as keyof TType]);\n }\n\n return String(index);\n };\n }\n\n const tableOptions: Partial<ReactTableOptions<TType>> = {\n defaultColumn: {\n enableColumnFilter: options.enableFiltering || true,\n enableGrouping: false,\n enableHiding: options.enableColumnHiding || true,\n enableResizing: options.enableColumnResizing || true,\n enableGlobalFilter: options.enableSearch || true,\n enableSorting: options.enableSorting || true,\n minSize: 1,\n // the default is 150, which is a bit random\n size: 1,\n },\n enableColumnFilters: options.enableFiltering ?? false,\n enableColumnResizing: options.enableColumnResizing ?? false,\n enableExpanding: options.enableRowExpansion ?? false,\n // users can't customise row grouping, so it can just be always enabled and left to the defaultRowGroupColumnId prop\n enableGrouping: true,\n enableHiding: options.enableColumnHiding ?? false,\n enablePinning: options.enableColumnFreezing ?? false,\n // users can't customise row pinning, so it can just be always enabled\n enableRowPinning: true,\n enableRowSelection: reactTableEnableRowSelection ?? false,\n enableSorting: options.enableSorting ?? false,\n // models for default features\n getExpandedRowModel: props.defaultRowGroupColumnId ? getRowGroupExpandedRowModel<TType>() : getExpandedRowModel<TType>(),\n getGroupedRowModel: getGroupedRowModel<TType>(),\n // group rows are expanded by grouping, not by row expansion, so their state is fixed - returning\n // undefined for data rows lets react-table fall back to the row expansion state for them\n getIsRowExpanded: ((row: ReactTableRow<TType>) => (row.getIsGrouped() ? true : undefined)) as (\n row: ReactTableRow<TType>\n ) => boolean,\n getRowId,\n groupedColumnMode: false,\n keepPinnedRows: false,\n };\n\n if (options.enableRowExpansion) {\n // Prevent expansion state from resetting when data changes (e.g., after editing)\n tableOptions.autoResetExpanded = false;\n }\n\n if (tableOptions.enableColumnResizing) {\n tableOptions.columnResizeMode = 'onChange';\n }\n\n if (tableOptions.enableColumnFilters) {\n // enter controlled filter mode (controlled could be local state, but usually the server)\n if (props.onChangeFilter) {\n // tableOptions.manualFiltering = true;\n // we don't set it because it breaks global filtering (used for search, which is fully client side)\n //\n // tableOptions.onColumnFiltersChange = ...\n // we don't set this because it expects state to be maintained externally, and we don't want\n // consumers to control state outside the table. instead we have a listener that calls onFilter\n } else {\n tableOptions.getFilteredRowModel = getFilteredRowModel<TType>();\n tableOptions.filterFns = {\n tacoFilter: (row: ReactTableRow<TType>, columnId: string, filter: any) => {\n const meta = row._getAllCellsByColumnId()[columnId]?.column.columnDef.meta;\n return columnFilterFn(row.original, row.getValue(columnId), meta, filter, localization);\n },\n };\n }\n }\n\n if (options.enableSearch) {\n // always set these because enableGlobalFilter can be toggled on and off by the user\n tableOptions.getFilteredRowModel = getFilteredRowModel<TType>();\n tableOptions.globalFilterFn = (row: ReactTableRow<TType>, columnId: string, searchQuery: any) =>\n globalFilterFn(row, columnId, searchQuery, localization);\n tableOptions.getColumnCanGlobalFilter = (column: ReactTableColumn<TType>) =>\n column.columnDef.meta?.enableSearch !== false && column.getIsVisible();\n\n // enter controlled search mode (controlled could be local state, but usually the server)\n if (props.onChangeSearch) {\n if (props._experimentalDataLoader2) {\n tableOptions.manualFiltering = true;\n } else {\n // tableOptions.manualFiltering = true;\n // we don't set this because controlled search is not currently supported, search is always client side\n //\n // tableOptions.onGlobalFilterChange = ...\n // we don't set this because it expects state to be maintained externally, and we don't want\n // consumers to control state outside the table. instead we have a listener that calls onSearch.\n //\n // we also don't always filter when searching, we have the highlight functionality as the default\n // and filtering can be toggled by the user\n }\n }\n }\n\n if (tableOptions.enableSorting) {\n // enter controlled sort mode (controlled could be local state, but usually the server)\n if (props.onChangeSort) {\n tableOptions.manualSorting = true;\n\n // tableOptions.onSortingChange = ...\n // we don't set this because it expects state to be maintained externally, and we don't want\n // consumers to control state outside the table. instead we have a listener that calls onSort\n } else {\n tableOptions.getSortedRowModel = getSortedRowModel();\n }\n }\n\n return tableOptions;\n}\n\nexport function useReactTableInitialState<TType = unknown>(\n props: TableProps<TType>,\n columns: ReactTableColumnDef<TType>[],\n persistedSettings: TableSettings,\n defaults: {\n defaultSizing: ReactTableColumnSizingState;\n defaultSorting: ReactTableColumnSort[];\n defaultVisibility: ReactTableVisibilityState;\n }\n): Partial<ReactTableState> {\n return React.useMemo(() => {\n const ignoreNotDefinedColumns = (column: ReactTableColumnDef<TType>) =>\n columns.find(definedColumn => definedColumn.id === column.id);\n\n const columnPinning: ReactTableColumnPinningState =\n persistedSettings.columnPinning ?? props.defaultSettings?.columnPinning ?? {};\n\n const columnOrder = ensureOrdering<TType>(\n columns,\n persistedSettings.columnOrder ?? props.defaultSettings?.columnOrder,\n columnPinning.left\n );\n\n // ensure internal columns are pinned, and are pinned in the correct order\n if (columnPinning?.left?.length) {\n const lastPinnedColumn = columnPinning.left.at(-1);\n\n if (lastPinnedColumn !== undefined) {\n columnPinning.left = freezeUptoExternalColumn(columnOrder.indexOf(lastPinnedColumn), columnOrder);\n }\n } else if (props.defaultColumnFreezingIndex === undefined) {\n columnPinning.left = unfreezeAllExternalColumns(columnOrder);\n } else {\n columnPinning.left = freezeUptoExternalColumn(props.defaultColumnFreezingIndex, columnOrder);\n }\n\n const columnSizing = {\n ...defaults.defaultSizing,\n ...props.defaultSettings?.columnSizing,\n ...persistedSettings.columnSizing,\n };\n\n const state: Partial<ReactTableState> = {\n columnFilters: persistedSettings.columnFilters ?? props.defaultSettings?.columnFilters ?? [],\n columnOrder,\n columnPinning,\n columnSizing: ignoreInternalColumns(columnSizing),\n columnVisibility:\n persistedSettings.columnVisibility ?? props.defaultSettings?.columnVisibility ?? defaults.defaultVisibility ?? {},\n globalFilter: persistedSettings.searchQuery ?? props.defaultSettings?.searchQuery,\n sorting: persistedSettings.sorting\n ? persistedSettings.sorting.filter(ignoreNotDefinedColumns)\n : (props.defaultSettings?.sorting ?? defaults.defaultSorting),\n };\n\n if (props.defaultRowGroupColumnId) {\n state.grouping = [props.defaultRowGroupColumnId as string];\n // row groups should (all) always be expanded by default\n state.expanded = true;\n }\n\n return state;\n }, []);\n}\n"],"names":["React","columns","child"],"mappings":"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"}
|
package/dist/types.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.cjs","sources":["../src/types.ts"],"sourcesContent":["import React from 'react';\n\nimport type { AVAILABLE_COLORS } from './utils/tailwind';\n\nexport type Appearance = 'default' | 'primary' | 'danger' | 'ghost' | 'discrete' | 'transparent';\nexport type State = 'default' | 'success' | 'error' | 'experiment' | 'warning' | 'information';\nexport type Orientation = 'horizontal' | 'vertical';\nexport type Align = 'start' | 'center' | 'end';\nexport type Placement = 'right' | 'left' | 'top' | 'bottom';\nexport type Color = (typeof AVAILABLE_COLORS)[number];\n\nexport enum FontSizes {\n small = 'small',\n medium = 'medium',\n large = 'large',\n}\nexport type FontSize = keyof typeof FontSizes;\n\n// helpers\ntype FixedForwardRef = <T, P = object>(\n render: (props: P, ref: React.Ref<T>) => React.JSX.Element\n) => (props: P & React.RefAttributes<T>) => React.JSX.Element;\n\nexport const fixedForwardRef = React.forwardRef as FixedForwardRef;\n\n// oxlint-disable-next-line ban-types\nexport type StringWithAutocompleteOptions<T> = T | (string & {});\n\ntype Only<T, U> = {\n [P in keyof T]: T[P];\n} & {\n [P in keyof U]?: never;\n};\n\nexport type Either<T, U> = Only<T, U> | Only<U, T>;\n\n/* react-aria-components helpers */\nexport type RemapReactAriaIsProperties<T> = {\n [K in keyof T as K extends `is${infer Rest}` ? Uncapitalize<Rest> : K]: T[K];\n};\n\n// helpers for dot notation paths -- these types are generated with the help of Gemini,\ntype RecursionCounter = [never, 0, 1];\n\ntype DotNotationJoin<K, P> = K extends string | number\n ? P extends string | number\n ? `${K}${'' extends P ? '' : '.'}${P}`\n : never\n : never;\n\nexport type DotNotationPaths<T, D extends number = 2> = [D] extends [never]\n ? never\n : T extends object\n ? {\n [K in keyof T]-?: K extends string | number\n ? `${K}` | DotNotationJoin<K, DotNotationPaths<T[K], RecursionCounter[D]>>\n : never;\n }[keyof T]\n : '';\n\nexport type DotNotationPathValue<T, P extends string> = T extends
|
|
1
|
+
{"version":3,"file":"types.cjs","sources":["../src/types.ts"],"sourcesContent":["import React from 'react';\n\nimport type { AVAILABLE_COLORS } from './utils/tailwind';\n\nexport type Appearance = 'default' | 'primary' | 'danger' | 'ghost' | 'discrete' | 'transparent';\nexport type State = 'default' | 'success' | 'error' | 'experiment' | 'warning' | 'information';\nexport type Orientation = 'horizontal' | 'vertical';\nexport type Align = 'start' | 'center' | 'end';\nexport type Placement = 'right' | 'left' | 'top' | 'bottom';\nexport type Color = (typeof AVAILABLE_COLORS)[number];\n\nexport enum FontSizes {\n small = 'small',\n medium = 'medium',\n large = 'large',\n}\nexport type FontSize = keyof typeof FontSizes;\n\n// helpers\ntype FixedForwardRef = <T, P = object>(\n render: (props: P, ref: React.Ref<T>) => React.JSX.Element\n) => (props: P & React.RefAttributes<T>) => React.JSX.Element;\n\nexport const fixedForwardRef = React.forwardRef as FixedForwardRef;\n\n// oxlint-disable-next-line ban-types\nexport type StringWithAutocompleteOptions<T> = T | (string & {});\n\ntype Only<T, U> = {\n [P in keyof T]: T[P];\n} & {\n [P in keyof U]?: never;\n};\n\nexport type Either<T, U> = Only<T, U> | Only<U, T>;\n\n/* react-aria-components helpers */\nexport type RemapReactAriaIsProperties<T> = {\n [K in keyof T as K extends `is${infer Rest}` ? Uncapitalize<Rest> : K]: T[K];\n};\n\n// helpers for dot notation paths -- these types are generated with the help of Gemini,\ntype RecursionCounter = [never, 0, 1];\n\ntype DotNotationJoin<K, P> = K extends string | number\n ? P extends string | number\n ? `${K}${'' extends P ? '' : '.'}${P}`\n : never\n : never;\n\nexport type DotNotationPaths<T, D extends number = 2> = [D] extends [never]\n ? never\n : T extends object\n ? {\n [K in keyof T]-?: K extends string | number\n ? `${K}` | DotNotationJoin<K, DotNotationPaths<T[K], RecursionCounter[D]>>\n : never;\n }[keyof T]\n : '';\n\n// `T extends unknown` is a no-op condition that forces distribution over unions in T\nexport type DotNotationPathValue<T, P extends string> = T extends unknown\n ? P extends `${infer Key}.${infer Rest}`\n ? Key extends keyof T\n ? DotNotationPathValue<T[Key], Rest>\n : never\n : P extends keyof T\n ? T[P]\n : never\n : never;\n"],"names":["FontSizes"],"mappings":";;;AAWO,IAAK,8BAAAA,eAAL;AACHA,aAAA,OAAA,IAAQ;AACRA,aAAA,QAAA,IAAS;AACTA,aAAA,OAAA,IAAQ;AAHA,SAAAA;AAAA,GAAA,aAAA,CAAA,CAAA;AAYL,MAAM,kBAAkB,MAAM;;;"}
|
package/dist/types.d.ts
CHANGED
|
@@ -29,5 +29,5 @@ type DotNotationJoin<K, P> = K extends string | number ? P extends string | numb
|
|
|
29
29
|
export type DotNotationPaths<T, D extends number = 2> = [D] extends [never] ? never : T extends object ? {
|
|
30
30
|
[K in keyof T]-?: K extends string | number ? `${K}` | DotNotationJoin<K, DotNotationPaths<T[K], RecursionCounter[D]>> : never;
|
|
31
31
|
}[keyof T] : '';
|
|
32
|
-
export type DotNotationPathValue<T, P extends string> = T extends
|
|
32
|
+
export type DotNotationPathValue<T, P extends string> = T extends unknown ? P extends `${infer Key}.${infer Rest}` ? Key extends keyof T ? DotNotationPathValue<T[Key], Rest> : never : P extends keyof T ? T[P] : never : never;
|
|
33
33
|
export {};
|