@basic-ui/core 0.0.41 → 0.0.44

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (350) hide show
  1. package/build/cjs/index.js +1312 -464
  2. package/build/cjs/index.js.map +1 -1
  3. package/build/esm/Accordion/Accordion.d.ts +0 -0
  4. package/build/esm/Accordion/Accordion.js +4 -3
  5. package/build/esm/Accordion/Accordion.js.map +1 -1
  6. package/build/esm/Accordion/AccordionBody.d.ts +0 -0
  7. package/build/esm/Accordion/AccordionBody.js +4 -3
  8. package/build/esm/Accordion/AccordionBody.js.map +1 -1
  9. package/build/esm/Accordion/AccordionHeader.d.ts +0 -0
  10. package/build/esm/Accordion/AccordionHeader.js +4 -3
  11. package/build/esm/Accordion/AccordionHeader.js.map +1 -1
  12. package/build/esm/Accordion/AccordionItem.d.ts +0 -0
  13. package/build/esm/Accordion/AccordionItem.js +2 -1
  14. package/build/esm/Accordion/AccordionItem.js.map +1 -1
  15. package/build/esm/Accordion/context.d.ts +0 -0
  16. package/build/esm/Accordion/context.js +0 -0
  17. package/build/esm/Accordion/context.js.map +1 -1
  18. package/build/esm/Accordion/index.d.ts +0 -0
  19. package/build/esm/Accordion/index.js +0 -0
  20. package/build/esm/Accordion/index.js.map +1 -1
  21. package/build/esm/Accordion/scopeQuery.d.ts +0 -0
  22. package/build/esm/Accordion/scopeQuery.js +0 -0
  23. package/build/esm/Accordion/scopeQuery.js.map +1 -1
  24. package/build/esm/CheckBox/CheckBox.d.ts +0 -0
  25. package/build/esm/CheckBox/CheckBox.js +2 -1
  26. package/build/esm/CheckBox/CheckBox.js.map +1 -1
  27. package/build/esm/CheckBox/index.d.ts +0 -0
  28. package/build/esm/CheckBox/index.js +0 -0
  29. package/build/esm/CheckBox/index.js.map +1 -1
  30. package/build/esm/ComboBox/Combobox.d.ts +0 -0
  31. package/build/esm/ComboBox/Combobox.js +3 -2
  32. package/build/esm/ComboBox/Combobox.js.map +1 -1
  33. package/build/esm/ComboBox/ComboboxButton.d.ts +0 -0
  34. package/build/esm/ComboBox/ComboboxButton.js +4 -3
  35. package/build/esm/ComboBox/ComboboxButton.js.map +1 -1
  36. package/build/esm/ComboBox/ComboboxInput.d.ts +0 -0
  37. package/build/esm/ComboBox/ComboboxInput.js +3 -2
  38. package/build/esm/ComboBox/ComboboxInput.js.map +1 -1
  39. package/build/esm/ComboBox/ComboboxLabel.d.ts +0 -0
  40. package/build/esm/ComboBox/ComboboxLabel.js +2 -1
  41. package/build/esm/ComboBox/ComboboxLabel.js.map +1 -1
  42. package/build/esm/ComboBox/ComboboxList.d.ts +0 -0
  43. package/build/esm/ComboBox/ComboboxList.js +3 -2
  44. package/build/esm/ComboBox/ComboboxList.js.map +1 -1
  45. package/build/esm/ComboBox/ComboboxOption.d.ts +0 -0
  46. package/build/esm/ComboBox/ComboboxOption.js +4 -3
  47. package/build/esm/ComboBox/ComboboxOption.js.map +1 -1
  48. package/build/esm/ComboBox/ComboboxPopover.d.ts +0 -0
  49. package/build/esm/ComboBox/ComboboxPopover.js +5 -4
  50. package/build/esm/ComboBox/ComboboxPopover.js.map +1 -1
  51. package/build/esm/ComboBox/cities.d.ts +0 -0
  52. package/build/esm/ComboBox/cities.js +0 -0
  53. package/build/esm/ComboBox/cities.js.map +1 -1
  54. package/build/esm/ComboBox/context.d.ts +0 -0
  55. package/build/esm/ComboBox/context.js +0 -0
  56. package/build/esm/ComboBox/context.js.map +1 -1
  57. package/build/esm/ComboBox/hooks.d.ts +0 -0
  58. package/build/esm/ComboBox/hooks.js +11 -11
  59. package/build/esm/ComboBox/hooks.js.map +1 -1
  60. package/build/esm/ComboBox/index.d.ts +0 -0
  61. package/build/esm/ComboBox/index.js +0 -0
  62. package/build/esm/ComboBox/index.js.map +1 -1
  63. package/build/esm/ComboBox/makeHash.d.ts +0 -0
  64. package/build/esm/ComboBox/makeHash.js +0 -0
  65. package/build/esm/ComboBox/makeHash.js.map +1 -1
  66. package/build/esm/ComboBox/scopeQuery.d.ts +0 -0
  67. package/build/esm/ComboBox/scopeQuery.js +0 -0
  68. package/build/esm/ComboBox/scopeQuery.js.map +1 -1
  69. package/build/esm/FocusLock/FocusLock.d.ts +0 -0
  70. package/build/esm/FocusLock/FocusLock.js +2 -1
  71. package/build/esm/FocusLock/FocusLock.js.map +1 -1
  72. package/build/esm/FocusLock/index.d.ts +0 -0
  73. package/build/esm/FocusLock/index.js +0 -0
  74. package/build/esm/FocusLock/index.js.map +1 -1
  75. package/build/esm/FocusLock/tabUtils.d.ts +0 -0
  76. package/build/esm/FocusLock/tabUtils.js +0 -0
  77. package/build/esm/FocusLock/tabUtils.js.map +1 -1
  78. package/build/esm/FocusLock/useFocusLock.d.ts +0 -0
  79. package/build/esm/FocusLock/useFocusLock.js +0 -0
  80. package/build/esm/FocusLock/useFocusLock.js.map +1 -1
  81. package/build/esm/List/List.d.ts +0 -0
  82. package/build/esm/List/List.js +2 -1
  83. package/build/esm/List/List.js.map +1 -1
  84. package/build/esm/List/ListItem.d.ts +0 -0
  85. package/build/esm/List/ListItem.js +2 -1
  86. package/build/esm/List/ListItem.js.map +1 -1
  87. package/build/esm/List/context.d.ts +0 -0
  88. package/build/esm/List/context.js +0 -0
  89. package/build/esm/List/context.js.map +1 -1
  90. package/build/esm/List/index.d.ts +0 -0
  91. package/build/esm/List/index.js +0 -0
  92. package/build/esm/List/index.js.map +1 -1
  93. package/build/esm/Menu/Menu.d.ts +0 -0
  94. package/build/esm/Menu/Menu.js +2 -1
  95. package/build/esm/Menu/Menu.js.map +1 -1
  96. package/build/esm/Menu/MenuButton.d.ts +0 -0
  97. package/build/esm/Menu/MenuButton.js +3 -2
  98. package/build/esm/Menu/MenuButton.js.map +1 -1
  99. package/build/esm/Menu/MenuItem.d.ts +0 -0
  100. package/build/esm/Menu/MenuItem.js +4 -3
  101. package/build/esm/Menu/MenuItem.js.map +1 -1
  102. package/build/esm/Menu/MenuList.d.ts +0 -0
  103. package/build/esm/Menu/MenuList.js +6 -5
  104. package/build/esm/Menu/MenuList.js.map +1 -1
  105. package/build/esm/Menu/MenuPopover.d.ts +0 -0
  106. package/build/esm/Menu/MenuPopover.js +2 -1
  107. package/build/esm/Menu/MenuPopover.js.map +1 -1
  108. package/build/esm/Menu/context.d.ts +0 -0
  109. package/build/esm/Menu/context.js +0 -0
  110. package/build/esm/Menu/context.js.map +1 -1
  111. package/build/esm/Menu/index.d.ts +0 -0
  112. package/build/esm/Menu/index.js +0 -0
  113. package/build/esm/Menu/index.js.map +1 -1
  114. package/build/esm/Menu/scope.d.ts +0 -0
  115. package/build/esm/Menu/scope.js +0 -0
  116. package/build/esm/Menu/scope.js.map +1 -1
  117. package/build/esm/Modal/Modal.d.ts +0 -0
  118. package/build/esm/Modal/Modal.js +5 -4
  119. package/build/esm/Modal/Modal.js.map +1 -1
  120. package/build/esm/Modal/ModalBackdrop.d.ts +0 -0
  121. package/build/esm/Modal/ModalBackdrop.js +6 -5
  122. package/build/esm/Modal/ModalBackdrop.js.map +1 -1
  123. package/build/esm/Modal/index.d.ts +0 -0
  124. package/build/esm/Modal/index.js +0 -0
  125. package/build/esm/Modal/index.js.map +1 -1
  126. package/build/esm/Popper/Popper.d.ts +0 -0
  127. package/build/esm/Popper/Popper.js +6 -5
  128. package/build/esm/Popper/Popper.js.map +1 -1
  129. package/build/esm/Popper/PopperArrow.d.ts +0 -0
  130. package/build/esm/Popper/PopperArrow.js +5 -5
  131. package/build/esm/Popper/PopperArrow.js.map +1 -1
  132. package/build/esm/Popper/context.d.ts +0 -0
  133. package/build/esm/Popper/context.js +0 -0
  134. package/build/esm/Popper/context.js.map +1 -1
  135. package/build/esm/Popper/index.d.ts +0 -0
  136. package/build/esm/Popper/index.js +0 -0
  137. package/build/esm/Popper/index.js.map +1 -1
  138. package/build/esm/Portal/Portal.d.ts +0 -0
  139. package/build/esm/Portal/Portal.js +0 -0
  140. package/build/esm/Portal/Portal.js.map +1 -1
  141. package/build/esm/Portal/index.d.ts +0 -0
  142. package/build/esm/Portal/index.js +0 -0
  143. package/build/esm/Portal/index.js.map +1 -1
  144. package/build/esm/RadioButton/RadioButton.d.ts +0 -0
  145. package/build/esm/RadioButton/RadioButton.js +5 -2
  146. package/build/esm/RadioButton/RadioButton.js.map +1 -1
  147. package/build/esm/RadioButton/RadioGroup.d.ts +0 -0
  148. package/build/esm/RadioButton/RadioGroup.js +2 -1
  149. package/build/esm/RadioButton/RadioGroup.js.map +1 -1
  150. package/build/esm/RadioButton/context.d.ts +0 -0
  151. package/build/esm/RadioButton/context.js +0 -0
  152. package/build/esm/RadioButton/context.js.map +1 -1
  153. package/build/esm/RadioButton/index.d.ts +0 -0
  154. package/build/esm/RadioButton/index.js +0 -0
  155. package/build/esm/RadioButton/index.js.map +1 -1
  156. package/build/esm/SkipNav/SkipNav.d.ts +0 -0
  157. package/build/esm/SkipNav/SkipNav.js +2 -1
  158. package/build/esm/SkipNav/SkipNav.js.map +1 -1
  159. package/build/esm/SkipNav/index.d.ts +0 -0
  160. package/build/esm/SkipNav/index.js +0 -0
  161. package/build/esm/SkipNav/index.js.map +1 -1
  162. package/build/esm/Slider/Slider.d.ts +218 -0
  163. package/build/esm/Slider/Slider.js +842 -0
  164. package/build/esm/Slider/Slider.js.map +1 -0
  165. package/build/esm/Slider/index.d.ts +1 -0
  166. package/build/esm/Slider/index.js +2 -0
  167. package/build/esm/Slider/index.js.map +1 -0
  168. package/build/esm/Spinner/Spinner.d.ts +0 -0
  169. package/build/esm/Spinner/Spinner.js +2 -1
  170. package/build/esm/Spinner/Spinner.js.map +1 -1
  171. package/build/esm/Spinner/SpinnerButton.d.ts +0 -0
  172. package/build/esm/Spinner/SpinnerButton.js +3 -2
  173. package/build/esm/Spinner/SpinnerButton.js.map +1 -1
  174. package/build/esm/Spinner/context.d.ts +0 -0
  175. package/build/esm/Spinner/context.js +0 -0
  176. package/build/esm/Spinner/context.js.map +1 -1
  177. package/build/esm/Spinner/index.d.ts +0 -0
  178. package/build/esm/Spinner/index.js +0 -0
  179. package/build/esm/Spinner/index.js.map +1 -1
  180. package/build/esm/Tabs/Tab.d.ts +0 -0
  181. package/build/esm/Tabs/Tab.js +3 -2
  182. package/build/esm/Tabs/Tab.js.map +1 -1
  183. package/build/esm/Tabs/TabList.d.ts +0 -0
  184. package/build/esm/Tabs/TabList.js +4 -3
  185. package/build/esm/Tabs/TabList.js.map +1 -1
  186. package/build/esm/Tabs/TabPanel.d.ts +0 -0
  187. package/build/esm/Tabs/TabPanel.js +4 -3
  188. package/build/esm/Tabs/TabPanel.js.map +1 -1
  189. package/build/esm/Tabs/TabPanels.d.ts +0 -0
  190. package/build/esm/Tabs/TabPanels.js +4 -3
  191. package/build/esm/Tabs/TabPanels.js.map +1 -1
  192. package/build/esm/Tabs/Tabs.d.ts +0 -0
  193. package/build/esm/Tabs/Tabs.js +2 -1
  194. package/build/esm/Tabs/Tabs.js.map +1 -1
  195. package/build/esm/Tabs/context.d.ts +0 -0
  196. package/build/esm/Tabs/context.js +0 -0
  197. package/build/esm/Tabs/context.js.map +1 -1
  198. package/build/esm/Tabs/index.d.ts +0 -0
  199. package/build/esm/Tabs/index.js +0 -0
  200. package/build/esm/Tabs/index.js.map +1 -1
  201. package/build/esm/Tabs/scopeQuery.d.ts +0 -0
  202. package/build/esm/Tabs/scopeQuery.js +0 -0
  203. package/build/esm/Tabs/scopeQuery.js.map +1 -1
  204. package/build/esm/Tooltip/Tooltip.d.ts +0 -0
  205. package/build/esm/Tooltip/Tooltip.js +4 -2
  206. package/build/esm/Tooltip/Tooltip.js.map +1 -1
  207. package/build/esm/Tooltip/index.d.ts +0 -0
  208. package/build/esm/Tooltip/index.js +0 -0
  209. package/build/esm/Tooltip/index.js.map +1 -1
  210. package/build/esm/Tooltip/stateMachine.d.ts +0 -0
  211. package/build/esm/Tooltip/stateMachine.js +9 -9
  212. package/build/esm/Tooltip/stateMachine.js.map +1 -1
  213. package/build/esm/Tooltip/useTooltip.d.ts +0 -0
  214. package/build/esm/Tooltip/useTooltip.js +6 -5
  215. package/build/esm/Tooltip/useTooltip.js.map +1 -1
  216. package/build/esm/hooks/index.d.ts +0 -0
  217. package/build/esm/hooks/index.js +0 -0
  218. package/build/esm/hooks/index.js.map +1 -1
  219. package/build/esm/hooks/useAutoFocus.d.ts +0 -0
  220. package/build/esm/hooks/useAutoFocus.js +0 -0
  221. package/build/esm/hooks/useAutoFocus.js.map +1 -1
  222. package/build/esm/hooks/useChildrenCounter.d.ts +0 -0
  223. package/build/esm/hooks/useChildrenCounter.js +0 -0
  224. package/build/esm/hooks/useChildrenCounter.js.map +1 -1
  225. package/build/esm/hooks/useControlledState.d.ts +1 -1
  226. package/build/esm/hooks/useControlledState.js +8 -7
  227. package/build/esm/hooks/useControlledState.js.map +1 -1
  228. package/build/esm/hooks/useFocusReturn.d.ts +0 -0
  229. package/build/esm/hooks/useFocusReturn.js +2 -2
  230. package/build/esm/hooks/useFocusReturn.js.map +1 -1
  231. package/build/esm/hooks/useFocusState.d.ts +2 -2
  232. package/build/esm/hooks/useFocusState.js +1 -1
  233. package/build/esm/hooks/useFocusState.js.map +1 -1
  234. package/build/esm/hooks/useGestureHandlers.d.ts +0 -0
  235. package/build/esm/hooks/useGestureHandlers.js +23 -15
  236. package/build/esm/hooks/useGestureHandlers.js.map +1 -1
  237. package/build/esm/hooks/useMeasure.d.ts +0 -0
  238. package/build/esm/hooks/useMeasure.js +0 -1
  239. package/build/esm/hooks/useMeasure.js.map +1 -1
  240. package/build/esm/hooks/useOnClickOutside.d.ts +0 -0
  241. package/build/esm/hooks/useOnClickOutside.js +0 -0
  242. package/build/esm/hooks/useOnClickOutside.js.map +1 -1
  243. package/build/esm/hooks/useOnKeyDown.d.ts +1 -1
  244. package/build/esm/hooks/useOnKeyDown.js +5 -5
  245. package/build/esm/hooks/useOnKeyDown.js.map +1 -1
  246. package/build/esm/hooks/useReducerMachine.d.ts +0 -0
  247. package/build/esm/hooks/useReducerMachine.js +2 -1
  248. package/build/esm/hooks/useReducerMachine.js.map +1 -1
  249. package/build/esm/hooks/useRemoveBodyScroll.d.ts +2 -1
  250. package/build/esm/hooks/useRemoveBodyScroll.js +12 -8
  251. package/build/esm/hooks/useRemoveBodyScroll.js.map +1 -1
  252. package/build/esm/hooks/useScope.d.ts +0 -0
  253. package/build/esm/hooks/useScope.js +0 -0
  254. package/build/esm/hooks/useScope.js.map +1 -1
  255. package/build/esm/hooks/useThrottle.d.ts +0 -0
  256. package/build/esm/hooks/useThrottle.js +0 -0
  257. package/build/esm/hooks/useThrottle.js.map +1 -1
  258. package/build/esm/index.d.ts +1 -0
  259. package/build/esm/index.js +1 -0
  260. package/build/esm/index.js.map +1 -1
  261. package/build/esm/utils/assign-ref.d.ts +3 -0
  262. package/build/esm/utils/{assignRef.js → assign-ref.js} +1 -1
  263. package/build/esm/utils/assign-ref.js.map +1 -0
  264. package/build/esm/utils/can-use-dom.d.ts +1 -0
  265. package/build/esm/utils/can-use-dom.js +4 -0
  266. package/build/esm/utils/can-use-dom.js.map +1 -0
  267. package/build/esm/utils/clamp.d.ts +0 -0
  268. package/build/esm/utils/clamp.js +0 -0
  269. package/build/esm/utils/clamp.js.map +1 -1
  270. package/build/esm/utils/context.d.ts +7 -0
  271. package/build/esm/utils/context.js +41 -0
  272. package/build/esm/utils/context.js.map +1 -0
  273. package/build/esm/utils/{createSubscription.d.ts → create-subscription.d.ts} +0 -0
  274. package/build/esm/utils/{createSubscription.js → create-subscription.js} +1 -1
  275. package/build/esm/utils/create-subscription.js.map +1 -0
  276. package/build/esm/utils/{getCircularIndex.d.ts → get-circular-index.d.ts} +0 -0
  277. package/build/esm/utils/{getCircularIndex.js → get-circular-index.js} +1 -1
  278. package/build/esm/utils/get-circular-index.js.map +1 -0
  279. package/build/esm/utils/index.d.ts +10 -4
  280. package/build/esm/utils/index.js +10 -4
  281. package/build/esm/utils/index.js.map +1 -1
  282. package/build/esm/utils/is-right-click.d.ts +6 -0
  283. package/build/esm/utils/is-right-click.js +9 -0
  284. package/build/esm/utils/is-right-click.js.map +1 -0
  285. package/build/esm/utils/owner-document.d.ts +7 -0
  286. package/build/esm/utils/owner-document.js +12 -0
  287. package/build/esm/utils/owner-document.js.map +1 -0
  288. package/build/esm/utils/polymorphic.d.ts +32 -0
  289. package/build/esm/utils/polymorphic.js +2 -0
  290. package/build/esm/utils/polymorphic.js.map +1 -0
  291. package/build/esm/utils/{rubberBandClamp.d.ts → rubber-band-clamp.d.ts} +0 -0
  292. package/build/esm/utils/{rubberBandClamp.js → rubber-band-clamp.js} +1 -1
  293. package/build/esm/utils/rubber-band-clamp.js.map +1 -0
  294. package/build/esm/utils/use-stable-callback.d.ts +16 -0
  295. package/build/esm/utils/use-stable-callback.js +43 -0
  296. package/build/esm/utils/use-stable-callback.js.map +1 -0
  297. package/build/esm/utils/wrap-event.d.ts +3 -0
  298. package/build/esm/utils/{wrapEvent.js → wrap-event.js} +1 -1
  299. package/build/esm/utils/wrap-event.js.map +1 -0
  300. package/build/tsconfig-build.tsbuildinfo +1 -1
  301. package/package.json +4 -5
  302. package/src/ComboBox/ComboboxButton.tsx +2 -2
  303. package/src/ComboBox/ComboboxOption.tsx +1 -1
  304. package/src/ComboBox/ComboboxPopover.tsx +2 -2
  305. package/src/ComboBox/hooks.tsx +1 -1
  306. package/src/Menu/MenuButton.tsx +1 -1
  307. package/src/Menu/MenuItem.tsx +1 -1
  308. package/src/Menu/MenuList.tsx +1 -1
  309. package/src/Modal/Modal.tsx +1 -1
  310. package/src/Modal/ModalBackdrop.tsx +2 -2
  311. package/src/Popper/Popper.tsx +1 -1
  312. package/src/Popper/PopperArrow.tsx +2 -4
  313. package/src/Slider/Slider.story.tsx +45 -0
  314. package/src/Slider/Slider.tsx +1106 -0
  315. package/src/Slider/index.ts +1 -0
  316. package/src/Slider/styles.css +131 -0
  317. package/src/Tooltip/Tooltip.story.tsx +2 -2
  318. package/src/Tooltip/stateMachine.ts +9 -13
  319. package/src/Tooltip/useTooltip.ts +2 -2
  320. package/src/hooks/useControlledState.ts +12 -9
  321. package/src/hooks/useFocusState.ts +1 -1
  322. package/src/hooks/useGestureHandlers.ts +22 -12
  323. package/src/hooks/useMeasure.ts +0 -1
  324. package/src/hooks/useOnKeyDown.ts +4 -3
  325. package/src/hooks/useRemoveBodyScroll.ts +18 -8
  326. package/src/index.ts +1 -0
  327. package/src/utils/{assignRef.ts → assign-ref.ts} +4 -4
  328. package/src/utils/can-use-dom.ts +7 -0
  329. package/src/utils/context.tsx +48 -0
  330. package/src/utils/{createSubscription.ts → create-subscription.ts} +0 -0
  331. package/src/utils/{getCircularIndex.ts → get-circular-index.ts} +0 -0
  332. package/src/utils/index.ts +10 -4
  333. package/src/utils/is-right-click.ts +14 -0
  334. package/src/utils/owner-document.ts +13 -0
  335. package/src/utils/polymorphic.ts +72 -0
  336. package/src/utils/{rubberBandClamp.ts → rubber-band-clamp.ts} +0 -0
  337. package/src/utils/use-stable-callback.ts +58 -0
  338. package/src/utils/wrap-event.ts +22 -0
  339. package/build/esm/hooks/useId.d.ts +0 -3
  340. package/build/esm/hooks/useId.js +0 -16
  341. package/build/esm/hooks/useId.js.map +0 -1
  342. package/build/esm/utils/assignRef.d.ts +0 -3
  343. package/build/esm/utils/assignRef.js.map +0 -1
  344. package/build/esm/utils/createSubscription.js.map +0 -1
  345. package/build/esm/utils/getCircularIndex.js.map +0 -1
  346. package/build/esm/utils/rubberBandClamp.js.map +0 -1
  347. package/build/esm/utils/wrapEvent.d.ts +0 -3
  348. package/build/esm/utils/wrapEvent.js.map +0 -1
  349. package/build/tsconfig.tsbuildinfo +0 -1
  350. package/src/utils/wrapEvent.ts +0 -19
File without changes
@@ -1,6 +1,8 @@
1
1
  import _extends from "@babel/runtime/helpers/extends";
2
2
  import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
3
3
  import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
4
+ var _excluded = ["as", "innerAs", "children", "disabled"],
5
+ _excluded2 = ["visible"];
4
6
  import { forwardRef, cloneElement, Children } from 'react';
5
7
  import { useTooltip } from './useTooltip';
6
8
  import { Fragment as _Fragment } from "react/jsx-runtime";
@@ -13,7 +15,7 @@ export var Tooltip = /*#__PURE__*/forwardRef(function Tooltip(props, forwardedRe
13
15
  children = props.children,
14
16
  _props$disabled = props.disabled,
15
17
  disabled = _props$disabled === void 0 ? false : _props$disabled,
16
- otherProps = _objectWithoutProperties(props, ["as", "innerAs", "children", "disabled"]);
18
+ otherProps = _objectWithoutProperties(props, _excluded);
17
19
 
18
20
  var child = Children.only(children);
19
21
 
@@ -22,7 +24,7 @@ export var Tooltip = /*#__PURE__*/forwardRef(function Tooltip(props, forwardedRe
22
24
  childProps = _useTooltip2[0],
23
25
  _useTooltip2$ = _useTooltip2[1],
24
26
  visible = _useTooltip2$.visible,
25
- tooltipProps = _objectWithoutProperties(_useTooltip2$, ["visible"]);
27
+ tooltipProps = _objectWithoutProperties(_useTooltip2$, _excluded2);
26
28
 
27
29
  if (disabled) {
28
30
  return /*#__PURE__*/_jsx(_Fragment, {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/Tooltip/Tooltip.tsx"],"names":["forwardRef","cloneElement","Children","useTooltip","Tooltip","props","forwardedRef","as","Comp","innerAs","children","disabled","otherProps","child","only","ref","childProps","visible","tooltipProps"],"mappings":";;;AAOA,SAASA,UAAT,EAAqBC,YAArB,EAAmCC,QAAnC,QAAmD,OAAnD;AAEA,SAASC,UAAT,QAA2B,cAA3B;;;;AAWA,OAAO,IAAMC,OAAO,gBAAGJ,UAAU,CAC/B,SAASI,OAAT,CAAiBC,KAAjB,EAAwBC,YAAxB,EAAsC;AAAA,kBAOhCD,KAPgC,CAElCE,EAFkC;AAAA,MAE9BC,IAF8B,0BAEvB,KAFuB;AAAA,MAGlCC,OAHkC,GAOhCJ,KAPgC,CAGlCI,OAHkC;AAAA,MAIlCC,QAJkC,GAOhCL,KAPgC,CAIlCK,QAJkC;AAAA,wBAOhCL,KAPgC,CAKlCM,QALkC;AAAA,MAKlCA,QALkC,gCAKvB,KALuB;AAAA,MAM/BC,UAN+B,4BAOhCP,KAPgC;;AAQpC,MAAMQ,KAAwC,GAAGX,QAAQ,CAACY,IAAT,CAC/CJ,QAD+C,CAAjD;;AARoC,oBAWeP,UAAU,CAC3DU,KAAK,CAACR,KADqD,EAE3DQ,KAAK,CAACE,GAFqD,EAG3DH,UAH2D,CAXzB;AAAA;AAAA,MAW7BI,UAX6B;AAAA;AAAA,MAWfC,OAXe,iBAWfA,OAXe;AAAA,MAWHC,YAXG;;AAiBpC,MAAIP,QAAJ,EAAc;AACZ,wBAAO;AAAA,gBAAGE;AAAH,MAAP;AACD;;AAED,sBACE;AAAA,4BACGZ,YAAY,CAACY,KAAD,EAAQG,UAAR,CADf,EAEGC,OAAO,iBAAI,KAAC,IAAD;AAAM,MAAA,EAAE,EAAER,OAAV;AAAmB,MAAA,GAAG,EAAEH;AAAxB,OAA0CY,YAA1C,EAFd;AAAA,IADF;AAMD,CA5B8B,CAA1B","sourcesContent":["import type {\n ElementType,\n HTMLAttributes,\n ReactElement,\n ReactNode,\n RefAttributes,\n} from 'react';\nimport { forwardRef, cloneElement, Children } from 'react';\n\nimport { useTooltip } from './useTooltip';\nexport type { InjectedTooltipProps } from './useTooltip';\n\nexport interface TooltipProps extends HTMLAttributes<HTMLDivElement> {\n as?: ElementType<any>;\n innerAs?: ElementType<any>;\n children?: ReactNode;\n label: ReactNode;\n disabled?: boolean;\n}\n\nexport const Tooltip = forwardRef<HTMLDivElement, TooltipProps>(\n function Tooltip(props, forwardedRef) {\n const {\n as: Comp = 'div',\n innerAs,\n children,\n disabled = false,\n ...otherProps\n } = props;\n const child: ReactElement & RefAttributes<any> = Children.only(\n children\n ) as any;\n const [childProps, { visible, ...tooltipProps }] = useTooltip(\n child.props,\n child.ref,\n otherProps\n );\n\n if (disabled) {\n return <>{child}</>;\n }\n\n return (\n <>\n {cloneElement(child, childProps)}\n {visible && <Comp as={innerAs} ref={forwardedRef} {...tooltipProps} />}\n </>\n );\n }\n);\n"],"file":"Tooltip.js"}
1
+ {"version":3,"file":"Tooltip.js","names":["forwardRef","cloneElement","Children","useTooltip","Tooltip","props","forwardedRef","as","Comp","innerAs","children","disabled","otherProps","child","only","ref","childProps","visible","tooltipProps"],"sources":["../../../src/Tooltip/Tooltip.tsx"],"sourcesContent":["import type {\n ElementType,\n HTMLAttributes,\n ReactElement,\n ReactNode,\n RefAttributes,\n} from 'react';\nimport { forwardRef, cloneElement, Children } from 'react';\n\nimport { useTooltip } from './useTooltip';\nexport type { InjectedTooltipProps } from './useTooltip';\n\nexport interface TooltipProps extends HTMLAttributes<HTMLDivElement> {\n as?: ElementType<any>;\n innerAs?: ElementType<any>;\n children?: ReactNode;\n label: ReactNode;\n disabled?: boolean;\n}\n\nexport const Tooltip = forwardRef<HTMLDivElement, TooltipProps>(\n function Tooltip(props, forwardedRef) {\n const {\n as: Comp = 'div',\n innerAs,\n children,\n disabled = false,\n ...otherProps\n } = props;\n const child: ReactElement & RefAttributes<any> = Children.only(\n children\n ) as any;\n const [childProps, { visible, ...tooltipProps }] = useTooltip(\n child.props,\n child.ref,\n otherProps\n );\n\n if (disabled) {\n return <>{child}</>;\n }\n\n return (\n <>\n {cloneElement(child, childProps)}\n {visible && <Comp as={innerAs} ref={forwardedRef} {...tooltipProps} />}\n </>\n );\n }\n);\n"],"mappings":";;;;;AAOA,SAASA,UAAT,EAAqBC,YAArB,EAAmCC,QAAnC,QAAmD,OAAnD;AAEA,SAASC,UAAT,QAA2B,cAA3B;;;;AAWA,OAAO,IAAMC,OAAO,gBAAGJ,UAAU,CAC/B,SAASI,OAAT,CAAiBC,KAAjB,EAAwBC,YAAxB,EAAsC;EACpC,gBAMID,KANJ,CACEE,EADF;EAAA,IACMC,IADN,0BACa,KADb;EAAA,IAEEC,OAFF,GAMIJ,KANJ,CAEEI,OAFF;EAAA,IAGEC,QAHF,GAMIL,KANJ,CAGEK,QAHF;EAAA,sBAMIL,KANJ,CAIEM,QAJF;EAAA,IAIEA,QAJF,gCAIa,KAJb;EAAA,IAKKC,UALL,4BAMIP,KANJ;;EAOA,IAAMQ,KAAwC,GAAGX,QAAQ,CAACY,IAAT,CAC/CJ,QAD+C,CAAjD;;EAGA,kBAAmDP,UAAU,CAC3DU,KAAK,CAACR,KADqD,EAE3DQ,KAAK,CAACE,GAFqD,EAG3DH,UAH2D,CAA7D;EAAA;EAAA,IAAOI,UAAP;EAAA;EAAA,IAAqBC,OAArB,iBAAqBA,OAArB;EAAA,IAAiCC,YAAjC;;EAMA,IAAIP,QAAJ,EAAc;IACZ,oBAAO;MAAA,UAAGE;IAAH,EAAP;EACD;;EAED,oBACE;IAAA,wBACGZ,YAAY,CAACY,KAAD,EAAQG,UAAR,CADf,EAEGC,OAAO,iBAAI,KAAC,IAAD;MAAM,EAAE,EAAER,OAAV;MAAmB,GAAG,EAAEH;IAAxB,GAA0CY,YAA1C,EAFd;EAAA,EADF;AAMD,CA5B8B,CAA1B"}
File without changes
File without changes
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/Tooltip/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAd","sourcesContent":["export * from './Tooltip';\n"],"file":"index.js"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../../src/Tooltip/index.ts"],"sourcesContent":["export * from './Tooltip';\n"],"mappings":"AAAA,cAAc,WAAd"}
File without changes
@@ -3,7 +3,7 @@ import _defineProperty from "@babel/runtime/helpers/defineProperty";
3
3
 
4
4
  var _on, _on2, _on3, _on4, _on5, _states;
5
5
 
6
- import { createSubscription } from '../utils/createSubscription';
6
+ import { createSubscription } from '../utils/create-subscription';
7
7
  ////////////////////////////////////////////////////////////////////////////////
8
8
  // Timeouts:
9
9
  // Manages when the user "rests" on an element. Keeps the interface from being
@@ -11,28 +11,28 @@ import { createSubscription } from '../utils/createSubscription';
11
11
  var restTimeout;
12
12
 
13
13
  function startRestTimer() {
14
- window.clearTimeout(restTimeout);
15
- restTimeout = window.setTimeout(function () {
14
+ clearTimeout(restTimeout);
15
+ restTimeout = setTimeout(function () {
16
16
  send(Rest, undefined);
17
17
  }, 200);
18
18
  }
19
19
 
20
20
  function clearRestTimer() {
21
- window.clearTimeout(restTimeout);
21
+ clearTimeout(restTimeout);
22
22
  } // Manages the delay to hide the tooltip after rest leaves.
23
23
 
24
24
 
25
25
  var leavingVisibleTimer;
26
26
 
27
27
  function startLeavingVisibleTimer() {
28
- window.clearTimeout(leavingVisibleTimer);
29
- leavingVisibleTimer = window.setTimeout(function () {
28
+ clearTimeout(leavingVisibleTimer);
29
+ leavingVisibleTimer = setTimeout(function () {
30
30
  return send(TimeComplete, undefined);
31
31
  }, 100);
32
32
  }
33
33
 
34
34
  function clearLeavingVisibleTimer() {
35
- window.clearTimeout(leavingVisibleTimer);
35
+ clearTimeout(leavingVisibleTimer);
36
36
  } ////////////////////////////////////////////////////////////////////////////////
37
37
  // State machine
38
38
 
@@ -105,7 +105,7 @@ function transition(currentState, event, payload) {
105
105
 
106
106
  var currentStateValue = currentState.state;
107
107
  var stateDef = chart.states[currentState.state];
108
- var nextState = stateDef == null ? void 0 : (_stateDef$on = stateDef.on) == null ? void 0 : _stateDef$on[event]; // Really useful for debugging
108
+ var nextState = stateDef === null || stateDef === void 0 ? void 0 : (_stateDef$on = stateDef.on) === null || _stateDef$on === void 0 ? void 0 : _stateDef$on[event]; // Really useful for debugging
109
109
  // console.log({
110
110
  // event,
111
111
  // state: state.current.state,
@@ -128,7 +128,7 @@ function transition(currentState, event, payload) {
128
128
  nextDef.enter(nextStateValue, payload);
129
129
  }
130
130
 
131
- return _extends({}, currentState, payload, {
131
+ return _extends(_extends(_extends({}, currentState), payload), {}, {
132
132
  state: nextStateValue
133
133
  });
134
134
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/Tooltip/stateMachine.ts"],"names":["createSubscription","restTimeout","startRestTimer","window","clearTimeout","setTimeout","send","Rest","undefined","clearRestTimer","leavingVisibleTimer","startLeavingVisibleTimer","TimeComplete","clearLeavingVisibleTimer","Idle","Focused","Visible","LeavingVisible","Dismissed","Blur","Focus","GlobalMouseMove","MouseDown","MouseEnter","MouseLeave","MouseMove","SelectWithKeyboard","subscription","state","current","id","clearContextId","chart","initial","states","enter","on","leave","transition","currentState","event","payload","currentStateValue","stateDef","nextState","nextStateValue","nextDef","notify"],"mappings":"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","sourcesContent":["import { createSubscription } from '../utils/createSubscription';\nimport type { StateChart as GenericStateChart } from '../hooks/useReducerMachine';\n\n////////////////////////////////////////////////////////////////////////////////\n// Timeouts:\n\n// Manages when the user \"rests\" on an element. Keeps the interface from being\n// flashing tooltips all the time as the user moves the mouse around the screen.\nlet restTimeout: number;\nfunction startRestTimer() {\n window.clearTimeout(restTimeout);\n restTimeout = window.setTimeout(() => {\n send(Rest, undefined);\n }, 200);\n}\n\nfunction clearRestTimer() {\n window.clearTimeout(restTimeout);\n}\n\n// Manages the delay to hide the tooltip after rest leaves.\nlet leavingVisibleTimer: number;\n\nfunction startLeavingVisibleTimer() {\n window.clearTimeout(leavingVisibleTimer);\n leavingVisibleTimer = window.setTimeout(\n () => send(TimeComplete, undefined),\n 100\n );\n}\n\nfunction clearLeavingVisibleTimer() {\n window.clearTimeout(leavingVisibleTimer);\n}\n\n////////////////////////////////////////////////////////////////////////////////\n// State machine\n\nexport type TooltipStates =\n | 'IDLE'\n | 'FOCUSED'\n | 'VISIBLE'\n | 'LEAVING_VISIBLE'\n | 'DISMISSED';\n\n// Nothing goin' on\nexport const Idle = 'IDLE' as const;\n// We're considering showing the tooltip, but we're gonna wait a sec\nexport const Focused = 'FOCUSED' as const;\n// It's on!\nexport const Visible = 'VISIBLE' as const;\n// Focus has left, but we want to keep it visible for a sec\nexport const LeavingVisible = 'LEAVING_VISIBLE' as const;\n// The user clicked the tool, so we want to hide the thing, we can't just use\n// IDLE because we need to ignore mousemove, etc.\nexport const Dismissed = 'DISMISSED' as const;\n\nexport type TooltipEventTypes =\n | 'BLUR'\n | 'FOCUS'\n | 'GLOBAL_MOUSE_MOVE'\n | 'MOUSE_DOWN'\n | 'MOUSE_ENTER'\n | 'MOUSE_LEAVE'\n | 'MOUSE_MOVE'\n | 'REST'\n | 'SELECT_WITH_KEYBOARD'\n | 'TIME_COMPLETE';\n\nexport const Blur = 'BLUR' as const;\nexport const Focus = 'FOCUS' as const;\nexport const GlobalMouseMove = 'GLOBAL_MOUSE_MOVE' as const;\nexport const MouseDown = 'MOUSE_DOWN' as const;\nexport const MouseEnter = 'MOUSE_ENTER' as const;\nexport const MouseLeave = 'MOUSE_LEAVE' as const;\nexport const MouseMove = 'MOUSE_MOVE' as const;\nexport const Rest = 'REST' as const;\nexport const SelectWithKeyboard = 'SELECT_WITH_KEYBOARD' as const;\nexport const TimeComplete = 'TIME_COMPLETE' as const;\n\nexport const subscription = createSubscription();\nexport const state = {\n current: {\n state: Idle as TooltipStates,\n id: '',\n },\n};\n\nfunction clearContextId() {\n state.current.id = '';\n}\n\nconst chart: GenericStateChart<TooltipStates, TooltipEventTypes> = {\n initial: Idle,\n states: {\n [Idle]: {\n enter: () => {\n clearContextId();\n },\n on: {\n [MouseEnter]: Focused,\n [Focus]: Visible,\n },\n },\n [Focused]: {\n enter: startRestTimer,\n leave: clearRestTimer,\n on: {\n [MouseMove]: Focused,\n [MouseLeave]: Idle,\n [MouseDown]: Dismissed,\n [Blur]: Idle,\n [Rest]: Visible,\n },\n },\n [Visible]: {\n on: {\n [Focus]: Focused,\n [MouseEnter]: Focused,\n [MouseLeave]: LeavingVisible,\n [Blur]: LeavingVisible,\n [MouseDown]: Dismissed,\n [SelectWithKeyboard]: Dismissed,\n [GlobalMouseMove]: LeavingVisible,\n },\n },\n [LeavingVisible]: {\n enter: () => {\n startLeavingVisibleTimer();\n },\n leave: () => {\n clearLeavingVisibleTimer();\n clearContextId();\n },\n on: {\n [MouseEnter]: Visible,\n [Focus]: Visible,\n [TimeComplete]: Idle,\n },\n },\n [Dismissed]: {\n leave: () => {\n clearContextId();\n },\n on: {\n [MouseLeave]: Idle,\n [Blur]: Idle,\n },\n },\n },\n};\n\nfunction transition(\n currentState: typeof state['current'],\n event: TooltipEventTypes,\n payload?: Omit<typeof state['current'], 'state'>\n): typeof state['current'] {\n const currentStateValue = currentState.state;\n const stateDef = chart.states[currentState.state];\n const nextState = stateDef?.on?.[event];\n\n // Really useful for debugging\n // console.log({\n // event,\n // state: state.current.state,\n // id: state.current.id,\n // nextState,\n // });\n\n if (!nextState) {\n return currentState;\n }\n\n if (stateDef && stateDef.leave) {\n stateDef.leave(currentStateValue, payload);\n }\n\n const nextStateValue = nextState;\n const nextDef = chart.states[nextStateValue];\n if (nextDef && nextDef.enter) {\n nextDef.enter(nextStateValue, payload);\n }\n\n return { ...currentState, ...payload, state: nextStateValue };\n}\n\nexport function send<T extends TooltipEventTypes>(\n event: T,\n payload?: Omit<typeof state['current'], 'state'>\n) {\n const nextState = transition(state.current, event, payload);\n if (state.current !== nextState) {\n state.current = nextState;\n subscription.notify();\n }\n}\n"],"file":"stateMachine.js"}
1
+ {"version":3,"file":"stateMachine.js","names":["createSubscription","restTimeout","startRestTimer","clearTimeout","setTimeout","send","Rest","undefined","clearRestTimer","leavingVisibleTimer","startLeavingVisibleTimer","TimeComplete","clearLeavingVisibleTimer","Idle","Focused","Visible","LeavingVisible","Dismissed","Blur","Focus","GlobalMouseMove","MouseDown","MouseEnter","MouseLeave","MouseMove","SelectWithKeyboard","subscription","state","current","id","clearContextId","chart","initial","states","enter","on","leave","transition","currentState","event","payload","currentStateValue","stateDef","nextState","nextStateValue","nextDef","notify"],"sources":["../../../src/Tooltip/stateMachine.ts"],"sourcesContent":["import { createSubscription } from '../utils/create-subscription';\nimport type { StateChart as GenericStateChart } from '../hooks/useReducerMachine';\n\n////////////////////////////////////////////////////////////////////////////////\n// Timeouts:\n\n// Manages when the user \"rests\" on an element. Keeps the interface from being\n// flashing tooltips all the time as the user moves the mouse around the screen.\nlet restTimeout: NodeJS.Timeout;\nfunction startRestTimer() {\n clearTimeout(restTimeout);\n restTimeout = setTimeout(() => {\n send(Rest, undefined);\n }, 200);\n}\n\nfunction clearRestTimer() {\n clearTimeout(restTimeout);\n}\n\n// Manages the delay to hide the tooltip after rest leaves.\nlet leavingVisibleTimer: NodeJS.Timeout;\nfunction startLeavingVisibleTimer() {\n clearTimeout(leavingVisibleTimer);\n leavingVisibleTimer = setTimeout(() => send(TimeComplete, undefined), 100);\n}\n\nfunction clearLeavingVisibleTimer() {\n clearTimeout(leavingVisibleTimer);\n}\n\n////////////////////////////////////////////////////////////////////////////////\n// State machine\n\nexport type TooltipStates =\n | 'IDLE'\n | 'FOCUSED'\n | 'VISIBLE'\n | 'LEAVING_VISIBLE'\n | 'DISMISSED';\n\n// Nothing goin' on\nexport const Idle = 'IDLE' as const;\n// We're considering showing the tooltip, but we're gonna wait a sec\nexport const Focused = 'FOCUSED' as const;\n// It's on!\nexport const Visible = 'VISIBLE' as const;\n// Focus has left, but we want to keep it visible for a sec\nexport const LeavingVisible = 'LEAVING_VISIBLE' as const;\n// The user clicked the tool, so we want to hide the thing, we can't just use\n// IDLE because we need to ignore mousemove, etc.\nexport const Dismissed = 'DISMISSED' as const;\n\nexport type TooltipEventTypes =\n | 'BLUR'\n | 'FOCUS'\n | 'GLOBAL_MOUSE_MOVE'\n | 'MOUSE_DOWN'\n | 'MOUSE_ENTER'\n | 'MOUSE_LEAVE'\n | 'MOUSE_MOVE'\n | 'REST'\n | 'SELECT_WITH_KEYBOARD'\n | 'TIME_COMPLETE';\n\nexport const Blur = 'BLUR' as const;\nexport const Focus = 'FOCUS' as const;\nexport const GlobalMouseMove = 'GLOBAL_MOUSE_MOVE' as const;\nexport const MouseDown = 'MOUSE_DOWN' as const;\nexport const MouseEnter = 'MOUSE_ENTER' as const;\nexport const MouseLeave = 'MOUSE_LEAVE' as const;\nexport const MouseMove = 'MOUSE_MOVE' as const;\nexport const Rest = 'REST' as const;\nexport const SelectWithKeyboard = 'SELECT_WITH_KEYBOARD' as const;\nexport const TimeComplete = 'TIME_COMPLETE' as const;\n\nexport const subscription = createSubscription();\nexport const state = {\n current: {\n state: Idle as TooltipStates,\n id: '',\n },\n};\n\nfunction clearContextId() {\n state.current.id = '';\n}\n\nconst chart: GenericStateChart<TooltipStates, TooltipEventTypes> = {\n initial: Idle,\n states: {\n [Idle]: {\n enter: () => {\n clearContextId();\n },\n on: {\n [MouseEnter]: Focused,\n [Focus]: Visible,\n },\n },\n [Focused]: {\n enter: startRestTimer,\n leave: clearRestTimer,\n on: {\n [MouseMove]: Focused,\n [MouseLeave]: Idle,\n [MouseDown]: Dismissed,\n [Blur]: Idle,\n [Rest]: Visible,\n },\n },\n [Visible]: {\n on: {\n [Focus]: Focused,\n [MouseEnter]: Focused,\n [MouseLeave]: LeavingVisible,\n [Blur]: LeavingVisible,\n [MouseDown]: Dismissed,\n [SelectWithKeyboard]: Dismissed,\n [GlobalMouseMove]: LeavingVisible,\n },\n },\n [LeavingVisible]: {\n enter: () => {\n startLeavingVisibleTimer();\n },\n leave: () => {\n clearLeavingVisibleTimer();\n clearContextId();\n },\n on: {\n [MouseEnter]: Visible,\n [Focus]: Visible,\n [TimeComplete]: Idle,\n },\n },\n [Dismissed]: {\n leave: () => {\n clearContextId();\n },\n on: {\n [MouseLeave]: Idle,\n [Blur]: Idle,\n },\n },\n },\n};\n\nfunction transition(\n currentState: typeof state['current'],\n event: TooltipEventTypes,\n payload?: Omit<typeof state['current'], 'state'>\n): typeof state['current'] {\n const currentStateValue = currentState.state;\n const stateDef = chart.states[currentState.state];\n const nextState = stateDef?.on?.[event];\n\n // Really useful for debugging\n // console.log({\n // event,\n // state: state.current.state,\n // id: state.current.id,\n // nextState,\n // });\n\n if (!nextState) {\n return currentState;\n }\n\n if (stateDef && stateDef.leave) {\n stateDef.leave(currentStateValue, payload);\n }\n\n const nextStateValue = nextState;\n const nextDef = chart.states[nextStateValue];\n if (nextDef && nextDef.enter) {\n nextDef.enter(nextStateValue, payload);\n }\n\n return { ...currentState, ...payload, state: nextStateValue };\n}\n\nexport function send<T extends TooltipEventTypes>(\n event: T,\n payload?: Omit<typeof state['current'], 'state'>\n) {\n const nextState = transition(state.current, event, payload);\n if (state.current !== nextState) {\n state.current = nextState;\n subscription.notify();\n }\n}\n"],"mappings":"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"}
File without changes
@@ -1,9 +1,10 @@
1
1
  import _extends from "@babel/runtime/helpers/extends";
2
2
  import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
3
3
  import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
4
+ var _excluded = ["label", "onMouseEnter", "onMouseLeave", "onMouseMove"];
4
5
  import { useRef, useEffect, useState, useId } from 'react';
5
- import { assignMultipleRefs } from '../utils/assignRef';
6
- import { wrapEvent } from '../utils/wrapEvent';
6
+ import { assignMultipleRefs } from '../utils/assign-ref';
7
+ import { wrapEvent } from '../utils/wrap-event';
7
8
  import { send, state, subscription, Blur, Focus, LeavingVisible, MouseDown, MouseEnter, MouseLeave, MouseMove, SelectWithKeyboard, Visible } from './stateMachine';
8
9
  export function useTooltip(childProps, childRef, tooltipProps) {
9
10
  var onMouseEnter = childProps.onMouseEnter,
@@ -73,14 +74,14 @@ export function useTooltip(childProps, childRef, tooltipProps) {
73
74
  tooltipOnMouseEnter = tooltipProps.onMouseEnter,
74
75
  tooltipOnMouseLeave = tooltipProps.onMouseLeave,
75
76
  tooltipOnMouseMove = tooltipProps.onMouseMove,
76
- otherTooltipProps = _objectWithoutProperties(tooltipProps, ["label", "onMouseEnter", "onMouseLeave", "onMouseMove"]);
77
+ otherTooltipProps = _objectWithoutProperties(tooltipProps, _excluded);
77
78
 
78
79
  var tooltipId = "tooltip-".concat(id);
79
- return [_extends({}, childProps, {
80
+ return [_extends(_extends(_extends({}, childProps), {}, {
80
81
  ref: assignMultipleRefs(childRef, anchorEl)
81
82
  }, visible && !childProps['aria-label'] && {
82
83
  'aria-describedby': tooltipId
83
- }, {
84
+ }), {}, {
84
85
  onMouseEnter: wrapEvent(onMouseEnter, handleMouseEnter),
85
86
  onMouseLeave: wrapEvent(onMouseLeave, handleMouseLeave),
86
87
  onMouseMove: wrapEvent(onMouseMove, handleMouseMove),
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/Tooltip/useTooltip.ts"],"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"],"mappings":"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","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/assignRef';\nimport { wrapEvent } from '../utils/wrapEvent';\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"],"file":"useTooltip.js"}
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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"}
File without changes
File without changes
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/hooks/index.ts"],"names":[],"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","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"],"file":"index.js"}
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"}
File without changes
File without changes
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/hooks/useAutoFocus.ts"],"names":["useEffect","focusOnChildNode","useAutoFocus","open","elementRef","current","contains","document","activeElement"],"mappings":"AACA,SAASA,SAAT,QAA0B,OAA1B;AAEA,SAASC,gBAAT,QAAiC,uBAAjC;AAEA,OAAO,SAASC,YAAT,CACLC,IADK,EAELC,UAFK,EAGL;AACAJ,EAAAA,SAAS,CAAC,YAAM;AACd,QAAIG,IAAJ,EAAU;AACR;AACA,UACEC,UAAU,CAACC,OAAX,IACA,CAACD,UAAU,CAACC,OAAX,CAAmBC,QAAnB,CAA4BC,QAAQ,CAACC,aAArC,CAFH,EAGE;AACAP,QAAAA,gBAAgB,CAACG,UAAU,CAACC,OAAZ,EAAqB,CAArB,CAAhB;AACD;AACF,KATa,CAUd;;AACD,GAXQ,EAWN,CAACF,IAAD,CAXM,CAAT;AAYD","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"],"file":"useAutoFocus.js"}
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"}
File without changes
File without changes
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/hooks/useChildrenCounter.ts"],"names":["useEffect","useChildrenCounterParent","itemsRef","current","isNewRender","useChildrenCounterChild","itemIndexRef","obj","disabled","length","Function","push"],"mappings":"AACA,SAASA,SAAT,QAA0B,OAA1B;AAEA,OAAO,SAASC,wBAAT,CACLC,QADK,EAEL;AACA;AACA;AACA;AACA;AACAA,EAAAA,QAAQ,CAACC,OAAT,GAAmB,EAAnB;AACAD,EAAAA,QAAQ,CAACC,OAAT,CAAiBC,WAAjB,GAA+B,IAA/B;AAEAJ,EAAAA,SAAS,CAAC,YAAM;AACd;AACA;AACA;AACAE,IAAAA,QAAQ,CAACC,OAAT,CAAiBC,WAAjB,GAA+B,KAA/B;AACD,GALQ,CAAT;AAOAJ,EAAAA,SAAS,CAAC,YAAM;AACd;AACA;AACA,WAAO,YAAM;AACXE,MAAAA,QAAQ,CAACC,OAAT,GAAmB,EAAnB;AACD,KAFD;AAGD,GANQ,EAMN,CAACD,QAAD,CANM,CAAT;AAOD;AAED,OAAO,SAASG,uBAAT,CACLH,QADK,EAELI,YAFK,EAGLC,GAHK,EAKL;AAAA,MADAC,QACA,uEADW,KACX;;AACA,MAAIN,QAAQ,IAAIA,QAAQ,CAACC,OAAT,CAAiBC,WAAjC,EAA8C;AAC5C,QAAII,QAAJ,EAAc;AACZF,MAAAA,YAAY,CAACH,OAAb,GAAuB,CAAC,CAAxB;AACA;AACD,KAJ2C,CAM5C;;;AACAG,IAAAA,YAAY,CAACH,OAAb,GAAuBD,QAAQ,CAACC,OAAT,CAAiBM,MAAxC;;AAEA,QAAIF,GAAG,YAAYG,QAAnB,EAA6B;AAC3BR,MAAAA,QAAQ,CAACC,OAAT,CAAiBQ,IAAjB,CAAsBJ,GAAG,CAACD,YAAY,CAACH,OAAd,CAAzB;AACD,KAFD,MAEO;AACLD,MAAAA,QAAQ,CAACC,OAAT,CAAiBQ,IAAjB,CAAsBJ,GAAtB;AACD;AACF;AACF","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"],"file":"useChildrenCounter.js"}
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
1
  import type { Dispatch, SetStateAction, SyntheticEvent } from 'react';
2
2
  import type { CustomEventHandler } from '../utils';
3
- export declare function useControlledState<V, E extends SyntheticEvent<any>, H extends unknown[]>(valueProp: V | undefined, onChangeProp: CustomEventHandler<E, H> | undefined, defaultValue: V, defaultOnChange: (setValue: Dispatch<SetStateAction<V>>) => CustomEventHandler<E, H>): [V, CustomEventHandler<E, H> | undefined, Dispatch<SetStateAction<V>>];
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>];
@@ -2,23 +2,24 @@ import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
2
2
  import { useRef, useState } from 'react';
3
3
  import { wrapEvent } from '../utils';
4
4
  export function useControlledState(valueProp, onChangeProp, defaultValue, defaultOnChange) {
5
- var isControlled = useRef(valueProp !== undefined);
5
+ var isControlled = valueProp !== undefined;
6
+ var wasControlled = useRef(isControlled);
6
7
 
7
8
  var _useState = useState(defaultValue),
8
9
  _useState2 = _slicedToArray(_useState, 2),
9
10
  valueState = _useState2[0],
10
11
  setValueState = _useState2[1];
11
12
 
12
- if (isControlled.current) {
13
- if (valueProp === undefined) {
13
+ if (isControlled) {
14
+ if (wasControlled.current && process.env.NODE_ENV !== 'production') {
14
15
  console.warn('Trying to change from controlled to uncontrolled.');
15
- } // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
16
+ }
16
17
 
17
-
18
- return [valueProp, onChangeProp, setValueState];
18
+ return [// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
19
+ valueProp, wrapEvent(onChangeProp, defaultOnChange(setValueState))];
19
20
  }
20
21
 
21
22
  return [// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
22
- valueState, wrapEvent(onChangeProp, defaultOnChange(setValueState)), setValueState];
23
+ valueState, wrapEvent(onChangeProp, defaultOnChange(setValueState))];
23
24
  }
24
25
  //# sourceMappingURL=useControlledState.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/hooks/useControlledState.ts"],"names":["useRef","useState","wrapEvent","useControlledState","valueProp","onChangeProp","defaultValue","defaultOnChange","isControlled","undefined","valueState","setValueState","current","console","warn"],"mappings":";AACA,SAASA,MAAT,EAAiBC,QAAjB,QAAiC,OAAjC;AAGA,SAASC,SAAT,QAA0B,UAA1B;AAEA,OAAO,SAASC,kBAAT,CAKLC,SALK,EAMLC,YANK,EAOLC,YAPK,EAQLC,eARK,EAWmE;AACxE,MAAMC,YAAY,GAAGR,MAAM,CAACI,SAAS,KAAKK,SAAf,CAA3B;;AADwE,kBAEpCR,QAAQ,CAAIK,YAAJ,CAF4B;AAAA;AAAA,MAEjEI,UAFiE;AAAA,MAErDC,aAFqD;;AAIxE,MAAIH,YAAY,CAACI,OAAjB,EAA0B;AACxB,QAAIR,SAAS,KAAKK,SAAlB,EAA6B;AAC3BI,MAAAA,OAAO,CAACC,IAAR,CAAa,mDAAb;AACD,KAHuB,CAIxB;;;AACA,WAAO,CAACV,SAAD,EAAaC,YAAb,EAA2BM,aAA3B,CAAP;AACD;;AAED,SAAO,CACL;AACAD,EAAAA,UAFK,EAGLR,SAAS,CAACG,YAAD,EAAeE,eAAe,CAACI,aAAD,CAA9B,CAHJ,EAILA,aAJK,CAAP;AAMD","sourcesContent":["import type { Dispatch, SetStateAction, SyntheticEvent } from 'react';\nimport { useRef, useState } from 'react';\n\nimport type { CustomEventHandler } from '../utils';\nimport { wrapEvent } from '../utils';\n\nexport function useControlledState<\n V,\n E extends SyntheticEvent<any>,\n H extends unknown[]\n>(\n valueProp: V | undefined,\n onChangeProp: CustomEventHandler<E, H> | undefined,\n defaultValue: V,\n defaultOnChange: (\n setValue: Dispatch<SetStateAction<V>>\n ) => CustomEventHandler<E, H>\n): [V, CustomEventHandler<E, H> | undefined, Dispatch<SetStateAction<V>>] {\n const isControlled = useRef(valueProp !== undefined);\n const [valueState, setValueState] = useState<V>(defaultValue);\n\n if (isControlled.current) {\n if (valueProp === undefined) {\n console.warn('Trying to change from controlled to uncontrolled.');\n }\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n return [valueProp!, onChangeProp, setValueState];\n }\n\n return [\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n valueState!,\n wrapEvent(onChangeProp, defaultOnChange(setValueState)),\n setValueState,\n ];\n}\n"],"file":"useControlledState.js"}
1
+ {"version":3,"file":"useControlledState.js","names":["useRef","useState","wrapEvent","useControlledState","valueProp","onChangeProp","defaultValue","defaultOnChange","isControlled","undefined","wasControlled","valueState","setValueState","current","process","env","NODE_ENV","console","warn"],"sources":["../../../src/hooks/useControlledState.ts"],"sourcesContent":["import type { Dispatch, SetStateAction, SyntheticEvent } from 'react';\nimport { useRef, useState } from 'react';\n\nimport type { CustomEventHandler } from '../utils';\nimport { wrapEvent } from '../utils';\n\nexport function useControlledState<\n V,\n E extends SyntheticEvent<any> | Event,\n H extends unknown[]\n>(\n valueProp: V | undefined,\n onChangeProp: CustomEventHandler<E, H> | undefined,\n defaultValue: V | (() => V),\n defaultOnChange: (\n setValue: Dispatch<SetStateAction<V>>\n ) => CustomEventHandler<E, H>\n): [V, CustomEventHandler<E, H>] {\n const isControlled = valueProp !== undefined;\n const wasControlled = useRef(isControlled);\n const [valueState, setValueState] = useState<V>(defaultValue);\n\n if (isControlled) {\n if (wasControlled.current && process.env.NODE_ENV !== 'production') {\n console.warn('Trying to change from controlled to uncontrolled.');\n }\n return [\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n valueProp!,\n wrapEvent(onChangeProp, defaultOnChange(setValueState)),\n ];\n }\n\n return [\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n valueState!,\n wrapEvent(onChangeProp, defaultOnChange(setValueState)),\n ];\n}\n"],"mappings":";AACA,SAASA,MAAT,EAAiBC,QAAjB,QAAiC,OAAjC;AAGA,SAASC,SAAT,QAA0B,UAA1B;AAEA,OAAO,SAASC,kBAAT,CAKLC,SALK,EAMLC,YANK,EAOLC,YAPK,EAQLC,eARK,EAW0B;EAC/B,IAAMC,YAAY,GAAGJ,SAAS,KAAKK,SAAnC;EACA,IAAMC,aAAa,GAAGV,MAAM,CAACQ,YAAD,CAA5B;;EACA,gBAAoCP,QAAQ,CAAIK,YAAJ,CAA5C;EAAA;EAAA,IAAOK,UAAP;EAAA,IAAmBC,aAAnB;;EAEA,IAAIJ,YAAJ,EAAkB;IAChB,IAAIE,aAAa,CAACG,OAAd,IAAyBC,OAAO,CAACC,GAAR,CAAYC,QAAZ,KAAyB,YAAtD,EAAoE;MAClEC,OAAO,CAACC,IAAR,CAAa,mDAAb;IACD;;IACD,OAAO,CACL;IACAd,SAFK,EAGLF,SAAS,CAACG,YAAD,EAAeE,eAAe,CAACK,aAAD,CAA9B,CAHJ,CAAP;EAKD;;EAED,OAAO,CACL;EACAD,UAFK,EAGLT,SAAS,CAACG,YAAD,EAAeE,eAAe,CAACK,aAAD,CAA9B,CAHJ,CAAP;AAKD"}
File without changes
@@ -13,7 +13,7 @@ export function useFocusReturn(open, rootEl) {
13
13
 
14
14
  // once opened, keep track of the element that triggered
15
15
  // the Modal opening
16
- if (!previousFocusRef.current && document.activeElement instanceof HTMLElement && !((_rootEl$current = rootEl.current) != null && _rootEl$current.contains(document.activeElement))) {
16
+ if (!previousFocusRef.current && document.activeElement instanceof HTMLElement && !((_rootEl$current = rootEl.current) !== null && _rootEl$current !== void 0 && _rootEl$current.contains(document.activeElement))) {
17
17
  previousFocusRef.current = document.activeElement;
18
18
  }
19
19
 
@@ -21,7 +21,7 @@ export function useFocusReturn(open, rootEl) {
21
21
  var previousElement = previousFocusRef.current;
22
22
  return function () {
23
23
  // on unmount, return focus to that element
24
- if (previousElement && !(rootElement != null && rootElement.contains(document.activeElement))) {
24
+ if (previousElement && !(rootElement !== null && rootElement !== void 0 && rootElement.contains(document.activeElement))) {
25
25
  previousElement.focus({
26
26
  preventScroll: true
27
27
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/hooks/useFocusReturn.ts"],"names":["useEffect","useRef","useFocusReturn","open","rootEl","previousFocusRef","document","activeElement","HTMLElement","current","contains","rootElement","previousElement","focus","preventScroll"],"mappings":"AACA,SAASA,SAAT,EAAoBC,MAApB,QAAkC,OAAlC;AAEA,OAAO,SAASC,cAAT,CACLC,IADK,EAELC,MAFK,EAGL;AACA,MAAMC,gBAAgB,GAAGJ,MAAM,CAC5B,YAAM;AACL,QACEE,IAAI,IACJ,OAAOG,QAAP,KAAoB,WADpB,IAEAA,QAAQ,CAACC,aAAT,YAAkCC,WAHpC,EAIE;AACA,aAAOF,QAAQ,CAACC,aAAhB;AACD;;AACD,WAAO,IAAP;AACD,GATD,EAD6B,CAA/B;AAaAP,EAAAA,SAAS,CAAC,YAAM;AACd,QAAIG,IAAJ,EAAU;AAAA;;AACR;AACA;AACA,UACE,CAACE,gBAAgB,CAACI,OAAlB,IACAH,QAAQ,CAACC,aAAT,YAAkCC,WADlC,IAEA,qBAACJ,MAAM,CAACK,OAAR,aAAC,gBAAgBC,QAAhB,CAAyBJ,QAAQ,CAACC,aAAlC,CAAD,CAHF,EAIE;AACAF,QAAAA,gBAAgB,CAACI,OAAjB,GAA2BH,QAAQ,CAACC,aAApC;AACD;;AAED,UAAMI,WAAW,GAAGP,MAAM,CAACK,OAA3B;AACA,UAAMG,eAAe,GAAGP,gBAAgB,CAACI,OAAzC;AACA,aAAO,YAAM;AACX;AACA,YAAIG,eAAe,IAAI,EAACD,WAAD,YAACA,WAAW,CAAED,QAAb,CAAsBJ,QAAQ,CAACC,aAA/B,CAAD,CAAvB,EAAuE;AACrEK,UAAAA,eAAe,CAACC,KAAhB,CAAsB;AAAEC,YAAAA,aAAa,EAAE;AAAjB,WAAtB;AACD;AACF,OALD;AAMD;AACF,GArBQ,EAqBN,CAACX,IAAD,EAAOC,MAAP,CArBM,CAAT;AAsBD","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"],"file":"useFocusReturn.js"}
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"}
@@ -4,8 +4,8 @@ export declare function useFocusState<T>(props?: {
4
4
  onBlur?: FocusEventHandler<T>;
5
5
  }): {
6
6
  bind: {
7
- onFocus: import("../utils/wrapEvent").CustomEventHandler<import("react").FocusEvent<T, Element>, []>;
8
- onBlur: import("../utils/wrapEvent").CustomEventHandler<import("react").FocusEvent<T, Element>, []>;
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
9
  };
10
10
  hasFocus: boolean;
11
11
  };
@@ -1,6 +1,6 @@
1
1
  import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
2
2
  import { useState } from 'react';
3
- import { wrapEvent } from '../utils/wrapEvent';
3
+ import { wrapEvent } from '../utils/wrap-event';
4
4
  export function useFocusState() {
5
5
  var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
6
6
  var onFocus = props.onFocus,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/hooks/useFocusState.ts"],"names":["useState","wrapEvent","useFocusState","props","onFocus","onBlur","hasFocus","setHasFocus","handleFocus","handleBlur","bind"],"mappings":";AACA,SAASA,QAAT,QAAyB,OAAzB;AAEA,SAASC,SAAT,QAA0B,oBAA1B;AAEA,OAAO,SAASC,aAAT,GAKL;AAAA,MAJAC,KAIA,uEADI,EACJ;AAAA,MACQC,OADR,GAC4BD,KAD5B,CACQC,OADR;AAAA,MACiBC,MADjB,GAC4BF,KAD5B,CACiBE,MADjB;;AAAA,kBAEgCL,QAAQ,CAAC,KAAD,CAFxC;AAAA;AAAA,MAEOM,QAFP;AAAA,MAEiBC,WAFjB;;AAIA,MAAMC,WAAW,GAAG,SAAdA,WAAc,GAAM;AACxBD,IAAAA,WAAW,CAAC,IAAD,CAAX;AACD,GAFD;;AAIA,MAAME,UAAU,GAAG,SAAbA,UAAa,GAAM;AACvBF,IAAAA,WAAW,CAAC,KAAD,CAAX;AACD,GAFD;;AAIA,SAAO;AACLG,IAAAA,IAAI,EAAE;AACJN,MAAAA,OAAO,EAAEH,SAAS,CAACG,OAAD,EAAUI,WAAV,CADd;AAEJH,MAAAA,MAAM,EAAEJ,SAAS,CAACI,MAAD,EAASI,UAAT;AAFb,KADD;AAKLH,IAAAA,QAAQ,EAARA;AALK,GAAP;AAOD","sourcesContent":["import type { FocusEventHandler } from 'react';\nimport { useState } from 'react';\n\nimport { wrapEvent } from '../utils/wrapEvent';\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"],"file":"useFocusState.js"}
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"}
File without changes
@@ -1,5 +1,6 @@
1
1
  import _extends from "@babel/runtime/helpers/extends";
2
2
  import { useRef } from 'react';
3
+ import { getOwnerDocument } from '../utils';
3
4
  export var initialGestureHandlersState = {
4
5
  target: null,
5
6
  x: 0,
@@ -36,7 +37,7 @@ export function gestureHandlers(set, containerRef) {
36
37
  var xVelocity = calcVelocity(xDelta, deltaTime, state.xVelocity);
37
38
  var yVelocity = calcVelocity(yDelta, deltaTime, state.yVelocity);
38
39
 
39
- var newState = _extends({}, state, {
40
+ var newState = _extends(_extends({}, state), {}, {
40
41
  xVelocity: xVelocity,
41
42
  yVelocity: yVelocity,
42
43
  target: null,
@@ -52,7 +53,7 @@ export function gestureHandlers(set, containerRef) {
52
53
  pageX = e.pageX,
53
54
  pageY = e.pageY;
54
55
  set(function (state) {
55
- var newState = _extends({}, state, {
56
+ var newState = _extends(_extends({}, state), {}, {
56
57
  target: target,
57
58
  x: pageX,
58
59
  xDelta: 0,
@@ -115,7 +116,7 @@ export function gestureHandlers(set, containerRef) {
115
116
  var yDeltaPercent = yDelta * 100 / height;
116
117
  var yVelocity = calcVelocity(yDelta, deltaTime, state.yVelocity);
117
118
 
118
- var newState = _extends({}, state, {
119
+ var newState = _extends(_extends({}, state), {}, {
119
120
  xDelta: xDelta,
120
121
  xDeltaPercent: xDeltaPercent,
121
122
  x: pageX,
@@ -154,20 +155,23 @@ export function gestureHandlers(set, containerRef) {
154
155
 
155
156
  if (ensureTargetIsContainer && containerRef && e.target !== containerRef.current) {
156
157
  return;
157
- }
158
+ } // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
159
+
158
160
 
159
- window.addEventListener('touchmove', handleTouchMove, {
161
+ var ownerDocument = getOwnerDocument(e.currentTarget);
162
+ var ownerWindow = ownerDocument.defaultView || window;
163
+ ownerWindow.addEventListener('touchmove', handleTouchMove, {
160
164
  passive: false
161
165
  });
162
- window.addEventListener('touchend', handleTouchEnd);
163
- window.addEventListener('touchcancel', handleTouchEnd);
166
+ ownerWindow.addEventListener('touchend', handleTouchEnd);
167
+ ownerWindow.addEventListener('touchcancel', handleTouchEnd);
164
168
  handleDown(e.touches.item(0));
165
169
  }
166
170
 
167
171
  function handleTouchEnd() {
168
- window.removeEventListener('touchmove', handleTouchMove);
169
- window.removeEventListener('touchend', handleTouchEnd);
170
- window.removeEventListener('touchcancel', handleTouchEnd);
172
+ this.removeEventListener('touchmove', handleTouchMove);
173
+ this.removeEventListener('touchend', handleTouchEnd);
174
+ this.removeEventListener('touchcancel', handleTouchEnd);
171
175
  handleUp();
172
176
  } // Mouse handlers
173
177
 
@@ -175,18 +179,22 @@ export function gestureHandlers(set, containerRef) {
175
179
  function handleMouseDown(e) {
176
180
  if (ensureTargetIsContainer && containerRef && e.target !== containerRef.current) {
177
181
  return;
178
- }
182
+ } // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
183
+
184
+
185
+ var ownerDocument = getOwnerDocument(e.currentTarget);
186
+ var ownerWindow = ownerDocument.defaultView || window;
179
187
 
180
188
  if (e.button === 0) {
181
- window.addEventListener('mousemove', handleMove);
182
- window.addEventListener('mouseup', handleMouseUp);
189
+ ownerWindow.addEventListener('mousemove', handleMove);
190
+ ownerWindow.addEventListener('mouseup', handleMouseUp);
183
191
  handleDown(e);
184
192
  }
185
193
  }
186
194
 
187
195
  function handleMouseUp() {
188
- window.removeEventListener('mousemove', handleMove);
189
- window.removeEventListener('mouseup', handleMouseUp);
196
+ this.removeEventListener('mousemove', handleMove);
197
+ this.removeEventListener('mouseup', handleMouseUp);
190
198
  handleUp();
191
199
  }
192
200
  /* eslint-enable @typescript-eslint/no-use-before-define */
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/hooks/useGestureHandlers.ts"],"names":["useRef","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","window","addEventListener","passive","handleTouchEnd","removeEventListener","handleMouseDown","button","handleMouseUp","onMouseDown","onTouchStart","useGestureHandlers","onGesture","cb","handlers"],"mappings":"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","sourcesContent":["import type {\n MutableRefObject,\n MouseEvent as ReactMouseEvent,\n TouchEvent as ReactTouchEvent,\n} from 'react';\nimport { useRef } from 'react';\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 window.addEventListener('touchmove', handleTouchMove, { passive: false });\n window.addEventListener('touchend', handleTouchEnd);\n window.addEventListener('touchcancel', handleTouchEnd);\n handleDown(e.touches.item(0) as any);\n }\n\n function handleTouchEnd() {\n window.removeEventListener('touchmove', handleTouchMove);\n window.removeEventListener('touchend', handleTouchEnd);\n window.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 if (e.button === 0) {\n window.addEventListener('mousemove', handleMove);\n window.addEventListener('mouseup', handleMouseUp);\n handleDown(e as any);\n }\n }\n\n function handleMouseUp() {\n window.removeEventListener('mousemove', handleMove);\n window.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"],"file":"useGestureHandlers.js"}
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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"}