@radix-ui/react-tooltip 0.1.8-rc.45 → 0.1.8-rc.48
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 +10 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +263 -71
- package/dist/index.js.map +1 -1
- package/dist/index.module.js +248 -56
- package/dist/index.module.js.map +1 -1
- package/package.json +13 -13
package/dist/index.d.ts
CHANGED
|
@@ -17,6 +17,11 @@ interface TooltipProviderProps {
|
|
|
17
17
|
* @defaultValue 300
|
|
18
18
|
*/
|
|
19
19
|
skipDelayDuration?: number;
|
|
20
|
+
/**
|
|
21
|
+
* When `true`, trying to hover the content will result in the tooltip closing as the pointer leaves the trigger.
|
|
22
|
+
* @defaultValue false
|
|
23
|
+
*/
|
|
24
|
+
disableHoverableContent?: boolean;
|
|
20
25
|
}
|
|
21
26
|
export const TooltipProvider: React.FC<TooltipProviderProps>;
|
|
22
27
|
export interface TooltipProps {
|
|
@@ -30,6 +35,11 @@ export interface TooltipProps {
|
|
|
30
35
|
* @defaultValue 700
|
|
31
36
|
*/
|
|
32
37
|
delayDuration?: number;
|
|
38
|
+
/**
|
|
39
|
+
* When `true`, trying to hover the content will result in the tooltip closing as the pointer leaves the trigger.
|
|
40
|
+
* @defaultValue false
|
|
41
|
+
*/
|
|
42
|
+
disableHoverableContent?: boolean;
|
|
33
43
|
}
|
|
34
44
|
export const Tooltip: React.FC<TooltipProps>;
|
|
35
45
|
type PrimitiveButtonProps = Radix.ComponentPropsWithoutRef<typeof Primitive.button>;
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"mappings":";;;;;;AAmBA,OAAA,yFAEE,CAAC;
|
|
1
|
+
{"mappings":";;;;;;AAmBA,OAAA,yFAEE,CAAC;AAwBH;IACE,QAAQ,EAAE,MAAM,SAAS,CAAC;IAC1B;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;OAGG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B;;;OAGG;IACH,uBAAuB,CAAC,EAAE,OAAO,CAAC;CACnC;AAED,OAAA,MAAM,iBAAiB,MAAM,EAAE,CAAC,oBAAoB,CA4CnD,CAAC;AA0BF;IACE,QAAQ,CAAC,EAAE,MAAM,SAAS,CAAC;IAC3B,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACvC;;;;OAIG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;OAGG;IACH,uBAAuB,CAAC,EAAE,OAAO,CAAC;CACnC;AAED,OAAA,MAAM,SAAS,MAAM,EAAE,CAAC,YAAY,CA2FnC,CAAC;AAWF,4BAA4B,MAAM,wBAAwB,CAAC,OAAO,UAAU,MAAM,CAAC,CAAC;AACpF,oCAA8B,SAAQ,oBAAoB;CAAG;AAE7D,OAAA,MAAM,6GAyDL,CAAC;AAeF,mBAAmB,MAAM,wBAAwB,CAAC,eAAsB,CAAC,CAAC;AAC1E,mCAA6B,SAAQ,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC;IAC/D,QAAQ,CAAC,EAAE,MAAM,SAAS,CAAC;IAC3B;;;OAGG;IACH,UAAU,CAAC,EAAE,IAAI,CAAC;CACnB;AAED,OAAA,MAAM,eAAe,MAAM,EAAE,CAAC,kBAAkB,CAY/C,CAAC;AAWF,oCAA8B,SAAQ,uBAAuB;IAC3D;;;OAGG;IACH,UAAU,CAAC,EAAE,IAAI,CAAC;CACnB;AAED,OAAA,MAAM,0GAgBL,CAAC;AA0FF,6BAA6B,MAAM,wBAAwB,CAAC,uBAAuB,CAAC,CAAC;AACrF,0BAA0B,MAAM,wBAAwB,CAAC,OAAO,gBAAgB,OAAO,CAAC,CAAC;AACzF,iCAAkC,SAAQ,kBAAkB;IAC1D;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB;;;OAGG;IACH,eAAe,CAAC,EAAE,qBAAqB,CAAC,iBAAiB,CAAC,CAAC;IAC3D;;;OAGG;IACH,oBAAoB,CAAC,EAAE,qBAAqB,CAAC,sBAAsB,CAAC,CAAC;CACtE;AA0ED,wBAAwB,MAAM,wBAAwB,CAAC,OAAO,gBAAgB,KAAK,CAAC,CAAC;AACrF,kCAA4B,SAAQ,gBAAgB;CAAG;AAEvD,OAAA,MAAM,qGAML,CAAC;AA+GF,OAAA,MAAM,wCAA0B,CAAC;AACjC,OAAA,MAAM,4BAAc,CAAC;AACrB,OAAA,MAAM,sGAAwB,CAAC;AAC/B,OAAA,MAAM,oCAAsB,CAAC;AAC7B,OAAA,MAAM,mGAAwB,CAAC;AAC/B,OAAA,MAAM,8FAAoB,CAAC","sources":["packages/react/tooltip/src/packages/react/tooltip/src/Tooltip.tsx","packages/react/tooltip/src/packages/react/tooltip/src/index.ts","packages/react/tooltip/src/index.ts"],"sourcesContent":[null,null,"export {\n createTooltipScope,\n //\n TooltipProvider,\n Tooltip,\n TooltipTrigger,\n TooltipPortal,\n TooltipContent,\n TooltipArrow,\n //\n Provider,\n Root,\n Trigger,\n Portal,\n Content,\n Arrow,\n} from './Tooltip';\nexport type {\n TooltipProps,\n TooltipTriggerProps,\n TooltipPortalProps,\n TooltipContentProps,\n TooltipArrowProps,\n} from './Tooltip';\n"],"names":[],"version":3,"file":"index.d.ts.map"}
|
package/dist/index.js
CHANGED
|
@@ -13,43 +13,26 @@ var $iVrL9$radixuireactslot = require("@radix-ui/react-slot");
|
|
|
13
13
|
var $iVrL9$radixuireactusecontrollablestate = require("@radix-ui/react-use-controllable-state");
|
|
14
14
|
var $iVrL9$radixuireactvisuallyhidden = require("@radix-ui/react-visually-hidden");
|
|
15
15
|
|
|
16
|
-
function $parcel$
|
|
17
|
-
Object.
|
|
18
|
-
if (key === 'default' || key === '__esModule' || dest.hasOwnProperty(key)) {
|
|
19
|
-
return;
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
Object.defineProperty(dest, key, {
|
|
23
|
-
enumerable: true,
|
|
24
|
-
get: function get() {
|
|
25
|
-
return source[key];
|
|
26
|
-
}
|
|
27
|
-
});
|
|
28
|
-
});
|
|
29
|
-
|
|
30
|
-
return dest;
|
|
16
|
+
function $parcel$export(e, n, v, s) {
|
|
17
|
+
Object.defineProperty(e, n, {get: v, set: s, enumerable: true, configurable: true});
|
|
31
18
|
}
|
|
32
19
|
function $parcel$interopDefault(a) {
|
|
33
20
|
return a && a.__esModule ? a.default : a;
|
|
34
21
|
}
|
|
35
|
-
function $parcel$export(e, n, v, s) {
|
|
36
|
-
Object.defineProperty(e, n, {get: v, set: s, enumerable: true, configurable: true});
|
|
37
|
-
}
|
|
38
|
-
var $c34afbc43c90cc6f$exports = {};
|
|
39
22
|
|
|
40
|
-
$parcel$export(
|
|
41
|
-
$parcel$export(
|
|
42
|
-
$parcel$export(
|
|
43
|
-
$parcel$export(
|
|
44
|
-
$parcel$export(
|
|
45
|
-
$parcel$export(
|
|
46
|
-
$parcel$export(
|
|
47
|
-
$parcel$export(
|
|
48
|
-
$parcel$export(
|
|
49
|
-
$parcel$export(
|
|
50
|
-
$parcel$export(
|
|
51
|
-
$parcel$export(
|
|
52
|
-
$parcel$export(
|
|
23
|
+
$parcel$export(module.exports, "createTooltipScope", () => $c34afbc43c90cc6f$export$1c540a2224f0d865);
|
|
24
|
+
$parcel$export(module.exports, "TooltipProvider", () => $c34afbc43c90cc6f$export$f78649fb9ca566b8);
|
|
25
|
+
$parcel$export(module.exports, "Tooltip", () => $c34afbc43c90cc6f$export$28c660c63b792dea);
|
|
26
|
+
$parcel$export(module.exports, "TooltipTrigger", () => $c34afbc43c90cc6f$export$8c610744efcf8a1d);
|
|
27
|
+
$parcel$export(module.exports, "TooltipPortal", () => $c34afbc43c90cc6f$export$7b36b8f925ab7497);
|
|
28
|
+
$parcel$export(module.exports, "TooltipContent", () => $c34afbc43c90cc6f$export$e9003e2be37ec060);
|
|
29
|
+
$parcel$export(module.exports, "TooltipArrow", () => $c34afbc43c90cc6f$export$c27ee0ad710f7559);
|
|
30
|
+
$parcel$export(module.exports, "Provider", () => $c34afbc43c90cc6f$export$2881499e37b75b9a);
|
|
31
|
+
$parcel$export(module.exports, "Root", () => $c34afbc43c90cc6f$export$be92b6f5f03c0fe9);
|
|
32
|
+
$parcel$export(module.exports, "Trigger", () => $c34afbc43c90cc6f$export$41fb9f06171c75f4);
|
|
33
|
+
$parcel$export(module.exports, "Portal", () => $c34afbc43c90cc6f$export$602eac185826482c);
|
|
34
|
+
$parcel$export(module.exports, "Content", () => $c34afbc43c90cc6f$export$7c6e2c02157bb7d2);
|
|
35
|
+
$parcel$export(module.exports, "Arrow", () => $c34afbc43c90cc6f$export$21b07c8f274aebd5);
|
|
53
36
|
|
|
54
37
|
|
|
55
38
|
|
|
@@ -74,15 +57,11 @@ const $c34afbc43c90cc6f$var$usePopperScope = $iVrL9$radixuireactpopper.createPop
|
|
|
74
57
|
* -----------------------------------------------------------------------------------------------*/ const $c34afbc43c90cc6f$var$PROVIDER_NAME = 'TooltipProvider';
|
|
75
58
|
const $c34afbc43c90cc6f$var$DEFAULT_DELAY_DURATION = 700;
|
|
76
59
|
const $c34afbc43c90cc6f$var$TOOLTIP_OPEN = 'tooltip.open';
|
|
77
|
-
const [$c34afbc43c90cc6f$var$TooltipProviderContextProvider, $c34afbc43c90cc6f$var$useTooltipProviderContext] = $c34afbc43c90cc6f$var$createTooltipContext($c34afbc43c90cc6f$var$PROVIDER_NAME
|
|
78
|
-
isOpenDelayed: true,
|
|
79
|
-
delayDuration: $c34afbc43c90cc6f$var$DEFAULT_DELAY_DURATION,
|
|
80
|
-
onOpen: ()=>{},
|
|
81
|
-
onClose: ()=>{}
|
|
82
|
-
});
|
|
60
|
+
const [$c34afbc43c90cc6f$var$TooltipProviderContextProvider, $c34afbc43c90cc6f$var$useTooltipProviderContext] = $c34afbc43c90cc6f$var$createTooltipContext($c34afbc43c90cc6f$var$PROVIDER_NAME);
|
|
83
61
|
const $c34afbc43c90cc6f$export$f78649fb9ca566b8 = (props)=>{
|
|
84
|
-
const { __scopeTooltip: __scopeTooltip , delayDuration: delayDuration = $c34afbc43c90cc6f$var$DEFAULT_DELAY_DURATION , skipDelayDuration: skipDelayDuration = 300 , children: children } = props;
|
|
62
|
+
const { __scopeTooltip: __scopeTooltip , delayDuration: delayDuration = $c34afbc43c90cc6f$var$DEFAULT_DELAY_DURATION , skipDelayDuration: skipDelayDuration = 300 , disableHoverableContent: disableHoverableContent = false , children: children } = props;
|
|
85
63
|
const [isOpenDelayed, setIsOpenDelayed] = $iVrL9$react.useState(true);
|
|
64
|
+
const isPointerInTransitRef = $iVrL9$react.useRef(false);
|
|
86
65
|
const skipDelayTimerRef = $iVrL9$react.useRef(0);
|
|
87
66
|
$iVrL9$react.useEffect(()=>{
|
|
88
67
|
const skipDelayTimer = skipDelayTimerRef.current;
|
|
@@ -103,7 +82,12 @@ const $c34afbc43c90cc6f$export$f78649fb9ca566b8 = (props)=>{
|
|
|
103
82
|
, skipDelayDuration);
|
|
104
83
|
}, [
|
|
105
84
|
skipDelayDuration
|
|
106
|
-
])
|
|
85
|
+
]),
|
|
86
|
+
isPointerInTransitRef: isPointerInTransitRef,
|
|
87
|
+
onPointerInTransitChange: $iVrL9$react.useCallback((inTransit)=>{
|
|
88
|
+
isPointerInTransitRef.current = inTransit;
|
|
89
|
+
}, []),
|
|
90
|
+
disableHoverableContent: disableHoverableContent
|
|
107
91
|
}, children);
|
|
108
92
|
};
|
|
109
93
|
/*#__PURE__*/ Object.assign($c34afbc43c90cc6f$export$f78649fb9ca566b8, {
|
|
@@ -114,28 +98,24 @@ const $c34afbc43c90cc6f$export$f78649fb9ca566b8 = (props)=>{
|
|
|
114
98
|
* -----------------------------------------------------------------------------------------------*/ const $c34afbc43c90cc6f$var$TOOLTIP_NAME = 'Tooltip';
|
|
115
99
|
const [$c34afbc43c90cc6f$var$TooltipContextProvider, $c34afbc43c90cc6f$var$useTooltipContext] = $c34afbc43c90cc6f$var$createTooltipContext($c34afbc43c90cc6f$var$TOOLTIP_NAME);
|
|
116
100
|
const $c34afbc43c90cc6f$export$28c660c63b792dea = (props)=>{
|
|
117
|
-
const { __scopeTooltip: __scopeTooltip , children: children , open: openProp , defaultOpen: defaultOpen = false , onOpenChange: onOpenChange , delayDuration: delayDurationProp } = props;
|
|
118
|
-
const
|
|
101
|
+
const { __scopeTooltip: __scopeTooltip , children: children , open: openProp , defaultOpen: defaultOpen = false , onOpenChange: onOpenChange , disableHoverableContent: disableHoverableContentProp , delayDuration: delayDurationProp } = props;
|
|
102
|
+
const providerContext = $c34afbc43c90cc6f$var$useTooltipProviderContext($c34afbc43c90cc6f$var$TOOLTIP_NAME, props.__scopeTooltip);
|
|
119
103
|
const popperScope = $c34afbc43c90cc6f$var$usePopperScope(__scopeTooltip);
|
|
120
104
|
const [trigger, setTrigger] = $iVrL9$react.useState(null);
|
|
121
105
|
const contentId = $iVrL9$radixuireactid.useId();
|
|
122
106
|
const openTimerRef = $iVrL9$react.useRef(0);
|
|
123
|
-
const
|
|
107
|
+
const disableHoverableContent = disableHoverableContentProp !== null && disableHoverableContentProp !== void 0 ? disableHoverableContentProp : providerContext.disableHoverableContent;
|
|
108
|
+
const delayDuration = delayDurationProp !== null && delayDurationProp !== void 0 ? delayDurationProp : providerContext.delayDuration;
|
|
124
109
|
const wasOpenDelayedRef = $iVrL9$react.useRef(false);
|
|
125
|
-
const { onOpen: onOpen , onClose: onClose } = context;
|
|
126
110
|
const [open1 = false, setOpen] = $iVrL9$radixuireactusecontrollablestate.useControllableState({
|
|
127
111
|
prop: openProp,
|
|
128
112
|
defaultProp: defaultOpen,
|
|
129
113
|
onChange: (open)=>{
|
|
130
114
|
if (open) {
|
|
131
|
-
//
|
|
132
|
-
// ensure other tooltips are aware of this one opening.
|
|
133
|
-
//
|
|
134
|
-
// as `onChange` is called within a lifecycle method we
|
|
115
|
+
providerContext.onOpen(); // as `onChange` is called within a lifecycle method we
|
|
135
116
|
// avoid dispatching via `dispatchDiscreteCustomEvent`.
|
|
136
117
|
document.dispatchEvent(new CustomEvent($c34afbc43c90cc6f$var$TOOLTIP_OPEN));
|
|
137
|
-
|
|
138
|
-
}
|
|
118
|
+
} else providerContext.onClose();
|
|
139
119
|
onOpenChange === null || onOpenChange === void 0 || onOpenChange(open);
|
|
140
120
|
}
|
|
141
121
|
});
|
|
@@ -151,6 +131,12 @@ const $c34afbc43c90cc6f$export$28c660c63b792dea = (props)=>{
|
|
|
151
131
|
}, [
|
|
152
132
|
setOpen
|
|
153
133
|
]);
|
|
134
|
+
const handleClose = $iVrL9$react.useCallback(()=>{
|
|
135
|
+
window.clearTimeout(openTimerRef.current);
|
|
136
|
+
setOpen(false);
|
|
137
|
+
}, [
|
|
138
|
+
setOpen
|
|
139
|
+
]);
|
|
154
140
|
const handleDelayedOpen = $iVrL9$react.useCallback(()=>{
|
|
155
141
|
window.clearTimeout(openTimerRef.current);
|
|
156
142
|
openTimerRef.current = window.setTimeout(()=>{
|
|
@@ -173,24 +159,24 @@ const $c34afbc43c90cc6f$export$28c660c63b792dea = (props)=>{
|
|
|
173
159
|
trigger: trigger,
|
|
174
160
|
onTriggerChange: setTrigger,
|
|
175
161
|
onTriggerEnter: $iVrL9$react.useCallback(()=>{
|
|
176
|
-
if (
|
|
162
|
+
if (providerContext.isOpenDelayed) handleDelayedOpen();
|
|
177
163
|
else handleOpen();
|
|
178
164
|
}, [
|
|
179
|
-
|
|
165
|
+
providerContext.isOpenDelayed,
|
|
180
166
|
handleDelayedOpen,
|
|
181
167
|
handleOpen
|
|
182
168
|
]),
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
onClose: $iVrL9$react.useCallback(()=>{
|
|
169
|
+
onTriggerLeave: $iVrL9$react.useCallback(()=>{
|
|
170
|
+
if (disableHoverableContent) handleClose();
|
|
171
|
+
else // Clear the timer in case the pointer leaves the trigger before the tooltip is opened.
|
|
187
172
|
window.clearTimeout(openTimerRef.current);
|
|
188
|
-
setOpen(false);
|
|
189
|
-
onClose();
|
|
190
173
|
}, [
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
])
|
|
174
|
+
handleClose,
|
|
175
|
+
disableHoverableContent
|
|
176
|
+
]),
|
|
177
|
+
onOpen: handleOpen,
|
|
178
|
+
onClose: handleClose,
|
|
179
|
+
disableHoverableContent: disableHoverableContent
|
|
194
180
|
}, children));
|
|
195
181
|
};
|
|
196
182
|
/*#__PURE__*/ Object.assign($c34afbc43c90cc6f$export$28c660c63b792dea, {
|
|
@@ -202,9 +188,12 @@ const $c34afbc43c90cc6f$export$28c660c63b792dea = (props)=>{
|
|
|
202
188
|
const $c34afbc43c90cc6f$export$8c610744efcf8a1d = /*#__PURE__*/ $iVrL9$react.forwardRef((props, forwardedRef)=>{
|
|
203
189
|
const { __scopeTooltip: __scopeTooltip , ...triggerProps } = props;
|
|
204
190
|
const context = $c34afbc43c90cc6f$var$useTooltipContext($c34afbc43c90cc6f$var$TRIGGER_NAME, __scopeTooltip);
|
|
191
|
+
const providerContext = $c34afbc43c90cc6f$var$useTooltipProviderContext($c34afbc43c90cc6f$var$TRIGGER_NAME, __scopeTooltip);
|
|
205
192
|
const popperScope = $c34afbc43c90cc6f$var$usePopperScope(__scopeTooltip);
|
|
206
|
-
const
|
|
193
|
+
const ref = $iVrL9$react.useRef(null);
|
|
194
|
+
const composedRefs = $iVrL9$radixuireactcomposerefs.useComposedRefs(forwardedRef, ref, context.onTriggerChange);
|
|
207
195
|
const isPointerDownRef = $iVrL9$react.useRef(false);
|
|
196
|
+
const hasPointerMoveOpenedRef = $iVrL9$react.useRef(false);
|
|
208
197
|
const handlePointerUp = $iVrL9$react.useCallback(()=>isPointerDownRef.current = false
|
|
209
198
|
, []);
|
|
210
199
|
$iVrL9$react.useEffect(()=>{
|
|
@@ -221,11 +210,18 @@ const $c34afbc43c90cc6f$export$8c610744efcf8a1d = /*#__PURE__*/ $iVrL9$react.for
|
|
|
221
210
|
"aria-describedby": context.open ? context.contentId : undefined,
|
|
222
211
|
"data-state": context.stateAttribute
|
|
223
212
|
}, triggerProps, {
|
|
224
|
-
ref:
|
|
225
|
-
|
|
226
|
-
if (event.pointerType
|
|
213
|
+
ref: composedRefs,
|
|
214
|
+
onPointerMove: $iVrL9$radixuiprimitive.composeEventHandlers(props.onPointerMove, (event)=>{
|
|
215
|
+
if (event.pointerType === 'touch') return;
|
|
216
|
+
if (!hasPointerMoveOpenedRef.current && !providerContext.isPointerInTransitRef.current) {
|
|
217
|
+
context.onTriggerEnter();
|
|
218
|
+
hasPointerMoveOpenedRef.current = true;
|
|
219
|
+
}
|
|
220
|
+
}),
|
|
221
|
+
onPointerLeave: $iVrL9$radixuiprimitive.composeEventHandlers(props.onPointerLeave, ()=>{
|
|
222
|
+
context.onTriggerLeave();
|
|
223
|
+
hasPointerMoveOpenedRef.current = false;
|
|
227
224
|
}),
|
|
228
|
-
onPointerLeave: $iVrL9$radixuiprimitive.composeEventHandlers(props.onPointerLeave, context.onClose),
|
|
229
225
|
onPointerDown: $iVrL9$radixuiprimitive.composeEventHandlers(props.onPointerDown, ()=>{
|
|
230
226
|
isPointerDownRef.current = true;
|
|
231
227
|
document.addEventListener('pointerup', handlePointerUp, {
|
|
@@ -274,13 +270,116 @@ const $c34afbc43c90cc6f$export$7b36b8f925ab7497 = (props)=>{
|
|
|
274
270
|
* -----------------------------------------------------------------------------------------------*/ const $c34afbc43c90cc6f$var$CONTENT_NAME = 'TooltipContent';
|
|
275
271
|
const $c34afbc43c90cc6f$export$e9003e2be37ec060 = /*#__PURE__*/ $iVrL9$react.forwardRef((props, forwardedRef)=>{
|
|
276
272
|
const portalContext = $c34afbc43c90cc6f$var$usePortalContext($c34afbc43c90cc6f$var$CONTENT_NAME, props.__scopeTooltip);
|
|
277
|
-
const { forceMount: forceMount = portalContext.forceMount , ...contentProps } = props;
|
|
273
|
+
const { forceMount: forceMount = portalContext.forceMount , side: side = 'top' , ...contentProps } = props;
|
|
278
274
|
const context = $c34afbc43c90cc6f$var$useTooltipContext($c34afbc43c90cc6f$var$CONTENT_NAME, props.__scopeTooltip);
|
|
279
275
|
return /*#__PURE__*/ $iVrL9$react.createElement($iVrL9$radixuireactpresence.Presence, {
|
|
280
276
|
present: forceMount || context.open
|
|
281
|
-
}, /*#__PURE__*/ $iVrL9$react.createElement($c34afbc43c90cc6f$var$TooltipContentImpl, ($parcel$interopDefault($iVrL9$babelruntimehelpersextends))({
|
|
277
|
+
}, context.disableHoverableContent ? /*#__PURE__*/ $iVrL9$react.createElement($c34afbc43c90cc6f$var$TooltipContentImpl, ($parcel$interopDefault($iVrL9$babelruntimehelpersextends))({
|
|
278
|
+
side: side
|
|
279
|
+
}, contentProps, {
|
|
282
280
|
ref: forwardedRef
|
|
283
|
-
},
|
|
281
|
+
})) : /*#__PURE__*/ $iVrL9$react.createElement($c34afbc43c90cc6f$var$TooltipContentHoverable, ($parcel$interopDefault($iVrL9$babelruntimehelpersextends))({
|
|
282
|
+
side: side
|
|
283
|
+
}, contentProps, {
|
|
284
|
+
ref: forwardedRef
|
|
285
|
+
})));
|
|
286
|
+
});
|
|
287
|
+
const $c34afbc43c90cc6f$var$TooltipContentHoverable = /*#__PURE__*/ $iVrL9$react.forwardRef((props, forwardedRef)=>{
|
|
288
|
+
const context = $c34afbc43c90cc6f$var$useTooltipContext($c34afbc43c90cc6f$var$CONTENT_NAME, props.__scopeTooltip);
|
|
289
|
+
const providerContext = $c34afbc43c90cc6f$var$useTooltipProviderContext($c34afbc43c90cc6f$var$CONTENT_NAME, props.__scopeTooltip);
|
|
290
|
+
const ref = $iVrL9$react.useRef(null);
|
|
291
|
+
const composedRefs = $iVrL9$radixuireactcomposerefs.useComposedRefs(forwardedRef, ref);
|
|
292
|
+
const [pointerGraceArea, setPointerGraceArea] = $iVrL9$react.useState(null);
|
|
293
|
+
const { trigger: trigger , onClose: onClose } = context;
|
|
294
|
+
const content = ref.current;
|
|
295
|
+
const { onPointerInTransitChange: onPointerInTransitChange } = providerContext;
|
|
296
|
+
const handleRemoveGraceArea = $iVrL9$react.useCallback(()=>{
|
|
297
|
+
setPointerGraceArea(null);
|
|
298
|
+
onPointerInTransitChange(false);
|
|
299
|
+
}, [
|
|
300
|
+
onPointerInTransitChange
|
|
301
|
+
]);
|
|
302
|
+
const handleCreateGraceArea = $iVrL9$react.useCallback((event, hoverTarget)=>{
|
|
303
|
+
const currentTarget = event.currentTarget;
|
|
304
|
+
const exitPoint = {
|
|
305
|
+
x: event.clientX,
|
|
306
|
+
y: event.clientY
|
|
307
|
+
};
|
|
308
|
+
const exitSide = $c34afbc43c90cc6f$var$getExitSideFromRect(exitPoint, currentTarget.getBoundingClientRect());
|
|
309
|
+
const bleed = exitSide === 'right' || exitSide === 'bottom' ? -5 : 5;
|
|
310
|
+
const isXAxis = exitSide === 'right' || exitSide === 'left';
|
|
311
|
+
const startPoint = isXAxis ? {
|
|
312
|
+
x: event.clientX + bleed,
|
|
313
|
+
y: event.clientY
|
|
314
|
+
} : {
|
|
315
|
+
x: event.clientX,
|
|
316
|
+
y: event.clientY + bleed
|
|
317
|
+
};
|
|
318
|
+
const hoverTargetPoints = $c34afbc43c90cc6f$var$getPointsFromRect(hoverTarget.getBoundingClientRect());
|
|
319
|
+
const graceArea = $c34afbc43c90cc6f$var$getHull([
|
|
320
|
+
startPoint,
|
|
321
|
+
...hoverTargetPoints
|
|
322
|
+
]);
|
|
323
|
+
setPointerGraceArea(graceArea);
|
|
324
|
+
onPointerInTransitChange(true);
|
|
325
|
+
}, [
|
|
326
|
+
onPointerInTransitChange
|
|
327
|
+
]);
|
|
328
|
+
$iVrL9$react.useEffect(()=>{
|
|
329
|
+
return ()=>handleRemoveGraceArea()
|
|
330
|
+
;
|
|
331
|
+
}, [
|
|
332
|
+
handleRemoveGraceArea
|
|
333
|
+
]);
|
|
334
|
+
$iVrL9$react.useEffect(()=>{
|
|
335
|
+
if (trigger && content) {
|
|
336
|
+
const handleTriggerLeave = (event)=>handleCreateGraceArea(event, content)
|
|
337
|
+
;
|
|
338
|
+
const handleContentLeave = (event)=>handleCreateGraceArea(event, trigger)
|
|
339
|
+
;
|
|
340
|
+
trigger.addEventListener('pointerleave', handleTriggerLeave);
|
|
341
|
+
content.addEventListener('pointerleave', handleContentLeave);
|
|
342
|
+
return ()=>{
|
|
343
|
+
trigger.removeEventListener('pointerleave', handleTriggerLeave);
|
|
344
|
+
content.removeEventListener('pointerleave', handleContentLeave);
|
|
345
|
+
};
|
|
346
|
+
}
|
|
347
|
+
}, [
|
|
348
|
+
trigger,
|
|
349
|
+
content,
|
|
350
|
+
handleCreateGraceArea,
|
|
351
|
+
handleRemoveGraceArea
|
|
352
|
+
]);
|
|
353
|
+
$iVrL9$react.useEffect(()=>{
|
|
354
|
+
if (pointerGraceArea) {
|
|
355
|
+
const handleTrackPointerGrace = (event)=>{
|
|
356
|
+
const target = event.target;
|
|
357
|
+
const pointerPosition = {
|
|
358
|
+
x: event.clientX,
|
|
359
|
+
y: event.clientY
|
|
360
|
+
};
|
|
361
|
+
const hasEnteredTarget = (trigger === null || trigger === void 0 ? void 0 : trigger.contains(target)) || (content === null || content === void 0 ? void 0 : content.contains(target));
|
|
362
|
+
const isPointerOutsideGraceArea = !$c34afbc43c90cc6f$var$isPointInPolygon(pointerPosition, pointerGraceArea);
|
|
363
|
+
if (hasEnteredTarget) handleRemoveGraceArea();
|
|
364
|
+
else if (isPointerOutsideGraceArea) {
|
|
365
|
+
handleRemoveGraceArea();
|
|
366
|
+
onClose();
|
|
367
|
+
}
|
|
368
|
+
};
|
|
369
|
+
document.addEventListener('pointermove', handleTrackPointerGrace);
|
|
370
|
+
return ()=>document.removeEventListener('pointermove', handleTrackPointerGrace)
|
|
371
|
+
;
|
|
372
|
+
}
|
|
373
|
+
}, [
|
|
374
|
+
trigger,
|
|
375
|
+
content,
|
|
376
|
+
pointerGraceArea,
|
|
377
|
+
onClose,
|
|
378
|
+
handleRemoveGraceArea
|
|
379
|
+
]);
|
|
380
|
+
return /*#__PURE__*/ $iVrL9$react.createElement($c34afbc43c90cc6f$var$TooltipContentImpl, ($parcel$interopDefault($iVrL9$babelruntimehelpersextends))({}, props, {
|
|
381
|
+
ref: composedRefs
|
|
382
|
+
}));
|
|
284
383
|
});
|
|
285
384
|
const $c34afbc43c90cc6f$var$TooltipContentImpl = /*#__PURE__*/ $iVrL9$react.forwardRef((props, forwardedRef)=>{
|
|
286
385
|
const { __scopeTooltip: __scopeTooltip , children: children , 'aria-label': ariaLabel , onEscapeKeyDown: onEscapeKeyDown , onPointerDownOutside: onPointerDownOutside , ...contentProps } = props;
|
|
@@ -350,7 +449,101 @@ const $c34afbc43c90cc6f$export$c27ee0ad710f7559 = /*#__PURE__*/ $iVrL9$react.for
|
|
|
350
449
|
/*#__PURE__*/ Object.assign($c34afbc43c90cc6f$export$c27ee0ad710f7559, {
|
|
351
450
|
displayName: $c34afbc43c90cc6f$var$ARROW_NAME
|
|
352
451
|
});
|
|
353
|
-
/* -----------------------------------------------------------------------------------------------*/
|
|
452
|
+
/* -----------------------------------------------------------------------------------------------*/ function $c34afbc43c90cc6f$var$getExitSideFromRect(point, rect) {
|
|
453
|
+
const top = Math.abs(rect.top - point.y);
|
|
454
|
+
const bottom = Math.abs(rect.bottom - point.y);
|
|
455
|
+
const right = Math.abs(rect.right - point.x);
|
|
456
|
+
const left = Math.abs(rect.left - point.x);
|
|
457
|
+
switch(Math.min(top, bottom, right, left)){
|
|
458
|
+
case left:
|
|
459
|
+
return 'left';
|
|
460
|
+
case right:
|
|
461
|
+
return 'right';
|
|
462
|
+
case top:
|
|
463
|
+
return 'top';
|
|
464
|
+
case bottom:
|
|
465
|
+
return 'bottom';
|
|
466
|
+
default:
|
|
467
|
+
return null;
|
|
468
|
+
}
|
|
469
|
+
}
|
|
470
|
+
function $c34afbc43c90cc6f$var$getPointsFromRect(rect) {
|
|
471
|
+
const { top: top , right: right , bottom: bottom , left: left } = rect;
|
|
472
|
+
return [
|
|
473
|
+
{
|
|
474
|
+
x: left,
|
|
475
|
+
y: top
|
|
476
|
+
},
|
|
477
|
+
{
|
|
478
|
+
x: right,
|
|
479
|
+
y: top
|
|
480
|
+
},
|
|
481
|
+
{
|
|
482
|
+
x: right,
|
|
483
|
+
y: bottom
|
|
484
|
+
},
|
|
485
|
+
{
|
|
486
|
+
x: left,
|
|
487
|
+
y: bottom
|
|
488
|
+
}
|
|
489
|
+
];
|
|
490
|
+
} // Determine if a point is inside of a polygon.
|
|
491
|
+
// Based on https://github.com/substack/point-in-polygon
|
|
492
|
+
function $c34afbc43c90cc6f$var$isPointInPolygon(point, polygon) {
|
|
493
|
+
const { x: x , y: y } = point;
|
|
494
|
+
let inside = false;
|
|
495
|
+
for(let i = 0, j = polygon.length - 1; i < polygon.length; j = i++){
|
|
496
|
+
const xi = polygon[i].x;
|
|
497
|
+
const yi = polygon[i].y;
|
|
498
|
+
const xj = polygon[j].x;
|
|
499
|
+
const yj = polygon[j].y; // prettier-ignore
|
|
500
|
+
const intersect = yi > y !== yj > y && x < (xj - xi) * (y - yi) / (yj - yi) + xi;
|
|
501
|
+
if (intersect) inside = !inside;
|
|
502
|
+
}
|
|
503
|
+
return inside;
|
|
504
|
+
} // Returns a new array of points representing the convex hull of the given set of points.
|
|
505
|
+
// https://www.nayuki.io/page/convex-hull-algorithm
|
|
506
|
+
function $c34afbc43c90cc6f$var$getHull(points) {
|
|
507
|
+
const newPoints = points.slice();
|
|
508
|
+
newPoints.sort((a, b)=>{
|
|
509
|
+
if (a.x < b.x) return -1;
|
|
510
|
+
else if (a.x > b.x) return 1;
|
|
511
|
+
else if (a.y < b.y) return -1;
|
|
512
|
+
else if (a.y > b.y) return 1;
|
|
513
|
+
else return 0;
|
|
514
|
+
});
|
|
515
|
+
return $c34afbc43c90cc6f$var$getHullPresorted(newPoints);
|
|
516
|
+
} // Returns the convex hull, assuming that each points[i] <= points[i + 1]. Runs in O(n) time.
|
|
517
|
+
function $c34afbc43c90cc6f$var$getHullPresorted(points) {
|
|
518
|
+
if (points.length <= 1) return points.slice();
|
|
519
|
+
const upperHull = [];
|
|
520
|
+
for(let i = 0; i < points.length; i++){
|
|
521
|
+
const p = points[i];
|
|
522
|
+
while(upperHull.length >= 2){
|
|
523
|
+
const q = upperHull[upperHull.length - 1];
|
|
524
|
+
const r = upperHull[upperHull.length - 2];
|
|
525
|
+
if ((q.x - r.x) * (p.y - r.y) >= (q.y - r.y) * (p.x - r.x)) upperHull.pop();
|
|
526
|
+
else break;
|
|
527
|
+
}
|
|
528
|
+
upperHull.push(p);
|
|
529
|
+
}
|
|
530
|
+
upperHull.pop();
|
|
531
|
+
const lowerHull = [];
|
|
532
|
+
for(let i1 = points.length - 1; i1 >= 0; i1--){
|
|
533
|
+
const p = points[i1];
|
|
534
|
+
while(lowerHull.length >= 2){
|
|
535
|
+
const q = lowerHull[lowerHull.length - 1];
|
|
536
|
+
const r = lowerHull[lowerHull.length - 2];
|
|
537
|
+
if ((q.x - r.x) * (p.y - r.y) >= (q.y - r.y) * (p.x - r.x)) lowerHull.pop();
|
|
538
|
+
else break;
|
|
539
|
+
}
|
|
540
|
+
lowerHull.push(p);
|
|
541
|
+
}
|
|
542
|
+
lowerHull.pop();
|
|
543
|
+
if (upperHull.length === 1 && lowerHull.length === 1 && upperHull[0].x === lowerHull[0].x && upperHull[0].y === lowerHull[0].y) return upperHull;
|
|
544
|
+
else return upperHull.concat(lowerHull);
|
|
545
|
+
}
|
|
546
|
+
const $c34afbc43c90cc6f$export$2881499e37b75b9a = $c34afbc43c90cc6f$export$f78649fb9ca566b8;
|
|
354
547
|
const $c34afbc43c90cc6f$export$be92b6f5f03c0fe9 = $c34afbc43c90cc6f$export$28c660c63b792dea;
|
|
355
548
|
const $c34afbc43c90cc6f$export$41fb9f06171c75f4 = $c34afbc43c90cc6f$export$8c610744efcf8a1d;
|
|
356
549
|
const $c34afbc43c90cc6f$export$602eac185826482c = $c34afbc43c90cc6f$export$7b36b8f925ab7497;
|
|
@@ -358,7 +551,6 @@ const $c34afbc43c90cc6f$export$7c6e2c02157bb7d2 = $c34afbc43c90cc6f$export$e9003
|
|
|
358
551
|
const $c34afbc43c90cc6f$export$21b07c8f274aebd5 = $c34afbc43c90cc6f$export$c27ee0ad710f7559;
|
|
359
552
|
|
|
360
553
|
|
|
361
|
-
$parcel$exportWildcard(module.exports, $c34afbc43c90cc6f$exports);
|
|
362
554
|
|
|
363
555
|
|
|
364
556
|
//# sourceMappingURL=index.js.map
|