@wix/site-ui 1.30.0 → 1.31.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.
- package/dist/1268.js +99 -0
- package/dist/1279.js +7 -0
- package/dist/1457.js +10 -0
- package/dist/1477.js +106 -0
- package/dist/1500.js +111 -0
- package/dist/167.js +6 -0
- package/dist/2274.js +34 -0
- package/dist/2287.js +17 -0
- package/dist/2418.js +31 -0
- package/dist/2801.js +20 -0
- package/dist/285.js +86 -0
- package/dist/2861.js +6 -0
- package/dist/3020.js +7 -0
- package/dist/3021.js +72 -0
- package/dist/3056.js +229 -0
- package/dist/3140.js +4 -0
- package/dist/3248.js +307 -0
- package/dist/3296.js +4 -0
- package/dist/3319.js +400 -0
- package/dist/3395.js +4 -0
- package/dist/3485.js +854 -0
- package/dist/353.js +14 -0
- package/dist/3670.js +418 -0
- package/dist/3829.js +113 -0
- package/dist/4026.js +12 -0
- package/dist/4143.js +46 -0
- package/dist/42.js +32 -0
- package/dist/4281.js +30 -0
- package/dist/4346.js +2 -0
- package/dist/4388.js +418 -0
- package/dist/4490.js +32 -0
- package/dist/4495.js +9 -0
- package/dist/4549.js +24 -0
- package/dist/4586.js +41 -0
- package/dist/4586.js.LICENSE.txt +19 -0
- package/dist/4707.js +19 -0
- package/dist/4723.js +7 -0
- package/dist/4745.js +7 -0
- package/dist/4768.js +35 -0
- package/dist/4922.js +15 -0
- package/dist/5036.js +17 -0
- package/dist/5085.js +20 -0
- package/dist/5299.js +597 -0
- package/dist/5659.js +4 -0
- package/dist/5778.js +10 -0
- package/dist/5864.js +86 -0
- package/dist/5992.js +913 -0
- package/dist/5992.js.LICENSE.txt +19 -0
- package/dist/6003.js +10 -0
- package/dist/6046.js +29 -0
- package/dist/6089.js +2355 -0
- package/dist/6107.js +10 -0
- package/dist/6247.js +20 -0
- package/dist/6270.js +487 -0
- package/dist/6329.js +32 -0
- package/dist/6330.js +30 -0
- package/dist/6499.js +7 -0
- package/dist/6535.js +71 -0
- package/dist/6588.js +382 -0
- package/dist/6706.js +16 -0
- package/dist/6825.js +7 -0
- package/dist/6882.js +1562 -0
- package/dist/6914.js +30 -0
- package/dist/7021.js +13 -0
- package/dist/7366.js +83 -0
- package/dist/7373.js +25 -0
- package/dist/7541.js +25 -0
- package/dist/7564.js +10 -0
- package/dist/7642.js +20 -0
- package/dist/7725.js +10 -0
- package/dist/7871.js +38 -0
- package/dist/8052.js +352 -0
- package/dist/8106.js +238 -0
- package/dist/8171.js +346 -0
- package/dist/8225.js +21 -0
- package/dist/8272.js +333 -0
- package/dist/8527.js +58 -0
- package/dist/8724.js +10 -0
- package/dist/8750.js +1920 -0
- package/dist/8758.js +43 -0
- package/dist/880.js +149 -0
- package/dist/8935.js +8 -0
- package/dist/8960.js +22 -0
- package/dist/8971.js +40 -0
- package/dist/8979.js +10 -0
- package/dist/8996.js +71 -0
- package/dist/904.js +121 -0
- package/dist/9048.js +52 -0
- package/dist/9087.js +256 -0
- package/dist/9189.js +158 -0
- package/dist/9255.js +136 -0
- package/dist/9352.js +148 -0
- package/dist/951.js +22 -0
- package/dist/9635.js +22 -0
- package/dist/9829.js +4 -0
- package/dist/9863.js +8 -0
- package/dist/Accordion/index.d.ts +569 -12
- package/dist/Accordion/index.js +423 -8
- package/dist/AlertDialog/index.d.ts +1417 -18
- package/dist/AlertDialog/index.js +34 -14
- package/dist/Autocomplete/index.d.ts +1861 -38
- package/dist/Autocomplete/index.js +98 -24
- package/dist/Avatar/index.d.ts +129 -7
- package/dist/Avatar/index.js +149 -6
- package/dist/Breadcrumbs/index.d.ts +960 -7
- package/dist/Breadcrumbs/index.js +5 -5
- package/dist/Button/index.d.ts +88 -6
- package/dist/Button/index.js +27 -3
- package/dist/Checkbox/index.d.ts +425 -5
- package/dist/Checkbox/index.js +45 -5
- package/dist/CheckboxGroup/index.d.ts +318 -3
- package/dist/CheckboxGroup/index.js +166 -3
- package/dist/Collapsible/index.d.ts +377 -7
- package/dist/Collapsible/index.js +160 -6
- package/dist/Combobox/index.d.ts +1984 -48
- package/dist/Combobox/index.js +352 -29
- package/dist/ContextMenu/index.d.ts +2340 -36
- package/dist/ContextMenu/index.js +197 -22
- package/dist/Dialog/index.d.ts +1355 -18
- package/dist/Dialog/index.js +16 -14
- package/dist/Drawer/index.d.ts +1653 -18
- package/dist/Drawer/index.js +2797 -20
- package/dist/Field/index.d.ts +655 -15
- package/dist/Field/index.js +677 -10
- package/dist/Fieldset/index.d.ts +94 -5
- package/dist/Fieldset/index.js +68 -5
- package/dist/Form/index.d.ts +331 -2
- package/dist/Form/index.js +106 -3
- package/dist/Input/index.d.ts +692 -3
- package/dist/Input/index.js +10 -3
- package/dist/Menu/index.d.ts +2301 -36
- package/dist/Menu/index.js +365 -26
- package/dist/Menubar/index.d.ts +2301 -3
- package/dist/Menubar/index.js +105 -3
- package/dist/Meter/index.d.ts +175 -11
- package/dist/Meter/index.js +129 -9
- package/dist/NavigationMenu/index.d.ts +978 -28
- package/dist/NavigationMenu/index.js +1034 -17
- package/dist/NumberField/index.d.ts +612 -15
- package/dist/NumberField/index.js +1409 -11
- package/dist/Popover/index.d.ts +1655 -20
- package/dist/Popover/index.js +792 -17
- package/dist/PreviewCard/index.d.ts +1523 -14
- package/dist/PreviewCard/index.js +679 -14
- package/dist/Progress/index.d.ts +183 -11
- package/dist/Progress/index.js +181 -9
- package/dist/Radio/index.d.ts +185 -6
- package/dist/Radio/index.js +253 -6
- package/dist/RadioGroup/index.d.ts +341 -2
- package/dist/RadioGroup/index.js +154 -3
- package/dist/ScrollArea/index.d.ts +265 -13
- package/dist/ScrollArea/index.js +892 -10
- package/dist/Select/index.d.ts +1493 -38
- package/dist/Select/index.js +1824 -23
- package/dist/Separator/index.d.ts +80 -6
- package/dist/Separator/index.js +3 -3
- package/dist/Slider/index.d.ts +678 -16
- package/dist/Slider/index.js +1199 -11
- package/dist/Switch/index.d.ts +393 -5
- package/dist/Switch/index.js +208 -6
- package/dist/Tabs/index.d.ts +523 -12
- package/dist/Tabs/index.js +685 -9
- package/dist/Toggle/index.d.ts +305 -2
- package/dist/Toggle/index.js +76 -3
- package/dist/ToggleGroup/index.d.ts +316 -2
- package/dist/ToggleGroup/index.js +102 -3
- package/dist/Toolbar/index.d.ts +282 -13
- package/dist/Toolbar/index.js +230 -9
- package/dist/Tooltip/index.d.ts +1572 -14
- package/dist/Tooltip/index.js +965 -14
- package/dist/index.d.ts +12749 -652
- package/dist/rslib-runtime.js +18 -0
- package/package.json +3 -3
package/dist/Tooltip/index.js
CHANGED
|
@@ -1,7 +1,958 @@
|
|
|
1
|
-
import { jsx } from "react/jsx-runtime";
|
|
2
|
-
import { Tooltip } from "@base-ui/react/tooltip";
|
|
1
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
3
2
|
import clsx from "clsx";
|
|
3
|
+
import { mergeProps, useRenderElement, esm_formatErrorMessage } from "../8272.js";
|
|
4
|
+
import { Timeout, useTimeout } from "../42.js";
|
|
5
|
+
import { useIsoLayoutEffect } from "../6499.js";
|
|
6
|
+
import { useHoverFloatingInteraction, useHoverInteractionSharedState, getDelay } from "../3056.js";
|
|
7
|
+
import { createChangeEventDetails } from "../4768.js";
|
|
8
|
+
import { POPUP_COLLISION_AVOIDANCE, triggerOpenStateMapping, popupStateMapping, popupStateMapping_CommonTriggerDataAttributes } from "../4388.js";
|
|
9
|
+
import { getWindow, isElement } from "../3829.js";
|
|
10
|
+
import { useDismiss, PopupTriggerMap, createSelector, fastComponent, fastComponentRef, ReactStore } from "../5992.js";
|
|
11
|
+
import { useBaseUiId } from "../6046.js";
|
|
12
|
+
import { useTriggerDataForwarding, usePopupInteractionProps, setOpenTriggerState, usePopupStore, useImplicitActiveTrigger, useOnFirstRender, useOpenStateTransitions, FOCUSABLE_POPUP_PROPS } from "../8106.js";
|
|
13
|
+
import { useValueAsRef } from "../4707.js";
|
|
14
|
+
import { getTarget, contains } from "../4549.js";
|
|
15
|
+
import { safePolygon, useHoverReferenceInteraction } from "../3670.js";
|
|
16
|
+
import { useFocus } from "../904.js";
|
|
17
|
+
import { imperativeAction, triggerFocus, escapeKey, disabled as reason_parts_disabled, triggerHover, triggerPress } from "../2418.js";
|
|
18
|
+
import { isMouseLikePointerType } from "../6330.js";
|
|
19
|
+
import { usePositioner, adaptiveOriginMiddleware_adaptiveOrigin, useAnchorPositioning, getDisabledMountTransitionStyles } from "../8750.js";
|
|
20
|
+
import { transitionStatusMapping, useOpenChangeComplete } from "../880.js";
|
|
21
|
+
import { usePopupViewport } from "../8171.js";
|
|
22
|
+
import { useStableCallback } from "../7541.js";
|
|
23
|
+
import { addEventListener } from "../4723.js";
|
|
24
|
+
import { createPopupFloatingRootContext, popupStoreSelectors, createInitialPopupStoreState } from "../6535.js";
|
|
25
|
+
import { FloatingPortalLite_FloatingPortalLite } from "../8960.js";
|
|
4
26
|
import * as __rspack_external_react from "react";
|
|
27
|
+
import * as __rspack_external_react_dom_7136dc57 from "react-dom";
|
|
28
|
+
const TooltipRootContext = /*#__PURE__*/ __rspack_external_react.createContext(void 0);
|
|
29
|
+
if ("production" !== process.env.NODE_ENV) TooltipRootContext.displayName = "TooltipRootContext";
|
|
30
|
+
function useTooltipRootContext(optional) {
|
|
31
|
+
const context = __rspack_external_react.useContext(TooltipRootContext);
|
|
32
|
+
if (void 0 === context && !optional) throw new Error("production" !== process.env.NODE_ENV ? 'Base UI: TooltipRootContext is missing. Tooltip parts must be placed within <Tooltip.Root>.' : esm_formatErrorMessage(72));
|
|
33
|
+
return context;
|
|
34
|
+
}
|
|
35
|
+
const TooltipProviderContext = /*#__PURE__*/ __rspack_external_react.createContext(void 0);
|
|
36
|
+
if ("production" !== process.env.NODE_ENV) TooltipProviderContext.displayName = "TooltipProviderContext";
|
|
37
|
+
function useTooltipProviderContext() {
|
|
38
|
+
return __rspack_external_react.useContext(TooltipProviderContext);
|
|
39
|
+
}
|
|
40
|
+
const FloatingDelayGroupContext = /*#__PURE__*/ __rspack_external_react.createContext({
|
|
41
|
+
hasProvider: false,
|
|
42
|
+
timeoutMs: 0,
|
|
43
|
+
delayRef: {
|
|
44
|
+
current: 0
|
|
45
|
+
},
|
|
46
|
+
initialDelayRef: {
|
|
47
|
+
current: 0
|
|
48
|
+
},
|
|
49
|
+
timeout: new Timeout(),
|
|
50
|
+
currentIdRef: {
|
|
51
|
+
current: null
|
|
52
|
+
},
|
|
53
|
+
currentContextRef: {
|
|
54
|
+
current: null
|
|
55
|
+
}
|
|
56
|
+
});
|
|
57
|
+
if ("production" !== process.env.NODE_ENV) FloatingDelayGroupContext.displayName = "FloatingDelayGroupContext";
|
|
58
|
+
function FloatingDelayGroup(props) {
|
|
59
|
+
const { children, delay, timeoutMs = 0 } = props;
|
|
60
|
+
const delayRef = __rspack_external_react.useRef(delay);
|
|
61
|
+
const initialDelayRef = __rspack_external_react.useRef(delay);
|
|
62
|
+
const currentIdRef = __rspack_external_react.useRef(null);
|
|
63
|
+
const currentContextRef = __rspack_external_react.useRef(null);
|
|
64
|
+
const timeout = useTimeout();
|
|
65
|
+
return /*#__PURE__*/ jsx(FloatingDelayGroupContext.Provider, {
|
|
66
|
+
value: __rspack_external_react.useMemo(()=>({
|
|
67
|
+
hasProvider: true,
|
|
68
|
+
delayRef,
|
|
69
|
+
initialDelayRef,
|
|
70
|
+
currentIdRef,
|
|
71
|
+
timeoutMs,
|
|
72
|
+
currentContextRef,
|
|
73
|
+
timeout
|
|
74
|
+
}), [
|
|
75
|
+
timeoutMs,
|
|
76
|
+
timeout
|
|
77
|
+
]),
|
|
78
|
+
children: children
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
function useDelayGroup(context, options = {
|
|
82
|
+
open: false
|
|
83
|
+
}) {
|
|
84
|
+
const { open } = options;
|
|
85
|
+
const store = 'rootStore' in context ? context.rootStore : context;
|
|
86
|
+
const floatingId = store.useState('floatingId');
|
|
87
|
+
const groupContext = __rspack_external_react.useContext(FloatingDelayGroupContext);
|
|
88
|
+
const { currentIdRef, delayRef, timeoutMs, initialDelayRef, currentContextRef, hasProvider, timeout } = groupContext;
|
|
89
|
+
const [isInstantPhase, setIsInstantPhase] = __rspack_external_react.useState(false);
|
|
90
|
+
useIsoLayoutEffect(()=>{
|
|
91
|
+
function unset() {
|
|
92
|
+
setIsInstantPhase(false);
|
|
93
|
+
currentContextRef.current?.setIsInstantPhase(false);
|
|
94
|
+
currentIdRef.current = null;
|
|
95
|
+
currentContextRef.current = null;
|
|
96
|
+
delayRef.current = initialDelayRef.current;
|
|
97
|
+
}
|
|
98
|
+
if (!currentIdRef.current) return;
|
|
99
|
+
if (!open && currentIdRef.current === floatingId) {
|
|
100
|
+
setIsInstantPhase(false);
|
|
101
|
+
if (timeoutMs) {
|
|
102
|
+
const closingId = floatingId;
|
|
103
|
+
timeout.start(timeoutMs, ()=>{
|
|
104
|
+
if (store.select('open') || currentIdRef.current && currentIdRef.current !== closingId) return;
|
|
105
|
+
unset();
|
|
106
|
+
});
|
|
107
|
+
return ()=>{
|
|
108
|
+
timeout.clear();
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
unset();
|
|
112
|
+
}
|
|
113
|
+
}, [
|
|
114
|
+
open,
|
|
115
|
+
floatingId,
|
|
116
|
+
currentIdRef,
|
|
117
|
+
delayRef,
|
|
118
|
+
timeoutMs,
|
|
119
|
+
initialDelayRef,
|
|
120
|
+
currentContextRef,
|
|
121
|
+
timeout,
|
|
122
|
+
store
|
|
123
|
+
]);
|
|
124
|
+
useIsoLayoutEffect(()=>{
|
|
125
|
+
if (!open) return;
|
|
126
|
+
const prevContext = currentContextRef.current;
|
|
127
|
+
const prevId = currentIdRef.current;
|
|
128
|
+
timeout.clear();
|
|
129
|
+
currentContextRef.current = {
|
|
130
|
+
onOpenChange: store.setOpen,
|
|
131
|
+
setIsInstantPhase
|
|
132
|
+
};
|
|
133
|
+
currentIdRef.current = floatingId;
|
|
134
|
+
delayRef.current = {
|
|
135
|
+
open: 0,
|
|
136
|
+
close: getDelay(initialDelayRef.current, 'close')
|
|
137
|
+
};
|
|
138
|
+
if (null !== prevId && prevId !== floatingId) {
|
|
139
|
+
setIsInstantPhase(true);
|
|
140
|
+
prevContext?.setIsInstantPhase(true);
|
|
141
|
+
prevContext?.onOpenChange(false, createChangeEventDetails("none"));
|
|
142
|
+
} else {
|
|
143
|
+
setIsInstantPhase(false);
|
|
144
|
+
prevContext?.setIsInstantPhase(false);
|
|
145
|
+
}
|
|
146
|
+
}, [
|
|
147
|
+
open,
|
|
148
|
+
floatingId,
|
|
149
|
+
store,
|
|
150
|
+
currentIdRef,
|
|
151
|
+
delayRef,
|
|
152
|
+
initialDelayRef,
|
|
153
|
+
currentContextRef,
|
|
154
|
+
timeout
|
|
155
|
+
]);
|
|
156
|
+
useIsoLayoutEffect(()=>()=>{
|
|
157
|
+
currentContextRef.current = null;
|
|
158
|
+
}, [
|
|
159
|
+
currentContextRef
|
|
160
|
+
]);
|
|
161
|
+
return __rspack_external_react.useMemo(()=>({
|
|
162
|
+
hasProvider,
|
|
163
|
+
delayRef,
|
|
164
|
+
isInstantPhase
|
|
165
|
+
}), [
|
|
166
|
+
hasProvider,
|
|
167
|
+
delayRef,
|
|
168
|
+
isInstantPhase
|
|
169
|
+
]);
|
|
170
|
+
}
|
|
171
|
+
let TooltipTriggerDataAttributes_TooltipTriggerDataAttributes = function(TooltipTriggerDataAttributes) {
|
|
172
|
+
TooltipTriggerDataAttributes[TooltipTriggerDataAttributes["popupOpen"] = popupStateMapping_CommonTriggerDataAttributes.popupOpen] = "popupOpen";
|
|
173
|
+
TooltipTriggerDataAttributes["triggerDisabled"] = "data-trigger-disabled";
|
|
174
|
+
return TooltipTriggerDataAttributes;
|
|
175
|
+
}({});
|
|
176
|
+
const TOOLTIP_TRIGGER_IDENTIFIER = 'data-base-ui-tooltip-trigger';
|
|
177
|
+
function getTargetElement(event) {
|
|
178
|
+
if ('composedPath' in event) {
|
|
179
|
+
const path = event.composedPath();
|
|
180
|
+
for(let i = 0; i < path.length; i += 1){
|
|
181
|
+
const element = path[i];
|
|
182
|
+
if (isElement(element)) return element;
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
const target = event.target;
|
|
186
|
+
if (isElement(target)) return target;
|
|
187
|
+
return null;
|
|
188
|
+
}
|
|
189
|
+
function closestEnabledTooltipTrigger(element) {
|
|
190
|
+
let current = element;
|
|
191
|
+
while(current){
|
|
192
|
+
if (current.hasAttribute(TOOLTIP_TRIGGER_IDENTIFIER)) return current;
|
|
193
|
+
const parentElement = current.parentElement;
|
|
194
|
+
if (parentElement) {
|
|
195
|
+
current = parentElement;
|
|
196
|
+
continue;
|
|
197
|
+
}
|
|
198
|
+
const root = current.getRootNode();
|
|
199
|
+
current = 'host' in root && isElement(root.host) ? root.host : null;
|
|
200
|
+
}
|
|
201
|
+
return null;
|
|
202
|
+
}
|
|
203
|
+
const TooltipTrigger_TooltipTrigger = fastComponentRef(function(componentProps, forwardedRef) {
|
|
204
|
+
const { render, className, style, handle, payload, disabled: disabledProp, delay, closeOnClick = true, closeDelay, id: idProp, ...elementProps } = componentProps;
|
|
205
|
+
const rootContext = useTooltipRootContext(true);
|
|
206
|
+
const store = handle?.store ?? rootContext;
|
|
207
|
+
if (!store) throw new Error("production" !== process.env.NODE_ENV ? 'Base UI: <Tooltip.Trigger> must be either used within a <Tooltip.Root> component or provided with a handle.' : esm_formatErrorMessage(82));
|
|
208
|
+
const thisTriggerId = useBaseUiId(idProp);
|
|
209
|
+
const isTriggerActive = store.useState('isTriggerActive', thisTriggerId);
|
|
210
|
+
const isOpenedByThisTrigger = store.useState('isOpenedByTrigger', thisTriggerId);
|
|
211
|
+
const floatingRootContext = store.useState('floatingRootContext');
|
|
212
|
+
const triggerElementRef = __rspack_external_react.useRef(null);
|
|
213
|
+
const delayWithDefault = delay ?? 600;
|
|
214
|
+
const closeDelayWithDefault = closeDelay ?? 0;
|
|
215
|
+
const { registerTrigger, isMountedByThisTrigger } = useTriggerDataForwarding(thisTriggerId, triggerElementRef, store, {
|
|
216
|
+
payload,
|
|
217
|
+
closeOnClick,
|
|
218
|
+
closeDelay: closeDelayWithDefault
|
|
219
|
+
});
|
|
220
|
+
const providerContext = useTooltipProviderContext();
|
|
221
|
+
const { delayRef, isInstantPhase, hasProvider } = useDelayGroup(floatingRootContext, {
|
|
222
|
+
open: isOpenedByThisTrigger
|
|
223
|
+
});
|
|
224
|
+
const hoverInteraction = useHoverInteractionSharedState(floatingRootContext);
|
|
225
|
+
store.useSyncedValue('isInstantPhase', isInstantPhase);
|
|
226
|
+
const rootDisabled = store.useState('disabled');
|
|
227
|
+
const disabled = disabledProp ?? rootDisabled;
|
|
228
|
+
const disabledRef = useValueAsRef(disabled);
|
|
229
|
+
const trackCursorAxis = store.useState('trackCursorAxis');
|
|
230
|
+
const disableHoverablePopup = store.useState('disableHoverablePopup');
|
|
231
|
+
const isNestedTriggerHoveredRef = __rspack_external_react.useRef(false);
|
|
232
|
+
const nestedTriggerOpenTimeout = useTimeout();
|
|
233
|
+
const pointerTypeRef = __rspack_external_react.useRef(void 0);
|
|
234
|
+
function getOpenDelay() {
|
|
235
|
+
const providerDelay = providerContext?.delay;
|
|
236
|
+
const groupOpenValue = 'object' == typeof delayRef.current ? delayRef.current.open : void 0;
|
|
237
|
+
let computedOpenDelay = delayWithDefault;
|
|
238
|
+
if (hasProvider) computedOpenDelay = 0 !== groupOpenValue ? delay ?? providerDelay ?? delayWithDefault : 0;
|
|
239
|
+
return computedOpenDelay;
|
|
240
|
+
}
|
|
241
|
+
function isEnabledNestedTriggerTarget(target) {
|
|
242
|
+
const triggerEl = triggerElementRef.current;
|
|
243
|
+
if (!triggerEl || !target) return false;
|
|
244
|
+
const nearestTrigger = closestEnabledTooltipTrigger(target);
|
|
245
|
+
return null !== nearestTrigger && nearestTrigger !== triggerEl && contains(triggerEl, nearestTrigger);
|
|
246
|
+
}
|
|
247
|
+
function detectNestedTriggerHover(target) {
|
|
248
|
+
const nestedTriggerHovered = isEnabledNestedTriggerTarget(target);
|
|
249
|
+
isNestedTriggerHoveredRef.current = nestedTriggerHovered;
|
|
250
|
+
if (nestedTriggerHovered) {
|
|
251
|
+
hoverInteraction.openChangeTimeout.clear();
|
|
252
|
+
hoverInteraction.restTimeout.clear();
|
|
253
|
+
hoverInteraction.restTimeoutPending = false;
|
|
254
|
+
nestedTriggerOpenTimeout.clear();
|
|
255
|
+
}
|
|
256
|
+
return nestedTriggerHovered;
|
|
257
|
+
}
|
|
258
|
+
const hoverProps = useHoverReferenceInteraction(floatingRootContext, {
|
|
259
|
+
enabled: !disabled,
|
|
260
|
+
mouseOnly: true,
|
|
261
|
+
move: false,
|
|
262
|
+
handleClose: disableHoverablePopup || 'both' === trackCursorAxis ? null : safePolygon(),
|
|
263
|
+
restMs: getOpenDelay,
|
|
264
|
+
delay () {
|
|
265
|
+
const closeValue = 'object' == typeof delayRef.current ? delayRef.current.close : void 0;
|
|
266
|
+
let computedCloseDelay = closeDelayWithDefault;
|
|
267
|
+
if (null == closeDelay && hasProvider) computedCloseDelay = closeValue;
|
|
268
|
+
return {
|
|
269
|
+
close: computedCloseDelay
|
|
270
|
+
};
|
|
271
|
+
},
|
|
272
|
+
triggerElementRef,
|
|
273
|
+
isActiveTrigger: isTriggerActive,
|
|
274
|
+
isClosing: ()=>'ending' === store.select('transitionStatus'),
|
|
275
|
+
shouldOpen () {
|
|
276
|
+
return !isNestedTriggerHoveredRef.current;
|
|
277
|
+
}
|
|
278
|
+
});
|
|
279
|
+
const focusProps = useFocus(floatingRootContext, {
|
|
280
|
+
enabled: !disabled
|
|
281
|
+
}).reference;
|
|
282
|
+
const handleNestedTriggerHover = (event)=>{
|
|
283
|
+
const wasNestedTriggerHovered = isNestedTriggerHoveredRef.current;
|
|
284
|
+
const target = getTargetElement(event);
|
|
285
|
+
const nestedTriggerHovered = detectNestedTriggerHover(target);
|
|
286
|
+
const triggerEl = triggerElementRef.current;
|
|
287
|
+
const targetInsideTrigger = triggerEl && target && contains(triggerEl, target);
|
|
288
|
+
if (nestedTriggerHovered && store.select('open') && store.select('lastOpenChangeReason') === triggerHover) return void store.setOpen(false, createChangeEventDetails(triggerHover, event));
|
|
289
|
+
if (wasNestedTriggerHovered && !nestedTriggerHovered && targetInsideTrigger && !disabledRef.current && !store.select('open') && triggerEl && isMouseLikePointerType(pointerTypeRef.current)) {
|
|
290
|
+
const open = ()=>{
|
|
291
|
+
if (!isNestedTriggerHoveredRef.current && !disabledRef.current && !store.select('open')) store.setOpen(true, createChangeEventDetails(triggerHover, event, triggerEl));
|
|
292
|
+
};
|
|
293
|
+
const openDelay = getOpenDelay();
|
|
294
|
+
if (0 === openDelay) {
|
|
295
|
+
nestedTriggerOpenTimeout.clear();
|
|
296
|
+
open();
|
|
297
|
+
} else nestedTriggerOpenTimeout.start(openDelay, open);
|
|
298
|
+
}
|
|
299
|
+
};
|
|
300
|
+
const rootTriggerProps = store.useState('triggerProps', isMountedByThisTrigger);
|
|
301
|
+
const shouldApplyRootTriggerProps = isMountedByThisTrigger || 'none' !== trackCursorAxis;
|
|
302
|
+
const state = {
|
|
303
|
+
open: isOpenedByThisTrigger
|
|
304
|
+
};
|
|
305
|
+
const element = useRenderElement('button', componentProps, {
|
|
306
|
+
state,
|
|
307
|
+
ref: [
|
|
308
|
+
forwardedRef,
|
|
309
|
+
registerTrigger,
|
|
310
|
+
triggerElementRef
|
|
311
|
+
],
|
|
312
|
+
props: [
|
|
313
|
+
hoverProps,
|
|
314
|
+
focusProps,
|
|
315
|
+
shouldApplyRootTriggerProps ? rootTriggerProps : void 0,
|
|
316
|
+
{
|
|
317
|
+
onMouseOver (event) {
|
|
318
|
+
handleNestedTriggerHover(event.nativeEvent);
|
|
319
|
+
},
|
|
320
|
+
onFocus (event) {
|
|
321
|
+
if (isEnabledNestedTriggerTarget(getTargetElement(event.nativeEvent))) event.preventBaseUIHandler();
|
|
322
|
+
},
|
|
323
|
+
onMouseLeave () {
|
|
324
|
+
isNestedTriggerHoveredRef.current = false;
|
|
325
|
+
nestedTriggerOpenTimeout.clear();
|
|
326
|
+
pointerTypeRef.current = void 0;
|
|
327
|
+
},
|
|
328
|
+
onPointerEnter (event) {
|
|
329
|
+
pointerTypeRef.current = event.pointerType;
|
|
330
|
+
},
|
|
331
|
+
onPointerDown (event) {
|
|
332
|
+
pointerTypeRef.current = event.pointerType;
|
|
333
|
+
store.set('closeOnClick', closeOnClick);
|
|
334
|
+
if (closeOnClick && !store.select('open')) store.cancelPendingOpen(event.nativeEvent);
|
|
335
|
+
},
|
|
336
|
+
onClick (event) {
|
|
337
|
+
if (closeOnClick && !store.select('open')) store.cancelPendingOpen(event.nativeEvent);
|
|
338
|
+
},
|
|
339
|
+
id: thisTriggerId,
|
|
340
|
+
[TooltipTriggerDataAttributes_TooltipTriggerDataAttributes.triggerDisabled]: disabled ? '' : void 0,
|
|
341
|
+
[TOOLTIP_TRIGGER_IDENTIFIER]: disabled ? void 0 : ''
|
|
342
|
+
},
|
|
343
|
+
elementProps
|
|
344
|
+
],
|
|
345
|
+
stateAttributesMapping: triggerOpenStateMapping
|
|
346
|
+
});
|
|
347
|
+
return element;
|
|
348
|
+
});
|
|
349
|
+
if ("production" !== process.env.NODE_ENV) TooltipTrigger_TooltipTrigger.displayName = "TooltipTrigger";
|
|
350
|
+
const TooltipPositionerContext = /*#__PURE__*/ __rspack_external_react.createContext(void 0);
|
|
351
|
+
if ("production" !== process.env.NODE_ENV) TooltipPositionerContext.displayName = "TooltipPositionerContext";
|
|
352
|
+
function useTooltipPositionerContext() {
|
|
353
|
+
const context = __rspack_external_react.useContext(TooltipPositionerContext);
|
|
354
|
+
if (void 0 === context) throw new Error("production" !== process.env.NODE_ENV ? 'Base UI: TooltipPositionerContext is missing. TooltipPositioner parts must be placed within <Tooltip.Positioner>.' : esm_formatErrorMessage(71));
|
|
355
|
+
return context;
|
|
356
|
+
}
|
|
357
|
+
const TooltipPortalContext = /*#__PURE__*/ __rspack_external_react.createContext(void 0);
|
|
358
|
+
if ("production" !== process.env.NODE_ENV) TooltipPortalContext.displayName = "TooltipPortalContext";
|
|
359
|
+
function useTooltipPortalContext() {
|
|
360
|
+
const value = __rspack_external_react.useContext(TooltipPortalContext);
|
|
361
|
+
if (void 0 === value) throw new Error("production" !== process.env.NODE_ENV ? 'Base UI: <Tooltip.Portal> is missing.' : esm_formatErrorMessage(70));
|
|
362
|
+
return value;
|
|
363
|
+
}
|
|
364
|
+
const TooltipPositioner_TooltipPositioner = /*#__PURE__*/ __rspack_external_react.forwardRef(function(componentProps, forwardedRef) {
|
|
365
|
+
const { render, className, anchor, positionMethod = 'absolute', side = 'top', align = 'center', sideOffset = 0, alignOffset = 0, collisionBoundary = 'clipping-ancestors', collisionPadding = 5, arrowPadding = 5, sticky = false, disableAnchorTracking = false, collisionAvoidance = POPUP_COLLISION_AVOIDANCE, style, ...elementProps } = componentProps;
|
|
366
|
+
const store = useTooltipRootContext();
|
|
367
|
+
const keepMounted = useTooltipPortalContext();
|
|
368
|
+
const open = store.useState('open');
|
|
369
|
+
const mounted = store.useState('mounted');
|
|
370
|
+
const trackCursorAxis = store.useState('trackCursorAxis');
|
|
371
|
+
const disableHoverablePopup = store.useState('disableHoverablePopup');
|
|
372
|
+
const floatingRootContext = store.useState('floatingRootContext');
|
|
373
|
+
const instantType = store.useState('instantType');
|
|
374
|
+
const transitionStatus = store.useState('transitionStatus');
|
|
375
|
+
const hasViewport = store.useState('hasViewport');
|
|
376
|
+
const positioning = useAnchorPositioning({
|
|
377
|
+
anchor,
|
|
378
|
+
positionMethod,
|
|
379
|
+
floatingRootContext,
|
|
380
|
+
mounted,
|
|
381
|
+
side,
|
|
382
|
+
sideOffset,
|
|
383
|
+
align,
|
|
384
|
+
alignOffset,
|
|
385
|
+
collisionBoundary,
|
|
386
|
+
collisionPadding,
|
|
387
|
+
sticky,
|
|
388
|
+
arrowPadding,
|
|
389
|
+
disableAnchorTracking,
|
|
390
|
+
keepMounted,
|
|
391
|
+
collisionAvoidance,
|
|
392
|
+
adaptiveOrigin: hasViewport ? adaptiveOriginMiddleware_adaptiveOrigin : void 0
|
|
393
|
+
});
|
|
394
|
+
const state = __rspack_external_react.useMemo(()=>({
|
|
395
|
+
open,
|
|
396
|
+
side: positioning.side,
|
|
397
|
+
align: positioning.align,
|
|
398
|
+
anchorHidden: positioning.anchorHidden,
|
|
399
|
+
instant: 'none' !== trackCursorAxis ? 'tracking-cursor' : instantType
|
|
400
|
+
}), [
|
|
401
|
+
open,
|
|
402
|
+
positioning.side,
|
|
403
|
+
positioning.align,
|
|
404
|
+
positioning.anchorHidden,
|
|
405
|
+
trackCursorAxis,
|
|
406
|
+
instantType
|
|
407
|
+
]);
|
|
408
|
+
const element = usePositioner(componentProps, state, {
|
|
409
|
+
styles: positioning.positionerStyles,
|
|
410
|
+
transitionStatus,
|
|
411
|
+
props: elementProps,
|
|
412
|
+
refs: [
|
|
413
|
+
forwardedRef,
|
|
414
|
+
store.useStateSetter('positionerElement')
|
|
415
|
+
],
|
|
416
|
+
hidden: !mounted,
|
|
417
|
+
inert: !open || 'both' === trackCursorAxis || disableHoverablePopup
|
|
418
|
+
});
|
|
419
|
+
return /*#__PURE__*/ jsx(TooltipPositionerContext.Provider, {
|
|
420
|
+
value: positioning,
|
|
421
|
+
children: element
|
|
422
|
+
});
|
|
423
|
+
});
|
|
424
|
+
if ("production" !== process.env.NODE_ENV) TooltipPositioner_TooltipPositioner.displayName = "TooltipPositioner";
|
|
425
|
+
const stateAttributesMapping = {
|
|
426
|
+
...popupStateMapping,
|
|
427
|
+
...transitionStatusMapping
|
|
428
|
+
};
|
|
429
|
+
const TooltipPopup_TooltipPopup = /*#__PURE__*/ __rspack_external_react.forwardRef(function(componentProps, forwardedRef) {
|
|
430
|
+
const { render, className, style, ...elementProps } = componentProps;
|
|
431
|
+
const store = useTooltipRootContext();
|
|
432
|
+
const { side, align } = useTooltipPositionerContext();
|
|
433
|
+
const open = store.useState('open');
|
|
434
|
+
const instantType = store.useState('instantType');
|
|
435
|
+
const transitionStatus = store.useState('transitionStatus');
|
|
436
|
+
const popupProps = store.useState('popupProps');
|
|
437
|
+
const floatingContext = store.useState('floatingRootContext');
|
|
438
|
+
const disabled = store.useState('disabled');
|
|
439
|
+
const closeDelay = store.useState('closeDelay');
|
|
440
|
+
useOpenChangeComplete({
|
|
441
|
+
open,
|
|
442
|
+
ref: store.context.popupRef,
|
|
443
|
+
onComplete () {
|
|
444
|
+
if (open) store.context.onOpenChangeComplete?.(true);
|
|
445
|
+
}
|
|
446
|
+
});
|
|
447
|
+
useHoverFloatingInteraction(floatingContext, {
|
|
448
|
+
enabled: !disabled,
|
|
449
|
+
closeDelay
|
|
450
|
+
});
|
|
451
|
+
const setPopupElement = store.useStateSetter('popupElement');
|
|
452
|
+
const state = {
|
|
453
|
+
open,
|
|
454
|
+
side,
|
|
455
|
+
align,
|
|
456
|
+
instant: instantType,
|
|
457
|
+
transitionStatus
|
|
458
|
+
};
|
|
459
|
+
const element = useRenderElement('div', componentProps, {
|
|
460
|
+
state,
|
|
461
|
+
ref: [
|
|
462
|
+
forwardedRef,
|
|
463
|
+
store.context.popupRef,
|
|
464
|
+
setPopupElement
|
|
465
|
+
],
|
|
466
|
+
props: [
|
|
467
|
+
popupProps,
|
|
468
|
+
getDisabledMountTransitionStyles(transitionStatus),
|
|
469
|
+
elementProps
|
|
470
|
+
],
|
|
471
|
+
stateAttributesMapping: stateAttributesMapping
|
|
472
|
+
});
|
|
473
|
+
return element;
|
|
474
|
+
});
|
|
475
|
+
if ("production" !== process.env.NODE_ENV) TooltipPopup_TooltipPopup.displayName = "TooltipPopup";
|
|
476
|
+
const TooltipArrow_TooltipArrow = /*#__PURE__*/ __rspack_external_react.forwardRef(function(componentProps, forwardedRef) {
|
|
477
|
+
const { render, className, style, ...elementProps } = componentProps;
|
|
478
|
+
const store = useTooltipRootContext();
|
|
479
|
+
const { arrowRef, side, align, arrowUncentered, arrowStyles } = useTooltipPositionerContext();
|
|
480
|
+
const open = store.useState('open');
|
|
481
|
+
const instantType = store.useState('instantType');
|
|
482
|
+
const state = {
|
|
483
|
+
open,
|
|
484
|
+
side,
|
|
485
|
+
align,
|
|
486
|
+
uncentered: arrowUncentered,
|
|
487
|
+
instant: instantType
|
|
488
|
+
};
|
|
489
|
+
const element = useRenderElement('div', componentProps, {
|
|
490
|
+
state,
|
|
491
|
+
ref: [
|
|
492
|
+
forwardedRef,
|
|
493
|
+
arrowRef
|
|
494
|
+
],
|
|
495
|
+
props: [
|
|
496
|
+
{
|
|
497
|
+
style: arrowStyles,
|
|
498
|
+
'aria-hidden': true
|
|
499
|
+
},
|
|
500
|
+
elementProps
|
|
501
|
+
],
|
|
502
|
+
stateAttributesMapping: popupStateMapping
|
|
503
|
+
});
|
|
504
|
+
return element;
|
|
505
|
+
});
|
|
506
|
+
if ("production" !== process.env.NODE_ENV) TooltipArrow_TooltipArrow.displayName = "TooltipArrow";
|
|
507
|
+
let TooltipViewportCssVars_TooltipViewportCssVars = /*#__PURE__*/ function(TooltipViewportCssVars) {
|
|
508
|
+
TooltipViewportCssVars["popupWidth"] = "--popup-width";
|
|
509
|
+
TooltipViewportCssVars["popupHeight"] = "--popup-height";
|
|
510
|
+
return TooltipViewportCssVars;
|
|
511
|
+
}({});
|
|
512
|
+
const TooltipViewport_stateAttributesMapping = {
|
|
513
|
+
activationDirection: (value)=>value ? {
|
|
514
|
+
'data-activation-direction': value
|
|
515
|
+
} : null
|
|
516
|
+
};
|
|
517
|
+
const TooltipViewport_TooltipViewport = /*#__PURE__*/ __rspack_external_react.forwardRef(function(componentProps, forwardedRef) {
|
|
518
|
+
const { render, className, style, children, ...elementProps } = componentProps;
|
|
519
|
+
const store = useTooltipRootContext();
|
|
520
|
+
const positioner = useTooltipPositionerContext();
|
|
521
|
+
const instantType = store.useState('instantType');
|
|
522
|
+
const { children: childrenToRender, state: viewportState } = usePopupViewport({
|
|
523
|
+
store,
|
|
524
|
+
side: positioner.side,
|
|
525
|
+
cssVars: TooltipViewportCssVars_TooltipViewportCssVars,
|
|
526
|
+
children
|
|
527
|
+
});
|
|
528
|
+
const state = {
|
|
529
|
+
activationDirection: viewportState.activationDirection,
|
|
530
|
+
transitioning: viewportState.transitioning,
|
|
531
|
+
instant: instantType
|
|
532
|
+
};
|
|
533
|
+
return useRenderElement('div', componentProps, {
|
|
534
|
+
state,
|
|
535
|
+
ref: forwardedRef,
|
|
536
|
+
props: [
|
|
537
|
+
elementProps,
|
|
538
|
+
{
|
|
539
|
+
children: childrenToRender
|
|
540
|
+
}
|
|
541
|
+
],
|
|
542
|
+
stateAttributesMapping: TooltipViewport_stateAttributesMapping
|
|
543
|
+
});
|
|
544
|
+
});
|
|
545
|
+
if ("production" !== process.env.NODE_ENV) TooltipViewport_TooltipViewport.displayName = "TooltipViewport";
|
|
546
|
+
function createVirtualElement(domElement, data) {
|
|
547
|
+
let offsetX = null;
|
|
548
|
+
let offsetY = null;
|
|
549
|
+
let isAutoUpdateEvent = false;
|
|
550
|
+
return {
|
|
551
|
+
contextElement: domElement || void 0,
|
|
552
|
+
getBoundingClientRect () {
|
|
553
|
+
const domRect = domElement?.getBoundingClientRect() || {
|
|
554
|
+
width: 0,
|
|
555
|
+
height: 0,
|
|
556
|
+
x: 0,
|
|
557
|
+
y: 0
|
|
558
|
+
};
|
|
559
|
+
const isXAxis = 'x' === data.axis || 'both' === data.axis;
|
|
560
|
+
const isYAxis = 'y' === data.axis || 'both' === data.axis;
|
|
561
|
+
const canTrackCursorOnAutoUpdate = [
|
|
562
|
+
'mouseenter',
|
|
563
|
+
'mousemove'
|
|
564
|
+
].includes(data.dataRef.current.openEvent?.type || '') && 'touch' !== data.pointerType;
|
|
565
|
+
let width = domRect.width;
|
|
566
|
+
let height = domRect.height;
|
|
567
|
+
let x = domRect.x;
|
|
568
|
+
let y = domRect.y;
|
|
569
|
+
if (null == offsetX && data.x && isXAxis) offsetX = domRect.x - data.x;
|
|
570
|
+
if (null == offsetY && data.y && isYAxis) offsetY = domRect.y - data.y;
|
|
571
|
+
x -= offsetX || 0;
|
|
572
|
+
y -= offsetY || 0;
|
|
573
|
+
width = 0;
|
|
574
|
+
height = 0;
|
|
575
|
+
if (!isAutoUpdateEvent || canTrackCursorOnAutoUpdate) {
|
|
576
|
+
width = 'y' === data.axis ? domRect.width : 0;
|
|
577
|
+
height = 'x' === data.axis ? domRect.height : 0;
|
|
578
|
+
x = isXAxis && null != data.x ? data.x : x;
|
|
579
|
+
y = isYAxis && null != data.y ? data.y : y;
|
|
580
|
+
} else if (isAutoUpdateEvent && !canTrackCursorOnAutoUpdate) {
|
|
581
|
+
height = 'x' === data.axis ? domRect.height : height;
|
|
582
|
+
width = 'y' === data.axis ? domRect.width : width;
|
|
583
|
+
}
|
|
584
|
+
isAutoUpdateEvent = true;
|
|
585
|
+
return {
|
|
586
|
+
width,
|
|
587
|
+
height,
|
|
588
|
+
x,
|
|
589
|
+
y,
|
|
590
|
+
top: y,
|
|
591
|
+
right: x + width,
|
|
592
|
+
bottom: y + height,
|
|
593
|
+
left: x
|
|
594
|
+
};
|
|
595
|
+
}
|
|
596
|
+
};
|
|
597
|
+
}
|
|
598
|
+
function isMouseBasedEvent(event) {
|
|
599
|
+
return null != event && null != event.clientX;
|
|
600
|
+
}
|
|
601
|
+
function useClientPoint(context, props = {}) {
|
|
602
|
+
const { enabled = true, axis = 'both' } = props;
|
|
603
|
+
const store = 'rootStore' in context ? context.rootStore : context;
|
|
604
|
+
const open = store.useState('open');
|
|
605
|
+
const floating = store.useState('floatingElement');
|
|
606
|
+
const domReference = store.useState('domReferenceElement');
|
|
607
|
+
const dataRef = store.context.dataRef;
|
|
608
|
+
const initialRef = __rspack_external_react.useRef(false);
|
|
609
|
+
const cleanupListenerRef = __rspack_external_react.useRef(null);
|
|
610
|
+
const [pointerType, setPointerType] = __rspack_external_react.useState();
|
|
611
|
+
const [reactive, setReactive] = __rspack_external_react.useState([]);
|
|
612
|
+
const resetReference = useStableCallback((reference)=>{
|
|
613
|
+
store.set('positionReference', reference);
|
|
614
|
+
});
|
|
615
|
+
const setReference = useStableCallback((newX, newY, referenceElement)=>{
|
|
616
|
+
if (initialRef.current) return;
|
|
617
|
+
if (dataRef.current.openEvent && !isMouseBasedEvent(dataRef.current.openEvent)) return;
|
|
618
|
+
store.set('positionReference', createVirtualElement(referenceElement ?? domReference, {
|
|
619
|
+
x: newX,
|
|
620
|
+
y: newY,
|
|
621
|
+
axis,
|
|
622
|
+
dataRef,
|
|
623
|
+
pointerType
|
|
624
|
+
}));
|
|
625
|
+
});
|
|
626
|
+
const handleReferenceEnterOrMove = useStableCallback((event)=>{
|
|
627
|
+
if (open) {
|
|
628
|
+
if (!cleanupListenerRef.current) {
|
|
629
|
+
setReference(event.clientX, event.clientY, event.currentTarget);
|
|
630
|
+
setReactive([]);
|
|
631
|
+
}
|
|
632
|
+
} else setReference(event.clientX, event.clientY, event.currentTarget);
|
|
633
|
+
});
|
|
634
|
+
const openCheck = isMouseLikePointerType(pointerType) ? floating : open;
|
|
635
|
+
__rspack_external_react.useEffect(()=>{
|
|
636
|
+
if (!enabled) return void resetReference(domReference);
|
|
637
|
+
if (!openCheck) return;
|
|
638
|
+
function cleanupListener() {
|
|
639
|
+
cleanupListenerRef.current?.();
|
|
640
|
+
cleanupListenerRef.current = null;
|
|
641
|
+
}
|
|
642
|
+
const win = getWindow(floating);
|
|
643
|
+
function handleMouseMove(event) {
|
|
644
|
+
const target = getTarget(event);
|
|
645
|
+
if (contains(floating, target)) cleanupListener();
|
|
646
|
+
else setReference(event.clientX, event.clientY);
|
|
647
|
+
}
|
|
648
|
+
if (!dataRef.current.openEvent || isMouseBasedEvent(dataRef.current.openEvent)) cleanupListenerRef.current = addEventListener(win, 'mousemove', handleMouseMove);
|
|
649
|
+
else resetReference(domReference);
|
|
650
|
+
return cleanupListener;
|
|
651
|
+
}, [
|
|
652
|
+
openCheck,
|
|
653
|
+
enabled,
|
|
654
|
+
floating,
|
|
655
|
+
dataRef,
|
|
656
|
+
domReference,
|
|
657
|
+
store,
|
|
658
|
+
setReference,
|
|
659
|
+
resetReference,
|
|
660
|
+
reactive
|
|
661
|
+
]);
|
|
662
|
+
__rspack_external_react.useEffect(()=>()=>{
|
|
663
|
+
store.set('positionReference', null);
|
|
664
|
+
}, [
|
|
665
|
+
store
|
|
666
|
+
]);
|
|
667
|
+
__rspack_external_react.useEffect(()=>{
|
|
668
|
+
if (enabled && !floating) initialRef.current = false;
|
|
669
|
+
}, [
|
|
670
|
+
enabled,
|
|
671
|
+
floating
|
|
672
|
+
]);
|
|
673
|
+
__rspack_external_react.useEffect(()=>{
|
|
674
|
+
if (!enabled && open) initialRef.current = true;
|
|
675
|
+
}, [
|
|
676
|
+
enabled,
|
|
677
|
+
open
|
|
678
|
+
]);
|
|
679
|
+
const reference = __rspack_external_react.useMemo(()=>{
|
|
680
|
+
function setPointerTypeRef(event) {
|
|
681
|
+
setPointerType(event.pointerType);
|
|
682
|
+
}
|
|
683
|
+
return {
|
|
684
|
+
onPointerDown: setPointerTypeRef,
|
|
685
|
+
onPointerEnter: setPointerTypeRef,
|
|
686
|
+
onMouseMove: handleReferenceEnterOrMove,
|
|
687
|
+
onMouseEnter: handleReferenceEnterOrMove
|
|
688
|
+
};
|
|
689
|
+
}, [
|
|
690
|
+
handleReferenceEnterOrMove
|
|
691
|
+
]);
|
|
692
|
+
return __rspack_external_react.useMemo(()=>enabled ? {
|
|
693
|
+
reference,
|
|
694
|
+
trigger: reference
|
|
695
|
+
} : {}, [
|
|
696
|
+
enabled,
|
|
697
|
+
reference
|
|
698
|
+
]);
|
|
699
|
+
}
|
|
700
|
+
const selectors = {
|
|
701
|
+
...popupStoreSelectors,
|
|
702
|
+
disabled: createSelector((state)=>state.disabled),
|
|
703
|
+
instantType: createSelector((state)=>state.instantType),
|
|
704
|
+
isInstantPhase: createSelector((state)=>state.isInstantPhase),
|
|
705
|
+
trackCursorAxis: createSelector((state)=>state.trackCursorAxis),
|
|
706
|
+
disableHoverablePopup: createSelector((state)=>state.disableHoverablePopup),
|
|
707
|
+
lastOpenChangeReason: createSelector((state)=>state.openChangeReason),
|
|
708
|
+
closeOnClick: createSelector((state)=>state.closeOnClick),
|
|
709
|
+
closeDelay: createSelector((state)=>state.closeDelay),
|
|
710
|
+
hasViewport: createSelector((state)=>state.hasViewport)
|
|
711
|
+
};
|
|
712
|
+
class TooltipStore extends ReactStore {
|
|
713
|
+
constructor(initialState, floatingId, nested = false){
|
|
714
|
+
const triggerElements = new PopupTriggerMap();
|
|
715
|
+
const state = {
|
|
716
|
+
...createInitialState(),
|
|
717
|
+
...initialState
|
|
718
|
+
};
|
|
719
|
+
state.floatingRootContext = createPopupFloatingRootContext(triggerElements, floatingId, nested);
|
|
720
|
+
super(state, {
|
|
721
|
+
popupRef: /*#__PURE__*/ __rspack_external_react.createRef(),
|
|
722
|
+
onOpenChange: void 0,
|
|
723
|
+
onOpenChangeComplete: void 0,
|
|
724
|
+
triggerElements
|
|
725
|
+
}, selectors);
|
|
726
|
+
}
|
|
727
|
+
setOpen = (nextOpen, eventDetails)=>{
|
|
728
|
+
const reason = eventDetails.reason;
|
|
729
|
+
const isHover = reason === triggerHover;
|
|
730
|
+
const isFocusOpen = nextOpen && reason === triggerFocus;
|
|
731
|
+
const isDismissClose = !nextOpen && (reason === triggerPress || reason === escapeKey);
|
|
732
|
+
eventDetails.preventUnmountOnClose = ()=>{
|
|
733
|
+
this.set('preventUnmountingOnClose', true);
|
|
734
|
+
};
|
|
735
|
+
this.context.onOpenChange?.(nextOpen, eventDetails);
|
|
736
|
+
if (eventDetails.isCanceled) return;
|
|
737
|
+
this.state.floatingRootContext.dispatchOpenChange(nextOpen, eventDetails);
|
|
738
|
+
const changeState = ()=>{
|
|
739
|
+
const updatedState = {
|
|
740
|
+
open: nextOpen,
|
|
741
|
+
openChangeReason: reason
|
|
742
|
+
};
|
|
743
|
+
if (isFocusOpen) updatedState.instantType = 'focus';
|
|
744
|
+
else if (isDismissClose) updatedState.instantType = 'dismiss';
|
|
745
|
+
else if (reason === triggerHover) updatedState.instantType = void 0;
|
|
746
|
+
setOpenTriggerState(updatedState, nextOpen, eventDetails.trigger);
|
|
747
|
+
this.update(updatedState);
|
|
748
|
+
};
|
|
749
|
+
if (isHover) __rspack_external_react_dom_7136dc57.flushSync(changeState);
|
|
750
|
+
else changeState();
|
|
751
|
+
};
|
|
752
|
+
cancelPendingOpen(event) {
|
|
753
|
+
this.state.floatingRootContext.dispatchOpenChange(false, createChangeEventDetails(triggerPress, event));
|
|
754
|
+
}
|
|
755
|
+
static useStore(externalStore, initialState) {
|
|
756
|
+
const store = usePopupStore(externalStore, (floatingId, nested)=>new TooltipStore(initialState, floatingId, nested)).store;
|
|
757
|
+
return store;
|
|
758
|
+
}
|
|
759
|
+
}
|
|
760
|
+
function createInitialState() {
|
|
761
|
+
return {
|
|
762
|
+
...createInitialPopupStoreState(),
|
|
763
|
+
disabled: false,
|
|
764
|
+
instantType: void 0,
|
|
765
|
+
isInstantPhase: false,
|
|
766
|
+
trackCursorAxis: 'none',
|
|
767
|
+
disableHoverablePopup: false,
|
|
768
|
+
openChangeReason: null,
|
|
769
|
+
closeOnClick: true,
|
|
770
|
+
closeDelay: 0,
|
|
771
|
+
hasViewport: false
|
|
772
|
+
};
|
|
773
|
+
}
|
|
774
|
+
const TooltipRoot_TooltipRoot = fastComponent(function(props) {
|
|
775
|
+
const { disabled = false, defaultOpen = false, open: openProp, disableHoverablePopup = false, trackCursorAxis = 'none', actionsRef, onOpenChange, onOpenChangeComplete, handle, triggerId: triggerIdProp, defaultTriggerId: defaultTriggerIdProp = null, children } = props;
|
|
776
|
+
const store = TooltipStore.useStore(handle?.store, {
|
|
777
|
+
open: defaultOpen,
|
|
778
|
+
openProp,
|
|
779
|
+
activeTriggerId: defaultTriggerIdProp,
|
|
780
|
+
triggerIdProp
|
|
781
|
+
});
|
|
782
|
+
useOnFirstRender(()=>{
|
|
783
|
+
if (void 0 === openProp && false === store.state.open && true === defaultOpen) store.update({
|
|
784
|
+
open: true,
|
|
785
|
+
activeTriggerId: defaultTriggerIdProp
|
|
786
|
+
});
|
|
787
|
+
});
|
|
788
|
+
store.useControlledProp('openProp', openProp);
|
|
789
|
+
store.useControlledProp('triggerIdProp', triggerIdProp);
|
|
790
|
+
store.useContextCallback('onOpenChange', onOpenChange);
|
|
791
|
+
store.useContextCallback('onOpenChangeComplete', onOpenChangeComplete);
|
|
792
|
+
const openState = store.useState('open');
|
|
793
|
+
const open = !disabled && openState;
|
|
794
|
+
const activeTriggerId = store.useState('activeTriggerId');
|
|
795
|
+
const mounted = store.useState('mounted');
|
|
796
|
+
const payload = store.useState('payload');
|
|
797
|
+
store.useSyncedValues({
|
|
798
|
+
trackCursorAxis,
|
|
799
|
+
disableHoverablePopup
|
|
800
|
+
});
|
|
801
|
+
store.useSyncedValue('disabled', disabled);
|
|
802
|
+
useImplicitActiveTrigger(store);
|
|
803
|
+
const { forceUnmount, transitionStatus } = useOpenStateTransitions(open, store);
|
|
804
|
+
const isInstantPhase = store.useState('isInstantPhase');
|
|
805
|
+
const instantType = store.useState('instantType');
|
|
806
|
+
const lastOpenChangeReason = store.useState('lastOpenChangeReason');
|
|
807
|
+
const previousInstantTypeRef = __rspack_external_react.useRef(null);
|
|
808
|
+
useIsoLayoutEffect(()=>{
|
|
809
|
+
if (openState && disabled) store.setOpen(false, createChangeEventDetails(reason_parts_disabled));
|
|
810
|
+
}, [
|
|
811
|
+
openState,
|
|
812
|
+
disabled,
|
|
813
|
+
store
|
|
814
|
+
]);
|
|
815
|
+
useIsoLayoutEffect(()=>{
|
|
816
|
+
if ('ending' === transitionStatus && "none" === lastOpenChangeReason || 'ending' !== transitionStatus && isInstantPhase) {
|
|
817
|
+
if ('delay' !== instantType) previousInstantTypeRef.current = instantType;
|
|
818
|
+
store.set('instantType', 'delay');
|
|
819
|
+
} else if (null !== previousInstantTypeRef.current) {
|
|
820
|
+
store.set('instantType', previousInstantTypeRef.current);
|
|
821
|
+
previousInstantTypeRef.current = null;
|
|
822
|
+
}
|
|
823
|
+
}, [
|
|
824
|
+
transitionStatus,
|
|
825
|
+
isInstantPhase,
|
|
826
|
+
lastOpenChangeReason,
|
|
827
|
+
instantType,
|
|
828
|
+
store
|
|
829
|
+
]);
|
|
830
|
+
useIsoLayoutEffect(()=>{
|
|
831
|
+
if (open) {
|
|
832
|
+
if (null == activeTriggerId) store.set('payload', void 0);
|
|
833
|
+
}
|
|
834
|
+
}, [
|
|
835
|
+
store,
|
|
836
|
+
activeTriggerId,
|
|
837
|
+
open
|
|
838
|
+
]);
|
|
839
|
+
const handleImperativeClose = __rspack_external_react.useCallback(()=>{
|
|
840
|
+
store.setOpen(false, createChangeEventDetails(imperativeAction));
|
|
841
|
+
}, [
|
|
842
|
+
store
|
|
843
|
+
]);
|
|
844
|
+
__rspack_external_react.useImperativeHandle(actionsRef, ()=>({
|
|
845
|
+
unmount: forceUnmount,
|
|
846
|
+
close: handleImperativeClose
|
|
847
|
+
}), [
|
|
848
|
+
forceUnmount,
|
|
849
|
+
handleImperativeClose
|
|
850
|
+
]);
|
|
851
|
+
const shouldRenderInteractions = open || mounted || !disabled && 'none' !== trackCursorAxis;
|
|
852
|
+
return /*#__PURE__*/ jsxs(TooltipRootContext.Provider, {
|
|
853
|
+
value: store,
|
|
854
|
+
children: [
|
|
855
|
+
shouldRenderInteractions && /*#__PURE__*/ jsx(TooltipInteractions, {
|
|
856
|
+
store: store,
|
|
857
|
+
disabled: disabled,
|
|
858
|
+
trackCursorAxis: trackCursorAxis
|
|
859
|
+
}),
|
|
860
|
+
'function' == typeof children ? children({
|
|
861
|
+
payload
|
|
862
|
+
}) : children
|
|
863
|
+
]
|
|
864
|
+
});
|
|
865
|
+
});
|
|
866
|
+
if ("production" !== process.env.NODE_ENV) TooltipRoot_TooltipRoot.displayName = "TooltipRoot";
|
|
867
|
+
function TooltipInteractions({ store, disabled, trackCursorAxis }) {
|
|
868
|
+
const floatingRootContext = store.useState('floatingRootContext');
|
|
869
|
+
const dismiss = useDismiss(floatingRootContext, {
|
|
870
|
+
enabled: !disabled,
|
|
871
|
+
referencePress: ()=>store.select('closeOnClick')
|
|
872
|
+
});
|
|
873
|
+
const clientPoint = useClientPoint(floatingRootContext, {
|
|
874
|
+
enabled: !disabled && 'none' !== trackCursorAxis,
|
|
875
|
+
axis: 'none' === trackCursorAxis ? void 0 : trackCursorAxis
|
|
876
|
+
});
|
|
877
|
+
const activeTriggerProps = __rspack_external_react.useMemo(()=>mergeProps(clientPoint.reference, dismiss.reference), [
|
|
878
|
+
clientPoint.reference,
|
|
879
|
+
dismiss.reference
|
|
880
|
+
]);
|
|
881
|
+
const inactiveTriggerProps = __rspack_external_react.useMemo(()=>mergeProps(clientPoint.trigger, dismiss.trigger), [
|
|
882
|
+
clientPoint.trigger,
|
|
883
|
+
dismiss.trigger
|
|
884
|
+
]);
|
|
885
|
+
const popupProps = __rspack_external_react.useMemo(()=>mergeProps(FOCUSABLE_POPUP_PROPS, clientPoint.floating, dismiss.floating), [
|
|
886
|
+
clientPoint.floating,
|
|
887
|
+
dismiss.floating
|
|
888
|
+
]);
|
|
889
|
+
usePopupInteractionProps(store, {
|
|
890
|
+
activeTriggerProps,
|
|
891
|
+
inactiveTriggerProps,
|
|
892
|
+
popupProps
|
|
893
|
+
});
|
|
894
|
+
return null;
|
|
895
|
+
}
|
|
896
|
+
const TooltipPortal_TooltipPortal = /*#__PURE__*/ __rspack_external_react.forwardRef(function(props, forwardedRef) {
|
|
897
|
+
const { keepMounted = false, ...portalProps } = props;
|
|
898
|
+
const store = useTooltipRootContext();
|
|
899
|
+
const mounted = store.useState('mounted');
|
|
900
|
+
const shouldRender = mounted || keepMounted;
|
|
901
|
+
if (!shouldRender) return null;
|
|
902
|
+
return /*#__PURE__*/ jsx(TooltipPortalContext.Provider, {
|
|
903
|
+
value: keepMounted,
|
|
904
|
+
children: /*#__PURE__*/ jsx(FloatingPortalLite_FloatingPortalLite, {
|
|
905
|
+
ref: forwardedRef,
|
|
906
|
+
...portalProps
|
|
907
|
+
})
|
|
908
|
+
});
|
|
909
|
+
});
|
|
910
|
+
if ("production" !== process.env.NODE_ENV) TooltipPortal_TooltipPortal.displayName = "TooltipPortal";
|
|
911
|
+
const TooltipProvider_TooltipProvider = function(props) {
|
|
912
|
+
const { delay, closeDelay, timeout = 400 } = props;
|
|
913
|
+
const contextValue = __rspack_external_react.useMemo(()=>({
|
|
914
|
+
delay,
|
|
915
|
+
closeDelay
|
|
916
|
+
}), [
|
|
917
|
+
delay,
|
|
918
|
+
closeDelay
|
|
919
|
+
]);
|
|
920
|
+
const delayValue = __rspack_external_react.useMemo(()=>({
|
|
921
|
+
open: delay,
|
|
922
|
+
close: closeDelay
|
|
923
|
+
}), [
|
|
924
|
+
delay,
|
|
925
|
+
closeDelay
|
|
926
|
+
]);
|
|
927
|
+
return /*#__PURE__*/ jsx(TooltipProviderContext.Provider, {
|
|
928
|
+
value: contextValue,
|
|
929
|
+
children: /*#__PURE__*/ jsx(FloatingDelayGroup, {
|
|
930
|
+
delay: delayValue,
|
|
931
|
+
timeoutMs: timeout,
|
|
932
|
+
children: props.children
|
|
933
|
+
})
|
|
934
|
+
});
|
|
935
|
+
};
|
|
936
|
+
if ("production" !== process.env.NODE_ENV) TooltipProvider_TooltipProvider.displayName = "TooltipProvider";
|
|
937
|
+
class TooltipHandle {
|
|
938
|
+
constructor(){
|
|
939
|
+
this.store = new TooltipStore();
|
|
940
|
+
}
|
|
941
|
+
open(triggerId) {
|
|
942
|
+
const triggerElement = triggerId ? this.store.context.triggerElements.getById(triggerId) : void 0;
|
|
943
|
+
if (triggerId && !triggerElement) throw new Error("production" !== process.env.NODE_ENV ? `Base UI: TooltipHandle.open: No trigger found with id "${triggerId}".` : esm_formatErrorMessage(81, triggerId));
|
|
944
|
+
this.store.setOpen(true, createChangeEventDetails(imperativeAction, void 0, triggerElement));
|
|
945
|
+
}
|
|
946
|
+
close() {
|
|
947
|
+
this.store.setOpen(false, createChangeEventDetails(imperativeAction, void 0, void 0));
|
|
948
|
+
}
|
|
949
|
+
get isOpen() {
|
|
950
|
+
return this.store.select('open');
|
|
951
|
+
}
|
|
952
|
+
}
|
|
953
|
+
function createTooltipHandle() {
|
|
954
|
+
return new TooltipHandle();
|
|
955
|
+
}
|
|
5
956
|
const Tooltip_module = {
|
|
6
957
|
trigger: "trigger-xVlrp2",
|
|
7
958
|
positioner: "positioner-sRKHj5",
|
|
@@ -9,41 +960,41 @@ const Tooltip_module = {
|
|
|
9
960
|
arrow: "arrow-aUAEXL"
|
|
10
961
|
};
|
|
11
962
|
function Trigger({ className, ...props }) {
|
|
12
|
-
return /*#__PURE__*/ jsx(
|
|
963
|
+
return /*#__PURE__*/ jsx(TooltipTrigger_TooltipTrigger, {
|
|
13
964
|
...props,
|
|
14
965
|
className: clsx(Tooltip_module.trigger, className)
|
|
15
966
|
});
|
|
16
967
|
}
|
|
17
|
-
const Positioner = /*#__PURE__*/ __rspack_external_react.forwardRef(({ className, ...props }, ref)=>/*#__PURE__*/ jsx(
|
|
968
|
+
const Positioner = /*#__PURE__*/ __rspack_external_react.forwardRef(({ className, ...props }, ref)=>/*#__PURE__*/ jsx(TooltipPositioner_TooltipPositioner, {
|
|
18
969
|
ref: ref,
|
|
19
970
|
className: clsx(Tooltip_module.positioner, className),
|
|
20
971
|
...props
|
|
21
972
|
}));
|
|
22
|
-
const Popup = /*#__PURE__*/ __rspack_external_react.forwardRef(({ className, ...props }, ref)=>/*#__PURE__*/ jsx(
|
|
973
|
+
const Popup = /*#__PURE__*/ __rspack_external_react.forwardRef(({ className, ...props }, ref)=>/*#__PURE__*/ jsx(TooltipPopup_TooltipPopup, {
|
|
23
974
|
ref: ref,
|
|
24
975
|
className: clsx(Tooltip_module.popup, className),
|
|
25
976
|
...props
|
|
26
977
|
}));
|
|
27
|
-
const Arrow = /*#__PURE__*/ __rspack_external_react.forwardRef(({ className, ...props }, ref)=>/*#__PURE__*/ jsx(
|
|
978
|
+
const Arrow = /*#__PURE__*/ __rspack_external_react.forwardRef(({ className, ...props }, ref)=>/*#__PURE__*/ jsx(TooltipArrow_TooltipArrow, {
|
|
28
979
|
ref: ref,
|
|
29
980
|
className: clsx(Tooltip_module.arrow, className),
|
|
30
981
|
...props
|
|
31
982
|
}));
|
|
32
|
-
const Viewport = /*#__PURE__*/ __rspack_external_react.forwardRef(({ className, ...props }, ref)=>/*#__PURE__*/ jsx(
|
|
983
|
+
const Viewport = /*#__PURE__*/ __rspack_external_react.forwardRef(({ className, ...props }, ref)=>/*#__PURE__*/ jsx(TooltipViewport_TooltipViewport, {
|
|
33
984
|
ref: ref,
|
|
34
985
|
className: clsx(Tooltip_module.viewport, className),
|
|
35
986
|
...props
|
|
36
987
|
}));
|
|
37
|
-
const
|
|
988
|
+
const Tooltip = {
|
|
38
989
|
Trigger: Trigger,
|
|
39
990
|
Positioner: Positioner,
|
|
40
991
|
Popup: Popup,
|
|
41
992
|
Arrow: Arrow,
|
|
42
993
|
Viewport: Viewport,
|
|
43
|
-
Root:
|
|
44
|
-
Portal:
|
|
45
|
-
Provider:
|
|
46
|
-
Handle:
|
|
47
|
-
createHandle:
|
|
994
|
+
Root: TooltipRoot_TooltipRoot,
|
|
995
|
+
Portal: TooltipPortal_TooltipPortal,
|
|
996
|
+
Provider: TooltipProvider_TooltipProvider,
|
|
997
|
+
Handle: TooltipHandle,
|
|
998
|
+
createHandle: createTooltipHandle
|
|
48
999
|
};
|
|
49
|
-
export {
|
|
1000
|
+
export { Tooltip };
|