@lobehub/ui 6.0.0-beta.1 → 6.0.0-beta.11
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/README.md +6 -4
- 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/ActionIcon/style.mjs +1 -1
- package/es/ActionIcon/style.mjs.map +1 -1
- package/es/ActionIcon/type.d.mts +1 -0
- package/es/Alert/Alert.mjs +5 -5
- package/es/Alert/Alert.mjs.map +1 -1
- package/es/Alert/type.d.mts +1 -0
- package/es/Anchor/Anchor.mjs +2 -2
- package/es/Anchor/Anchor.mjs.map +1 -1
- package/es/AutoComplete/AutoComplete.mjs +5 -5
- package/es/AutoComplete/AutoComplete.mjs.map +1 -1
- package/es/AutoComplete/style.d.mts +1 -0
- package/es/AutoComplete/style.mjs +2 -2
- package/es/AutoComplete/style.mjs.map +1 -1
- package/es/AutoComplete/type.d.mts +1 -0
- 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/Button/type.d.mts +1 -0
- package/es/Carousel/Carousel.mjs +1 -1
- package/es/Carousel/Carousel.mjs.map +1 -1
- package/es/Checkbox/Checkbox.mjs +3 -3
- package/es/Checkbox/Checkbox.mjs.map +1 -1
- package/es/Checkbox/type.d.mts +1 -0
- package/es/CodeDiff/CodeDiff.mjs.map +1 -1
- package/es/CodeDiff/DiffPanel.mjs +6 -6
- package/es/CodeDiff/DiffPanel.mjs.map +1 -1
- package/es/CodeDiff/PatchDiff.mjs.map +1 -1
- package/es/CodeDiff/theme.mjs.map +1 -1
- package/es/CodeDiff/type.d.mts +2 -2
- package/es/CodeEditor/CodeEditor.mjs +5 -5
- 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 +63 -200
- 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/ColorSwatches/ColorSwatches.mjs +18 -23
- package/es/ColorSwatches/ColorSwatches.mjs.map +1 -1
- package/es/ColorSwatches/CustomPicker.mjs +101 -0
- package/es/ColorSwatches/CustomPicker.mjs.map +1 -0
- package/es/ColorSwatches/index.d.mts +2 -2
- package/es/ColorSwatches/marker.stylex.mjs +9 -0
- package/es/ColorSwatches/marker.stylex.mjs.map +1 -0
- package/es/ColorSwatches/style.mjs +36 -0
- package/es/ColorSwatches/style.mjs.map +1 -1
- package/es/ColorSwatches/type.d.mts +12 -2
- package/es/ConfigProvider/cdnAssets.mjs +6 -0
- package/es/ConfigProvider/cdnAssets.mjs.map +1 -0
- package/es/ConfigProvider/index.mjs +2 -1
- package/es/ConfigProvider/index.mjs.map +1 -1
- 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/ContextMenu/store.d.mts +0 -1
- package/es/ContextMenu/store.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 +6 -6
- package/es/DraggablePanel/atoms.mjs.map +1 -1
- package/es/DraggableSideNav/DraggableSideNav.mjs +5 -5
- 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.d.mts +1 -0
- package/es/Drawer/atoms.mjs +7 -7
- package/es/Drawer/atoms.mjs.map +1 -1
- package/es/Drawer/constants.d.mts +1 -0
- package/es/Drawer/style.mjs.map +1 -1
- package/es/DropdownMenu/atoms.mjs +23 -23
- 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/EditableText/ControlInput.mjs +42 -29
- package/es/EditableText/ControlInput.mjs.map +1 -1
- package/es/EditableText/EditableText.mjs +2 -2
- package/es/EditableText/EditableText.mjs.map +1 -1
- package/es/EditorSlashMenu/atoms.mjs +12 -12
- package/es/EditorSlashMenu/atoms.mjs.map +1 -1
- package/es/EmojiPicker/EmojiPicker.mjs +10 -16
- 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/EmojiPicker/useEmojiMartI18n.mjs +37 -0
- package/es/EmojiPicker/useEmojiMartI18n.mjs.map +1 -0
- package/es/FileTypeIcon/type.d.mts +1 -0
- package/es/FloatingPanel/FloatingPanel.mjs +2 -2
- package/es/FloatingPanel/FloatingPanel.mjs.map +1 -1
- package/es/FloatingPanel/style.mjs +3 -2
- package/es/FloatingPanel/style.mjs.map +1 -1
- package/es/Form/Form.mjs +6 -2
- package/es/Form/Form.mjs.map +1 -1
- package/es/Form/style.mjs +3 -3
- package/es/Form/style.mjs.map +1 -1
- package/es/Form/type.d.mts +8 -0
- package/es/FormKit/List.mjs +2 -2
- package/es/FormKit/List.mjs.map +1 -1
- package/es/FormKit/engine/tanstack.mjs +1 -1
- package/es/FormKit/engine/tanstack.mjs.map +1 -1
- package/es/Grid/style.mjs +1 -1
- package/es/Grid/style.mjs.map +1 -1
- package/es/GroupAvatar/type.d.mts +1 -0
- 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/const.d.mts +1 -0
- package/es/Highlighter/style.mjs +2 -2
- package/es/Highlighter/style.mjs.map +1 -1
- package/es/HotkeyInput/HotkeyInput.mjs +1 -1
- package/es/HotkeyInput/HotkeyInput.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/Image/type.d.mts +1 -0
- package/es/Image/viewer/ImageViewer.mjs +2 -1
- package/es/Image/viewer/ImageViewer.mjs.map +1 -1
- package/es/Image/viewer/Toolbar.mjs +19 -6
- package/es/Image/viewer/Toolbar.mjs.map +1 -1
- package/es/Image/viewer/ViewerChrome.mjs.map +1 -1
- package/es/ImageSelect/ImageSelect.mjs +1 -1
- package/es/ImageSelect/ImageSelect.mjs.map +1 -1
- package/es/Input/Input.mjs +7 -5
- package/es/Input/Input.mjs.map +1 -1
- package/es/Input/TextArea.mjs +1 -1
- package/es/Input/TextArea.mjs.map +1 -1
- package/es/Input/style.d.mts +1 -0
- package/es/Input/style.mjs +3 -3
- package/es/Input/style.mjs.map +1 -1
- package/es/Input/type.d.mts +1 -0
- 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/Markdown/plugins/remarkColor.d.mts +1 -0
- package/es/Markdown/plugins/remarkGfmPlus.d.mts +1 -0
- package/es/Markdown/plugins/remarkVideo.d.mts +1 -0
- 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/Mermaid/const.d.mts +1 -0
- package/es/Modal/atoms.d.mts +1 -0
- package/es/Modal/atoms.mjs +8 -8
- package/es/Modal/atoms.mjs.map +1 -1
- package/es/Modal/constants.d.mts +1 -0
- package/es/Modal/type.d.mts +1 -0
- package/es/Pagination/Pagination.mjs +182 -42
- 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 +3 -3
- package/es/Popover/PopoverInGroup.mjs.map +1 -1
- package/es/Popover/atoms.mjs +7 -7
- package/es/Popover/atoms.mjs.map +1 -1
- package/es/Popover/style.mjs +1 -1
- package/es/Popover/style.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 +134 -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 +287 -0
- package/es/ProTable/style.mjs.map +1 -0
- package/es/ProTable/type.d.mts +400 -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/Radio/type.d.mts +1 -0
- package/es/Rate/Rate.mjs +1 -1
- package/es/Rate/Rate.mjs.map +1 -1
- package/es/ScrollArea/atoms.mjs +4 -4
- package/es/ScrollArea/atoms.mjs.map +1 -1
- package/es/ScrollShadow/ScrollShadow.mjs +1 -1
- package/es/ScrollShadow/ScrollShadow.mjs.map +1 -1
- package/es/SearchBar/SearchBar.mjs +31 -25
- package/es/SearchBar/SearchBar.mjs.map +1 -1
- package/es/Segmented/Segmented.mjs +4 -4
- package/es/Segmented/Segmented.mjs.map +1 -1
- package/es/Segmented/atoms.d.mts +1 -0
- 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 +5 -5
- 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/Slider/type.d.mts +1 -0
- package/es/Switch/Switch.mjs +9 -2
- package/es/Switch/Switch.mjs.map +1 -1
- package/es/Switch/atoms.d.mts +8 -1
- package/es/Switch/atoms.mjs +23 -7
- package/es/Switch/atoms.mjs.map +1 -1
- package/es/Switch/style.mjs +33 -2
- package/es/Switch/style.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 +158 -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 +122 -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 +179 -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 +37 -23
- 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/Tabs/style.d.mts +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 +1 -0
- package/es/Text/style.mjs +3 -3
- package/es/Text/style.mjs.map +1 -1
- package/es/Toast/dodge.mjs +0 -1
- package/es/Toast/dodge.mjs.map +1 -1
- package/es/Toast/dodge.stylex.mjs +1 -4
- package/es/Toast/dodge.stylex.mjs.map +1 -1
- package/es/Toast/style.mjs +1 -1
- package/es/Toast/style.mjs.map +1 -1
- package/es/ToggleGroup/ToggleGroup.mjs +4 -4
- package/es/ToggleGroup/ToggleGroup.mjs.map +1 -1
- package/es/ToggleGroup/atoms.d.mts +1 -0
- 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/TooltipInGroup.mjs +1 -1
- package/es/Tooltip/TooltipInGroup.mjs.map +1 -1
- package/es/Tooltip/TooltipStandalone.mjs +4 -4
- package/es/Tooltip/TooltipStandalone.mjs.map +1 -1
- package/es/Tooltip/style.mjs +2 -2
- package/es/Tooltip/style.mjs.map +1 -1
- package/es/Tree/Tree.mjs +3 -3
- 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 +46 -0
- package/es/Video/Video.mjs.map +1 -0
- package/es/Video/context.mjs +14 -0
- package/es/Video/context.mjs.map +1 -0
- package/es/Video/index.d.mts +23 -39
- package/es/Video/index.mjs +21 -111
- package/es/Video/index.mjs.map +1 -1
- package/es/Video/parts/Caption.d.mts +9 -0
- package/es/Video/parts/Caption.mjs +37 -0
- package/es/Video/parts/Caption.mjs.map +1 -0
- package/es/Video/parts/CenterPlay.d.mts +8 -0
- package/es/Video/parts/CenterPlay.mjs +34 -0
- package/es/Video/parts/CenterPlay.mjs.map +1 -0
- package/es/Video/parts/Controls.d.mts +9 -0
- package/es/Video/parts/Controls.mjs +128 -0
- package/es/Video/parts/Controls.mjs.map +1 -0
- package/es/Video/parts/Frame.d.mts +9 -0
- package/es/Video/parts/Frame.mjs +101 -0
- package/es/Video/parts/Frame.mjs.map +1 -0
- package/es/Video/parts/HoverPreview.mjs +93 -0
- package/es/Video/parts/HoverPreview.mjs.map +1 -0
- package/es/Video/parts/LoadError.d.mts +8 -0
- package/es/Video/parts/LoadError.mjs +47 -0
- package/es/Video/parts/LoadError.mjs.map +1 -0
- package/es/Video/parts/PlayPauseIcon.mjs +48 -0
- package/es/Video/parts/PlayPauseIcon.mjs.map +1 -0
- package/es/Video/parts/RateMenu.mjs +48 -0
- package/es/Video/parts/RateMenu.mjs.map +1 -0
- package/es/Video/parts/Root.d.mts +9 -0
- package/es/Video/parts/Root.mjs +110 -0
- package/es/Video/parts/Root.mjs.map +1 -0
- package/es/Video/parts/SectionList.d.mts +9 -0
- package/es/Video/parts/SectionList.mjs +32 -0
- package/es/Video/parts/SectionList.mjs.map +1 -0
- package/es/Video/parts/SectionMenu.mjs +63 -0
- package/es/Video/parts/SectionMenu.mjs.map +1 -0
- package/es/Video/parts/Timeline.d.mts +9 -0
- package/es/Video/parts/Timeline.mjs +169 -0
- package/es/Video/parts/Timeline.mjs.map +1 -0
- package/es/Video/store.mjs +241 -0
- package/es/Video/store.mjs.map +1 -0
- package/es/Video/style.mjs +393 -23
- package/es/Video/style.mjs.map +1 -1
- package/es/Video/time.mjs +60 -0
- package/es/Video/time.mjs.map +1 -0
- package/es/Video/type.d.mts +125 -0
- package/es/Video/useControlsIdle.mjs +39 -0
- package/es/Video/useControlsIdle.mjs.map +1 -0
- package/es/Video/useFullscreen.mjs +17 -0
- package/es/Video/useFullscreen.mjs.map +1 -0
- package/es/Video/useKeyboard.mjs +60 -0
- package/es/Video/useKeyboard.mjs.map +1 -0
- package/es/Video/useVideo.d.mts +9 -0
- package/es/Video/useVideo.mjs +17 -0
- package/es/Video/useVideo.mjs.map +1 -0
- package/es/awesome/Features/FeatureItem.mjs +2 -2
- package/es/awesome/Features/FeatureItem.mjs.map +1 -1
- package/es/awesome/Giscus/style.mjs +9 -9
- package/es/awesome/Giscus/style.mjs.map +1 -1
- package/es/awesome/Grainient/Grainient.d.mts +11 -0
- package/es/awesome/Grainient/Grainient.mjs +314 -0
- package/es/awesome/Grainient/Grainient.mjs.map +1 -0
- package/es/awesome/Grainient/index.d.mts +3 -0
- package/es/awesome/Grainient/style.mjs +23 -0
- package/es/awesome/Grainient/style.mjs.map +1 -0
- package/es/awesome/Grainient/type.d.mts +121 -0
- package/es/awesome/GridBackground/GridBackground.mjs +1 -1
- package/es/awesome/GridBackground/GridBackground.mjs.map +1 -1
- package/es/awesome/GridBackground/GridShowcase.mjs +4 -4
- package/es/awesome/GridBackground/GridShowcase.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/Spline/ParentSize.mjs +1 -1
- package/es/awesome/Spline/ParentSize.mjs.map +1 -1
- package/es/awesome/TypewriterEffect/TypewriterEffect.mjs +4 -4
- package/es/awesome/TypewriterEffect/TypewriterEffect.mjs.map +1 -1
- package/es/awesome/index.d.mts +4 -1
- package/es/awesome/index.mjs +2 -1
- package/es/awesome/landingActions.mjs +2 -2
- package/es/awesome/landingActions.mjs.map +1 -1
- package/es/chat/BackBottom/BackBottom.mjs +1 -1
- package/es/chat/BackBottom/BackBottom.mjs.map +1 -1
- package/es/chat/BackBottom/type.d.mts +2 -2
- package/es/chat/ChatItem/ChatItem.mjs +2 -2
- package/es/chat/ChatItem/ChatItem.mjs.map +1 -1
- package/es/chat/EditableMessage/EditableMessage.mjs +4 -4
- package/es/chat/EditableMessage/EditableMessage.mjs.map +1 -1
- package/es/chat/EditableMessageList/EditableMessageList.mjs +2 -2
- package/es/chat/EditableMessageList/EditableMessageList.mjs.map +1 -1
- package/es/chat/EditableMessageList/messageReducer.mjs +30 -23
- package/es/chat/EditableMessageList/messageReducer.mjs.map +1 -1
- package/es/chat/MessageInput/MessageInput.mjs +3 -3
- package/es/chat/MessageInput/MessageInput.mjs.map +1 -1
- package/es/chat/MessageModal/MessageModal.mjs +1 -1
- package/es/chat/MessageModal/MessageModal.mjs.map +1 -1
- package/es/chat/TokenTag/TokenTag.mjs +2 -3
- package/es/chat/TokenTag/TokenTag.mjs.map +1 -1
- package/es/color/index.d.mts +2 -1
- package/es/color/index.mjs +2 -1
- package/es/color/status/error.mjs +67 -0
- package/es/color/status/error.mjs.map +1 -0
- package/es/color/status/index.d.mts +11 -0
- package/es/color/status/index.mjs +15 -0
- package/es/color/status/index.mjs.map +1 -0
- package/es/color/status/info.mjs +67 -0
- package/es/color/status/info.mjs.map +1 -0
- package/es/color/status/success.mjs +67 -0
- package/es/color/status/success.mjs.map +1 -0
- package/es/color/status/warning.mjs +67 -0
- package/es/color/status/warning.mjs.map +1 -0
- package/es/color/types.d.mts +1 -0
- package/es/dashboard/AuthLayout/Aside.d.mts +10 -0
- package/es/dashboard/AuthLayout/Aside.mjs +31 -0
- package/es/dashboard/AuthLayout/Aside.mjs.map +1 -0
- package/es/dashboard/AuthLayout/AuthLayout.d.mts +3 -1
- package/es/dashboard/AuthLayout/AuthLayout.mjs +97 -37
- package/es/dashboard/AuthLayout/AuthLayout.mjs.map +1 -1
- package/es/dashboard/AuthLayout/index.d.mts +3 -2
- package/es/dashboard/AuthLayout/style.mjs +109 -1
- package/es/dashboard/AuthLayout/style.mjs.map +1 -1
- package/es/dashboard/AuthLayout/type.d.mts +38 -2
- package/es/dashboard/AuthTools/AuthLocaleSwitch.d.mts +10 -0
- package/es/dashboard/AuthTools/AuthLocaleSwitch.mjs +33 -0
- package/es/dashboard/AuthTools/AuthLocaleSwitch.mjs.map +1 -0
- package/es/dashboard/AuthTools/AuthThemeSwitch.d.mts +10 -0
- package/es/dashboard/AuthTools/AuthThemeSwitch.mjs +59 -0
- package/es/dashboard/AuthTools/AuthThemeSwitch.mjs.map +1 -0
- package/es/dashboard/AuthTools/index.d.mts +4 -0
- package/es/dashboard/AuthTools/style.mjs +27 -0
- package/es/dashboard/AuthTools/style.mjs.map +1 -0
- package/es/dashboard/AuthTools/type.d.mts +29 -0
- package/es/dashboard/ChartGrid/ChartGrid.d.mts +10 -0
- package/es/dashboard/ChartGrid/ChartGrid.mjs +19 -0
- package/es/dashboard/ChartGrid/ChartGrid.mjs.map +1 -0
- package/es/dashboard/ChartGrid/index.d.mts +3 -0
- package/es/dashboard/ChartGrid/style.mjs +18 -0
- package/es/dashboard/ChartGrid/style.mjs.map +1 -0
- package/es/dashboard/ChartGrid/type.d.mts +8 -0
- package/es/dashboard/ConsoleNav/ConsoleNav.mjs +3 -3
- package/es/dashboard/ConsoleNav/ConsoleNav.mjs.map +1 -1
- package/es/dashboard/ConsoleNav/Skeleton.d.mts +15 -0
- package/es/dashboard/ConsoleNav/Skeleton.mjs +82 -0
- package/es/dashboard/ConsoleNav/Skeleton.mjs.map +1 -0
- package/es/dashboard/ConsoleNav/index.d.mts +3 -2
- package/es/dashboard/ConsoleNav/style.mjs +20 -2
- package/es/dashboard/ConsoleNav/style.mjs.map +1 -1
- package/es/dashboard/ConsoleNav/type.d.mts +13 -0
- package/es/dashboard/ConsoleShell/ConsoleShell.d.mts +1 -1
- package/es/dashboard/ConsoleShell/ConsoleShell.mjs +26 -6
- package/es/dashboard/ConsoleShell/ConsoleShell.mjs.map +1 -1
- package/es/dashboard/ConsoleShell/style.mjs +11 -1
- package/es/dashboard/ConsoleShell/style.mjs.map +1 -1
- package/es/dashboard/ConsoleShell/type.d.mts +11 -0
- package/es/dashboard/FilterSidebar/FilterSidebar.mjs +18 -17
- package/es/dashboard/FilterSidebar/FilterSidebar.mjs.map +1 -1
- package/es/dashboard/FilterSidebar/style.mjs +2 -2
- package/es/dashboard/FilterSidebar/style.mjs.map +1 -1
- package/es/dashboard/FilterStrip/FilterStrip.d.mts +11 -0
- package/es/dashboard/FilterStrip/FilterStrip.mjs +55 -0
- package/es/dashboard/FilterStrip/FilterStrip.mjs.map +1 -0
- package/es/dashboard/FilterStrip/index.d.mts +3 -0
- package/es/dashboard/FilterStrip/style.mjs +78 -0
- package/es/dashboard/FilterStrip/style.mjs.map +1 -0
- package/es/dashboard/FilterStrip/type.d.mts +25 -0
- package/es/dashboard/LabelWithKey/LabelWithKey.d.mts +10 -0
- package/es/dashboard/LabelWithKey/LabelWithKey.mjs +18 -0
- package/es/dashboard/LabelWithKey/LabelWithKey.mjs.map +1 -0
- package/es/dashboard/LabelWithKey/index.d.mts +3 -0
- package/es/dashboard/LabelWithKey/type.d.mts +11 -0
- package/es/dashboard/MetricStrip/MetricCell.mjs +92 -0
- package/es/dashboard/MetricStrip/MetricCell.mjs.map +1 -0
- package/es/dashboard/MetricStrip/MetricStrip.d.mts +13 -0
- package/es/dashboard/MetricStrip/MetricStrip.mjs +47 -0
- package/es/dashboard/MetricStrip/MetricStrip.mjs.map +1 -0
- package/es/dashboard/MetricStrip/index.d.mts +3 -0
- package/es/dashboard/MetricStrip/style.mjs +169 -0
- package/es/dashboard/MetricStrip/style.mjs.map +1 -0
- package/es/dashboard/MetricStrip/type.d.mts +38 -0
- package/es/dashboard/PageSkeleton/PageSkeleton.mjs +20 -18
- package/es/dashboard/PageSkeleton/PageSkeleton.mjs.map +1 -1
- package/es/dashboard/PageSkeleton/style.mjs +2 -1
- package/es/dashboard/PageSkeleton/style.mjs.map +1 -1
- package/es/dashboard/PageToolbar/PageToolbar.d.mts +10 -0
- package/es/dashboard/PageToolbar/PageToolbar.mjs +22 -0
- package/es/dashboard/PageToolbar/PageToolbar.mjs.map +1 -0
- package/es/dashboard/PageToolbar/index.d.mts +3 -0
- package/es/dashboard/PageToolbar/style.mjs +36 -0
- package/es/dashboard/PageToolbar/style.mjs.map +1 -0
- package/es/dashboard/PageToolbar/type.d.mts +11 -0
- package/es/dashboard/PanelSurface/PanelSurface.d.mts +10 -0
- package/es/dashboard/PanelSurface/PanelSurface.mjs +40 -0
- package/es/dashboard/PanelSurface/PanelSurface.mjs.map +1 -0
- package/es/dashboard/PanelSurface/index.d.mts +3 -0
- package/es/dashboard/PanelSurface/style.mjs +25 -0
- package/es/dashboard/PanelSurface/style.mjs.map +1 -0
- package/es/dashboard/PanelSurface/type.d.mts +17 -0
- package/es/dashboard/Section/Section.d.mts +10 -0
- package/es/dashboard/Section/Section.mjs +81 -0
- package/es/dashboard/Section/Section.mjs.map +1 -0
- package/es/dashboard/Section/index.d.mts +3 -0
- package/es/dashboard/Section/style.mjs +31 -0
- package/es/dashboard/Section/style.mjs.map +1 -0
- package/es/dashboard/Section/type.d.mts +23 -0
- package/es/dashboard/StatCard/StatCard.d.mts +2 -1
- package/es/dashboard/StatCard/StatCard.mjs +29 -91
- package/es/dashboard/StatCard/StatCard.mjs.map +1 -1
- package/es/dashboard/StatCard/type.d.mts +18 -5
- package/es/dashboard/Surface/Surface.d.mts +4 -3
- package/es/dashboard/Surface/Surface.mjs +90 -8
- package/es/dashboard/Surface/Surface.mjs.map +1 -1
- package/es/dashboard/Surface/index.d.mts +3 -2
- package/es/dashboard/Surface/link.d.mts +16 -0
- package/es/dashboard/Surface/link.mjs +40 -0
- package/es/dashboard/Surface/link.mjs.map +1 -0
- package/es/dashboard/Surface/marker.stylex.mjs +9 -0
- package/es/dashboard/Surface/marker.stylex.mjs.map +1 -0
- package/es/dashboard/Surface/style.d.mts +2 -0
- package/es/dashboard/Surface/style.mjs +156 -14
- package/es/dashboard/Surface/style.mjs.map +1 -1
- package/es/dashboard/Surface/type.d.mts +29 -1
- package/es/dashboard/TableIconActions/TableIconActions.d.mts +17 -0
- package/es/dashboard/TableIconActions/TableIconActions.mjs +39 -0
- package/es/dashboard/TableIconActions/TableIconActions.mjs.map +1 -0
- package/es/dashboard/TableIconActions/index.d.mts +3 -0
- package/es/dashboard/TableIconActions/type.d.mts +17 -0
- package/es/dashboard/TitleWithTips/TitleWithTips.d.mts +10 -0
- package/es/dashboard/TitleWithTips/TitleWithTips.mjs +28 -0
- package/es/dashboard/TitleWithTips/TitleWithTips.mjs.map +1 -0
- package/es/dashboard/TitleWithTips/index.d.mts +3 -0
- package/es/dashboard/TitleWithTips/type.d.mts +10 -0
- package/es/dashboard/index.d.mts +38 -4
- package/es/dashboard/index.mjs +18 -4
- package/es/eslint/noBaseUiSubpath.mjs +2 -1
- package/es/eslint/noBaseUiSubpath.mjs.map +1 -1
- package/es/hooks/useControlledState.mjs +20 -0
- package/es/hooks/useControlledState.mjs.map +1 -0
- package/es/hooks/useHighlight.mjs +2 -2
- package/es/hooks/useHighlight.mjs.map +1 -1
- package/es/hooks/useHover.mjs +22 -0
- package/es/hooks/useHover.mjs.map +1 -0
- package/es/hooks/useMarkdown/utils.d.mts +1 -0
- package/es/hooks/useScroll.d.mts +8 -0
- package/es/hooks/useScroll.mjs +33 -0
- package/es/hooks/useScroll.mjs.map +1 -0
- package/es/hooks/useSize.mjs +26 -0
- package/es/hooks/useSize.mjs.map +1 -0
- 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 -2
- package/es/i18n/resources/en/index.mjs +6 -2
- 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/en/video.d.mts +23 -0
- package/es/i18n/resources/en/video.mjs +24 -0
- package/es/i18n/resources/en/video.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 -2
- package/es/i18n/resources/zhCn/index.mjs +7 -3
- 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/resources/zhCn/video.d.mts +23 -0
- package/es/i18n/resources/zhCn/video.mjs +24 -0
- package/es/i18n/resources/zhCn/video.mjs.map +1 -0
- package/es/i18n/types.d.mts +4 -1
- package/es/index.d.mts +21 -8
- package/es/index.mjs +18 -9
- package/es/internal/menu/itemInterface.d.mts +1 -0
- package/es/internal/menu/renderUtils.d.mts +1 -0
- package/es/internal/overflow/OverflowList.mjs +71 -0
- package/es/internal/overflow/OverflowList.mjs.map +1 -0
- package/es/internal/virtual/VirtualScrollArea.mjs +1 -1
- package/es/internal/virtual/VirtualScrollArea.mjs.map +1 -1
- 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/mdx/mdxComponents/Video.d.mts +2 -1
- package/es/mdx/mdxComponents/Video.mjs +5 -3
- package/es/mdx/mdxComponents/Video.mjs.map +1 -1
- package/es/mobile/ChatInputArea/ChatInputArea.mjs +1 -1
- package/es/mobile/ChatInputArea/ChatInputArea.mjs.map +1 -1
- package/es/mobile/TabBar/TabBar.mjs +1 -1
- package/es/mobile/TabBar/TabBar.mjs.map +1 -1
- package/es/node_modules/.pnpm/@eslint_core@1.2.1/node_modules/@eslint/core/dist/esm/types.d.mts +2 -46
- package/es/node_modules/.pnpm/@eslint_plugin-kit@0.7.3/node_modules/@eslint/plugin-kit/dist/cjs/index.d.mts +1 -1
- package/es/node_modules/.pnpm/@types_estree@1.0.9/node_modules/@types/estree/index.d.mts +1 -4
- package/es/node_modules/.pnpm/@types_mdx@2.0.14/node_modules/@types/mdx/types.d.mts +1 -0
- package/es/node_modules/.pnpm/eslint@10.12.0_jiti@2.6.1_supports-color@10.2.2/node_modules/eslint/lib/types/index.d.mts +2 -1
- package/es/storybook/StoryBook/style.mjs +2 -0
- package/es/storybook/StoryBook/style.mjs.map +1 -1
- package/es/style.css +3643 -996
- package/es/styles/createGlobalStyle.d.mts +1 -0
- package/es/styles/createGlobalStyle.mjs +1 -1
- package/es/styles/index.d.mts +4 -2
- package/es/styles/index.mjs +6 -4
- package/es/styles/stylex/cssVar.stylex.mjs +3 -0
- package/es/styles/stylex/cssVar.stylex.mjs.map +1 -1
- package/es/styles/stylex/props.mjs +2 -2
- package/es/styles/stylex/props.mjs.map +1 -1
- package/es/styles/theme/createLobeToken.d.mts +12 -7
- package/es/styles/theme/createLobeToken.mjs +3 -2
- package/es/styles/theme/createLobeToken.mjs.map +1 -1
- package/es/styles/theme/customPalette.d.mts +6 -0
- package/es/styles/theme/customPalette.mjs +28 -0
- package/es/styles/theme/customPalette.mjs.map +1 -0
- package/es/styles/theme/customPrimary.d.mts +7 -0
- package/es/styles/theme/customPrimary.mjs +101 -0
- package/es/styles/theme/customPrimary.mjs.map +1 -0
- package/es/styles/theme/generateColorPalette.d.mts +1 -0
- package/es/styles/theme/scope.d.mts +9 -5
- package/es/styles/theme/scope.mjs +73 -18
- package/es/styles/theme/scope.mjs.map +1 -1
- package/es/styles/theme/themeCss.d.mts +3 -0
- package/es/styles/theme/themeCss.mjs +39 -2
- package/es/styles/theme/themeCss.mjs.map +1 -1
- package/es/styles/theme/token/legacy.mjs +12 -12
- package/es/styles/theme/token/legacy.mjs.map +1 -1
- package/es/styles/theme/token/neutral.mjs +17 -9
- package/es/styles/theme/token/neutral.mjs.map +1 -1
- package/es/styles/theme/token/neutralText.mjs +91 -0
- package/es/styles/theme/token/neutralText.mjs.map +1 -0
- package/es/styles/theme/token/palette.mjs +16 -41
- package/es/styles/theme/token/palette.mjs.map +1 -1
- package/es/styles/theme/token/primary.mjs +6 -2
- package/es/styles/theme/token/primary.mjs.map +1 -1
- package/es/styles/theme/token/static.mjs +3 -0
- package/es/styles/theme/token/static.mjs.map +1 -1
- package/es/theme.css +301 -290
- package/es/types/customToken.d.mts +1 -0
- package/es/utils/colorMath.mjs +52 -0
- package/es/utils/colorMath.mjs.map +1 -0
- package/es/utils/formatNumber.mjs +7 -0
- package/es/utils/formatNumber.mjs.map +1 -0
- package/es/utils/genCdnUrl.mjs +6 -3
- package/es/utils/genCdnUrl.mjs.map +1 -1
- package/es/utils/hashString.mjs +19 -0
- package/es/utils/hashString.mjs.map +1 -0
- package/es/utils/mergeRefs.mjs +20 -0
- package/es/utils/mergeRefs.mjs.map +1 -0
- package/es/utils/placement.d.mts +5 -5
- package/es/utils/placement.mjs.map +1 -1
- package/package.json +25 -46
- 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
- package/es/Video/marker.stylex.mjs +0 -9
- package/es/Video/marker.stylex.mjs.map +0 -1
- package/es/dashboard/StatCard/style.mjs +0 -105
- package/es/dashboard/StatCard/style.mjs.map +0 -1
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
import { pointerToPolar, stepCircular, toPosition } from "./geometry.mjs";
|
|
2
|
+
import * as React$1 from "react";
|
|
3
|
+
import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
|
|
4
|
+
import { clsx } from "clsx";
|
|
5
|
+
//#region src/DatePicker/core/PickerPanel/TimePanel/TimeClock/ClockDial.tsx
|
|
6
|
+
const STEP_KEYS = {
|
|
7
|
+
ArrowDown: -1,
|
|
8
|
+
ArrowLeft: -1,
|
|
9
|
+
ArrowRight: 1,
|
|
10
|
+
ArrowUp: 1
|
|
11
|
+
};
|
|
12
|
+
function ClockDial({ ariaPrefix, enabledValues, label, numbers, onDone, onPick, pickAt, prefixCls, selected, selectedAngle, selectedInner, selectedOffTick }) {
|
|
13
|
+
const cls = `${prefixCls}-time-clock`;
|
|
14
|
+
const [dragging, setDragging] = React$1.useState(false);
|
|
15
|
+
const lastPickedRef = React$1.useRef(null);
|
|
16
|
+
const applyPointer = (event) => {
|
|
17
|
+
const { angle, distance } = pointerToPolar(event.currentTarget, event.clientX, event.clientY);
|
|
18
|
+
const value = pickAt(angle, distance);
|
|
19
|
+
if (value === void 0 || value === lastPickedRef.current) return;
|
|
20
|
+
lastPickedRef.current = value;
|
|
21
|
+
onPick(value);
|
|
22
|
+
};
|
|
23
|
+
const radius = selectedInner ? 58 : 88;
|
|
24
|
+
const knob = toPosition(selectedAngle, radius);
|
|
25
|
+
return /* @__PURE__ */ jsxs("div", {
|
|
26
|
+
"aria-label": label,
|
|
27
|
+
className: clsx(`${cls}-dial`, dragging && `${cls}-dial-dragging`),
|
|
28
|
+
role: "group",
|
|
29
|
+
style: {
|
|
30
|
+
height: 224,
|
|
31
|
+
width: 224
|
|
32
|
+
},
|
|
33
|
+
tabIndex: 0,
|
|
34
|
+
onPointerCancel: () => setDragging(false),
|
|
35
|
+
onKeyDown: (event) => {
|
|
36
|
+
const direction = STEP_KEYS[event.key];
|
|
37
|
+
if (direction) {
|
|
38
|
+
const next = stepCircular(selected, enabledValues, direction);
|
|
39
|
+
if (next !== void 0) onPick(next);
|
|
40
|
+
} else if (event.key === "Enter") onDone();
|
|
41
|
+
else return;
|
|
42
|
+
event.preventDefault();
|
|
43
|
+
event.stopPropagation();
|
|
44
|
+
},
|
|
45
|
+
onPointerDown: (event) => {
|
|
46
|
+
if (event.button !== 0) return;
|
|
47
|
+
event.currentTarget.setPointerCapture?.(event.pointerId);
|
|
48
|
+
lastPickedRef.current = selected;
|
|
49
|
+
setDragging(true);
|
|
50
|
+
applyPointer(event);
|
|
51
|
+
},
|
|
52
|
+
onPointerMove: (event) => {
|
|
53
|
+
if (dragging) applyPointer(event);
|
|
54
|
+
},
|
|
55
|
+
onPointerUp: (event) => {
|
|
56
|
+
if (!dragging) return;
|
|
57
|
+
applyPointer(event);
|
|
58
|
+
setDragging(false);
|
|
59
|
+
onDone();
|
|
60
|
+
},
|
|
61
|
+
children: [selected !== null && /* @__PURE__ */ jsxs(Fragment$1, { children: [
|
|
62
|
+
/* @__PURE__ */ jsx("span", {
|
|
63
|
+
"aria-hidden": true,
|
|
64
|
+
className: `${cls}-hand`,
|
|
65
|
+
style: {
|
|
66
|
+
height: radius,
|
|
67
|
+
top: 112 - radius,
|
|
68
|
+
transform: `rotate(${selectedAngle}deg)`
|
|
69
|
+
}
|
|
70
|
+
}),
|
|
71
|
+
/* @__PURE__ */ jsx("span", {
|
|
72
|
+
"aria-hidden": true,
|
|
73
|
+
className: `${cls}-center`
|
|
74
|
+
}),
|
|
75
|
+
/* @__PURE__ */ jsx("span", {
|
|
76
|
+
"aria-hidden": true,
|
|
77
|
+
style: {
|
|
78
|
+
left: knob.x,
|
|
79
|
+
top: knob.y
|
|
80
|
+
},
|
|
81
|
+
className: clsx(`${cls}-knob`, selectedInner && `${cls}-knob-inner`, selectedOffTick && `${cls}-knob-off-tick`)
|
|
82
|
+
})
|
|
83
|
+
] }), numbers.map((number) => {
|
|
84
|
+
const position = toPosition(number.angle, number.inner ? 58 : 88);
|
|
85
|
+
return /* @__PURE__ */ jsx("button", {
|
|
86
|
+
"aria-label": `${ariaPrefix} ${number.value}`,
|
|
87
|
+
"aria-pressed": number.value === selected,
|
|
88
|
+
disabled: number.disabled,
|
|
89
|
+
style: {
|
|
90
|
+
left: position.x,
|
|
91
|
+
top: position.y
|
|
92
|
+
},
|
|
93
|
+
tabIndex: -1,
|
|
94
|
+
type: "button",
|
|
95
|
+
className: clsx(`${cls}-number`, number.inner && `${cls}-number-inner`, number.value === selected && `${cls}-number-selected`),
|
|
96
|
+
onClick: () => {
|
|
97
|
+
onPick(number.value);
|
|
98
|
+
onDone();
|
|
99
|
+
},
|
|
100
|
+
children: number.label
|
|
101
|
+
}, `${number.inner ? "inner" : "outer"}-${number.value}`);
|
|
102
|
+
})]
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
//#endregion
|
|
106
|
+
export { ClockDial as default };
|
|
107
|
+
|
|
108
|
+
//# sourceMappingURL=ClockDial.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ClockDial.mjs","names":["React"],"sources":["../../../../../../src/DatePicker/core/PickerPanel/TimePanel/TimeClock/ClockDial.tsx"],"sourcesContent":["import { clsx } from 'clsx';\nimport * as React from 'react';\n\nimport {\n DIAL_SIZE,\n type DialNumber,\n INNER_RADIUS,\n OUTER_RADIUS,\n pointerToPolar,\n stepCircular,\n toPosition,\n} from './geometry';\n\nexport interface ClockDialProps {\n ariaPrefix: string;\n enabledValues: number[];\n label: string;\n numbers: DialNumber[];\n onDone: () => void;\n onPick: (value: number) => void;\n pickAt: (angle: number, distance: number) => number | undefined;\n prefixCls: string;\n selected: number | null;\n selectedAngle: number;\n selectedInner: boolean;\n selectedOffTick: boolean;\n}\n\nconst STEP_KEYS: Record<string, 1 | -1> = {\n ArrowDown: -1,\n ArrowLeft: -1,\n ArrowRight: 1,\n ArrowUp: 1,\n};\n\nexport default function ClockDial({\n ariaPrefix,\n enabledValues,\n label,\n numbers,\n onDone,\n onPick,\n pickAt,\n prefixCls,\n selected,\n selectedAngle,\n selectedInner,\n selectedOffTick,\n}: ClockDialProps) {\n const cls = `${prefixCls}-time-clock`;\n const [dragging, setDragging] = React.useState(false);\n const lastPickedRef = React.useRef<number | null>(null);\n\n const applyPointer = (event: React.PointerEvent<HTMLDivElement>) => {\n const { angle, distance } = pointerToPolar(event.currentTarget, event.clientX, event.clientY);\n const value = pickAt(angle, distance);\n if (value === undefined || value === lastPickedRef.current) return;\n lastPickedRef.current = value;\n onPick(value);\n };\n\n const radius = selectedInner ? INNER_RADIUS : OUTER_RADIUS;\n const knob = toPosition(selectedAngle, radius);\n\n return (\n <div\n aria-label={label}\n className={clsx(`${cls}-dial`, dragging && `${cls}-dial-dragging`)}\n role=\"group\"\n style={{ height: DIAL_SIZE, width: DIAL_SIZE }}\n tabIndex={0}\n onPointerCancel={() => setDragging(false)}\n onKeyDown={(event) => {\n const direction = STEP_KEYS[event.key];\n if (direction) {\n const next = stepCircular(selected, enabledValues, direction);\n if (next !== undefined) onPick(next);\n } else if (event.key === 'Enter') {\n onDone();\n } else {\n return;\n }\n event.preventDefault();\n event.stopPropagation();\n }}\n onPointerDown={(event) => {\n if (event.button !== 0) return;\n event.currentTarget.setPointerCapture?.(event.pointerId);\n lastPickedRef.current = selected;\n setDragging(true);\n applyPointer(event);\n }}\n onPointerMove={(event) => {\n if (dragging) applyPointer(event);\n }}\n onPointerUp={(event) => {\n if (!dragging) return;\n applyPointer(event);\n setDragging(false);\n onDone();\n }}\n >\n {selected !== null && (\n <>\n <span\n aria-hidden\n className={`${cls}-hand`}\n style={{\n height: radius,\n top: DIAL_SIZE / 2 - radius,\n transform: `rotate(${selectedAngle}deg)`,\n }}\n />\n <span aria-hidden className={`${cls}-center`} />\n <span\n aria-hidden\n style={{ left: knob.x, top: knob.y }}\n className={clsx(\n `${cls}-knob`,\n selectedInner && `${cls}-knob-inner`,\n selectedOffTick && `${cls}-knob-off-tick`,\n )}\n />\n </>\n )}\n {numbers.map((number) => {\n const position = toPosition(number.angle, number.inner ? INNER_RADIUS : OUTER_RADIUS);\n return (\n <button\n aria-label={`${ariaPrefix} ${number.value}`}\n aria-pressed={number.value === selected}\n disabled={number.disabled}\n key={`${number.inner ? 'inner' : 'outer'}-${number.value}`}\n style={{ left: position.x, top: position.y }}\n tabIndex={-1}\n type=\"button\"\n className={clsx(\n `${cls}-number`,\n number.inner && `${cls}-number-inner`,\n number.value === selected && `${cls}-number-selected`,\n )}\n onClick={() => {\n onPick(number.value);\n onDone();\n }}\n >\n {number.label}\n </button>\n );\n })}\n </div>\n );\n}\n"],"mappings":";;;;;AA4BA,MAAM,YAAoC;CACxC,WAAW;CACX,WAAW;CACX,YAAY;CACZ,SAAS;AACX;AAEA,SAAwB,UAAU,EAChC,YACA,eACA,OACA,SACA,QACA,QACA,QACA,WACA,UACA,eACA,eACA,mBACiB;CACjB,MAAM,MAAM,GAAG,UAAU;CACzB,MAAM,CAAC,UAAU,eAAeA,QAAM,SAAS,KAAK;CACpD,MAAM,gBAAgBA,QAAM,OAAsB,IAAI;CAEtD,MAAM,gBAAgB,UAA8C;EAClE,MAAM,EAAE,OAAO,aAAa,eAAe,MAAM,eAAe,MAAM,SAAS,MAAM,OAAO;EAC5F,MAAM,QAAQ,OAAO,OAAO,QAAQ;EACpC,IAAI,UAAU,KAAA,KAAa,UAAU,cAAc,SAAS;EAC5D,cAAc,UAAU;EACxB,OAAO,KAAK;CACd;CAEA,MAAM,SAAS,gBAAA,KAAA;CACf,MAAM,OAAO,WAAW,eAAe,MAAM;CAE7C,OACE,qBAAC,OAAD;EACE,cAAY;EACZ,WAAW,KAAK,GAAG,IAAI,QAAQ,YAAY,GAAG,IAAI,eAAe;EACjE,MAAK;EACL,OAAO;GAAE,QAAA;GAAmB,OAAA;EAAiB;EAC7C,UAAU;EACV,uBAAuB,YAAY,KAAK;EACxC,YAAY,UAAU;GACpB,MAAM,YAAY,UAAU,MAAM;GAClC,IAAI,WAAW;IACb,MAAM,OAAO,aAAa,UAAU,eAAe,SAAS;IAC5D,IAAI,SAAS,KAAA,GAAW,OAAO,IAAI;GACrC,OAAO,IAAI,MAAM,QAAQ,SACvB,OAAO;QAEP;GAEF,MAAM,eAAe;GACrB,MAAM,gBAAgB;EACxB;EACA,gBAAgB,UAAU;GACxB,IAAI,MAAM,WAAW,GAAG;GACxB,MAAM,cAAc,oBAAoB,MAAM,SAAS;GACvD,cAAc,UAAU;GACxB,YAAY,IAAI;GAChB,aAAa,KAAK;EACpB;EACA,gBAAgB,UAAU;GACxB,IAAI,UAAU,aAAa,KAAK;EAClC;EACA,cAAc,UAAU;GACtB,IAAI,CAAC,UAAU;GACf,aAAa,KAAK;GAClB,YAAY,KAAK;GACjB,OAAO;EACT;EAnCF,UAAA,CAqCG,aAAa,QACZ,qBAAA,YAAA,EAAA,UAAA;GACE,oBAAC,QAAD;IACE,eAAA;IACA,WAAW,GAAG,IAAI;IAClB,OAAO;KACL,QAAQ;KACR,KAAA,MAAqB;KACrB,WAAW,UAAU,cAAc;IACrC;GACD,CAAA;GACD,oBAAC,QAAD;IAAM,eAAA;IAAY,WAAW,GAAG,IAAI;GAAW,CAAA;GAC/C,oBAAC,QAAD;IACE,eAAA;IACA,OAAO;KAAE,MAAM,KAAK;KAAG,KAAK,KAAK;IAAE;IACnC,WAAW,KACT,GAAG,IAAI,QACP,iBAAiB,GAAG,IAAI,cACxB,mBAAmB,GAAG,IAAI,eAC5B;GACD,CAAA;EACD,EAAA,CAAA,GAEH,QAAQ,KAAK,WAAW;GACvB,MAAM,WAAW,WAAW,OAAO,OAAO,OAAO,QAAA,KAAA,EAAmC;GACpF,OACE,oBAAC,UAAD;IACE,cAAY,GAAG,WAAW,GAAG,OAAO;IACpC,gBAAc,OAAO,UAAU;IAC/B,UAAU,OAAO;IAEjB,OAAO;KAAE,MAAM,SAAS;KAAG,KAAK,SAAS;IAAE;IAC3C,UAAU;IACV,MAAK;IACL,WAAW,KACT,GAAG,IAAI,UACP,OAAO,SAAS,GAAG,IAAI,gBACvB,OAAO,UAAU,YAAY,GAAG,IAAI,iBACtC;IACA,eAAe;KACb,OAAO,OAAO,KAAK;KACnB,OAAO;IACT;IAEC,UAAA,OAAO;GACF,GAfD,GAAG,OAAO,QAAQ,UAAU,QAAQ,GAAG,OAAO,OAe7C;EAEZ,CAAC,CACE;;AAET"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
const CENTER = 112;
|
|
2
|
+
const pad = (value) => String(value).padStart(2, "0");
|
|
3
|
+
const toPosition = (angle, radius) => {
|
|
4
|
+
const rad = angle * Math.PI / 180;
|
|
5
|
+
return {
|
|
6
|
+
x: CENTER + radius * Math.sin(rad),
|
|
7
|
+
y: CENTER - radius * Math.cos(rad)
|
|
8
|
+
};
|
|
9
|
+
};
|
|
10
|
+
const pointerToPolar = (element, clientX, clientY) => {
|
|
11
|
+
const rect = element.getBoundingClientRect();
|
|
12
|
+
const scale = rect.width / 224 || 1;
|
|
13
|
+
const dx = (clientX - (rect.left + rect.width / 2)) / scale;
|
|
14
|
+
const dy = (clientY - (rect.top + rect.height / 2)) / scale;
|
|
15
|
+
return {
|
|
16
|
+
angle: (Math.atan2(dx, -dy) * 180 / Math.PI + 360) % 360,
|
|
17
|
+
distance: Math.hypot(dx, dy)
|
|
18
|
+
};
|
|
19
|
+
};
|
|
20
|
+
const isInnerRing = (distance) => distance < 73;
|
|
21
|
+
const nearestOnCircle = (target, candidates, period) => {
|
|
22
|
+
let best;
|
|
23
|
+
let bestDistance = Infinity;
|
|
24
|
+
for (const candidate of candidates) {
|
|
25
|
+
const raw = Math.abs(candidate - target) % period;
|
|
26
|
+
const distance = Math.min(raw, period - raw);
|
|
27
|
+
if (distance < bestDistance) {
|
|
28
|
+
best = candidate;
|
|
29
|
+
bestDistance = distance;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
return best;
|
|
33
|
+
};
|
|
34
|
+
const stepCircular = (current, candidates, direction) => {
|
|
35
|
+
if (candidates.length === 0) return void 0;
|
|
36
|
+
const sorted = [...candidates].sort((a, b) => a - b);
|
|
37
|
+
if (current === null) return direction === 1 ? sorted[0] : sorted.at(-1);
|
|
38
|
+
if (direction === 1) return sorted.find((value) => value > current) ?? sorted[0];
|
|
39
|
+
return [...sorted].reverse().find((value) => value < current) ?? sorted.at(-1);
|
|
40
|
+
};
|
|
41
|
+
//#endregion
|
|
42
|
+
export { isInnerRing, nearestOnCircle, pad, pointerToPolar, stepCircular, toPosition };
|
|
43
|
+
|
|
44
|
+
//# sourceMappingURL=geometry.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"geometry.mjs","names":[],"sources":["../../../../../../src/DatePicker/core/PickerPanel/TimePanel/TimeClock/geometry.ts"],"sourcesContent":["export const DIAL_SIZE = 224;\nexport const OUTER_RADIUS = 88;\nexport const INNER_RADIUS = 58;\n\nconst CENTER = DIAL_SIZE / 2;\n\nexport interface DialNumber {\n angle: number;\n disabled: boolean;\n inner: boolean;\n label: string;\n value: number;\n}\n\nexport const pad = (value: number) => String(value).padStart(2, '0');\n\nexport const toPosition = (angle: number, radius: number) => {\n const rad = (angle * Math.PI) / 180;\n return { x: CENTER + radius * Math.sin(rad), y: CENTER - radius * Math.cos(rad) };\n};\n\nexport const pointerToPolar = (element: HTMLElement, clientX: number, clientY: number) => {\n const rect = element.getBoundingClientRect();\n const scale = rect.width / DIAL_SIZE || 1;\n const dx = (clientX - (rect.left + rect.width / 2)) / scale;\n const dy = (clientY - (rect.top + rect.height / 2)) / scale;\n const angle = ((Math.atan2(dx, -dy) * 180) / Math.PI + 360) % 360;\n return { angle, distance: Math.hypot(dx, dy) };\n};\n\nexport const isInnerRing = (distance: number) => distance < (OUTER_RADIUS + INNER_RADIUS) / 2;\n\nexport const nearestOnCircle = (target: number, candidates: number[], period: number) => {\n let best: number | undefined;\n let bestDistance = Infinity;\n for (const candidate of candidates) {\n const raw = Math.abs(candidate - target) % period;\n const distance = Math.min(raw, period - raw);\n if (distance < bestDistance) {\n best = candidate;\n bestDistance = distance;\n }\n }\n return best;\n};\n\nexport const stepCircular = (current: number | null, candidates: number[], direction: 1 | -1) => {\n if (candidates.length === 0) return undefined;\n const sorted = [...candidates].sort((a, b) => a - b);\n if (current === null) return direction === 1 ? sorted[0] : sorted.at(-1);\n if (direction === 1) return sorted.find((value) => value > current) ?? sorted[0];\n return [...sorted].reverse().find((value) => value < current) ?? sorted.at(-1);\n};\n"],"mappings":"AAIA,MAAM,SAAA;AAUN,MAAa,OAAO,UAAkB,OAAO,KAAK,CAAC,CAAC,SAAS,GAAG,GAAG;AAEnE,MAAa,cAAc,OAAe,WAAmB;CAC3D,MAAM,MAAO,QAAQ,KAAK,KAAM;CAChC,OAAO;EAAE,GAAG,SAAS,SAAS,KAAK,IAAI,GAAG;EAAG,GAAG,SAAS,SAAS,KAAK,IAAI,GAAG;CAAE;AAClF;AAEA,MAAa,kBAAkB,SAAsB,SAAiB,YAAoB;CACxF,MAAM,OAAO,QAAQ,sBAAsB;CAC3C,MAAM,QAAQ,KAAK,QAAA,OAAqB;CACxC,MAAM,MAAM,WAAW,KAAK,OAAO,KAAK,QAAQ,MAAM;CACtD,MAAM,MAAM,WAAW,KAAK,MAAM,KAAK,SAAS,MAAM;CAEtD,OAAO;EAAE,QADO,KAAK,MAAM,IAAI,CAAC,EAAE,IAAI,MAAO,KAAK,KAAK,OAAO;EAC9C,UAAU,KAAK,MAAM,IAAI,EAAE;CAAE;AAC/C;AAEA,MAAa,eAAe,aAAqB,WAAW;AAE5D,MAAa,mBAAmB,QAAgB,YAAsB,WAAmB;CACvF,IAAI;CACJ,IAAI,eAAe;CACnB,KAAK,MAAM,aAAa,YAAY;EAClC,MAAM,MAAM,KAAK,IAAI,YAAY,MAAM,IAAI;EAC3C,MAAM,WAAW,KAAK,IAAI,KAAK,SAAS,GAAG;EAC3C,IAAI,WAAW,cAAc;GAC3B,OAAO;GACP,eAAe;EACjB;CACF;CACA,OAAO;AACT;AAEA,MAAa,gBAAgB,SAAwB,YAAsB,cAAsB;CAC/F,IAAI,WAAW,WAAW,GAAG,OAAO,KAAA;CACpC,MAAM,SAAS,CAAC,GAAG,UAAU,CAAC,CAAC,MAAM,GAAG,MAAM,IAAI,CAAC;CACnD,IAAI,YAAY,MAAM,OAAO,cAAc,IAAI,OAAO,KAAK,OAAO,GAAG,EAAE;CACvE,IAAI,cAAc,GAAG,OAAO,OAAO,MAAM,UAAU,QAAQ,OAAO,KAAK,OAAO;CAC9E,OAAO,CAAC,GAAG,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC,MAAM,UAAU,QAAQ,OAAO,KAAK,OAAO,GAAG,EAAE;AAC/E"}
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
import { usePanelContext } from "../../context.mjs";
|
|
2
|
+
import useTimeState from "../TimePanelBody/useTimeState.mjs";
|
|
3
|
+
import { isInnerRing, nearestOnCircle, pad, stepCircular } from "./geometry.mjs";
|
|
4
|
+
import ClockDial from "./ClockDial.mjs";
|
|
5
|
+
import * as React$1 from "react";
|
|
6
|
+
import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
|
|
7
|
+
import { clsx } from "clsx";
|
|
8
|
+
import { ChevronDown, ChevronUp } from "lucide-react";
|
|
9
|
+
//#region src/DatePicker/core/PickerPanel/TimePanel/TimeClock/index.tsx
|
|
10
|
+
const enabledValues = (units) => units.filter((unit) => !unit.disabled).map((unit) => unit.value);
|
|
11
|
+
const isEnabled = (units, value) => units.some((unit) => unit.value === value && !unit.disabled);
|
|
12
|
+
function TimeClock(props) {
|
|
13
|
+
const { showHour, showMinute, showSecond, use12Hours } = props;
|
|
14
|
+
const { prefixCls, locale } = usePanelContext();
|
|
15
|
+
const state = useTimeState(props);
|
|
16
|
+
const [view, setView] = React$1.useState(showHour ? "hour" : "minute");
|
|
17
|
+
const cls = `${prefixCls}-time-clock`;
|
|
18
|
+
const hour = state.hour ?? null;
|
|
19
|
+
const minute = state.minute ?? null;
|
|
20
|
+
const second = state.second ?? null;
|
|
21
|
+
const pm = hour !== null && hour >= 12;
|
|
22
|
+
const hourNumbers = [];
|
|
23
|
+
for (let index = 0; index < 12; index++) {
|
|
24
|
+
const outer = index === 0 ? 12 : index;
|
|
25
|
+
const angle = index * 30;
|
|
26
|
+
if (use12Hours) {
|
|
27
|
+
const value = index + (pm ? 12 : 0);
|
|
28
|
+
hourNumbers.push({
|
|
29
|
+
angle,
|
|
30
|
+
disabled: !isEnabled(state.hourUnits, value),
|
|
31
|
+
inner: false,
|
|
32
|
+
label: String(outer),
|
|
33
|
+
value
|
|
34
|
+
});
|
|
35
|
+
continue;
|
|
36
|
+
}
|
|
37
|
+
const inner = index === 0 ? 0 : index + 12;
|
|
38
|
+
hourNumbers.push({
|
|
39
|
+
angle,
|
|
40
|
+
disabled: !isEnabled(state.hourUnits, outer),
|
|
41
|
+
inner: false,
|
|
42
|
+
label: String(outer),
|
|
43
|
+
value: outer
|
|
44
|
+
}, {
|
|
45
|
+
angle,
|
|
46
|
+
disabled: !isEnabled(state.hourUnits, inner),
|
|
47
|
+
inner: true,
|
|
48
|
+
label: pad(inner),
|
|
49
|
+
value: inner
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
const minuteNumbers = Array.from({ length: 12 }, (_, index) => ({
|
|
53
|
+
angle: index * 30,
|
|
54
|
+
disabled: !isEnabled(state.minuteUnits, index * 5),
|
|
55
|
+
inner: false,
|
|
56
|
+
label: pad(index * 5),
|
|
57
|
+
value: index * 5
|
|
58
|
+
}));
|
|
59
|
+
const hourValues = enabledValues(state.hourUnits);
|
|
60
|
+
const minuteValues = enabledValues(state.minuteUnits);
|
|
61
|
+
const secondValues = enabledValues(state.secondUnits);
|
|
62
|
+
const pickHourAt = (angle, distance) => {
|
|
63
|
+
const index = Math.round(angle / 30) % 12;
|
|
64
|
+
const value = use12Hours ? index + (pm ? 12 : 0) : isInnerRing(distance) ? index === 0 ? 0 : index + 12 : index === 0 ? 12 : index;
|
|
65
|
+
return isEnabled(state.hourUnits, value) ? value : void 0;
|
|
66
|
+
};
|
|
67
|
+
const pickMinuteAt = (angle) => nearestOnCircle(Math.round(angle / 6) % 60, minuteValues, 60);
|
|
68
|
+
const stepSecond = (direction) => {
|
|
69
|
+
const next = stepCircular(second, secondValues, direction);
|
|
70
|
+
if (next !== void 0) state.onSecondChange(next);
|
|
71
|
+
};
|
|
72
|
+
const hourView = view === "hour";
|
|
73
|
+
const displayHour = hour === null ? "--" : pad(use12Hours ? hour % 12 || 12 : hour);
|
|
74
|
+
const segment = (target, label, text) => /* @__PURE__ */ jsx("button", {
|
|
75
|
+
"aria-label": label,
|
|
76
|
+
"aria-pressed": view === target,
|
|
77
|
+
className: clsx(`${cls}-segment`, view === target && `${cls}-segment-active`),
|
|
78
|
+
type: "button",
|
|
79
|
+
onClick: () => setView(target),
|
|
80
|
+
children: text
|
|
81
|
+
});
|
|
82
|
+
return /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx("div", {
|
|
83
|
+
className: `${prefixCls}-header`,
|
|
84
|
+
children: /* @__PURE__ */ jsxs("div", {
|
|
85
|
+
className: `${cls}-header`,
|
|
86
|
+
children: [
|
|
87
|
+
showHour && segment("hour", locale.hours ?? "Hours", displayHour),
|
|
88
|
+
showHour && showMinute && /* @__PURE__ */ jsx("span", {
|
|
89
|
+
className: `${cls}-colon`,
|
|
90
|
+
children: ":"
|
|
91
|
+
}),
|
|
92
|
+
showMinute && segment("minute", locale.minutes ?? "Minutes", minute === null ? "--" : pad(minute)),
|
|
93
|
+
showSecond && /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx("span", {
|
|
94
|
+
className: `${cls}-colon`,
|
|
95
|
+
children: ":"
|
|
96
|
+
}), /* @__PURE__ */ jsxs("div", {
|
|
97
|
+
className: `${cls}-stepper`,
|
|
98
|
+
children: [
|
|
99
|
+
/* @__PURE__ */ jsx("button", {
|
|
100
|
+
"aria-label": locale.nextSecond ?? "Next second",
|
|
101
|
+
tabIndex: -1,
|
|
102
|
+
type: "button",
|
|
103
|
+
onClick: () => stepSecond(1),
|
|
104
|
+
children: /* @__PURE__ */ jsx(ChevronUp, { size: 12 })
|
|
105
|
+
}),
|
|
106
|
+
/* @__PURE__ */ jsx("span", {
|
|
107
|
+
"aria-label": locale.seconds ?? "Seconds",
|
|
108
|
+
className: `${cls}-stepper-value`,
|
|
109
|
+
onWheel: (event) => stepSecond(event.deltaY > 0 ? -1 : 1),
|
|
110
|
+
children: second === null ? "--" : pad(second)
|
|
111
|
+
}),
|
|
112
|
+
/* @__PURE__ */ jsx("button", {
|
|
113
|
+
"aria-label": locale.previousSecond ?? "Previous second",
|
|
114
|
+
tabIndex: -1,
|
|
115
|
+
type: "button",
|
|
116
|
+
onClick: () => stepSecond(-1),
|
|
117
|
+
children: /* @__PURE__ */ jsx(ChevronDown, { size: 12 })
|
|
118
|
+
})
|
|
119
|
+
]
|
|
120
|
+
})] }),
|
|
121
|
+
use12Hours && /* @__PURE__ */ jsx("div", {
|
|
122
|
+
className: `${cls}-meridiem`,
|
|
123
|
+
children: state.meridiemUnits.map((unit) => /* @__PURE__ */ jsx("button", {
|
|
124
|
+
"aria-pressed": state.meridiem === unit.value,
|
|
125
|
+
disabled: unit.disabled,
|
|
126
|
+
type: "button",
|
|
127
|
+
className: clsx(`${cls}-segment`, state.meridiem === unit.value && `${cls}-segment-active`),
|
|
128
|
+
onClick: () => state.onMeridiemChange(unit.value),
|
|
129
|
+
children: unit.label
|
|
130
|
+
}, unit.value))
|
|
131
|
+
})
|
|
132
|
+
]
|
|
133
|
+
})
|
|
134
|
+
}), /* @__PURE__ */ jsx("div", {
|
|
135
|
+
className: `${cls}-body`,
|
|
136
|
+
children: /* @__PURE__ */ jsx(ClockDial, {
|
|
137
|
+
ariaPrefix: hourView ? locale.hour ?? "Hour" : locale.minute ?? "Minute",
|
|
138
|
+
enabledValues: hourView ? hourValues : minuteValues,
|
|
139
|
+
label: hourView ? locale.hours ?? "Hours" : locale.minutes ?? "Minutes",
|
|
140
|
+
numbers: hourView ? hourNumbers : minuteNumbers,
|
|
141
|
+
prefixCls,
|
|
142
|
+
selected: hourView ? hour : minute,
|
|
143
|
+
selectedAngle: hourView ? (hour ?? 0) % 12 * 30 : (minute ?? 0) * 6,
|
|
144
|
+
selectedInner: hourView && !use12Hours && hour !== null && (hour === 0 || hour > 12),
|
|
145
|
+
selectedOffTick: !hourView && minute !== null && minute % 5 !== 0,
|
|
146
|
+
pickAt: (angle, distance) => hourView ? pickHourAt(angle, distance) : pickMinuteAt(angle),
|
|
147
|
+
onPick: (value) => hourView ? state.onHourChange(value) : state.onMinuteChange(value),
|
|
148
|
+
onDone: () => {
|
|
149
|
+
if (hourView && showMinute) setView("minute");
|
|
150
|
+
}
|
|
151
|
+
}, view)
|
|
152
|
+
})] });
|
|
153
|
+
}
|
|
154
|
+
//#endregion
|
|
155
|
+
export { TimeClock as default };
|
|
156
|
+
|
|
157
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.mjs","names":["React"],"sources":["../../../../../../src/DatePicker/core/PickerPanel/TimePanel/TimeClock/index.tsx"],"sourcesContent":["import { clsx } from 'clsx';\nimport { ChevronDown, ChevronUp } from 'lucide-react';\nimport * as React from 'react';\n\nimport type { SharedTimeProps } from '../../../interface';\nimport { usePanelContext } from '../../context';\nimport type { Unit } from '../TimePanelBody/TimeColumn';\nimport useTimeState from '../TimePanelBody/useTimeState';\nimport ClockDial from './ClockDial';\nimport { type DialNumber, isInnerRing, nearestOnCircle, pad, stepCircular } from './geometry';\n\ntype View = 'hour' | 'minute';\n\nconst enabledValues = (units: Unit<number>[]) =>\n units.filter((unit) => !unit.disabled).map((unit) => unit.value);\n\nconst isEnabled = (units: Unit<number>[], value: number) =>\n units.some((unit) => unit.value === value && !unit.disabled);\n\nexport default function TimeClock<DateType extends object = any>(props: SharedTimeProps<DateType>) {\n const { showHour, showMinute, showSecond, use12Hours } = props;\n const { prefixCls, locale } = usePanelContext<DateType>();\n const state = useTimeState(props);\n const [view, setView] = React.useState<View>(showHour ? 'hour' : 'minute');\n\n const cls = `${prefixCls}-time-clock`;\n const hour = state.hour ?? null;\n const minute = state.minute ?? null;\n const second = state.second ?? null;\n const pm = hour !== null && hour >= 12;\n\n const hourNumbers: DialNumber[] = [];\n for (let index = 0; index < 12; index++) {\n const outer = index === 0 ? 12 : index;\n const angle = index * 30;\n if (use12Hours) {\n const value = index + (pm ? 12 : 0);\n hourNumbers.push({\n angle,\n disabled: !isEnabled(state.hourUnits, value),\n inner: false,\n label: String(outer),\n value,\n });\n continue;\n }\n const inner = index === 0 ? 0 : index + 12;\n hourNumbers.push(\n {\n angle,\n disabled: !isEnabled(state.hourUnits, outer),\n inner: false,\n label: String(outer),\n value: outer,\n },\n {\n angle,\n disabled: !isEnabled(state.hourUnits, inner),\n inner: true,\n label: pad(inner),\n value: inner,\n },\n );\n }\n\n const minuteNumbers: DialNumber[] = Array.from({ length: 12 }, (_, index) => ({\n angle: index * 30,\n disabled: !isEnabled(state.minuteUnits, index * 5),\n inner: false,\n label: pad(index * 5),\n value: index * 5,\n }));\n\n const hourValues = enabledValues(state.hourUnits);\n const minuteValues = enabledValues(state.minuteUnits);\n const secondValues = enabledValues(state.secondUnits);\n\n const pickHourAt = (angle: number, distance: number) => {\n const index = Math.round(angle / 30) % 12;\n const value = use12Hours\n ? index + (pm ? 12 : 0)\n : isInnerRing(distance)\n ? index === 0\n ? 0\n : index + 12\n : index === 0\n ? 12\n : index;\n return isEnabled(state.hourUnits, value) ? value : undefined;\n };\n\n const pickMinuteAt = (angle: number) =>\n nearestOnCircle(Math.round(angle / 6) % 60, minuteValues, 60);\n\n const stepSecond = (direction: 1 | -1) => {\n const next = stepCircular(second, secondValues, direction);\n if (next !== undefined) state.onSecondChange(next);\n };\n\n const hourView = view === 'hour';\n const displayHour = hour === null ? '--' : pad(use12Hours ? hour % 12 || 12 : hour);\n const segment = (target: View, label: string | undefined, text: string) => (\n <button\n aria-label={label}\n aria-pressed={view === target}\n className={clsx(`${cls}-segment`, view === target && `${cls}-segment-active`)}\n type=\"button\"\n onClick={() => setView(target)}\n >\n {text}\n </button>\n );\n\n return (\n <>\n <div className={`${prefixCls}-header`}>\n <div className={`${cls}-header`}>\n {showHour && segment('hour', locale.hours ?? 'Hours', displayHour)}\n {showHour && showMinute && <span className={`${cls}-colon`}>:</span>}\n {showMinute &&\n segment('minute', locale.minutes ?? 'Minutes', minute === null ? '--' : pad(minute))}\n {showSecond && (\n <>\n <span className={`${cls}-colon`}>:</span>\n <div className={`${cls}-stepper`}>\n <button\n aria-label={locale.nextSecond ?? 'Next second'}\n tabIndex={-1}\n type=\"button\"\n onClick={() => stepSecond(1)}\n >\n <ChevronUp size={12} />\n </button>\n <span\n aria-label={locale.seconds ?? 'Seconds'}\n className={`${cls}-stepper-value`}\n onWheel={(event) => stepSecond(event.deltaY > 0 ? -1 : 1)}\n >\n {second === null ? '--' : pad(second)}\n </span>\n <button\n aria-label={locale.previousSecond ?? 'Previous second'}\n tabIndex={-1}\n type=\"button\"\n onClick={() => stepSecond(-1)}\n >\n <ChevronDown size={12} />\n </button>\n </div>\n </>\n )}\n {use12Hours && (\n <div className={`${cls}-meridiem`}>\n {state.meridiemUnits.map((unit) => (\n <button\n aria-pressed={state.meridiem === unit.value}\n disabled={unit.disabled}\n key={unit.value}\n type=\"button\"\n className={clsx(\n `${cls}-segment`,\n state.meridiem === unit.value && `${cls}-segment-active`,\n )}\n onClick={() => state.onMeridiemChange(unit.value)}\n >\n {unit.label}\n </button>\n ))}\n </div>\n )}\n </div>\n </div>\n <div className={`${cls}-body`}>\n <ClockDial\n ariaPrefix={hourView ? (locale.hour ?? 'Hour') : (locale.minute ?? 'Minute')}\n enabledValues={hourView ? hourValues : minuteValues}\n key={view}\n label={hourView ? (locale.hours ?? 'Hours') : (locale.minutes ?? 'Minutes')}\n numbers={hourView ? hourNumbers : minuteNumbers}\n prefixCls={prefixCls}\n selected={hourView ? hour : minute}\n selectedAngle={hourView ? ((hour ?? 0) % 12) * 30 : (minute ?? 0) * 6}\n selectedInner={hourView && !use12Hours && hour !== null && (hour === 0 || hour > 12)}\n selectedOffTick={!hourView && minute !== null && minute % 5 !== 0}\n pickAt={(angle, distance) =>\n hourView ? pickHourAt(angle, distance) : pickMinuteAt(angle)\n }\n onPick={(value) => (hourView ? state.onHourChange(value) : state.onMinuteChange(value))}\n onDone={() => {\n if (hourView && showMinute) setView('minute');\n }}\n />\n </div>\n </>\n );\n}\n"],"mappings":";;;;;;;;;AAaA,MAAM,iBAAiB,UACrB,MAAM,QAAQ,SAAS,CAAC,KAAK,QAAQ,CAAC,CAAC,KAAK,SAAS,KAAK,KAAK;AAEjE,MAAM,aAAa,OAAuB,UACxC,MAAM,MAAM,SAAS,KAAK,UAAU,SAAS,CAAC,KAAK,QAAQ;AAE7D,SAAwB,UAAyC,OAAkC;CACjG,MAAM,EAAE,UAAU,YAAY,YAAY,eAAe;CACzD,MAAM,EAAE,WAAW,WAAW,gBAA0B;CACxD,MAAM,QAAQ,aAAa,KAAK;CAChC,MAAM,CAAC,MAAM,WAAWA,QAAM,SAAe,WAAW,SAAS,QAAQ;CAEzE,MAAM,MAAM,GAAG,UAAU;CACzB,MAAM,OAAO,MAAM,QAAQ;CAC3B,MAAM,SAAS,MAAM,UAAU;CAC/B,MAAM,SAAS,MAAM,UAAU;CAC/B,MAAM,KAAK,SAAS,QAAQ,QAAQ;CAEpC,MAAM,cAA4B,CAAC;CACnC,KAAK,IAAI,QAAQ,GAAG,QAAQ,IAAI,SAAS;EACvC,MAAM,QAAQ,UAAU,IAAI,KAAK;EACjC,MAAM,QAAQ,QAAQ;EACtB,IAAI,YAAY;GACd,MAAM,QAAQ,SAAS,KAAK,KAAK;GACjC,YAAY,KAAK;IACf;IACA,UAAU,CAAC,UAAU,MAAM,WAAW,KAAK;IAC3C,OAAO;IACP,OAAO,OAAO,KAAK;IACnB;GACF,CAAC;GACD;EACF;EACA,MAAM,QAAQ,UAAU,IAAI,IAAI,QAAQ;EACxC,YAAY,KACV;GACE;GACA,UAAU,CAAC,UAAU,MAAM,WAAW,KAAK;GAC3C,OAAO;GACP,OAAO,OAAO,KAAK;GACnB,OAAO;EACT,GACA;GACE;GACA,UAAU,CAAC,UAAU,MAAM,WAAW,KAAK;GAC3C,OAAO;GACP,OAAO,IAAI,KAAK;GAChB,OAAO;EACT,CACF;CACF;CAEA,MAAM,gBAA8B,MAAM,KAAK,EAAE,QAAQ,GAAG,IAAI,GAAG,WAAW;EAC5E,OAAO,QAAQ;EACf,UAAU,CAAC,UAAU,MAAM,aAAa,QAAQ,CAAC;EACjD,OAAO;EACP,OAAO,IAAI,QAAQ,CAAC;EACpB,OAAO,QAAQ;CACjB,EAAE;CAEF,MAAM,aAAa,cAAc,MAAM,SAAS;CAChD,MAAM,eAAe,cAAc,MAAM,WAAW;CACpD,MAAM,eAAe,cAAc,MAAM,WAAW;CAEpD,MAAM,cAAc,OAAe,aAAqB;EACtD,MAAM,QAAQ,KAAK,MAAM,QAAQ,EAAE,IAAI;EACvC,MAAM,QAAQ,aACV,SAAS,KAAK,KAAK,KACnB,YAAY,QAAQ,IAClB,UAAU,IACR,IACA,QAAQ,KACV,UAAU,IACR,KACA;EACR,OAAO,UAAU,MAAM,WAAW,KAAK,IAAI,QAAQ,KAAA;CACrD;CAEA,MAAM,gBAAgB,UACpB,gBAAgB,KAAK,MAAM,QAAQ,CAAC,IAAI,IAAI,cAAc,EAAE;CAE9D,MAAM,cAAc,cAAsB;EACxC,MAAM,OAAO,aAAa,QAAQ,cAAc,SAAS;EACzD,IAAI,SAAS,KAAA,GAAW,MAAM,eAAe,IAAI;CACnD;CAEA,MAAM,WAAW,SAAS;CAC1B,MAAM,cAAc,SAAS,OAAO,OAAO,IAAI,aAAa,OAAO,MAAM,KAAK,IAAI;CAClF,MAAM,WAAW,QAAc,OAA2B,SACxD,oBAAC,UAAD;EACE,cAAY;EACZ,gBAAc,SAAS;EACvB,WAAW,KAAK,GAAG,IAAI,WAAW,SAAS,UAAU,GAAG,IAAI,gBAAgB;EAC5E,MAAK;EACL,eAAe,QAAQ,MAAM;EAE5B,UAAA;CACK,CAAA;CAGV,OACE,qBAAA,YAAA,EAAA,UAAA,CACE,oBAAC,OAAD;EAAK,WAAW,GAAG,UAAU;EAC3B,UAAA,qBAAC,OAAD;GAAK,WAAW,GAAG,IAAI;GAAvB,UAAA;IACG,YAAY,QAAQ,QAAQ,OAAO,SAAS,SAAS,WAAW;IAChE,YAAY,cAAc,oBAAC,QAAD;KAAM,WAAW,GAAG,IAAI;KAAS,UAAA;IAAO,CAAA;IAClE,cACC,QAAQ,UAAU,OAAO,WAAW,WAAW,WAAW,OAAO,OAAO,IAAI,MAAM,CAAC;IACpF,cACC,qBAAA,YAAA,EAAA,UAAA,CACE,oBAAC,QAAD;KAAM,WAAW,GAAG,IAAI;KAAS,UAAA;IAAO,CAAA,GACxC,qBAAC,OAAD;KAAK,WAAW,GAAG,IAAI;KAAvB,UAAA;MACE,oBAAC,UAAD;OACE,cAAY,OAAO,cAAc;OACjC,UAAU;OACV,MAAK;OACL,eAAe,WAAW,CAAC;OAE3B,UAAA,oBAAC,WAAD,EAAW,MAAM,GAAK,CAAA;MAChB,CAAA;MACR,oBAAC,QAAD;OACE,cAAY,OAAO,WAAW;OAC9B,WAAW,GAAG,IAAI;OAClB,UAAU,UAAU,WAAW,MAAM,SAAS,IAAI,KAAK,CAAC;OAEvD,UAAA,WAAW,OAAO,OAAO,IAAI,MAAM;MAChC,CAAA;MACN,oBAAC,UAAD;OACE,cAAY,OAAO,kBAAkB;OACrC,UAAU;OACV,MAAK;OACL,eAAe,WAAW,EAAE;OAE5B,UAAA,oBAAC,aAAD,EAAa,MAAM,GAAK,CAAA;MAClB,CAAA;KACL;IACL,CAAA,CAAA,EAAA,CAAA;IAEH,cACC,oBAAC,OAAD;KAAK,WAAW,GAAG,IAAI;KACpB,UAAA,MAAM,cAAc,KAAK,SACxB,oBAAC,UAAD;MACE,gBAAc,MAAM,aAAa,KAAK;MACtC,UAAU,KAAK;MAEf,MAAK;MACL,WAAW,KACT,GAAG,IAAI,WACP,MAAM,aAAa,KAAK,SAAS,GAAG,IAAI,gBAC1C;MACA,eAAe,MAAM,iBAAiB,KAAK,KAAK;MAE/C,UAAA,KAAK;KACA,GATD,KAAK,KASJ,CACT;IACE,CAAA;GAEJ;;CACF,CAAA,GACL,oBAAC,OAAD;EAAK,WAAW,GAAG,IAAI;EACrB,UAAA,oBAAC,WAAD;GACE,YAAY,WAAY,OAAO,QAAQ,SAAW,OAAO,UAAU;GACnE,eAAe,WAAW,aAAa;GAEvC,OAAO,WAAY,OAAO,SAAS,UAAY,OAAO,WAAW;GACjE,SAAS,WAAW,cAAc;GACvB;GACX,UAAU,WAAW,OAAO;GAC5B,eAAe,YAAa,QAAQ,KAAK,KAAM,MAAM,UAAU,KAAK;GACpE,eAAe,YAAY,CAAC,cAAc,SAAS,SAAS,SAAS,KAAK,OAAO;GACjF,iBAAiB,CAAC,YAAY,WAAW,QAAQ,SAAS,MAAM;GAChE,SAAS,OAAO,aACd,WAAW,WAAW,OAAO,QAAQ,IAAI,aAAa,KAAK;GAE7D,SAAS,UAAW,WAAW,MAAM,aAAa,KAAK,IAAI,MAAM,eAAe,KAAK;GACrF,cAAc;IACZ,IAAI,YAAY,YAAY,QAAQ,QAAQ;GAC9C;EACD,GAfM,IAeN;CACE,CAAA,CACL,EAAA,CAAA;AAEN"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import { useLayoutEffect as useLayoutEffect$1 } from "../../../hooks/react.mjs";
|
|
2
|
+
import { usePanelContext } from "../../context.mjs";
|
|
3
|
+
import useScrollTo from "./useScrollTo.mjs";
|
|
4
|
+
import * as React$1 from "react";
|
|
5
|
+
import { jsx } from "react/jsx-runtime";
|
|
6
|
+
import { clsx } from "clsx";
|
|
7
|
+
//#region src/DatePicker/core/PickerPanel/TimePanel/TimePanelBody/TimeColumn.tsx
|
|
8
|
+
const SCROLL_DELAY = 300;
|
|
9
|
+
function flattenUnits(units) {
|
|
10
|
+
return units.map(({ value, label, disabled }) => [
|
|
11
|
+
value,
|
|
12
|
+
label,
|
|
13
|
+
disabled
|
|
14
|
+
].join(",")).join(";");
|
|
15
|
+
}
|
|
16
|
+
function TimeColumn(props) {
|
|
17
|
+
const { units, value, optionalValue, type, onChange, onHover, onDblClick, changeOnScroll } = props;
|
|
18
|
+
const { prefixCls, cellRender, now, locale, classNames, styles } = usePanelContext();
|
|
19
|
+
const panelPrefixCls = `${prefixCls}-time-panel`;
|
|
20
|
+
const cellPrefixCls = `${prefixCls}-time-panel-cell`;
|
|
21
|
+
const ulRef = React$1.useRef(null);
|
|
22
|
+
const checkDelayRef = React$1.useRef(void 0);
|
|
23
|
+
const clearDelayCheck = () => {
|
|
24
|
+
clearTimeout(checkDelayRef.current);
|
|
25
|
+
};
|
|
26
|
+
const [syncScroll, stopScroll, isScrolling] = useScrollTo(ulRef, value ?? optionalValue);
|
|
27
|
+
useLayoutEffect$1(() => {
|
|
28
|
+
syncScroll();
|
|
29
|
+
clearDelayCheck();
|
|
30
|
+
return () => {
|
|
31
|
+
stopScroll();
|
|
32
|
+
clearDelayCheck();
|
|
33
|
+
};
|
|
34
|
+
}, [
|
|
35
|
+
value,
|
|
36
|
+
optionalValue,
|
|
37
|
+
flattenUnits(units)
|
|
38
|
+
]);
|
|
39
|
+
const onInternalScroll = (event) => {
|
|
40
|
+
clearDelayCheck();
|
|
41
|
+
const target = event.target;
|
|
42
|
+
if (!isScrolling() && changeOnScroll) checkDelayRef.current = setTimeout(() => {
|
|
43
|
+
const ul = ulRef.current;
|
|
44
|
+
const firstLiTop = ul.querySelector(`li`).offsetTop;
|
|
45
|
+
const liDistList = Array.from(ul.querySelectorAll(`li`)).map((li) => li.offsetTop - firstLiTop).map((top, index) => {
|
|
46
|
+
if (units[index].disabled) return Number.MAX_SAFE_INTEGER;
|
|
47
|
+
return Math.abs(top - target.scrollTop);
|
|
48
|
+
});
|
|
49
|
+
const minDist = Math.min(...liDistList);
|
|
50
|
+
const minDistIndex = liDistList.indexOf(minDist);
|
|
51
|
+
const targetUnit = units[minDistIndex];
|
|
52
|
+
if (targetUnit && !targetUnit.disabled) onChange(targetUnit.value);
|
|
53
|
+
}, SCROLL_DELAY);
|
|
54
|
+
};
|
|
55
|
+
const columnPrefixCls = `${panelPrefixCls}-column`;
|
|
56
|
+
return /* @__PURE__ */ jsx("ul", {
|
|
57
|
+
className: columnPrefixCls,
|
|
58
|
+
"data-type": type,
|
|
59
|
+
ref: ulRef,
|
|
60
|
+
onScroll: onInternalScroll,
|
|
61
|
+
children: units.map(({ label, value: unitValue, disabled }) => {
|
|
62
|
+
const inner = /* @__PURE__ */ jsx("div", {
|
|
63
|
+
className: `${cellPrefixCls}-inner`,
|
|
64
|
+
children: label
|
|
65
|
+
});
|
|
66
|
+
return /* @__PURE__ */ jsx("li", {
|
|
67
|
+
"data-value": unitValue,
|
|
68
|
+
style: styles.item,
|
|
69
|
+
className: clsx(cellPrefixCls, classNames.item, {
|
|
70
|
+
[`${cellPrefixCls}-selected`]: value === unitValue,
|
|
71
|
+
[`${cellPrefixCls}-disabled`]: disabled
|
|
72
|
+
}),
|
|
73
|
+
onClick: () => {
|
|
74
|
+
if (!disabled) onChange(unitValue);
|
|
75
|
+
},
|
|
76
|
+
onDoubleClick: () => {
|
|
77
|
+
if (!disabled && onDblClick) onDblClick();
|
|
78
|
+
},
|
|
79
|
+
onMouseEnter: () => {
|
|
80
|
+
onHover(unitValue);
|
|
81
|
+
},
|
|
82
|
+
onMouseLeave: () => {
|
|
83
|
+
onHover(null);
|
|
84
|
+
},
|
|
85
|
+
children: cellRender ? cellRender(unitValue, {
|
|
86
|
+
prefixCls,
|
|
87
|
+
originNode: inner,
|
|
88
|
+
today: now,
|
|
89
|
+
type: "time",
|
|
90
|
+
subType: type,
|
|
91
|
+
locale
|
|
92
|
+
}) : inner
|
|
93
|
+
}, unitValue);
|
|
94
|
+
})
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
//#endregion
|
|
98
|
+
export { TimeColumn as default };
|
|
99
|
+
|
|
100
|
+
//# sourceMappingURL=TimeColumn.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TimeColumn.mjs","names":["React"],"sources":["../../../../../../src/DatePicker/core/PickerPanel/TimePanel/TimePanelBody/TimeColumn.tsx"],"sourcesContent":["import { clsx } from 'clsx';\nimport * as React from 'react';\n\nimport { useLayoutEffect } from '../../../hooks/react';\nimport { usePanelContext } from '../../context';\nimport useScrollTo from './useScrollTo';\n\nconst SCROLL_DELAY = 300;\n\nexport type Unit<ValueType = number | string> = {\n label: string | number;\n value: ValueType;\n disabled?: boolean;\n};\n\nexport interface TimeUnitColumnProps<ValueType extends number | string = number | string> {\n changeOnScroll?: boolean;\n onChange: (value: ValueType) => void;\n onDblClick?: VoidFunction;\n onHover: (value: ValueType | null) => void;\n optionalValue?: ValueType;\n type: 'hour' | 'minute' | 'second' | 'millisecond' | 'meridiem';\n units: Unit<ValueType>[];\n value: ValueType | null;\n}\n\n// Not use JSON.stringify to avoid dead loop\nfunction flattenUnits(units: Unit<string | number>[]) {\n return units.map(({ value, label, disabled }) => [value, label, disabled].join(',')).join(';');\n}\n\nexport default function TimeColumn<\n DateType extends object,\n ValueType extends number | string = number | string,\n>(props: TimeUnitColumnProps<ValueType>) {\n const { units, value, optionalValue, type, onChange, onHover, onDblClick, changeOnScroll } =\n props;\n\n const { prefixCls, cellRender, now, locale, classNames, styles } = usePanelContext<DateType>();\n\n const panelPrefixCls = `${prefixCls}-time-panel`;\n const cellPrefixCls = `${prefixCls}-time-panel-cell`;\n\n // ========================== Refs ==========================\n const ulRef = React.useRef<HTMLUListElement>(null);\n\n // ========================= Scroll =========================\n const checkDelayRef = React.useRef<any>(undefined);\n\n const clearDelayCheck = () => {\n clearTimeout(checkDelayRef.current);\n };\n\n // ========================== Sync ==========================\n const [syncScroll, stopScroll, isScrolling] = useScrollTo(ulRef, value ?? optionalValue);\n\n // Effect sync value scroll\n useLayoutEffect(() => {\n syncScroll();\n clearDelayCheck();\n\n return () => {\n stopScroll();\n clearDelayCheck();\n };\n }, [value, optionalValue, flattenUnits(units)]);\n\n // ========================= Change =========================\n // Scroll event if sync onScroll\n const onInternalScroll: React.UIEventHandler<HTMLUListElement> = (event) => {\n clearDelayCheck();\n\n const target = event.target as HTMLUListElement;\n\n if (!isScrolling() && changeOnScroll) {\n checkDelayRef.current = setTimeout(() => {\n const ul = ulRef.current!;\n const firstLiTop = ul.querySelector<HTMLLIElement>(`li`)!.offsetTop;\n const liList = Array.from(ul.querySelectorAll<HTMLLIElement>(`li`));\n const liTopList = liList.map((li) => li.offsetTop - firstLiTop);\n const liDistList = liTopList.map((top, index) => {\n if (units[index].disabled) {\n return Number.MAX_SAFE_INTEGER;\n }\n return Math.abs(top - target.scrollTop);\n });\n\n // Find min distance index\n const minDist = Math.min(...liDistList);\n const minDistIndex = liDistList.indexOf(minDist);\n const targetUnit = units[minDistIndex];\n if (targetUnit && !targetUnit.disabled) {\n onChange(targetUnit.value);\n }\n }, SCROLL_DELAY);\n }\n };\n\n // ========================= Render =========================\n const columnPrefixCls = `${panelPrefixCls}-column`;\n\n return (\n <ul className={columnPrefixCls} data-type={type} ref={ulRef} onScroll={onInternalScroll}>\n {units.map(({ label, value: unitValue, disabled }) => {\n const inner = <div className={`${cellPrefixCls}-inner`}>{label}</div>;\n\n return (\n <li\n data-value={unitValue}\n key={unitValue}\n style={styles.item}\n className={clsx(cellPrefixCls, classNames.item, {\n [`${cellPrefixCls}-selected`]: value === unitValue,\n [`${cellPrefixCls}-disabled`]: disabled,\n })}\n onClick={() => {\n if (!disabled) {\n onChange(unitValue);\n }\n }}\n onDoubleClick={() => {\n if (!disabled && onDblClick) {\n onDblClick();\n }\n }}\n onMouseEnter={() => {\n onHover(unitValue);\n }}\n onMouseLeave={() => {\n onHover(null);\n }}\n >\n {cellRender\n ? cellRender(unitValue, {\n prefixCls,\n originNode: inner,\n today: now,\n type: 'time',\n subType: type,\n locale,\n })\n : inner}\n </li>\n );\n })}\n </ul>\n );\n}\n"],"mappings":";;;;;;;AAOA,MAAM,eAAe;AAoBrB,SAAS,aAAa,OAAgC;CACpD,OAAO,MAAM,KAAK,EAAE,OAAO,OAAO,eAAe;EAAC;EAAO;EAAO;CAAQ,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG;AAC/F;AAEA,SAAwB,WAGtB,OAAuC;CACvC,MAAM,EAAE,OAAO,OAAO,eAAe,MAAM,UAAU,SAAS,YAAY,mBACxE;CAEF,MAAM,EAAE,WAAW,YAAY,KAAK,QAAQ,YAAY,WAAW,gBAA0B;CAE7F,MAAM,iBAAiB,GAAG,UAAU;CACpC,MAAM,gBAAgB,GAAG,UAAU;CAGnC,MAAM,QAAQA,QAAM,OAAyB,IAAI;CAGjD,MAAM,gBAAgBA,QAAM,OAAY,KAAA,CAAS;CAEjD,MAAM,wBAAwB;EAC5B,aAAa,cAAc,OAAO;CACpC;CAGA,MAAM,CAAC,YAAY,YAAY,eAAe,YAAY,OAAO,SAAS,aAAa;CAGvF,wBAAsB;EACpB,WAAW;EACX,gBAAgB;EAEhB,aAAa;GACX,WAAW;GACX,gBAAgB;EAClB;CACF,GAAG;EAAC;EAAO;EAAe,aAAa,KAAK;CAAC,CAAC;CAI9C,MAAM,oBAA4D,UAAU;EAC1E,gBAAgB;EAEhB,MAAM,SAAS,MAAM;EAErB,IAAI,CAAC,YAAY,KAAK,gBACpB,cAAc,UAAU,iBAAiB;GACvC,MAAM,KAAK,MAAM;GACjB,MAAM,aAAa,GAAG,cAA6B,IAAI,CAAC,CAAE;GAG1D,MAAM,aAFS,MAAM,KAAK,GAAG,iBAAgC,IAAI,CAC1C,CAAC,CAAC,KAAK,OAAO,GAAG,YAAY,UACzB,CAAC,CAAC,KAAK,KAAK,UAAU;IAC/C,IAAI,MAAM,MAAM,CAAC,UACf,OAAO,OAAO;IAEhB,OAAO,KAAK,IAAI,MAAM,OAAO,SAAS;GACxC,CAAC;GAGD,MAAM,UAAU,KAAK,IAAI,GAAG,UAAU;GACtC,MAAM,eAAe,WAAW,QAAQ,OAAO;GAC/C,MAAM,aAAa,MAAM;GACzB,IAAI,cAAc,CAAC,WAAW,UAC5B,SAAS,WAAW,KAAK;EAE7B,GAAG,YAAY;CAEnB;CAGA,MAAM,kBAAkB,GAAG,eAAe;CAE1C,OACE,oBAAC,MAAD;EAAI,WAAW;EAAiB,aAAW;EAAM,KAAK;EAAO,UAAU;EACpE,UAAA,MAAM,KAAK,EAAE,OAAO,OAAO,WAAW,eAAe;GACpD,MAAM,QAAQ,oBAAC,OAAD;IAAK,WAAW,GAAG,cAAc;IAAU,UAAA;GAAW,CAAA;GAEpE,OACE,oBAAC,MAAD;IACE,cAAY;IAEZ,OAAO,OAAO;IACd,WAAW,KAAK,eAAe,WAAW,MAAM;MAC7C,GAAG,cAAc,aAAa,UAAU;MACxC,GAAG,cAAc,aAAa;IACjC,CAAC;IACD,eAAe;KACb,IAAI,CAAC,UACH,SAAS,SAAS;IAEtB;IACA,qBAAqB;KACnB,IAAI,CAAC,YAAY,YACf,WAAW;IAEf;IACA,oBAAoB;KAClB,QAAQ,SAAS;IACnB;IACA,oBAAoB;KAClB,QAAQ,IAAI;IACd;IAEC,UAAA,aACG,WAAW,WAAW;KACpB;KACA,YAAY;KACZ,OAAO;KACP,MAAM;KACN,SAAS;KACT;IACF,CAAC,IACD;GACF,GAjCG,SAiCH;EAER,CAAC;CACC,CAAA;AAER"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { PickerHackContext, usePanelContext } from "../../context.mjs";
|
|
2
|
+
import useTimeState from "./useTimeState.mjs";
|
|
3
|
+
import TimeColumn from "./TimeColumn.mjs";
|
|
4
|
+
import * as React$1 from "react";
|
|
5
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
6
|
+
import { clsx } from "clsx";
|
|
7
|
+
//#region src/DatePicker/core/PickerPanel/TimePanel/TimePanelBody/index.tsx
|
|
8
|
+
function TimePanelBody(props) {
|
|
9
|
+
const { showHour, showMinute, showSecond, showMillisecond, use12Hours: showMeridiem, changeOnScroll } = props;
|
|
10
|
+
const { prefixCls, classNames, styles } = usePanelContext();
|
|
11
|
+
const { onCellDblClick } = React$1.use(PickerHackContext);
|
|
12
|
+
const { hour, hourUnits, meridiem, meridiemUnits, millisecond, millisecondUnits, minute, minuteUnits, onHourChange, onHourHover, onMeridiemChange, onMeridiemHover, onMillisecondChange, onMillisecondHover, onMinuteChange, onMinuteHover, onSecondChange, onSecondHover, pickerHour, pickerMillisecond, pickerMinute, pickerSecond, second, secondUnits } = useTimeState(props);
|
|
13
|
+
const sharedColumnProps = {
|
|
14
|
+
onDblClick: onCellDblClick,
|
|
15
|
+
changeOnScroll
|
|
16
|
+
};
|
|
17
|
+
return /* @__PURE__ */ jsxs("div", {
|
|
18
|
+
className: clsx(`${prefixCls}-content`, classNames.content),
|
|
19
|
+
style: styles.content,
|
|
20
|
+
children: [
|
|
21
|
+
showHour && /* @__PURE__ */ jsx(TimeColumn, {
|
|
22
|
+
optionalValue: pickerHour,
|
|
23
|
+
type: "hour",
|
|
24
|
+
units: hourUnits,
|
|
25
|
+
value: hour,
|
|
26
|
+
onChange: onHourChange,
|
|
27
|
+
onHover: onHourHover,
|
|
28
|
+
...sharedColumnProps
|
|
29
|
+
}),
|
|
30
|
+
showMinute && /* @__PURE__ */ jsx(TimeColumn, {
|
|
31
|
+
optionalValue: pickerMinute,
|
|
32
|
+
type: "minute",
|
|
33
|
+
units: minuteUnits,
|
|
34
|
+
value: minute,
|
|
35
|
+
onChange: onMinuteChange,
|
|
36
|
+
onHover: onMinuteHover,
|
|
37
|
+
...sharedColumnProps
|
|
38
|
+
}),
|
|
39
|
+
showSecond && /* @__PURE__ */ jsx(TimeColumn, {
|
|
40
|
+
optionalValue: pickerSecond,
|
|
41
|
+
type: "second",
|
|
42
|
+
units: secondUnits,
|
|
43
|
+
value: second,
|
|
44
|
+
onChange: onSecondChange,
|
|
45
|
+
onHover: onSecondHover,
|
|
46
|
+
...sharedColumnProps
|
|
47
|
+
}),
|
|
48
|
+
showMillisecond && /* @__PURE__ */ jsx(TimeColumn, {
|
|
49
|
+
optionalValue: pickerMillisecond,
|
|
50
|
+
type: "millisecond",
|
|
51
|
+
units: millisecondUnits,
|
|
52
|
+
value: millisecond,
|
|
53
|
+
onChange: onMillisecondChange,
|
|
54
|
+
onHover: onMillisecondHover,
|
|
55
|
+
...sharedColumnProps
|
|
56
|
+
}),
|
|
57
|
+
showMeridiem && /* @__PURE__ */ jsx(TimeColumn, {
|
|
58
|
+
type: "meridiem",
|
|
59
|
+
units: meridiemUnits,
|
|
60
|
+
value: meridiem,
|
|
61
|
+
onChange: onMeridiemChange,
|
|
62
|
+
onHover: onMeridiemHover,
|
|
63
|
+
...sharedColumnProps
|
|
64
|
+
})
|
|
65
|
+
]
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
//#endregion
|
|
69
|
+
export { TimePanelBody as default };
|
|
70
|
+
|
|
71
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.mjs","names":["React"],"sources":["../../../../../../src/DatePicker/core/PickerPanel/TimePanel/TimePanelBody/index.tsx"],"sourcesContent":["import { clsx } from 'clsx';\nimport * as React from 'react';\n\nimport type { SharedPanelProps, SharedTimeProps } from '../../../interface';\nimport { PickerHackContext, usePanelContext } from '../../context';\nimport TimeColumn from './TimeColumn';\nimport useTimeState from './useTimeState';\n\nexport type TimePanelBodyProps<DateType extends object = any> = SharedPanelProps<DateType>;\n\nexport default function TimePanelBody<DateType extends object = any>(\n props: SharedTimeProps<DateType>,\n) {\n const {\n showHour,\n showMinute,\n showSecond,\n showMillisecond,\n use12Hours: showMeridiem,\n changeOnScroll,\n } = props;\n\n const { prefixCls, classNames, styles } = usePanelContext<DateType>();\n const { onCellDblClick } = React.use(PickerHackContext);\n\n const {\n hour,\n hourUnits,\n meridiem,\n meridiemUnits,\n millisecond,\n millisecondUnits,\n minute,\n minuteUnits,\n onHourChange,\n onHourHover,\n onMeridiemChange,\n onMeridiemHover,\n onMillisecondChange,\n onMillisecondHover,\n onMinuteChange,\n onMinuteHover,\n onSecondChange,\n onSecondHover,\n pickerHour,\n pickerMillisecond,\n pickerMinute,\n pickerSecond,\n second,\n secondUnits,\n } = useTimeState(props);\n\n // ========================= Render =========================\n const sharedColumnProps = {\n onDblClick: onCellDblClick,\n changeOnScroll,\n };\n\n return (\n <div className={clsx(`${prefixCls}-content`, classNames.content)} style={styles.content}>\n {showHour && (\n <TimeColumn\n optionalValue={pickerHour}\n type=\"hour\"\n units={hourUnits}\n value={hour}\n onChange={onHourChange}\n onHover={onHourHover}\n {...sharedColumnProps}\n />\n )}\n {showMinute && (\n <TimeColumn\n optionalValue={pickerMinute}\n type=\"minute\"\n units={minuteUnits}\n value={minute}\n onChange={onMinuteChange}\n onHover={onMinuteHover}\n {...sharedColumnProps}\n />\n )}\n {showSecond && (\n <TimeColumn\n optionalValue={pickerSecond}\n type=\"second\"\n units={secondUnits}\n value={second}\n onChange={onSecondChange}\n onHover={onSecondHover}\n {...sharedColumnProps}\n />\n )}\n {showMillisecond && (\n <TimeColumn\n optionalValue={pickerMillisecond}\n type=\"millisecond\"\n units={millisecondUnits}\n value={millisecond}\n onChange={onMillisecondChange}\n onHover={onMillisecondHover}\n {...sharedColumnProps}\n />\n )}\n {showMeridiem && (\n <TimeColumn\n type=\"meridiem\"\n units={meridiemUnits}\n value={meridiem}\n onChange={onMeridiemChange}\n onHover={onMeridiemHover}\n {...sharedColumnProps}\n />\n )}\n </div>\n );\n}\n"],"mappings":";;;;;;;AAUA,SAAwB,cACtB,OACA;CACA,MAAM,EACJ,UACA,YACA,YACA,iBACA,YAAY,cACZ,mBACE;CAEJ,MAAM,EAAE,WAAW,YAAY,WAAW,gBAA0B;CACpE,MAAM,EAAE,mBAAmBA,QAAM,IAAI,iBAAiB;CAEtD,MAAM,EACJ,MACA,WACA,UACA,eACA,aACA,kBACA,QACA,aACA,cACA,aACA,kBACA,iBACA,qBACA,oBACA,gBACA,eACA,gBACA,eACA,YACA,mBACA,cACA,cACA,QACA,gBACE,aAAa,KAAK;CAGtB,MAAM,oBAAoB;EACxB,YAAY;EACZ;CACF;CAEA,OACE,qBAAC,OAAD;EAAK,WAAW,KAAK,GAAG,UAAU,WAAW,WAAW,OAAO;EAAG,OAAO,OAAO;EAAhF,UAAA;GACG,YACC,oBAAC,YAAD;IACE,eAAe;IACf,MAAK;IACL,OAAO;IACP,OAAO;IACP,UAAU;IACV,SAAS;IACT,GAAI;GACL,CAAA;GAEF,cACC,oBAAC,YAAD;IACE,eAAe;IACf,MAAK;IACL,OAAO;IACP,OAAO;IACP,UAAU;IACV,SAAS;IACT,GAAI;GACL,CAAA;GAEF,cACC,oBAAC,YAAD;IACE,eAAe;IACf,MAAK;IACL,OAAO;IACP,OAAO;IACP,UAAU;IACV,SAAS;IACT,GAAI;GACL,CAAA;GAEF,mBACC,oBAAC,YAAD;IACE,eAAe;IACf,MAAK;IACL,OAAO;IACP,OAAO;IACP,UAAU;IACV,SAAS;IACT,GAAI;GACL,CAAA;GAEF,gBACC,oBAAC,YAAD;IACE,MAAK;IACL,OAAO;IACP,OAAO;IACP,UAAU;IACV,SAAS;IACT,GAAI;GACL,CAAA;EAEA;;AAET"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { useEvent } from "../../../hooks/react.mjs";
|
|
2
|
+
import { isVisible, raf } from "../../../utils/common.mjs";
|
|
3
|
+
import * as React$1 from "react";
|
|
4
|
+
//#region src/DatePicker/core/PickerPanel/TimePanel/TimePanelBody/useScrollTo.ts
|
|
5
|
+
const SPEED_PTG = 1 / 3;
|
|
6
|
+
function useScrollTo(ulRef, value) {
|
|
7
|
+
const scrollingRef = React$1.useRef(false);
|
|
8
|
+
const scrollRafRef = React$1.useRef(null);
|
|
9
|
+
const scrollDistRef = React$1.useRef(null);
|
|
10
|
+
const isScrolling = () => scrollingRef.current;
|
|
11
|
+
const stopScroll = () => {
|
|
12
|
+
raf.cancel(scrollRafRef.current);
|
|
13
|
+
scrollingRef.current = false;
|
|
14
|
+
};
|
|
15
|
+
const scrollRafTimesRef = React$1.useRef(void 0);
|
|
16
|
+
const startScroll = () => {
|
|
17
|
+
const ul = ulRef.current;
|
|
18
|
+
scrollDistRef.current = null;
|
|
19
|
+
scrollRafTimesRef.current = 0;
|
|
20
|
+
if (ul) {
|
|
21
|
+
const targetLi = ul.querySelector(`[data-value="${value}"]`);
|
|
22
|
+
const firstLi = ul.querySelector(`li`);
|
|
23
|
+
const doScroll = () => {
|
|
24
|
+
stopScroll();
|
|
25
|
+
scrollingRef.current = true;
|
|
26
|
+
scrollRafTimesRef.current += 1;
|
|
27
|
+
const { scrollTop: currentTop } = ul;
|
|
28
|
+
const firstLiTop = firstLi.offsetTop;
|
|
29
|
+
const targetLiTop = targetLi.offsetTop;
|
|
30
|
+
const targetTop = targetLiTop - firstLiTop;
|
|
31
|
+
if (targetLiTop === 0 && targetLi !== firstLi || !isVisible(ul)) {
|
|
32
|
+
if (scrollRafTimesRef.current <= 5) scrollRafRef.current = raf(doScroll);
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
const nextTop = currentTop + (targetTop - currentTop) * SPEED_PTG;
|
|
36
|
+
const dist = Math.abs(targetTop - nextTop);
|
|
37
|
+
if (scrollDistRef.current !== null && scrollDistRef.current < dist) {
|
|
38
|
+
stopScroll();
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
scrollDistRef.current = dist;
|
|
42
|
+
if (dist <= 1) {
|
|
43
|
+
ul.scrollTop = targetTop;
|
|
44
|
+
stopScroll();
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
ul.scrollTop = nextTop;
|
|
48
|
+
scrollRafRef.current = raf(doScroll);
|
|
49
|
+
};
|
|
50
|
+
if (targetLi && firstLi) doScroll();
|
|
51
|
+
}
|
|
52
|
+
};
|
|
53
|
+
return [
|
|
54
|
+
useEvent(startScroll),
|
|
55
|
+
stopScroll,
|
|
56
|
+
isScrolling
|
|
57
|
+
];
|
|
58
|
+
}
|
|
59
|
+
//#endregion
|
|
60
|
+
export { useScrollTo as default };
|
|
61
|
+
|
|
62
|
+
//# sourceMappingURL=useScrollTo.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useScrollTo.mjs","names":["React"],"sources":["../../../../../../src/DatePicker/core/PickerPanel/TimePanel/TimePanelBody/useScrollTo.ts"],"sourcesContent":["import * as React from 'react';\n\nimport { useEvent } from '../../../hooks/react';\nimport { isVisible, raf } from '../../../utils/common';\n\nconst SPEED_PTG = 1 / 3;\n\nexport default function useScrollTo(\n ulRef: React.RefObject<HTMLUListElement | null>,\n value: number | string | null | undefined,\n): [syncScroll: VoidFunction, clearScroll: VoidFunction, isScrolling: () => boolean] {\n // ========================= Scroll =========================\n const scrollingRef = React.useRef<boolean>(false);\n const scrollRafRef = React.useRef<number>(null);\n const scrollDistRef = React.useRef<number>(null);\n\n const isScrolling = () => scrollingRef.current;\n\n const stopScroll = () => {\n raf.cancel(scrollRafRef.current!);\n scrollingRef.current = false;\n };\n\n const scrollRafTimesRef = React.useRef<number | undefined>(undefined);\n\n const startScroll = () => {\n const ul = ulRef.current;\n scrollDistRef.current = null;\n scrollRafTimesRef.current = 0;\n\n if (ul) {\n const targetLi = ul.querySelector<HTMLLIElement>(`[data-value=\"${value}\"]`);\n const firstLi = ul.querySelector<HTMLLIElement>(`li`);\n\n const doScroll = () => {\n stopScroll();\n scrollingRef.current = true;\n scrollRafTimesRef.current! += 1;\n\n const { scrollTop: currentTop } = ul;\n\n const firstLiTop = firstLi!.offsetTop;\n const targetLiTop = targetLi!.offsetTop;\n const targetTop = targetLiTop - firstLiTop;\n\n // Wait for element exist. 5 frames is enough\n if ((targetLiTop === 0 && targetLi !== firstLi) || !isVisible(ul)) {\n if (scrollRafTimesRef.current! <= 5) {\n scrollRafRef.current = raf(doScroll);\n }\n return;\n }\n\n const nextTop = currentTop + (targetTop - currentTop) * SPEED_PTG;\n const dist = Math.abs(targetTop - nextTop);\n\n // Break if dist get larger, which means user is scrolling\n if (scrollDistRef.current !== null && scrollDistRef.current < dist) {\n stopScroll();\n return;\n }\n scrollDistRef.current = dist;\n\n // Stop when dist is less than 1\n if (dist <= 1) {\n ul.scrollTop = targetTop;\n stopScroll();\n return;\n }\n\n // IE not support `scrollTo`\n ul.scrollTop = nextTop;\n\n scrollRafRef.current = raf(doScroll);\n };\n\n if (targetLi && firstLi) {\n doScroll();\n }\n }\n };\n\n // ======================== Trigger =========================\n const syncScroll = useEvent(startScroll);\n\n return [syncScroll, stopScroll, isScrolling];\n}\n"],"mappings":";;;;AAKA,MAAM,YAAY,IAAI;AAEtB,SAAwB,YACtB,OACA,OACmF;CAEnF,MAAM,eAAeA,QAAM,OAAgB,KAAK;CAChD,MAAM,eAAeA,QAAM,OAAe,IAAI;CAC9C,MAAM,gBAAgBA,QAAM,OAAe,IAAI;CAE/C,MAAM,oBAAoB,aAAa;CAEvC,MAAM,mBAAmB;EACvB,IAAI,OAAO,aAAa,OAAQ;EAChC,aAAa,UAAU;CACzB;CAEA,MAAM,oBAAoBA,QAAM,OAA2B,KAAA,CAAS;CAEpE,MAAM,oBAAoB;EACxB,MAAM,KAAK,MAAM;EACjB,cAAc,UAAU;EACxB,kBAAkB,UAAU;EAE5B,IAAI,IAAI;GACN,MAAM,WAAW,GAAG,cAA6B,gBAAgB,MAAM,GAAG;GAC1E,MAAM,UAAU,GAAG,cAA6B,IAAI;GAEpD,MAAM,iBAAiB;IACrB,WAAW;IACX,aAAa,UAAU;IACvB,kBAAkB,WAAY;IAE9B,MAAM,EAAE,WAAW,eAAe;IAElC,MAAM,aAAa,QAAS;IAC5B,MAAM,cAAc,SAAU;IAC9B,MAAM,YAAY,cAAc;IAGhC,IAAK,gBAAgB,KAAK,aAAa,WAAY,CAAC,UAAU,EAAE,GAAG;KACjE,IAAI,kBAAkB,WAAY,GAChC,aAAa,UAAU,IAAI,QAAQ;KAErC;IACF;IAEA,MAAM,UAAU,cAAc,YAAY,cAAc;IACxD,MAAM,OAAO,KAAK,IAAI,YAAY,OAAO;IAGzC,IAAI,cAAc,YAAY,QAAQ,cAAc,UAAU,MAAM;KAClE,WAAW;KACX;IACF;IACA,cAAc,UAAU;IAGxB,IAAI,QAAQ,GAAG;KACb,GAAG,YAAY;KACf,WAAW;KACX;IACF;IAGA,GAAG,YAAY;IAEf,aAAa,UAAU,IAAI,QAAQ;GACrC;GAEA,IAAI,YAAY,SACd,SAAS;EAEb;CACF;CAKA,OAAO;EAFY,SAAS,WAEX;EAAG;EAAY;CAAW;AAC7C"}
|