@lobehub/ui 6.0.0-beta.7 → 6.0.0-beta.9
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/es/Accordion/Accordion.mjs +3 -3
- package/es/Accordion/Accordion.mjs.map +1 -1
- package/es/Accordion/atoms.mjs +2 -2
- package/es/Accordion/atoms.mjs.map +1 -1
- package/es/Accordion/style.d.mts +1 -1
- package/es/ActionIcon/ActionIcon.mjs +2 -2
- package/es/ActionIcon/ActionIcon.mjs.map +1 -1
- package/es/Alert/Alert.mjs +5 -5
- package/es/Alert/Alert.mjs.map +1 -1
- package/es/AutoComplete/AutoComplete.mjs +5 -5
- package/es/AutoComplete/AutoComplete.mjs.map +1 -1
- package/es/AutoComplete/style.mjs +2 -2
- package/es/AutoComplete/style.mjs.map +1 -1
- package/es/Avatar/Avatar.mjs +2 -2
- package/es/Avatar/Avatar.mjs.map +1 -1
- package/es/Avatar/AvatarGroup/index.mjs +2 -2
- package/es/Avatar/AvatarGroup/index.mjs.map +1 -1
- package/es/Breadcrumb/Breadcrumb.mjs +2 -2
- package/es/Breadcrumb/Breadcrumb.mjs.map +1 -1
- package/es/Button/Button.mjs +1 -1
- package/es/Button/Button.mjs.map +1 -1
- package/es/Button/style.d.mts +8 -1
- package/es/Button/style.mjs +41 -18
- package/es/Button/style.mjs.map +1 -1
- package/es/Checkbox/Checkbox.mjs +3 -3
- package/es/Checkbox/Checkbox.mjs.map +1 -1
- package/es/CodeDiff/DiffPanel.mjs +4 -4
- package/es/CodeDiff/DiffPanel.mjs.map +1 -1
- package/es/CodeEditor/CodeEditor.mjs +4 -4
- package/es/CodeEditor/CodeEditor.mjs.map +1 -1
- package/es/ColorPicker/ColorInputs.mjs +136 -0
- package/es/ColorPicker/ColorInputs.mjs.map +1 -0
- package/es/ColorPicker/ColorPanel.mjs +145 -0
- package/es/ColorPicker/ColorPanel.mjs.map +1 -0
- package/es/ColorPicker/ColorPicker.mjs +62 -199
- package/es/ColorPicker/ColorPicker.mjs.map +1 -1
- package/es/ColorPicker/SaturationArea.mjs +2 -1
- package/es/ColorPicker/SaturationArea.mjs.map +1 -1
- package/es/ColorPicker/Swatch.mjs +24 -0
- package/es/ColorPicker/Swatch.mjs.map +1 -0
- package/es/ColorPicker/Swatches.mjs +66 -0
- package/es/ColorPicker/Swatches.mjs.map +1 -0
- package/es/ColorPicker/Trigger.mjs +112 -0
- package/es/ColorPicker/Trigger.mjs.map +1 -0
- package/es/ColorPicker/color.mjs +25 -1
- package/es/ColorPicker/color.mjs.map +1 -1
- package/es/ColorPicker/recent.mjs +25 -0
- package/es/ColorPicker/recent.mjs.map +1 -0
- package/es/ColorPicker/style.mjs +269 -70
- package/es/ColorPicker/style.mjs.map +1 -1
- package/es/ColorPicker/type.d.mts +15 -0
- package/es/ContextMenu/ContextMenuHost.mjs +2 -2
- package/es/ContextMenu/ContextMenuHost.mjs.map +1 -1
- package/es/ContextMenu/ContextMenuTrigger.mjs +2 -2
- package/es/ContextMenu/ContextMenuTrigger.mjs.map +1 -1
- package/es/ContextMenu/renderItems.mjs +3 -3
- package/es/ContextMenu/renderItems.mjs.map +1 -1
- package/es/DatePicker/DatePicker.d.mts +9 -2
- package/es/DatePicker/DatePicker.mjs +15 -85
- package/es/DatePicker/DatePicker.mjs.map +1 -1
- package/es/DatePicker/DateRangePicker.d.mts +3 -2
- package/es/DatePicker/DateRangePicker.mjs +3 -125
- package/es/DatePicker/DateRangePicker.mjs.map +1 -1
- package/es/DatePicker/DayjsDatePicker.d.mts +12 -0
- package/es/DatePicker/DayjsDatePicker.mjs +19 -0
- package/es/DatePicker/DayjsDatePicker.mjs.map +1 -0
- package/es/DatePicker/DayjsDateRangePicker.d.mts +7 -0
- package/es/DatePicker/DayjsDateRangePicker.mjs +8 -0
- package/es/DatePicker/DayjsDateRangePicker.mjs.map +1 -0
- package/es/DatePicker/PurePanel.mjs +65 -0
- package/es/DatePicker/PurePanel.mjs.map +1 -0
- package/es/DatePicker/RangePicker.mjs +121 -0
- package/es/DatePicker/RangePicker.mjs.map +1 -0
- package/es/DatePicker/SinglePicker.mjs +134 -0
- package/es/DatePicker/SinglePicker.mjs.map +1 -0
- package/es/DatePicker/core/PickerInput/Popup/Footer.mjs +57 -0
- package/es/DatePicker/core/PickerInput/Popup/Footer.mjs.map +1 -0
- package/es/DatePicker/core/PickerInput/Popup/PopupPanel.mjs +57 -0
- package/es/DatePicker/core/PickerInput/Popup/PopupPanel.mjs.map +1 -0
- package/es/DatePicker/core/PickerInput/Popup/PresetPanel.mjs +29 -0
- package/es/DatePicker/core/PickerInput/Popup/PresetPanel.mjs.map +1 -0
- package/es/DatePicker/core/PickerInput/Popup/index.mjs +133 -0
- package/es/DatePicker/core/PickerInput/Popup/index.mjs.map +1 -0
- package/es/DatePicker/core/PickerInput/RangePicker.d.mts +51 -0
- package/es/DatePicker/core/PickerInput/RangePicker.mjs +343 -0
- package/es/DatePicker/core/PickerInput/RangePicker.mjs.map +1 -0
- package/es/DatePicker/core/PickerInput/Selector/ClearIcon.mjs +27 -0
- package/es/DatePicker/core/PickerInput/Selector/ClearIcon.mjs.map +1 -0
- package/es/DatePicker/core/PickerInput/Selector/Icon.mjs +19 -0
- package/es/DatePicker/core/PickerInput/Selector/Icon.mjs.map +1 -0
- package/es/DatePicker/core/PickerInput/Selector/Input.mjs +237 -0
- package/es/DatePicker/core/PickerInput/Selector/Input.mjs.map +1 -0
- package/es/DatePicker/core/PickerInput/Selector/MaskFormat.mjs +70 -0
- package/es/DatePicker/core/PickerInput/Selector/MaskFormat.mjs.map +1 -0
- package/es/DatePicker/core/PickerInput/Selector/RangeSelector.d.mts +8 -0
- package/es/DatePicker/core/PickerInput/Selector/RangeSelector.mjs +136 -0
- package/es/DatePicker/core/PickerInput/Selector/RangeSelector.mjs.map +1 -0
- package/es/DatePicker/core/PickerInput/Selector/SingleSelector/HoverSelector.mjs +28 -0
- package/es/DatePicker/core/PickerInput/Selector/SingleSelector/HoverSelector.mjs.map +1 -0
- package/es/DatePicker/core/PickerInput/Selector/SingleSelector/MultipleDates.mjs +69 -0
- package/es/DatePicker/core/PickerInput/Selector/SingleSelector/MultipleDates.mjs.map +1 -0
- package/es/DatePicker/core/PickerInput/Selector/SingleSelector/index.mjs +111 -0
- package/es/DatePicker/core/PickerInput/Selector/SingleSelector/index.mjs.map +1 -0
- package/es/DatePicker/core/PickerInput/Selector/hooks/useClearIcon.mjs +18 -0
- package/es/DatePicker/core/PickerInput/Selector/hooks/useClearIcon.mjs.map +1 -0
- package/es/DatePicker/core/PickerInput/Selector/hooks/useInputProps.mjs +108 -0
- package/es/DatePicker/core/PickerInput/Selector/hooks/useInputProps.mjs.map +1 -0
- package/es/DatePicker/core/PickerInput/Selector/hooks/useRootProps.mjs +11 -0
- package/es/DatePicker/core/PickerInput/Selector/hooks/useRootProps.mjs.map +1 -0
- package/es/DatePicker/core/PickerInput/Selector/util.mjs +20 -0
- package/es/DatePicker/core/PickerInput/Selector/util.mjs.map +1 -0
- package/es/DatePicker/core/PickerInput/SinglePicker.d.mts +55 -0
- package/es/DatePicker/core/PickerInput/SinglePicker.mjs +318 -0
- package/es/DatePicker/core/PickerInput/SinglePicker.mjs.map +1 -0
- package/es/DatePicker/core/PickerInput/context.mjs +7 -0
- package/es/DatePicker/core/PickerInput/context.mjs.map +1 -0
- package/es/DatePicker/core/PickerInput/hooks/useCellRender.mjs +30 -0
- package/es/DatePicker/core/PickerInput/hooks/useCellRender.mjs.map +1 -0
- package/es/DatePicker/core/PickerInput/hooks/useDelayState.mjs +37 -0
- package/es/DatePicker/core/PickerInput/hooks/useDelayState.mjs.map +1 -0
- package/es/DatePicker/core/PickerInput/hooks/useDisabledBoundary.mjs +18 -0
- package/es/DatePicker/core/PickerInput/hooks/useDisabledBoundary.mjs.map +1 -0
- package/es/DatePicker/core/PickerInput/hooks/useFieldFormat.mjs +20 -0
- package/es/DatePicker/core/PickerInput/hooks/useFieldFormat.mjs.map +1 -0
- package/es/DatePicker/core/PickerInput/hooks/useFieldsInvalidate.mjs +31 -0
- package/es/DatePicker/core/PickerInput/hooks/useFieldsInvalidate.mjs.map +1 -0
- package/es/DatePicker/core/PickerInput/hooks/useFilledProps.mjs +98 -0
- package/es/DatePicker/core/PickerInput/hooks/useFilledProps.mjs.map +1 -0
- package/es/DatePicker/core/PickerInput/hooks/useFocusEvents.mjs +41 -0
- package/es/DatePicker/core/PickerInput/hooks/useFocusEvents.mjs.map +1 -0
- package/es/DatePicker/core/PickerInput/hooks/useFocusLock.mjs +34 -0
- package/es/DatePicker/core/PickerInput/hooks/useFocusLock.mjs.map +1 -0
- package/es/DatePicker/core/PickerInput/hooks/useHoverStore.mjs +35 -0
- package/es/DatePicker/core/PickerInput/hooks/useHoverStore.mjs.map +1 -0
- package/es/DatePicker/core/PickerInput/hooks/useInputReadOnly.mjs +9 -0
- package/es/DatePicker/core/PickerInput/hooks/useInputReadOnly.mjs.map +1 -0
- package/es/DatePicker/core/PickerInput/hooks/useInvalidate.mjs +36 -0
- package/es/DatePicker/core/PickerInput/hooks/useInvalidate.mjs.map +1 -0
- package/es/DatePicker/core/PickerInput/hooks/useLockEffect.mjs +27 -0
- package/es/DatePicker/core/PickerInput/hooks/useLockEffect.mjs.map +1 -0
- package/es/DatePicker/core/PickerInput/hooks/useOpen.mjs +18 -0
- package/es/DatePicker/core/PickerInput/hooks/useOpen.mjs.map +1 -0
- package/es/DatePicker/core/PickerInput/hooks/usePickerRef.mjs +19 -0
- package/es/DatePicker/core/PickerInput/hooks/usePickerRef.mjs.map +1 -0
- package/es/DatePicker/core/PickerInput/hooks/usePresets.mjs +20 -0
- package/es/DatePicker/core/PickerInput/hooks/usePresets.mjs.map +1 -0
- package/es/DatePicker/core/PickerInput/hooks/useRangeDisabledDate.mjs +24 -0
- package/es/DatePicker/core/PickerInput/hooks/useRangeDisabledDate.mjs.map +1 -0
- package/es/DatePicker/core/PickerInput/hooks/useRangePickerValue.mjs +107 -0
- package/es/DatePicker/core/PickerInput/hooks/useRangePickerValue.mjs.map +1 -0
- package/es/DatePicker/core/PickerInput/hooks/useRangeValue.mjs +144 -0
- package/es/DatePicker/core/PickerInput/hooks/useRangeValue.mjs.map +1 -0
- package/es/DatePicker/core/PickerInput/hooks/useRangeValueChange.mjs +219 -0
- package/es/DatePicker/core/PickerInput/hooks/useRangeValueChange.mjs.map +1 -0
- package/es/DatePicker/core/PickerInput/hooks/useShowNow.mjs +11 -0
- package/es/DatePicker/core/PickerInput/hooks/useShowNow.mjs.map +1 -0
- package/es/DatePicker/core/PickerPanel/DatePanel/index.mjs +131 -0
- package/es/DatePicker/core/PickerPanel/DatePanel/index.mjs.map +1 -0
- package/es/DatePicker/core/PickerPanel/DateTimePanel/index.mjs +35 -0
- package/es/DatePicker/core/PickerPanel/DateTimePanel/index.mjs.map +1 -0
- package/es/DatePicker/core/PickerPanel/DecadePanel/index.mjs +84 -0
- package/es/DatePicker/core/PickerPanel/DecadePanel/index.mjs.map +1 -0
- package/es/DatePicker/core/PickerPanel/MonthPanel/index.mjs +73 -0
- package/es/DatePicker/core/PickerPanel/MonthPanel/index.mjs.map +1 -0
- package/es/DatePicker/core/PickerPanel/PanelBody.mjs +95 -0
- package/es/DatePicker/core/PickerPanel/PanelBody.mjs.map +1 -0
- package/es/DatePicker/core/PickerPanel/PanelHeader.mjs +130 -0
- package/es/DatePicker/core/PickerPanel/PanelHeader.mjs.map +1 -0
- package/es/DatePicker/core/PickerPanel/QuarterPanel/index.mjs +64 -0
- package/es/DatePicker/core/PickerPanel/QuarterPanel/index.mjs.map +1 -0
- package/es/DatePicker/core/PickerPanel/TimePanel/TimeClock/ClockDial.mjs +108 -0
- package/es/DatePicker/core/PickerPanel/TimePanel/TimeClock/ClockDial.mjs.map +1 -0
- package/es/DatePicker/core/PickerPanel/TimePanel/TimeClock/geometry.mjs +44 -0
- package/es/DatePicker/core/PickerPanel/TimePanel/TimeClock/geometry.mjs.map +1 -0
- package/es/DatePicker/core/PickerPanel/TimePanel/TimeClock/index.mjs +157 -0
- package/es/DatePicker/core/PickerPanel/TimePanel/TimeClock/index.mjs.map +1 -0
- package/es/DatePicker/core/PickerPanel/TimePanel/TimePanelBody/TimeColumn.mjs +100 -0
- package/es/DatePicker/core/PickerPanel/TimePanel/TimePanelBody/TimeColumn.mjs.map +1 -0
- package/es/DatePicker/core/PickerPanel/TimePanel/TimePanelBody/index.mjs +71 -0
- package/es/DatePicker/core/PickerPanel/TimePanel/TimePanelBody/index.mjs.map +1 -0
- package/es/DatePicker/core/PickerPanel/TimePanel/TimePanelBody/useScrollTo.mjs +62 -0
- package/es/DatePicker/core/PickerPanel/TimePanel/TimePanelBody/useScrollTo.mjs.map +1 -0
- package/es/DatePicker/core/PickerPanel/TimePanel/TimePanelBody/useTimeState.mjs +200 -0
- package/es/DatePicker/core/PickerPanel/TimePanel/TimePanelBody/useTimeState.mjs.map +1 -0
- package/es/DatePicker/core/PickerPanel/TimePanel/TimePanelBody/util.mjs +25 -0
- package/es/DatePicker/core/PickerPanel/TimePanel/TimePanelBody/util.mjs.map +1 -0
- package/es/DatePicker/core/PickerPanel/TimePanel/index.mjs +31 -0
- package/es/DatePicker/core/PickerPanel/TimePanel/index.mjs.map +1 -0
- package/es/DatePicker/core/PickerPanel/WeekPanel/index.mjs +34 -0
- package/es/DatePicker/core/PickerPanel/WeekPanel/index.mjs.map +1 -0
- package/es/DatePicker/core/PickerPanel/YearPanel/index.mjs +92 -0
- package/es/DatePicker/core/PickerPanel/YearPanel/index.mjs.map +1 -0
- package/es/DatePicker/core/PickerPanel/context.mjs +48 -0
- package/es/DatePicker/core/PickerPanel/context.mjs.map +1 -0
- package/es/DatePicker/core/PickerPanel/index.d.mts +1 -0
- package/es/DatePicker/core/PickerPanel/index.mjs +175 -0
- package/es/DatePicker/core/PickerPanel/index.mjs.map +1 -0
- package/es/DatePicker/core/PickerPopup.mjs +118 -0
- package/es/DatePicker/core/PickerPopup.mjs.map +1 -0
- package/es/DatePicker/core/generate/dayjs.mjs +109 -0
- package/es/DatePicker/core/generate/dayjs.mjs.map +1 -0
- package/es/DatePicker/core/generate/index.d.mts +40 -0
- package/es/DatePicker/core/hooks/react.mjs +58 -0
- package/es/DatePicker/core/hooks/react.mjs.map +1 -0
- package/es/DatePicker/core/hooks/useLocale.mjs +51 -0
- package/es/DatePicker/core/hooks/useLocale.mjs.map +1 -0
- package/es/DatePicker/core/hooks/useSemantic.mjs +20 -0
- package/es/DatePicker/core/hooks/useSemantic.mjs.map +1 -0
- package/es/DatePicker/core/hooks/useSyncState.mjs +25 -0
- package/es/DatePicker/core/hooks/useSyncState.mjs.map +1 -0
- package/es/DatePicker/core/hooks/useTimeConfig.mjs +173 -0
- package/es/DatePicker/core/hooks/useTimeConfig.mjs.map +1 -0
- package/es/DatePicker/core/hooks/useTimeInfo.mjs +110 -0
- package/es/DatePicker/core/hooks/useTimeInfo.mjs.map +1 -0
- package/es/DatePicker/core/hooks/useToggleDates.mjs +21 -0
- package/es/DatePicker/core/hooks/useToggleDates.mjs.map +1 -0
- package/es/DatePicker/core/index.d.mts +5 -0
- package/es/DatePicker/core/index.mjs +9 -0
- package/es/DatePicker/core/index.mjs.map +1 -0
- package/es/DatePicker/core/interface.d.mts +325 -0
- package/es/DatePicker/core/locale/common.mjs +11 -0
- package/es/DatePicker/core/locale/common.mjs.map +1 -0
- package/es/DatePicker/core/locale/en_US.mjs +39 -0
- package/es/DatePicker/core/locale/en_US.mjs.map +1 -0
- package/es/DatePicker/core/utils/common.mjs +73 -0
- package/es/DatePicker/core/utils/common.mjs.map +1 -0
- package/es/DatePicker/core/utils/dateUtil.mjs +106 -0
- package/es/DatePicker/core/utils/dateUtil.mjs.map +1 -0
- package/es/DatePicker/core/utils/miscUtil.mjs +46 -0
- package/es/DatePicker/core/utils/miscUtil.mjs.map +1 -0
- package/es/DatePicker/core/utils/uiUtil.mjs +9 -0
- package/es/DatePicker/core/utils/uiUtil.mjs.map +1 -0
- package/es/DatePicker/dateGenerateConfig.mjs +52 -0
- package/es/DatePicker/dateGenerateConfig.mjs.map +1 -0
- package/es/DatePicker/generateConfig.mjs +12 -0
- package/es/DatePicker/generateConfig.mjs.map +1 -0
- package/es/DatePicker/generatePicker.d.mts +12 -0
- package/es/DatePicker/generatePicker.mjs +22 -0
- package/es/DatePicker/generatePicker.mjs.map +1 -0
- package/es/DatePicker/index.d.mts +8 -3
- package/es/DatePicker/index.mjs +5 -1
- package/es/DatePicker/legacyDate.mjs +58 -0
- package/es/DatePicker/legacyDate.mjs.map +1 -0
- package/es/DatePicker/locale.d.mts +15 -0
- package/es/DatePicker/locale.mjs +143 -0
- package/es/DatePicker/locale.mjs.map +1 -0
- package/es/DatePicker/semantic.mjs +29 -0
- package/es/DatePicker/semantic.mjs.map +1 -0
- package/es/DatePicker/style.mjs +3 -155
- package/es/DatePicker/style.mjs.map +1 -1
- package/es/DatePicker/type.d.mts +294 -27
- package/es/DatePicker/usePanelKeyboard.mjs +230 -0
- package/es/DatePicker/usePanelKeyboard.mjs.map +1 -0
- package/es/DatePicker/usePickerShared.mjs +106 -0
- package/es/DatePicker/usePickerShared.mjs.map +1 -0
- package/es/DatePicker/usePresetActive.mjs +49 -0
- package/es/DatePicker/usePresetActive.mjs.map +1 -0
- package/es/DraggablePanel/atoms.mjs +5 -5
- package/es/DraggablePanel/atoms.mjs.map +1 -1
- package/es/DraggableSideNav/DraggableSideNav.mjs +3 -3
- package/es/DraggableSideNav/DraggableSideNav.mjs.map +1 -1
- package/es/Drawer/Drawer.mjs +2 -2
- package/es/Drawer/Drawer.mjs.map +1 -1
- package/es/Drawer/atoms.mjs +6 -6
- package/es/Drawer/atoms.mjs.map +1 -1
- package/es/DropdownMenu/atoms.mjs +22 -22
- package/es/DropdownMenu/atoms.mjs.map +1 -1
- package/es/DropdownMenu/sharedStyle.mjs +2 -2
- package/es/DropdownMenu/sharedStyle.mjs.map +1 -1
- package/es/EditorSlashMenu/atoms.mjs +12 -12
- package/es/EditorSlashMenu/atoms.mjs.map +1 -1
- package/es/EmojiPicker/EmojiPicker.mjs +7 -7
- package/es/EmojiPicker/EmojiPicker.mjs.map +1 -1
- package/es/EmojiPicker/loadEmojiData.mjs +6 -0
- package/es/EmojiPicker/loadEmojiData.mjs.map +1 -0
- package/es/FloatingPanel/FloatingPanel.mjs +2 -2
- package/es/FloatingPanel/FloatingPanel.mjs.map +1 -1
- package/es/FormKit/List.mjs +2 -2
- package/es/FormKit/List.mjs.map +1 -1
- package/es/Highlighter/FullFeatured.mjs +2 -2
- package/es/Highlighter/FullFeatured.mjs.map +1 -1
- package/es/Highlighter/SyntaxHighlighter/StreamRenderer.mjs +2 -2
- package/es/Highlighter/SyntaxHighlighter/StreamRenderer.mjs.map +1 -1
- package/es/Highlighter/SyntaxHighlighter/index.mjs +4 -4
- package/es/Highlighter/SyntaxHighlighter/index.mjs.map +1 -1
- package/es/Highlighter/style.mjs +2 -2
- package/es/Highlighter/style.mjs.map +1 -1
- package/es/HtmlPreview/HtmlPreview.mjs +2 -2
- package/es/HtmlPreview/HtmlPreview.mjs.map +1 -1
- package/es/Icon/Icon.mjs +2 -2
- package/es/Icon/Icon.mjs.map +1 -1
- package/es/List/ListRow.mjs +3 -3
- package/es/List/ListRow.mjs.map +1 -1
- package/es/Markdown/Markdown.mjs +2 -2
- package/es/Markdown/Markdown.mjs.map +1 -1
- package/es/Markdown/Typography.mjs +2 -2
- package/es/Markdown/Typography.mjs.map +1 -1
- package/es/Mermaid/FullFeatured.mjs +2 -2
- package/es/Mermaid/FullFeatured.mjs.map +1 -1
- package/es/Mermaid/SyntaxMermaid/index.mjs +4 -4
- package/es/Mermaid/SyntaxMermaid/index.mjs.map +1 -1
- package/es/Modal/atoms.mjs +6 -6
- package/es/Modal/atoms.mjs.map +1 -1
- package/es/Pagination/Pagination.mjs +181 -41
- package/es/Pagination/Pagination.mjs.map +1 -1
- package/es/Pagination/helpers.mjs +3 -3
- package/es/Pagination/helpers.mjs.map +1 -1
- package/es/Pagination/index.d.mts +2 -2
- package/es/Pagination/marker.stylex.mjs +9 -0
- package/es/Pagination/marker.stylex.mjs.map +1 -0
- package/es/Pagination/style.mjs +74 -4
- package/es/Pagination/style.mjs.map +1 -1
- package/es/Pagination/type.d.mts +41 -3
- package/es/Popover/PopoverInGroup.mjs +2 -2
- package/es/Popover/PopoverInGroup.mjs.map +1 -1
- package/es/Popover/atoms.mjs +6 -6
- package/es/Popover/atoms.mjs.map +1 -1
- package/es/ProTable/ProTable.d.mts +11 -0
- package/es/ProTable/ProTable.mjs +208 -0
- package/es/ProTable/ProTable.mjs.map +1 -0
- package/es/ProTable/hooks/useColumnRequest.mjs +55 -0
- package/es/ProTable/hooks/useColumnRequest.mjs.map +1 -0
- package/es/ProTable/hooks/useColumnsState.mjs +37 -0
- package/es/ProTable/hooks/useColumnsState.mjs.map +1 -0
- package/es/ProTable/hooks/useDelayedFlag.mjs +18 -0
- package/es/ProTable/hooks/useDelayedFlag.mjs.map +1 -0
- package/es/ProTable/hooks/useDensity.mjs +15 -0
- package/es/ProTable/hooks/useDensity.mjs.map +1 -0
- package/es/ProTable/hooks/useFetchData.mjs +97 -0
- package/es/ProTable/hooks/useFetchData.mjs.map +1 -0
- package/es/ProTable/hooks/useFullscreen.mjs +22 -0
- package/es/ProTable/hooks/useFullscreen.mjs.map +1 -0
- package/es/ProTable/hooks/usePageInfo.mjs +35 -0
- package/es/ProTable/hooks/usePageInfo.mjs.map +1 -0
- package/es/ProTable/hooks/useProColumns.mjs +123 -0
- package/es/ProTable/hooks/useProColumns.mjs.map +1 -0
- package/es/ProTable/hooks/useProLoading.mjs +19 -0
- package/es/ProTable/hooks/useProLoading.mjs.map +1 -0
- package/es/ProTable/hooks/useProLocale.mjs +22 -0
- package/es/ProTable/hooks/useProLocale.mjs.map +1 -0
- package/es/ProTable/hooks/useProRequest.mjs +137 -0
- package/es/ProTable/hooks/useProRequest.mjs.map +1 -0
- package/es/ProTable/hooks/useRowCache.mjs +11 -0
- package/es/ProTable/hooks/useRowCache.mjs.map +1 -0
- package/es/ProTable/hooks/useSearchForm.mjs +141 -0
- package/es/ProTable/hooks/useSearchForm.mjs.map +1 -0
- package/es/ProTable/hooks/useTableBindings.mjs +39 -0
- package/es/ProTable/hooks/useTableBindings.mjs.map +1 -0
- package/es/ProTable/hooks/useTableSelection.mjs +14 -0
- package/es/ProTable/hooks/useTableSelection.mjs.map +1 -0
- package/es/ProTable/index.d.mts +4 -0
- package/es/ProTable/index.d.ts +1 -0
- package/es/ProTable/index.js +1 -0
- package/es/ProTable/index.mjs +3 -0
- package/es/ProTable/locale.d.mts +15 -0
- package/es/ProTable/locale.mjs +66 -0
- package/es/ProTable/locale.mjs.map +1 -0
- package/es/ProTable/parts/ColumnSetting.mjs +155 -0
- package/es/ProTable/parts/ColumnSetting.mjs.map +1 -0
- package/es/ProTable/parts/FieldControl.mjs +117 -0
- package/es/ProTable/parts/FieldControl.mjs.map +1 -0
- package/es/ProTable/parts/KeywordInput.mjs +19 -0
- package/es/ProTable/parts/KeywordInput.mjs.map +1 -0
- package/es/ProTable/parts/LightFilter.mjs +70 -0
- package/es/ProTable/parts/LightFilter.mjs.map +1 -0
- package/es/ProTable/parts/OptionPopover.mjs +17 -0
- package/es/ProTable/parts/OptionPopover.mjs.map +1 -0
- package/es/ProTable/parts/SearchForm.mjs +180 -0
- package/es/ProTable/parts/SearchForm.mjs.map +1 -0
- package/es/ProTable/parts/SearchSection.mjs +33 -0
- package/es/ProTable/parts/SearchSection.mjs.map +1 -0
- package/es/ProTable/parts/TableAlert.mjs +38 -0
- package/es/ProTable/parts/TableAlert.mjs.map +1 -0
- package/es/ProTable/parts/Toolbar.mjs +50 -0
- package/es/ProTable/parts/Toolbar.mjs.map +1 -0
- package/es/ProTable/parts/ToolbarOptions.mjs +103 -0
- package/es/ProTable/parts/ToolbarOptions.mjs.map +1 -0
- package/es/ProTable/parts/renderValue.mjs +118 -0
- package/es/ProTable/parts/renderValue.mjs.map +1 -0
- package/es/ProTable/style.mjs +278 -0
- package/es/ProTable/style.mjs.map +1 -0
- package/es/ProTable/type.d.mts +397 -0
- package/es/ProTable/utils.mjs +152 -0
- package/es/ProTable/utils.mjs.map +1 -0
- package/es/Radio/Radio.mjs +3 -3
- package/es/Radio/Radio.mjs.map +1 -1
- package/es/ScrollArea/atoms.mjs +4 -4
- package/es/ScrollArea/atoms.mjs.map +1 -1
- package/es/Segmented/Segmented.mjs +3 -3
- package/es/Segmented/Segmented.mjs.map +1 -1
- package/es/Segmented/atoms.mjs +2 -2
- package/es/Segmented/atoms.mjs.map +1 -1
- package/es/Select/Select.mjs +22 -13
- package/es/Select/Select.mjs.map +1 -1
- package/es/Select/atoms.mjs +4 -4
- package/es/Select/atoms.mjs.map +1 -1
- package/es/Select/helpers.mjs +8 -1
- package/es/Select/helpers.mjs.map +1 -1
- package/es/Select/hooks.mjs +8 -4
- package/es/Select/hooks.mjs.map +1 -1
- package/es/Select/renderOptions.mjs +2 -2
- package/es/Select/renderOptions.mjs.map +1 -1
- package/es/Select/type.d.mts +7 -0
- package/es/Switch/Switch.mjs +2 -2
- package/es/Switch/Switch.mjs.map +1 -1
- package/es/Switch/atoms.mjs +2 -2
- package/es/Switch/atoms.mjs.map +1 -1
- package/es/Table/Column.d.mts +8 -0
- package/es/Table/Column.mjs +6 -0
- package/es/Table/Column.mjs.map +1 -0
- package/es/Table/ColumnGroup.d.mts +11 -0
- package/es/Table/ColumnGroup.mjs +6 -0
- package/es/Table/ColumnGroup.mjs.map +1 -0
- package/es/Table/Table.d.mts +16 -2
- package/es/Table/Table.mjs +149 -118
- package/es/Table/Table.mjs.map +1 -1
- package/es/Table/atoms/cells.d.mts +42 -0
- package/es/Table/atoms/cells.mjs +72 -0
- package/es/Table/atoms/cells.mjs.map +1 -0
- package/es/Table/atoms/index.d.mts +3 -0
- package/es/Table/atoms/layout.d.mts +44 -0
- package/es/Table/atoms/layout.mjs +62 -0
- package/es/Table/atoms/layout.mjs.map +1 -0
- package/es/Table/constants.mjs +16 -0
- package/es/Table/constants.mjs.map +1 -0
- package/es/Table/engine/fixed.d.mts +1 -0
- package/es/Table/engine/fixed.mjs +53 -0
- package/es/Table/engine/fixed.mjs.map +1 -0
- package/es/Table/engine/types.d.mts +1 -0
- package/es/Table/engine/useTableEngine.mjs +180 -0
- package/es/Table/engine/useTableEngine.mjs.map +1 -0
- package/es/Table/index.d.mts +7 -2
- package/es/Table/index.mjs +4 -1
- package/es/Table/internal.d.mts +3 -0
- package/es/Table/pipeline/columnUtils.d.mts +5 -0
- package/es/Table/pipeline/columnUtils.mjs +58 -0
- package/es/Table/pipeline/columnUtils.mjs.map +1 -0
- package/es/Table/pipeline/convertChildrenToColumns.mjs +24 -0
- package/es/Table/pipeline/convertChildrenToColumns.mjs.map +1 -0
- package/es/Table/pipeline/normalizeColumns.mjs +140 -0
- package/es/Table/pipeline/normalizeColumns.mjs.map +1 -0
- package/es/Table/pipeline/selectionUtils.d.mts +9 -0
- package/es/Table/pipeline/selectionUtils.mjs +115 -0
- package/es/Table/pipeline/selectionUtils.mjs.map +1 -0
- package/es/Table/pipeline/useBreakpoint.mjs +36 -0
- package/es/Table/pipeline/useBreakpoint.mjs.map +1 -0
- package/es/Table/pipeline/useExpandable.mjs +45 -0
- package/es/Table/pipeline/useExpandable.mjs.map +1 -0
- package/es/Table/pipeline/useFilter.mjs +52 -0
- package/es/Table/pipeline/useFilter.mjs.map +1 -0
- package/es/Table/pipeline/useSelection.mjs +302 -0
- package/es/Table/pipeline/useSelection.mjs.map +1 -0
- package/es/Table/pipeline/useSorter.mjs +146 -0
- package/es/Table/pipeline/useSorter.mjs.map +1 -0
- package/es/Table/pipeline/useTableLocale.mjs +30 -0
- package/es/Table/pipeline/useTableLocale.mjs.map +1 -0
- package/es/Table/pipeline/useTableState.mjs +118 -0
- package/es/Table/pipeline/useTableState.mjs.map +1 -0
- package/es/Table/pipeline/useVirtualLayout.mjs +80 -0
- package/es/Table/pipeline/useVirtualLayout.mjs.map +1 -0
- package/es/Table/render/Body.mjs +150 -0
- package/es/Table/render/Body.mjs.map +1 -0
- package/es/Table/render/BodyCell.mjs +87 -0
- package/es/Table/render/BodyCell.mjs.map +1 -0
- package/es/Table/render/CellShell.mjs +84 -0
- package/es/Table/render/CellShell.mjs.map +1 -0
- package/es/Table/render/ExpandIcon.mjs +28 -0
- package/es/Table/render/ExpandIcon.mjs.map +1 -0
- package/es/Table/render/FilterDropdown.mjs +139 -0
- package/es/Table/render/FilterDropdown.mjs.map +1 -0
- package/es/Table/render/FilterPanel.mjs +152 -0
- package/es/Table/render/FilterPanel.mjs.map +1 -0
- package/es/Table/render/FixedFrost.mjs +113 -0
- package/es/Table/render/FixedFrost.mjs.map +1 -0
- package/es/Table/render/FixedHolder.mjs +51 -0
- package/es/Table/render/FixedHolder.mjs.map +1 -0
- package/es/Table/render/Header.mjs +184 -0
- package/es/Table/render/Header.mjs.map +1 -0
- package/es/Table/render/LoadingSkeleton.mjs +78 -0
- package/es/Table/render/LoadingSkeleton.mjs.map +1 -0
- package/es/Table/render/PaginationBar.mjs +71 -0
- package/es/Table/render/PaginationBar.mjs.map +1 -0
- package/es/Table/render/SelectionCells.mjs +111 -0
- package/es/Table/render/SelectionCells.mjs.map +1 -0
- package/es/Table/render/StickyScrollBar.mjs +99 -0
- package/es/Table/render/StickyScrollBar.mjs.map +1 -0
- package/es/Table/render/Summary.d.mts +16 -0
- package/es/Table/render/Summary.mjs +58 -0
- package/es/Table/render/Summary.mjs.map +1 -0
- package/es/Table/render/TableView.mjs +215 -0
- package/es/Table/render/TableView.mjs.map +1 -0
- package/es/Table/render/VirtualBody.mjs +101 -0
- package/es/Table/render/VirtualBody.mjs.map +1 -0
- package/es/Table/render/context.mjs +15 -0
- package/es/Table/render/context.mjs.map +1 -0
- package/es/Table/render/filterUtils.mjs +22 -0
- package/es/Table/render/filterUtils.mjs.map +1 -0
- package/es/Table/render/tableHelpers.mjs +27 -0
- package/es/Table/render/tableHelpers.mjs.map +1 -0
- package/es/Table/render/useColGroups.mjs +23 -0
- package/es/Table/render/useColGroups.mjs.map +1 -0
- package/es/Table/render/useScrollSync.mjs +104 -0
- package/es/Table/render/useScrollSync.mjs.map +1 -0
- package/es/Table/render/useViewContexts.mjs +134 -0
- package/es/Table/render/useViewContexts.mjs.map +1 -0
- package/es/Table/semantic.mjs +45 -0
- package/es/Table/semantic.mjs.map +1 -0
- package/es/Table/store/createTableStore.d.mts +1 -0
- package/es/Table/store/createTableStore.mjs +40 -0
- package/es/Table/store/createTableStore.mjs.map +1 -0
- package/es/Table/store/hooks.mjs +24 -0
- package/es/Table/store/hooks.mjs.map +1 -0
- package/es/Table/style.mjs +175 -90
- package/es/Table/style.mjs.map +1 -1
- package/es/Table/type.d.mts +467 -37
- package/es/Table/useTableController.mjs +293 -0
- package/es/Table/useTableController.mjs.map +1 -0
- package/es/Tabs/Tabs.mjs +2 -2
- package/es/Tabs/Tabs.mjs.map +1 -1
- package/es/Tabs/atoms.mjs +2 -2
- package/es/Tabs/atoms.mjs.map +1 -1
- package/es/Tag/Tag.mjs +2 -2
- package/es/Tag/Tag.mjs.map +1 -1
- package/es/Text/Text.mjs +2 -2
- package/es/Text/Text.mjs.map +1 -1
- package/es/Text/style.d.mts +3 -3
- package/es/Text/style.mjs +3 -3
- package/es/Text/style.mjs.map +1 -1
- package/es/ToggleGroup/ToggleGroup.mjs +3 -3
- package/es/ToggleGroup/ToggleGroup.mjs.map +1 -1
- package/es/ToggleGroup/atoms.mjs +2 -2
- package/es/ToggleGroup/atoms.mjs.map +1 -1
- package/es/Tooltip/TooltipGroup.mjs +3 -3
- package/es/Tooltip/TooltipGroup.mjs.map +1 -1
- package/es/Tooltip/TooltipStandalone.mjs +3 -3
- package/es/Tooltip/TooltipStandalone.mjs.map +1 -1
- package/es/Tree/Tree.mjs +2 -2
- package/es/Tree/Tree.mjs.map +1 -1
- package/es/Tree/TreeNode.mjs +2 -2
- package/es/Tree/TreeNode.mjs.map +1 -1
- package/es/Video/Video.mjs +2 -2
- package/es/Video/Video.mjs.map +1 -1
- package/es/awesome/Features/FeatureItem.mjs +2 -2
- package/es/awesome/Features/FeatureItem.mjs.map +1 -1
- package/es/awesome/Hero/Hero.mjs +3 -3
- package/es/awesome/Hero/Hero.mjs.map +1 -1
- package/es/awesome/InstallBanner/InstallBanner.mjs +2 -2
- package/es/awesome/InstallBanner/InstallBanner.mjs.map +1 -1
- package/es/awesome/LandingHero/LandingHero.mjs +3 -3
- package/es/awesome/LandingHero/LandingHero.mjs.map +1 -1
- package/es/awesome/LogoMarquee/LogoMarquee.mjs +2 -2
- package/es/awesome/LogoMarquee/LogoMarquee.mjs.map +1 -1
- package/es/awesome/TypewriterEffect/TypewriterEffect.mjs +4 -4
- package/es/awesome/TypewriterEffect/TypewriterEffect.mjs.map +1 -1
- package/es/awesome/landingActions.mjs +2 -2
- package/es/awesome/landingActions.mjs.map +1 -1
- package/es/chat/ChatItem/ChatItem.mjs +2 -2
- package/es/chat/ChatItem/ChatItem.mjs.map +1 -1
- package/es/chat/EditableMessage/EditableMessage.mjs +3 -3
- package/es/chat/EditableMessage/EditableMessage.mjs.map +1 -1
- package/es/chat/EditableMessageList/EditableMessageList.mjs +1 -1
- package/es/chat/MessageInput/MessageInput.mjs +3 -3
- package/es/chat/MessageInput/MessageInput.mjs.map +1 -1
- package/es/dashboard/AuthLayout/AuthLayout.mjs +8 -4
- package/es/dashboard/AuthLayout/AuthLayout.mjs.map +1 -1
- package/es/dashboard/AuthLayout/style.mjs +14 -3
- package/es/dashboard/AuthLayout/style.mjs.map +1 -1
- package/es/dashboard/AuthTools/AuthLocaleSwitch.mjs +2 -2
- package/es/dashboard/AuthTools/AuthLocaleSwitch.mjs.map +1 -1
- package/es/dashboard/AuthTools/AuthThemeSwitch.mjs +2 -2
- package/es/dashboard/AuthTools/AuthThemeSwitch.mjs.map +1 -1
- package/es/dashboard/ConsoleNav/ConsoleNav.mjs +3 -3
- package/es/dashboard/ConsoleNav/ConsoleNav.mjs.map +1 -1
- package/es/dashboard/ConsoleNav/style.mjs +2 -2
- package/es/dashboard/ConsoleNav/style.mjs.map +1 -1
- package/es/dashboard/ConsoleShell/style.mjs +1 -1
- package/es/dashboard/ConsoleShell/style.mjs.map +1 -1
- package/es/dashboard/FilterSidebar/FilterSidebar.mjs +1 -1
- package/es/dashboard/FilterSidebar/style.mjs +2 -2
- package/es/dashboard/FilterSidebar/style.mjs.map +1 -1
- package/es/dashboard/FilterStrip/style.mjs +1 -1
- package/es/dashboard/FilterStrip/style.mjs.map +1 -1
- package/es/dashboard/MetricStrip/MetricCell.mjs +25 -14
- package/es/dashboard/MetricStrip/MetricCell.mjs.map +1 -1
- package/es/dashboard/MetricStrip/style.mjs +14 -1
- package/es/dashboard/MetricStrip/style.mjs.map +1 -1
- package/es/dashboard/MetricStrip/type.d.mts +2 -0
- package/es/dashboard/PageSkeleton/style.mjs +2 -1
- package/es/dashboard/PageSkeleton/style.mjs.map +1 -1
- package/es/dashboard/StatCard/StatCard.d.mts +1 -1
- package/es/dashboard/StatCard/StatCard.mjs +2 -1
- package/es/dashboard/StatCard/StatCard.mjs.map +1 -1
- package/es/dashboard/StatCard/type.d.mts +2 -0
- package/es/dashboard/Surface/Surface.mjs +3 -4
- package/es/dashboard/Surface/Surface.mjs.map +1 -1
- package/es/dashboard/Surface/link.mjs +1 -1
- package/es/dashboard/Surface/link.mjs.map +1 -1
- package/es/dashboard/Surface/style.mjs +15 -14
- package/es/dashboard/Surface/style.mjs.map +1 -1
- package/es/dashboard/index.mjs +2 -2
- package/es/eslint/noBaseUiSubpath.mjs +2 -1
- package/es/eslint/noBaseUiSubpath.mjs.map +1 -1
- package/es/i18n/resources/en/colorPicker.d.mts +5 -0
- package/es/i18n/resources/en/colorPicker.mjs +5 -0
- package/es/i18n/resources/en/colorPicker.mjs.map +1 -1
- package/es/i18n/resources/en/datePicker.d.mts +54 -0
- package/es/i18n/resources/en/datePicker.mjs +55 -1
- package/es/i18n/resources/en/datePicker.mjs.map +1 -1
- package/es/i18n/resources/en/index.d.mts +4 -3
- package/es/i18n/resources/en/index.mjs +3 -1
- package/es/i18n/resources/en/index.mjs.map +1 -1
- package/es/i18n/resources/en/table.d.mts +23 -0
- package/es/i18n/resources/en/table.mjs +24 -0
- package/es/i18n/resources/en/table.mjs.map +1 -0
- package/es/i18n/resources/zhCn/colorPicker.d.mts +5 -0
- package/es/i18n/resources/zhCn/colorPicker.mjs +5 -0
- package/es/i18n/resources/zhCn/colorPicker.mjs.map +1 -1
- package/es/i18n/resources/zhCn/datePicker.d.mts +54 -0
- package/es/i18n/resources/zhCn/datePicker.mjs +55 -1
- package/es/i18n/resources/zhCn/datePicker.mjs.map +1 -1
- package/es/i18n/resources/zhCn/index.d.mts +4 -3
- package/es/i18n/resources/zhCn/index.mjs +4 -2
- package/es/i18n/resources/zhCn/index.mjs.map +1 -1
- package/es/i18n/resources/zhCn/table.d.mts +23 -0
- package/es/i18n/resources/zhCn/table.mjs +24 -0
- package/es/i18n/resources/zhCn/table.mjs.map +1 -0
- package/es/i18n/types.d.mts +3 -2
- package/es/index.d.mts +15 -6
- package/es/index.mjs +12 -6
- package/es/internal/overflow/OverflowList.mjs +71 -0
- package/es/internal/overflow/OverflowList.mjs.map +1 -0
- package/es/mdx/Callout/index.mjs +2 -2
- package/es/mdx/Callout/index.mjs.map +1 -1
- package/es/mdx/Cards/Card.mjs +2 -2
- package/es/mdx/Cards/Card.mjs.map +1 -1
- package/es/mdx/Cards/index.mjs +2 -2
- package/es/mdx/Cards/index.mjs.map +1 -1
- package/es/mdx/Mdx/index.mjs +2 -2
- package/es/mdx/Mdx/index.mjs.map +1 -1
- package/es/mdx/Steps/index.mjs +2 -2
- package/es/mdx/Steps/index.mjs.map +1 -1
- package/es/mdx/mdxComponents/Pre.mjs +5 -5
- package/es/mdx/mdxComponents/Pre.mjs.map +1 -1
- package/es/storybook/StoryBook/style.mjs +2 -0
- package/es/storybook/StoryBook/style.mjs.map +1 -1
- package/es/style.css +2966 -957
- package/es/styles/stylex/props.mjs +2 -2
- package/es/styles/stylex/props.mjs.map +1 -1
- package/es/styles/theme/themeCss.mjs +15 -0
- package/es/styles/theme/themeCss.mjs.map +1 -1
- package/es/theme.css +8 -0
- package/package.json +6 -1
- package/es/DatePicker/CalendarPanel.mjs +0 -189
- package/es/DatePicker/CalendarPanel.mjs.map +0 -1
- package/es/DatePicker/PickerShell.mjs +0 -43
- package/es/DatePicker/PickerShell.mjs.map +0 -1
- package/es/DatePicker/calendar.d.mts +0 -4
- package/es/DatePicker/calendar.mjs +0 -46
- package/es/DatePicker/calendar.mjs.map +0 -1
- package/es/Table/FilterMenu.mjs +0 -45
- package/es/Table/FilterMenu.mjs.map +0 -1
- package/es/Table/TableBody.mjs +0 -67
- package/es/Table/TableBody.mjs.map +0 -1
- package/es/Table/TableHead.mjs +0 -58
- package/es/Table/TableHead.mjs.map +0 -1
- package/es/Table/features.mjs +0 -12
- package/es/Table/features.mjs.map +0 -1
- package/es/Table/fixedOffsets.mjs +0 -29
- package/es/Table/fixedOffsets.mjs.map +0 -1
- package/es/Table/marker.stylex.mjs +0 -9
- package/es/Table/marker.stylex.mjs.map +0 -1
- package/es/Table/toColumnDefs.mjs +0 -26
- package/es/Table/toColumnDefs.mjs.map +0 -1
- package/es/Table/useTableState.mjs +0 -99
- package/es/Table/useTableState.mjs.map +0 -1
|
@@ -0,0 +1,302 @@
|
|
|
1
|
+
import { useEventCallback } from "../../hooks/useEventCallback.mjs";
|
|
2
|
+
import { SELECTION_ALL, SELECTION_INVERT, SELECTION_NONE, conductCheck, convertDataToEntities, flattenData, selectRange } from "./selectionUtils.mjs";
|
|
3
|
+
import { useCallback, useEffect, useMemo, useRef, useState } from "react";
|
|
4
|
+
//#region src/Table/pipeline/useSelection.ts
|
|
5
|
+
const EMPTY_KEYS = [];
|
|
6
|
+
const shallowEqual = (a, b) => {
|
|
7
|
+
if (a === b) return true;
|
|
8
|
+
if (!a || !b) return false;
|
|
9
|
+
const keysA = Object.keys(a);
|
|
10
|
+
if (keysA.length !== Object.keys(b).length) return false;
|
|
11
|
+
return keysA.every((key) => Object.is(a[key], b[key]));
|
|
12
|
+
};
|
|
13
|
+
const useStableCheckboxProps = (flattedData, getRowKey, getCheckboxProps) => {
|
|
14
|
+
const previous = useRef(/* @__PURE__ */ new Map());
|
|
15
|
+
return useMemo(() => {
|
|
16
|
+
const next = /* @__PURE__ */ new Map();
|
|
17
|
+
flattedData.forEach((record, index) => {
|
|
18
|
+
next.set(getRowKey(record, index), getCheckboxProps?.(record) || {});
|
|
19
|
+
});
|
|
20
|
+
const prev = previous.current;
|
|
21
|
+
if (prev.size === next.size && [...next].every(([key, props]) => prev.has(key) && shallowEqual(prev.get(key), props))) return prev;
|
|
22
|
+
previous.current = next;
|
|
23
|
+
return next;
|
|
24
|
+
}, [
|
|
25
|
+
flattedData,
|
|
26
|
+
getRowKey,
|
|
27
|
+
getCheckboxProps
|
|
28
|
+
]);
|
|
29
|
+
};
|
|
30
|
+
const useSelection = (config, rowSelection) => {
|
|
31
|
+
const { checkStrictly = true, defaultSelectedRowKeys, getCheckboxProps, hideSelectAll, onChange: onSelectionChange, onSelect, onSelectAll, onSelectInvert, onSelectMultiple, onSelectNone, preserveSelectedRowKeys, selectedRowKeys, selections, type: selectionType = "checkbox" } = rowSelection || {};
|
|
32
|
+
const { childrenColumnName, data, getRecordByKey, getRowKey, locale, pageData } = config;
|
|
33
|
+
const [innerKeys, setInnerKeys] = useState(defaultSelectedRowKeys || EMPTY_KEYS);
|
|
34
|
+
const mergedKeys = selectedRowKeys ?? innerKeys;
|
|
35
|
+
const prevIndexRef = useRef(null);
|
|
36
|
+
const preserveRecordsRef = useRef(/* @__PURE__ */ new Map());
|
|
37
|
+
const updatePreserveRecordsCache = useCallback((keys) => {
|
|
38
|
+
if (!preserveSelectedRowKeys) return;
|
|
39
|
+
const next = /* @__PURE__ */ new Map();
|
|
40
|
+
keys.forEach((key) => {
|
|
41
|
+
let record = getRecordByKey(key);
|
|
42
|
+
if (record === void 0 && preserveRecordsRef.current.has(key)) record = preserveRecordsRef.current.get(key);
|
|
43
|
+
next.set(key, record);
|
|
44
|
+
});
|
|
45
|
+
preserveRecordsRef.current = next;
|
|
46
|
+
}, [getRecordByKey, preserveSelectedRowKeys]);
|
|
47
|
+
useEffect(() => {
|
|
48
|
+
updatePreserveRecordsCache(mergedKeys);
|
|
49
|
+
}, [mergedKeys, updatePreserveRecordsCache]);
|
|
50
|
+
const flattedData = useMemo(() => flattenData(childrenColumnName, pageData), [childrenColumnName, pageData]);
|
|
51
|
+
const keyEntities = useMemo(() => {
|
|
52
|
+
if (checkStrictly) return null;
|
|
53
|
+
let convertData = data;
|
|
54
|
+
if (preserveSelectedRowKeys) {
|
|
55
|
+
const keySet = new Set(flattedData.map((record) => getRowKey(record)));
|
|
56
|
+
const preserved = [...preserveRecordsRef.current].filter(([key, record]) => !keySet.has(key) && record !== void 0).map(([, record]) => record);
|
|
57
|
+
convertData = [...convertData, ...preserved];
|
|
58
|
+
}
|
|
59
|
+
return convertDataToEntities(convertData, getRowKey, childrenColumnName);
|
|
60
|
+
}, [
|
|
61
|
+
data,
|
|
62
|
+
getRowKey,
|
|
63
|
+
checkStrictly,
|
|
64
|
+
childrenColumnName,
|
|
65
|
+
preserveSelectedRowKeys,
|
|
66
|
+
flattedData
|
|
67
|
+
]);
|
|
68
|
+
const checkboxPropsMap = useStableCheckboxProps(flattedData, getRowKey, getCheckboxProps);
|
|
69
|
+
const isCheckboxDisabled = useCallback((record) => {
|
|
70
|
+
const key = getRowKey(record);
|
|
71
|
+
const props = checkboxPropsMap.has(key) ? checkboxPropsMap.get(key) : getCheckboxProps?.(record);
|
|
72
|
+
return Boolean(props?.disabled);
|
|
73
|
+
}, [
|
|
74
|
+
checkboxPropsMap,
|
|
75
|
+
getRowKey,
|
|
76
|
+
getCheckboxProps
|
|
77
|
+
]);
|
|
78
|
+
const [derivedSelectedKeys, derivedHalfSelectedKeys] = useMemo(() => {
|
|
79
|
+
if (checkStrictly || !keyEntities) return [mergedKeys, []];
|
|
80
|
+
const { checkedKeys, halfCheckedKeys } = conductCheck(mergedKeys, true, keyEntities, isCheckboxDisabled);
|
|
81
|
+
return [checkedKeys, halfCheckedKeys];
|
|
82
|
+
}, [
|
|
83
|
+
mergedKeys,
|
|
84
|
+
checkStrictly,
|
|
85
|
+
keyEntities,
|
|
86
|
+
isCheckboxDisabled
|
|
87
|
+
]);
|
|
88
|
+
const selectedKeySet = useMemo(() => new Set(selectionType === "radio" ? derivedSelectedKeys.slice(0, 1) : derivedSelectedKeys), [derivedSelectedKeys, selectionType]);
|
|
89
|
+
const halfSelectedKeySet = useMemo(() => new Set(selectionType === "radio" ? [] : derivedHalfSelectedKeys), [derivedHalfSelectedKeys, selectionType]);
|
|
90
|
+
const enabled = Boolean(rowSelection);
|
|
91
|
+
const [prevEnabled, setPrevEnabled] = useState(enabled);
|
|
92
|
+
if (prevEnabled !== enabled) {
|
|
93
|
+
setPrevEnabled(enabled);
|
|
94
|
+
if (!enabled) setInnerKeys(EMPTY_KEYS);
|
|
95
|
+
}
|
|
96
|
+
const setSelectedKeys = (keys, method) => {
|
|
97
|
+
let availableKeys;
|
|
98
|
+
let records;
|
|
99
|
+
updatePreserveRecordsCache(keys);
|
|
100
|
+
if (preserveSelectedRowKeys) {
|
|
101
|
+
availableKeys = keys;
|
|
102
|
+
records = keys.map((key) => preserveRecordsRef.current.get(key));
|
|
103
|
+
} else {
|
|
104
|
+
availableKeys = [];
|
|
105
|
+
records = [];
|
|
106
|
+
keys.forEach((key) => {
|
|
107
|
+
const record = getRecordByKey(key);
|
|
108
|
+
if (record !== void 0) {
|
|
109
|
+
availableKeys.push(key);
|
|
110
|
+
records.push(record);
|
|
111
|
+
}
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
setInnerKeys(availableKeys);
|
|
115
|
+
onSelectionChange?.(availableKeys, records, { type: method });
|
|
116
|
+
};
|
|
117
|
+
const triggerSingleSelection = (key, selected, keys, event) => {
|
|
118
|
+
if (onSelect) {
|
|
119
|
+
const rows = keys.map((item) => getRecordByKey(item));
|
|
120
|
+
onSelect(getRecordByKey(key), selected, rows, event);
|
|
121
|
+
}
|
|
122
|
+
setSelectedKeys(keys, "single");
|
|
123
|
+
};
|
|
124
|
+
const recordKeys = useMemo(() => {
|
|
125
|
+
const keys = [];
|
|
126
|
+
flattedData.forEach((record, index) => {
|
|
127
|
+
const key = getRowKey(record, index);
|
|
128
|
+
if (!checkboxPropsMap.get(key)?.disabled) keys.push(key);
|
|
129
|
+
});
|
|
130
|
+
return keys;
|
|
131
|
+
}, [
|
|
132
|
+
flattedData,
|
|
133
|
+
getRowKey,
|
|
134
|
+
checkboxPropsMap
|
|
135
|
+
]);
|
|
136
|
+
const summary = useMemo(() => {
|
|
137
|
+
const checkedCurrentAll = recordKeys.every((key) => selectedKeySet.has(key));
|
|
138
|
+
const checkedCurrentSome = recordKeys.some((key) => selectedKeySet.has(key));
|
|
139
|
+
const disabledItems = [];
|
|
140
|
+
flattedData.forEach((record, index) => {
|
|
141
|
+
const key = getRowKey(record, index);
|
|
142
|
+
if (checkboxPropsMap.get(key)?.disabled) disabledItems.push(selectedKeySet.has(key));
|
|
143
|
+
});
|
|
144
|
+
const allDisabled = disabledItems.length > 0 && disabledItems.length === flattedData.length;
|
|
145
|
+
const allDisabledAndChecked = allDisabled && disabledItems.every(Boolean);
|
|
146
|
+
const allDisabledSomeChecked = allDisabled && disabledItems.some(Boolean);
|
|
147
|
+
return {
|
|
148
|
+
checked: allDisabled ? allDisabledAndChecked : flattedData.length > 0 && checkedCurrentAll,
|
|
149
|
+
disabled: flattedData.length === 0 || allDisabled,
|
|
150
|
+
indeterminate: allDisabled ? !allDisabledAndChecked && allDisabledSomeChecked : !checkedCurrentAll && checkedCurrentSome
|
|
151
|
+
};
|
|
152
|
+
}, [
|
|
153
|
+
recordKeys,
|
|
154
|
+
selectedKeySet,
|
|
155
|
+
flattedData,
|
|
156
|
+
getRowKey,
|
|
157
|
+
checkboxPropsMap
|
|
158
|
+
]);
|
|
159
|
+
const selectAll = useEventCallback(() => {
|
|
160
|
+
const keySet = new Set(selectedKeySet);
|
|
161
|
+
const checkedCurrentAll = recordKeys.every((key) => keySet.has(key));
|
|
162
|
+
const changeKeys = [];
|
|
163
|
+
if (checkedCurrentAll) recordKeys.forEach((key) => {
|
|
164
|
+
keySet.delete(key);
|
|
165
|
+
changeKeys.push(key);
|
|
166
|
+
});
|
|
167
|
+
else recordKeys.forEach((key) => {
|
|
168
|
+
if (!keySet.has(key)) {
|
|
169
|
+
keySet.add(key);
|
|
170
|
+
changeKeys.push(key);
|
|
171
|
+
}
|
|
172
|
+
});
|
|
173
|
+
const keys = [...keySet];
|
|
174
|
+
onSelectAll?.(!checkedCurrentAll, keys.map((key) => getRecordByKey(key)), changeKeys.map((key) => getRecordByKey(key)));
|
|
175
|
+
setSelectedKeys(keys, "all");
|
|
176
|
+
prevIndexRef.current = null;
|
|
177
|
+
});
|
|
178
|
+
const selectRadio = useEventCallback((key, event) => {
|
|
179
|
+
if (!selectedKeySet.has(key)) triggerSingleSelection(key, true, [key], event);
|
|
180
|
+
});
|
|
181
|
+
const toggleCheckbox = useEventCallback((key, checked, nativeEvent) => {
|
|
182
|
+
const keySet = new Set(selectedKeySet);
|
|
183
|
+
const shiftKey = Boolean(nativeEvent?.shiftKey);
|
|
184
|
+
const currentIndex = recordKeys.indexOf(key);
|
|
185
|
+
const isMultiple = selectedKeySet.size > 0 && recordKeys.some((item) => selectedKeySet.has(item));
|
|
186
|
+
if (shiftKey && checkStrictly && isMultiple) {
|
|
187
|
+
const { changedKeys, nextAnchor } = selectRange(prevIndexRef.current, currentIndex, recordKeys, keySet);
|
|
188
|
+
const keys = [...keySet];
|
|
189
|
+
onSelectMultiple?.(!checked, keys.map((item) => getRecordByKey(item)), changedKeys.map((item) => getRecordByKey(item)));
|
|
190
|
+
setSelectedKeys(keys, "multiple");
|
|
191
|
+
prevIndexRef.current = nextAnchor;
|
|
192
|
+
return;
|
|
193
|
+
}
|
|
194
|
+
if (checkStrictly || !keyEntities) {
|
|
195
|
+
const keys = checked ? derivedSelectedKeys.filter((item) => item !== key) : [...derivedSelectedKeys.filter((item) => item !== key), key];
|
|
196
|
+
triggerSingleSelection(key, !checked, keys, nativeEvent);
|
|
197
|
+
} else {
|
|
198
|
+
const { checkedKeys, halfCheckedKeys } = conductCheck([...derivedSelectedKeys, key], true, keyEntities, isCheckboxDisabled);
|
|
199
|
+
let nextKeys = checkedKeys;
|
|
200
|
+
if (checked) {
|
|
201
|
+
const tempKeySet = new Set(checkedKeys);
|
|
202
|
+
tempKeySet.delete(key);
|
|
203
|
+
nextKeys = conductCheck([...tempKeySet], {
|
|
204
|
+
checked: false,
|
|
205
|
+
halfCheckedKeys
|
|
206
|
+
}, keyEntities, isCheckboxDisabled).checkedKeys;
|
|
207
|
+
}
|
|
208
|
+
triggerSingleSelection(key, !checked, nextKeys, nativeEvent);
|
|
209
|
+
}
|
|
210
|
+
prevIndexRef.current = checked ? null : currentIndex;
|
|
211
|
+
});
|
|
212
|
+
const runPreset = useEventCallback((preset) => {
|
|
213
|
+
if (preset === "SELECT_ALL") {
|
|
214
|
+
const keys = [];
|
|
215
|
+
data.forEach((record, index) => {
|
|
216
|
+
const key = getRowKey(record, index);
|
|
217
|
+
if (!isCheckboxDisabled(record) || selectedKeySet.has(key)) keys.push(key);
|
|
218
|
+
});
|
|
219
|
+
setSelectedKeys(keys, "all");
|
|
220
|
+
} else if (preset === "SELECT_INVERT") {
|
|
221
|
+
const keySet = new Set(selectedKeySet);
|
|
222
|
+
pageData.forEach((record, index) => {
|
|
223
|
+
const key = getRowKey(record, index);
|
|
224
|
+
if (checkboxPropsMap.get(key)?.disabled) return;
|
|
225
|
+
if (keySet.has(key)) keySet.delete(key);
|
|
226
|
+
else keySet.add(key);
|
|
227
|
+
});
|
|
228
|
+
const keys = [...keySet];
|
|
229
|
+
onSelectInvert?.(keys);
|
|
230
|
+
setSelectedKeys(keys, "invert");
|
|
231
|
+
} else if (preset === "SELECT_NONE") {
|
|
232
|
+
onSelectNone?.();
|
|
233
|
+
setSelectedKeys([...selectedKeySet].filter((key) => checkboxPropsMap.get(key)?.disabled), "none");
|
|
234
|
+
}
|
|
235
|
+
prevIndexRef.current = null;
|
|
236
|
+
});
|
|
237
|
+
const runCustom = useEventCallback((item) => {
|
|
238
|
+
item.onSelect?.(recordKeys);
|
|
239
|
+
prevIndexRef.current = null;
|
|
240
|
+
});
|
|
241
|
+
const mergedSelections = useMemo(() => {
|
|
242
|
+
if (!selections || hideSelectAll || selectionType === "radio") return null;
|
|
243
|
+
return (selections === true ? [
|
|
244
|
+
SELECTION_ALL,
|
|
245
|
+
SELECTION_INVERT,
|
|
246
|
+
SELECTION_NONE
|
|
247
|
+
] : selections).map((selection, index) => {
|
|
248
|
+
if (selection === "SELECT_ALL") return {
|
|
249
|
+
key: "all",
|
|
250
|
+
onSelect: () => runPreset(SELECTION_ALL),
|
|
251
|
+
text: locale.selectionAll
|
|
252
|
+
};
|
|
253
|
+
if (selection === "SELECT_INVERT") return {
|
|
254
|
+
key: "invert",
|
|
255
|
+
onSelect: () => runPreset(SELECTION_INVERT),
|
|
256
|
+
text: locale.selectInvert
|
|
257
|
+
};
|
|
258
|
+
if (selection === "SELECT_NONE") return {
|
|
259
|
+
key: "none",
|
|
260
|
+
onSelect: () => runPreset(SELECTION_NONE),
|
|
261
|
+
text: locale.selectNone
|
|
262
|
+
};
|
|
263
|
+
return {
|
|
264
|
+
key: selection.key ?? index,
|
|
265
|
+
onSelect: () => runCustom(selection),
|
|
266
|
+
text: selection.text
|
|
267
|
+
};
|
|
268
|
+
});
|
|
269
|
+
}, [
|
|
270
|
+
selections,
|
|
271
|
+
hideSelectAll,
|
|
272
|
+
selectionType,
|
|
273
|
+
runPreset,
|
|
274
|
+
runCustom,
|
|
275
|
+
locale.selectionAll,
|
|
276
|
+
locale.selectInvert,
|
|
277
|
+
locale.selectNone
|
|
278
|
+
]);
|
|
279
|
+
const clear = useEventCallback(() => setSelectedKeys(EMPTY_KEYS, "none"));
|
|
280
|
+
return {
|
|
281
|
+
actions: useMemo(() => ({
|
|
282
|
+
clear,
|
|
283
|
+
selectAll,
|
|
284
|
+
selectRadio,
|
|
285
|
+
toggleCheckbox
|
|
286
|
+
}), [
|
|
287
|
+
clear,
|
|
288
|
+
selectAll,
|
|
289
|
+
selectRadio,
|
|
290
|
+
toggleCheckbox
|
|
291
|
+
]),
|
|
292
|
+
checkboxPropsMap,
|
|
293
|
+
halfSelectedKeySet,
|
|
294
|
+
mergedSelections,
|
|
295
|
+
selectedKeySet,
|
|
296
|
+
summary
|
|
297
|
+
};
|
|
298
|
+
};
|
|
299
|
+
//#endregion
|
|
300
|
+
export { useSelection };
|
|
301
|
+
|
|
302
|
+
//# sourceMappingURL=useSelection.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useSelection.mjs","names":[],"sources":["../../../src/Table/pipeline/useSelection.ts"],"sourcesContent":["import { type Key, useCallback, useEffect, useMemo, useRef, useState } from 'react';\n\nimport { useEventCallback } from '@/hooks/useEventCallback';\n\nimport type {\n TableLocale,\n TableRowSelection,\n TableRowSelectionCheckboxProps,\n TableRowSelectMethod,\n TableSelectionItem,\n} from '../type';\nimport {\n conductCheck,\n convertDataToEntities,\n flattenData,\n SELECTION_ALL,\n SELECTION_INVERT,\n SELECTION_NONE,\n type SelectionEntities,\n selectRange,\n} from './selectionUtils';\n\nconst EMPTY_KEYS: Key[] = [];\n\nexport interface SelectionConfig<T> {\n childrenColumnName: string;\n data: readonly T[];\n expandType: 'nest' | 'row' | null;\n getRecordByKey: (key: Key) => T | undefined;\n getRowKey: (record: T, index?: number) => Key;\n locale: TableLocale;\n pageData: readonly T[];\n}\n\nexport interface SelectionSummaryState {\n checked: boolean;\n disabled: boolean;\n indeterminate: boolean;\n}\n\nexport interface MergedSelectionItem {\n key: Key;\n onSelect: () => void;\n text: TableSelectionItem['text'];\n}\n\nexport interface SelectionActions {\n clear: () => void;\n selectAll: () => void;\n selectRadio: (key: Key, event: Event) => void;\n toggleCheckbox: (key: Key, checked: boolean, event: Event | undefined) => void;\n}\n\nconst shallowEqual = (a: object | undefined, b: object | undefined) => {\n if (a === b) return true;\n if (!a || !b) return false;\n const keysA = Object.keys(a);\n if (keysA.length !== Object.keys(b).length) return false;\n return keysA.every((key) => Object.is((a as any)[key], (b as any)[key]));\n};\n\nconst useStableCheckboxProps = <T>(\n flattedData: readonly T[],\n getRowKey: (record: T, index?: number) => Key,\n getCheckboxProps: TableRowSelection<T>['getCheckboxProps'],\n) => {\n const previous = useRef<Map<Key, TableRowSelectionCheckboxProps>>(new Map());\n return useMemo(() => {\n const next = new Map<Key, TableRowSelectionCheckboxProps>();\n flattedData.forEach((record, index) => {\n next.set(getRowKey(record, index), getCheckboxProps?.(record) || {});\n });\n const prev = previous.current;\n const same =\n prev.size === next.size &&\n [...next].every(([key, props]) => prev.has(key) && shallowEqual(prev.get(key), props));\n if (same) return prev;\n previous.current = next;\n return next;\n }, [flattedData, getRowKey, getCheckboxProps]);\n};\n\nexport const useSelection = <T>(\n config: SelectionConfig<T>,\n rowSelection: TableRowSelection<T> | undefined,\n) => {\n const {\n checkStrictly = true,\n defaultSelectedRowKeys,\n getCheckboxProps,\n hideSelectAll,\n onChange: onSelectionChange,\n onSelect,\n onSelectAll,\n onSelectInvert,\n onSelectMultiple,\n onSelectNone,\n preserveSelectedRowKeys,\n selectedRowKeys,\n selections,\n type: selectionType = 'checkbox',\n } = rowSelection || {};\n const { childrenColumnName, data, getRecordByKey, getRowKey, locale, pageData } = config;\n\n const [innerKeys, setInnerKeys] = useState<Key[]>(defaultSelectedRowKeys || EMPTY_KEYS);\n const mergedKeys = selectedRowKeys ?? innerKeys;\n\n const prevIndexRef = useRef<number | null>(null);\n\n const preserveRecordsRef = useRef(new Map<Key, T | undefined>());\n const updatePreserveRecordsCache = useCallback(\n (keys: readonly Key[]) => {\n if (!preserveSelectedRowKeys) return;\n const next = new Map<Key, T | undefined>();\n keys.forEach((key) => {\n let record = getRecordByKey(key);\n if (record === undefined && preserveRecordsRef.current.has(key)) {\n record = preserveRecordsRef.current.get(key);\n }\n next.set(key, record);\n });\n preserveRecordsRef.current = next;\n },\n [getRecordByKey, preserveSelectedRowKeys],\n );\n\n useEffect(() => {\n updatePreserveRecordsCache(mergedKeys);\n }, [mergedKeys, updatePreserveRecordsCache]);\n\n const flattedData = useMemo(\n () => flattenData(childrenColumnName, pageData),\n [childrenColumnName, pageData],\n );\n\n const keyEntities = useMemo((): SelectionEntities<T> | null => {\n if (checkStrictly) return null;\n let convertData = data;\n if (preserveSelectedRowKeys) {\n // Records kept from other pages join the tree, unless they are on this page already.\n const keySet = new Set(flattedData.map((record) => getRowKey(record)));\n const preserved = [...preserveRecordsRef.current]\n .filter(([key, record]) => !keySet.has(key) && record !== undefined)\n .map(([, record]) => record as T);\n convertData = [...convertData, ...preserved];\n }\n return convertDataToEntities(convertData, getRowKey, childrenColumnName);\n }, [data, getRowKey, checkStrictly, childrenColumnName, preserveSelectedRowKeys, flattedData]);\n\n const checkboxPropsMap = useStableCheckboxProps(flattedData, getRowKey, getCheckboxProps);\n\n const isCheckboxDisabled = useCallback(\n (record: T) => {\n const key = getRowKey(record);\n const props = checkboxPropsMap.has(key)\n ? checkboxPropsMap.get(key)\n : getCheckboxProps?.(record);\n return Boolean(props?.disabled);\n },\n [checkboxPropsMap, getRowKey, getCheckboxProps],\n );\n\n const [derivedSelectedKeys, derivedHalfSelectedKeys] = useMemo((): [Key[], Key[]] => {\n if (checkStrictly || !keyEntities) return [mergedKeys, []];\n const { checkedKeys, halfCheckedKeys } = conductCheck(\n mergedKeys,\n true,\n keyEntities,\n isCheckboxDisabled,\n );\n return [checkedKeys, halfCheckedKeys];\n }, [mergedKeys, checkStrictly, keyEntities, isCheckboxDisabled]);\n\n const selectedKeySet = useMemo(\n () =>\n new Set(selectionType === 'radio' ? derivedSelectedKeys.slice(0, 1) : derivedSelectedKeys),\n [derivedSelectedKeys, selectionType],\n );\n const halfSelectedKeySet = useMemo(\n () => new Set(selectionType === 'radio' ? [] : derivedHalfSelectedKeys),\n [derivedHalfSelectedKeys, selectionType],\n );\n\n const enabled = Boolean(rowSelection);\n const [prevEnabled, setPrevEnabled] = useState(enabled);\n if (prevEnabled !== enabled) {\n setPrevEnabled(enabled);\n if (!enabled) setInnerKeys(EMPTY_KEYS);\n }\n\n const setSelectedKeys = (keys: Key[], method: TableRowSelectMethod) => {\n let availableKeys: Key[];\n let records: T[];\n updatePreserveRecordsCache(keys);\n if (preserveSelectedRowKeys) {\n availableKeys = keys;\n records = keys.map((key) => preserveRecordsRef.current.get(key) as T);\n } else {\n availableKeys = [];\n records = [];\n keys.forEach((key) => {\n const record = getRecordByKey(key);\n if (record !== undefined) {\n availableKeys.push(key);\n records.push(record);\n }\n });\n }\n setInnerKeys(availableKeys);\n onSelectionChange?.(availableKeys, records, { type: method });\n };\n\n const triggerSingleSelection = (key: Key, selected: boolean, keys: Key[], event: Event) => {\n if (onSelect) {\n const rows = keys.map((item) => getRecordByKey(item) as T);\n onSelect(getRecordByKey(key) as T, selected, rows, event);\n }\n setSelectedKeys(keys, 'single');\n };\n\n const recordKeys = useMemo(() => {\n const keys: Key[] = [];\n flattedData.forEach((record, index) => {\n const key = getRowKey(record, index);\n if (!checkboxPropsMap.get(key)?.disabled) keys.push(key);\n });\n return keys;\n }, [flattedData, getRowKey, checkboxPropsMap]);\n\n const summary = useMemo((): SelectionSummaryState => {\n const checkedCurrentAll = recordKeys.every((key) => selectedKeySet.has(key));\n const checkedCurrentSome = recordKeys.some((key) => selectedKeySet.has(key));\n const disabledItems: boolean[] = [];\n flattedData.forEach((record, index) => {\n const key = getRowKey(record, index);\n if (checkboxPropsMap.get(key)?.disabled) disabledItems.push(selectedKeySet.has(key));\n });\n const allDisabled = disabledItems.length > 0 && disabledItems.length === flattedData.length;\n const allDisabledAndChecked = allDisabled && disabledItems.every(Boolean);\n const allDisabledSomeChecked = allDisabled && disabledItems.some(Boolean);\n return {\n checked: allDisabled ? allDisabledAndChecked : flattedData.length > 0 && checkedCurrentAll,\n disabled: flattedData.length === 0 || allDisabled,\n indeterminate: allDisabled\n ? !allDisabledAndChecked && allDisabledSomeChecked\n : !checkedCurrentAll && checkedCurrentSome,\n };\n }, [recordKeys, selectedKeySet, flattedData, getRowKey, checkboxPropsMap]);\n\n const selectAll = useEventCallback(() => {\n const keySet = new Set(selectedKeySet);\n const checkedCurrentAll = recordKeys.every((key) => keySet.has(key));\n const changeKeys: Key[] = [];\n if (checkedCurrentAll) {\n recordKeys.forEach((key) => {\n keySet.delete(key);\n changeKeys.push(key);\n });\n } else {\n recordKeys.forEach((key) => {\n if (!keySet.has(key)) {\n keySet.add(key);\n changeKeys.push(key);\n }\n });\n }\n const keys = [...keySet];\n onSelectAll?.(\n !checkedCurrentAll,\n keys.map((key) => getRecordByKey(key) as T),\n changeKeys.map((key) => getRecordByKey(key) as T),\n );\n setSelectedKeys(keys, 'all');\n prevIndexRef.current = null;\n });\n\n const selectRadio = useEventCallback((key: Key, event: Event) => {\n if (!selectedKeySet.has(key)) triggerSingleSelection(key, true, [key], event);\n });\n\n const toggleCheckbox = useEventCallback(\n (key: Key, checked: boolean, nativeEvent: Event | undefined) => {\n const keySet = new Set(selectedKeySet);\n const shiftKey = Boolean((nativeEvent as MouseEvent | undefined)?.shiftKey);\n const currentIndex = recordKeys.indexOf(key);\n const isMultiple =\n selectedKeySet.size > 0 && recordKeys.some((item) => selectedKeySet.has(item));\n\n if (shiftKey && checkStrictly && isMultiple) {\n const { changedKeys, nextAnchor } = selectRange(\n prevIndexRef.current,\n currentIndex,\n recordKeys,\n keySet,\n );\n const keys = [...keySet];\n onSelectMultiple?.(\n !checked,\n keys.map((item) => getRecordByKey(item) as T),\n changedKeys.map((item) => getRecordByKey(item) as T),\n );\n setSelectedKeys(keys, 'multiple');\n prevIndexRef.current = nextAnchor;\n return;\n }\n\n if (checkStrictly || !keyEntities) {\n const keys = checked\n ? derivedSelectedKeys.filter((item) => item !== key)\n : [...derivedSelectedKeys.filter((item) => item !== key), key];\n triggerSingleSelection(key, !checked, keys, nativeEvent as Event);\n } else {\n const { checkedKeys, halfCheckedKeys } = conductCheck(\n [...derivedSelectedKeys, key],\n true,\n keyEntities,\n isCheckboxDisabled,\n );\n let nextKeys = checkedKeys;\n if (checked) {\n const tempKeySet = new Set(checkedKeys);\n tempKeySet.delete(key);\n nextKeys = conductCheck(\n [...tempKeySet],\n { checked: false, halfCheckedKeys },\n keyEntities,\n isCheckboxDisabled,\n ).checkedKeys;\n }\n triggerSingleSelection(key, !checked, nextKeys, nativeEvent as Event);\n }\n prevIndexRef.current = checked ? null : currentIndex;\n },\n );\n\n const runPreset = useEventCallback((preset: string) => {\n if (preset === SELECTION_ALL) {\n const keys: Key[] = [];\n data.forEach((record, index) => {\n const key = getRowKey(record, index);\n if (!isCheckboxDisabled(record) || selectedKeySet.has(key)) keys.push(key);\n });\n setSelectedKeys(keys, 'all');\n } else if (preset === SELECTION_INVERT) {\n const keySet = new Set(selectedKeySet);\n pageData.forEach((record, index) => {\n const key = getRowKey(record, index);\n if (checkboxPropsMap.get(key)?.disabled) return;\n if (keySet.has(key)) keySet.delete(key);\n else keySet.add(key);\n });\n const keys = [...keySet];\n onSelectInvert?.(keys);\n setSelectedKeys(keys, 'invert');\n } else if (preset === SELECTION_NONE) {\n onSelectNone?.();\n setSelectedKeys(\n [...selectedKeySet].filter((key) => checkboxPropsMap.get(key)?.disabled),\n 'none',\n );\n }\n prevIndexRef.current = null;\n });\n\n const runCustom = useEventCallback((item: TableSelectionItem) => {\n item.onSelect?.(recordKeys);\n prevIndexRef.current = null;\n });\n\n const mergedSelections = useMemo((): MergedSelectionItem[] | null => {\n if (!selections || hideSelectAll || selectionType === 'radio') return null;\n const list =\n selections === true ? [SELECTION_ALL, SELECTION_INVERT, SELECTION_NONE] : selections;\n return list.map((selection, index) => {\n if (selection === SELECTION_ALL) {\n return { key: 'all', onSelect: () => runPreset(SELECTION_ALL), text: locale.selectionAll };\n }\n if (selection === SELECTION_INVERT) {\n return {\n key: 'invert',\n onSelect: () => runPreset(SELECTION_INVERT),\n text: locale.selectInvert,\n };\n }\n if (selection === SELECTION_NONE) {\n return { key: 'none', onSelect: () => runPreset(SELECTION_NONE), text: locale.selectNone };\n }\n return {\n key: selection.key ?? index,\n onSelect: () => runCustom(selection),\n text: selection.text,\n };\n });\n }, [\n selections,\n hideSelectAll,\n selectionType,\n runPreset,\n runCustom,\n locale.selectionAll,\n locale.selectInvert,\n locale.selectNone,\n ]);\n\n const clear = useEventCallback(() => setSelectedKeys(EMPTY_KEYS, 'none'));\n\n const actions = useMemo(\n (): SelectionActions => ({ clear, selectAll, selectRadio, toggleCheckbox }),\n [clear, selectAll, selectRadio, toggleCheckbox],\n );\n\n return {\n actions,\n checkboxPropsMap,\n halfSelectedKeySet,\n mergedSelections,\n selectedKeySet,\n summary,\n };\n};\n"],"mappings":"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"}
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
import { getColumnId, getColumnPos, isColumnGroup } from "./columnUtils.mjs";
|
|
2
|
+
import { useMemo } from "react";
|
|
3
|
+
//#region src/Table/pipeline/useSorter.ts
|
|
4
|
+
const DEFAULT_SORT_DIRECTIONS = ["ascend", "descend"];
|
|
5
|
+
const isPlainObject = (value) => typeof value === "object" && value !== null && !Array.isArray(value);
|
|
6
|
+
const getMultiplePriority = (column) => {
|
|
7
|
+
const { sorter } = column;
|
|
8
|
+
return isPlainObject(sorter) && typeof sorter.multiple === "number" ? sorter.multiple : false;
|
|
9
|
+
};
|
|
10
|
+
const getSortFunction = (sorter) => {
|
|
11
|
+
if (typeof sorter === "function") return sorter;
|
|
12
|
+
if (isPlainObject(sorter) && typeof sorter.compare === "function") return sorter.compare;
|
|
13
|
+
return false;
|
|
14
|
+
};
|
|
15
|
+
const getNextSortOrder = (sortDirections, current) => {
|
|
16
|
+
if (!current) return sortDirections[0];
|
|
17
|
+
return sortDirections[sortDirections.indexOf(current) + 1];
|
|
18
|
+
};
|
|
19
|
+
const collectSortStates = (columns, init, parentPos) => {
|
|
20
|
+
const states = [];
|
|
21
|
+
const push = (column, pos, sortOrder) => states.push({
|
|
22
|
+
column,
|
|
23
|
+
key: getColumnId(column, pos),
|
|
24
|
+
multiplePriority: getMultiplePriority(column),
|
|
25
|
+
sortOrder
|
|
26
|
+
});
|
|
27
|
+
columns.forEach((column, index) => {
|
|
28
|
+
const pos = getColumnPos(index, parentPos);
|
|
29
|
+
if (isColumnGroup(column)) {
|
|
30
|
+
if ("sortOrder" in column) push(column, pos, column.sortOrder);
|
|
31
|
+
states.push(...collectSortStates(column.children, init, pos));
|
|
32
|
+
} else if (column.sorter) {
|
|
33
|
+
if ("sortOrder" in column) push(column, pos, column.sortOrder);
|
|
34
|
+
else if (init && column.defaultSortOrder) push(column, pos, column.defaultSortOrder);
|
|
35
|
+
}
|
|
36
|
+
});
|
|
37
|
+
return states;
|
|
38
|
+
};
|
|
39
|
+
const collectColumnMap = (columns, map = /* @__PURE__ */ new Map(), parentPos) => {
|
|
40
|
+
columns.forEach((column, index) => {
|
|
41
|
+
const pos = getColumnPos(index, parentPos);
|
|
42
|
+
map.set(getColumnId(column, pos), column);
|
|
43
|
+
if (isColumnGroup(column)) collectColumnMap(column.children, map, pos);
|
|
44
|
+
});
|
|
45
|
+
return map;
|
|
46
|
+
};
|
|
47
|
+
const mergeSortStates = (columns, innerStates) => {
|
|
48
|
+
const controlled = collectSortStates(columns, false);
|
|
49
|
+
if (controlled.length === 0) {
|
|
50
|
+
const columnMap = collectColumnMap(columns);
|
|
51
|
+
return innerStates.filter(({ key }) => columnMap.has(key)).map((state) => ({
|
|
52
|
+
...state,
|
|
53
|
+
column: columnMap.get(state.key)
|
|
54
|
+
}));
|
|
55
|
+
}
|
|
56
|
+
const result = [];
|
|
57
|
+
let valid = true;
|
|
58
|
+
let multipleMode = null;
|
|
59
|
+
const patch = (state) => result.push(valid ? state : {
|
|
60
|
+
...state,
|
|
61
|
+
sortOrder: null
|
|
62
|
+
});
|
|
63
|
+
for (const state of controlled) if (multipleMode === null) {
|
|
64
|
+
patch(state);
|
|
65
|
+
if (state.sortOrder) {
|
|
66
|
+
if (state.multiplePriority === false) valid = false;
|
|
67
|
+
else multipleMode = true;
|
|
68
|
+
}
|
|
69
|
+
} else if (multipleMode && state.multiplePriority !== false) patch(state);
|
|
70
|
+
else {
|
|
71
|
+
valid = false;
|
|
72
|
+
patch(state);
|
|
73
|
+
}
|
|
74
|
+
return result;
|
|
75
|
+
};
|
|
76
|
+
const getTriggeredSortStates = (current, next) => {
|
|
77
|
+
if (next.multiplePriority === false || !current.length || current[0].multiplePriority === false) return [next];
|
|
78
|
+
return [...current.filter(({ key }) => key !== next.key), next];
|
|
79
|
+
};
|
|
80
|
+
const stateToInfo = ({ column, key, sortOrder }) => ({
|
|
81
|
+
column,
|
|
82
|
+
columnKey: column.key ?? key,
|
|
83
|
+
field: column.dataIndex,
|
|
84
|
+
order: sortOrder ?? void 0
|
|
85
|
+
});
|
|
86
|
+
const getSorterInfo = (states) => {
|
|
87
|
+
const active = states.filter(({ sortOrder }) => sortOrder).map((state) => stateToInfo(state));
|
|
88
|
+
if (active.length === 0 && states.length) return {
|
|
89
|
+
...stateToInfo(states.at(-1)),
|
|
90
|
+
column: void 0,
|
|
91
|
+
columnKey: void 0,
|
|
92
|
+
field: void 0,
|
|
93
|
+
order: void 0
|
|
94
|
+
};
|
|
95
|
+
if (active.length <= 1) return active[0] ?? {};
|
|
96
|
+
const [first] = active;
|
|
97
|
+
for (const field of [
|
|
98
|
+
"column",
|
|
99
|
+
"columnKey",
|
|
100
|
+
"field",
|
|
101
|
+
"order"
|
|
102
|
+
]) Object.defineProperty(active, field, {
|
|
103
|
+
configurable: true,
|
|
104
|
+
enumerable: false,
|
|
105
|
+
value: first[field],
|
|
106
|
+
writable: true
|
|
107
|
+
});
|
|
108
|
+
return active;
|
|
109
|
+
};
|
|
110
|
+
const getSortTitleProps = (states) => {
|
|
111
|
+
const sortColumns = states.map(({ column, sortOrder }) => ({
|
|
112
|
+
column,
|
|
113
|
+
order: sortOrder
|
|
114
|
+
}));
|
|
115
|
+
return {
|
|
116
|
+
sortColumn: sortColumns[0]?.column,
|
|
117
|
+
sortColumns,
|
|
118
|
+
sortOrder: sortColumns[0]?.order
|
|
119
|
+
};
|
|
120
|
+
};
|
|
121
|
+
const sortData = (data, states, childrenColumnName = "children") => {
|
|
122
|
+
const running = states.filter(({ column, sortOrder }) => getSortFunction(column.sorter) && sortOrder).sort((a, b) => b.multiplePriority - a.multiplePriority);
|
|
123
|
+
if (running.length === 0) return [...data];
|
|
124
|
+
return [...data].sort((a, b) => {
|
|
125
|
+
for (const { column, sortOrder } of running) {
|
|
126
|
+
const result = getSortFunction(column.sorter)(a, b, sortOrder);
|
|
127
|
+
if (result !== 0) return sortOrder === "ascend" ? result : -result;
|
|
128
|
+
}
|
|
129
|
+
return 0;
|
|
130
|
+
}).map((record) => {
|
|
131
|
+
const children = record[childrenColumnName];
|
|
132
|
+
return Array.isArray(children) ? {
|
|
133
|
+
...record,
|
|
134
|
+
[childrenColumnName]: sortData(children, states, childrenColumnName)
|
|
135
|
+
} : record;
|
|
136
|
+
});
|
|
137
|
+
};
|
|
138
|
+
const useSorter = ({ childrenColumnName, data, sortStates }) => useMemo(() => sortData(data, sortStates, childrenColumnName), [
|
|
139
|
+
data,
|
|
140
|
+
sortStates,
|
|
141
|
+
childrenColumnName
|
|
142
|
+
]);
|
|
143
|
+
//#endregion
|
|
144
|
+
export { DEFAULT_SORT_DIRECTIONS, collectSortStates, getMultiplePriority, getNextSortOrder, getSortFunction, getSortTitleProps, getSorterInfo, getTriggeredSortStates, mergeSortStates, sortData, useSorter };
|
|
145
|
+
|
|
146
|
+
//# sourceMappingURL=useSorter.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useSorter.mjs","names":[],"sources":["../../../src/Table/pipeline/useSorter.ts"],"sourcesContent":["import { useMemo } from 'react';\n\nimport type {\n SortOrder,\n TableColumn,\n TableColumnTitleProps,\n TableColumnType,\n TableCompareFn,\n TableMultipleSorterResult,\n TableSorterResult,\n} from '../type';\nimport { getColumnId, getColumnPos, isColumnGroup } from './columnUtils';\n\nexport interface SortState<T = any> {\n column: TableColumn<T>;\n key: string;\n multiplePriority: number | false;\n sortOrder: SortOrder | undefined;\n}\n\nexport const DEFAULT_SORT_DIRECTIONS: SortOrder[] = ['ascend', 'descend'];\n\nconst isPlainObject = (value: unknown): value is Record<string, unknown> =>\n typeof value === 'object' && value !== null && !Array.isArray(value);\n\nexport const getMultiplePriority = (column: TableColumn<any>): number | false => {\n const { sorter } = column;\n return isPlainObject(sorter) && typeof sorter.multiple === 'number' ? sorter.multiple : false;\n};\n\nexport const getSortFunction = <T>(sorter: TableColumn<T>['sorter']): TableCompareFn<T> | false => {\n if (typeof sorter === 'function') return sorter;\n if (isPlainObject(sorter) && typeof sorter.compare === 'function') return sorter.compare;\n return false;\n};\n\nexport const getNextSortOrder = (\n sortDirections: readonly SortOrder[],\n current: SortOrder | undefined,\n): SortOrder | undefined => {\n if (!current) return sortDirections[0];\n return sortDirections[sortDirections.indexOf(current) + 1];\n};\n\nexport const collectSortStates = <T>(\n columns: readonly TableColumn<T>[],\n init: boolean,\n parentPos?: string,\n): SortState<T>[] => {\n const states: SortState<T>[] = [];\n const push = (column: TableColumn<T>, pos: string, sortOrder: SortOrder | undefined) =>\n states.push({\n column,\n key: getColumnId(column, pos),\n multiplePriority: getMultiplePriority(column),\n sortOrder,\n });\n\n columns.forEach((column, index) => {\n const pos = getColumnPos(index, parentPos);\n if (isColumnGroup(column)) {\n if ('sortOrder' in column) push(column, pos, column.sortOrder);\n states.push(...collectSortStates(column.children, init, pos));\n } else if (column.sorter) {\n if ('sortOrder' in column) push(column, pos, column.sortOrder);\n else if (init && column.defaultSortOrder) push(column, pos, column.defaultSortOrder);\n }\n });\n return states;\n};\n\nconst collectColumnMap = <T>(\n columns: readonly TableColumn<T>[],\n map = new Map<string, TableColumn<T>>(),\n parentPos?: string,\n) => {\n columns.forEach((column, index) => {\n const pos = getColumnPos(index, parentPos);\n map.set(getColumnId(column, pos), column);\n if (isColumnGroup(column)) collectColumnMap(column.children, map, pos);\n });\n return map;\n};\n\nexport const mergeSortStates = <T>(\n columns: readonly TableColumn<T>[],\n innerStates: readonly SortState<T>[],\n): SortState<T>[] => {\n const controlled = collectSortStates(columns, false);\n\n if (controlled.length === 0) {\n // Drop states of removed columns and pick up the latest column objects (fresh comparators).\n const columnMap = collectColumnMap(columns);\n return innerStates\n .filter(({ key }) => columnMap.has(key))\n .map((state) => ({ ...state, column: columnMap.get(state.key)! }));\n }\n\n const result: SortState<T>[] = [];\n let valid = true;\n let multipleMode: boolean | null = null;\n const patch = (state: SortState<T>) => result.push(valid ? state : { ...state, sortOrder: null });\n\n for (const state of controlled) {\n if (multipleMode === null) {\n patch(state);\n if (state.sortOrder) {\n if (state.multiplePriority === false) valid = false;\n else multipleMode = true;\n }\n } else if (multipleMode && state.multiplePriority !== false) {\n patch(state);\n } else {\n valid = false;\n patch(state);\n }\n }\n return result;\n};\n\nexport const getTriggeredSortStates = <T>(\n current: readonly SortState<T>[],\n next: SortState<T>,\n): SortState<T>[] => {\n if (next.multiplePriority === false || !current.length || current[0].multiplePriority === false) {\n return [next];\n }\n return [...current.filter(({ key }) => key !== next.key), next];\n};\n\nconst stateToInfo = <T>({ column, key, sortOrder }: SortState<T>): TableSorterResult<T> => ({\n column: column as TableColumnType<T>,\n // antd reports `column.key`; the id fallback keeps dataIndex-only columns identifiable.\n columnKey: column.key ?? key,\n field: (column as TableColumnType<T>).dataIndex as TableSorterResult<T>['field'],\n order: sortOrder ?? undefined,\n});\n\nexport const getSorterInfo = <T>(\n states: readonly SortState<T>[],\n): TableSorterResult<T> | TableMultipleSorterResult<T> => {\n const active = states.filter(({ sortOrder }) => sortOrder).map((state) => stateToInfo(state));\n\n // antd keeps the last cleared column's other fields when nothing is sorted.\n if (active.length === 0 && states.length) {\n return {\n ...stateToInfo(states.at(-1)!),\n column: undefined,\n columnKey: undefined,\n field: undefined,\n order: undefined,\n };\n }\n if (active.length <= 1) return active[0] ?? {};\n // Pre-5.61 code reads `sorter.order` / `sorter.columnKey` directly: expose the first entry's\n // fields on the array too. Non-enumerable, so iteration, spread and equality see a plain array.\n const [first] = active;\n for (const field of ['column', 'columnKey', 'field', 'order'] as const) {\n Object.defineProperty(active, field, {\n configurable: true,\n enumerable: false,\n value: first[field],\n writable: true,\n });\n }\n return active as TableMultipleSorterResult<T>;\n};\n\nexport const getSortTitleProps = <T>(\n states: readonly SortState<T>[],\n): Pick<TableColumnTitleProps<T>, 'sortColumn' | 'sortColumns' | 'sortOrder'> => {\n const sortColumns = states.map(({ column, sortOrder }) => ({ column, order: sortOrder }));\n return {\n sortColumn: sortColumns[0]?.column,\n sortColumns,\n sortOrder: sortColumns[0]?.order,\n };\n};\n\nexport const sortData = <T>(\n data: readonly T[],\n states: readonly SortState<T>[],\n childrenColumnName = 'children',\n): T[] => {\n const running = states\n .filter(({ column, sortOrder }) => getSortFunction(column.sorter) && sortOrder)\n .sort((a, b) => (b.multiplePriority as number) - (a.multiplePriority as number));\n if (running.length === 0) return [...data];\n\n return [...data]\n .sort((a, b) => {\n for (const { column, sortOrder } of running) {\n const result = (getSortFunction(column.sorter) as TableCompareFn<T>)(a, b, sortOrder);\n if (result !== 0) return sortOrder === 'ascend' ? result : -result;\n }\n return 0;\n })\n .map((record) => {\n const children = (record as Record<string, unknown>)[childrenColumnName];\n return Array.isArray(children)\n ? { ...record, [childrenColumnName]: sortData(children as T[], states, childrenColumnName) }\n : record;\n });\n};\n\nexport const useSorter = <T>({\n childrenColumnName,\n data,\n sortStates,\n}: {\n childrenColumnName?: string;\n data: readonly T[];\n sortStates: readonly SortState<T>[];\n}) =>\n useMemo(\n () => sortData(data, sortStates, childrenColumnName),\n [data, sortStates, childrenColumnName],\n );\n"],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { useTranslation } from "../../i18n/useTranslation.mjs";
|
|
2
|
+
import table_default from "../../i18n/resources/en/table.mjs";
|
|
3
|
+
import { useMemo } from "react";
|
|
4
|
+
//#region src/Table/pipeline/useTableLocale.ts
|
|
5
|
+
const useTableLocale = (locale) => {
|
|
6
|
+
const { t } = useTranslation(table_default);
|
|
7
|
+
return useMemo(() => ({
|
|
8
|
+
cancelSort: t("table.cancelSort"),
|
|
9
|
+
collapse: t("table.collapse"),
|
|
10
|
+
expand: t("table.expand"),
|
|
11
|
+
filterCheckAll: t("table.filterCheckAll"),
|
|
12
|
+
filterConfirm: t("table.filterConfirm"),
|
|
13
|
+
filterEmptyText: t("table.filterEmptyText"),
|
|
14
|
+
filterReset: t("table.filterReset"),
|
|
15
|
+
filterSearchPlaceholder: t("table.filterSearchPlaceholder"),
|
|
16
|
+
filterTitle: t("table.filterTitle"),
|
|
17
|
+
selectAll: t("table.selectAll"),
|
|
18
|
+
selectInvert: t("table.selectInvert"),
|
|
19
|
+
selectNone: t("table.selectNone"),
|
|
20
|
+
selectionAll: t("table.selectionAll"),
|
|
21
|
+
sortTitle: t("table.sortTitle"),
|
|
22
|
+
triggerAsc: t("table.triggerAsc"),
|
|
23
|
+
triggerDesc: t("table.triggerDesc"),
|
|
24
|
+
...locale
|
|
25
|
+
}), [t, locale]);
|
|
26
|
+
};
|
|
27
|
+
//#endregion
|
|
28
|
+
export { useTableLocale };
|
|
29
|
+
|
|
30
|
+
//# sourceMappingURL=useTableLocale.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useTableLocale.mjs","names":["tableMessages"],"sources":["../../../src/Table/pipeline/useTableLocale.ts"],"sourcesContent":["import { useMemo } from 'react';\n\nimport tableMessages from '@/i18n/resources/en/table';\nimport { useTranslation } from '@/i18n/useTranslation';\n\nimport type { TableLocale } from '../type';\n\nexport const useTableLocale = (locale: TableLocale | undefined) => {\n const { t } = useTranslation(tableMessages);\n return useMemo(\n (): TableLocale => ({\n cancelSort: t('table.cancelSort'),\n collapse: t('table.collapse'),\n expand: t('table.expand'),\n filterCheckAll: t('table.filterCheckAll'),\n filterConfirm: t('table.filterConfirm'),\n filterEmptyText: t('table.filterEmptyText'),\n filterReset: t('table.filterReset'),\n filterSearchPlaceholder: t('table.filterSearchPlaceholder'),\n filterTitle: t('table.filterTitle'),\n selectAll: t('table.selectAll'),\n selectInvert: t('table.selectInvert'),\n selectNone: t('table.selectNone'),\n selectionAll: t('table.selectionAll'),\n sortTitle: t('table.sortTitle'),\n triggerAsc: t('table.triggerAsc'),\n triggerDesc: t('table.triggerDesc'),\n ...locale,\n }),\n [t, locale],\n );\n};\n"],"mappings":";;;;AAOA,MAAa,kBAAkB,WAAoC;CACjE,MAAM,EAAE,MAAM,eAAeA,aAAa;CAC1C,OAAO,eACe;EAClB,YAAY,EAAE,kBAAkB;EAChC,UAAU,EAAE,gBAAgB;EAC5B,QAAQ,EAAE,cAAc;EACxB,gBAAgB,EAAE,sBAAsB;EACxC,eAAe,EAAE,qBAAqB;EACtC,iBAAiB,EAAE,uBAAuB;EAC1C,aAAa,EAAE,mBAAmB;EAClC,yBAAyB,EAAE,+BAA+B;EAC1D,aAAa,EAAE,mBAAmB;EAClC,WAAW,EAAE,iBAAiB;EAC9B,cAAc,EAAE,oBAAoB;EACpC,YAAY,EAAE,kBAAkB;EAChC,cAAc,EAAE,oBAAoB;EACpC,WAAW,EAAE,iBAAiB;EAC9B,YAAY,EAAE,kBAAkB;EAChC,aAAa,EAAE,mBAAmB;EAClC,GAAG;CACL,IACA,CAAC,GAAG,MAAM,CACZ;AACF"}
|