@bigbinary/neeto-atoms 1.0.97 → 1.0.99

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 (331) hide show
  1. package/dist/{Alert-CQ7lMpGp.js → Alert-CydF7eEs.js} +9 -31
  2. package/dist/Alert-CydF7eEs.js.map +1 -0
  3. package/dist/{Combobox-CKR_H-QS.js → Combobox-DriZMj4f.js} +300 -5017
  4. package/dist/Combobox-DriZMj4f.js.map +1 -0
  5. package/dist/{Dialog-BOcBeB8v.js → Dialog-D8C0-nEo.js} +10 -31
  6. package/dist/Dialog-D8C0-nEo.js.map +1 -0
  7. package/dist/DialogTrigger-a3diAOif.js +992 -0
  8. package/dist/DialogTrigger-a3diAOif.js.map +1 -0
  9. package/dist/{Select-Bc0D3byr.js → Select-Dng-cXLj.js} +2 -2
  10. package/dist/{Select-Bc0D3byr.js.map → Select-Dng-cXLj.js.map} +1 -1
  11. package/dist/{Sheet-Bw8GVQPS.js → Sheet-D1MWtg1q.js} +9 -33
  12. package/dist/Sheet-D1MWtg1q.js.map +1 -0
  13. package/dist/{button-CrEMzWKw.js → button-CePY5zne.js} +2 -2
  14. package/dist/button-CePY5zne.js.map +1 -0
  15. package/dist/cjs/{Alert-CxctOMOk.js → Alert-BdZVGiON.js} +9 -31
  16. package/dist/cjs/Alert-BdZVGiON.js.map +1 -0
  17. package/dist/cjs/Combobox-BE8LT4yq.js +5501 -0
  18. package/dist/cjs/Combobox-BE8LT4yq.js.map +1 -0
  19. package/dist/cjs/{Dialog-CBSuKeu_.js → Dialog-DNv7j7ts.js} +10 -31
  20. package/dist/cjs/Dialog-DNv7j7ts.js.map +1 -0
  21. package/dist/cjs/DialogTrigger-B0Q6yIrx.js +1026 -0
  22. package/dist/cjs/DialogTrigger-B0Q6yIrx.js.map +1 -0
  23. package/dist/cjs/{Select-DVDECeJb.js → Select-gItId3pj.js} +2 -2
  24. package/dist/cjs/{Select-DVDECeJb.js.map → Select-gItId3pj.js.map} +1 -1
  25. package/dist/cjs/{Sheet-By1W1pFD.js → Sheet-D-NWMprq.js} +9 -33
  26. package/dist/cjs/Sheet-D-NWMprq.js.map +1 -0
  27. package/dist/cjs/{button-CMl9rLXi.js → button-CSBhDSDJ.js} +2 -2
  28. package/dist/cjs/button-CSBhDSDJ.js.map +1 -0
  29. package/dist/cjs/components/Alert.js +22 -18
  30. package/dist/cjs/components/Alert.js.map +1 -1
  31. package/dist/cjs/components/Avatar.js +4 -3
  32. package/dist/cjs/components/Avatar.js.map +1 -1
  33. package/dist/cjs/components/Button.js +5 -4
  34. package/dist/cjs/components/Button.js.map +1 -1
  35. package/dist/cjs/components/Checkbox.js +5 -4
  36. package/dist/cjs/components/Checkbox.js.map +1 -1
  37. package/dist/cjs/components/ColorPicker.js +4 -3
  38. package/dist/cjs/components/ColorPicker.js.map +1 -1
  39. package/dist/cjs/components/DataTable.js +6 -5
  40. package/dist/cjs/components/DataTable.js.map +1 -1
  41. package/dist/cjs/components/DatePicker.js +5 -4
  42. package/dist/cjs/components/DatePicker.js.map +1 -1
  43. package/dist/cjs/components/Dialog.js +10 -16
  44. package/dist/cjs/components/Dialog.js.map +1 -1
  45. package/dist/cjs/components/DropdownMenu.js +6 -5
  46. package/dist/cjs/components/DropdownMenu.js.map +1 -1
  47. package/dist/cjs/components/Empty.js +5 -4
  48. package/dist/cjs/components/Empty.js.map +1 -1
  49. package/dist/cjs/components/Input.js +6 -5
  50. package/dist/cjs/components/Input.js.map +1 -1
  51. package/dist/cjs/components/Kbd.js +4 -3
  52. package/dist/cjs/components/Kbd.js.map +1 -1
  53. package/dist/cjs/components/Label.js +5 -4
  54. package/dist/cjs/components/Label.js.map +1 -1
  55. package/dist/cjs/components/MultiEmailInput.js +5 -4
  56. package/dist/cjs/components/MultiEmailInput.js.map +1 -1
  57. package/dist/cjs/components/Pagination.js +1 -1
  58. package/dist/cjs/components/Popover.js +3 -2
  59. package/dist/cjs/components/Popover.js.map +1 -1
  60. package/dist/cjs/components/RadioGroup.js +5 -4
  61. package/dist/cjs/components/RadioGroup.js.map +1 -1
  62. package/dist/cjs/components/Select.js +9 -7
  63. package/dist/cjs/components/Select.js.map +1 -1
  64. package/dist/cjs/components/Sheet.js +10 -16
  65. package/dist/cjs/components/Sheet.js.map +1 -1
  66. package/dist/cjs/components/Slider.js +5 -4
  67. package/dist/cjs/components/Slider.js.map +1 -1
  68. package/dist/cjs/components/Switch.js +5 -4
  69. package/dist/cjs/components/Switch.js.map +1 -1
  70. package/dist/cjs/components/Textarea.js +5 -4
  71. package/dist/cjs/components/Textarea.js.map +1 -1
  72. package/dist/cjs/components/TimePicker.js +5 -4
  73. package/dist/cjs/components/TimePicker.js.map +1 -1
  74. package/dist/cjs/components/Tooltip.js +4 -3
  75. package/dist/cjs/components/Tooltip.js.map +1 -1
  76. package/dist/cjs/components/TreeSelect.js +5 -4
  77. package/dist/cjs/components/TreeSelect.js.map +1 -1
  78. package/dist/cjs/components/index.js +18 -16
  79. package/dist/cjs/components/index.js.map +1 -1
  80. package/dist/cjs/{dialog-Cs1qH5xA.js → dialog-CGblgaX5.js} +34 -40
  81. package/dist/cjs/dialog-CGblgaX5.js.map +1 -0
  82. package/dist/cjs/{floating-ui.react-dom-B4Aw6O7R.js → floating-ui.react-dom--alWUjS1.js} +147 -463
  83. package/dist/cjs/floating-ui.react-dom--alWUjS1.js.map +1 -0
  84. package/dist/cjs/floating-ui.utils.dom-BGEmL7pd.js +339 -0
  85. package/dist/cjs/floating-ui.utils.dom-BGEmL7pd.js.map +1 -0
  86. package/dist/cjs/formik/ActionBlock.js +5 -4
  87. package/dist/cjs/formik/ActionBlock.js.map +1 -1
  88. package/dist/cjs/formik/BlockNavigation.js +23 -19
  89. package/dist/cjs/formik/BlockNavigation.js.map +1 -1
  90. package/dist/cjs/formik/Button.js +5 -4
  91. package/dist/cjs/formik/Button.js.map +1 -1
  92. package/dist/cjs/formik/Checkbox.js +5 -4
  93. package/dist/cjs/formik/Checkbox.js.map +1 -1
  94. package/dist/cjs/formik/Input.js +6 -5
  95. package/dist/cjs/formik/Input.js.map +1 -1
  96. package/dist/cjs/formik/MultiEmailInput.js +5 -4
  97. package/dist/cjs/formik/MultiEmailInput.js.map +1 -1
  98. package/dist/cjs/formik/RadioGroup.js +5 -4
  99. package/dist/cjs/formik/RadioGroup.js.map +1 -1
  100. package/dist/cjs/formik/Select.js +9 -7
  101. package/dist/cjs/formik/Select.js.map +1 -1
  102. package/dist/cjs/formik/Slider.js +5 -4
  103. package/dist/cjs/formik/Slider.js.map +1 -1
  104. package/dist/cjs/formik/Switch.js +5 -4
  105. package/dist/cjs/formik/Switch.js.map +1 -1
  106. package/dist/cjs/formik/Textarea.js +5 -4
  107. package/dist/cjs/formik/Textarea.js.map +1 -1
  108. package/dist/cjs/formik/TreeSelect.js +5 -4
  109. package/dist/cjs/formik/TreeSelect.js.map +1 -1
  110. package/dist/cjs/formik/index.js +12 -10
  111. package/dist/cjs/formik/index.js.map +1 -1
  112. package/dist/cjs/{index-DbA93GP3.js → index-CMFCdiR6.js} +2 -2
  113. package/dist/cjs/{index-DbA93GP3.js.map → index-CMFCdiR6.js.map} +1 -1
  114. package/dist/cjs/{index-BTsnrFFc.js → index-DdQaz0iQ.js} +31 -33
  115. package/dist/cjs/{index-BTsnrFFc.js.map → index-DdQaz0iQ.js.map} +1 -1
  116. package/dist/cjs/{index-C9ICrOhM.js → index-owSUsE-n.js} +2 -2
  117. package/dist/cjs/{index-C9ICrOhM.js.map → index-owSUsE-n.js.map} +1 -1
  118. package/dist/cjs/index.js +18 -16
  119. package/dist/cjs/index.js.map +1 -1
  120. package/dist/cjs/{input-group-BdQoKm0i.js → input-group-DZ-c2jRZ.js} +2 -2
  121. package/dist/cjs/{input-group-BdQoKm0i.js.map → input-group-DZ-c2jRZ.js.map} +1 -1
  122. package/dist/cjs/primitives/AlertDialog.js +112 -188
  123. package/dist/cjs/primitives/AlertDialog.js.map +1 -1
  124. package/dist/cjs/primitives/Button.js +1 -2
  125. package/dist/cjs/primitives/Button.js.map +1 -1
  126. package/dist/cjs/primitives/Calendar.js +1 -1
  127. package/dist/cjs/primitives/Carousel.js +1 -1
  128. package/dist/cjs/primitives/Combobox.js +6 -4
  129. package/dist/cjs/primitives/Combobox.js.map +1 -1
  130. package/dist/cjs/primitives/Command.js +19 -5
  131. package/dist/cjs/primitives/Command.js.map +1 -1
  132. package/dist/cjs/primitives/ContextMenu.js +4 -3
  133. package/dist/cjs/primitives/ContextMenu.js.map +1 -1
  134. package/dist/cjs/primitives/Dialog.js +48 -44
  135. package/dist/cjs/primitives/Dialog.js.map +1 -1
  136. package/dist/cjs/primitives/Drawer.js +2 -2
  137. package/dist/cjs/primitives/Drawer.js.map +1 -1
  138. package/dist/cjs/primitives/DropdownMenu.js +20 -13
  139. package/dist/cjs/primitives/DropdownMenu.js.map +1 -1
  140. package/dist/cjs/primitives/Field.js +5 -4
  141. package/dist/cjs/primitives/Field.js.map +1 -1
  142. package/dist/cjs/primitives/HoverCard.js +3 -2
  143. package/dist/cjs/primitives/HoverCard.js.map +1 -1
  144. package/dist/cjs/primitives/InputGroup.js +2 -2
  145. package/dist/cjs/primitives/Menubar.js +4 -3
  146. package/dist/cjs/primitives/Menubar.js.map +1 -1
  147. package/dist/cjs/primitives/Pagination.js +1 -1
  148. package/dist/cjs/primitives/Popover.js +3 -2
  149. package/dist/cjs/primitives/Popover.js.map +1 -1
  150. package/dist/cjs/primitives/Select.js +3 -2
  151. package/dist/cjs/primitives/Select.js.map +1 -1
  152. package/dist/cjs/primitives/Sheet.js +68 -62
  153. package/dist/cjs/primitives/Sheet.js.map +1 -1
  154. package/dist/cjs/primitives/Sidebar.js +15 -11
  155. package/dist/cjs/primitives/Sidebar.js.map +1 -1
  156. package/dist/cjs/primitives/Tooltip.js +4 -3
  157. package/dist/cjs/primitives/Tooltip.js.map +1 -1
  158. package/dist/cjs/primitives/index.js +18 -15
  159. package/dist/cjs/primitives/index.js.map +1 -1
  160. package/dist/cjs/sheet-BMQ9juND.js +138 -0
  161. package/dist/cjs/sheet-BMQ9juND.js.map +1 -0
  162. package/dist/cjs/{tooltip-BYCcUMZn.js → tooltip-hM8gc5L8.js} +2 -2
  163. package/dist/cjs/{tooltip-BYCcUMZn.js.map → tooltip-hM8gc5L8.js.map} +1 -1
  164. package/dist/cjs/useOpenInteractionType-D4z6FTrA.js +4877 -0
  165. package/dist/cjs/useOpenInteractionType-D4z6FTrA.js.map +1 -0
  166. package/dist/components/Alert.js +22 -18
  167. package/dist/components/Alert.js.map +1 -1
  168. package/dist/components/Avatar.js +4 -3
  169. package/dist/components/Avatar.js.map +1 -1
  170. package/dist/components/Button.js +5 -4
  171. package/dist/components/Button.js.map +1 -1
  172. package/dist/components/Checkbox.js +5 -4
  173. package/dist/components/Checkbox.js.map +1 -1
  174. package/dist/components/ColorPicker.js +4 -3
  175. package/dist/components/ColorPicker.js.map +1 -1
  176. package/dist/components/DataTable.js +6 -5
  177. package/dist/components/DataTable.js.map +1 -1
  178. package/dist/components/DatePicker.js +5 -4
  179. package/dist/components/DatePicker.js.map +1 -1
  180. package/dist/components/Dialog/Dialog.d.ts +1 -1
  181. package/dist/components/Dialog.js +10 -16
  182. package/dist/components/Dialog.js.map +1 -1
  183. package/dist/components/DropdownMenu.js +6 -5
  184. package/dist/components/DropdownMenu.js.map +1 -1
  185. package/dist/components/Empty.js +5 -4
  186. package/dist/components/Empty.js.map +1 -1
  187. package/dist/components/Input.js +6 -5
  188. package/dist/components/Input.js.map +1 -1
  189. package/dist/components/Kbd.js +4 -3
  190. package/dist/components/Kbd.js.map +1 -1
  191. package/dist/components/Label.js +5 -4
  192. package/dist/components/Label.js.map +1 -1
  193. package/dist/components/MultiEmailInput.js +5 -4
  194. package/dist/components/MultiEmailInput.js.map +1 -1
  195. package/dist/components/Pagination.js +1 -1
  196. package/dist/components/Popover.js +3 -2
  197. package/dist/components/Popover.js.map +1 -1
  198. package/dist/components/RadioGroup.js +5 -4
  199. package/dist/components/RadioGroup.js.map +1 -1
  200. package/dist/components/Select.js +9 -7
  201. package/dist/components/Select.js.map +1 -1
  202. package/dist/components/Sheet/Sheet.d.ts +2 -2
  203. package/dist/components/Sheet.js +10 -16
  204. package/dist/components/Sheet.js.map +1 -1
  205. package/dist/components/Slider.js +5 -4
  206. package/dist/components/Slider.js.map +1 -1
  207. package/dist/components/Switch.js +5 -4
  208. package/dist/components/Switch.js.map +1 -1
  209. package/dist/components/Textarea.js +5 -4
  210. package/dist/components/Textarea.js.map +1 -1
  211. package/dist/components/TimePicker.js +5 -4
  212. package/dist/components/TimePicker.js.map +1 -1
  213. package/dist/components/Tooltip.js +4 -3
  214. package/dist/components/Tooltip.js.map +1 -1
  215. package/dist/components/TreeSelect.js +5 -4
  216. package/dist/components/TreeSelect.js.map +1 -1
  217. package/dist/components/index.js +18 -16
  218. package/dist/components/index.js.map +1 -1
  219. package/dist/{dialog-BVHqPY9y.js → dialog-CqXuhXNS.js} +34 -40
  220. package/dist/dialog-CqXuhXNS.js.map +1 -0
  221. package/dist/{floating-ui.react-dom-D8_f_WWh.js → floating-ui.react-dom-BtFUJRfb.js} +3 -299
  222. package/dist/floating-ui.react-dom-BtFUJRfb.js.map +1 -0
  223. package/dist/floating-ui.utils.dom-Bw_Rc4bg.js +299 -0
  224. package/dist/floating-ui.utils.dom-Bw_Rc4bg.js.map +1 -0
  225. package/dist/formik/ActionBlock.js +5 -4
  226. package/dist/formik/ActionBlock.js.map +1 -1
  227. package/dist/formik/BlockNavigation.js +23 -19
  228. package/dist/formik/BlockNavigation.js.map +1 -1
  229. package/dist/formik/Button.js +5 -4
  230. package/dist/formik/Button.js.map +1 -1
  231. package/dist/formik/Checkbox.js +5 -4
  232. package/dist/formik/Checkbox.js.map +1 -1
  233. package/dist/formik/Input.js +6 -5
  234. package/dist/formik/Input.js.map +1 -1
  235. package/dist/formik/MultiEmailInput.js +5 -4
  236. package/dist/formik/MultiEmailInput.js.map +1 -1
  237. package/dist/formik/RadioGroup.js +5 -4
  238. package/dist/formik/RadioGroup.js.map +1 -1
  239. package/dist/formik/Select.js +9 -7
  240. package/dist/formik/Select.js.map +1 -1
  241. package/dist/formik/Slider.js +5 -4
  242. package/dist/formik/Slider.js.map +1 -1
  243. package/dist/formik/Switch.js +5 -4
  244. package/dist/formik/Switch.js.map +1 -1
  245. package/dist/formik/Textarea.js +5 -4
  246. package/dist/formik/Textarea.js.map +1 -1
  247. package/dist/formik/TreeSelect.js +5 -4
  248. package/dist/formik/TreeSelect.js.map +1 -1
  249. package/dist/formik/index.js +12 -10
  250. package/dist/formik/index.js.map +1 -1
  251. package/dist/{index-DnD7-4_R.js → index-BQtGUR27.js} +2 -2
  252. package/dist/{index-DnD7-4_R.js.map → index-BQtGUR27.js.map} +1 -1
  253. package/dist/{index-GJ3FauH8.js → index-CLV7U7i7.js} +4 -4
  254. package/dist/{index-GJ3FauH8.js.map → index-CLV7U7i7.js.map} +1 -1
  255. package/dist/{index-C3hByjk3.js → index-XvwNqU74.js} +2 -2
  256. package/dist/{index-C3hByjk3.js.map → index-XvwNqU74.js.map} +1 -1
  257. package/dist/index.js +18 -16
  258. package/dist/index.js.map +1 -1
  259. package/dist/{input-group-DDwp2ozP.js → input-group-DuITGkyB.js} +2 -2
  260. package/dist/{input-group-DDwp2ozP.js.map → input-group-DuITGkyB.js.map} +1 -1
  261. package/dist/primitives/AlertDialog.js +113 -189
  262. package/dist/primitives/AlertDialog.js.map +1 -1
  263. package/dist/primitives/Button.js +2 -3
  264. package/dist/primitives/Button.js.map +1 -1
  265. package/dist/primitives/Calendar.js +1 -1
  266. package/dist/primitives/Carousel.js +1 -1
  267. package/dist/primitives/Combobox.js +6 -4
  268. package/dist/primitives/Combobox.js.map +1 -1
  269. package/dist/primitives/Command.js +19 -5
  270. package/dist/primitives/Command.js.map +1 -1
  271. package/dist/primitives/ContextMenu.js +4 -3
  272. package/dist/primitives/ContextMenu.js.map +1 -1
  273. package/dist/primitives/Dialog.d.ts +6 -4
  274. package/dist/primitives/Dialog.js +49 -45
  275. package/dist/primitives/Dialog.js.map +1 -1
  276. package/dist/primitives/Drawer.js +2 -2
  277. package/dist/primitives/Drawer.js.map +1 -1
  278. package/dist/primitives/DropdownMenu.js +20 -13
  279. package/dist/primitives/DropdownMenu.js.map +1 -1
  280. package/dist/primitives/Field.js +5 -4
  281. package/dist/primitives/Field.js.map +1 -1
  282. package/dist/primitives/HoverCard.js +3 -2
  283. package/dist/primitives/HoverCard.js.map +1 -1
  284. package/dist/primitives/InputGroup.js +2 -2
  285. package/dist/primitives/Menubar.js +4 -3
  286. package/dist/primitives/Menubar.js.map +1 -1
  287. package/dist/primitives/Pagination.js +1 -1
  288. package/dist/primitives/Popover.js +3 -2
  289. package/dist/primitives/Popover.js.map +1 -1
  290. package/dist/primitives/Select.js +3 -2
  291. package/dist/primitives/Select.js.map +1 -1
  292. package/dist/primitives/Sheet.d.ts +5 -4
  293. package/dist/primitives/Sheet.js +68 -62
  294. package/dist/primitives/Sheet.js.map +1 -1
  295. package/dist/primitives/Sidebar.js +15 -11
  296. package/dist/primitives/Sidebar.js.map +1 -1
  297. package/dist/primitives/Tooltip.js +4 -3
  298. package/dist/primitives/Tooltip.js.map +1 -1
  299. package/dist/primitives/index.js +18 -15
  300. package/dist/primitives/index.js.map +1 -1
  301. package/dist/shadcn/components/alert-dialog.d.ts +8 -8
  302. package/dist/shadcn/components/command.d.ts +3 -1
  303. package/dist/shadcn/components/dialog.d.ts +10 -9
  304. package/dist/shadcn/components/dropdown-menu.d.ts +1 -1
  305. package/dist/shadcn/components/sheet.d.ts +7 -7
  306. package/dist/sheet-B9oDGvvX.js +129 -0
  307. package/dist/sheet-B9oDGvvX.js.map +1 -0
  308. package/dist/{tooltip-ChQ9xD1j.js → tooltip-0DecQ06t.js} +2 -2
  309. package/dist/{tooltip-ChQ9xD1j.js.map → tooltip-0DecQ06t.js.map} +1 -1
  310. package/dist/useOpenInteractionType-CVfxIsuz.js +4766 -0
  311. package/dist/useOpenInteractionType-CVfxIsuz.js.map +1 -0
  312. package/package.json +1 -1
  313. package/dist/Alert-CQ7lMpGp.js.map +0 -1
  314. package/dist/Combobox-CKR_H-QS.js.map +0 -1
  315. package/dist/Dialog-BOcBeB8v.js.map +0 -1
  316. package/dist/Sheet-Bw8GVQPS.js.map +0 -1
  317. package/dist/button-CrEMzWKw.js.map +0 -1
  318. package/dist/cjs/Alert-CxctOMOk.js.map +0 -1
  319. package/dist/cjs/Combobox-Dd2m0qal.js +0 -10218
  320. package/dist/cjs/Combobox-Dd2m0qal.js.map +0 -1
  321. package/dist/cjs/Dialog-CBSuKeu_.js.map +0 -1
  322. package/dist/cjs/Sheet-By1W1pFD.js.map +0 -1
  323. package/dist/cjs/button-CMl9rLXi.js.map +0 -1
  324. package/dist/cjs/dialog-Cs1qH5xA.js.map +0 -1
  325. package/dist/cjs/floating-ui.react-dom-B4Aw6O7R.js.map +0 -1
  326. package/dist/cjs/sheet-G6ismmAK.js +0 -147
  327. package/dist/cjs/sheet-G6ismmAK.js.map +0 -1
  328. package/dist/dialog-BVHqPY9y.js.map +0 -1
  329. package/dist/floating-ui.react-dom-D8_f_WWh.js.map +0 -1
  330. package/dist/sheet-DNANcGkk.js +0 -138
  331. package/dist/sheet-DNANcGkk.js.map +0 -1
@@ -0,0 +1,992 @@
1
+ import * as React from 'react';
2
+ import { f as formatErrorMessage, u as useRenderElement, t as transitionStatusMapping, p as popupStateMapping, a as useButton, c as createChangeEventDetails, b as closePress, d as useBaseUiId, e as useIsoLayoutEffect, g as useTransitionStatus, h as useStableCallback, i as useOpenChangeComplete, j as useId, k as useFloatingParentNodeId, l as useRefWithInit, F as FloatingRootStore, m as getFloatingFocusElement, E as EMPTY_OBJECT, C as CommonPopupDataAttributes, n as FloatingFocusManager, o as FloatingPortal, I as InternalBackdrop, q as inertValue, r as useOpenInteractionType, s as imperativeAction, v as useDismiss, w as useScrollLock, x as useInteractions, y as getTarget, z as contains, R as ReactStore, P as PopupTriggerMap, A as popupStoreSelectors, B as createInitialPopupStoreState, D as createSelector, G as useOnFirstRender, H as useClick, J as CLICK_TRIGGER_IDENTIFIER, K as triggerOpenStateMapping } from './useOpenInteractionType-CVfxIsuz.js';
3
+ import { jsx, jsxs } from 'react/jsx-runtime';
4
+ import 'react-dom';
5
+ import { p as isElement } from './floating-ui.utils.dom-Bw_Rc4bg.js';
6
+
7
+ const DialogRootContext = /*#__PURE__*/React.createContext(undefined);
8
+ function useDialogRootContext(optional) {
9
+ const dialogRootContext = React.useContext(DialogRootContext);
10
+ if (optional === false && dialogRootContext === undefined) {
11
+ throw new Error(formatErrorMessage(27));
12
+ }
13
+ return dialogRootContext;
14
+ }
15
+
16
+ const stateAttributesMapping$1 = {
17
+ ...popupStateMapping,
18
+ ...transitionStatusMapping
19
+ };
20
+
21
+ /**
22
+ * An overlay displayed beneath the popup.
23
+ * Renders a `<div>` element.
24
+ *
25
+ * Documentation: [Base UI Dialog](https://base-ui.com/react/components/dialog)
26
+ */
27
+ const DialogBackdrop = /*#__PURE__*/React.forwardRef(function DialogBackdrop(componentProps, forwardedRef) {
28
+ const {
29
+ render,
30
+ className,
31
+ style,
32
+ forceRender = false,
33
+ ...elementProps
34
+ } = componentProps;
35
+ const {
36
+ store
37
+ } = useDialogRootContext();
38
+ const open = store.useState('open');
39
+ const nested = store.useState('nested');
40
+ const mounted = store.useState('mounted');
41
+ const transitionStatus = store.useState('transitionStatus');
42
+ const state = {
43
+ open,
44
+ transitionStatus
45
+ };
46
+ return useRenderElement('div', componentProps, {
47
+ state,
48
+ ref: [store.context.backdropRef, forwardedRef],
49
+ stateAttributesMapping: stateAttributesMapping$1,
50
+ props: [{
51
+ role: 'presentation',
52
+ hidden: !mounted,
53
+ style: {
54
+ userSelect: 'none',
55
+ WebkitUserSelect: 'none'
56
+ }
57
+ }, elementProps],
58
+ enabled: forceRender || !nested
59
+ });
60
+ });
61
+
62
+ /**
63
+ * A button that closes the dialog.
64
+ * Renders a `<button>` element.
65
+ *
66
+ * Documentation: [Base UI Dialog](https://base-ui.com/react/components/dialog)
67
+ */
68
+ const DialogClose = /*#__PURE__*/React.forwardRef(function DialogClose(componentProps, forwardedRef) {
69
+ const {
70
+ render,
71
+ className,
72
+ disabled = false,
73
+ nativeButton = true,
74
+ style,
75
+ ...elementProps
76
+ } = componentProps;
77
+ const {
78
+ store
79
+ } = useDialogRootContext();
80
+ const open = store.useState('open');
81
+ function handleClick(event) {
82
+ if (open) {
83
+ store.setOpen(false, createChangeEventDetails(closePress, event.nativeEvent));
84
+ }
85
+ }
86
+ const {
87
+ getButtonProps,
88
+ buttonRef
89
+ } = useButton({
90
+ disabled,
91
+ native: nativeButton
92
+ });
93
+ const state = {
94
+ disabled
95
+ };
96
+ return useRenderElement('button', componentProps, {
97
+ state,
98
+ ref: [forwardedRef, buttonRef],
99
+ props: [{
100
+ onClick: handleClick
101
+ }, elementProps, getButtonProps]
102
+ });
103
+ });
104
+
105
+ /**
106
+ * A paragraph with additional information about the dialog.
107
+ * Renders a `<p>` element.
108
+ *
109
+ * Documentation: [Base UI Dialog](https://base-ui.com/react/components/dialog)
110
+ */
111
+ const DialogDescription = /*#__PURE__*/React.forwardRef(function DialogDescription(componentProps, forwardedRef) {
112
+ const {
113
+ render,
114
+ className,
115
+ style,
116
+ id: idProp,
117
+ ...elementProps
118
+ } = componentProps;
119
+ const {
120
+ store
121
+ } = useDialogRootContext();
122
+ const id = useBaseUiId(idProp);
123
+ store.useSyncedValueWithCleanup('descriptionElementId', id);
124
+ return useRenderElement('p', componentProps, {
125
+ ref: forwardedRef,
126
+ props: [{
127
+ id
128
+ }, elementProps]
129
+ });
130
+ });
131
+
132
+ /**
133
+ * Returns a callback ref that registers/unregisters the trigger element in the store.
134
+ *
135
+ * @param store The Store instance where the trigger should be registered.
136
+ */
137
+ function useTriggerRegistration(id, store) {
138
+ // Keep track of the currently registered element to unregister it on unmount or id change.
139
+ const registeredElementIdRef = React.useRef(null);
140
+ const registeredElementRef = React.useRef(null);
141
+ return React.useCallback(element => {
142
+ if (id === undefined) {
143
+ return;
144
+ }
145
+ if (registeredElementIdRef.current !== null) {
146
+ const registeredId = registeredElementIdRef.current;
147
+ const registeredElement = registeredElementRef.current;
148
+ const currentElement = store.context.triggerElements.getById(registeredId);
149
+ if (registeredElement && currentElement === registeredElement) {
150
+ store.context.triggerElements.delete(registeredId);
151
+ }
152
+ registeredElementIdRef.current = null;
153
+ registeredElementRef.current = null;
154
+ }
155
+ if (element !== null) {
156
+ registeredElementIdRef.current = id;
157
+ registeredElementRef.current = element;
158
+ store.context.triggerElements.add(id, element);
159
+ }
160
+ }, [store, id]);
161
+ }
162
+
163
+ /**
164
+ * Sets up trigger data forwarding to the store.
165
+ *
166
+ * @param triggerId Id of the trigger.
167
+ * @param triggerElement The trigger DOM element.
168
+ * @param store The Store instance managing the popup state.
169
+ * @param stateUpdates An object with state updates to apply when the trigger is active.
170
+ */
171
+ function useTriggerDataForwarding(triggerId, triggerElementRef, store, stateUpdates) {
172
+ const isMountedByThisTrigger = store.useState('isMountedByTrigger', triggerId);
173
+ const baseRegisterTrigger = useTriggerRegistration(triggerId, store);
174
+ const registerTrigger = useStableCallback(element => {
175
+ baseRegisterTrigger(element);
176
+ if (!element || !store.select('open')) {
177
+ return;
178
+ }
179
+ const activeTriggerId = store.select('activeTriggerId');
180
+ if (activeTriggerId === triggerId) {
181
+ store.update({
182
+ activeTriggerElement: element,
183
+ ...stateUpdates
184
+ });
185
+ return;
186
+ }
187
+ if (activeTriggerId == null) {
188
+ // This runs when popup is open, but no active trigger is set.
189
+ // It can happen when using controlled mode and the trigger is mounted after opening or if `triggerId` prop is not set explicitly.
190
+ // In such cases the first trigger to run this code becomes the active trigger (store.select('activeTriggerId') should not return null after that).
191
+ // This is mostly for compatibility with contained triggers where no explicit `triggerId` was required in controlled mode.
192
+ store.update({
193
+ activeTriggerId: triggerId,
194
+ activeTriggerElement: element,
195
+ ...stateUpdates
196
+ });
197
+ }
198
+ });
199
+ useIsoLayoutEffect(() => {
200
+ if (isMountedByThisTrigger) {
201
+ store.update({
202
+ activeTriggerElement: triggerElementRef.current,
203
+ ...stateUpdates
204
+ });
205
+ }
206
+ // eslint-disable-next-line react-hooks/exhaustive-deps
207
+ }, [isMountedByThisTrigger, store, triggerElementRef, ...Object.values(stateUpdates)]);
208
+ return {
209
+ registerTrigger,
210
+ isMountedByThisTrigger
211
+ };
212
+ }
213
+ /**
214
+ * Ensures that when there's only one trigger element registered, it is set as the active trigger.
215
+ * This allows controlled popups to work correctly without an explicit triggerId, maintaining compatibility
216
+ * with the contained triggers.
217
+ *
218
+ * This should be called on the Root part.
219
+ *
220
+ * @param open Whether the popup is open.
221
+ * @param store The Store instance managing the popup state.
222
+ */
223
+ function useImplicitActiveTrigger(store) {
224
+ const open = store.useState('open');
225
+ useIsoLayoutEffect(() => {
226
+ if (open && !store.select('activeTriggerId') && store.context.triggerElements.size === 1) {
227
+ const iteratorResult = store.context.triggerElements.entries().next();
228
+ if (!iteratorResult.done) {
229
+ const [implicitTriggerId, implicitTriggerElement] = iteratorResult.value;
230
+ store.update({
231
+ activeTriggerId: implicitTriggerId,
232
+ activeTriggerElement: implicitTriggerElement
233
+ });
234
+ }
235
+ }
236
+ }, [open, store]);
237
+ }
238
+
239
+ /**
240
+ * Mangages the mounted state of the popup.
241
+ * Sets up the transition status listeners and handles unmounting when needed.
242
+ * Updates the `mounted` and `transitionStatus` states in the store.
243
+ *
244
+ * @param open Whether the popup is open.
245
+ * @param store The Store instance managing the popup state.
246
+ * @param onUnmount Optional callback to be called when the popup is unmounted.
247
+ *
248
+ * @returns A function to forcibly unmount the popup.
249
+ */
250
+ function useOpenStateTransitions(open, store, onUnmount) {
251
+ const {
252
+ mounted,
253
+ setMounted,
254
+ transitionStatus
255
+ } = useTransitionStatus(open);
256
+ store.useSyncedValues({
257
+ mounted,
258
+ transitionStatus
259
+ });
260
+ const forceUnmount = useStableCallback(() => {
261
+ setMounted(false);
262
+ store.update({
263
+ activeTriggerId: null,
264
+ activeTriggerElement: null,
265
+ mounted: false
266
+ });
267
+ store.context.onOpenChangeComplete?.(false);
268
+ });
269
+ const preventUnmountingOnClose = store.useState('preventUnmountingOnClose');
270
+ useOpenChangeComplete({
271
+ enabled: !preventUnmountingOnClose,
272
+ open,
273
+ ref: store.context.popupRef,
274
+ onComplete() {
275
+ if (!open) {
276
+ forceUnmount();
277
+ }
278
+ }
279
+ });
280
+ return {
281
+ forceUnmount,
282
+ transitionStatus
283
+ };
284
+ }
285
+
286
+ /**
287
+ * Initializes a FloatingRootStore that is kept in sync with the provided PopupStore.
288
+ * The new instance is created only once and updated on every render.
289
+ */
290
+ function useSyncedFloatingRootContext(options) {
291
+ const {
292
+ popupStore,
293
+ treatPopupAsFloatingElement = false,
294
+ onOpenChange
295
+ } = options;
296
+ const floatingId = useId();
297
+ const nested = useFloatingParentNodeId() != null;
298
+ const open = popupStore.useState('open');
299
+ const referenceElement = popupStore.useState('activeTriggerElement');
300
+ const floatingElement = popupStore.useState(treatPopupAsFloatingElement ? 'popupElement' : 'positionerElement');
301
+ const triggerElements = popupStore.context.triggerElements;
302
+ const store = useRefWithInit(() => new FloatingRootStore({
303
+ open,
304
+ transitionStatus: undefined,
305
+ referenceElement,
306
+ floatingElement,
307
+ triggerElements,
308
+ onOpenChange,
309
+ floatingId,
310
+ syncOnly: true,
311
+ nested
312
+ })).current;
313
+ useIsoLayoutEffect(() => {
314
+ const valuesToSync = {
315
+ open,
316
+ floatingId,
317
+ referenceElement,
318
+ floatingElement
319
+ };
320
+ if (isElement(referenceElement)) {
321
+ valuesToSync.domReferenceElement = referenceElement;
322
+ }
323
+ if (store.state.positionReference === store.state.referenceElement) {
324
+ valuesToSync.positionReference = referenceElement;
325
+ }
326
+ store.update(valuesToSync);
327
+ }, [open, floatingId, referenceElement, floatingElement, store]);
328
+
329
+ // TODO: When `setOpen` is a part of the PopupStore API, we don't need to sync it.
330
+ store.context.onOpenChange = onOpenChange;
331
+ store.context.nested = nested;
332
+ return store;
333
+ }
334
+
335
+ const componentRoleToAriaRoleMap = new Map([['select', 'listbox'], ['combobox', 'listbox'], ['label', false]]);
336
+
337
+ /**
338
+ * Adds base screen reader props to the reference and floating elements for a
339
+ * given floating element `role`.
340
+ * @see https://floating-ui.com/docs/useRole
341
+ */
342
+ function useRole(context, props = {}) {
343
+ const store = 'rootStore' in context ? context.rootStore : context;
344
+ const open = store.useState('open');
345
+ const defaultFloatingId = store.useState('floatingId');
346
+ const domReference = store.useState('domReferenceElement');
347
+ const floatingElement = store.useState('floatingElement');
348
+ const {
349
+ role = 'dialog'
350
+ } = props;
351
+ const defaultReferenceId = useId();
352
+ const referenceId = domReference?.id || defaultReferenceId;
353
+ const floatingId = React.useMemo(() => getFloatingFocusElement(floatingElement)?.id || defaultFloatingId, [floatingElement, defaultFloatingId]);
354
+ const ariaRole = componentRoleToAriaRoleMap.get(role) ?? role;
355
+ const parentId = useFloatingParentNodeId();
356
+ const isNested = parentId != null;
357
+ const trigger = React.useMemo(() => {
358
+ if (ariaRole === 'tooltip' || role === 'label') {
359
+ return EMPTY_OBJECT;
360
+ }
361
+ return {
362
+ 'aria-haspopup': ariaRole === 'alertdialog' ? 'dialog' : ariaRole,
363
+ 'aria-expanded': 'false',
364
+ ...(ariaRole === 'listbox' && {
365
+ role: 'combobox'
366
+ }),
367
+ ...(ariaRole === 'menu' && isNested && {
368
+ role: 'menuitem'
369
+ }),
370
+ ...(role === 'select' && {
371
+ 'aria-autocomplete': 'none'
372
+ }),
373
+ ...(role === 'combobox' && {
374
+ 'aria-autocomplete': 'list'
375
+ })
376
+ };
377
+ }, [ariaRole, isNested, role]);
378
+ const reference = React.useMemo(() => {
379
+ if (ariaRole === 'tooltip' || role === 'label') {
380
+ return {
381
+ [`aria-${role === 'label' ? 'labelledby' : 'describedby'}`]: open ? floatingId : undefined
382
+ };
383
+ }
384
+ const triggerProps = trigger;
385
+ return {
386
+ ...triggerProps,
387
+ 'aria-expanded': open ? 'true' : 'false',
388
+ 'aria-controls': open ? floatingId : undefined,
389
+ ...(ariaRole === 'menu' && {
390
+ id: referenceId
391
+ })
392
+ };
393
+ }, [ariaRole, floatingId, open, referenceId, role, trigger]);
394
+ const floating = React.useMemo(() => {
395
+ const floatingProps = {
396
+ id: floatingId,
397
+ ...(ariaRole && {
398
+ role: ariaRole
399
+ })
400
+ };
401
+ if (ariaRole === 'tooltip' || role === 'label') {
402
+ return floatingProps;
403
+ }
404
+ return {
405
+ ...floatingProps,
406
+ ...(ariaRole === 'menu' && {
407
+ 'aria-labelledby': referenceId
408
+ })
409
+ };
410
+ }, [ariaRole, floatingId, referenceId, role]);
411
+ const item = React.useCallback(({
412
+ active,
413
+ selected
414
+ }) => {
415
+ const commonProps = {
416
+ role: 'option',
417
+ ...(active && {
418
+ id: `${floatingId}-fui-option`
419
+ })
420
+ };
421
+
422
+ // For `menu`, we are unable to tell if the item is a `menuitemradio`
423
+ // or `menuitemcheckbox`. For backwards-compatibility reasons, also
424
+ // avoid defaulting to `menuitem` as it may overwrite custom role props.
425
+ switch (role) {
426
+ case 'select':
427
+ case 'combobox':
428
+ return {
429
+ ...commonProps,
430
+ 'aria-selected': selected
431
+ };
432
+ }
433
+ return {};
434
+ }, [floatingId, role]);
435
+ return React.useMemo(() => ({
436
+ reference,
437
+ floating,
438
+ item,
439
+ trigger
440
+ }), [reference, floating, trigger, item]);
441
+ }
442
+
443
+ let DialogPopupCssVars = /*#__PURE__*/function (DialogPopupCssVars) {
444
+ /**
445
+ * Indicates how many dialogs are nested within.
446
+ * @type {number}
447
+ */
448
+ DialogPopupCssVars["nestedDialogs"] = "--nested-dialogs";
449
+ return DialogPopupCssVars;
450
+ }({});
451
+
452
+ let DialogPopupDataAttributes = function (DialogPopupDataAttributes) {
453
+ /**
454
+ * Present when the dialog is open.
455
+ */
456
+ DialogPopupDataAttributes[DialogPopupDataAttributes["open"] = CommonPopupDataAttributes.open] = "open";
457
+ /**
458
+ * Present when the dialog is closed.
459
+ */
460
+ DialogPopupDataAttributes[DialogPopupDataAttributes["closed"] = CommonPopupDataAttributes.closed] = "closed";
461
+ /**
462
+ * Present when the dialog is animating in.
463
+ */
464
+ DialogPopupDataAttributes[DialogPopupDataAttributes["startingStyle"] = CommonPopupDataAttributes.startingStyle] = "startingStyle";
465
+ /**
466
+ * Present when the dialog is animating out.
467
+ */
468
+ DialogPopupDataAttributes[DialogPopupDataAttributes["endingStyle"] = CommonPopupDataAttributes.endingStyle] = "endingStyle";
469
+ /**
470
+ * Present when the dialog is nested within another dialog.
471
+ */
472
+ DialogPopupDataAttributes["nested"] = "data-nested";
473
+ /**
474
+ * Present when the dialog has other open dialogs nested within it.
475
+ */
476
+ DialogPopupDataAttributes["nestedDialogOpen"] = "data-nested-dialog-open";
477
+ return DialogPopupDataAttributes;
478
+ }({});
479
+
480
+ const DialogPortalContext = /*#__PURE__*/React.createContext(undefined);
481
+ function useDialogPortalContext() {
482
+ const value = React.useContext(DialogPortalContext);
483
+ if (value === undefined) {
484
+ throw new Error(formatErrorMessage(26));
485
+ }
486
+ return value;
487
+ }
488
+
489
+ const ARROW_UP = 'ArrowUp';
490
+ const ARROW_DOWN = 'ArrowDown';
491
+ const ARROW_LEFT = 'ArrowLeft';
492
+ const ARROW_RIGHT = 'ArrowRight';
493
+ const HOME = 'Home';
494
+ const END = 'End';
495
+ const HORIZONTAL_KEYS = new Set([ARROW_LEFT, ARROW_RIGHT]);
496
+ const VERTICAL_KEYS = new Set([ARROW_UP, ARROW_DOWN]);
497
+ const ARROW_KEYS = new Set([...HORIZONTAL_KEYS, ...VERTICAL_KEYS]);
498
+ new Set([...ARROW_KEYS, HOME, END]);
499
+ const COMPOSITE_KEYS = new Set([ARROW_UP, ARROW_DOWN, ARROW_LEFT, ARROW_RIGHT, HOME, END]);
500
+
501
+ const stateAttributesMapping = {
502
+ ...popupStateMapping,
503
+ ...transitionStatusMapping,
504
+ nestedDialogOpen(value) {
505
+ return value ? {
506
+ [DialogPopupDataAttributes.nestedDialogOpen]: ''
507
+ } : null;
508
+ }
509
+ };
510
+
511
+ /**
512
+ * A container for the dialog contents.
513
+ * Renders a `<div>` element.
514
+ *
515
+ * Documentation: [Base UI Dialog](https://base-ui.com/react/components/dialog)
516
+ */
517
+ const DialogPopup = /*#__PURE__*/React.forwardRef(function DialogPopup(componentProps, forwardedRef) {
518
+ const {
519
+ className,
520
+ finalFocus,
521
+ initialFocus,
522
+ render,
523
+ style,
524
+ ...elementProps
525
+ } = componentProps;
526
+ const {
527
+ store
528
+ } = useDialogRootContext();
529
+ const descriptionElementId = store.useState('descriptionElementId');
530
+ const disablePointerDismissal = store.useState('disablePointerDismissal');
531
+ const floatingRootContext = store.useState('floatingRootContext');
532
+ const rootPopupProps = store.useState('popupProps');
533
+ const modal = store.useState('modal');
534
+ const mounted = store.useState('mounted');
535
+ const nested = store.useState('nested');
536
+ const nestedOpenDialogCount = store.useState('nestedOpenDialogCount');
537
+ const open = store.useState('open');
538
+ const openMethod = store.useState('openMethod');
539
+ const titleElementId = store.useState('titleElementId');
540
+ const transitionStatus = store.useState('transitionStatus');
541
+ const role = store.useState('role');
542
+ useDialogPortalContext();
543
+ useOpenChangeComplete({
544
+ open,
545
+ ref: store.context.popupRef,
546
+ onComplete() {
547
+ if (open) {
548
+ store.context.onOpenChangeComplete?.(true);
549
+ }
550
+ }
551
+ });
552
+
553
+ // Default initial focus logic:
554
+ // If opened by touch, focus the popup element to prevent the virtual keyboard from opening
555
+ // (this is required for Android specifically as iOS handles this automatically).
556
+ function defaultInitialFocus(interactionType) {
557
+ if (interactionType === 'touch') {
558
+ return store.context.popupRef.current;
559
+ }
560
+ return true;
561
+ }
562
+ const resolvedInitialFocus = initialFocus === undefined ? defaultInitialFocus : initialFocus;
563
+ const nestedDialogOpen = nestedOpenDialogCount > 0;
564
+ const state = {
565
+ open,
566
+ nested,
567
+ transitionStatus,
568
+ nestedDialogOpen
569
+ };
570
+ const element = useRenderElement('div', componentProps, {
571
+ state,
572
+ props: [rootPopupProps, {
573
+ 'aria-labelledby': titleElementId ?? undefined,
574
+ 'aria-describedby': descriptionElementId ?? undefined,
575
+ role,
576
+ tabIndex: -1,
577
+ hidden: !mounted,
578
+ onKeyDown(event) {
579
+ if (COMPOSITE_KEYS.has(event.key)) {
580
+ event.stopPropagation();
581
+ }
582
+ },
583
+ style: {
584
+ [DialogPopupCssVars.nestedDialogs]: nestedOpenDialogCount
585
+ }
586
+ }, elementProps],
587
+ ref: [forwardedRef, store.context.popupRef, store.useStateSetter('popupElement')],
588
+ stateAttributesMapping
589
+ });
590
+ return /*#__PURE__*/jsx(FloatingFocusManager, {
591
+ context: floatingRootContext,
592
+ openInteractionType: openMethod,
593
+ disabled: !mounted,
594
+ closeOnFocusOut: !disablePointerDismissal,
595
+ initialFocus: resolvedInitialFocus,
596
+ returnFocus: finalFocus,
597
+ modal: modal !== false,
598
+ restoreFocus: "popup",
599
+ children: element
600
+ });
601
+ });
602
+
603
+ const DialogPortal = /*#__PURE__*/React.forwardRef(function DialogPortal(props, forwardedRef) {
604
+ const {
605
+ keepMounted = false,
606
+ ...portalProps
607
+ } = props;
608
+ const {
609
+ store
610
+ } = useDialogRootContext();
611
+ const mounted = store.useState('mounted');
612
+ const modal = store.useState('modal');
613
+ const open = store.useState('open');
614
+ const shouldRender = mounted || keepMounted;
615
+ if (!shouldRender) {
616
+ return null;
617
+ }
618
+ return /*#__PURE__*/jsx(DialogPortalContext.Provider, {
619
+ value: keepMounted,
620
+ children: /*#__PURE__*/jsxs(FloatingPortal, {
621
+ ref: forwardedRef,
622
+ ...portalProps,
623
+ children: [mounted && modal === true && /*#__PURE__*/jsx(InternalBackdrop, {
624
+ ref: store.context.internalBackdropRef,
625
+ inert: inertValue(!open)
626
+ }), props.children]
627
+ })
628
+ });
629
+ });
630
+
631
+ function useDialogRoot(params) {
632
+ const {
633
+ store,
634
+ parentContext,
635
+ actionsRef,
636
+ isDrawer
637
+ } = params;
638
+ const open = store.useState('open');
639
+ const disablePointerDismissal = store.useState('disablePointerDismissal');
640
+ const modal = store.useState('modal');
641
+ const popupElement = store.useState('popupElement');
642
+ const {
643
+ openMethod,
644
+ triggerProps
645
+ } = useOpenInteractionType(open);
646
+ useImplicitActiveTrigger(store);
647
+ const {
648
+ forceUnmount
649
+ } = useOpenStateTransitions(open, store);
650
+ const createDialogEventDetails = useStableCallback(reason => {
651
+ const details = createChangeEventDetails(reason);
652
+ details.preventUnmountOnClose = () => {
653
+ store.set('preventUnmountingOnClose', true);
654
+ };
655
+ return details;
656
+ });
657
+ const handleImperativeClose = React.useCallback(() => {
658
+ store.setOpen(false, createDialogEventDetails(imperativeAction));
659
+ }, [store, createDialogEventDetails]);
660
+ React.useImperativeHandle(actionsRef, () => ({
661
+ unmount: forceUnmount,
662
+ close: handleImperativeClose
663
+ }), [forceUnmount, handleImperativeClose]);
664
+ const floatingRootContext = useSyncedFloatingRootContext({
665
+ popupStore: store,
666
+ onOpenChange: store.setOpen,
667
+ treatPopupAsFloatingElement: true
668
+ });
669
+ const [ownNestedOpenDialogs, setOwnNestedOpenDialogs] = React.useState(0);
670
+ const [ownNestedOpenDrawers, setOwnNestedOpenDrawers] = React.useState(0);
671
+ const isTopmost = ownNestedOpenDialogs === 0;
672
+ const role = useRole(floatingRootContext);
673
+ const dismiss = useDismiss(floatingRootContext, {
674
+ outsidePressEvent() {
675
+ if (store.context.internalBackdropRef.current || store.context.backdropRef.current) {
676
+ return 'intentional';
677
+ }
678
+ // Ensure `aria-hidden` on outside elements is removed immediately
679
+ // on outside press when trapping focus.
680
+ return {
681
+ mouse: modal === 'trap-focus' ? 'sloppy' : 'intentional',
682
+ touch: 'sloppy'
683
+ };
684
+ },
685
+ outsidePress(event) {
686
+ if (!store.context.outsidePressEnabledRef.current) {
687
+ return false;
688
+ }
689
+
690
+ // For mouse events, only accept left button (button 0)
691
+ // For touch events, a single touch is equivalent to left button
692
+ if ('button' in event && event.button !== 0) {
693
+ return false;
694
+ }
695
+ if ('touches' in event && event.touches.length !== 1) {
696
+ return false;
697
+ }
698
+ const target = getTarget(event);
699
+ if (isTopmost && !disablePointerDismissal) {
700
+ const eventTarget = target;
701
+ // Only close if the click occurred on the dialog's owning backdrop.
702
+ // This supports multiple modal dialogs that aren't nested in the React tree:
703
+ // https://github.com/mui/base-ui/issues/1320
704
+ if (modal) {
705
+ return store.context.internalBackdropRef.current || store.context.backdropRef.current ? store.context.internalBackdropRef.current === eventTarget || store.context.backdropRef.current === eventTarget || contains(eventTarget, popupElement) && !eventTarget?.hasAttribute('data-base-ui-portal') : true;
706
+ }
707
+ return true;
708
+ }
709
+ return false;
710
+ },
711
+ escapeKey: isTopmost
712
+ });
713
+ useScrollLock(open && modal === true, popupElement);
714
+ const {
715
+ getReferenceProps,
716
+ getFloatingProps,
717
+ getTriggerProps
718
+ } = useInteractions([role, dismiss]);
719
+
720
+ // Listen for nested open/close events on this store to maintain the counts.
721
+ store.useContextCallback('onNestedDialogOpen', (dialogCount, drawerCount) => {
722
+ setOwnNestedOpenDialogs(dialogCount);
723
+ setOwnNestedOpenDrawers(drawerCount);
724
+ });
725
+ store.useContextCallback('onNestedDialogClose', () => {
726
+ setOwnNestedOpenDialogs(0);
727
+ setOwnNestedOpenDrawers(0);
728
+ });
729
+
730
+ // Notify parent of our open/close state using parent callbacks, if any
731
+ React.useEffect(() => {
732
+ if (parentContext?.onNestedDialogOpen && open) {
733
+ parentContext.onNestedDialogOpen(ownNestedOpenDialogs + 1, ownNestedOpenDrawers + (isDrawer ? 1 : 0));
734
+ }
735
+ if (parentContext?.onNestedDialogClose && !open) {
736
+ parentContext.onNestedDialogClose();
737
+ }
738
+ return () => {
739
+ if (parentContext?.onNestedDialogClose && open) {
740
+ parentContext.onNestedDialogClose();
741
+ }
742
+ };
743
+ }, [isDrawer, open, ownNestedOpenDialogs, ownNestedOpenDrawers, parentContext]);
744
+ const activeTriggerProps = React.useMemo(() => getReferenceProps(triggerProps), [getReferenceProps, triggerProps]);
745
+ const inactiveTriggerProps = React.useMemo(() => getTriggerProps(triggerProps), [getTriggerProps, triggerProps]);
746
+ const popupProps = React.useMemo(() => getFloatingProps(), [getFloatingProps]);
747
+ store.useSyncedValues({
748
+ openMethod,
749
+ activeTriggerProps,
750
+ inactiveTriggerProps,
751
+ popupProps,
752
+ floatingRootContext,
753
+ nestedOpenDialogCount: ownNestedOpenDialogs,
754
+ nestedOpenDrawerCount: ownNestedOpenDrawers
755
+ });
756
+ }
757
+
758
+ const selectors = {
759
+ ...popupStoreSelectors,
760
+ modal: createSelector(state => state.modal),
761
+ nested: createSelector(state => state.nested),
762
+ nestedOpenDialogCount: createSelector(state => state.nestedOpenDialogCount),
763
+ nestedOpenDrawerCount: createSelector(state => state.nestedOpenDrawerCount),
764
+ disablePointerDismissal: createSelector(state => state.disablePointerDismissal),
765
+ openMethod: createSelector(state => state.openMethod),
766
+ descriptionElementId: createSelector(state => state.descriptionElementId),
767
+ titleElementId: createSelector(state => state.titleElementId),
768
+ viewportElement: createSelector(state => state.viewportElement),
769
+ role: createSelector(state => state.role)
770
+ };
771
+ class DialogStore extends ReactStore {
772
+ constructor(initialState) {
773
+ super(createInitialState(initialState), {
774
+ popupRef: /*#__PURE__*/React.createRef(),
775
+ backdropRef: /*#__PURE__*/React.createRef(),
776
+ internalBackdropRef: /*#__PURE__*/React.createRef(),
777
+ outsidePressEnabledRef: {
778
+ current: true
779
+ },
780
+ triggerElements: new PopupTriggerMap(),
781
+ onOpenChange: undefined,
782
+ onOpenChangeComplete: undefined
783
+ }, selectors);
784
+ }
785
+ setOpen = (nextOpen, eventDetails) => {
786
+ eventDetails.preventUnmountOnClose = () => {
787
+ this.set('preventUnmountingOnClose', true);
788
+ };
789
+ if (!nextOpen && eventDetails.trigger == null && this.state.activeTriggerId != null) {
790
+ // When closing the dialog, pass the old trigger to the onOpenChange event
791
+ // so it's not reset too early (potentially causing focus issues in controlled scenarios).
792
+ eventDetails.trigger = this.state.activeTriggerElement ?? undefined;
793
+ }
794
+ this.context.onOpenChange?.(nextOpen, eventDetails);
795
+ if (eventDetails.isCanceled) {
796
+ return;
797
+ }
798
+ this.state.floatingRootContext.dispatchOpenChange(nextOpen, eventDetails);
799
+ const updatedState = {
800
+ open: nextOpen
801
+ };
802
+
803
+ // If a popup is closing, the `trigger` may be null.
804
+ // We want to keep the previous value so that exit animations are played and focus is returned correctly.
805
+ const newTriggerId = eventDetails.trigger?.id ?? null;
806
+ if (newTriggerId || nextOpen) {
807
+ updatedState.activeTriggerId = newTriggerId;
808
+ updatedState.activeTriggerElement = eventDetails.trigger ?? null;
809
+ }
810
+ this.update(updatedState);
811
+ };
812
+ static useStore(externalStore, initialState) {
813
+ // eslint-disable-next-line react-hooks/rules-of-hooks
814
+ const internalStore = useRefWithInit(() => {
815
+ return new DialogStore(initialState);
816
+ }).current;
817
+ return externalStore ?? internalStore;
818
+ }
819
+ }
820
+ function createInitialState(initialState = {}) {
821
+ return {
822
+ ...createInitialPopupStoreState(),
823
+ modal: true,
824
+ disablePointerDismissal: false,
825
+ popupElement: null,
826
+ viewportElement: null,
827
+ descriptionElementId: undefined,
828
+ titleElementId: undefined,
829
+ openMethod: null,
830
+ nested: false,
831
+ nestedOpenDialogCount: 0,
832
+ nestedOpenDrawerCount: 0,
833
+ role: 'dialog',
834
+ ...initialState
835
+ };
836
+ }
837
+
838
+ const IsDrawerContext = /*#__PURE__*/React.createContext(false);
839
+ function DialogRoot(props) {
840
+ const {
841
+ children,
842
+ open: openProp,
843
+ defaultOpen = false,
844
+ onOpenChange,
845
+ onOpenChangeComplete,
846
+ disablePointerDismissal = false,
847
+ modal = true,
848
+ actionsRef,
849
+ handle,
850
+ triggerId: triggerIdProp,
851
+ defaultTriggerId: defaultTriggerIdProp = null
852
+ } = props;
853
+ const parentDialogRootContext = useDialogRootContext(true);
854
+ const isDrawer = React.useContext(IsDrawerContext);
855
+ const nested = Boolean(parentDialogRootContext);
856
+ const store = DialogStore.useStore(handle?.store, {
857
+ open: defaultOpen,
858
+ openProp,
859
+ activeTriggerId: defaultTriggerIdProp,
860
+ triggerIdProp,
861
+ modal,
862
+ disablePointerDismissal,
863
+ nested
864
+ });
865
+
866
+ // Support initially open state when uncontrolled
867
+ useOnFirstRender(() => {
868
+ if (openProp === undefined && store.state.open === false && defaultOpen === true) {
869
+ store.update({
870
+ open: true,
871
+ activeTriggerId: defaultTriggerIdProp
872
+ });
873
+ }
874
+ });
875
+ store.useControlledProp('openProp', openProp);
876
+ store.useControlledProp('triggerIdProp', triggerIdProp);
877
+ store.useSyncedValues({
878
+ disablePointerDismissal,
879
+ nested,
880
+ modal
881
+ });
882
+ store.useContextCallback('onOpenChange', onOpenChange);
883
+ store.useContextCallback('onOpenChangeComplete', onOpenChangeComplete);
884
+ const payload = store.useState('payload');
885
+ useDialogRoot({
886
+ store,
887
+ actionsRef,
888
+ parentContext: parentDialogRootContext?.store.context,
889
+ isDrawer});
890
+ const contextValue = React.useMemo(() => ({
891
+ store
892
+ }), [store]);
893
+ return /*#__PURE__*/jsx(IsDrawerContext.Provider, {
894
+ value: false,
895
+ children: /*#__PURE__*/jsx(DialogRootContext.Provider, {
896
+ value: contextValue,
897
+ children: typeof children === 'function' ? children({
898
+ payload
899
+ }) : children
900
+ })
901
+ });
902
+ }
903
+
904
+ /**
905
+ * A heading that labels the dialog.
906
+ * Renders an `<h2>` element.
907
+ *
908
+ * Documentation: [Base UI Dialog](https://base-ui.com/react/components/dialog)
909
+ */
910
+ const DialogTitle = /*#__PURE__*/React.forwardRef(function DialogTitle(componentProps, forwardedRef) {
911
+ const {
912
+ render,
913
+ className,
914
+ style,
915
+ id: idProp,
916
+ ...elementProps
917
+ } = componentProps;
918
+ const {
919
+ store
920
+ } = useDialogRootContext();
921
+ const id = useBaseUiId(idProp);
922
+ store.useSyncedValueWithCleanup('titleElementId', id);
923
+ return useRenderElement('h2', componentProps, {
924
+ ref: forwardedRef,
925
+ props: [{
926
+ id
927
+ }, elementProps]
928
+ });
929
+ });
930
+
931
+ /**
932
+ * A button that opens the dialog.
933
+ * Renders a `<button>` element.
934
+ *
935
+ * Documentation: [Base UI Dialog](https://base-ui.com/react/components/dialog)
936
+ */
937
+ const DialogTrigger = /*#__PURE__*/React.forwardRef(function DialogTrigger(componentProps, forwardedRef) {
938
+ const {
939
+ render,
940
+ className,
941
+ disabled = false,
942
+ nativeButton = true,
943
+ id: idProp,
944
+ payload,
945
+ handle,
946
+ style,
947
+ ...elementProps
948
+ } = componentProps;
949
+ const dialogRootContext = useDialogRootContext(true);
950
+ const store = handle?.store ?? dialogRootContext?.store;
951
+ if (!store) {
952
+ throw new Error(formatErrorMessage(79));
953
+ }
954
+ const thisTriggerId = useBaseUiId(idProp);
955
+ const floatingContext = store.useState('floatingRootContext');
956
+ const isOpenedByThisTrigger = store.useState('isOpenedByTrigger', thisTriggerId);
957
+ const triggerElementRef = React.useRef(null);
958
+ const {
959
+ registerTrigger,
960
+ isMountedByThisTrigger
961
+ } = useTriggerDataForwarding(thisTriggerId, triggerElementRef, store, {
962
+ payload
963
+ });
964
+ const {
965
+ getButtonProps,
966
+ buttonRef
967
+ } = useButton({
968
+ disabled,
969
+ native: nativeButton
970
+ });
971
+ const click = useClick(floatingContext, {
972
+ enabled: floatingContext != null
973
+ });
974
+ const localInteractionProps = useInteractions([click]);
975
+ const state = {
976
+ disabled,
977
+ open: isOpenedByThisTrigger
978
+ };
979
+ const rootTriggerProps = store.useState('triggerProps', isMountedByThisTrigger);
980
+ return useRenderElement('button', componentProps, {
981
+ state,
982
+ ref: [buttonRef, forwardedRef, registerTrigger, triggerElementRef],
983
+ props: [localInteractionProps.getReferenceProps(), rootTriggerProps, {
984
+ [CLICK_TRIGGER_IDENTIFIER]: '',
985
+ id: thisTriggerId
986
+ }, elementProps, getButtonProps],
987
+ stateAttributesMapping: triggerOpenStateMapping
988
+ });
989
+ });
990
+
991
+ export { DialogPopup as D, IsDrawerContext as I, DialogClose as a, DialogPortal as b, DialogBackdrop as c, DialogRoot as d, DialogTitle as e, DialogDescription as f, DialogTrigger as g, DialogStore as h, useDialogRoot as i, DialogRootContext as j, useDialogRootContext as u };
992
+ //# sourceMappingURL=DialogTrigger-a3diAOif.js.map