@basic-ui/core 0.0.52 → 0.0.53

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 (408) hide show
  1. package/README.md +3 -3
  2. package/build/cjs/index.js +105 -89
  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/Carousel/Carousel.d.ts +9 -0
  19. package/build/esm/Carousel/Carousel.js +38 -0
  20. package/build/esm/Carousel/Carousel.js.map +1 -0
  21. package/build/esm/Carousel/Fader.d.ts +14 -0
  22. package/build/esm/Carousel/Fader.js +76 -0
  23. package/build/esm/Carousel/Fader.js.map +1 -0
  24. package/build/esm/Carousel/FaderItem.d.ts +5 -0
  25. package/build/esm/Carousel/FaderItem.js +16 -0
  26. package/build/esm/Carousel/FaderItem.js.map +1 -0
  27. package/build/esm/Carousel/Preloader.d.ts +7 -0
  28. package/build/esm/Carousel/Preloader.js +70 -0
  29. package/build/esm/Carousel/Preloader.js.map +1 -0
  30. package/build/esm/Carousel/Slider.d.ts +14 -0
  31. package/build/esm/Carousel/Slider.js +212 -0
  32. package/build/esm/Carousel/Slider.js.map +1 -0
  33. package/build/esm/Carousel/SliderItem.d.ts +12 -0
  34. package/build/esm/Carousel/SliderItem.js +41 -0
  35. package/build/esm/Carousel/SliderItem.js.map +1 -0
  36. package/build/esm/Carousel/context.d.ts +10 -0
  37. package/build/esm/Carousel/context.js +8 -0
  38. package/build/esm/Carousel/context.js.map +1 -0
  39. package/build/esm/Carousel/getSliderParams.d.ts +9 -0
  40. package/build/esm/Carousel/getSliderParams.js +85 -0
  41. package/build/esm/Carousel/getSliderParams.js.map +1 -0
  42. package/build/esm/Carousel/index.d.ts +7 -0
  43. package/build/esm/Carousel/index.js +8 -0
  44. package/build/esm/Carousel/index.js.map +1 -0
  45. package/build/esm/Carousel/useCarouselGestures.d.ts +30 -0
  46. package/build/esm/Carousel/useCarouselGestures.js +33 -0
  47. package/build/esm/Carousel/useCarouselGestures.js.map +1 -0
  48. package/build/esm/CheckBox/CheckBox.d.ts +7 -7
  49. package/build/esm/CheckBox/CheckBox.js.map +1 -1
  50. package/build/esm/CheckBox/index.d.ts +1 -1
  51. package/build/esm/CheckBox/index.js.map +1 -1
  52. package/build/esm/ComboBox/Combobox.d.ts +18 -18
  53. package/build/esm/ComboBox/Combobox.js.map +1 -1
  54. package/build/esm/ComboBox/ComboboxButton.d.ts +9 -9
  55. package/build/esm/ComboBox/ComboboxButton.js.map +1 -1
  56. package/build/esm/ComboBox/ComboboxInput.d.ts +17 -17
  57. package/build/esm/ComboBox/ComboboxInput.js.map +1 -1
  58. package/build/esm/ComboBox/ComboboxLabel.d.ts +7 -7
  59. package/build/esm/ComboBox/ComboboxLabel.js.map +1 -1
  60. package/build/esm/ComboBox/ComboboxList.d.ts +8 -8
  61. package/build/esm/ComboBox/ComboboxList.js.map +1 -1
  62. package/build/esm/ComboBox/ComboboxOption.d.ts +11 -11
  63. package/build/esm/ComboBox/ComboboxOption.js.map +1 -1
  64. package/build/esm/ComboBox/ComboboxPopover.d.ts +9 -9
  65. package/build/esm/ComboBox/ComboboxPopover.js.map +1 -1
  66. package/build/esm/ComboBox/cities.d.ts +5 -5
  67. package/build/esm/ComboBox/cities.js.map +1 -1
  68. package/build/esm/ComboBox/context.d.ts +30 -30
  69. package/build/esm/ComboBox/context.js.map +1 -1
  70. package/build/esm/ComboBox/hooks.d.ts +37 -37
  71. package/build/esm/ComboBox/hooks.js.map +1 -1
  72. package/build/esm/ComboBox/index.d.ts +8 -8
  73. package/build/esm/ComboBox/index.js.map +1 -1
  74. package/build/esm/ComboBox/makeHash.d.ts +1 -1
  75. package/build/esm/ComboBox/makeHash.js.map +1 -1
  76. package/build/esm/ComboBox/scopeQuery.d.ts +1 -1
  77. package/build/esm/ComboBox/scopeQuery.js.map +1 -1
  78. package/build/esm/DatePicker/DatePicker.d.ts +24 -0
  79. package/build/esm/DatePicker/DatePicker.js +101 -0
  80. package/build/esm/DatePicker/DatePicker.js.map +1 -0
  81. package/build/esm/DatePicker/DatePickerSelect.d.ts +8 -0
  82. package/build/esm/DatePicker/DatePickerSelect.js +201 -0
  83. package/build/esm/DatePicker/DatePickerSelect.js.map +1 -0
  84. package/build/esm/DatePicker/RangeDatePicker.d.ts +28 -0
  85. package/build/esm/DatePicker/RangeDatePicker.js +94 -0
  86. package/build/esm/DatePicker/RangeDatePicker.js.map +1 -0
  87. package/build/esm/DatePicker/adjustDates.d.ts +4 -0
  88. package/build/esm/DatePicker/adjustDates.js +18 -0
  89. package/build/esm/DatePicker/adjustDates.js.map +1 -0
  90. package/build/esm/DatePicker/contexts.d.ts +31 -0
  91. package/build/esm/DatePicker/contexts.js +15 -0
  92. package/build/esm/DatePicker/contexts.js.map +1 -0
  93. package/build/esm/DatePicker/dateTypes.d.ts +2 -0
  94. package/build/esm/DatePicker/dateTypes.js +2 -0
  95. package/build/esm/DatePicker/dateTypes.js.map +1 -0
  96. package/build/esm/DatePicker/hooks.d.ts +36 -0
  97. package/build/esm/DatePicker/hooks.js +98 -0
  98. package/build/esm/DatePicker/hooks.js.map +1 -0
  99. package/build/esm/DatePicker/index.d.ts +5 -0
  100. package/build/esm/DatePicker/index.js +6 -0
  101. package/build/esm/DatePicker/index.js.map +1 -0
  102. package/build/esm/FocusLock/FocusLock.d.ts +9 -9
  103. package/build/esm/FocusLock/FocusLock.js.map +1 -1
  104. package/build/esm/FocusLock/index.d.ts +1 -1
  105. package/build/esm/FocusLock/index.js.map +1 -1
  106. package/build/esm/FocusLock/tabUtils.d.ts +3 -3
  107. package/build/esm/FocusLock/tabUtils.js.map +1 -1
  108. package/build/esm/FocusLock/useFocusLock.d.ts +7 -7
  109. package/build/esm/FocusLock/useFocusLock.js.map +1 -1
  110. package/build/esm/List/List.d.ts +7 -7
  111. package/build/esm/List/List.js.map +1 -1
  112. package/build/esm/List/ListItem.d.ts +7 -7
  113. package/build/esm/List/ListItem.js.map +1 -1
  114. package/build/esm/List/context.d.ts +4 -4
  115. package/build/esm/List/context.js.map +1 -1
  116. package/build/esm/List/index.d.ts +2 -2
  117. package/build/esm/List/index.js.map +1 -1
  118. package/build/esm/Menu/ContextMenuTrigger.d.ts +11 -11
  119. package/build/esm/Menu/ContextMenuTrigger.js.map +1 -1
  120. package/build/esm/Menu/Menu.d.ts +10 -10
  121. package/build/esm/Menu/Menu.js.map +1 -1
  122. package/build/esm/Menu/MenuButton.d.ts +11 -11
  123. package/build/esm/Menu/MenuButton.js.map +1 -1
  124. package/build/esm/Menu/MenuItem.d.ts +8 -8
  125. package/build/esm/Menu/MenuItem.js.map +1 -1
  126. package/build/esm/Menu/MenuList.d.ts +7 -7
  127. package/build/esm/Menu/MenuList.js.map +1 -1
  128. package/build/esm/Menu/MenuPopover.d.ts +8 -8
  129. package/build/esm/Menu/MenuPopover.js.map +1 -1
  130. package/build/esm/Menu/context.d.ts +25 -25
  131. package/build/esm/Menu/context.js.map +1 -1
  132. package/build/esm/Menu/fixtures/countryList.d.ts +1 -1
  133. package/build/esm/Menu/fixtures/countryList.js.map +1 -1
  134. package/build/esm/Menu/index.d.ts +6 -6
  135. package/build/esm/Menu/index.js.map +1 -1
  136. package/build/esm/Menu/scope.d.ts +1 -1
  137. package/build/esm/Menu/scope.js.map +1 -1
  138. package/build/esm/Modal/Modal.d.ts +9 -9
  139. package/build/esm/Modal/Modal.js.map +1 -1
  140. package/build/esm/Modal/ModalBackdrop.d.ts +10 -10
  141. package/build/esm/Modal/ModalBackdrop.js.map +1 -1
  142. package/build/esm/Modal/index.d.ts +2 -2
  143. package/build/esm/Modal/index.js.map +1 -1
  144. package/build/esm/Popper/Popper.d.ts +35 -35
  145. package/build/esm/Popper/Popper.js.map +1 -1
  146. package/build/esm/Popper/PopperArrow.d.ts +6 -6
  147. package/build/esm/Popper/PopperArrow.js.map +1 -1
  148. package/build/esm/Popper/context.d.ts +6 -6
  149. package/build/esm/Popper/context.js.map +1 -1
  150. package/build/esm/Popper/index.d.ts +3 -3
  151. package/build/esm/Popper/index.js.map +1 -1
  152. package/build/esm/Portal/Portal.d.ts +7 -6
  153. package/build/esm/Portal/Portal.js +6 -3
  154. package/build/esm/Portal/Portal.js.map +1 -1
  155. package/build/esm/Portal/PortalSelectorProvider.d.ts +8 -0
  156. package/build/esm/Portal/PortalSelectorProvider.js +13 -0
  157. package/build/esm/Portal/PortalSelectorProvider.js.map +1 -0
  158. package/build/esm/Portal/index.d.ts +2 -1
  159. package/build/esm/Portal/index.js +1 -0
  160. package/build/esm/Portal/index.js.map +1 -1
  161. package/build/esm/RadioButton/RadioButton.d.ts +10 -10
  162. package/build/esm/RadioButton/RadioButton.js.map +1 -1
  163. package/build/esm/RadioButton/RadioGroup.d.ts +12 -12
  164. package/build/esm/RadioButton/RadioGroup.js.map +1 -1
  165. package/build/esm/RadioButton/context.d.ts +9 -9
  166. package/build/esm/RadioButton/context.js.map +1 -1
  167. package/build/esm/RadioButton/index.d.ts +2 -2
  168. package/build/esm/RadioButton/index.js.map +1 -1
  169. package/build/esm/SkipNav/SkipNav.d.ts +7 -7
  170. package/build/esm/SkipNav/SkipNav.js.map +1 -1
  171. package/build/esm/SkipNav/index.d.ts +1 -1
  172. package/build/esm/SkipNav/index.js.map +1 -1
  173. package/build/esm/Slider/Slider.d.ts +197 -197
  174. package/build/esm/Slider/Slider.js +82 -82
  175. package/build/esm/Slider/Slider.js.map +1 -1
  176. package/build/esm/Slider/index.d.ts +1 -1
  177. package/build/esm/Slider/index.js.map +1 -1
  178. package/build/esm/Spinner/Spinner.d.ts +12 -12
  179. package/build/esm/Spinner/Spinner.js.map +1 -1
  180. package/build/esm/Spinner/SpinnerButton.d.ts +8 -8
  181. package/build/esm/Spinner/SpinnerButton.js.map +1 -1
  182. package/build/esm/Spinner/context.d.ts +12 -12
  183. package/build/esm/Spinner/context.js.map +1 -1
  184. package/build/esm/Spinner/index.d.ts +2 -2
  185. package/build/esm/Spinner/index.js.map +1 -1
  186. package/build/esm/Tabs/Tab.d.ts +7 -7
  187. package/build/esm/Tabs/Tab.js.map +1 -1
  188. package/build/esm/Tabs/TabList.d.ts +9 -9
  189. package/build/esm/Tabs/TabList.js.map +1 -1
  190. package/build/esm/Tabs/TabPanel.d.ts +8 -8
  191. package/build/esm/Tabs/TabPanel.js.map +1 -1
  192. package/build/esm/Tabs/TabPanels.d.ts +8 -8
  193. package/build/esm/Tabs/TabPanels.js.map +1 -1
  194. package/build/esm/Tabs/Tabs.d.ts +10 -10
  195. package/build/esm/Tabs/Tabs.js.map +1 -1
  196. package/build/esm/Tabs/context.d.ts +17 -17
  197. package/build/esm/Tabs/context.js.map +1 -1
  198. package/build/esm/Tabs/index.d.ts +5 -5
  199. package/build/esm/Tabs/index.js.map +1 -1
  200. package/build/esm/Tabs/scopeQuery.d.ts +1 -1
  201. package/build/esm/Tabs/scopeQuery.js.map +1 -1
  202. package/build/esm/Tooltip/Tooltip.d.ts +10 -10
  203. package/build/esm/Tooltip/Tooltip.js.map +1 -1
  204. package/build/esm/Tooltip/index.d.ts +1 -1
  205. package/build/esm/Tooltip/index.js.map +1 -1
  206. package/build/esm/Tooltip/stateMachine.d.ts +28 -28
  207. package/build/esm/Tooltip/stateMachine.js.map +1 -1
  208. package/build/esm/Tooltip/useTooltip.d.ts +10 -10
  209. package/build/esm/Tooltip/useTooltip.js.map +1 -1
  210. package/build/esm/hooks/index.d.ts +13 -13
  211. package/build/esm/hooks/index.js.map +1 -1
  212. package/build/esm/hooks/useAutoFocus.d.ts +2 -2
  213. package/build/esm/hooks/useAutoFocus.js.map +1 -1
  214. package/build/esm/hooks/useChildrenCounter.d.ts +7 -7
  215. package/build/esm/hooks/useChildrenCounter.js.map +1 -1
  216. package/build/esm/hooks/useControlledState.d.ts +3 -3
  217. package/build/esm/hooks/useFocusReturn.d.ts +2 -2
  218. package/build/esm/hooks/useFocusReturn.js.map +1 -1
  219. package/build/esm/hooks/useFocusState.d.ts +11 -11
  220. package/build/esm/hooks/useFocusState.js.map +1 -1
  221. package/build/esm/hooks/useGestureHandlers.d.ts +52 -52
  222. package/build/esm/hooks/useGestureHandlers.js.map +1 -1
  223. package/build/esm/hooks/useId.d.ts +1 -0
  224. package/build/esm/hooks/useId.js +25 -0
  225. package/build/esm/hooks/useId.js.map +1 -0
  226. package/build/esm/hooks/useMeasure.d.ts +7 -7
  227. package/build/esm/hooks/useMeasure.js.map +1 -1
  228. package/build/esm/hooks/useOnClickOutside.d.ts +2 -2
  229. package/build/esm/hooks/useOnClickOutside.js.map +1 -1
  230. package/build/esm/hooks/useOnKeyDown.d.ts +1 -1
  231. package/build/esm/hooks/useOnKeyDown.js.map +1 -1
  232. package/build/esm/hooks/useReducerMachine.d.ts +24 -24
  233. package/build/esm/hooks/useReducerMachine.js.map +1 -1
  234. package/build/esm/hooks/useRemoveBodyScroll.d.ts +2 -2
  235. package/build/esm/hooks/useRemoveBodyScroll.js.map +1 -1
  236. package/build/esm/hooks/useScope.d.ts +11 -11
  237. package/build/esm/hooks/useScope.js.map +1 -1
  238. package/build/esm/hooks/useThrottle.d.ts +1 -1
  239. package/build/esm/hooks/useThrottle.js.map +1 -1
  240. package/build/esm/index.d.ts +15 -15
  241. package/build/esm/index.js.map +1 -1
  242. package/build/esm/utils/assign-ref.d.ts +3 -3
  243. package/build/esm/utils/assign-ref.js.map +1 -1
  244. package/build/esm/utils/assignRef.d.ts +3 -0
  245. package/build/esm/utils/assignRef.js +25 -0
  246. package/build/esm/utils/assignRef.js.map +1 -0
  247. package/build/esm/utils/can-use-dom.d.ts +1 -1
  248. package/build/esm/utils/can-use-dom.js.map +1 -1
  249. package/build/esm/utils/clamp.d.ts +1 -1
  250. package/build/esm/utils/clamp.js.map +1 -1
  251. package/build/esm/utils/context.d.ts +7 -7
  252. package/build/esm/utils/context.js.map +1 -1
  253. package/build/esm/utils/create-subscription.d.ts +4 -4
  254. package/build/esm/utils/create-subscription.js.map +1 -1
  255. package/build/esm/utils/get-circular-index.d.ts +1 -1
  256. package/build/esm/utils/get-circular-index.js.map +1 -1
  257. package/build/esm/utils/getCircularIndex.d.ts +1 -0
  258. package/build/esm/utils/getCircularIndex.js +8 -0
  259. package/build/esm/utils/getCircularIndex.js.map +1 -0
  260. package/build/esm/utils/index.d.ts +10 -10
  261. package/build/esm/utils/index.js.map +1 -1
  262. package/build/esm/utils/is-right-click.d.ts +6 -6
  263. package/build/esm/utils/is-right-click.js +4 -4
  264. package/build/esm/utils/is-right-click.js.map +1 -1
  265. package/build/esm/utils/owner-document.d.ts +7 -7
  266. package/build/esm/utils/owner-document.js +5 -5
  267. package/build/esm/utils/owner-document.js.map +1 -1
  268. package/build/esm/utils/polymorphic.d.ts +39 -39
  269. package/build/esm/utils/polymorphic.js.map +1 -1
  270. package/build/esm/utils/rubber-band-clamp.d.ts +2 -2
  271. package/build/esm/utils/rubber-band-clamp.js.map +1 -1
  272. package/build/esm/utils/rubberBandClamp.d.ts +2 -0
  273. package/build/esm/utils/rubberBandClamp.js +20 -0
  274. package/build/esm/utils/rubberBandClamp.js.map +1 -0
  275. package/build/esm/utils/use-stable-callback.d.ts +16 -16
  276. package/build/esm/utils/use-stable-callback.js +16 -16
  277. package/build/esm/utils/use-stable-callback.js.map +1 -1
  278. package/build/esm/utils/wrap-event.d.ts +3 -3
  279. package/build/esm/utils/wrap-event.js.map +1 -1
  280. package/build/esm/utils/wrapEvent.d.ts +3 -0
  281. package/build/esm/utils/wrapEvent.js +16 -0
  282. package/build/esm/utils/wrapEvent.js.map +1 -0
  283. package/build/tsconfig-build.tsbuildinfo +1 -1
  284. package/build/tsconfig.tsbuildinfo +7270 -0
  285. package/package.json +2 -2
  286. package/src/Accordion/Accordion.story.tsx +74 -74
  287. package/src/Accordion/Accordion.tsx +59 -59
  288. package/src/Accordion/AccordionBody.tsx +52 -52
  289. package/src/Accordion/AccordionHeader.tsx +167 -167
  290. package/src/Accordion/AccordionItem.tsx +50 -50
  291. package/src/Accordion/context.ts +37 -37
  292. package/src/Accordion/index.ts +4 -4
  293. package/src/Accordion/scopeQuery.ts +7 -7
  294. package/src/Accordion/styles.css +21 -21
  295. package/src/CheckBox/CheckBox.tsx +41 -41
  296. package/src/CheckBox/index.ts +1 -1
  297. package/src/ComboBox/ComboBox.story.tsx +120 -120
  298. package/src/ComboBox/Combobox.tsx +148 -148
  299. package/src/ComboBox/ComboboxButton.tsx +61 -61
  300. package/src/ComboBox/ComboboxInput.tsx +187 -187
  301. package/src/ComboBox/ComboboxLabel.tsx +33 -33
  302. package/src/ComboBox/ComboboxList.tsx +47 -47
  303. package/src/ComboBox/ComboboxOption.tsx +111 -111
  304. package/src/ComboBox/ComboboxPopover.tsx +64 -64
  305. package/src/ComboBox/cities.ts +23194 -23194
  306. package/src/ComboBox/context.ts +35 -35
  307. package/src/ComboBox/hooks.tsx +451 -451
  308. package/src/ComboBox/index.ts +8 -8
  309. package/src/ComboBox/makeHash.ts +19 -19
  310. package/src/ComboBox/scopeQuery.ts +6 -6
  311. package/src/ComboBox/styles.css +32 -32
  312. package/src/FocusLock/FocusLock.tsx +66 -66
  313. package/src/FocusLock/index.ts +1 -1
  314. package/src/FocusLock/tabUtils.ts +40 -40
  315. package/src/FocusLock/useFocusLock.ts +56 -56
  316. package/src/List/List.story.tsx +18 -18
  317. package/src/List/List.tsx +17 -17
  318. package/src/List/ListItem.tsx +23 -23
  319. package/src/List/context.ts +19 -19
  320. package/src/List/index.ts +2 -2
  321. package/src/Menu/ContextMenu.story.tsx +73 -73
  322. package/src/Menu/ContextMenuTrigger.tsx +76 -76
  323. package/src/Menu/Menu.story.tsx +160 -160
  324. package/src/Menu/Menu.tsx +83 -83
  325. package/src/Menu/MenuButton.tsx +83 -83
  326. package/src/Menu/MenuComplex.story.tsx +58 -58
  327. package/src/Menu/MenuItem.tsx +88 -88
  328. package/src/Menu/MenuList.tsx +254 -254
  329. package/src/Menu/MenuPopover.tsx +35 -35
  330. package/src/Menu/context.ts +44 -44
  331. package/src/Menu/fixtures/countryList.ts +198 -198
  332. package/src/Menu/index.ts +6 -6
  333. package/src/Menu/scope.ts +7 -7
  334. package/src/Menu/styles.css +42 -42
  335. package/src/Modal/Modal.story.tsx +258 -258
  336. package/src/Modal/Modal.tsx +48 -48
  337. package/src/Modal/ModalBackdrop.tsx +78 -78
  338. package/src/Modal/NavDrawer.story.tsx +158 -158
  339. package/src/Modal/index.ts +2 -2
  340. package/src/Modal/styles.css +46 -46
  341. package/src/Popper/Popper.story.tsx +263 -263
  342. package/src/Popper/Popper.tsx +154 -154
  343. package/src/Popper/PopperArrow.tsx +35 -35
  344. package/src/Popper/context.ts +10 -10
  345. package/src/Popper/index.ts +3 -3
  346. package/src/Popper/styles.css +60 -60
  347. package/src/Portal/Portal.tsx +31 -20
  348. package/src/Portal/PortalSelectorProvider.tsx +24 -0
  349. package/src/Portal/index.ts +6 -1
  350. package/src/RadioButton/RadioButton.story.tsx +77 -77
  351. package/src/RadioButton/RadioButton.tsx +55 -55
  352. package/src/RadioButton/RadioGroup.tsx +60 -60
  353. package/src/RadioButton/context.ts +17 -17
  354. package/src/RadioButton/index.ts +2 -2
  355. package/src/SkipNav/SkipNav.tsx +16 -16
  356. package/src/SkipNav/index.tsx +1 -1
  357. package/src/Slider/Slider.story.tsx +45 -45
  358. package/src/Slider/Slider.tsx +1120 -1120
  359. package/src/Slider/index.ts +1 -1
  360. package/src/Slider/styles.css +131 -131
  361. package/src/Spinner/Spinner.story.tsx +31 -31
  362. package/src/Spinner/Spinner.tsx +117 -117
  363. package/src/Spinner/SpinnerButton.tsx +54 -54
  364. package/src/Spinner/context.ts +20 -20
  365. package/src/Spinner/index.ts +2 -2
  366. package/src/Spinner/styles.css +23 -23
  367. package/src/Tabs/Tab.story.tsx +80 -80
  368. package/src/Tabs/Tab.tsx +136 -136
  369. package/src/Tabs/TabList.tsx +71 -71
  370. package/src/Tabs/TabPanel.tsx +53 -53
  371. package/src/Tabs/TabPanels.tsx +30 -30
  372. package/src/Tabs/Tabs.tsx +46 -46
  373. package/src/Tabs/context.ts +30 -30
  374. package/src/Tabs/index.tsx +5 -5
  375. package/src/Tabs/scopeQuery.ts +6 -6
  376. package/src/Tooltip/Tooltip.story.tsx +61 -61
  377. package/src/Tooltip/Tooltip.tsx +50 -50
  378. package/src/Tooltip/index.ts +1 -1
  379. package/src/Tooltip/stateMachine.ts +192 -192
  380. package/src/Tooltip/styles.css +17 -17
  381. package/src/Tooltip/useTooltip.ts +136 -136
  382. package/src/hooks/index.ts +13 -13
  383. package/src/hooks/useAutoFocus.ts +22 -22
  384. package/src/hooks/useChildrenCounter.ts +51 -51
  385. package/src/hooks/useFocusReturn.ts +43 -43
  386. package/src/hooks/useFocusState.ts +30 -30
  387. package/src/hooks/useGestureHandlers.ts +286 -286
  388. package/src/hooks/useMeasure.ts +33 -33
  389. package/src/hooks/useOnClickOutside.ts +32 -32
  390. package/src/hooks/useOnKeyDown.ts +19 -19
  391. package/src/hooks/useReducerMachine.ts +60 -60
  392. package/src/hooks/useRemoveBodyScroll.ts +39 -39
  393. package/src/hooks/useScope.ts +52 -52
  394. package/src/hooks/useThrottle.ts +19 -19
  395. package/src/index.ts +20 -20
  396. package/src/utils/assign-ref.ts +27 -27
  397. package/src/utils/can-use-dom.ts +7 -7
  398. package/src/utils/clamp.ts +3 -3
  399. package/src/utils/context.tsx +48 -48
  400. package/src/utils/create-subscription.ts +16 -16
  401. package/src/utils/get-circular-index.ts +7 -7
  402. package/src/utils/index.ts +10 -10
  403. package/src/utils/is-right-click.ts +14 -14
  404. package/src/utils/owner-document.ts +13 -13
  405. package/src/utils/polymorphic.ts +78 -78
  406. package/src/utils/rubber-band-clamp.ts +25 -25
  407. package/src/utils/use-stable-callback.ts +58 -58
  408. package/src/utils/wrap-event.ts +22 -22
@@ -12,26 +12,26 @@ var _excluded = ["children"],
12
12
 
13
13
  /* eslint-disable @typescript-eslint/ban-ts-comment */
14
14
 
15
- /**
16
- * Welcome to @reach/slider!
17
- *
18
- * A UI input component where the user selects a value from within a given
19
- * range. A Slider has a handle that can be moved along a track to change its
20
- * value. When the user's mouse or focus is on the Slider's handle, the value
21
- * can be incremented with keyboard controls.
22
- *
23
- * Random thoughts/notes:
24
- * - Currently testing this against the behavior of the native input range
25
- * element to get our slider on par. We'll explore animated and multi-handle
26
- * sliders next.
27
- * - We may want to research some use cases for reversed sliders in RTL
28
- * languages if that's a thing
29
- *
30
- * @see Docs https://reach.tech/slider
31
- * @see Source https://github.com/reach/reach-ui/tree/main/packages/slider
32
- * @see WAI-ARIA https://www.w3.org/TR/wai-aria-practices-1.2/#slider
33
- * @see Example https://github.com/Stanko/aria-progress-range-slider
34
- * @see Example http://www.oaa-accessibility.org/examplep/slider1/
15
+ /**
16
+ * Welcome to @reach/slider!
17
+ *
18
+ * A UI input component where the user selects a value from within a given
19
+ * range. A Slider has a handle that can be moved along a track to change its
20
+ * value. When the user's mouse or focus is on the Slider's handle, the value
21
+ * can be incremented with keyboard controls.
22
+ *
23
+ * Random thoughts/notes:
24
+ * - Currently testing this against the behavior of the native input range
25
+ * element to get our slider on par. We'll explore animated and multi-handle
26
+ * sliders next.
27
+ * - We may want to research some use cases for reversed sliders in RTL
28
+ * languages if that's a thing
29
+ *
30
+ * @see Docs https://reach.tech/slider
31
+ * @see Source https://github.com/reach/reach-ui/tree/main/packages/slider
32
+ * @see WAI-ARIA https://www.w3.org/TR/wai-aria-practices-1.2/#slider
33
+ * @see Example https://github.com/Stanko/aria-progress-range-slider
34
+ * @see Example http://www.oaa-accessibility.org/examplep/slider1/
35
35
  */
36
36
  import { forwardRef, memo, useRef, useState, useCallback, useEffect, useLayoutEffect, useId } from 'react';
37
37
  import { createContext } from '../utils/context';
@@ -52,10 +52,10 @@ var _createContext = createContext('Slider'),
52
52
  SliderProvider = _createContext2[0],
53
53
  useSliderContext = _createContext2[1]; ////////////////////////////////////////////////////////////////////////////////
54
54
 
55
- /**
56
- * Slider
57
- *
58
- * @see Docs https://reach.tech/slider#slider
55
+ /**
56
+ * Slider
57
+ *
58
+ * @see Docs https://reach.tech/slider#slider
59
59
  */
60
60
 
61
61
 
@@ -71,20 +71,20 @@ var Slider = /*#__PURE__*/forwardRef(function Slider(_ref, forwardedRef) {
71
71
  })
72
72
  }));
73
73
  });
74
- /**
75
- * @see Docs https://reach.tech/slider#slider-props
74
+ /**
75
+ * @see Docs https://reach.tech/slider#slider-props
76
76
  */
77
77
 
78
78
  ////////////////////////////////////////////////////////////////////////////////
79
79
 
80
- /**
81
- * SliderInput
82
- *
83
- * The parent component of the slider interface. This is a lower level component
84
- * if you need more control over styles or rendering the slider's inner
85
- * components.
86
- *
87
- * @see Docs https://reach.tech/slider#sliderinput
80
+ /**
81
+ * SliderInput
82
+ *
83
+ * The parent component of the slider interface. This is a lower level component
84
+ * if you need more control over styles or rendering the slider's inner
85
+ * components.
86
+ *
87
+ * @see Docs https://reach.tech/slider#sliderinput
88
88
  */
89
89
  var SliderInput = /*#__PURE__*/forwardRef(function SliderInput(_ref2, forwardedRef) {
90
90
  var ariaLabel = _ref2['aria-label'],
@@ -473,16 +473,16 @@ var SliderInput = /*#__PURE__*/forwardRef(function SliderInput(_ref2, forwardedR
473
473
  }))
474
474
  });
475
475
  });
476
- /**
477
- * @see Docs https://reach.tech/slider#sliderinput-props
476
+ /**
477
+ * @see Docs https://reach.tech/slider#sliderinput-props
478
478
  */
479
479
 
480
480
  ////////////////////////////////////////////////////////////////////////////////
481
481
 
482
- /**
483
- * SliderTrack
484
- *
485
- * @see Docs https://reach.tech/slider#slidertrack
482
+ /**
483
+ * SliderTrack
484
+ *
485
+ * @see Docs https://reach.tech/slider#slidertrack
486
486
  */
487
487
  var SliderTrackImpl = /*#__PURE__*/forwardRef(function SliderTrack(_ref3, forwardedRef) {
488
488
  var _ref3$as = _ref3.as,
@@ -513,19 +513,19 @@ var SliderTrackImpl = /*#__PURE__*/forwardRef(function SliderTrack(_ref3, forwar
513
513
  }));
514
514
  });
515
515
  var SliderTrack = /*#__PURE__*/memo(SliderTrackImpl);
516
- /**
517
- * @see Docs https://reach.tech/slider#slidertrack-props
516
+ /**
517
+ * @see Docs https://reach.tech/slider#slidertrack-props
518
518
  */
519
519
 
520
520
  ////////////////////////////////////////////////////////////////////////////////
521
521
 
522
- /**
523
- * SliderRange
524
- *
525
- * The (typically) highlighted portion of the track that represents the space
526
- * between the slider's `min` value and its current value.
527
- *
528
- * @see Docs https://reach.tech/slider#sliderrange
522
+ /**
523
+ * SliderRange
524
+ *
525
+ * The (typically) highlighted portion of the track that represents the space
526
+ * between the slider's `min` value and its current value.
527
+ *
528
+ * @see Docs https://reach.tech/slider#sliderrange
529
529
  */
530
530
  var SliderRangeImpl = /*#__PURE__*/forwardRef(function SliderRange(_ref4, forwardedRef) {
531
531
  var _ref4$as = _ref4.as,
@@ -555,22 +555,22 @@ var SliderRangeImpl = /*#__PURE__*/forwardRef(function SliderRange(_ref4, forwar
555
555
  }));
556
556
  });
557
557
  var SliderRange = /*#__PURE__*/memo(SliderRangeImpl);
558
- /**
559
- * `SliderRange` accepts any props that a HTML div component accepts.
560
- * `SliderRange` will not accept or render any children.
561
- *
562
- * @see Docs https://reach.tech/slider#sliderrange-props
558
+ /**
559
+ * `SliderRange` accepts any props that a HTML div component accepts.
560
+ * `SliderRange` will not accept or render any children.
561
+ *
562
+ * @see Docs https://reach.tech/slider#sliderrange-props
563
563
  */
564
564
  // eslint-disable-next-line @typescript-eslint/no-empty-interface
565
565
 
566
566
  ////////////////////////////////////////////////////////////////////////////////
567
567
 
568
- /**
569
- * SliderHandle
570
- *
571
- * The handle that the user drags along the track to set the slider value.
572
- *
573
- * @see Docs https://reach.tech/slider#sliderhandle
568
+ /**
569
+ * SliderHandle
570
+ *
571
+ * The handle that the user drags along the track to set the slider value.
572
+ *
573
+ * @see Docs https://reach.tech/slider#sliderhandle
574
574
  */
575
575
  var SliderHandleImpl = /*#__PURE__*/forwardRef(function SliderHandle(_ref5, forwardedRef) {
576
576
  var _ref5$as = _ref5.as,
@@ -656,22 +656,22 @@ var SliderHandleImpl = /*#__PURE__*/forwardRef(function SliderHandle(_ref5, forw
656
656
  }));
657
657
  });
658
658
  var SliderHandle = /*#__PURE__*/memo(SliderHandleImpl);
659
- /**
660
- * `SliderRange` accepts any props that a HTML div component accepts.
661
- *
662
- * @see Docs https://reach.tech/slider#sliderhandle-props
659
+ /**
660
+ * `SliderRange` accepts any props that a HTML div component accepts.
661
+ *
662
+ * @see Docs https://reach.tech/slider#sliderhandle-props
663
663
  */
664
664
  // eslint-disable-next-line @typescript-eslint/no-empty-interface
665
665
 
666
666
  ////////////////////////////////////////////////////////////////////////////////
667
667
 
668
- /**
669
- * SliderMarker
670
- *
671
- * A fixed value marker. These can be used to illustrate a range of steps or
672
- * highlight important points along the slider track.
673
- *
674
- * @see Docs https://reach.tech/slider#slidermarker
668
+ /**
669
+ * SliderMarker
670
+ *
671
+ * A fixed value marker. These can be used to illustrate a range of steps or
672
+ * highlight important points along the slider track.
673
+ *
674
+ * @see Docs https://reach.tech/slider#slidermarker
675
675
  */
676
676
  var SliderMarkerImpl = /*#__PURE__*/forwardRef(function SliderMarker(_ref6, forwardedRef) {
677
677
  var _ref6$as = _ref6.as,
@@ -715,21 +715,21 @@ var SliderMarkerImpl = /*#__PURE__*/forwardRef(function SliderMarker(_ref6, forw
715
715
  })) : null;
716
716
  });
717
717
  var SliderMarker = /*#__PURE__*/memo(SliderMarkerImpl);
718
- /**
719
- * @see Docs https://reach.tech/slider#slidermarker-props
718
+ /**
719
+ * @see Docs https://reach.tech/slider#slidermarker-props
720
720
  */
721
721
 
722
722
  ////////////////////////////////////////////////////////////////////////////////
723
723
  function clamp(val, min, max) {
724
724
  return val > max ? max : val < min ? min : val;
725
725
  }
726
- /**
727
- * This handles the case when num is very small (0.00000001), js will turn
728
- * this into 1e-8. When num is bigger than 1 or less than -1 it won't get
729
- * converted to this notation so it's fine.
730
- *
731
- * @param num
732
- * @see https://github.com/mui-org/material-ui/blob/master/packages/material-ui/src/Slider/Slider.js#L69
726
+ /**
727
+ * This handles the case when num is very small (0.00000001), js will turn
728
+ * this into 1e-8. When num is bigger than 1 or less than -1 it won't get
729
+ * converted to this notation so it's fine.
730
+ *
731
+ * @param num
732
+ * @see https://github.com/mui-org/material-ui/blob/master/packages/material-ui/src/Slider/Slider.js#L69
733
733
  */
734
734
 
735
735
 
@@ -813,8 +813,8 @@ function useDimensions(ref) {
813
813
  // check for any conflicts with box sizing first and only use
814
814
  // `getComputedStyle` if neccessary.
815
815
 
816
- /* const { width, height } = ref.current
817
- ? ref.current.getBoundingClientRect()
816
+ /* const { width, height } = ref.current
817
+ ? ref.current.getBoundingClientRect()
818
818
  : 0; */
819
819
 
820
820
 
@@ -1 +1 @@
1
- {"version":3,"file":"Slider.js","names":["forwardRef","memo","useRef","useState","useCallback","useEffect","useLayoutEffect","useId","createContext","isRightClick","getOwnerDocument","useStableLayoutCallback","assignMultipleRefs","wrapEvent","useControlledState","noop","SliderProvider","useSliderContext","Slider","forwardedRef","children","props","SliderInput","ariaLabel","ariaLabelledBy","ariaValueTextProp","as","Comp","innerAs","defaultValue","disabled","controlledValue","value","getAriaLabel","getAriaValueText","handleAlignment","max","min","name","onChangeProp","onChange","onKeyDown","onMouseDown","onMouseMove","onMouseUp","onPointerDown","onPointerUp","onTouchEnd","onTouchMove","onTouchStart","orientation","step","rest","touchId","fallbackId","id","pointerDownRef","trackRef","handleRef","sliderRef","hasFocus","setHasFocus","useDimensions","x","ref","handleDimensions","setValue","e","v","_value","clamp","trackPercent","valueToPercent","isVertical","handleSize","height","width","handlePosition","handlePositionRef","current","getNewValueFromEvent","event","getNewValue","getPointerPosition","handleKeyDown","newValue","tenSteps","keyStep","key","roundValueToStep","ariaValueText","rangeStyle","removeMoveEvents","removeStartEvents","removeEndEvents","appEvents","handleSlideStart","ownerDocument","ownerWindow","defaultView","window","changedTouches","preventDefault","touch","identifier","requestAnimationFrame","focus","addMoveListener","addEndListener","setPointerCapture","pointerId","releasePointerCapture","handlePointerMove","handleSlideStop","undefined","touchListener","mouseListener","addEventListener","removeEventListener","pointerListener","addStartListener","sliderElement","inputFallbackId","inputId","SliderTrackImpl","SliderTrack","style","position","SliderRangeImpl","SliderRange","SliderHandleImpl","SliderHandle","onBlur","onFocus","sliderMin","sliderMax","bottom","left","SliderMarkerImpl","SliderMarker","sliderValue","inRange","absoluteStartPosition","state","val","getDecimalPrecision","num","Math","abs","parts","toExponential","split","matissaDecimalPart","length","parseInt","decimalPart","toString","percentToValue","percent","nearest","round","Number","toFixed","i","clientX","y","clientY","track","getBoundingClientRect","diff","setDimensions","getComputedStyle","_newHeight","_newWidth","newHeight","parseFloat","newWidth"],"sources":["../../../src/Slider/Slider.tsx"],"sourcesContent":["/* eslint-disable @typescript-eslint/ban-ts-comment */\r\n\r\n/**\r\n * Welcome to @reach/slider!\r\n *\r\n * A UI input component where the user selects a value from within a given\r\n * range. A Slider has a handle that can be moved along a track to change its\r\n * value. When the user's mouse or focus is on the Slider's handle, the value\r\n * can be incremented with keyboard controls.\r\n *\r\n * Random thoughts/notes:\r\n * - Currently testing this against the behavior of the native input range\r\n * element to get our slider on par. We'll explore animated and multi-handle\r\n * sliders next.\r\n * - We may want to research some use cases for reversed sliders in RTL\r\n * languages if that's a thing\r\n *\r\n * @see Docs https://reach.tech/slider\r\n * @see Source https://github.com/reach/reach-ui/tree/main/packages/slider\r\n * @see WAI-ARIA https://www.w3.org/TR/wai-aria-practices-1.2/#slider\r\n * @see Example https://github.com/Stanko/aria-progress-range-slider\r\n * @see Example http://www.oaa-accessibility.org/examplep/slider1/\r\n */\r\n\r\nimport {\r\n forwardRef,\r\n memo,\r\n useRef,\r\n useState,\r\n useCallback,\r\n useEffect,\r\n useLayoutEffect,\r\n useId,\r\n} from 'react';\r\nimport type { ReactNode, KeyboardEvent } from 'react';\r\n\r\nimport { createContext } from '../utils/context';\r\nimport type * as Polymorphic from '../utils/polymorphic';\r\nimport { isRightClick } from '../utils/is-right-click';\r\nimport { getOwnerDocument } from '../utils/owner-document';\r\nimport { useStableLayoutCallback } from '../utils/use-stable-callback';\r\nimport { assignMultipleRefs, wrapEvent } from '../utils';\r\nimport { useControlledState } from '../hooks';\r\n\r\nconst noop = () => {\r\n /* noop */\r\n};\r\n\r\ntype SliderOrientation = 'horizontal' | 'vertical';\r\ntype SliderHandleAlignment = 'center' | 'contain';\r\n\r\nconst [SliderProvider, useSliderContext] =\r\n createContext<ISliderContext>('Slider');\r\n\r\n////////////////////////////////////////////////////////////////////////////////\r\n\r\n/**\r\n * Slider\r\n *\r\n * @see Docs https://reach.tech/slider#slider\r\n */\r\nconst Slider = forwardRef(function Slider(\r\n { children, ...props },\r\n forwardedRef\r\n) {\r\n return (\r\n <SliderInput {...props} ref={forwardedRef} data-reach-slider=\"\">\r\n <SliderTrack>\r\n <SliderRange />\r\n <SliderHandle />\r\n {children}\r\n </SliderTrack>\r\n </SliderInput>\r\n );\r\n}) as Polymorphic.ForwardRefComponent<'div', SliderProps>;\r\n\r\n/**\r\n * @see Docs https://reach.tech/slider#slider-props\r\n */\r\ninterface SliderProps {\r\n /**\r\n * `Slider` can accept `SliderMarker` children to enhance display of specific\r\n * values along the track.\r\n *\r\n * @see Docs https://reach.tech/slider#slider-children\r\n */\r\n children?: ReactNode;\r\n /**\r\n * The defaultValue is used to set an initial value for an uncontrolled\r\n * Slider.\r\n *\r\n * @see Docs https://reach.tech/slider#slider-defaultvalue\r\n */\r\n defaultValue?: number;\r\n /**\r\n * @see Docs https://reach.tech/slider#slider-disabled\r\n */\r\n disabled?: boolean;\r\n /**\r\n * Whether or not the slider should be disabled from user interaction.\r\n *\r\n * @see Docs https://reach.tech/slider#slider-value\r\n */\r\n value?: number;\r\n /**\r\n * A function used to set a human-readable name for the slider.\r\n *\r\n * @see Docs https://reach.tech/slider#slider-getarialabel\r\n */\r\n getAriaLabel?(value: number): string;\r\n /**\r\n * A function used to set a human-readable value text based on the slider's\r\n * current value.\r\n *\r\n * @see Docs https://reach.tech/slider#slider-getariavaluetext\r\n */\r\n getAriaValueText?(value: number): string;\r\n /**\r\n * When set to `center`, the slider's handle will be positioned directly\r\n * centered over the slider's curremt value on the track. This means that when\r\n * the slider is at its min or max value, a visiable slider handle will extend\r\n * beyond the width (or height in vertical mode) of the slider track. When set\r\n * to `contain`, the slider handle will always be contained within the bounds\r\n * of the track, meaning its position will be slightly offset from the actual\r\n * value depending on where it sits on the track.\r\n *\r\n * @see Docs https://reach.tech/slider#slider-handlealignment\r\n */\r\n handleAlignment?: SliderHandleAlignment;\r\n /**\r\n * The maximum value of the slider. Defaults to `100`.\r\n *\r\n * @see Docs https://reach.tech/slider#slider-max\r\n */\r\n max?: number;\r\n /**\r\n * The minimum value of the slider. Defaults to `0`.\r\n *\r\n * @see Docs https://reach.tech/slider#slider-min\r\n */\r\n min?: number;\r\n /**\r\n * If the slider is used as a form input, it should accept a `name` prop to\r\n * identify its value in context of the form.\r\n *\r\n * @see Docs https://reach.tech/slider#slider-name\r\n */\r\n name?: string;\r\n /**\r\n * Callback that fires when the slider value changes. When the `value` prop is\r\n * set, the Slider state becomes controlled and `onChange` must be used to\r\n * update the value in response to user interaction.\r\n *\r\n * @see Docs https://reach.tech/slider#slider-onchange\r\n */\r\n onChange?(\r\n e: SomePointerEvent | KeyboardEvent,\r\n newValue: number,\r\n props?: {\r\n min?: number;\r\n max?: number;\r\n handlePosition?: string;\r\n }\r\n ): void;\r\n\r\n // We use native DOM events for the slider since they are global\r\n onMouseDown?(event: MouseEvent): void;\r\n onMouseMove?(event: MouseEvent): void;\r\n onMouseUp?(event: MouseEvent): void;\r\n onPointerDown?(event: PointerEvent): void;\r\n onPointerUp?(event: PointerEvent): void;\r\n onTouchEnd?(event: TouchEvent): void;\r\n onTouchMove?(event: TouchEvent): void;\r\n onTouchStart?(event: TouchEvent): void;\r\n\r\n /**\r\n * Sets the slider to horizontal or vertical mode.\r\n *\r\n * @see Docs https://reach.tech/slider#slider-orientation\r\n */\r\n orientation?: SliderOrientation;\r\n /**\r\n * The step attribute is a number that specifies the granularity that the\r\n * value must adhere to as it changes. Step sets minimum intervals of change,\r\n * creating a \"snap\" effect when the handle is moved along the track.\r\n *\r\n * @see Docs https://reach.tech/slider#slider-step\r\n */\r\n step?: number;\r\n}\r\n\r\n////////////////////////////////////////////////////////////////////////////////\r\n\r\n/**\r\n * SliderInput\r\n *\r\n * The parent component of the slider interface. This is a lower level component\r\n * if you need more control over styles or rendering the slider's inner\r\n * components.\r\n *\r\n * @see Docs https://reach.tech/slider#sliderinput\r\n */\r\nconst SliderInput = forwardRef(function SliderInput(\r\n {\r\n 'aria-label': ariaLabel,\r\n 'aria-labelledby': ariaLabelledBy,\r\n 'aria-valuetext': ariaValueTextProp,\r\n as: Comp = 'div',\r\n innerAs,\r\n defaultValue,\r\n disabled = false,\r\n value: controlledValue,\r\n getAriaLabel,\r\n getAriaValueText,\r\n handleAlignment = 'center',\r\n max = 100,\r\n min = 0,\r\n name,\r\n onChange: onChangeProp,\r\n onKeyDown,\r\n onMouseDown,\r\n onMouseMove,\r\n onMouseUp,\r\n onPointerDown,\r\n onPointerUp,\r\n onTouchEnd,\r\n onTouchMove,\r\n onTouchStart,\r\n orientation = 'horizontal',\r\n step = 1,\r\n children,\r\n ...rest\r\n },\r\n forwardedRef\r\n) {\r\n const touchId: TouchIdRef = useRef();\r\n\r\n const fallbackId = useId();\r\n const id = rest.id || fallbackId;\r\n\r\n // Track whether or not the pointer is down without updating the component\r\n const pointerDownRef = useRef(false);\r\n\r\n const trackRef: TrackRef = useRef(null);\r\n const handleRef: HandleRef = useRef(null);\r\n const sliderRef: SliderRef = useRef(null);\r\n\r\n const [hasFocus, setHasFocus] = useState(false);\r\n\r\n const { ref: x, ...handleDimensions } = useDimensions(handleRef);\r\n\r\n const [_value, onChange] = useControlledState(\r\n controlledValue,\r\n onChangeProp,\r\n defaultValue || min,\r\n (setValue) => (e, v) => setValue(v)\r\n );\r\n const value = clamp(_value, min, max);\r\n const trackPercent = valueToPercent(value, min, max);\r\n const isVertical = orientation === 'vertical';\r\n\r\n const handleSize = isVertical\r\n ? handleDimensions.height\r\n : handleDimensions.width;\r\n\r\n // TODO: Consider removing the `handleAlignment` prop\r\n // We may want to use accept a `handlePosition` prop instead and let apps\r\n // define their own positioning logic, similar to how we do for popovers.\r\n const handlePosition = `calc(${trackPercent}% - ${\r\n handleAlignment === 'center'\r\n ? `${handleSize}px / 2`\r\n : `${handleSize}px * ${trackPercent * 0.01}`\r\n })`;\r\n const handlePositionRef = useRef(handlePosition);\r\n useLayoutEffect(() => {\r\n handlePositionRef.current = handlePosition;\r\n }, [handlePosition]);\r\n\r\n const getNewValueFromEvent = useCallback(\r\n (event: SomePointerEvent) => {\r\n return getNewValue(getPointerPosition(event, touchId), trackRef.current, {\r\n step,\r\n orientation,\r\n min,\r\n max,\r\n });\r\n },\r\n [max, min, orientation, step]\r\n );\r\n\r\n // https://www.w3.org/TR/wai-aria-practices-1.2/#slider_kbd_interaction\r\n const handleKeyDown = useStableLayoutCallback((event: KeyboardEvent) => {\r\n if (disabled) {\r\n return;\r\n }\r\n\r\n let newValue: number;\r\n const tenSteps = (max - min) / 10;\r\n const keyStep = step || (max - min) / 100;\r\n\r\n switch (event.key) {\r\n // Decrease the value of the slider by one step.\r\n case 'ArrowLeft':\r\n case 'ArrowDown':\r\n newValue = value - keyStep;\r\n break;\r\n // Increase the value of the slider by one step\r\n case 'ArrowRight':\r\n case 'ArrowUp':\r\n newValue = value + keyStep;\r\n break;\r\n // Decrement the slider by an amount larger than the step change made by\r\n // `ArrowDown`.\r\n case 'PageDown':\r\n newValue = value - tenSteps;\r\n break;\r\n // Increment the slider by an amount larger than the step change made by\r\n // `ArrowUp`.\r\n case 'PageUp':\r\n newValue = value + tenSteps;\r\n break;\r\n // Set the slider to the first allowed value in its range.\r\n case 'Home':\r\n newValue = min;\r\n break;\r\n // Set the slider to the last allowed value in its range.\r\n case 'End':\r\n newValue = max;\r\n break;\r\n default:\r\n return;\r\n }\r\n\r\n newValue = clamp(\r\n step ? roundValueToStep(newValue, step, min) : newValue,\r\n min,\r\n max\r\n );\r\n onChange(event, newValue);\r\n });\r\n\r\n const ariaValueText = getAriaValueText\r\n ? getAriaValueText(value)\r\n : ariaValueTextProp;\r\n\r\n const rangeStyle = { [isVertical ? 'height' : 'width']: `${trackPercent}%` };\r\n\r\n // Slide events!\r\n // We will try to use pointer events if they are supported to leverage\r\n // setPointerCapture and releasePointerCapture. We'll fall back to separate\r\n // mouse and touch events.\r\n // TODO: This could be more concise\r\n const removeMoveEvents = useRef<() => void>(noop);\r\n const removeStartEvents = useRef<() => void>(noop);\r\n const removeEndEvents = useRef<() => void>(noop);\r\n\r\n // Store our event handlers in refs so we aren't attaching/detaching events\r\n // on every render if the user doesn't useCallback\r\n const appEvents = useRef({\r\n onMouseMove,\r\n onMouseDown,\r\n onMouseUp,\r\n onTouchStart,\r\n onTouchEnd,\r\n onTouchMove,\r\n onPointerDown,\r\n onPointerUp,\r\n });\r\n useLayoutEffect(() => {\r\n appEvents.current.onMouseMove = onMouseMove;\r\n appEvents.current.onMouseDown = onMouseDown;\r\n appEvents.current.onMouseUp = onMouseUp;\r\n appEvents.current.onTouchStart = onTouchStart;\r\n appEvents.current.onTouchEnd = onTouchEnd;\r\n appEvents.current.onTouchMove = onTouchMove;\r\n appEvents.current.onPointerDown = onPointerDown;\r\n appEvents.current.onPointerUp = onPointerUp;\r\n }, [\r\n onMouseMove,\r\n onMouseDown,\r\n onMouseUp,\r\n onTouchStart,\r\n onTouchEnd,\r\n onTouchMove,\r\n onPointerDown,\r\n onPointerUp,\r\n ]);\r\n\r\n const handleSlideStart = useStableLayoutCallback(\r\n (event: SomePointerEvent) => {\r\n if (isRightClick(event)) return;\r\n\r\n if (disabled) {\r\n pointerDownRef.current = false;\r\n return;\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\r\n const ownerDocument = getOwnerDocument(sliderRef.current)!;\r\n const ownerWindow = ownerDocument.defaultView || window;\r\n pointerDownRef.current = true;\r\n\r\n if ((event as TouchEvent).changedTouches) {\r\n // Prevent scrolling for touch events\r\n event.preventDefault();\r\n const touch = (event as TouchEvent).changedTouches?.[0];\r\n if (touch != null) {\r\n touchId.current = touch.identifier;\r\n }\r\n }\r\n\r\n const newValue = getNewValueFromEvent(event);\r\n if (newValue == null) {\r\n return;\r\n }\r\n ownerWindow.requestAnimationFrame(() => handleRef.current?.focus());\r\n onChange(event, newValue);\r\n\r\n removeMoveEvents.current = addMoveListener();\r\n removeEndEvents.current = addEndListener();\r\n }\r\n );\r\n\r\n const setPointerCapture = useStableLayoutCallback((event: PointerEvent) => {\r\n if (isRightClick(event)) return;\r\n if (disabled) {\r\n pointerDownRef.current = false;\r\n return;\r\n }\r\n pointerDownRef.current = true;\r\n sliderRef.current?.setPointerCapture(event.pointerId);\r\n });\r\n\r\n const releasePointerCapture = useStableLayoutCallback(\r\n (event: PointerEvent) => {\r\n if (isRightClick(event)) return;\r\n sliderRef.current?.releasePointerCapture(event.pointerId);\r\n pointerDownRef.current = false;\r\n }\r\n );\r\n\r\n const handlePointerMove = useStableLayoutCallback(\r\n (event: SomePointerEvent) => {\r\n if (disabled || !pointerDownRef.current) {\r\n pointerDownRef.current = false;\r\n return;\r\n }\r\n\r\n const newValue = getNewValueFromEvent(event);\r\n if (newValue == null) {\r\n return;\r\n }\r\n onChange?.(event, newValue);\r\n }\r\n );\r\n\r\n const handleSlideStop = useStableLayoutCallback((event: SomePointerEvent) => {\r\n if (isRightClick(event)) return;\r\n\r\n pointerDownRef.current = false;\r\n\r\n const newValue = getNewValueFromEvent(event);\r\n if (newValue == null) {\r\n return;\r\n }\r\n\r\n touchId.current = undefined;\r\n\r\n removeMoveEvents.current();\r\n removeEndEvents.current();\r\n });\r\n\r\n const addMoveListener = useCallback(() => {\r\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\r\n const ownerDocument = getOwnerDocument(sliderRef.current)!;\r\n const touchListener = wrapEvent(\r\n appEvents.current.onTouchMove,\r\n handlePointerMove\r\n );\r\n const mouseListener = wrapEvent(\r\n appEvents.current.onMouseMove,\r\n handlePointerMove\r\n );\r\n ownerDocument.addEventListener('touchmove', touchListener);\r\n ownerDocument.addEventListener('mousemove', mouseListener);\r\n return () => {\r\n ownerDocument.removeEventListener('touchmove', touchListener);\r\n ownerDocument.removeEventListener('mousemove', mouseListener);\r\n };\r\n }, [handlePointerMove]);\r\n\r\n const addEndListener = useCallback(() => {\r\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\r\n const ownerDocument = getOwnerDocument(sliderRef.current)!;\r\n const ownerWindow = ownerDocument.defaultView || window;\r\n const pointerListener = wrapEvent(\r\n appEvents.current.onPointerUp,\r\n releasePointerCapture\r\n );\r\n const touchListener = wrapEvent(\r\n appEvents.current.onTouchEnd,\r\n handleSlideStop\r\n );\r\n const mouseListener = wrapEvent(\r\n appEvents.current.onMouseUp,\r\n handleSlideStop\r\n );\r\n if ('PointerEvent' in ownerWindow) {\r\n ownerDocument.addEventListener('pointerup', pointerListener);\r\n }\r\n ownerDocument.addEventListener('touchend', touchListener);\r\n ownerDocument.addEventListener('mouseup', mouseListener);\r\n return () => {\r\n if ('PointerEvent' in ownerWindow) {\r\n ownerDocument.removeEventListener('pointerup', pointerListener);\r\n }\r\n ownerDocument.removeEventListener('touchend', touchListener);\r\n ownerDocument.removeEventListener('mouseup', mouseListener);\r\n };\r\n }, [handleSlideStop, releasePointerCapture]);\r\n\r\n const addStartListener = useCallback(() => {\r\n // e.preventDefault is ignored by React's synthetic touchStart event, so\r\n // we attach the listener directly to the DOM node\r\n // https://github.com/facebook/react/issues/9809#issuecomment-413978405\r\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\r\n const sliderElement = sliderRef.current!;\r\n if (!sliderElement) {\r\n return noop;\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\r\n const ownerDocument = getOwnerDocument(sliderElement)!;\r\n const ownerWindow = ownerDocument.defaultView || window;\r\n const touchListener = wrapEvent(\r\n appEvents.current.onTouchStart,\r\n handleSlideStart\r\n );\r\n const mouseListener = wrapEvent(\r\n appEvents.current.onMouseDown,\r\n handleSlideStart\r\n );\r\n const pointerListener = wrapEvent(\r\n appEvents.current.onPointerDown,\r\n setPointerCapture\r\n );\r\n sliderElement.addEventListener('touchstart', touchListener);\r\n sliderElement.addEventListener('mousedown', mouseListener);\r\n if ('PointerEvent' in ownerWindow) {\r\n sliderElement.addEventListener('pointerdown', pointerListener);\r\n }\r\n return () => {\r\n sliderElement.removeEventListener('touchstart', touchListener);\r\n sliderElement.removeEventListener('mousedown', mouseListener);\r\n if ('PointerEvent' in ownerWindow) {\r\n sliderElement.removeEventListener('pointerdown', pointerListener);\r\n }\r\n };\r\n }, [setPointerCapture, handleSlideStart]);\r\n\r\n useEffect(() => {\r\n removeStartEvents.current = addStartListener();\r\n\r\n return () => {\r\n removeStartEvents.current();\r\n removeEndEvents.current();\r\n removeMoveEvents.current();\r\n };\r\n }, [addStartListener]);\r\n\r\n const inputFallbackId = useId();\r\n const inputId = id || inputFallbackId;\r\n\r\n return (\r\n <SliderProvider\r\n ariaLabel={getAriaLabel ? getAriaLabel(value) : ariaLabel}\r\n ariaLabelledBy={ariaLabelledBy}\r\n ariaValueText={ariaValueText}\r\n handleDimensions={handleDimensions}\r\n handleKeyDown={handleKeyDown}\r\n handlePosition={handlePosition}\r\n handleRef={handleRef}\r\n hasFocus={hasFocus}\r\n onKeyDown={onKeyDown}\r\n setHasFocus={setHasFocus}\r\n sliderId={id}\r\n sliderMax={max}\r\n sliderMin={min}\r\n value={value}\r\n disabled={!!disabled}\r\n isVertical={isVertical}\r\n orientation={orientation}\r\n trackPercent={trackPercent}\r\n trackRef={trackRef}\r\n rangeStyle={rangeStyle}\r\n updateValue={onChange}\r\n >\r\n <Comp\r\n {...rest}\r\n // @ts-ignore\r\n as={innerAs}\r\n ref={assignMultipleRefs(sliderRef, forwardedRef)}\r\n data-reach-slider-input=\"\"\r\n data-disabled={disabled ? '' : undefined}\r\n data-orientation={orientation}\r\n tabIndex={-1}\r\n >\r\n {typeof children === 'function'\r\n ? children({\r\n hasFocus,\r\n id,\r\n max,\r\n min,\r\n value,\r\n ariaValueText,\r\n })\r\n : children}\r\n {name && (\r\n // If the slider is used in a form we'll need an input field to\r\n // capture the value. We'll assume this when the component is given a\r\n // form field name (A `name` prop doesn't really make sense in any\r\n // other context).\r\n <input type=\"hidden\" value={value} name={name} id={inputId} />\r\n )}\r\n </Comp>\r\n </SliderProvider>\r\n );\r\n}) as Polymorphic.ForwardRefComponent<'div', SliderInputProps>;\r\n\r\n/**\r\n * @see Docs https://reach.tech/slider#sliderinput-props\r\n */\r\ntype SliderInputProps = Omit<SliderProps, 'children'> & {\r\n /**\r\n * Slider expects `<SliderTrack>` as its child; The track will accept all\r\n * additional slider sub-components as children. It can also accept a\r\n * function/render prop as its child to expose some of its internal state\r\n * variables.\r\n *\r\n * @see Docs https://reach.tech/slider#sliderinput-children\r\n */\r\n children: ReactNode | SliderChildrenRender;\r\n};\r\n\r\n////////////////////////////////////////////////////////////////////////////////\r\n\r\n/**\r\n * SliderTrack\r\n *\r\n * @see Docs https://reach.tech/slider#slidertrack\r\n */\r\nconst SliderTrackImpl = forwardRef(function SliderTrack(\r\n { as: Comp = 'div', innerAs, children, style = {}, ...props },\r\n forwardedRef\r\n) {\r\n const { disabled, orientation, trackRef } = useSliderContext('SliderTrack');\r\n\r\n return (\r\n <Comp\r\n ref={assignMultipleRefs(trackRef, forwardedRef)}\r\n // @ts-ignore\r\n as={innerAs}\r\n style={{ ...style, position: 'relative' }}\r\n {...props}\r\n data-reach-slider-track=\"\"\r\n data-disabled={disabled ? '' : undefined}\r\n data-orientation={orientation}\r\n >\r\n {children}\r\n </Comp>\r\n );\r\n}) as Polymorphic.ForwardRefComponent<'div', SliderTrackProps>;\r\n\r\nconst SliderTrack = memo(SliderTrackImpl) as Polymorphic.MemoComponent<\r\n 'div',\r\n SliderTrackProps\r\n>;\r\n\r\n/**\r\n * @see Docs https://reach.tech/slider#slidertrack-props\r\n */\r\ninterface SliderTrackProps {\r\n /**\r\n * `SliderTrack` expects `<SliderHandle>`, at minimum, for the Slider to\r\n * function. All other Slider subcomponents should be passed as children\r\n * inside the `SliderTrack`.\r\n *\r\n * @see Docs https://reach.tech/slider#slidertrack-children\r\n */\r\n children: ReactNode;\r\n}\r\n\r\n////////////////////////////////////////////////////////////////////////////////\r\n\r\n/**\r\n * SliderRange\r\n *\r\n * The (typically) highlighted portion of the track that represents the space\r\n * between the slider's `min` value and its current value.\r\n *\r\n * @see Docs https://reach.tech/slider#sliderrange\r\n */\r\nconst SliderRangeImpl = forwardRef(function SliderRange(\r\n { as: Comp = 'div', innerAs, children, style = {}, ...props },\r\n forwardedRef\r\n) {\r\n const { disabled, orientation, rangeStyle } = useSliderContext('SliderRange');\r\n return (\r\n <Comp\r\n ref={forwardedRef}\r\n // @ts-ignore\r\n as={innerAs}\r\n style={{ position: 'absolute', ...rangeStyle, ...style }}\r\n {...props}\r\n data-reach-slider-range=\"\"\r\n data-disabled={disabled ? '' : undefined}\r\n data-orientation={orientation}\r\n />\r\n );\r\n}) as Polymorphic.ForwardRefComponent<'div', SliderRangeProps>;\r\n\r\nconst SliderRange = memo(SliderRangeImpl) as Polymorphic.MemoComponent<\r\n 'div',\r\n SliderRangeProps\r\n>;\r\n\r\n/**\r\n * `SliderRange` accepts any props that a HTML div component accepts.\r\n * `SliderRange` will not accept or render any children.\r\n *\r\n * @see Docs https://reach.tech/slider#sliderrange-props\r\n */\r\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\r\ninterface SliderRangeProps {}\r\n\r\n////////////////////////////////////////////////////////////////////////////////\r\n\r\n/**\r\n * SliderHandle\r\n *\r\n * The handle that the user drags along the track to set the slider value.\r\n *\r\n * @see Docs https://reach.tech/slider#sliderhandle\r\n */\r\nconst SliderHandleImpl = forwardRef(function SliderHandle(\r\n {\r\n // min,\r\n // max,\r\n as: Comp = 'div',\r\n innerAs,\r\n onBlur,\r\n onFocus,\r\n style = {},\r\n onKeyDown,\r\n ...props\r\n },\r\n forwardedRef\r\n) {\r\n const {\r\n ariaLabel,\r\n ariaLabelledBy,\r\n ariaValueText,\r\n disabled,\r\n handlePosition,\r\n handleRef,\r\n isVertical,\r\n handleKeyDown,\r\n orientation,\r\n setHasFocus,\r\n sliderMin,\r\n sliderMax,\r\n value,\r\n } = useSliderContext('SliderHandle');\r\n\r\n return (\r\n <Comp\r\n // @ts-ignore\r\n as={innerAs}\r\n aria-disabled={disabled || undefined}\r\n // If the slider has a visible label, it is referenced by\r\n // `aria-labelledby` on the slider element. Otherwise, the slider\r\n // element has a label provided by `aria-label`.\r\n // https://www.w3.org/TR/wai-aria-practices-1.2/#slider_roles_states_props\r\n aria-label={ariaLabel}\r\n aria-labelledby={ariaLabel ? undefined : ariaLabelledBy}\r\n // If the slider is vertically oriented, it has `aria-orientation` set\r\n // to vertical. The default value of `aria-orientation` for a slider is\r\n // horizontal.\r\n // https://www.w3.org/TR/wai-aria-practices-1.2/#slider_roles_states_props\r\n aria-orientation={orientation}\r\n // The slider element has the `aria-valuemax` property set to a decimal\r\n // value representing the maximum allowed value of the slider.\r\n // https://www.w3.org/TR/wai-aria-practices-1.2/#slider_roles_states_props\r\n aria-valuemax={sliderMax}\r\n // The slider element has the `aria-valuemin` property set to a decimal\r\n // value representing the minimum allowed value of the slider.\r\n // https://www.w3.org/TR/wai-aria-practices-1.2/#slider_roles_states_props\r\n aria-valuemin={sliderMin}\r\n // The slider element has the `aria-valuenow` property set to a decimal\r\n // value representing the current value of the slider.\r\n // https://www.w3.org/TR/wai-aria-practices-1.2/#slider_roles_states_props\r\n aria-valuenow={value}\r\n // If the value of `aria-valuenow` is not user-friendly, e.g., the day\r\n // of the week is represented by a number, the `aria-valuetext` property\r\n // is set to a string that makes the slider value understandable, e.g.,\r\n // \"Monday\".\r\n // https://www.w3.org/TR/wai-aria-practices-1.2/#slider_roles_states_props\r\n aria-valuetext={ariaValueText}\r\n // The element serving as the focusable slider control has role\r\n // `slider`.\r\n // https://www.w3.org/TR/wai-aria-practices-1.2/#slider_roles_states_props\r\n role=\"slider\"\r\n tabIndex={disabled ? -1 : 0}\r\n {...props}\r\n data-reach-slider-handle=\"\"\r\n ref={assignMultipleRefs(handleRef, forwardedRef)}\r\n onBlur={wrapEvent(onBlur, () => {\r\n setHasFocus(false);\r\n })}\r\n onFocus={wrapEvent(onFocus, () => {\r\n setHasFocus(true);\r\n })}\r\n onKeyDown={wrapEvent(onKeyDown, handleKeyDown)}\r\n style={{\r\n position: 'absolute',\r\n ...(isVertical ? { bottom: handlePosition } : { left: handlePosition }),\r\n ...style,\r\n }}\r\n />\r\n );\r\n}) as Polymorphic.ForwardRefComponent<'div', SliderHandleProps>;\r\n\r\nconst SliderHandle = memo(SliderHandleImpl) as Polymorphic.MemoComponent<\r\n 'div',\r\n SliderHandleProps\r\n>;\r\n\r\n/**\r\n * `SliderRange` accepts any props that a HTML div component accepts.\r\n *\r\n * @see Docs https://reach.tech/slider#sliderhandle-props\r\n */\r\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\r\ninterface SliderHandleProps {}\r\n\r\n////////////////////////////////////////////////////////////////////////////////\r\n\r\n/**\r\n * SliderMarker\r\n *\r\n * A fixed value marker. These can be used to illustrate a range of steps or\r\n * highlight important points along the slider track.\r\n *\r\n * @see Docs https://reach.tech/slider#slidermarker\r\n */\r\nconst SliderMarkerImpl = forwardRef(function SliderMarker(\r\n { as: Comp = 'div', innerAs, children, style = {}, value, ...props },\r\n forwardedRef\r\n) {\r\n const {\r\n disabled,\r\n isVertical,\r\n orientation,\r\n sliderMin,\r\n sliderMax,\r\n value: sliderValue,\r\n } = useSliderContext('SliderMarker');\r\n\r\n const inRange = value >= sliderMin && value <= sliderMax;\r\n const absoluteStartPosition = `${valueToPercent(\r\n value,\r\n sliderMin,\r\n sliderMax\r\n )}%`;\r\n\r\n const state =\r\n value < sliderValue\r\n ? 'under-value'\r\n : value === sliderValue\r\n ? 'at-value'\r\n : 'over-value';\r\n\r\n return inRange ? (\r\n <Comp\r\n ref={forwardedRef}\r\n // @ts-ignore\r\n as={innerAs}\r\n style={{\r\n position: 'absolute',\r\n ...(isVertical\r\n ? { bottom: absoluteStartPosition }\r\n : { left: absoluteStartPosition }),\r\n ...style,\r\n }}\r\n {...props}\r\n data-reach-slider-marker=\"\"\r\n data-disabled={disabled ? '' : undefined}\r\n data-orientation={orientation}\r\n data-state={state}\r\n data-value={value}\r\n >\r\n {children}\r\n </Comp>\r\n ) : null;\r\n}) as Polymorphic.ForwardRefComponent<'div', SliderMarkerProps>;\r\n\r\nconst SliderMarker = memo(SliderMarkerImpl) as Polymorphic.MemoComponent<\r\n 'div',\r\n SliderMarkerProps\r\n>;\r\n\r\n/**\r\n * @see Docs https://reach.tech/slider#slidermarker-props\r\n */\r\ninterface SliderMarkerProps {\r\n /**\r\n * The value to denote where the marker should appear along the track.\r\n *\r\n * @see Docs https://reach.tech/slider#slidermarker-value\r\n */\r\n value: number;\r\n}\r\n\r\n////////////////////////////////////////////////////////////////////////////////\r\n\r\nfunction clamp(val: number, min: number, max: number) {\r\n return val > max ? max : val < min ? min : val;\r\n}\r\n\r\n/**\r\n * This handles the case when num is very small (0.00000001), js will turn\r\n * this into 1e-8. When num is bigger than 1 or less than -1 it won't get\r\n * converted to this notation so it's fine.\r\n *\r\n * @param num\r\n * @see https://github.com/mui-org/material-ui/blob/master/packages/material-ui/src/Slider/Slider.js#L69\r\n */\r\nfunction getDecimalPrecision(num: number) {\r\n if (Math.abs(num) < 1) {\r\n const parts = num.toExponential().split('e-');\r\n const matissaDecimalPart = parts[0].split('.')[1];\r\n return (\r\n (matissaDecimalPart ? matissaDecimalPart.length : 0) +\r\n parseInt(parts[1], 10)\r\n );\r\n }\r\n\r\n const decimalPart = num.toString().split('.')[1];\r\n return decimalPart ? decimalPart.length : 0;\r\n}\r\n\r\nfunction percentToValue(percent: number, min: number, max: number) {\r\n return (max - min) * percent + min;\r\n}\r\n\r\nfunction roundValueToStep(value: number, step: number, min: number) {\r\n const nearest = Math.round((value - min) / step) * step + min;\r\n return Number(nearest.toFixed(getDecimalPrecision(step)));\r\n}\r\n\r\nfunction getPointerPosition(event: SomePointerEvent, touchId: TouchIdRef) {\r\n if (touchId.current !== undefined && (event as TouchEvent).changedTouches) {\r\n for (let i = 0; i < (event as TouchEvent).changedTouches.length; i += 1) {\r\n const touch = (event as TouchEvent).changedTouches[i];\r\n if (touch.identifier === touchId.current) {\r\n return {\r\n x: touch.clientX,\r\n y: touch.clientY,\r\n };\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n\r\n return {\r\n x: (event as PointerEvent | MouseEvent).clientX,\r\n y: (event as PointerEvent | MouseEvent).clientY,\r\n };\r\n}\r\n\r\nfunction getNewValue(\r\n handlePosition:\r\n | {\r\n x: number;\r\n y: number;\r\n }\r\n | false,\r\n track: HTMLElement | null,\r\n props: {\r\n orientation: SliderOrientation;\r\n min: number;\r\n max: number;\r\n step?: number;\r\n }\r\n) {\r\n const { orientation, min, max, step } = props;\r\n\r\n if (!track || !handlePosition) {\r\n return null;\r\n }\r\n\r\n const { left, width, bottom, height } = track.getBoundingClientRect();\r\n const isVertical = orientation === 'vertical';\r\n const diff = isVertical ? bottom - handlePosition.y : handlePosition.x - left;\r\n const percent = diff / (isVertical ? height : width);\r\n const newValue = percentToValue(percent, min, max);\r\n\r\n return clamp(\r\n step ? roundValueToStep(newValue, step, min) : newValue,\r\n min,\r\n max\r\n );\r\n}\r\n\r\nfunction useDimensions(ref: React.RefObject<HTMLElement | null>) {\r\n const [{ width, height }, setDimensions] = useState({\r\n width: 0,\r\n height: 0,\r\n });\r\n // Many existing `useDimensions` type hooks will use `getBoundingClientRect`\r\n // getBoundingClientRect does not work here when borders are applied.\r\n // getComputedStyle is not as performant so we may want to create a utility to\r\n // check for any conflicts with box sizing first and only use\r\n // `getComputedStyle` if neccessary.\r\n /* const { width, height } = ref.current\r\n ? ref.current.getBoundingClientRect()\r\n : 0; */\r\n\r\n useLayoutEffect(() => {\r\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\r\n const ownerDocument = getOwnerDocument(ref.current)!;\r\n const ownerWindow = ownerDocument.defaultView || window;\r\n if (ref.current) {\r\n const { height: _newHeight, width: _newWidth } =\r\n ownerWindow.getComputedStyle(ref.current);\r\n const newHeight = parseFloat(_newHeight);\r\n const newWidth = parseFloat(_newWidth);\r\n\r\n if (newHeight !== height || newWidth !== width) {\r\n setDimensions({ height: newHeight, width: newWidth });\r\n }\r\n }\r\n }, [ref, width, height]);\r\n return { ref, width, height };\r\n}\r\n\r\nfunction valueToPercent(value: number, min: number, max: number) {\r\n return ((value - min) * 100) / (max - min);\r\n}\r\n\r\n////////////////////////////////////////////////////////////////////////////////\r\n// Types\r\n\r\ntype TrackRef = React.RefObject<HTMLDivElement | null>;\r\ntype HandleRef = React.RefObject<HTMLDivElement | null>;\r\ntype SliderRef = React.RefObject<HTMLDivElement | null>;\r\ntype TouchIdRef = React.MutableRefObject<number | undefined>;\r\n\r\ntype SomePointerEvent = TouchEvent | MouseEvent;\r\n\r\ninterface ISliderContext {\r\n ariaLabel: string | undefined;\r\n ariaLabelledBy: string | undefined;\r\n ariaValueText: string | undefined;\r\n handleDimensions: {\r\n width: number;\r\n height: number;\r\n };\r\n handlePosition: string;\r\n handleRef: HandleRef;\r\n hasFocus: boolean;\r\n onKeyDown?: (event: React.KeyboardEvent<HTMLDivElement>) => void;\r\n handleKeyDown: (event: React.KeyboardEvent<HTMLDivElement>) => void;\r\n setHasFocus: React.Dispatch<React.SetStateAction<boolean>>;\r\n sliderId: string | undefined;\r\n sliderMax: number;\r\n sliderMin: number;\r\n value: number;\r\n disabled: boolean;\r\n isVertical: boolean;\r\n orientation: SliderOrientation;\r\n trackPercent: number;\r\n trackRef: TrackRef;\r\n rangeStyle: React.CSSProperties;\r\n updateValue: (e: SomePointerEvent | KeyboardEvent, newValue: any) => void;\r\n}\r\n\r\ntype SliderChildrenRender = (props: {\r\n ariaValueText?: string | undefined;\r\n hasFocus?: boolean;\r\n id?: string | undefined;\r\n sliderId?: string | undefined;\r\n max?: number;\r\n min?: number;\r\n value?: number;\r\n}) => JSX.Element;\r\n\r\n////////////////////////////////////////////////////////////////////////////////\r\n// Exports\r\n\r\nexport default Slider;\r\nexport type {\r\n SliderHandleProps,\r\n SliderInputProps,\r\n SliderMarkerProps,\r\n SliderProps,\r\n SliderRangeProps,\r\n SliderTrackProps,\r\n SliderHandleAlignment,\r\n SliderOrientation,\r\n};\r\nexport {\r\n Slider,\r\n SliderHandle,\r\n SliderInput,\r\n SliderMarker,\r\n SliderTrack,\r\n SliderRange,\r\n};\r\n"],"mappings":"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"}
1
+ {"version":3,"file":"Slider.js","names":["forwardRef","memo","useRef","useState","useCallback","useEffect","useLayoutEffect","useId","createContext","isRightClick","getOwnerDocument","useStableLayoutCallback","assignMultipleRefs","wrapEvent","useControlledState","noop","SliderProvider","useSliderContext","Slider","forwardedRef","children","props","SliderInput","ariaLabel","ariaLabelledBy","ariaValueTextProp","as","Comp","innerAs","defaultValue","disabled","controlledValue","value","getAriaLabel","getAriaValueText","handleAlignment","max","min","name","onChangeProp","onChange","onKeyDown","onMouseDown","onMouseMove","onMouseUp","onPointerDown","onPointerUp","onTouchEnd","onTouchMove","onTouchStart","orientation","step","rest","touchId","fallbackId","id","pointerDownRef","trackRef","handleRef","sliderRef","hasFocus","setHasFocus","useDimensions","x","ref","handleDimensions","setValue","e","v","_value","clamp","trackPercent","valueToPercent","isVertical","handleSize","height","width","handlePosition","handlePositionRef","current","getNewValueFromEvent","event","getNewValue","getPointerPosition","handleKeyDown","newValue","tenSteps","keyStep","key","roundValueToStep","ariaValueText","rangeStyle","removeMoveEvents","removeStartEvents","removeEndEvents","appEvents","handleSlideStart","ownerDocument","ownerWindow","defaultView","window","changedTouches","preventDefault","touch","identifier","requestAnimationFrame","focus","addMoveListener","addEndListener","setPointerCapture","pointerId","releasePointerCapture","handlePointerMove","handleSlideStop","undefined","touchListener","mouseListener","addEventListener","removeEventListener","pointerListener","addStartListener","sliderElement","inputFallbackId","inputId","SliderTrackImpl","SliderTrack","style","position","SliderRangeImpl","SliderRange","SliderHandleImpl","SliderHandle","onBlur","onFocus","sliderMin","sliderMax","bottom","left","SliderMarkerImpl","SliderMarker","sliderValue","inRange","absoluteStartPosition","state","val","getDecimalPrecision","num","Math","abs","parts","toExponential","split","matissaDecimalPart","length","parseInt","decimalPart","toString","percentToValue","percent","nearest","round","Number","toFixed","i","clientX","y","clientY","track","getBoundingClientRect","diff","setDimensions","getComputedStyle","_newHeight","_newWidth","newHeight","parseFloat","newWidth"],"sources":["../../../src/Slider/Slider.tsx"],"sourcesContent":["/* eslint-disable @typescript-eslint/ban-ts-comment */\n\n/**\n * Welcome to @reach/slider!\n *\n * A UI input component where the user selects a value from within a given\n * range. A Slider has a handle that can be moved along a track to change its\n * value. When the user's mouse or focus is on the Slider's handle, the value\n * can be incremented with keyboard controls.\n *\n * Random thoughts/notes:\n * - Currently testing this against the behavior of the native input range\n * element to get our slider on par. We'll explore animated and multi-handle\n * sliders next.\n * - We may want to research some use cases for reversed sliders in RTL\n * languages if that's a thing\n *\n * @see Docs https://reach.tech/slider\n * @see Source https://github.com/reach/reach-ui/tree/main/packages/slider\n * @see WAI-ARIA https://www.w3.org/TR/wai-aria-practices-1.2/#slider\n * @see Example https://github.com/Stanko/aria-progress-range-slider\n * @see Example http://www.oaa-accessibility.org/examplep/slider1/\n */\n\nimport {\n forwardRef,\n memo,\n useRef,\n useState,\n useCallback,\n useEffect,\n useLayoutEffect,\n useId,\n} from 'react';\nimport type { ReactNode, KeyboardEvent } from 'react';\n\nimport { createContext } from '../utils/context';\nimport type * as Polymorphic from '../utils/polymorphic';\nimport { isRightClick } from '../utils/is-right-click';\nimport { getOwnerDocument } from '../utils/owner-document';\nimport { useStableLayoutCallback } from '../utils/use-stable-callback';\nimport { assignMultipleRefs, wrapEvent } from '../utils';\nimport { useControlledState } from '../hooks';\n\nconst noop = () => {\n /* noop */\n};\n\ntype SliderOrientation = 'horizontal' | 'vertical';\ntype SliderHandleAlignment = 'center' | 'contain';\n\nconst [SliderProvider, useSliderContext] =\n createContext<ISliderContext>('Slider');\n\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Slider\n *\n * @see Docs https://reach.tech/slider#slider\n */\nconst Slider = forwardRef(function Slider(\n { children, ...props },\n forwardedRef\n) {\n return (\n <SliderInput {...props} ref={forwardedRef} data-reach-slider=\"\">\n <SliderTrack>\n <SliderRange />\n <SliderHandle />\n {children}\n </SliderTrack>\n </SliderInput>\n );\n}) as Polymorphic.ForwardRefComponent<'div', SliderProps>;\n\n/**\n * @see Docs https://reach.tech/slider#slider-props\n */\ninterface SliderProps {\n /**\n * `Slider` can accept `SliderMarker` children to enhance display of specific\n * values along the track.\n *\n * @see Docs https://reach.tech/slider#slider-children\n */\n children?: ReactNode;\n /**\n * The defaultValue is used to set an initial value for an uncontrolled\n * Slider.\n *\n * @see Docs https://reach.tech/slider#slider-defaultvalue\n */\n defaultValue?: number;\n /**\n * @see Docs https://reach.tech/slider#slider-disabled\n */\n disabled?: boolean;\n /**\n * Whether or not the slider should be disabled from user interaction.\n *\n * @see Docs https://reach.tech/slider#slider-value\n */\n value?: number;\n /**\n * A function used to set a human-readable name for the slider.\n *\n * @see Docs https://reach.tech/slider#slider-getarialabel\n */\n getAriaLabel?(value: number): string;\n /**\n * A function used to set a human-readable value text based on the slider's\n * current value.\n *\n * @see Docs https://reach.tech/slider#slider-getariavaluetext\n */\n getAriaValueText?(value: number): string;\n /**\n * When set to `center`, the slider's handle will be positioned directly\n * centered over the slider's curremt value on the track. This means that when\n * the slider is at its min or max value, a visiable slider handle will extend\n * beyond the width (or height in vertical mode) of the slider track. When set\n * to `contain`, the slider handle will always be contained within the bounds\n * of the track, meaning its position will be slightly offset from the actual\n * value depending on where it sits on the track.\n *\n * @see Docs https://reach.tech/slider#slider-handlealignment\n */\n handleAlignment?: SliderHandleAlignment;\n /**\n * The maximum value of the slider. Defaults to `100`.\n *\n * @see Docs https://reach.tech/slider#slider-max\n */\n max?: number;\n /**\n * The minimum value of the slider. Defaults to `0`.\n *\n * @see Docs https://reach.tech/slider#slider-min\n */\n min?: number;\n /**\n * If the slider is used as a form input, it should accept a `name` prop to\n * identify its value in context of the form.\n *\n * @see Docs https://reach.tech/slider#slider-name\n */\n name?: string;\n /**\n * Callback that fires when the slider value changes. When the `value` prop is\n * set, the Slider state becomes controlled and `onChange` must be used to\n * update the value in response to user interaction.\n *\n * @see Docs https://reach.tech/slider#slider-onchange\n */\n onChange?(\n e: SomePointerEvent | KeyboardEvent,\n newValue: number,\n props?: {\n min?: number;\n max?: number;\n handlePosition?: string;\n }\n ): void;\n\n // We use native DOM events for the slider since they are global\n onMouseDown?(event: MouseEvent): void;\n onMouseMove?(event: MouseEvent): void;\n onMouseUp?(event: MouseEvent): void;\n onPointerDown?(event: PointerEvent): void;\n onPointerUp?(event: PointerEvent): void;\n onTouchEnd?(event: TouchEvent): void;\n onTouchMove?(event: TouchEvent): void;\n onTouchStart?(event: TouchEvent): void;\n\n /**\n * Sets the slider to horizontal or vertical mode.\n *\n * @see Docs https://reach.tech/slider#slider-orientation\n */\n orientation?: SliderOrientation;\n /**\n * The step attribute is a number that specifies the granularity that the\n * value must adhere to as it changes. Step sets minimum intervals of change,\n * creating a \"snap\" effect when the handle is moved along the track.\n *\n * @see Docs https://reach.tech/slider#slider-step\n */\n step?: number;\n}\n\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * SliderInput\n *\n * The parent component of the slider interface. This is a lower level component\n * if you need more control over styles or rendering the slider's inner\n * components.\n *\n * @see Docs https://reach.tech/slider#sliderinput\n */\nconst SliderInput = forwardRef(function SliderInput(\n {\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledBy,\n 'aria-valuetext': ariaValueTextProp,\n as: Comp = 'div',\n innerAs,\n defaultValue,\n disabled = false,\n value: controlledValue,\n getAriaLabel,\n getAriaValueText,\n handleAlignment = 'center',\n max = 100,\n min = 0,\n name,\n onChange: onChangeProp,\n onKeyDown,\n onMouseDown,\n onMouseMove,\n onMouseUp,\n onPointerDown,\n onPointerUp,\n onTouchEnd,\n onTouchMove,\n onTouchStart,\n orientation = 'horizontal',\n step = 1,\n children,\n ...rest\n },\n forwardedRef\n) {\n const touchId: TouchIdRef = useRef();\n\n const fallbackId = useId();\n const id = rest.id || fallbackId;\n\n // Track whether or not the pointer is down without updating the component\n const pointerDownRef = useRef(false);\n\n const trackRef: TrackRef = useRef(null);\n const handleRef: HandleRef = useRef(null);\n const sliderRef: SliderRef = useRef(null);\n\n const [hasFocus, setHasFocus] = useState(false);\n\n const { ref: x, ...handleDimensions } = useDimensions(handleRef);\n\n const [_value, onChange] = useControlledState(\n controlledValue,\n onChangeProp,\n defaultValue || min,\n (setValue) => (e, v) => setValue(v)\n );\n const value = clamp(_value, min, max);\n const trackPercent = valueToPercent(value, min, max);\n const isVertical = orientation === 'vertical';\n\n const handleSize = isVertical\n ? handleDimensions.height\n : handleDimensions.width;\n\n // TODO: Consider removing the `handleAlignment` prop\n // We may want to use accept a `handlePosition` prop instead and let apps\n // define their own positioning logic, similar to how we do for popovers.\n const handlePosition = `calc(${trackPercent}% - ${\n handleAlignment === 'center'\n ? `${handleSize}px / 2`\n : `${handleSize}px * ${trackPercent * 0.01}`\n })`;\n const handlePositionRef = useRef(handlePosition);\n useLayoutEffect(() => {\n handlePositionRef.current = handlePosition;\n }, [handlePosition]);\n\n const getNewValueFromEvent = useCallback(\n (event: SomePointerEvent) => {\n return getNewValue(getPointerPosition(event, touchId), trackRef.current, {\n step,\n orientation,\n min,\n max,\n });\n },\n [max, min, orientation, step]\n );\n\n // https://www.w3.org/TR/wai-aria-practices-1.2/#slider_kbd_interaction\n const handleKeyDown = useStableLayoutCallback((event: KeyboardEvent) => {\n if (disabled) {\n return;\n }\n\n let newValue: number;\n const tenSteps = (max - min) / 10;\n const keyStep = step || (max - min) / 100;\n\n switch (event.key) {\n // Decrease the value of the slider by one step.\n case 'ArrowLeft':\n case 'ArrowDown':\n newValue = value - keyStep;\n break;\n // Increase the value of the slider by one step\n case 'ArrowRight':\n case 'ArrowUp':\n newValue = value + keyStep;\n break;\n // Decrement the slider by an amount larger than the step change made by\n // `ArrowDown`.\n case 'PageDown':\n newValue = value - tenSteps;\n break;\n // Increment the slider by an amount larger than the step change made by\n // `ArrowUp`.\n case 'PageUp':\n newValue = value + tenSteps;\n break;\n // Set the slider to the first allowed value in its range.\n case 'Home':\n newValue = min;\n break;\n // Set the slider to the last allowed value in its range.\n case 'End':\n newValue = max;\n break;\n default:\n return;\n }\n\n newValue = clamp(\n step ? roundValueToStep(newValue, step, min) : newValue,\n min,\n max\n );\n onChange(event, newValue);\n });\n\n const ariaValueText = getAriaValueText\n ? getAriaValueText(value)\n : ariaValueTextProp;\n\n const rangeStyle = { [isVertical ? 'height' : 'width']: `${trackPercent}%` };\n\n // Slide events!\n // We will try to use pointer events if they are supported to leverage\n // setPointerCapture and releasePointerCapture. We'll fall back to separate\n // mouse and touch events.\n // TODO: This could be more concise\n const removeMoveEvents = useRef<() => void>(noop);\n const removeStartEvents = useRef<() => void>(noop);\n const removeEndEvents = useRef<() => void>(noop);\n\n // Store our event handlers in refs so we aren't attaching/detaching events\n // on every render if the user doesn't useCallback\n const appEvents = useRef({\n onMouseMove,\n onMouseDown,\n onMouseUp,\n onTouchStart,\n onTouchEnd,\n onTouchMove,\n onPointerDown,\n onPointerUp,\n });\n useLayoutEffect(() => {\n appEvents.current.onMouseMove = onMouseMove;\n appEvents.current.onMouseDown = onMouseDown;\n appEvents.current.onMouseUp = onMouseUp;\n appEvents.current.onTouchStart = onTouchStart;\n appEvents.current.onTouchEnd = onTouchEnd;\n appEvents.current.onTouchMove = onTouchMove;\n appEvents.current.onPointerDown = onPointerDown;\n appEvents.current.onPointerUp = onPointerUp;\n }, [\n onMouseMove,\n onMouseDown,\n onMouseUp,\n onTouchStart,\n onTouchEnd,\n onTouchMove,\n onPointerDown,\n onPointerUp,\n ]);\n\n const handleSlideStart = useStableLayoutCallback(\n (event: SomePointerEvent) => {\n if (isRightClick(event)) return;\n\n if (disabled) {\n pointerDownRef.current = false;\n return;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const ownerDocument = getOwnerDocument(sliderRef.current)!;\n const ownerWindow = ownerDocument.defaultView || window;\n pointerDownRef.current = true;\n\n if ((event as TouchEvent).changedTouches) {\n // Prevent scrolling for touch events\n event.preventDefault();\n const touch = (event as TouchEvent).changedTouches?.[0];\n if (touch != null) {\n touchId.current = touch.identifier;\n }\n }\n\n const newValue = getNewValueFromEvent(event);\n if (newValue == null) {\n return;\n }\n ownerWindow.requestAnimationFrame(() => handleRef.current?.focus());\n onChange(event, newValue);\n\n removeMoveEvents.current = addMoveListener();\n removeEndEvents.current = addEndListener();\n }\n );\n\n const setPointerCapture = useStableLayoutCallback((event: PointerEvent) => {\n if (isRightClick(event)) return;\n if (disabled) {\n pointerDownRef.current = false;\n return;\n }\n pointerDownRef.current = true;\n sliderRef.current?.setPointerCapture(event.pointerId);\n });\n\n const releasePointerCapture = useStableLayoutCallback(\n (event: PointerEvent) => {\n if (isRightClick(event)) return;\n sliderRef.current?.releasePointerCapture(event.pointerId);\n pointerDownRef.current = false;\n }\n );\n\n const handlePointerMove = useStableLayoutCallback(\n (event: SomePointerEvent) => {\n if (disabled || !pointerDownRef.current) {\n pointerDownRef.current = false;\n return;\n }\n\n const newValue = getNewValueFromEvent(event);\n if (newValue == null) {\n return;\n }\n onChange?.(event, newValue);\n }\n );\n\n const handleSlideStop = useStableLayoutCallback((event: SomePointerEvent) => {\n if (isRightClick(event)) return;\n\n pointerDownRef.current = false;\n\n const newValue = getNewValueFromEvent(event);\n if (newValue == null) {\n return;\n }\n\n touchId.current = undefined;\n\n removeMoveEvents.current();\n removeEndEvents.current();\n });\n\n const addMoveListener = useCallback(() => {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const ownerDocument = getOwnerDocument(sliderRef.current)!;\n const touchListener = wrapEvent(\n appEvents.current.onTouchMove,\n handlePointerMove\n );\n const mouseListener = wrapEvent(\n appEvents.current.onMouseMove,\n handlePointerMove\n );\n ownerDocument.addEventListener('touchmove', touchListener);\n ownerDocument.addEventListener('mousemove', mouseListener);\n return () => {\n ownerDocument.removeEventListener('touchmove', touchListener);\n ownerDocument.removeEventListener('mousemove', mouseListener);\n };\n }, [handlePointerMove]);\n\n const addEndListener = useCallback(() => {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const ownerDocument = getOwnerDocument(sliderRef.current)!;\n const ownerWindow = ownerDocument.defaultView || window;\n const pointerListener = wrapEvent(\n appEvents.current.onPointerUp,\n releasePointerCapture\n );\n const touchListener = wrapEvent(\n appEvents.current.onTouchEnd,\n handleSlideStop\n );\n const mouseListener = wrapEvent(\n appEvents.current.onMouseUp,\n handleSlideStop\n );\n if ('PointerEvent' in ownerWindow) {\n ownerDocument.addEventListener('pointerup', pointerListener);\n }\n ownerDocument.addEventListener('touchend', touchListener);\n ownerDocument.addEventListener('mouseup', mouseListener);\n return () => {\n if ('PointerEvent' in ownerWindow) {\n ownerDocument.removeEventListener('pointerup', pointerListener);\n }\n ownerDocument.removeEventListener('touchend', touchListener);\n ownerDocument.removeEventListener('mouseup', mouseListener);\n };\n }, [handleSlideStop, releasePointerCapture]);\n\n const addStartListener = useCallback(() => {\n // e.preventDefault is ignored by React's synthetic touchStart event, so\n // we attach the listener directly to the DOM node\n // https://github.com/facebook/react/issues/9809#issuecomment-413978405\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const sliderElement = sliderRef.current!;\n if (!sliderElement) {\n return noop;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const ownerDocument = getOwnerDocument(sliderElement)!;\n const ownerWindow = ownerDocument.defaultView || window;\n const touchListener = wrapEvent(\n appEvents.current.onTouchStart,\n handleSlideStart\n );\n const mouseListener = wrapEvent(\n appEvents.current.onMouseDown,\n handleSlideStart\n );\n const pointerListener = wrapEvent(\n appEvents.current.onPointerDown,\n setPointerCapture\n );\n sliderElement.addEventListener('touchstart', touchListener);\n sliderElement.addEventListener('mousedown', mouseListener);\n if ('PointerEvent' in ownerWindow) {\n sliderElement.addEventListener('pointerdown', pointerListener);\n }\n return () => {\n sliderElement.removeEventListener('touchstart', touchListener);\n sliderElement.removeEventListener('mousedown', mouseListener);\n if ('PointerEvent' in ownerWindow) {\n sliderElement.removeEventListener('pointerdown', pointerListener);\n }\n };\n }, [setPointerCapture, handleSlideStart]);\n\n useEffect(() => {\n removeStartEvents.current = addStartListener();\n\n return () => {\n removeStartEvents.current();\n removeEndEvents.current();\n removeMoveEvents.current();\n };\n }, [addStartListener]);\n\n const inputFallbackId = useId();\n const inputId = id || inputFallbackId;\n\n return (\n <SliderProvider\n ariaLabel={getAriaLabel ? getAriaLabel(value) : ariaLabel}\n ariaLabelledBy={ariaLabelledBy}\n ariaValueText={ariaValueText}\n handleDimensions={handleDimensions}\n handleKeyDown={handleKeyDown}\n handlePosition={handlePosition}\n handleRef={handleRef}\n hasFocus={hasFocus}\n onKeyDown={onKeyDown}\n setHasFocus={setHasFocus}\n sliderId={id}\n sliderMax={max}\n sliderMin={min}\n value={value}\n disabled={!!disabled}\n isVertical={isVertical}\n orientation={orientation}\n trackPercent={trackPercent}\n trackRef={trackRef}\n rangeStyle={rangeStyle}\n updateValue={onChange}\n >\n <Comp\n {...rest}\n // @ts-ignore\n as={innerAs}\n ref={assignMultipleRefs(sliderRef, forwardedRef)}\n data-reach-slider-input=\"\"\n data-disabled={disabled ? '' : undefined}\n data-orientation={orientation}\n tabIndex={-1}\n >\n {typeof children === 'function'\n ? children({\n hasFocus,\n id,\n max,\n min,\n value,\n ariaValueText,\n })\n : children}\n {name && (\n // If the slider is used in a form we'll need an input field to\n // capture the value. We'll assume this when the component is given a\n // form field name (A `name` prop doesn't really make sense in any\n // other context).\n <input type=\"hidden\" value={value} name={name} id={inputId} />\n )}\n </Comp>\n </SliderProvider>\n );\n}) as Polymorphic.ForwardRefComponent<'div', SliderInputProps>;\n\n/**\n * @see Docs https://reach.tech/slider#sliderinput-props\n */\ntype SliderInputProps = Omit<SliderProps, 'children'> & {\n /**\n * Slider expects `<SliderTrack>` as its child; The track will accept all\n * additional slider sub-components as children. It can also accept a\n * function/render prop as its child to expose some of its internal state\n * variables.\n *\n * @see Docs https://reach.tech/slider#sliderinput-children\n */\n children: ReactNode | SliderChildrenRender;\n};\n\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * SliderTrack\n *\n * @see Docs https://reach.tech/slider#slidertrack\n */\nconst SliderTrackImpl = forwardRef(function SliderTrack(\n { as: Comp = 'div', innerAs, children, style = {}, ...props },\n forwardedRef\n) {\n const { disabled, orientation, trackRef } = useSliderContext('SliderTrack');\n\n return (\n <Comp\n ref={assignMultipleRefs(trackRef, forwardedRef)}\n // @ts-ignore\n as={innerAs}\n style={{ ...style, position: 'relative' }}\n {...props}\n data-reach-slider-track=\"\"\n data-disabled={disabled ? '' : undefined}\n data-orientation={orientation}\n >\n {children}\n </Comp>\n );\n}) as Polymorphic.ForwardRefComponent<'div', SliderTrackProps>;\n\nconst SliderTrack = memo(SliderTrackImpl) as Polymorphic.MemoComponent<\n 'div',\n SliderTrackProps\n>;\n\n/**\n * @see Docs https://reach.tech/slider#slidertrack-props\n */\ninterface SliderTrackProps {\n /**\n * `SliderTrack` expects `<SliderHandle>`, at minimum, for the Slider to\n * function. All other Slider subcomponents should be passed as children\n * inside the `SliderTrack`.\n *\n * @see Docs https://reach.tech/slider#slidertrack-children\n */\n children: ReactNode;\n}\n\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * SliderRange\n *\n * The (typically) highlighted portion of the track that represents the space\n * between the slider's `min` value and its current value.\n *\n * @see Docs https://reach.tech/slider#sliderrange\n */\nconst SliderRangeImpl = forwardRef(function SliderRange(\n { as: Comp = 'div', innerAs, children, style = {}, ...props },\n forwardedRef\n) {\n const { disabled, orientation, rangeStyle } = useSliderContext('SliderRange');\n return (\n <Comp\n ref={forwardedRef}\n // @ts-ignore\n as={innerAs}\n style={{ position: 'absolute', ...rangeStyle, ...style }}\n {...props}\n data-reach-slider-range=\"\"\n data-disabled={disabled ? '' : undefined}\n data-orientation={orientation}\n />\n );\n}) as Polymorphic.ForwardRefComponent<'div', SliderRangeProps>;\n\nconst SliderRange = memo(SliderRangeImpl) as Polymorphic.MemoComponent<\n 'div',\n SliderRangeProps\n>;\n\n/**\n * `SliderRange` accepts any props that a HTML div component accepts.\n * `SliderRange` will not accept or render any children.\n *\n * @see Docs https://reach.tech/slider#sliderrange-props\n */\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\ninterface SliderRangeProps {}\n\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * SliderHandle\n *\n * The handle that the user drags along the track to set the slider value.\n *\n * @see Docs https://reach.tech/slider#sliderhandle\n */\nconst SliderHandleImpl = forwardRef(function SliderHandle(\n {\n // min,\n // max,\n as: Comp = 'div',\n innerAs,\n onBlur,\n onFocus,\n style = {},\n onKeyDown,\n ...props\n },\n forwardedRef\n) {\n const {\n ariaLabel,\n ariaLabelledBy,\n ariaValueText,\n disabled,\n handlePosition,\n handleRef,\n isVertical,\n handleKeyDown,\n orientation,\n setHasFocus,\n sliderMin,\n sliderMax,\n value,\n } = useSliderContext('SliderHandle');\n\n return (\n <Comp\n // @ts-ignore\n as={innerAs}\n aria-disabled={disabled || undefined}\n // If the slider has a visible label, it is referenced by\n // `aria-labelledby` on the slider element. Otherwise, the slider\n // element has a label provided by `aria-label`.\n // https://www.w3.org/TR/wai-aria-practices-1.2/#slider_roles_states_props\n aria-label={ariaLabel}\n aria-labelledby={ariaLabel ? undefined : ariaLabelledBy}\n // If the slider is vertically oriented, it has `aria-orientation` set\n // to vertical. The default value of `aria-orientation` for a slider is\n // horizontal.\n // https://www.w3.org/TR/wai-aria-practices-1.2/#slider_roles_states_props\n aria-orientation={orientation}\n // The slider element has the `aria-valuemax` property set to a decimal\n // value representing the maximum allowed value of the slider.\n // https://www.w3.org/TR/wai-aria-practices-1.2/#slider_roles_states_props\n aria-valuemax={sliderMax}\n // The slider element has the `aria-valuemin` property set to a decimal\n // value representing the minimum allowed value of the slider.\n // https://www.w3.org/TR/wai-aria-practices-1.2/#slider_roles_states_props\n aria-valuemin={sliderMin}\n // The slider element has the `aria-valuenow` property set to a decimal\n // value representing the current value of the slider.\n // https://www.w3.org/TR/wai-aria-practices-1.2/#slider_roles_states_props\n aria-valuenow={value}\n // If the value of `aria-valuenow` is not user-friendly, e.g., the day\n // of the week is represented by a number, the `aria-valuetext` property\n // is set to a string that makes the slider value understandable, e.g.,\n // \"Monday\".\n // https://www.w3.org/TR/wai-aria-practices-1.2/#slider_roles_states_props\n aria-valuetext={ariaValueText}\n // The element serving as the focusable slider control has role\n // `slider`.\n // https://www.w3.org/TR/wai-aria-practices-1.2/#slider_roles_states_props\n role=\"slider\"\n tabIndex={disabled ? -1 : 0}\n {...props}\n data-reach-slider-handle=\"\"\n ref={assignMultipleRefs(handleRef, forwardedRef)}\n onBlur={wrapEvent(onBlur, () => {\n setHasFocus(false);\n })}\n onFocus={wrapEvent(onFocus, () => {\n setHasFocus(true);\n })}\n onKeyDown={wrapEvent(onKeyDown, handleKeyDown)}\n style={{\n position: 'absolute',\n ...(isVertical ? { bottom: handlePosition } : { left: handlePosition }),\n ...style,\n }}\n />\n );\n}) as Polymorphic.ForwardRefComponent<'div', SliderHandleProps>;\n\nconst SliderHandle = memo(SliderHandleImpl) as Polymorphic.MemoComponent<\n 'div',\n SliderHandleProps\n>;\n\n/**\n * `SliderRange` accepts any props that a HTML div component accepts.\n *\n * @see Docs https://reach.tech/slider#sliderhandle-props\n */\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\ninterface SliderHandleProps {}\n\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * SliderMarker\n *\n * A fixed value marker. These can be used to illustrate a range of steps or\n * highlight important points along the slider track.\n *\n * @see Docs https://reach.tech/slider#slidermarker\n */\nconst SliderMarkerImpl = forwardRef(function SliderMarker(\n { as: Comp = 'div', innerAs, children, style = {}, value, ...props },\n forwardedRef\n) {\n const {\n disabled,\n isVertical,\n orientation,\n sliderMin,\n sliderMax,\n value: sliderValue,\n } = useSliderContext('SliderMarker');\n\n const inRange = value >= sliderMin && value <= sliderMax;\n const absoluteStartPosition = `${valueToPercent(\n value,\n sliderMin,\n sliderMax\n )}%`;\n\n const state =\n value < sliderValue\n ? 'under-value'\n : value === sliderValue\n ? 'at-value'\n : 'over-value';\n\n return inRange ? (\n <Comp\n ref={forwardedRef}\n // @ts-ignore\n as={innerAs}\n style={{\n position: 'absolute',\n ...(isVertical\n ? { bottom: absoluteStartPosition }\n : { left: absoluteStartPosition }),\n ...style,\n }}\n {...props}\n data-reach-slider-marker=\"\"\n data-disabled={disabled ? '' : undefined}\n data-orientation={orientation}\n data-state={state}\n data-value={value}\n >\n {children}\n </Comp>\n ) : null;\n}) as Polymorphic.ForwardRefComponent<'div', SliderMarkerProps>;\n\nconst SliderMarker = memo(SliderMarkerImpl) as Polymorphic.MemoComponent<\n 'div',\n SliderMarkerProps\n>;\n\n/**\n * @see Docs https://reach.tech/slider#slidermarker-props\n */\ninterface SliderMarkerProps {\n /**\n * The value to denote where the marker should appear along the track.\n *\n * @see Docs https://reach.tech/slider#slidermarker-value\n */\n value: number;\n}\n\n////////////////////////////////////////////////////////////////////////////////\n\nfunction clamp(val: number, min: number, max: number) {\n return val > max ? max : val < min ? min : val;\n}\n\n/**\n * This handles the case when num is very small (0.00000001), js will turn\n * this into 1e-8. When num is bigger than 1 or less than -1 it won't get\n * converted to this notation so it's fine.\n *\n * @param num\n * @see https://github.com/mui-org/material-ui/blob/master/packages/material-ui/src/Slider/Slider.js#L69\n */\nfunction getDecimalPrecision(num: number) {\n if (Math.abs(num) < 1) {\n const parts = num.toExponential().split('e-');\n const matissaDecimalPart = parts[0].split('.')[1];\n return (\n (matissaDecimalPart ? matissaDecimalPart.length : 0) +\n parseInt(parts[1], 10)\n );\n }\n\n const decimalPart = num.toString().split('.')[1];\n return decimalPart ? decimalPart.length : 0;\n}\n\nfunction percentToValue(percent: number, min: number, max: number) {\n return (max - min) * percent + min;\n}\n\nfunction roundValueToStep(value: number, step: number, min: number) {\n const nearest = Math.round((value - min) / step) * step + min;\n return Number(nearest.toFixed(getDecimalPrecision(step)));\n}\n\nfunction getPointerPosition(event: SomePointerEvent, touchId: TouchIdRef) {\n if (touchId.current !== undefined && (event as TouchEvent).changedTouches) {\n for (let i = 0; i < (event as TouchEvent).changedTouches.length; i += 1) {\n const touch = (event as TouchEvent).changedTouches[i];\n if (touch.identifier === touchId.current) {\n return {\n x: touch.clientX,\n y: touch.clientY,\n };\n }\n }\n\n return false;\n }\n\n return {\n x: (event as PointerEvent | MouseEvent).clientX,\n y: (event as PointerEvent | MouseEvent).clientY,\n };\n}\n\nfunction getNewValue(\n handlePosition:\n | {\n x: number;\n y: number;\n }\n | false,\n track: HTMLElement | null,\n props: {\n orientation: SliderOrientation;\n min: number;\n max: number;\n step?: number;\n }\n) {\n const { orientation, min, max, step } = props;\n\n if (!track || !handlePosition) {\n return null;\n }\n\n const { left, width, bottom, height } = track.getBoundingClientRect();\n const isVertical = orientation === 'vertical';\n const diff = isVertical ? bottom - handlePosition.y : handlePosition.x - left;\n const percent = diff / (isVertical ? height : width);\n const newValue = percentToValue(percent, min, max);\n\n return clamp(\n step ? roundValueToStep(newValue, step, min) : newValue,\n min,\n max\n );\n}\n\nfunction useDimensions(ref: React.RefObject<HTMLElement | null>) {\n const [{ width, height }, setDimensions] = useState({\n width: 0,\n height: 0,\n });\n // Many existing `useDimensions` type hooks will use `getBoundingClientRect`\n // getBoundingClientRect does not work here when borders are applied.\n // getComputedStyle is not as performant so we may want to create a utility to\n // check for any conflicts with box sizing first and only use\n // `getComputedStyle` if neccessary.\n /* const { width, height } = ref.current\n ? ref.current.getBoundingClientRect()\n : 0; */\n\n useLayoutEffect(() => {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const ownerDocument = getOwnerDocument(ref.current)!;\n const ownerWindow = ownerDocument.defaultView || window;\n if (ref.current) {\n const { height: _newHeight, width: _newWidth } =\n ownerWindow.getComputedStyle(ref.current);\n const newHeight = parseFloat(_newHeight);\n const newWidth = parseFloat(_newWidth);\n\n if (newHeight !== height || newWidth !== width) {\n setDimensions({ height: newHeight, width: newWidth });\n }\n }\n }, [ref, width, height]);\n return { ref, width, height };\n}\n\nfunction valueToPercent(value: number, min: number, max: number) {\n return ((value - min) * 100) / (max - min);\n}\n\n////////////////////////////////////////////////////////////////////////////////\n// Types\n\ntype TrackRef = React.RefObject<HTMLDivElement | null>;\ntype HandleRef = React.RefObject<HTMLDivElement | null>;\ntype SliderRef = React.RefObject<HTMLDivElement | null>;\ntype TouchIdRef = React.MutableRefObject<number | undefined>;\n\ntype SomePointerEvent = TouchEvent | MouseEvent;\n\ninterface ISliderContext {\n ariaLabel: string | undefined;\n ariaLabelledBy: string | undefined;\n ariaValueText: string | undefined;\n handleDimensions: {\n width: number;\n height: number;\n };\n handlePosition: string;\n handleRef: HandleRef;\n hasFocus: boolean;\n onKeyDown?: (event: React.KeyboardEvent<HTMLDivElement>) => void;\n handleKeyDown: (event: React.KeyboardEvent<HTMLDivElement>) => void;\n setHasFocus: React.Dispatch<React.SetStateAction<boolean>>;\n sliderId: string | undefined;\n sliderMax: number;\n sliderMin: number;\n value: number;\n disabled: boolean;\n isVertical: boolean;\n orientation: SliderOrientation;\n trackPercent: number;\n trackRef: TrackRef;\n rangeStyle: React.CSSProperties;\n updateValue: (e: SomePointerEvent | KeyboardEvent, newValue: any) => void;\n}\n\ntype SliderChildrenRender = (props: {\n ariaValueText?: string | undefined;\n hasFocus?: boolean;\n id?: string | undefined;\n sliderId?: string | undefined;\n max?: number;\n min?: number;\n value?: number;\n}) => JSX.Element;\n\n////////////////////////////////////////////////////////////////////////////////\n// Exports\n\nexport default Slider;\nexport type {\n SliderHandleProps,\n SliderInputProps,\n SliderMarkerProps,\n SliderProps,\n SliderRangeProps,\n SliderTrackProps,\n SliderHandleAlignment,\n SliderOrientation,\n};\nexport {\n Slider,\n SliderHandle,\n SliderInput,\n SliderMarker,\n SliderTrack,\n SliderRange,\n};\n"],"mappings":"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"}
@@ -1 +1 @@
1
- export * from './Slider';
1
+ export * from './Slider';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../../src/Slider/index.ts"],"sourcesContent":["export * from './Slider';\r\n"],"mappings":"AAAA,cAAc,UAAd"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../../src/Slider/index.ts"],"sourcesContent":["export * from './Slider';\n"],"mappings":"AAAA,cAAc,UAAd"}
@@ -1,12 +1,12 @@
1
- import type { HTMLAttributes, ElementType, ReactNode, MouseEvent, KeyboardEvent } from 'react';
2
- export interface SpinnerProps extends Omit<HTMLAttributes<HTMLDivElement>, 'onChange'> {
3
- as?: ElementType<any>;
4
- innerAs?: ElementType<any>;
5
- children?: ReactNode;
6
- value?: number;
7
- minValue?: number;
8
- maxValue?: number;
9
- stepSize?: number;
10
- onChange?: (e: MouseEvent<HTMLButtonElement> | KeyboardEvent<HTMLDivElement>, value: number) => void;
11
- }
12
- export declare const Spinner: import("react").ForwardRefExoticComponent<SpinnerProps & import("react").RefAttributes<HTMLDivElement>>;
1
+ import type { HTMLAttributes, ElementType, ReactNode, MouseEvent, KeyboardEvent } from 'react';
2
+ export interface SpinnerProps extends Omit<HTMLAttributes<HTMLDivElement>, 'onChange'> {
3
+ as?: ElementType<any>;
4
+ innerAs?: ElementType<any>;
5
+ children?: ReactNode;
6
+ value?: number;
7
+ minValue?: number;
8
+ maxValue?: number;
9
+ stepSize?: number;
10
+ onChange?: (e: MouseEvent<HTMLButtonElement> | KeyboardEvent<HTMLDivElement>, value: number) => void;
11
+ }
12
+ export declare const Spinner: import("react").ForwardRefExoticComponent<SpinnerProps & import("react").RefAttributes<HTMLDivElement>>;