@basic-ui/core 0.0.40 → 0.0.41

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 (251) hide show
  1. package/build/cjs/index.js.map +1 -1
  2. package/build/esm/Accordion/Accordion.d.ts +7 -7
  3. package/build/esm/Accordion/Accordion.js +0 -1
  4. package/build/esm/Accordion/Accordion.js.map +1 -1
  5. package/build/esm/Accordion/AccordionBody.d.ts +5 -5
  6. package/build/esm/Accordion/AccordionBody.js +0 -1
  7. package/build/esm/Accordion/AccordionBody.js.map +1 -1
  8. package/build/esm/Accordion/AccordionHeader.d.ts +6 -6
  9. package/build/esm/Accordion/AccordionHeader.js +0 -1
  10. package/build/esm/Accordion/AccordionHeader.js.map +1 -1
  11. package/build/esm/Accordion/AccordionItem.d.ts +7 -7
  12. package/build/esm/Accordion/AccordionItem.js +0 -1
  13. package/build/esm/Accordion/AccordionItem.js.map +1 -1
  14. package/build/esm/Accordion/context.d.ts +3 -3
  15. package/build/esm/Accordion/context.js +0 -0
  16. package/build/esm/Accordion/context.js.map +1 -1
  17. package/build/esm/Accordion/index.js +0 -0
  18. package/build/esm/Accordion/scopeQuery.js +0 -0
  19. package/build/esm/CheckBox/CheckBox.d.ts +6 -6
  20. package/build/esm/CheckBox/CheckBox.js +0 -1
  21. package/build/esm/CheckBox/CheckBox.js.map +1 -1
  22. package/build/esm/CheckBox/index.js +0 -0
  23. package/build/esm/ComboBox/Combobox.d.ts +10 -10
  24. package/build/esm/ComboBox/Combobox.js +0 -1
  25. package/build/esm/ComboBox/Combobox.js.map +1 -1
  26. package/build/esm/ComboBox/ComboboxButton.d.ts +8 -8
  27. package/build/esm/ComboBox/ComboboxButton.js +0 -1
  28. package/build/esm/ComboBox/ComboboxButton.js.map +1 -1
  29. package/build/esm/ComboBox/ComboboxInput.d.ts +10 -10
  30. package/build/esm/ComboBox/ComboboxInput.js +0 -1
  31. package/build/esm/ComboBox/ComboboxInput.js.map +1 -1
  32. package/build/esm/ComboBox/ComboboxLabel.d.ts +5 -5
  33. package/build/esm/ComboBox/ComboboxLabel.js +0 -1
  34. package/build/esm/ComboBox/ComboboxLabel.js.map +1 -1
  35. package/build/esm/ComboBox/ComboboxList.d.ts +6 -6
  36. package/build/esm/ComboBox/ComboboxList.js +0 -1
  37. package/build/esm/ComboBox/ComboboxList.js.map +1 -1
  38. package/build/esm/ComboBox/ComboboxOption.d.ts +7 -7
  39. package/build/esm/ComboBox/ComboboxOption.js +0 -1
  40. package/build/esm/ComboBox/ComboboxOption.js.map +1 -1
  41. package/build/esm/ComboBox/ComboboxPopover.d.ts +8 -8
  42. package/build/esm/ComboBox/ComboboxPopover.js +0 -1
  43. package/build/esm/ComboBox/ComboboxPopover.js.map +1 -1
  44. package/build/esm/ComboBox/cities.js +0 -0
  45. package/build/esm/ComboBox/context.d.ts +10 -10
  46. package/build/esm/ComboBox/context.js +0 -0
  47. package/build/esm/ComboBox/context.js.map +1 -1
  48. package/build/esm/ComboBox/hooks.d.ts +3 -3
  49. package/build/esm/ComboBox/hooks.js +0 -0
  50. package/build/esm/ComboBox/hooks.js.map +1 -1
  51. package/build/esm/ComboBox/index.js +0 -0
  52. package/build/esm/ComboBox/makeHash.js +0 -0
  53. package/build/esm/ComboBox/scopeQuery.js +0 -0
  54. package/build/esm/FocusLock/FocusLock.d.ts +7 -7
  55. package/build/esm/FocusLock/FocusLock.js +0 -1
  56. package/build/esm/FocusLock/FocusLock.js.map +1 -1
  57. package/build/esm/FocusLock/index.js +0 -0
  58. package/build/esm/FocusLock/tabUtils.js +0 -0
  59. package/build/esm/FocusLock/useFocusLock.d.ts +4 -4
  60. package/build/esm/FocusLock/useFocusLock.js +0 -0
  61. package/build/esm/FocusLock/useFocusLock.js.map +1 -1
  62. package/build/esm/List/List.d.ts +6 -6
  63. package/build/esm/List/List.js +0 -1
  64. package/build/esm/List/List.js.map +1 -1
  65. package/build/esm/List/ListItem.d.ts +6 -6
  66. package/build/esm/List/ListItem.js +0 -1
  67. package/build/esm/List/ListItem.js.map +1 -1
  68. package/build/esm/List/context.js +0 -0
  69. package/build/esm/List/index.js +0 -0
  70. package/build/esm/Menu/Menu.d.ts +6 -6
  71. package/build/esm/Menu/Menu.js +0 -1
  72. package/build/esm/Menu/Menu.js.map +1 -1
  73. package/build/esm/Menu/MenuButton.d.ts +10 -10
  74. package/build/esm/Menu/MenuButton.js +0 -1
  75. package/build/esm/Menu/MenuButton.js.map +1 -1
  76. package/build/esm/Menu/MenuItem.d.ts +6 -6
  77. package/build/esm/Menu/MenuItem.js +0 -1
  78. package/build/esm/Menu/MenuItem.js.map +1 -1
  79. package/build/esm/Menu/MenuList.d.ts +5 -5
  80. package/build/esm/Menu/MenuList.js +0 -1
  81. package/build/esm/Menu/MenuList.js.map +1 -1
  82. package/build/esm/Menu/MenuPopover.d.ts +5 -5
  83. package/build/esm/Menu/MenuPopover.js +0 -1
  84. package/build/esm/Menu/MenuPopover.js.map +1 -1
  85. package/build/esm/Menu/context.d.ts +2 -2
  86. package/build/esm/Menu/context.js +0 -0
  87. package/build/esm/Menu/context.js.map +1 -1
  88. package/build/esm/Menu/index.js +0 -0
  89. package/build/esm/Menu/scope.js +0 -0
  90. package/build/esm/Modal/Modal.d.ts +6 -7
  91. package/build/esm/Modal/Modal.js +0 -1
  92. package/build/esm/Modal/Modal.js.map +1 -1
  93. package/build/esm/Modal/ModalBackdrop.d.ts +6 -6
  94. package/build/esm/Modal/ModalBackdrop.js +0 -1
  95. package/build/esm/Modal/ModalBackdrop.js.map +1 -1
  96. package/build/esm/Modal/index.js +0 -0
  97. package/build/esm/Popper/Popper.d.ts +7 -7
  98. package/build/esm/Popper/Popper.js +0 -1
  99. package/build/esm/Popper/Popper.js.map +1 -1
  100. package/build/esm/Popper/PopperArrow.d.ts +5 -5
  101. package/build/esm/Popper/PopperArrow.js +0 -1
  102. package/build/esm/Popper/PopperArrow.js.map +1 -1
  103. package/build/esm/Popper/context.js +0 -0
  104. package/build/esm/Popper/index.js +0 -0
  105. package/build/esm/Portal/Portal.js +0 -0
  106. package/build/esm/Portal/index.js +0 -0
  107. package/build/esm/RadioButton/RadioButton.d.ts +6 -6
  108. package/build/esm/RadioButton/RadioButton.js +0 -1
  109. package/build/esm/RadioButton/RadioButton.js.map +1 -1
  110. package/build/esm/RadioButton/RadioGroup.d.ts +7 -7
  111. package/build/esm/RadioButton/RadioGroup.js +0 -1
  112. package/build/esm/RadioButton/RadioGroup.js.map +1 -1
  113. package/build/esm/RadioButton/context.d.ts +2 -2
  114. package/build/esm/RadioButton/context.js +0 -0
  115. package/build/esm/RadioButton/context.js.map +1 -1
  116. package/build/esm/RadioButton/index.js +0 -0
  117. package/build/esm/SkipNav/SkipNav.d.ts +6 -6
  118. package/build/esm/SkipNav/SkipNav.js +0 -1
  119. package/build/esm/SkipNav/SkipNav.js.map +1 -1
  120. package/build/esm/SkipNav/index.js +0 -0
  121. package/build/esm/Spinner/Spinner.d.ts +7 -7
  122. package/build/esm/Spinner/Spinner.js +0 -1
  123. package/build/esm/Spinner/Spinner.js.map +1 -1
  124. package/build/esm/Spinner/SpinnerButton.d.ts +6 -6
  125. package/build/esm/Spinner/SpinnerButton.js +0 -1
  126. package/build/esm/Spinner/SpinnerButton.js.map +1 -1
  127. package/build/esm/Spinner/context.d.ts +2 -2
  128. package/build/esm/Spinner/context.js +0 -0
  129. package/build/esm/Spinner/context.js.map +1 -1
  130. package/build/esm/Spinner/index.js +0 -0
  131. package/build/esm/Tabs/Tab.d.ts +6 -6
  132. package/build/esm/Tabs/Tab.js +0 -1
  133. package/build/esm/Tabs/Tab.js.map +1 -1
  134. package/build/esm/Tabs/TabList.d.ts +6 -6
  135. package/build/esm/Tabs/TabList.js +0 -1
  136. package/build/esm/Tabs/TabList.js.map +1 -1
  137. package/build/esm/Tabs/TabPanel.d.ts +6 -6
  138. package/build/esm/Tabs/TabPanel.js +0 -1
  139. package/build/esm/Tabs/TabPanel.js.map +1 -1
  140. package/build/esm/Tabs/TabPanels.d.ts +5 -5
  141. package/build/esm/Tabs/TabPanels.js +0 -1
  142. package/build/esm/Tabs/TabPanels.js.map +1 -1
  143. package/build/esm/Tabs/Tabs.d.ts +6 -6
  144. package/build/esm/Tabs/Tabs.js +0 -1
  145. package/build/esm/Tabs/Tabs.js.map +1 -1
  146. package/build/esm/Tabs/context.d.ts +2 -2
  147. package/build/esm/Tabs/context.js +0 -0
  148. package/build/esm/Tabs/context.js.map +1 -1
  149. package/build/esm/Tabs/index.js +0 -0
  150. package/build/esm/Tabs/scopeQuery.js +0 -0
  151. package/build/esm/Tooltip/Tooltip.d.ts +7 -8
  152. package/build/esm/Tooltip/Tooltip.js +1 -1
  153. package/build/esm/Tooltip/Tooltip.js.map +1 -1
  154. package/build/esm/Tooltip/index.js +0 -0
  155. package/build/esm/Tooltip/stateMachine.js +0 -0
  156. package/build/esm/Tooltip/useTooltip.d.ts +7 -7
  157. package/build/esm/Tooltip/useTooltip.js +0 -0
  158. package/build/esm/Tooltip/useTooltip.js.map +1 -1
  159. package/build/esm/hooks/index.js +0 -0
  160. package/build/esm/hooks/useAutoFocus.d.ts +2 -2
  161. package/build/esm/hooks/useAutoFocus.js +0 -0
  162. package/build/esm/hooks/useAutoFocus.js.map +1 -1
  163. package/build/esm/hooks/useChildrenCounter.js +0 -0
  164. package/build/esm/hooks/useControlledState.d.ts +2 -6
  165. package/build/esm/hooks/useControlledState.js +0 -0
  166. package/build/esm/hooks/useControlledState.js.map +1 -1
  167. package/build/esm/hooks/useFocusReturn.js +0 -0
  168. package/build/esm/hooks/useFocusState.d.ts +3 -3
  169. package/build/esm/hooks/useFocusState.js +0 -0
  170. package/build/esm/hooks/useFocusState.js.map +1 -1
  171. package/build/esm/hooks/useGestureHandlers.d.ts +5 -5
  172. package/build/esm/hooks/useGestureHandlers.js +0 -0
  173. package/build/esm/hooks/useGestureHandlers.js.map +1 -1
  174. package/build/esm/hooks/useMeasure.d.ts +2 -2
  175. package/build/esm/hooks/useMeasure.js +0 -0
  176. package/build/esm/hooks/useMeasure.js.map +1 -1
  177. package/build/esm/hooks/useOnClickOutside.d.ts +2 -2
  178. package/build/esm/hooks/useOnClickOutside.js +0 -0
  179. package/build/esm/hooks/useOnClickOutside.js.map +1 -1
  180. package/build/esm/hooks/useOnKeyDown.js +0 -0
  181. package/build/esm/hooks/useReducerMachine.js +0 -0
  182. package/build/esm/hooks/useRemoveBodyScroll.js +0 -0
  183. package/build/esm/hooks/useScope.js +0 -0
  184. package/build/esm/hooks/useThrottle.js +0 -0
  185. package/build/esm/index.js +0 -0
  186. package/build/esm/utils/assignRef.js +0 -0
  187. package/build/esm/utils/clamp.js +0 -0
  188. package/build/esm/utils/createSubscription.js +0 -0
  189. package/build/esm/utils/getCircularIndex.js +0 -0
  190. package/build/esm/utils/index.js +0 -0
  191. package/build/esm/utils/rubberBandClamp.js +0 -0
  192. package/build/esm/utils/wrapEvent.d.ts +3 -3
  193. package/build/esm/utils/wrapEvent.js +0 -0
  194. package/build/esm/utils/wrapEvent.js.map +1 -1
  195. package/build/tsconfig-build.tsbuildinfo +1 -0
  196. package/build/tsconfig.tsbuildinfo +1 -1
  197. package/package.json +3 -3
  198. package/src/Accordion/Accordion.tsx +12 -6
  199. package/src/Accordion/AccordionBody.tsx +4 -5
  200. package/src/Accordion/AccordionHeader.tsx +30 -27
  201. package/src/Accordion/AccordionItem.tsx +12 -6
  202. package/src/Accordion/context.ts +3 -2
  203. package/src/CheckBox/CheckBox.tsx +5 -6
  204. package/src/ComboBox/ComboBox.story.tsx +3 -3
  205. package/src/ComboBox/Combobox.tsx +5 -8
  206. package/src/ComboBox/ComboboxButton.tsx +13 -7
  207. package/src/ComboBox/ComboboxInput.tsx +18 -10
  208. package/src/ComboBox/ComboboxLabel.tsx +4 -4
  209. package/src/ComboBox/ComboboxList.tsx +5 -6
  210. package/src/ComboBox/ComboboxOption.tsx +11 -7
  211. package/src/ComboBox/ComboboxPopover.tsx +13 -8
  212. package/src/ComboBox/context.ts +10 -9
  213. package/src/ComboBox/hooks.tsx +3 -2
  214. package/src/FocusLock/FocusLock.tsx +13 -7
  215. package/src/FocusLock/useFocusLock.ts +4 -3
  216. package/src/List/List.tsx +5 -5
  217. package/src/List/ListItem.tsx +5 -5
  218. package/src/Menu/Menu.story.tsx +2 -2
  219. package/src/Menu/Menu.tsx +13 -7
  220. package/src/Menu/MenuButton.tsx +12 -9
  221. package/src/Menu/MenuItem.tsx +14 -10
  222. package/src/Menu/MenuList.tsx +5 -5
  223. package/src/Menu/MenuPopover.tsx +4 -4
  224. package/src/Menu/context.ts +9 -4
  225. package/src/Modal/Modal.tsx +10 -6
  226. package/src/Modal/ModalBackdrop.tsx +14 -9
  227. package/src/Popper/Popper.tsx +6 -6
  228. package/src/Popper/PopperArrow.tsx +4 -4
  229. package/src/RadioButton/RadioButton.tsx +11 -6
  230. package/src/RadioButton/RadioGroup.tsx +11 -9
  231. package/src/RadioButton/context.ts +2 -4
  232. package/src/SkipNav/SkipNav.tsx +5 -5
  233. package/src/Spinner/Spinner.tsx +13 -9
  234. package/src/Spinner/SpinnerButton.tsx +11 -6
  235. package/src/Spinner/context.ts +2 -3
  236. package/src/Tabs/Tab.tsx +13 -8
  237. package/src/Tabs/TabList.tsx +5 -5
  238. package/src/Tabs/TabPanel.tsx +5 -5
  239. package/src/Tabs/TabPanels.tsx +4 -4
  240. package/src/Tabs/Tabs.tsx +5 -7
  241. package/src/Tabs/context.ts +2 -3
  242. package/src/Tooltip/Tooltip.story.tsx +1 -1
  243. package/src/Tooltip/Tooltip.tsx +13 -7
  244. package/src/Tooltip/useTooltip.ts +15 -9
  245. package/src/hooks/useAutoFocus.ts +2 -1
  246. package/src/hooks/useControlledState.ts +4 -7
  247. package/src/hooks/useFocusState.ts +3 -2
  248. package/src/hooks/useGestureHandlers.ts +11 -7
  249. package/src/hooks/useMeasure.ts +2 -1
  250. package/src/hooks/useOnClickOutside.ts +2 -2
  251. package/src/utils/wrapEvent.ts +4 -5
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/ComboBox/ComboboxPopover.tsx"],"names":["forwardRef","React","useKeyDown","useBlur","wrapEvent","assignMultipleRefs","useComboBoxContext","ComboboxPopover","forwardedRef","onKeyDown","onBlur","as","Comp","innerAs","props","popoverRef","isVisible","handleKeyDown","handleBlur","hidden"],"mappings":";;AAAA,SAASA,UAAT,QAA2B,OAA3B;AACA,OAAO,KAAKC,KAAZ,MAAuB,OAAvB;AAEA,SAASC,UAAT,EAAqBC,OAArB,QAAoC,SAApC;AACA,SAASC,SAAT,QAA0B,oBAA1B;AACA,SAASC,kBAAT,QAAmC,oBAAnC;AACA,SAASC,kBAAT,QAAmC,WAAnC;;AAWA,OAAO,IAAMC,eAAe,gBAAGP,UAAU,CACvC,SAASO,eAAT,OAUEC,YAVF,EAWE;AAAA,MAREC,SAQF,QAREA,SAQF;AAAA,MAPEC,MAOF,QAPEA,MAOF;AAAA,qBALEC,EAKF;AAAA,MALMC,IAKN,wBALa,KAKb;AAAA,MAJEC,OAIF,QAJEA,OAIF;AAAA,MAHKC,KAGL;;AAAA,4BACkCR,kBAAkB,EADpD;AAAA,MACQS,UADR,uBACQA,UADR;AAAA,MACoBC,SADpB,uBACoBA,SADpB;;AAEA,MAAMC,aAAa,GAAGf,UAAU,EAAhC;AACA,MAAMgB,UAAU,GAAGf,OAAO,EAA1B,CAHA,CAKA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,MAAMgB,MAAM,GAAG,CAACH,SAAhB;AAEA,sBACE,KAAC,IAAD,eACMF,KADN;AAEE,IAAA,EAAE,EAAED,OAFN;AAGE,mCAA4B,EAH9B;AAIE,IAAA,GAAG,EAAER,kBAAkB,CAACU,UAAD,EAAaP,YAAb,CAJzB;AAKE,IAAA,SAAS,EAAEJ,SAAS,CAACK,SAAD,EAAYQ,aAAZ,CALtB;AAME,IAAA,MAAM,EAAEb,SAAS,CAACM,MAAD,EAASQ,UAAT,CANnB;AAOE,IAAA,MAAM,EAAEC,MAPV,CAQE;AACA;AATF;AAUE,IAAA,QAAQ,EAAC;AAVX,KADF;AAcD,CAxCsC,CAAlC","sourcesContent":["import { forwardRef } from 'react';\nimport * as React from 'react';\n\nimport { useKeyDown, useBlur } from './hooks';\nimport { wrapEvent } from '../utils/wrapEvent';\nimport { assignMultipleRefs } from '../utils/assignRef';\nimport { useComboBoxContext } from './context';\n\nexport interface ComboboxPopoverProps\n extends React.HTMLAttributes<HTMLDivElement> {\n as?: React.ElementType<any>;\n innerAs?: React.ElementType<any>;\n onBlur?: React.FocusEventHandler<HTMLDivElement>;\n onKeyDown?: React.KeyboardEventHandler<HTMLDivElement>;\n children?: React.ReactNode;\n}\n\nexport const ComboboxPopover = forwardRef<HTMLDivElement, ComboboxPopoverProps>(\n function ComboboxPopover(\n {\n // wrapped events\n onKeyDown,\n onBlur,\n\n as: Comp = 'div',\n innerAs,\n ...props\n },\n forwardedRef\n ) {\n const { popoverRef, isVisible } = useComboBoxContext();\n const handleKeyDown = useKeyDown();\n const handleBlur = useBlur();\n\n // Instead of conditionally rendering the popover we use the `hidden` prop\n // because we don't want to unmount on close (from escape or onSelect). If\n // we unmounted, then we'd lose the optionsRef and the user wouldn't be able\n // to use the arrow keys to pop the list back open. However, the developer\n // can conditionally render the ComboboxPopover if they do want to cause\n // mount/unmount based on the app's own data (like results.length or\n // whatever).\n const hidden = !isVisible;\n\n return (\n <Comp\n {...props}\n as={innerAs}\n data-reach-combobox-popover=\"\"\n ref={assignMultipleRefs(popoverRef, forwardedRef)}\n onKeyDown={wrapEvent(onKeyDown, handleKeyDown)}\n onBlur={wrapEvent(onBlur, handleBlur)}\n hidden={hidden}\n // Allow the user to click empty space inside the popover without causing\n // to close from useBlur\n tabIndex=\"-1\"\n />\n );\n }\n);\n"],"file":"ComboboxPopover.js"}
1
+ {"version":3,"sources":["../../../src/ComboBox/ComboboxPopover.tsx"],"names":["forwardRef","useKeyDown","useBlur","wrapEvent","assignMultipleRefs","useComboBoxContext","ComboboxPopover","forwardedRef","onKeyDown","onBlur","as","Comp","innerAs","props","popoverRef","isVisible","handleKeyDown","handleBlur","hidden"],"mappings":";;AAOA,SAASA,UAAT,QAA2B,OAA3B;AAEA,SAASC,UAAT,EAAqBC,OAArB,QAAoC,SAApC;AACA,SAASC,SAAT,QAA0B,oBAA1B;AACA,SAASC,kBAAT,QAAmC,oBAAnC;AACA,SAASC,kBAAT,QAAmC,WAAnC;;AAUA,OAAO,IAAMC,eAAe,gBAAGN,UAAU,CACvC,SAASM,eAAT,OAUEC,YAVF,EAWE;AAAA,MAREC,SAQF,QAREA,SAQF;AAAA,MAPEC,MAOF,QAPEA,MAOF;AAAA,qBALEC,EAKF;AAAA,MALMC,IAKN,wBALa,KAKb;AAAA,MAJEC,OAIF,QAJEA,OAIF;AAAA,MAHKC,KAGL;;AAAA,4BACkCR,kBAAkB,EADpD;AAAA,MACQS,UADR,uBACQA,UADR;AAAA,MACoBC,SADpB,uBACoBA,SADpB;;AAEA,MAAMC,aAAa,GAAGf,UAAU,EAAhC;AACA,MAAMgB,UAAU,GAAGf,OAAO,EAA1B,CAHA,CAKA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,MAAMgB,MAAM,GAAG,CAACH,SAAhB;AAEA,sBACE,KAAC,IAAD,eACMF,KADN;AAEE,IAAA,EAAE,EAAED,OAFN;AAGE,mCAA4B,EAH9B;AAIE,IAAA,GAAG,EAAER,kBAAkB,CAACU,UAAD,EAAaP,YAAb,CAJzB;AAKE,IAAA,SAAS,EAAEJ,SAAS,CAACK,SAAD,EAAYQ,aAAZ,CALtB;AAME,IAAA,MAAM,EAAEb,SAAS,CAACM,MAAD,EAASQ,UAAT,CANnB;AAOE,IAAA,MAAM,EAAEC,MAPV,CAQE;AACA;AATF;AAUE,IAAA,QAAQ,EAAC;AAVX,KADF;AAcD,CAxCsC,CAAlC","sourcesContent":["import type {\n ElementType,\n FocusEventHandler,\n HTMLAttributes,\n KeyboardEventHandler,\n ReactNode,\n} from 'react';\nimport { forwardRef } from 'react';\n\nimport { useKeyDown, useBlur } from './hooks';\nimport { wrapEvent } from '../utils/wrapEvent';\nimport { assignMultipleRefs } from '../utils/assignRef';\nimport { useComboBoxContext } from './context';\n\nexport interface ComboboxPopoverProps extends HTMLAttributes<HTMLDivElement> {\n as?: ElementType<any>;\n innerAs?: ElementType<any>;\n onBlur?: FocusEventHandler<HTMLDivElement>;\n onKeyDown?: KeyboardEventHandler<HTMLDivElement>;\n children?: ReactNode;\n}\n\nexport const ComboboxPopover = forwardRef<HTMLDivElement, ComboboxPopoverProps>(\n function ComboboxPopover(\n {\n // wrapped events\n onKeyDown,\n onBlur,\n\n as: Comp = 'div',\n innerAs,\n ...props\n },\n forwardedRef\n ) {\n const { popoverRef, isVisible } = useComboBoxContext();\n const handleKeyDown = useKeyDown();\n const handleBlur = useBlur();\n\n // Instead of conditionally rendering the popover we use the `hidden` prop\n // because we don't want to unmount on close (from escape or onSelect). If\n // we unmounted, then we'd lose the optionsRef and the user wouldn't be able\n // to use the arrow keys to pop the list back open. However, the developer\n // can conditionally render the ComboboxPopover if they do want to cause\n // mount/unmount based on the app's own data (like results.length or\n // whatever).\n const hidden = !isVisible;\n\n return (\n <Comp\n {...props}\n as={innerAs}\n data-reach-combobox-popover=\"\"\n ref={assignMultipleRefs(popoverRef, forwardedRef)}\n onKeyDown={wrapEvent(onKeyDown, handleKeyDown)}\n onBlur={wrapEvent(onBlur, handleBlur)}\n hidden={hidden}\n // Allow the user to click empty space inside the popover without causing\n // to close from useBlur\n tabIndex=\"-1\"\n />\n );\n }\n);\n"],"file":"ComboboxPopover.js"}
File without changes
@@ -1,14 +1,14 @@
1
- /// <reference types="react" />
1
+ import type { MutableRefObject } from 'react';
2
2
  import type { ActionTypes, StateTypes, ReducerState } from './hooks';
3
3
  import type { SelectEventHandler } from './Combobox';
4
4
  import type { Scope } from '../hooks';
5
5
  export interface ComboBoxContextProps {
6
6
  data: Omit<ReducerState, 'state'>;
7
- inputRef: React.MutableRefObject<HTMLInputElement | null>;
8
- popoverRef: React.MutableRefObject<HTMLDivElement | null>;
9
- buttonRef: React.MutableRefObject<HTMLButtonElement | null>;
7
+ inputRef: MutableRefObject<HTMLInputElement | null>;
8
+ popoverRef: MutableRefObject<HTMLDivElement | null>;
9
+ buttonRef: MutableRefObject<HTMLButtonElement | null>;
10
10
  onSelect?: SelectEventHandler;
11
- optionsRef: React.MutableRefObject<{
11
+ optionsRef: MutableRefObject<{
12
12
  [itemId: string]: {
13
13
  value: string | unknown;
14
14
  text: string;
@@ -17,11 +17,11 @@ export interface ComboBoxContextProps {
17
17
  listScope: Scope<HTMLElement>;
18
18
  state: StateTypes;
19
19
  transition: (action: ActionTypes, payload?: any) => void;
20
- listboxIdRef: React.MutableRefObject<string | undefined>;
21
- labelIdRef: React.MutableRefObject<string | undefined>;
22
- autocompletePropRef: React.MutableRefObject<boolean>;
23
- persistSelectionRef: React.MutableRefObject<boolean>;
24
- clearOnEscapeRef: React.MutableRefObject<boolean>;
20
+ listboxIdRef: MutableRefObject<string | undefined>;
21
+ labelIdRef: MutableRefObject<string | undefined>;
22
+ autocompletePropRef: MutableRefObject<boolean>;
23
+ persistSelectionRef: MutableRefObject<boolean>;
24
+ clearOnEscapeRef: MutableRefObject<boolean>;
25
25
  isVisible: boolean;
26
26
  openOnFocus: boolean;
27
27
  selectOnBlur: boolean;
File without changes
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/ComboBox/context.ts"],"names":["createContext","useContext","comboboxContext","ComboBoxProvider","Provider","useComboBoxContext"],"mappings":"AAAA,SAASA,aAAT,EAAwBC,UAAxB,QAA0C,OAA1C;AA+BA,IAAMC,eAAe,gBAAGF,aAAa,CAAuB,IAAvB,CAArC;IACyBG,gB,GAAqBD,e,CAA/BE,Q;;AACf,OAAO,IAAMC,kBAAkB,GAAG,SAArBA,kBAAqB;AAAA,SAAMJ,UAAU,CAACC,eAAD,CAAhB;AAAA,CAA3B","sourcesContent":["import { createContext, useContext } from 'react';\n\nimport type { ActionTypes, StateTypes, ReducerState } from './hooks';\nimport type { SelectEventHandler } from './Combobox';\nimport type { Scope } from '../hooks';\n\nexport interface ComboBoxContextProps {\n data: Omit<ReducerState, 'state'>;\n inputRef: React.MutableRefObject<HTMLInputElement | null>;\n popoverRef: React.MutableRefObject<HTMLDivElement | null>;\n buttonRef: React.MutableRefObject<HTMLButtonElement | null>;\n onSelect?: SelectEventHandler;\n optionsRef: React.MutableRefObject<{\n [itemId: string]: {\n value: string | unknown;\n text: string;\n };\n }>;\n listScope: Scope<HTMLElement>;\n state: StateTypes;\n transition: (action: ActionTypes, payload?: any) => void;\n listboxIdRef: React.MutableRefObject<string | undefined>;\n labelIdRef: React.MutableRefObject<string | undefined>;\n autocompletePropRef: React.MutableRefObject<boolean>;\n persistSelectionRef: React.MutableRefObject<boolean>;\n clearOnEscapeRef: React.MutableRefObject<boolean>;\n isVisible: boolean;\n openOnFocus: boolean;\n selectOnBlur: boolean;\n}\n\nconst comboboxContext = createContext<ComboBoxContextProps>(null as any);\nexport const { Provider: ComboBoxProvider } = comboboxContext;\nexport const useComboBoxContext = () => useContext(comboboxContext);\n"],"file":"context.js"}
1
+ {"version":3,"sources":["../../../src/ComboBox/context.ts"],"names":["createContext","useContext","comboboxContext","ComboBoxProvider","Provider","useComboBoxContext"],"mappings":"AACA,SAASA,aAAT,EAAwBC,UAAxB,QAA0C,OAA1C;AA+BA,IAAMC,eAAe,gBAAGF,aAAa,CAAuB,IAAvB,CAArC;IACyBG,gB,GAAqBD,e,CAA/BE,Q;;AACf,OAAO,IAAMC,kBAAkB,GAAG,SAArBA,kBAAqB;AAAA,SAAMJ,UAAU,CAACC,eAAD,CAAhB;AAAA,CAA3B","sourcesContent":["import type { MutableRefObject } from 'react';\nimport { createContext, useContext } from 'react';\n\nimport type { ActionTypes, StateTypes, ReducerState } from './hooks';\nimport type { SelectEventHandler } from './Combobox';\nimport type { Scope } from '../hooks';\n\nexport interface ComboBoxContextProps {\n data: Omit<ReducerState, 'state'>;\n inputRef: MutableRefObject<HTMLInputElement | null>;\n popoverRef: MutableRefObject<HTMLDivElement | null>;\n buttonRef: MutableRefObject<HTMLButtonElement | null>;\n onSelect?: SelectEventHandler;\n optionsRef: MutableRefObject<{\n [itemId: string]: {\n value: string | unknown;\n text: string;\n };\n }>;\n listScope: Scope<HTMLElement>;\n state: StateTypes;\n transition: (action: ActionTypes, payload?: any) => void;\n listboxIdRef: MutableRefObject<string | undefined>;\n labelIdRef: MutableRefObject<string | undefined>;\n autocompletePropRef: MutableRefObject<boolean>;\n persistSelectionRef: MutableRefObject<boolean>;\n clearOnEscapeRef: MutableRefObject<boolean>;\n isVisible: boolean;\n openOnFocus: boolean;\n selectOnBlur: boolean;\n}\n\nconst comboboxContext = createContext<ComboBoxContextProps>(null as any);\nexport const { Provider: ComboBoxProvider } = comboboxContext;\nexport const useComboBoxContext = () => useContext(comboboxContext);\n"],"file":"context.js"}
@@ -1,4 +1,4 @@
1
- /// <reference types="react" />
1
+ import type { KeyboardEvent, MutableRefObject } from 'react';
2
2
  import type { StateChart as GenericStateChart, StateMachineState } from '../hooks/useReducerMachine';
3
3
  export declare const IDLE = "IDLE";
4
4
  declare const SUGGESTING = "SUGGESTING";
@@ -31,7 +31,7 @@ interface ActionObject {
31
31
  }
32
32
  export declare function comboboxReducer(data: Readonly<ReducerState>, action: ActionObject): ReducerState;
33
33
  export declare const isVisible: (state: any) => boolean;
34
- export declare function useFocusManagement(lastActionType: ActionTypes, inputRef: React.MutableRefObject<HTMLInputElement | null>): void;
35
- export declare function useKeyDown(): (event: React.KeyboardEvent<any>) => void;
34
+ export declare function useFocusManagement(lastActionType: ActionTypes, inputRef: MutableRefObject<HTMLInputElement | null>): void;
35
+ export declare function useKeyDown(): (event: KeyboardEvent<any>) => void;
36
36
  export declare function useBlur(): () => void;
37
37
  export {};
File without changes
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/ComboBox/hooks.tsx"],"names":["useEffect","getCircularIndex","useComboBoxContext","scopeQuery","IDLE","SUGGESTING","NAVIGATING","INIT","CLEAR","CLEAR_SELECTION","CHANGE","NAVIGATE","SELECT_WITH_KEYBOARD","SELECT_WITH_CLICK","ESCAPE","BLUR","FOCUS","OPEN_WITH_BUTTON","CLOSE_WITH_BUTTON","stateChart","initial","states","on","comboboxReducer","data","action","nextState","state","lastActionType","type","text","navigationItem","item","persistSelection","Error","visibleStates","isVisible","indexOf","useFocusManagement","inputRef","current","focus","getNextItem","currentItem","incr","optionsItems","autocomplete","index","findIndex","n","String","id","optionsLen","length","nextIndex","useKeyDown","onSelect","optionsRef","transition","autocompletePropRef","clearOnEscapeRef","persistSelectionRef","listScope","handleKeyDown","event","optionNodes","queryAllNodes","key","preventDefault","nextItem","value","lastValue","tracker","_valueTracker","setValue","Event","bubbles","dispatchEvent","navigationValue","navigationText","useBlur","stateText","popoverRef","buttonRef","selectOnBlur","handleBlur","requestAnimationFrame","document","activeElement","contains"],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/no-use-before-define */\n/* eslint-disable default-case */\nimport { useEffect } from 'react';\n\nimport type {\n StateChart as GenericStateChart,\n StateMachineState,\n} from '../hooks/useReducerMachine';\nimport { getCircularIndex } from '../utils/getCircularIndex';\nimport { useComboBoxContext } from './context';\nimport { scopeQuery } from './scopeQuery';\n\n////////////////////////////////////////////////////////////////////////////////\n// States\n\n// Nothing going on, waiting for the user to type or use the arrow keys\nexport const IDLE = 'IDLE';\n\n// The component is suggesting options as the user types\nconst SUGGESTING = 'SUGGESTING';\n\n// The user is using the keyboard to navigate the list, not typing\nexport const NAVIGATING = 'NAVIGATING';\n\nexport type StateTypes = typeof IDLE | typeof SUGGESTING | typeof NAVIGATING;\n\n////////////////////////////////////////////////////////////////////////////////\n// Actions:\n\n// Used to sync the state with controlled state, right after mounting\nexport const INIT = 'INIT';\n\n// User cleared the value w/ backspace, but input still has focus\nexport const CLEAR = 'CLEAR';\n\n// User cleared the value w/ backspace, but input still has focus\nexport const CLEAR_SELECTION = 'CLEAR_SELECTION';\n\n// User is typing\nexport const CHANGE = 'CHANGE';\n\n// User is navigating w/ the keyboard\nexport const NAVIGATE = 'NAVIGATE';\n\n// User can be navigating with keyboard and then click instead, we want the\n// value from the click, not the current nav item\nconst SELECT_WITH_KEYBOARD = 'SELECT_WITH_KEYBOARD';\nexport const SELECT_WITH_CLICK = 'SELECT_WITH_CLICK';\n\n// Pretty self-explanatory, user can hit escape or blur to close the popover\nconst ESCAPE = 'ESCAPE';\nconst BLUR = 'BLUR';\n\nexport const FOCUS = 'FOCUS';\n\nexport const OPEN_WITH_BUTTON = 'OPEN_WITH_BUTTON';\n\nexport const CLOSE_WITH_BUTTON = 'CLOSE_WITH_BUTTON';\n\nexport type ActionTypes =\n | typeof CLEAR\n | typeof CLEAR_SELECTION\n | typeof CHANGE\n | typeof INIT\n | typeof NAVIGATE\n | typeof SELECT_WITH_KEYBOARD\n | typeof SELECT_WITH_CLICK\n | typeof ESCAPE\n | typeof BLUR\n | typeof FOCUS\n | typeof OPEN_WITH_BUTTON\n | typeof CLOSE_WITH_BUTTON;\n\n////////////////////////////////////////////////////////////////////////////////\nexport const stateChart: GenericStateChart<StateTypes, ActionTypes> = {\n initial: IDLE,\n states: {\n [IDLE]: {\n on: {\n [BLUR]: IDLE,\n [CLEAR]: IDLE,\n [INIT]: IDLE,\n [CLEAR_SELECTION]: IDLE,\n [CHANGE]: SUGGESTING,\n [FOCUS]: SUGGESTING,\n [NAVIGATE]: NAVIGATING,\n [OPEN_WITH_BUTTON]: SUGGESTING,\n },\n },\n [SUGGESTING]: {\n on: {\n [CHANGE]: SUGGESTING,\n [FOCUS]: SUGGESTING,\n [INIT]: SUGGESTING,\n [NAVIGATE]: NAVIGATING,\n [CLEAR]: IDLE,\n [CLEAR_SELECTION]: SUGGESTING,\n [ESCAPE]: IDLE,\n [BLUR]: IDLE,\n [SELECT_WITH_CLICK]: IDLE,\n [CLOSE_WITH_BUTTON]: IDLE,\n },\n },\n [NAVIGATING]: {\n on: {\n [CHANGE]: SUGGESTING,\n [FOCUS]: SUGGESTING,\n [INIT]: NAVIGATING,\n [CLEAR]: IDLE,\n [CLEAR_SELECTION]: NAVIGATING,\n [BLUR]: IDLE,\n [ESCAPE]: IDLE,\n [NAVIGATE]: NAVIGATING,\n [SELECT_WITH_KEYBOARD]: IDLE,\n [SELECT_WITH_CLICK]: IDLE,\n [CLOSE_WITH_BUTTON]: IDLE,\n },\n },\n },\n};\n\nexport interface ReducerState\n extends StateMachineState<StateTypes, ActionTypes> {\n item: string;\n navigationItem: string;\n text: string;\n}\n\ninterface ActionObject {\n type: ActionTypes;\n state: StateTypes;\n nextState: StateTypes;\n [rest: string]: any;\n}\n\nexport function comboboxReducer(\n data: Readonly<ReducerState>,\n action: ActionObject\n): ReducerState {\n const nextState = {\n ...data,\n state: action.nextState,\n lastActionType: action.type,\n };\n\n switch (action.type) {\n case INIT:\n case CHANGE:\n return {\n ...nextState,\n text: action.text,\n navigationItem: '',\n item: '',\n };\n case NAVIGATE:\n case OPEN_WITH_BUTTON:\n if (action.persistSelection) {\n return {\n ...nextState,\n navigationItem: data.item,\n };\n }\n\n return {\n ...nextState,\n navigationItem: action.item,\n };\n case CLEAR_SELECTION:\n return {\n ...nextState,\n navigationItem: '',\n };\n case CLEAR:\n return {\n ...nextState,\n text: '',\n navigationItem: '',\n item: '',\n };\n case BLUR:\n return {\n ...nextState,\n text: action.text,\n navigationItem: '',\n item: action.item,\n };\n case CLOSE_WITH_BUTTON:\n case ESCAPE:\n return {\n ...nextState,\n navigationItem: '',\n item: '',\n };\n case SELECT_WITH_CLICK:\n case SELECT_WITH_KEYBOARD:\n return {\n ...nextState,\n text: action.text,\n item: action.item,\n navigationItem: '',\n };\n case FOCUS:\n return {\n ...nextState,\n navigationItem: action.item,\n };\n\n default:\n throw new Error(`Unknown action ${action.type}`);\n }\n}\n\nconst visibleStates = [SUGGESTING, NAVIGATING];\nexport const isVisible = (state: any) => visibleStates.indexOf(state) >= 0;\n\n////////////////////////////////////////////////////////////////////////////////\n// The rest is all implementation details\n\n// Move focus back to the input if we start navigating w/ the\n// keyboard after focus has moved to any focusable content in\n// the popup.\nexport function useFocusManagement(\n lastActionType: ActionTypes,\n inputRef: React.MutableRefObject<HTMLInputElement | null>\n) {\n // useEffect so that the cursor goes to the end of the input instead\n // of awkwardly at the beginning, unclear to me why ...\n useEffect(() => {\n if (\n lastActionType === NAVIGATE ||\n lastActionType === ESCAPE ||\n lastActionType === SELECT_WITH_CLICK ||\n lastActionType === OPEN_WITH_BUTTON\n ) {\n inputRef.current && inputRef.current.focus();\n }\n });\n}\n\nfunction getNextItem(\n currentItem: string,\n incr: number,\n optionsItems: HTMLElement[],\n autocomplete: boolean\n): string {\n const index =\n currentItem === ''\n ? -1\n : optionsItems.findIndex((n) => String(n.id) === currentItem);\n\n const optionsLen = optionsItems.length;\n\n // Nothing selected, either go to start, or end\n if (index < 0) {\n if (incr > 0) {\n // Go to start\n return optionsItems[0].id;\n } else {\n // Go to end\n return optionsItems[optionsLen - 1].id;\n }\n } else if (autocomplete) {\n const nextIndex = index + incr;\n\n if (nextIndex < 0 || nextIndex >= optionsLen) {\n // Next is outside the bounds of list, return nothing selected\n return '';\n }\n }\n\n // I'm sure it won't be null, we already check optionsLen above\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n return optionsItems[getCircularIndex(index + incr, optionsLen)!].id;\n}\n\n// We want the same events when the input or the popup have focus (HOW COOL ARE\n// HOOKS BTW?) This is probably the hairiest piece but it's not bad.\nexport function useKeyDown() {\n const {\n data: { text, navigationItem },\n onSelect,\n optionsRef,\n inputRef,\n state,\n transition,\n autocompletePropRef,\n clearOnEscapeRef,\n persistSelectionRef,\n listScope,\n } = useComboBoxContext();\n\n return function handleKeyDown(event: React.KeyboardEvent<any>) {\n const optionNodes = listScope.current.queryAllNodes(scopeQuery);\n\n switch (event.key) {\n case 'ArrowUp':\n case 'ArrowDown': {\n // Don't scroll the page\n event.preventDefault();\n\n const optionsLen = optionNodes.length;\n\n // If the developer didn't render any options, there's no point in\n // trying to navigate--but seriously what the heck? Give us some\n // options fam.\n if (optionsLen === 0) {\n return;\n }\n\n if (state === IDLE) {\n // Opening a closed list\n transition(NAVIGATE, {\n persistSelection: persistSelectionRef.current,\n });\n } else {\n // ArrowUp decreases index, ArrowDown increases\n const incr = event.key === 'ArrowUp' ? -1 : 1;\n\n // When autocompletting, we'll not cycle through the list directly\n const autocomplete = autocompletePropRef.current;\n\n // Get next selected item\n const nextItem = getNextItem(\n navigationItem,\n incr,\n optionNodes,\n autocomplete\n );\n\n const value =\n nextItem !== '' ? optionsRef.current[nextItem].text : null;\n\n transition(NAVIGATE, { value, item: nextItem });\n }\n break;\n }\n case 'Escape': {\n if (state !== IDLE) {\n transition(ESCAPE);\n } else if (state === IDLE && text !== '') {\n if (!inputRef.current || !clearOnEscapeRef.current) {\n break;\n }\n\n // emulate a inputRef change event, might not work in future versions of React\n const lastValue = inputRef.current.value;\n inputRef.current.value = '';\n\n const tracker = (inputRef.current as any)._valueTracker;\n if (tracker) {\n tracker.setValue(lastValue);\n }\n\n const event = new Event('change', { bubbles: true });\n inputRef.current.dispatchEvent(event);\n }\n break;\n }\n case 'Enter': {\n if (state === NAVIGATING && navigationItem !== '') {\n const { value: navigationValue, text: navigationText } =\n optionsRef.current[navigationItem];\n\n // don't want to submit forms\n event.preventDefault();\n onSelect && onSelect(navigationText, navigationItem, navigationValue);\n transition(SELECT_WITH_KEYBOARD, {\n text: navigationText,\n item: navigationItem,\n });\n }\n break;\n }\n }\n };\n}\n\nexport function useBlur() {\n const {\n data: { navigationItem, text: stateText },\n transition,\n optionsRef,\n popoverRef,\n inputRef,\n buttonRef,\n onSelect,\n selectOnBlur, // not implemented yet\n } = useComboBoxContext();\n\n return function handleBlur() {\n requestAnimationFrame(() => {\n // we on want to close only if focus rests outside the combobox\n if (\n document.activeElement !== inputRef.current &&\n document.activeElement !== buttonRef.current &&\n popoverRef.current\n ) {\n if (popoverRef.current.contains(document.activeElement)) {\n // focus landed inside the combobox, keep it open\n // in the future, we can make it not close, select, or anything\n // this way we can have like... checkboxes available in the\n // menu item, etc.\n } else {\n // focus landed outside the combobox, close it.\n if (!selectOnBlur || navigationItem === '') {\n // we don't wanna select on blur, or navigationIndex is invalid\n transition(BLUR, { text: stateText, item: '' });\n } else {\n // select the currently selected item\n const { value: navigationValue, text: navigationText } =\n optionsRef.current[navigationItem];\n\n onSelect &&\n onSelect(navigationText, navigationItem, navigationValue);\n\n transition(BLUR, {\n text: navigationText,\n item: navigationItem,\n });\n }\n }\n }\n });\n };\n}\n"],"file":"hooks.js"}
1
+ {"version":3,"sources":["../../../src/ComboBox/hooks.tsx"],"names":["useEffect","getCircularIndex","useComboBoxContext","scopeQuery","IDLE","SUGGESTING","NAVIGATING","INIT","CLEAR","CLEAR_SELECTION","CHANGE","NAVIGATE","SELECT_WITH_KEYBOARD","SELECT_WITH_CLICK","ESCAPE","BLUR","FOCUS","OPEN_WITH_BUTTON","CLOSE_WITH_BUTTON","stateChart","initial","states","on","comboboxReducer","data","action","nextState","state","lastActionType","type","text","navigationItem","item","persistSelection","Error","visibleStates","isVisible","indexOf","useFocusManagement","inputRef","current","focus","getNextItem","currentItem","incr","optionsItems","autocomplete","index","findIndex","n","String","id","optionsLen","length","nextIndex","useKeyDown","onSelect","optionsRef","transition","autocompletePropRef","clearOnEscapeRef","persistSelectionRef","listScope","handleKeyDown","event","optionNodes","queryAllNodes","key","preventDefault","nextItem","value","lastValue","tracker","_valueTracker","setValue","Event","bubbles","dispatchEvent","navigationValue","navigationText","useBlur","stateText","popoverRef","buttonRef","selectOnBlur","handleBlur","requestAnimationFrame","document","activeElement","contains"],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/no-use-before-define */\n/* eslint-disable default-case */\nimport type { KeyboardEvent, MutableRefObject } from 'react';\nimport { useEffect } from 'react';\n\nimport type {\n StateChart as GenericStateChart,\n StateMachineState,\n} from '../hooks/useReducerMachine';\nimport { getCircularIndex } from '../utils/getCircularIndex';\nimport { useComboBoxContext } from './context';\nimport { scopeQuery } from './scopeQuery';\n\n////////////////////////////////////////////////////////////////////////////////\n// States\n\n// Nothing going on, waiting for the user to type or use the arrow keys\nexport const IDLE = 'IDLE';\n\n// The component is suggesting options as the user types\nconst SUGGESTING = 'SUGGESTING';\n\n// The user is using the keyboard to navigate the list, not typing\nexport const NAVIGATING = 'NAVIGATING';\n\nexport type StateTypes = typeof IDLE | typeof SUGGESTING | typeof NAVIGATING;\n\n////////////////////////////////////////////////////////////////////////////////\n// Actions:\n\n// Used to sync the state with controlled state, right after mounting\nexport const INIT = 'INIT';\n\n// User cleared the value w/ backspace, but input still has focus\nexport const CLEAR = 'CLEAR';\n\n// User cleared the value w/ backspace, but input still has focus\nexport const CLEAR_SELECTION = 'CLEAR_SELECTION';\n\n// User is typing\nexport const CHANGE = 'CHANGE';\n\n// User is navigating w/ the keyboard\nexport const NAVIGATE = 'NAVIGATE';\n\n// User can be navigating with keyboard and then click instead, we want the\n// value from the click, not the current nav item\nconst SELECT_WITH_KEYBOARD = 'SELECT_WITH_KEYBOARD';\nexport const SELECT_WITH_CLICK = 'SELECT_WITH_CLICK';\n\n// Pretty self-explanatory, user can hit escape or blur to close the popover\nconst ESCAPE = 'ESCAPE';\nconst BLUR = 'BLUR';\n\nexport const FOCUS = 'FOCUS';\n\nexport const OPEN_WITH_BUTTON = 'OPEN_WITH_BUTTON';\n\nexport const CLOSE_WITH_BUTTON = 'CLOSE_WITH_BUTTON';\n\nexport type ActionTypes =\n | typeof CLEAR\n | typeof CLEAR_SELECTION\n | typeof CHANGE\n | typeof INIT\n | typeof NAVIGATE\n | typeof SELECT_WITH_KEYBOARD\n | typeof SELECT_WITH_CLICK\n | typeof ESCAPE\n | typeof BLUR\n | typeof FOCUS\n | typeof OPEN_WITH_BUTTON\n | typeof CLOSE_WITH_BUTTON;\n\n////////////////////////////////////////////////////////////////////////////////\nexport const stateChart: GenericStateChart<StateTypes, ActionTypes> = {\n initial: IDLE,\n states: {\n [IDLE]: {\n on: {\n [BLUR]: IDLE,\n [CLEAR]: IDLE,\n [INIT]: IDLE,\n [CLEAR_SELECTION]: IDLE,\n [CHANGE]: SUGGESTING,\n [FOCUS]: SUGGESTING,\n [NAVIGATE]: NAVIGATING,\n [OPEN_WITH_BUTTON]: SUGGESTING,\n },\n },\n [SUGGESTING]: {\n on: {\n [CHANGE]: SUGGESTING,\n [FOCUS]: SUGGESTING,\n [INIT]: SUGGESTING,\n [NAVIGATE]: NAVIGATING,\n [CLEAR]: IDLE,\n [CLEAR_SELECTION]: SUGGESTING,\n [ESCAPE]: IDLE,\n [BLUR]: IDLE,\n [SELECT_WITH_CLICK]: IDLE,\n [CLOSE_WITH_BUTTON]: IDLE,\n },\n },\n [NAVIGATING]: {\n on: {\n [CHANGE]: SUGGESTING,\n [FOCUS]: SUGGESTING,\n [INIT]: NAVIGATING,\n [CLEAR]: IDLE,\n [CLEAR_SELECTION]: NAVIGATING,\n [BLUR]: IDLE,\n [ESCAPE]: IDLE,\n [NAVIGATE]: NAVIGATING,\n [SELECT_WITH_KEYBOARD]: IDLE,\n [SELECT_WITH_CLICK]: IDLE,\n [CLOSE_WITH_BUTTON]: IDLE,\n },\n },\n },\n};\n\nexport interface ReducerState\n extends StateMachineState<StateTypes, ActionTypes> {\n item: string;\n navigationItem: string;\n text: string;\n}\n\ninterface ActionObject {\n type: ActionTypes;\n state: StateTypes;\n nextState: StateTypes;\n [rest: string]: any;\n}\n\nexport function comboboxReducer(\n data: Readonly<ReducerState>,\n action: ActionObject\n): ReducerState {\n const nextState = {\n ...data,\n state: action.nextState,\n lastActionType: action.type,\n };\n\n switch (action.type) {\n case INIT:\n case CHANGE:\n return {\n ...nextState,\n text: action.text,\n navigationItem: '',\n item: '',\n };\n case NAVIGATE:\n case OPEN_WITH_BUTTON:\n if (action.persistSelection) {\n return {\n ...nextState,\n navigationItem: data.item,\n };\n }\n\n return {\n ...nextState,\n navigationItem: action.item,\n };\n case CLEAR_SELECTION:\n return {\n ...nextState,\n navigationItem: '',\n };\n case CLEAR:\n return {\n ...nextState,\n text: '',\n navigationItem: '',\n item: '',\n };\n case BLUR:\n return {\n ...nextState,\n text: action.text,\n navigationItem: '',\n item: action.item,\n };\n case CLOSE_WITH_BUTTON:\n case ESCAPE:\n return {\n ...nextState,\n navigationItem: '',\n item: '',\n };\n case SELECT_WITH_CLICK:\n case SELECT_WITH_KEYBOARD:\n return {\n ...nextState,\n text: action.text,\n item: action.item,\n navigationItem: '',\n };\n case FOCUS:\n return {\n ...nextState,\n navigationItem: action.item,\n };\n\n default:\n throw new Error(`Unknown action ${action.type}`);\n }\n}\n\nconst visibleStates = [SUGGESTING, NAVIGATING];\nexport const isVisible = (state: any) => visibleStates.indexOf(state) >= 0;\n\n////////////////////////////////////////////////////////////////////////////////\n// The rest is all implementation details\n\n// Move focus back to the input if we start navigating w/ the\n// keyboard after focus has moved to any focusable content in\n// the popup.\nexport function useFocusManagement(\n lastActionType: ActionTypes,\n inputRef: MutableRefObject<HTMLInputElement | null>\n) {\n // useEffect so that the cursor goes to the end of the input instead\n // of awkwardly at the beginning, unclear to me why ...\n useEffect(() => {\n if (\n lastActionType === NAVIGATE ||\n lastActionType === ESCAPE ||\n lastActionType === SELECT_WITH_CLICK ||\n lastActionType === OPEN_WITH_BUTTON\n ) {\n inputRef.current && inputRef.current.focus();\n }\n });\n}\n\nfunction getNextItem(\n currentItem: string,\n incr: number,\n optionsItems: HTMLElement[],\n autocomplete: boolean\n): string {\n const index =\n currentItem === ''\n ? -1\n : optionsItems.findIndex((n) => String(n.id) === currentItem);\n\n const optionsLen = optionsItems.length;\n\n // Nothing selected, either go to start, or end\n if (index < 0) {\n if (incr > 0) {\n // Go to start\n return optionsItems[0].id;\n } else {\n // Go to end\n return optionsItems[optionsLen - 1].id;\n }\n } else if (autocomplete) {\n const nextIndex = index + incr;\n\n if (nextIndex < 0 || nextIndex >= optionsLen) {\n // Next is outside the bounds of list, return nothing selected\n return '';\n }\n }\n\n // I'm sure it won't be null, we already check optionsLen above\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n return optionsItems[getCircularIndex(index + incr, optionsLen)!].id;\n}\n\n// We want the same events when the input or the popup have focus (HOW COOL ARE\n// HOOKS BTW?) This is probably the hairiest piece but it's not bad.\nexport function useKeyDown() {\n const {\n data: { text, navigationItem },\n onSelect,\n optionsRef,\n inputRef,\n state,\n transition,\n autocompletePropRef,\n clearOnEscapeRef,\n persistSelectionRef,\n listScope,\n } = useComboBoxContext();\n\n return function handleKeyDown(event: KeyboardEvent<any>) {\n const optionNodes = listScope.current.queryAllNodes(scopeQuery);\n\n switch (event.key) {\n case 'ArrowUp':\n case 'ArrowDown': {\n // Don't scroll the page\n event.preventDefault();\n\n const optionsLen = optionNodes.length;\n\n // If the developer didn't render any options, there's no point in\n // trying to navigate--but seriously what the heck? Give us some\n // options fam.\n if (optionsLen === 0) {\n return;\n }\n\n if (state === IDLE) {\n // Opening a closed list\n transition(NAVIGATE, {\n persistSelection: persistSelectionRef.current,\n });\n } else {\n // ArrowUp decreases index, ArrowDown increases\n const incr = event.key === 'ArrowUp' ? -1 : 1;\n\n // When autocompletting, we'll not cycle through the list directly\n const autocomplete = autocompletePropRef.current;\n\n // Get next selected item\n const nextItem = getNextItem(\n navigationItem,\n incr,\n optionNodes,\n autocomplete\n );\n\n const value =\n nextItem !== '' ? optionsRef.current[nextItem].text : null;\n\n transition(NAVIGATE, { value, item: nextItem });\n }\n break;\n }\n case 'Escape': {\n if (state !== IDLE) {\n transition(ESCAPE);\n } else if (state === IDLE && text !== '') {\n if (!inputRef.current || !clearOnEscapeRef.current) {\n break;\n }\n\n // emulate a inputRef change event, might not work in future versions of React\n const lastValue = inputRef.current.value;\n inputRef.current.value = '';\n\n const tracker = (inputRef.current as any)._valueTracker;\n if (tracker) {\n tracker.setValue(lastValue);\n }\n\n const event = new Event('change', { bubbles: true });\n inputRef.current.dispatchEvent(event);\n }\n break;\n }\n case 'Enter': {\n if (state === NAVIGATING && navigationItem !== '') {\n const { value: navigationValue, text: navigationText } =\n optionsRef.current[navigationItem];\n\n // don't want to submit forms\n event.preventDefault();\n onSelect && onSelect(navigationText, navigationItem, navigationValue);\n transition(SELECT_WITH_KEYBOARD, {\n text: navigationText,\n item: navigationItem,\n });\n }\n break;\n }\n }\n };\n}\n\nexport function useBlur() {\n const {\n data: { navigationItem, text: stateText },\n transition,\n optionsRef,\n popoverRef,\n inputRef,\n buttonRef,\n onSelect,\n selectOnBlur, // not implemented yet\n } = useComboBoxContext();\n\n return function handleBlur() {\n requestAnimationFrame(() => {\n // we on want to close only if focus rests outside the combobox\n if (\n document.activeElement !== inputRef.current &&\n document.activeElement !== buttonRef.current &&\n popoverRef.current\n ) {\n if (popoverRef.current.contains(document.activeElement)) {\n // focus landed inside the combobox, keep it open\n // in the future, we can make it not close, select, or anything\n // this way we can have like... checkboxes available in the\n // menu item, etc.\n } else {\n // focus landed outside the combobox, close it.\n if (!selectOnBlur || navigationItem === '') {\n // we don't wanna select on blur, or navigationIndex is invalid\n transition(BLUR, { text: stateText, item: '' });\n } else {\n // select the currently selected item\n const { value: navigationValue, text: navigationText } =\n optionsRef.current[navigationItem];\n\n onSelect &&\n onSelect(navigationText, navigationItem, navigationValue);\n\n transition(BLUR, {\n text: navigationText,\n item: navigationItem,\n });\n }\n }\n }\n });\n };\n}\n"],"file":"hooks.js"}
File without changes
File without changes
File without changes
@@ -1,9 +1,9 @@
1
- import * as React from 'react';
2
- export interface FocusLockProps extends React.HTMLAttributes<HTMLDivElement> {
3
- as?: React.ElementType<any>;
4
- innerAs?: React.ElementType<any>;
5
- children?: React.ReactNode;
6
- childRef: React.MutableRefObject<HTMLElement | null>;
1
+ import type { ElementType, FC, HTMLAttributes, MutableRefObject, ReactNode } from 'react';
2
+ export interface FocusLockProps extends HTMLAttributes<HTMLDivElement> {
3
+ as?: ElementType<any>;
4
+ innerAs?: ElementType<any>;
5
+ children?: ReactNode;
6
+ childRef: MutableRefObject<HTMLElement | null>;
7
7
  enabled?: boolean;
8
8
  }
9
- export declare const FocusLock: React.FC<FocusLockProps>;
9
+ export declare const FocusLock: FC<FocusLockProps>;
@@ -1,7 +1,6 @@
1
1
  import _extends from "@babel/runtime/helpers/extends";
2
2
  import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
3
3
  import { useRef } from 'react';
4
- import * as React from 'react';
5
4
  import { useFocusLock } from './useFocusLock';
6
5
  import { jsx as _jsx } from "react/jsx-runtime";
7
6
  import { Fragment as _Fragment } from "react/jsx-runtime";
@@ -1 +1 @@
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"}
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":";;AAOA,SAASA,MAAT,QAAuB,OAAvB;AAEA,SAASC,YAAT,QAA6B,gBAA7B;;;;AAUA,OAAO,IAAMC,SAA6B,GAAG,SAASA,SAAT,CAAmBC,KAAnB,EAA0B;AAAA,kBAQjEA,KARiE,CAEnEC,EAFmE;AAAA,MAE/DC,IAF+D,0BAExD,KAFwD;AAAA,MAGnEC,QAHmE,GAQjEH,KARiE,CAGnEG,QAHmE;AAAA,uBAQjEH,KARiE,CAInEI,OAJmE;AAAA,MAInEA,OAJmE,+BAIzD,KAJyD;AAAA,qBAQjEJ,KARiE,CAKnEK,KALmE;AAAA,MAKnEA,KALmE,6BAK3D,EAL2D;AAAA,MAMnEC,QANmE,GAQjEN,KARiE,CAMnEM,QANmE;AAAA,MAOhEC,UAPgE,4BAQjEP,KARiE;;AASrE,MAAMQ,YAAY,GAAGX,MAAM,CAAc,IAAd,CAA3B;AACA,MAAMY,UAAU,GAAGZ,MAAM,CAAc,IAAd,CAAzB;AAEAC,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 type {\n ElementType,\n FC,\n HTMLAttributes,\n MutableRefObject,\n ReactNode,\n} from 'react';\nimport { useRef } from 'react';\n\nimport { useFocusLock } from './useFocusLock';\n\nexport interface FocusLockProps extends HTMLAttributes<HTMLDivElement> {\n as?: ElementType<any>;\n innerAs?: ElementType<any>;\n children?: ReactNode;\n childRef: MutableRefObject<HTMLElement | null>;\n enabled?: boolean;\n}\n\nexport const FocusLock: 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
@@ -1,7 +1,7 @@
1
- /// <reference types="react" />
1
+ import type { MutableRefObject } from 'react';
2
2
  export interface FocusLockOptions {
3
3
  enabled: boolean;
4
- lockStartRef: React.MutableRefObject<HTMLElement | null>;
5
- lockEndRef: React.MutableRefObject<HTMLElement | null>;
4
+ lockStartRef: MutableRefObject<HTMLElement | null>;
5
+ lockEndRef: MutableRefObject<HTMLElement | null>;
6
6
  }
7
- export declare function useFocusLock(ref: React.MutableRefObject<HTMLElement | null>, opts: FocusLockOptions): void;
7
+ export declare function useFocusLock(ref: MutableRefObject<HTMLElement | null>, opts: FocusLockOptions): void;
File without changes
@@ -1 +1 @@
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
+ {"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":"AACA,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 type { MutableRefObject } from 'react';\nimport { useEffect } from 'react';\n\nimport { focusOnChildNode } from './tabUtils';\n\nexport interface FocusLockOptions {\n enabled: boolean;\n lockStartRef: MutableRefObject<HTMLElement | null>;\n lockEndRef: MutableRefObject<HTMLElement | null>;\n}\n\nconst focusLockStack: HTMLElement[] = [];\nexport function useFocusLock(\n ref: 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,7 +1,7 @@
1
- import * as React from 'react';
2
- export interface ListProps extends React.HTMLAttributes<HTMLUListElement> {
3
- as?: React.ElementType<any>;
4
- innerAs?: React.ElementType<any>;
5
- children?: React.ReactNode;
1
+ import type { ElementType, HTMLAttributes, ReactNode } from 'react';
2
+ export interface ListProps extends HTMLAttributes<HTMLUListElement> {
3
+ as?: ElementType<any>;
4
+ innerAs?: ElementType<any>;
5
+ children?: ReactNode;
6
6
  }
7
- export declare const List: React.ForwardRefExoticComponent<ListProps & React.RefAttributes<HTMLUListElement>>;
7
+ export declare const List: import("react").ForwardRefExoticComponent<ListProps & import("react").RefAttributes<HTMLUListElement>>;
@@ -1,7 +1,6 @@
1
1
  import _extends from "@babel/runtime/helpers/extends";
2
2
  import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
3
3
  import { forwardRef } from 'react';
4
- import * as React from 'react';
5
4
  import { jsx as _jsx } from "react/jsx-runtime";
6
5
  export var List = /*#__PURE__*/forwardRef(function List(props, forwardedRef) {
7
6
  var _props$as = props.as,
@@ -1 +1 @@
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
+ {"version":3,"sources":["../../../src/List/List.tsx"],"names":["forwardRef","List","props","forwardedRef","as","Comp","otherProps"],"mappings":";;AACA,SAASA,UAAT,QAA2B,OAA3B;;AAQA,OAAO,IAAMC,IAAI,gBAAGD,UAAU,CAA8B,SAASC,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 type { ElementType, HTMLAttributes, ReactNode } from 'react';\nimport { forwardRef } from 'react';\n\nexport interface ListProps extends HTMLAttributes<HTMLUListElement> {\n as?: ElementType<any>;\n innerAs?: ElementType<any>;\n children?: 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,7 +1,7 @@
1
- import * as React from 'react';
2
- export interface ListItemProps extends React.HTMLAttributes<HTMLLIElement> {
3
- as?: React.ElementType<any>;
4
- innerAs?: React.ElementType<any>;
5
- children?: React.ReactNode;
1
+ import type { ElementType, HTMLAttributes, ReactNode } from 'react';
2
+ export interface ListItemProps extends HTMLAttributes<HTMLLIElement> {
3
+ as?: ElementType<any>;
4
+ innerAs?: ElementType<any>;
5
+ children?: ReactNode;
6
6
  }
7
- export declare const ListItem: React.ForwardRefExoticComponent<ListItemProps & React.RefAttributes<HTMLLIElement>>;
7
+ export declare const ListItem: import("react").ForwardRefExoticComponent<ListItemProps & import("react").RefAttributes<HTMLLIElement>>;
@@ -1,7 +1,6 @@
1
1
  import _extends from "@babel/runtime/helpers/extends";
2
2
  import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
3
3
  import { forwardRef } from 'react';
4
- import * as React from 'react';
5
4
  import { jsx as _jsx } from "react/jsx-runtime";
6
5
  export var ListItem = /*#__PURE__*/forwardRef(function ListItem(props, forwardedRef) {
7
6
  var _props$as = props.as,
@@ -1 +1 @@
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"}
1
+ {"version":3,"sources":["../../../src/List/ListItem.tsx"],"names":["forwardRef","ListItem","props","forwardedRef","as","Comp","otherProps"],"mappings":";;AACA,SAASA,UAAT,QAA2B,OAA3B;;AAQA,OAAO,IAAMC,QAAQ,gBAAGD,UAAU,CAChC,SAASC,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 type { ElementType, HTMLAttributes, ReactNode } from 'react';\nimport { forwardRef } from 'react';\n\nexport interface ListItemProps extends HTMLAttributes<HTMLLIElement> {\n as?: ElementType<any>;\n innerAs?: ElementType<any>;\n children?: 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
File without changes
@@ -1,10 +1,10 @@
1
- import * as React from 'react';
1
+ import type { KeyboardEvent, MouseEvent, PointerEvent, ReactNode, ElementType } from 'react';
2
2
  export interface MenuProps {
3
- as?: React.ElementType<any>;
4
- innerAs?: React.ElementType<any>;
5
- children?: React.ReactNode;
6
- onChange?: (e: React.KeyboardEvent<HTMLElement> | React.MouseEvent<HTMLElement> | React.PointerEvent<HTMLElement>, isOpen: boolean) => void;
3
+ as?: ElementType<any>;
4
+ innerAs?: ElementType<any>;
5
+ children?: ReactNode;
6
+ onChange?: (e: KeyboardEvent<HTMLElement> | MouseEvent<HTMLElement> | PointerEvent<HTMLElement>, isOpen: boolean) => void;
7
7
  open?: boolean;
8
8
  defaultOpen?: boolean;
9
9
  }
10
- export declare const Menu: React.ForwardRefExoticComponent<MenuProps & React.RefAttributes<HTMLDivElement>>;
10
+ export declare const Menu: import("react").ForwardRefExoticComponent<MenuProps & import("react").RefAttributes<HTMLDivElement>>;
@@ -2,7 +2,6 @@ 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
4
  import { forwardRef, useRef, Fragment, useId } from 'react';
5
- import * as React from 'react';
6
5
  import { MenuProvider } from './context';
7
6
  import { useControlledState } from '../hooks';
8
7
  import { jsx as _jsx } from "react/jsx-runtime";
@@ -1 +1 @@
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
+ {"version":3,"sources":["../../../src/Menu/Menu.tsx"],"names":["forwardRef","useRef","Fragment","useId","MenuProvider","useControlledState","Menu","props","forwardedRef","as","Comp","openProp","open","defaultOpen","onChangeProp","onChange","otherProps","menuListIdRef","openWithArrowKeyRef","buttonRef","setState","e","isOpen","current","value"],"mappings":";;;AAOA,SAASA,UAAT,EAAqBC,MAArB,EAA6BC,QAA7B,EAAuCC,KAAvC,QAAoD,OAApD;AAGA,SAASC,YAAT,QAA6B,WAA7B;AACA,SAASC,kBAAT,QAAmC,UAAnC;;AAiBA,OAAO,IAAMC,IAAI,gBAAGN,UAAU,CAA4B,SAASM,IAAT,CACxDC,KADwD,EAExDC,YAFwD,EAGxD;AAAA,kBAOID,KAPJ,CAEEE,EAFF;AAAA,MAEMC,IAFN,0BAEaR,QAFb;AAAA,MAGQS,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,GAAGhB,MAAM,EAA5B;AACA,MAAMiB,mBAAmB,GAAGjB,MAAM,CAAiC,IAAjC,CAAlC;AACA,MAAMkB,SAAS,GAAGlB,MAAM,CAAoB,IAApB,CAAxB;;AAVA,4BAWyBI,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,GAAwBpB,KAAK,EAA7B;AAEA,MAAMqB,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 type {\n KeyboardEvent,\n MouseEvent,\n PointerEvent,\n ReactNode,\n ElementType,\n} from 'react';\nimport { forwardRef, useRef, Fragment, useId } from 'react';\n\nimport type { MenuContextProps } from './context';\nimport { MenuProvider } from './context';\nimport { useControlledState } from '../hooks';\n\nexport interface MenuProps {\n as?: ElementType<any>;\n innerAs?: ElementType<any>;\n children?: ReactNode;\n onChange?: (\n e:\n | KeyboardEvent<HTMLElement>\n | MouseEvent<HTMLElement>\n | 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,11 +1,11 @@
1
- import * as React from 'react';
2
- export declare type MenuButtonProps = React.ButtonHTMLAttributes<HTMLButtonElement> & {
3
- as?: React.ElementType<any>;
4
- innerAs?: React.ElementType<any>;
5
- onClick?: (e: React.MouseEvent<HTMLButtonElement> | React.KeyboardEvent<HTMLButtonElement>) => void;
1
+ import type { ButtonHTMLAttributes, ElementType, KeyboardEvent, MouseEvent } from 'react';
2
+ export declare type MenuButtonProps = ButtonHTMLAttributes<HTMLButtonElement> & {
3
+ as?: ElementType<any>;
4
+ innerAs?: ElementType<any>;
5
+ onClick?: (e: MouseEvent<HTMLButtonElement> | KeyboardEvent<HTMLButtonElement>) => void;
6
6
  };
7
- export declare const MenuButton: React.ForwardRefExoticComponent<React.ButtonHTMLAttributes<HTMLButtonElement> & {
8
- as?: React.ElementType<any> | undefined;
9
- innerAs?: React.ElementType<any> | undefined;
10
- onClick?: ((e: React.MouseEvent<HTMLButtonElement> | React.KeyboardEvent<HTMLButtonElement>) => void) | undefined;
11
- } & React.RefAttributes<HTMLButtonElement>>;
7
+ export declare const MenuButton: import("react").ForwardRefExoticComponent<ButtonHTMLAttributes<HTMLButtonElement> & {
8
+ as?: ElementType<any> | undefined;
9
+ innerAs?: ElementType<any> | undefined;
10
+ onClick?: ((e: MouseEvent<HTMLButtonElement> | KeyboardEvent<HTMLButtonElement>) => void) | undefined;
11
+ } & import("react").RefAttributes<HTMLButtonElement>>;
@@ -1,7 +1,6 @@
1
1
  import _extends from "@babel/runtime/helpers/extends";
2
2
  import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
3
3
  import { forwardRef, useId } from 'react';
4
- import * as React from 'react';
5
4
  import { useMenuContext } from './context';
6
5
  import { wrapEvent } from '../utils/wrapEvent';
7
6
  import { jsx as _jsx } from "react/jsx-runtime";
@@ -1 +1 @@
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
+ {"version":3,"sources":["../../../src/Menu/MenuButton.tsx"],"names":["forwardRef","useId","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":";;AAMA,SAASA,UAAT,EAAqBC,KAArB,QAAkC,OAAlC;AAEA,SAASC,cAAT,QAA+B,WAA/B;AACA,SAASC,SAAT,QAA0B,oBAA1B;;AAUA,OAAO,IAAMC,UAAU,gBAAGJ,UAAU,CAClC,SAASI,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,GAAGnB,KAAK,EAA/B;AACA,MAAMoB,QAAQ,GAAGZ,WAAW,IAAIW,iBAAhC;;AAEA,MAAME,aAAa,GAAG,SAAhBA,aAAgB,CAACC,CAAD,EAAyC;AAC7D,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,EAAsC;AACxD,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 type {\n ButtonHTMLAttributes,\n ElementType,\n KeyboardEvent,\n MouseEvent,\n} from 'react';\nimport { forwardRef, useId } from 'react';\n\nimport { useMenuContext } from './context';\nimport { wrapEvent } from '../utils/wrapEvent';\n\nexport type MenuButtonProps = ButtonHTMLAttributes<HTMLButtonElement> & {\n as?: ElementType<any>;\n innerAs?: ElementType<any>;\n onClick?: (\n e: MouseEvent<HTMLButtonElement> | 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: 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: 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,8 +1,8 @@
1
- import * as React from 'react';
2
- export interface MenuItemProps extends React.LiHTMLAttributes<HTMLLIElement> {
3
- as?: React.ElementType<any>;
4
- innerAs?: React.ElementType<any>;
5
- onSelect?: (e: React.MouseEvent<HTMLLIElement> | React.KeyboardEvent<HTMLLIElement>) => void;
1
+ import type { LiHTMLAttributes, ElementType, MouseEvent, KeyboardEvent } from 'react';
2
+ export interface MenuItemProps extends LiHTMLAttributes<HTMLLIElement> {
3
+ as?: ElementType<any>;
4
+ innerAs?: ElementType<any>;
5
+ onSelect?: (e: MouseEvent<HTMLLIElement> | KeyboardEvent<HTMLLIElement>) => void;
6
6
  disabled?: boolean;
7
7
  }
8
- export declare const MenuItem: React.ForwardRefExoticComponent<MenuItemProps & React.RefAttributes<any>>;
8
+ export declare const MenuItem: import("react").ForwardRefExoticComponent<MenuItemProps & import("react").RefAttributes<any>>;
@@ -1,7 +1,6 @@
1
1
  import _extends from "@babel/runtime/helpers/extends";
2
2
  import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
3
3
  import { forwardRef, useRef, useId } from 'react';
4
- import * as React from 'react';
5
4
  import { useMenuContext, useMenuListContext } from './context';
6
5
  import { assignMultipleRefs } from '../utils/assignRef';
7
6
  import { wrapEvent } from '../utils';
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/Menu/MenuItem.tsx"],"names":["forwardRef","useRef","useId","React","useMenuContext","useMenuListContext","assignMultipleRefs","wrapEvent","MenuItem","props","forwardedRef","as","Comp","disabled","onSelect","onClick","onKeyDown","otherProps","onChange","buttonRef","navigationItem","onNavigate","ref","itemId","isActive","current","handleSelect","e","focus","preventDefault","handleClick","handleKeyDown","key","undefined"],"mappings":";;AAAA,SAASA,UAAT,EAAqBC,MAArB,EAA6BC,KAA7B,QAA0C,OAA1C;AACA,OAAO,KAAKC,KAAZ,MAAuB,OAAvB;AAEA,SAASC,cAAT,EAAyBC,kBAAzB,QAAmD,WAAnD;AACA,SAASC,kBAAT,QAAmC,oBAAnC;AACA,SAASC,SAAT,QAA0B,UAA1B;;AAWA,OAAO,IAAMC,QAAQ,gBAAGR,UAAU,CAAqB,SAASQ,QAAT,CACrDC,KADqD,EAErDC,YAFqD,EAGrD;AAAA,kBAQID,KARJ,CAEEE,EAFF;AAAA,MAEMC,IAFN,0BAEa,IAFb;AAAA,MAGEC,QAHF,GAQIJ,KARJ,CAGEI,QAHF;AAAA,MAIEC,QAJF,GAQIL,KARJ,CAIEK,QAJF;AAAA,MAKEC,OALF,GAQIN,KARJ,CAKEM,OALF;AAAA,MAMEC,SANF,GAQIP,KARJ,CAMEO,SANF;AAAA,MAOKC,UAPL,4BAQIR,KARJ;;AAAA,wBASgCL,cAAc,EAT9C;AAAA,MASQc,QATR,mBASQA,QATR;AAAA,MASkBC,SATlB,mBASkBA,SATlB;;AAAA,4BAUuCd,kBAAkB,EAVzD;AAAA,MAUQe,cAVR,uBAUQA,cAVR;AAAA,MAUwBC,UAVxB,uBAUwBA,UAVxB;;AAWA,MAAMC,GAAG,GAAGrB,MAAM,EAAlB;AACA,MAAMsB,MAAM,GAAGrB,KAAK,EAApB;AAEA,MAAMsB,QAAQ,GAAGF,GAAG,CAACG,OAAJ,IAAeH,GAAG,CAACG,OAAJ,KAAgBL,cAAhD;AAEA,MAAMM,YAAY,GAAGnB,SAAS,CAC5BO,QAD4B,EAE5B,UACEa,CADF,EAEK;AAAA;;AACHT,IAAAA,QAAQ,IAAIA,QAAQ,CAACS,CAAD,EAAI,KAAJ,CAApB;AACA,0BAAAR,SAAS,CAACM,OAAV,wCAAmBG,KAAnB;AACAD,IAAAA,CAAC,CAACE,cAAF;AACD,GAR2B,CAA9B;;AAWA,MAAMC,WAAW,GAAG,SAAdA,WAAc,CAACH,CAAD,EAAwC;AAC1D,QAAI,CAACd,QAAL,EAAe;AACb;AACAQ,MAAAA,UAAU,IAAIA,UAAU,CAACC,GAAG,CAACG,OAAL,CAAxB;AACAC,MAAAA,YAAY,CAACC,CAAD,CAAZ;AACD;AACF,GAND;;AAQA,MAAMI,aAAwD,GAAG,SAA3DA,aAA2D,CAACJ,CAAD,EAAO;AACtE,YAAQA,CAAC,CAACK,GAAV;AACE,WAAK,OAAL;AACA,WAAK,GAAL;AACE,YAAI,CAACnB,QAAL,EAAe;AACba,UAAAA,YAAY,CAACC,CAAD,CAAZ;AACD;;AACD;AANJ;AAQD,GATD;;AAWA,sBACE,KAAC,IAAD;AACE,IAAA,GAAG,EAAErB,kBAAkB,CAACgB,GAAD,EAAMZ,YAAN,CADzB;AAEE,IAAA,EAAE,EAAEG,QAAQ,GAAGoB,SAAH,GAAeV,MAF7B;AAGE,sBAAe,EAHjB;AAIE,wBAAkBC,QAAQ,GAAG,EAAH,GAAQS,SAJpC;AAKE,IAAA,IAAI,EAAC,UALP;AAME,IAAA,OAAO,EAAE1B,SAAS,CAACQ,OAAD,EAAUe,WAAV,CANpB;AAOE,IAAA,QAAQ,EAAEjB,QAAQ,GAAG,CAAC,CAAJ,GAAQ,CAP5B;AAQE,IAAA,SAAS,EAAEN,SAAS,CAACS,SAAD,EAAYe,aAAZ,CARtB;AASE,qBAAelB,QAAQ,GAAG,EAAH,GAAQoB,SATjC;AAUE,qBAAepB,QAAQ,GAAG,EAAH,GAAQoB,SAVjC;AAWE,IAAA,QAAQ,EAAEpB;AAXZ,KAYMI,UAZN,EADF;AAgBD,CAjEiC,CAA3B","sourcesContent":["import { forwardRef, useRef, useId } from 'react';\nimport * as React from 'react';\n\nimport { useMenuContext, useMenuListContext } from './context';\nimport { assignMultipleRefs } from '../utils/assignRef';\nimport { wrapEvent } from '../utils';\n\nexport interface MenuItemProps extends React.LiHTMLAttributes<HTMLLIElement> {\n as?: React.ElementType<any>;\n innerAs?: React.ElementType<any>;\n onSelect?: (\n e: React.MouseEvent<HTMLLIElement> | React.KeyboardEvent<HTMLLIElement>\n ) => void;\n disabled?: boolean;\n}\n\nexport const MenuItem = forwardRef<any, MenuItemProps>(function MenuItem(\n props,\n forwardedRef\n) {\n const {\n as: Comp = 'li',\n disabled,\n onSelect,\n onClick,\n onKeyDown,\n ...otherProps\n } = props;\n const { onChange, buttonRef } = useMenuContext();\n const { navigationItem, onNavigate } = useMenuListContext();\n const ref = useRef<HTMLLIElement>();\n const itemId = useId();\n\n const isActive = ref.current && ref.current === navigationItem;\n\n const handleSelect = wrapEvent(\n onSelect,\n (\n e: React.KeyboardEvent<HTMLLIElement> | React.MouseEvent<HTMLLIElement>\n ) => {\n onChange && onChange(e, false);\n buttonRef.current?.focus();\n e.preventDefault();\n }\n );\n\n const handleClick = (e: React.MouseEvent<HTMLLIElement>) => {\n if (!disabled) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n onNavigate && onNavigate(ref.current!);\n handleSelect(e);\n }\n };\n\n const handleKeyDown: React.KeyboardEventHandler<HTMLLIElement> = (e) => {\n switch (e.key) {\n case 'Enter':\n case ' ':\n if (!disabled) {\n handleSelect(e);\n }\n break;\n }\n };\n\n return (\n <Comp\n ref={assignMultipleRefs(ref, forwardedRef)}\n id={disabled ? undefined : itemId}\n data-menu-item=\"\"\n data-highlighted={isActive ? '' : undefined}\n role=\"menuitem\"\n onClick={wrapEvent(onClick, handleClick)}\n tabIndex={disabled ? -1 : 0}\n onKeyDown={wrapEvent(onKeyDown, handleKeyDown)}\n data-disabled={disabled ? '' : undefined}\n aria-disabled={disabled ? '' : undefined}\n disabled={disabled}\n {...otherProps}\n />\n );\n});\n"],"file":"MenuItem.js"}
1
+ {"version":3,"sources":["../../../src/Menu/MenuItem.tsx"],"names":["forwardRef","useRef","useId","useMenuContext","useMenuListContext","assignMultipleRefs","wrapEvent","MenuItem","props","forwardedRef","as","Comp","disabled","onSelect","onClick","onKeyDown","otherProps","onChange","buttonRef","navigationItem","onNavigate","ref","itemId","isActive","current","handleSelect","e","focus","preventDefault","handleClick","handleKeyDown","key","undefined"],"mappings":";;AAOA,SAASA,UAAT,EAAqBC,MAArB,EAA6BC,KAA7B,QAA0C,OAA1C;AAEA,SAASC,cAAT,EAAyBC,kBAAzB,QAAmD,WAAnD;AACA,SAASC,kBAAT,QAAmC,oBAAnC;AACA,SAASC,SAAT,QAA0B,UAA1B;;AAWA,OAAO,IAAMC,QAAQ,gBAAGP,UAAU,CAAqB,SAASO,QAAT,CACrDC,KADqD,EAErDC,YAFqD,EAGrD;AAAA,kBAQID,KARJ,CAEEE,EAFF;AAAA,MAEMC,IAFN,0BAEa,IAFb;AAAA,MAGEC,QAHF,GAQIJ,KARJ,CAGEI,QAHF;AAAA,MAIEC,QAJF,GAQIL,KARJ,CAIEK,QAJF;AAAA,MAKEC,OALF,GAQIN,KARJ,CAKEM,OALF;AAAA,MAMEC,SANF,GAQIP,KARJ,CAMEO,SANF;AAAA,MAOKC,UAPL,4BAQIR,KARJ;;AAAA,wBASgCL,cAAc,EAT9C;AAAA,MASQc,QATR,mBASQA,QATR;AAAA,MASkBC,SATlB,mBASkBA,SATlB;;AAAA,4BAUuCd,kBAAkB,EAVzD;AAAA,MAUQe,cAVR,uBAUQA,cAVR;AAAA,MAUwBC,UAVxB,uBAUwBA,UAVxB;;AAWA,MAAMC,GAAG,GAAGpB,MAAM,EAAlB;AACA,MAAMqB,MAAM,GAAGpB,KAAK,EAApB;AAEA,MAAMqB,QAAQ,GAAGF,GAAG,CAACG,OAAJ,IAAeH,GAAG,CAACG,OAAJ,KAAgBL,cAAhD;AAEA,MAAMM,YAAY,GAAGnB,SAAS,CAC5BO,QAD4B,EAE5B,UAACa,CAAD,EAAiE;AAAA;;AAC/DT,IAAAA,QAAQ,IAAIA,QAAQ,CAACS,CAAD,EAAI,KAAJ,CAApB;AACA,0BAAAR,SAAS,CAACM,OAAV,wCAAmBG,KAAnB;AACAD,IAAAA,CAAC,CAACE,cAAF;AACD,GAN2B,CAA9B;;AASA,MAAMC,WAAW,GAAG,SAAdA,WAAc,CAACH,CAAD,EAAkC;AACpD,QAAI,CAACd,QAAL,EAAe;AACb;AACAQ,MAAAA,UAAU,IAAIA,UAAU,CAACC,GAAG,CAACG,OAAL,CAAxB;AACAC,MAAAA,YAAY,CAACC,CAAD,CAAZ;AACD;AACF,GAND;;AAQA,MAAMI,aAAkD,GAAG,SAArDA,aAAqD,CAACJ,CAAD,EAAO;AAChE,YAAQA,CAAC,CAACK,GAAV;AACE,WAAK,OAAL;AACA,WAAK,GAAL;AACE,YAAI,CAACnB,QAAL,EAAe;AACba,UAAAA,YAAY,CAACC,CAAD,CAAZ;AACD;;AACD;AANJ;AAQD,GATD;;AAWA,sBACE,KAAC,IAAD;AACE,IAAA,GAAG,EAAErB,kBAAkB,CAACgB,GAAD,EAAMZ,YAAN,CADzB;AAEE,IAAA,EAAE,EAAEG,QAAQ,GAAGoB,SAAH,GAAeV,MAF7B;AAGE,sBAAe,EAHjB;AAIE,wBAAkBC,QAAQ,GAAG,EAAH,GAAQS,SAJpC;AAKE,IAAA,IAAI,EAAC,UALP;AAME,IAAA,OAAO,EAAE1B,SAAS,CAACQ,OAAD,EAAUe,WAAV,CANpB;AAOE,IAAA,QAAQ,EAAEjB,QAAQ,GAAG,CAAC,CAAJ,GAAQ,CAP5B;AAQE,IAAA,SAAS,EAAEN,SAAS,CAACS,SAAD,EAAYe,aAAZ,CARtB;AASE,qBAAelB,QAAQ,GAAG,EAAH,GAAQoB,SATjC;AAUE,qBAAepB,QAAQ,GAAG,EAAH,GAAQoB,SAVjC;AAWE,IAAA,QAAQ,EAAEpB;AAXZ,KAYMI,UAZN,EADF;AAgBD,CA/DiC,CAA3B","sourcesContent":["import type {\n LiHTMLAttributes,\n ElementType,\n MouseEvent,\n KeyboardEvent,\n KeyboardEventHandler,\n} from 'react';\nimport { forwardRef, useRef, useId } from 'react';\n\nimport { useMenuContext, useMenuListContext } from './context';\nimport { assignMultipleRefs } from '../utils/assignRef';\nimport { wrapEvent } from '../utils';\n\nexport interface MenuItemProps extends LiHTMLAttributes<HTMLLIElement> {\n as?: ElementType<any>;\n innerAs?: ElementType<any>;\n onSelect?: (\n e: MouseEvent<HTMLLIElement> | KeyboardEvent<HTMLLIElement>\n ) => void;\n disabled?: boolean;\n}\n\nexport const MenuItem = forwardRef<any, MenuItemProps>(function MenuItem(\n props,\n forwardedRef\n) {\n const {\n as: Comp = 'li',\n disabled,\n onSelect,\n onClick,\n onKeyDown,\n ...otherProps\n } = props;\n const { onChange, buttonRef } = useMenuContext();\n const { navigationItem, onNavigate } = useMenuListContext();\n const ref = useRef<HTMLLIElement>();\n const itemId = useId();\n\n const isActive = ref.current && ref.current === navigationItem;\n\n const handleSelect = wrapEvent(\n onSelect,\n (e: KeyboardEvent<HTMLLIElement> | MouseEvent<HTMLLIElement>) => {\n onChange && onChange(e, false);\n buttonRef.current?.focus();\n e.preventDefault();\n }\n );\n\n const handleClick = (e: MouseEvent<HTMLLIElement>) => {\n if (!disabled) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n onNavigate && onNavigate(ref.current!);\n handleSelect(e);\n }\n };\n\n const handleKeyDown: KeyboardEventHandler<HTMLLIElement> = (e) => {\n switch (e.key) {\n case 'Enter':\n case ' ':\n if (!disabled) {\n handleSelect(e);\n }\n break;\n }\n };\n\n return (\n <Comp\n ref={assignMultipleRefs(ref, forwardedRef)}\n id={disabled ? undefined : itemId}\n data-menu-item=\"\"\n data-highlighted={isActive ? '' : undefined}\n role=\"menuitem\"\n onClick={wrapEvent(onClick, handleClick)}\n tabIndex={disabled ? -1 : 0}\n onKeyDown={wrapEvent(onKeyDown, handleKeyDown)}\n data-disabled={disabled ? '' : undefined}\n aria-disabled={disabled ? '' : undefined}\n disabled={disabled}\n {...otherProps}\n />\n );\n});\n"],"file":"MenuItem.js"}
@@ -1,7 +1,7 @@
1
- import * as React from 'react';
2
- export interface MenuListProps extends React.HTMLAttributes<HTMLUListElement> {
3
- as?: React.ElementType<any>;
4
- innerAs?: React.ElementType<any>;
1
+ import type { HTMLAttributes, ElementType } from 'react';
2
+ export interface MenuListProps extends HTMLAttributes<HTMLUListElement> {
3
+ as?: ElementType<any>;
4
+ innerAs?: ElementType<any>;
5
5
  defaultActiveItemValue?: string;
6
6
  }
7
- export declare const MenuList: React.ForwardRefExoticComponent<MenuListProps & React.RefAttributes<HTMLUListElement>>;
7
+ export declare const MenuList: import("react").ForwardRefExoticComponent<MenuListProps & import("react").RefAttributes<HTMLUListElement>>;
@@ -2,7 +2,6 @@ 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
4
  import { forwardRef, useEffect, useRef, useState, useLayoutEffect } from 'react';
5
- import * as React from 'react';
6
5
  import { useMenuContext, MenuListProvider } from './context';
7
6
  import { assignMultipleRefs } from '../utils/assignRef';
8
7
  import { useOnClickOutside } from '../hooks/useOnClickOutside';