@basic-ui/core 0.0.36 → 0.0.39

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 (348) hide show
  1. package/build/cjs/index.js +84 -83
  2. package/build/cjs/index.js.map +1 -1
  3. package/build/esm/Accordion/Accordion.d.ts +1 -1
  4. package/build/esm/Accordion/Accordion.js +23 -17
  5. package/build/esm/Accordion/Accordion.js.map +1 -1
  6. package/build/esm/Accordion/AccordionBody.d.ts +1 -1
  7. package/build/esm/Accordion/AccordionBody.js +24 -15
  8. package/build/esm/Accordion/AccordionBody.js.map +1 -1
  9. package/build/esm/Accordion/AccordionHeader.d.ts +1 -1
  10. package/build/esm/Accordion/AccordionHeader.js +46 -31
  11. package/build/esm/Accordion/AccordionHeader.js.map +1 -1
  12. package/build/esm/Accordion/AccordionItem.d.ts +1 -1
  13. package/build/esm/Accordion/AccordionItem.js +18 -18
  14. package/build/esm/Accordion/AccordionItem.js.map +1 -1
  15. package/build/esm/Accordion/context.d.ts +1 -1
  16. package/build/esm/Accordion/context.js +12 -10
  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 +0 -0
  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 +0 -0
  24. package/build/esm/CheckBox/CheckBox.d.ts +1 -1
  25. package/build/esm/CheckBox/CheckBox.js +20 -12
  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 +0 -0
  30. package/build/esm/ComboBox/Combobox.d.ts +1 -1
  31. package/build/esm/ComboBox/Combobox.js +55 -48
  32. package/build/esm/ComboBox/Combobox.js.map +1 -1
  33. package/build/esm/ComboBox/ComboboxButton.d.ts +1 -1
  34. package/build/esm/ComboBox/ComboboxButton.js +20 -20
  35. package/build/esm/ComboBox/ComboboxButton.js.map +1 -1
  36. package/build/esm/ComboBox/ComboboxInput.d.ts +1 -1
  37. package/build/esm/ComboBox/ComboboxInput.js +53 -50
  38. package/build/esm/ComboBox/ComboboxInput.js.map +1 -1
  39. package/build/esm/ComboBox/ComboboxLabel.d.ts +1 -1
  40. package/build/esm/ComboBox/ComboboxLabel.js +12 -12
  41. package/build/esm/ComboBox/ComboboxLabel.js.map +1 -1
  42. package/build/esm/ComboBox/ComboboxList.d.ts +1 -1
  43. package/build/esm/ComboBox/ComboboxList.js +16 -17
  44. package/build/esm/ComboBox/ComboboxList.js.map +1 -1
  45. package/build/esm/ComboBox/ComboboxOption.d.ts +1 -1
  46. package/build/esm/ComboBox/ComboboxOption.js +32 -34
  47. package/build/esm/ComboBox/ComboboxOption.js.map +1 -1
  48. package/build/esm/ComboBox/ComboboxPopover.d.ts +1 -1
  49. package/build/esm/ComboBox/ComboboxPopover.js +16 -17
  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 +0 -0
  54. package/build/esm/ComboBox/context.d.ts +3 -3
  55. package/build/esm/ComboBox/context.js +6 -5
  56. package/build/esm/ComboBox/context.js.map +1 -1
  57. package/build/esm/ComboBox/hooks.d.ts +1 -1
  58. package/build/esm/ComboBox/hooks.js +82 -115
  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 +0 -0
  63. package/build/esm/ComboBox/makeHash.d.ts +0 -0
  64. package/build/esm/ComboBox/makeHash.js +3 -3
  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 +0 -0
  69. package/build/esm/FocusLock/FocusLock.d.ts +1 -1
  70. package/build/esm/FocusLock/FocusLock.js +18 -16
  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 +0 -0
  75. package/build/esm/FocusLock/tabUtils.d.ts +1 -0
  76. package/build/esm/FocusLock/tabUtils.js +14 -2
  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 +14 -22
  80. package/build/esm/FocusLock/useFocusLock.js.map +1 -1
  81. package/build/esm/List/List.d.ts +1 -1
  82. package/build/esm/List/List.js +6 -6
  83. package/build/esm/List/List.js.map +1 -1
  84. package/build/esm/List/ListItem.d.ts +1 -1
  85. package/build/esm/List/ListItem.js +6 -6
  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 +3 -3
  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 +0 -0
  93. package/build/esm/Menu/Menu.d.ts +1 -1
  94. package/build/esm/Menu/Menu.js +31 -23
  95. package/build/esm/Menu/Menu.js.map +1 -1
  96. package/build/esm/Menu/MenuButton.d.ts +1 -1
  97. package/build/esm/Menu/MenuButton.js +29 -25
  98. package/build/esm/Menu/MenuButton.js.map +1 -1
  99. package/build/esm/Menu/MenuItem.d.ts +1 -1
  100. package/build/esm/Menu/MenuItem.js +26 -27
  101. package/build/esm/Menu/MenuItem.js.map +1 -1
  102. package/build/esm/Menu/MenuList.d.ts +1 -1
  103. package/build/esm/Menu/MenuList.js +62 -45
  104. package/build/esm/Menu/MenuList.js.map +1 -1
  105. package/build/esm/Menu/MenuPopover.d.ts +2 -2
  106. package/build/esm/Menu/MenuPopover.js +9 -10
  107. package/build/esm/Menu/MenuPopover.js.map +1 -1
  108. package/build/esm/Menu/context.d.ts +1 -1
  109. package/build/esm/Menu/context.js +11 -8
  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 +0 -0
  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 +0 -0
  117. package/build/esm/Modal/Modal.d.ts +2 -2
  118. package/build/esm/Modal/Modal.js +14 -12
  119. package/build/esm/Modal/Modal.js.map +1 -1
  120. package/build/esm/Modal/ModalBackdrop.d.ts +1 -1
  121. package/build/esm/Modal/ModalBackdrop.js +21 -19
  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 +0 -0
  126. package/build/esm/Popper/Popper.d.ts +2 -2
  127. package/build/esm/Popper/Popper.js +51 -36
  128. package/build/esm/Popper/Popper.js.map +1 -1
  129. package/build/esm/Popper/PopperArrow.d.ts +1 -1
  130. package/build/esm/Popper/PopperArrow.js +9 -9
  131. package/build/esm/Popper/PopperArrow.js.map +1 -1
  132. package/build/esm/Popper/context.d.ts +1 -1
  133. package/build/esm/Popper/context.js +5 -3
  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 +0 -0
  138. package/build/esm/Portal/Portal.d.ts +1 -1
  139. package/build/esm/Portal/Portal.js +6 -5
  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 +0 -0
  144. package/build/esm/RadioButton/RadioButton.d.ts +2 -2
  145. package/build/esm/RadioButton/RadioButton.js +13 -13
  146. package/build/esm/RadioButton/RadioButton.js.map +1 -1
  147. package/build/esm/RadioButton/RadioGroup.d.ts +2 -2
  148. package/build/esm/RadioButton/RadioGroup.js +25 -18
  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 +6 -5
  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 +0 -0
  156. package/build/esm/SkipNav/SkipNav.d.ts +1 -1
  157. package/build/esm/SkipNav/SkipNav.js +6 -6
  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 +0 -0
  162. package/build/esm/Spinner/Spinner.d.ts +1 -1
  163. package/build/esm/Spinner/Spinner.js +42 -31
  164. package/build/esm/Spinner/Spinner.js.map +1 -1
  165. package/build/esm/Spinner/SpinnerButton.d.ts +1 -1
  166. package/build/esm/Spinner/SpinnerButton.js +12 -12
  167. package/build/esm/Spinner/SpinnerButton.js.map +1 -1
  168. package/build/esm/Spinner/context.d.ts +0 -0
  169. package/build/esm/Spinner/context.js +6 -5
  170. package/build/esm/Spinner/context.js.map +1 -1
  171. package/build/esm/Spinner/index.d.ts +0 -0
  172. package/build/esm/Spinner/index.js +0 -0
  173. package/build/esm/Spinner/index.js.map +0 -0
  174. package/build/esm/Tabs/Tab.d.ts +1 -1
  175. package/build/esm/Tabs/Tab.js +30 -29
  176. package/build/esm/Tabs/Tab.js.map +1 -1
  177. package/build/esm/Tabs/TabList.d.ts +1 -1
  178. package/build/esm/Tabs/TabList.js +27 -23
  179. package/build/esm/Tabs/TabList.js.map +1 -1
  180. package/build/esm/Tabs/TabPanel.d.ts +1 -1
  181. package/build/esm/Tabs/TabPanel.js +13 -12
  182. package/build/esm/Tabs/TabPanel.js.map +1 -1
  183. package/build/esm/Tabs/TabPanels.d.ts +1 -1
  184. package/build/esm/Tabs/TabPanels.js +14 -12
  185. package/build/esm/Tabs/TabPanels.js.map +1 -1
  186. package/build/esm/Tabs/Tabs.d.ts +1 -1
  187. package/build/esm/Tabs/Tabs.js +28 -14
  188. package/build/esm/Tabs/Tabs.js.map +1 -1
  189. package/build/esm/Tabs/context.d.ts +1 -1
  190. package/build/esm/Tabs/context.js +12 -10
  191. package/build/esm/Tabs/context.js.map +1 -1
  192. package/build/esm/Tabs/index.d.ts +0 -0
  193. package/build/esm/Tabs/index.js +0 -0
  194. package/build/esm/Tabs/index.js.map +0 -0
  195. package/build/esm/Tabs/scopeQuery.d.ts +0 -0
  196. package/build/esm/Tabs/scopeQuery.js +0 -0
  197. package/build/esm/Tabs/scopeQuery.js.map +0 -0
  198. package/build/esm/Tooltip/Tooltip.d.ts +2 -1
  199. package/build/esm/Tooltip/Tooltip.js +17 -15
  200. package/build/esm/Tooltip/Tooltip.js.map +1 -1
  201. package/build/esm/Tooltip/index.d.ts +0 -0
  202. package/build/esm/Tooltip/index.js +0 -0
  203. package/build/esm/Tooltip/index.js.map +0 -0
  204. package/build/esm/Tooltip/stateMachine.d.ts +0 -0
  205. package/build/esm/Tooltip/stateMachine.js +56 -80
  206. package/build/esm/Tooltip/stateMachine.js.map +1 -1
  207. package/build/esm/Tooltip/useTooltip.d.ts +1 -1
  208. package/build/esm/Tooltip/useTooltip.js +32 -31
  209. package/build/esm/Tooltip/useTooltip.js.map +1 -1
  210. package/build/esm/hooks/index.d.ts +0 -1
  211. package/build/esm/hooks/index.js +0 -1
  212. package/build/esm/hooks/index.js.map +1 -1
  213. package/build/esm/hooks/useAutoFocus.d.ts +0 -0
  214. package/build/esm/hooks/useAutoFocus.js +6 -2
  215. package/build/esm/hooks/useAutoFocus.js.map +1 -1
  216. package/build/esm/hooks/useChildrenCounter.d.ts +1 -1
  217. package/build/esm/hooks/useChildrenCounter.js +6 -4
  218. package/build/esm/hooks/useChildrenCounter.js.map +1 -1
  219. package/build/esm/hooks/useControlledState.d.ts +1 -1
  220. package/build/esm/hooks/useControlledState.js +7 -2
  221. package/build/esm/hooks/useControlledState.js.map +1 -1
  222. package/build/esm/hooks/useFocusReturn.d.ts +2 -1
  223. package/build/esm/hooks/useFocusReturn.js +25 -14
  224. package/build/esm/hooks/useFocusReturn.js.map +1 -1
  225. package/build/esm/hooks/useFocusState.d.ts +0 -0
  226. package/build/esm/hooks/useFocusState.js +13 -9
  227. package/build/esm/hooks/useFocusState.js.map +1 -1
  228. package/build/esm/hooks/useGestureHandlers.d.ts +0 -0
  229. package/build/esm/hooks/useGestureHandlers.js +59 -63
  230. package/build/esm/hooks/useGestureHandlers.js.map +1 -1
  231. package/build/esm/hooks/useMeasure.d.ts +0 -0
  232. package/build/esm/hooks/useMeasure.js +13 -7
  233. package/build/esm/hooks/useMeasure.js.map +1 -1
  234. package/build/esm/hooks/useOnClickOutside.d.ts +0 -0
  235. package/build/esm/hooks/useOnClickOutside.js +5 -4
  236. package/build/esm/hooks/useOnClickOutside.js.map +1 -1
  237. package/build/esm/hooks/useOnKeyDown.d.ts +0 -0
  238. package/build/esm/hooks/useOnKeyDown.js +4 -3
  239. package/build/esm/hooks/useOnKeyDown.js.map +1 -1
  240. package/build/esm/hooks/useReducerMachine.d.ts +1 -1
  241. package/build/esm/hooks/useReducerMachine.js +13 -10
  242. package/build/esm/hooks/useReducerMachine.js.map +1 -1
  243. package/build/esm/hooks/useRemoveBodyScroll.d.ts +0 -0
  244. package/build/esm/hooks/useRemoveBodyScroll.js +14 -21
  245. package/build/esm/hooks/useRemoveBodyScroll.js.map +1 -1
  246. package/build/esm/hooks/useScope.d.ts +1 -1
  247. package/build/esm/hooks/useScope.js +10 -12
  248. package/build/esm/hooks/useScope.js.map +1 -1
  249. package/build/esm/hooks/useThrottle.d.ts +0 -0
  250. package/build/esm/hooks/useThrottle.js +10 -5
  251. package/build/esm/hooks/useThrottle.js.map +1 -1
  252. package/build/esm/index.d.ts +0 -0
  253. package/build/esm/index.js +0 -0
  254. package/build/esm/index.js.map +0 -0
  255. package/build/esm/utils/assignRef.d.ts +1 -1
  256. package/build/esm/utils/assignRef.js +7 -3
  257. package/build/esm/utils/assignRef.js.map +1 -1
  258. package/build/esm/utils/clamp.d.ts +0 -0
  259. package/build/esm/utils/clamp.js +0 -0
  260. package/build/esm/utils/clamp.js.map +0 -0
  261. package/build/esm/utils/createSubscription.d.ts +0 -0
  262. package/build/esm/utils/createSubscription.js +7 -5
  263. package/build/esm/utils/createSubscription.js.map +1 -1
  264. package/build/esm/utils/getCircularIndex.d.ts +0 -0
  265. package/build/esm/utils/getCircularIndex.js +0 -0
  266. package/build/esm/utils/getCircularIndex.js.map +0 -0
  267. package/build/esm/utils/index.d.ts +0 -0
  268. package/build/esm/utils/index.js +0 -0
  269. package/build/esm/utils/index.js.map +0 -0
  270. package/build/esm/utils/rubberBandClamp.d.ts +0 -0
  271. package/build/esm/utils/rubberBandClamp.js +5 -2
  272. package/build/esm/utils/rubberBandClamp.js.map +1 -1
  273. package/build/esm/utils/wrapEvent.d.ts +0 -0
  274. package/build/esm/utils/wrapEvent.js +7 -3
  275. package/build/esm/utils/wrapEvent.js.map +1 -1
  276. package/build/tsconfig.tsbuildinfo +1 -7151
  277. package/package.json +13 -13
  278. package/src/Accordion/Accordion.story.tsx +6 -4
  279. package/src/Accordion/Accordion.tsx +4 -2
  280. package/src/Accordion/AccordionBody.tsx +4 -4
  281. package/src/Accordion/AccordionHeader.tsx +7 -8
  282. package/src/Accordion/AccordionItem.tsx +5 -4
  283. package/src/Accordion/context.ts +2 -1
  284. package/src/CheckBox/CheckBox.tsx +2 -1
  285. package/src/ComboBox/ComboBox.story.tsx +11 -9
  286. package/src/ComboBox/Combobox.tsx +9 -11
  287. package/src/ComboBox/ComboboxButton.tsx +4 -9
  288. package/src/ComboBox/ComboboxInput.tsx +2 -1
  289. package/src/ComboBox/ComboboxLabel.tsx +2 -1
  290. package/src/ComboBox/ComboboxList.tsx +2 -1
  291. package/src/ComboBox/ComboboxOption.tsx +1 -1
  292. package/src/ComboBox/ComboboxPopover.tsx +2 -1
  293. package/src/ComboBox/context.ts +4 -3
  294. package/src/ComboBox/hooks.tsx +6 -9
  295. package/src/FocusLock/FocusLock.tsx +2 -1
  296. package/src/FocusLock/tabUtils.ts +12 -0
  297. package/src/FocusLock/useFocusLock.ts +5 -11
  298. package/src/List/List.story.tsx +5 -4
  299. package/src/List/List.tsx +1 -1
  300. package/src/List/ListItem.tsx +1 -1
  301. package/src/Menu/Menu.story.tsx +15 -13
  302. package/src/Menu/Menu.tsx +5 -4
  303. package/src/Menu/MenuButton.tsx +7 -11
  304. package/src/Menu/MenuItem.tsx +6 -7
  305. package/src/Menu/MenuList.tsx +4 -8
  306. package/src/Menu/MenuPopover.tsx +4 -2
  307. package/src/Menu/context.ts +2 -1
  308. package/src/Modal/Modal.story.tsx +35 -19
  309. package/src/Modal/Modal.tsx +6 -4
  310. package/src/Modal/ModalBackdrop.tsx +2 -1
  311. package/src/Modal/NavDrawer.story.tsx +8 -7
  312. package/src/Popper/Popper.story.tsx +15 -19
  313. package/src/Popper/Popper.tsx +12 -7
  314. package/src/Popper/PopperArrow.tsx +2 -1
  315. package/src/Popper/context.ts +2 -1
  316. package/src/Portal/Portal.tsx +1 -1
  317. package/src/RadioButton/RadioButton.story.tsx +13 -9
  318. package/src/RadioButton/RadioButton.tsx +4 -2
  319. package/src/RadioButton/RadioGroup.tsx +6 -4
  320. package/src/SkipNav/SkipNav.tsx +1 -1
  321. package/src/Spinner/Spinner.story.tsx +6 -5
  322. package/src/Spinner/Spinner.tsx +2 -1
  323. package/src/Spinner/SpinnerButton.tsx +2 -1
  324. package/src/Tabs/Tab.story.tsx +10 -8
  325. package/src/Tabs/Tab.tsx +4 -4
  326. package/src/Tabs/TabList.tsx +11 -3
  327. package/src/Tabs/TabPanel.tsx +2 -1
  328. package/src/Tabs/TabPanels.tsx +1 -1
  329. package/src/Tabs/Tabs.tsx +2 -1
  330. package/src/Tabs/context.ts +2 -1
  331. package/src/Tooltip/Tooltip.story.tsx +8 -6
  332. package/src/Tooltip/Tooltip.tsx +3 -7
  333. package/src/Tooltip/stateMachine.ts +1 -1
  334. package/src/Tooltip/useTooltip.ts +4 -3
  335. package/src/hooks/index.ts +0 -1
  336. package/src/hooks/useAutoFocus.ts +9 -1
  337. package/src/hooks/useChildrenCounter.ts +2 -1
  338. package/src/hooks/useControlledState.ts +3 -1
  339. package/src/hooks/useFocusReturn.ts +33 -13
  340. package/src/hooks/useFocusState.ts +1 -0
  341. package/src/hooks/useReducerMachine.ts +2 -1
  342. package/src/hooks/useRemoveBodyScroll.ts +10 -18
  343. package/src/hooks/useScope.ts +2 -1
  344. package/src/utils/assignRef.ts +1 -1
  345. package/build/esm/hooks/useId.d.ts +0 -3
  346. package/build/esm/hooks/useId.js +0 -16
  347. package/build/esm/hooks/useId.js.map +0 -1
  348. package/src/hooks/useId.ts +0 -18
@@ -6,14 +6,14 @@
6
6
  // don't know how it works, tbqh)
7
7
  // https://stackoverflow.com/questions/6122571/simple-non-secure-hash-function-for-javascript
8
8
  export function makeHash(str) {
9
- let hash = 0;
9
+ var hash = 0;
10
10
 
11
11
  if (str.length === 0) {
12
12
  return hash;
13
13
  }
14
14
 
15
- for (let i = 0; i < str.length; i++) {
16
- const char = str.charCodeAt(i);
15
+ for (var i = 0; i < str.length; i++) {
16
+ var char = str.charCodeAt(i);
17
17
  hash = (hash << 5) - hash + char;
18
18
  hash = hash & hash;
19
19
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/ComboBox/makeHash.ts"],"names":["makeHash","str","hash","length","i","char","charCodeAt"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASA,QAAT,CAAkBC,GAAlB,EAA+B;AACpC,MAAIC,IAAI,GAAG,CAAX;;AACA,MAAID,GAAG,CAACE,MAAJ,KAAe,CAAnB,EAAsB;AACpB,WAAOD,IAAP;AACD;;AACD,OAAK,IAAIE,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGH,GAAG,CAACE,MAAxB,EAAgCC,CAAC,EAAjC,EAAqC;AACnC,UAAMC,IAAI,GAAGJ,GAAG,CAACK,UAAJ,CAAeF,CAAf,CAAb;AACAF,IAAAA,IAAI,GAAG,CAACA,IAAI,IAAI,CAAT,IAAcA,IAAd,GAAqBG,IAA5B;AACAH,IAAAA,IAAI,GAAGA,IAAI,GAAGA,IAAd;AACD;;AACD,SAAOA,IAAP;AACD","sourcesContent":["// We don't want to track the active descendant with indexes because nothing is\n// more annoying in a combobox than having it change values RIGHT AS YOU HIT\n// ENTER. That only happens if you use the index as your data, rather than\n// *your data as your data*. We use this to generate a unique ID based on the\n// value of each item. This function is short, sweet, and good enough™ (I also\n// don't know how it works, tbqh)\n// https://stackoverflow.com/questions/6122571/simple-non-secure-hash-function-for-javascript\nexport function makeHash(str: string) {\n let hash = 0;\n if (str.length === 0) {\n return hash;\n }\n for (let i = 0; i < str.length; i++) {\n const char = str.charCodeAt(i);\n hash = (hash << 5) - hash + char;\n hash = hash & hash;\n }\n return hash;\n}\n"],"file":"makeHash.js"}
1
+ {"version":3,"sources":["../../../src/ComboBox/makeHash.ts"],"names":["makeHash","str","hash","length","i","char","charCodeAt"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASA,QAAT,CAAkBC,GAAlB,EAA+B;AACpC,MAAIC,IAAI,GAAG,CAAX;;AACA,MAAID,GAAG,CAACE,MAAJ,KAAe,CAAnB,EAAsB;AACpB,WAAOD,IAAP;AACD;;AACD,OAAK,IAAIE,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGH,GAAG,CAACE,MAAxB,EAAgCC,CAAC,EAAjC,EAAqC;AACnC,QAAMC,IAAI,GAAGJ,GAAG,CAACK,UAAJ,CAAeF,CAAf,CAAb;AACAF,IAAAA,IAAI,GAAG,CAACA,IAAI,IAAI,CAAT,IAAcA,IAAd,GAAqBG,IAA5B;AACAH,IAAAA,IAAI,GAAGA,IAAI,GAAGA,IAAd;AACD;;AACD,SAAOA,IAAP;AACD","sourcesContent":["// We don't want to track the active descendant with indexes because nothing is\n// more annoying in a combobox than having it change values RIGHT AS YOU HIT\n// ENTER. That only happens if you use the index as your data, rather than\n// *your data as your data*. We use this to generate a unique ID based on the\n// value of each item. This function is short, sweet, and good enough™ (I also\n// don't know how it works, tbqh)\n// https://stackoverflow.com/questions/6122571/simple-non-secure-hash-function-for-javascript\nexport function makeHash(str: string) {\n let hash = 0;\n if (str.length === 0) {\n return hash;\n }\n for (let i = 0; i < str.length; i++) {\n const char = str.charCodeAt(i);\n hash = (hash << 5) - hash + char;\n hash = hash & hash;\n }\n return hash;\n}\n"],"file":"makeHash.js"}
File without changes
File without changes
File without changes
@@ -1,4 +1,4 @@
1
- import type * as React from 'react';
1
+ import * as React from 'react';
2
2
  export interface FocusLockProps extends React.HTMLAttributes<HTMLDivElement> {
3
3
  as?: React.ElementType<any>;
4
4
  innerAs?: React.ElementType<any>;
@@ -1,29 +1,31 @@
1
1
  import _extends from "@babel/runtime/helpers/extends";
2
- import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/objectWithoutPropertiesLoose";
2
+ import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
3
3
  import { useRef } from 'react';
4
+ import * as React from 'react';
4
5
  import { useFocusLock } from './useFocusLock';
5
6
  import { jsx as _jsx } from "react/jsx-runtime";
6
7
  import { Fragment as _Fragment } from "react/jsx-runtime";
7
8
  import { jsxs as _jsxs } from "react/jsx-runtime";
8
- export const FocusLock = function FocusLock(props) {
9
- const {
10
- as: Comp = 'div',
11
- childRef,
12
- enabled = false,
13
- style = {},
14
- children
15
- } = props,
16
- otherProps = _objectWithoutPropertiesLoose(props, ["as", "childRef", "enabled", "style", "children"]);
9
+ export var FocusLock = function FocusLock(props) {
10
+ var _props$as = props.as,
11
+ Comp = _props$as === void 0 ? 'div' : _props$as,
12
+ childRef = props.childRef,
13
+ _props$enabled = props.enabled,
14
+ enabled = _props$enabled === void 0 ? false : _props$enabled,
15
+ _props$style = props.style,
16
+ style = _props$style === void 0 ? {} : _props$style,
17
+ children = props.children,
18
+ otherProps = _objectWithoutProperties(props, ["as", "childRef", "enabled", "style", "children"]);
17
19
 
18
- const lockStartRef = useRef(null);
19
- const lockEndRef = useRef(null);
20
+ var lockStartRef = useRef(null);
21
+ var lockEndRef = useRef(null);
20
22
  useFocusLock(childRef, {
21
- enabled,
22
- lockStartRef,
23
- lockEndRef
23
+ enabled: enabled,
24
+ lockStartRef: lockStartRef,
25
+ lockEndRef: lockEndRef
24
26
  });
25
27
 
26
- const lockStyle = _extends({
28
+ var lockStyle = _extends({
27
29
  width: 1,
28
30
  height: 0,
29
31
  padding: 0,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/FocusLock/FocusLock.tsx"],"names":["useRef","useFocusLock","FocusLock","props","as","Comp","childRef","enabled","style","children","otherProps","lockStartRef","lockEndRef","lockStyle","width","height","padding","overflow","position","top","left"],"mappings":";;AAAA,SAASA,MAAT,QAAuB,OAAvB;AAEA,SAASC,YAAT,QAA6B,gBAA7B;;;;AAUA,OAAO,MAAMC,SAAmC,GAAG,SAASA,SAAT,CAAmBC,KAAnB,EAA0B;AAC3E,QAAM;AACJC,IAAAA,EAAE,EAAEC,IAAI,GAAG,KADP;AAEJC,IAAAA,QAFI;AAGJC,IAAAA,OAAO,GAAG,KAHN;AAIJC,IAAAA,KAAK,GAAG,EAJJ;AAKJC,IAAAA;AALI,MAOFN,KAPJ;AAAA,QAMKO,UANL,iCAOIP,KAPJ;;AAQA,QAAMQ,YAAY,GAAGX,MAAM,CAAc,IAAd,CAA3B;AACA,QAAMY,UAAU,GAAGZ,MAAM,CAAc,IAAd,CAAzB;AAEAC,EAAAA,YAAY,CAACK,QAAD,EAAW;AAAEC,IAAAA,OAAF;AAAWI,IAAAA,YAAX;AAAyBC,IAAAA;AAAzB,GAAX,CAAZ;;AAEA,QAAMC,SAAS;AACbC,IAAAA,KAAK,EAAE,CADM;AAEbC,IAAAA,MAAM,EAAE,CAFK;AAGbC,IAAAA,OAAO,EAAE,CAHI;AAIbC,IAAAA,QAAQ,EAAE,QAJG;AAKbC,IAAAA,QAAQ,EAAE,OALG;AAMbC,IAAAA,GAAG,EAAE,CANQ;AAObC,IAAAA,IAAI,EAAE;AAPO,KAQVZ,KARU,CAAf;;AAWA,sBACE;AAAA,4BACE,KAAC,IAAD;AACE,MAAA,GAAG,EAAEG,YADP;AAEE,+BAAsB,EAFxB;AAGE,qBAAa,IAHf;AAIE,MAAA,QAAQ,EAAE,CAJZ;AAKE,MAAA,KAAK,EAAEE;AALT,OAMMH,UANN,EADF,EASGD,QATH,eAUE,KAAC,IAAD;AACE,MAAA,GAAG,EAAEG,UADP;AAEE,6BAAoB,EAFtB;AAGE,qBAAa,IAHf;AAIE,MAAA,QAAQ,EAAE,CAJZ;AAKE,MAAA,KAAK,EAAEC;AALT,OAMMH,UANN,EAVF;AAAA,IADF;AAqBD,CA9CM","sourcesContent":["import { useRef } from 'react';\nimport type * as React from 'react';\nimport { useFocusLock } from './useFocusLock';\n\nexport interface FocusLockProps extends React.HTMLAttributes<HTMLDivElement> {\n as?: React.ElementType<any>;\n innerAs?: React.ElementType<any>;\n children?: React.ReactNode;\n childRef: React.MutableRefObject<HTMLElement | null>;\n enabled?: boolean;\n}\n\nexport const FocusLock: React.FC<FocusLockProps> = function FocusLock(props) {\n const {\n as: Comp = 'div',\n childRef,\n enabled = false,\n style = {},\n children,\n ...otherProps\n } = props;\n const lockStartRef = useRef<HTMLElement>(null);\n const lockEndRef = useRef<HTMLElement>(null);\n\n useFocusLock(childRef, { enabled, lockStartRef, lockEndRef });\n\n const lockStyle = {\n width: 1,\n height: 0,\n padding: 0,\n overflow: 'hidden',\n position: 'fixed',\n top: 1,\n left: 1,\n ...style,\n };\n\n return (\n <>\n <Comp\n ref={lockStartRef}\n data-focus-lock-start=\"\"\n aria-hidden={true}\n tabIndex={0}\n style={lockStyle}\n {...otherProps}\n />\n {children}\n <Comp\n ref={lockEndRef}\n data-focus-lock-end=\"\"\n aria-hidden={true}\n tabIndex={0}\n style={lockStyle}\n {...otherProps}\n />\n </>\n );\n};\n"],"file":"FocusLock.js"}
1
+ {"version":3,"sources":["../../../src/FocusLock/FocusLock.tsx"],"names":["useRef","React","useFocusLock","FocusLock","props","as","Comp","childRef","enabled","style","children","otherProps","lockStartRef","lockEndRef","lockStyle","width","height","padding","overflow","position","top","left"],"mappings":";;AAAA,SAASA,MAAT,QAAuB,OAAvB;AACA,OAAO,KAAKC,KAAZ,MAAuB,OAAvB;AAEA,SAASC,YAAT,QAA6B,gBAA7B;;;;AAUA,OAAO,IAAMC,SAAmC,GAAG,SAASA,SAAT,CAAmBC,KAAnB,EAA0B;AAAA,kBAQvEA,KARuE,CAEzEC,EAFyE;AAAA,MAErEC,IAFqE,0BAE9D,KAF8D;AAAA,MAGzEC,QAHyE,GAQvEH,KARuE,CAGzEG,QAHyE;AAAA,uBAQvEH,KARuE,CAIzEI,OAJyE;AAAA,MAIzEA,OAJyE,+BAI/D,KAJ+D;AAAA,qBAQvEJ,KARuE,CAKzEK,KALyE;AAAA,MAKzEA,KALyE,6BAKjE,EALiE;AAAA,MAMzEC,QANyE,GAQvEN,KARuE,CAMzEM,QANyE;AAAA,MAOtEC,UAPsE,4BAQvEP,KARuE;;AAS3E,MAAMQ,YAAY,GAAGZ,MAAM,CAAc,IAAd,CAA3B;AACA,MAAMa,UAAU,GAAGb,MAAM,CAAc,IAAd,CAAzB;AAEAE,EAAAA,YAAY,CAACK,QAAD,EAAW;AAAEC,IAAAA,OAAO,EAAPA,OAAF;AAAWI,IAAAA,YAAY,EAAZA,YAAX;AAAyBC,IAAAA,UAAU,EAAVA;AAAzB,GAAX,CAAZ;;AAEA,MAAMC,SAAS;AACbC,IAAAA,KAAK,EAAE,CADM;AAEbC,IAAAA,MAAM,EAAE,CAFK;AAGbC,IAAAA,OAAO,EAAE,CAHI;AAIbC,IAAAA,QAAQ,EAAE,QAJG;AAKbC,IAAAA,QAAQ,EAAE,OALG;AAMbC,IAAAA,GAAG,EAAE,CANQ;AAObC,IAAAA,IAAI,EAAE;AAPO,KAQVZ,KARU,CAAf;;AAWA,sBACE;AAAA,4BACE,KAAC,IAAD;AACE,MAAA,GAAG,EAAEG,YADP;AAEE,+BAAsB,EAFxB;AAGE,qBAAa,IAHf;AAIE,MAAA,QAAQ,EAAE,CAJZ;AAKE,MAAA,KAAK,EAAEE;AALT,OAMMH,UANN,EADF,EASGD,QATH,eAUE,KAAC,IAAD;AACE,MAAA,GAAG,EAAEG,UADP;AAEE,6BAAoB,EAFtB;AAGE,qBAAa,IAHf;AAIE,MAAA,QAAQ,EAAE,CAJZ;AAKE,MAAA,KAAK,EAAEC;AALT,OAMMH,UANN,EAVF;AAAA,IADF;AAqBD,CA9CM","sourcesContent":["import { useRef } from 'react';\nimport * as React from 'react';\n\nimport { useFocusLock } from './useFocusLock';\n\nexport interface FocusLockProps extends React.HTMLAttributes<HTMLDivElement> {\n as?: React.ElementType<any>;\n innerAs?: React.ElementType<any>;\n children?: React.ReactNode;\n childRef: React.MutableRefObject<HTMLElement | null>;\n enabled?: boolean;\n}\n\nexport const FocusLock: React.FC<FocusLockProps> = function FocusLock(props) {\n const {\n as: Comp = 'div',\n childRef,\n enabled = false,\n style = {},\n children,\n ...otherProps\n } = props;\n const lockStartRef = useRef<HTMLElement>(null);\n const lockEndRef = useRef<HTMLElement>(null);\n\n useFocusLock(childRef, { enabled, lockStartRef, lockEndRef });\n\n const lockStyle = {\n width: 1,\n height: 0,\n padding: 0,\n overflow: 'hidden',\n position: 'fixed',\n top: 1,\n left: 1,\n ...style,\n };\n\n return (\n <>\n <Comp\n ref={lockStartRef}\n data-focus-lock-start=\"\"\n aria-hidden={true}\n tabIndex={0}\n style={lockStyle}\n {...otherProps}\n />\n {children}\n <Comp\n ref={lockEndRef}\n data-focus-lock-end=\"\"\n aria-hidden={true}\n tabIndex={0}\n style={lockStyle}\n {...otherProps}\n />\n </>\n );\n};\n"],"file":"FocusLock.js"}
File without changes
File without changes
File without changes
@@ -1,2 +1,3 @@
1
1
  export declare const tabblable: string;
2
2
  export declare const getTabblableNodes: (parentNode: HTMLElement | null) => HTMLElement[];
3
+ export declare function focusOnChildNode(parentNode: HTMLElement, itemIndex: 0 | -1): void;
@@ -1,11 +1,23 @@
1
- export const tabblable = ['button:enabled:not([readonly])', 'select:enabled:not([readonly])', 'textarea:enabled:not([readonly])', 'input:enabled:not([readonly])', 'a[href]', 'area[href]', 'iframe', 'object', 'embed', '[tabindex]', '[contenteditable]', '[autofocus]'].join(',');
1
+ export var tabblable = ['button:enabled:not([readonly])', 'select:enabled:not([readonly])', 'textarea:enabled:not([readonly])', 'input:enabled:not([readonly])', 'a[href]', 'area[href]', 'iframe', 'object', 'embed', '[tabindex]', '[contenteditable]', '[autofocus]'].join(',');
2
2
  /* This is naive and will not consider tabIndex */
3
3
 
4
- export const getTabblableNodes = parentNode => {
4
+ export var getTabblableNodes = function getTabblableNodes(parentNode) {
5
5
  if (!parentNode) {
6
6
  return [];
7
7
  }
8
8
 
9
9
  return Array.from(parentNode.querySelectorAll(tabblable));
10
10
  };
11
+ export function focusOnChildNode(parentNode, itemIndex) {
12
+ var elements = getTabblableNodes(parentNode);
13
+
14
+ if (elements.length > 0) {
15
+ elements[itemIndex === -1 ? elements.length - 1 : 0].focus();
16
+ } else {
17
+ var currentTabIndex = parentNode.tabIndex;
18
+ parentNode.tabIndex = 0;
19
+ parentNode.focus();
20
+ parentNode.tabIndex = currentTabIndex;
21
+ }
22
+ }
11
23
  //# sourceMappingURL=tabUtils.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/FocusLock/tabUtils.ts"],"names":["tabblable","join","getTabblableNodes","parentNode","Array","from","querySelectorAll"],"mappings":"AAAA,OAAO,MAAMA,SAAS,GAAG,CACvB,gCADuB,EAEvB,gCAFuB,EAGvB,kCAHuB,EAIvB,+BAJuB,EAMvB,SANuB,EAOvB,YAPuB,EASvB,QATuB,EAUvB,QAVuB,EAWvB,OAXuB,EAavB,YAbuB,EAcvB,mBAduB,EAevB,aAfuB,EAgBvBC,IAhBuB,CAgBlB,GAhBkB,CAAlB;AAkBP;;AACA,OAAO,MAAMC,iBAAiB,GAC5BC,UAD+B,IAEb;AAClB,MAAI,CAACA,UAAL,EAAiB;AACf,WAAO,EAAP;AACD;;AAED,SAAOC,KAAK,CAACC,IAAN,CAAWF,UAAU,CAACG,gBAAX,CAA4BN,SAA5B,CAAX,CAAP;AACD,CARM","sourcesContent":["export const tabblable = [\n 'button:enabled:not([readonly])',\n 'select:enabled:not([readonly])',\n 'textarea:enabled:not([readonly])',\n 'input:enabled:not([readonly])',\n\n 'a[href]',\n 'area[href]',\n\n 'iframe',\n 'object',\n 'embed',\n\n '[tabindex]',\n '[contenteditable]',\n '[autofocus]',\n].join(',');\n\n/* This is naive and will not consider tabIndex */\nexport const getTabblableNodes = (\n parentNode: HTMLElement | null\n): HTMLElement[] => {\n if (!parentNode) {\n return [];\n }\n\n return Array.from(parentNode.querySelectorAll(tabblable));\n};\n"],"file":"tabUtils.js"}
1
+ {"version":3,"sources":["../../../src/FocusLock/tabUtils.ts"],"names":["tabblable","join","getTabblableNodes","parentNode","Array","from","querySelectorAll","focusOnChildNode","itemIndex","elements","length","focus","currentTabIndex","tabIndex"],"mappings":"AAAA,OAAO,IAAMA,SAAS,GAAG,CACvB,gCADuB,EAEvB,gCAFuB,EAGvB,kCAHuB,EAIvB,+BAJuB,EAMvB,SANuB,EAOvB,YAPuB,EASvB,QATuB,EAUvB,QAVuB,EAWvB,OAXuB,EAavB,YAbuB,EAcvB,mBAduB,EAevB,aAfuB,EAgBvBC,IAhBuB,CAgBlB,GAhBkB,CAAlB;AAkBP;;AACA,OAAO,IAAMC,iBAAiB,GAAG,SAApBA,iBAAoB,CAC/BC,UAD+B,EAEb;AAClB,MAAI,CAACA,UAAL,EAAiB;AACf,WAAO,EAAP;AACD;;AAED,SAAOC,KAAK,CAACC,IAAN,CAAWF,UAAU,CAACG,gBAAX,CAA4BN,SAA5B,CAAX,CAAP;AACD,CARM;AAUP,OAAO,SAASO,gBAAT,CAA0BJ,UAA1B,EAAmDK,SAAnD,EAAsE;AAC3E,MAAMC,QAAQ,GAAGP,iBAAiB,CAACC,UAAD,CAAlC;;AACA,MAAIM,QAAQ,CAACC,MAAT,GAAkB,CAAtB,EAAyB;AACvBD,IAAAA,QAAQ,CAACD,SAAS,KAAK,CAAC,CAAf,GAAmBC,QAAQ,CAACC,MAAT,GAAkB,CAArC,GAAyC,CAA1C,CAAR,CAAqDC,KAArD;AACD,GAFD,MAEO;AACL,QAAMC,eAAe,GAAGT,UAAU,CAACU,QAAnC;AACAV,IAAAA,UAAU,CAACU,QAAX,GAAsB,CAAtB;AACAV,IAAAA,UAAU,CAACQ,KAAX;AACAR,IAAAA,UAAU,CAACU,QAAX,GAAsBD,eAAtB;AACD;AACF","sourcesContent":["export const tabblable = [\n 'button:enabled:not([readonly])',\n 'select:enabled:not([readonly])',\n 'textarea:enabled:not([readonly])',\n 'input:enabled:not([readonly])',\n\n 'a[href]',\n 'area[href]',\n\n 'iframe',\n 'object',\n 'embed',\n\n '[tabindex]',\n '[contenteditable]',\n '[autofocus]',\n].join(',');\n\n/* This is naive and will not consider tabIndex */\nexport const getTabblableNodes = (\n parentNode: HTMLElement | null\n): HTMLElement[] => {\n if (!parentNode) {\n return [];\n }\n\n return Array.from(parentNode.querySelectorAll(tabblable));\n};\n\nexport function focusOnChildNode(parentNode: HTMLElement, itemIndex: 0 | -1) {\n const elements = getTabblableNodes(parentNode);\n if (elements.length > 0) {\n elements[itemIndex === -1 ? elements.length - 1 : 0].focus();\n } else {\n const currentTabIndex = parentNode.tabIndex;\n parentNode.tabIndex = 0;\n parentNode.focus();\n parentNode.tabIndex = currentTabIndex;\n }\n}\n"],"file":"tabUtils.js"}
File without changes
@@ -1,20 +1,19 @@
1
1
  import { useEffect } from 'react';
2
- import { getTabblableNodes } from './tabUtils';
3
- const focusLockStack = [];
2
+ import { focusOnChildNode } from './tabUtils';
3
+ var focusLockStack = [];
4
4
  export function useFocusLock(ref, opts) {
5
- const {
6
- enabled = true,
7
- lockStartRef,
8
- lockEndRef
9
- } = opts;
10
- useEffect(() => {
11
- const rootEl = ref.current;
5
+ var _opts$enabled = opts.enabled,
6
+ enabled = _opts$enabled === void 0 ? true : _opts$enabled,
7
+ lockStartRef = opts.lockStartRef,
8
+ lockEndRef = opts.lockEndRef;
9
+ useEffect(function () {
10
+ var rootEl = ref.current;
12
11
 
13
12
  if (enabled && rootEl) {
14
13
  focusLockStack.push(rootEl);
15
14
 
16
- const listener = event => {
17
- const isActiveFocusLock = focusLockStack[focusLockStack.length - 1] === rootEl;
15
+ var listener = function listener(event) {
16
+ var isActiveFocusLock = focusLockStack[focusLockStack.length - 1] === rootEl;
18
17
 
19
18
  if (!isActiveFocusLock) {
20
19
  // Not the currently focused lock. Forget about it.
@@ -22,24 +21,17 @@ export function useFocusLock(ref, opts) {
22
21
  }
23
22
 
24
23
  if (event.target === lockEndRef.current) {
25
- rootEl.focus();
24
+ focusOnChildNode(rootEl, 0);
26
25
  } else if (event.target === lockStartRef.current) {
27
- const nodes = getTabblableNodes(rootEl);
28
-
29
- if (nodes.length > 0) {
30
- const nodeToFocus = nodes.length - 1;
31
- nodes[nodeToFocus].focus();
32
- } else {
33
- rootEl.focus();
34
- }
26
+ focusOnChildNode(rootEl, -1);
35
27
  } else if (document !== event.target && rootEl !== event.target && !rootEl.contains(event.target)) {
36
28
  event.preventDefault();
37
- rootEl.focus();
29
+ focusOnChildNode(rootEl, 0);
38
30
  }
39
31
  };
40
32
 
41
33
  document.addEventListener('focusin', listener);
42
- return () => {
34
+ return function () {
43
35
  document.removeEventListener('focusin', listener); // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
44
36
 
45
37
  focusLockStack.pop();
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/FocusLock/useFocusLock.ts"],"names":["useEffect","getTabblableNodes","focusLockStack","useFocusLock","ref","opts","enabled","lockStartRef","lockEndRef","rootEl","current","push","listener","event","isActiveFocusLock","length","target","focus","nodes","nodeToFocus","document","contains","preventDefault","addEventListener","removeEventListener","pop"],"mappings":"AAAA,SAASA,SAAT,QAA0B,OAA1B;AACA,SAASC,iBAAT,QAAkC,YAAlC;AAQA,MAAMC,cAA6B,GAAG,EAAtC;AACA,OAAO,SAASC,YAAT,CACLC,GADK,EAELC,IAFK,EAGL;AACA,QAAM;AAAEC,IAAAA,OAAO,GAAG,IAAZ;AAAkBC,IAAAA,YAAlB;AAAgCC,IAAAA;AAAhC,MAA+CH,IAArD;AAEAL,EAAAA,SAAS,CAAC,MAAM;AACd,UAAMS,MAAM,GAAGL,GAAG,CAACM,OAAnB;;AACA,QAAIJ,OAAO,IAAIG,MAAf,EAAuB;AACrBP,MAAAA,cAAc,CAACS,IAAf,CAAoBF,MAApB;;AAEA,YAAMG,QAAQ,GAAIC,KAAD,IAAuB;AACtC,cAAMC,iBAAiB,GACrBZ,cAAc,CAACA,cAAc,CAACa,MAAf,GAAwB,CAAzB,CAAd,KAA8CN,MADhD;;AAEA,YAAI,CAACK,iBAAL,EAAwB;AACtB;AACA;AACD;;AAED,YAAID,KAAK,CAACG,MAAN,KAAiBR,UAAU,CAACE,OAAhC,EAAyC;AACvCD,UAAAA,MAAM,CAACQ,KAAP;AACD,SAFD,MAEO,IAAIJ,KAAK,CAACG,MAAN,KAAiBT,YAAY,CAACG,OAAlC,EAA2C;AAChD,gBAAMQ,KAAK,GAAGjB,iBAAiB,CAACQ,MAAD,CAA/B;;AAEA,cAAIS,KAAK,CAACH,MAAN,GAAe,CAAnB,EAAsB;AACpB,kBAAMI,WAAW,GAAGD,KAAK,CAACH,MAAN,GAAe,CAAnC;AACAG,YAAAA,KAAK,CAACC,WAAD,CAAL,CAAmBF,KAAnB;AACD,WAHD,MAGO;AACLR,YAAAA,MAAM,CAACQ,KAAP;AACD;AACF,SATM,MASA,IACLG,QAAQ,KAAKP,KAAK,CAACG,MAAnB,IACAP,MAAM,KAAKI,KAAK,CAACG,MADjB,IAEA,CAACP,MAAM,CAACY,QAAP,CAAgBR,KAAK,CAACG,MAAtB,CAHI,EAIL;AACAH,UAAAA,KAAK,CAACS,cAAN;AACAb,UAAAA,MAAM,CAACQ,KAAP;AACD;AACF,OA3BD;;AA6BAG,MAAAA,QAAQ,CAACG,gBAAT,CAA0B,SAA1B,EAAqCX,QAArC;AACA,aAAO,MAAM;AACXQ,QAAAA,QAAQ,CAACI,mBAAT,CAA6B,SAA7B,EAAwCZ,QAAxC,EADW,CAGX;;AACAV,QAAAA,cAAc,CAACuB,GAAf;AACD,OALD;AAMD,KAzCa,CA0Cd;;AACD,GA3CQ,EA2CN,CAACnB,OAAD,CA3CM,CAAT;AA4CD","sourcesContent":["import { useEffect } from 'react';\nimport { getTabblableNodes } from './tabUtils';\n\nexport interface FocusLockOptions {\n enabled: boolean;\n lockStartRef: React.MutableRefObject<HTMLElement | null>;\n lockEndRef: React.MutableRefObject<HTMLElement | null>;\n}\n\nconst focusLockStack: HTMLElement[] = [];\nexport function useFocusLock(\n ref: React.MutableRefObject<HTMLElement | null>,\n opts: FocusLockOptions\n) {\n const { enabled = true, lockStartRef, lockEndRef } = opts;\n\n useEffect(() => {\n const rootEl = ref.current;\n if (enabled && rootEl) {\n focusLockStack.push(rootEl);\n\n const listener = (event: FocusEvent) => {\n const isActiveFocusLock =\n focusLockStack[focusLockStack.length - 1] === rootEl;\n if (!isActiveFocusLock) {\n // Not the currently focused lock. Forget about it.\n return;\n }\n\n if (event.target === lockEndRef.current) {\n rootEl.focus();\n } else if (event.target === lockStartRef.current) {\n const nodes = getTabblableNodes(rootEl);\n\n if (nodes.length > 0) {\n const nodeToFocus = nodes.length - 1;\n nodes[nodeToFocus].focus();\n } else {\n rootEl.focus();\n }\n } else if (\n document !== event.target &&\n rootEl !== event.target &&\n !rootEl.contains(event.target as any)\n ) {\n event.preventDefault();\n rootEl.focus();\n }\n };\n\n document.addEventListener('focusin', listener);\n return () => {\n document.removeEventListener('focusin', listener);\n\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n focusLockStack.pop();\n };\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [enabled]);\n}\n"],"file":"useFocusLock.js"}
1
+ {"version":3,"sources":["../../../src/FocusLock/useFocusLock.ts"],"names":["useEffect","focusOnChildNode","focusLockStack","useFocusLock","ref","opts","enabled","lockStartRef","lockEndRef","rootEl","current","push","listener","event","isActiveFocusLock","length","target","document","contains","preventDefault","addEventListener","removeEventListener","pop"],"mappings":"AAAA,SAASA,SAAT,QAA0B,OAA1B;AAEA,SAASC,gBAAT,QAAiC,YAAjC;AAQA,IAAMC,cAA6B,GAAG,EAAtC;AACA,OAAO,SAASC,YAAT,CACLC,GADK,EAELC,IAFK,EAGL;AAAA,sBACqDA,IADrD,CACQC,OADR;AAAA,MACQA,OADR,8BACkB,IADlB;AAAA,MACwBC,YADxB,GACqDF,IADrD,CACwBE,YADxB;AAAA,MACsCC,UADtC,GACqDH,IADrD,CACsCG,UADtC;AAGAR,EAAAA,SAAS,CAAC,YAAM;AACd,QAAMS,MAAM,GAAGL,GAAG,CAACM,OAAnB;;AACA,QAAIJ,OAAO,IAAIG,MAAf,EAAuB;AACrBP,MAAAA,cAAc,CAACS,IAAf,CAAoBF,MAApB;;AAEA,UAAMG,QAAQ,GAAG,SAAXA,QAAW,CAACC,KAAD,EAAuB;AACtC,YAAMC,iBAAiB,GACrBZ,cAAc,CAACA,cAAc,CAACa,MAAf,GAAwB,CAAzB,CAAd,KAA8CN,MADhD;;AAEA,YAAI,CAACK,iBAAL,EAAwB;AACtB;AACA;AACD;;AAED,YAAID,KAAK,CAACG,MAAN,KAAiBR,UAAU,CAACE,OAAhC,EAAyC;AACvCT,UAAAA,gBAAgB,CAACQ,MAAD,EAAS,CAAT,CAAhB;AACD,SAFD,MAEO,IAAII,KAAK,CAACG,MAAN,KAAiBT,YAAY,CAACG,OAAlC,EAA2C;AAChDT,UAAAA,gBAAgB,CAACQ,MAAD,EAAS,CAAC,CAAV,CAAhB;AACD,SAFM,MAEA,IACLQ,QAAQ,KAAKJ,KAAK,CAACG,MAAnB,IACAP,MAAM,KAAKI,KAAK,CAACG,MADjB,IAEA,CAACP,MAAM,CAACS,QAAP,CAAgBL,KAAK,CAACG,MAAtB,CAHI,EAIL;AACAH,UAAAA,KAAK,CAACM,cAAN;AACAlB,UAAAA,gBAAgB,CAACQ,MAAD,EAAS,CAAT,CAAhB;AACD;AACF,OApBD;;AAsBAQ,MAAAA,QAAQ,CAACG,gBAAT,CAA0B,SAA1B,EAAqCR,QAArC;AACA,aAAO,YAAM;AACXK,QAAAA,QAAQ,CAACI,mBAAT,CAA6B,SAA7B,EAAwCT,QAAxC,EADW,CAGX;;AACAV,QAAAA,cAAc,CAACoB,GAAf;AACD,OALD;AAMD,KAlCa,CAmCd;;AACD,GApCQ,EAoCN,CAAChB,OAAD,CApCM,CAAT;AAqCD","sourcesContent":["import { useEffect } from 'react';\n\nimport { focusOnChildNode } from './tabUtils';\n\nexport interface FocusLockOptions {\n enabled: boolean;\n lockStartRef: React.MutableRefObject<HTMLElement | null>;\n lockEndRef: React.MutableRefObject<HTMLElement | null>;\n}\n\nconst focusLockStack: HTMLElement[] = [];\nexport function useFocusLock(\n ref: React.MutableRefObject<HTMLElement | null>,\n opts: FocusLockOptions\n) {\n const { enabled = true, lockStartRef, lockEndRef } = opts;\n\n useEffect(() => {\n const rootEl = ref.current;\n if (enabled && rootEl) {\n focusLockStack.push(rootEl);\n\n const listener = (event: FocusEvent) => {\n const isActiveFocusLock =\n focusLockStack[focusLockStack.length - 1] === rootEl;\n if (!isActiveFocusLock) {\n // Not the currently focused lock. Forget about it.\n return;\n }\n\n if (event.target === lockEndRef.current) {\n focusOnChildNode(rootEl, 0);\n } else if (event.target === lockStartRef.current) {\n focusOnChildNode(rootEl, -1);\n } else if (\n document !== event.target &&\n rootEl !== event.target &&\n !rootEl.contains(event.target as any)\n ) {\n event.preventDefault();\n focusOnChildNode(rootEl, 0);\n }\n };\n\n document.addEventListener('focusin', listener);\n return () => {\n document.removeEventListener('focusin', listener);\n\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n focusLockStack.pop();\n };\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [enabled]);\n}\n"],"file":"useFocusLock.js"}
@@ -1,4 +1,4 @@
1
- import type * as React from 'react';
1
+ import * as React from 'react';
2
2
  export interface ListProps extends React.HTMLAttributes<HTMLUListElement> {
3
3
  as?: React.ElementType<any>;
4
4
  innerAs?: React.ElementType<any>;
@@ -1,12 +1,12 @@
1
1
  import _extends from "@babel/runtime/helpers/extends";
2
- import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/objectWithoutPropertiesLoose";
2
+ import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
3
3
  import { forwardRef } from 'react';
4
+ import * as React from 'react';
4
5
  import { jsx as _jsx } from "react/jsx-runtime";
5
- export const List = /*#__PURE__*/forwardRef(function List(props, forwardedRef) {
6
- const {
7
- as: Comp = 'ul'
8
- } = props,
9
- otherProps = _objectWithoutPropertiesLoose(props, ["as"]);
6
+ export var List = /*#__PURE__*/forwardRef(function List(props, forwardedRef) {
7
+ var _props$as = props.as,
8
+ Comp = _props$as === void 0 ? 'ul' : _props$as,
9
+ otherProps = _objectWithoutProperties(props, ["as"]);
10
10
 
11
11
  return /*#__PURE__*/_jsx(Comp, _extends({
12
12
  ref: forwardedRef
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/List/List.tsx"],"names":["forwardRef","List","props","forwardedRef","as","Comp","otherProps"],"mappings":";;AAAA,SAASA,UAAT,QAA2B,OAA3B;;AASA,OAAO,MAAMC,IAAI,gBAAGD,UAAU,CAA8B,SAASC,IAAT,CAC1DC,KAD0D,EAE1DC,YAF0D,EAG1D;AACA,QAAM;AAAEC,IAAAA,EAAE,EAAEC,IAAI,GAAG;AAAb,MAAqCH,KAA3C;AAAA,QAA4BI,UAA5B,iCAA2CJ,KAA3C;;AAEA,sBAAO,KAAC,IAAD;AAAM,IAAA,GAAG,EAAEC;AAAX,KAA6BG,UAA7B,EAAP;AACD,CAP6B,CAAvB","sourcesContent":["import { forwardRef } from 'react';\nimport type * as React from 'react';\n\nexport interface ListProps extends React.HTMLAttributes<HTMLUListElement> {\n as?: React.ElementType<any>;\n innerAs?: React.ElementType<any>;\n children?: React.ReactNode;\n}\n\nexport const List = forwardRef<HTMLUListElement, ListProps>(function List(\n props,\n forwardedRef\n) {\n const { as: Comp = 'ul', ...otherProps } = props;\n\n return <Comp ref={forwardedRef} {...otherProps} />;\n});\n"],"file":"List.js"}
1
+ {"version":3,"sources":["../../../src/List/List.tsx"],"names":["forwardRef","React","List","props","forwardedRef","as","Comp","otherProps"],"mappings":";;AAAA,SAASA,UAAT,QAA2B,OAA3B;AACA,OAAO,KAAKC,KAAZ,MAAuB,OAAvB;;AAQA,OAAO,IAAMC,IAAI,gBAAGF,UAAU,CAA8B,SAASE,IAAT,CAC1DC,KAD0D,EAE1DC,YAF0D,EAG1D;AAAA,kBAC2CD,KAD3C,CACQE,EADR;AAAA,MACYC,IADZ,0BACmB,IADnB;AAAA,MAC4BC,UAD5B,4BAC2CJ,KAD3C;;AAGA,sBAAO,KAAC,IAAD;AAAM,IAAA,GAAG,EAAEC;AAAX,KAA6BG,UAA7B,EAAP;AACD,CAP6B,CAAvB","sourcesContent":["import { forwardRef } from 'react';\nimport * as React from 'react';\n\nexport interface ListProps extends React.HTMLAttributes<HTMLUListElement> {\n as?: React.ElementType<any>;\n innerAs?: React.ElementType<any>;\n children?: React.ReactNode;\n}\n\nexport const List = forwardRef<HTMLUListElement, ListProps>(function List(\n props,\n forwardedRef\n) {\n const { as: Comp = 'ul', ...otherProps } = props;\n\n return <Comp ref={forwardedRef} {...otherProps} />;\n});\n"],"file":"List.js"}
@@ -1,4 +1,4 @@
1
- import type * as React from 'react';
1
+ import * as React from 'react';
2
2
  export interface ListItemProps extends React.HTMLAttributes<HTMLLIElement> {
3
3
  as?: React.ElementType<any>;
4
4
  innerAs?: React.ElementType<any>;
@@ -1,12 +1,12 @@
1
1
  import _extends from "@babel/runtime/helpers/extends";
2
- import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/objectWithoutPropertiesLoose";
2
+ import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
3
3
  import { forwardRef } from 'react';
4
+ import * as React from 'react';
4
5
  import { jsx as _jsx } from "react/jsx-runtime";
5
- export const ListItem = /*#__PURE__*/forwardRef(function ListItem(props, forwardedRef) {
6
- const {
7
- as: Comp = 'li'
8
- } = props,
9
- otherProps = _objectWithoutPropertiesLoose(props, ["as"]);
6
+ export var ListItem = /*#__PURE__*/forwardRef(function ListItem(props, forwardedRef) {
7
+ var _props$as = props.as,
8
+ Comp = _props$as === void 0 ? 'li' : _props$as,
9
+ otherProps = _objectWithoutProperties(props, ["as"]);
10
10
 
11
11
  return /*#__PURE__*/_jsx(Comp, _extends({
12
12
  tabIndex: -1,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/List/ListItem.tsx"],"names":["forwardRef","ListItem","props","forwardedRef","as","Comp","otherProps"],"mappings":";;AAAA,SAASA,UAAT,QAA2B,OAA3B;;AASA,OAAO,MAAMC,QAAQ,gBAAGD,UAAU,CAChC,SAASC,QAAT,CAAkBC,KAAlB,EAAyBC,YAAzB,EAAuC;AACrC,QAAM;AAAEC,IAAAA,EAAE,EAAEC,IAAI,GAAG;AAAb,MAAqCH,KAA3C;AAAA,QAA4BI,UAA5B,iCAA2CJ,KAA3C;;AAEA,sBACE,KAAC,IAAD;AACE,IAAA,QAAQ,EAAE,CAAC,CADb;AAEE,sBAAe,EAFjB;AAGE,IAAA,GAAG,EAAEC;AAHP,KAIMG,UAJN,EADF;AAQD,CAZ+B,CAA3B","sourcesContent":["import { forwardRef } from 'react';\nimport type * as React from 'react';\n\nexport interface ListItemProps extends React.HTMLAttributes<HTMLLIElement> {\n as?: React.ElementType<any>;\n innerAs?: React.ElementType<any>;\n children?: React.ReactNode;\n}\n\nexport const ListItem = forwardRef<HTMLLIElement, ListItemProps>(\n function ListItem(props, forwardedRef) {\n const { as: Comp = 'li', ...otherProps } = props;\n\n return (\n <Comp\n tabIndex={-1}\n data-list-item=\"\"\n ref={forwardedRef}\n {...otherProps}\n />\n );\n }\n);\n"],"file":"ListItem.js"}
1
+ {"version":3,"sources":["../../../src/List/ListItem.tsx"],"names":["forwardRef","React","ListItem","props","forwardedRef","as","Comp","otherProps"],"mappings":";;AAAA,SAASA,UAAT,QAA2B,OAA3B;AACA,OAAO,KAAKC,KAAZ,MAAuB,OAAvB;;AAQA,OAAO,IAAMC,QAAQ,gBAAGF,UAAU,CAChC,SAASE,QAAT,CAAkBC,KAAlB,EAAyBC,YAAzB,EAAuC;AAAA,kBACMD,KADN,CAC7BE,EAD6B;AAAA,MACzBC,IADyB,0BAClB,IADkB;AAAA,MACTC,UADS,4BACMJ,KADN;;AAGrC,sBACE,KAAC,IAAD;AACE,IAAA,QAAQ,EAAE,CAAC,CADb;AAEE,sBAAe,EAFjB;AAGE,IAAA,GAAG,EAAEC;AAHP,KAIMG,UAJN,EADF;AAQD,CAZ+B,CAA3B","sourcesContent":["import { forwardRef } from 'react';\nimport * as React from 'react';\n\nexport interface ListItemProps extends React.HTMLAttributes<HTMLLIElement> {\n as?: React.ElementType<any>;\n innerAs?: React.ElementType<any>;\n children?: React.ReactNode;\n}\n\nexport const ListItem = forwardRef<HTMLLIElement, ListItemProps>(\n function ListItem(props, forwardedRef) {\n const { as: Comp = 'li', ...otherProps } = props;\n\n return (\n <Comp\n tabIndex={-1}\n data-list-item=\"\"\n ref={forwardedRef}\n {...otherProps}\n />\n );\n }\n);\n"],"file":"ListItem.js"}
File without changes
@@ -1,9 +1,9 @@
1
1
  import { createContext, useContext } from 'react'; // List Component
2
2
 
3
- const ListContext = /*#__PURE__*/createContext(null);
3
+ var ListContext = /*#__PURE__*/createContext(null);
4
4
  ListContext.displayName = 'ListContext';
5
- export const useListContext = () => {
6
- const ctx = useContext(ListContext);
5
+ export var useListContext = function useListContext() {
6
+ var ctx = useContext(ListContext);
7
7
 
8
8
  if (!ctx) {
9
9
  throw new Error('useListContext must be used within a ListContext.Provider');
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/List/context.ts"],"names":["createContext","useContext","ListContext","displayName","useListContext","ctx","Error"],"mappings":"AAAA,SAASA,aAAT,EAAwBC,UAAxB,QAA0C,OAA1C,C,CAEA;;AAKA,MAAMC,WAAW,gBAAGF,aAAa,CAA0B,IAA1B,CAAjC;AACAE,WAAW,CAACC,WAAZ,GAA0B,aAA1B;AAEA,OAAO,MAAMC,cAAc,GAAG,MAAwB;AACpD,QAAMC,GAAG,GAAGJ,UAAU,CAACC,WAAD,CAAtB;;AACA,MAAI,CAACG,GAAL,EAAU;AACR,UAAM,IAAIC,KAAJ,CACJ,2DADI,CAAN;AAGD;;AACD,SAAOD,GAAP;AACD,CARM","sourcesContent":["import { createContext, useContext } from 'react';\n\n// List Component\nexport interface ListContextProps {\n id: string | undefined;\n}\n\nconst ListContext = createContext<ListContextProps | null>(null);\nListContext.displayName = 'ListContext';\n\nexport const useListContext = (): ListContextProps => {\n const ctx = useContext(ListContext);\n if (!ctx) {\n throw new Error(\n 'useListContext must be used within a ListContext.Provider'\n );\n }\n return ctx;\n};\n"],"file":"context.js"}
1
+ {"version":3,"sources":["../../../src/List/context.ts"],"names":["createContext","useContext","ListContext","displayName","useListContext","ctx","Error"],"mappings":"AAAA,SAASA,aAAT,EAAwBC,UAAxB,QAA0C,OAA1C,C,CAEA;;AAKA,IAAMC,WAAW,gBAAGF,aAAa,CAA0B,IAA1B,CAAjC;AACAE,WAAW,CAACC,WAAZ,GAA0B,aAA1B;AAEA,OAAO,IAAMC,cAAc,GAAG,SAAjBA,cAAiB,GAAwB;AACpD,MAAMC,GAAG,GAAGJ,UAAU,CAACC,WAAD,CAAtB;;AACA,MAAI,CAACG,GAAL,EAAU;AACR,UAAM,IAAIC,KAAJ,CACJ,2DADI,CAAN;AAGD;;AACD,SAAOD,GAAP;AACD,CARM","sourcesContent":["import { createContext, useContext } from 'react';\n\n// List Component\nexport interface ListContextProps {\n id: string | undefined;\n}\n\nconst ListContext = createContext<ListContextProps | null>(null);\nListContext.displayName = 'ListContext';\n\nexport const useListContext = (): ListContextProps => {\n const ctx = useContext(ListContext);\n if (!ctx) {\n throw new Error(\n 'useListContext must be used within a ListContext.Provider'\n );\n }\n return ctx;\n};\n"],"file":"context.js"}
File without changes
File without changes
File without changes
@@ -1,4 +1,4 @@
1
- import type * as React from 'react';
1
+ import * as React from 'react';
2
2
  export interface MenuProps {
3
3
  as?: React.ElementType<any>;
4
4
  innerAs?: React.ElementType<any>;
@@ -1,32 +1,40 @@
1
1
  import _extends from "@babel/runtime/helpers/extends";
2
- import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/objectWithoutPropertiesLoose";
3
- import { forwardRef, useRef, Fragment } from 'react';
2
+ import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
3
+ import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
4
+ import { forwardRef, useRef, Fragment, useId } from 'react';
5
+ import * as React from 'react';
4
6
  import { MenuProvider } from './context';
5
- import { useId } from '../hooks/useId';
6
7
  import { useControlledState } from '../hooks';
7
8
  import { jsx as _jsx } from "react/jsx-runtime";
8
- export const Menu = /*#__PURE__*/forwardRef(function Menu(props, forwardedRef) {
9
- const {
10
- as: Comp = Fragment,
11
- open: openProp,
12
- defaultOpen = false,
13
- onChange: onChangeProp
14
- } = props,
15
- otherProps = _objectWithoutPropertiesLoose(props, ["as", "open", "defaultOpen", "onChange"]);
9
+ export var Menu = /*#__PURE__*/forwardRef(function Menu(props, forwardedRef) {
10
+ var _props$as = props.as,
11
+ Comp = _props$as === void 0 ? Fragment : _props$as,
12
+ openProp = props.open,
13
+ _props$defaultOpen = props.defaultOpen,
14
+ defaultOpen = _props$defaultOpen === void 0 ? false : _props$defaultOpen,
15
+ onChangeProp = props.onChange,
16
+ otherProps = _objectWithoutProperties(props, ["as", "open", "defaultOpen", "onChange"]);
17
+
18
+ var menuListIdRef = useRef();
19
+ var openWithArrowKeyRef = useRef(null);
20
+ var buttonRef = useRef(null);
21
+
22
+ var _useControlledState = useControlledState(openProp, onChangeProp, defaultOpen, function (setState) {
23
+ return function (e, isOpen) {
24
+ setState(isOpen);
25
+ };
26
+ }),
27
+ _useControlledState2 = _slicedToArray(_useControlledState, 2),
28
+ open = _useControlledState2[0],
29
+ onChange = _useControlledState2[1];
16
30
 
17
- const menuListIdRef = useRef();
18
- const openWithArrowKeyRef = useRef(null);
19
- const buttonRef = useRef(null);
20
- const [open, onChange] = useControlledState(openProp, onChangeProp, defaultOpen, setState => (e, isOpen) => {
21
- setState(isOpen);
22
- });
23
31
  menuListIdRef.current = useId();
24
- const value = {
25
- menuListIdRef,
26
- openWithArrowKeyRef,
27
- open,
28
- onChange,
29
- buttonRef
32
+ var value = {
33
+ menuListIdRef: menuListIdRef,
34
+ openWithArrowKeyRef: openWithArrowKeyRef,
35
+ open: open,
36
+ onChange: onChange,
37
+ buttonRef: buttonRef
30
38
  };
31
39
  return /*#__PURE__*/_jsx(MenuProvider, {
32
40
  value: value,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/Menu/Menu.tsx"],"names":["forwardRef","useRef","Fragment","MenuProvider","useId","useControlledState","Menu","props","forwardedRef","as","Comp","open","openProp","defaultOpen","onChange","onChangeProp","otherProps","menuListIdRef","openWithArrowKeyRef","buttonRef","setState","e","isOpen","current","value"],"mappings":";;AAAA,SAASA,UAAT,EAAqBC,MAArB,EAA6BC,QAA7B,QAA6C,OAA7C;AAEA,SAASC,YAAT,QAA+C,WAA/C;AACA,SAASC,KAAT,QAAsB,gBAAtB;AACA,SAASC,kBAAT,QAAmC,UAAnC;;AAiBA,OAAO,MAAMC,IAAI,gBAAGN,UAAU,CAA4B,SAASM,IAAT,CACxDC,KADwD,EAExDC,YAFwD,EAGxD;AACA,QAAM;AACJC,IAAAA,EAAE,EAAEC,IAAI,GAAGR,QADP;AAEJS,IAAAA,IAAI,EAAEC,QAFF;AAGJC,IAAAA,WAAW,GAAG,KAHV;AAIJC,IAAAA,QAAQ,EAAEC;AAJN,MAMFR,KANJ;AAAA,QAKKS,UALL,iCAMIT,KANJ;;AAOA,QAAMU,aAAa,GAAGhB,MAAM,EAA5B;AACA,QAAMiB,mBAAmB,GAAGjB,MAAM,CAAiC,IAAjC,CAAlC;AACA,QAAMkB,SAAS,GAAGlB,MAAM,CAAoB,IAApB,CAAxB;AACA,QAAM,CAACU,IAAD,EAAOG,QAAP,IAAmBT,kBAAkB,CACzCO,QADyC,EAEzCG,YAFyC,EAGzCF,WAHyC,EAIxCO,QAAD,IAAc,CAACC,CAAD,EAAIC,MAAJ,KAAe;AAC3BF,IAAAA,QAAQ,CAACE,MAAD,CAAR;AACD,GANwC,CAA3C;AASAL,EAAAA,aAAa,CAACM,OAAd,GAAwBnB,KAAK,EAA7B;AAEA,QAAMoB,KAAuB,GAAG;AAC9BP,IAAAA,aAD8B;AAE9BC,IAAAA,mBAF8B;AAG9BP,IAAAA,IAH8B;AAI9BG,IAAAA,QAJ8B;AAK9BK,IAAAA;AAL8B,GAAhC;AAQA,sBACE,KAAC,YAAD;AAAc,IAAA,KAAK,EAAEK,KAArB;AAAA,2BACE,KAAC,IAAD;AAAM,MAAA,GAAG,EAAEhB;AAAX,OAA6BQ,UAA7B;AADF,IADF;AAKD,CAtC6B,CAAvB","sourcesContent":["import { forwardRef, useRef, Fragment } from 'react';\nimport type * as React from 'react';\nimport { MenuProvider, MenuContextProps } from './context';\nimport { useId } from '../hooks/useId';\nimport { useControlledState } from '../hooks';\n\nexport interface MenuProps {\n as?: React.ElementType<any>;\n innerAs?: React.ElementType<any>;\n children?: React.ReactNode;\n onChange?: (\n e:\n | React.KeyboardEvent<HTMLElement>\n | React.MouseEvent<HTMLElement>\n | React.PointerEvent<HTMLElement>,\n isOpen: boolean\n ) => void;\n open?: boolean;\n defaultOpen?: boolean;\n}\n\nexport const Menu = forwardRef<HTMLDivElement, MenuProps>(function Menu(\n props,\n forwardedRef\n) {\n const {\n as: Comp = Fragment,\n open: openProp,\n defaultOpen = false,\n onChange: onChangeProp,\n ...otherProps\n } = props;\n const menuListIdRef = useRef<string>();\n const openWithArrowKeyRef = useRef<'ArrowUp' | 'ArrowDown' | null>(null);\n const buttonRef = useRef<HTMLButtonElement>(null);\n const [open, onChange] = useControlledState(\n openProp,\n onChangeProp,\n defaultOpen,\n (setState) => (e, isOpen) => {\n setState(isOpen);\n }\n );\n\n menuListIdRef.current = useId();\n\n const value: MenuContextProps = {\n menuListIdRef,\n openWithArrowKeyRef,\n open,\n onChange,\n buttonRef,\n };\n\n return (\n <MenuProvider value={value}>\n <Comp ref={forwardedRef} {...otherProps} />\n </MenuProvider>\n );\n});\n"],"file":"Menu.js"}
1
+ {"version":3,"sources":["../../../src/Menu/Menu.tsx"],"names":["forwardRef","useRef","Fragment","useId","React","MenuProvider","useControlledState","Menu","props","forwardedRef","as","Comp","openProp","open","defaultOpen","onChangeProp","onChange","otherProps","menuListIdRef","openWithArrowKeyRef","buttonRef","setState","e","isOpen","current","value"],"mappings":";;;AAAA,SAASA,UAAT,EAAqBC,MAArB,EAA6BC,QAA7B,EAAuCC,KAAvC,QAAoD,OAApD;AACA,OAAO,KAAKC,KAAZ,MAAuB,OAAvB;AAGA,SAASC,YAAT,QAA6B,WAA7B;AACA,SAASC,kBAAT,QAAmC,UAAnC;;AAiBA,OAAO,IAAMC,IAAI,gBAAGP,UAAU,CAA4B,SAASO,IAAT,CACxDC,KADwD,EAExDC,YAFwD,EAGxD;AAAA,kBAOID,KAPJ,CAEEE,EAFF;AAAA,MAEMC,IAFN,0BAEaT,QAFb;AAAA,MAGQU,QAHR,GAOIJ,KAPJ,CAGEK,IAHF;AAAA,2BAOIL,KAPJ,CAIEM,WAJF;AAAA,MAIEA,WAJF,mCAIgB,KAJhB;AAAA,MAKYC,YALZ,GAOIP,KAPJ,CAKEQ,QALF;AAAA,MAMKC,UANL,4BAOIT,KAPJ;;AAQA,MAAMU,aAAa,GAAGjB,MAAM,EAA5B;AACA,MAAMkB,mBAAmB,GAAGlB,MAAM,CAAiC,IAAjC,CAAlC;AACA,MAAMmB,SAAS,GAAGnB,MAAM,CAAoB,IAApB,CAAxB;;AAVA,4BAWyBK,kBAAkB,CACzCM,QADyC,EAEzCG,YAFyC,EAGzCD,WAHyC,EAIzC,UAACO,QAAD;AAAA,WAAc,UAACC,CAAD,EAAIC,MAAJ,EAAe;AAC3BF,MAAAA,QAAQ,CAACE,MAAD,CAAR;AACD,KAFD;AAAA,GAJyC,CAX3C;AAAA;AAAA,MAWOV,IAXP;AAAA,MAWaG,QAXb;;AAoBAE,EAAAA,aAAa,CAACM,OAAd,GAAwBrB,KAAK,EAA7B;AAEA,MAAMsB,KAAuB,GAAG;AAC9BP,IAAAA,aAAa,EAAbA,aAD8B;AAE9BC,IAAAA,mBAAmB,EAAnBA,mBAF8B;AAG9BN,IAAAA,IAAI,EAAJA,IAH8B;AAI9BG,IAAAA,QAAQ,EAARA,QAJ8B;AAK9BI,IAAAA,SAAS,EAATA;AAL8B,GAAhC;AAQA,sBACE,KAAC,YAAD;AAAc,IAAA,KAAK,EAAEK,KAArB;AAAA,2BACE,KAAC,IAAD;AAAM,MAAA,GAAG,EAAEhB;AAAX,OAA6BQ,UAA7B;AADF,IADF;AAKD,CAtC6B,CAAvB","sourcesContent":["import { forwardRef, useRef, Fragment, useId } from 'react';\nimport * as React from 'react';\n\nimport type { MenuContextProps } from './context';\nimport { MenuProvider } from './context';\nimport { useControlledState } from '../hooks';\n\nexport interface MenuProps {\n as?: React.ElementType<any>;\n innerAs?: React.ElementType<any>;\n children?: React.ReactNode;\n onChange?: (\n e:\n | React.KeyboardEvent<HTMLElement>\n | React.MouseEvent<HTMLElement>\n | React.PointerEvent<HTMLElement>,\n isOpen: boolean\n ) => void;\n open?: boolean;\n defaultOpen?: boolean;\n}\n\nexport const Menu = forwardRef<HTMLDivElement, MenuProps>(function Menu(\n props,\n forwardedRef\n) {\n const {\n as: Comp = Fragment,\n open: openProp,\n defaultOpen = false,\n onChange: onChangeProp,\n ...otherProps\n } = props;\n const menuListIdRef = useRef<string>();\n const openWithArrowKeyRef = useRef<'ArrowUp' | 'ArrowDown' | null>(null);\n const buttonRef = useRef<HTMLButtonElement>(null);\n const [open, onChange] = useControlledState(\n openProp,\n onChangeProp,\n defaultOpen,\n (setState) => (e, isOpen) => {\n setState(isOpen);\n }\n );\n\n menuListIdRef.current = useId();\n\n const value: MenuContextProps = {\n menuListIdRef,\n openWithArrowKeyRef,\n open,\n onChange,\n buttonRef,\n };\n\n return (\n <MenuProvider value={value}>\n <Comp ref={forwardedRef} {...otherProps} />\n </MenuProvider>\n );\n});\n"],"file":"Menu.js"}
@@ -1,4 +1,4 @@
1
- import type * as React from 'react';
1
+ import * as React from 'react';
2
2
  export declare type MenuButtonProps = React.ButtonHTMLAttributes<HTMLButtonElement> & {
3
3
  as?: React.ElementType<any>;
4
4
  innerAs?: React.ElementType<any>;
@@ -1,41 +1,45 @@
1
1
  import _extends from "@babel/runtime/helpers/extends";
2
- import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/objectWithoutPropertiesLoose";
3
- import { forwardRef } from 'react';
2
+ import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
3
+ import { forwardRef, useId } from 'react';
4
+ import * as React from 'react';
4
5
  import { useMenuContext } from './context';
5
6
  import { wrapEvent } from '../utils/wrapEvent';
6
- import { useId } from '../hooks';
7
7
  import { jsx as _jsx } from "react/jsx-runtime";
8
- export const MenuButton = /*#__PURE__*/forwardRef(function MenuButton(props, forwardedRef) {
9
- const {
10
- as: Comp = 'button',
11
- id: preferredId,
12
- onClick,
13
- onKeyDown,
14
- disabled
15
- } = props,
16
- otherProps = _objectWithoutPropertiesLoose(props, ["as", "id", "onClick", "onKeyDown", "disabled"]);
8
+ export var MenuButton = /*#__PURE__*/forwardRef(function MenuButton(props, forwardedRef) {
9
+ var _props$as = props.as,
10
+ Comp = _props$as === void 0 ? 'button' : _props$as,
11
+ preferredId = props.id,
12
+ onClick = props.onClick,
13
+ onKeyDown = props.onKeyDown,
14
+ disabled = props.disabled,
15
+ otherProps = _objectWithoutProperties(props, ["as", "id", "onClick", "onKeyDown", "disabled"]);
17
16
 
18
- const {
19
- menuListIdRef,
20
- openWithArrowKeyRef,
21
- open,
22
- buttonRef,
23
- onChange
24
- } = useMenuContext();
25
- const buttonId = useId(preferredId);
17
+ var _useMenuContext = useMenuContext(),
18
+ menuListIdRef = _useMenuContext.menuListIdRef,
19
+ openWithArrowKeyRef = _useMenuContext.openWithArrowKeyRef,
20
+ open = _useMenuContext.open,
21
+ buttonRef = _useMenuContext.buttonRef,
22
+ onChange = _useMenuContext.onChange;
26
23
 
27
- const handleKeyDown = e => {
24
+ var buttonIdGenerated = useId();
25
+ var buttonId = preferredId || buttonIdGenerated;
26
+
27
+ var handleKeyDown = function handleKeyDown(e) {
28
28
  if (disabled) {
29
29
  return;
30
30
  }
31
31
 
32
32
  buttonRef.current = e.currentTarget;
33
33
 
34
- const isArrowKey = () => ['ArrowUp', 'ArrowDown'].includes(e.key);
34
+ var isArrowKey = function isArrowKey() {
35
+ return ['ArrowUp', 'ArrowDown'].includes(e.key);
36
+ };
35
37
 
36
- const isEnterKey = () => [' ', 'Enter'].includes(e.key);
38
+ var isEnterKey = function isEnterKey() {
39
+ return [' ', 'Enter'].includes(e.key);
40
+ };
37
41
 
38
- const openedWithArrow = isArrowKey();
42
+ var openedWithArrow = isArrowKey();
39
43
 
40
44
  if (openedWithArrow || isEnterKey()) {
41
45
  if (openedWithArrow) {
@@ -48,7 +52,7 @@ export const MenuButton = /*#__PURE__*/forwardRef(function MenuButton(props, for
48
52
  }
49
53
  };
50
54
 
51
- const handleClick = e => {
55
+ var handleClick = function handleClick(e) {
52
56
  if (disabled) {
53
57
  return;
54
58
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/Menu/MenuButton.tsx"],"names":["forwardRef","useMenuContext","wrapEvent","useId","MenuButton","props","forwardedRef","as","Comp","id","preferredId","onClick","onKeyDown","disabled","otherProps","menuListIdRef","openWithArrowKeyRef","open","buttonRef","onChange","buttonId","handleKeyDown","e","current","currentTarget","isArrowKey","includes","key","isEnterKey","openedWithArrow","preventDefault","handleClick","undefined"],"mappings":";;AAAA,SAASA,UAAT,QAA2B,OAA3B;AAEA,SAASC,cAAT,QAA+B,WAA/B;AACA,SAASC,SAAT,QAA0B,oBAA1B;AACA,SAASC,KAAT,QAAsB,UAAtB;;AAYA,OAAO,MAAMC,UAAU,gBAAGJ,UAAU,CAClC,SAASI,UAAT,CAAoBC,KAApB,EAA2BC,YAA3B,EAAyC;AACvC,QAAM;AACJC,IAAAA,EAAE,EAAEC,IAAI,GAAG,QADP;AAEJC,IAAAA,EAAE,EAAEC,WAFA;AAGJC,IAAAA,OAHI;AAIJC,IAAAA,SAJI;AAKJC,IAAAA;AALI,MAOFR,KAPJ;AAAA,QAMKS,UANL,iCAOIT,KAPJ;;AAQA,QAAM;AACJU,IAAAA,aADI;AAEJC,IAAAA,mBAFI;AAGJC,IAAAA,IAHI;AAIJC,IAAAA,SAJI;AAKJC,IAAAA;AALI,MAMFlB,cAAc,EANlB;AAQA,QAAMmB,QAAQ,GAAGjB,KAAK,CAACO,WAAD,CAAtB;;AAEA,QAAMW,aAAa,GAAIC,CAAD,IAA+C;AACnE,QAAIT,QAAJ,EAAc;AACZ;AACD;;AACDK,IAAAA,SAAS,CAACK,OAAV,GAAoBD,CAAC,CAACE,aAAtB;;AAEA,UAAMC,UAAU,GAAG,MAAM,CAAC,SAAD,EAAY,WAAZ,EAAyBC,QAAzB,CAAkCJ,CAAC,CAACK,GAApC,CAAzB;;AACA,UAAMC,UAAU,GAAG,MAAM,CAAC,GAAD,EAAM,OAAN,EAAeF,QAAf,CAAwBJ,CAAC,CAACK,GAA1B,CAAzB;;AAEA,UAAME,eAAe,GAAGJ,UAAU,EAAlC;;AACA,QAAII,eAAe,IAAID,UAAU,EAAjC,EAAqC;AACnC,UAAIC,eAAJ,EAAqB;AACnB;AACAb,QAAAA,mBAAmB,CAACO,OAApB,GAA8BD,CAAC,CAACK,GAAhC;AACD;;AACDR,MAAAA,QAAQ,IAAIA,QAAQ,CAACG,CAAD,EAAI,IAAJ,CAApB;AACAA,MAAAA,CAAC,CAACQ,cAAF;AACD;AACF,GAlBD;;AAoBA,QAAMC,WAAW,GAAIT,CAAD,IAA4C;AAC9D,QAAIT,QAAJ,EAAc;AACZ;AACD;;AACDK,IAAAA,SAAS,CAACK,OAAV,GAAoBD,CAAC,CAACE,aAAtB;AAEAL,IAAAA,QAAQ,IAAIA,QAAQ,CAACG,CAAD,EAAI,CAACL,IAAL,CAApB;AACD,GAPD;;AASA,sBACE,KAAC,IAAD;AACE,IAAA,GAAG,EAAEX,YADP;AAEE,IAAA,EAAE,EAAEc,QAFN;AAGE,IAAA,IAAI,EAAC,QAHP;AAIE,IAAA,IAAI,EAAC,QAJP;AAKE,qBAAe,IALjB;AAME,qBAAeL,aAAa,CAACQ,OAN/B;AAOE,qBAAeN,IAAI,GAAG,IAAH,GAAUe,SAP/B;AAQE,wBAAiB,EARnB;AASE,IAAA,OAAO,EAAE9B,SAAS,CAACS,OAAD,EAAUoB,WAAV,CATpB;AAUE,IAAA,SAAS,EAAE7B,SAAS,CAACU,SAAD,EAAYS,aAAZ,CAVtB;AAWE,IAAA,QAAQ,EAAER;AAXZ,KAYMC,UAZN,EADF;AAgBD,CAjEiC,CAA7B","sourcesContent":["import { forwardRef } from 'react';\nimport type * as React from 'react';\nimport { useMenuContext } from './context';\nimport { wrapEvent } from '../utils/wrapEvent';\nimport { useId } from '../hooks';\n\nexport type MenuButtonProps = React.ButtonHTMLAttributes<HTMLButtonElement> & {\n as?: React.ElementType<any>;\n innerAs?: React.ElementType<any>;\n onClick?: (\n e:\n | React.MouseEvent<HTMLButtonElement>\n | React.KeyboardEvent<HTMLButtonElement>\n ) => void;\n};\n\nexport const MenuButton = forwardRef<HTMLButtonElement, MenuButtonProps>(\n function MenuButton(props, forwardedRef) {\n const {\n as: Comp = 'button',\n id: preferredId,\n onClick,\n onKeyDown,\n disabled,\n ...otherProps\n } = props;\n const {\n menuListIdRef,\n openWithArrowKeyRef,\n open,\n buttonRef,\n onChange,\n } = useMenuContext();\n\n const buttonId = useId(preferredId);\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLButtonElement>) => {\n if (disabled) {\n return;\n }\n buttonRef.current = e.currentTarget;\n\n const isArrowKey = () => ['ArrowUp', 'ArrowDown'].includes(e.key);\n const isEnterKey = () => [' ', 'Enter'].includes(e.key);\n\n const openedWithArrow = isArrowKey();\n if (openedWithArrow || isEnterKey()) {\n if (openedWithArrow) {\n // Used to make it open at the end or begining of the list\n openWithArrowKeyRef.current = e.key;\n }\n onChange && onChange(e, true);\n e.preventDefault();\n }\n };\n\n const handleClick = (e: React.MouseEvent<HTMLButtonElement>) => {\n if (disabled) {\n return;\n }\n buttonRef.current = e.currentTarget;\n\n onChange && onChange(e, !open);\n };\n\n return (\n <Comp\n ref={forwardedRef}\n id={buttonId}\n role=\"button\"\n type=\"button\"\n aria-haspopup={true}\n aria-controls={menuListIdRef.current}\n aria-expanded={open ? true : undefined}\n data-menu-button=\"\"\n onClick={wrapEvent(onClick, handleClick)}\n onKeyDown={wrapEvent(onKeyDown, handleKeyDown)}\n disabled={disabled}\n {...otherProps}\n />\n );\n }\n);\n"],"file":"MenuButton.js"}
1
+ {"version":3,"sources":["../../../src/Menu/MenuButton.tsx"],"names":["forwardRef","useId","React","useMenuContext","wrapEvent","MenuButton","props","forwardedRef","as","Comp","preferredId","id","onClick","onKeyDown","disabled","otherProps","menuListIdRef","openWithArrowKeyRef","open","buttonRef","onChange","buttonIdGenerated","buttonId","handleKeyDown","e","current","currentTarget","isArrowKey","includes","key","isEnterKey","openedWithArrow","preventDefault","handleClick","undefined"],"mappings":";;AAAA,SAASA,UAAT,EAAqBC,KAArB,QAAkC,OAAlC;AACA,OAAO,KAAKC,KAAZ,MAAuB,OAAvB;AAEA,SAASC,cAAT,QAA+B,WAA/B;AACA,SAASC,SAAT,QAA0B,oBAA1B;;AAYA,OAAO,IAAMC,UAAU,gBAAGL,UAAU,CAClC,SAASK,UAAT,CAAoBC,KAApB,EAA2BC,YAA3B,EAAyC;AAAA,kBAQnCD,KARmC,CAErCE,EAFqC;AAAA,MAEjCC,IAFiC,0BAE1B,QAF0B;AAAA,MAGjCC,WAHiC,GAQnCJ,KARmC,CAGrCK,EAHqC;AAAA,MAIrCC,OAJqC,GAQnCN,KARmC,CAIrCM,OAJqC;AAAA,MAKrCC,SALqC,GAQnCP,KARmC,CAKrCO,SALqC;AAAA,MAMrCC,QANqC,GAQnCR,KARmC,CAMrCQ,QANqC;AAAA,MAOlCC,UAPkC,4BAQnCT,KARmC;;AAAA,wBAUrCH,cAAc,EAVuB;AAAA,MAS/Ba,aAT+B,mBAS/BA,aAT+B;AAAA,MAShBC,mBATgB,mBAShBA,mBATgB;AAAA,MASKC,IATL,mBASKA,IATL;AAAA,MASWC,SATX,mBASWA,SATX;AAAA,MASsBC,QATtB,mBASsBA,QATtB;;AAYvC,MAAMC,iBAAiB,GAAGpB,KAAK,EAA/B;AACA,MAAMqB,QAAQ,GAAGZ,WAAW,IAAIW,iBAAhC;;AAEA,MAAME,aAAa,GAAG,SAAhBA,aAAgB,CAACC,CAAD,EAA+C;AACnE,QAAIV,QAAJ,EAAc;AACZ;AACD;;AACDK,IAAAA,SAAS,CAACM,OAAV,GAAoBD,CAAC,CAACE,aAAtB;;AAEA,QAAMC,UAAU,GAAG,SAAbA,UAAa;AAAA,aAAM,CAAC,SAAD,EAAY,WAAZ,EAAyBC,QAAzB,CAAkCJ,CAAC,CAACK,GAApC,CAAN;AAAA,KAAnB;;AACA,QAAMC,UAAU,GAAG,SAAbA,UAAa;AAAA,aAAM,CAAC,GAAD,EAAM,OAAN,EAAeF,QAAf,CAAwBJ,CAAC,CAACK,GAA1B,CAAN;AAAA,KAAnB;;AAEA,QAAME,eAAe,GAAGJ,UAAU,EAAlC;;AACA,QAAII,eAAe,IAAID,UAAU,EAAjC,EAAqC;AACnC,UAAIC,eAAJ,EAAqB;AACnB;AACAd,QAAAA,mBAAmB,CAACQ,OAApB,GAA8BD,CAAC,CAACK,GAAhC;AACD;;AACDT,MAAAA,QAAQ,IAAIA,QAAQ,CAACI,CAAD,EAAI,IAAJ,CAApB;AACAA,MAAAA,CAAC,CAACQ,cAAF;AACD;AACF,GAlBD;;AAoBA,MAAMC,WAAW,GAAG,SAAdA,WAAc,CAACT,CAAD,EAA4C;AAC9D,QAAIV,QAAJ,EAAc;AACZ;AACD;;AACDK,IAAAA,SAAS,CAACM,OAAV,GAAoBD,CAAC,CAACE,aAAtB;AAEAN,IAAAA,QAAQ,IAAIA,QAAQ,CAACI,CAAD,EAAI,CAACN,IAAL,CAApB;AACD,GAPD;;AASA,sBACE,KAAC,IAAD;AACE,IAAA,GAAG,EAAEX,YADP;AAEE,IAAA,EAAE,EAAEe,QAFN;AAGE,IAAA,IAAI,EAAC,QAHP;AAIE,IAAA,IAAI,EAAC,QAJP;AAKE,qBAAe,IALjB;AAME,qBAAeN,aAAa,CAACS,OAN/B;AAOE,qBAAeP,IAAI,GAAG,IAAH,GAAUgB,SAP/B;AAQE,wBAAiB,EARnB;AASE,IAAA,OAAO,EAAE9B,SAAS,CAACQ,OAAD,EAAUqB,WAAV,CATpB;AAUE,IAAA,SAAS,EAAE7B,SAAS,CAACS,SAAD,EAAYU,aAAZ,CAVtB;AAWE,IAAA,QAAQ,EAAET;AAXZ,KAYMC,UAZN,EADF;AAgBD,CA7DiC,CAA7B","sourcesContent":["import { forwardRef, useId } from 'react';\nimport * as React from 'react';\n\nimport { useMenuContext } from './context';\nimport { wrapEvent } from '../utils/wrapEvent';\n\nexport type MenuButtonProps = React.ButtonHTMLAttributes<HTMLButtonElement> & {\n as?: React.ElementType<any>;\n innerAs?: React.ElementType<any>;\n onClick?: (\n e:\n | React.MouseEvent<HTMLButtonElement>\n | React.KeyboardEvent<HTMLButtonElement>\n ) => void;\n};\n\nexport const MenuButton = forwardRef<HTMLButtonElement, MenuButtonProps>(\n function MenuButton(props, forwardedRef) {\n const {\n as: Comp = 'button',\n id: preferredId,\n onClick,\n onKeyDown,\n disabled,\n ...otherProps\n } = props;\n const { menuListIdRef, openWithArrowKeyRef, open, buttonRef, onChange } =\n useMenuContext();\n\n const buttonIdGenerated = useId();\n const buttonId = preferredId || buttonIdGenerated;\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLButtonElement>) => {\n if (disabled) {\n return;\n }\n buttonRef.current = e.currentTarget;\n\n const isArrowKey = () => ['ArrowUp', 'ArrowDown'].includes(e.key);\n const isEnterKey = () => [' ', 'Enter'].includes(e.key);\n\n const openedWithArrow = isArrowKey();\n if (openedWithArrow || isEnterKey()) {\n if (openedWithArrow) {\n // Used to make it open at the end or begining of the list\n openWithArrowKeyRef.current = e.key;\n }\n onChange && onChange(e, true);\n e.preventDefault();\n }\n };\n\n const handleClick = (e: React.MouseEvent<HTMLButtonElement>) => {\n if (disabled) {\n return;\n }\n buttonRef.current = e.currentTarget;\n\n onChange && onChange(e, !open);\n };\n\n return (\n <Comp\n ref={forwardedRef}\n id={buttonId}\n role=\"button\"\n type=\"button\"\n aria-haspopup={true}\n aria-controls={menuListIdRef.current}\n aria-expanded={open ? true : undefined}\n data-menu-button=\"\"\n onClick={wrapEvent(onClick, handleClick)}\n onKeyDown={wrapEvent(onKeyDown, handleKeyDown)}\n disabled={disabled}\n {...otherProps}\n />\n );\n }\n);\n"],"file":"MenuButton.js"}
@@ -1,4 +1,4 @@
1
- import type * as React from 'react';
1
+ import * as React from 'react';
2
2
  export interface MenuItemProps extends React.LiHTMLAttributes<HTMLLIElement> {
3
3
  as?: React.ElementType<any>;
4
4
  innerAs?: React.ElementType<any>;