@ledgerhq/lumen-ui-react 0.1.14 → 0.1.16

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 (202) hide show
  1. package/ai-rules/RULES.md +1 -1
  2. package/dist/_virtual/index.js +5 -0
  3. package/dist/_virtual/index2.js +4 -0
  4. package/dist/_virtual/use-sync-external-store-shim.development.js +4 -0
  5. package/dist/_virtual/use-sync-external-store-shim.production.js +4 -0
  6. package/dist/_virtual/with-selector.development.js +4 -0
  7. package/dist/_virtual/with-selector.js +5 -0
  8. package/dist/_virtual/with-selector.production.js +4 -0
  9. package/dist/_virtual/with-selector2.js +4 -0
  10. package/dist/i18n/i18n.d.ts.map +1 -1
  11. package/dist/index.d.ts +0 -1
  12. package/dist/index.d.ts.map +1 -1
  13. package/dist/index.js +137 -134
  14. package/dist/lib/Components/AmountInput/AmountInput.d.ts.map +1 -1
  15. package/dist/lib/Components/Avatar/Avatar.js +26 -26
  16. package/dist/lib/Components/BaseInput/BaseInput.d.ts.map +1 -1
  17. package/dist/lib/Components/BaseInput/BaseInput.js +60 -60
  18. package/dist/lib/Components/CardButton/CardButton.js +10 -10
  19. package/dist/lib/Components/Dialog/Dialog.js +39 -39
  20. package/dist/lib/Components/Dialog/types.d.ts +3 -3
  21. package/dist/lib/Components/Icon/Icon.js +5 -5
  22. package/dist/lib/Components/Icon/createIcon.d.ts.map +1 -1
  23. package/dist/lib/Components/Link/Link.d.ts.map +1 -1
  24. package/dist/lib/Components/Link/Link.js +25 -32
  25. package/dist/lib/Components/ListItem/ListItem.d.ts +17 -28
  26. package/dist/lib/Components/ListItem/ListItem.d.ts.map +1 -1
  27. package/dist/lib/Components/ListItem/ListItem.js +81 -93
  28. package/dist/lib/Components/ListItem/types.d.ts +13 -32
  29. package/dist/lib/Components/ListItem/types.d.ts.map +1 -1
  30. package/dist/lib/Components/MediaBanner/MediaBanner.d.ts.map +1 -1
  31. package/dist/lib/Components/MediaBanner/MediaBanner.js +30 -28
  32. package/dist/lib/Components/Menu/Menu.d.ts +4 -4
  33. package/dist/lib/Components/Menu/Menu.d.ts.map +1 -1
  34. package/dist/lib/Components/NavBar/NavBar.d.ts +0 -1
  35. package/dist/lib/Components/NavBar/NavBar.d.ts.map +1 -1
  36. package/dist/lib/Components/Popover/Popover.d.ts +57 -0
  37. package/dist/lib/Components/Popover/Popover.d.ts.map +1 -0
  38. package/dist/lib/Components/Popover/Popover.js +126 -0
  39. package/dist/lib/Components/Popover/index.d.ts +3 -0
  40. package/dist/lib/Components/Popover/index.d.ts.map +1 -0
  41. package/dist/lib/Components/Popover/types.d.ts +129 -0
  42. package/dist/lib/Components/Popover/types.d.ts.map +1 -0
  43. package/dist/lib/Components/SegmentedControl/SegmentedControl.d.ts +1 -1
  44. package/dist/lib/Components/SegmentedControl/SegmentedControl.d.ts.map +1 -1
  45. package/dist/lib/Components/SegmentedControl/SegmentedControl.js +97 -81
  46. package/dist/lib/Components/SegmentedControl/SegmentedControlContext.d.ts +1 -0
  47. package/dist/lib/Components/SegmentedControl/SegmentedControlContext.d.ts.map +1 -1
  48. package/dist/lib/Components/SegmentedControl/types.d.ts +7 -0
  49. package/dist/lib/Components/SegmentedControl/types.d.ts.map +1 -1
  50. package/dist/lib/Components/SegmentedControl/usePillElementLayoutEffect.d.ts +5 -6
  51. package/dist/lib/Components/SegmentedControl/usePillElementLayoutEffect.d.ts.map +1 -1
  52. package/dist/lib/Components/SegmentedControl/usePillElementLayoutEffect.js +30 -25
  53. package/dist/lib/Components/Select/Select.js +9 -9
  54. package/dist/lib/Components/SideBar/SideBar.d.ts +1 -1
  55. package/dist/lib/Components/SideBar/SideBar.d.ts.map +1 -1
  56. package/dist/lib/Components/SideBar/SideBar.js +93 -89
  57. package/dist/lib/Components/SideBar/types.d.ts +7 -1
  58. package/dist/lib/Components/SideBar/types.d.ts.map +1 -1
  59. package/dist/lib/Components/Stepper/Stepper.d.ts +5 -6
  60. package/dist/lib/Components/Stepper/Stepper.d.ts.map +1 -1
  61. package/dist/lib/Components/Stepper/Stepper.js +100 -102
  62. package/dist/lib/Components/Stepper/types.d.ts +2 -2
  63. package/dist/lib/Components/Stepper/types.d.ts.map +1 -1
  64. package/dist/lib/Components/Tag/Tag.d.ts.map +1 -1
  65. package/dist/lib/Components/Tag/Tag.js +6 -6
  66. package/dist/lib/Components/Tooltip/Tooltip.d.ts +2 -2
  67. package/dist/lib/Components/Tooltip/Tooltip.d.ts.map +1 -1
  68. package/dist/lib/Components/Tooltip/Tooltip.js +1 -1
  69. package/dist/lib/Components/TriggerButton/TriggerButton.js +8 -8
  70. package/dist/lib/Components/index.d.ts +1 -0
  71. package/dist/lib/Components/index.d.ts.map +1 -1
  72. package/dist/lib/Symbols/Icons/Csv.js +5 -5
  73. package/dist/lib/Symbols/Icons/TriangleDown.d.ts +29 -0
  74. package/dist/lib/Symbols/Icons/TriangleDown.d.ts.map +1 -0
  75. package/dist/lib/Symbols/Icons/TriangleDown.js +25 -0
  76. package/dist/lib/Symbols/Icons/TriangleUp.d.ts +29 -0
  77. package/dist/lib/Symbols/Icons/TriangleUp.d.ts.map +1 -0
  78. package/dist/lib/Symbols/Icons/TriangleUp.js +25 -0
  79. package/dist/lib/Symbols/index.d.ts +2 -0
  80. package/dist/lib/Symbols/index.d.ts.map +1 -1
  81. package/dist/lib/Symbols/index.js +104 -100
  82. package/dist/node_modules/@base-ui/react/esm/composite/composite.js +10 -0
  83. package/dist/node_modules/@base-ui/react/esm/composite/root/CompositeRootContext.js +14 -0
  84. package/dist/node_modules/@base-ui/react/esm/direction-provider/DirectionContext.js +10 -0
  85. package/dist/node_modules/@base-ui/react/esm/floating-ui-react/components/FloatingFocusManager.js +284 -0
  86. package/dist/node_modules/@base-ui/react/esm/floating-ui-react/components/FloatingPortal.js +128 -0
  87. package/dist/node_modules/@base-ui/react/esm/floating-ui-react/components/FloatingRootStore.js +60 -0
  88. package/dist/node_modules/@base-ui/react/esm/floating-ui-react/components/FloatingTree.js +58 -0
  89. package/dist/node_modules/@base-ui/react/esm/floating-ui-react/components/FloatingTreeStore.js +17 -0
  90. package/dist/node_modules/@base-ui/react/esm/floating-ui-react/hooks/useClick.js +67 -0
  91. package/dist/node_modules/@base-ui/react/esm/floating-ui-react/hooks/useDismiss.js +275 -0
  92. package/dist/node_modules/@base-ui/react/esm/floating-ui-react/hooks/useFloating.js +78 -0
  93. package/dist/node_modules/@base-ui/react/esm/floating-ui-react/hooks/useFloatingRootContext.js +38 -0
  94. package/dist/node_modules/@base-ui/react/esm/floating-ui-react/hooks/useHoverFloatingInteraction.js +87 -0
  95. package/dist/node_modules/@base-ui/react/esm/floating-ui-react/hooks/useHoverInteractionSharedState.js +42 -0
  96. package/dist/node_modules/@base-ui/react/esm/floating-ui-react/hooks/useHoverReferenceInteraction.js +145 -0
  97. package/dist/node_modules/@base-ui/react/esm/floating-ui-react/hooks/useHoverShared.js +19 -0
  98. package/dist/node_modules/@base-ui/react/esm/floating-ui-react/hooks/useInteractions.js +48 -0
  99. package/dist/node_modules/@base-ui/react/esm/floating-ui-react/hooks/useRole.js +76 -0
  100. package/dist/node_modules/@base-ui/react/esm/floating-ui-react/hooks/useSyncedFloatingRootContext.js +35 -0
  101. package/dist/node_modules/@base-ui/react/esm/floating-ui-react/middleware/arrow.js +47 -0
  102. package/dist/node_modules/@base-ui/react/esm/floating-ui-react/safePolygon.js +131 -0
  103. package/dist/node_modules/@base-ui/react/esm/floating-ui-react/utils/composite.js +7 -0
  104. package/dist/node_modules/@base-ui/react/esm/floating-ui-react/utils/constants.js +7 -0
  105. package/dist/node_modules/@base-ui/react/esm/floating-ui-react/utils/createAttribute.js +6 -0
  106. package/dist/node_modules/@base-ui/react/esm/floating-ui-react/utils/createEventEmitter.js +17 -0
  107. package/dist/node_modules/@base-ui/react/esm/floating-ui-react/utils/element.js +69 -0
  108. package/dist/node_modules/@base-ui/react/esm/floating-ui-react/utils/enqueueFocus.js +16 -0
  109. package/dist/node_modules/@base-ui/react/esm/floating-ui-react/utils/event.js +30 -0
  110. package/dist/node_modules/@base-ui/react/esm/floating-ui-react/utils/getEmptyRootContext.js +17 -0
  111. package/dist/node_modules/@base-ui/react/esm/floating-ui-react/utils/markOthers.js +80 -0
  112. package/dist/node_modules/@base-ui/react/esm/floating-ui-react/utils/nodes.js +15 -0
  113. package/dist/node_modules/@base-ui/react/esm/floating-ui-react/utils/tabbable.js +68 -0
  114. package/dist/node_modules/@base-ui/react/esm/merge-props/mergeProps.js +82 -0
  115. package/dist/node_modules/@base-ui/react/esm/popover/backdrop/PopoverBackdrop.js +39 -0
  116. package/dist/node_modules/@base-ui/react/esm/popover/popup/PopoverPopup.js +88 -0
  117. package/dist/node_modules/@base-ui/react/esm/popover/portal/PopoverPortal.js +24 -0
  118. package/dist/node_modules/@base-ui/react/esm/popover/portal/PopoverPortalContext.js +14 -0
  119. package/dist/node_modules/@base-ui/react/esm/popover/positioner/PopoverPositioner.js +110 -0
  120. package/dist/node_modules/@base-ui/react/esm/popover/positioner/PopoverPositionerContext.js +14 -0
  121. package/dist/node_modules/@base-ui/react/esm/popover/root/PopoverRoot.js +117 -0
  122. package/dist/node_modules/@base-ui/react/esm/popover/root/PopoverRootContext.js +14 -0
  123. package/dist/node_modules/@base-ui/react/esm/popover/store/PopoverHandle.js +44 -0
  124. package/dist/node_modules/@base-ui/react/esm/popover/store/PopoverStore.js +94 -0
  125. package/dist/node_modules/@base-ui/react/esm/popover/trigger/PopoverTrigger.js +120 -0
  126. package/dist/node_modules/@base-ui/react/esm/popover/utils/constants.js +4 -0
  127. package/dist/node_modules/@base-ui/react/esm/toolbar/root/ToolbarRootContext.js +10 -0
  128. package/dist/node_modules/@base-ui/react/esm/use-button/useButton.js +113 -0
  129. package/dist/node_modules/@base-ui/react/esm/utils/FocusGuard.js +26 -0
  130. package/dist/node_modules/@base-ui/react/esm/utils/InternalBackdrop.js +41 -0
  131. package/dist/node_modules/@base-ui/react/esm/utils/adaptiveOriginMiddleware.js +63 -0
  132. package/dist/node_modules/@base-ui/react/esm/utils/closePart.js +30 -0
  133. package/dist/node_modules/@base-ui/react/esm/utils/constants.js +19 -0
  134. package/dist/node_modules/@base-ui/react/esm/utils/createBaseUIEventDetails.js +26 -0
  135. package/dist/node_modules/@base-ui/react/esm/utils/getDisabledMountTransitionStyles.js +8 -0
  136. package/dist/node_modules/@base-ui/react/esm/utils/getStateAttributesProps.js +16 -0
  137. package/dist/node_modules/@base-ui/react/esm/utils/hideMiddleware.js +20 -0
  138. package/dist/node_modules/@base-ui/react/esm/utils/popupStateMapping.js +40 -0
  139. package/dist/node_modules/@base-ui/react/esm/utils/popups/popupStoreUtils.js +95 -0
  140. package/dist/node_modules/@base-ui/react/esm/utils/popups/popupTriggerMap.js +64 -0
  141. package/dist/node_modules/@base-ui/react/esm/utils/popups/store.js +52 -0
  142. package/dist/node_modules/@base-ui/react/esm/utils/reason-parts.js +9 -0
  143. package/dist/node_modules/@base-ui/react/esm/utils/resolveClassName.js +6 -0
  144. package/dist/node_modules/@base-ui/react/esm/utils/resolveRef.js +6 -0
  145. package/dist/node_modules/@base-ui/react/esm/utils/resolveStyle.js +6 -0
  146. package/dist/node_modules/@base-ui/react/esm/utils/stateAttributesMapping.js +16 -0
  147. package/dist/node_modules/@base-ui/react/esm/utils/useAnchorPositioning.js +267 -0
  148. package/dist/node_modules/@base-ui/react/esm/utils/useAnimationsFinished.js +57 -0
  149. package/dist/node_modules/@base-ui/react/esm/utils/useBaseUiId.js +7 -0
  150. package/dist/node_modules/@base-ui/react/esm/utils/useFocusableWhenDisabled.js +24 -0
  151. package/dist/node_modules/@base-ui/react/esm/utils/useOpenChangeComplete.js +22 -0
  152. package/dist/node_modules/@base-ui/react/esm/utils/useOpenInteractionType.js +30 -0
  153. package/dist/node_modules/@base-ui/react/esm/utils/useRenderElement.js +71 -0
  154. package/dist/node_modules/@base-ui/react/esm/utils/useTransitionStatus.js +42 -0
  155. package/dist/node_modules/@base-ui/react/esm/utils/useValueChanged.js +14 -0
  156. package/dist/node_modules/@base-ui/utils/esm/detectBrowser.js +43 -0
  157. package/dist/node_modules/@base-ui/utils/esm/empty.js +7 -0
  158. package/dist/node_modules/@base-ui/utils/esm/error.js +11 -0
  159. package/dist/node_modules/@base-ui/utils/esm/formatErrorMessage.js +11 -0
  160. package/dist/node_modules/@base-ui/utils/esm/getReactElementRef.js +11 -0
  161. package/dist/node_modules/@base-ui/utils/esm/inertValue.js +7 -0
  162. package/dist/node_modules/@base-ui/utils/esm/mergeObjects.js +14 -0
  163. package/dist/node_modules/@base-ui/utils/esm/owner.js +6 -0
  164. package/dist/node_modules/@base-ui/utils/esm/reactVersion.js +8 -0
  165. package/dist/node_modules/@base-ui/utils/esm/safeReact.js +7 -0
  166. package/dist/node_modules/@base-ui/utils/esm/store/ReactStore.js +145 -0
  167. package/dist/node_modules/@base-ui/utils/esm/store/Store.js +86 -0
  168. package/dist/node_modules/@base-ui/utils/esm/store/createSelector.js +25 -0
  169. package/dist/node_modules/@base-ui/utils/esm/store/useStore.js +21 -0
  170. package/dist/node_modules/@base-ui/utils/esm/useAnimationFrame.js +68 -0
  171. package/dist/node_modules/@base-ui/utils/esm/useEnhancedClickHandler.js +19 -0
  172. package/dist/node_modules/@base-ui/utils/esm/useId.js +20 -0
  173. package/dist/node_modules/@base-ui/utils/esm/useIsoLayoutEffect.js +6 -0
  174. package/dist/node_modules/@base-ui/utils/esm/useMergedRefs.js +69 -0
  175. package/dist/node_modules/@base-ui/utils/esm/useOnFirstRender.js +8 -0
  176. package/dist/node_modules/@base-ui/utils/esm/useOnMount.js +8 -0
  177. package/dist/node_modules/@base-ui/utils/esm/useRefWithInit.js +9 -0
  178. package/dist/node_modules/@base-ui/utils/esm/useScrollLock.js +122 -0
  179. package/dist/node_modules/@base-ui/utils/esm/useStableCallback.js +32 -0
  180. package/dist/node_modules/@base-ui/utils/esm/useTimeout.js +32 -0
  181. package/dist/node_modules/@base-ui/utils/esm/useValueAsRef.js +19 -0
  182. package/dist/node_modules/@base-ui/utils/esm/visuallyHidden.js +18 -0
  183. package/dist/node_modules/@base-ui/utils/esm/warn.js +11 -0
  184. package/dist/node_modules/@floating-ui/core/dist/floating-ui.core.js +494 -0
  185. package/dist/node_modules/@floating-ui/dom/dist/floating-ui.dom.js +402 -0
  186. package/dist/node_modules/@floating-ui/react-dom/dist/floating-ui.react-dom.js +203 -0
  187. package/dist/node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.js +136 -0
  188. package/dist/node_modules/@floating-ui/utils/dist/floating-ui.utils.js +128 -0
  189. package/dist/node_modules/i18next/dist/esm/i18next.js +45 -47
  190. package/dist/node_modules/reselect/dist/reselect.js +324 -0
  191. package/dist/node_modules/tabbable/dist/index.esm.js +210 -0
  192. package/dist/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.js +58 -0
  193. package/dist/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.js +57 -0
  194. package/dist/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.js +58 -0
  195. package/dist/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.js +46 -0
  196. package/dist/node_modules/use-sync-external-store/shim/index.js +10 -0
  197. package/dist/node_modules/use-sync-external-store/shim/with-selector.js +10 -0
  198. package/dist/package.json +2 -1
  199. package/dist/utils/icon-template.d.ts.map +1 -1
  200. package/package.json +2 -1
  201. package/dist/lib/Patterns/index.d.ts +0 -3
  202. package/dist/lib/Patterns/index.d.ts.map +0 -1
@@ -0,0 +1,275 @@
1
+ import * as a from "react";
2
+ import { isWebKit as Xe, isElement as B, isShadowRoot as We, isLastTraversableNode as Z, getParentNode as Ye, isHTMLElement as Ae, getComputedStyle as _e } from "../../../../../@floating-ui/utils/dist/floating-ui.utils.dom.js";
3
+ import { useTimeout as de, Timeout as pe } from "../../../../utils/esm/useTimeout.js";
4
+ import { useStableCallback as y } from "../../../../utils/esm/useStableCallback.js";
5
+ import { ownerDocument as me } from "../../../../utils/esm/owner.js";
6
+ import { useFloatingTree as He } from "../components/FloatingTree.js";
7
+ import { createChangeEventDetails as N } from "../../utils/createBaseUIEventDetails.js";
8
+ import { createAttribute as Be } from "../utils/createAttribute.js";
9
+ import { isReactEvent as Ne } from "../utils/event.js";
10
+ import { getTarget as S, contains as F, isEventTargetWithin as l, isRootElement as Fe } from "../utils/element.js";
11
+ import { getNodeChildren as z } from "../utils/nodes.js";
12
+ import { escapeKey as qe, triggerPress as Ee, outsidePress as $e } from "../../utils/reason-parts.js";
13
+ const Ve = {
14
+ intentional: "onClick",
15
+ sloppy: "onPointerDown"
16
+ };
17
+ function Ue() {
18
+ return !1;
19
+ }
20
+ function je(f) {
21
+ return {
22
+ escapeKey: typeof f == "boolean" ? f : f?.escapeKey ?? !1,
23
+ outsidePress: typeof f == "boolean" ? f : f?.outsidePress ?? !0
24
+ };
25
+ }
26
+ function it(f, he = {}) {
27
+ const n = "rootStore" in f ? f.rootStore : f, C = n.useState("open"), ee = n.useState("floatingElement"), {
28
+ dataRef: p
29
+ } = n.context, {
30
+ enabled: m = !0,
31
+ escapeKey: X = !0,
32
+ outsidePress: W = !0,
33
+ outsidePressEvent: ye = "sloppy",
34
+ referencePress: ge = Ue,
35
+ referencePressEvent: q = "sloppy",
36
+ bubbles: Pe,
37
+ externalTree: ve
38
+ } = he, g = He(ve), Re = y(typeof W == "function" ? W : () => !1), P = typeof W == "function" ? Re : W, $ = P !== !1, te = y(() => ye), k = a.useRef(!1), Y = a.useRef(!1), T = a.useRef(!1), {
39
+ escapeKey: A,
40
+ outsidePress: ne
41
+ } = je(Pe), i = a.useRef(null), O = de(), re = de(), E = y(() => {
42
+ re.clear(), p.current.insideReactTree = !1;
43
+ }), V = a.useRef(!1), U = a.useRef(""), j = y(ge), v = y((s) => {
44
+ if (!C || !m || !X || s.key !== "Escape" || V.current)
45
+ return;
46
+ const h = p.current.floatingContext?.nodeId, D = g ? z(g.nodesRef.current, h) : [];
47
+ if (!A && D.length > 0) {
48
+ let M = !0;
49
+ if (D.forEach((d) => {
50
+ d.context?.open && !d.context.dataRef.current.__escapeKeyBubbles && (M = !1);
51
+ }), !M)
52
+ return;
53
+ }
54
+ const _ = Ne(s) ? s.nativeEvent : s, I = N(qe, _);
55
+ n.setOpen(!1, I), !A && !I.isPropagationAllowed && s.stopPropagation();
56
+ }), R = y(() => {
57
+ p.current.insideReactTree = !0, re.start(0, E);
58
+ });
59
+ a.useEffect(() => {
60
+ if (!C || !m)
61
+ return;
62
+ p.current.__escapeKeyBubbles = A, p.current.__outsidePressBubbles = ne;
63
+ const s = new pe(), h = new pe();
64
+ function D() {
65
+ s.clear(), V.current = !0;
66
+ }
67
+ function _() {
68
+ s.start(
69
+ // 0ms or 1ms don't work in Safari. 5ms appears to consistently work.
70
+ // Only apply to WebKit for the test to remain 0ms.
71
+ Xe() ? 5 : 0,
72
+ () => {
73
+ V.current = !1;
74
+ }
75
+ );
76
+ }
77
+ function I() {
78
+ T.current = !0, h.start(0, () => {
79
+ T.current = !1;
80
+ });
81
+ }
82
+ function M() {
83
+ k.current = !1, Y.current = !1;
84
+ }
85
+ function d() {
86
+ const e = U.current, t = e === "pen" || !e ? "mouse" : e, o = te(), c = typeof o == "function" ? o() : o;
87
+ return typeof c == "string" ? c : c[t];
88
+ }
89
+ function Te(e) {
90
+ const t = d();
91
+ return t === "intentional" && e.type !== "click" || t === "sloppy" && e.type === "click";
92
+ }
93
+ function oe(e) {
94
+ const t = p.current.floatingContext?.nodeId, o = g && z(g.nodesRef.current, t).some((c) => l(e, c.context?.elements.floating));
95
+ return l(e, n.select("floatingElement")) || l(e, n.select("domReferenceElement")) || o;
96
+ }
97
+ function H(e) {
98
+ if (Te(e)) {
99
+ E();
100
+ return;
101
+ }
102
+ if (p.current.insideReactTree) {
103
+ E();
104
+ return;
105
+ }
106
+ const t = S(e), o = `[${Be("inert")}]`;
107
+ let c = Array.from(me(n.select("floatingElement")).querySelectorAll(o));
108
+ const K = B(t) ? t.getRootNode() : null;
109
+ We(K) && (c = c.concat(Array.from(K.querySelectorAll(o))));
110
+ const ae = n.context.triggerElements;
111
+ if (t && (ae.hasElement(t) || ae.hasMatchingElement((u) => F(u, t))))
112
+ return;
113
+ let x = B(t) ? t : null;
114
+ for (; x && !Z(x); ) {
115
+ const u = Ye(x);
116
+ if (Z(u) || !B(u))
117
+ break;
118
+ x = u;
119
+ }
120
+ if (c.length && B(t) && !Fe(t) && // Clicked on a direct ancestor (e.g. FloatingOverlay).
121
+ !F(t, n.select("floatingElement")) && // If the target root element contains none of the markers, then the
122
+ // element was injected after the floating element rendered.
123
+ c.every((u) => !F(x, u)))
124
+ return;
125
+ if (Ae(t) && !("touches" in e)) {
126
+ const u = Z(t), w = _e(t), fe = /auto|scroll/, ke = u || fe.test(w.overflowX), Oe = u || fe.test(w.overflowY), De = ke && t.clientWidth > 0 && t.scrollWidth > t.clientWidth, Ie = Oe && t.clientHeight > 0 && t.scrollHeight > t.clientHeight, Me = w.direction === "rtl", Ke = Ie && (Me ? e.offsetX <= t.offsetWidth - t.clientWidth : e.offsetX > t.clientWidth), xe = De && e.offsetY > t.clientHeight;
127
+ if (Ke || xe)
128
+ return;
129
+ }
130
+ if (oe(e))
131
+ return;
132
+ if (d() === "intentional" && T.current) {
133
+ h.clear(), T.current = !1;
134
+ return;
135
+ }
136
+ if (typeof P == "function" && !P(e))
137
+ return;
138
+ const Ce = p.current.floatingContext?.nodeId, le = g ? z(g.nodesRef.current, Ce) : [];
139
+ if (le.length > 0) {
140
+ let u = !0;
141
+ if (le.forEach((w) => {
142
+ w.context?.open && !w.context.dataRef.current.__outsidePressBubbles && (u = !1);
143
+ }), !u)
144
+ return;
145
+ }
146
+ n.setOpen(!1, N($e, e)), E();
147
+ }
148
+ function be(e) {
149
+ d() !== "sloppy" || e.pointerType === "touch" || !n.select("open") || !m || l(e, n.select("floatingElement")) || l(e, n.select("domReferenceElement")) || H(e);
150
+ }
151
+ function Le(e) {
152
+ if (d() !== "sloppy" || !n.select("open") || !m || l(e, n.select("floatingElement")) || l(e, n.select("domReferenceElement")))
153
+ return;
154
+ const t = e.touches[0];
155
+ t && (i.current = {
156
+ startTime: Date.now(),
157
+ startX: t.clientX,
158
+ startY: t.clientY,
159
+ dismissOnTouchEnd: !1,
160
+ dismissOnMouseDown: !0
161
+ }, O.start(1e3, () => {
162
+ i.current && (i.current.dismissOnTouchEnd = !1, i.current.dismissOnMouseDown = !1);
163
+ }));
164
+ }
165
+ function ie(e) {
166
+ U.current = "touch";
167
+ const t = S(e);
168
+ function o() {
169
+ Le(e), t?.removeEventListener(e.type, o);
170
+ }
171
+ t?.addEventListener(e.type, o);
172
+ }
173
+ function b(e) {
174
+ if (O.clear(), e.type === "pointerdown" && (U.current = e.pointerType), e.type === "mousedown" && i.current && !i.current.dismissOnMouseDown)
175
+ return;
176
+ const t = S(e);
177
+ function o() {
178
+ e.type === "pointerdown" ? be(e) : H(e), t?.removeEventListener(e.type, o);
179
+ }
180
+ t?.addEventListener(e.type, o);
181
+ }
182
+ function L(e) {
183
+ if (!k.current)
184
+ return;
185
+ const t = Y.current;
186
+ if (M(), d() === "intentional") {
187
+ if (e.type === "pointercancel") {
188
+ t && I();
189
+ return;
190
+ }
191
+ if (!oe(e)) {
192
+ if (t) {
193
+ I();
194
+ return;
195
+ }
196
+ typeof P == "function" && !P(e) || (h.clear(), T.current = !0, E());
197
+ }
198
+ }
199
+ }
200
+ function we(e) {
201
+ if (d() !== "sloppy" || !i.current || l(e, n.select("floatingElement")) || l(e, n.select("domReferenceElement")))
202
+ return;
203
+ const t = e.touches[0];
204
+ if (!t)
205
+ return;
206
+ const o = Math.abs(t.clientX - i.current.startX), c = Math.abs(t.clientY - i.current.startY), K = Math.sqrt(o * o + c * c);
207
+ K > 5 && (i.current.dismissOnTouchEnd = !0), K > 10 && (H(e), O.clear(), i.current = null);
208
+ }
209
+ function ce(e) {
210
+ const t = S(e);
211
+ function o() {
212
+ we(e), t?.removeEventListener(e.type, o);
213
+ }
214
+ t?.addEventListener(e.type, o);
215
+ }
216
+ function Se(e) {
217
+ d() !== "sloppy" || !i.current || l(e, n.select("floatingElement")) || l(e, n.select("domReferenceElement")) || (i.current.dismissOnTouchEnd && H(e), O.clear(), i.current = null);
218
+ }
219
+ function ue(e) {
220
+ const t = S(e);
221
+ function o() {
222
+ Se(e), t?.removeEventListener(e.type, o);
223
+ }
224
+ t?.addEventListener(e.type, o);
225
+ }
226
+ const r = me(ee);
227
+ return X && (r.addEventListener("keydown", v), r.addEventListener("compositionstart", D), r.addEventListener("compositionend", _)), $ && (r.addEventListener("click", b, !0), r.addEventListener("pointerdown", b, !0), r.addEventListener("pointerup", L, !0), r.addEventListener("pointercancel", L, !0), r.addEventListener("mousedown", b, !0), r.addEventListener("mouseup", L, !0), r.addEventListener("touchstart", ie, !0), r.addEventListener("touchmove", ce, !0), r.addEventListener("touchend", ue, !0)), () => {
228
+ X && (r.removeEventListener("keydown", v), r.removeEventListener("compositionstart", D), r.removeEventListener("compositionend", _)), $ && (r.removeEventListener("click", b, !0), r.removeEventListener("pointerdown", b, !0), r.removeEventListener("pointerup", L, !0), r.removeEventListener("pointercancel", L, !0), r.removeEventListener("mousedown", b, !0), r.removeEventListener("mouseup", L, !0), r.removeEventListener("touchstart", ie, !0), r.removeEventListener("touchmove", ce, !0), r.removeEventListener("touchend", ue, !0)), s.clear(), h.clear(), M(), T.current = !1;
229
+ };
230
+ }, [p, ee, X, $, P, C, m, A, ne, v, E, te, g, n, O]), a.useEffect(E, [P, E]);
231
+ const G = a.useMemo(() => ({
232
+ onKeyDown: v,
233
+ [Ve[q]]: (s) => {
234
+ j() && n.setOpen(!1, N(Ee, s.nativeEvent));
235
+ },
236
+ ...q !== "intentional" && {
237
+ onClick(s) {
238
+ j() && n.setOpen(!1, N(Ee, s.nativeEvent));
239
+ }
240
+ }
241
+ }), [v, n, q, j]), J = y((s) => {
242
+ if (!C || !m || s.button !== 0)
243
+ return;
244
+ const h = S(s.nativeEvent);
245
+ F(n.select("floatingElement"), h) && (k.current || (k.current = !0, Y.current = !1));
246
+ }), Q = y((s) => {
247
+ !C || !m || (s.defaultPrevented || s.nativeEvent.defaultPrevented) && k.current && (Y.current = !0);
248
+ }), se = a.useMemo(() => ({
249
+ onKeyDown: v,
250
+ // `onMouseDown` may be blocked if `event.preventDefault()` is called in
251
+ // `onPointerDown`, such as with <NumberField.ScrubArea>.
252
+ // See https://github.com/mui/base-ui/pull/3379
253
+ onPointerDown: Q,
254
+ onMouseDown: Q,
255
+ onClickCapture: R,
256
+ onMouseDownCapture(s) {
257
+ R(), J(s);
258
+ },
259
+ onPointerDownCapture(s) {
260
+ R(), J(s);
261
+ },
262
+ onMouseUpCapture: R,
263
+ onTouchEndCapture: R,
264
+ onTouchMoveCapture: R
265
+ }), [v, R, J, Q]);
266
+ return a.useMemo(() => m ? {
267
+ reference: G,
268
+ floating: se,
269
+ trigger: G
270
+ } : {}, [m, G, se]);
271
+ }
272
+ export {
273
+ je as normalizeProp,
274
+ it as useDismiss
275
+ };
@@ -0,0 +1,78 @@
1
+ import * as o from "react";
2
+ import { useFloating as P } from "../../../../../@floating-ui/react-dom/dist/floating-ui.react-dom.js";
3
+ import { isElement as s } from "../../../../../@floating-ui/utils/dist/floating-ui.utils.dom.js";
4
+ import { useIsoLayoutEffect as F } from "../../../../utils/esm/useIsoLayoutEffect.js";
5
+ import { useFloatingTree as V } from "../components/FloatingTree.js";
6
+ import { useFloatingRootContext as v } from "./useFloatingRootContext.js";
7
+ function w(c = {}) {
8
+ const {
9
+ nodeId: m,
10
+ externalTree: y
11
+ } = c, I = v(c), t = c.rootContext || I, r = {
12
+ reference: t.useState("referenceElement"),
13
+ floating: t.useState("floatingElement"),
14
+ domReference: t.useState("domReferenceElement")
15
+ }, [g, M] = o.useState(null), i = o.useRef(null), b = V(y);
16
+ F(() => {
17
+ r.domReference && (i.current = r.domReference);
18
+ }, [r.domReference]);
19
+ const n = P({
20
+ ...c,
21
+ elements: {
22
+ ...r,
23
+ ...g && {
24
+ reference: g
25
+ }
26
+ }
27
+ }), d = o.useCallback((e) => {
28
+ const u = s(e) ? {
29
+ getBoundingClientRect: () => e.getBoundingClientRect(),
30
+ getClientRects: () => e.getClientRects(),
31
+ contextElement: e
32
+ } : e;
33
+ M(u), n.refs.setReference(u);
34
+ }, [n.refs]), [R, S] = o.useState(null), [k, L] = o.useState(null);
35
+ t.useSyncedValue("referenceElement", R), t.useSyncedValue("domReferenceElement", s(R) ? R : null), t.useSyncedValue("floatingElement", k);
36
+ const x = o.useCallback((e) => {
37
+ (s(e) || e === null) && (i.current = e, S(e)), (s(n.refs.reference.current) || n.refs.reference.current === null || // Don't allow setting virtual elements using the old technique back to
38
+ // `null` to support `positionReference` + an unstable `reference`
39
+ // callback ref.
40
+ e !== null && !s(e)) && n.refs.setReference(e);
41
+ }, [n.refs, S]), C = o.useCallback((e) => {
42
+ L(e), n.refs.setFloating(e);
43
+ }, [n.refs]), l = o.useMemo(() => ({
44
+ ...n.refs,
45
+ setReference: x,
46
+ setFloating: C,
47
+ setPositionReference: d,
48
+ domReference: i
49
+ }), [n.refs, x, C, d]), f = o.useMemo(() => ({
50
+ ...n.elements,
51
+ domReference: r.domReference
52
+ }), [n.elements, r.domReference]), E = t.useState("open"), p = t.useState("floatingId"), a = o.useMemo(() => ({
53
+ ...n,
54
+ dataRef: t.context.dataRef,
55
+ open: E,
56
+ onOpenChange: t.setOpen,
57
+ events: t.context.events,
58
+ floatingId: p,
59
+ refs: l,
60
+ elements: f,
61
+ nodeId: m,
62
+ rootStore: t
63
+ }), [n, l, f, m, t, E, p]);
64
+ return F(() => {
65
+ t.context.dataRef.current.floatingContext = a;
66
+ const e = b?.nodesRef.current.find((u) => u.id === m);
67
+ e && (e.context = a);
68
+ }), o.useMemo(() => ({
69
+ ...n,
70
+ context: a,
71
+ refs: l,
72
+ elements: f,
73
+ rootStore: t
74
+ }), [n, l, f, a, t]);
75
+ }
76
+ export {
77
+ w as useFloating
78
+ };
@@ -0,0 +1,38 @@
1
+ import { isElement as l } from "../../../../../@floating-ui/utils/dist/floating-ui.utils.dom.js";
2
+ import { useId as c } from "../../../../utils/esm/useId.js";
3
+ import { useRefWithInit as m } from "../../../../utils/esm/useRefWithInit.js";
4
+ import { useIsoLayoutEffect as a } from "../../../../utils/esm/useIsoLayoutEffect.js";
5
+ import { useFloatingParentNodeId as u } from "../components/FloatingTree.js";
6
+ import { FloatingRootStore as p } from "../components/FloatingRootStore.js";
7
+ import { PopupTriggerMap as g } from "../../utils/popups/popupTriggerMap.js";
8
+ function O(s) {
9
+ const {
10
+ open: o = !1,
11
+ onOpenChange: f,
12
+ elements: e = {}
13
+ } = s, r = c(), i = u() != null;
14
+ if (process.env.NODE_ENV !== "production") {
15
+ const n = e.reference;
16
+ n && !l(n) && console.error("Cannot pass a virtual element to the `elements.reference` option,", "as it must be a real DOM element. Use `context.setPositionReference()`", "instead.");
17
+ }
18
+ const t = m(() => new p({
19
+ open: o,
20
+ onOpenChange: f,
21
+ referenceElement: e.reference ?? null,
22
+ floatingElement: e.floating ?? null,
23
+ triggerElements: new g(),
24
+ floatingId: r,
25
+ nested: i,
26
+ noEmit: !1
27
+ })).current;
28
+ return a(() => {
29
+ const n = {
30
+ open: o,
31
+ floatingId: r
32
+ };
33
+ e.reference !== void 0 && (n.referenceElement = e.reference, n.domReferenceElement = l(e.reference) ? e.reference : null), e.floating !== void 0 && (n.floatingElement = e.floating), t.update(n);
34
+ }, [o, r, e.reference, e.floating, t]), t.context.onOpenChange = f, t.context.nested = i, t.context.noEmit = !1, t;
35
+ }
36
+ export {
37
+ O as useFloatingRootContext
38
+ };
@@ -0,0 +1,87 @@
1
+ import * as y from "react";
2
+ import { isElement as F } from "../../../../../@floating-ui/utils/dist/floating-ui.utils.dom.js";
3
+ import { useStableCallback as d } from "../../../../utils/esm/useStableCallback.js";
4
+ import { useIsoLayoutEffect as P } from "../../../../utils/esm/useIsoLayoutEffect.js";
5
+ import { useTimeout as w } from "../../../../utils/esm/useTimeout.js";
6
+ import { ownerDocument as H } from "../../../../utils/esm/owner.js";
7
+ import { createChangeEventDetails as b } from "../../utils/createBaseUIEventDetails.js";
8
+ import { useFloatingTree as M, useFloatingParentNodeId as N } from "../components/FloatingTree.js";
9
+ import { useHoverInteractionSharedState as x, clearSafePolygonPointerEventsMutation as W, isInteractiveElement as $, applySafePolygonPointerEventsMutation as j } from "./useHoverInteractionSharedState.js";
10
+ import { isClickLikeOpenEvent as q, getDelay as z } from "./useHoverShared.js";
11
+ import { isTargetInsideEnabledTrigger as A, getTarget as B } from "../utils/element.js";
12
+ import { triggerHover as R } from "../../utils/reason-parts.js";
13
+ import { getNodeChildren as k } from "../utils/nodes.js";
14
+ function ne(p, D = {}) {
15
+ const r = "rootStore" in p ? p.rootStore : p, u = r.useState("open"), f = r.useState("floatingElement"), g = r.useState("domReferenceElement"), {
16
+ dataRef: E
17
+ } = r.context, {
18
+ enabled: m = !0,
19
+ closeDelay: T = 0
20
+ } = D, e = x(r), n = M(), c = N(), I = d(() => q(E.current.openEvent?.type, e.interactedInside)), C = d(() => {
21
+ const t = E.current.openEvent?.type;
22
+ return t?.includes("mouse") && t !== "mousedown";
23
+ }), S = d((t) => A(t, r.context.triggerElements)), L = y.useCallback((t) => {
24
+ const s = z(T, "close", e.pointerType), a = () => {
25
+ r.setOpen(!1, b(R, t)), n?.events.emit("floating.closed", t);
26
+ };
27
+ s ? e.openChangeTimeout.start(s, a) : (e.openChangeTimeout.clear(), a());
28
+ }, [T, r, e, n]), i = d(() => {
29
+ W(e);
30
+ }), v = d((t) => {
31
+ const s = B(t);
32
+ if (!$(s)) {
33
+ e.interactedInside = !1;
34
+ return;
35
+ }
36
+ e.interactedInside = s?.closest("[aria-haspopup]") != null;
37
+ });
38
+ P(() => {
39
+ u || (e.pointerType = void 0, e.restTimeoutPending = !1, e.interactedInside = !1, i());
40
+ }, [u, e, i]), y.useEffect(() => i, [i]), P(() => {
41
+ if (m && u && e.handleCloseOptions?.blockPointerEvents && C() && F(g) && f) {
42
+ const t = g, s = f, a = H(f), o = n?.nodesRef.current.find((O) => O.id === c)?.context?.elements.floating;
43
+ o && (o.style.pointerEvents = "");
44
+ const l = e.handleCloseOptions?.getScope?.() ?? e.pointerEventsScopeElement ?? o ?? t.closest("[data-rootownerid]") ?? a.body;
45
+ return j(e, {
46
+ scopeElement: l,
47
+ referenceElement: t,
48
+ floatingElement: s
49
+ }), () => {
50
+ i();
51
+ };
52
+ }
53
+ }, [m, u, g, f, e, C, n, c, i]);
54
+ const h = w();
55
+ y.useEffect(() => {
56
+ if (!m)
57
+ return;
58
+ function t() {
59
+ e.openChangeTimeout.clear(), h.clear(), n?.events.off("floating.closed", a), i();
60
+ }
61
+ function s(l) {
62
+ if (n && c && k(n.nodesRef.current, c).length > 0) {
63
+ n.events.on("floating.closed", a);
64
+ return;
65
+ }
66
+ if (!S(l.relatedTarget)) {
67
+ if (e.handler) {
68
+ e.handler(l);
69
+ return;
70
+ }
71
+ i(), I() || L(l);
72
+ }
73
+ }
74
+ function a(l) {
75
+ !n || !c || k(n.nodesRef.current, c).length > 0 || h.start(0, () => {
76
+ n.events.off("floating.closed", a), r.setOpen(!1, b(R, l)), n.events.emit("floating.closed", l);
77
+ });
78
+ }
79
+ const o = f;
80
+ return o && (o.addEventListener("mouseenter", t), o.addEventListener("mouseleave", s), o.addEventListener("pointerdown", v, !0)), () => {
81
+ o && (o.removeEventListener("mouseenter", t), o.removeEventListener("mouseleave", s), o.removeEventListener("pointerdown", v, !0)), n?.events.off("floating.closed", a);
82
+ };
83
+ }, [m, f, r, E, I, S, L, i, v, e, n, c, h]);
84
+ }
85
+ export {
86
+ ne as useHoverFloatingInteraction
87
+ };
@@ -0,0 +1,42 @@
1
+ import { useOnMount as l } from "../../../../utils/esm/useOnMount.js";
2
+ import { useRefWithInit as p } from "../../../../utils/esm/useRefWithInit.js";
3
+ import { Timeout as s } from "../../../../utils/esm/useTimeout.js";
4
+ import { TYPEABLE_SELECTOR as a } from "../utils/constants.js";
5
+ const u = `button,a,[role="button"],select,[tabindex]:not([tabindex="-1"]),${a}`;
6
+ function h(e) {
7
+ return e ? !!e.closest(u) : !1;
8
+ }
9
+ class o {
10
+ constructor() {
11
+ this.pointerType = void 0, this.interactedInside = !1, this.handler = void 0, this.blockMouseMove = !0, this.performedPointerEventsMutation = !1, this.pointerEventsScopeElement = null, this.pointerEventsReferenceElement = null, this.pointerEventsFloatingElement = null, this.restTimeoutPending = !1, this.openChangeTimeout = new s(), this.restTimeout = new s(), this.handleCloseOptions = void 0;
12
+ }
13
+ static create() {
14
+ return new o();
15
+ }
16
+ dispose = () => {
17
+ this.openChangeTimeout.clear(), this.restTimeout.clear();
18
+ };
19
+ disposeEffect = () => this.dispose;
20
+ }
21
+ function E(e) {
22
+ e.performedPointerEventsMutation && (e.pointerEventsScopeElement?.style.removeProperty("pointer-events"), e.pointerEventsReferenceElement?.style.removeProperty("pointer-events"), e.pointerEventsFloatingElement?.style.removeProperty("pointer-events"), e.performedPointerEventsMutation = !1, e.pointerEventsScopeElement = null, e.pointerEventsReferenceElement = null, e.pointerEventsFloatingElement = null);
23
+ }
24
+ function d(e, n) {
25
+ const {
26
+ scopeElement: t,
27
+ referenceElement: r,
28
+ floatingElement: i
29
+ } = n;
30
+ E(e), e.performedPointerEventsMutation = !0, e.pointerEventsScopeElement = t, e.pointerEventsReferenceElement = r, e.pointerEventsFloatingElement = i, t.style.pointerEvents = "none", r.style.pointerEvents = "auto", i.style.pointerEvents = "auto";
31
+ }
32
+ function S(e) {
33
+ const n = p(o.create).current, t = e.context.dataRef.current;
34
+ return t.hoverInteractionState || (t.hoverInteractionState = n), l(t.hoverInteractionState.disposeEffect), t.hoverInteractionState;
35
+ }
36
+ export {
37
+ o as HoverInteraction,
38
+ d as applySafePolygonPointerEventsMutation,
39
+ E as clearSafePolygonPointerEventsMutation,
40
+ h as isInteractiveElement,
41
+ S as useHoverInteractionSharedState
42
+ };
@@ -0,0 +1,145 @@
1
+ import * as v from "react";
2
+ import * as J from "react-dom";
3
+ import { isElement as X } from "../../../../../@floating-ui/utils/dist/floating-ui.utils.dom.js";
4
+ import { useValueAsRef as L } from "../../../../utils/esm/useValueAsRef.js";
5
+ import { useStableCallback as M } from "../../../../utils/esm/useStableCallback.js";
6
+ import { ownerDocument as B } from "../../../../utils/esm/owner.js";
7
+ import { createChangeEventDetails as d } from "../../utils/createBaseUIEventDetails.js";
8
+ import { useFloatingTree as K } from "../components/FloatingTree.js";
9
+ import { useHoverInteractionSharedState as Q, clearSafePolygonPointerEventsMutation as U } from "./useHoverInteractionSharedState.js";
10
+ import { getDelay as Y, getRestMs as N, isClickLikeOpenEvent as Z } from "./useHoverShared.js";
11
+ import { isMouseLikePointerType as W } from "../utils/event.js";
12
+ import { triggerHover as g } from "../../utils/reason-parts.js";
13
+ import { contains as P, isTargetInsideEnabledTrigger as ee } from "../utils/element.js";
14
+ const te = {
15
+ current: null
16
+ };
17
+ function de(b, $ = {}) {
18
+ const n = "rootStore" in b ? b.rootStore : b, {
19
+ dataRef: k,
20
+ events: I
21
+ } = n.context, {
22
+ enabled: c = !0,
23
+ delay: j = 0,
24
+ handleClose: q = null,
25
+ mouseOnly: C = !1,
26
+ restMs: z = 0,
27
+ move: x = !0,
28
+ triggerElementRef: D = te,
29
+ externalTree: G,
30
+ isActiveTrigger: S = !0,
31
+ getHandleCloseContext: _
32
+ } = $, p = K(G), e = Q(n), R = L(q), T = L(j), y = L(z), w = L(c);
33
+ S && (e.handleCloseOptions = R.current?.__options);
34
+ const E = M(() => Z(k.current.openEvent?.type, e.interactedInside)), A = M((t) => ee(t, n.context.triggerElements)), O = M((t, r, i) => {
35
+ const o = n.context.triggerElements;
36
+ if (o.hasElement(r))
37
+ return !t || !P(t, r);
38
+ if (!X(i))
39
+ return !1;
40
+ const a = i;
41
+ return o.hasMatchingElement((l) => P(l, a)) && (!t || !P(t, a));
42
+ }), H = v.useCallback((t, r = !0) => {
43
+ const i = Y(T.current, "close", e.pointerType);
44
+ i ? e.openChangeTimeout.start(i, () => {
45
+ n.setOpen(!1, d(g, t)), p?.events.emit("floating.closed", t);
46
+ }) : r && (e.openChangeTimeout.clear(), n.setOpen(!1, d(g, t)), p?.events.emit("floating.closed", t));
47
+ }, [T, n, e, p]), u = M(() => {
48
+ if (!e.handler)
49
+ return;
50
+ B(n.select("domReferenceElement")).removeEventListener("mousemove", e.handler), e.handler = void 0;
51
+ });
52
+ v.useEffect(() => u, [u]);
53
+ const V = M(() => {
54
+ U(e);
55
+ });
56
+ return v.useEffect(() => {
57
+ if (!c)
58
+ return;
59
+ function t(r) {
60
+ r.open || (u(), e.openChangeTimeout.clear(), e.restTimeout.clear(), e.blockMouseMove = !0, e.restTimeoutPending = !1);
61
+ }
62
+ return I.on("openchange", t), () => {
63
+ I.off("openchange", t);
64
+ };
65
+ }, [c, I, e, u]), v.useEffect(() => {
66
+ if (!c)
67
+ return;
68
+ const t = D.current ?? (S ? n.select("domReferenceElement") : null);
69
+ if (!X(t))
70
+ return;
71
+ function r(o) {
72
+ if (e.openChangeTimeout.clear(), e.blockMouseMove = !1, C && !W(e.pointerType) || N(y.current) > 0 && !Y(T.current, "open"))
73
+ return;
74
+ const l = Y(T.current, "open", e.pointerType), s = o.currentTarget ?? null, h = n.select("domReferenceElement"), f = s == null ? !1 : O(h, s, o.target), m = n.select("open"), F = !m || f;
75
+ f && m ? n.setOpen(!0, d(g, o, s)) : l ? e.openChangeTimeout.start(l, () => {
76
+ F && n.setOpen(!0, d(g, o, s));
77
+ }) : F && n.setOpen(!0, d(g, o, s));
78
+ }
79
+ function i(o) {
80
+ if (E()) {
81
+ V();
82
+ return;
83
+ }
84
+ u();
85
+ const a = n.select("domReferenceElement"), l = B(a);
86
+ e.restTimeout.clear(), e.restTimeoutPending = !1;
87
+ const s = k.current.floatingContext ?? _?.();
88
+ if (A(o.relatedTarget))
89
+ return;
90
+ if (R.current && s) {
91
+ n.select("open") || e.openChangeTimeout.clear();
92
+ const m = D.current;
93
+ e.handler = R.current({
94
+ ...s,
95
+ tree: p,
96
+ x: o.clientX,
97
+ y: o.clientY,
98
+ onClose() {
99
+ V(), u(), w.current && !E() && m === n.select("domReferenceElement") && H(o, !0);
100
+ }
101
+ }), l.addEventListener("mousemove", e.handler), e.handler(o);
102
+ return;
103
+ }
104
+ (e.pointerType !== "touch" || !P(n.select("floatingElement"), o.relatedTarget)) && H(o);
105
+ }
106
+ return x && t.addEventListener("mousemove", r, {
107
+ once: !0
108
+ }), t.addEventListener("mouseenter", r), t.addEventListener("mouseleave", i), () => {
109
+ x && t.removeEventListener("mousemove", r), t.removeEventListener("mouseenter", r), t.removeEventListener("mouseleave", i);
110
+ };
111
+ }, [u, V, k, T, H, n, c, R, e, S, O, E, A, C, x, y, D, p, w, _]), v.useMemo(() => {
112
+ if (!c)
113
+ return;
114
+ function t(r) {
115
+ e.pointerType = r.pointerType;
116
+ }
117
+ return {
118
+ onPointerDown: t,
119
+ onPointerEnter: t,
120
+ onMouseMove(r) {
121
+ const {
122
+ nativeEvent: i
123
+ } = r, o = r.currentTarget, a = n.select("domReferenceElement"), l = n.select("open"), s = O(a, o, r.target);
124
+ if (C && !W(e.pointerType))
125
+ return;
126
+ const h = N(y.current);
127
+ if (l && !s || h === 0 || !s && e.restTimeoutPending && r.movementX ** 2 + r.movementY ** 2 < 2)
128
+ return;
129
+ e.restTimeout.clear();
130
+ function f() {
131
+ if (e.restTimeoutPending = !1, E())
132
+ return;
133
+ const m = n.select("open");
134
+ !e.blockMouseMove && (!m || s) && n.setOpen(!0, d(g, i, o));
135
+ }
136
+ e.pointerType === "touch" ? J.flushSync(() => {
137
+ f();
138
+ }) : s && l ? f() : (e.restTimeoutPending = !0, e.restTimeout.start(h, f));
139
+ }
140
+ };
141
+ }, [c, e, E, O, C, n, y]);
142
+ }
143
+ export {
144
+ de as useHoverReferenceInteraction
145
+ };