@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,24 @@
|
|
|
1
|
+
import { Children, Fragment, isValidElement } from "react";
|
|
2
|
+
//#region src/Table/pipeline/convertChildrenToColumns.ts
|
|
3
|
+
const toElements = (children) => {
|
|
4
|
+
const list = [];
|
|
5
|
+
Children.forEach(children, (child) => {
|
|
6
|
+
if (!isValidElement(child)) return;
|
|
7
|
+
if (child.type === Fragment) list.push(...toElements(child.props.children));
|
|
8
|
+
else list.push(child);
|
|
9
|
+
});
|
|
10
|
+
return list;
|
|
11
|
+
};
|
|
12
|
+
const convertChildrenToColumns = (children) => toElements(children).map((node) => {
|
|
13
|
+
const { children: nodeChildren, ...rest } = node.props;
|
|
14
|
+
const column = {
|
|
15
|
+
key: node.key ?? void 0,
|
|
16
|
+
...rest
|
|
17
|
+
};
|
|
18
|
+
if (nodeChildren) column.children = convertChildrenToColumns(nodeChildren);
|
|
19
|
+
return column;
|
|
20
|
+
});
|
|
21
|
+
//#endregion
|
|
22
|
+
export { convertChildrenToColumns };
|
|
23
|
+
|
|
24
|
+
//# sourceMappingURL=convertChildrenToColumns.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"convertChildrenToColumns.mjs","names":[],"sources":["../../../src/Table/pipeline/convertChildrenToColumns.ts"],"sourcesContent":["import { Children, Fragment, isValidElement, type ReactElement, type ReactNode } from 'react';\n\nimport type { TableColumn } from '../type';\n\nconst toElements = (children: ReactNode): ReactElement[] => {\n const list: ReactElement[] = [];\n Children.forEach(children, (child) => {\n if (!isValidElement(child)) return;\n if (child.type === Fragment) {\n list.push(...toElements((child.props as { children?: ReactNode }).children));\n } else {\n list.push(child);\n }\n });\n return list;\n};\n\nexport const convertChildrenToColumns = <T>(children: ReactNode): TableColumn<T>[] =>\n toElements(children).map((node) => {\n const { children: nodeChildren, ...rest } = node.props as Record<string, unknown>;\n const column: Record<string, unknown> = { key: node.key ?? undefined, ...rest };\n if (nodeChildren) column.children = convertChildrenToColumns<T>(nodeChildren as ReactNode);\n return column as unknown as TableColumn<T>;\n });\n"],"mappings":";;AAIA,MAAM,cAAc,aAAwC;CAC1D,MAAM,OAAuB,CAAC;CAC9B,SAAS,QAAQ,WAAW,UAAU;EACpC,IAAI,CAAC,eAAe,KAAK,GAAG;EAC5B,IAAI,MAAM,SAAS,UACjB,KAAK,KAAK,GAAG,WAAY,MAAM,MAAmC,QAAQ,CAAC;OAE3E,KAAK,KAAK,KAAK;CAEnB,CAAC;CACD,OAAO;AACT;AAEA,MAAa,4BAA+B,aAC1C,WAAW,QAAQ,CAAC,CAAC,KAAK,SAAS;CACjC,MAAM,EAAE,UAAU,cAAc,GAAG,SAAS,KAAK;CACjD,MAAM,SAAkC;EAAE,KAAK,KAAK,OAAO,KAAA;EAAW,GAAG;CAAK;CAC9E,IAAI,cAAc,OAAO,WAAW,yBAA4B,YAAyB;CACzF,OAAO;AACT,CAAC"}
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
import { SELECTION_COLUMN } from "./selectionUtils.mjs";
|
|
2
|
+
import { EXPAND_COLUMN, getColumnId, getColumnPos, isColumnGroup, isColumnVisibleAt } from "./columnUtils.mjs";
|
|
3
|
+
//#region src/Table/pipeline/normalizeColumns.ts
|
|
4
|
+
const toEngineFixed = (fixed) => {
|
|
5
|
+
if (fixed === true || fixed === "left" || fixed === "start") return "start";
|
|
6
|
+
if (fixed === "right" || fixed === "end") return "end";
|
|
7
|
+
};
|
|
8
|
+
const positionColumns = (columns, screens, parentPos) => columns.flatMap((column, index) => {
|
|
9
|
+
if (!column || typeof column !== "object") return [];
|
|
10
|
+
if (column === EXPAND_COLUMN || column === SELECTION_COLUMN) return [{
|
|
11
|
+
column,
|
|
12
|
+
id: ""
|
|
13
|
+
}];
|
|
14
|
+
const pos = getColumnPos(index, parentPos);
|
|
15
|
+
if (column.hidden || !isColumnVisibleAt(column, screens)) return [];
|
|
16
|
+
const item = {
|
|
17
|
+
column,
|
|
18
|
+
id: getColumnId(column, pos)
|
|
19
|
+
};
|
|
20
|
+
if (isColumnGroup(column) && column.children.length > 0) item.children = positionColumns(column.children, screens, pos);
|
|
21
|
+
return [item];
|
|
22
|
+
});
|
|
23
|
+
const isExpand = (item) => item.column === EXPAND_COLUMN;
|
|
24
|
+
const isSelection = (item) => item.column === SELECTION_COLUMN;
|
|
25
|
+
const insertExpandColumn = (base, { expandable, expandType, prefixCls, rowSelection }, width) => {
|
|
26
|
+
if (expandType !== "row") return base.filter((item) => !isExpand(item));
|
|
27
|
+
let index = expandable?.expandIconColumnIndex;
|
|
28
|
+
if (expandable?.showExpandColumn === false) index = -1;
|
|
29
|
+
else if ((index ?? 0) > 0 && rowSelection) index = index - 1;
|
|
30
|
+
let list = [...base];
|
|
31
|
+
if (!list.some(isExpand)) {
|
|
32
|
+
const expandIndex = index || 0;
|
|
33
|
+
const fixed = expandable?.fixed;
|
|
34
|
+
const insertAt = expandIndex === 0 && (fixed === "right" || fixed === "end") ? base.length : expandIndex;
|
|
35
|
+
if (insertAt >= 0) list.splice(insertAt, 0, {
|
|
36
|
+
column: EXPAND_COLUMN,
|
|
37
|
+
id: ""
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
const expandIndex = list.findIndex(isExpand);
|
|
41
|
+
list = list.filter((item, itemIndex) => !isExpand(item) || itemIndex === expandIndex);
|
|
42
|
+
if (expandIndex < 0) return list;
|
|
43
|
+
const fixed = expandable?.fixed ?? base[expandIndex]?.column.fixed;
|
|
44
|
+
list[expandIndex] = {
|
|
45
|
+
column: {
|
|
46
|
+
className: `${prefixCls}-row-expand-icon-cell`,
|
|
47
|
+
fixed: fixed ?? void 0,
|
|
48
|
+
key: "__expand_column",
|
|
49
|
+
title: expandable?.columnTitle,
|
|
50
|
+
width
|
|
51
|
+
},
|
|
52
|
+
id: "__expand_column"
|
|
53
|
+
};
|
|
54
|
+
return list;
|
|
55
|
+
};
|
|
56
|
+
const insertSelectionColumn = (list, { prefixCls, rowSelection }, width) => {
|
|
57
|
+
if (!rowSelection) return list.filter((item) => !isSelection(item));
|
|
58
|
+
let next = [...list];
|
|
59
|
+
if (!next.some(isSelection)) next = next.findIndex((item) => item.id === "__expand_column") === 0 ? [
|
|
60
|
+
next[0],
|
|
61
|
+
{
|
|
62
|
+
column: SELECTION_COLUMN,
|
|
63
|
+
id: ""
|
|
64
|
+
},
|
|
65
|
+
...next.slice(1)
|
|
66
|
+
] : [{
|
|
67
|
+
column: SELECTION_COLUMN,
|
|
68
|
+
id: ""
|
|
69
|
+
}, ...next];
|
|
70
|
+
const selectionIndex = next.findIndex(isSelection);
|
|
71
|
+
next = next.filter((item, index) => !isSelection(item) || index === selectionIndex);
|
|
72
|
+
const prev = next[selectionIndex - 1];
|
|
73
|
+
const after = next[selectionIndex + 1];
|
|
74
|
+
let fixed = rowSelection.fixed;
|
|
75
|
+
if (fixed === void 0) {
|
|
76
|
+
if (after?.column.fixed !== void 0) fixed = after.column.fixed;
|
|
77
|
+
else if (prev?.column.fixed !== void 0) fixed = prev.column.fixed;
|
|
78
|
+
}
|
|
79
|
+
if (fixed && prev?.id === "__expand_column" && prev.column.fixed == null) next[selectionIndex - 1] = {
|
|
80
|
+
...prev,
|
|
81
|
+
column: {
|
|
82
|
+
...prev.column,
|
|
83
|
+
fixed
|
|
84
|
+
}
|
|
85
|
+
};
|
|
86
|
+
next[selectionIndex] = {
|
|
87
|
+
column: {
|
|
88
|
+
align: rowSelection.align,
|
|
89
|
+
className: `${prefixCls}-selection-column`,
|
|
90
|
+
fixed,
|
|
91
|
+
key: "__selection_column",
|
|
92
|
+
onCell: rowSelection.onCell,
|
|
93
|
+
width
|
|
94
|
+
},
|
|
95
|
+
id: "__selection_column"
|
|
96
|
+
};
|
|
97
|
+
return next;
|
|
98
|
+
};
|
|
99
|
+
const toEngineColumns = (list, options, used) => list.map((item) => {
|
|
100
|
+
const { column } = item;
|
|
101
|
+
let key = item.id;
|
|
102
|
+
while (used.has(key)) key = `${key}_`;
|
|
103
|
+
used.add(key);
|
|
104
|
+
const kind = item.id === "__selection_column" ? "selection" : item.id === "__expand_column" ? "expand" : "data";
|
|
105
|
+
const { prefixCls, rowSelection } = options;
|
|
106
|
+
const colClassName = kind === "selection" ? [`${prefixCls}-selection-col`, rowSelection?.selections && rowSelection.type !== "radio" && `${prefixCls}-selection-col-with-dropdown`].filter(Boolean).join(" ") : kind === "expand" ? `${prefixCls}-expand-icon-col` : void 0;
|
|
107
|
+
const engine = {
|
|
108
|
+
fixed: toEngineFixed(column.fixed),
|
|
109
|
+
key,
|
|
110
|
+
source: {
|
|
111
|
+
colClassName,
|
|
112
|
+
column,
|
|
113
|
+
id: item.id,
|
|
114
|
+
kind
|
|
115
|
+
},
|
|
116
|
+
width: column.width
|
|
117
|
+
};
|
|
118
|
+
if ("colSpan" in column && column.colSpan !== void 0) engine.headerColSpan = column.colSpan;
|
|
119
|
+
if (item.children) engine.children = toEngineColumns(item.children, options, used);
|
|
120
|
+
return engine;
|
|
121
|
+
});
|
|
122
|
+
const PLACEHOLDER_COLUMN = {
|
|
123
|
+
key: "__placeholder_column",
|
|
124
|
+
source: {
|
|
125
|
+
column: { render: () => null },
|
|
126
|
+
id: "__placeholder_column",
|
|
127
|
+
kind: "placeholder"
|
|
128
|
+
}
|
|
129
|
+
};
|
|
130
|
+
const normalizeColumns = (columns, options) => {
|
|
131
|
+
const positioned = positionColumns(columns, options.screens);
|
|
132
|
+
const withExpand = insertExpandColumn(positioned, options, options.expandColumnWidth);
|
|
133
|
+
const withSelection = insertSelectionColumn(withExpand, options, options.selectionColumnWidth);
|
|
134
|
+
const result = toEngineColumns(withSelection, options, /* @__PURE__ */ new Set());
|
|
135
|
+
return result.length ? result : [PLACEHOLDER_COLUMN];
|
|
136
|
+
};
|
|
137
|
+
//#endregion
|
|
138
|
+
export { normalizeColumns, toEngineFixed };
|
|
139
|
+
|
|
140
|
+
//# sourceMappingURL=normalizeColumns.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"normalizeColumns.mjs","names":[],"sources":["../../../src/Table/pipeline/normalizeColumns.ts"],"sourcesContent":["import type { EngineColumn, EngineFixed } from '../engine/types';\nimport type {\n TableBreakpoint,\n TableColumn,\n TableColumnFixed,\n TableExpandableConfig,\n TableRowSelection,\n} from '../type';\nimport {\n EXPAND_COLUMN,\n getColumnId,\n getColumnPos,\n isColumnGroup,\n isColumnVisibleAt,\n} from './columnUtils';\nimport { SELECTION_COLUMN } from './selectionUtils';\nimport type { ExpandType } from './useExpandable';\n\nexport type ColumnKind = 'data' | 'expand' | 'placeholder' | 'selection';\n\nexport interface ColumnSource<T> {\n colClassName?: string;\n column: TableColumn<T>;\n id: string;\n kind: ColumnKind;\n}\n\nexport type NormalizedColumn<T> = EngineColumn<ColumnSource<T>>;\n\nexport const toEngineFixed = (\n fixed: TableColumnFixed | null | undefined,\n): EngineFixed | undefined => {\n if (fixed === true || fixed === 'left' || fixed === 'start') return 'start';\n if (fixed === 'right' || fixed === 'end') return 'end';\n return undefined;\n};\n\ninterface PositionedColumn<T> {\n children?: PositionedColumn<T>[];\n column: TableColumn<T>;\n id: string;\n}\n\nconst positionColumns = <T>(\n columns: readonly TableColumn<T>[],\n screens: ReadonlySet<TableBreakpoint> | null,\n parentPos?: string,\n): PositionedColumn<T>[] =>\n columns.flatMap((column, index) => {\n if (!column || typeof column !== 'object') return [];\n if (column === EXPAND_COLUMN || column === SELECTION_COLUMN) return [{ column, id: '' }];\n const pos = getColumnPos(index, parentPos);\n if (column.hidden || !isColumnVisibleAt(column, screens)) return [];\n const item: PositionedColumn<T> = { column, id: getColumnId(column, pos) };\n if (isColumnGroup(column) && column.children.length > 0) {\n item.children = positionColumns(column.children, screens, pos);\n }\n return [item];\n });\n\nexport interface NormalizeOptions<T> {\n expandable?: TableExpandableConfig<T>;\n expandColumnWidth?: number | string;\n expandType: ExpandType;\n prefixCls: string;\n rowSelection?: TableRowSelection<T>;\n screens: ReadonlySet<TableBreakpoint> | null;\n selectionColumnWidth?: number | string;\n}\n\nconst isExpand = <T>(item: PositionedColumn<T>) => item.column === EXPAND_COLUMN;\nconst isSelection = <T>(item: PositionedColumn<T>) => item.column === SELECTION_COLUMN;\n\nconst insertExpandColumn = <T>(\n base: PositionedColumn<T>[],\n { expandable, expandType, prefixCls, rowSelection }: NormalizeOptions<T>,\n width: number | string | undefined,\n) => {\n if (expandType !== 'row') return base.filter((item) => !isExpand(item));\n\n let index = expandable?.expandIconColumnIndex;\n if (expandable?.showExpandColumn === false) index = -1;\n else if ((index ?? 0) > 0 && rowSelection) index = index! - 1;\n\n let list = [...base];\n if (!list.some(isExpand)) {\n const expandIndex = index || 0;\n const fixed = expandable?.fixed;\n const insertAt =\n expandIndex === 0 && (fixed === 'right' || fixed === 'end') ? base.length : expandIndex;\n if (insertAt >= 0) list.splice(insertAt, 0, { column: EXPAND_COLUMN, id: '' });\n }\n const expandIndex = list.findIndex(isExpand);\n list = list.filter((item, itemIndex) => !isExpand(item) || itemIndex === expandIndex);\n if (expandIndex < 0) return list;\n\n const fixed = expandable?.fixed ?? base[expandIndex]?.column.fixed;\n list[expandIndex] = {\n column: {\n className: `${prefixCls}-row-expand-icon-cell`,\n fixed: fixed ?? undefined,\n key: '__expand_column',\n title: expandable?.columnTitle,\n width,\n },\n id: '__expand_column',\n };\n return list;\n};\n\nconst insertSelectionColumn = <T>(\n list: PositionedColumn<T>[],\n { prefixCls, rowSelection }: NormalizeOptions<T>,\n width: number | string | undefined,\n) => {\n if (!rowSelection) return list.filter((item) => !isSelection(item));\n let next = [...list];\n if (!next.some(isSelection)) {\n const leadingExpand = next.findIndex((item) => item.id === '__expand_column') === 0;\n next = leadingExpand\n ? [next[0], { column: SELECTION_COLUMN, id: '' }, ...next.slice(1)]\n : [{ column: SELECTION_COLUMN, id: '' }, ...next];\n }\n const selectionIndex = next.findIndex(isSelection);\n next = next.filter((item, index) => !isSelection(item) || index === selectionIndex);\n\n const prev = next[selectionIndex - 1];\n const after = next[selectionIndex + 1];\n let fixed = rowSelection.fixed;\n if (fixed === undefined) {\n if (after?.column.fixed !== undefined) fixed = after.column.fixed;\n else if (prev?.column.fixed !== undefined) fixed = prev.column.fixed;\n }\n if (fixed && prev?.id === '__expand_column' && prev.column.fixed == null) {\n next[selectionIndex - 1] = { ...prev, column: { ...prev.column, fixed } };\n }\n next[selectionIndex] = {\n column: {\n align: rowSelection.align,\n className: `${prefixCls}-selection-column`,\n fixed,\n key: '__selection_column',\n onCell: rowSelection.onCell,\n width,\n },\n id: '__selection_column',\n };\n return next;\n};\n\nconst toEngineColumns = <T>(\n list: readonly PositionedColumn<T>[],\n options: NormalizeOptions<T>,\n used: Set<string>,\n): NormalizedColumn<T>[] =>\n list.map((item) => {\n const { column } = item;\n let key = item.id;\n while (used.has(key)) key = `${key}_`;\n used.add(key);\n\n const kind: ColumnKind =\n item.id === '__selection_column'\n ? 'selection'\n : item.id === '__expand_column'\n ? 'expand'\n : 'data';\n const { prefixCls, rowSelection } = options;\n const colClassName =\n kind === 'selection'\n ? [\n `${prefixCls}-selection-col`,\n rowSelection?.selections &&\n rowSelection.type !== 'radio' &&\n `${prefixCls}-selection-col-with-dropdown`,\n ]\n .filter(Boolean)\n .join(' ')\n : kind === 'expand'\n ? `${prefixCls}-expand-icon-col`\n : undefined;\n\n const engine: NormalizedColumn<T> = {\n fixed: toEngineFixed(column.fixed),\n key,\n source: { colClassName, column, id: item.id, kind },\n width: column.width,\n };\n if ('colSpan' in column && column.colSpan !== undefined) engine.headerColSpan = column.colSpan;\n if (item.children) engine.children = toEngineColumns(item.children, options, used);\n return engine;\n });\n\nconst PLACEHOLDER_COLUMN: NormalizedColumn<any> = {\n key: '__placeholder_column',\n source: { column: { render: () => null }, id: '__placeholder_column', kind: 'placeholder' },\n};\n\nexport const normalizeColumns = <T>(\n columns: readonly TableColumn<T>[],\n options: NormalizeOptions<T>,\n): NormalizedColumn<T>[] => {\n const positioned = positionColumns(columns, options.screens);\n const withExpand = insertExpandColumn(positioned, options, options.expandColumnWidth);\n const withSelection = insertSelectionColumn(withExpand, options, options.selectionColumnWidth);\n const result = toEngineColumns(withSelection, options, new Set());\n return result.length ? result : [PLACEHOLDER_COLUMN];\n};\n"],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { TableColumn } from "../type.mjs";
|
|
2
|
+
import { Key } from "react";
|
|
3
|
+
//#region src/Table/pipeline/selectionUtils.d.ts
|
|
4
|
+
export declare const SELECTION_COLUMN: TableColumn<any>;
|
|
5
|
+
export declare const SELECTION_ALL: "SELECT_ALL";
|
|
6
|
+
export declare const SELECTION_INVERT: "SELECT_INVERT";
|
|
7
|
+
export declare const SELECTION_NONE: "SELECT_NONE";
|
|
8
|
+
//#endregion
|
|
9
|
+
//# sourceMappingURL=selectionUtils.d.mts.map
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
//#region src/Table/pipeline/selectionUtils.ts
|
|
2
|
+
const SELECTION_COLUMN = {};
|
|
3
|
+
const SELECTION_ALL = "SELECT_ALL";
|
|
4
|
+
const SELECTION_INVERT = "SELECT_INVERT";
|
|
5
|
+
const SELECTION_NONE = "SELECT_NONE";
|
|
6
|
+
const isPlainObject = (value) => typeof value === "object" && value !== null && !Array.isArray(value);
|
|
7
|
+
const flattenData = (childrenColumnName, data) => {
|
|
8
|
+
const list = [];
|
|
9
|
+
const dig = (records) => {
|
|
10
|
+
(records || []).forEach((record) => {
|
|
11
|
+
list.push(record);
|
|
12
|
+
if (isPlainObject(record) && childrenColumnName in record) dig(record[childrenColumnName]);
|
|
13
|
+
});
|
|
14
|
+
};
|
|
15
|
+
dig(data);
|
|
16
|
+
return list;
|
|
17
|
+
};
|
|
18
|
+
const convertDataToEntities = (data, getRowKey, childrenColumnName) => {
|
|
19
|
+
const entities = /* @__PURE__ */ new Map();
|
|
20
|
+
const dig = (records, level, parent) => {
|
|
21
|
+
records.forEach((record, index) => {
|
|
22
|
+
const entity = {
|
|
23
|
+
children: [],
|
|
24
|
+
key: getRowKey(record, index),
|
|
25
|
+
level,
|
|
26
|
+
parent,
|
|
27
|
+
record
|
|
28
|
+
};
|
|
29
|
+
entities.set(entity.key, entity);
|
|
30
|
+
parent?.children.push(entity);
|
|
31
|
+
const children = isPlainObject(record) ? record[childrenColumnName] : void 0;
|
|
32
|
+
if (Array.isArray(children)) dig(children, level + 1, entity);
|
|
33
|
+
});
|
|
34
|
+
};
|
|
35
|
+
dig(data, 0);
|
|
36
|
+
return entities;
|
|
37
|
+
};
|
|
38
|
+
const groupByLevel = (entities) => {
|
|
39
|
+
const levels = /* @__PURE__ */ new Map();
|
|
40
|
+
let maxLevel = 0;
|
|
41
|
+
entities.forEach((entity) => {
|
|
42
|
+
const list = levels.get(entity.level);
|
|
43
|
+
if (list) list.push(entity);
|
|
44
|
+
else levels.set(entity.level, [entity]);
|
|
45
|
+
maxLevel = Math.max(maxLevel, entity.level);
|
|
46
|
+
});
|
|
47
|
+
return {
|
|
48
|
+
levels,
|
|
49
|
+
maxLevel
|
|
50
|
+
};
|
|
51
|
+
};
|
|
52
|
+
const conductUp = (checkedKeys, levels, maxLevel, isDisabled, mode) => {
|
|
53
|
+
const halfCheckedKeys = /* @__PURE__ */ new Set();
|
|
54
|
+
const visited = /* @__PURE__ */ new Set();
|
|
55
|
+
for (let level = maxLevel; level >= 0; level -= 1) for (const { parent, record } of levels.get(level) ?? []) {
|
|
56
|
+
if (isDisabled(record) || !parent || visited.has(parent.key)) continue;
|
|
57
|
+
visited.add(parent.key);
|
|
58
|
+
if (isDisabled(parent.record)) continue;
|
|
59
|
+
let allChecked = true;
|
|
60
|
+
let partialChecked = false;
|
|
61
|
+
for (const child of parent.children) {
|
|
62
|
+
if (isDisabled(child.record)) continue;
|
|
63
|
+
const checked = checkedKeys.has(child.key);
|
|
64
|
+
if (!checked) allChecked = false;
|
|
65
|
+
if (checked || halfCheckedKeys.has(child.key)) partialChecked = true;
|
|
66
|
+
}
|
|
67
|
+
if (mode === "fill" && allChecked) checkedKeys.add(parent.key);
|
|
68
|
+
if (mode === "clean" && !allChecked) checkedKeys.delete(parent.key);
|
|
69
|
+
if (partialChecked) halfCheckedKeys.add(parent.key);
|
|
70
|
+
}
|
|
71
|
+
return {
|
|
72
|
+
checkedKeys: [...checkedKeys],
|
|
73
|
+
halfCheckedKeys: [...halfCheckedKeys].filter((key) => !checkedKeys.has(key))
|
|
74
|
+
};
|
|
75
|
+
};
|
|
76
|
+
const conductCheck = (keyList, checked, entities, isDisabled) => {
|
|
77
|
+
const checkedKeys = new Set(keyList.filter((key) => entities.has(key)));
|
|
78
|
+
const { levels, maxLevel } = groupByLevel(entities);
|
|
79
|
+
if (checked === true) {
|
|
80
|
+
for (let level = 0; level <= maxLevel; level += 1) for (const { children, key, record } of levels.get(level) ?? []) {
|
|
81
|
+
if (!checkedKeys.has(key) || isDisabled(record)) continue;
|
|
82
|
+
for (const child of children) if (!isDisabled(child.record)) checkedKeys.add(child.key);
|
|
83
|
+
}
|
|
84
|
+
return conductUp(checkedKeys, levels, maxLevel, isDisabled, "fill");
|
|
85
|
+
}
|
|
86
|
+
const halfKeys = new Set(checked.halfCheckedKeys);
|
|
87
|
+
for (let level = 0; level <= maxLevel; level += 1) for (const { children, key, record } of levels.get(level) ?? []) {
|
|
88
|
+
if (checkedKeys.has(key) || halfKeys.has(key) || isDisabled(record)) continue;
|
|
89
|
+
for (const child of children) if (!isDisabled(child.record)) checkedKeys.delete(child.key);
|
|
90
|
+
}
|
|
91
|
+
return conductUp(checkedKeys, levels, maxLevel, isDisabled, "clean");
|
|
92
|
+
};
|
|
93
|
+
const selectRange = (prevIndex, currentIndex, keys, selectedKeys) => {
|
|
94
|
+
const anchor = prevIndex ?? currentIndex;
|
|
95
|
+
const start = Math.min(anchor || 0, currentIndex);
|
|
96
|
+
const end = Math.max(anchor || 0, currentIndex);
|
|
97
|
+
const rangeKeys = keys.slice(start, end + 1);
|
|
98
|
+
const shouldSelect = rangeKeys.some((key) => !selectedKeys.has(key));
|
|
99
|
+
const changedKeys = [];
|
|
100
|
+
for (const key of rangeKeys) if (shouldSelect) {
|
|
101
|
+
if (!selectedKeys.has(key)) changedKeys.push(key);
|
|
102
|
+
selectedKeys.add(key);
|
|
103
|
+
} else {
|
|
104
|
+
selectedKeys.delete(key);
|
|
105
|
+
changedKeys.push(key);
|
|
106
|
+
}
|
|
107
|
+
return {
|
|
108
|
+
changedKeys,
|
|
109
|
+
nextAnchor: shouldSelect ? end : null
|
|
110
|
+
};
|
|
111
|
+
};
|
|
112
|
+
//#endregion
|
|
113
|
+
export { SELECTION_ALL, SELECTION_COLUMN, SELECTION_INVERT, SELECTION_NONE, conductCheck, convertDataToEntities, flattenData, isPlainObject, selectRange };
|
|
114
|
+
|
|
115
|
+
//# sourceMappingURL=selectionUtils.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"selectionUtils.mjs","names":[],"sources":["../../../src/Table/pipeline/selectionUtils.ts"],"sourcesContent":["import type { Key } from 'react';\n\nimport type { TableColumn } from '../type';\n\nexport const SELECTION_COLUMN = {} as TableColumn<any>;\nexport const SELECTION_ALL = 'SELECT_ALL' as const;\nexport const SELECTION_INVERT = 'SELECT_INVERT' as const;\nexport const SELECTION_NONE = 'SELECT_NONE' as const;\n\nexport interface SelectionEntity<T> {\n children: SelectionEntity<T>[];\n key: Key;\n level: number;\n parent?: SelectionEntity<T>;\n record: T;\n}\n\nexport type SelectionEntities<T> = Map<Key, SelectionEntity<T>>;\n\nexport const isPlainObject = (value: unknown): value is Record<string, unknown> =>\n typeof value === 'object' && value !== null && !Array.isArray(value);\n\nexport const flattenData = <T>(childrenColumnName: string, data: readonly T[] | undefined) => {\n const list: T[] = [];\n const dig = (records: readonly T[] | undefined) => {\n (records || []).forEach((record) => {\n list.push(record);\n if (isPlainObject(record) && childrenColumnName in record) {\n dig(record[childrenColumnName] as T[]);\n }\n });\n };\n dig(data);\n return list;\n};\n\nexport const convertDataToEntities = <T>(\n data: readonly T[],\n getRowKey: (record: T, index: number) => Key,\n childrenColumnName: string,\n): SelectionEntities<T> => {\n const entities: SelectionEntities<T> = new Map();\n const dig = (records: readonly T[], level: number, parent?: SelectionEntity<T>) => {\n records.forEach((record, index) => {\n const entity: SelectionEntity<T> = {\n children: [],\n key: getRowKey(record, index),\n level,\n parent,\n record,\n };\n entities.set(entity.key, entity);\n parent?.children.push(entity);\n const children = isPlainObject(record) ? record[childrenColumnName] : undefined;\n if (Array.isArray(children)) dig(children as T[], level + 1, entity);\n });\n };\n dig(data, 0);\n return entities;\n};\n\ntype IsDisabled<T> = (record: T) => boolean;\n\nconst groupByLevel = <T>(entities: SelectionEntities<T>) => {\n const levels = new Map<number, SelectionEntity<T>[]>();\n let maxLevel = 0;\n entities.forEach((entity) => {\n const list = levels.get(entity.level);\n if (list) list.push(entity);\n else levels.set(entity.level, [entity]);\n maxLevel = Math.max(maxLevel, entity.level);\n });\n return { levels, maxLevel };\n};\n\nconst conductUp = <T>(\n checkedKeys: Set<Key>,\n levels: Map<number, SelectionEntity<T>[]>,\n maxLevel: number,\n isDisabled: IsDisabled<T>,\n mode: 'fill' | 'clean',\n) => {\n const halfCheckedKeys = new Set<Key>();\n const visited = new Set<Key>();\n for (let level = maxLevel; level >= 0; level -= 1) {\n for (const { parent, record } of levels.get(level) ?? []) {\n if (isDisabled(record) || !parent || visited.has(parent.key)) continue;\n visited.add(parent.key);\n if (isDisabled(parent.record)) continue;\n\n let allChecked = true;\n let partialChecked = false;\n for (const child of parent.children) {\n if (isDisabled(child.record)) continue;\n const checked = checkedKeys.has(child.key);\n if (!checked) allChecked = false;\n if (checked || halfCheckedKeys.has(child.key)) partialChecked = true;\n }\n if (mode === 'fill' && allChecked) checkedKeys.add(parent.key);\n if (mode === 'clean' && !allChecked) checkedKeys.delete(parent.key);\n if (partialChecked) halfCheckedKeys.add(parent.key);\n }\n }\n return {\n checkedKeys: [...checkedKeys],\n halfCheckedKeys: [...halfCheckedKeys].filter((key) => !checkedKeys.has(key)),\n };\n};\n\nexport const conductCheck = <T>(\n keyList: readonly Key[],\n checked: true | { checked: false; halfCheckedKeys: Key[] },\n entities: SelectionEntities<T>,\n isDisabled: IsDisabled<T>,\n) => {\n const checkedKeys = new Set(keyList.filter((key) => entities.has(key)));\n const { levels, maxLevel } = groupByLevel(entities);\n\n if (checked === true) {\n for (let level = 0; level <= maxLevel; level += 1) {\n for (const { children, key, record } of levels.get(level) ?? []) {\n if (!checkedKeys.has(key) || isDisabled(record)) continue;\n for (const child of children) {\n if (!isDisabled(child.record)) checkedKeys.add(child.key);\n }\n }\n }\n return conductUp(checkedKeys, levels, maxLevel, isDisabled, 'fill');\n }\n\n const halfKeys = new Set(checked.halfCheckedKeys);\n for (let level = 0; level <= maxLevel; level += 1) {\n for (const { children, key, record } of levels.get(level) ?? []) {\n if (checkedKeys.has(key) || halfKeys.has(key) || isDisabled(record)) continue;\n for (const child of children) {\n if (!isDisabled(child.record)) checkedKeys.delete(child.key);\n }\n }\n }\n return conductUp(checkedKeys, levels, maxLevel, isDisabled, 'clean');\n};\n\nexport const selectRange = (\n prevIndex: number | null,\n currentIndex: number,\n keys: readonly Key[],\n selectedKeys: Set<Key>,\n) => {\n const anchor = prevIndex ?? currentIndex;\n const start = Math.min(anchor || 0, currentIndex);\n const end = Math.max(anchor || 0, currentIndex);\n const rangeKeys = keys.slice(start, end + 1);\n const shouldSelect = rangeKeys.some((key) => !selectedKeys.has(key));\n const changedKeys: Key[] = [];\n for (const key of rangeKeys) {\n if (shouldSelect) {\n if (!selectedKeys.has(key)) changedKeys.push(key);\n selectedKeys.add(key);\n } else {\n selectedKeys.delete(key);\n changedKeys.push(key);\n }\n }\n return { changedKeys, nextAnchor: shouldSelect ? end : null };\n};\n"],"mappings":"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"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { useEffect, useState } from "react";
|
|
2
|
+
//#region src/Table/pipeline/useBreakpoint.ts
|
|
3
|
+
const BREAKPOINT_QUERIES = {
|
|
4
|
+
lg: "(min-width: 992px)",
|
|
5
|
+
md: "(min-width: 768px)",
|
|
6
|
+
sm: "(min-width: 576px)",
|
|
7
|
+
xl: "(min-width: 1200px)",
|
|
8
|
+
xs: "(max-width: 575px)",
|
|
9
|
+
xxl: "(min-width: 1600px)",
|
|
10
|
+
xxxl: "(min-width: 1920px)"
|
|
11
|
+
};
|
|
12
|
+
const POINTS = Object.keys(BREAKPOINT_QUERIES);
|
|
13
|
+
const canMatchMedia = () => typeof window !== "undefined" && typeof window.matchMedia === "function";
|
|
14
|
+
const readScreens = () => canMatchMedia() ? new Set(POINTS.filter((point) => window.matchMedia(BREAKPOINT_QUERIES[point]).matches)) : null;
|
|
15
|
+
const useBreakpoint = (enabled) => {
|
|
16
|
+
const [screens, setScreens] = useState(() => enabled ? readScreens() : null);
|
|
17
|
+
useEffect(() => {
|
|
18
|
+
if (!enabled || !canMatchMedia()) {
|
|
19
|
+
setScreens(null);
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
const update = () => {
|
|
23
|
+
const next = readScreens();
|
|
24
|
+
setScreens((previous) => previous?.size === next.size && [...next].every((point) => previous.has(point)) ? previous : next);
|
|
25
|
+
};
|
|
26
|
+
const queries = POINTS.map((point) => window.matchMedia(BREAKPOINT_QUERIES[point]));
|
|
27
|
+
queries.forEach((query) => query.addEventListener("change", update));
|
|
28
|
+
update();
|
|
29
|
+
return () => queries.forEach((query) => query.removeEventListener("change", update));
|
|
30
|
+
}, [enabled]);
|
|
31
|
+
return enabled ? screens : null;
|
|
32
|
+
};
|
|
33
|
+
//#endregion
|
|
34
|
+
export { BREAKPOINT_QUERIES, useBreakpoint };
|
|
35
|
+
|
|
36
|
+
//# sourceMappingURL=useBreakpoint.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useBreakpoint.mjs","names":[],"sources":["../../../src/Table/pipeline/useBreakpoint.ts"],"sourcesContent":["import { useEffect, useState } from 'react';\n\nimport type { TableBreakpoint } from '../type';\n\nexport const BREAKPOINT_QUERIES: Record<TableBreakpoint, string> = {\n lg: '(min-width: 992px)',\n md: '(min-width: 768px)',\n sm: '(min-width: 576px)',\n xl: '(min-width: 1200px)',\n xs: '(max-width: 575px)',\n xxl: '(min-width: 1600px)',\n xxxl: '(min-width: 1920px)',\n};\n\nconst POINTS = Object.keys(BREAKPOINT_QUERIES) as TableBreakpoint[];\n\nconst canMatchMedia = () =>\n typeof window !== 'undefined' && typeof window.matchMedia === 'function';\n\nconst readScreens = (): ReadonlySet<TableBreakpoint> | null =>\n canMatchMedia()\n ? new Set(POINTS.filter((point) => window.matchMedia(BREAKPOINT_QUERIES[point]).matches))\n : null;\n\nexport const useBreakpoint = (enabled: boolean): ReadonlySet<TableBreakpoint> | null => {\n const [screens, setScreens] = useState(() => (enabled ? readScreens() : null));\n\n useEffect(() => {\n if (!enabled || !canMatchMedia()) {\n setScreens(null);\n return;\n }\n const update = () => {\n const next = readScreens()!;\n setScreens((previous) =>\n previous?.size === next.size && [...next].every((point) => previous.has(point))\n ? previous\n : next,\n );\n };\n const queries = POINTS.map((point) => window.matchMedia(BREAKPOINT_QUERIES[point]));\n queries.forEach((query) => query.addEventListener('change', update));\n update();\n return () => queries.forEach((query) => query.removeEventListener('change', update));\n }, [enabled]);\n\n return enabled ? screens : null;\n};\n"],"mappings":";;AAIA,MAAa,qBAAsD;CACjE,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,KAAK;CACL,MAAM;AACR;AAEA,MAAM,SAAS,OAAO,KAAK,kBAAkB;AAE7C,MAAM,sBACJ,OAAO,WAAW,eAAe,OAAO,OAAO,eAAe;AAEhE,MAAM,oBACJ,cAAc,IACV,IAAI,IAAI,OAAO,QAAQ,UAAU,OAAO,WAAW,mBAAmB,MAAM,CAAC,CAAC,OAAO,CAAC,IACtF;AAEN,MAAa,iBAAiB,YAA0D;CACtF,MAAM,CAAC,SAAS,cAAc,eAAgB,UAAU,YAAY,IAAI,IAAK;CAE7E,gBAAgB;EACd,IAAI,CAAC,WAAW,CAAC,cAAc,GAAG;GAChC,WAAW,IAAI;GACf;EACF;EACA,MAAM,eAAe;GACnB,MAAM,OAAO,YAAY;GACzB,YAAY,aACV,UAAU,SAAS,KAAK,QAAQ,CAAC,GAAG,IAAI,CAAC,CAAC,OAAO,UAAU,SAAS,IAAI,KAAK,CAAC,IAC1E,WACA,IACN;EACF;EACA,MAAM,UAAU,OAAO,KAAK,UAAU,OAAO,WAAW,mBAAmB,MAAM,CAAC;EAClF,QAAQ,SAAS,UAAU,MAAM,iBAAiB,UAAU,MAAM,CAAC;EACnE,OAAO;EACP,aAAa,QAAQ,SAAS,UAAU,MAAM,oBAAoB,UAAU,MAAM,CAAC;CACrF,GAAG,CAAC,OAAO,CAAC;CAEZ,OAAO,UAAU,UAAU;AAC7B"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { useEventCallback } from "../../hooks/useEventCallback.mjs";
|
|
2
|
+
import { isPlainObject } from "./selectionUtils.mjs";
|
|
3
|
+
import { useMemo, useState } from "react";
|
|
4
|
+
//#region src/Table/pipeline/useExpandable.ts
|
|
5
|
+
const findAllChildrenKeys = (data, getRowKey, childrenColumnName) => {
|
|
6
|
+
const keys = [];
|
|
7
|
+
const dig = (list) => {
|
|
8
|
+
(list || []).forEach((item, index) => {
|
|
9
|
+
keys.push(getRowKey(item, index));
|
|
10
|
+
dig(item?.[childrenColumnName]);
|
|
11
|
+
});
|
|
12
|
+
};
|
|
13
|
+
dig(data);
|
|
14
|
+
return keys;
|
|
15
|
+
};
|
|
16
|
+
const getExpandType = (data, childrenColumnName, expandable) => {
|
|
17
|
+
if (expandable?.expandedRowRender) return "row";
|
|
18
|
+
if (data.some((record) => isPlainObject(record) && record[childrenColumnName])) return "nest";
|
|
19
|
+
return null;
|
|
20
|
+
};
|
|
21
|
+
const useExpandable = ({ childrenColumnName, expandable, getRowKey, pageData }) => {
|
|
22
|
+
const { defaultExpandAllRows, defaultExpandedRowKeys, expandedRowKeys, onExpand } = expandable ?? {};
|
|
23
|
+
const onExpandedRowsChange = expandable?.onExpandedRowsChange;
|
|
24
|
+
const [innerKeys, setInnerKeys] = useState(() => {
|
|
25
|
+
if (defaultExpandedRowKeys) return defaultExpandedRowKeys;
|
|
26
|
+
if (defaultExpandAllRows) return findAllChildrenKeys(pageData, getRowKey, childrenColumnName);
|
|
27
|
+
return [];
|
|
28
|
+
});
|
|
29
|
+
const expandedKeys = useMemo(() => new Set(expandedRowKeys ?? innerKeys), [expandedRowKeys, innerKeys]);
|
|
30
|
+
return {
|
|
31
|
+
expandedKeys,
|
|
32
|
+
toggle: useEventCallback((record) => {
|
|
33
|
+
const key = getRowKey(record, pageData.indexOf(record));
|
|
34
|
+
const hasKey = expandedKeys.has(key);
|
|
35
|
+
const next = hasKey ? [...expandedKeys].filter((item) => item !== key) : [...expandedKeys, key];
|
|
36
|
+
setInnerKeys(next);
|
|
37
|
+
onExpand?.(!hasKey, record);
|
|
38
|
+
onExpandedRowsChange?.(next);
|
|
39
|
+
})
|
|
40
|
+
};
|
|
41
|
+
};
|
|
42
|
+
//#endregion
|
|
43
|
+
export { getExpandType, useExpandable };
|
|
44
|
+
|
|
45
|
+
//# sourceMappingURL=useExpandable.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useExpandable.mjs","names":[],"sources":["../../../src/Table/pipeline/useExpandable.ts"],"sourcesContent":["import { type Key, useMemo, useState } from 'react';\n\nimport { useEventCallback } from '@/hooks/useEventCallback';\n\nimport type { TableExpandableConfig } from '../type';\nimport { isPlainObject } from './selectionUtils';\n\nexport type ExpandType = 'nest' | 'row' | null;\n\nconst findAllChildrenKeys = <T>(\n data: readonly T[],\n getRowKey: (record: T, index: number) => Key,\n childrenColumnName: string,\n) => {\n const keys: Key[] = [];\n const dig = (list: readonly T[] | undefined) => {\n (list || []).forEach((item, index) => {\n keys.push(getRowKey(item, index));\n dig((item as Record<string, unknown>)?.[childrenColumnName] as T[] | undefined);\n });\n };\n dig(data);\n return keys;\n};\n\nexport const getExpandType = <T>(\n data: readonly T[],\n childrenColumnName: string,\n expandable: TableExpandableConfig<T> | undefined,\n): ExpandType => {\n if (expandable?.expandedRowRender) return 'row';\n if (data.some((record) => isPlainObject(record) && record[childrenColumnName])) return 'nest';\n return null;\n};\n\nexport const useExpandable = <T>({\n childrenColumnName,\n expandable,\n getRowKey,\n pageData,\n}: {\n childrenColumnName: string;\n expandable: TableExpandableConfig<T> | undefined;\n getRowKey: (record: T, index: number) => Key;\n pageData: readonly T[];\n}) => {\n const { defaultExpandAllRows, defaultExpandedRowKeys, expandedRowKeys, onExpand } =\n expandable ?? {};\n const onExpandedRowsChange = expandable?.onExpandedRowsChange;\n\n const [innerKeys, setInnerKeys] = useState<readonly Key[]>(() => {\n if (defaultExpandedRowKeys) return defaultExpandedRowKeys;\n if (defaultExpandAllRows) return findAllChildrenKeys(pageData, getRowKey, childrenColumnName);\n return [];\n });\n\n const expandedKeys = useMemo(\n (): ReadonlySet<Key> => new Set(expandedRowKeys ?? innerKeys),\n [expandedRowKeys, innerKeys],\n );\n\n const toggle = useEventCallback((record: T) => {\n const key = getRowKey(record, pageData.indexOf(record));\n const hasKey = expandedKeys.has(key);\n const next = hasKey ? [...expandedKeys].filter((item) => item !== key) : [...expandedKeys, key];\n setInnerKeys(next);\n onExpand?.(!hasKey, record);\n onExpandedRowsChange?.(next);\n });\n\n return { expandedKeys, toggle };\n};\n"],"mappings":";;;;AASA,MAAM,uBACJ,MACA,WACA,uBACG;CACH,MAAM,OAAc,CAAC;CACrB,MAAM,OAAO,SAAmC;EAC9C,CAAC,QAAQ,CAAC,EAAA,CAAG,SAAS,MAAM,UAAU;GACpC,KAAK,KAAK,UAAU,MAAM,KAAK,CAAC;GAChC,IAAK,OAAmC,mBAAsC;EAChF,CAAC;CACH;CACA,IAAI,IAAI;CACR,OAAO;AACT;AAEA,MAAa,iBACX,MACA,oBACA,eACe;CACf,IAAI,YAAY,mBAAmB,OAAO;CAC1C,IAAI,KAAK,MAAM,WAAW,cAAc,MAAM,KAAK,OAAO,mBAAmB,GAAG,OAAO;CACvF,OAAO;AACT;AAEA,MAAa,iBAAoB,EAC/B,oBACA,YACA,WACA,eAMI;CACJ,MAAM,EAAE,sBAAsB,wBAAwB,iBAAiB,aACrE,cAAc,CAAC;CACjB,MAAM,uBAAuB,YAAY;CAEzC,MAAM,CAAC,WAAW,gBAAgB,eAA+B;EAC/D,IAAI,wBAAwB,OAAO;EACnC,IAAI,sBAAsB,OAAO,oBAAoB,UAAU,WAAW,kBAAkB;EAC5F,OAAO,CAAC;CACV,CAAC;CAED,MAAM,eAAe,cACK,IAAI,IAAI,mBAAmB,SAAS,GAC5D,CAAC,iBAAiB,SAAS,CAC7B;CAWA,OAAO;EAAE;EAAc,QATR,kBAAkB,WAAc;GAC7C,MAAM,MAAM,UAAU,QAAQ,SAAS,QAAQ,MAAM,CAAC;GACtD,MAAM,SAAS,aAAa,IAAI,GAAG;GACnC,MAAM,OAAO,SAAS,CAAC,GAAG,YAAY,CAAC,CAAC,QAAQ,SAAS,SAAS,GAAG,IAAI,CAAC,GAAG,cAAc,GAAG;GAC9F,aAAa,IAAI;GACjB,WAAW,CAAC,QAAQ,MAAM;GAC1B,uBAAuB,IAAI;EAC7B,CAE4B;CAAE;AAChC"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { flattenColumns } from "./columnUtils.mjs";
|
|
2
|
+
import { useMemo } from "react";
|
|
3
|
+
//#region src/Table/pipeline/useFilter.ts
|
|
4
|
+
const flattenFilterKeys = (filters) => (filters ?? []).flatMap(({ children, value }) => [value, ...flattenFilterKeys(children)]);
|
|
5
|
+
const isFilterable = (column) => Boolean(column.filters) || column.filterDropdown !== void 0 || "onFilter" in column;
|
|
6
|
+
const toKeys = (column, keys) => column.filterDropdown === void 0 && keys ? keys.map(String) : keys;
|
|
7
|
+
const collectFilterStates = (columns, init) => flattenColumns(columns).flatMap(({ column, id }) => {
|
|
8
|
+
const col = column;
|
|
9
|
+
if (!isFilterable(col)) return [];
|
|
10
|
+
return [{
|
|
11
|
+
column: col,
|
|
12
|
+
filteredKeys: "filteredValue" in col ? toKeys(col, col.filteredValue) : init && col.defaultFilteredValue ? toKeys(col, col.defaultFilteredValue) : void 0,
|
|
13
|
+
forceFiltered: col.filtered,
|
|
14
|
+
key: id
|
|
15
|
+
}];
|
|
16
|
+
});
|
|
17
|
+
const mergeFilterStates = (columns, inner) => {
|
|
18
|
+
const collected = collectFilterStates(columns, false);
|
|
19
|
+
return collected.some(({ filteredKeys }) => filteredKeys !== void 0) ? collected : collected.map((state) => ({
|
|
20
|
+
...state,
|
|
21
|
+
filteredKeys: inner[state.key]
|
|
22
|
+
}));
|
|
23
|
+
};
|
|
24
|
+
const getFilterInfo = (states) => Object.fromEntries(states.map(({ column, filteredKeys, key }) => {
|
|
25
|
+
if (column.filterDropdown) return [key, filteredKeys || null];
|
|
26
|
+
if (!Array.isArray(filteredKeys)) return [key, null];
|
|
27
|
+
const selected = new Set(filteredKeys.map(String));
|
|
28
|
+
return [key, flattenFilterKeys(column.filters).filter((value) => selected.has(String(value)))];
|
|
29
|
+
}));
|
|
30
|
+
const filterData = (data, states, childrenColumnName = "children") => states.reduce((current, { column: { filters, onFilter }, filteredKeys }) => {
|
|
31
|
+
if (!onFilter || !filteredKeys?.length) return current;
|
|
32
|
+
const valueOf = /* @__PURE__ */ new Map();
|
|
33
|
+
for (const value of flattenFilterKeys(filters)) if (!valueOf.has(String(value))) valueOf.set(String(value), value);
|
|
34
|
+
const values = filteredKeys.map((key) => valueOf.get(String(key)) ?? key);
|
|
35
|
+
return current.flatMap((record) => {
|
|
36
|
+
const children = record[childrenColumnName];
|
|
37
|
+
const next = Array.isArray(children) ? {
|
|
38
|
+
...record,
|
|
39
|
+
[childrenColumnName]: filterData(children, states, childrenColumnName)
|
|
40
|
+
} : record;
|
|
41
|
+
return values.some((value) => onFilter(value, next)) ? [next] : [];
|
|
42
|
+
});
|
|
43
|
+
}, [...data]);
|
|
44
|
+
const useFilter = ({ childrenColumnName, data, states }) => useMemo(() => filterData(data, states, childrenColumnName), [
|
|
45
|
+
data,
|
|
46
|
+
states,
|
|
47
|
+
childrenColumnName
|
|
48
|
+
]);
|
|
49
|
+
//#endregion
|
|
50
|
+
export { collectFilterStates, filterData, flattenFilterKeys, getFilterInfo, mergeFilterStates, useFilter };
|
|
51
|
+
|
|
52
|
+
//# sourceMappingURL=useFilter.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useFilter.mjs","names":[],"sources":["../../../src/Table/pipeline/useFilter.ts"],"sourcesContent":["import { type Key, useMemo } from 'react';\n\nimport type {\n FilterValue,\n TableColumn,\n TableColumnFilterItem,\n TableColumnType,\n TableFilters,\n} from '../type';\nimport { flattenColumns } from './columnUtils';\n\nexport type FilterKeys = (Key | boolean)[] | null;\n\nexport interface FilterState<T> {\n column: TableColumnType<T>;\n filteredKeys?: FilterKeys;\n forceFiltered?: boolean;\n key: string;\n}\n\nexport type FiltersState = Record<string, FilterKeys | undefined>;\n\nexport const flattenFilterKeys = (filters?: readonly TableColumnFilterItem[]): FilterValue[] =>\n (filters ?? []).flatMap(({ children, value }) => [value, ...flattenFilterKeys(children)]);\n\nconst isFilterable = (column: TableColumnType<any>) =>\n Boolean(column.filters) || column.filterDropdown !== undefined || 'onFilter' in column;\n\nconst toKeys = (column: TableColumnType<any>, keys: FilterKeys | undefined) =>\n // Menu / tree options are matched by their string value; custom dropdowns keep raw keys.\n column.filterDropdown === undefined && keys ? keys.map(String) : keys;\n\nexport const collectFilterStates = <T>(\n columns: readonly TableColumn<T>[],\n init: boolean,\n): FilterState<T>[] =>\n flattenColumns(columns).flatMap(({ column, id }) => {\n const col = column as TableColumnType<T>;\n if (!isFilterable(col)) return [];\n const filteredKeys =\n 'filteredValue' in col\n ? toKeys(col, col.filteredValue)\n : init && col.defaultFilteredValue\n ? toKeys(col, col.defaultFilteredValue)\n : undefined;\n return [{ column: col, filteredKeys, forceFiltered: col.filtered, key: id }];\n });\n\nexport const mergeFilterStates = <T>(\n columns: readonly TableColumn<T>[],\n inner: FiltersState,\n): FilterState<T>[] => {\n const collected = collectFilterStates(columns, false);\n const controlled = collected.some(({ filteredKeys }) => filteredKeys !== undefined);\n return controlled\n ? collected\n : collected.map((state) => ({ ...state, filteredKeys: inner[state.key] }));\n};\n\nexport const getFilterInfo = (states: readonly FilterState<any>[]): TableFilters =>\n Object.fromEntries(\n states.map(({ column, filteredKeys, key }) => {\n if (column.filterDropdown) return [key, (filteredKeys as FilterValue[]) || null];\n if (!Array.isArray(filteredKeys)) return [key, null];\n const selected = new Set(filteredKeys.map(String));\n return [\n key,\n flattenFilterKeys(column.filters).filter((value) => selected.has(String(value))),\n ];\n }),\n );\n\nexport const filterData = <T>(\n data: readonly T[],\n states: readonly FilterState<T>[],\n childrenColumnName = 'children',\n): T[] =>\n states.reduce<T[]>(\n (current, { column: { filters, onFilter }, filteredKeys }) => {\n if (!onFilter || !filteredKeys?.length) return current;\n\n const valueOf = new Map<string, FilterValue>();\n for (const value of flattenFilterKeys(filters)) {\n if (!valueOf.has(String(value))) valueOf.set(String(value), value);\n }\n const values = filteredKeys.map((key) => valueOf.get(String(key)) ?? (key as FilterValue));\n\n return current.flatMap((record) => {\n const children = (record as Record<string, unknown>)[childrenColumnName];\n const next = Array.isArray(children)\n ? {\n ...record,\n [childrenColumnName]: filterData(children as T[], states, childrenColumnName),\n }\n : record;\n return values.some((value) => onFilter(value, next)) ? [next] : [];\n });\n },\n [...data],\n );\n\nexport const useFilter = <T>({\n childrenColumnName,\n data,\n states,\n}: {\n childrenColumnName?: string;\n data: readonly T[];\n states: readonly FilterState<T>[];\n}) =>\n useMemo(() => filterData(data, states, childrenColumnName), [data, states, childrenColumnName]);\n"],"mappings":";;;AAsBA,MAAa,qBAAqB,aAC/B,WAAW,CAAC,EAAA,CAAG,SAAS,EAAE,UAAU,YAAY,CAAC,OAAO,GAAG,kBAAkB,QAAQ,CAAC,CAAC;AAE1F,MAAM,gBAAgB,WACpB,QAAQ,OAAO,OAAO,KAAK,OAAO,mBAAmB,KAAA,KAAa,cAAc;AAElF,MAAM,UAAU,QAA8B,SAE5C,OAAO,mBAAmB,KAAA,KAAa,OAAO,KAAK,IAAI,MAAM,IAAI;AAEnE,MAAa,uBACX,SACA,SAEA,eAAe,OAAO,CAAC,CAAC,SAAS,EAAE,QAAQ,SAAS;CAClD,MAAM,MAAM;CACZ,IAAI,CAAC,aAAa,GAAG,GAAG,OAAO,CAAC;CAOhC,OAAO,CAAC;EAAE,QAAQ;EAAK,cALrB,mBAAmB,MACf,OAAO,KAAK,IAAI,aAAa,IAC7B,QAAQ,IAAI,uBACV,OAAO,KAAK,IAAI,oBAAoB,IACpC,KAAA;EAC6B,eAAe,IAAI;EAAU,KAAK;CAAG,CAAC;AAC7E,CAAC;AAEH,MAAa,qBACX,SACA,UACqB;CACrB,MAAM,YAAY,oBAAoB,SAAS,KAAK;CAEpD,OADmB,UAAU,MAAM,EAAE,mBAAmB,iBAAiB,KAAA,CACzD,IACZ,YACA,UAAU,KAAK,WAAW;EAAE,GAAG;EAAO,cAAc,MAAM,MAAM;CAAK,EAAE;AAC7E;AAEA,MAAa,iBAAiB,WAC5B,OAAO,YACL,OAAO,KAAK,EAAE,QAAQ,cAAc,UAAU;CAC5C,IAAI,OAAO,gBAAgB,OAAO,CAAC,KAAM,gBAAkC,IAAI;CAC/E,IAAI,CAAC,MAAM,QAAQ,YAAY,GAAG,OAAO,CAAC,KAAK,IAAI;CACnD,MAAM,WAAW,IAAI,IAAI,aAAa,IAAI,MAAM,CAAC;CACjD,OAAO,CACL,KACA,kBAAkB,OAAO,OAAO,CAAC,CAAC,QAAQ,UAAU,SAAS,IAAI,OAAO,KAAK,CAAC,CAAC,CACjF;AACF,CAAC,CACH;AAEF,MAAa,cACX,MACA,QACA,qBAAqB,eAErB,OAAO,QACJ,SAAS,EAAE,QAAQ,EAAE,SAAS,YAAY,mBAAmB;CAC5D,IAAI,CAAC,YAAY,CAAC,cAAc,QAAQ,OAAO;CAE/C,MAAM,0BAAU,IAAI,IAAyB;CAC7C,KAAK,MAAM,SAAS,kBAAkB,OAAO,GAC3C,IAAI,CAAC,QAAQ,IAAI,OAAO,KAAK,CAAC,GAAG,QAAQ,IAAI,OAAO,KAAK,GAAG,KAAK;CAEnE,MAAM,SAAS,aAAa,KAAK,QAAQ,QAAQ,IAAI,OAAO,GAAG,CAAC,KAAM,GAAmB;CAEzF,OAAO,QAAQ,SAAS,WAAW;EACjC,MAAM,WAAY,OAAmC;EACrD,MAAM,OAAO,MAAM,QAAQ,QAAQ,IAC/B;GACE,GAAG;IACF,qBAAqB,WAAW,UAAiB,QAAQ,kBAAkB;EAC9E,IACA;EACJ,OAAO,OAAO,MAAM,UAAU,SAAS,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;CACnE,CAAC;AACH,GACA,CAAC,GAAG,IAAI,CACV;AAEF,MAAa,aAAgB,EAC3B,oBACA,MACA,aAMA,cAAc,WAAW,MAAM,QAAQ,kBAAkB,GAAG;CAAC;CAAM;CAAQ;AAAkB,CAAC"}
|