@base-ui/react 1.4.1 → 1.5.0

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 (579) hide show
  1. package/CHANGELOG.md +125 -8
  2. package/README.md +1 -1
  3. package/accordion/item/AccordionItem.d.ts +4 -0
  4. package/accordion/item/AccordionItem.js +5 -4
  5. package/accordion/panel/AccordionPanel.js +29 -51
  6. package/accordion/root/AccordionRoot.js +5 -6
  7. package/accordion/trigger/AccordionTrigger.js +3 -4
  8. package/alert-dialog/handle.d.ts +14 -1
  9. package/alert-dialog/handle.js +22 -5
  10. package/alert-dialog/index.d.ts +1 -1
  11. package/alert-dialog/index.parts.d.ts +2 -3
  12. package/alert-dialog/index.parts.js +4 -5
  13. package/alert-dialog/root/AlertDialogRoot.d.ts +7 -7
  14. package/alert-dialog/root/AlertDialogRoot.js +2 -56
  15. package/alert-dialog/trigger/AlertDialogTrigger.d.ts +25 -0
  16. package/alert-dialog/trigger/AlertDialogTrigger.js +15 -0
  17. package/alert-dialog/trigger/AlertDialogTriggerDataAttributes.d.ts +10 -0
  18. package/alert-dialog/trigger/AlertDialogTriggerDataAttributes.js +18 -0
  19. package/autocomplete/root/AutocompleteRoot.js +9 -10
  20. package/avatar/image/AvatarImage.js +4 -4
  21. package/checkbox/indicator/CheckboxIndicator.js +2 -2
  22. package/checkbox/root/CheckboxRoot.js +49 -11
  23. package/checkbox-group/CheckboxGroup.js +1 -5
  24. package/collapsible/panel/CollapsiblePanel.js +29 -51
  25. package/collapsible/panel/useCollapsiblePanel.d.ts +9 -23
  26. package/collapsible/panel/useCollapsiblePanel.js +308 -268
  27. package/collapsible/root/CollapsibleRoot.d.ts +1 -1
  28. package/collapsible/root/CollapsibleRootContext.d.ts +0 -2
  29. package/collapsible/root/useCollapsibleRoot.d.ts +0 -27
  30. package/collapsible/root/useCollapsibleRoot.js +2 -64
  31. package/collapsible/trigger/CollapsibleTrigger.js +5 -6
  32. package/combobox/arrow/ComboboxArrow.js +1 -1
  33. package/combobox/backdrop/ComboboxBackdrop.js +1 -1
  34. package/combobox/chip/ComboboxChip.js +7 -2
  35. package/combobox/clear/ComboboxClear.d.ts +4 -0
  36. package/combobox/clear/ComboboxClear.js +1 -0
  37. package/combobox/clear/ComboboxClearDataAttributes.d.ts +4 -0
  38. package/combobox/clear/ComboboxClearDataAttributes.js +4 -0
  39. package/combobox/icon/ComboboxIcon.js +1 -1
  40. package/combobox/input/ComboboxInput.js +15 -6
  41. package/combobox/item/ComboboxItem.js +8 -14
  42. package/combobox/item-indicator/ComboboxItemIndicator.js +1 -2
  43. package/combobox/root/AriaCombobox.js +61 -28
  44. package/combobox/store.d.ts +4 -8
  45. package/combobox/store.js +2 -1
  46. package/combobox/utils/ComboboxInternalDismissButton.js +2 -3
  47. package/csp-provider/CSPProvider.js +1 -1
  48. package/dialog/close/DialogClose.js +6 -6
  49. package/dialog/popup/DialogPopup.js +9 -4
  50. package/dialog/root/DialogRoot.d.ts +1 -2
  51. package/dialog/root/DialogRoot.js +3 -73
  52. package/dialog/root/DialogRootContext.d.ts +1 -0
  53. package/dialog/root/DialogRootContext.js +3 -1
  54. package/dialog/root/useDialogRoot.d.ts +12 -4
  55. package/dialog/root/useDialogRoot.js +27 -25
  56. package/dialog/root/useRenderDialogRoot.d.ts +4 -0
  57. package/dialog/root/useRenderDialogRoot.js +96 -0
  58. package/dialog/store/DialogHandle.d.ts +1 -1
  59. package/dialog/store/DialogHandle.js +2 -2
  60. package/dialog/store/DialogStore.d.ts +88 -1
  61. package/dialog/store/DialogStore.js +12 -17
  62. package/dialog/trigger/DialogTrigger.d.ts +1 -1
  63. package/dialog/trigger/DialogTrigger.js +11 -4
  64. package/dialog/viewport/DialogViewport.js +4 -3
  65. package/drawer/popup/DrawerPopup.js +13 -9
  66. package/drawer/root/DrawerRoot.js +11 -11
  67. package/drawer/root/DrawerRootContext.d.ts +1 -1
  68. package/drawer/swipe-area/DrawerSwipeArea.js +6 -5
  69. package/drawer/viewport/DrawerViewport.js +13 -14
  70. package/esm/accordion/item/AccordionItem.d.ts +4 -0
  71. package/esm/accordion/item/AccordionItem.js +5 -4
  72. package/esm/accordion/panel/AccordionPanel.js +29 -51
  73. package/esm/accordion/root/AccordionRoot.js +5 -6
  74. package/esm/accordion/trigger/AccordionTrigger.js +4 -5
  75. package/esm/alert-dialog/handle.d.ts +14 -1
  76. package/esm/alert-dialog/handle.js +20 -5
  77. package/esm/alert-dialog/index.d.ts +1 -1
  78. package/esm/alert-dialog/index.parts.d.ts +2 -3
  79. package/esm/alert-dialog/index.parts.js +2 -3
  80. package/esm/alert-dialog/root/AlertDialogRoot.d.ts +7 -7
  81. package/esm/alert-dialog/root/AlertDialogRoot.js +2 -55
  82. package/esm/alert-dialog/trigger/AlertDialogTrigger.d.ts +25 -0
  83. package/esm/alert-dialog/trigger/AlertDialogTrigger.js +10 -0
  84. package/esm/alert-dialog/trigger/AlertDialogTriggerDataAttributes.d.ts +10 -0
  85. package/esm/alert-dialog/trigger/AlertDialogTriggerDataAttributes.js +12 -0
  86. package/esm/autocomplete/root/AutocompleteRoot.js +9 -10
  87. package/esm/avatar/image/AvatarImage.js +4 -4
  88. package/esm/checkbox/indicator/CheckboxIndicator.js +2 -2
  89. package/esm/checkbox/root/CheckboxRoot.js +49 -11
  90. package/esm/checkbox-group/CheckboxGroup.js +1 -5
  91. package/esm/collapsible/panel/CollapsiblePanel.js +29 -51
  92. package/esm/collapsible/panel/useCollapsiblePanel.d.ts +9 -23
  93. package/esm/collapsible/panel/useCollapsiblePanel.js +309 -269
  94. package/esm/collapsible/root/CollapsibleRoot.d.ts +1 -1
  95. package/esm/collapsible/root/CollapsibleRootContext.d.ts +0 -2
  96. package/esm/collapsible/root/useCollapsibleRoot.d.ts +0 -27
  97. package/esm/collapsible/root/useCollapsibleRoot.js +2 -64
  98. package/esm/collapsible/trigger/CollapsibleTrigger.js +5 -6
  99. package/esm/combobox/arrow/ComboboxArrow.js +1 -1
  100. package/esm/combobox/backdrop/ComboboxBackdrop.js +1 -1
  101. package/esm/combobox/chip/ComboboxChip.js +7 -2
  102. package/esm/combobox/clear/ComboboxClear.d.ts +4 -0
  103. package/esm/combobox/clear/ComboboxClear.js +1 -0
  104. package/esm/combobox/clear/ComboboxClearDataAttributes.d.ts +4 -0
  105. package/esm/combobox/clear/ComboboxClearDataAttributes.js +4 -0
  106. package/esm/combobox/icon/ComboboxIcon.js +1 -1
  107. package/esm/combobox/input/ComboboxInput.js +16 -7
  108. package/esm/combobox/item/ComboboxItem.js +8 -14
  109. package/esm/combobox/item-indicator/ComboboxItemIndicator.js +1 -2
  110. package/esm/combobox/root/AriaCombobox.js +62 -29
  111. package/esm/combobox/store.d.ts +4 -8
  112. package/esm/combobox/store.js +2 -1
  113. package/esm/combobox/utils/ComboboxInternalDismissButton.js +2 -3
  114. package/esm/csp-provider/CSPProvider.js +1 -1
  115. package/esm/dialog/close/DialogClose.js +6 -6
  116. package/esm/dialog/popup/DialogPopup.js +9 -4
  117. package/esm/dialog/root/DialogRoot.d.ts +1 -2
  118. package/esm/dialog/root/DialogRoot.js +4 -72
  119. package/esm/dialog/root/DialogRootContext.d.ts +1 -0
  120. package/esm/dialog/root/DialogRootContext.js +2 -0
  121. package/esm/dialog/root/useDialogRoot.d.ts +12 -4
  122. package/esm/dialog/root/useDialogRoot.js +28 -27
  123. package/esm/dialog/root/useRenderDialogRoot.d.ts +4 -0
  124. package/esm/dialog/root/useRenderDialogRoot.js +90 -0
  125. package/esm/dialog/store/DialogHandle.d.ts +1 -1
  126. package/esm/dialog/store/DialogHandle.js +2 -2
  127. package/esm/dialog/store/DialogStore.d.ts +88 -1
  128. package/esm/dialog/store/DialogStore.js +13 -18
  129. package/esm/dialog/trigger/DialogTrigger.d.ts +1 -1
  130. package/esm/dialog/trigger/DialogTrigger.js +12 -5
  131. package/esm/dialog/viewport/DialogViewport.js +4 -3
  132. package/esm/drawer/popup/DrawerPopup.js +14 -9
  133. package/esm/drawer/root/DrawerRoot.js +11 -11
  134. package/esm/drawer/root/DrawerRootContext.d.ts +1 -1
  135. package/esm/drawer/swipe-area/DrawerSwipeArea.js +6 -5
  136. package/esm/drawer/viewport/DrawerViewport.js +13 -14
  137. package/esm/field/control/FieldControl.js +2 -6
  138. package/esm/field/item/FieldItem.js +1 -4
  139. package/esm/field/root/FieldRoot.js +11 -3
  140. package/esm/field/root/useFieldValidation.d.ts +1 -0
  141. package/esm/field/root/useFieldValidation.js +23 -20
  142. package/esm/field/utils/getCombinedFieldValidityData.d.ts +1 -1
  143. package/esm/field/validity/FieldValidity.d.ts +1 -1
  144. package/esm/floating-ui-react/components/FloatingDelayGroup.js +3 -3
  145. package/esm/floating-ui-react/components/FloatingFocusManager.d.ts +1 -1
  146. package/esm/floating-ui-react/components/FloatingFocusManager.js +20 -8
  147. package/esm/floating-ui-react/components/FloatingPortal.js +3 -3
  148. package/esm/floating-ui-react/hooks/useClick.js +83 -74
  149. package/esm/floating-ui-react/hooks/useClientPoint.js +29 -20
  150. package/esm/floating-ui-react/hooks/useDismiss.d.ts +1 -1
  151. package/esm/floating-ui-react/hooks/useDismiss.js +82 -93
  152. package/esm/floating-ui-react/hooks/useFloating.js +37 -32
  153. package/esm/floating-ui-react/hooks/useFloatingRootContext.d.ts +1 -1
  154. package/esm/floating-ui-react/hooks/useFloatingRootContext.js +2 -2
  155. package/esm/floating-ui-react/hooks/useFocus.js +84 -81
  156. package/esm/floating-ui-react/hooks/useHover.js +72 -76
  157. package/esm/floating-ui-react/hooks/useHoverFloatingInteraction.js +49 -44
  158. package/esm/floating-ui-react/hooks/useHoverInteractionSharedState.js +1 -1
  159. package/esm/floating-ui-react/hooks/useHoverReferenceInteraction.d.ts +7 -2
  160. package/esm/floating-ui-react/hooks/useHoverReferenceInteraction.js +44 -39
  161. package/esm/floating-ui-react/hooks/useHoverShared.d.ts +2 -1
  162. package/esm/floating-ui-react/hooks/useHoverShared.js +4 -0
  163. package/esm/floating-ui-react/hooks/useListNavigation.d.ts +1 -3
  164. package/esm/floating-ui-react/hooks/useListNavigation.js +83 -74
  165. package/esm/floating-ui-react/hooks/useSyncedFloatingRootContext.d.ts +9 -6
  166. package/esm/floating-ui-react/hooks/useSyncedFloatingRootContext.js +25 -20
  167. package/esm/floating-ui-react/hooks/useTypeahead.d.ts +2 -2
  168. package/esm/floating-ui-react/hooks/useTypeahead.js +33 -52
  169. package/esm/floating-ui-react/index.d.ts +0 -2
  170. package/esm/floating-ui-react/index.js +0 -2
  171. package/esm/floating-ui-react/types.d.ts +2 -7
  172. package/esm/floating-ui-react/utils/composite.js +2 -0
  173. package/esm/floating-ui-react/utils/enqueueFocus.d.ts +1 -1
  174. package/esm/floating-ui-react/utils/enqueueFocus.js +10 -7
  175. package/esm/floating-ui-react/utils/getEmptyRootContext.js +1 -1
  176. package/esm/form/Form.js +2 -2
  177. package/esm/index.js +1 -1
  178. package/esm/internals/composite/composite.d.ts +0 -1
  179. package/esm/internals/composite/composite.js +1 -2
  180. package/esm/internals/composite/root/useCompositeRoot.js +2 -2
  181. package/esm/internals/createBaseUIEventDetails.d.ts +2 -0
  182. package/esm/internals/csp-context/index.d.ts +2 -0
  183. package/esm/internals/csp-context/index.js +1 -0
  184. package/esm/internals/field-register-control/index.d.ts +0 -1
  185. package/esm/internals/field-register-control/useFieldControlRegistration.d.ts +2 -1
  186. package/esm/internals/field-register-control/useFieldControlRegistration.js +11 -14
  187. package/esm/internals/field-register-control/useRegisterFieldControl.d.ts +1 -4
  188. package/esm/internals/field-register-control/useRegisterFieldControl.js +6 -11
  189. package/esm/internals/field-root-context/FieldRootContext.d.ts +1 -0
  190. package/esm/internals/field-root-context/FieldRootContext.js +3 -2
  191. package/esm/internals/form-context/FormContext.d.ts +5 -1
  192. package/esm/internals/reason-parts.d.ts +2 -0
  193. package/esm/internals/reason-parts.js +2 -0
  194. package/esm/internals/types.d.ts +1 -0
  195. package/esm/internals/use-button/useButton.js +4 -4
  196. package/esm/internals/usePressAndHold.js +2 -2
  197. package/esm/internals/useRenderElement.js +2 -0
  198. package/esm/menu/arrow/MenuArrow.js +1 -1
  199. package/esm/menu/backdrop/MenuBackdrop.js +1 -1
  200. package/esm/menu/checkbox-item/MenuCheckboxItem.js +5 -7
  201. package/esm/menu/group/MenuGroup.js +1 -4
  202. package/esm/menu/group/MenuGroupContext.d.ts +1 -3
  203. package/esm/menu/group/MenuGroupContext.js +1 -1
  204. package/esm/menu/group-label/MenuGroupLabel.js +4 -6
  205. package/esm/menu/link-item/MenuLinkItem.js +2 -2
  206. package/esm/menu/popup/MenuPopup.js +5 -5
  207. package/esm/menu/radio-group/MenuRadioGroup.js +11 -5
  208. package/esm/menu/radio-item/MenuRadioItem.js +5 -7
  209. package/esm/menu/root/MenuRoot.js +63 -68
  210. package/esm/menu/store/MenuHandle.js +1 -1
  211. package/esm/menu/store/MenuStore.d.ts +87 -0
  212. package/esm/menu/submenu-trigger/MenuSubmenuTrigger.js +8 -5
  213. package/esm/menu/trigger/MenuTrigger.js +13 -10
  214. package/esm/menu/viewport/MenuViewport.d.ts +2 -2
  215. package/esm/menu/viewport/MenuViewport.js +2 -2
  216. package/esm/navigation-menu/arrow/NavigationMenuArrow.js +1 -1
  217. package/esm/navigation-menu/backdrop/NavigationMenuBackdrop.js +1 -1
  218. package/esm/navigation-menu/content/NavigationMenuContent.js +8 -5
  219. package/esm/navigation-menu/icon/NavigationMenuIcon.js +1 -1
  220. package/esm/navigation-menu/item/NavigationMenuItem.js +2 -2
  221. package/esm/navigation-menu/list/NavigationMenuList.js +1 -1
  222. package/esm/navigation-menu/popup/NavigationMenuPopup.js +2 -2
  223. package/esm/navigation-menu/root/NavigationMenuRoot.js +1 -3
  224. package/esm/navigation-menu/trigger/NavigationMenuTrigger.js +24 -17
  225. package/esm/navigation-menu/utils/isOutsideMenuEvent.d.ts +0 -1
  226. package/esm/navigation-menu/utils/isOutsideMenuEvent.js +1 -5
  227. package/esm/navigation-menu/viewport/NavigationMenuViewport.js +2 -3
  228. package/esm/number-field/input/NumberFieldInput.js +3 -5
  229. package/esm/number-field/root/NumberFieldRoot.js +5 -2
  230. package/esm/number-field/scrub-area/NumberFieldScrubArea.js +7 -3
  231. package/esm/otp-field/input/OTPFieldInput.js +43 -29
  232. package/esm/otp-field/root/OTPFieldRoot.d.ts +17 -8
  233. package/esm/otp-field/root/OTPFieldRoot.js +33 -33
  234. package/esm/otp-field/root/OTPFieldRootContext.d.ts +1 -1
  235. package/esm/otp-field/utils/otp.d.ts +5 -4
  236. package/esm/otp-field/utils/otp.js +23 -12
  237. package/esm/popover/arrow/PopoverArrow.js +1 -1
  238. package/esm/popover/backdrop/PopoverBackdrop.js +1 -1
  239. package/esm/popover/close/PopoverClose.js +2 -2
  240. package/esm/popover/description/PopoverDescription.js +1 -7
  241. package/esm/popover/popup/PopoverPopup.d.ts +1 -1
  242. package/esm/popover/popup/PopoverPopup.js +16 -10
  243. package/esm/popover/popup/PopoverPopupDataAttributes.d.ts +1 -1
  244. package/esm/popover/popup/PopoverPopupDataAttributes.js +1 -1
  245. package/esm/popover/positioner/PopoverPositioner.js +5 -5
  246. package/esm/popover/root/PopoverRoot.d.ts +1 -1
  247. package/esm/popover/root/PopoverRoot.js +42 -47
  248. package/esm/popover/store/PopoverHandle.js +1 -1
  249. package/esm/popover/store/PopoverStore.d.ts +91 -4
  250. package/esm/popover/store/PopoverStore.js +17 -18
  251. package/esm/popover/title/PopoverTitle.js +1 -7
  252. package/esm/popover/trigger/PopoverTrigger.js +24 -17
  253. package/esm/popover/viewport/PopoverViewport.d.ts +3 -3
  254. package/esm/popover/viewport/PopoverViewport.js +2 -2
  255. package/esm/popover/viewport/PopoverViewportDataAttributes.d.ts +1 -1
  256. package/esm/popover/viewport/PopoverViewportDataAttributes.js +1 -1
  257. package/esm/preview-card/positioner/PreviewCardPositioner.js +11 -1
  258. package/esm/preview-card/root/PreviewCardRoot.d.ts +1 -1
  259. package/esm/preview-card/root/PreviewCardRoot.js +32 -22
  260. package/esm/preview-card/store/PreviewCardHandle.js +1 -1
  261. package/esm/preview-card/store/PreviewCardStore.d.ts +90 -2
  262. package/esm/preview-card/store/PreviewCardStore.js +19 -31
  263. package/esm/preview-card/trigger/PreviewCardTrigger.js +6 -3
  264. package/esm/preview-card/viewport/PreviewCardViewport.d.ts +2 -2
  265. package/esm/preview-card/viewport/PreviewCardViewport.js +2 -2
  266. package/esm/preview-card/viewport/PreviewCardViewportDataAttributes.d.ts +2 -2
  267. package/esm/preview-card/viewport/PreviewCardViewportDataAttributes.js +2 -2
  268. package/esm/progress/indicator/ProgressIndicator.js +6 -11
  269. package/esm/progress/root/ProgressRoot.d.ts +1 -1
  270. package/esm/radio/root/RadioRoot.js +7 -3
  271. package/esm/radio-group/RadioGroup.js +4 -11
  272. package/esm/radio-group/RadioGroupContext.d.ts +0 -1
  273. package/esm/scroll-area/content/ScrollAreaContent.js +4 -4
  274. package/esm/scroll-area/root/ScrollAreaRoot.js +1 -1
  275. package/esm/scroll-area/scrollbar/ScrollAreaScrollbar.js +16 -20
  276. package/esm/scroll-area/viewport/ScrollAreaViewport.js +6 -10
  277. package/esm/select/arrow/SelectArrow.js +1 -1
  278. package/esm/select/backdrop/SelectBackdrop.js +1 -1
  279. package/esm/select/group/SelectGroup.js +1 -1
  280. package/esm/select/group-label/SelectGroupLabel.js +2 -2
  281. package/esm/select/icon/SelectIcon.js +1 -1
  282. package/esm/select/item/SelectItem.js +46 -32
  283. package/esm/select/item/SelectItemContext.d.ts +1 -1
  284. package/esm/select/item-indicator/SelectItemIndicator.js +1 -2
  285. package/esm/select/item-text/SelectItemText.js +9 -6
  286. package/esm/select/list/SelectList.js +1 -1
  287. package/esm/select/popup/SelectPopup.js +8 -3
  288. package/esm/select/positioner/SelectPositioner.js +3 -0
  289. package/esm/select/root/SelectRoot.js +46 -40
  290. package/esm/select/root/SelectRootContext.d.ts +4 -5
  291. package/esm/select/store.d.ts +3 -0
  292. package/esm/select/store.js +1 -0
  293. package/esm/select/trigger/SelectTrigger.d.ts +5 -0
  294. package/esm/select/trigger/SelectTrigger.js +19 -33
  295. package/esm/select/trigger/SelectTriggerDataAttributes.d.ts +5 -0
  296. package/esm/select/trigger/SelectTriggerDataAttributes.js +5 -0
  297. package/esm/slider/control/SliderControl.js +10 -12
  298. package/esm/slider/root/SliderRoot.js +1 -4
  299. package/esm/slider/thumb/SliderThumb.js +32 -30
  300. package/esm/slider/value/SliderValue.js +7 -15
  301. package/esm/switch/root/SwitchRoot.js +10 -10
  302. package/esm/switch/thumb/SwitchThumb.js +1 -9
  303. package/esm/tabs/indicator/TabsIndicator.js +14 -19
  304. package/esm/tabs/list/TabsList.js +4 -10
  305. package/esm/tabs/list/TabsListContext.d.ts +2 -1
  306. package/esm/tabs/panel/TabsPanel.js +1 -1
  307. package/esm/tabs/root/TabsRoot.d.ts +16 -1
  308. package/esm/tabs/root/TabsRoot.js +73 -25
  309. package/esm/tabs/root/TabsRootContext.d.ts +0 -2
  310. package/esm/toast/provider/ToastProvider.js +1 -1
  311. package/esm/toast/root/ToastRoot.d.ts +1 -1
  312. package/esm/toast/root/ToastRoot.js +108 -131
  313. package/esm/toast/root/ToastRootDataAttributes.d.ts +1 -1
  314. package/esm/toast/root/ToastRootDataAttributes.js +1 -1
  315. package/esm/toast/store.d.ts +9 -1
  316. package/esm/toast/store.js +19 -13
  317. package/esm/toast/useToastManager.d.ts +1 -1
  318. package/esm/toast/viewport/ToastViewport.js +1 -1
  319. package/esm/toggle/Toggle.js +5 -9
  320. package/esm/toggle-group/ToggleGroup.d.ts +2 -2
  321. package/esm/toggle-group/ToggleGroup.js +6 -13
  322. package/esm/toolbar/link/ToolbarLink.d.ts +1 -1
  323. package/esm/toolbar/link/ToolbarLink.js +1 -2
  324. package/esm/tooltip/arrow/TooltipArrow.js +3 -3
  325. package/esm/tooltip/popup/TooltipPopup.js +5 -4
  326. package/esm/tooltip/root/TooltipRoot.js +35 -26
  327. package/esm/tooltip/store/TooltipHandle.js +1 -1
  328. package/esm/tooltip/store/TooltipStore.d.ts +90 -2
  329. package/esm/tooltip/store/TooltipStore.js +18 -31
  330. package/esm/tooltip/trigger/TooltipTrigger.js +151 -20
  331. package/esm/tooltip/viewport/TooltipViewport.d.ts +2 -2
  332. package/esm/tooltip/viewport/TooltipViewport.js +2 -2
  333. package/esm/tooltip/viewport/TooltipViewportDataAttributes.d.ts +1 -1
  334. package/esm/tooltip/viewport/TooltipViewportDataAttributes.js +1 -1
  335. package/esm/unstable-use-media-query/index.js +1 -1
  336. package/esm/utils/popups/index.d.ts +1 -0
  337. package/esm/utils/popups/index.js +1 -0
  338. package/esm/utils/popups/inlineRect.d.ts +15 -0
  339. package/esm/utils/popups/inlineRect.js +191 -0
  340. package/esm/utils/popups/popupStoreUtils.d.ts +28 -10
  341. package/esm/utils/popups/popupStoreUtils.js +105 -20
  342. package/esm/utils/popups/popupTriggerMap.js +2 -0
  343. package/esm/utils/popups/store.d.ts +15 -2
  344. package/esm/utils/popups/store.js +38 -2
  345. package/esm/utils/popups/useTriggerFocusGuards.js +4 -5
  346. package/esm/utils/useAnchorPositioning.d.ts +5 -0
  347. package/esm/utils/useAnchorPositioning.js +12 -9
  348. package/esm/utils/useOpenInteractionType.d.ts +4 -0
  349. package/esm/utils/useOpenInteractionType.js +23 -18
  350. package/field/control/FieldControl.js +2 -6
  351. package/field/item/FieldItem.js +1 -4
  352. package/field/root/FieldRoot.js +11 -3
  353. package/field/root/useFieldValidation.d.ts +1 -0
  354. package/field/root/useFieldValidation.js +23 -20
  355. package/field/utils/getCombinedFieldValidityData.d.ts +1 -1
  356. package/field/validity/FieldValidity.d.ts +1 -1
  357. package/floating-ui-react/components/FloatingDelayGroup.js +3 -3
  358. package/floating-ui-react/components/FloatingFocusManager.d.ts +1 -1
  359. package/floating-ui-react/components/FloatingFocusManager.js +20 -8
  360. package/floating-ui-react/components/FloatingPortal.js +3 -3
  361. package/floating-ui-react/hooks/useClick.js +82 -73
  362. package/floating-ui-react/hooks/useClientPoint.js +29 -20
  363. package/floating-ui-react/hooks/useDismiss.d.ts +1 -1
  364. package/floating-ui-react/hooks/useDismiss.js +82 -92
  365. package/floating-ui-react/hooks/useFloating.js +36 -32
  366. package/floating-ui-react/hooks/useFloatingRootContext.d.ts +1 -1
  367. package/floating-ui-react/hooks/useFloatingRootContext.js +2 -2
  368. package/floating-ui-react/hooks/useFocus.js +84 -81
  369. package/floating-ui-react/hooks/useHover.js +74 -78
  370. package/floating-ui-react/hooks/useHoverFloatingInteraction.js +48 -43
  371. package/floating-ui-react/hooks/useHoverInteractionSharedState.js +1 -1
  372. package/floating-ui-react/hooks/useHoverReferenceInteraction.d.ts +7 -2
  373. package/floating-ui-react/hooks/useHoverReferenceInteraction.js +43 -38
  374. package/floating-ui-react/hooks/useHoverShared.d.ts +2 -1
  375. package/floating-ui-react/hooks/useHoverShared.js +11 -0
  376. package/floating-ui-react/hooks/useListNavigation.d.ts +1 -3
  377. package/floating-ui-react/hooks/useListNavigation.js +83 -74
  378. package/floating-ui-react/hooks/useSyncedFloatingRootContext.d.ts +9 -6
  379. package/floating-ui-react/hooks/useSyncedFloatingRootContext.js +26 -20
  380. package/floating-ui-react/hooks/useTypeahead.d.ts +2 -2
  381. package/floating-ui-react/hooks/useTypeahead.js +33 -52
  382. package/floating-ui-react/index.d.ts +0 -2
  383. package/floating-ui-react/index.js +0 -14
  384. package/floating-ui-react/types.d.ts +2 -7
  385. package/floating-ui-react/utils/composite.js +2 -0
  386. package/floating-ui-react/utils/enqueueFocus.d.ts +1 -1
  387. package/floating-ui-react/utils/enqueueFocus.js +10 -7
  388. package/floating-ui-react/utils/getEmptyRootContext.js +1 -1
  389. package/form/Form.js +2 -2
  390. package/index.js +1 -1
  391. package/internals/composite/composite.d.ts +0 -1
  392. package/internals/composite/composite.js +2 -3
  393. package/internals/composite/root/useCompositeRoot.js +1 -1
  394. package/internals/createBaseUIEventDetails.d.ts +2 -0
  395. package/internals/csp-context/index.d.ts +2 -0
  396. package/internals/csp-context/index.js +18 -0
  397. package/internals/field-register-control/index.d.ts +0 -1
  398. package/internals/field-register-control/useFieldControlRegistration.d.ts +2 -1
  399. package/internals/field-register-control/useFieldControlRegistration.js +11 -14
  400. package/internals/field-register-control/useRegisterFieldControl.d.ts +1 -4
  401. package/internals/field-register-control/useRegisterFieldControl.js +6 -11
  402. package/internals/field-root-context/FieldRootContext.d.ts +1 -0
  403. package/internals/field-root-context/FieldRootContext.js +4 -3
  404. package/internals/form-context/FormContext.d.ts +5 -1
  405. package/internals/reason-parts.d.ts +2 -0
  406. package/internals/reason-parts.js +3 -1
  407. package/internals/types.d.ts +1 -0
  408. package/internals/use-button/useButton.js +4 -4
  409. package/internals/usePressAndHold.js +2 -2
  410. package/internals/useRenderElement.js +2 -0
  411. package/menu/arrow/MenuArrow.js +1 -1
  412. package/menu/backdrop/MenuBackdrop.js +1 -1
  413. package/menu/checkbox-item/MenuCheckboxItem.js +5 -7
  414. package/menu/group/MenuGroup.js +1 -4
  415. package/menu/group/MenuGroupContext.d.ts +1 -3
  416. package/menu/group/MenuGroupContext.js +1 -1
  417. package/menu/group-label/MenuGroupLabel.js +4 -6
  418. package/menu/link-item/MenuLinkItem.js +2 -2
  419. package/menu/popup/MenuPopup.js +5 -5
  420. package/menu/radio-group/MenuRadioGroup.js +11 -5
  421. package/menu/radio-item/MenuRadioItem.js +5 -7
  422. package/menu/root/MenuRoot.js +60 -65
  423. package/menu/store/MenuHandle.js +1 -1
  424. package/menu/store/MenuStore.d.ts +87 -0
  425. package/menu/submenu-trigger/MenuSubmenuTrigger.js +7 -4
  426. package/menu/trigger/MenuTrigger.js +12 -9
  427. package/menu/viewport/MenuViewport.d.ts +2 -2
  428. package/menu/viewport/MenuViewport.js +2 -2
  429. package/navigation-menu/arrow/NavigationMenuArrow.js +1 -1
  430. package/navigation-menu/backdrop/NavigationMenuBackdrop.js +1 -1
  431. package/navigation-menu/content/NavigationMenuContent.js +8 -5
  432. package/navigation-menu/icon/NavigationMenuIcon.js +1 -1
  433. package/navigation-menu/item/NavigationMenuItem.js +2 -2
  434. package/navigation-menu/list/NavigationMenuList.js +1 -1
  435. package/navigation-menu/popup/NavigationMenuPopup.js +2 -2
  436. package/navigation-menu/root/NavigationMenuRoot.js +1 -3
  437. package/navigation-menu/trigger/NavigationMenuTrigger.js +23 -16
  438. package/navigation-menu/utils/isOutsideMenuEvent.d.ts +0 -1
  439. package/navigation-menu/utils/isOutsideMenuEvent.js +1 -5
  440. package/navigation-menu/viewport/NavigationMenuViewport.js +2 -3
  441. package/number-field/input/NumberFieldInput.js +3 -5
  442. package/number-field/root/NumberFieldRoot.js +5 -2
  443. package/number-field/scrub-area/NumberFieldScrubArea.js +7 -3
  444. package/otp-field/input/OTPFieldInput.js +42 -28
  445. package/otp-field/root/OTPFieldRoot.d.ts +17 -8
  446. package/otp-field/root/OTPFieldRoot.js +32 -32
  447. package/otp-field/root/OTPFieldRootContext.d.ts +1 -1
  448. package/otp-field/utils/otp.d.ts +5 -4
  449. package/otp-field/utils/otp.js +24 -12
  450. package/package.json +331 -317
  451. package/popover/arrow/PopoverArrow.js +1 -1
  452. package/popover/backdrop/PopoverBackdrop.js +1 -1
  453. package/popover/close/PopoverClose.js +2 -2
  454. package/popover/description/PopoverDescription.js +1 -7
  455. package/popover/popup/PopoverPopup.d.ts +1 -1
  456. package/popover/popup/PopoverPopup.js +16 -10
  457. package/popover/popup/PopoverPopupDataAttributes.d.ts +1 -1
  458. package/popover/popup/PopoverPopupDataAttributes.js +1 -1
  459. package/popover/positioner/PopoverPositioner.js +5 -5
  460. package/popover/root/PopoverRoot.d.ts +1 -1
  461. package/popover/root/PopoverRoot.js +39 -44
  462. package/popover/store/PopoverHandle.js +1 -1
  463. package/popover/store/PopoverStore.d.ts +91 -4
  464. package/popover/store/PopoverStore.js +16 -19
  465. package/popover/title/PopoverTitle.js +1 -7
  466. package/popover/trigger/PopoverTrigger.js +23 -16
  467. package/popover/viewport/PopoverViewport.d.ts +3 -3
  468. package/popover/viewport/PopoverViewport.js +2 -2
  469. package/popover/viewport/PopoverViewportDataAttributes.d.ts +1 -1
  470. package/popover/viewport/PopoverViewportDataAttributes.js +1 -1
  471. package/preview-card/positioner/PreviewCardPositioner.js +11 -1
  472. package/preview-card/root/PreviewCardRoot.d.ts +1 -1
  473. package/preview-card/root/PreviewCardRoot.js +30 -20
  474. package/preview-card/store/PreviewCardHandle.js +1 -1
  475. package/preview-card/store/PreviewCardStore.d.ts +90 -2
  476. package/preview-card/store/PreviewCardStore.js +18 -30
  477. package/preview-card/trigger/PreviewCardTrigger.js +5 -2
  478. package/preview-card/viewport/PreviewCardViewport.d.ts +2 -2
  479. package/preview-card/viewport/PreviewCardViewport.js +2 -2
  480. package/preview-card/viewport/PreviewCardViewportDataAttributes.d.ts +2 -2
  481. package/preview-card/viewport/PreviewCardViewportDataAttributes.js +2 -2
  482. package/progress/indicator/ProgressIndicator.js +6 -11
  483. package/progress/root/ProgressRoot.d.ts +1 -1
  484. package/radio/root/RadioRoot.js +7 -3
  485. package/radio-group/RadioGroup.js +4 -11
  486. package/radio-group/RadioGroupContext.d.ts +0 -1
  487. package/scroll-area/content/ScrollAreaContent.js +4 -4
  488. package/scroll-area/root/ScrollAreaRoot.js +1 -1
  489. package/scroll-area/scrollbar/ScrollAreaScrollbar.js +16 -20
  490. package/scroll-area/viewport/ScrollAreaViewport.js +6 -10
  491. package/select/arrow/SelectArrow.js +1 -1
  492. package/select/backdrop/SelectBackdrop.js +1 -1
  493. package/select/group/SelectGroup.js +1 -1
  494. package/select/group-label/SelectGroupLabel.js +2 -2
  495. package/select/icon/SelectIcon.js +1 -1
  496. package/select/item/SelectItem.js +46 -32
  497. package/select/item/SelectItemContext.d.ts +1 -1
  498. package/select/item-indicator/SelectItemIndicator.js +1 -2
  499. package/select/item-text/SelectItemText.js +9 -6
  500. package/select/list/SelectList.js +1 -1
  501. package/select/popup/SelectPopup.js +8 -3
  502. package/select/positioner/SelectPositioner.js +3 -0
  503. package/select/root/SelectRoot.js +45 -39
  504. package/select/root/SelectRootContext.d.ts +4 -5
  505. package/select/store.d.ts +3 -0
  506. package/select/store.js +1 -0
  507. package/select/trigger/SelectTrigger.d.ts +5 -0
  508. package/select/trigger/SelectTrigger.js +19 -33
  509. package/select/trigger/SelectTriggerDataAttributes.d.ts +5 -0
  510. package/select/trigger/SelectTriggerDataAttributes.js +5 -0
  511. package/slider/control/SliderControl.js +9 -11
  512. package/slider/root/SliderRoot.js +1 -4
  513. package/slider/thumb/SliderThumb.js +32 -30
  514. package/slider/value/SliderValue.js +7 -15
  515. package/switch/root/SwitchRoot.js +10 -10
  516. package/switch/thumb/SwitchThumb.js +1 -9
  517. package/tabs/indicator/TabsIndicator.js +14 -19
  518. package/tabs/list/TabsList.js +4 -10
  519. package/tabs/list/TabsListContext.d.ts +2 -1
  520. package/tabs/panel/TabsPanel.js +1 -1
  521. package/tabs/root/TabsRoot.d.ts +16 -1
  522. package/tabs/root/TabsRoot.js +71 -24
  523. package/tabs/root/TabsRootContext.d.ts +0 -2
  524. package/toast/provider/ToastProvider.js +1 -1
  525. package/toast/root/ToastRoot.d.ts +1 -1
  526. package/toast/root/ToastRoot.js +110 -133
  527. package/toast/root/ToastRootDataAttributes.d.ts +1 -1
  528. package/toast/root/ToastRootDataAttributes.js +1 -1
  529. package/toast/store.d.ts +9 -1
  530. package/toast/store.js +18 -12
  531. package/toast/useToastManager.d.ts +1 -1
  532. package/toast/viewport/ToastViewport.js +1 -1
  533. package/toggle/Toggle.js +5 -9
  534. package/toggle-group/ToggleGroup.d.ts +2 -2
  535. package/toggle-group/ToggleGroup.js +6 -13
  536. package/toolbar/link/ToolbarLink.d.ts +1 -1
  537. package/toolbar/link/ToolbarLink.js +1 -2
  538. package/tooltip/arrow/TooltipArrow.js +3 -3
  539. package/tooltip/popup/TooltipPopup.js +5 -4
  540. package/tooltip/root/TooltipRoot.js +32 -23
  541. package/tooltip/store/TooltipHandle.js +1 -1
  542. package/tooltip/store/TooltipStore.d.ts +90 -2
  543. package/tooltip/store/TooltipStore.js +17 -30
  544. package/tooltip/trigger/TooltipTrigger.js +152 -20
  545. package/tooltip/viewport/TooltipViewport.d.ts +2 -2
  546. package/tooltip/viewport/TooltipViewport.js +2 -2
  547. package/tooltip/viewport/TooltipViewportDataAttributes.d.ts +1 -1
  548. package/tooltip/viewport/TooltipViewportDataAttributes.js +1 -1
  549. package/unstable-use-media-query/index.js +1 -1
  550. package/utils/popups/index.d.ts +1 -0
  551. package/utils/popups/index.js +11 -0
  552. package/utils/popups/inlineRect.d.ts +15 -0
  553. package/utils/popups/inlineRect.js +198 -0
  554. package/utils/popups/popupStoreUtils.d.ts +28 -10
  555. package/utils/popups/popupStoreUtils.js +110 -20
  556. package/utils/popups/popupTriggerMap.js +2 -0
  557. package/utils/popups/store.d.ts +15 -2
  558. package/utils/popups/store.js +39 -2
  559. package/utils/popups/useTriggerFocusGuards.js +4 -5
  560. package/utils/useAnchorPositioning.d.ts +5 -0
  561. package/utils/useAnchorPositioning.js +12 -9
  562. package/utils/useOpenInteractionType.d.ts +4 -0
  563. package/utils/useOpenInteractionType.js +24 -17
  564. package/checkbox-group/index.parts.d.ts +0 -1
  565. package/checkbox-group/index.parts.js +0 -12
  566. package/esm/checkbox-group/index.parts.d.ts +0 -1
  567. package/esm/checkbox-group/index.parts.js +0 -1
  568. package/esm/floating-ui-react/hooks/useInteractions.d.ts +0 -20
  569. package/esm/floating-ui-react/hooks/useInteractions.js +0 -88
  570. package/esm/floating-ui-react/hooks/useRole.d.ts +0 -17
  571. package/esm/floating-ui-react/hooks/useRole.js +0 -113
  572. package/floating-ui-react/hooks/useInteractions.d.ts +0 -20
  573. package/floating-ui-react/hooks/useInteractions.js +0 -95
  574. package/floating-ui-react/hooks/useRole.d.ts +0 -17
  575. package/floating-ui-react/hooks/useRole.js +0 -120
  576. /package/{csp-provider → esm/internals/csp-context}/CSPContext.d.ts +0 -0
  577. /package/esm/{csp-provider → internals/csp-context}/CSPContext.js +0 -0
  578. /package/{esm/csp-provider → internals/csp-context}/CSPContext.d.ts +0 -0
  579. /package/{csp-provider → internals/csp-context}/CSPContext.js +0 -0
package/toggle/Toggle.js CHANGED
@@ -7,7 +7,6 @@ Object.defineProperty(exports, "__esModule", {
7
7
  });
8
8
  exports.Toggle = void 0;
9
9
  var React = _interopRequireWildcard(require("react"));
10
- var _useStableCallback = require("@base-ui/utils/useStableCallback");
11
10
  var _useControlled = require("@base-ui/utils/useControlled");
12
11
  var _useIsoLayoutEffect = require("@base-ui/utils/useIsoLayoutEffect");
13
12
  var _error = require("@base-ui/utils/error");
@@ -32,7 +31,7 @@ const Toggle = exports.Toggle = /*#__PURE__*/React.forwardRef(function Toggle(co
32
31
  disabled: disabledProp = false,
33
32
  form,
34
33
  // never participates in form validation
35
- onPressedChange: onPressedChangeProp,
34
+ onPressedChange,
36
35
  pressed: pressedProp,
37
36
  render,
38
37
  type,
@@ -63,12 +62,6 @@ const Toggle = exports.Toggle = /*#__PURE__*/React.forwardRef(function Toggle(co
63
62
  name: 'Toggle',
64
63
  state: 'pressed'
65
64
  });
66
- const onPressedChange = (0, _useStableCallback.useStableCallback)((nextPressed, eventDetails) => {
67
- if (value) {
68
- groupContext?.setGroupValue?.(value, nextPressed, eventDetails);
69
- }
70
- onPressedChangeProp?.(nextPressed, eventDetails);
71
- });
72
65
  const {
73
66
  getButtonProps,
74
67
  buttonRef
@@ -86,7 +79,10 @@ const Toggle = exports.Toggle = /*#__PURE__*/React.forwardRef(function Toggle(co
86
79
  onClick(event) {
87
80
  const nextPressed = !pressed;
88
81
  const details = (0, _createBaseUIEventDetails.createChangeEventDetails)(_reasons.REASONS.none, event.nativeEvent);
89
- onPressedChange(nextPressed, details);
82
+ if (value) {
83
+ groupContext?.setGroupValue?.(value, nextPressed, details);
84
+ }
85
+ onPressedChange?.(nextPressed, details);
90
86
  if (details.isCanceled) {
91
87
  return;
92
88
  }
@@ -29,13 +29,13 @@ export interface ToggleGroupState {
29
29
  }
30
30
  export interface ToggleGroupProps<Value extends string> extends BaseUIComponentProps<'div', ToggleGroupState> {
31
31
  /**
32
- * The open state of the toggle group represented by an array of
32
+ * The pressed state of the toggle group represented by an array of
33
33
  * the values of all pressed toggle buttons.
34
34
  * This is the controlled counterpart of `defaultValue`.
35
35
  */
36
36
  value?: readonly Value[] | undefined;
37
37
  /**
38
- * The open state of the toggle group represented by an array of
38
+ * The pressed state of the toggle group represented by an array of
39
39
  * the values of all pressed toggle buttons.
40
40
  * This is the uncontrolled counterpart of `value`.
41
41
  */
@@ -9,6 +9,7 @@ exports.ToggleGroup = void 0;
9
9
  var React = _interopRequireWildcard(require("react"));
10
10
  var _useStableCallback = require("@base-ui/utils/useStableCallback");
11
11
  var _useControlled = require("@base-ui/utils/useControlled");
12
+ var _empty = require("@base-ui/utils/empty");
12
13
  var _useRenderElement = require("../internals/useRenderElement");
13
14
  var _CompositeRoot = require("../internals/composite/root/CompositeRoot");
14
15
  var _ToolbarRootContext = require("../toolbar/root/ToolbarRootContext");
@@ -46,17 +47,11 @@ const ToggleGroup = exports.ToggleGroup = /*#__PURE__*/React.forwardRef(function
46
47
  ...elementProps
47
48
  } = componentProps;
48
49
  const toolbarContext = (0, _ToolbarRootContext.useToolbarRootContext)(true);
49
- const defaultValue = React.useMemo(() => {
50
- if (valueProp === undefined) {
51
- return defaultValueProp ?? [];
52
- }
53
- return undefined;
54
- }, [valueProp, defaultValueProp]);
55
50
  const isValueInitialized = React.useMemo(() => valueProp !== undefined || defaultValueProp !== undefined, [valueProp, defaultValueProp]);
56
51
  const disabled = (toolbarContext?.disabled ?? false) || disabledProp;
57
52
  const [groupValue, setValueState] = (0, _useControlled.useControlled)({
58
53
  controlled: valueProp,
59
- default: defaultValue,
54
+ default: valueProp === undefined ? defaultValueProp ?? _empty.EMPTY_ARRAY : undefined,
60
55
  name: 'ToggleGroup',
61
56
  state: 'value'
62
57
  });
@@ -72,13 +67,11 @@ const ToggleGroup = exports.ToggleGroup = /*#__PURE__*/React.forwardRef(function
72
67
  } else {
73
68
  newGroupValue = nextPressed ? [newValue] : [];
74
69
  }
75
- if (Array.isArray(newGroupValue)) {
76
- onValueChange?.(newGroupValue, eventDetails);
77
- if (eventDetails.isCanceled) {
78
- return;
79
- }
80
- setValueState(newGroupValue);
70
+ onValueChange?.(newGroupValue, eventDetails);
71
+ if (eventDetails.isCanceled) {
72
+ return;
81
73
  }
74
+ setValueState(newGroupValue);
82
75
  });
83
76
  const state = {
84
77
  disabled,
@@ -1,5 +1,5 @@
1
1
  import * as React from 'react';
2
- import { BaseUIComponentProps } from "../../internals/types.js";
2
+ import type { BaseUIComponentProps } from "../../internals/types.js";
3
3
  import type { ToolbarRoot } from "../root/ToolbarRoot.js";
4
4
  /**
5
5
  * A link component.
@@ -11,8 +11,7 @@ var _ToolbarRootContext = require("../root/ToolbarRootContext");
11
11
  var _CompositeItem = require("../../internals/composite/item/CompositeItem");
12
12
  var _jsxRuntime = require("react/jsx-runtime");
13
13
  const TOOLBAR_LINK_METADATA = {
14
- // links cannot be disabled, this metadata is only used for deriving `disabledIndices``
15
- // TODO: better name
14
+ // Links cannot be disabled, but they still occupy a focusable composite item slot.
16
15
  focusableWhenDisabled: true
17
16
  };
18
17
 
@@ -19,14 +19,12 @@ var _TooltipRootContext = require("../root/TooltipRootContext");
19
19
  */
20
20
  const TooltipArrow = exports.TooltipArrow = /*#__PURE__*/React.forwardRef(function TooltipArrow(componentProps, forwardedRef) {
21
21
  const {
22
- className,
23
22
  render,
23
+ className,
24
24
  style,
25
25
  ...elementProps
26
26
  } = componentProps;
27
27
  const store = (0, _TooltipRootContext.useTooltipRootContext)();
28
- const open = store.useState('open');
29
- const instantType = store.useState('instantType');
30
28
  const {
31
29
  arrowRef,
32
30
  side,
@@ -34,6 +32,8 @@ const TooltipArrow = exports.TooltipArrow = /*#__PURE__*/React.forwardRef(functi
34
32
  arrowUncentered,
35
33
  arrowStyles
36
34
  } = (0, _TooltipPositionerContext.useTooltipPositionerContext)();
35
+ const open = store.useState('open');
36
+ const instantType = store.useState('instantType');
37
37
  const state = {
38
38
  open,
39
39
  side,
@@ -28,8 +28,8 @@ const stateAttributesMapping = {
28
28
  */
29
29
  const TooltipPopup = exports.TooltipPopup = /*#__PURE__*/React.forwardRef(function TooltipPopup(componentProps, forwardedRef) {
30
30
  const {
31
- className,
32
31
  render,
32
+ className,
33
33
  style,
34
34
  ...elementProps
35
35
  } = componentProps;
@@ -43,6 +43,8 @@ const TooltipPopup = exports.TooltipPopup = /*#__PURE__*/React.forwardRef(functi
43
43
  const transitionStatus = store.useState('transitionStatus');
44
44
  const popupProps = store.useState('popupProps');
45
45
  const floatingContext = store.useState('floatingRootContext');
46
+ const disabled = store.useState('disabled');
47
+ const closeDelay = store.useState('closeDelay');
46
48
  (0, _useOpenChangeComplete.useOpenChangeComplete)({
47
49
  open,
48
50
  ref: store.context.popupRef,
@@ -52,12 +54,11 @@ const TooltipPopup = exports.TooltipPopup = /*#__PURE__*/React.forwardRef(functi
52
54
  }
53
55
  }
54
56
  });
55
- const disabled = store.useState('disabled');
56
- const closeDelay = store.useState('closeDelay');
57
57
  (0, _floatingUiReact.useHoverFloatingInteraction)(floatingContext, {
58
58
  enabled: !disabled,
59
59
  closeDelay
60
60
  });
61
+ const setPopupElement = store.useStateSetter('popupElement');
61
62
  const state = {
62
63
  open,
63
64
  side,
@@ -67,7 +68,7 @@ const TooltipPopup = exports.TooltipPopup = /*#__PURE__*/React.forwardRef(functi
67
68
  };
68
69
  const element = (0, _useRenderElement.useRenderElement)('div', componentProps, {
69
70
  state,
70
- ref: [forwardedRef, store.context.popupRef, store.useStateSetter('popupElement')],
71
+ ref: [forwardedRef, store.context.popupRef, setPopupElement],
71
72
  props: [popupProps, (0, _getDisabledMountTransitionStyles.getDisabledMountTransitionStyles)(transitionStatus), elementProps],
72
73
  stateAttributesMapping
73
74
  });
@@ -14,6 +14,7 @@ var _TooltipRootContext = require("./TooltipRootContext");
14
14
  var _floatingUiReact = require("../../floating-ui-react");
15
15
  var _createBaseUIEventDetails = require("../../internals/createBaseUIEventDetails");
16
16
  var _popups = require("../../utils/popups");
17
+ var _mergeProps = require("../../merge-props");
17
18
  var _TooltipStore = require("../store/TooltipStore");
18
19
  var _reasons = require("../../internals/reasons");
19
20
  var _jsxRuntime = require("react/jsx-runtime");
@@ -61,23 +62,18 @@ const TooltipRoot = exports.TooltipRoot = (0, _fastHooks.fastComponent)(function
61
62
  const openState = store.useState('open');
62
63
  const open = !disabled && openState;
63
64
  const activeTriggerId = store.useState('activeTriggerId');
65
+ const mounted = store.useState('mounted');
64
66
  const payload = store.useState('payload');
65
67
  store.useSyncedValues({
66
68
  trackCursorAxis,
67
69
  disableHoverablePopup
68
70
  });
69
- (0, _useIsoLayoutEffect.useIsoLayoutEffect)(() => {
70
- if (openState && disabled) {
71
- store.setOpen(false, (0, _createBaseUIEventDetails.createChangeEventDetails)(_reasons.REASONS.disabled));
72
- }
73
- }, [openState, disabled, store]);
74
71
  store.useSyncedValue('disabled', disabled);
75
72
  (0, _popups.useImplicitActiveTrigger)(store);
76
73
  const {
77
74
  forceUnmount,
78
75
  transitionStatus
79
76
  } = (0, _popups.useOpenStateTransitions)(open, store);
80
- const floatingRootContext = store.select('floatingRootContext');
81
77
  const isInstantPhase = store.useState('isInstantPhase');
82
78
  const instantType = store.useState('instantType');
83
79
  const lastOpenChangeReason = store.useState('lastOpenChangeReason');
@@ -88,6 +84,11 @@ const TooltipRoot = exports.TooltipRoot = (0, _fastHooks.fastComponent)(function
88
84
  // Otherwise, allow the animation to play. In particular, do not disable animations
89
85
  // during the 'ending' phase unless it's due to a sibling opening.
90
86
  const previousInstantTypeRef = React.useRef(null);
87
+ (0, _useIsoLayoutEffect.useIsoLayoutEffect)(() => {
88
+ if (openState && disabled) {
89
+ store.setOpen(false, (0, _createBaseUIEventDetails.createChangeEventDetails)(_reasons.REASONS.disabled));
90
+ }
91
+ }, [openState, disabled, store]);
91
92
  (0, _useIsoLayoutEffect.useIsoLayoutEffect)(() => {
92
93
  if (transitionStatus === 'ending' && lastOpenChangeReason === _reasons.REASONS.none || transitionStatus !== 'ending' && isInstantPhase) {
93
94
  // Capture the current instant type so we can restore it later
@@ -116,6 +117,25 @@ const TooltipRoot = exports.TooltipRoot = (0, _fastHooks.fastComponent)(function
116
117
  unmount: forceUnmount,
117
118
  close: handleImperativeClose
118
119
  }), [forceUnmount, handleImperativeClose]);
120
+ const shouldRenderInteractions = open || mounted || !disabled && trackCursorAxis !== 'none';
121
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_TooltipRootContext.TooltipRootContext.Provider, {
122
+ value: store,
123
+ children: [shouldRenderInteractions && /*#__PURE__*/(0, _jsxRuntime.jsx)(TooltipInteractions, {
124
+ store: store,
125
+ disabled: disabled,
126
+ trackCursorAxis: trackCursorAxis
127
+ }), typeof children === 'function' ? children({
128
+ payload
129
+ }) : children]
130
+ });
131
+ });
132
+ if (process.env.NODE_ENV !== "production") TooltipRoot.displayName = "TooltipRoot";
133
+ function TooltipInteractions({
134
+ store,
135
+ disabled,
136
+ trackCursorAxis
137
+ }) {
138
+ const floatingRootContext = store.useState('floatingRootContext');
119
139
  const dismiss = (0, _floatingUiReact.useDismiss)(floatingRootContext, {
120
140
  enabled: !disabled,
121
141
  referencePress: () => store.select('closeOnClick')
@@ -124,24 +144,13 @@ const TooltipRoot = exports.TooltipRoot = (0, _fastHooks.fastComponent)(function
124
144
  enabled: !disabled && trackCursorAxis !== 'none',
125
145
  axis: trackCursorAxis === 'none' ? undefined : trackCursorAxis
126
146
  });
127
- const {
128
- getReferenceProps,
129
- getFloatingProps,
130
- getTriggerProps
131
- } = (0, _floatingUiReact.useInteractions)([dismiss, clientPoint]);
132
- const activeTriggerProps = React.useMemo(() => getReferenceProps(), [getReferenceProps]);
133
- const inactiveTriggerProps = React.useMemo(() => getTriggerProps(), [getTriggerProps]);
134
- const popupProps = React.useMemo(() => getFloatingProps(), [getFloatingProps]);
135
- store.useSyncedValues({
147
+ const activeTriggerProps = React.useMemo(() => (0, _mergeProps.mergeProps)(clientPoint.reference, dismiss.reference), [clientPoint.reference, dismiss.reference]);
148
+ const inactiveTriggerProps = React.useMemo(() => (0, _mergeProps.mergeProps)(clientPoint.trigger, dismiss.trigger), [clientPoint.trigger, dismiss.trigger]);
149
+ const popupProps = React.useMemo(() => (0, _mergeProps.mergeProps)(_popups.FOCUSABLE_POPUP_PROPS, clientPoint.floating, dismiss.floating), [clientPoint.floating, dismiss.floating]);
150
+ (0, _popups.usePopupInteractionProps)(store, {
136
151
  activeTriggerProps,
137
152
  inactiveTriggerProps,
138
153
  popupProps
139
154
  });
140
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(_TooltipRootContext.TooltipRootContext.Provider, {
141
- value: store,
142
- children: typeof children === 'function' ? children({
143
- payload
144
- }) : children
145
- });
146
- });
147
- if (process.env.NODE_ENV !== "production") TooltipRoot.displayName = "TooltipRoot";
155
+ return null;
156
+ }
@@ -50,7 +50,7 @@ class TooltipHandle {
50
50
  * Indicates whether the tooltip is currently open.
51
51
  */
52
52
  get isOpen() {
53
- return this.store.state.open;
53
+ return this.store.select('open');
54
54
  }
55
55
  }
56
56
 
@@ -18,7 +18,7 @@ export type Context = PopupStoreContext<TooltipRoot.ChangeEventDetails> & {
18
18
  };
19
19
  declare const selectors: {
20
20
  disabled: (state: State<unknown>) => boolean;
21
- instantType: (state: State<unknown>) => "focus" | "delay" | "dismiss" | undefined;
21
+ instantType: (state: State<unknown>) => "delay" | "focus" | "dismiss" | undefined;
22
22
  isInstantPhase: (state: State<unknown>) => boolean;
23
23
  trackCursorAxis: (state: State<unknown>) => "none" | "both" | "x" | "y";
24
24
  disableHoverablePopup: (state: State<unknown>) => boolean;
@@ -32,6 +32,8 @@ declare const selectors: {
32
32
  mounted: boolean;
33
33
  transitionStatus: import("../../internals/useTransitionStatus.js").TransitionStatus;
34
34
  floatingRootContext: import("../../floating-ui-react/index.js").FloatingRootContext;
35
+ floatingId: string | undefined;
36
+ triggerCount: number;
35
37
  preventUnmountingOnClose: boolean;
36
38
  payload: unknown;
37
39
  activeTriggerId: string | null;
@@ -49,6 +51,8 @@ declare const selectors: {
49
51
  mounted: boolean;
50
52
  transitionStatus: import("../../internals/useTransitionStatus.js").TransitionStatus;
51
53
  floatingRootContext: import("../../floating-ui-react/index.js").FloatingRootContext;
54
+ floatingId: string | undefined;
55
+ triggerCount: number;
52
56
  preventUnmountingOnClose: boolean;
53
57
  payload: unknown;
54
58
  activeTriggerId: string | null;
@@ -66,6 +70,8 @@ declare const selectors: {
66
70
  mounted: boolean;
67
71
  transitionStatus: import("../../internals/useTransitionStatus.js").TransitionStatus;
68
72
  floatingRootContext: import("../../floating-ui-react/index.js").FloatingRootContext;
73
+ floatingId: string | undefined;
74
+ triggerCount: number;
69
75
  preventUnmountingOnClose: boolean;
70
76
  payload: unknown;
71
77
  activeTriggerId: string | null;
@@ -83,6 +89,8 @@ declare const selectors: {
83
89
  mounted: boolean;
84
90
  transitionStatus: import("../../internals/useTransitionStatus.js").TransitionStatus;
85
91
  floatingRootContext: import("../../floating-ui-react/index.js").FloatingRootContext;
92
+ floatingId: string | undefined;
93
+ triggerCount: number;
86
94
  preventUnmountingOnClose: boolean;
87
95
  payload: unknown;
88
96
  activeTriggerId: string | null;
@@ -94,12 +102,33 @@ declare const selectors: {
94
102
  inactiveTriggerProps: import("../../index.js").HTMLProps;
95
103
  popupProps: import("../../index.js").HTMLProps;
96
104
  }) => import("../../floating-ui-react/components/FloatingRootStore.js").FloatingRootStore;
105
+ triggerCount: (state: {
106
+ open: boolean;
107
+ readonly openProp: boolean | undefined;
108
+ mounted: boolean;
109
+ transitionStatus: import("../../internals/useTransitionStatus.js").TransitionStatus;
110
+ floatingRootContext: import("../../floating-ui-react/index.js").FloatingRootContext;
111
+ floatingId: string | undefined;
112
+ triggerCount: number;
113
+ preventUnmountingOnClose: boolean;
114
+ payload: unknown;
115
+ activeTriggerId: string | null;
116
+ activeTriggerElement: Element | null;
117
+ readonly triggerIdProp: string | null | undefined;
118
+ popupElement: HTMLElement | null;
119
+ positionerElement: HTMLElement | null;
120
+ activeTriggerProps: import("../../index.js").HTMLProps;
121
+ inactiveTriggerProps: import("../../index.js").HTMLProps;
122
+ popupProps: import("../../index.js").HTMLProps;
123
+ }) => number;
97
124
  preventUnmountingOnClose: (state: {
98
125
  open: boolean;
99
126
  readonly openProp: boolean | undefined;
100
127
  mounted: boolean;
101
128
  transitionStatus: import("../../internals/useTransitionStatus.js").TransitionStatus;
102
129
  floatingRootContext: import("../../floating-ui-react/index.js").FloatingRootContext;
130
+ floatingId: string | undefined;
131
+ triggerCount: number;
103
132
  preventUnmountingOnClose: boolean;
104
133
  payload: unknown;
105
134
  activeTriggerId: string | null;
@@ -117,6 +146,8 @@ declare const selectors: {
117
146
  mounted: boolean;
118
147
  transitionStatus: import("../../internals/useTransitionStatus.js").TransitionStatus;
119
148
  floatingRootContext: import("../../floating-ui-react/index.js").FloatingRootContext;
149
+ floatingId: string | undefined;
150
+ triggerCount: number;
120
151
  preventUnmountingOnClose: boolean;
121
152
  payload: unknown;
122
153
  activeTriggerId: string | null;
@@ -134,6 +165,8 @@ declare const selectors: {
134
165
  mounted: boolean;
135
166
  transitionStatus: import("../../internals/useTransitionStatus.js").TransitionStatus;
136
167
  floatingRootContext: import("../../floating-ui-react/index.js").FloatingRootContext;
168
+ floatingId: string | undefined;
169
+ triggerCount: number;
137
170
  preventUnmountingOnClose: boolean;
138
171
  payload: unknown;
139
172
  activeTriggerId: string | null;
@@ -151,6 +184,8 @@ declare const selectors: {
151
184
  mounted: boolean;
152
185
  transitionStatus: import("../../internals/useTransitionStatus.js").TransitionStatus;
153
186
  floatingRootContext: import("../../floating-ui-react/index.js").FloatingRootContext;
187
+ floatingId: string | undefined;
188
+ triggerCount: number;
154
189
  preventUnmountingOnClose: boolean;
155
190
  payload: unknown;
156
191
  activeTriggerId: string | null;
@@ -162,12 +197,33 @@ declare const selectors: {
162
197
  inactiveTriggerProps: import("../../index.js").HTMLProps;
163
198
  popupProps: import("../../index.js").HTMLProps;
164
199
  }) => Element | null;
200
+ popupId: (state: {
201
+ open: boolean;
202
+ readonly openProp: boolean | undefined;
203
+ mounted: boolean;
204
+ transitionStatus: import("../../internals/useTransitionStatus.js").TransitionStatus;
205
+ floatingRootContext: import("../../floating-ui-react/index.js").FloatingRootContext;
206
+ floatingId: string | undefined;
207
+ triggerCount: number;
208
+ preventUnmountingOnClose: boolean;
209
+ payload: unknown;
210
+ activeTriggerId: string | null;
211
+ activeTriggerElement: Element | null;
212
+ readonly triggerIdProp: string | null | undefined;
213
+ popupElement: HTMLElement | null;
214
+ positionerElement: HTMLElement | null;
215
+ activeTriggerProps: import("../../index.js").HTMLProps;
216
+ inactiveTriggerProps: import("../../index.js").HTMLProps;
217
+ popupProps: import("../../index.js").HTMLProps;
218
+ }) => string | undefined;
165
219
  isTriggerActive: (state: {
166
220
  open: boolean;
167
221
  readonly openProp: boolean | undefined;
168
222
  mounted: boolean;
169
223
  transitionStatus: import("../../internals/useTransitionStatus.js").TransitionStatus;
170
224
  floatingRootContext: import("../../floating-ui-react/index.js").FloatingRootContext;
225
+ floatingId: string | undefined;
226
+ triggerCount: number;
171
227
  preventUnmountingOnClose: boolean;
172
228
  payload: unknown;
173
229
  activeTriggerId: string | null;
@@ -185,6 +241,8 @@ declare const selectors: {
185
241
  mounted: boolean;
186
242
  transitionStatus: import("../../internals/useTransitionStatus.js").TransitionStatus;
187
243
  floatingRootContext: import("../../floating-ui-react/index.js").FloatingRootContext;
244
+ floatingId: string | undefined;
245
+ triggerCount: number;
188
246
  preventUnmountingOnClose: boolean;
189
247
  payload: unknown;
190
248
  activeTriggerId: string | null;
@@ -202,6 +260,8 @@ declare const selectors: {
202
260
  mounted: boolean;
203
261
  transitionStatus: import("../../internals/useTransitionStatus.js").TransitionStatus;
204
262
  floatingRootContext: import("../../floating-ui-react/index.js").FloatingRootContext;
263
+ floatingId: string | undefined;
264
+ triggerCount: number;
205
265
  preventUnmountingOnClose: boolean;
206
266
  payload: unknown;
207
267
  activeTriggerId: string | null;
@@ -219,6 +279,8 @@ declare const selectors: {
219
279
  mounted: boolean;
220
280
  transitionStatus: import("../../internals/useTransitionStatus.js").TransitionStatus;
221
281
  floatingRootContext: import("../../floating-ui-react/index.js").FloatingRootContext;
282
+ floatingId: string | undefined;
283
+ triggerCount: number;
222
284
  preventUnmountingOnClose: boolean;
223
285
  payload: unknown;
224
286
  activeTriggerId: string | null;
@@ -230,12 +292,33 @@ declare const selectors: {
230
292
  inactiveTriggerProps: import("../../index.js").HTMLProps;
231
293
  popupProps: import("../../index.js").HTMLProps;
232
294
  }, isActive: boolean) => import("../../index.js").HTMLProps;
295
+ triggerPopupId: (state: {
296
+ open: boolean;
297
+ readonly openProp: boolean | undefined;
298
+ mounted: boolean;
299
+ transitionStatus: import("../../internals/useTransitionStatus.js").TransitionStatus;
300
+ floatingRootContext: import("../../floating-ui-react/index.js").FloatingRootContext;
301
+ floatingId: string | undefined;
302
+ triggerCount: number;
303
+ preventUnmountingOnClose: boolean;
304
+ payload: unknown;
305
+ activeTriggerId: string | null;
306
+ activeTriggerElement: Element | null;
307
+ readonly triggerIdProp: string | null | undefined;
308
+ popupElement: HTMLElement | null;
309
+ positionerElement: HTMLElement | null;
310
+ activeTriggerProps: import("../../index.js").HTMLProps;
311
+ inactiveTriggerProps: import("../../index.js").HTMLProps;
312
+ popupProps: import("../../index.js").HTMLProps;
313
+ }, triggerId: string | undefined) => string | undefined;
233
314
  popupProps: (state: {
234
315
  open: boolean;
235
316
  readonly openProp: boolean | undefined;
236
317
  mounted: boolean;
237
318
  transitionStatus: import("../../internals/useTransitionStatus.js").TransitionStatus;
238
319
  floatingRootContext: import("../../floating-ui-react/index.js").FloatingRootContext;
320
+ floatingId: string | undefined;
321
+ triggerCount: number;
239
322
  preventUnmountingOnClose: boolean;
240
323
  payload: unknown;
241
324
  activeTriggerId: string | null;
@@ -253,6 +336,8 @@ declare const selectors: {
253
336
  mounted: boolean;
254
337
  transitionStatus: import("../../internals/useTransitionStatus.js").TransitionStatus;
255
338
  floatingRootContext: import("../../floating-ui-react/index.js").FloatingRootContext;
339
+ floatingId: string | undefined;
340
+ triggerCount: number;
256
341
  preventUnmountingOnClose: boolean;
257
342
  payload: unknown;
258
343
  activeTriggerId: string | null;
@@ -270,6 +355,8 @@ declare const selectors: {
270
355
  mounted: boolean;
271
356
  transitionStatus: import("../../internals/useTransitionStatus.js").TransitionStatus;
272
357
  floatingRootContext: import("../../floating-ui-react/index.js").FloatingRootContext;
358
+ floatingId: string | undefined;
359
+ triggerCount: number;
273
360
  preventUnmountingOnClose: boolean;
274
361
  payload: unknown;
275
362
  activeTriggerId: string | null;
@@ -283,8 +370,9 @@ declare const selectors: {
283
370
  }) => HTMLElement | null;
284
371
  };
285
372
  export declare class TooltipStore<Payload> extends ReactStore<Readonly<State<Payload>>, Context, typeof selectors> {
286
- constructor(initialState?: Partial<State<Payload>>);
373
+ constructor(initialState?: Partial<State<Payload>>, floatingId?: string | undefined, nested?: boolean);
287
374
  setOpen: (nextOpen: boolean, eventDetails: Omit<TooltipRoot.ChangeEventDetails, "preventUnmountOnClose">) => void;
375
+ cancelPendingOpen(event: MouseEvent | PointerEvent): void;
288
376
  static useStore<Payload>(externalStore: TooltipStore<Payload> | undefined, initialState?: Partial<State<Payload>>): TooltipStore<Payload>;
289
377
  }
290
378
  export {};
@@ -8,8 +8,7 @@ exports.TooltipStore = void 0;
8
8
  var React = _interopRequireWildcard(require("react"));
9
9
  var ReactDOM = _interopRequireWildcard(require("react-dom"));
10
10
  var _store = require("@base-ui/utils/store");
11
- var _useRefWithInit = require("@base-ui/utils/useRefWithInit");
12
- var _floatingUiReact = require("../../floating-ui-react");
11
+ var _createBaseUIEventDetails = require("../../internals/createBaseUIEventDetails");
13
12
  var _reasons = require("../../internals/reasons");
14
13
  var _popups = require("../../utils/popups");
15
14
  const selectors = {
@@ -25,15 +24,18 @@ const selectors = {
25
24
  hasViewport: (0, _store.createSelector)(state => state.hasViewport)
26
25
  };
27
26
  class TooltipStore extends _store.ReactStore {
28
- constructor(initialState) {
29
- super({
27
+ constructor(initialState, floatingId, nested = false) {
28
+ const triggerElements = new _popups.PopupTriggerMap();
29
+ const state = {
30
30
  ...createInitialState(),
31
31
  ...initialState
32
- }, {
32
+ };
33
+ state.floatingRootContext = (0, _popups.createPopupFloatingRootContext)(triggerElements, floatingId, nested);
34
+ super(state, {
33
35
  popupRef: /*#__PURE__*/React.createRef(),
34
36
  onOpenChange: undefined,
35
37
  onOpenChangeComplete: undefined,
36
- triggerElements: new _popups.PopupTriggerMap()
38
+ triggerElements
37
39
  }, selectors);
38
40
  }
39
41
  setOpen = (nextOpen, eventDetails) => {
@@ -61,14 +63,7 @@ class TooltipStore extends _store.ReactStore {
61
63
  } else if (reason === _reasons.REASONS.triggerHover) {
62
64
  updatedState.instantType = undefined;
63
65
  }
64
-
65
- // If a popup is closing, the `trigger` may be null.
66
- // We want to keep the previous value so that exit animations are played and focus is returned correctly.
67
- const newTriggerId = eventDetails.trigger?.id ?? null;
68
- if (newTriggerId || nextOpen) {
69
- updatedState.activeTriggerId = newTriggerId;
70
- updatedState.activeTriggerElement = eventDetails.trigger ?? null;
71
- }
66
+ (0, _popups.setOpenTriggerState)(updatedState, nextOpen, eventDetails.trigger);
72
67
  this.update(updatedState);
73
68
  };
74
69
  if (isHover) {
@@ -79,24 +74,16 @@ class TooltipStore extends _store.ReactStore {
79
74
  changeState();
80
75
  }
81
76
  };
82
- static useStore(externalStore, initialState) {
83
- // eslint-disable-next-line react-hooks/rules-of-hooks
84
- const internalStore = (0, _useRefWithInit.useRefWithInit)(() => {
85
- return new TooltipStore(initialState);
86
- }).current;
87
- const store = externalStore ?? internalStore;
88
77
 
89
- // eslint-disable-next-line react-hooks/rules-of-hooks
90
- const floatingRootContext = (0, _floatingUiReact.useSyncedFloatingRootContext)({
91
- popupStore: store,
92
- onOpenChange: store.setOpen
93
- });
78
+ // Used by trigger clicks to clear a delayed hover open without reporting a public open-state change.
79
+ cancelPendingOpen(event) {
80
+ this.state.floatingRootContext.dispatchOpenChange(false, (0, _createBaseUIEventDetails.createChangeEventDetails)(_reasons.REASONS.triggerPress, event));
81
+ }
82
+ static useStore(externalStore, initialState) {
83
+ /* eslint-disable react-hooks/rules-of-hooks */
84
+ const store = (0, _popups.usePopupStore)(externalStore, (floatingId, nested) => new TooltipStore(initialState, floatingId, nested)).store;
85
+ /* eslint-enable react-hooks/rules-of-hooks */
94
86
 
95
- // It's safe to set this here because when this code runs for the first time,
96
- // nothing has had a chance to subscribe to the `store` yet.
97
- // For subsequent renders, the `floatingRootContext` reference remains the same,
98
- // so it's basically a no-op.
99
- store.state.floatingRootContext = floatingRootContext;
100
87
  return store;
101
88
  }
102
89
  }