@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.
Files changed (350) hide show
  1. package/README.md +3 -3
  2. package/build/cjs/index.js +88 -88
  3. package/build/cjs/index.js.map +1 -1
  4. package/build/esm/Accordion/Accordion.d.ts +9 -9
  5. package/build/esm/Accordion/Accordion.js.map +1 -1
  6. package/build/esm/Accordion/AccordionBody.d.ts +6 -6
  7. package/build/esm/Accordion/AccordionBody.js.map +1 -1
  8. package/build/esm/Accordion/AccordionHeader.d.ts +7 -7
  9. package/build/esm/Accordion/AccordionHeader.js.map +1 -1
  10. package/build/esm/Accordion/AccordionItem.d.ts +9 -9
  11. package/build/esm/Accordion/AccordionItem.js.map +1 -1
  12. package/build/esm/Accordion/context.d.ts +19 -19
  13. package/build/esm/Accordion/context.js.map +1 -1
  14. package/build/esm/Accordion/index.d.ts +4 -4
  15. package/build/esm/Accordion/index.js.map +1 -1
  16. package/build/esm/Accordion/scopeQuery.d.ts +2 -2
  17. package/build/esm/Accordion/scopeQuery.js.map +1 -1
  18. package/build/esm/CheckBox/CheckBox.d.ts +7 -7
  19. package/build/esm/CheckBox/CheckBox.js.map +1 -1
  20. package/build/esm/CheckBox/index.d.ts +1 -1
  21. package/build/esm/CheckBox/index.js.map +1 -1
  22. package/build/esm/ComboBox/Combobox.d.ts +18 -18
  23. package/build/esm/ComboBox/Combobox.js.map +1 -1
  24. package/build/esm/ComboBox/ComboboxButton.d.ts +9 -9
  25. package/build/esm/ComboBox/ComboboxButton.js.map +1 -1
  26. package/build/esm/ComboBox/ComboboxInput.d.ts +17 -17
  27. package/build/esm/ComboBox/ComboboxInput.js.map +1 -1
  28. package/build/esm/ComboBox/ComboboxLabel.d.ts +7 -7
  29. package/build/esm/ComboBox/ComboboxLabel.js.map +1 -1
  30. package/build/esm/ComboBox/ComboboxList.d.ts +8 -8
  31. package/build/esm/ComboBox/ComboboxList.js.map +1 -1
  32. package/build/esm/ComboBox/ComboboxOption.d.ts +11 -11
  33. package/build/esm/ComboBox/ComboboxOption.js.map +1 -1
  34. package/build/esm/ComboBox/ComboboxPopover.d.ts +9 -9
  35. package/build/esm/ComboBox/ComboboxPopover.js.map +1 -1
  36. package/build/esm/ComboBox/cities.d.ts +5 -5
  37. package/build/esm/ComboBox/cities.js.map +1 -1
  38. package/build/esm/ComboBox/context.d.ts +30 -30
  39. package/build/esm/ComboBox/context.js.map +1 -1
  40. package/build/esm/ComboBox/hooks.d.ts +37 -37
  41. package/build/esm/ComboBox/hooks.js.map +1 -1
  42. package/build/esm/ComboBox/index.d.ts +8 -8
  43. package/build/esm/ComboBox/index.js.map +1 -1
  44. package/build/esm/ComboBox/makeHash.d.ts +1 -1
  45. package/build/esm/ComboBox/makeHash.js.map +1 -1
  46. package/build/esm/ComboBox/scopeQuery.d.ts +1 -1
  47. package/build/esm/ComboBox/scopeQuery.js.map +1 -1
  48. package/build/esm/FocusLock/FocusLock.d.ts +9 -9
  49. package/build/esm/FocusLock/FocusLock.js.map +1 -1
  50. package/build/esm/FocusLock/index.d.ts +1 -1
  51. package/build/esm/FocusLock/index.js.map +1 -1
  52. package/build/esm/FocusLock/tabUtils.d.ts +3 -3
  53. package/build/esm/FocusLock/tabUtils.js.map +1 -1
  54. package/build/esm/FocusLock/useFocusLock.d.ts +7 -7
  55. package/build/esm/FocusLock/useFocusLock.js.map +1 -1
  56. package/build/esm/List/List.d.ts +7 -7
  57. package/build/esm/List/List.js.map +1 -1
  58. package/build/esm/List/ListItem.d.ts +7 -7
  59. package/build/esm/List/ListItem.js.map +1 -1
  60. package/build/esm/List/context.d.ts +4 -4
  61. package/build/esm/List/context.js.map +1 -1
  62. package/build/esm/List/index.d.ts +2 -2
  63. package/build/esm/List/index.js.map +1 -1
  64. package/build/esm/Menu/ContextMenuTrigger.d.ts +11 -11
  65. package/build/esm/Menu/ContextMenuTrigger.js.map +1 -1
  66. package/build/esm/Menu/Menu.d.ts +10 -10
  67. package/build/esm/Menu/Menu.js.map +1 -1
  68. package/build/esm/Menu/MenuButton.d.ts +11 -11
  69. package/build/esm/Menu/MenuButton.js.map +1 -1
  70. package/build/esm/Menu/MenuItem.d.ts +8 -8
  71. package/build/esm/Menu/MenuItem.js.map +1 -1
  72. package/build/esm/Menu/MenuList.d.ts +7 -7
  73. package/build/esm/Menu/MenuList.js.map +1 -1
  74. package/build/esm/Menu/MenuPopover.d.ts +8 -8
  75. package/build/esm/Menu/MenuPopover.js.map +1 -1
  76. package/build/esm/Menu/context.d.ts +25 -25
  77. package/build/esm/Menu/context.js.map +1 -1
  78. package/build/esm/Menu/fixtures/countryList.d.ts +1 -1
  79. package/build/esm/Menu/fixtures/countryList.js.map +1 -1
  80. package/build/esm/Menu/index.d.ts +6 -6
  81. package/build/esm/Menu/index.js.map +1 -1
  82. package/build/esm/Menu/scope.d.ts +1 -1
  83. package/build/esm/Menu/scope.js.map +1 -1
  84. package/build/esm/Modal/Modal.d.ts +9 -9
  85. package/build/esm/Modal/Modal.js.map +1 -1
  86. package/build/esm/Modal/ModalBackdrop.d.ts +10 -10
  87. package/build/esm/Modal/ModalBackdrop.js.map +1 -1
  88. package/build/esm/Modal/index.d.ts +2 -2
  89. package/build/esm/Modal/index.js.map +1 -1
  90. package/build/esm/Popper/Popper.d.ts +35 -35
  91. package/build/esm/Popper/Popper.js.map +1 -1
  92. package/build/esm/Popper/PopperArrow.d.ts +6 -6
  93. package/build/esm/Popper/PopperArrow.js.map +1 -1
  94. package/build/esm/Popper/context.d.ts +6 -6
  95. package/build/esm/Popper/context.js.map +1 -1
  96. package/build/esm/Popper/index.d.ts +3 -3
  97. package/build/esm/Popper/index.js.map +1 -1
  98. package/build/esm/Portal/Portal.d.ts +6 -6
  99. package/build/esm/Portal/Portal.js.map +1 -1
  100. package/build/esm/Portal/index.d.ts +1 -1
  101. package/build/esm/Portal/index.js.map +1 -1
  102. package/build/esm/RadioButton/RadioButton.d.ts +10 -10
  103. package/build/esm/RadioButton/RadioButton.js.map +1 -1
  104. package/build/esm/RadioButton/RadioGroup.d.ts +12 -12
  105. package/build/esm/RadioButton/RadioGroup.js.map +1 -1
  106. package/build/esm/RadioButton/context.d.ts +9 -9
  107. package/build/esm/RadioButton/context.js.map +1 -1
  108. package/build/esm/RadioButton/index.d.ts +2 -2
  109. package/build/esm/RadioButton/index.js.map +1 -1
  110. package/build/esm/SkipNav/SkipNav.d.ts +7 -7
  111. package/build/esm/SkipNav/SkipNav.js.map +1 -1
  112. package/build/esm/SkipNav/index.d.ts +1 -1
  113. package/build/esm/SkipNav/index.js.map +1 -1
  114. package/build/esm/Slider/Slider.d.ts +197 -197
  115. package/build/esm/Slider/Slider.js +82 -82
  116. package/build/esm/Slider/Slider.js.map +1 -1
  117. package/build/esm/Slider/index.d.ts +1 -1
  118. package/build/esm/Slider/index.js.map +1 -1
  119. package/build/esm/Spinner/Spinner.d.ts +12 -12
  120. package/build/esm/Spinner/Spinner.js.map +1 -1
  121. package/build/esm/Spinner/SpinnerButton.d.ts +8 -8
  122. package/build/esm/Spinner/SpinnerButton.js.map +1 -1
  123. package/build/esm/Spinner/context.d.ts +12 -12
  124. package/build/esm/Spinner/context.js.map +1 -1
  125. package/build/esm/Spinner/index.d.ts +2 -2
  126. package/build/esm/Spinner/index.js.map +1 -1
  127. package/build/esm/Tabs/Tab.d.ts +7 -7
  128. package/build/esm/Tabs/Tab.js.map +1 -1
  129. package/build/esm/Tabs/TabList.d.ts +9 -9
  130. package/build/esm/Tabs/TabList.js.map +1 -1
  131. package/build/esm/Tabs/TabPanel.d.ts +8 -8
  132. package/build/esm/Tabs/TabPanel.js.map +1 -1
  133. package/build/esm/Tabs/TabPanels.d.ts +8 -8
  134. package/build/esm/Tabs/TabPanels.js.map +1 -1
  135. package/build/esm/Tabs/Tabs.d.ts +10 -10
  136. package/build/esm/Tabs/Tabs.js.map +1 -1
  137. package/build/esm/Tabs/context.d.ts +17 -17
  138. package/build/esm/Tabs/context.js.map +1 -1
  139. package/build/esm/Tabs/index.d.ts +5 -5
  140. package/build/esm/Tabs/index.js.map +1 -1
  141. package/build/esm/Tabs/scopeQuery.d.ts +1 -1
  142. package/build/esm/Tabs/scopeQuery.js.map +1 -1
  143. package/build/esm/Tooltip/Tooltip.d.ts +10 -10
  144. package/build/esm/Tooltip/Tooltip.js.map +1 -1
  145. package/build/esm/Tooltip/index.d.ts +1 -1
  146. package/build/esm/Tooltip/index.js.map +1 -1
  147. package/build/esm/Tooltip/stateMachine.d.ts +28 -28
  148. package/build/esm/Tooltip/stateMachine.js.map +1 -1
  149. package/build/esm/Tooltip/useTooltip.d.ts +10 -10
  150. package/build/esm/Tooltip/useTooltip.js.map +1 -1
  151. package/build/esm/hooks/index.d.ts +13 -13
  152. package/build/esm/hooks/index.js.map +1 -1
  153. package/build/esm/hooks/useAutoFocus.d.ts +2 -2
  154. package/build/esm/hooks/useAutoFocus.js.map +1 -1
  155. package/build/esm/hooks/useChildrenCounter.d.ts +7 -7
  156. package/build/esm/hooks/useChildrenCounter.js.map +1 -1
  157. package/build/esm/hooks/useControlledState.d.ts +3 -3
  158. package/build/esm/hooks/useControlledState.js +1 -1
  159. package/build/esm/hooks/useControlledState.js.map +1 -1
  160. package/build/esm/hooks/useFocusReturn.d.ts +2 -2
  161. package/build/esm/hooks/useFocusReturn.js.map +1 -1
  162. package/build/esm/hooks/useFocusState.d.ts +11 -11
  163. package/build/esm/hooks/useFocusState.js.map +1 -1
  164. package/build/esm/hooks/useGestureHandlers.d.ts +52 -52
  165. package/build/esm/hooks/useGestureHandlers.js.map +1 -1
  166. package/build/esm/hooks/useMeasure.d.ts +7 -7
  167. package/build/esm/hooks/useMeasure.js.map +1 -1
  168. package/build/esm/hooks/useOnClickOutside.d.ts +2 -2
  169. package/build/esm/hooks/useOnClickOutside.js.map +1 -1
  170. package/build/esm/hooks/useOnKeyDown.d.ts +1 -1
  171. package/build/esm/hooks/useOnKeyDown.js.map +1 -1
  172. package/build/esm/hooks/useReducerMachine.d.ts +24 -24
  173. package/build/esm/hooks/useReducerMachine.js.map +1 -1
  174. package/build/esm/hooks/useRemoveBodyScroll.d.ts +2 -2
  175. package/build/esm/hooks/useRemoveBodyScroll.js.map +1 -1
  176. package/build/esm/hooks/useScope.d.ts +11 -11
  177. package/build/esm/hooks/useScope.js.map +1 -1
  178. package/build/esm/hooks/useThrottle.d.ts +1 -1
  179. package/build/esm/hooks/useThrottle.js.map +1 -1
  180. package/build/esm/index.d.ts +15 -15
  181. package/build/esm/index.js.map +1 -1
  182. package/build/esm/utils/assign-ref.d.ts +3 -3
  183. package/build/esm/utils/assign-ref.js.map +1 -1
  184. package/build/esm/utils/can-use-dom.d.ts +1 -1
  185. package/build/esm/utils/can-use-dom.js.map +1 -1
  186. package/build/esm/utils/clamp.d.ts +1 -1
  187. package/build/esm/utils/clamp.js.map +1 -1
  188. package/build/esm/utils/context.d.ts +7 -7
  189. package/build/esm/utils/context.js.map +1 -1
  190. package/build/esm/utils/create-subscription.d.ts +4 -4
  191. package/build/esm/utils/create-subscription.js.map +1 -1
  192. package/build/esm/utils/get-circular-index.d.ts +1 -1
  193. package/build/esm/utils/get-circular-index.js.map +1 -1
  194. package/build/esm/utils/index.d.ts +10 -10
  195. package/build/esm/utils/index.js.map +1 -1
  196. package/build/esm/utils/is-right-click.d.ts +6 -6
  197. package/build/esm/utils/is-right-click.js +4 -4
  198. package/build/esm/utils/is-right-click.js.map +1 -1
  199. package/build/esm/utils/owner-document.d.ts +7 -7
  200. package/build/esm/utils/owner-document.js +5 -5
  201. package/build/esm/utils/owner-document.js.map +1 -1
  202. package/build/esm/utils/polymorphic.d.ts +39 -39
  203. package/build/esm/utils/polymorphic.js.map +1 -1
  204. package/build/esm/utils/rubber-band-clamp.d.ts +2 -2
  205. package/build/esm/utils/rubber-band-clamp.js.map +1 -1
  206. package/build/esm/utils/use-stable-callback.d.ts +16 -16
  207. package/build/esm/utils/use-stable-callback.js +16 -16
  208. package/build/esm/utils/use-stable-callback.js.map +1 -1
  209. package/build/esm/utils/wrap-event.d.ts +3 -3
  210. package/build/esm/utils/wrap-event.js.map +1 -1
  211. package/build/tsconfig-build.tsbuildinfo +1 -1
  212. package/package.json +2 -2
  213. package/src/Accordion/Accordion.story.tsx +74 -74
  214. package/src/Accordion/Accordion.tsx +59 -59
  215. package/src/Accordion/AccordionBody.tsx +52 -52
  216. package/src/Accordion/AccordionHeader.tsx +167 -167
  217. package/src/Accordion/AccordionItem.tsx +50 -50
  218. package/src/Accordion/context.ts +37 -37
  219. package/src/Accordion/index.ts +4 -4
  220. package/src/Accordion/scopeQuery.ts +7 -7
  221. package/src/Accordion/styles.css +21 -21
  222. package/src/CheckBox/CheckBox.tsx +41 -41
  223. package/src/CheckBox/index.ts +1 -1
  224. package/src/ComboBox/ComboBox.story.tsx +120 -120
  225. package/src/ComboBox/Combobox.tsx +148 -148
  226. package/src/ComboBox/ComboboxButton.tsx +61 -61
  227. package/src/ComboBox/ComboboxInput.tsx +187 -187
  228. package/src/ComboBox/ComboboxLabel.tsx +33 -33
  229. package/src/ComboBox/ComboboxList.tsx +47 -47
  230. package/src/ComboBox/ComboboxOption.tsx +111 -111
  231. package/src/ComboBox/ComboboxPopover.tsx +64 -64
  232. package/src/ComboBox/cities.ts +23194 -23194
  233. package/src/ComboBox/context.ts +35 -35
  234. package/src/ComboBox/hooks.tsx +451 -451
  235. package/src/ComboBox/index.ts +8 -8
  236. package/src/ComboBox/makeHash.ts +19 -19
  237. package/src/ComboBox/scopeQuery.ts +6 -6
  238. package/src/ComboBox/styles.css +32 -32
  239. package/src/FocusLock/FocusLock.tsx +66 -66
  240. package/src/FocusLock/index.ts +1 -1
  241. package/src/FocusLock/tabUtils.ts +40 -40
  242. package/src/FocusLock/useFocusLock.ts +56 -56
  243. package/src/List/List.story.tsx +18 -18
  244. package/src/List/List.tsx +17 -17
  245. package/src/List/ListItem.tsx +23 -23
  246. package/src/List/context.ts +19 -19
  247. package/src/List/index.ts +2 -2
  248. package/src/Menu/ContextMenu.story.tsx +73 -73
  249. package/src/Menu/ContextMenuTrigger.tsx +76 -76
  250. package/src/Menu/Menu.story.tsx +160 -160
  251. package/src/Menu/Menu.tsx +83 -83
  252. package/src/Menu/MenuButton.tsx +83 -83
  253. package/src/Menu/MenuComplex.story.tsx +58 -58
  254. package/src/Menu/MenuItem.tsx +88 -88
  255. package/src/Menu/MenuList.tsx +254 -254
  256. package/src/Menu/MenuPopover.tsx +35 -35
  257. package/src/Menu/context.ts +44 -44
  258. package/src/Menu/fixtures/countryList.ts +198 -198
  259. package/src/Menu/index.ts +6 -6
  260. package/src/Menu/scope.ts +7 -7
  261. package/src/Menu/styles.css +42 -42
  262. package/src/Modal/Modal.story.tsx +258 -258
  263. package/src/Modal/Modal.tsx +48 -48
  264. package/src/Modal/ModalBackdrop.tsx +78 -78
  265. package/src/Modal/NavDrawer.story.tsx +158 -158
  266. package/src/Modal/index.ts +2 -2
  267. package/src/Modal/styles.css +46 -46
  268. package/src/Popper/Popper.story.tsx +263 -263
  269. package/src/Popper/Popper.tsx +154 -154
  270. package/src/Popper/PopperArrow.tsx +35 -35
  271. package/src/Popper/context.ts +10 -10
  272. package/src/Popper/index.ts +3 -3
  273. package/src/Popper/styles.css +60 -60
  274. package/src/Portal/Portal.tsx +20 -20
  275. package/src/Portal/index.ts +1 -1
  276. package/src/RadioButton/RadioButton.story.tsx +77 -77
  277. package/src/RadioButton/RadioButton.tsx +55 -55
  278. package/src/RadioButton/RadioGroup.tsx +60 -60
  279. package/src/RadioButton/context.ts +17 -17
  280. package/src/RadioButton/index.ts +2 -2
  281. package/src/SkipNav/SkipNav.tsx +16 -16
  282. package/src/SkipNav/index.tsx +1 -1
  283. package/src/Slider/Slider.story.tsx +45 -45
  284. package/src/Slider/Slider.tsx +1120 -1120
  285. package/src/Slider/index.ts +1 -1
  286. package/src/Slider/styles.css +131 -131
  287. package/src/Spinner/Spinner.story.tsx +31 -31
  288. package/src/Spinner/Spinner.tsx +117 -117
  289. package/src/Spinner/SpinnerButton.tsx +54 -54
  290. package/src/Spinner/context.ts +20 -20
  291. package/src/Spinner/index.ts +2 -2
  292. package/src/Spinner/styles.css +23 -23
  293. package/src/Tabs/Tab.story.tsx +80 -80
  294. package/src/Tabs/Tab.tsx +136 -136
  295. package/src/Tabs/TabList.tsx +71 -71
  296. package/src/Tabs/TabPanel.tsx +53 -53
  297. package/src/Tabs/TabPanels.tsx +30 -30
  298. package/src/Tabs/Tabs.tsx +46 -46
  299. package/src/Tabs/context.ts +30 -30
  300. package/src/Tabs/index.tsx +5 -5
  301. package/src/Tabs/scopeQuery.ts +6 -6
  302. package/src/Tooltip/Tooltip.story.tsx +61 -61
  303. package/src/Tooltip/Tooltip.tsx +50 -50
  304. package/src/Tooltip/index.ts +1 -1
  305. package/src/Tooltip/stateMachine.ts +192 -192
  306. package/src/Tooltip/styles.css +17 -17
  307. package/src/Tooltip/useTooltip.ts +136 -136
  308. package/src/hooks/index.ts +13 -13
  309. package/src/hooks/useAutoFocus.ts +22 -22
  310. package/src/hooks/useChildrenCounter.ts +51 -51
  311. package/src/hooks/useControlledState.ts +3 -3
  312. package/src/hooks/useFocusReturn.ts +43 -43
  313. package/src/hooks/useFocusState.ts +30 -30
  314. package/src/hooks/useGestureHandlers.ts +286 -286
  315. package/src/hooks/useMeasure.ts +33 -33
  316. package/src/hooks/useOnClickOutside.ts +32 -32
  317. package/src/hooks/useOnKeyDown.ts +19 -19
  318. package/src/hooks/useReducerMachine.ts +60 -60
  319. package/src/hooks/useRemoveBodyScroll.ts +39 -39
  320. package/src/hooks/useScope.ts +52 -52
  321. package/src/hooks/useThrottle.ts +19 -19
  322. package/src/index.ts +20 -20
  323. package/src/utils/assign-ref.ts +27 -27
  324. package/src/utils/can-use-dom.ts +7 -7
  325. package/src/utils/clamp.ts +3 -3
  326. package/src/utils/context.tsx +48 -48
  327. package/src/utils/create-subscription.ts +16 -16
  328. package/src/utils/get-circular-index.ts +7 -7
  329. package/src/utils/index.ts +10 -10
  330. package/src/utils/is-right-click.ts +14 -14
  331. package/src/utils/owner-document.ts +13 -13
  332. package/src/utils/polymorphic.ts +78 -78
  333. package/src/utils/rubber-band-clamp.ts +25 -25
  334. package/src/utils/use-stable-callback.ts +58 -58
  335. package/src/utils/wrap-event.ts +22 -22
  336. package/build/esm/TimerField/clamp.d.ts +0 -1
  337. package/build/esm/TimerField/clamp.js +0 -2
  338. package/build/esm/TimerField/clamp.js.map +0 -1
  339. package/build/esm/TimerField/index.d.ts +0 -1
  340. package/build/esm/TimerField/index.js +0 -2
  341. package/build/esm/TimerField/index.js.map +0 -1
  342. package/build/esm/TimerField/useControlledState.d.ts +0 -1
  343. package/build/esm/TimerField/useControlledState.js +0 -2
  344. package/build/esm/TimerField/useControlledState.js.map +0 -1
  345. package/build/esm/TimerField/useTimerField.d.ts +0 -44
  346. package/build/esm/TimerField/useTimerField.js +0 -430
  347. package/build/esm/TimerField/useTimerField.js.map +0 -1
  348. package/build/esm/TimerField/wrapEvent.d.ts +0 -1
  349. package/build/esm/TimerField/wrapEvent.js +0 -2
  350. 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,2 +0,0 @@
1
- export * from '../utils/wrap-event';
2
- //# sourceMappingURL=wrapEvent.js.map
@@ -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"}