@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
@@ -1,10 +1,10 @@
1
- import type { HTMLAttributes, ReactNode, Ref, RefAttributes, RefObject } from 'react';
2
- export declare type ChildProps = HTMLAttributes<HTMLElement> & RefAttributes<HTMLElement>;
3
- export interface InjectedTooltipProps extends HTMLAttributes<HTMLElement> {
4
- anchorEl: RefObject<HTMLElement>;
5
- visible: boolean;
6
- children?: ReactNode;
7
- }
8
- export declare function useTooltip(childProps: ChildProps, childRef: Ref<HTMLElement> | undefined, tooltipProps: HTMLAttributes<HTMLElement> & {
9
- label?: ReactNode;
10
- }): [ChildProps, InjectedTooltipProps];
1
+ import type { HTMLAttributes, ReactNode, Ref, RefAttributes, RefObject } from 'react';
2
+ export declare type ChildProps = HTMLAttributes<HTMLElement> & RefAttributes<HTMLElement>;
3
+ export interface InjectedTooltipProps extends HTMLAttributes<HTMLElement> {
4
+ anchorEl: RefObject<HTMLElement>;
5
+ visible: boolean;
6
+ children?: ReactNode;
7
+ }
8
+ export declare function useTooltip(childProps: ChildProps, childRef: Ref<HTMLElement> | undefined, tooltipProps: HTMLAttributes<HTMLElement> & {
9
+ label?: ReactNode;
10
+ }): [ChildProps, InjectedTooltipProps];
@@ -1 +1 @@
1
- {"version":3,"file":"useTooltip.js","names":["useRef","useEffect","useState","useId","assignMultipleRefs","wrapEvent","send","state","subscription","Blur","Focus","LeavingVisible","MouseDown","MouseEnter","MouseLeave","MouseMove","SelectWithKeyboard","Visible","useTooltip","childProps","childRef","tooltipProps","onMouseEnter","onMouseLeave","onMouseMove","onMouseDown","onKeyDown","onFocus","onBlur","anchorEl","visible","setVisible","id","subscribe","current","handleMouseEnter","handleMouseMove","handleMouseLeave","handleMouseDown","handleFocus","handleBlur","undefined","handleKeyDown","event","key","children","label","tooltipOnMouseEnter","tooltipOnMouseLeave","tooltipOnMouseMove","otherTooltipProps","tooltipId","ref","role"],"sources":["../../../src/Tooltip/useTooltip.ts"],"sourcesContent":["import type {\r\n HTMLAttributes,\r\n KeyboardEvent,\r\n ReactNode,\r\n Ref,\r\n RefAttributes,\r\n RefObject,\r\n} from 'react';\r\nimport { useRef, useEffect, useState, useId } from 'react';\r\n\r\nimport { assignMultipleRefs } from '../utils/assign-ref';\r\nimport { wrapEvent } from '../utils/wrap-event';\r\nimport {\r\n send,\r\n state,\r\n subscription,\r\n Blur,\r\n Focus,\r\n LeavingVisible,\r\n MouseDown,\r\n MouseEnter,\r\n MouseLeave,\r\n MouseMove,\r\n SelectWithKeyboard,\r\n Visible,\r\n} from './stateMachine';\r\n\r\nexport type ChildProps = HTMLAttributes<HTMLElement> &\r\n RefAttributes<HTMLElement>;\r\n\r\nexport interface InjectedTooltipProps extends HTMLAttributes<HTMLElement> {\r\n anchorEl: RefObject<HTMLElement>;\r\n visible: boolean;\r\n children?: ReactNode;\r\n}\r\n\r\nexport function useTooltip(\r\n childProps: ChildProps,\r\n childRef: Ref<HTMLElement> | undefined,\r\n tooltipProps: HTMLAttributes<HTMLElement> & { label?: ReactNode }\r\n): [ChildProps, InjectedTooltipProps] {\r\n const {\r\n onMouseEnter,\r\n onMouseLeave,\r\n onMouseMove,\r\n onMouseDown,\r\n onKeyDown,\r\n onFocus,\r\n onBlur,\r\n } = childProps;\r\n const anchorEl = useRef<HTMLElement>(null);\r\n const [visible, setVisible] = useState(false);\r\n const id = useId();\r\n\r\n useEffect(() => {\r\n subscription.subscribe(() => {\r\n setVisible(\r\n (state.current.state === Visible ||\r\n state.current.state === LeavingVisible) &&\r\n state.current.id === id\r\n );\r\n });\r\n }, [id]);\r\n\r\n function handleMouseEnter() {\r\n send(MouseEnter, { id });\r\n }\r\n\r\n function handleMouseMove() {\r\n send(MouseMove, { id });\r\n }\r\n\r\n function handleMouseLeave() {\r\n send(MouseLeave);\r\n }\r\n\r\n function handleMouseDown() {\r\n // Allow quick click from one tool to another\r\n if (state.current.id === id) {\r\n send(MouseDown);\r\n }\r\n }\r\n\r\n function handleFocus() {\r\n send(Focus, { id });\r\n }\r\n\r\n function handleBlur() {\r\n // Allow quick click from one tool to another\r\n if (state.current.id === id) {\r\n send(Blur, undefined);\r\n }\r\n }\r\n\r\n function handleKeyDown(event: KeyboardEvent<HTMLElement>) {\r\n if (event.key === 'Enter' || event.key === ' ') {\r\n send(SelectWithKeyboard);\r\n }\r\n }\r\n\r\n const {\r\n label: children,\r\n onMouseEnter: tooltipOnMouseEnter,\r\n onMouseLeave: tooltipOnMouseLeave,\r\n onMouseMove: tooltipOnMouseMove,\r\n ...otherTooltipProps\r\n } = tooltipProps;\r\n\r\n const tooltipId = `tooltip-${id}`;\r\n return [\r\n {\r\n ...childProps,\r\n ref: assignMultipleRefs(childRef, anchorEl),\r\n ...(visible &&\r\n !childProps['aria-label'] && { 'aria-describedby': tooltipId }),\r\n onMouseEnter: wrapEvent(onMouseEnter, handleMouseEnter),\r\n onMouseLeave: wrapEvent(onMouseLeave, handleMouseLeave),\r\n onMouseMove: wrapEvent(onMouseMove, handleMouseMove),\r\n onMouseDown: wrapEvent(onMouseDown, handleMouseDown),\r\n onFocus: wrapEvent(onFocus, handleFocus),\r\n onBlur: wrapEvent(onBlur, handleBlur),\r\n onKeyDown: wrapEvent(onKeyDown, handleKeyDown),\r\n },\r\n {\r\n id: tooltipId,\r\n anchorEl,\r\n visible,\r\n children,\r\n onMouseEnter: wrapEvent(tooltipOnMouseEnter, handleMouseEnter),\r\n onMouseLeave: wrapEvent(tooltipOnMouseLeave, handleMouseLeave),\r\n onMouseMove: wrapEvent(tooltipOnMouseMove, handleMouseMove),\r\n role: 'tooltip',\r\n ...otherTooltipProps,\r\n },\r\n ];\r\n}\r\n"],"mappings":"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"}
1
+ {"version":3,"file":"useTooltip.js","names":["useRef","useEffect","useState","useId","assignMultipleRefs","wrapEvent","send","state","subscription","Blur","Focus","LeavingVisible","MouseDown","MouseEnter","MouseLeave","MouseMove","SelectWithKeyboard","Visible","useTooltip","childProps","childRef","tooltipProps","onMouseEnter","onMouseLeave","onMouseMove","onMouseDown","onKeyDown","onFocus","onBlur","anchorEl","visible","setVisible","id","subscribe","current","handleMouseEnter","handleMouseMove","handleMouseLeave","handleMouseDown","handleFocus","handleBlur","undefined","handleKeyDown","event","key","children","label","tooltipOnMouseEnter","tooltipOnMouseLeave","tooltipOnMouseMove","otherTooltipProps","tooltipId","ref","role"],"sources":["../../../src/Tooltip/useTooltip.ts"],"sourcesContent":["import type {\n HTMLAttributes,\n KeyboardEvent,\n ReactNode,\n Ref,\n RefAttributes,\n RefObject,\n} from 'react';\nimport { useRef, useEffect, useState, useId } from 'react';\n\nimport { assignMultipleRefs } from '../utils/assign-ref';\nimport { wrapEvent } from '../utils/wrap-event';\nimport {\n send,\n state,\n subscription,\n Blur,\n Focus,\n LeavingVisible,\n MouseDown,\n MouseEnter,\n MouseLeave,\n MouseMove,\n SelectWithKeyboard,\n Visible,\n} from './stateMachine';\n\nexport type ChildProps = HTMLAttributes<HTMLElement> &\n RefAttributes<HTMLElement>;\n\nexport interface InjectedTooltipProps extends HTMLAttributes<HTMLElement> {\n anchorEl: RefObject<HTMLElement>;\n visible: boolean;\n children?: ReactNode;\n}\n\nexport function useTooltip(\n childProps: ChildProps,\n childRef: Ref<HTMLElement> | undefined,\n tooltipProps: HTMLAttributes<HTMLElement> & { label?: ReactNode }\n): [ChildProps, InjectedTooltipProps] {\n const {\n onMouseEnter,\n onMouseLeave,\n onMouseMove,\n onMouseDown,\n onKeyDown,\n onFocus,\n onBlur,\n } = childProps;\n const anchorEl = useRef<HTMLElement>(null);\n const [visible, setVisible] = useState(false);\n const id = useId();\n\n useEffect(() => {\n subscription.subscribe(() => {\n setVisible(\n (state.current.state === Visible ||\n state.current.state === LeavingVisible) &&\n state.current.id === id\n );\n });\n }, [id]);\n\n function handleMouseEnter() {\n send(MouseEnter, { id });\n }\n\n function handleMouseMove() {\n send(MouseMove, { id });\n }\n\n function handleMouseLeave() {\n send(MouseLeave);\n }\n\n function handleMouseDown() {\n // Allow quick click from one tool to another\n if (state.current.id === id) {\n send(MouseDown);\n }\n }\n\n function handleFocus() {\n send(Focus, { id });\n }\n\n function handleBlur() {\n // Allow quick click from one tool to another\n if (state.current.id === id) {\n send(Blur, undefined);\n }\n }\n\n function handleKeyDown(event: KeyboardEvent<HTMLElement>) {\n if (event.key === 'Enter' || event.key === ' ') {\n send(SelectWithKeyboard);\n }\n }\n\n const {\n label: children,\n onMouseEnter: tooltipOnMouseEnter,\n onMouseLeave: tooltipOnMouseLeave,\n onMouseMove: tooltipOnMouseMove,\n ...otherTooltipProps\n } = tooltipProps;\n\n const tooltipId = `tooltip-${id}`;\n return [\n {\n ...childProps,\n ref: assignMultipleRefs(childRef, anchorEl),\n ...(visible &&\n !childProps['aria-label'] && { 'aria-describedby': tooltipId }),\n onMouseEnter: wrapEvent(onMouseEnter, handleMouseEnter),\n onMouseLeave: wrapEvent(onMouseLeave, handleMouseLeave),\n onMouseMove: wrapEvent(onMouseMove, handleMouseMove),\n onMouseDown: wrapEvent(onMouseDown, handleMouseDown),\n onFocus: wrapEvent(onFocus, handleFocus),\n onBlur: wrapEvent(onBlur, handleBlur),\n onKeyDown: wrapEvent(onKeyDown, handleKeyDown),\n },\n {\n id: tooltipId,\n anchorEl,\n visible,\n children,\n onMouseEnter: wrapEvent(tooltipOnMouseEnter, handleMouseEnter),\n onMouseLeave: wrapEvent(tooltipOnMouseLeave, handleMouseLeave),\n onMouseMove: wrapEvent(tooltipOnMouseMove, handleMouseMove),\n role: 'tooltip',\n ...otherTooltipProps,\n },\n ];\n}\n"],"mappings":"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"}
@@ -1,13 +1,13 @@
1
- export * from './useAutoFocus';
2
- export * from './useControlledState';
3
- export * from './useChildrenCounter';
4
- export * from './useFocusReturn';
5
- export * from './useFocusState';
6
- export * from './useOnClickOutside';
7
- export * from './useOnKeyDown';
8
- export * from './useReducerMachine';
9
- export * from './useRemoveBodyScroll';
10
- export * from './useThrottle';
11
- export * from './useMeasure';
12
- export * from './useGestureHandlers';
13
- export * from './useScope';
1
+ export * from './useAutoFocus';
2
+ export * from './useControlledState';
3
+ export * from './useChildrenCounter';
4
+ export * from './useFocusReturn';
5
+ export * from './useFocusState';
6
+ export * from './useOnClickOutside';
7
+ export * from './useOnKeyDown';
8
+ export * from './useReducerMachine';
9
+ export * from './useRemoveBodyScroll';
10
+ export * from './useThrottle';
11
+ export * from './useMeasure';
12
+ export * from './useGestureHandlers';
13
+ export * from './useScope';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../../src/hooks/index.ts"],"sourcesContent":["export * from './useAutoFocus';\r\nexport * from './useControlledState';\r\nexport * from './useChildrenCounter';\r\nexport * from './useFocusReturn';\r\nexport * from './useFocusState';\r\nexport * from './useOnClickOutside';\r\nexport * from './useOnKeyDown';\r\nexport * from './useReducerMachine';\r\nexport * from './useRemoveBodyScroll';\r\nexport * from './useThrottle';\r\nexport * from './useMeasure';\r\nexport * from './useGestureHandlers';\r\nexport * from './useScope';\r\n"],"mappings":"AAAA,cAAc,gBAAd;AACA,cAAc,sBAAd;AACA,cAAc,sBAAd;AACA,cAAc,kBAAd;AACA,cAAc,iBAAd;AACA,cAAc,qBAAd;AACA,cAAc,gBAAd;AACA,cAAc,qBAAd;AACA,cAAc,uBAAd;AACA,cAAc,eAAd;AACA,cAAc,cAAd;AACA,cAAc,sBAAd;AACA,cAAc,YAAd"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../../src/hooks/index.ts"],"sourcesContent":["export * from './useAutoFocus';\nexport * from './useControlledState';\nexport * from './useChildrenCounter';\nexport * from './useFocusReturn';\nexport * from './useFocusState';\nexport * from './useOnClickOutside';\nexport * from './useOnKeyDown';\nexport * from './useReducerMachine';\nexport * from './useRemoveBodyScroll';\nexport * from './useThrottle';\nexport * from './useMeasure';\nexport * from './useGestureHandlers';\nexport * from './useScope';\n"],"mappings":"AAAA,cAAc,gBAAd;AACA,cAAc,sBAAd;AACA,cAAc,sBAAd;AACA,cAAc,kBAAd;AACA,cAAc,iBAAd;AACA,cAAc,qBAAd;AACA,cAAc,gBAAd;AACA,cAAc,qBAAd;AACA,cAAc,uBAAd;AACA,cAAc,eAAd;AACA,cAAc,cAAd;AACA,cAAc,sBAAd;AACA,cAAc,YAAd"}
@@ -1,2 +1,2 @@
1
- import type { MutableRefObject } from 'react';
2
- export declare function useAutoFocus(open: boolean, elementRef: MutableRefObject<HTMLElement | null>): void;
1
+ import type { MutableRefObject } from 'react';
2
+ export declare function useAutoFocus(open: boolean, elementRef: MutableRefObject<HTMLElement | null>): void;
@@ -1 +1 @@
1
- {"version":3,"file":"useAutoFocus.js","names":["useEffect","focusOnChildNode","useAutoFocus","open","elementRef","current","contains","document","activeElement"],"sources":["../../../src/hooks/useAutoFocus.ts"],"sourcesContent":["import type { MutableRefObject } from 'react';\r\nimport { useEffect } from 'react';\r\n\r\nimport { focusOnChildNode } from '../FocusLock/tabUtils';\r\n\r\nexport function useAutoFocus(\r\n open: boolean,\r\n elementRef: MutableRefObject<HTMLElement | null>\r\n) {\r\n useEffect(() => {\r\n if (open) {\r\n // We will only autoFocus on the first child if the currently active element isn't already trapped inside the modal\r\n if (\r\n elementRef.current &&\r\n !elementRef.current.contains(document.activeElement)\r\n ) {\r\n focusOnChildNode(elementRef.current, 0);\r\n }\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [open]);\r\n}\r\n"],"mappings":"AACA,SAASA,SAAT,QAA0B,OAA1B;AAEA,SAASC,gBAAT,QAAiC,uBAAjC;AAEA,OAAO,SAASC,YAAT,CACLC,IADK,EAELC,UAFK,EAGL;EACAJ,SAAS,CAAC,YAAM;IACd,IAAIG,IAAJ,EAAU;MACR;MACA,IACEC,UAAU,CAACC,OAAX,IACA,CAACD,UAAU,CAACC,OAAX,CAAmBC,QAAnB,CAA4BC,QAAQ,CAACC,aAArC,CAFH,EAGE;QACAP,gBAAgB,CAACG,UAAU,CAACC,OAAZ,EAAqB,CAArB,CAAhB;MACD;IACF,CATa,CAUd;;EACD,CAXQ,EAWN,CAACF,IAAD,CAXM,CAAT;AAYD"}
1
+ {"version":3,"file":"useAutoFocus.js","names":["useEffect","focusOnChildNode","useAutoFocus","open","elementRef","current","contains","document","activeElement"],"sources":["../../../src/hooks/useAutoFocus.ts"],"sourcesContent":["import type { MutableRefObject } from 'react';\nimport { useEffect } from 'react';\n\nimport { focusOnChildNode } from '../FocusLock/tabUtils';\n\nexport function useAutoFocus(\n open: boolean,\n elementRef: MutableRefObject<HTMLElement | null>\n) {\n useEffect(() => {\n if (open) {\n // We will only autoFocus on the first child if the currently active element isn't already trapped inside the modal\n if (\n elementRef.current &&\n !elementRef.current.contains(document.activeElement)\n ) {\n focusOnChildNode(elementRef.current, 0);\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [open]);\n}\n"],"mappings":"AACA,SAASA,SAAT,QAA0B,OAA1B;AAEA,SAASC,gBAAT,QAAiC,uBAAjC;AAEA,OAAO,SAASC,YAAT,CACLC,IADK,EAELC,UAFK,EAGL;EACAJ,SAAS,CAAC,YAAM;IACd,IAAIG,IAAJ,EAAU;MACR;MACA,IACEC,UAAU,CAACC,OAAX,IACA,CAACD,UAAU,CAACC,OAAX,CAAmBC,QAAnB,CAA4BC,QAAQ,CAACC,aAArC,CAFH,EAGE;QACAP,gBAAgB,CAACG,UAAU,CAACC,OAAZ,EAAqB,CAArB,CAAhB;MACD;IACF,CATa,CAUd;;EACD,CAXQ,EAWN,CAACF,IAAD,CAXM,CAAT;AAYD"}
@@ -1,7 +1,7 @@
1
- import type { MutableRefObject } from 'react';
2
- export declare function useChildrenCounterParent<T>(itemsRef: MutableRefObject<T[] & {
3
- isNewRender?: boolean;
4
- }>): void;
5
- export declare function useChildrenCounterChild<T>(itemsRef: MutableRefObject<T[] & {
6
- isNewRender?: boolean;
7
- }> | undefined, itemIndexRef: MutableRefObject<number>, obj: T | ((idx: number) => T), disabled?: boolean): void;
1
+ import type { MutableRefObject } from 'react';
2
+ export declare function useChildrenCounterParent<T>(itemsRef: MutableRefObject<T[] & {
3
+ isNewRender?: boolean;
4
+ }>): void;
5
+ export declare function useChildrenCounterChild<T>(itemsRef: MutableRefObject<T[] & {
6
+ isNewRender?: boolean;
7
+ }> | undefined, itemIndexRef: MutableRefObject<number>, obj: T | ((idx: number) => T), disabled?: boolean): void;
@@ -1 +1 @@
1
- {"version":3,"file":"useChildrenCounter.js","names":["useEffect","useChildrenCounterParent","itemsRef","current","isNewRender","useChildrenCounterChild","itemIndexRef","obj","disabled","length","Function","push"],"sources":["../../../src/hooks/useChildrenCounter.ts"],"sourcesContent":["import type { MutableRefObject } from 'react';\r\nimport { useEffect } from 'react';\r\n\r\nexport function useChildrenCounterParent<T>(\r\n itemsRef: MutableRefObject<T[] & { isNewRender?: boolean }>\r\n) {\r\n // Reset the options ref every render so that they are always\r\n // accurate and ready for keyboard navigation handlers. Using layout\r\n // effect to schedule this effect before the ComboboxOptions push into\r\n // the array\r\n itemsRef.current = [];\r\n itemsRef.current.isNewRender = true;\r\n\r\n useEffect(() => {\r\n // Rendering is finished. Meaning any children can now rerender,\r\n // and they should not push any new items to our array, because\r\n // it is not a new render\r\n itemsRef.current.isNewRender = false;\r\n });\r\n\r\n useEffect(() => {\r\n // When we are unmounting, it means there are no children anymore.\r\n // Clear out our items array\r\n return () => {\r\n itemsRef.current = [];\r\n };\r\n }, [itemsRef]);\r\n}\r\n\r\nexport function useChildrenCounterChild<T>(\r\n itemsRef: MutableRefObject<T[] & { isNewRender?: boolean }> | undefined,\r\n itemIndexRef: MutableRefObject<number>,\r\n obj: T | ((idx: number) => T),\r\n disabled = false\r\n) {\r\n if (itemsRef && itemsRef.current.isNewRender) {\r\n if (disabled) {\r\n itemIndexRef.current = -1;\r\n return;\r\n }\r\n\r\n // push this option to the optionsRef array\r\n itemIndexRef.current = itemsRef.current.length;\r\n\r\n if (obj instanceof Function) {\r\n itemsRef.current.push(obj(itemIndexRef.current));\r\n } else {\r\n itemsRef.current.push(obj);\r\n }\r\n }\r\n}\r\n"],"mappings":"AACA,SAASA,SAAT,QAA0B,OAA1B;AAEA,OAAO,SAASC,wBAAT,CACLC,QADK,EAEL;EACA;EACA;EACA;EACA;EACAA,QAAQ,CAACC,OAAT,GAAmB,EAAnB;EACAD,QAAQ,CAACC,OAAT,CAAiBC,WAAjB,GAA+B,IAA/B;EAEAJ,SAAS,CAAC,YAAM;IACd;IACA;IACA;IACAE,QAAQ,CAACC,OAAT,CAAiBC,WAAjB,GAA+B,KAA/B;EACD,CALQ,CAAT;EAOAJ,SAAS,CAAC,YAAM;IACd;IACA;IACA,OAAO,YAAM;MACXE,QAAQ,CAACC,OAAT,GAAmB,EAAnB;IACD,CAFD;EAGD,CANQ,EAMN,CAACD,QAAD,CANM,CAAT;AAOD;AAED,OAAO,SAASG,uBAAT,CACLH,QADK,EAELI,YAFK,EAGLC,GAHK,EAKL;EAAA,IADAC,QACA,uEADW,KACX;;EACA,IAAIN,QAAQ,IAAIA,QAAQ,CAACC,OAAT,CAAiBC,WAAjC,EAA8C;IAC5C,IAAII,QAAJ,EAAc;MACZF,YAAY,CAACH,OAAb,GAAuB,CAAC,CAAxB;MACA;IACD,CAJ2C,CAM5C;;;IACAG,YAAY,CAACH,OAAb,GAAuBD,QAAQ,CAACC,OAAT,CAAiBM,MAAxC;;IAEA,IAAIF,GAAG,YAAYG,QAAnB,EAA6B;MAC3BR,QAAQ,CAACC,OAAT,CAAiBQ,IAAjB,CAAsBJ,GAAG,CAACD,YAAY,CAACH,OAAd,CAAzB;IACD,CAFD,MAEO;MACLD,QAAQ,CAACC,OAAT,CAAiBQ,IAAjB,CAAsBJ,GAAtB;IACD;EACF;AACF"}
1
+ {"version":3,"file":"useChildrenCounter.js","names":["useEffect","useChildrenCounterParent","itemsRef","current","isNewRender","useChildrenCounterChild","itemIndexRef","obj","disabled","length","Function","push"],"sources":["../../../src/hooks/useChildrenCounter.ts"],"sourcesContent":["import type { MutableRefObject } from 'react';\nimport { useEffect } from 'react';\n\nexport function useChildrenCounterParent<T>(\n itemsRef: MutableRefObject<T[] & { isNewRender?: boolean }>\n) {\n // Reset the options ref every render so that they are always\n // accurate and ready for keyboard navigation handlers. Using layout\n // effect to schedule this effect before the ComboboxOptions push into\n // the array\n itemsRef.current = [];\n itemsRef.current.isNewRender = true;\n\n useEffect(() => {\n // Rendering is finished. Meaning any children can now rerender,\n // and they should not push any new items to our array, because\n // it is not a new render\n itemsRef.current.isNewRender = false;\n });\n\n useEffect(() => {\n // When we are unmounting, it means there are no children anymore.\n // Clear out our items array\n return () => {\n itemsRef.current = [];\n };\n }, [itemsRef]);\n}\n\nexport function useChildrenCounterChild<T>(\n itemsRef: MutableRefObject<T[] & { isNewRender?: boolean }> | undefined,\n itemIndexRef: MutableRefObject<number>,\n obj: T | ((idx: number) => T),\n disabled = false\n) {\n if (itemsRef && itemsRef.current.isNewRender) {\n if (disabled) {\n itemIndexRef.current = -1;\n return;\n }\n\n // push this option to the optionsRef array\n itemIndexRef.current = itemsRef.current.length;\n\n if (obj instanceof Function) {\n itemsRef.current.push(obj(itemIndexRef.current));\n } else {\n itemsRef.current.push(obj);\n }\n }\n}\n"],"mappings":"AACA,SAASA,SAAT,QAA0B,OAA1B;AAEA,OAAO,SAASC,wBAAT,CACLC,QADK,EAEL;EACA;EACA;EACA;EACA;EACAA,QAAQ,CAACC,OAAT,GAAmB,EAAnB;EACAD,QAAQ,CAACC,OAAT,CAAiBC,WAAjB,GAA+B,IAA/B;EAEAJ,SAAS,CAAC,YAAM;IACd;IACA;IACA;IACAE,QAAQ,CAACC,OAAT,CAAiBC,WAAjB,GAA+B,KAA/B;EACD,CALQ,CAAT;EAOAJ,SAAS,CAAC,YAAM;IACd;IACA;IACA,OAAO,YAAM;MACXE,QAAQ,CAACC,OAAT,GAAmB,EAAnB;IACD,CAFD;EAGD,CANQ,EAMN,CAACD,QAAD,CANM,CAAT;AAOD;AAED,OAAO,SAASG,uBAAT,CACLH,QADK,EAELI,YAFK,EAGLC,GAHK,EAKL;EAAA,IADAC,QACA,uEADW,KACX;;EACA,IAAIN,QAAQ,IAAIA,QAAQ,CAACC,OAAT,CAAiBC,WAAjC,EAA8C;IAC5C,IAAII,QAAJ,EAAc;MACZF,YAAY,CAACH,OAAb,GAAuB,CAAC,CAAxB;MACA;IACD,CAJ2C,CAM5C;;;IACAG,YAAY,CAACH,OAAb,GAAuBD,QAAQ,CAACC,OAAT,CAAiBM,MAAxC;;IAEA,IAAIF,GAAG,YAAYG,QAAnB,EAA6B;MAC3BR,QAAQ,CAACC,OAAT,CAAiBQ,IAAjB,CAAsBJ,GAAG,CAACD,YAAY,CAACH,OAAd,CAAzB;IACD,CAFD,MAEO;MACLD,QAAQ,CAACC,OAAT,CAAiBQ,IAAjB,CAAsBJ,GAAtB;IACD;EACF;AACF"}
@@ -1,3 +1,3 @@
1
- import type { Dispatch, SetStateAction, SyntheticEvent } from 'react';
2
- import type { CustomEventHandler } from '../utils';
3
- export declare function useControlledState<V, E extends SyntheticEvent<any> | Event, H extends unknown[]>(valueProp: V | undefined, onChangeProp: CustomEventHandler<E, H> | undefined, defaultValue: V | (() => V), defaultOnChange: (setValue: Dispatch<SetStateAction<V>>) => CustomEventHandler<E, H>): [V, CustomEventHandler<E, H>];
1
+ import type { Dispatch, SetStateAction, SyntheticEvent } from 'react';
2
+ import type { CustomEventHandler } from '../utils';
3
+ export declare function useControlledState<V, E extends SyntheticEvent<any> | Event, H extends unknown[]>(valueProp: V | undefined, onChangeProp: CustomEventHandler<E, H> | undefined, defaultValue: V | (() => V), defaultOnChange: (setValue: Dispatch<SetStateAction<V>>) => CustomEventHandler<E, H>): [V, CustomEventHandler<E, H>];
@@ -1,2 +1,2 @@
1
- import type { MutableRefObject } from 'react';
2
- export declare function useFocusReturn(open: boolean, rootEl: MutableRefObject<HTMLElement | null>): void;
1
+ import type { MutableRefObject } from 'react';
2
+ export declare function useFocusReturn(open: boolean, rootEl: MutableRefObject<HTMLElement | null>): void;
@@ -1 +1 @@
1
- {"version":3,"file":"useFocusReturn.js","names":["useEffect","useRef","useFocusReturn","open","rootEl","previousFocusRef","document","activeElement","HTMLElement","current","contains","rootElement","previousElement","focus","preventScroll"],"sources":["../../../src/hooks/useFocusReturn.ts"],"sourcesContent":["import type { MutableRefObject } from 'react';\r\nimport { useEffect, useRef } from 'react';\r\n\r\nexport function useFocusReturn(\r\n open: boolean,\r\n rootEl: MutableRefObject<HTMLElement | null>\r\n) {\r\n const previousFocusRef = useRef<HTMLElement | null>(\r\n (() => {\r\n if (\r\n open &&\r\n typeof document !== 'undefined' &&\r\n document.activeElement instanceof HTMLElement\r\n ) {\r\n return document.activeElement;\r\n }\r\n return null;\r\n })()\r\n );\r\n\r\n useEffect(() => {\r\n if (open) {\r\n // once opened, keep track of the element that triggered\r\n // the Modal opening\r\n if (\r\n !previousFocusRef.current &&\r\n document.activeElement instanceof HTMLElement &&\r\n !rootEl.current?.contains(document.activeElement)\r\n ) {\r\n previousFocusRef.current = document.activeElement;\r\n }\r\n\r\n const rootElement = rootEl.current;\r\n const previousElement = previousFocusRef.current;\r\n return () => {\r\n // on unmount, return focus to that element\r\n if (previousElement && !rootElement?.contains(document.activeElement)) {\r\n previousElement.focus({ preventScroll: true });\r\n }\r\n };\r\n }\r\n }, [open, rootEl]);\r\n}\r\n"],"mappings":"AACA,SAASA,SAAT,EAAoBC,MAApB,QAAkC,OAAlC;AAEA,OAAO,SAASC,cAAT,CACLC,IADK,EAELC,MAFK,EAGL;EACA,IAAMC,gBAAgB,GAAGJ,MAAM,CAC5B,YAAM;IACL,IACEE,IAAI,IACJ,OAAOG,QAAP,KAAoB,WADpB,IAEAA,QAAQ,CAACC,aAAT,YAAkCC,WAHpC,EAIE;MACA,OAAOF,QAAQ,CAACC,aAAhB;IACD;;IACD,OAAO,IAAP;EACD,CATD,EAD6B,CAA/B;EAaAP,SAAS,CAAC,YAAM;IACd,IAAIG,IAAJ,EAAU;MAAA;;MACR;MACA;MACA,IACE,CAACE,gBAAgB,CAACI,OAAlB,IACAH,QAAQ,CAACC,aAAT,YAAkCC,WADlC,IAEA,qBAACJ,MAAM,CAACK,OAAR,4CAAC,gBAAgBC,QAAhB,CAAyBJ,QAAQ,CAACC,aAAlC,CAAD,CAHF,EAIE;QACAF,gBAAgB,CAACI,OAAjB,GAA2BH,QAAQ,CAACC,aAApC;MACD;;MAED,IAAMI,WAAW,GAAGP,MAAM,CAACK,OAA3B;MACA,IAAMG,eAAe,GAAGP,gBAAgB,CAACI,OAAzC;MACA,OAAO,YAAM;QACX;QACA,IAAIG,eAAe,IAAI,EAACD,WAAD,aAACA,WAAD,eAACA,WAAW,CAAED,QAAb,CAAsBJ,QAAQ,CAACC,aAA/B,CAAD,CAAvB,EAAuE;UACrEK,eAAe,CAACC,KAAhB,CAAsB;YAAEC,aAAa,EAAE;UAAjB,CAAtB;QACD;MACF,CALD;IAMD;EACF,CArBQ,EAqBN,CAACX,IAAD,EAAOC,MAAP,CArBM,CAAT;AAsBD"}
1
+ {"version":3,"file":"useFocusReturn.js","names":["useEffect","useRef","useFocusReturn","open","rootEl","previousFocusRef","document","activeElement","HTMLElement","current","contains","rootElement","previousElement","focus","preventScroll"],"sources":["../../../src/hooks/useFocusReturn.ts"],"sourcesContent":["import type { MutableRefObject } from 'react';\nimport { useEffect, useRef } from 'react';\n\nexport function useFocusReturn(\n open: boolean,\n rootEl: MutableRefObject<HTMLElement | null>\n) {\n const previousFocusRef = useRef<HTMLElement | null>(\n (() => {\n if (\n open &&\n typeof document !== 'undefined' &&\n document.activeElement instanceof HTMLElement\n ) {\n return document.activeElement;\n }\n return null;\n })()\n );\n\n useEffect(() => {\n if (open) {\n // once opened, keep track of the element that triggered\n // the Modal opening\n if (\n !previousFocusRef.current &&\n document.activeElement instanceof HTMLElement &&\n !rootEl.current?.contains(document.activeElement)\n ) {\n previousFocusRef.current = document.activeElement;\n }\n\n const rootElement = rootEl.current;\n const previousElement = previousFocusRef.current;\n return () => {\n // on unmount, return focus to that element\n if (previousElement && !rootElement?.contains(document.activeElement)) {\n previousElement.focus({ preventScroll: true });\n }\n };\n }\n }, [open, rootEl]);\n}\n"],"mappings":"AACA,SAASA,SAAT,EAAoBC,MAApB,QAAkC,OAAlC;AAEA,OAAO,SAASC,cAAT,CACLC,IADK,EAELC,MAFK,EAGL;EACA,IAAMC,gBAAgB,GAAGJ,MAAM,CAC5B,YAAM;IACL,IACEE,IAAI,IACJ,OAAOG,QAAP,KAAoB,WADpB,IAEAA,QAAQ,CAACC,aAAT,YAAkCC,WAHpC,EAIE;MACA,OAAOF,QAAQ,CAACC,aAAhB;IACD;;IACD,OAAO,IAAP;EACD,CATD,EAD6B,CAA/B;EAaAP,SAAS,CAAC,YAAM;IACd,IAAIG,IAAJ,EAAU;MAAA;;MACR;MACA;MACA,IACE,CAACE,gBAAgB,CAACI,OAAlB,IACAH,QAAQ,CAACC,aAAT,YAAkCC,WADlC,IAEA,qBAACJ,MAAM,CAACK,OAAR,4CAAC,gBAAgBC,QAAhB,CAAyBJ,QAAQ,CAACC,aAAlC,CAAD,CAHF,EAIE;QACAF,gBAAgB,CAACI,OAAjB,GAA2BH,QAAQ,CAACC,aAApC;MACD;;MAED,IAAMI,WAAW,GAAGP,MAAM,CAACK,OAA3B;MACA,IAAMG,eAAe,GAAGP,gBAAgB,CAACI,OAAzC;MACA,OAAO,YAAM;QACX;QACA,IAAIG,eAAe,IAAI,EAACD,WAAD,aAACA,WAAD,eAACA,WAAW,CAAED,QAAb,CAAsBJ,QAAQ,CAACC,aAA/B,CAAD,CAAvB,EAAuE;UACrEK,eAAe,CAACC,KAAhB,CAAsB;YAAEC,aAAa,EAAE;UAAjB,CAAtB;QACD;MACF,CALD;IAMD;EACF,CArBQ,EAqBN,CAACX,IAAD,EAAOC,MAAP,CArBM,CAAT;AAsBD"}
@@ -1,11 +1,11 @@
1
- import type { FocusEventHandler } from 'react';
2
- export declare function useFocusState<T>(props?: {
3
- onFocus?: FocusEventHandler<T>;
4
- onBlur?: FocusEventHandler<T>;
5
- }): {
6
- bind: {
7
- onFocus: import("../utils/wrap-event").CustomEventHandler<import("react").FocusEvent<T, Element>, []>;
8
- onBlur: import("../utils/wrap-event").CustomEventHandler<import("react").FocusEvent<T, Element>, []>;
9
- };
10
- hasFocus: boolean;
11
- };
1
+ import type { FocusEventHandler } from 'react';
2
+ export declare function useFocusState<T>(props?: {
3
+ onFocus?: FocusEventHandler<T>;
4
+ onBlur?: FocusEventHandler<T>;
5
+ }): {
6
+ bind: {
7
+ onFocus: import("../utils/wrap-event").CustomEventHandler<import("react").FocusEvent<T, Element>, []>;
8
+ onBlur: import("../utils/wrap-event").CustomEventHandler<import("react").FocusEvent<T, Element>, []>;
9
+ };
10
+ hasFocus: boolean;
11
+ };
@@ -1 +1 @@
1
- {"version":3,"file":"useFocusState.js","names":["useState","wrapEvent","useFocusState","props","onFocus","onBlur","hasFocus","setHasFocus","handleFocus","handleBlur","bind"],"sources":["../../../src/hooks/useFocusState.ts"],"sourcesContent":["import type { FocusEventHandler } from 'react';\r\nimport { useState } from 'react';\r\n\r\nimport { wrapEvent } from '../utils/wrap-event';\r\n\r\nexport function useFocusState<T>(\r\n props: {\r\n onFocus?: FocusEventHandler<T>;\r\n onBlur?: FocusEventHandler<T>;\r\n } = {}\r\n) {\r\n const { onFocus, onBlur } = props;\r\n const [hasFocus, setHasFocus] = useState(false);\r\n\r\n const handleFocus = () => {\r\n setHasFocus(true);\r\n };\r\n\r\n const handleBlur = () => {\r\n setHasFocus(false);\r\n };\r\n\r\n return {\r\n bind: {\r\n onFocus: wrapEvent(onFocus, handleFocus),\r\n onBlur: wrapEvent(onBlur, handleBlur),\r\n },\r\n hasFocus,\r\n };\r\n}\r\n"],"mappings":";AACA,SAASA,QAAT,QAAyB,OAAzB;AAEA,SAASC,SAAT,QAA0B,qBAA1B;AAEA,OAAO,SAASC,aAAT,GAKL;EAAA,IAJAC,KAIA,uEADI,EACJ;EACA,IAAQC,OAAR,GAA4BD,KAA5B,CAAQC,OAAR;EAAA,IAAiBC,MAAjB,GAA4BF,KAA5B,CAAiBE,MAAjB;;EACA,gBAAgCL,QAAQ,CAAC,KAAD,CAAxC;EAAA;EAAA,IAAOM,QAAP;EAAA,IAAiBC,WAAjB;;EAEA,IAAMC,WAAW,GAAG,SAAdA,WAAc,GAAM;IACxBD,WAAW,CAAC,IAAD,CAAX;EACD,CAFD;;EAIA,IAAME,UAAU,GAAG,SAAbA,UAAa,GAAM;IACvBF,WAAW,CAAC,KAAD,CAAX;EACD,CAFD;;EAIA,OAAO;IACLG,IAAI,EAAE;MACJN,OAAO,EAAEH,SAAS,CAACG,OAAD,EAAUI,WAAV,CADd;MAEJH,MAAM,EAAEJ,SAAS,CAACI,MAAD,EAASI,UAAT;IAFb,CADD;IAKLH,QAAQ,EAARA;EALK,CAAP;AAOD"}
1
+ {"version":3,"file":"useFocusState.js","names":["useState","wrapEvent","useFocusState","props","onFocus","onBlur","hasFocus","setHasFocus","handleFocus","handleBlur","bind"],"sources":["../../../src/hooks/useFocusState.ts"],"sourcesContent":["import type { FocusEventHandler } from 'react';\nimport { useState } from 'react';\n\nimport { wrapEvent } from '../utils/wrap-event';\n\nexport function useFocusState<T>(\n props: {\n onFocus?: FocusEventHandler<T>;\n onBlur?: FocusEventHandler<T>;\n } = {}\n) {\n const { onFocus, onBlur } = props;\n const [hasFocus, setHasFocus] = useState(false);\n\n const handleFocus = () => {\n setHasFocus(true);\n };\n\n const handleBlur = () => {\n setHasFocus(false);\n };\n\n return {\n bind: {\n onFocus: wrapEvent(onFocus, handleFocus),\n onBlur: wrapEvent(onBlur, handleBlur),\n },\n hasFocus,\n };\n}\n"],"mappings":";AACA,SAASA,QAAT,QAAyB,OAAzB;AAEA,SAASC,SAAT,QAA0B,qBAA1B;AAEA,OAAO,SAASC,aAAT,GAKL;EAAA,IAJAC,KAIA,uEADI,EACJ;EACA,IAAQC,OAAR,GAA4BD,KAA5B,CAAQC,OAAR;EAAA,IAAiBC,MAAjB,GAA4BF,KAA5B,CAAiBE,MAAjB;;EACA,gBAAgCL,QAAQ,CAAC,KAAD,CAAxC;EAAA;EAAA,IAAOM,QAAP;EAAA,IAAiBC,WAAjB;;EAEA,IAAMC,WAAW,GAAG,SAAdA,WAAc,GAAM;IACxBD,WAAW,CAAC,IAAD,CAAX;EACD,CAFD;;EAIA,IAAME,UAAU,GAAG,SAAbA,UAAa,GAAM;IACvBF,WAAW,CAAC,KAAD,CAAX;EACD,CAFD;;EAIA,OAAO;IACLG,IAAI,EAAE;MACJN,OAAO,EAAEH,SAAS,CAACG,OAAD,EAAUI,WAAV,CADd;MAEJH,MAAM,EAAEJ,SAAS,CAACI,MAAD,EAASI,UAAT;IAFb,CADD;IAKLH,QAAQ,EAARA;EALK,CAAP;AAOD"}
@@ -1,52 +1,52 @@
1
- import type { MutableRefObject, MouseEvent as ReactMouseEvent, TouchEvent as ReactTouchEvent } from 'react';
2
- export interface GestureHandlersState {
3
- target: null | EventTarget;
4
- x: number;
5
- xDelta: number;
6
- xDeltaPercent: number;
7
- xInitial: number;
8
- xPrev: number;
9
- xVelocity: number;
10
- y: number;
11
- yDelta: number;
12
- yDeltaPercent: number;
13
- yInitial: number;
14
- yPrev: number;
15
- yVelocity: number;
16
- startTime: number;
17
- down: boolean;
18
- scrollLocked: boolean;
19
- }
20
- declare type SetStateFunc<S> = (state: (prevState: Readonly<S>) => S, callback?: () => void) => void;
21
- export interface GestureHandlersReturn {
22
- onMouseDown: (e: ReactMouseEvent<HTMLElement>) => void;
23
- onTouchStart: (e: ReactTouchEvent<HTMLElement>) => void;
24
- }
25
- export interface GestureHandlerOptions {
26
- ensureTargetIsContainer?: boolean;
27
- minTouchDelta?: number;
28
- }
29
- export declare const initialGestureHandlersState: GestureHandlersState;
30
- export declare function gestureHandlers(set: SetStateFunc<GestureHandlersState>, containerRef?: MutableRefObject<HTMLElement | null>, options?: GestureHandlerOptions): GestureHandlersReturn;
31
- export declare const useGestureHandlers: (containerRef: MutableRefObject<HTMLElement | null> | undefined, onGesture: (e: GestureHandlersState) => void, options?: GestureHandlerOptions) => {
32
- state: {
33
- target: null | EventTarget;
34
- x: number;
35
- xDelta: number;
36
- xDeltaPercent: number;
37
- xInitial: number;
38
- xPrev: number;
39
- xVelocity: number;
40
- y: number;
41
- yDelta: number;
42
- yDeltaPercent: number;
43
- yInitial: number;
44
- yPrev: number;
45
- yVelocity: number;
46
- startTime: number;
47
- down: boolean;
48
- scrollLocked: boolean;
49
- };
50
- handlers: GestureHandlersReturn;
51
- };
52
- export {};
1
+ import type { MutableRefObject, MouseEvent as ReactMouseEvent, TouchEvent as ReactTouchEvent } from 'react';
2
+ export interface GestureHandlersState {
3
+ target: null | EventTarget;
4
+ x: number;
5
+ xDelta: number;
6
+ xDeltaPercent: number;
7
+ xInitial: number;
8
+ xPrev: number;
9
+ xVelocity: number;
10
+ y: number;
11
+ yDelta: number;
12
+ yDeltaPercent: number;
13
+ yInitial: number;
14
+ yPrev: number;
15
+ yVelocity: number;
16
+ startTime: number;
17
+ down: boolean;
18
+ scrollLocked: boolean;
19
+ }
20
+ declare type SetStateFunc<S> = (state: (prevState: Readonly<S>) => S, callback?: () => void) => void;
21
+ export interface GestureHandlersReturn {
22
+ onMouseDown: (e: ReactMouseEvent<HTMLElement>) => void;
23
+ onTouchStart: (e: ReactTouchEvent<HTMLElement>) => void;
24
+ }
25
+ export interface GestureHandlerOptions {
26
+ ensureTargetIsContainer?: boolean;
27
+ minTouchDelta?: number;
28
+ }
29
+ export declare const initialGestureHandlersState: GestureHandlersState;
30
+ export declare function gestureHandlers(set: SetStateFunc<GestureHandlersState>, containerRef?: MutableRefObject<HTMLElement | null>, options?: GestureHandlerOptions): GestureHandlersReturn;
31
+ export declare const useGestureHandlers: (containerRef: MutableRefObject<HTMLElement | null> | undefined, onGesture: (e: GestureHandlersState) => void, options?: GestureHandlerOptions) => {
32
+ state: {
33
+ target: null | EventTarget;
34
+ x: number;
35
+ xDelta: number;
36
+ xDeltaPercent: number;
37
+ xInitial: number;
38
+ xPrev: number;
39
+ xVelocity: number;
40
+ y: number;
41
+ yDelta: number;
42
+ yDeltaPercent: number;
43
+ yInitial: number;
44
+ yPrev: number;
45
+ yVelocity: number;
46
+ startTime: number;
47
+ down: boolean;
48
+ scrollLocked: boolean;
49
+ };
50
+ handlers: GestureHandlersReturn;
51
+ };
52
+ export {};
@@ -1 +1 @@
1
- {"version":3,"file":"useGestureHandlers.js","names":["useRef","getOwnerDocument","initialGestureHandlersState","target","x","xDelta","xDeltaPercent","xInitial","xPrev","xVelocity","y","yDelta","yDeltaPercent","yInitial","yPrev","yVelocity","startTime","down","scrollLocked","FRAMERATE_CONST","VELOCITY_DEPR_FACTOR","gestureHandlers","set","containerRef","options","ensureTargetIsContainer","minTouchDelta","handleUp","state","deltaTime","Date","now","calcVelocity","newState","handleDown","e","pageX","pageY","deltaSpace","prevVelocity","speed","depr","Math","min","handleMove","cancelable","preventDefault","getDeltaSum","currentPos","initialPos","prevPos","abs","current","width","offsetWidth","NaN","height","offsetHeight","handleTouchMove","touches","item","handleTouchStart","length","ownerDocument","currentTarget","ownerWindow","defaultView","window","addEventListener","passive","handleTouchEnd","removeEventListener","handleMouseDown","button","handleMouseUp","onMouseDown","onTouchStart","useGestureHandlers","onGesture","cb","handlers"],"sources":["../../../src/hooks/useGestureHandlers.ts"],"sourcesContent":["import type {\r\n MutableRefObject,\r\n MouseEvent as ReactMouseEvent,\r\n TouchEvent as ReactTouchEvent,\r\n} from 'react';\r\nimport { useRef } from 'react';\r\n\r\nimport { getOwnerDocument } from '../utils';\r\n\r\nexport interface GestureHandlersState {\r\n target: null | EventTarget;\r\n x: number;\r\n xDelta: number;\r\n xDeltaPercent: number;\r\n xInitial: number;\r\n xPrev: number;\r\n xVelocity: number;\r\n y: number;\r\n yDelta: number;\r\n yDeltaPercent: number;\r\n yInitial: number;\r\n yPrev: number;\r\n yVelocity: number;\r\n startTime: number;\r\n down: boolean;\r\n scrollLocked: boolean;\r\n}\r\n\r\ntype SetStateFunc<S> = (\r\n state: (prevState: Readonly<S>) => S,\r\n callback?: () => void\r\n) => void;\r\n\r\nexport interface GestureHandlersReturn {\r\n onMouseDown: (e: ReactMouseEvent<HTMLElement>) => void;\r\n onTouchStart: (e: ReactTouchEvent<HTMLElement>) => void;\r\n}\r\n\r\nexport interface GestureHandlerOptions {\r\n ensureTargetIsContainer?: boolean;\r\n minTouchDelta?: number;\r\n}\r\n\r\nexport const initialGestureHandlersState: GestureHandlersState = {\r\n target: null,\r\n x: 0,\r\n xDelta: 0,\r\n xDeltaPercent: 0,\r\n xInitial: 0,\r\n xPrev: 0,\r\n xVelocity: 0,\r\n y: 0,\r\n yDelta: 0,\r\n yDeltaPercent: 0,\r\n yInitial: 0,\r\n yPrev: 0,\r\n yVelocity: 0,\r\n startTime: 0,\r\n down: false,\r\n scrollLocked: false,\r\n};\r\n\r\nconst FRAMERATE_CONST = 1000 / 60; // 60 fps\r\nconst VELOCITY_DEPR_FACTOR = FRAMERATE_CONST * 2;\r\n\r\nexport function gestureHandlers(\r\n set: SetStateFunc<GestureHandlersState>,\r\n containerRef?: MutableRefObject<HTMLElement | null>,\r\n options: GestureHandlerOptions = {}\r\n): GestureHandlersReturn {\r\n const { ensureTargetIsContainer = false, minTouchDelta = 0 } = options;\r\n\r\n // Common handlers\r\n const handleUp = () => {\r\n set((state: GestureHandlersState) => {\r\n const deltaTime = Date.now() - state.startTime;\r\n const xDelta = state.x - state.xInitial;\r\n const yDelta = state.y - state.yInitial;\r\n const xVelocity = calcVelocity(xDelta, deltaTime, state.xVelocity);\r\n const yVelocity = calcVelocity(yDelta, deltaTime, state.yVelocity);\r\n const newState: GestureHandlersState = {\r\n ...state,\r\n xVelocity,\r\n yVelocity,\r\n target: null,\r\n down: false,\r\n };\r\n\r\n return newState;\r\n });\r\n };\r\n\r\n const handleDown = (e: MouseEvent) => {\r\n const { target, pageX, pageY } = e;\r\n\r\n set((state: GestureHandlersState) => {\r\n const newState = {\r\n ...state,\r\n target,\r\n x: pageX,\r\n xDelta: 0,\r\n xDeltaPercent: 0,\r\n xVelocity: 0,\r\n xInitial: pageX,\r\n xPrev: pageX,\r\n y: pageY,\r\n yDelta: 0,\r\n yDeltaPercent: 0,\r\n yVelocity: 0,\r\n yInitial: pageY,\r\n yPrev: pageY,\r\n startTime: Date.now(),\r\n down: true,\r\n scrollLocked: false,\r\n };\r\n\r\n return newState;\r\n });\r\n };\r\n\r\n function calcVelocity(\r\n deltaSpace: number,\r\n deltaTime: number,\r\n prevVelocity: number\r\n ) {\r\n if (deltaTime < 1) {\r\n deltaTime = 1;\r\n }\r\n const speed = deltaSpace / deltaTime;\r\n const depr = 0.5 + Math.min(deltaTime / VELOCITY_DEPR_FACTOR, 0.5);\r\n return speed * depr + prevVelocity * (1 - depr);\r\n }\r\n\r\n function handleMove(e: MouseEvent) {\r\n const { pageX, pageY } = e;\r\n if (e.cancelable) {\r\n // prevent drag & drop behaviour from browser\r\n e.preventDefault && e.preventDefault();\r\n }\r\n\r\n set((state: GestureHandlersState) => {\r\n function getDeltaSum(\r\n currentPos: number,\r\n initialPos: number,\r\n prevPos: number\r\n ): number {\r\n if (\r\n state.scrollLocked ||\r\n Math.abs(currentPos - initialPos) >= minTouchDelta\r\n ) {\r\n state.scrollLocked = true;\r\n return currentPos - prevPos;\r\n }\r\n return 0;\r\n }\r\n\r\n const target =\r\n (containerRef && containerRef.current) || (e as any).target;\r\n\r\n const deltaTime = Date.now() - state.startTime;\r\n\r\n const width = target ? target.offsetWidth : NaN;\r\n const xDelta = state.xDelta + getDeltaSum(pageX, state.xInitial, state.x);\r\n const xDeltaPercent = (xDelta * 100) / width;\r\n const xVelocity = calcVelocity(xDelta, deltaTime, state.xVelocity);\r\n\r\n const height = target ? target.offsetHeight : NaN;\r\n const yDelta = state.yDelta + getDeltaSum(pageY, state.yInitial, state.y);\r\n const yDeltaPercent = (yDelta * 100) / height;\r\n const yVelocity = calcVelocity(yDelta, deltaTime, state.yVelocity);\r\n\r\n const newState = {\r\n ...state,\r\n xDelta,\r\n xDeltaPercent,\r\n x: pageX,\r\n xPrev: state.x,\r\n xVelocity,\r\n yDelta,\r\n yDeltaPercent,\r\n y: pageY,\r\n yPrev: state.y,\r\n yVelocity,\r\n };\r\n\r\n return newState;\r\n });\r\n }\r\n\r\n // Touch handlers\r\n\r\n /* eslint-disable @typescript-eslint/no-use-before-define */\r\n function handleTouchMove(e: TouchEvent) {\r\n if (e.cancelable) {\r\n // prevent drag & drop behaviour from browser\r\n e.preventDefault();\r\n }\r\n handleMove(e.touches.item(0) as any);\r\n }\r\n\r\n function handleTouchStart(e: ReactTouchEvent<HTMLElement>) {\r\n // making sure we're not dragging the element when more than one finger press the screen\r\n const { touches } = e;\r\n if (touches.length > 1) {\r\n return;\r\n }\r\n\r\n if (\r\n ensureTargetIsContainer &&\r\n containerRef &&\r\n e.target !== containerRef.current\r\n ) {\r\n return;\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\r\n const ownerDocument = getOwnerDocument(e.currentTarget)!;\r\n const ownerWindow = ownerDocument.defaultView || window;\r\n ownerWindow.addEventListener('touchmove', handleTouchMove, {\r\n passive: false,\r\n });\r\n ownerWindow.addEventListener('touchend', handleTouchEnd);\r\n ownerWindow.addEventListener('touchcancel', handleTouchEnd);\r\n handleDown(e.touches.item(0) as any);\r\n }\r\n\r\n function handleTouchEnd(this: Window) {\r\n this.removeEventListener('touchmove', handleTouchMove);\r\n this.removeEventListener('touchend', handleTouchEnd);\r\n this.removeEventListener('touchcancel', handleTouchEnd);\r\n handleUp();\r\n }\r\n\r\n // Mouse handlers\r\n function handleMouseDown(e: ReactMouseEvent<HTMLElement>) {\r\n if (\r\n ensureTargetIsContainer &&\r\n containerRef &&\r\n e.target !== containerRef.current\r\n ) {\r\n return;\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\r\n const ownerDocument = getOwnerDocument(e.currentTarget)!;\r\n const ownerWindow = ownerDocument.defaultView || window;\r\n if (e.button === 0) {\r\n ownerWindow.addEventListener('mousemove', handleMove);\r\n ownerWindow.addEventListener('mouseup', handleMouseUp);\r\n handleDown(e as any);\r\n }\r\n }\r\n\r\n function handleMouseUp(this: Window) {\r\n this.removeEventListener('mousemove', handleMove);\r\n this.removeEventListener('mouseup', handleMouseUp);\r\n handleUp();\r\n }\r\n /* eslint-enable @typescript-eslint/no-use-before-define */\r\n\r\n return {\r\n onMouseDown: handleMouseDown,\r\n onTouchStart: handleTouchStart,\r\n };\r\n}\r\n\r\nexport const useGestureHandlers = (\r\n containerRef: MutableRefObject<HTMLElement | null> | undefined,\r\n onGesture: (e: GestureHandlersState) => void,\r\n options: GestureHandlerOptions = {}\r\n) => {\r\n const state = useRef({ ...initialGestureHandlersState });\r\n\r\n const set = (\r\n cb: (prevState: GestureHandlersState) => GestureHandlersState\r\n ) => {\r\n state.current = cb(state.current);\r\n onGesture && onGesture(state.current);\r\n\r\n return state.current;\r\n };\r\n\r\n const handlers = gestureHandlers(set, containerRef, options);\r\n\r\n return { state: state.current, handlers };\r\n};\r\n"],"mappings":"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"}
1
+ {"version":3,"file":"useGestureHandlers.js","names":["useRef","getOwnerDocument","initialGestureHandlersState","target","x","xDelta","xDeltaPercent","xInitial","xPrev","xVelocity","y","yDelta","yDeltaPercent","yInitial","yPrev","yVelocity","startTime","down","scrollLocked","FRAMERATE_CONST","VELOCITY_DEPR_FACTOR","gestureHandlers","set","containerRef","options","ensureTargetIsContainer","minTouchDelta","handleUp","state","deltaTime","Date","now","calcVelocity","newState","handleDown","e","pageX","pageY","deltaSpace","prevVelocity","speed","depr","Math","min","handleMove","cancelable","preventDefault","getDeltaSum","currentPos","initialPos","prevPos","abs","current","width","offsetWidth","NaN","height","offsetHeight","handleTouchMove","touches","item","handleTouchStart","length","ownerDocument","currentTarget","ownerWindow","defaultView","window","addEventListener","passive","handleTouchEnd","removeEventListener","handleMouseDown","button","handleMouseUp","onMouseDown","onTouchStart","useGestureHandlers","onGesture","cb","handlers"],"sources":["../../../src/hooks/useGestureHandlers.ts"],"sourcesContent":["import type {\n MutableRefObject,\n MouseEvent as ReactMouseEvent,\n TouchEvent as ReactTouchEvent,\n} from 'react';\nimport { useRef } from 'react';\n\nimport { getOwnerDocument } from '../utils';\n\nexport interface GestureHandlersState {\n target: null | EventTarget;\n x: number;\n xDelta: number;\n xDeltaPercent: number;\n xInitial: number;\n xPrev: number;\n xVelocity: number;\n y: number;\n yDelta: number;\n yDeltaPercent: number;\n yInitial: number;\n yPrev: number;\n yVelocity: number;\n startTime: number;\n down: boolean;\n scrollLocked: boolean;\n}\n\ntype SetStateFunc<S> = (\n state: (prevState: Readonly<S>) => S,\n callback?: () => void\n) => void;\n\nexport interface GestureHandlersReturn {\n onMouseDown: (e: ReactMouseEvent<HTMLElement>) => void;\n onTouchStart: (e: ReactTouchEvent<HTMLElement>) => void;\n}\n\nexport interface GestureHandlerOptions {\n ensureTargetIsContainer?: boolean;\n minTouchDelta?: number;\n}\n\nexport const initialGestureHandlersState: GestureHandlersState = {\n target: null,\n x: 0,\n xDelta: 0,\n xDeltaPercent: 0,\n xInitial: 0,\n xPrev: 0,\n xVelocity: 0,\n y: 0,\n yDelta: 0,\n yDeltaPercent: 0,\n yInitial: 0,\n yPrev: 0,\n yVelocity: 0,\n startTime: 0,\n down: false,\n scrollLocked: false,\n};\n\nconst FRAMERATE_CONST = 1000 / 60; // 60 fps\nconst VELOCITY_DEPR_FACTOR = FRAMERATE_CONST * 2;\n\nexport function gestureHandlers(\n set: SetStateFunc<GestureHandlersState>,\n containerRef?: MutableRefObject<HTMLElement | null>,\n options: GestureHandlerOptions = {}\n): GestureHandlersReturn {\n const { ensureTargetIsContainer = false, minTouchDelta = 0 } = options;\n\n // Common handlers\n const handleUp = () => {\n set((state: GestureHandlersState) => {\n const deltaTime = Date.now() - state.startTime;\n const xDelta = state.x - state.xInitial;\n const yDelta = state.y - state.yInitial;\n const xVelocity = calcVelocity(xDelta, deltaTime, state.xVelocity);\n const yVelocity = calcVelocity(yDelta, deltaTime, state.yVelocity);\n const newState: GestureHandlersState = {\n ...state,\n xVelocity,\n yVelocity,\n target: null,\n down: false,\n };\n\n return newState;\n });\n };\n\n const handleDown = (e: MouseEvent) => {\n const { target, pageX, pageY } = e;\n\n set((state: GestureHandlersState) => {\n const newState = {\n ...state,\n target,\n x: pageX,\n xDelta: 0,\n xDeltaPercent: 0,\n xVelocity: 0,\n xInitial: pageX,\n xPrev: pageX,\n y: pageY,\n yDelta: 0,\n yDeltaPercent: 0,\n yVelocity: 0,\n yInitial: pageY,\n yPrev: pageY,\n startTime: Date.now(),\n down: true,\n scrollLocked: false,\n };\n\n return newState;\n });\n };\n\n function calcVelocity(\n deltaSpace: number,\n deltaTime: number,\n prevVelocity: number\n ) {\n if (deltaTime < 1) {\n deltaTime = 1;\n }\n const speed = deltaSpace / deltaTime;\n const depr = 0.5 + Math.min(deltaTime / VELOCITY_DEPR_FACTOR, 0.5);\n return speed * depr + prevVelocity * (1 - depr);\n }\n\n function handleMove(e: MouseEvent) {\n const { pageX, pageY } = e;\n if (e.cancelable) {\n // prevent drag & drop behaviour from browser\n e.preventDefault && e.preventDefault();\n }\n\n set((state: GestureHandlersState) => {\n function getDeltaSum(\n currentPos: number,\n initialPos: number,\n prevPos: number\n ): number {\n if (\n state.scrollLocked ||\n Math.abs(currentPos - initialPos) >= minTouchDelta\n ) {\n state.scrollLocked = true;\n return currentPos - prevPos;\n }\n return 0;\n }\n\n const target =\n (containerRef && containerRef.current) || (e as any).target;\n\n const deltaTime = Date.now() - state.startTime;\n\n const width = target ? target.offsetWidth : NaN;\n const xDelta = state.xDelta + getDeltaSum(pageX, state.xInitial, state.x);\n const xDeltaPercent = (xDelta * 100) / width;\n const xVelocity = calcVelocity(xDelta, deltaTime, state.xVelocity);\n\n const height = target ? target.offsetHeight : NaN;\n const yDelta = state.yDelta + getDeltaSum(pageY, state.yInitial, state.y);\n const yDeltaPercent = (yDelta * 100) / height;\n const yVelocity = calcVelocity(yDelta, deltaTime, state.yVelocity);\n\n const newState = {\n ...state,\n xDelta,\n xDeltaPercent,\n x: pageX,\n xPrev: state.x,\n xVelocity,\n yDelta,\n yDeltaPercent,\n y: pageY,\n yPrev: state.y,\n yVelocity,\n };\n\n return newState;\n });\n }\n\n // Touch handlers\n\n /* eslint-disable @typescript-eslint/no-use-before-define */\n function handleTouchMove(e: TouchEvent) {\n if (e.cancelable) {\n // prevent drag & drop behaviour from browser\n e.preventDefault();\n }\n handleMove(e.touches.item(0) as any);\n }\n\n function handleTouchStart(e: ReactTouchEvent<HTMLElement>) {\n // making sure we're not dragging the element when more than one finger press the screen\n const { touches } = e;\n if (touches.length > 1) {\n return;\n }\n\n if (\n ensureTargetIsContainer &&\n containerRef &&\n e.target !== containerRef.current\n ) {\n return;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const ownerDocument = getOwnerDocument(e.currentTarget)!;\n const ownerWindow = ownerDocument.defaultView || window;\n ownerWindow.addEventListener('touchmove', handleTouchMove, {\n passive: false,\n });\n ownerWindow.addEventListener('touchend', handleTouchEnd);\n ownerWindow.addEventListener('touchcancel', handleTouchEnd);\n handleDown(e.touches.item(0) as any);\n }\n\n function handleTouchEnd(this: Window) {\n this.removeEventListener('touchmove', handleTouchMove);\n this.removeEventListener('touchend', handleTouchEnd);\n this.removeEventListener('touchcancel', handleTouchEnd);\n handleUp();\n }\n\n // Mouse handlers\n function handleMouseDown(e: ReactMouseEvent<HTMLElement>) {\n if (\n ensureTargetIsContainer &&\n containerRef &&\n e.target !== containerRef.current\n ) {\n return;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const ownerDocument = getOwnerDocument(e.currentTarget)!;\n const ownerWindow = ownerDocument.defaultView || window;\n if (e.button === 0) {\n ownerWindow.addEventListener('mousemove', handleMove);\n ownerWindow.addEventListener('mouseup', handleMouseUp);\n handleDown(e as any);\n }\n }\n\n function handleMouseUp(this: Window) {\n this.removeEventListener('mousemove', handleMove);\n this.removeEventListener('mouseup', handleMouseUp);\n handleUp();\n }\n /* eslint-enable @typescript-eslint/no-use-before-define */\n\n return {\n onMouseDown: handleMouseDown,\n onTouchStart: handleTouchStart,\n };\n}\n\nexport const useGestureHandlers = (\n containerRef: MutableRefObject<HTMLElement | null> | undefined,\n onGesture: (e: GestureHandlersState) => void,\n options: GestureHandlerOptions = {}\n) => {\n const state = useRef({ ...initialGestureHandlersState });\n\n const set = (\n cb: (prevState: GestureHandlersState) => GestureHandlersState\n ) => {\n state.current = cb(state.current);\n onGesture && onGesture(state.current);\n\n return state.current;\n };\n\n const handlers = gestureHandlers(set, containerRef, options);\n\n return { state: state.current, handlers };\n};\n"],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export declare const useId: (preferredId?: string | undefined) => string | undefined;
@@ -0,0 +1,25 @@
1
+ import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
2
+ import { useEffect, useState } from 'react'; // Could use UUID but if we hit 9,007,199,254,740,991 unique components over
3
+ // the lifetime of the app before it gets reloaded, I mean ... come on.
4
+ // I don't even know what xillion that is.
5
+ // /me googles
6
+ // Oh duh, quadrillion. Nine quadrillion components. I think we're okay.
7
+
8
+ var id = 0;
9
+
10
+ var genId = function genId() {
11
+ return "".concat(++id);
12
+ };
13
+
14
+ export var useId = function useId(preferredId) {
15
+ var _useState = useState(preferredId),
16
+ _useState2 = _slicedToArray(_useState, 2),
17
+ id = _useState2[0],
18
+ setId = _useState2[1];
19
+
20
+ useEffect(function () {
21
+ return setId(genId());
22
+ }, []);
23
+ return id;
24
+ };
25
+ //# sourceMappingURL=useId.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/hooks/useId.ts"],"names":["useEffect","useState","id","genId","useId","preferredId","setId"],"mappings":";AAAA,SAASA,SAAT,EAAoBC,QAApB,QAAoC,OAApC,C,CAEA;AACA;AACA;AACA;AACA;;AACA,IAAIC,EAAE,GAAG,CAAT;;AACA,IAAMC,KAAK,GAAG,SAARA,KAAQ;AAAA,mBAAS,EAAED,EAAX;AAAA,CAAd;;AACA,OAAO,IAAME,KAAK,GAAG,SAARA,KAAQ,CAACC,WAAD,EAA0B;AAAA,kBACzBJ,QAAQ,CAAqBI,WAArB,CADiB;AAAA;AAAA,MACtCH,EADsC;AAAA,MAClCI,KADkC;;AAE7CN,EAAAA,SAAS,CAAC;AAAA,WAAMM,KAAK,CAACH,KAAK,EAAN,CAAX;AAAA,GAAD,EAAuB,EAAvB,CAAT;AACA,SAAOD,EAAP;AACD,CAJM","sourcesContent":["import { useEffect, useState } from 'react';\n\n// Could use UUID but if we hit 9,007,199,254,740,991 unique components over\n// the lifetime of the app before it gets reloaded, I mean ... come on.\n// I don't even know what xillion that is.\n// /me googles\n// Oh duh, quadrillion. Nine quadrillion components. I think we're okay.\nlet id = 0;\nconst genId = () => `${++id}`;\nexport const useId = (preferredId?: string) => {\n const [id, setId] = useState<string | undefined>(preferredId);\n useEffect(() => setId(genId()), []);\n return id;\n};\n"],"file":"useId.js"}
@@ -1,7 +1,7 @@
1
- import type { MutableRefObject } from 'react';
2
- export declare function useMeasure(ref: MutableRefObject<HTMLElement | null>): {
3
- left: number;
4
- top: number;
5
- width: number;
6
- height: number;
7
- };
1
+ import type { MutableRefObject } from 'react';
2
+ export declare function useMeasure(ref: MutableRefObject<HTMLElement | null>): {
3
+ left: number;
4
+ top: number;
5
+ width: number;
6
+ height: number;
7
+ };
@@ -1 +1 @@
1
- {"version":3,"file":"useMeasure.js","names":["useRef","useState","useEffect","useMeasure","ref","ro","left","top","width","height","bounds","setBounds","current","ResizeObserver","entries","entry","contentRect","observe","disconnect"],"sources":["../../../src/hooks/useMeasure.ts"],"sourcesContent":["import type { MutableRefObject } from 'react';\r\nimport { useRef, useState, useEffect } from 'react';\r\n\r\nexport function useMeasure(ref: MutableRefObject<HTMLElement | null>) {\r\n const ro = useRef<ResizeObserver | null>(null);\r\n const [bounds, setBounds] = useState({\r\n left: 0,\r\n top: 0,\r\n width: 0,\r\n height: 0,\r\n });\r\n\r\n useEffect(() => {\r\n if (ro.current === null) {\r\n ro.current = new ResizeObserver((entries: any) => {\r\n const entry = entries[0];\r\n setBounds(entry.contentRect);\r\n });\r\n }\r\n\r\n if (ref.current) {\r\n ro.current.observe(ref.current);\r\n }\r\n\r\n return () => {\r\n if (ro.current) {\r\n ro.current.disconnect();\r\n }\r\n };\r\n }, [ref]);\r\n\r\n return bounds;\r\n}\r\n"],"mappings":";AACA,SAASA,MAAT,EAAiBC,QAAjB,EAA2BC,SAA3B,QAA4C,OAA5C;AAEA,OAAO,SAASC,UAAT,CAAoBC,GAApB,EAA+D;EACpE,IAAMC,EAAE,GAAGL,MAAM,CAAwB,IAAxB,CAAjB;;EACA,gBAA4BC,QAAQ,CAAC;IACnCK,IAAI,EAAE,CAD6B;IAEnCC,GAAG,EAAE,CAF8B;IAGnCC,KAAK,EAAE,CAH4B;IAInCC,MAAM,EAAE;EAJ2B,CAAD,CAApC;EAAA;EAAA,IAAOC,MAAP;EAAA,IAAeC,SAAf;;EAOAT,SAAS,CAAC,YAAM;IACd,IAAIG,EAAE,CAACO,OAAH,KAAe,IAAnB,EAAyB;MACvBP,EAAE,CAACO,OAAH,GAAa,IAAIC,cAAJ,CAAmB,UAACC,OAAD,EAAkB;QAChD,IAAMC,KAAK,GAAGD,OAAO,CAAC,CAAD,CAArB;QACAH,SAAS,CAACI,KAAK,CAACC,WAAP,CAAT;MACD,CAHY,CAAb;IAID;;IAED,IAAIZ,GAAG,CAACQ,OAAR,EAAiB;MACfP,EAAE,CAACO,OAAH,CAAWK,OAAX,CAAmBb,GAAG,CAACQ,OAAvB;IACD;;IAED,OAAO,YAAM;MACX,IAAIP,EAAE,CAACO,OAAP,EAAgB;QACdP,EAAE,CAACO,OAAH,CAAWM,UAAX;MACD;IACF,CAJD;EAKD,CAjBQ,EAiBN,CAACd,GAAD,CAjBM,CAAT;EAmBA,OAAOM,MAAP;AACD"}
1
+ {"version":3,"file":"useMeasure.js","names":["useRef","useState","useEffect","useMeasure","ref","ro","left","top","width","height","bounds","setBounds","current","ResizeObserver","entries","entry","contentRect","observe","disconnect"],"sources":["../../../src/hooks/useMeasure.ts"],"sourcesContent":["import type { MutableRefObject } from 'react';\nimport { useRef, useState, useEffect } from 'react';\n\nexport function useMeasure(ref: MutableRefObject<HTMLElement | null>) {\n const ro = useRef<ResizeObserver | null>(null);\n const [bounds, setBounds] = useState({\n left: 0,\n top: 0,\n width: 0,\n height: 0,\n });\n\n useEffect(() => {\n if (ro.current === null) {\n ro.current = new ResizeObserver((entries: any) => {\n const entry = entries[0];\n setBounds(entry.contentRect);\n });\n }\n\n if (ref.current) {\n ro.current.observe(ref.current);\n }\n\n return () => {\n if (ro.current) {\n ro.current.disconnect();\n }\n };\n }, [ref]);\n\n return bounds;\n}\n"],"mappings":";AACA,SAASA,MAAT,EAAiBC,QAAjB,EAA2BC,SAA3B,QAA4C,OAA5C;AAEA,OAAO,SAASC,UAAT,CAAoBC,GAApB,EAA+D;EACpE,IAAMC,EAAE,GAAGL,MAAM,CAAwB,IAAxB,CAAjB;;EACA,gBAA4BC,QAAQ,CAAC;IACnCK,IAAI,EAAE,CAD6B;IAEnCC,GAAG,EAAE,CAF8B;IAGnCC,KAAK,EAAE,CAH4B;IAInCC,MAAM,EAAE;EAJ2B,CAAD,CAApC;EAAA;EAAA,IAAOC,MAAP;EAAA,IAAeC,SAAf;;EAOAT,SAAS,CAAC,YAAM;IACd,IAAIG,EAAE,CAACO,OAAH,KAAe,IAAnB,EAAyB;MACvBP,EAAE,CAACO,OAAH,GAAa,IAAIC,cAAJ,CAAmB,UAACC,OAAD,EAAkB;QAChD,IAAMC,KAAK,GAAGD,OAAO,CAAC,CAAD,CAArB;QACAH,SAAS,CAACI,KAAK,CAACC,WAAP,CAAT;MACD,CAHY,CAAb;IAID;;IAED,IAAIZ,GAAG,CAACQ,OAAR,EAAiB;MACfP,EAAE,CAACO,OAAH,CAAWK,OAAX,CAAmBb,GAAG,CAACQ,OAAvB;IACD;;IAED,OAAO,YAAM;MACX,IAAIP,EAAE,CAACO,OAAP,EAAgB;QACdP,EAAE,CAACO,OAAH,CAAWM,UAAX;MACD;IACF,CAJD;EAKD,CAjBQ,EAiBN,CAACd,GAAD,CAjBM,CAAT;EAmBA,OAAOM,MAAP;AACD"}
@@ -1,2 +1,2 @@
1
- import type { RefObject } from 'react';
2
- export declare function useOnClickOutside(ref: RefObject<any>, handler: (e: PointerEvent) => void, active?: boolean): void;
1
+ import type { RefObject } from 'react';
2
+ export declare function useOnClickOutside(ref: RefObject<any>, handler: (e: PointerEvent) => void, active?: boolean): void;
@@ -1 +1 @@
1
- {"version":3,"file":"useOnClickOutside.js","names":["useEffect","useCallback","useOnClickOutside","ref","handler","active","listener","event","current","contains","target","document","addEventListener","removeEventListener"],"sources":["../../../src/hooks/useOnClickOutside.ts"],"sourcesContent":["import type { RefObject } from 'react';\r\nimport { useEffect, useCallback } from 'react';\r\n\r\nexport function useOnClickOutside(\r\n ref: RefObject<any>,\r\n handler: (e: PointerEvent) => void,\r\n active = true\r\n) {\r\n const listener = useCallback(\r\n (event: PointerEvent) => {\r\n // Do nothing if clicking ref's element or descendent elements\r\n if (!ref.current || ref.current.contains(event.target)) {\r\n return;\r\n }\r\n\r\n handler && handler(event);\r\n },\r\n [ref, handler]\r\n );\r\n\r\n useEffect(() => {\r\n if (active) {\r\n document.addEventListener('pointerup', listener);\r\n\r\n return () => {\r\n document.removeEventListener('pointerup', listener);\r\n };\r\n }\r\n\r\n return;\r\n }, [listener, active]);\r\n}\r\n"],"mappings":"AACA,SAASA,SAAT,EAAoBC,WAApB,QAAuC,OAAvC;AAEA,OAAO,SAASC,iBAAT,CACLC,GADK,EAELC,OAFK,EAIL;EAAA,IADAC,MACA,uEADS,IACT;EACA,IAAMC,QAAQ,GAAGL,WAAW,CAC1B,UAACM,KAAD,EAAyB;IACvB;IACA,IAAI,CAACJ,GAAG,CAACK,OAAL,IAAgBL,GAAG,CAACK,OAAJ,CAAYC,QAAZ,CAAqBF,KAAK,CAACG,MAA3B,CAApB,EAAwD;MACtD;IACD;;IAEDN,OAAO,IAAIA,OAAO,CAACG,KAAD,CAAlB;EACD,CARyB,EAS1B,CAACJ,GAAD,EAAMC,OAAN,CAT0B,CAA5B;EAYAJ,SAAS,CAAC,YAAM;IACd,IAAIK,MAAJ,EAAY;MACVM,QAAQ,CAACC,gBAAT,CAA0B,WAA1B,EAAuCN,QAAvC;MAEA,OAAO,YAAM;QACXK,QAAQ,CAACE,mBAAT,CAA6B,WAA7B,EAA0CP,QAA1C;MACD,CAFD;IAGD;;IAED;EACD,CAVQ,EAUN,CAACA,QAAD,EAAWD,MAAX,CAVM,CAAT;AAWD"}
1
+ {"version":3,"file":"useOnClickOutside.js","names":["useEffect","useCallback","useOnClickOutside","ref","handler","active","listener","event","current","contains","target","document","addEventListener","removeEventListener"],"sources":["../../../src/hooks/useOnClickOutside.ts"],"sourcesContent":["import type { RefObject } from 'react';\nimport { useEffect, useCallback } from 'react';\n\nexport function useOnClickOutside(\n ref: RefObject<any>,\n handler: (e: PointerEvent) => void,\n active = true\n) {\n const listener = useCallback(\n (event: PointerEvent) => {\n // Do nothing if clicking ref's element or descendent elements\n if (!ref.current || ref.current.contains(event.target)) {\n return;\n }\n\n handler && handler(event);\n },\n [ref, handler]\n );\n\n useEffect(() => {\n if (active) {\n document.addEventListener('pointerup', listener);\n\n return () => {\n document.removeEventListener('pointerup', listener);\n };\n }\n\n return;\n }, [listener, active]);\n}\n"],"mappings":"AACA,SAASA,SAAT,EAAoBC,WAApB,QAAuC,OAAvC;AAEA,OAAO,SAASC,iBAAT,CACLC,GADK,EAELC,OAFK,EAIL;EAAA,IADAC,MACA,uEADS,IACT;EACA,IAAMC,QAAQ,GAAGL,WAAW,CAC1B,UAACM,KAAD,EAAyB;IACvB;IACA,IAAI,CAACJ,GAAG,CAACK,OAAL,IAAgBL,GAAG,CAACK,OAAJ,CAAYC,QAAZ,CAAqBF,KAAK,CAACG,MAA3B,CAApB,EAAwD;MACtD;IACD;;IAEDN,OAAO,IAAIA,OAAO,CAACG,KAAD,CAAlB;EACD,CARyB,EAS1B,CAACJ,GAAD,EAAMC,OAAN,CAT0B,CAA5B;EAYAJ,SAAS,CAAC,YAAM;IACd,IAAIK,MAAJ,EAAY;MACVM,QAAQ,CAACC,gBAAT,CAA0B,WAA1B,EAAuCN,QAAvC;MAEA,OAAO,YAAM;QACXK,QAAQ,CAACE,mBAAT,CAA6B,WAA7B,EAA0CP,QAA1C;MACD,CAFD;IAGD;;IAED;EACD,CAVQ,EAUN,CAACA,QAAD,EAAWD,MAAX,CAVM,CAAT;AAWD"}
@@ -1 +1 @@
1
- export declare function useOnKeyDown(ownerWindow: Window, handler: (e: KeyboardEvent) => void, active?: boolean): void;
1
+ export declare function useOnKeyDown(ownerWindow: Window, handler: (e: KeyboardEvent) => void, active?: boolean): void;
@@ -1 +1 @@
1
- {"version":3,"file":"useOnKeyDown.js","names":["useEffect","useOnKeyDown","ownerWindow","handler","active","addEventListener","removeEventListener"],"sources":["../../../src/hooks/useOnKeyDown.ts"],"sourcesContent":["import { useEffect } from 'react';\r\n\r\nexport function useOnKeyDown(\r\n ownerWindow: Window,\r\n handler: (e: KeyboardEvent) => void,\r\n active = true\r\n) {\r\n useEffect(() => {\r\n if (active) {\r\n ownerWindow.addEventListener('keydown', handler);\r\n\r\n return () => {\r\n ownerWindow.removeEventListener('keydown', handler);\r\n };\r\n }\r\n\r\n return;\r\n }, [ownerWindow, active, handler]);\r\n}\r\n"],"mappings":"AAAA,SAASA,SAAT,QAA0B,OAA1B;AAEA,OAAO,SAASC,YAAT,CACLC,WADK,EAELC,OAFK,EAIL;EAAA,IADAC,MACA,uEADS,IACT;EACAJ,SAAS,CAAC,YAAM;IACd,IAAII,MAAJ,EAAY;MACVF,WAAW,CAACG,gBAAZ,CAA6B,SAA7B,EAAwCF,OAAxC;MAEA,OAAO,YAAM;QACXD,WAAW,CAACI,mBAAZ,CAAgC,SAAhC,EAA2CH,OAA3C;MACD,CAFD;IAGD;;IAED;EACD,CAVQ,EAUN,CAACD,WAAD,EAAcE,MAAd,EAAsBD,OAAtB,CAVM,CAAT;AAWD"}
1
+ {"version":3,"file":"useOnKeyDown.js","names":["useEffect","useOnKeyDown","ownerWindow","handler","active","addEventListener","removeEventListener"],"sources":["../../../src/hooks/useOnKeyDown.ts"],"sourcesContent":["import { useEffect } from 'react';\n\nexport function useOnKeyDown(\n ownerWindow: Window,\n handler: (e: KeyboardEvent) => void,\n active = true\n) {\n useEffect(() => {\n if (active) {\n ownerWindow.addEventListener('keydown', handler);\n\n return () => {\n ownerWindow.removeEventListener('keydown', handler);\n };\n }\n\n return;\n }, [ownerWindow, active, handler]);\n}\n"],"mappings":"AAAA,SAASA,SAAT,QAA0B,OAA1B;AAEA,OAAO,SAASC,YAAT,CACLC,WADK,EAELC,OAFK,EAIL;EAAA,IADAC,MACA,uEADS,IACT;EACAJ,SAAS,CAAC,YAAM;IACd,IAAII,MAAJ,EAAY;MACVF,WAAW,CAACG,gBAAZ,CAA6B,SAA7B,EAAwCF,OAAxC;MAEA,OAAO,YAAM;QACXD,WAAW,CAACI,mBAAZ,CAAgC,SAAhC,EAA2CH,OAA3C;MACD,CAFD;IAGD;;IAED;EACD,CAVQ,EAUN,CAACD,WAAD,EAAcE,MAAd,EAAsBD,OAAtB,CAVM,CAAT;AAWD"}
@@ -1,24 +1,24 @@
1
- import type { Reducer } from 'react';
2
- export interface StateChart<STypes extends string, ATypes extends string> {
3
- initial: STypes;
4
- states: {
5
- [state in STypes]?: {
6
- enter?: (prevState: STypes, payload: any) => void;
7
- leave?: (nextState: STypes, payload: any) => void;
8
- on: {
9
- [action in ATypes]?: STypes;
10
- };
11
- };
12
- };
13
- }
14
- export interface StateMachineState<STypes, ATypes> {
15
- state: STypes;
16
- lastActionType: ATypes;
17
- }
18
- export interface StateMachineAction<STypes, ATypes> {
19
- type: ATypes;
20
- nextState: STypes;
21
- }
22
- declare type TransitionType<ATypes extends string> = (action: ATypes, payload: any) => void;
23
- export declare function useReducerMachine<S extends StateMachineState<STypes, ATypes>, A extends StateMachineAction<STypes, ATypes>, STypes extends string, ATypes extends string>(chart: StateChart<STypes, ATypes>, reducer: Reducer<S, A>, initialData: S): [STypes, Omit<S, 'state'>, TransitionType<ATypes>];
24
- export {};
1
+ import type { Reducer } from 'react';
2
+ export interface StateChart<STypes extends string, ATypes extends string> {
3
+ initial: STypes;
4
+ states: {
5
+ [state in STypes]?: {
6
+ enter?: (prevState: STypes, payload: any) => void;
7
+ leave?: (nextState: STypes, payload: any) => void;
8
+ on: {
9
+ [action in ATypes]?: STypes;
10
+ };
11
+ };
12
+ };
13
+ }
14
+ export interface StateMachineState<STypes, ATypes> {
15
+ state: STypes;
16
+ lastActionType: ATypes;
17
+ }
18
+ export interface StateMachineAction<STypes, ATypes> {
19
+ type: ATypes;
20
+ nextState: STypes;
21
+ }
22
+ declare type TransitionType<ATypes extends string> = (action: ATypes, payload: any) => void;
23
+ export declare function useReducerMachine<S extends StateMachineState<STypes, ATypes>, A extends StateMachineAction<STypes, ATypes>, STypes extends string, ATypes extends string>(chart: StateChart<STypes, ATypes>, reducer: Reducer<S, A>, initialData: S): [STypes, Omit<S, 'state'>, TransitionType<ATypes>];
24
+ export {};
@@ -1 +1 @@
1
- {"version":3,"file":"useReducerMachine.js","names":["useReducer","useReducerMachine","chart","reducer","initialData","reducerState","dispatch","state","data","transition","action","payload","currentState","states","Error","nextState","on","type"],"sources":["../../../src/hooks/useReducerMachine.ts"],"sourcesContent":["import type { Reducer } from 'react';\r\nimport { useReducer } from 'react';\r\n\r\nexport interface StateChart<STypes extends string, ATypes extends string> {\r\n initial: STypes;\r\n states: {\r\n [state in STypes]?: {\r\n enter?: (prevState: STypes, payload: any) => void;\r\n leave?: (nextState: STypes, payload: any) => void;\r\n on: { [action in ATypes]?: STypes };\r\n };\r\n };\r\n}\r\n\r\nexport interface StateMachineState<STypes, ATypes> {\r\n state: STypes;\r\n lastActionType: ATypes;\r\n}\r\n\r\nexport interface StateMachineAction<STypes, ATypes> {\r\n type: ATypes;\r\n nextState: STypes;\r\n}\r\n\r\ntype TransitionType<ATypes extends string> = (\r\n action: ATypes,\r\n payload: any\r\n) => void;\r\n\r\n// This manages transitions between states with a built in reducer to manage\r\n// the data that goes with those transitions.\r\nexport function useReducerMachine<\r\n S extends StateMachineState<STypes, ATypes>,\r\n A extends StateMachineAction<STypes, ATypes>,\r\n STypes extends string,\r\n ATypes extends string\r\n>(\r\n chart: StateChart<STypes, ATypes>,\r\n reducer: Reducer<S, A>,\r\n initialData: S\r\n): [STypes, Omit<S, 'state'>, TransitionType<ATypes>] {\r\n const [reducerState, dispatch] = useReducer(reducer, initialData);\r\n const { state, ...data } = reducerState;\r\n\r\n const transition: TransitionType<ATypes> = (action, payload = {}) => {\r\n const currentState = chart.states[state];\r\n if (!currentState) {\r\n throw new Error(`Unknown currentState \"${state}\"`);\r\n }\r\n\r\n const nextState: STypes | undefined = currentState.on[action];\r\n if (!nextState) {\r\n throw new Error(`Unknown action \"${action}\" for state \"${state}\"`);\r\n }\r\n\r\n dispatch({ type: action, nextState, ...payload } as any);\r\n };\r\n\r\n return [state, data, transition];\r\n}\r\n"],"mappings":";;;;AACA,SAASA,UAAT,QAA2B,OAA3B;AA4BA;AACA;AACA,OAAO,SAASC,iBAAT,CAMLC,KANK,EAOLC,OAPK,EAQLC,WARK,EAS+C;EACpD,kBAAiCJ,UAAU,CAACG,OAAD,EAAUC,WAAV,CAA3C;EAAA;EAAA,IAAOC,YAAP;EAAA,IAAqBC,QAArB;;EACA,IAAQC,KAAR,GAA2BF,YAA3B,CAAQE,KAAR;EAAA,IAAkBC,IAAlB,4BAA2BH,YAA3B;;EAEA,IAAMI,UAAkC,GAAG,SAArCA,UAAqC,CAACC,MAAD,EAA0B;IAAA,IAAjBC,OAAiB,uEAAP,EAAO;IACnE,IAAMC,YAAY,GAAGV,KAAK,CAACW,MAAN,CAAaN,KAAb,CAArB;;IACA,IAAI,CAACK,YAAL,EAAmB;MACjB,MAAM,IAAIE,KAAJ,kCAAmCP,KAAnC,QAAN;IACD;;IAED,IAAMQ,SAA6B,GAAGH,YAAY,CAACI,EAAb,CAAgBN,MAAhB,CAAtC;;IACA,IAAI,CAACK,SAAL,EAAgB;MACd,MAAM,IAAID,KAAJ,4BAA6BJ,MAA7B,4BAAmDH,KAAnD,QAAN;IACD;;IAEDD,QAAQ;MAAGW,IAAI,EAAEP,MAAT;MAAiBK,SAAS,EAATA;IAAjB,GAA+BJ,OAA/B,EAAR;EACD,CAZD;;EAcA,OAAO,CAACJ,KAAD,EAAQC,IAAR,EAAcC,UAAd,CAAP;AACD"}
1
+ {"version":3,"file":"useReducerMachine.js","names":["useReducer","useReducerMachine","chart","reducer","initialData","reducerState","dispatch","state","data","transition","action","payload","currentState","states","Error","nextState","on","type"],"sources":["../../../src/hooks/useReducerMachine.ts"],"sourcesContent":["import type { Reducer } from 'react';\nimport { useReducer } from 'react';\n\nexport interface StateChart<STypes extends string, ATypes extends string> {\n initial: STypes;\n states: {\n [state in STypes]?: {\n enter?: (prevState: STypes, payload: any) => void;\n leave?: (nextState: STypes, payload: any) => void;\n on: { [action in ATypes]?: STypes };\n };\n };\n}\n\nexport interface StateMachineState<STypes, ATypes> {\n state: STypes;\n lastActionType: ATypes;\n}\n\nexport interface StateMachineAction<STypes, ATypes> {\n type: ATypes;\n nextState: STypes;\n}\n\ntype TransitionType<ATypes extends string> = (\n action: ATypes,\n payload: any\n) => void;\n\n// This manages transitions between states with a built in reducer to manage\n// the data that goes with those transitions.\nexport function useReducerMachine<\n S extends StateMachineState<STypes, ATypes>,\n A extends StateMachineAction<STypes, ATypes>,\n STypes extends string,\n ATypes extends string\n>(\n chart: StateChart<STypes, ATypes>,\n reducer: Reducer<S, A>,\n initialData: S\n): [STypes, Omit<S, 'state'>, TransitionType<ATypes>] {\n const [reducerState, dispatch] = useReducer(reducer, initialData);\n const { state, ...data } = reducerState;\n\n const transition: TransitionType<ATypes> = (action, payload = {}) => {\n const currentState = chart.states[state];\n if (!currentState) {\n throw new Error(`Unknown currentState \"${state}\"`);\n }\n\n const nextState: STypes | undefined = currentState.on[action];\n if (!nextState) {\n throw new Error(`Unknown action \"${action}\" for state \"${state}\"`);\n }\n\n dispatch({ type: action, nextState, ...payload } as any);\n };\n\n return [state, data, transition];\n}\n"],"mappings":";;;;AACA,SAASA,UAAT,QAA2B,OAA3B;AA4BA;AACA;AACA,OAAO,SAASC,iBAAT,CAMLC,KANK,EAOLC,OAPK,EAQLC,WARK,EAS+C;EACpD,kBAAiCJ,UAAU,CAACG,OAAD,EAAUC,WAAV,CAA3C;EAAA;EAAA,IAAOC,YAAP;EAAA,IAAqBC,QAArB;;EACA,IAAQC,KAAR,GAA2BF,YAA3B,CAAQE,KAAR;EAAA,IAAkBC,IAAlB,4BAA2BH,YAA3B;;EAEA,IAAMI,UAAkC,GAAG,SAArCA,UAAqC,CAACC,MAAD,EAA0B;IAAA,IAAjBC,OAAiB,uEAAP,EAAO;IACnE,IAAMC,YAAY,GAAGV,KAAK,CAACW,MAAN,CAAaN,KAAb,CAArB;;IACA,IAAI,CAACK,YAAL,EAAmB;MACjB,MAAM,IAAIE,KAAJ,kCAAmCP,KAAnC,QAAN;IACD;;IAED,IAAMQ,SAA6B,GAAGH,YAAY,CAACI,EAAb,CAAgBN,MAAhB,CAAtC;;IACA,IAAI,CAACK,SAAL,EAAgB;MACd,MAAM,IAAID,KAAJ,4BAA6BJ,MAA7B,4BAAmDH,KAAnD,QAAN;IACD;;IAEDD,QAAQ;MAAGW,IAAI,EAAEP,MAAT;MAAiBK,SAAS,EAATA;IAAjB,GAA+BJ,OAA/B,EAAR;EACD,CAZD;;EAcA,OAAO,CAACJ,KAAD,EAAQC,IAAR,EAAcC,UAAd,CAAP;AACD"}
@@ -1,2 +1,2 @@
1
- import type { RefObject } from 'react';
2
- export declare function useRemoveBodyScroll(open: boolean, elementRef: RefObject<HTMLElement | null>): void;
1
+ import type { RefObject } from 'react';
2
+ export declare function useRemoveBodyScroll(open: boolean, elementRef: RefObject<HTMLElement | null>): void;
@@ -1 +1 @@
1
- {"version":3,"file":"useRemoveBodyScroll.js","names":["useEffect","getOwnerDocument","scrollBodyCount","useRemoveBodyScroll","open","elementRef","current","ownerDocument","ownerWindow","defaultView","window","scrollBarWidth","innerWidth","body","clientWidth","style","overflow","marginRight"],"sources":["../../../src/hooks/useRemoveBodyScroll.ts"],"sourcesContent":["import type { RefObject } from 'react';\r\nimport { useEffect } from 'react';\r\n\r\nimport { getOwnerDocument } from '../utils';\r\n\r\nlet scrollBodyCount = 0;\r\nexport function useRemoveBodyScroll(\r\n open: boolean,\r\n elementRef: RefObject<HTMLElement | null>\r\n) {\r\n useEffect(() => {\r\n if (open && elementRef.current) {\r\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\r\n const ownerDocument = getOwnerDocument(elementRef.current)!;\r\n const ownerWindow = ownerDocument.defaultView || window;\r\n scrollBodyCount += 1;\r\n\r\n // calculate scrollbar width if mounting the first scroll lock\r\n let scrollBarWidth = 0;\r\n if (scrollBodyCount === 1) {\r\n scrollBarWidth =\r\n ownerWindow.innerWidth - ownerDocument.body.clientWidth;\r\n }\r\n\r\n ownerDocument.body.style.overflow = 'hidden';\r\n if (scrollBarWidth > 0) {\r\n ownerDocument.body.style.marginRight = `${scrollBarWidth}px`;\r\n }\r\n\r\n return () => {\r\n scrollBodyCount -= 1;\r\n if (scrollBodyCount === 0) {\r\n ownerDocument.body.style.overflow = '';\r\n ownerDocument.body.style.marginRight = '';\r\n }\r\n };\r\n }\r\n }, [elementRef, open]);\r\n}\r\n"],"mappings":"AACA,SAASA,SAAT,QAA0B,OAA1B;AAEA,SAASC,gBAAT,QAAiC,UAAjC;AAEA,IAAIC,eAAe,GAAG,CAAtB;AACA,OAAO,SAASC,mBAAT,CACLC,IADK,EAELC,UAFK,EAGL;EACAL,SAAS,CAAC,YAAM;IACd,IAAII,IAAI,IAAIC,UAAU,CAACC,OAAvB,EAAgC;MAC9B;MACA,IAAMC,aAAa,GAAGN,gBAAgB,CAACI,UAAU,CAACC,OAAZ,CAAtC;MACA,IAAME,WAAW,GAAGD,aAAa,CAACE,WAAd,IAA6BC,MAAjD;MACAR,eAAe,IAAI,CAAnB,CAJ8B,CAM9B;;MACA,IAAIS,cAAc,GAAG,CAArB;;MACA,IAAIT,eAAe,KAAK,CAAxB,EAA2B;QACzBS,cAAc,GACZH,WAAW,CAACI,UAAZ,GAAyBL,aAAa,CAACM,IAAd,CAAmBC,WAD9C;MAED;;MAEDP,aAAa,CAACM,IAAd,CAAmBE,KAAnB,CAAyBC,QAAzB,GAAoC,QAApC;;MACA,IAAIL,cAAc,GAAG,CAArB,EAAwB;QACtBJ,aAAa,CAACM,IAAd,CAAmBE,KAAnB,CAAyBE,WAAzB,aAA0CN,cAA1C;MACD;;MAED,OAAO,YAAM;QACXT,eAAe,IAAI,CAAnB;;QACA,IAAIA,eAAe,KAAK,CAAxB,EAA2B;UACzBK,aAAa,CAACM,IAAd,CAAmBE,KAAnB,CAAyBC,QAAzB,GAAoC,EAApC;UACAT,aAAa,CAACM,IAAd,CAAmBE,KAAnB,CAAyBE,WAAzB,GAAuC,EAAvC;QACD;MACF,CAND;IAOD;EACF,CA3BQ,EA2BN,CAACZ,UAAD,EAAaD,IAAb,CA3BM,CAAT;AA4BD"}
1
+ {"version":3,"file":"useRemoveBodyScroll.js","names":["useEffect","getOwnerDocument","scrollBodyCount","useRemoveBodyScroll","open","elementRef","current","ownerDocument","ownerWindow","defaultView","window","scrollBarWidth","innerWidth","body","clientWidth","style","overflow","marginRight"],"sources":["../../../src/hooks/useRemoveBodyScroll.ts"],"sourcesContent":["import type { RefObject } from 'react';\nimport { useEffect } from 'react';\n\nimport { getOwnerDocument } from '../utils';\n\nlet scrollBodyCount = 0;\nexport function useRemoveBodyScroll(\n open: boolean,\n elementRef: RefObject<HTMLElement | null>\n) {\n useEffect(() => {\n if (open && elementRef.current) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const ownerDocument = getOwnerDocument(elementRef.current)!;\n const ownerWindow = ownerDocument.defaultView || window;\n scrollBodyCount += 1;\n\n // calculate scrollbar width if mounting the first scroll lock\n let scrollBarWidth = 0;\n if (scrollBodyCount === 1) {\n scrollBarWidth =\n ownerWindow.innerWidth - ownerDocument.body.clientWidth;\n }\n\n ownerDocument.body.style.overflow = 'hidden';\n if (scrollBarWidth > 0) {\n ownerDocument.body.style.marginRight = `${scrollBarWidth}px`;\n }\n\n return () => {\n scrollBodyCount -= 1;\n if (scrollBodyCount === 0) {\n ownerDocument.body.style.overflow = '';\n ownerDocument.body.style.marginRight = '';\n }\n };\n }\n }, [elementRef, open]);\n}\n"],"mappings":"AACA,SAASA,SAAT,QAA0B,OAA1B;AAEA,SAASC,gBAAT,QAAiC,UAAjC;AAEA,IAAIC,eAAe,GAAG,CAAtB;AACA,OAAO,SAASC,mBAAT,CACLC,IADK,EAELC,UAFK,EAGL;EACAL,SAAS,CAAC,YAAM;IACd,IAAII,IAAI,IAAIC,UAAU,CAACC,OAAvB,EAAgC;MAC9B;MACA,IAAMC,aAAa,GAAGN,gBAAgB,CAACI,UAAU,CAACC,OAAZ,CAAtC;MACA,IAAME,WAAW,GAAGD,aAAa,CAACE,WAAd,IAA6BC,MAAjD;MACAR,eAAe,IAAI,CAAnB,CAJ8B,CAM9B;;MACA,IAAIS,cAAc,GAAG,CAArB;;MACA,IAAIT,eAAe,KAAK,CAAxB,EAA2B;QACzBS,cAAc,GACZH,WAAW,CAACI,UAAZ,GAAyBL,aAAa,CAACM,IAAd,CAAmBC,WAD9C;MAED;;MAEDP,aAAa,CAACM,IAAd,CAAmBE,KAAnB,CAAyBC,QAAzB,GAAoC,QAApC;;MACA,IAAIL,cAAc,GAAG,CAArB,EAAwB;QACtBJ,aAAa,CAACM,IAAd,CAAmBE,KAAnB,CAAyBE,WAAzB,aAA0CN,cAA1C;MACD;;MAED,OAAO,YAAM;QACXT,eAAe,IAAI,CAAnB;;QACA,IAAIA,eAAe,KAAK,CAAxB,EAA2B;UACzBK,aAAa,CAACM,IAAd,CAAmBE,KAAnB,CAAyBC,QAAzB,GAAoC,EAApC;UACAT,aAAa,CAACM,IAAd,CAAmBE,KAAnB,CAAyBE,WAAzB,GAAuC,EAAvC;QACD;MACF,CAND;IAOD;EACF,CA3BQ,EA2BN,CAACZ,UAAD,EAAaD,IAAb,CA3BM,CAAT;AA4BD"}