@sanity/ui 4.1.1 → 4.2.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/{arrow-DKn5YKdy.js → arrow-D-raLuvE.js} +57 -49
- package/dist/arrow-D-raLuvE.js.map +1 -0
- package/dist/autocomplete.d.ts.map +1 -1
- package/dist/autocomplete.js +118 -122
- package/dist/autocomplete.js.map +1 -1
- package/dist/breadcrumbs.js +10 -5
- package/dist/breadcrumbs.js.map +1 -1
- package/dist/{button-Dh_M2fYx.js → button-D8Ge5vTw.js} +6 -5
- package/dist/button-D8Ge5vTw.js.map +1 -0
- package/dist/{flex-DmbDG2ks.js → flex-JVQRW_e_.js} +2 -2
- package/dist/{flex-DmbDG2ks.js.map → flex-JVQRW_e_.js.map} +1 -1
- package/dist/{grid-6JSgMj1O.js → grid-Dw7q0_YV.js} +2 -2
- package/dist/{grid-6JSgMj1O.js.map → grid-Dw7q0_YV.js.map} +1 -1
- package/dist/{hotkeys-uSArGPzR.js → hotkeys-DTjEz_u3.js} +9 -6
- package/dist/hotkeys-DTjEz_u3.js.map +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +168 -250
- package/dist/index.js.map +1 -1
- package/dist/{layer-BfwisMR6.js → layer-dwv5h6E7.js} +3 -3
- package/dist/{layer-BfwisMR6.js.map → layer-dwv5h6E7.js.map} +1 -1
- package/dist/menu.js +5 -5
- package/dist/{popover-myCXZV_F.js → popover-BngOa-um.js} +14 -11
- package/dist/popover-BngOa-um.js.map +1 -0
- package/dist/popover-CMlQeKn0.d.ts.map +1 -1
- package/dist/popover.js +1 -1
- package/dist/{stack-rsNFPq2-.js → stack-Bue-701Y.js} +2 -2
- package/dist/{stack-rsNFPq2-.js.map → stack-Bue-701Y.js.map} +1 -1
- package/dist/styles.css +156 -36
- package/dist/{textInput-DAaORuky.js → textInput-C83gG7N5.js} +23 -19
- package/dist/textInput-C83gG7N5.js.map +1 -0
- package/dist/toast.js +38 -43
- package/dist/toast.js.map +1 -1
- package/dist/tooltip.js +53 -49
- package/dist/tooltip.js.map +1 -1
- package/dist/useClickOutsideEvent-wGLGWBZN.js.map +1 -1
- package/dist/{useLayer-D1usxIE0.js → useLayer-ONr7wTUN.js} +52 -31
- package/dist/useLayer-ONr7wTUN.js.map +1 -0
- package/package.json +11 -10
- package/dist/arrow-DKn5YKdy.js.map +0 -1
- package/dist/button-Dh_M2fYx.js.map +0 -1
- package/dist/hotkeys-uSArGPzR.js.map +0 -1
- package/dist/popover-myCXZV_F.js.map +0 -1
- package/dist/textInput-DAaORuky.js.map +0 -1
- package/dist/useLayer-D1usxIE0.js.map +0 -1
package/dist/tooltip.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { c as POPOVER_MOTION_PROPS, n as _getArrayProp } from "./helpers-C8xxXAQC.js";
|
|
3
|
-
import { _ as useTheme_v2, d as createGlobalScopedContext, i as usePrefersReducedMotion, s as Card } from "./useLayer-
|
|
3
|
+
import { _ as useTheme_v2, d as createGlobalScopedContext, i as usePrefersReducedMotion, s as Card } from "./useLayer-ONr7wTUN.js";
|
|
4
4
|
import { i as origin, n as AnimateActivity, r as getTransformOrigin, t as getElementRef } from "./getElementRef-Jw7gY0eV.js";
|
|
5
|
-
import { a as useBoundaryElement, n as Portal, r as usePortal, t as Arrow } from "./arrow-
|
|
6
|
-
import { t as Layer } from "./layer-
|
|
5
|
+
import { a as useBoundaryElement, n as Portal, r as usePortal, t as Arrow } from "./arrow-D-raLuvE.js";
|
|
6
|
+
import { t as Layer } from "./layer-dwv5h6E7.js";
|
|
7
7
|
import { c } from "react/compiler-runtime";
|
|
8
8
|
import { clsx } from "clsx/lite";
|
|
9
9
|
import { Activity, cloneElement, useContext, useEffect, useId, useImperativeHandle, useLayoutEffect, useRef, useState } from "react";
|
|
@@ -181,7 +181,7 @@ function useTooltipDelayGroup() {
|
|
|
181
181
|
* @public
|
|
182
182
|
*/
|
|
183
183
|
function Tooltip(props) {
|
|
184
|
-
let $ = c(
|
|
184
|
+
let $ = c(125), boundaryElementContext = useBoundaryElement(), { layer } = useTheme_v2(), { animate: t0, arrow: t1, boundaryElement: _boundaryElement, children: childProp, content, disabled, fallbackPlacements: _fallbackPlacementsProp, padding: t2, placement: t3, portal: portalProp, radius: t4, ref: forwardedRef, scheme, shadow: t5, zOffset: _zOffset, delay, ...restProps } = props, _animate = t0 !== void 0 && t0, arrowProp = t1 !== void 0 && t1, padding = t2 === void 0 ? 2 : t2, placementProp = t3 === void 0 ? "bottom" : t3, radius = t4 === void 0 ? 2 : t4, shadow = t5 === void 0 ? 2 : t5, boundaryElement = _boundaryElement ?? boundaryElementContext?.element, fallbackPlacementsProp = _fallbackPlacementsProp ?? DEFAULT_FALLBACK_PLACEMENTS[props.placement ?? "bottom"], zOffset = _zOffset ?? layer.tooltip.zOffset, animate = !usePrefersReducedMotion() && _animate, t6;
|
|
185
185
|
$[0] === fallbackPlacementsProp ? t6 = $[1] : (t6 = _getArrayProp(fallbackPlacementsProp), $[0] = fallbackPlacementsProp, $[1] = t6);
|
|
186
186
|
let fallbackPlacements = t6, ref = useRef(null), [referenceElement, setReferenceElement] = useState(null), arrowRef = useRef(null), [tooltipMaxWidth, setTooltipMaxWidth] = useState(0), t7;
|
|
187
187
|
$[2] === Symbol.for("react.memo_cache_sentinel") ? (t7 = () => ref.current, $[2] = t7) : t7 = $[2], useImperativeHandle(forwardedRef, t7);
|
|
@@ -261,39 +261,43 @@ function Tooltip(props) {
|
|
|
261
261
|
handleIsOpenChange,
|
|
262
262
|
showTooltip
|
|
263
263
|
], $[52] = content, $[53] = handleIsOpenChange, $[54] = showTooltip, $[55] = t22, $[56] = t23) : (t22 = $[55], t23 = $[56]), useEffect(t22, t23);
|
|
264
|
-
let t24
|
|
265
|
-
$[57]
|
|
264
|
+
let t24;
|
|
265
|
+
$[57] === handleIsOpenChange ? t24 = $[58] : (t24 = () => handleIsOpenChange(!1, !0), $[57] = handleIsOpenChange, $[58] = t24);
|
|
266
|
+
let onWindowEscape = useEffectEvent(t24), t25;
|
|
267
|
+
$[59] !== onWindowEscape || $[60] !== showTooltip ? (t25 = () => {
|
|
266
268
|
if (!showTooltip) return;
|
|
267
269
|
let handleWindowKeyDown = function handleWindowKeyDown(event) {
|
|
268
|
-
event.key === "Escape" &&
|
|
270
|
+
event.key === "Escape" && onWindowEscape();
|
|
269
271
|
};
|
|
270
272
|
return window.addEventListener("keydown", handleWindowKeyDown), () => {
|
|
271
273
|
window.removeEventListener("keydown", handleWindowKeyDown);
|
|
272
274
|
};
|
|
273
|
-
},
|
|
275
|
+
}, $[59] = onWindowEscape, $[60] = showTooltip, $[61] = t25) : t25 = $[61];
|
|
274
276
|
let t26;
|
|
275
|
-
$[
|
|
277
|
+
$[62] === showTooltip ? t26 = $[63] : (t26 = [showTooltip], $[62] = showTooltip, $[63] = t26), useEffect(t25, t26);
|
|
278
|
+
let t27;
|
|
279
|
+
$[64] !== boundaryElement || $[65] !== portalElement?.offsetWidth ? (t27 = () => {
|
|
276
280
|
let availableWidths = [...boundaryElement ? [boundaryElement.offsetWidth] : [], portalElement?.offsetWidth || document.body.offsetWidth];
|
|
277
281
|
setTooltipMaxWidth(Math.min(...availableWidths) - 8);
|
|
278
|
-
}, $[
|
|
279
|
-
let t27;
|
|
280
|
-
$[64] !== boundaryElement || $[65] !== portalElement ? (t27 = [boundaryElement, portalElement], $[64] = boundaryElement, $[65] = portalElement, $[66] = t27) : t27 = $[66], useLayoutEffect(t26, t27);
|
|
282
|
+
}, $[64] = boundaryElement, $[65] = portalElement?.offsetWidth, $[66] = t27) : t27 = $[66];
|
|
281
283
|
let t28;
|
|
282
|
-
$[67]
|
|
284
|
+
$[67] !== boundaryElement || $[68] !== portalElement ? (t28 = [boundaryElement, portalElement], $[67] = boundaryElement, $[68] = portalElement, $[69] = t28) : t28 = $[69], useLayoutEffect(t27, t28);
|
|
285
|
+
let t29;
|
|
286
|
+
$[70] === update ? t29 = $[71] : (t29 = (arrowEl) => {
|
|
283
287
|
arrowRef.current = arrowEl, update();
|
|
284
|
-
}, $[
|
|
285
|
-
let setArrow =
|
|
286
|
-
$[
|
|
288
|
+
}, $[70] = update, $[71] = t29);
|
|
289
|
+
let setArrow = t29, t30;
|
|
290
|
+
$[72] === refs ? t30 = $[73] : (t30 = (node) => {
|
|
287
291
|
ref.current = node, refs.setFloating(node);
|
|
288
|
-
}, $[
|
|
289
|
-
let setFloating =
|
|
292
|
+
}, $[72] = refs, $[73] = t30);
|
|
293
|
+
let setFloating = t30, t31;
|
|
290
294
|
bb0: {
|
|
291
295
|
if (!childProp) {
|
|
292
|
-
|
|
296
|
+
t31 = null;
|
|
293
297
|
break bb0;
|
|
294
298
|
}
|
|
295
|
-
let
|
|
296
|
-
$[
|
|
299
|
+
let t32;
|
|
300
|
+
$[74] !== childProp || $[75] !== handleBlur || $[76] !== handleClick || $[77] !== handleContextMenu || $[78] !== handleFocus || $[79] !== handleMouseEnter || $[80] !== handleMouseLeave ? (t32 = cloneElement(childProp, {
|
|
297
301
|
onBlur: handleBlur,
|
|
298
302
|
onFocus: handleFocus,
|
|
299
303
|
onMouseEnter: handleMouseEnter,
|
|
@@ -301,23 +305,23 @@ function Tooltip(props) {
|
|
|
301
305
|
onClick: handleClick,
|
|
302
306
|
onContextMenu: handleContextMenu,
|
|
303
307
|
ref: setReferenceElement
|
|
304
|
-
}), $[
|
|
308
|
+
}), $[74] = childProp, $[75] = handleBlur, $[76] = handleClick, $[77] = handleContextMenu, $[78] = handleFocus, $[79] = handleMouseEnter, $[80] = handleMouseLeave, $[81] = t32) : t32 = $[81], t31 = t32;
|
|
305
309
|
}
|
|
306
|
-
let child =
|
|
307
|
-
$[
|
|
308
|
-
let
|
|
309
|
-
if ($[
|
|
310
|
-
let
|
|
311
|
-
return $[
|
|
310
|
+
let child = t31, t32;
|
|
311
|
+
$[82] === childProp ? t32 = $[83] : (t32 = childProp ? getElementRef(childProp) : null, $[82] = childProp, $[83] = t32);
|
|
312
|
+
let t33, t34;
|
|
313
|
+
if ($[84] === referenceElement ? (t33 = $[85], t34 = $[86]) : (t33 = () => referenceElement, t34 = [referenceElement], $[84] = referenceElement, $[85] = t33, $[86] = t34), useImperativeHandle(t32, t33, t34), !child) {
|
|
314
|
+
let t35;
|
|
315
|
+
return $[87] === Symbol.for("react.memo_cache_sentinel") ? (t35 = /* @__PURE__ */ jsx(Fragment$1, {}), $[87] = t35) : t35 = $[87], t35;
|
|
312
316
|
}
|
|
313
317
|
if (disabled) return child;
|
|
314
|
-
let T0 = Layer,
|
|
315
|
-
$[
|
|
318
|
+
let T0 = Layer, t36 = clsx(tooltipLayer, restProps.className), t37 = tooltipMaxWidth > 0 ? `${tooltipMaxWidth}px` : void 0, t38;
|
|
319
|
+
$[88] !== floatingStyles || $[89] !== t37 ? (t38 = {
|
|
316
320
|
...floatingStyles,
|
|
317
|
-
maxWidth:
|
|
318
|
-
}, $[
|
|
319
|
-
let
|
|
320
|
-
$[
|
|
321
|
+
maxWidth: t37
|
|
322
|
+
}, $[88] = floatingStyles, $[89] = t37, $[90] = t38) : t38 = $[90];
|
|
323
|
+
let t39;
|
|
324
|
+
$[91] !== animate || $[92] !== arrowProp || $[93] !== arrowX || $[94] !== arrowY || $[95] !== content || $[96] !== originX || $[97] !== originY || $[98] !== padding || $[99] !== placement || $[100] !== radius || $[101] !== restProps || $[102] !== scheme || $[103] !== setArrow || $[104] !== setFloating || $[105] !== shadow ? (t39 = /* @__PURE__ */ jsx(TooltipCard, {
|
|
321
325
|
...restProps,
|
|
322
326
|
animate,
|
|
323
327
|
arrow: arrowProp,
|
|
@@ -333,33 +337,33 @@ function Tooltip(props) {
|
|
|
333
337
|
scheme,
|
|
334
338
|
shadow,
|
|
335
339
|
children: content
|
|
336
|
-
}), $[
|
|
337
|
-
let
|
|
338
|
-
$[
|
|
340
|
+
}), $[91] = animate, $[92] = arrowProp, $[93] = arrowX, $[94] = arrowY, $[95] = content, $[96] = originX, $[97] = originY, $[98] = padding, $[99] = placement, $[100] = radius, $[101] = restProps, $[102] = scheme, $[103] = setArrow, $[104] = setFloating, $[105] = shadow, $[106] = t39) : t39 = $[106];
|
|
341
|
+
let t40;
|
|
342
|
+
$[107] !== T0 || $[108] !== restProps || $[109] !== setFloating || $[110] !== t36 || $[111] !== t38 || $[112] !== t39 || $[113] !== zOffset ? (t40 = /* @__PURE__ */ jsx(T0, {
|
|
339
343
|
"data-ui": "Tooltip",
|
|
340
344
|
...restProps,
|
|
341
|
-
className:
|
|
345
|
+
className: t36,
|
|
342
346
|
ref: setFloating,
|
|
343
|
-
style:
|
|
347
|
+
style: t38,
|
|
344
348
|
zOffset,
|
|
345
|
-
children:
|
|
346
|
-
}), $[
|
|
347
|
-
let tooltip =
|
|
348
|
-
$[
|
|
349
|
+
children: t39
|
|
350
|
+
}), $[107] = T0, $[108] = restProps, $[109] = setFloating, $[110] = t36, $[111] = t38, $[112] = t39, $[113] = zOffset, $[114] = t40) : t40 = $[114];
|
|
351
|
+
let tooltip = t40, t41;
|
|
352
|
+
$[115] !== portalProp || $[116] !== tooltip ? (t41 = portalProp ? /* @__PURE__ */ jsx(Portal, {
|
|
349
353
|
__unstable_name: typeof portalProp == "string" ? portalProp : void 0,
|
|
350
354
|
children: tooltip
|
|
351
|
-
}) : tooltip, $[
|
|
352
|
-
let tooltipNode =
|
|
353
|
-
$[
|
|
355
|
+
}) : tooltip, $[115] = portalProp, $[116] = tooltip, $[117] = t41) : t41 = $[117];
|
|
356
|
+
let tooltipNode = t41, t42;
|
|
357
|
+
$[118] !== animate || $[119] !== showTooltip || $[120] !== tooltipNode ? (t42 = animate ? /* @__PURE__ */ jsx(AnimateActivity, {
|
|
354
358
|
layoutMode: "default",
|
|
355
359
|
mode: showTooltip ? "visible" : "hidden",
|
|
356
360
|
children: tooltipNode
|
|
357
361
|
}) : /* @__PURE__ */ jsx(Activity, {
|
|
358
362
|
mode: showTooltip ? "visible" : "hidden",
|
|
359
363
|
children: tooltipNode
|
|
360
|
-
}), $[
|
|
361
|
-
let
|
|
362
|
-
return $[
|
|
364
|
+
}), $[118] = animate, $[119] = showTooltip, $[120] = tooltipNode, $[121] = t42) : t42 = $[121];
|
|
365
|
+
let t43;
|
|
366
|
+
return $[122] !== child || $[123] !== t42 ? (t43 = /* @__PURE__ */ jsxs(Fragment$1, { children: [t42, child] }), $[122] = child, $[123] = t42, $[124] = t43) : t43 = $[124], t43;
|
|
363
367
|
}
|
|
364
368
|
function useMiddleware(t0) {
|
|
365
369
|
let $ = c(17), { animate, arrowProp, arrowRef, boundaryElement, fallbackPlacements, rootBoundary } = t0, ret;
|
package/dist/tooltip.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tooltip.js","names":["(nextState: SetStateAction<S>, delay?: number) => {\n const action = () => {\n setState(nextState)\n }\n\n // A new state change has been initiated, cancel the previous one.\n if (delayedAction.current) {\n clearTimeout(delayedAction.current)\n delayedAction.current = undefined\n }\n\n if (!delay) return action()\n delayedAction.current = setTimeout(action, delay)\n }","useCallback((nextState: SetStateAction<S>, delay?: number) => {\n const action = () => {\n setState(nextState)\n }\n\n // A new state change has been initiated, cancel the previous one.\n if (delayedAction.current) {\n clearTimeout(delayedAction.current)\n delayedAction.current = undefined\n }\n\n if (!delay) return action()\n delayedAction.current = setTimeout(action, delay)\n }, [])","() => {\n return () => {\n if (delayedAction.current) {\n clearTimeout(delayedAction.current)\n }\n }\n }","[]","[state, onStateChange]","getTransformOrigin(originX, originY)","{\n transformOrigin: getTransformOrigin(originX, originY),\n willChange: animate ? 'transform' : undefined,\n ...style,\n }","animate ? 'transform' : undefined","useMemo(\n () => ({\n transformOrigin: getTransformOrigin(originX, originY),\n willChange: animate ? 'transform' : undefined,\n ...style,\n }),\n [animate, originX, originY, style],\n )","{\n left: arrowX !== null ? arrowX : undefined,\n top: arrowY !== null ? arrowY : undefined,\n right: undefined,\n bottom: undefined,\n }","arrowX !== null ? arrowX : undefined","arrowY !== null ? arrowY : undefined","useMemo(\n () => ({\n left: arrowX !== null ? arrowX : undefined,\n top: arrowY !== null ? arrowY : undefined,\n right: undefined,\n bottom: undefined,\n }),\n [arrowX, arrowY],\n )","clsx(tooltipCard, className)","arrow && (\n <Arrow\n ref={arrowRef}\n style={arrowStyle}\n width={DEFAULT_TOOLTIP_ARROW_WIDTH}\n height={DEFAULT_TOOLTIP_ARROW_HEIGHT}\n radius={DEFAULT_TOOLTIP_ARROW_RADIUS}\n />\n )","<MotionCard\n className={clsx(tooltipCard, className)}\n data-ui=\"Tooltip__card\"\n {...restProps}\n data-placement={placement}\n padding={padding}\n radius={radius}\n ref={ref}\n scheme={scheme}\n shadow={shadow}\n style={rootStyle}\n {...(animate ? POPOVER_MOTION_PROPS : undefined)}\n >\n {children}\n\n {arrow && (\n <Arrow\n ref={arrowRef}\n style={arrowStyle}\n width={DEFAULT_TOOLTIP_ARROW_WIDTH}\n height={DEFAULT_TOOLTIP_ARROW_HEIGHT}\n radius={DEFAULT_TOOLTIP_ARROW_RADIUS}\n />\n )}\n </MotionCard>","animate ? POPOVER_MOTION_PROPS : undefined","_animate = false","arrowProp = false","placementProp = 'bottom'","padding = 2","radius = 2","shadow = 2","_getArrayProp(fallbackPlacementsProp)","() => ref.current","{\n animate,\n arrowProp,\n arrowRef,\n boundaryElement,\n fallbackPlacements,\n rootBoundary,\n }","{reference: referenceElement}","{\n middleware,\n placement: placementProp,\n whileElementsMounted: autoUpdate,\n elements: {reference: referenceElement},\n }","delayGroupContext || {}","(open: boolean, immediate?: boolean) => {\n if (isInsideGroup) {\n // When it's inside a group, the open or close status will be handled by the group.\n if (open) {\n const groupedOpenDelay = immediate ? 0 : openDelay\n\n setIsGroupActive?.(open, groupedOpenDelay)\n setOpenTooltipId?.(tooltipId, groupedOpenDelay)\n } else {\n const minimumGroupDeactivateDelay = 200 // We should provide some delay to allow the user to reach the next tooltip.\n const groupDeactivateDelay =\n closeDelay > minimumGroupDeactivateDelay ? closeDelay : minimumGroupDeactivateDelay\n\n setIsGroupActive?.(open, groupDeactivateDelay)\n setOpenTooltipId?.(null, immediate ? 0 : closeDelay)\n }\n } else {\n const standaloneDelay = immediate ? 0 : open ? openDelay : closeDelay\n\n // When it's not inside a group, the open or close status will be handled by the tooltip itself.\n setIsOpen(open, standaloneDelay)\n }\n }","useCallback(\n (open: boolean, immediate?: boolean) => {\n if (isInsideGroup) {\n // When it's inside a group, the open or close status will be handled by the group.\n if (open) {\n const groupedOpenDelay = immediate ? 0 : openDelay\n\n setIsGroupActive?.(open, groupedOpenDelay)\n setOpenTooltipId?.(tooltipId, groupedOpenDelay)\n } else {\n const minimumGroupDeactivateDelay = 200 // We should provide some delay to allow the user to reach the next tooltip.\n const groupDeactivateDelay =\n closeDelay > minimumGroupDeactivateDelay ? closeDelay : minimumGroupDeactivateDelay\n\n setIsGroupActive?.(open, groupDeactivateDelay)\n setOpenTooltipId?.(null, immediate ? 0 : closeDelay)\n }\n } else {\n const standaloneDelay = immediate ? 0 : open ? openDelay : closeDelay\n\n // When it's not inside a group, the open or close status will be handled by the tooltip itself.\n setIsOpen(open, standaloneDelay)\n }\n },\n [\n isInsideGroup,\n openDelay,\n setIsGroupActive,\n setOpenTooltipId,\n tooltipId,\n closeDelay,\n setIsOpen,\n ],\n )","(e: FocusEvent) => {\n handleIsOpenChange(false)\n childProp?.props?.onBlur?.(e)\n }","props","useCallback(\n (e: FocusEvent) => {\n handleIsOpenChange(false)\n childProp?.props?.onBlur?.(e)\n },\n [childProp?.props, handleIsOpenChange],\n )","(e: MouseEvent) => {\n handleIsOpenChange(false, true)\n childProp?.props.onClick?.(e)\n }","e","useCallback(\n (e: MouseEvent) => {\n handleIsOpenChange(false, true)\n childProp?.props.onClick?.(e)\n },\n [childProp?.props, handleIsOpenChange],\n )","(e: MouseEvent) => {\n handleIsOpenChange(false, true)\n childProp?.props.onContextMenu?.(e)\n }","useCallback(\n (e: MouseEvent) => {\n handleIsOpenChange(false, true)\n childProp?.props.onContextMenu?.(e)\n },\n [childProp?.props, handleIsOpenChange],\n )","(e: FocusEvent) => {\n handleIsOpenChange(true)\n childProp?.props?.onFocus?.(e)\n }","useCallback(\n (e: FocusEvent) => {\n handleIsOpenChange(true)\n childProp?.props?.onFocus?.(e)\n },\n [childProp?.props, handleIsOpenChange],\n )","(e: MouseEvent) => {\n handleIsOpenChange(true)\n childProp?.props?.onMouseEnter?.(e)\n }","useCallback(\n (e: MouseEvent) => {\n handleIsOpenChange(true)\n childProp?.props?.onMouseEnter?.(e)\n },\n [childProp?.props, handleIsOpenChange],\n )","(e: MouseEvent) => {\n handleIsOpenChange(false)\n childProp?.props?.onMouseLeave?.(e)\n }","useCallback(\n (e: MouseEvent) => {\n handleIsOpenChange(false)\n childProp?.props?.onMouseLeave?.(e)\n },\n [childProp?.props, handleIsOpenChange],\n )","{handleIsOpenChange, referenceElement, showTooltip, isInsideGroup}","() => {\n if (disabled && showTooltip) handleIsOpenChange(false)\n }","[disabled, handleIsOpenChange, showTooltip]","() => {\n if (!content && showTooltip) handleIsOpenChange(false)\n }","[content, handleIsOpenChange, showTooltip]","() => {\n // If the user clicks on escape key, close the tooltip.\n if (!showTooltip) return\n\n function handleWindowKeyDown(event: KeyboardEvent) {\n if (event.key === 'Escape') {\n handleIsOpenChange(false, true)\n }\n }\n\n window.addEventListener('keydown', handleWindowKeyDown)\n\n // oxlint-disable-next-line consistent-return\n return () => {\n window.removeEventListener('keydown', handleWindowKeyDown)\n }\n }","[handleIsOpenChange, showTooltip]","() => {\n // Get the maximum tooltip width (sans tooltip padding)\n // Tooltip width should never exceed the width of either any supplied boundary or portal element.\n // If both portal and boundary elements are provided, use the smaller width of the two.\n const availableWidths = [\n ...(boundaryElement ? [boundaryElement.offsetWidth] : []),\n portalElement?.offsetWidth || document.body.offsetWidth,\n ]\n\n // oxlint-disable-next-line react/set-state-in-effect\n setTooltipMaxWidth(Math.min(...availableWidths) - DEFAULT_TOOLTIP_PADDING * 2)\n }","offsetWidth","[boundaryElement, portalElement]","(arrowEl: HTMLDivElement | null) => {\n arrowRef.current = arrowEl\n update()\n }","useCallback(\n (arrowEl: HTMLDivElement | null) => {\n arrowRef.current = arrowEl\n update()\n },\n [update],\n )","(node: HTMLDivElement | null) => {\n ref.current = node\n refs.setFloating(node)\n }","useCallback(\n (node: HTMLDivElement | null) => {\n ref.current = node\n refs.setFloating(node)\n },\n [refs],\n )","useMemo(() => {\n if (!childProp) return null\n\n return cloneElement(childProp, {\n onBlur: handleBlur,\n onFocus: handleFocus,\n onMouseEnter: handleMouseEnter,\n onMouseLeave: handleMouseLeave,\n onClick: handleClick,\n onContextMenu: handleContextMenu,\n ref: setReferenceElement,\n })\n }, [\n childProp,\n handleBlur,\n handleClick,\n handleContextMenu,\n handleFocus,\n handleMouseEnter,\n handleMouseLeave,\n ])","cloneElement(childProp, {\n onBlur: handleBlur,\n onFocus: handleFocus,\n onMouseEnter: handleMouseEnter,\n onMouseLeave: handleMouseLeave,\n onClick: handleClick,\n onContextMenu: handleContextMenu,\n ref: setReferenceElement,\n })","childProp ? getElementRef(childProp) : null","() => referenceElement","[\n referenceElement,\n ]","<></>","{\n ...floatingStyles,\n maxWidth: tooltipMaxWidth > 0 ? `${tooltipMaxWidth}px` : undefined,\n }","tooltipMaxWidth > 0 ? `${tooltipMaxWidth}px` : undefined","<TooltipCard\n {...restProps}\n animate={animate}\n arrow={arrowProp}\n arrowRef={setArrow}\n arrowX={arrowX}\n arrowY={arrowY}\n originX={originX}\n originY={originY}\n padding={padding}\n placement={placement}\n radius={radius}\n ref={setFloating}\n scheme={scheme}\n shadow={shadow}\n >\n {content}\n </TooltipCard>","<Layer\n data-ui=\"Tooltip\"\n {...restProps}\n className={clsx(tooltipLayer, restProps.className)}\n ref={setFloating}\n style={{\n ...floatingStyles,\n maxWidth: tooltipMaxWidth > 0 ? `${tooltipMaxWidth}px` : undefined,\n }}\n zOffset={zOffset}\n >\n <TooltipCard\n {...restProps}\n animate={animate}\n arrow={arrowProp}\n arrowRef={setArrow}\n arrowX={arrowX}\n arrowY={arrowY}\n originX={originX}\n originY={originY}\n padding={padding}\n placement={placement}\n radius={radius}\n ref={setFloating}\n scheme={scheme}\n shadow={shadow}\n >\n {content}\n </TooltipCard>\n </Layer>","Layer","clsx(tooltipLayer, restProps.className)","\"Tooltip\"","portalProp ? (\n <Portal __unstable_name={typeof portalProp === 'string' ? portalProp : undefined}>\n {tooltip}\n </Portal>\n ) : (\n tooltip\n )","animate ? (\n <AnimateActivity layoutMode=\"default\" mode={showTooltip ? 'visible' : 'hidden'}>\n {tooltipNode}\n </AnimateActivity>\n ) : (\n <Activity mode={showTooltip ? 'visible' : 'hidden'}>{tooltipNode}</Activity>\n )","<>\n {/* the tooltip */}\n {animate ? (\n <AnimateActivity layoutMode=\"default\" mode={showTooltip ? 'visible' : 'hidden'}>\n {tooltipNode}\n </AnimateActivity>\n ) : (\n <Activity mode={showTooltip ? 'visible' : 'hidden'}>{tooltipNode}</Activity>\n )}\n\n {/* the referred element */}\n {child}\n </>","{\n animate,\n arrowProp,\n arrowRef,\n boundaryElement,\n fallbackPlacements,\n rootBoundary,\n}: {\n animate: boolean\n arrowProp: boolean\n arrowRef: React.RefObject<HTMLDivElement | null>\n boundaryElement: HTMLElement | null\n fallbackPlacements: Placement[]\n rootBoundary: RootBoundary\n}","flip({\n boundary: boundaryElement || undefined,\n fallbackPlacements,\n padding: DEFAULT_TOOLTIP_PADDING,\n rootBoundary,\n })","boundaryElement || undefined","offset({mainAxis: DEFAULT_TOOLTIP_DISTANCE})","shift({\n boundary: boundaryElement || undefined,\n rootBoundary,\n padding: DEFAULT_TOOLTIP_PADDING,\n })","arrow({element: arrowRef, padding: DEFAULT_TOOLTIP_PADDING})","useMemo(() => {\n const ret: Middleware[] = []\n\n // Flip the floating element when leaving the boundary box\n ret.push(\n flip({\n boundary: boundaryElement || undefined,\n fallbackPlacements,\n padding: DEFAULT_TOOLTIP_PADDING,\n rootBoundary,\n }),\n )\n\n // Define distance between reference and floating element\n ret.push(offset({mainAxis: DEFAULT_TOOLTIP_DISTANCE}))\n\n // Shift the tooltip so its sits with the boundary element\n ret.push(\n shift({\n boundary: boundaryElement || undefined,\n rootBoundary,\n padding: DEFAULT_TOOLTIP_PADDING,\n }),\n )\n\n // Place arrow\n if (arrowProp) {\n ret.push(arrow({element: arrowRef, padding: DEFAULT_TOOLTIP_PADDING}))\n }\n\n // Determine the origin to scale from.\n // Must be placed after `@sanity/ui/size` and `shift` middleware.\n if (animate) {\n ret.push(origin)\n }\n\n return ret\n }, [animate, arrowProp, arrowRef, boundaryElement, fallbackPlacements, rootBoundary])","{\n handleIsOpenChange,\n referenceElement,\n showTooltip,\n isInsideGroup,\n}: {\n handleIsOpenChange: (open: boolean, immediate?: boolean) => void\n referenceElement: HTMLElement | null\n showTooltip: boolean\n isInsideGroup: boolean\n}","(target: EventTarget | null, teardown: () => void) => {\n if (!referenceElement) return\n\n const isHoveringReference =\n referenceElement === target || (target instanceof Node && referenceElement.contains(target))\n\n if (!isHoveringReference) {\n handleIsOpenChange(false)\n // Allow removing the event listener eagerly, to avoid race conditions\n teardown()\n }\n }","() => {\n if (!showTooltip || isInsideGroup) return\n\n const handleMouseMove = (event: MouseEvent) => {\n onMouseMove(event.target, () => window.removeEventListener('mousemove', handleMouseMove))\n }\n\n window.addEventListener('mousemove', handleMouseMove)\n\n // oxlint-disable-next-line consistent-return\n return () => window.removeEventListener('mousemove', handleMouseMove)\n // oxlint-disable-next-line react/exhaustive-effect-dependencies\n }","[isInsideGroup, showTooltip]","{\n setIsGroupActive: setIsGroupActive,\n openTooltipId: openTooltipId,\n setOpenTooltipId: setOpenTooltipId,\n // When the group is active, we want the next tooltip to open immediately.\n openDelay: isGroupActive ? 1 : openDelay,\n closeDelay: closeDelay,\n }","isGroupActive ? 1 : openDelay","useMemo(\n () => ({\n setIsGroupActive: setIsGroupActive,\n openTooltipId: openTooltipId,\n setOpenTooltipId: setOpenTooltipId,\n // When the group is active, we want the next tooltip to open immediately.\n openDelay: isGroupActive ? 1 : openDelay,\n closeDelay: closeDelay,\n }),\n [closeDelay, isGroupActive, openDelay, openTooltipId, setIsGroupActive, setOpenTooltipId],\n )","<TooltipDelayGroupContext.Provider value={value}>{children}</TooltipDelayGroupContext.Provider>","TooltipDelayGroupContext.Provider"],"sources":["../src/core/hooks/useDelayedState.ts","../src/core/primitives/tooltip/constants.ts","../src/core/primitives/tooltip/tooltip.css.ts","../src/core/primitives/tooltip/tooltipCard.tsx","../src/core/primitives/tooltip/tooltipDelayGroup/tooltipDelayGroupContext.tsx","../src/core/primitives/tooltip/tooltipDelayGroup/useTooltipDelayGroup.ts","../src/core/primitives/tooltip/tooltip.tsx","../src/core/primitives/tooltip/tooltipDelayGroup/tooltipDelayGroupProvider.tsx"],"sourcesContent":["import {SetStateAction, useCallback, useEffect, useRef, useState} from 'react'\n\n/**\n * @beta\n */\nexport function useDelayedState<S>(\n initialState: S | (() => S),\n): [S, (nextState: SetStateAction<S>, delay?: number) => void] {\n const [state, setState] = useState(initialState)\n const delayedAction = useRef<NodeJS.Timeout | undefined>(undefined)\n\n const onStateChange = useCallback((nextState: SetStateAction<S>, delay?: number) => {\n const action = () => {\n setState(nextState)\n }\n\n // A new state change has been initiated, cancel the previous one.\n if (delayedAction.current) {\n clearTimeout(delayedAction.current)\n delayedAction.current = undefined\n }\n\n if (!delay) return action()\n delayedAction.current = setTimeout(action, delay)\n }, [])\n\n useEffect(() => {\n return () => {\n if (delayedAction.current) {\n clearTimeout(delayedAction.current)\n }\n }\n }, [])\n\n return [state, onStateChange]\n}\n","import {Placement} from '@floating-ui/react-dom'\n\nexport const DEFAULT_TOOLTIP_ARROW_WIDTH = 15\nexport const DEFAULT_TOOLTIP_ARROW_HEIGHT = 6\nexport const DEFAULT_TOOLTIP_ARROW_RADIUS = 2\n\nexport const DEFAULT_TOOLTIP_DISTANCE = 4\nexport const DEFAULT_TOOLTIP_PADDING = 4\n\nexport const DEFAULT_FALLBACK_PLACEMENTS: Record<Placement, Placement[]> = {\n 'top': ['top-end', 'top-start', 'bottom', 'left', 'right'],\n 'top-start': ['top', 'top-end', 'bottom-start', 'left-start', 'right-start'],\n 'top-end': ['top', 'top-start', 'bottom-end', 'left-end', 'right-end'],\n 'bottom': ['bottom-end', 'bottom-start', 'top', 'left', 'right'],\n 'bottom-start': ['bottom', 'bottom-end', 'top-start', 'left-start', 'right-start'],\n 'bottom-end': ['bottom', 'bottom-start', 'top-end', 'left-end', 'right-end'],\n 'left': ['left-end', 'left-start', 'right', 'top', 'bottom'],\n 'left-start': ['left', 'left-end', 'right-start', 'top-start', 'bottom-start'],\n 'left-end': ['left', 'left-start', 'right-end', 'top-end', 'bottom-end'],\n 'right': ['right-end', 'right-start', 'left', 'top', 'bottom'],\n 'right-start': ['right', 'right-end', 'left-start', 'top-start', 'bottom-start'],\n 'right-end': ['right', 'right-start', 'left-end', 'top-end', 'bottom-end'],\n}\n","import {style} from '@vanilla-extract/css'\n\nexport const tooltipLayer = style({\n pointerEvents: 'none',\n})\n\nexport const tooltipCard = style({\n willChange: 'transform',\n})\n","import {clsx} from 'clsx/lite'\nimport {motion} from 'motion/react'\nimport React, {CSSProperties, useMemo} from 'react'\n\nimport {ThemeColorSchemeKey} from '../../../theme/system/color/_system'\nimport {POPOVER_MOTION_PROPS} from '../../constants'\nimport {getTransformOrigin} from '../../middleware/origin'\nimport {Placement} from '../../types/placement'\nimport {Radius} from '../../types/radius'\nimport {Arrow} from '../../utils/arrow/arrow'\nimport {Card} from '../card/card'\nimport {\n DEFAULT_TOOLTIP_ARROW_HEIGHT,\n DEFAULT_TOOLTIP_ARROW_RADIUS,\n DEFAULT_TOOLTIP_ARROW_WIDTH,\n} from './constants'\n\nimport {tooltipCard} from './tooltip.css'\n\nconst MotionCard = motion.create(Card)\n\n/**\n * @internal\n */\nexport function TooltipCard(\n props: {\n animate?: boolean\n arrow: boolean\n arrowRef: React.Ref<HTMLDivElement>\n arrowX?: number\n arrowY?: number\n originX?: number\n originY?: number\n padding?: number | number[]\n placement?: Placement\n radius?: Radius | Radius[]\n scheme?: ThemeColorSchemeKey\n shadow?: number | number[]\n } & Omit<React.HTMLProps<HTMLDivElement>, 'as' | 'height' | 'width'>,\n) {\n const {\n animate,\n arrow,\n arrowRef,\n arrowX,\n arrowY,\n children,\n className,\n originX,\n originY,\n padding,\n placement,\n radius,\n ref,\n scheme,\n shadow,\n style,\n ...restProps\n } = props\n\n const rootStyle: CSSProperties = useMemo(\n () => ({\n transformOrigin: getTransformOrigin(originX, originY),\n willChange: animate ? 'transform' : undefined,\n ...style,\n }),\n [animate, originX, originY, style],\n )\n\n const arrowStyle: CSSProperties = useMemo(\n () => ({\n left: arrowX !== null ? arrowX : undefined,\n top: arrowY !== null ? arrowY : undefined,\n right: undefined,\n bottom: undefined,\n }),\n [arrowX, arrowY],\n )\n\n return (\n <MotionCard\n className={clsx(tooltipCard, className)}\n data-ui=\"Tooltip__card\"\n {...restProps}\n data-placement={placement}\n padding={padding}\n radius={radius}\n ref={ref}\n scheme={scheme}\n shadow={shadow}\n style={rootStyle}\n {...(animate ? POPOVER_MOTION_PROPS : undefined)}\n >\n {children}\n\n {arrow && (\n <Arrow\n ref={arrowRef}\n style={arrowStyle}\n width={DEFAULT_TOOLTIP_ARROW_WIDTH}\n height={DEFAULT_TOOLTIP_ARROW_HEIGHT}\n radius={DEFAULT_TOOLTIP_ARROW_RADIUS}\n />\n )}\n </MotionCard>\n )\n}\n","import {createGlobalScopedContext} from '../../../lib/createGlobalScopedContext'\nimport {TooltipDelayGroupContextValue} from './types'\n\n/**\n * @beta\n */\nexport const TooltipDelayGroupContext =\n createGlobalScopedContext<TooltipDelayGroupContextValue | null>(\n '@sanity/ui/context/tooltipDelayGroup',\n null,\n )\n","import {useContext} from 'react'\n\nimport {TooltipDelayGroupContext} from './tooltipDelayGroupContext'\nimport {TooltipDelayGroupContextValue} from './types'\n\n/**\n * @beta\n */\nexport function useTooltipDelayGroup(): TooltipDelayGroupContextValue | null {\n const value = useContext(TooltipDelayGroupContext)\n\n return value\n}\n","import {\n arrow,\n autoUpdate,\n flip,\n type Middleware,\n offset,\n type RootBoundary,\n shift,\n useFloating,\n} from '@floating-ui/react-dom'\nimport {clsx} from 'clsx/lite'\nimport {\n Activity,\n cloneElement,\n useCallback,\n useEffect,\n useId,\n useImperativeHandle,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n} from 'react'\n// TODO: switch to `useEffectEvent` from `react` once\n// https://github.com/facebook/react/issues/34818 is fixed in the lowest React\n// version we support: on React 19.2 the native hook never sees values past\n// the first render when the calling component is wrapped in `forwardRef` or\n// `memo`, and consumers may wrap `Tooltip` in `memo`.\nimport {useEffectEvent} from 'use-effect-event'\n\nimport type {ThemeColorSchemeKey} from '../../../theme/system/color/_system'\nimport {useDelayedState} from '../../hooks/useDelayedState'\nimport {usePrefersReducedMotion} from '../../hooks/usePrefersReducedMotion'\nimport {origin} from '../../middleware/origin'\nimport {_getArrayProp} from '../../styles/helpers'\nimport {useTheme_v2} from '../../theme/useTheme'\nimport type {Placement} from '../../types/placement'\nimport {AnimateActivity} from '../../utils/animateActivity'\nimport {useBoundaryElement} from '../../utils/boundaryElement/useBoundaryElement'\nimport {getElementRef} from '../../utils/getElementRef'\nimport {Layer, type LayerProps} from '../../utils/layer/layer'\nimport {Portal} from '../../utils/portal/portal'\nimport {usePortal} from '../../utils/portal/usePortal'\nimport type {Delay} from '../types'\nimport {\n DEFAULT_FALLBACK_PLACEMENTS,\n DEFAULT_TOOLTIP_DISTANCE,\n DEFAULT_TOOLTIP_PADDING,\n} from './constants'\nimport {TooltipCard} from './tooltipCard'\nimport {useTooltipDelayGroup} from './tooltipDelayGroup/useTooltipDelayGroup'\n\nimport {tooltipLayer} from './tooltip.css'\n\n/**\n * @public\n */\nexport interface TooltipProps extends Omit<LayerProps, 'as'> {\n /** @deprecated Use `fallbackPlacements` instead. */\n allowedAutoPlacements?: never\n arrow?: boolean\n boundaryElement?: HTMLElement | null\n children?: React.JSX.Element\n content?: React.ReactNode\n disabled?: boolean\n fallbackPlacements?: Placement[]\n padding?: number | number[]\n placement?: Placement\n /** Whether or not to render the tooltip in a portal element. */\n portal?: boolean | string\n radius?: number | number[]\n scheme?: ThemeColorSchemeKey\n shadow?: number | number[]\n /**\n * Adds a delay to open or close the tooltip.\n *\n * If only a `number` is passed, it will be used for both opening and closing.\n *\n * If an object `{open: number; close:number}` is passed, it can be used to set different delays for each action.\n *\n * @public\n * @defaultValue 0\n */\n delay?: Delay\n /**\n * Whether the tooltip should animate in and out.\n *\n * @beta\n * @defaultValue false\n */\n animate?: boolean\n}\n\n/**\n * Tooltips display information when hovering, focusing or tapping.\n *\n * @public\n */\nexport function Tooltip(\n props: TooltipProps & Omit<React.HTMLProps<HTMLDivElement>, 'as' | 'children' | 'content'>,\n) {\n const boundaryElementContext = useBoundaryElement()\n const {layer} = useTheme_v2()\n const {\n animate: _animate = false,\n arrow: arrowProp = false,\n boundaryElement: _boundaryElement,\n children: childProp,\n content,\n disabled,\n fallbackPlacements: _fallbackPlacementsProp,\n padding = 2,\n placement: placementProp = 'bottom',\n portal: portalProp,\n radius = 2,\n ref: forwardedRef,\n scheme,\n shadow = 2,\n zOffset: _zOffset,\n delay,\n ...restProps\n } = props\n const boundaryElement = _boundaryElement ?? boundaryElementContext?.element\n const fallbackPlacementsProp =\n _fallbackPlacementsProp ?? DEFAULT_FALLBACK_PLACEMENTS[props.placement ?? 'bottom']\n const zOffset = _zOffset ?? layer.tooltip.zOffset\n const prefersReducedMotion = usePrefersReducedMotion()\n const animate = prefersReducedMotion ? false : _animate\n const fallbackPlacements = _getArrayProp(fallbackPlacementsProp)\n const ref = useRef<HTMLDivElement | null>(null)\n const [referenceElement, setReferenceElement] = useState<HTMLElement | null>(null)\n const arrowRef = useRef<HTMLDivElement | null>(null)\n const rootBoundary: RootBoundary = 'viewport'\n const [tooltipMaxWidth, setTooltipMaxWidth] = useState(0)\n\n useImperativeHandle<HTMLDivElement | null, HTMLDivElement | null>(forwardedRef, () => ref.current)\n\n const portal = usePortal()\n const portalElement =\n typeof portalProp === 'string' ? portal.elements?.[portalProp] || null : portal.element\n\n const middleware = useMiddleware({\n animate,\n arrowProp,\n arrowRef,\n boundaryElement,\n fallbackPlacements,\n rootBoundary,\n })\n\n const {floatingStyles, placement, middlewareData, refs, update} = useFloating({\n middleware,\n placement: placementProp,\n whileElementsMounted: autoUpdate,\n elements: {reference: referenceElement},\n })\n\n const arrowX = middlewareData.arrow?.x\n const arrowY = middlewareData.arrow?.y\n\n const originX = middlewareData['@sanity/ui/origin']?.originX\n const originY = middlewareData['@sanity/ui/origin']?.originY\n\n const tooltipId = useId()\n const [isOpen, setIsOpen] = useDelayedState(false)\n const delayGroupContext = useTooltipDelayGroup()\n const {setIsGroupActive, setOpenTooltipId} = delayGroupContext || {}\n const showTooltip = isOpen || delayGroupContext?.openTooltipId === tooltipId\n\n const isInsideGroup = delayGroupContext !== null\n const openDelayProp = typeof delay === 'number' ? delay : delay?.open || 0\n const closeDelayProp = typeof delay === 'number' ? delay : delay?.close || 0\n\n const openDelay = isInsideGroup ? delayGroupContext.openDelay : openDelayProp\n const closeDelay = isInsideGroup ? delayGroupContext.closeDelay : closeDelayProp\n\n const handleIsOpenChange = useCallback(\n (open: boolean, immediate?: boolean) => {\n if (isInsideGroup) {\n // When it's inside a group, the open or close status will be handled by the group.\n if (open) {\n const groupedOpenDelay = immediate ? 0 : openDelay\n\n setIsGroupActive?.(open, groupedOpenDelay)\n setOpenTooltipId?.(tooltipId, groupedOpenDelay)\n } else {\n const minimumGroupDeactivateDelay = 200 // We should provide some delay to allow the user to reach the next tooltip.\n const groupDeactivateDelay =\n closeDelay > minimumGroupDeactivateDelay ? closeDelay : minimumGroupDeactivateDelay\n\n setIsGroupActive?.(open, groupDeactivateDelay)\n setOpenTooltipId?.(null, immediate ? 0 : closeDelay)\n }\n } else {\n const standaloneDelay = immediate ? 0 : open ? openDelay : closeDelay\n\n // When it's not inside a group, the open or close status will be handled by the tooltip itself.\n setIsOpen(open, standaloneDelay)\n }\n },\n [\n isInsideGroup,\n openDelay,\n setIsGroupActive,\n setOpenTooltipId,\n tooltipId,\n closeDelay,\n setIsOpen,\n ],\n )\n\n const handleBlur = useCallback(\n (e: FocusEvent) => {\n handleIsOpenChange(false)\n childProp?.props?.onBlur?.(e)\n },\n [childProp?.props, handleIsOpenChange],\n )\n const handleClick = useCallback(\n (e: MouseEvent) => {\n handleIsOpenChange(false, true)\n childProp?.props.onClick?.(e)\n },\n [childProp?.props, handleIsOpenChange],\n )\n const handleContextMenu = useCallback(\n (e: MouseEvent) => {\n handleIsOpenChange(false, true)\n childProp?.props.onContextMenu?.(e)\n },\n [childProp?.props, handleIsOpenChange],\n )\n const handleFocus = useCallback(\n (e: FocusEvent) => {\n handleIsOpenChange(true)\n childProp?.props?.onFocus?.(e)\n },\n [childProp?.props, handleIsOpenChange],\n )\n const handleMouseEnter = useCallback(\n (e: MouseEvent) => {\n handleIsOpenChange(true)\n childProp?.props?.onMouseEnter?.(e)\n },\n [childProp?.props, handleIsOpenChange],\n )\n const handleMouseLeave = useCallback(\n (e: MouseEvent) => {\n handleIsOpenChange(false)\n childProp?.props?.onMouseLeave?.(e)\n },\n [childProp?.props, handleIsOpenChange],\n )\n\n // Handle closing the tooltip when the mouse leaves the referenceElement\n useCloseOnMouseLeave({handleIsOpenChange, referenceElement, showTooltip, isInsideGroup})\n\n // Close when `disabled` changes to `true`\n useEffect(() => {\n if (disabled && showTooltip) handleIsOpenChange(false)\n }, [disabled, handleIsOpenChange, showTooltip])\n\n // Close when `content` changes to falsy\n useEffect(() => {\n if (!content && showTooltip) handleIsOpenChange(false)\n }, [content, handleIsOpenChange, showTooltip])\n\n useEffect(() => {\n // If the user clicks on escape key, close the tooltip.\n if (!showTooltip) return\n\n function handleWindowKeyDown(event: KeyboardEvent) {\n if (event.key === 'Escape') {\n handleIsOpenChange(false, true)\n }\n }\n\n window.addEventListener('keydown', handleWindowKeyDown)\n\n // oxlint-disable-next-line consistent-return\n return () => {\n window.removeEventListener('keydown', handleWindowKeyDown)\n }\n }, [handleIsOpenChange, showTooltip])\n\n // // Set the max width of the tooltip based on boundaries and portals\n useLayoutEffect(() => {\n // Get the maximum tooltip width (sans tooltip padding)\n // Tooltip width should never exceed the width of either any supplied boundary or portal element.\n // If both portal and boundary elements are provided, use the smaller width of the two.\n const availableWidths = [\n ...(boundaryElement ? [boundaryElement.offsetWidth] : []),\n portalElement?.offsetWidth || document.body.offsetWidth,\n ]\n\n // oxlint-disable-next-line react/set-state-in-effect\n setTooltipMaxWidth(Math.min(...availableWidths) - DEFAULT_TOOLTIP_PADDING * 2)\n }, [boundaryElement, portalElement])\n\n const setArrow = useCallback(\n (arrowEl: HTMLDivElement | null) => {\n arrowRef.current = arrowEl\n update()\n },\n [update],\n )\n\n const setFloating = useCallback(\n (node: HTMLDivElement | null) => {\n ref.current = node\n refs.setFloating(node)\n },\n [refs],\n )\n\n const child = useMemo(() => {\n if (!childProp) return null\n\n return cloneElement(childProp, {\n onBlur: handleBlur,\n onFocus: handleFocus,\n onMouseEnter: handleMouseEnter,\n onMouseLeave: handleMouseLeave,\n onClick: handleClick,\n onContextMenu: handleContextMenu,\n ref: setReferenceElement,\n })\n }, [\n childProp,\n handleBlur,\n handleClick,\n handleContextMenu,\n handleFocus,\n handleMouseEnter,\n handleMouseLeave,\n ])\n\n // If there's a child then we need to set the reference element to the cloned child ref\n // and if child changes we make sure to update or remove the reference element.\n useImperativeHandle(childProp ? getElementRef(childProp) : null, () => referenceElement, [\n referenceElement,\n ])\n\n if (!child) return <></>\n\n if (disabled) return child\n\n const tooltip = (\n <Layer\n data-ui=\"Tooltip\"\n {...restProps}\n className={clsx(tooltipLayer, restProps.className)}\n ref={setFloating}\n style={{\n ...floatingStyles,\n maxWidth: tooltipMaxWidth > 0 ? `${tooltipMaxWidth}px` : undefined,\n }}\n zOffset={zOffset}\n >\n <TooltipCard\n {...restProps}\n animate={animate}\n arrow={arrowProp}\n arrowRef={setArrow}\n arrowX={arrowX}\n arrowY={arrowY}\n originX={originX}\n originY={originY}\n padding={padding}\n placement={placement}\n radius={radius}\n ref={setFloating}\n scheme={scheme}\n shadow={shadow}\n >\n {content}\n </TooltipCard>\n </Layer>\n )\n\n const tooltipNode = portalProp ? (\n <Portal __unstable_name={typeof portalProp === 'string' ? portalProp : undefined}>\n {tooltip}\n </Portal>\n ) : (\n tooltip\n )\n\n return (\n <>\n {/* the tooltip */}\n {animate ? (\n <AnimateActivity layoutMode=\"default\" mode={showTooltip ? 'visible' : 'hidden'}>\n {tooltipNode}\n </AnimateActivity>\n ) : (\n <Activity mode={showTooltip ? 'visible' : 'hidden'}>{tooltipNode}</Activity>\n )}\n\n {/* the referred element */}\n {child}\n </>\n )\n}\n\nfunction useMiddleware({\n animate,\n arrowProp,\n arrowRef,\n boundaryElement,\n fallbackPlacements,\n rootBoundary,\n}: {\n animate: boolean\n arrowProp: boolean\n arrowRef: React.RefObject<HTMLDivElement | null>\n boundaryElement: HTMLElement | null\n fallbackPlacements: Placement[]\n rootBoundary: RootBoundary\n}) {\n return useMemo(() => {\n const ret: Middleware[] = []\n\n // Flip the floating element when leaving the boundary box\n ret.push(\n flip({\n boundary: boundaryElement || undefined,\n fallbackPlacements,\n padding: DEFAULT_TOOLTIP_PADDING,\n rootBoundary,\n }),\n )\n\n // Define distance between reference and floating element\n ret.push(offset({mainAxis: DEFAULT_TOOLTIP_DISTANCE}))\n\n // Shift the tooltip so its sits with the boundary element\n ret.push(\n shift({\n boundary: boundaryElement || undefined,\n rootBoundary,\n padding: DEFAULT_TOOLTIP_PADDING,\n }),\n )\n\n // Place arrow\n if (arrowProp) {\n ret.push(arrow({element: arrowRef, padding: DEFAULT_TOOLTIP_PADDING}))\n }\n\n // Determine the origin to scale from.\n // Must be placed after `@sanity/ui/size` and `shift` middleware.\n if (animate) {\n ret.push(origin)\n }\n\n return ret\n }, [animate, arrowProp, arrowRef, boundaryElement, fallbackPlacements, rootBoundary])\n}\n\n/**\n * As `useEffectEvent` should never be passed to other components or hooks, this custom hook groups together the `useEffectEvent` and the `useEffect` hook using it.\n * @see https://19.react.dev/learn/separating-events-from-effects#reading-latest-props-and-state-with-effect-events:~:text=Never%20pass%20them%20to%20other%20components%20or%20Hooks\n */\nfunction useCloseOnMouseLeave({\n handleIsOpenChange,\n referenceElement,\n showTooltip,\n isInsideGroup,\n}: {\n handleIsOpenChange: (open: boolean, immediate?: boolean) => void\n referenceElement: HTMLElement | null\n showTooltip: boolean\n isInsideGroup: boolean\n}) {\n // Since we don't want the `mouseevent` events to be attached and removed if the `referenceElement` is changed\n // we use a \"effect event\" (https://19.react.dev/learn/separating-events-from-effects#reading-latest-props-and-state-with-effect-events)\n // in order to always see the latest `referenceElement` value inside the event handler itself.\n const onMouseMove = useEffectEvent((target: EventTarget | null, teardown: () => void) => {\n if (!referenceElement) return\n\n const isHoveringReference =\n referenceElement === target || (target instanceof Node && referenceElement.contains(target))\n\n if (!isHoveringReference) {\n handleIsOpenChange(false)\n // Allow removing the event listener eagerly, to avoid race conditions\n teardown()\n }\n })\n\n // Detect whether the mouse is moving outside of the reference element. This is sometimes\n // necessary, because the tooltip might not always close as it should (e.g. when clicking\n // the reference element triggers a CPU-heavy operation.)\n useEffect(() => {\n if (!showTooltip || isInsideGroup) return\n\n const handleMouseMove = (event: MouseEvent) => {\n onMouseMove(event.target, () => window.removeEventListener('mousemove', handleMouseMove))\n }\n\n window.addEventListener('mousemove', handleMouseMove)\n\n // oxlint-disable-next-line consistent-return\n return () => window.removeEventListener('mousemove', handleMouseMove)\n // oxlint-disable-next-line react/exhaustive-effect-dependencies\n }, [isInsideGroup, showTooltip])\n}\n","import {useMemo} from 'react'\n\nimport {useDelayedState} from '../../../hooks/useDelayedState'\nimport {Delay} from '../../types'\nimport {TooltipDelayGroupContext} from './tooltipDelayGroupContext'\nimport {TooltipDelayGroupContextValue} from './types'\n\n/**\n * @public\n * */\nexport interface TooltipDelayGroupProviderProps {\n children?: React.ReactNode\n /**\n * Handles the delays to open or close a tooltip inside a group\n *\n * If only a `number` is passed, it will be used for both opening and closing.\n *\n * If an object `{open: number; close:number}` is passed, it can be used to set different delays for each action.\n *\n * @public\n */\n delay: Delay\n}\n\n/**\n * @public\n * Provides context for a group of tooltip elements that should share a delay\n * which temporarily becomes 1 ms after the first floating element of the group opens.\n */\nexport function TooltipDelayGroupProvider(\n props: TooltipDelayGroupProviderProps,\n): React.JSX.Element {\n const {children, delay} = props\n const [isGroupActive, setIsGroupActive] = useDelayedState(false)\n const [openTooltipId, setOpenTooltipId] = useDelayedState<string | null>(null)\n\n const openDelay = typeof delay === 'number' ? delay : delay?.open || 0\n const closeDelay = typeof delay === 'number' ? delay : delay?.close || 0\n\n const value: TooltipDelayGroupContextValue = useMemo(\n () => ({\n setIsGroupActive: setIsGroupActive,\n openTooltipId: openTooltipId,\n setOpenTooltipId: setOpenTooltipId,\n // When the group is active, we want the next tooltip to open immediately.\n openDelay: isGroupActive ? 1 : openDelay,\n closeDelay: closeDelay,\n }),\n [closeDelay, isGroupActive, openDelay, openTooltipId, setIsGroupActive, setOpenTooltipId],\n )\n\n return (\n <TooltipDelayGroupContext.Provider value={value}>{children}</TooltipDelayGroupContext.Provider>\n )\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"tooltip.js","names":["(nextState: SetStateAction<S>, delay?: number) => {\n const action = () => {\n setState(nextState)\n }\n\n // A new state change has been initiated, cancel the previous one.\n if (delayedAction.current) {\n clearTimeout(delayedAction.current)\n delayedAction.current = undefined\n }\n\n if (!delay) return action()\n delayedAction.current = setTimeout(action, delay)\n }","useCallback((nextState: SetStateAction<S>, delay?: number) => {\n const action = () => {\n setState(nextState)\n }\n\n // A new state change has been initiated, cancel the previous one.\n if (delayedAction.current) {\n clearTimeout(delayedAction.current)\n delayedAction.current = undefined\n }\n\n if (!delay) return action()\n delayedAction.current = setTimeout(action, delay)\n }, [])","() => {\n return () => {\n if (delayedAction.current) {\n clearTimeout(delayedAction.current)\n }\n }\n }","[]","[state, onStateChange]","getTransformOrigin(originX, originY)","{\n transformOrigin: getTransformOrigin(originX, originY),\n willChange: animate ? 'transform' : undefined,\n ...style,\n }","animate ? 'transform' : undefined","useMemo(\n () => ({\n transformOrigin: getTransformOrigin(originX, originY),\n willChange: animate ? 'transform' : undefined,\n ...style,\n }),\n [animate, originX, originY, style],\n )","{\n left: arrowX !== null ? arrowX : undefined,\n top: arrowY !== null ? arrowY : undefined,\n right: undefined,\n bottom: undefined,\n }","arrowX !== null ? arrowX : undefined","arrowY !== null ? arrowY : undefined","useMemo(\n () => ({\n left: arrowX !== null ? arrowX : undefined,\n top: arrowY !== null ? arrowY : undefined,\n right: undefined,\n bottom: undefined,\n }),\n [arrowX, arrowY],\n )","clsx(tooltipCard, className)","arrow && (\n <Arrow\n ref={arrowRef}\n style={arrowStyle}\n width={DEFAULT_TOOLTIP_ARROW_WIDTH}\n height={DEFAULT_TOOLTIP_ARROW_HEIGHT}\n radius={DEFAULT_TOOLTIP_ARROW_RADIUS}\n />\n )","<MotionCard\n className={clsx(tooltipCard, className)}\n data-ui=\"Tooltip__card\"\n {...restProps}\n data-placement={placement}\n padding={padding}\n radius={radius}\n ref={ref}\n scheme={scheme}\n shadow={shadow}\n style={rootStyle}\n {...(animate ? POPOVER_MOTION_PROPS : undefined)}\n >\n {children}\n\n {arrow && (\n <Arrow\n ref={arrowRef}\n style={arrowStyle}\n width={DEFAULT_TOOLTIP_ARROW_WIDTH}\n height={DEFAULT_TOOLTIP_ARROW_HEIGHT}\n radius={DEFAULT_TOOLTIP_ARROW_RADIUS}\n />\n )}\n </MotionCard>","animate ? POPOVER_MOTION_PROPS : undefined","_animate = false","arrowProp = false","placementProp = 'bottom'","padding = 2","radius = 2","shadow = 2","_getArrayProp(fallbackPlacementsProp)","() => ref.current","{\n animate,\n arrowProp,\n arrowRef,\n boundaryElement,\n fallbackPlacements,\n rootBoundary,\n }","{reference: referenceElement}","{\n middleware,\n placement: placementProp,\n whileElementsMounted: autoUpdate,\n elements: {reference: referenceElement},\n }","delayGroupContext || {}","(open: boolean, immediate?: boolean) => {\n if (isInsideGroup) {\n // When it's inside a group, the open or close status will be handled by the group.\n if (open) {\n const groupedOpenDelay = immediate ? 0 : openDelay\n\n setIsGroupActive?.(open, groupedOpenDelay)\n setOpenTooltipId?.(tooltipId, groupedOpenDelay)\n } else {\n const minimumGroupDeactivateDelay = 200 // We should provide some delay to allow the user to reach the next tooltip.\n const groupDeactivateDelay =\n closeDelay > minimumGroupDeactivateDelay ? closeDelay : minimumGroupDeactivateDelay\n\n setIsGroupActive?.(open, groupDeactivateDelay)\n setOpenTooltipId?.(null, immediate ? 0 : closeDelay)\n }\n } else {\n const standaloneDelay = immediate ? 0 : open ? openDelay : closeDelay\n\n // When it's not inside a group, the open or close status will be handled by the tooltip itself.\n setIsOpen(open, standaloneDelay)\n }\n }","useCallback(\n (open: boolean, immediate?: boolean) => {\n if (isInsideGroup) {\n // When it's inside a group, the open or close status will be handled by the group.\n if (open) {\n const groupedOpenDelay = immediate ? 0 : openDelay\n\n setIsGroupActive?.(open, groupedOpenDelay)\n setOpenTooltipId?.(tooltipId, groupedOpenDelay)\n } else {\n const minimumGroupDeactivateDelay = 200 // We should provide some delay to allow the user to reach the next tooltip.\n const groupDeactivateDelay =\n closeDelay > minimumGroupDeactivateDelay ? closeDelay : minimumGroupDeactivateDelay\n\n setIsGroupActive?.(open, groupDeactivateDelay)\n setOpenTooltipId?.(null, immediate ? 0 : closeDelay)\n }\n } else {\n const standaloneDelay = immediate ? 0 : open ? openDelay : closeDelay\n\n // When it's not inside a group, the open or close status will be handled by the tooltip itself.\n setIsOpen(open, standaloneDelay)\n }\n },\n [\n isInsideGroup,\n openDelay,\n setIsGroupActive,\n setOpenTooltipId,\n tooltipId,\n closeDelay,\n setIsOpen,\n ],\n )","(e: FocusEvent) => {\n handleIsOpenChange(false)\n childProp?.props?.onBlur?.(e)\n }","props","useCallback(\n (e: FocusEvent) => {\n handleIsOpenChange(false)\n childProp?.props?.onBlur?.(e)\n },\n [childProp?.props, handleIsOpenChange],\n )","(e: MouseEvent) => {\n handleIsOpenChange(false, true)\n childProp?.props.onClick?.(e)\n }","e","useCallback(\n (e: MouseEvent) => {\n handleIsOpenChange(false, true)\n childProp?.props.onClick?.(e)\n },\n [childProp?.props, handleIsOpenChange],\n )","(e: MouseEvent) => {\n handleIsOpenChange(false, true)\n childProp?.props.onContextMenu?.(e)\n }","useCallback(\n (e: MouseEvent) => {\n handleIsOpenChange(false, true)\n childProp?.props.onContextMenu?.(e)\n },\n [childProp?.props, handleIsOpenChange],\n )","(e: FocusEvent) => {\n handleIsOpenChange(true)\n childProp?.props?.onFocus?.(e)\n }","useCallback(\n (e: FocusEvent) => {\n handleIsOpenChange(true)\n childProp?.props?.onFocus?.(e)\n },\n [childProp?.props, handleIsOpenChange],\n )","(e: MouseEvent) => {\n handleIsOpenChange(true)\n childProp?.props?.onMouseEnter?.(e)\n }","useCallback(\n (e: MouseEvent) => {\n handleIsOpenChange(true)\n childProp?.props?.onMouseEnter?.(e)\n },\n [childProp?.props, handleIsOpenChange],\n )","(e: MouseEvent) => {\n handleIsOpenChange(false)\n childProp?.props?.onMouseLeave?.(e)\n }","useCallback(\n (e: MouseEvent) => {\n handleIsOpenChange(false)\n childProp?.props?.onMouseLeave?.(e)\n },\n [childProp?.props, handleIsOpenChange],\n )","{handleIsOpenChange, referenceElement, showTooltip, isInsideGroup}","() => {\n if (disabled && showTooltip) handleIsOpenChange(false)\n }","[disabled, handleIsOpenChange, showTooltip]","() => {\n if (!content && showTooltip) handleIsOpenChange(false)\n }","[content, handleIsOpenChange, showTooltip]","() => handleIsOpenChange(false, true)","() => {\n // If the user clicks on escape key, close the tooltip.\n if (!showTooltip) return\n\n function handleWindowKeyDown(event: KeyboardEvent) {\n if (event.key === 'Escape') {\n onWindowEscape()\n }\n }\n\n window.addEventListener('keydown', handleWindowKeyDown)\n\n // oxlint-disable-next-line consistent-return\n return () => {\n window.removeEventListener('keydown', handleWindowKeyDown)\n }\n }","[showTooltip]","() => {\n // Get the maximum tooltip width (sans tooltip padding)\n // Tooltip width should never exceed the width of either any supplied boundary or portal element.\n // If both portal and boundary elements are provided, use the smaller width of the two.\n const availableWidths = [\n ...(boundaryElement ? [boundaryElement.offsetWidth] : []),\n portalElement?.offsetWidth || document.body.offsetWidth,\n ]\n\n // oxlint-disable-next-line react/set-state-in-effect\n setTooltipMaxWidth(Math.min(...availableWidths) - DEFAULT_TOOLTIP_PADDING * 2)\n }","offsetWidth","[boundaryElement, portalElement]","(arrowEl: HTMLDivElement | null) => {\n arrowRef.current = arrowEl\n update()\n }","useCallback(\n (arrowEl: HTMLDivElement | null) => {\n arrowRef.current = arrowEl\n update()\n },\n [update],\n )","(node: HTMLDivElement | null) => {\n ref.current = node\n refs.setFloating(node)\n }","useCallback(\n (node: HTMLDivElement | null) => {\n ref.current = node\n refs.setFloating(node)\n },\n [refs],\n )","useMemo(() => {\n if (!childProp) return null\n\n return cloneElement(childProp, {\n onBlur: handleBlur,\n onFocus: handleFocus,\n onMouseEnter: handleMouseEnter,\n onMouseLeave: handleMouseLeave,\n onClick: handleClick,\n onContextMenu: handleContextMenu,\n ref: setReferenceElement,\n })\n }, [\n childProp,\n handleBlur,\n handleClick,\n handleContextMenu,\n handleFocus,\n handleMouseEnter,\n handleMouseLeave,\n ])","cloneElement(childProp, {\n onBlur: handleBlur,\n onFocus: handleFocus,\n onMouseEnter: handleMouseEnter,\n onMouseLeave: handleMouseLeave,\n onClick: handleClick,\n onContextMenu: handleContextMenu,\n ref: setReferenceElement,\n })","childProp ? getElementRef(childProp) : null","() => referenceElement","[\n referenceElement,\n ]","<></>","{\n ...floatingStyles,\n maxWidth: tooltipMaxWidth > 0 ? `${tooltipMaxWidth}px` : undefined,\n }","tooltipMaxWidth > 0 ? `${tooltipMaxWidth}px` : undefined","<TooltipCard\n {...restProps}\n animate={animate}\n arrow={arrowProp}\n arrowRef={setArrow}\n arrowX={arrowX}\n arrowY={arrowY}\n originX={originX}\n originY={originY}\n padding={padding}\n placement={placement}\n radius={radius}\n ref={setFloating}\n scheme={scheme}\n shadow={shadow}\n >\n {content}\n </TooltipCard>","<Layer\n data-ui=\"Tooltip\"\n {...restProps}\n className={clsx(tooltipLayer, restProps.className)}\n ref={setFloating}\n style={{\n ...floatingStyles,\n maxWidth: tooltipMaxWidth > 0 ? `${tooltipMaxWidth}px` : undefined,\n }}\n zOffset={zOffset}\n >\n <TooltipCard\n {...restProps}\n animate={animate}\n arrow={arrowProp}\n arrowRef={setArrow}\n arrowX={arrowX}\n arrowY={arrowY}\n originX={originX}\n originY={originY}\n padding={padding}\n placement={placement}\n radius={radius}\n ref={setFloating}\n scheme={scheme}\n shadow={shadow}\n >\n {content}\n </TooltipCard>\n </Layer>","Layer","clsx(tooltipLayer, restProps.className)","\"Tooltip\"","portalProp ? (\n <Portal __unstable_name={typeof portalProp === 'string' ? portalProp : undefined}>\n {tooltip}\n </Portal>\n ) : (\n tooltip\n )","animate ? (\n <AnimateActivity layoutMode=\"default\" mode={showTooltip ? 'visible' : 'hidden'}>\n {tooltipNode}\n </AnimateActivity>\n ) : (\n <Activity mode={showTooltip ? 'visible' : 'hidden'}>{tooltipNode}</Activity>\n )","<>\n {/* the tooltip */}\n {animate ? (\n <AnimateActivity layoutMode=\"default\" mode={showTooltip ? 'visible' : 'hidden'}>\n {tooltipNode}\n </AnimateActivity>\n ) : (\n <Activity mode={showTooltip ? 'visible' : 'hidden'}>{tooltipNode}</Activity>\n )}\n\n {/* the referred element */}\n {child}\n </>","{\n animate,\n arrowProp,\n arrowRef,\n boundaryElement,\n fallbackPlacements,\n rootBoundary,\n}: {\n animate: boolean\n arrowProp: boolean\n arrowRef: React.RefObject<HTMLDivElement | null>\n boundaryElement: HTMLElement | null\n fallbackPlacements: Placement[]\n rootBoundary: RootBoundary\n}","flip({\n boundary: boundaryElement || undefined,\n fallbackPlacements,\n padding: DEFAULT_TOOLTIP_PADDING,\n rootBoundary,\n })","boundaryElement || undefined","offset({mainAxis: DEFAULT_TOOLTIP_DISTANCE})","shift({\n boundary: boundaryElement || undefined,\n rootBoundary,\n padding: DEFAULT_TOOLTIP_PADDING,\n })","arrow({element: arrowRef, padding: DEFAULT_TOOLTIP_PADDING})","useMemo(() => {\n const ret: Middleware[] = []\n\n // Flip the floating element when leaving the boundary box\n ret.push(\n flip({\n boundary: boundaryElement || undefined,\n fallbackPlacements,\n padding: DEFAULT_TOOLTIP_PADDING,\n rootBoundary,\n }),\n )\n\n // Define distance between reference and floating element\n ret.push(offset({mainAxis: DEFAULT_TOOLTIP_DISTANCE}))\n\n // Shift the tooltip so its sits with the boundary element\n ret.push(\n shift({\n boundary: boundaryElement || undefined,\n rootBoundary,\n padding: DEFAULT_TOOLTIP_PADDING,\n }),\n )\n\n // Place arrow\n if (arrowProp) {\n ret.push(arrow({element: arrowRef, padding: DEFAULT_TOOLTIP_PADDING}))\n }\n\n // Determine the origin to scale from.\n // Must be placed after `@sanity/ui/size` and `shift` middleware.\n if (animate) {\n ret.push(origin)\n }\n\n return ret\n }, [animate, arrowProp, arrowRef, boundaryElement, fallbackPlacements, rootBoundary])","{\n handleIsOpenChange,\n referenceElement,\n showTooltip,\n isInsideGroup,\n}: {\n handleIsOpenChange: (open: boolean, immediate?: boolean) => void\n referenceElement: HTMLElement | null\n showTooltip: boolean\n isInsideGroup: boolean\n}","(target: EventTarget | null, teardown: () => void) => {\n if (!referenceElement) return\n\n const isHoveringReference =\n referenceElement === target || (target instanceof Node && referenceElement.contains(target))\n\n if (!isHoveringReference) {\n handleIsOpenChange(false)\n // Allow removing the event listener eagerly, to avoid race conditions\n teardown()\n }\n }","() => {\n if (!showTooltip || isInsideGroup) return\n\n const handleMouseMove = (event: MouseEvent) => {\n onMouseMove(event.target, () => window.removeEventListener('mousemove', handleMouseMove))\n }\n\n window.addEventListener('mousemove', handleMouseMove)\n\n // oxlint-disable-next-line consistent-return\n return () => window.removeEventListener('mousemove', handleMouseMove)\n }","[isInsideGroup, showTooltip]","{\n setIsGroupActive: setIsGroupActive,\n openTooltipId: openTooltipId,\n setOpenTooltipId: setOpenTooltipId,\n // When the group is active, we want the next tooltip to open immediately.\n openDelay: isGroupActive ? 1 : openDelay,\n closeDelay: closeDelay,\n }","isGroupActive ? 1 : openDelay","useMemo(\n () => ({\n setIsGroupActive: setIsGroupActive,\n openTooltipId: openTooltipId,\n setOpenTooltipId: setOpenTooltipId,\n // When the group is active, we want the next tooltip to open immediately.\n openDelay: isGroupActive ? 1 : openDelay,\n closeDelay: closeDelay,\n }),\n [closeDelay, isGroupActive, openDelay, openTooltipId, setIsGroupActive, setOpenTooltipId],\n )","<TooltipDelayGroupContext.Provider value={value}>{children}</TooltipDelayGroupContext.Provider>","TooltipDelayGroupContext.Provider"],"sources":["../src/core/hooks/useDelayedState.ts","../src/core/primitives/tooltip/constants.ts","../src/core/primitives/tooltip/tooltip.css.ts","../src/core/primitives/tooltip/tooltipCard.tsx","../src/core/primitives/tooltip/tooltipDelayGroup/tooltipDelayGroupContext.tsx","../src/core/primitives/tooltip/tooltipDelayGroup/useTooltipDelayGroup.ts","../src/core/primitives/tooltip/tooltip.tsx","../src/core/primitives/tooltip/tooltipDelayGroup/tooltipDelayGroupProvider.tsx"],"sourcesContent":["import {SetStateAction, useCallback, useEffect, useRef, useState} from 'react'\n\n/**\n * @beta\n */\nexport function useDelayedState<S>(\n initialState: S | (() => S),\n): [S, (nextState: SetStateAction<S>, delay?: number) => void] {\n const [state, setState] = useState(initialState)\n const delayedAction = useRef<NodeJS.Timeout | undefined>(undefined)\n\n const onStateChange = useCallback((nextState: SetStateAction<S>, delay?: number) => {\n const action = () => {\n setState(nextState)\n }\n\n // A new state change has been initiated, cancel the previous one.\n if (delayedAction.current) {\n clearTimeout(delayedAction.current)\n delayedAction.current = undefined\n }\n\n if (!delay) return action()\n delayedAction.current = setTimeout(action, delay)\n }, [])\n\n useEffect(() => {\n return () => {\n if (delayedAction.current) {\n clearTimeout(delayedAction.current)\n }\n }\n }, [])\n\n return [state, onStateChange]\n}\n","import {Placement} from '@floating-ui/react-dom'\n\nexport const DEFAULT_TOOLTIP_ARROW_WIDTH = 15\nexport const DEFAULT_TOOLTIP_ARROW_HEIGHT = 6\nexport const DEFAULT_TOOLTIP_ARROW_RADIUS = 2\n\nexport const DEFAULT_TOOLTIP_DISTANCE = 4\nexport const DEFAULT_TOOLTIP_PADDING = 4\n\nexport const DEFAULT_FALLBACK_PLACEMENTS: Record<Placement, Placement[]> = {\n 'top': ['top-end', 'top-start', 'bottom', 'left', 'right'],\n 'top-start': ['top', 'top-end', 'bottom-start', 'left-start', 'right-start'],\n 'top-end': ['top', 'top-start', 'bottom-end', 'left-end', 'right-end'],\n 'bottom': ['bottom-end', 'bottom-start', 'top', 'left', 'right'],\n 'bottom-start': ['bottom', 'bottom-end', 'top-start', 'left-start', 'right-start'],\n 'bottom-end': ['bottom', 'bottom-start', 'top-end', 'left-end', 'right-end'],\n 'left': ['left-end', 'left-start', 'right', 'top', 'bottom'],\n 'left-start': ['left', 'left-end', 'right-start', 'top-start', 'bottom-start'],\n 'left-end': ['left', 'left-start', 'right-end', 'top-end', 'bottom-end'],\n 'right': ['right-end', 'right-start', 'left', 'top', 'bottom'],\n 'right-start': ['right', 'right-end', 'left-start', 'top-start', 'bottom-start'],\n 'right-end': ['right', 'right-start', 'left-end', 'top-end', 'bottom-end'],\n}\n","import {style} from '@vanilla-extract/css'\n\nexport const tooltipLayer = style({\n pointerEvents: 'none',\n})\n\nexport const tooltipCard = style({\n willChange: 'transform',\n})\n","import {clsx} from 'clsx/lite'\nimport {motion} from 'motion/react'\nimport React, {CSSProperties, useMemo} from 'react'\n\nimport {ThemeColorSchemeKey} from '../../../theme/system/color/_system'\nimport {POPOVER_MOTION_PROPS} from '../../constants'\nimport {getTransformOrigin} from '../../middleware/origin'\nimport {Placement} from '../../types/placement'\nimport {Radius} from '../../types/radius'\nimport {Arrow} from '../../utils/arrow/arrow'\nimport {Card} from '../card/card'\nimport {\n DEFAULT_TOOLTIP_ARROW_HEIGHT,\n DEFAULT_TOOLTIP_ARROW_RADIUS,\n DEFAULT_TOOLTIP_ARROW_WIDTH,\n} from './constants'\n\nimport {tooltipCard} from './tooltip.css'\n\nconst MotionCard = motion.create(Card)\n\n/**\n * @internal\n */\nexport function TooltipCard(\n props: {\n animate?: boolean\n arrow: boolean\n arrowRef: React.Ref<HTMLDivElement>\n arrowX?: number\n arrowY?: number\n originX?: number\n originY?: number\n padding?: number | number[]\n placement?: Placement\n radius?: Radius | Radius[]\n scheme?: ThemeColorSchemeKey\n shadow?: number | number[]\n } & Omit<React.HTMLProps<HTMLDivElement>, 'as' | 'height' | 'width'>,\n) {\n const {\n animate,\n arrow,\n arrowRef,\n arrowX,\n arrowY,\n children,\n className,\n originX,\n originY,\n padding,\n placement,\n radius,\n ref,\n scheme,\n shadow,\n style,\n ...restProps\n } = props\n\n const rootStyle: CSSProperties = useMemo(\n () => ({\n transformOrigin: getTransformOrigin(originX, originY),\n willChange: animate ? 'transform' : undefined,\n ...style,\n }),\n [animate, originX, originY, style],\n )\n\n const arrowStyle: CSSProperties = useMemo(\n () => ({\n left: arrowX !== null ? arrowX : undefined,\n top: arrowY !== null ? arrowY : undefined,\n right: undefined,\n bottom: undefined,\n }),\n [arrowX, arrowY],\n )\n\n return (\n <MotionCard\n className={clsx(tooltipCard, className)}\n data-ui=\"Tooltip__card\"\n {...restProps}\n data-placement={placement}\n padding={padding}\n radius={radius}\n ref={ref}\n scheme={scheme}\n shadow={shadow}\n style={rootStyle}\n {...(animate ? POPOVER_MOTION_PROPS : undefined)}\n >\n {children}\n\n {arrow && (\n <Arrow\n ref={arrowRef}\n style={arrowStyle}\n width={DEFAULT_TOOLTIP_ARROW_WIDTH}\n height={DEFAULT_TOOLTIP_ARROW_HEIGHT}\n radius={DEFAULT_TOOLTIP_ARROW_RADIUS}\n />\n )}\n </MotionCard>\n )\n}\n","import {createGlobalScopedContext} from '../../../lib/createGlobalScopedContext'\nimport {TooltipDelayGroupContextValue} from './types'\n\n/**\n * @beta\n */\nexport const TooltipDelayGroupContext =\n createGlobalScopedContext<TooltipDelayGroupContextValue | null>(\n '@sanity/ui/context/tooltipDelayGroup',\n null,\n )\n","import {useContext} from 'react'\n\nimport {TooltipDelayGroupContext} from './tooltipDelayGroupContext'\nimport {TooltipDelayGroupContextValue} from './types'\n\n/**\n * @beta\n */\nexport function useTooltipDelayGroup(): TooltipDelayGroupContextValue | null {\n const value = useContext(TooltipDelayGroupContext)\n\n return value\n}\n","import {\n arrow,\n autoUpdate,\n flip,\n type Middleware,\n offset,\n type RootBoundary,\n shift,\n useFloating,\n} from '@floating-ui/react-dom'\nimport {clsx} from 'clsx/lite'\nimport {\n Activity,\n cloneElement,\n useCallback,\n useEffect,\n useId,\n useImperativeHandle,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n} from 'react'\n// TODO: switch to `useEffectEvent` from `react` once\n// https://github.com/facebook/react/issues/34818 is fixed in the lowest React\n// version we support: on React 19.2 the native hook never sees values past\n// the first render when the calling component is wrapped in `forwardRef` or\n// `memo`, and consumers may wrap `Tooltip` in `memo`.\nimport {useEffectEvent} from 'use-effect-event'\n\nimport type {ThemeColorSchemeKey} from '../../../theme/system/color/_system'\nimport {useDelayedState} from '../../hooks/useDelayedState'\nimport {usePrefersReducedMotion} from '../../hooks/usePrefersReducedMotion'\nimport {origin} from '../../middleware/origin'\nimport {_getArrayProp} from '../../styles/helpers'\nimport {useTheme_v2} from '../../theme/useTheme'\nimport type {Placement} from '../../types/placement'\nimport {AnimateActivity} from '../../utils/animateActivity'\nimport {useBoundaryElement} from '../../utils/boundaryElement/useBoundaryElement'\nimport {getElementRef} from '../../utils/getElementRef'\nimport {Layer, type LayerProps} from '../../utils/layer/layer'\nimport {Portal} from '../../utils/portal/portal'\nimport {usePortal} from '../../utils/portal/usePortal'\nimport type {Delay} from '../types'\nimport {\n DEFAULT_FALLBACK_PLACEMENTS,\n DEFAULT_TOOLTIP_DISTANCE,\n DEFAULT_TOOLTIP_PADDING,\n} from './constants'\nimport {TooltipCard} from './tooltipCard'\nimport {useTooltipDelayGroup} from './tooltipDelayGroup/useTooltipDelayGroup'\n\nimport {tooltipLayer} from './tooltip.css'\n\n/**\n * @public\n */\nexport interface TooltipProps extends Omit<LayerProps, 'as'> {\n /** @deprecated Use `fallbackPlacements` instead. */\n allowedAutoPlacements?: never\n arrow?: boolean\n boundaryElement?: HTMLElement | null\n children?: React.JSX.Element\n content?: React.ReactNode\n disabled?: boolean\n fallbackPlacements?: Placement[]\n padding?: number | number[]\n placement?: Placement\n /** Whether or not to render the tooltip in a portal element. */\n portal?: boolean | string\n radius?: number | number[]\n scheme?: ThemeColorSchemeKey\n shadow?: number | number[]\n /**\n * Adds a delay to open or close the tooltip.\n *\n * If only a `number` is passed, it will be used for both opening and closing.\n *\n * If an object `{open: number; close:number}` is passed, it can be used to set different delays for each action.\n *\n * @public\n * @defaultValue 0\n */\n delay?: Delay\n /**\n * Whether the tooltip should animate in and out.\n *\n * @beta\n * @defaultValue false\n */\n animate?: boolean\n}\n\n/**\n * Tooltips display information when hovering, focusing or tapping.\n *\n * @public\n */\nexport function Tooltip(\n props: TooltipProps & Omit<React.HTMLProps<HTMLDivElement>, 'as' | 'children' | 'content'>,\n) {\n const boundaryElementContext = useBoundaryElement()\n const {layer} = useTheme_v2()\n const {\n animate: _animate = false,\n arrow: arrowProp = false,\n boundaryElement: _boundaryElement,\n children: childProp,\n content,\n disabled,\n fallbackPlacements: _fallbackPlacementsProp,\n padding = 2,\n placement: placementProp = 'bottom',\n portal: portalProp,\n radius = 2,\n ref: forwardedRef,\n scheme,\n shadow = 2,\n zOffset: _zOffset,\n delay,\n ...restProps\n } = props\n const boundaryElement = _boundaryElement ?? boundaryElementContext?.element\n const fallbackPlacementsProp =\n _fallbackPlacementsProp ?? DEFAULT_FALLBACK_PLACEMENTS[props.placement ?? 'bottom']\n const zOffset = _zOffset ?? layer.tooltip.zOffset\n const prefersReducedMotion = usePrefersReducedMotion()\n const animate = prefersReducedMotion ? false : _animate\n const fallbackPlacements = _getArrayProp(fallbackPlacementsProp)\n const ref = useRef<HTMLDivElement | null>(null)\n const [referenceElement, setReferenceElement] = useState<HTMLElement | null>(null)\n const arrowRef = useRef<HTMLDivElement | null>(null)\n const rootBoundary: RootBoundary = 'viewport'\n const [tooltipMaxWidth, setTooltipMaxWidth] = useState(0)\n\n useImperativeHandle<HTMLDivElement | null, HTMLDivElement | null>(forwardedRef, () => ref.current)\n\n const portal = usePortal()\n const portalElement =\n typeof portalProp === 'string' ? portal.elements?.[portalProp] || null : portal.element\n\n const middleware = useMiddleware({\n animate,\n arrowProp,\n arrowRef,\n boundaryElement,\n fallbackPlacements,\n rootBoundary,\n })\n\n const {floatingStyles, placement, middlewareData, refs, update} = useFloating({\n middleware,\n placement: placementProp,\n whileElementsMounted: autoUpdate,\n elements: {reference: referenceElement},\n })\n\n const arrowX = middlewareData.arrow?.x\n const arrowY = middlewareData.arrow?.y\n\n const originX = middlewareData['@sanity/ui/origin']?.originX\n const originY = middlewareData['@sanity/ui/origin']?.originY\n\n const tooltipId = useId()\n const [isOpen, setIsOpen] = useDelayedState(false)\n const delayGroupContext = useTooltipDelayGroup()\n const {setIsGroupActive, setOpenTooltipId} = delayGroupContext || {}\n const showTooltip = isOpen || delayGroupContext?.openTooltipId === tooltipId\n\n const isInsideGroup = delayGroupContext !== null\n const openDelayProp = typeof delay === 'number' ? delay : delay?.open || 0\n const closeDelayProp = typeof delay === 'number' ? delay : delay?.close || 0\n\n const openDelay = isInsideGroup ? delayGroupContext.openDelay : openDelayProp\n const closeDelay = isInsideGroup ? delayGroupContext.closeDelay : closeDelayProp\n\n const handleIsOpenChange = useCallback(\n (open: boolean, immediate?: boolean) => {\n if (isInsideGroup) {\n // When it's inside a group, the open or close status will be handled by the group.\n if (open) {\n const groupedOpenDelay = immediate ? 0 : openDelay\n\n setIsGroupActive?.(open, groupedOpenDelay)\n setOpenTooltipId?.(tooltipId, groupedOpenDelay)\n } else {\n const minimumGroupDeactivateDelay = 200 // We should provide some delay to allow the user to reach the next tooltip.\n const groupDeactivateDelay =\n closeDelay > minimumGroupDeactivateDelay ? closeDelay : minimumGroupDeactivateDelay\n\n setIsGroupActive?.(open, groupDeactivateDelay)\n setOpenTooltipId?.(null, immediate ? 0 : closeDelay)\n }\n } else {\n const standaloneDelay = immediate ? 0 : open ? openDelay : closeDelay\n\n // When it's not inside a group, the open or close status will be handled by the tooltip itself.\n setIsOpen(open, standaloneDelay)\n }\n },\n [\n isInsideGroup,\n openDelay,\n setIsGroupActive,\n setOpenTooltipId,\n tooltipId,\n closeDelay,\n setIsOpen,\n ],\n )\n\n const handleBlur = useCallback(\n (e: FocusEvent) => {\n handleIsOpenChange(false)\n childProp?.props?.onBlur?.(e)\n },\n [childProp?.props, handleIsOpenChange],\n )\n const handleClick = useCallback(\n (e: MouseEvent) => {\n handleIsOpenChange(false, true)\n childProp?.props.onClick?.(e)\n },\n [childProp?.props, handleIsOpenChange],\n )\n const handleContextMenu = useCallback(\n (e: MouseEvent) => {\n handleIsOpenChange(false, true)\n childProp?.props.onContextMenu?.(e)\n },\n [childProp?.props, handleIsOpenChange],\n )\n const handleFocus = useCallback(\n (e: FocusEvent) => {\n handleIsOpenChange(true)\n childProp?.props?.onFocus?.(e)\n },\n [childProp?.props, handleIsOpenChange],\n )\n const handleMouseEnter = useCallback(\n (e: MouseEvent) => {\n handleIsOpenChange(true)\n childProp?.props?.onMouseEnter?.(e)\n },\n [childProp?.props, handleIsOpenChange],\n )\n const handleMouseLeave = useCallback(\n (e: MouseEvent) => {\n handleIsOpenChange(false)\n childProp?.props?.onMouseLeave?.(e)\n },\n [childProp?.props, handleIsOpenChange],\n )\n\n // Handle closing the tooltip when the mouse leaves the referenceElement\n useCloseOnMouseLeave({handleIsOpenChange, referenceElement, showTooltip, isInsideGroup})\n\n // Close when `disabled` changes to `true`\n useEffect(() => {\n if (disabled && showTooltip) handleIsOpenChange(false)\n }, [disabled, handleIsOpenChange, showTooltip])\n\n // Close when `content` changes to falsy\n useEffect(() => {\n if (!content && showTooltip) handleIsOpenChange(false)\n }, [content, handleIsOpenChange, showTooltip])\n\n const onWindowEscape = useEffectEvent(() => handleIsOpenChange(false, true))\n\n useEffect(() => {\n // If the user clicks on escape key, close the tooltip.\n if (!showTooltip) return\n\n function handleWindowKeyDown(event: KeyboardEvent) {\n if (event.key === 'Escape') {\n onWindowEscape()\n }\n }\n\n window.addEventListener('keydown', handleWindowKeyDown)\n\n // oxlint-disable-next-line consistent-return\n return () => {\n window.removeEventListener('keydown', handleWindowKeyDown)\n }\n }, [showTooltip])\n\n // // Set the max width of the tooltip based on boundaries and portals\n useLayoutEffect(() => {\n // Get the maximum tooltip width (sans tooltip padding)\n // Tooltip width should never exceed the width of either any supplied boundary or portal element.\n // If both portal and boundary elements are provided, use the smaller width of the two.\n const availableWidths = [\n ...(boundaryElement ? [boundaryElement.offsetWidth] : []),\n portalElement?.offsetWidth || document.body.offsetWidth,\n ]\n\n // oxlint-disable-next-line react/set-state-in-effect\n setTooltipMaxWidth(Math.min(...availableWidths) - DEFAULT_TOOLTIP_PADDING * 2)\n }, [boundaryElement, portalElement])\n\n const setArrow = useCallback(\n (arrowEl: HTMLDivElement | null) => {\n arrowRef.current = arrowEl\n update()\n },\n [update],\n )\n\n const setFloating = useCallback(\n (node: HTMLDivElement | null) => {\n ref.current = node\n refs.setFloating(node)\n },\n [refs],\n )\n\n const child = useMemo(() => {\n if (!childProp) return null\n\n return cloneElement(childProp, {\n onBlur: handleBlur,\n onFocus: handleFocus,\n onMouseEnter: handleMouseEnter,\n onMouseLeave: handleMouseLeave,\n onClick: handleClick,\n onContextMenu: handleContextMenu,\n ref: setReferenceElement,\n })\n }, [\n childProp,\n handleBlur,\n handleClick,\n handleContextMenu,\n handleFocus,\n handleMouseEnter,\n handleMouseLeave,\n ])\n\n // If there's a child then we need to set the reference element to the cloned child ref\n // and if child changes we make sure to update or remove the reference element.\n useImperativeHandle(childProp ? getElementRef(childProp) : null, () => referenceElement, [\n referenceElement,\n ])\n\n if (!child) return <></>\n\n if (disabled) return child\n\n const tooltip = (\n <Layer\n data-ui=\"Tooltip\"\n {...restProps}\n className={clsx(tooltipLayer, restProps.className)}\n ref={setFloating}\n style={{\n ...floatingStyles,\n maxWidth: tooltipMaxWidth > 0 ? `${tooltipMaxWidth}px` : undefined,\n }}\n zOffset={zOffset}\n >\n <TooltipCard\n {...restProps}\n animate={animate}\n arrow={arrowProp}\n arrowRef={setArrow}\n arrowX={arrowX}\n arrowY={arrowY}\n originX={originX}\n originY={originY}\n padding={padding}\n placement={placement}\n radius={radius}\n ref={setFloating}\n scheme={scheme}\n shadow={shadow}\n >\n {content}\n </TooltipCard>\n </Layer>\n )\n\n const tooltipNode = portalProp ? (\n <Portal __unstable_name={typeof portalProp === 'string' ? portalProp : undefined}>\n {tooltip}\n </Portal>\n ) : (\n tooltip\n )\n\n return (\n <>\n {/* the tooltip */}\n {animate ? (\n <AnimateActivity layoutMode=\"default\" mode={showTooltip ? 'visible' : 'hidden'}>\n {tooltipNode}\n </AnimateActivity>\n ) : (\n <Activity mode={showTooltip ? 'visible' : 'hidden'}>{tooltipNode}</Activity>\n )}\n\n {/* the referred element */}\n {child}\n </>\n )\n}\n\nfunction useMiddleware({\n animate,\n arrowProp,\n arrowRef,\n boundaryElement,\n fallbackPlacements,\n rootBoundary,\n}: {\n animate: boolean\n arrowProp: boolean\n arrowRef: React.RefObject<HTMLDivElement | null>\n boundaryElement: HTMLElement | null\n fallbackPlacements: Placement[]\n rootBoundary: RootBoundary\n}) {\n return useMemo(() => {\n const ret: Middleware[] = []\n\n // Flip the floating element when leaving the boundary box\n ret.push(\n flip({\n boundary: boundaryElement || undefined,\n fallbackPlacements,\n padding: DEFAULT_TOOLTIP_PADDING,\n rootBoundary,\n }),\n )\n\n // Define distance between reference and floating element\n ret.push(offset({mainAxis: DEFAULT_TOOLTIP_DISTANCE}))\n\n // Shift the tooltip so its sits with the boundary element\n ret.push(\n shift({\n boundary: boundaryElement || undefined,\n rootBoundary,\n padding: DEFAULT_TOOLTIP_PADDING,\n }),\n )\n\n // Place arrow\n if (arrowProp) {\n ret.push(arrow({element: arrowRef, padding: DEFAULT_TOOLTIP_PADDING}))\n }\n\n // Determine the origin to scale from.\n // Must be placed after `@sanity/ui/size` and `shift` middleware.\n if (animate) {\n ret.push(origin)\n }\n\n return ret\n }, [animate, arrowProp, arrowRef, boundaryElement, fallbackPlacements, rootBoundary])\n}\n\n/**\n * As `useEffectEvent` should never be passed to other components or hooks, this custom hook groups together the `useEffectEvent` and the `useEffect` hook using it.\n * @see https://19.react.dev/learn/separating-events-from-effects#reading-latest-props-and-state-with-effect-events:~:text=Never%20pass%20them%20to%20other%20components%20or%20Hooks\n */\nfunction useCloseOnMouseLeave({\n handleIsOpenChange,\n referenceElement,\n showTooltip,\n isInsideGroup,\n}: {\n handleIsOpenChange: (open: boolean, immediate?: boolean) => void\n referenceElement: HTMLElement | null\n showTooltip: boolean\n isInsideGroup: boolean\n}) {\n // Since we don't want the `mouseevent` events to be attached and removed if the `referenceElement` is changed\n // we use a \"effect event\" (https://19.react.dev/learn/separating-events-from-effects#reading-latest-props-and-state-with-effect-events)\n // in order to always see the latest `referenceElement` value inside the event handler itself.\n const onMouseMove = useEffectEvent((target: EventTarget | null, teardown: () => void) => {\n if (!referenceElement) return\n\n const isHoveringReference =\n referenceElement === target || (target instanceof Node && referenceElement.contains(target))\n\n if (!isHoveringReference) {\n handleIsOpenChange(false)\n // Allow removing the event listener eagerly, to avoid race conditions\n teardown()\n }\n })\n\n // Detect whether the mouse is moving outside of the reference element. This is sometimes\n // necessary, because the tooltip might not always close as it should (e.g. when clicking\n // the reference element triggers a CPU-heavy operation.)\n useEffect(() => {\n if (!showTooltip || isInsideGroup) return\n\n const handleMouseMove = (event: MouseEvent) => {\n onMouseMove(event.target, () => window.removeEventListener('mousemove', handleMouseMove))\n }\n\n window.addEventListener('mousemove', handleMouseMove)\n\n // oxlint-disable-next-line consistent-return\n return () => window.removeEventListener('mousemove', handleMouseMove)\n }, [isInsideGroup, showTooltip])\n}\n","import {useMemo} from 'react'\n\nimport {useDelayedState} from '../../../hooks/useDelayedState'\nimport {Delay} from '../../types'\nimport {TooltipDelayGroupContext} from './tooltipDelayGroupContext'\nimport {TooltipDelayGroupContextValue} from './types'\n\n/**\n * @public\n * */\nexport interface TooltipDelayGroupProviderProps {\n children?: React.ReactNode\n /**\n * Handles the delays to open or close a tooltip inside a group\n *\n * If only a `number` is passed, it will be used for both opening and closing.\n *\n * If an object `{open: number; close:number}` is passed, it can be used to set different delays for each action.\n *\n * @public\n */\n delay: Delay\n}\n\n/**\n * @public\n * Provides context for a group of tooltip elements that should share a delay\n * which temporarily becomes 1 ms after the first floating element of the group opens.\n */\nexport function TooltipDelayGroupProvider(\n props: TooltipDelayGroupProviderProps,\n): React.JSX.Element {\n const {children, delay} = props\n const [isGroupActive, setIsGroupActive] = useDelayedState(false)\n const [openTooltipId, setOpenTooltipId] = useDelayedState<string | null>(null)\n\n const openDelay = typeof delay === 'number' ? delay : delay?.open || 0\n const closeDelay = typeof delay === 'number' ? delay : delay?.close || 0\n\n const value: TooltipDelayGroupContextValue = useMemo(\n () => ({\n setIsGroupActive: setIsGroupActive,\n openTooltipId: openTooltipId,\n setOpenTooltipId: setOpenTooltipId,\n // When the group is active, we want the next tooltip to open immediately.\n openDelay: isGroupActive ? 1 : openDelay,\n closeDelay: closeDelay,\n }),\n [closeDelay, isGroupActive, openDelay, openTooltipId, setIsGroupActive, setOpenTooltipId],\n )\n\n return (\n <TooltipDelayGroupContext.Provider value={value}>{children}</TooltipDelayGroupContext.Provider>\n )\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useClickOutsideEvent-wGLGWBZN.js","names":["() => EMPTY_ARRAY","elementsArg: () => ClickOutsideEventElements = () => EMPTY_ARRAY","(evt: MouseEvent) => {\n if (!listener) {\n return\n }\n\n const target = evt.target\n\n if (!(target instanceof Node)) {\n return\n }\n\n const resolvedBoundaryElement = boundaryElement?.()\n\n if (resolvedBoundaryElement && !resolvedBoundaryElement.contains(target)) {\n return\n }\n\n const elements = elementsArg().flat()\n\n for (const el of elements) {\n if (!el) continue\n\n if (target === el || el.contains(target)) {\n return\n }\n }\n\n listener(evt)\n }","() => {\n if (!hasListener) return undefined\n\n const handleEvent = (evt: MouseEvent) => onEvent(evt)\n\n document.addEventListener('mousedown', handleEvent)\n\n return () => {\n document.removeEventListener('mousedown', handleEvent)\n }\n
|
|
1
|
+
{"version":3,"file":"useClickOutsideEvent-wGLGWBZN.js","names":["() => EMPTY_ARRAY","elementsArg: () => ClickOutsideEventElements = () => EMPTY_ARRAY","(evt: MouseEvent) => {\n if (!listener) {\n return\n }\n\n const target = evt.target\n\n if (!(target instanceof Node)) {\n return\n }\n\n const resolvedBoundaryElement = boundaryElement?.()\n\n if (resolvedBoundaryElement && !resolvedBoundaryElement.contains(target)) {\n return\n }\n\n const elements = elementsArg().flat()\n\n for (const el of elements) {\n if (!el) continue\n\n if (target === el || el.contains(target)) {\n return\n }\n }\n\n listener(evt)\n }","() => {\n if (!hasListener) return undefined\n\n const handleEvent = (evt: MouseEvent) => onEvent(evt)\n\n document.addEventListener('mousedown', handleEvent)\n\n return () => {\n document.removeEventListener('mousedown', handleEvent)\n }\n }","evt","[hasListener]"],"sources":["../src/core/hooks/useClickOutsideEvent.ts"],"sourcesContent":["import {useDebugValue, useEffect} from 'react'\n// TODO: switch to `useEffectEvent` from `react` once\n// https://github.com/facebook/react/issues/34818 is fixed in the lowest React\n// version we support: on React 19.2 the native hook never sees values past\n// the first render when the calling component is wrapped in `forwardRef` or\n// `memo`. This public hook runs in the fiber of whatever component calls it\n// (consumers may call it from `forwardRef` or `memo` components).\nimport {useEffectEvent} from 'use-effect-event'\n\nimport {EMPTY_ARRAY} from '../constants'\n\n/**\n * @public\n */\nexport type ClickOutsideEventListener = (event: MouseEvent) => void\n\n/**\n * @public\n */\nexport type ClickOutsideEventElements = (HTMLElement | null | (HTMLElement | null)[])[]\n\n/**\n * @public\n */\nexport function useClickOutsideEvent(\n listener: ClickOutsideEventListener | false | undefined,\n elementsArg: () => ClickOutsideEventElements = () => EMPTY_ARRAY,\n boundaryElement?: () => HTMLElement | null,\n): void {\n /**\n * The `useEffectEvent` hook allow us to always see the latest value of `listener`, `elementsArg` and `boundaryElement` without needing to\n * juggle `useState`, `useRef` and `useState` to make sure the `mousedown` event listener isn't constantly being added and removed.\n */\n const onEvent = useEffectEvent((evt: MouseEvent) => {\n if (!listener) {\n return\n }\n\n const target = evt.target\n\n if (!(target instanceof Node)) {\n return\n }\n\n const resolvedBoundaryElement = boundaryElement?.()\n\n if (resolvedBoundaryElement && !resolvedBoundaryElement.contains(target)) {\n return\n }\n\n const elements = elementsArg().flat()\n\n for (const el of elements) {\n if (!el) continue\n\n if (target === el || el.contains(target)) {\n return\n }\n }\n\n listener(evt)\n })\n\n const hasListener = Boolean(listener)\n\n useEffect(() => {\n if (!hasListener) return undefined\n\n const handleEvent = (evt: MouseEvent) => onEvent(evt)\n\n document.addEventListener('mousedown', handleEvent)\n\n return () => {\n document.removeEventListener('mousedown', handleEvent)\n }\n }, [hasListener])\n\n useDebugValue(listener ? 'MouseDown On' : 'MouseDown Off')\n}\n"],"mappings":";;;;;;;AAwBA,SAAgB,qBACd,UAAA,IAEA,iBACM;eAFN,cAAA,OAAA,KAAA,IAA+CA,QAA/CC,IAO+BC;CAWG,AAAA,EAAA,OAAA,mBAAA,EAAA,OAMf,eAAA,EAAA,OAhBZ,YADwB,MAAC,QAAoB;EAClD,IAAI,CAAC,UACH;EAGF,IAAM,SAAS,IAAI;EAEnB,IAAI,EAAE,kBAAkB,OACtB;EAGF,IAAM,0BAA0B,kBAAkB;EAElD,IAAI,2BAA2B,CAAC,wBAAwB,SAAS,MAAM,GACrE;EAGF,IAAM,WAAW,YAAY,CAAC,CAAC,KAAK;EAEpC,KAAK,IAAM,MAAM,UACV,WAED,WAAW,MAAM,GAAG,SAAS,MAAM,IACrC;EAIJ,SAAS,GAAG;CACd,GAjBkC,EAAA,KAAA,iBAMf,EAAA,KAAA,aAhBZ,EAAA,KAAA;CADP,IAAM,UAAU,eAAeA,EA4B9B,GAEK,cAAc,EAAQ,UAElBC;CACH,AAAA,EAAA,OAAA,eAAA,EAAA,OAEoC,WAHjC,WAAM;EACd,IAAI,CAAC,aAAa;EAElB,IAAM,eAAe,UAAoB,QAAQC,KAAG;EAIpD,OAFA,SAAS,iBAAiB,aAAa,WAAW,SAErC;GACX,SAAS,oBAAoB,aAAa,WAAW;EACvD;CACF,GATO,EAAA,KAAA,aAEoC,EAAA,KAAA;CAOxCC,IAAAA;CAEH,AAFI,EAAA,OAAA,2BAAD,KAAA,CAAC,WAAW,GAAX,EAAA,KAAA,yBAVJ,UAAUF,IAUPE,EAAa,GAEhB,cAAc,WAAW,iBAAiB,eAAe;AAC3D;AApDiD,SAAA,QAAA;CAAM,OAAA"}
|
|
@@ -2,7 +2,7 @@ import { a as rem, i as _responsive, n as _getArrayProp, o as EMPTY_ARRAY, r as
|
|
|
2
2
|
import { t as getTheme_v2 } from "./getTheme_v2-y09KqtEb.js";
|
|
3
3
|
import { t as getScopedTheme } from "./getScopedTheme-C-sZsyAz.js";
|
|
4
4
|
import { c } from "react/compiler-runtime";
|
|
5
|
-
import { createContext, useContext, useDebugValue, useEffect,
|
|
5
|
+
import { createContext, useContext, useDebugValue, useEffect, useReducer, useSyncExternalStore } from "react";
|
|
6
6
|
import { ThemeProvider, css, styled, useTheme } from "styled-components";
|
|
7
7
|
import { jsx } from "react/jsx-runtime";
|
|
8
8
|
import { isValidElementType } from "react-is";
|
|
@@ -629,9 +629,9 @@ function useMatchMedia(mediaQueryString, getServerSnapshot) {
|
|
|
629
629
|
* @public
|
|
630
630
|
*/
|
|
631
631
|
function usePrefersReducedMotion(t0) {
|
|
632
|
-
return useMatchMedia("(prefers-reduced-motion: reduce)", t0 === void 0 ? _temp
|
|
632
|
+
return useMatchMedia("(prefers-reduced-motion: reduce)", t0 === void 0 ? _temp : t0);
|
|
633
633
|
}
|
|
634
|
-
function _temp
|
|
634
|
+
function _temp() {
|
|
635
635
|
return !1;
|
|
636
636
|
}
|
|
637
637
|
function isRecord(value) {
|
|
@@ -643,55 +643,76 @@ function getLayerContext(contextValue) {
|
|
|
643
643
|
if (contextValue.version === 0) return contextValue;
|
|
644
644
|
throw Error("could not get layer context");
|
|
645
645
|
}
|
|
646
|
-
const LayerContext = createGlobalScopedContext("@sanity/ui/context/layer", null)
|
|
646
|
+
const LayerContext = createGlobalScopedContext("@sanity/ui/context/layer", null), initialLayerState = {
|
|
647
|
+
childLayers: /* @__PURE__ */ new Map(),
|
|
648
|
+
childrenWithoutLevel: 0
|
|
649
|
+
};
|
|
650
|
+
/** @internal */
|
|
651
|
+
function layerReducer(state, action) {
|
|
652
|
+
let { level } = action;
|
|
653
|
+
switch (action.type) {
|
|
654
|
+
case "child/register": {
|
|
655
|
+
if (level === void 0) return {
|
|
656
|
+
...state,
|
|
657
|
+
childrenWithoutLevel: state.childrenWithoutLevel + 1
|
|
658
|
+
};
|
|
659
|
+
let childLayers = new Map(state.childLayers);
|
|
660
|
+
return childLayers.set(level, (childLayers.get(level) ?? 0) + 1), {
|
|
661
|
+
...state,
|
|
662
|
+
childLayers
|
|
663
|
+
};
|
|
664
|
+
}
|
|
665
|
+
case "child/unregister": {
|
|
666
|
+
if (level === void 0) return {
|
|
667
|
+
...state,
|
|
668
|
+
childrenWithoutLevel: state.childrenWithoutLevel - 1
|
|
669
|
+
};
|
|
670
|
+
let childLayers = new Map(state.childLayers), count = childLayers.get(level) ?? 0;
|
|
671
|
+
return count === 1 ? childLayers.delete(level) : childLayers.set(level, count - 1), {
|
|
672
|
+
...state,
|
|
673
|
+
childLayers
|
|
674
|
+
};
|
|
675
|
+
}
|
|
676
|
+
default: return state;
|
|
677
|
+
}
|
|
678
|
+
}
|
|
647
679
|
/**
|
|
648
680
|
* @public
|
|
649
681
|
*/
|
|
650
682
|
function LayerProvider(props) {
|
|
651
|
-
let $ = c(
|
|
683
|
+
let $ = c(19), { children, zOffset: t0 } = props, zOffsetProp = t0 === void 0 ? 0 : t0, parentContextValue = useContext(LayerContext), t1;
|
|
652
684
|
$[0] === parentContextValue ? t1 = $[1] : (t1 = parentContextValue && getLayerContext(parentContextValue), $[0] = parentContextValue, $[1] = t1);
|
|
653
685
|
let parent = t1, parentRegisterChild = parent?.registerChild, level = (parent?.level ?? 0) + 1, t2;
|
|
654
686
|
$[2] === zOffsetProp ? t2 = $[3] : (t2 = _getArrayProp(zOffsetProp), $[2] = zOffsetProp, $[3] = t2);
|
|
655
|
-
let zOffset = t2, maxMediaIndex = zOffset.length - 1, mediaIndex = Math.min(useMediaIndex(), maxMediaIndex), zIndex = parent ? parent.zIndex + zOffset[mediaIndex] : zOffset[mediaIndex], t3;
|
|
656
|
-
$[4] ===
|
|
657
|
-
let [, setChildLayers] = useState(t3), [size, setSize] = useState(0), isTopLayer = size === 0, t4;
|
|
658
|
-
$[5] === parentRegisterChild ? t4 = $[6] : (t4 = (childLevel) => {
|
|
687
|
+
let zOffset = t2, maxMediaIndex = zOffset.length - 1, mediaIndex = Math.min(useMediaIndex(), maxMediaIndex), zIndex = parent ? parent.zIndex + zOffset[mediaIndex] : zOffset[mediaIndex], [t3, dispatch] = useReducer(layerReducer, initialLayerState), { childLayers, childrenWithoutLevel } = t3, size = childLayers.size + childrenWithoutLevel, isTopLayer = size === 0, t4;
|
|
688
|
+
$[4] === parentRegisterChild ? t4 = $[5] : (t4 = (childLevel) => {
|
|
659
689
|
let parentDispose = parentRegisterChild?.(childLevel);
|
|
660
|
-
return
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
[childLevel]: prevLen + 1
|
|
664
|
-
};
|
|
665
|
-
return setSize(Object.keys(nextState).length), nextState;
|
|
690
|
+
return dispatch({
|
|
691
|
+
type: "child/register",
|
|
692
|
+
level: childLevel
|
|
666
693
|
}), () => {
|
|
667
|
-
|
|
668
|
-
|
|
669
|
-
|
|
694
|
+
dispatch({
|
|
695
|
+
type: "child/unregister",
|
|
696
|
+
level: childLevel
|
|
670
697
|
}), parentDispose?.();
|
|
671
698
|
};
|
|
672
|
-
}, $[
|
|
699
|
+
}, $[4] = parentRegisterChild, $[5] = t4);
|
|
673
700
|
let registerChild = t4, t5, t6;
|
|
674
|
-
$[
|
|
701
|
+
$[6] !== level || $[7] !== parentRegisterChild ? (t5 = () => parentRegisterChild?.(level), t6 = [level, parentRegisterChild], $[6] = level, $[7] = parentRegisterChild, $[8] = t5, $[9] = t6) : (t5 = $[8], t6 = $[9]), useEffect(t5, t6);
|
|
675
702
|
let t7;
|
|
676
|
-
$[
|
|
703
|
+
$[10] !== isTopLayer || $[11] !== level || $[12] !== registerChild || $[13] !== size || $[14] !== zIndex ? (t7 = {
|
|
677
704
|
version: 0,
|
|
678
705
|
isTopLayer,
|
|
679
706
|
level,
|
|
680
707
|
registerChild,
|
|
681
708
|
size,
|
|
682
709
|
zIndex
|
|
683
|
-
}, $[
|
|
710
|
+
}, $[10] = isTopLayer, $[11] = level, $[12] = registerChild, $[13] = size, $[14] = zIndex, $[15] = t7) : t7 = $[15];
|
|
684
711
|
let value = t7, t8;
|
|
685
|
-
return $[
|
|
712
|
+
return $[16] !== children || $[17] !== value ? (t8 = /* @__PURE__ */ jsx(LayerContext.Provider, {
|
|
686
713
|
value,
|
|
687
714
|
children
|
|
688
|
-
}), $[
|
|
689
|
-
}
|
|
690
|
-
function _temp2(v_0) {
|
|
691
|
-
return v_0 - 1;
|
|
692
|
-
}
|
|
693
|
-
function _temp(v) {
|
|
694
|
-
return v + 1;
|
|
715
|
+
}), $[16] = children, $[17] = value, $[18] = t8) : t8 = $[18], t8;
|
|
695
716
|
}
|
|
696
717
|
/**
|
|
697
718
|
* @public
|
|
@@ -709,4 +730,4 @@ function useLayer() {
|
|
|
709
730
|
}
|
|
710
731
|
export { useTheme_v2 as _, useMatchMedia as a, responsivePaddingStyle as b, ThemeColorProvider as c, createGlobalScopedContext as d, globalScope as f, useTheme$1 as g, _cardColorStyle as h, usePrefersReducedMotion as i, useRootTheme as l, focusRingStyle as m, LayerProvider as n, useMediaIndex as o, focusRingBorderStyle as p, isRecord as r, Card as s, useLayer as t, ThemeProvider$1 as u, responsiveRadiusStyle as v, flexItemStyle as x, Box as y };
|
|
711
732
|
|
|
712
|
-
//# sourceMappingURL=useLayer-
|
|
733
|
+
//# sourceMappingURL=useLayer-ONr7wTUN.js.map
|