@radix-ui/react-tooltip 0.1.8-rc.9 → 1.0.0-rc.1
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/index.d.ts +24 -7
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +309 -79
- package/dist/index.js.map +1 -1
- package/dist/index.module.js +296 -66
- package/dist/index.module.js.map +1 -1
- package/package.json +13 -13
package/dist/index.module.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import $8wepK$babelruntimehelpersesmextends from "@babel/runtime/helpers/esm/extends";
|
|
2
|
-
import {useState as $8wepK$useState, useRef as $8wepK$useRef, useEffect as $8wepK$useEffect, createElement as $8wepK$createElement, useCallback as $8wepK$useCallback, useMemo as $8wepK$useMemo, forwardRef as $8wepK$forwardRef
|
|
2
|
+
import {useState as $8wepK$useState, useRef as $8wepK$useRef, useEffect as $8wepK$useEffect, createElement as $8wepK$createElement, useCallback as $8wepK$useCallback, useMemo as $8wepK$useMemo, forwardRef as $8wepK$forwardRef} from "react";
|
|
3
3
|
import {composeEventHandlers as $8wepK$composeEventHandlers} from "@radix-ui/primitive";
|
|
4
4
|
import {useComposedRefs as $8wepK$useComposedRefs} from "@radix-ui/react-compose-refs";
|
|
5
5
|
import {createContextScope as $8wepK$createContextScope} from "@radix-ui/react-context";
|
|
@@ -13,22 +13,6 @@ import {Slottable as $8wepK$Slottable} from "@radix-ui/react-slot";
|
|
|
13
13
|
import {useControllableState as $8wepK$useControllableState} from "@radix-ui/react-use-controllable-state";
|
|
14
14
|
import {Root as $8wepK$Root1} from "@radix-ui/react-visually-hidden";
|
|
15
15
|
|
|
16
|
-
function $parcel$export(e, n, v, s) {
|
|
17
|
-
Object.defineProperty(e, n, {get: v, set: s, enumerable: true, configurable: true});
|
|
18
|
-
}
|
|
19
|
-
var $a093c7e1ec25a057$exports = {};
|
|
20
|
-
|
|
21
|
-
$parcel$export($a093c7e1ec25a057$exports, "createTooltipScope", () => $a093c7e1ec25a057$export$1c540a2224f0d865);
|
|
22
|
-
$parcel$export($a093c7e1ec25a057$exports, "TooltipProvider", () => $a093c7e1ec25a057$export$f78649fb9ca566b8);
|
|
23
|
-
$parcel$export($a093c7e1ec25a057$exports, "Tooltip", () => $a093c7e1ec25a057$export$28c660c63b792dea);
|
|
24
|
-
$parcel$export($a093c7e1ec25a057$exports, "TooltipTrigger", () => $a093c7e1ec25a057$export$8c610744efcf8a1d);
|
|
25
|
-
$parcel$export($a093c7e1ec25a057$exports, "TooltipContent", () => $a093c7e1ec25a057$export$e9003e2be37ec060);
|
|
26
|
-
$parcel$export($a093c7e1ec25a057$exports, "TooltipArrow", () => $a093c7e1ec25a057$export$c27ee0ad710f7559);
|
|
27
|
-
$parcel$export($a093c7e1ec25a057$exports, "Provider", () => $a093c7e1ec25a057$export$2881499e37b75b9a);
|
|
28
|
-
$parcel$export($a093c7e1ec25a057$exports, "Root", () => $a093c7e1ec25a057$export$be92b6f5f03c0fe9);
|
|
29
|
-
$parcel$export($a093c7e1ec25a057$exports, "Trigger", () => $a093c7e1ec25a057$export$41fb9f06171c75f4);
|
|
30
|
-
$parcel$export($a093c7e1ec25a057$exports, "Content", () => $a093c7e1ec25a057$export$7c6e2c02157bb7d2);
|
|
31
|
-
$parcel$export($a093c7e1ec25a057$exports, "Arrow", () => $a093c7e1ec25a057$export$21b07c8f274aebd5);
|
|
32
16
|
|
|
33
17
|
|
|
34
18
|
|
|
@@ -53,15 +37,11 @@ const $a093c7e1ec25a057$var$usePopperScope = $8wepK$createPopperScope();
|
|
|
53
37
|
* -----------------------------------------------------------------------------------------------*/ const $a093c7e1ec25a057$var$PROVIDER_NAME = 'TooltipProvider';
|
|
54
38
|
const $a093c7e1ec25a057$var$DEFAULT_DELAY_DURATION = 700;
|
|
55
39
|
const $a093c7e1ec25a057$var$TOOLTIP_OPEN = 'tooltip.open';
|
|
56
|
-
const [$a093c7e1ec25a057$var$TooltipProviderContextProvider, $a093c7e1ec25a057$var$useTooltipProviderContext] = $a093c7e1ec25a057$var$createTooltipContext($a093c7e1ec25a057$var$PROVIDER_NAME
|
|
57
|
-
isOpenDelayed: true,
|
|
58
|
-
delayDuration: $a093c7e1ec25a057$var$DEFAULT_DELAY_DURATION,
|
|
59
|
-
onOpen: ()=>{},
|
|
60
|
-
onClose: ()=>{}
|
|
61
|
-
});
|
|
40
|
+
const [$a093c7e1ec25a057$var$TooltipProviderContextProvider, $a093c7e1ec25a057$var$useTooltipProviderContext] = $a093c7e1ec25a057$var$createTooltipContext($a093c7e1ec25a057$var$PROVIDER_NAME);
|
|
62
41
|
const $a093c7e1ec25a057$export$f78649fb9ca566b8 = (props)=>{
|
|
63
|
-
const { __scopeTooltip: __scopeTooltip , delayDuration: delayDuration = $a093c7e1ec25a057$var$DEFAULT_DELAY_DURATION , skipDelayDuration: skipDelayDuration = 300 , children: children } = props;
|
|
42
|
+
const { __scopeTooltip: __scopeTooltip , delayDuration: delayDuration = $a093c7e1ec25a057$var$DEFAULT_DELAY_DURATION , skipDelayDuration: skipDelayDuration = 300 , disableHoverableContent: disableHoverableContent = false , children: children } = props;
|
|
64
43
|
const [isOpenDelayed, setIsOpenDelayed] = $8wepK$useState(true);
|
|
44
|
+
const isPointerInTransitRef = $8wepK$useRef(false);
|
|
65
45
|
const skipDelayTimerRef = $8wepK$useRef(0);
|
|
66
46
|
$8wepK$useEffect(()=>{
|
|
67
47
|
const skipDelayTimer = skipDelayTimerRef.current;
|
|
@@ -82,7 +62,12 @@ const $a093c7e1ec25a057$export$f78649fb9ca566b8 = (props)=>{
|
|
|
82
62
|
, skipDelayDuration);
|
|
83
63
|
}, [
|
|
84
64
|
skipDelayDuration
|
|
85
|
-
])
|
|
65
|
+
]),
|
|
66
|
+
isPointerInTransitRef: isPointerInTransitRef,
|
|
67
|
+
onPointerInTransitChange: $8wepK$useCallback((inTransit)=>{
|
|
68
|
+
isPointerInTransitRef.current = inTransit;
|
|
69
|
+
}, []),
|
|
70
|
+
disableHoverableContent: disableHoverableContent
|
|
86
71
|
}, children);
|
|
87
72
|
};
|
|
88
73
|
/*#__PURE__*/ Object.assign($a093c7e1ec25a057$export$f78649fb9ca566b8, {
|
|
@@ -93,25 +78,24 @@ const $a093c7e1ec25a057$export$f78649fb9ca566b8 = (props)=>{
|
|
|
93
78
|
* -----------------------------------------------------------------------------------------------*/ const $a093c7e1ec25a057$var$TOOLTIP_NAME = 'Tooltip';
|
|
94
79
|
const [$a093c7e1ec25a057$var$TooltipContextProvider, $a093c7e1ec25a057$var$useTooltipContext] = $a093c7e1ec25a057$var$createTooltipContext($a093c7e1ec25a057$var$TOOLTIP_NAME);
|
|
95
80
|
const $a093c7e1ec25a057$export$28c660c63b792dea = (props)=>{
|
|
96
|
-
const { __scopeTooltip: __scopeTooltip , children: children , open: openProp , defaultOpen: defaultOpen = false , onOpenChange: onOpenChange , delayDuration: delayDurationProp } = props;
|
|
97
|
-
const
|
|
81
|
+
const { __scopeTooltip: __scopeTooltip , children: children , open: openProp , defaultOpen: defaultOpen = false , onOpenChange: onOpenChange , disableHoverableContent: disableHoverableContentProp , delayDuration: delayDurationProp } = props;
|
|
82
|
+
const providerContext = $a093c7e1ec25a057$var$useTooltipProviderContext($a093c7e1ec25a057$var$TOOLTIP_NAME, props.__scopeTooltip);
|
|
98
83
|
const popperScope = $a093c7e1ec25a057$var$usePopperScope(__scopeTooltip);
|
|
99
84
|
const [trigger, setTrigger] = $8wepK$useState(null);
|
|
100
85
|
const contentId = $8wepK$useId();
|
|
101
86
|
const openTimerRef = $8wepK$useRef(0);
|
|
102
|
-
const
|
|
87
|
+
const disableHoverableContent = disableHoverableContentProp !== null && disableHoverableContentProp !== void 0 ? disableHoverableContentProp : providerContext.disableHoverableContent;
|
|
88
|
+
const delayDuration = delayDurationProp !== null && delayDurationProp !== void 0 ? delayDurationProp : providerContext.delayDuration;
|
|
103
89
|
const wasOpenDelayedRef = $8wepK$useRef(false);
|
|
104
|
-
const { onOpen: onOpen , onClose: onClose } = context;
|
|
105
90
|
const [open1 = false, setOpen] = $8wepK$useControllableState({
|
|
106
91
|
prop: openProp,
|
|
107
92
|
defaultProp: defaultOpen,
|
|
108
93
|
onChange: (open)=>{
|
|
109
94
|
if (open) {
|
|
110
|
-
//
|
|
111
|
-
//
|
|
95
|
+
providerContext.onOpen(); // as `onChange` is called within a lifecycle method we
|
|
96
|
+
// avoid dispatching via `dispatchDiscreteCustomEvent`.
|
|
112
97
|
document.dispatchEvent(new CustomEvent($a093c7e1ec25a057$var$TOOLTIP_OPEN));
|
|
113
|
-
|
|
114
|
-
}
|
|
98
|
+
} else providerContext.onClose();
|
|
115
99
|
onOpenChange === null || onOpenChange === void 0 || onOpenChange(open);
|
|
116
100
|
}
|
|
117
101
|
});
|
|
@@ -127,6 +111,12 @@ const $a093c7e1ec25a057$export$28c660c63b792dea = (props)=>{
|
|
|
127
111
|
}, [
|
|
128
112
|
setOpen
|
|
129
113
|
]);
|
|
114
|
+
const handleClose = $8wepK$useCallback(()=>{
|
|
115
|
+
window.clearTimeout(openTimerRef.current);
|
|
116
|
+
setOpen(false);
|
|
117
|
+
}, [
|
|
118
|
+
setOpen
|
|
119
|
+
]);
|
|
130
120
|
const handleDelayedOpen = $8wepK$useCallback(()=>{
|
|
131
121
|
window.clearTimeout(openTimerRef.current);
|
|
132
122
|
openTimerRef.current = window.setTimeout(()=>{
|
|
@@ -149,24 +139,24 @@ const $a093c7e1ec25a057$export$28c660c63b792dea = (props)=>{
|
|
|
149
139
|
trigger: trigger,
|
|
150
140
|
onTriggerChange: setTrigger,
|
|
151
141
|
onTriggerEnter: $8wepK$useCallback(()=>{
|
|
152
|
-
if (
|
|
142
|
+
if (providerContext.isOpenDelayed) handleDelayedOpen();
|
|
153
143
|
else handleOpen();
|
|
154
144
|
}, [
|
|
155
|
-
|
|
145
|
+
providerContext.isOpenDelayed,
|
|
156
146
|
handleDelayedOpen,
|
|
157
147
|
handleOpen
|
|
158
148
|
]),
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
onClose: $8wepK$useCallback(()=>{
|
|
149
|
+
onTriggerLeave: $8wepK$useCallback(()=>{
|
|
150
|
+
if (disableHoverableContent) handleClose();
|
|
151
|
+
else // Clear the timer in case the pointer leaves the trigger before the tooltip is opened.
|
|
163
152
|
window.clearTimeout(openTimerRef.current);
|
|
164
|
-
setOpen(false);
|
|
165
|
-
onClose();
|
|
166
153
|
}, [
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
])
|
|
154
|
+
handleClose,
|
|
155
|
+
disableHoverableContent
|
|
156
|
+
]),
|
|
157
|
+
onOpen: handleOpen,
|
|
158
|
+
onClose: handleClose,
|
|
159
|
+
disableHoverableContent: disableHoverableContent
|
|
170
160
|
}, children));
|
|
171
161
|
};
|
|
172
162
|
/*#__PURE__*/ Object.assign($a093c7e1ec25a057$export$28c660c63b792dea, {
|
|
@@ -178,16 +168,19 @@ const $a093c7e1ec25a057$export$28c660c63b792dea = (props)=>{
|
|
|
178
168
|
const $a093c7e1ec25a057$export$8c610744efcf8a1d = /*#__PURE__*/ $8wepK$forwardRef((props, forwardedRef)=>{
|
|
179
169
|
const { __scopeTooltip: __scopeTooltip , ...triggerProps } = props;
|
|
180
170
|
const context = $a093c7e1ec25a057$var$useTooltipContext($a093c7e1ec25a057$var$TRIGGER_NAME, __scopeTooltip);
|
|
171
|
+
const providerContext = $a093c7e1ec25a057$var$useTooltipProviderContext($a093c7e1ec25a057$var$TRIGGER_NAME, __scopeTooltip);
|
|
181
172
|
const popperScope = $a093c7e1ec25a057$var$usePopperScope(__scopeTooltip);
|
|
182
|
-
const
|
|
183
|
-
const
|
|
184
|
-
const
|
|
173
|
+
const ref = $8wepK$useRef(null);
|
|
174
|
+
const composedRefs = $8wepK$useComposedRefs(forwardedRef, ref, context.onTriggerChange);
|
|
175
|
+
const isPointerDownRef = $8wepK$useRef(false);
|
|
176
|
+
const hasPointerMoveOpenedRef = $8wepK$useRef(false);
|
|
177
|
+
const handlePointerUp = $8wepK$useCallback(()=>isPointerDownRef.current = false
|
|
185
178
|
, []);
|
|
186
179
|
$8wepK$useEffect(()=>{
|
|
187
|
-
return ()=>document.removeEventListener('
|
|
180
|
+
return ()=>document.removeEventListener('pointerup', handlePointerUp)
|
|
188
181
|
;
|
|
189
182
|
}, [
|
|
190
|
-
|
|
183
|
+
handlePointerUp
|
|
191
184
|
]);
|
|
192
185
|
return /*#__PURE__*/ $8wepK$createElement($8wepK$Anchor, $8wepK$babelruntimehelpersesmextends({
|
|
193
186
|
asChild: true
|
|
@@ -197,17 +190,26 @@ const $a093c7e1ec25a057$export$8c610744efcf8a1d = /*#__PURE__*/ $8wepK$forwardRe
|
|
|
197
190
|
"aria-describedby": context.open ? context.contentId : undefined,
|
|
198
191
|
"data-state": context.stateAttribute
|
|
199
192
|
}, triggerProps, {
|
|
200
|
-
ref:
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
193
|
+
ref: composedRefs,
|
|
194
|
+
onPointerMove: $8wepK$composeEventHandlers(props.onPointerMove, (event)=>{
|
|
195
|
+
if (event.pointerType === 'touch') return;
|
|
196
|
+
if (!hasPointerMoveOpenedRef.current && !providerContext.isPointerInTransitRef.current) {
|
|
197
|
+
context.onTriggerEnter();
|
|
198
|
+
hasPointerMoveOpenedRef.current = true;
|
|
199
|
+
}
|
|
200
|
+
}),
|
|
201
|
+
onPointerLeave: $8wepK$composeEventHandlers(props.onPointerLeave, ()=>{
|
|
202
|
+
context.onTriggerLeave();
|
|
203
|
+
hasPointerMoveOpenedRef.current = false;
|
|
204
|
+
}),
|
|
205
|
+
onPointerDown: $8wepK$composeEventHandlers(props.onPointerDown, ()=>{
|
|
206
|
+
isPointerDownRef.current = true;
|
|
207
|
+
document.addEventListener('pointerup', handlePointerUp, {
|
|
206
208
|
once: true
|
|
207
209
|
});
|
|
208
210
|
}),
|
|
209
211
|
onFocus: $8wepK$composeEventHandlers(props.onFocus, ()=>{
|
|
210
|
-
if (!
|
|
212
|
+
if (!isPointerDownRef.current) context.onOpen();
|
|
211
213
|
}),
|
|
212
214
|
onBlur: $8wepK$composeEventHandlers(props.onBlur, context.onClose),
|
|
213
215
|
onClick: $8wepK$composeEventHandlers(props.onClick, (event)=>{
|
|
@@ -221,23 +223,151 @@ const $a093c7e1ec25a057$export$8c610744efcf8a1d = /*#__PURE__*/ $8wepK$forwardRe
|
|
|
221
223
|
/*#__PURE__*/ Object.assign($a093c7e1ec25a057$export$8c610744efcf8a1d, {
|
|
222
224
|
displayName: $a093c7e1ec25a057$var$TRIGGER_NAME
|
|
223
225
|
});
|
|
226
|
+
/* -------------------------------------------------------------------------------------------------
|
|
227
|
+
* TooltipPortal
|
|
228
|
+
* -----------------------------------------------------------------------------------------------*/ const $a093c7e1ec25a057$var$PORTAL_NAME = 'TooltipPortal';
|
|
229
|
+
const [$a093c7e1ec25a057$var$PortalProvider, $a093c7e1ec25a057$var$usePortalContext] = $a093c7e1ec25a057$var$createTooltipContext($a093c7e1ec25a057$var$PORTAL_NAME, {
|
|
230
|
+
forceMount: undefined
|
|
231
|
+
});
|
|
232
|
+
const $a093c7e1ec25a057$export$7b36b8f925ab7497 = (props)=>{
|
|
233
|
+
const { __scopeTooltip: __scopeTooltip , forceMount: forceMount , children: children , container: container } = props;
|
|
234
|
+
const context = $a093c7e1ec25a057$var$useTooltipContext($a093c7e1ec25a057$var$PORTAL_NAME, __scopeTooltip);
|
|
235
|
+
return /*#__PURE__*/ $8wepK$createElement($a093c7e1ec25a057$var$PortalProvider, {
|
|
236
|
+
scope: __scopeTooltip,
|
|
237
|
+
forceMount: forceMount
|
|
238
|
+
}, /*#__PURE__*/ $8wepK$createElement($8wepK$Presence, {
|
|
239
|
+
present: forceMount || context.open
|
|
240
|
+
}, /*#__PURE__*/ $8wepK$createElement($8wepK$Portal, {
|
|
241
|
+
asChild: true,
|
|
242
|
+
container: container
|
|
243
|
+
}, children)));
|
|
244
|
+
};
|
|
245
|
+
/*#__PURE__*/ Object.assign($a093c7e1ec25a057$export$7b36b8f925ab7497, {
|
|
246
|
+
displayName: $a093c7e1ec25a057$var$PORTAL_NAME
|
|
247
|
+
});
|
|
224
248
|
/* -------------------------------------------------------------------------------------------------
|
|
225
249
|
* TooltipContent
|
|
226
250
|
* -----------------------------------------------------------------------------------------------*/ const $a093c7e1ec25a057$var$CONTENT_NAME = 'TooltipContent';
|
|
227
251
|
const $a093c7e1ec25a057$export$e9003e2be37ec060 = /*#__PURE__*/ $8wepK$forwardRef((props, forwardedRef)=>{
|
|
228
|
-
const
|
|
252
|
+
const portalContext = $a093c7e1ec25a057$var$usePortalContext($a093c7e1ec25a057$var$CONTENT_NAME, props.__scopeTooltip);
|
|
253
|
+
const { forceMount: forceMount = portalContext.forceMount , side: side = 'top' , ...contentProps } = props;
|
|
229
254
|
const context = $a093c7e1ec25a057$var$useTooltipContext($a093c7e1ec25a057$var$CONTENT_NAME, props.__scopeTooltip);
|
|
230
255
|
return /*#__PURE__*/ $8wepK$createElement($8wepK$Presence, {
|
|
231
256
|
present: forceMount || context.open
|
|
232
|
-
}, /*#__PURE__*/ $8wepK$createElement($a093c7e1ec25a057$var$TooltipContentImpl, $8wepK$babelruntimehelpersesmextends({
|
|
257
|
+
}, context.disableHoverableContent ? /*#__PURE__*/ $8wepK$createElement($a093c7e1ec25a057$var$TooltipContentImpl, $8wepK$babelruntimehelpersesmextends({
|
|
258
|
+
side: side
|
|
259
|
+
}, contentProps, {
|
|
260
|
+
ref: forwardedRef
|
|
261
|
+
})) : /*#__PURE__*/ $8wepK$createElement($a093c7e1ec25a057$var$TooltipContentHoverable, $8wepK$babelruntimehelpersesmextends({
|
|
262
|
+
side: side
|
|
263
|
+
}, contentProps, {
|
|
233
264
|
ref: forwardedRef
|
|
234
|
-
}
|
|
265
|
+
})));
|
|
266
|
+
});
|
|
267
|
+
const $a093c7e1ec25a057$var$TooltipContentHoverable = /*#__PURE__*/ $8wepK$forwardRef((props, forwardedRef)=>{
|
|
268
|
+
const context = $a093c7e1ec25a057$var$useTooltipContext($a093c7e1ec25a057$var$CONTENT_NAME, props.__scopeTooltip);
|
|
269
|
+
const providerContext = $a093c7e1ec25a057$var$useTooltipProviderContext($a093c7e1ec25a057$var$CONTENT_NAME, props.__scopeTooltip);
|
|
270
|
+
const ref = $8wepK$useRef(null);
|
|
271
|
+
const composedRefs = $8wepK$useComposedRefs(forwardedRef, ref);
|
|
272
|
+
const [pointerGraceArea, setPointerGraceArea] = $8wepK$useState(null);
|
|
273
|
+
const { trigger: trigger , onClose: onClose } = context;
|
|
274
|
+
const content = ref.current;
|
|
275
|
+
const { onPointerInTransitChange: onPointerInTransitChange } = providerContext;
|
|
276
|
+
const handleRemoveGraceArea = $8wepK$useCallback(()=>{
|
|
277
|
+
setPointerGraceArea(null);
|
|
278
|
+
onPointerInTransitChange(false);
|
|
279
|
+
}, [
|
|
280
|
+
onPointerInTransitChange
|
|
281
|
+
]);
|
|
282
|
+
const handleCreateGraceArea = $8wepK$useCallback((event, hoverTarget)=>{
|
|
283
|
+
const currentTarget = event.currentTarget;
|
|
284
|
+
const exitPoint = {
|
|
285
|
+
x: event.clientX,
|
|
286
|
+
y: event.clientY
|
|
287
|
+
};
|
|
288
|
+
const exitSide = $a093c7e1ec25a057$var$getExitSideFromRect(exitPoint, currentTarget.getBoundingClientRect());
|
|
289
|
+
const bleed = exitSide === 'right' || exitSide === 'bottom' ? -5 : 5;
|
|
290
|
+
const isXAxis = exitSide === 'right' || exitSide === 'left';
|
|
291
|
+
const startPoint = isXAxis ? {
|
|
292
|
+
x: event.clientX + bleed,
|
|
293
|
+
y: event.clientY
|
|
294
|
+
} : {
|
|
295
|
+
x: event.clientX,
|
|
296
|
+
y: event.clientY + bleed
|
|
297
|
+
};
|
|
298
|
+
const hoverTargetPoints = $a093c7e1ec25a057$var$getPointsFromRect(hoverTarget.getBoundingClientRect());
|
|
299
|
+
const graceArea = $a093c7e1ec25a057$var$getHull([
|
|
300
|
+
startPoint,
|
|
301
|
+
...hoverTargetPoints
|
|
302
|
+
]);
|
|
303
|
+
setPointerGraceArea(graceArea);
|
|
304
|
+
onPointerInTransitChange(true);
|
|
305
|
+
}, [
|
|
306
|
+
onPointerInTransitChange
|
|
307
|
+
]);
|
|
308
|
+
$8wepK$useEffect(()=>{
|
|
309
|
+
return ()=>handleRemoveGraceArea()
|
|
310
|
+
;
|
|
311
|
+
}, [
|
|
312
|
+
handleRemoveGraceArea
|
|
313
|
+
]);
|
|
314
|
+
$8wepK$useEffect(()=>{
|
|
315
|
+
if (trigger && content) {
|
|
316
|
+
const handleTriggerLeave = (event)=>handleCreateGraceArea(event, content)
|
|
317
|
+
;
|
|
318
|
+
const handleContentLeave = (event)=>handleCreateGraceArea(event, trigger)
|
|
319
|
+
;
|
|
320
|
+
trigger.addEventListener('pointerleave', handleTriggerLeave);
|
|
321
|
+
content.addEventListener('pointerleave', handleContentLeave);
|
|
322
|
+
return ()=>{
|
|
323
|
+
trigger.removeEventListener('pointerleave', handleTriggerLeave);
|
|
324
|
+
content.removeEventListener('pointerleave', handleContentLeave);
|
|
325
|
+
};
|
|
326
|
+
}
|
|
327
|
+
}, [
|
|
328
|
+
trigger,
|
|
329
|
+
content,
|
|
330
|
+
handleCreateGraceArea,
|
|
331
|
+
handleRemoveGraceArea
|
|
332
|
+
]);
|
|
333
|
+
$8wepK$useEffect(()=>{
|
|
334
|
+
if (pointerGraceArea) {
|
|
335
|
+
const handleTrackPointerGrace = (event)=>{
|
|
336
|
+
const target = event.target;
|
|
337
|
+
const pointerPosition = {
|
|
338
|
+
x: event.clientX,
|
|
339
|
+
y: event.clientY
|
|
340
|
+
};
|
|
341
|
+
const hasEnteredTarget = (trigger === null || trigger === void 0 ? void 0 : trigger.contains(target)) || (content === null || content === void 0 ? void 0 : content.contains(target));
|
|
342
|
+
const isPointerOutsideGraceArea = !$a093c7e1ec25a057$var$isPointInPolygon(pointerPosition, pointerGraceArea);
|
|
343
|
+
if (hasEnteredTarget) handleRemoveGraceArea();
|
|
344
|
+
else if (isPointerOutsideGraceArea) {
|
|
345
|
+
handleRemoveGraceArea();
|
|
346
|
+
onClose();
|
|
347
|
+
}
|
|
348
|
+
};
|
|
349
|
+
document.addEventListener('pointermove', handleTrackPointerGrace);
|
|
350
|
+
return ()=>document.removeEventListener('pointermove', handleTrackPointerGrace)
|
|
351
|
+
;
|
|
352
|
+
}
|
|
353
|
+
}, [
|
|
354
|
+
trigger,
|
|
355
|
+
content,
|
|
356
|
+
pointerGraceArea,
|
|
357
|
+
onClose,
|
|
358
|
+
handleRemoveGraceArea
|
|
359
|
+
]);
|
|
360
|
+
return /*#__PURE__*/ $8wepK$createElement($a093c7e1ec25a057$var$TooltipContentImpl, $8wepK$babelruntimehelpersesmextends({}, props, {
|
|
361
|
+
ref: composedRefs
|
|
362
|
+
}));
|
|
363
|
+
});
|
|
364
|
+
const [$a093c7e1ec25a057$var$VisuallyHiddenContentContextProvider, $a093c7e1ec25a057$var$useVisuallyHiddenContentContext] = $a093c7e1ec25a057$var$createTooltipContext($a093c7e1ec25a057$var$TOOLTIP_NAME, {
|
|
365
|
+
isInside: false
|
|
235
366
|
});
|
|
236
367
|
const $a093c7e1ec25a057$var$TooltipContentImpl = /*#__PURE__*/ $8wepK$forwardRef((props, forwardedRef)=>{
|
|
237
|
-
const { __scopeTooltip: __scopeTooltip , children: children , 'aria-label': ariaLabel ,
|
|
368
|
+
const { __scopeTooltip: __scopeTooltip , children: children , 'aria-label': ariaLabel , onEscapeKeyDown: onEscapeKeyDown , onPointerDownOutside: onPointerDownOutside , ...contentProps } = props;
|
|
238
369
|
const context = $a093c7e1ec25a057$var$useTooltipContext($a093c7e1ec25a057$var$CONTENT_NAME, __scopeTooltip);
|
|
239
370
|
const popperScope = $a093c7e1ec25a057$var$usePopperScope(__scopeTooltip);
|
|
240
|
-
const PortalWrapper = portalled ? $8wepK$Portal : $8wepK$Fragment;
|
|
241
371
|
const { onClose: onClose } = context; // Close this tooltip if another one opens
|
|
242
372
|
$8wepK$useEffect(()=>{
|
|
243
373
|
document.addEventListener($a093c7e1ec25a057$var$TOOLTIP_OPEN, onClose);
|
|
@@ -264,7 +394,7 @@ const $a093c7e1ec25a057$var$TooltipContentImpl = /*#__PURE__*/ $8wepK$forwardRef
|
|
|
264
394
|
context.trigger,
|
|
265
395
|
onClose
|
|
266
396
|
]);
|
|
267
|
-
return /*#__PURE__*/ $8wepK$createElement(
|
|
397
|
+
return /*#__PURE__*/ $8wepK$createElement($8wepK$DismissableLayer, {
|
|
268
398
|
asChild: true,
|
|
269
399
|
disableOutsidePointerEvents: false,
|
|
270
400
|
onEscapeKeyDown: onEscapeKeyDown,
|
|
@@ -281,7 +411,10 @@ const $a093c7e1ec25a057$var$TooltipContentImpl = /*#__PURE__*/ $8wepK$forwardRef
|
|
|
281
411
|
// re-namespace exposed content custom property
|
|
282
412
|
['--radix-tooltip-content-transform-origin']: 'var(--radix-popper-transform-origin)'
|
|
283
413
|
}
|
|
284
|
-
}), /*#__PURE__*/ $8wepK$createElement($8wepK$Slottable, null, children), /*#__PURE__*/ $8wepK$createElement($
|
|
414
|
+
}), /*#__PURE__*/ $8wepK$createElement($8wepK$Slottable, null, children), /*#__PURE__*/ $8wepK$createElement($a093c7e1ec25a057$var$VisuallyHiddenContentContextProvider, {
|
|
415
|
+
scope: __scopeTooltip,
|
|
416
|
+
isInside: true
|
|
417
|
+
}, /*#__PURE__*/ $8wepK$createElement($8wepK$Root1, {
|
|
285
418
|
id: context.contentId,
|
|
286
419
|
role: "tooltip"
|
|
287
420
|
}, ariaLabel || children))));
|
|
@@ -295,21 +428,118 @@ const $a093c7e1ec25a057$var$TooltipContentImpl = /*#__PURE__*/ $8wepK$forwardRef
|
|
|
295
428
|
const $a093c7e1ec25a057$export$c27ee0ad710f7559 = /*#__PURE__*/ $8wepK$forwardRef((props, forwardedRef)=>{
|
|
296
429
|
const { __scopeTooltip: __scopeTooltip , ...arrowProps } = props;
|
|
297
430
|
const popperScope = $a093c7e1ec25a057$var$usePopperScope(__scopeTooltip);
|
|
298
|
-
|
|
431
|
+
const visuallyHiddenContentContext = $a093c7e1ec25a057$var$useVisuallyHiddenContentContext($a093c7e1ec25a057$var$ARROW_NAME, __scopeTooltip); // if the arrow is inside the `VisuallyHidden`, we don't want to render it all to
|
|
432
|
+
// prevent issues in positioning the arrow due to the duplicate
|
|
433
|
+
return visuallyHiddenContentContext.isInside ? null : /*#__PURE__*/ $8wepK$createElement($8wepK$Arrow, $8wepK$babelruntimehelpersesmextends({}, popperScope, arrowProps, {
|
|
299
434
|
ref: forwardedRef
|
|
300
435
|
}));
|
|
301
436
|
});
|
|
302
437
|
/*#__PURE__*/ Object.assign($a093c7e1ec25a057$export$c27ee0ad710f7559, {
|
|
303
438
|
displayName: $a093c7e1ec25a057$var$ARROW_NAME
|
|
304
439
|
});
|
|
305
|
-
/* -----------------------------------------------------------------------------------------------*/
|
|
440
|
+
/* -----------------------------------------------------------------------------------------------*/ function $a093c7e1ec25a057$var$getExitSideFromRect(point, rect) {
|
|
441
|
+
const top = Math.abs(rect.top - point.y);
|
|
442
|
+
const bottom = Math.abs(rect.bottom - point.y);
|
|
443
|
+
const right = Math.abs(rect.right - point.x);
|
|
444
|
+
const left = Math.abs(rect.left - point.x);
|
|
445
|
+
switch(Math.min(top, bottom, right, left)){
|
|
446
|
+
case left:
|
|
447
|
+
return 'left';
|
|
448
|
+
case right:
|
|
449
|
+
return 'right';
|
|
450
|
+
case top:
|
|
451
|
+
return 'top';
|
|
452
|
+
case bottom:
|
|
453
|
+
return 'bottom';
|
|
454
|
+
default:
|
|
455
|
+
return null;
|
|
456
|
+
}
|
|
457
|
+
}
|
|
458
|
+
function $a093c7e1ec25a057$var$getPointsFromRect(rect) {
|
|
459
|
+
const { top: top , right: right , bottom: bottom , left: left } = rect;
|
|
460
|
+
return [
|
|
461
|
+
{
|
|
462
|
+
x: left,
|
|
463
|
+
y: top
|
|
464
|
+
},
|
|
465
|
+
{
|
|
466
|
+
x: right,
|
|
467
|
+
y: top
|
|
468
|
+
},
|
|
469
|
+
{
|
|
470
|
+
x: right,
|
|
471
|
+
y: bottom
|
|
472
|
+
},
|
|
473
|
+
{
|
|
474
|
+
x: left,
|
|
475
|
+
y: bottom
|
|
476
|
+
}
|
|
477
|
+
];
|
|
478
|
+
} // Determine if a point is inside of a polygon.
|
|
479
|
+
// Based on https://github.com/substack/point-in-polygon
|
|
480
|
+
function $a093c7e1ec25a057$var$isPointInPolygon(point, polygon) {
|
|
481
|
+
const { x: x , y: y } = point;
|
|
482
|
+
let inside = false;
|
|
483
|
+
for(let i = 0, j = polygon.length - 1; i < polygon.length; j = i++){
|
|
484
|
+
const xi = polygon[i].x;
|
|
485
|
+
const yi = polygon[i].y;
|
|
486
|
+
const xj = polygon[j].x;
|
|
487
|
+
const yj = polygon[j].y; // prettier-ignore
|
|
488
|
+
const intersect = yi > y !== yj > y && x < (xj - xi) * (y - yi) / (yj - yi) + xi;
|
|
489
|
+
if (intersect) inside = !inside;
|
|
490
|
+
}
|
|
491
|
+
return inside;
|
|
492
|
+
} // Returns a new array of points representing the convex hull of the given set of points.
|
|
493
|
+
// https://www.nayuki.io/page/convex-hull-algorithm
|
|
494
|
+
function $a093c7e1ec25a057$var$getHull(points) {
|
|
495
|
+
const newPoints = points.slice();
|
|
496
|
+
newPoints.sort((a, b)=>{
|
|
497
|
+
if (a.x < b.x) return -1;
|
|
498
|
+
else if (a.x > b.x) return 1;
|
|
499
|
+
else if (a.y < b.y) return -1;
|
|
500
|
+
else if (a.y > b.y) return 1;
|
|
501
|
+
else return 0;
|
|
502
|
+
});
|
|
503
|
+
return $a093c7e1ec25a057$var$getHullPresorted(newPoints);
|
|
504
|
+
} // Returns the convex hull, assuming that each points[i] <= points[i + 1]. Runs in O(n) time.
|
|
505
|
+
function $a093c7e1ec25a057$var$getHullPresorted(points) {
|
|
506
|
+
if (points.length <= 1) return points.slice();
|
|
507
|
+
const upperHull = [];
|
|
508
|
+
for(let i = 0; i < points.length; i++){
|
|
509
|
+
const p = points[i];
|
|
510
|
+
while(upperHull.length >= 2){
|
|
511
|
+
const q = upperHull[upperHull.length - 1];
|
|
512
|
+
const r = upperHull[upperHull.length - 2];
|
|
513
|
+
if ((q.x - r.x) * (p.y - r.y) >= (q.y - r.y) * (p.x - r.x)) upperHull.pop();
|
|
514
|
+
else break;
|
|
515
|
+
}
|
|
516
|
+
upperHull.push(p);
|
|
517
|
+
}
|
|
518
|
+
upperHull.pop();
|
|
519
|
+
const lowerHull = [];
|
|
520
|
+
for(let i1 = points.length - 1; i1 >= 0; i1--){
|
|
521
|
+
const p = points[i1];
|
|
522
|
+
while(lowerHull.length >= 2){
|
|
523
|
+
const q = lowerHull[lowerHull.length - 1];
|
|
524
|
+
const r = lowerHull[lowerHull.length - 2];
|
|
525
|
+
if ((q.x - r.x) * (p.y - r.y) >= (q.y - r.y) * (p.x - r.x)) lowerHull.pop();
|
|
526
|
+
else break;
|
|
527
|
+
}
|
|
528
|
+
lowerHull.push(p);
|
|
529
|
+
}
|
|
530
|
+
lowerHull.pop();
|
|
531
|
+
if (upperHull.length === 1 && lowerHull.length === 1 && upperHull[0].x === lowerHull[0].x && upperHull[0].y === lowerHull[0].y) return upperHull;
|
|
532
|
+
else return upperHull.concat(lowerHull);
|
|
533
|
+
}
|
|
534
|
+
const $a093c7e1ec25a057$export$2881499e37b75b9a = $a093c7e1ec25a057$export$f78649fb9ca566b8;
|
|
306
535
|
const $a093c7e1ec25a057$export$be92b6f5f03c0fe9 = $a093c7e1ec25a057$export$28c660c63b792dea;
|
|
307
536
|
const $a093c7e1ec25a057$export$41fb9f06171c75f4 = $a093c7e1ec25a057$export$8c610744efcf8a1d;
|
|
537
|
+
const $a093c7e1ec25a057$export$602eac185826482c = $a093c7e1ec25a057$export$7b36b8f925ab7497;
|
|
308
538
|
const $a093c7e1ec25a057$export$7c6e2c02157bb7d2 = $a093c7e1ec25a057$export$e9003e2be37ec060;
|
|
309
539
|
const $a093c7e1ec25a057$export$21b07c8f274aebd5 = $a093c7e1ec25a057$export$c27ee0ad710f7559;
|
|
310
540
|
|
|
311
541
|
|
|
312
542
|
|
|
313
543
|
|
|
314
|
-
export {$a093c7e1ec25a057$export$1c540a2224f0d865 as createTooltipScope, $a093c7e1ec25a057$export$f78649fb9ca566b8 as TooltipProvider, $a093c7e1ec25a057$export$28c660c63b792dea as Tooltip, $a093c7e1ec25a057$export$8c610744efcf8a1d as TooltipTrigger, $a093c7e1ec25a057$export$e9003e2be37ec060 as TooltipContent, $a093c7e1ec25a057$export$c27ee0ad710f7559 as TooltipArrow, $a093c7e1ec25a057$export$2881499e37b75b9a as Provider, $a093c7e1ec25a057$export$be92b6f5f03c0fe9 as Root, $a093c7e1ec25a057$export$41fb9f06171c75f4 as Trigger, $a093c7e1ec25a057$export$7c6e2c02157bb7d2 as Content, $a093c7e1ec25a057$export$21b07c8f274aebd5 as Arrow};
|
|
544
|
+
export {$a093c7e1ec25a057$export$1c540a2224f0d865 as createTooltipScope, $a093c7e1ec25a057$export$f78649fb9ca566b8 as TooltipProvider, $a093c7e1ec25a057$export$28c660c63b792dea as Tooltip, $a093c7e1ec25a057$export$8c610744efcf8a1d as TooltipTrigger, $a093c7e1ec25a057$export$7b36b8f925ab7497 as TooltipPortal, $a093c7e1ec25a057$export$e9003e2be37ec060 as TooltipContent, $a093c7e1ec25a057$export$c27ee0ad710f7559 as TooltipArrow, $a093c7e1ec25a057$export$2881499e37b75b9a as Provider, $a093c7e1ec25a057$export$be92b6f5f03c0fe9 as Root, $a093c7e1ec25a057$export$41fb9f06171c75f4 as Trigger, $a093c7e1ec25a057$export$602eac185826482c as Portal, $a093c7e1ec25a057$export$7c6e2c02157bb7d2 as Content, $a093c7e1ec25a057$export$21b07c8f274aebd5 as Arrow};
|
|
315
545
|
//# sourceMappingURL=index.module.js.map
|