@basic-ui/core 0.0.51 → 0.0.52
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 +3 -3
- package/build/cjs/index.js +88 -88
- package/build/cjs/index.js.map +1 -1
- package/build/esm/Accordion/Accordion.d.ts +9 -9
- package/build/esm/Accordion/Accordion.js.map +1 -1
- package/build/esm/Accordion/AccordionBody.d.ts +6 -6
- package/build/esm/Accordion/AccordionBody.js.map +1 -1
- package/build/esm/Accordion/AccordionHeader.d.ts +7 -7
- package/build/esm/Accordion/AccordionHeader.js.map +1 -1
- package/build/esm/Accordion/AccordionItem.d.ts +9 -9
- package/build/esm/Accordion/AccordionItem.js.map +1 -1
- package/build/esm/Accordion/context.d.ts +19 -19
- package/build/esm/Accordion/context.js.map +1 -1
- package/build/esm/Accordion/index.d.ts +4 -4
- package/build/esm/Accordion/index.js.map +1 -1
- package/build/esm/Accordion/scopeQuery.d.ts +2 -2
- package/build/esm/Accordion/scopeQuery.js.map +1 -1
- package/build/esm/CheckBox/CheckBox.d.ts +7 -7
- package/build/esm/CheckBox/CheckBox.js.map +1 -1
- package/build/esm/CheckBox/index.d.ts +1 -1
- package/build/esm/CheckBox/index.js.map +1 -1
- package/build/esm/ComboBox/Combobox.d.ts +18 -18
- package/build/esm/ComboBox/Combobox.js.map +1 -1
- package/build/esm/ComboBox/ComboboxButton.d.ts +9 -9
- package/build/esm/ComboBox/ComboboxButton.js.map +1 -1
- package/build/esm/ComboBox/ComboboxInput.d.ts +17 -17
- package/build/esm/ComboBox/ComboboxInput.js.map +1 -1
- package/build/esm/ComboBox/ComboboxLabel.d.ts +7 -7
- package/build/esm/ComboBox/ComboboxLabel.js.map +1 -1
- package/build/esm/ComboBox/ComboboxList.d.ts +8 -8
- package/build/esm/ComboBox/ComboboxList.js.map +1 -1
- package/build/esm/ComboBox/ComboboxOption.d.ts +11 -11
- package/build/esm/ComboBox/ComboboxOption.js.map +1 -1
- package/build/esm/ComboBox/ComboboxPopover.d.ts +9 -9
- package/build/esm/ComboBox/ComboboxPopover.js.map +1 -1
- package/build/esm/ComboBox/cities.d.ts +5 -5
- package/build/esm/ComboBox/cities.js.map +1 -1
- package/build/esm/ComboBox/context.d.ts +30 -30
- package/build/esm/ComboBox/context.js.map +1 -1
- package/build/esm/ComboBox/hooks.d.ts +37 -37
- package/build/esm/ComboBox/hooks.js.map +1 -1
- package/build/esm/ComboBox/index.d.ts +8 -8
- package/build/esm/ComboBox/index.js.map +1 -1
- package/build/esm/ComboBox/makeHash.d.ts +1 -1
- package/build/esm/ComboBox/makeHash.js.map +1 -1
- package/build/esm/ComboBox/scopeQuery.d.ts +1 -1
- package/build/esm/ComboBox/scopeQuery.js.map +1 -1
- package/build/esm/FocusLock/FocusLock.d.ts +9 -9
- package/build/esm/FocusLock/FocusLock.js.map +1 -1
- package/build/esm/FocusLock/index.d.ts +1 -1
- package/build/esm/FocusLock/index.js.map +1 -1
- package/build/esm/FocusLock/tabUtils.d.ts +3 -3
- package/build/esm/FocusLock/tabUtils.js.map +1 -1
- package/build/esm/FocusLock/useFocusLock.d.ts +7 -7
- package/build/esm/FocusLock/useFocusLock.js.map +1 -1
- package/build/esm/List/List.d.ts +7 -7
- package/build/esm/List/List.js.map +1 -1
- package/build/esm/List/ListItem.d.ts +7 -7
- package/build/esm/List/ListItem.js.map +1 -1
- package/build/esm/List/context.d.ts +4 -4
- package/build/esm/List/context.js.map +1 -1
- package/build/esm/List/index.d.ts +2 -2
- package/build/esm/List/index.js.map +1 -1
- package/build/esm/Menu/ContextMenuTrigger.d.ts +11 -11
- package/build/esm/Menu/ContextMenuTrigger.js.map +1 -1
- package/build/esm/Menu/Menu.d.ts +10 -10
- package/build/esm/Menu/Menu.js.map +1 -1
- package/build/esm/Menu/MenuButton.d.ts +11 -11
- package/build/esm/Menu/MenuButton.js.map +1 -1
- package/build/esm/Menu/MenuItem.d.ts +8 -8
- package/build/esm/Menu/MenuItem.js.map +1 -1
- package/build/esm/Menu/MenuList.d.ts +7 -7
- package/build/esm/Menu/MenuList.js.map +1 -1
- package/build/esm/Menu/MenuPopover.d.ts +8 -8
- package/build/esm/Menu/MenuPopover.js.map +1 -1
- package/build/esm/Menu/context.d.ts +25 -25
- package/build/esm/Menu/context.js.map +1 -1
- package/build/esm/Menu/fixtures/countryList.d.ts +1 -1
- package/build/esm/Menu/fixtures/countryList.js.map +1 -1
- package/build/esm/Menu/index.d.ts +6 -6
- package/build/esm/Menu/index.js.map +1 -1
- package/build/esm/Menu/scope.d.ts +1 -1
- package/build/esm/Menu/scope.js.map +1 -1
- package/build/esm/Modal/Modal.d.ts +9 -9
- package/build/esm/Modal/Modal.js.map +1 -1
- package/build/esm/Modal/ModalBackdrop.d.ts +10 -10
- package/build/esm/Modal/ModalBackdrop.js.map +1 -1
- package/build/esm/Modal/index.d.ts +2 -2
- package/build/esm/Modal/index.js.map +1 -1
- package/build/esm/Popper/Popper.d.ts +35 -35
- package/build/esm/Popper/Popper.js.map +1 -1
- package/build/esm/Popper/PopperArrow.d.ts +6 -6
- package/build/esm/Popper/PopperArrow.js.map +1 -1
- package/build/esm/Popper/context.d.ts +6 -6
- package/build/esm/Popper/context.js.map +1 -1
- package/build/esm/Popper/index.d.ts +3 -3
- package/build/esm/Popper/index.js.map +1 -1
- package/build/esm/Portal/Portal.d.ts +6 -6
- package/build/esm/Portal/Portal.js.map +1 -1
- package/build/esm/Portal/index.d.ts +1 -1
- package/build/esm/Portal/index.js.map +1 -1
- package/build/esm/RadioButton/RadioButton.d.ts +10 -10
- package/build/esm/RadioButton/RadioButton.js.map +1 -1
- package/build/esm/RadioButton/RadioGroup.d.ts +12 -12
- package/build/esm/RadioButton/RadioGroup.js.map +1 -1
- package/build/esm/RadioButton/context.d.ts +9 -9
- package/build/esm/RadioButton/context.js.map +1 -1
- package/build/esm/RadioButton/index.d.ts +2 -2
- package/build/esm/RadioButton/index.js.map +1 -1
- package/build/esm/SkipNav/SkipNav.d.ts +7 -7
- package/build/esm/SkipNav/SkipNav.js.map +1 -1
- package/build/esm/SkipNav/index.d.ts +1 -1
- package/build/esm/SkipNav/index.js.map +1 -1
- package/build/esm/Slider/Slider.d.ts +197 -197
- package/build/esm/Slider/Slider.js +82 -82
- package/build/esm/Slider/Slider.js.map +1 -1
- package/build/esm/Slider/index.d.ts +1 -1
- package/build/esm/Slider/index.js.map +1 -1
- package/build/esm/Spinner/Spinner.d.ts +12 -12
- package/build/esm/Spinner/Spinner.js.map +1 -1
- package/build/esm/Spinner/SpinnerButton.d.ts +8 -8
- package/build/esm/Spinner/SpinnerButton.js.map +1 -1
- package/build/esm/Spinner/context.d.ts +12 -12
- package/build/esm/Spinner/context.js.map +1 -1
- package/build/esm/Spinner/index.d.ts +2 -2
- package/build/esm/Spinner/index.js.map +1 -1
- package/build/esm/Tabs/Tab.d.ts +7 -7
- package/build/esm/Tabs/Tab.js.map +1 -1
- package/build/esm/Tabs/TabList.d.ts +9 -9
- package/build/esm/Tabs/TabList.js.map +1 -1
- package/build/esm/Tabs/TabPanel.d.ts +8 -8
- package/build/esm/Tabs/TabPanel.js.map +1 -1
- package/build/esm/Tabs/TabPanels.d.ts +8 -8
- package/build/esm/Tabs/TabPanels.js.map +1 -1
- package/build/esm/Tabs/Tabs.d.ts +10 -10
- package/build/esm/Tabs/Tabs.js.map +1 -1
- package/build/esm/Tabs/context.d.ts +17 -17
- package/build/esm/Tabs/context.js.map +1 -1
- package/build/esm/Tabs/index.d.ts +5 -5
- package/build/esm/Tabs/index.js.map +1 -1
- package/build/esm/Tabs/scopeQuery.d.ts +1 -1
- package/build/esm/Tabs/scopeQuery.js.map +1 -1
- package/build/esm/Tooltip/Tooltip.d.ts +10 -10
- package/build/esm/Tooltip/Tooltip.js.map +1 -1
- package/build/esm/Tooltip/index.d.ts +1 -1
- package/build/esm/Tooltip/index.js.map +1 -1
- package/build/esm/Tooltip/stateMachine.d.ts +28 -28
- package/build/esm/Tooltip/stateMachine.js.map +1 -1
- package/build/esm/Tooltip/useTooltip.d.ts +10 -10
- package/build/esm/Tooltip/useTooltip.js.map +1 -1
- package/build/esm/hooks/index.d.ts +13 -13
- package/build/esm/hooks/index.js.map +1 -1
- package/build/esm/hooks/useAutoFocus.d.ts +2 -2
- package/build/esm/hooks/useAutoFocus.js.map +1 -1
- package/build/esm/hooks/useChildrenCounter.d.ts +7 -7
- package/build/esm/hooks/useChildrenCounter.js.map +1 -1
- package/build/esm/hooks/useControlledState.d.ts +3 -3
- package/build/esm/hooks/useControlledState.js +1 -1
- package/build/esm/hooks/useControlledState.js.map +1 -1
- package/build/esm/hooks/useFocusReturn.d.ts +2 -2
- package/build/esm/hooks/useFocusReturn.js.map +1 -1
- package/build/esm/hooks/useFocusState.d.ts +11 -11
- package/build/esm/hooks/useFocusState.js.map +1 -1
- package/build/esm/hooks/useGestureHandlers.d.ts +52 -52
- package/build/esm/hooks/useGestureHandlers.js.map +1 -1
- package/build/esm/hooks/useMeasure.d.ts +7 -7
- package/build/esm/hooks/useMeasure.js.map +1 -1
- package/build/esm/hooks/useOnClickOutside.d.ts +2 -2
- package/build/esm/hooks/useOnClickOutside.js.map +1 -1
- package/build/esm/hooks/useOnKeyDown.d.ts +1 -1
- package/build/esm/hooks/useOnKeyDown.js.map +1 -1
- package/build/esm/hooks/useReducerMachine.d.ts +24 -24
- package/build/esm/hooks/useReducerMachine.js.map +1 -1
- package/build/esm/hooks/useRemoveBodyScroll.d.ts +2 -2
- package/build/esm/hooks/useRemoveBodyScroll.js.map +1 -1
- package/build/esm/hooks/useScope.d.ts +11 -11
- package/build/esm/hooks/useScope.js.map +1 -1
- package/build/esm/hooks/useThrottle.d.ts +1 -1
- package/build/esm/hooks/useThrottle.js.map +1 -1
- package/build/esm/index.d.ts +15 -15
- package/build/esm/index.js.map +1 -1
- package/build/esm/utils/assign-ref.d.ts +3 -3
- package/build/esm/utils/assign-ref.js.map +1 -1
- package/build/esm/utils/can-use-dom.d.ts +1 -1
- package/build/esm/utils/can-use-dom.js.map +1 -1
- package/build/esm/utils/clamp.d.ts +1 -1
- package/build/esm/utils/clamp.js.map +1 -1
- package/build/esm/utils/context.d.ts +7 -7
- package/build/esm/utils/context.js.map +1 -1
- package/build/esm/utils/create-subscription.d.ts +4 -4
- package/build/esm/utils/create-subscription.js.map +1 -1
- package/build/esm/utils/get-circular-index.d.ts +1 -1
- package/build/esm/utils/get-circular-index.js.map +1 -1
- package/build/esm/utils/index.d.ts +10 -10
- package/build/esm/utils/index.js.map +1 -1
- package/build/esm/utils/is-right-click.d.ts +6 -6
- package/build/esm/utils/is-right-click.js +4 -4
- package/build/esm/utils/is-right-click.js.map +1 -1
- package/build/esm/utils/owner-document.d.ts +7 -7
- package/build/esm/utils/owner-document.js +5 -5
- package/build/esm/utils/owner-document.js.map +1 -1
- package/build/esm/utils/polymorphic.d.ts +39 -39
- package/build/esm/utils/polymorphic.js.map +1 -1
- package/build/esm/utils/rubber-band-clamp.d.ts +2 -2
- package/build/esm/utils/rubber-band-clamp.js.map +1 -1
- package/build/esm/utils/use-stable-callback.d.ts +16 -16
- package/build/esm/utils/use-stable-callback.js +16 -16
- package/build/esm/utils/use-stable-callback.js.map +1 -1
- package/build/esm/utils/wrap-event.d.ts +3 -3
- package/build/esm/utils/wrap-event.js.map +1 -1
- package/build/tsconfig-build.tsbuildinfo +1 -1
- package/package.json +2 -2
- package/src/Accordion/Accordion.story.tsx +74 -74
- package/src/Accordion/Accordion.tsx +59 -59
- package/src/Accordion/AccordionBody.tsx +52 -52
- package/src/Accordion/AccordionHeader.tsx +167 -167
- package/src/Accordion/AccordionItem.tsx +50 -50
- package/src/Accordion/context.ts +37 -37
- package/src/Accordion/index.ts +4 -4
- package/src/Accordion/scopeQuery.ts +7 -7
- package/src/Accordion/styles.css +21 -21
- package/src/CheckBox/CheckBox.tsx +41 -41
- package/src/CheckBox/index.ts +1 -1
- package/src/ComboBox/ComboBox.story.tsx +120 -120
- package/src/ComboBox/Combobox.tsx +148 -148
- package/src/ComboBox/ComboboxButton.tsx +61 -61
- package/src/ComboBox/ComboboxInput.tsx +187 -187
- package/src/ComboBox/ComboboxLabel.tsx +33 -33
- package/src/ComboBox/ComboboxList.tsx +47 -47
- package/src/ComboBox/ComboboxOption.tsx +111 -111
- package/src/ComboBox/ComboboxPopover.tsx +64 -64
- package/src/ComboBox/cities.ts +23194 -23194
- package/src/ComboBox/context.ts +35 -35
- package/src/ComboBox/hooks.tsx +451 -451
- package/src/ComboBox/index.ts +8 -8
- package/src/ComboBox/makeHash.ts +19 -19
- package/src/ComboBox/scopeQuery.ts +6 -6
- package/src/ComboBox/styles.css +32 -32
- package/src/FocusLock/FocusLock.tsx +66 -66
- package/src/FocusLock/index.ts +1 -1
- package/src/FocusLock/tabUtils.ts +40 -40
- package/src/FocusLock/useFocusLock.ts +56 -56
- package/src/List/List.story.tsx +18 -18
- package/src/List/List.tsx +17 -17
- package/src/List/ListItem.tsx +23 -23
- package/src/List/context.ts +19 -19
- package/src/List/index.ts +2 -2
- package/src/Menu/ContextMenu.story.tsx +73 -73
- package/src/Menu/ContextMenuTrigger.tsx +76 -76
- package/src/Menu/Menu.story.tsx +160 -160
- package/src/Menu/Menu.tsx +83 -83
- package/src/Menu/MenuButton.tsx +83 -83
- package/src/Menu/MenuComplex.story.tsx +58 -58
- package/src/Menu/MenuItem.tsx +88 -88
- package/src/Menu/MenuList.tsx +254 -254
- package/src/Menu/MenuPopover.tsx +35 -35
- package/src/Menu/context.ts +44 -44
- package/src/Menu/fixtures/countryList.ts +198 -198
- package/src/Menu/index.ts +6 -6
- package/src/Menu/scope.ts +7 -7
- package/src/Menu/styles.css +42 -42
- package/src/Modal/Modal.story.tsx +258 -258
- package/src/Modal/Modal.tsx +48 -48
- package/src/Modal/ModalBackdrop.tsx +78 -78
- package/src/Modal/NavDrawer.story.tsx +158 -158
- package/src/Modal/index.ts +2 -2
- package/src/Modal/styles.css +46 -46
- package/src/Popper/Popper.story.tsx +263 -263
- package/src/Popper/Popper.tsx +154 -154
- package/src/Popper/PopperArrow.tsx +35 -35
- package/src/Popper/context.ts +10 -10
- package/src/Popper/index.ts +3 -3
- package/src/Popper/styles.css +60 -60
- package/src/Portal/Portal.tsx +20 -20
- package/src/Portal/index.ts +1 -1
- package/src/RadioButton/RadioButton.story.tsx +77 -77
- package/src/RadioButton/RadioButton.tsx +55 -55
- package/src/RadioButton/RadioGroup.tsx +60 -60
- package/src/RadioButton/context.ts +17 -17
- package/src/RadioButton/index.ts +2 -2
- package/src/SkipNav/SkipNav.tsx +16 -16
- package/src/SkipNav/index.tsx +1 -1
- package/src/Slider/Slider.story.tsx +45 -45
- package/src/Slider/Slider.tsx +1120 -1120
- package/src/Slider/index.ts +1 -1
- package/src/Slider/styles.css +131 -131
- package/src/Spinner/Spinner.story.tsx +31 -31
- package/src/Spinner/Spinner.tsx +117 -117
- package/src/Spinner/SpinnerButton.tsx +54 -54
- package/src/Spinner/context.ts +20 -20
- package/src/Spinner/index.ts +2 -2
- package/src/Spinner/styles.css +23 -23
- package/src/Tabs/Tab.story.tsx +80 -80
- package/src/Tabs/Tab.tsx +136 -136
- package/src/Tabs/TabList.tsx +71 -71
- package/src/Tabs/TabPanel.tsx +53 -53
- package/src/Tabs/TabPanels.tsx +30 -30
- package/src/Tabs/Tabs.tsx +46 -46
- package/src/Tabs/context.ts +30 -30
- package/src/Tabs/index.tsx +5 -5
- package/src/Tabs/scopeQuery.ts +6 -6
- package/src/Tooltip/Tooltip.story.tsx +61 -61
- package/src/Tooltip/Tooltip.tsx +50 -50
- package/src/Tooltip/index.ts +1 -1
- package/src/Tooltip/stateMachine.ts +192 -192
- package/src/Tooltip/styles.css +17 -17
- package/src/Tooltip/useTooltip.ts +136 -136
- package/src/hooks/index.ts +13 -13
- package/src/hooks/useAutoFocus.ts +22 -22
- package/src/hooks/useChildrenCounter.ts +51 -51
- package/src/hooks/useControlledState.ts +3 -3
- package/src/hooks/useFocusReturn.ts +43 -43
- package/src/hooks/useFocusState.ts +30 -30
- package/src/hooks/useGestureHandlers.ts +286 -286
- package/src/hooks/useMeasure.ts +33 -33
- package/src/hooks/useOnClickOutside.ts +32 -32
- package/src/hooks/useOnKeyDown.ts +19 -19
- package/src/hooks/useReducerMachine.ts +60 -60
- package/src/hooks/useRemoveBodyScroll.ts +39 -39
- package/src/hooks/useScope.ts +52 -52
- package/src/hooks/useThrottle.ts +19 -19
- package/src/index.ts +20 -20
- package/src/utils/assign-ref.ts +27 -27
- package/src/utils/can-use-dom.ts +7 -7
- package/src/utils/clamp.ts +3 -3
- package/src/utils/context.tsx +48 -48
- package/src/utils/create-subscription.ts +16 -16
- package/src/utils/get-circular-index.ts +7 -7
- package/src/utils/index.ts +10 -10
- package/src/utils/is-right-click.ts +14 -14
- package/src/utils/owner-document.ts +13 -13
- package/src/utils/polymorphic.ts +78 -78
- package/src/utils/rubber-band-clamp.ts +25 -25
- package/src/utils/use-stable-callback.ts +58 -58
- package/src/utils/wrap-event.ts +22 -22
- package/build/esm/TimerField/clamp.d.ts +0 -1
- package/build/esm/TimerField/clamp.js +0 -2
- package/build/esm/TimerField/clamp.js.map +0 -1
- package/build/esm/TimerField/index.d.ts +0 -1
- package/build/esm/TimerField/index.js +0 -2
- package/build/esm/TimerField/index.js.map +0 -1
- package/build/esm/TimerField/useControlledState.d.ts +0 -1
- package/build/esm/TimerField/useControlledState.js +0 -2
- package/build/esm/TimerField/useControlledState.js.map +0 -1
- package/build/esm/TimerField/useTimerField.d.ts +0 -44
- package/build/esm/TimerField/useTimerField.js +0 -430
- package/build/esm/TimerField/useTimerField.js.map +0 -1
- package/build/esm/TimerField/wrapEvent.d.ts +0 -1
- package/build/esm/TimerField/wrapEvent.js +0 -2
- package/build/esm/TimerField/wrapEvent.js.map +0 -1
|
@@ -1,430 +0,0 @@
|
|
|
1
|
-
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
2
|
-
import _extends from "@babel/runtime/helpers/extends";
|
|
3
|
-
import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
|
|
4
|
-
import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
|
|
5
|
-
import { useEffect, useRef, useMemo, useState, useCallback, version } from 'react';
|
|
6
|
-
import { unstable_batchedUpdates } from 'react-dom';
|
|
7
|
-
import { useControlledState } from './useControlledState';
|
|
8
|
-
import { clamp as clampFunc } from './clamp';
|
|
9
|
-
|
|
10
|
-
function isValidPartialNumber(value) {
|
|
11
|
-
// Sanitize
|
|
12
|
-
var sanitizedValue = (value || '').replace(/[^0-9]+/g, '');
|
|
13
|
-
return value.length === sanitizedValue.length;
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
function getSegmentText(nextValue) {
|
|
17
|
-
if (nextValue === undefined) {
|
|
18
|
-
return '00';
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
var padLength = 2;
|
|
22
|
-
return String(nextValue).padStart(padLength, '0');
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
var segmentOrdering = ['hour', 'minute', 'second'];
|
|
26
|
-
|
|
27
|
-
function getNextSegment(segmentType, dir) {
|
|
28
|
-
var nextSegmentTypeIdx = segmentOrdering.findIndex(function (c) {
|
|
29
|
-
return c === segmentType;
|
|
30
|
-
}) + (dir === 'next' ? 1 : -1);
|
|
31
|
-
return nextSegmentTypeIdx >= 0 && nextSegmentTypeIdx < segmentOrdering.length ? segmentOrdering[nextSegmentTypeIdx] : null;
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
function focusOnSegment(parentEl, segmentType) {
|
|
35
|
-
var el = parentEl && parentEl.querySelector("[data-timer-field-segment=\"".concat(segmentType, "\"]"));
|
|
36
|
-
|
|
37
|
-
if (el instanceof HTMLElement) {
|
|
38
|
-
el.focus();
|
|
39
|
-
return;
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
export function useHasFocusWithin(ref) {
|
|
44
|
-
var _useState = useState(false),
|
|
45
|
-
_useState2 = _slicedToArray(_useState, 2),
|
|
46
|
-
hasFocusWithin = _useState2[0],
|
|
47
|
-
setHasFocusWithin = _useState2[1];
|
|
48
|
-
|
|
49
|
-
useEffect(function () {
|
|
50
|
-
if (!ref.current) {
|
|
51
|
-
return;
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
var el = ref.current;
|
|
55
|
-
|
|
56
|
-
var onFocus = function onFocus() {
|
|
57
|
-
setHasFocusWithin(true);
|
|
58
|
-
};
|
|
59
|
-
|
|
60
|
-
var onBlur = function onBlur(e) {
|
|
61
|
-
// Is the new element receiving focus contained within the wrapped element?
|
|
62
|
-
if (!e.relatedTarget || !(e.relatedTarget instanceof Node) || !el.contains(e.relatedTarget)) {
|
|
63
|
-
setHasFocusWithin(false);
|
|
64
|
-
}
|
|
65
|
-
};
|
|
66
|
-
|
|
67
|
-
el.addEventListener('focusin', onFocus);
|
|
68
|
-
el.addEventListener('focusout', onBlur);
|
|
69
|
-
return function () {
|
|
70
|
-
el.removeEventListener('focusout', onBlur);
|
|
71
|
-
el.removeEventListener('focusin', onFocus);
|
|
72
|
-
};
|
|
73
|
-
}, [ref]);
|
|
74
|
-
return hasFocusWithin;
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
function segmentStatesFromValue(value) {
|
|
78
|
-
var hour = value !== null ? Math.floor(value / 3600) : null;
|
|
79
|
-
var minute = value !== null ? Math.floor(value / 60) % 60 : null;
|
|
80
|
-
var second = value !== null ? value % 60 : null;
|
|
81
|
-
return [{
|
|
82
|
-
type: 'hour',
|
|
83
|
-
value: hour,
|
|
84
|
-
minValue: 0,
|
|
85
|
-
maxValue: 999,
|
|
86
|
-
maxTempValue: 999,
|
|
87
|
-
isEditable: true
|
|
88
|
-
}, {
|
|
89
|
-
type: 'minute',
|
|
90
|
-
value: minute,
|
|
91
|
-
minValue: 0,
|
|
92
|
-
maxValue: 59,
|
|
93
|
-
maxTempValue: 99,
|
|
94
|
-
isEditable: true
|
|
95
|
-
}, {
|
|
96
|
-
type: 'second',
|
|
97
|
-
value: second,
|
|
98
|
-
minValue: 0,
|
|
99
|
-
maxValue: 59,
|
|
100
|
-
maxTempValue: 99,
|
|
101
|
-
isEditable: true
|
|
102
|
-
}];
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
export function useTimerField(props) {
|
|
106
|
-
var valueProp = props.value,
|
|
107
|
-
defaultValueProp = props.defaultValue,
|
|
108
|
-
onChangeProp = props.onChange;
|
|
109
|
-
|
|
110
|
-
var _useControlledState = useControlledState(valueProp, function (e, value) {
|
|
111
|
-
return onChangeProp && onChangeProp(value);
|
|
112
|
-
}, defaultValueProp, function (setState) {
|
|
113
|
-
return function (e, value) {
|
|
114
|
-
setState(value);
|
|
115
|
-
};
|
|
116
|
-
}),
|
|
117
|
-
_useControlledState2 = _slicedToArray(_useControlledState, 2),
|
|
118
|
-
value = _useControlledState2[0],
|
|
119
|
-
onChange = _useControlledState2[1];
|
|
120
|
-
|
|
121
|
-
var hasFocusWithin = useHasFocusWithin(props.ref);
|
|
122
|
-
|
|
123
|
-
var _useState3 = useState(segmentStatesFromValue(value || null)),
|
|
124
|
-
_useState4 = _slicedToArray(_useState3, 2),
|
|
125
|
-
segments = _useState4[0],
|
|
126
|
-
setSegmentState = _useState4[1];
|
|
127
|
-
|
|
128
|
-
var prevValue = useRef(value);
|
|
129
|
-
|
|
130
|
-
if (value !== prevValue.current) {
|
|
131
|
-
prevValue.current = value;
|
|
132
|
-
setSegmentState(segmentStatesFromValue(value || null));
|
|
133
|
-
}
|
|
134
|
-
|
|
135
|
-
var labelProps = {};
|
|
136
|
-
var fieldProps = {
|
|
137
|
-
role: 'group',
|
|
138
|
-
onPointerDown: function onPointerDown(e) {
|
|
139
|
-
if (!hasFocusWithin && e.currentTarget === e.target) {
|
|
140
|
-
e.preventDefault();
|
|
141
|
-
focusOnSegment(props.ref.current, 'second');
|
|
142
|
-
}
|
|
143
|
-
}
|
|
144
|
-
};
|
|
145
|
-
var state = useMemo(function () {
|
|
146
|
-
var handleChangeSegment = function handleChangeSegment(seg, newValue) {
|
|
147
|
-
if (newValue === null) {
|
|
148
|
-
seg.value = null;
|
|
149
|
-
} else {
|
|
150
|
-
seg.value = newValue;
|
|
151
|
-
}
|
|
152
|
-
};
|
|
153
|
-
|
|
154
|
-
return {
|
|
155
|
-
parentRef: props.ref,
|
|
156
|
-
isReadOnly: false,
|
|
157
|
-
isDisabled: false,
|
|
158
|
-
hasFocusWithin: hasFocusWithin,
|
|
159
|
-
segments: segments,
|
|
160
|
-
value: value,
|
|
161
|
-
clear: function clear() {
|
|
162
|
-
focusOnSegment(props.ref.current, 'second');
|
|
163
|
-
unstable_batchedUpdates(function () {
|
|
164
|
-
setSegmentState(segmentStatesFromValue(null));
|
|
165
|
-
onChange({}, undefined);
|
|
166
|
-
});
|
|
167
|
-
},
|
|
168
|
-
simplifySegments: function simplifySegments() {
|
|
169
|
-
setSegmentState(function (curState) {
|
|
170
|
-
var newState = _toConsumableArray(curState);
|
|
171
|
-
|
|
172
|
-
var carryOver = 0;
|
|
173
|
-
|
|
174
|
-
for (var i = newState.length - 1; i >= 0; i--) {
|
|
175
|
-
var segment = _extends({}, newState[i]);
|
|
176
|
-
|
|
177
|
-
if (carryOver > 0) {
|
|
178
|
-
handleChangeSegment(segment, (segment.value || 0) + carryOver);
|
|
179
|
-
carryOver = 0;
|
|
180
|
-
}
|
|
181
|
-
|
|
182
|
-
if (segment.value && segment.value > segment.maxValue) {
|
|
183
|
-
carryOver = Math.floor(segment.value / (segment.maxValue + 1));
|
|
184
|
-
handleChangeSegment(segment, segment.value % (segment.maxValue + 1));
|
|
185
|
-
}
|
|
186
|
-
|
|
187
|
-
newState[i] = segment;
|
|
188
|
-
}
|
|
189
|
-
|
|
190
|
-
return newState;
|
|
191
|
-
});
|
|
192
|
-
},
|
|
193
|
-
setSegment: function setSegment(part, value) {
|
|
194
|
-
var ret = _toConsumableArray(segments);
|
|
195
|
-
|
|
196
|
-
var idx = ret.findIndex(function (v) {
|
|
197
|
-
return v.type === part;
|
|
198
|
-
});
|
|
199
|
-
|
|
200
|
-
if (idx === -1) {
|
|
201
|
-
return;
|
|
202
|
-
}
|
|
203
|
-
|
|
204
|
-
var field = _extends({}, ret[idx]);
|
|
205
|
-
|
|
206
|
-
if (typeof value === 'function') {
|
|
207
|
-
handleChangeSegment(field, value(ret[idx].value));
|
|
208
|
-
} else {
|
|
209
|
-
handleChangeSegment(field, value || null);
|
|
210
|
-
}
|
|
211
|
-
|
|
212
|
-
ret[idx] = field;
|
|
213
|
-
var newValueInSeconds = (ret[0].value || 0) * 3600 + (ret[1].value || 0) * 60 + (ret[2].value || 0);
|
|
214
|
-
prevValue.current = newValueInSeconds;
|
|
215
|
-
unstable_batchedUpdates(function () {
|
|
216
|
-
onChange({}, newValueInSeconds);
|
|
217
|
-
setSegmentState(ret);
|
|
218
|
-
});
|
|
219
|
-
},
|
|
220
|
-
validationState: 'valid'
|
|
221
|
-
};
|
|
222
|
-
}, [props.ref, hasFocusWithin, segments, onChange, value]);
|
|
223
|
-
return {
|
|
224
|
-
state: state,
|
|
225
|
-
labelProps: labelProps,
|
|
226
|
-
fieldProps: fieldProps
|
|
227
|
-
};
|
|
228
|
-
}
|
|
229
|
-
export function useTimerFieldSegment(segment, state, ref) {
|
|
230
|
-
var _segmentProps;
|
|
231
|
-
|
|
232
|
-
var stepSize = segment.type === 'hour' ? 2 : 15;
|
|
233
|
-
var segmentText = getSegmentText(segment.value);
|
|
234
|
-
var enteredKeys = useRef('');
|
|
235
|
-
|
|
236
|
-
var handleKeyDown = function handleKeyDown(e) {
|
|
237
|
-
var nextValue = segment.value || 0;
|
|
238
|
-
|
|
239
|
-
switch (e.key) {
|
|
240
|
-
case 'ArrowUp':
|
|
241
|
-
nextValue += 1;
|
|
242
|
-
break;
|
|
243
|
-
|
|
244
|
-
case 'ArrowDown':
|
|
245
|
-
nextValue -= 1;
|
|
246
|
-
break;
|
|
247
|
-
|
|
248
|
-
case 'ArrowRight':
|
|
249
|
-
case 'ArrowLeft':
|
|
250
|
-
var nextSegment = getNextSegment(segment.type, e.key === 'ArrowRight' ? 'next' : 'prev');
|
|
251
|
-
|
|
252
|
-
if (nextSegment) {
|
|
253
|
-
focusOnSegment(state.parentRef.current, nextSegment);
|
|
254
|
-
}
|
|
255
|
-
|
|
256
|
-
e.preventDefault();
|
|
257
|
-
return;
|
|
258
|
-
|
|
259
|
-
case 'End':
|
|
260
|
-
nextValue = segment.maxValue;
|
|
261
|
-
break;
|
|
262
|
-
|
|
263
|
-
case 'Home':
|
|
264
|
-
nextValue = segment.minValue;
|
|
265
|
-
break;
|
|
266
|
-
|
|
267
|
-
case 'PageUp':
|
|
268
|
-
if (segment.type !== 'hour') {
|
|
269
|
-
nextValue = Math.ceil((nextValue + 1) / stepSize) * stepSize % 60;
|
|
270
|
-
} else {
|
|
271
|
-
nextValue += stepSize;
|
|
272
|
-
}
|
|
273
|
-
|
|
274
|
-
break;
|
|
275
|
-
|
|
276
|
-
case 'PageDown':
|
|
277
|
-
if (segment.type !== 'hour') {
|
|
278
|
-
nextValue = Math.floor((nextValue - 1) / stepSize) * stepSize % 60;
|
|
279
|
-
} else {
|
|
280
|
-
nextValue -= stepSize;
|
|
281
|
-
}
|
|
282
|
-
|
|
283
|
-
break;
|
|
284
|
-
|
|
285
|
-
default:
|
|
286
|
-
return;
|
|
287
|
-
}
|
|
288
|
-
|
|
289
|
-
e.preventDefault(); // prevent scrolling
|
|
290
|
-
|
|
291
|
-
nextValue = clampFunc(nextValue || 0, segment.minValue, segment.maxTempValue);
|
|
292
|
-
|
|
293
|
-
if (nextValue !== segment.value) {
|
|
294
|
-
state.setSegment(segment.type, nextValue);
|
|
295
|
-
}
|
|
296
|
-
};
|
|
297
|
-
|
|
298
|
-
var onInput = useCallback(function (key) {
|
|
299
|
-
if (state.isDisabled || state.isReadOnly) {
|
|
300
|
-
return;
|
|
301
|
-
}
|
|
302
|
-
|
|
303
|
-
var newTextValue = enteredKeys.current + key;
|
|
304
|
-
|
|
305
|
-
if (newTextValue.length > String(segment.maxTempValue).length) {
|
|
306
|
-
newTextValue = newTextValue.slice(-String(segment.maxTempValue).length);
|
|
307
|
-
}
|
|
308
|
-
|
|
309
|
-
switch (segment.type) {
|
|
310
|
-
case 'hour':
|
|
311
|
-
case 'minute':
|
|
312
|
-
case 'second':
|
|
313
|
-
{
|
|
314
|
-
if (!isValidPartialNumber(newTextValue)) {
|
|
315
|
-
return;
|
|
316
|
-
}
|
|
317
|
-
|
|
318
|
-
var numberValue = parseInt(newTextValue, 10);
|
|
319
|
-
var segmentValue = numberValue;
|
|
320
|
-
var allowsZero = segment.minValue === 0;
|
|
321
|
-
|
|
322
|
-
if (numberValue > segment.maxTempValue) {
|
|
323
|
-
segmentValue = parseInt(key);
|
|
324
|
-
}
|
|
325
|
-
|
|
326
|
-
if (isNaN(numberValue)) {
|
|
327
|
-
return;
|
|
328
|
-
}
|
|
329
|
-
|
|
330
|
-
var shouldSetValue = segmentValue !== 0 || allowsZero;
|
|
331
|
-
|
|
332
|
-
if (shouldSetValue) {
|
|
333
|
-
state.setSegment(segment.type, segmentValue);
|
|
334
|
-
}
|
|
335
|
-
|
|
336
|
-
enteredKeys.current = newTextValue;
|
|
337
|
-
break;
|
|
338
|
-
}
|
|
339
|
-
}
|
|
340
|
-
}, [segment.maxTempValue, segment.minValue, segment.type, state]);
|
|
341
|
-
var backspace = useCallback(function () {
|
|
342
|
-
if (isValidPartialNumber(segmentText) && !state.isReadOnly) {
|
|
343
|
-
var newValue = segmentText.slice(0, -1);
|
|
344
|
-
var parsed = parseInt(newValue, 10);
|
|
345
|
-
|
|
346
|
-
if (newValue.length === 0 || parsed === 0) {
|
|
347
|
-
state.setSegment(segment.type, undefined);
|
|
348
|
-
} else {
|
|
349
|
-
state.setSegment(segment.type, parsed);
|
|
350
|
-
}
|
|
351
|
-
|
|
352
|
-
enteredKeys.current = newValue;
|
|
353
|
-
}
|
|
354
|
-
}, [segmentText, segment.type, state]);
|
|
355
|
-
var compositionRef = useRef('');
|
|
356
|
-
useEffect(function () {
|
|
357
|
-
var el = ref.current;
|
|
358
|
-
|
|
359
|
-
if (el) {
|
|
360
|
-
var handleBeforeInput = function handleBeforeInput(e) {
|
|
361
|
-
e.preventDefault();
|
|
362
|
-
|
|
363
|
-
switch (e.inputType) {
|
|
364
|
-
case 'deleteContentBackward':
|
|
365
|
-
case 'deleteContentForward':
|
|
366
|
-
if (isValidPartialNumber(segmentText) && !state.isReadOnly) {
|
|
367
|
-
backspace();
|
|
368
|
-
}
|
|
369
|
-
|
|
370
|
-
break;
|
|
371
|
-
|
|
372
|
-
case 'insertCompositionText':
|
|
373
|
-
// insertCompositionText cannot be canceled.
|
|
374
|
-
// Record the current state of the element so we can restore it in the `input` event below.
|
|
375
|
-
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
376
|
-
compositionRef.current = el.textContent; // Safari gets stuck in a composition state unless we also assign to the value here.
|
|
377
|
-
// eslint-disable-next-line no-self-assign
|
|
378
|
-
|
|
379
|
-
el.textContent = el.textContent;
|
|
380
|
-
break;
|
|
381
|
-
|
|
382
|
-
default:
|
|
383
|
-
if (e.data !== null) {
|
|
384
|
-
onInput(e.data);
|
|
385
|
-
}
|
|
386
|
-
|
|
387
|
-
break;
|
|
388
|
-
}
|
|
389
|
-
};
|
|
390
|
-
|
|
391
|
-
var handleInput = function handleInput(e) {
|
|
392
|
-
if (e.inputType === 'insertCompositionText') {
|
|
393
|
-
// Reset the DOM to how it was in the beforeinput event.
|
|
394
|
-
el.textContent = compositionRef.current;
|
|
395
|
-
}
|
|
396
|
-
};
|
|
397
|
-
|
|
398
|
-
el.addEventListener('beforeinput', handleBeforeInput);
|
|
399
|
-
el.addEventListener('input', handleInput);
|
|
400
|
-
return function () {
|
|
401
|
-
el.removeEventListener('input', handleInput);
|
|
402
|
-
el.removeEventListener('beforeinput', handleBeforeInput);
|
|
403
|
-
};
|
|
404
|
-
}
|
|
405
|
-
}, [backspace, onInput, ref, segmentText, state.isReadOnly]);
|
|
406
|
-
var simplifySegments = state.simplifySegments;
|
|
407
|
-
var handleBlur = useCallback(function () {
|
|
408
|
-
enteredKeys.current = '';
|
|
409
|
-
|
|
410
|
-
if (segment.value && segment.value > segment.maxValue) {
|
|
411
|
-
simplifySegments();
|
|
412
|
-
}
|
|
413
|
-
}, [segment.maxValue, segment.value, simplifySegments]);
|
|
414
|
-
return {
|
|
415
|
-
state: {
|
|
416
|
-
isPlaceholder: segment.value === undefined && state.hasFocusWithin || state.value === undefined && !state.hasFocusWithin,
|
|
417
|
-
text: segmentText
|
|
418
|
-
},
|
|
419
|
-
segmentProps: (_segmentProps = {
|
|
420
|
-
role: 'spinbutton',
|
|
421
|
-
'aria-valuenow': segment.value,
|
|
422
|
-
'aria-valuemin': segment.minValue,
|
|
423
|
-
'aria-valuemax': segment.maxValue,
|
|
424
|
-
'aria-label': segment.type
|
|
425
|
-
}, _defineProperty(_segmentProps, 'data-timer-field-segment', segment.type), _defineProperty(_segmentProps, "contentEditable", true), _defineProperty(_segmentProps, "suppressContentEditableWarning", true), _defineProperty(_segmentProps, "spellCheck", false), _defineProperty(_segmentProps, "autoCapitalize", 'off'), _defineProperty(_segmentProps, "autoCorrect", 'off'), _defineProperty(_segmentProps, parseInt(version, 10) >= 17 ? 'enterKeyHint' : 'enterkeyhint', 'next'), _defineProperty(_segmentProps, "inputMode", 'numeric'), _defineProperty(_segmentProps, "tabIndex", 0), _defineProperty(_segmentProps, "style", {
|
|
426
|
-
caretColor: 'transparent'
|
|
427
|
-
}), _defineProperty(_segmentProps, "onKeyDown", handleKeyDown), _defineProperty(_segmentProps, "onBlur", handleBlur), _segmentProps)
|
|
428
|
-
};
|
|
429
|
-
}
|
|
430
|
-
//# sourceMappingURL=useTimerField.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useTimerField.js","names":["useEffect","useRef","useMemo","useState","useCallback","version","unstable_batchedUpdates","useControlledState","clamp","clampFunc","isValidPartialNumber","value","sanitizedValue","replace","length","getSegmentText","nextValue","undefined","padLength","String","padStart","segmentOrdering","getNextSegment","segmentType","dir","nextSegmentTypeIdx","findIndex","c","focusOnSegment","parentEl","el","querySelector","HTMLElement","focus","useHasFocusWithin","ref","hasFocusWithin","setHasFocusWithin","current","onFocus","onBlur","e","relatedTarget","Node","contains","addEventListener","removeEventListener","segmentStatesFromValue","hour","Math","floor","minute","second","type","minValue","maxValue","maxTempValue","isEditable","useTimerField","props","valueProp","defaultValueProp","defaultValue","onChangeProp","onChange","setState","segments","setSegmentState","prevValue","labelProps","fieldProps","role","onPointerDown","currentTarget","target","preventDefault","state","handleChangeSegment","seg","newValue","parentRef","isReadOnly","isDisabled","clear","simplifySegments","curState","newState","carryOver","i","segment","setSegment","part","ret","idx","v","field","newValueInSeconds","validationState","useTimerFieldSegment","stepSize","segmentText","enteredKeys","handleKeyDown","key","nextSegment","ceil","onInput","newTextValue","slice","numberValue","parseInt","segmentValue","allowsZero","isNaN","shouldSetValue","backspace","parsed","compositionRef","handleBeforeInput","inputType","textContent","data","handleInput","handleBlur","isPlaceholder","text","segmentProps","caretColor"],"sources":["../../../src/TimerField/useTimerField.tsx"],"sourcesContent":["import type {\n RefObject,\n KeyboardEvent,\n HTMLAttributes,\n PointerEvent,\n} from 'react';\nimport {\n useEffect,\n useRef,\n useMemo,\n useState,\n useCallback,\n version,\n} from 'react';\nimport { unstable_batchedUpdates } from 'react-dom';\n\nimport { useControlledState } from './useControlledState';\nimport { clamp as clampFunc } from './clamp';\n\nexport interface UseTimerFieldProps {\n value?: number | null;\n defaultValue?: number | null;\n onChange?: (value: number | null) => void;\n label?: string;\n ref: RefObject<HTMLElement | null>;\n}\n\nexport interface TimerFieldSegmentType {\n isEditable?: boolean;\n value: number | null;\n minValue: number;\n maxValue: number;\n maxTempValue: number;\n type: 'hour' | 'minute' | 'second';\n}\n\nexport interface TimerFieldState {\n parentRef: RefObject<HTMLElement | null>;\n hasFocusWithin: boolean;\n isReadOnly: boolean;\n isDisabled: boolean;\n value: number | null;\n clear: () => void;\n segments: TimerFieldSegmentType[];\n simplifySegments(): void;\n setSegment(\n part: 'hour' | 'minute' | 'second',\n value: number | undefined | ((curValue: number | null) => number | null)\n ): void;\n validationState?: 'invalid' | 'valid';\n}\n\nfunction isValidPartialNumber(value: string): boolean {\n // Sanitize\n const sanitizedValue = (value || '').replace(/[^0-9]+/g, '');\n return value.length === sanitizedValue.length;\n}\n\nfunction getSegmentText(nextValue: number | null): string {\n if (nextValue === undefined) {\n return '00';\n }\n const padLength = 2;\n return String(nextValue).padStart(padLength, '0');\n}\n\nconst segmentOrdering = ['hour' as const, 'minute' as const, 'second' as const];\nfunction getNextSegment(\n segmentType: TimerFieldSegmentType['type'],\n dir: 'next' | 'prev'\n) {\n const nextSegmentTypeIdx =\n segmentOrdering.findIndex((c) => c === segmentType) +\n (dir === 'next' ? 1 : -1);\n return nextSegmentTypeIdx >= 0 && nextSegmentTypeIdx < segmentOrdering.length\n ? segmentOrdering[nextSegmentTypeIdx]\n : null;\n}\n\nfunction focusOnSegment(\n parentEl: HTMLElement | null,\n segmentType: TimerFieldSegmentType['type']\n) {\n const el =\n parentEl &&\n parentEl.querySelector(`[data-timer-field-segment=\"${segmentType}\"]`);\n if (el instanceof HTMLElement) {\n el.focus();\n return;\n }\n}\n\nexport function useHasFocusWithin<ElementType extends HTMLElement>(\n ref: RefObject<ElementType | null>\n) {\n const [hasFocusWithin, setHasFocusWithin] = useState(false);\n useEffect(() => {\n if (!ref.current) {\n return;\n }\n\n const el = ref.current;\n const onFocus = () => {\n setHasFocusWithin(true);\n };\n const onBlur = (e: FocusEvent) => {\n // Is the new element receiving focus contained within the wrapped element?\n if (\n !e.relatedTarget ||\n !(e.relatedTarget instanceof Node) ||\n !el.contains(e.relatedTarget)\n ) {\n setHasFocusWithin(false);\n }\n };\n el.addEventListener('focusin', onFocus);\n el.addEventListener('focusout', onBlur);\n return () => {\n el.removeEventListener('focusout', onBlur);\n el.removeEventListener('focusin', onFocus);\n };\n }, [ref]);\n return hasFocusWithin;\n}\n\nfunction segmentStatesFromValue(value: number | null): TimerFieldSegmentType[] {\n const hour = value !== null ? Math.floor(value / 3600) : null;\n const minute = value !== null ? Math.floor(value / 60) % 60 : null;\n const second = value !== null ? value % 60 : null;\n return [\n {\n type: 'hour' as const,\n value: hour,\n minValue: 0,\n maxValue: 999,\n maxTempValue: 999,\n isEditable: true,\n },\n {\n type: 'minute',\n value: minute,\n minValue: 0,\n maxValue: 59,\n maxTempValue: 99,\n isEditable: true,\n },\n {\n type: 'second',\n value: second,\n minValue: 0,\n maxValue: 59,\n maxTempValue: 99,\n isEditable: true,\n },\n ];\n}\n\nexport function useTimerField(props: UseTimerFieldProps) {\n const {\n value: valueProp,\n defaultValue: defaultValueProp,\n onChange: onChangeProp,\n } = props;\n const [value, onChange] = useControlledState(\n valueProp,\n (e: KeyboardEvent<HTMLDivElement>, value: number | null) =>\n onChangeProp && onChangeProp(value),\n defaultValueProp,\n (setState) => (e: KeyboardEvent<HTMLDivElement>, value: number | null) => {\n setState(value);\n }\n );\n const hasFocusWithin = useHasFocusWithin(props.ref);\n\n const [segments, setSegmentState] = useState<TimerFieldSegmentType[]>(\n segmentStatesFromValue(value || null)\n );\n const prevValue = useRef(value);\n if (value !== prevValue.current) {\n prevValue.current = value;\n setSegmentState(segmentStatesFromValue(value || null));\n }\n\n const labelProps = {};\n const fieldProps = {\n role: 'group',\n onPointerDown: (e: PointerEvent<HTMLDivElement>) => {\n if (!hasFocusWithin && e.currentTarget === e.target) {\n e.preventDefault();\n focusOnSegment(props.ref.current, 'second');\n }\n },\n };\n const state: TimerFieldState = useMemo(() => {\n const handleChangeSegment = (\n seg: TimerFieldSegmentType,\n newValue: number | null\n ): void => {\n if (newValue === null) {\n seg.value = null;\n } else {\n seg.value = newValue;\n }\n };\n\n return {\n parentRef: props.ref,\n isReadOnly: false,\n isDisabled: false,\n hasFocusWithin,\n segments,\n value: value,\n clear: () => {\n focusOnSegment(props.ref.current, 'second');\n unstable_batchedUpdates(() => {\n setSegmentState(segmentStatesFromValue(null));\n onChange({} as any, undefined as any);\n });\n },\n simplifySegments: () => {\n setSegmentState((curState) => {\n const newState = [...curState];\n let carryOver = 0;\n for (let i = newState.length - 1; i >= 0; i--) {\n const segment = { ...newState[i] };\n if (carryOver > 0) {\n handleChangeSegment(segment, (segment.value || 0) + carryOver);\n carryOver = 0;\n }\n if (segment.value && segment.value > segment.maxValue) {\n carryOver = Math.floor(segment.value / (segment.maxValue + 1));\n handleChangeSegment(\n segment,\n segment.value % (segment.maxValue + 1)\n );\n }\n newState[i] = segment;\n }\n return newState;\n });\n },\n setSegment: (\n part: 'hour' | 'minute' | 'second',\n value: number | undefined | ((curValue: number | null) => number | null)\n ): void => {\n const ret = [...segments];\n const idx = ret.findIndex((v) => v.type === part);\n if (idx === -1) {\n return;\n }\n\n const field = { ...ret[idx] };\n if (typeof value === 'function') {\n handleChangeSegment(field, value(ret[idx].value));\n } else {\n handleChangeSegment(field, value || null);\n }\n ret[idx] = field;\n const newValueInSeconds =\n (ret[0].value || 0) * 3600 +\n (ret[1].value || 0) * 60 +\n (ret[2].value || 0);\n\n prevValue.current = newValueInSeconds;\n unstable_batchedUpdates(() => {\n onChange({} as any, newValueInSeconds);\n setSegmentState(ret);\n });\n },\n validationState: 'valid',\n };\n }, [props.ref, hasFocusWithin, segments, onChange, value]);\n\n return { state, labelProps, fieldProps };\n}\n\nexport function useTimerFieldSegment(\n segment: TimerFieldSegmentType,\n state: TimerFieldState,\n ref: RefObject<HTMLElement>\n): {\n state: {\n isPlaceholder: boolean;\n text: string;\n };\n segmentProps: HTMLAttributes<HTMLDivElement>;\n} {\n const stepSize = segment.type === 'hour' ? 2 : 15;\n const segmentText = getSegmentText(segment.value);\n const enteredKeys = useRef('');\n\n const handleKeyDown = (e: KeyboardEvent<HTMLElement>) => {\n let nextValue: number | null = segment.value || 0;\n switch (e.key) {\n case 'ArrowUp':\n nextValue += 1;\n break;\n case 'ArrowDown':\n nextValue -= 1;\n break;\n case 'ArrowRight':\n case 'ArrowLeft':\n const nextSegment = getNextSegment(\n segment.type,\n e.key === 'ArrowRight' ? 'next' : 'prev'\n );\n if (nextSegment) {\n focusOnSegment(state.parentRef.current, nextSegment);\n }\n e.preventDefault();\n return;\n case 'End':\n nextValue = segment.maxValue;\n break;\n case 'Home':\n nextValue = segment.minValue;\n break;\n case 'PageUp':\n if (segment.type !== 'hour') {\n nextValue = (Math.ceil((nextValue + 1) / stepSize) * stepSize) % 60;\n } else {\n nextValue += stepSize;\n }\n break;\n case 'PageDown':\n if (segment.type !== 'hour') {\n nextValue = (Math.floor((nextValue - 1) / stepSize) * stepSize) % 60;\n } else {\n nextValue -= stepSize;\n }\n break;\n default:\n return;\n }\n\n e.preventDefault(); // prevent scrolling\n nextValue = clampFunc(\n nextValue || 0,\n segment.minValue,\n segment.maxTempValue\n );\n if (nextValue !== segment.value) {\n state.setSegment(segment.type, nextValue);\n }\n };\n\n const onInput = useCallback(\n (key: string) => {\n if (state.isDisabled || state.isReadOnly) {\n return;\n }\n\n let newTextValue = enteredKeys.current + key;\n if (newTextValue.length > String(segment.maxTempValue).length) {\n newTextValue = newTextValue.slice(-String(segment.maxTempValue).length);\n }\n\n switch (segment.type) {\n case 'hour':\n case 'minute':\n case 'second': {\n if (!isValidPartialNumber(newTextValue)) {\n return;\n }\n\n const numberValue = parseInt(newTextValue, 10);\n let segmentValue = numberValue;\n const allowsZero = segment.minValue === 0;\n if (numberValue > segment.maxTempValue) {\n segmentValue = parseInt(key);\n }\n\n if (isNaN(numberValue)) {\n return;\n }\n\n const shouldSetValue = segmentValue !== 0 || allowsZero;\n if (shouldSetValue) {\n state.setSegment(segment.type, segmentValue);\n }\n\n enteredKeys.current = newTextValue;\n break;\n }\n }\n },\n [segment.maxTempValue, segment.minValue, segment.type, state]\n );\n\n const backspace = useCallback(() => {\n if (isValidPartialNumber(segmentText) && !state.isReadOnly) {\n const newValue = segmentText.slice(0, -1);\n const parsed = parseInt(newValue, 10);\n if (newValue.length === 0 || parsed === 0) {\n state.setSegment(segment.type, undefined);\n } else {\n state.setSegment(segment.type, parsed);\n }\n enteredKeys.current = newValue;\n }\n }, [segmentText, segment.type, state]);\n\n const compositionRef = useRef('');\n useEffect(() => {\n const el = ref.current;\n if (el) {\n const handleBeforeInput = (e: InputEvent) => {\n e.preventDefault();\n\n switch (e.inputType) {\n case 'deleteContentBackward':\n case 'deleteContentForward':\n if (isValidPartialNumber(segmentText) && !state.isReadOnly) {\n backspace();\n }\n break;\n case 'insertCompositionText':\n // insertCompositionText cannot be canceled.\n // Record the current state of the element so we can restore it in the `input` event below.\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n compositionRef.current = el.textContent!;\n\n // Safari gets stuck in a composition state unless we also assign to the value here.\n // eslint-disable-next-line no-self-assign\n el.textContent = el.textContent;\n break;\n default:\n if (e.data !== null) {\n onInput(e.data);\n }\n break;\n }\n };\n\n const handleInput = (e: InputEvent) => {\n if (e.inputType === 'insertCompositionText') {\n // Reset the DOM to how it was in the beforeinput event.\n el.textContent = compositionRef.current;\n }\n };\n\n el.addEventListener('beforeinput', handleBeforeInput);\n el.addEventListener('input', handleInput as any);\n return () => {\n el.removeEventListener('input', handleInput as any);\n el.removeEventListener('beforeinput', handleBeforeInput);\n };\n }\n }, [backspace, onInput, ref, segmentText, state.isReadOnly]);\n\n const simplifySegments = state.simplifySegments;\n const handleBlur = useCallback(() => {\n enteredKeys.current = '';\n if (segment.value && segment.value > segment.maxValue) {\n simplifySegments();\n }\n }, [segment.maxValue, segment.value, simplifySegments]);\n\n return {\n state: {\n isPlaceholder:\n (segment.value === undefined && state.hasFocusWithin) ||\n (state.value === undefined && !state.hasFocusWithin),\n text: segmentText,\n },\n segmentProps: {\n role: 'spinbutton',\n 'aria-valuenow': segment.value,\n 'aria-valuemin': segment.minValue,\n 'aria-valuemax': segment.maxValue,\n 'aria-label': segment.type,\n ['data-timer-field-segment' as any]: segment.type,\n contentEditable: true,\n suppressContentEditableWarning: true,\n spellCheck: false,\n autoCapitalize: 'off',\n autoCorrect: 'off',\n [parseInt(version, 10) >= 17 ? 'enterKeyHint' : 'enterkeyhint']: 'next', // Capitalization was changed in React 17...\n inputMode: 'numeric',\n tabIndex: 0,\n style: {\n caretColor: 'transparent',\n },\n onKeyDown: handleKeyDown,\n onBlur: handleBlur,\n },\n };\n}\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from '../utils/wrap-event';
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"wrapEvent.js","names":[],"sources":["../../../src/TimerField/wrapEvent.ts"],"sourcesContent":["export * from '../utils/wrap-event';\n"],"mappings":"AAAA,cAAc,qBAAd"}
|