@sanity/ui 4.2.0 → 5.0.0-alpha.10
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/README.md +194 -28
- package/bin/sanity-ui.js +14 -0
- package/dist/_chunks-es/LazyRefractor.js +20 -0
- package/dist/_chunks-es/LazyRefractor.js.map +1 -0
- package/dist/cli/checks.js +148 -0
- package/dist/cli/config.js +23 -0
- package/dist/cli/detect.js +181 -0
- package/dist/cli/doctor.js +49 -0
- package/dist/cli/index.js +69 -0
- package/dist/cli/init.js +189 -0
- package/dist/cli/install.js +79 -0
- package/dist/cli/log.js +66 -0
- package/dist/cli/selfPackage.js +11 -0
- package/dist/cli/styles.js +185 -0
- package/dist/cli/test-utils.js +8 -0
- package/dist/cli/tsconfig.js +236 -0
- package/dist/cli/types.js +1 -0
- package/dist/cli/versions.js +45 -0
- package/dist/index.d.ts +1203 -1469
- package/dist/index.js +2123 -1989
- package/dist/index.js.map +1 -1
- package/dist/polyfills.d.ts +1 -0
- package/dist/polyfills.js +5 -0
- package/dist/polyfills.js.map +1 -0
- package/dist/styles.css +1 -547
- package/package.json +57 -58
- package/src/cli/checks.test.ts +38 -0
- package/src/cli/checks.ts +200 -0
- package/src/cli/config.ts +44 -0
- package/src/cli/detect.test.ts +191 -0
- package/src/cli/detect.ts +205 -0
- package/src/cli/doctor.test.ts +52 -0
- package/src/cli/doctor.ts +65 -0
- package/src/cli/index.ts +77 -0
- package/src/cli/init.ts +225 -0
- package/src/cli/install.test.ts +52 -0
- package/src/cli/install.ts +108 -0
- package/src/cli/log.ts +79 -0
- package/src/cli/selfPackage.ts +14 -0
- package/src/cli/styles.test.ts +130 -0
- package/src/cli/styles.ts +205 -0
- package/src/cli/test-utils.ts +10 -0
- package/src/cli/tsconfig.test.ts +174 -0
- package/src/cli/tsconfig.ts +282 -0
- package/src/cli/types.ts +77 -0
- package/src/cli/versions.test.ts +35 -0
- package/src/cli/versions.ts +41 -0
- package/src/components/badge/Badge.tsx +53 -0
- package/src/components/badge/badge.css +6 -0
- package/src/components/badge/badge.props.ts +31 -0
- package/src/components/box/Box.tsx +30 -0
- package/src/components/box/box.css +4 -0
- package/src/components/box/box.props.ts +29 -0
- package/src/components/button/Button.tsx +78 -0
- package/src/components/button/button.css +72 -0
- package/src/components/button/button.props.ts +122 -0
- package/src/components/card/Card.tsx +31 -0
- package/src/components/card/card.css +4 -0
- package/src/components/card/card.props.ts +58 -0
- package/src/components/checkbox/Checkbox.tsx +64 -0
- package/src/components/checkbox/checkbox.css +100 -0
- package/src/components/checkbox/checkbox.props.ts +33 -0
- package/src/components/code/Code.tsx +38 -0
- package/src/components/code/LazyRefractor.tsx +9 -0
- package/src/components/code/code.css +40 -0
- package/src/components/code/code.props.ts +44 -0
- package/src/components/container/Container.tsx +30 -0
- package/src/components/container/container.css +4 -0
- package/src/components/container/container.props.ts +28 -0
- package/src/components/dialog/Dialog.tsx +139 -0
- package/src/components/dialog/dialog.css +49 -0
- package/src/components/dialog/dialog.props.ts +45 -0
- package/src/components/divider/Divider.tsx +23 -0
- package/src/components/divider/divider.props.ts +9 -0
- package/src/components/eyebrow/Eyebrow.tsx +54 -0
- package/src/components/eyebrow/eyebrow.css +11 -0
- package/src/components/eyebrow/eyebrow.props.ts +28 -0
- package/src/components/flex/Flex.tsx +30 -0
- package/src/components/flex/flex.css +4 -0
- package/src/components/flex/flex.props.ts +33 -0
- package/src/components/grid/Grid.tsx +30 -0
- package/src/components/grid/grid.css +4 -0
- package/src/components/grid/grid.props.ts +33 -0
- package/src/components/h-stack/HStack.tsx +34 -0
- package/src/components/h-stack/hStack.props.ts +17 -0
- package/src/components/heading/Heading.tsx +54 -0
- package/src/components/heading/heading.css +9 -0
- package/src/components/heading/heading.props.ts +31 -0
- package/src/components/icon/Icon.tsx +24 -0
- package/src/components/icon/icon.css +17 -0
- package/src/components/icon/icon.props.ts +35 -0
- package/src/components/icon-button/IconButton.tsx +32 -0
- package/src/components/icon-button/iconButton.props.ts +31 -0
- package/src/components/index.css +28 -0
- package/src/components/indicator/Indicator.tsx +42 -0
- package/src/components/indicator/indicator.css +4 -0
- package/src/components/indicator/indicator.props.ts +24 -0
- package/src/components/indicator-stack/IndicatorStack.tsx +31 -0
- package/src/components/indicator-stack/indicator-stack.css +7 -0
- package/src/components/indicator-stack/indicatorStack.props.ts +15 -0
- package/src/components/inline/Inline.tsx +38 -0
- package/src/components/inline/inline.css +4 -0
- package/src/components/inline/inline.props.ts +100 -0
- package/src/components/label/Label.tsx +34 -0
- package/src/components/label/label.css +3 -0
- package/src/components/label/label.props.ts +25 -0
- package/src/components/link/Link.tsx +29 -0
- package/src/components/link/link.css +12 -0
- package/src/components/link/link.props.ts +23 -0
- package/src/components/list/List.tsx +167 -0
- package/src/components/list/list.css +25 -0
- package/src/components/list/list.props.ts +130 -0
- package/src/components/popover/Popover.tsx +85 -0
- package/src/components/popover/popover.css +21 -0
- package/src/components/popover/popover.props.ts +38 -0
- package/src/components/press-area/PressArea.tsx +29 -0
- package/src/components/press-area/press-area.css +22 -0
- package/src/components/press-area/pressArea.props.ts +16 -0
- package/src/components/radio/Radio.tsx +48 -0
- package/src/components/radio/radio.css +97 -0
- package/src/components/radio/radio.props.ts +25 -0
- package/src/components/skip-to-content/SkipToContent.tsx +35 -0
- package/src/components/skip-to-content/skip-to-content.css +9 -0
- package/src/components/skip-to-content/skipToContent.props.ts +25 -0
- package/src/components/spinner/Spinner.tsx +28 -0
- package/src/components/spinner/spinner.css +10 -0
- package/src/components/spinner/spinner.props.ts +19 -0
- package/src/components/switch/Switch.tsx +48 -0
- package/src/components/switch/switch.css +119 -0
- package/src/components/switch/switch.props.ts +25 -0
- package/src/components/text/Text.tsx +53 -0
- package/src/components/text/text.css +9 -0
- package/src/components/text/text.props.ts +28 -0
- package/src/components/tooltip/Tooltip.tsx +97 -0
- package/src/components/tooltip/tooltip.css +31 -0
- package/src/components/tooltip/tooltip.props.ts +36 -0
- package/src/components/tooltip-group/TooltipGroup.tsx +64 -0
- package/src/components/tooltip-group/tooltipGroup.props.ts +15 -0
- package/src/components/v-stack/VStack.tsx +32 -0
- package/src/components/v-stack/vStack.props.ts +17 -0
- package/src/components/visually-hidden/VisuallyHidden.tsx +29 -0
- package/src/components/visually-hidden/visually-hidden.css +9 -0
- package/src/components/visually-hidden/visuallyHidden.props.ts +23 -0
- package/src/css/classes/dynamic/flex-child.css +5 -0
- package/src/css/classes/dynamic/grid-child.css +8 -0
- package/src/css/classes/dynamic/grid-parent.css +6 -0
- package/src/css/classes/dynamic/height.css +5 -0
- package/src/css/classes/dynamic/index.css +7 -0
- package/src/css/classes/dynamic/line-clamp.css +5 -0
- package/src/css/classes/dynamic/readme.md +3 -0
- package/src/css/classes/dynamic/width.css +7 -0
- package/src/css/classes/dynamic/z-index.css +3 -0
- package/src/css/classes/generic/display.css +10 -0
- package/src/css/classes/generic/flex.css +24 -0
- package/src/css/classes/generic/grid.css +7 -0
- package/src/css/classes/generic/index.css +7 -0
- package/src/css/classes/generic/overflow.css +19 -0
- package/src/css/classes/generic/placement.css +202 -0
- package/src/css/classes/generic/position.css +7 -0
- package/src/css/classes/generic/readme.md +3 -0
- package/src/css/classes/generic/text-align.css +5 -0
- package/src/css/classes/index.css +4 -0
- package/src/css/classes/local/animation.css +4 -0
- package/src/css/classes/local/border.css +20 -0
- package/src/css/classes/local/index.css +6 -0
- package/src/css/classes/local/readme.md +3 -0
- package/src/css/classes/local/text-overflow.css +5 -0
- package/src/css/classes/local/text-trim.css +45 -0
- package/src/css/classes/local/tone.css +75 -0
- package/src/css/classes/local/top-anchor.css +4 -0
- package/src/css/classes/system/color.css +223 -0
- package/src/css/classes/system/container.css +8 -0
- package/src/css/classes/system/font-family.css +2 -0
- package/src/css/classes/system/font-weight.css +4 -0
- package/src/css/classes/system/gap.css +37 -0
- package/src/css/classes/system/index.css +10 -0
- package/src/css/classes/system/inset.css +56 -0
- package/src/css/classes/system/margin.css +148 -0
- package/src/css/classes/system/padding.css +78 -0
- package/src/css/classes/system/radius.css +10 -0
- package/src/css/classes/system/readme.md +3 -0
- package/src/css/classes/system/shadow.css +6 -0
- package/src/css/classes/system/typography.css +31 -0
- package/src/css/global/font-face.css +20 -0
- package/src/css/global/index.css +2 -0
- package/src/css/global/reset.css +76 -0
- package/src/css/tokens/index.css +3 -0
- package/src/css/tokens/opacity.css +6 -0
- package/src/css/tokens/semantic.css +25 -0
- package/src/css/tokens/surface.css +27 -0
- package/src/hooks/useIsClient.ts +10 -0
- package/src/index.css +18 -0
- package/src/index.ts +65 -0
- package/src/polyfills.ts +15 -0
- package/src/props/border.ts +51 -0
- package/src/props/flexChild.ts +29 -0
- package/src/props/flexParent.ts +47 -0
- package/src/props/gap.ts +31 -0
- package/src/props/gridChild.ts +50 -0
- package/src/props/gridParent.ts +45 -0
- package/src/props/height.ts +29 -0
- package/src/props/layout.ts +44 -0
- package/src/props/margin.ts +59 -0
- package/src/props/overflow.ts +30 -0
- package/src/props/padding.ts +59 -0
- package/src/props/placement.ts +16 -0
- package/src/props/position.ts +52 -0
- package/src/props/shadow.ts +15 -0
- package/src/props/tone.ts +15 -0
- package/src/props/typography.ts +62 -0
- package/src/props/width.ts +29 -0
- package/src/props/zIndex.ts +15 -0
- package/src/styles.css.d.ts +1 -0
- package/src/styles.css.node.js +2 -0
- package/src/styles.css.test.ts +24 -0
- package/src/types/Button.ts +8 -0
- package/src/types/Code.ts +6 -0
- package/src/types/Container.ts +3 -0
- package/src/types/Density.ts +3 -0
- package/src/types/Display.ts +11 -0
- package/src/types/Eyebrow.ts +3 -0
- package/src/types/Flex.ts +22 -0
- package/src/types/FontWeight.ts +3 -0
- package/src/types/Grid.ts +3 -0
- package/src/types/Heading.ts +6 -0
- package/src/types/Icon.ts +3 -0
- package/src/types/Interactive.ts +8 -0
- package/src/types/List.ts +2 -0
- package/src/types/Overflow.ts +3 -0
- package/src/types/Placement.ts +16 -0
- package/src/types/Position.ts +3 -0
- package/src/types/PropDef.ts +73 -0
- package/src/types/Radius.ts +3 -0
- package/src/types/Responsive.ts +10 -0
- package/src/types/Shadow.ts +3 -0
- package/src/types/Space.ts +15 -0
- package/src/types/Text.ts +3 -0
- package/src/types/TextAlign.ts +3 -0
- package/src/types/Tone.ts +3 -0
- package/src/utils/getProps.test.ts +156 -0
- package/src/utils/getProps.ts +156 -0
- package/src/utils/mergeTriggerProps.ts +66 -0
- package/src/utils/renderPortal.tsx +14 -0
- package/src/utils/suffixClassName.ts +5 -0
- package/src/version.ts +3 -0
- package/LICENSE +0 -21
- package/dist/_system-CTe2lb5l.d.ts +0 -40
- package/dist/_system-CTe2lb5l.d.ts.map +0 -1
- package/dist/arrow-BmX6qbAS.js +0 -170
- package/dist/arrow-BmX6qbAS.js.map +0 -1
- package/dist/autocomplete.d.ts +0 -140
- package/dist/autocomplete.d.ts.map +0 -1
- package/dist/autocomplete.js +0 -470
- package/dist/autocomplete.js.map +0 -1
- package/dist/breadcrumbs.d.ts +0 -18
- package/dist/breadcrumbs.d.ts.map +0 -1
- package/dist/breadcrumbs.js +0 -119
- package/dist/breadcrumbs.js.map +0 -1
- package/dist/button-BNyKSDyA.js +0 -180
- package/dist/button-BNyKSDyA.js.map +0 -1
- package/dist/button-dnqMFkWg.d.ts +0 -76
- package/dist/button-dnqMFkWg.d.ts.map +0 -1
- package/dist/card-C0a0wQTc.d.ts +0 -7
- package/dist/card-C0a0wQTc.d.ts.map +0 -1
- package/dist/code.d.ts +0 -20
- package/dist/code.d.ts.map +0 -1
- package/dist/code.js +0 -90
- package/dist/code.js.map +0 -1
- package/dist/codeFontStyle-84SMhFtI.js +0 -11
- package/dist/codeFontStyle-84SMhFtI.js.map +0 -1
- package/dist/component-DVlwaWB-.d.ts +0 -25
- package/dist/component-DVlwaWB-.d.ts.map +0 -1
- package/dist/element-BYgCE_iK.js +0 -51
- package/dist/element-BYgCE_iK.js.map +0 -1
- package/dist/factory-BzXTX8_Q.js +0 -3056
- package/dist/factory-BzXTX8_Q.js.map +0 -1
- package/dist/flex-DmbDG2ks.js +0 -76
- package/dist/flex-DmbDG2ks.js.map +0 -1
- package/dist/font-EtfxKPUz.d.ts +0 -49
- package/dist/font-EtfxKPUz.d.ts.map +0 -1
- package/dist/getElementRef-Jw7gY0eV.js +0 -102
- package/dist/getElementRef-Jw7gY0eV.js.map +0 -1
- package/dist/getScopedTheme-C-sZsyAz.js +0 -267
- package/dist/getScopedTheme-C-sZsyAz.js.map +0 -1
- package/dist/getTheme_v2-y09KqtEb.js +0 -487
- package/dist/getTheme_v2-y09KqtEb.js.map +0 -1
- package/dist/grid-6JSgMj1O.js +0 -115
- package/dist/grid-6JSgMj1O.js.map +0 -1
- package/dist/helpers-C8xxXAQC.js +0 -63
- package/dist/helpers-C8xxXAQC.js.map +0 -1
- package/dist/hotkeys-CaHsQlsO.js +0 -168
- package/dist/hotkeys-CaHsQlsO.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/layer-Bl5R3uNR.js +0 -61
- package/dist/layer-Bl5R3uNR.js.map +0 -1
- package/dist/layer-ChlP9Ik6.d.ts +0 -242
- package/dist/layer-ChlP9Ik6.d.ts.map +0 -1
- package/dist/menu.d.ts +0 -146
- package/dist/menu.d.ts.map +0 -1
- package/dist/menu.js +0 -626
- package/dist/menu.js.map +0 -1
- package/dist/popover-B7-28L8y.js +0 -408
- package/dist/popover-B7-28L8y.js.map +0 -1
- package/dist/popover-CMlQeKn0.d.ts +0 -96
- package/dist/popover-CMlQeKn0.d.ts.map +0 -1
- package/dist/popover.d.ts +0 -2
- package/dist/popover.js +0 -3
- package/dist/refractor-CC48DwHi.js +0 -20
- package/dist/refractor-CC48DwHi.js.map +0 -1
- package/dist/responsiveFont-CilwaORG.js +0 -55
- package/dist/responsiveFont-CilwaORG.js.map +0 -1
- package/dist/rgba-BSYaEUW6.d.ts +0 -846
- package/dist/rgba-BSYaEUW6.d.ts.map +0 -1
- package/dist/selectable-B0GUIL74.d.ts +0 -7
- package/dist/selectable-B0GUIL74.d.ts.map +0 -1
- package/dist/stack-rsNFPq2-.js +0 -112
- package/dist/stack-rsNFPq2-.js.map +0 -1
- package/dist/styles-css.d.ts +0 -2
- package/dist/styles-css.js +0 -4
- package/dist/textInput-pSfQjkmx.js +0 -313
- package/dist/textInput-pSfQjkmx.js.map +0 -1
- package/dist/theme.d.ts +0 -280
- package/dist/theme.d.ts.map +0 -1
- package/dist/theme.js +0 -55
- package/dist/theme.js.map +0 -1
- package/dist/toast.d.ts +0 -73
- package/dist/toast.d.ts.map +0 -1
- package/dist/toast.js +0 -302
- package/dist/toast.js.map +0 -1
- package/dist/tooltip.d.ts +0 -88
- package/dist/tooltip.d.ts.map +0 -1
- package/dist/tooltip.js +0 -435
- package/dist/tooltip.js.map +0 -1
- package/dist/useClickOutsideEvent-wGLGWBZN.js +0 -36
- package/dist/useClickOutsideEvent-wGLGWBZN.js.map +0 -1
- package/dist/useElementSize-BJvbGHq8.js +0 -51
- package/dist/useElementSize-BJvbGHq8.js.map +0 -1
- package/dist/useLayer-D1usxIE0.js +0 -712
- package/dist/useLayer-D1usxIE0.js.map +0 -1
package/dist/tooltip.js
DELETED
|
@@ -1,435 +0,0 @@
|
|
|
1
|
-
"use client";
|
|
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-D1usxIE0.js";
|
|
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-BmX6qbAS.js";
|
|
6
|
-
import { t as Layer } from "./layer-Bl5R3uNR.js";
|
|
7
|
-
import { c } from "react/compiler-runtime";
|
|
8
|
-
import { clsx } from "clsx/lite";
|
|
9
|
-
import { Activity, cloneElement, useContext, useEffect, useId, useImperativeHandle, useLayoutEffect, useRef, useState } from "react";
|
|
10
|
-
import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
|
|
11
|
-
import { arrow, autoUpdate, flip, offset, shift, useFloating } from "@floating-ui/react-dom";
|
|
12
|
-
import { motion } from "motion/react";
|
|
13
|
-
import { useEffectEvent } from "use-effect-event";
|
|
14
|
-
/**
|
|
15
|
-
* @beta
|
|
16
|
-
*/
|
|
17
|
-
function useDelayedState(initialState) {
|
|
18
|
-
let $ = c(5), [state, setState] = useState(initialState), delayedAction = useRef(void 0), t0;
|
|
19
|
-
$[0] === Symbol.for("react.memo_cache_sentinel") ? (t0 = (nextState, delay) => {
|
|
20
|
-
let action = () => {
|
|
21
|
-
setState(nextState);
|
|
22
|
-
};
|
|
23
|
-
if (delayedAction.current &&= (clearTimeout(delayedAction.current), void 0), !delay) return action();
|
|
24
|
-
delayedAction.current = setTimeout(action, delay);
|
|
25
|
-
}, $[0] = t0) : t0 = $[0];
|
|
26
|
-
let onStateChange = t0, t1, t2;
|
|
27
|
-
$[1] === Symbol.for("react.memo_cache_sentinel") ? (t1 = () => () => {
|
|
28
|
-
delayedAction.current && clearTimeout(delayedAction.current);
|
|
29
|
-
}, t2 = [], $[1] = t1, $[2] = t2) : (t1 = $[1], t2 = $[2]), useEffect(t1, t2);
|
|
30
|
-
let t3;
|
|
31
|
-
return $[3] === state ? t3 = $[4] : (t3 = [state, onStateChange], $[3] = state, $[4] = t3), t3;
|
|
32
|
-
}
|
|
33
|
-
const DEFAULT_FALLBACK_PLACEMENTS = {
|
|
34
|
-
top: [
|
|
35
|
-
"top-end",
|
|
36
|
-
"top-start",
|
|
37
|
-
"bottom",
|
|
38
|
-
"left",
|
|
39
|
-
"right"
|
|
40
|
-
],
|
|
41
|
-
"top-start": [
|
|
42
|
-
"top",
|
|
43
|
-
"top-end",
|
|
44
|
-
"bottom-start",
|
|
45
|
-
"left-start",
|
|
46
|
-
"right-start"
|
|
47
|
-
],
|
|
48
|
-
"top-end": [
|
|
49
|
-
"top",
|
|
50
|
-
"top-start",
|
|
51
|
-
"bottom-end",
|
|
52
|
-
"left-end",
|
|
53
|
-
"right-end"
|
|
54
|
-
],
|
|
55
|
-
bottom: [
|
|
56
|
-
"bottom-end",
|
|
57
|
-
"bottom-start",
|
|
58
|
-
"top",
|
|
59
|
-
"left",
|
|
60
|
-
"right"
|
|
61
|
-
],
|
|
62
|
-
"bottom-start": [
|
|
63
|
-
"bottom",
|
|
64
|
-
"bottom-end",
|
|
65
|
-
"top-start",
|
|
66
|
-
"left-start",
|
|
67
|
-
"right-start"
|
|
68
|
-
],
|
|
69
|
-
"bottom-end": [
|
|
70
|
-
"bottom",
|
|
71
|
-
"bottom-start",
|
|
72
|
-
"top-end",
|
|
73
|
-
"left-end",
|
|
74
|
-
"right-end"
|
|
75
|
-
],
|
|
76
|
-
left: [
|
|
77
|
-
"left-end",
|
|
78
|
-
"left-start",
|
|
79
|
-
"right",
|
|
80
|
-
"top",
|
|
81
|
-
"bottom"
|
|
82
|
-
],
|
|
83
|
-
"left-start": [
|
|
84
|
-
"left",
|
|
85
|
-
"left-end",
|
|
86
|
-
"right-start",
|
|
87
|
-
"top-start",
|
|
88
|
-
"bottom-start"
|
|
89
|
-
],
|
|
90
|
-
"left-end": [
|
|
91
|
-
"left",
|
|
92
|
-
"left-start",
|
|
93
|
-
"right-end",
|
|
94
|
-
"top-end",
|
|
95
|
-
"bottom-end"
|
|
96
|
-
],
|
|
97
|
-
right: [
|
|
98
|
-
"right-end",
|
|
99
|
-
"right-start",
|
|
100
|
-
"left",
|
|
101
|
-
"top",
|
|
102
|
-
"bottom"
|
|
103
|
-
],
|
|
104
|
-
"right-start": [
|
|
105
|
-
"right",
|
|
106
|
-
"right-end",
|
|
107
|
-
"left-start",
|
|
108
|
-
"top-start",
|
|
109
|
-
"bottom-start"
|
|
110
|
-
],
|
|
111
|
-
"right-end": [
|
|
112
|
-
"right",
|
|
113
|
-
"right-start",
|
|
114
|
-
"left-end",
|
|
115
|
-
"top-end",
|
|
116
|
-
"bottom-end"
|
|
117
|
-
]
|
|
118
|
-
};
|
|
119
|
-
var tooltipCard = "_54iwec1", tooltipLayer = "_54iwec0";
|
|
120
|
-
const MotionCard = motion.create(Card);
|
|
121
|
-
/**
|
|
122
|
-
* @internal
|
|
123
|
-
*/
|
|
124
|
-
function TooltipCard(props) {
|
|
125
|
-
let $ = c(47), animate, arrow, arrowRef, arrowX, arrowY, children, className, originX, originY, padding, placement, radius, ref, restProps, scheme, shadow, style;
|
|
126
|
-
$[0] === props ? (animate = $[1], arrow = $[2], arrowRef = $[3], arrowX = $[4], arrowY = $[5], children = $[6], className = $[7], originX = $[8], originY = $[9], padding = $[10], placement = $[11], radius = $[12], ref = $[13], restProps = $[14], scheme = $[15], shadow = $[16], style = $[17]) : ({animate, arrow, arrowRef, arrowX, arrowY, children, className, originX, originY, padding, placement, radius, ref, scheme, shadow, style, ...restProps} = props, $[0] = props, $[1] = animate, $[2] = arrow, $[3] = arrowRef, $[4] = arrowX, $[5] = arrowY, $[6] = children, $[7] = className, $[8] = originX, $[9] = originY, $[10] = padding, $[11] = placement, $[12] = radius, $[13] = ref, $[14] = restProps, $[15] = scheme, $[16] = shadow, $[17] = style);
|
|
127
|
-
let t0;
|
|
128
|
-
$[18] !== originX || $[19] !== originY ? (t0 = getTransformOrigin(originX, originY), $[18] = originX, $[19] = originY, $[20] = t0) : t0 = $[20];
|
|
129
|
-
let t1 = animate ? "transform" : void 0, t2;
|
|
130
|
-
$[21] !== style || $[22] !== t0 || $[23] !== t1 ? (t2 = {
|
|
131
|
-
transformOrigin: t0,
|
|
132
|
-
willChange: t1,
|
|
133
|
-
...style
|
|
134
|
-
}, $[21] = style, $[22] = t0, $[23] = t1, $[24] = t2) : t2 = $[24];
|
|
135
|
-
let rootStyle = t2, t3 = arrowX === null ? void 0 : arrowX, t4 = arrowY === null ? void 0 : arrowY, t5;
|
|
136
|
-
$[25] !== t3 || $[26] !== t4 ? (t5 = {
|
|
137
|
-
left: t3,
|
|
138
|
-
top: t4,
|
|
139
|
-
right: void 0,
|
|
140
|
-
bottom: void 0
|
|
141
|
-
}, $[25] = t3, $[26] = t4, $[27] = t5) : t5 = $[27];
|
|
142
|
-
let arrowStyle = t5, t6;
|
|
143
|
-
$[28] === className ? t6 = $[29] : (t6 = clsx(tooltipCard, className), $[28] = className, $[29] = t6);
|
|
144
|
-
let t7 = animate ? POPOVER_MOTION_PROPS : void 0, t8;
|
|
145
|
-
$[30] !== arrow || $[31] !== arrowRef || $[32] !== arrowStyle ? (t8 = arrow && /* @__PURE__ */ jsx(Arrow, {
|
|
146
|
-
ref: arrowRef,
|
|
147
|
-
style: arrowStyle,
|
|
148
|
-
width: 15,
|
|
149
|
-
height: 6,
|
|
150
|
-
radius: 2
|
|
151
|
-
}), $[30] = arrow, $[31] = arrowRef, $[32] = arrowStyle, $[33] = t8) : t8 = $[33];
|
|
152
|
-
let t9;
|
|
153
|
-
return $[34] !== children || $[35] !== padding || $[36] !== placement || $[37] !== radius || $[38] !== ref || $[39] !== restProps || $[40] !== rootStyle || $[41] !== scheme || $[42] !== shadow || $[43] !== t6 || $[44] !== t7 || $[45] !== t8 ? (t9 = /* @__PURE__ */ jsxs(MotionCard, {
|
|
154
|
-
className: t6,
|
|
155
|
-
"data-ui": "Tooltip__card",
|
|
156
|
-
...restProps,
|
|
157
|
-
"data-placement": placement,
|
|
158
|
-
padding,
|
|
159
|
-
radius,
|
|
160
|
-
ref,
|
|
161
|
-
scheme,
|
|
162
|
-
shadow,
|
|
163
|
-
style: rootStyle,
|
|
164
|
-
...t7,
|
|
165
|
-
children: [children, t8]
|
|
166
|
-
}), $[34] = children, $[35] = padding, $[36] = placement, $[37] = radius, $[38] = ref, $[39] = restProps, $[40] = rootStyle, $[41] = scheme, $[42] = shadow, $[43] = t6, $[44] = t7, $[45] = t8, $[46] = t9) : t9 = $[46], t9;
|
|
167
|
-
}
|
|
168
|
-
/**
|
|
169
|
-
* @beta
|
|
170
|
-
*/
|
|
171
|
-
const TooltipDelayGroupContext = createGlobalScopedContext("@sanity/ui/context/tooltipDelayGroup", null);
|
|
172
|
-
/**
|
|
173
|
-
* @beta
|
|
174
|
-
*/
|
|
175
|
-
function useTooltipDelayGroup() {
|
|
176
|
-
return useContext(TooltipDelayGroupContext);
|
|
177
|
-
}
|
|
178
|
-
/**
|
|
179
|
-
* Tooltips display information when hovering, focusing or tapping.
|
|
180
|
-
*
|
|
181
|
-
* @public
|
|
182
|
-
*/
|
|
183
|
-
function Tooltip(props) {
|
|
184
|
-
let $ = c(122), 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
|
-
$[0] === fallbackPlacementsProp ? t6 = $[1] : (t6 = _getArrayProp(fallbackPlacementsProp), $[0] = fallbackPlacementsProp, $[1] = t6);
|
|
186
|
-
let fallbackPlacements = t6, ref = useRef(null), [referenceElement, setReferenceElement] = useState(null), arrowRef = useRef(null), [tooltipMaxWidth, setTooltipMaxWidth] = useState(0), t7;
|
|
187
|
-
$[2] === Symbol.for("react.memo_cache_sentinel") ? (t7 = () => ref.current, $[2] = t7) : t7 = $[2], useImperativeHandle(forwardedRef, t7);
|
|
188
|
-
let portal = usePortal(), portalElement = typeof portalProp == "string" ? portal.elements?.[portalProp] || null : portal.element, t8;
|
|
189
|
-
$[3] !== animate || $[4] !== arrowProp || $[5] !== boundaryElement || $[6] !== fallbackPlacements ? (t8 = {
|
|
190
|
-
animate,
|
|
191
|
-
arrowProp,
|
|
192
|
-
arrowRef,
|
|
193
|
-
boundaryElement,
|
|
194
|
-
fallbackPlacements,
|
|
195
|
-
rootBoundary: "viewport"
|
|
196
|
-
}, $[3] = animate, $[4] = arrowProp, $[5] = boundaryElement, $[6] = fallbackPlacements, $[7] = t8) : t8 = $[7];
|
|
197
|
-
let middleware = useMiddleware(t8), t9;
|
|
198
|
-
$[8] === referenceElement ? t9 = $[9] : (t9 = { reference: referenceElement }, $[8] = referenceElement, $[9] = t9);
|
|
199
|
-
let t10;
|
|
200
|
-
$[10] !== middleware || $[11] !== placementProp || $[12] !== t9 ? (t10 = {
|
|
201
|
-
middleware,
|
|
202
|
-
placement: placementProp,
|
|
203
|
-
whileElementsMounted: autoUpdate,
|
|
204
|
-
elements: t9
|
|
205
|
-
}, $[10] = middleware, $[11] = placementProp, $[12] = t9, $[13] = t10) : t10 = $[13];
|
|
206
|
-
let { floatingStyles, placement, middlewareData, refs, update } = useFloating(t10), arrowX = middlewareData.arrow?.x, arrowY = middlewareData.arrow?.y, originX = middlewareData["@sanity/ui/origin"]?.originX, originY = middlewareData["@sanity/ui/origin"]?.originY, tooltipId = useId(), [isOpen, setIsOpen] = useDelayedState(!1), delayGroupContext = useTooltipDelayGroup(), t11;
|
|
207
|
-
$[14] === delayGroupContext ? t11 = $[15] : (t11 = delayGroupContext || {}, $[14] = delayGroupContext, $[15] = t11);
|
|
208
|
-
let { setIsGroupActive, setOpenTooltipId } = t11, showTooltip = isOpen || delayGroupContext?.openTooltipId === tooltipId, isInsideGroup = delayGroupContext !== null, openDelayProp = typeof delay == "number" ? delay : delay?.open || 0, closeDelayProp = typeof delay == "number" ? delay : delay?.close || 0, openDelay = isInsideGroup ? delayGroupContext.openDelay : openDelayProp, closeDelay = isInsideGroup ? delayGroupContext.closeDelay : closeDelayProp, t12;
|
|
209
|
-
$[16] !== closeDelay || $[17] !== isInsideGroup || $[18] !== openDelay || $[19] !== setIsGroupActive || $[20] !== setIsOpen || $[21] !== setOpenTooltipId || $[22] !== tooltipId ? (t12 = (open, immediate) => {
|
|
210
|
-
if (isInsideGroup) {
|
|
211
|
-
if (open) {
|
|
212
|
-
let groupedOpenDelay = immediate ? 0 : openDelay;
|
|
213
|
-
setIsGroupActive?.(open, groupedOpenDelay), setOpenTooltipId?.(tooltipId, groupedOpenDelay);
|
|
214
|
-
} else setIsGroupActive?.(open, closeDelay > 200 ? closeDelay : 200), setOpenTooltipId?.(null, immediate ? 0 : closeDelay);
|
|
215
|
-
} else setIsOpen(open, immediate ? 0 : open ? openDelay : closeDelay);
|
|
216
|
-
}, $[16] = closeDelay, $[17] = isInsideGroup, $[18] = openDelay, $[19] = setIsGroupActive, $[20] = setIsOpen, $[21] = setOpenTooltipId, $[22] = tooltipId, $[23] = t12) : t12 = $[23];
|
|
217
|
-
let handleIsOpenChange = t12, t13;
|
|
218
|
-
$[24] !== childProp?.props || $[25] !== handleIsOpenChange ? (t13 = (e) => {
|
|
219
|
-
handleIsOpenChange(!1), childProp?.props?.onBlur?.(e);
|
|
220
|
-
}, $[24] = childProp?.props, $[25] = handleIsOpenChange, $[26] = t13) : t13 = $[26], childProp?.props;
|
|
221
|
-
let handleBlur = t13, t14;
|
|
222
|
-
$[27] !== childProp?.props || $[28] !== handleIsOpenChange ? (t14 = (e_0) => {
|
|
223
|
-
handleIsOpenChange(!1, !0), childProp?.props.onClick?.(e_0);
|
|
224
|
-
}, $[27] = childProp?.props, $[28] = handleIsOpenChange, $[29] = t14) : t14 = $[29], childProp?.props;
|
|
225
|
-
let handleClick = t14, t15;
|
|
226
|
-
$[30] !== childProp?.props || $[31] !== handleIsOpenChange ? (t15 = (e_1) => {
|
|
227
|
-
handleIsOpenChange(!1, !0), childProp?.props.onContextMenu?.(e_1);
|
|
228
|
-
}, $[30] = childProp?.props, $[31] = handleIsOpenChange, $[32] = t15) : t15 = $[32], childProp?.props;
|
|
229
|
-
let handleContextMenu = t15, t16;
|
|
230
|
-
$[33] !== childProp?.props || $[34] !== handleIsOpenChange ? (t16 = (e_2) => {
|
|
231
|
-
handleIsOpenChange(!0), childProp?.props?.onFocus?.(e_2);
|
|
232
|
-
}, $[33] = childProp?.props, $[34] = handleIsOpenChange, $[35] = t16) : t16 = $[35], childProp?.props;
|
|
233
|
-
let handleFocus = t16, t17;
|
|
234
|
-
$[36] !== childProp?.props || $[37] !== handleIsOpenChange ? (t17 = (e_3) => {
|
|
235
|
-
handleIsOpenChange(!0), childProp?.props?.onMouseEnter?.(e_3);
|
|
236
|
-
}, $[36] = childProp?.props, $[37] = handleIsOpenChange, $[38] = t17) : t17 = $[38], childProp?.props;
|
|
237
|
-
let handleMouseEnter = t17, t18;
|
|
238
|
-
$[39] !== childProp?.props || $[40] !== handleIsOpenChange ? (t18 = (e_4) => {
|
|
239
|
-
handleIsOpenChange(!1), childProp?.props?.onMouseLeave?.(e_4);
|
|
240
|
-
}, $[39] = childProp?.props, $[40] = handleIsOpenChange, $[41] = t18) : t18 = $[41], childProp?.props;
|
|
241
|
-
let handleMouseLeave = t18, t19;
|
|
242
|
-
$[42] !== handleIsOpenChange || $[43] !== isInsideGroup || $[44] !== referenceElement || $[45] !== showTooltip ? (t19 = {
|
|
243
|
-
handleIsOpenChange,
|
|
244
|
-
referenceElement,
|
|
245
|
-
showTooltip,
|
|
246
|
-
isInsideGroup
|
|
247
|
-
}, $[42] = handleIsOpenChange, $[43] = isInsideGroup, $[44] = referenceElement, $[45] = showTooltip, $[46] = t19) : t19 = $[46], useCloseOnMouseLeave(t19);
|
|
248
|
-
let t20, t21;
|
|
249
|
-
$[47] !== disabled || $[48] !== handleIsOpenChange || $[49] !== showTooltip ? (t20 = () => {
|
|
250
|
-
disabled && showTooltip && handleIsOpenChange(!1);
|
|
251
|
-
}, t21 = [
|
|
252
|
-
disabled,
|
|
253
|
-
handleIsOpenChange,
|
|
254
|
-
showTooltip
|
|
255
|
-
], $[47] = disabled, $[48] = handleIsOpenChange, $[49] = showTooltip, $[50] = t20, $[51] = t21) : (t20 = $[50], t21 = $[51]), useEffect(t20, t21);
|
|
256
|
-
let t22, t23;
|
|
257
|
-
$[52] !== content || $[53] !== handleIsOpenChange || $[54] !== showTooltip ? (t22 = () => {
|
|
258
|
-
!content && showTooltip && handleIsOpenChange(!1);
|
|
259
|
-
}, t23 = [
|
|
260
|
-
content,
|
|
261
|
-
handleIsOpenChange,
|
|
262
|
-
showTooltip
|
|
263
|
-
], $[52] = content, $[53] = handleIsOpenChange, $[54] = showTooltip, $[55] = t22, $[56] = t23) : (t22 = $[55], t23 = $[56]), useEffect(t22, t23);
|
|
264
|
-
let t24, t25;
|
|
265
|
-
$[57] !== handleIsOpenChange || $[58] !== showTooltip ? (t24 = () => {
|
|
266
|
-
if (!showTooltip) return;
|
|
267
|
-
let handleWindowKeyDown = function handleWindowKeyDown(event) {
|
|
268
|
-
event.key === "Escape" && handleIsOpenChange(!1, !0);
|
|
269
|
-
};
|
|
270
|
-
return window.addEventListener("keydown", handleWindowKeyDown), () => {
|
|
271
|
-
window.removeEventListener("keydown", handleWindowKeyDown);
|
|
272
|
-
};
|
|
273
|
-
}, t25 = [handleIsOpenChange, showTooltip], $[57] = handleIsOpenChange, $[58] = showTooltip, $[59] = t24, $[60] = t25) : (t24 = $[59], t25 = $[60]), useEffect(t24, t25);
|
|
274
|
-
let t26;
|
|
275
|
-
$[61] !== boundaryElement || $[62] !== portalElement?.offsetWidth ? (t26 = () => {
|
|
276
|
-
let availableWidths = [...boundaryElement ? [boundaryElement.offsetWidth] : [], portalElement?.offsetWidth || document.body.offsetWidth];
|
|
277
|
-
setTooltipMaxWidth(Math.min(...availableWidths) - 8);
|
|
278
|
-
}, $[61] = boundaryElement, $[62] = portalElement?.offsetWidth, $[63] = t26) : t26 = $[63];
|
|
279
|
-
let t27;
|
|
280
|
-
$[64] !== boundaryElement || $[65] !== portalElement ? (t27 = [boundaryElement, portalElement], $[64] = boundaryElement, $[65] = portalElement, $[66] = t27) : t27 = $[66], useLayoutEffect(t26, t27);
|
|
281
|
-
let t28;
|
|
282
|
-
$[67] === update ? t28 = $[68] : (t28 = (arrowEl) => {
|
|
283
|
-
arrowRef.current = arrowEl, update();
|
|
284
|
-
}, $[67] = update, $[68] = t28);
|
|
285
|
-
let setArrow = t28, t29;
|
|
286
|
-
$[69] === refs ? t29 = $[70] : (t29 = (node) => {
|
|
287
|
-
ref.current = node, refs.setFloating(node);
|
|
288
|
-
}, $[69] = refs, $[70] = t29);
|
|
289
|
-
let setFloating = t29, t30;
|
|
290
|
-
bb0: {
|
|
291
|
-
if (!childProp) {
|
|
292
|
-
t30 = null;
|
|
293
|
-
break bb0;
|
|
294
|
-
}
|
|
295
|
-
let t31;
|
|
296
|
-
$[71] !== childProp || $[72] !== handleBlur || $[73] !== handleClick || $[74] !== handleContextMenu || $[75] !== handleFocus || $[76] !== handleMouseEnter || $[77] !== handleMouseLeave ? (t31 = cloneElement(childProp, {
|
|
297
|
-
onBlur: handleBlur,
|
|
298
|
-
onFocus: handleFocus,
|
|
299
|
-
onMouseEnter: handleMouseEnter,
|
|
300
|
-
onMouseLeave: handleMouseLeave,
|
|
301
|
-
onClick: handleClick,
|
|
302
|
-
onContextMenu: handleContextMenu,
|
|
303
|
-
ref: setReferenceElement
|
|
304
|
-
}), $[71] = childProp, $[72] = handleBlur, $[73] = handleClick, $[74] = handleContextMenu, $[75] = handleFocus, $[76] = handleMouseEnter, $[77] = handleMouseLeave, $[78] = t31) : t31 = $[78], t30 = t31;
|
|
305
|
-
}
|
|
306
|
-
let child = t30, t31;
|
|
307
|
-
$[79] === childProp ? t31 = $[80] : (t31 = childProp ? getElementRef(childProp) : null, $[79] = childProp, $[80] = t31);
|
|
308
|
-
let t32, t33;
|
|
309
|
-
if ($[81] === referenceElement ? (t32 = $[82], t33 = $[83]) : (t32 = () => referenceElement, t33 = [referenceElement], $[81] = referenceElement, $[82] = t32, $[83] = t33), useImperativeHandle(t31, t32, t33), !child) {
|
|
310
|
-
let t34;
|
|
311
|
-
return $[84] === Symbol.for("react.memo_cache_sentinel") ? (t34 = /* @__PURE__ */ jsx(Fragment$1, {}), $[84] = t34) : t34 = $[84], t34;
|
|
312
|
-
}
|
|
313
|
-
if (disabled) return child;
|
|
314
|
-
let T0 = Layer, t35 = clsx(tooltipLayer, restProps.className), t36 = tooltipMaxWidth > 0 ? `${tooltipMaxWidth}px` : void 0, t37;
|
|
315
|
-
$[85] !== floatingStyles || $[86] !== t36 ? (t37 = {
|
|
316
|
-
...floatingStyles,
|
|
317
|
-
maxWidth: t36
|
|
318
|
-
}, $[85] = floatingStyles, $[86] = t36, $[87] = t37) : t37 = $[87];
|
|
319
|
-
let t38;
|
|
320
|
-
$[88] !== animate || $[89] !== arrowProp || $[90] !== arrowX || $[91] !== arrowY || $[92] !== content || $[93] !== originX || $[94] !== originY || $[95] !== padding || $[96] !== placement || $[97] !== radius || $[98] !== restProps || $[99] !== scheme || $[100] !== setArrow || $[101] !== setFloating || $[102] !== shadow ? (t38 = /* @__PURE__ */ jsx(TooltipCard, {
|
|
321
|
-
...restProps,
|
|
322
|
-
animate,
|
|
323
|
-
arrow: arrowProp,
|
|
324
|
-
arrowRef: setArrow,
|
|
325
|
-
arrowX,
|
|
326
|
-
arrowY,
|
|
327
|
-
originX,
|
|
328
|
-
originY,
|
|
329
|
-
padding,
|
|
330
|
-
placement,
|
|
331
|
-
radius,
|
|
332
|
-
ref: setFloating,
|
|
333
|
-
scheme,
|
|
334
|
-
shadow,
|
|
335
|
-
children: content
|
|
336
|
-
}), $[88] = animate, $[89] = arrowProp, $[90] = arrowX, $[91] = arrowY, $[92] = content, $[93] = originX, $[94] = originY, $[95] = padding, $[96] = placement, $[97] = radius, $[98] = restProps, $[99] = scheme, $[100] = setArrow, $[101] = setFloating, $[102] = shadow, $[103] = t38) : t38 = $[103];
|
|
337
|
-
let t39;
|
|
338
|
-
$[104] !== T0 || $[105] !== restProps || $[106] !== setFloating || $[107] !== t35 || $[108] !== t37 || $[109] !== t38 || $[110] !== zOffset ? (t39 = /* @__PURE__ */ jsx(T0, {
|
|
339
|
-
"data-ui": "Tooltip",
|
|
340
|
-
...restProps,
|
|
341
|
-
className: t35,
|
|
342
|
-
ref: setFloating,
|
|
343
|
-
style: t37,
|
|
344
|
-
zOffset,
|
|
345
|
-
children: t38
|
|
346
|
-
}), $[104] = T0, $[105] = restProps, $[106] = setFloating, $[107] = t35, $[108] = t37, $[109] = t38, $[110] = zOffset, $[111] = t39) : t39 = $[111];
|
|
347
|
-
let tooltip = t39, t40;
|
|
348
|
-
$[112] !== portalProp || $[113] !== tooltip ? (t40 = portalProp ? /* @__PURE__ */ jsx(Portal, {
|
|
349
|
-
__unstable_name: typeof portalProp == "string" ? portalProp : void 0,
|
|
350
|
-
children: tooltip
|
|
351
|
-
}) : tooltip, $[112] = portalProp, $[113] = tooltip, $[114] = t40) : t40 = $[114];
|
|
352
|
-
let tooltipNode = t40, t41;
|
|
353
|
-
$[115] !== animate || $[116] !== showTooltip || $[117] !== tooltipNode ? (t41 = animate ? /* @__PURE__ */ jsx(AnimateActivity, {
|
|
354
|
-
layoutMode: "default",
|
|
355
|
-
mode: showTooltip ? "visible" : "hidden",
|
|
356
|
-
children: tooltipNode
|
|
357
|
-
}) : /* @__PURE__ */ jsx(Activity, {
|
|
358
|
-
mode: showTooltip ? "visible" : "hidden",
|
|
359
|
-
children: tooltipNode
|
|
360
|
-
}), $[115] = animate, $[116] = showTooltip, $[117] = tooltipNode, $[118] = t41) : t41 = $[118];
|
|
361
|
-
let t42;
|
|
362
|
-
return $[119] !== child || $[120] !== t41 ? (t42 = /* @__PURE__ */ jsxs(Fragment$1, { children: [t41, child] }), $[119] = child, $[120] = t41, $[121] = t42) : t42 = $[121], t42;
|
|
363
|
-
}
|
|
364
|
-
function useMiddleware(t0) {
|
|
365
|
-
let $ = c(17), { animate, arrowProp, arrowRef, boundaryElement, fallbackPlacements, rootBoundary } = t0, ret;
|
|
366
|
-
if ($[0] !== animate || $[1] !== arrowProp || $[2] !== arrowRef || $[3] !== boundaryElement || $[4] !== fallbackPlacements || $[5] !== rootBoundary) {
|
|
367
|
-
ret = [];
|
|
368
|
-
let t1 = boundaryElement || void 0, t2;
|
|
369
|
-
$[7] !== fallbackPlacements || $[8] !== rootBoundary || $[9] !== t1 ? (t2 = flip({
|
|
370
|
-
boundary: t1,
|
|
371
|
-
fallbackPlacements,
|
|
372
|
-
padding: 4,
|
|
373
|
-
rootBoundary
|
|
374
|
-
}), $[7] = fallbackPlacements, $[8] = rootBoundary, $[9] = t1, $[10] = t2) : t2 = $[10], ret.push(t2);
|
|
375
|
-
let t3;
|
|
376
|
-
$[11] === Symbol.for("react.memo_cache_sentinel") ? (t3 = offset({ mainAxis: 4 }), $[11] = t3) : t3 = $[11], ret.push(t3);
|
|
377
|
-
let t4 = boundaryElement || void 0, t5;
|
|
378
|
-
if ($[12] !== rootBoundary || $[13] !== t4 ? (t5 = shift({
|
|
379
|
-
boundary: t4,
|
|
380
|
-
rootBoundary,
|
|
381
|
-
padding: 4
|
|
382
|
-
}), $[12] = rootBoundary, $[13] = t4, $[14] = t5) : t5 = $[14], ret.push(t5), arrowProp) {
|
|
383
|
-
let t6;
|
|
384
|
-
$[15] === arrowRef ? t6 = $[16] : (t6 = arrow({
|
|
385
|
-
element: arrowRef,
|
|
386
|
-
padding: 4
|
|
387
|
-
}), $[15] = arrowRef, $[16] = t6), ret.push(t6);
|
|
388
|
-
}
|
|
389
|
-
animate && ret.push(origin), $[0] = animate, $[1] = arrowProp, $[2] = arrowRef, $[3] = boundaryElement, $[4] = fallbackPlacements, $[5] = rootBoundary, $[6] = ret;
|
|
390
|
-
} else ret = $[6];
|
|
391
|
-
return ret;
|
|
392
|
-
}
|
|
393
|
-
/**
|
|
394
|
-
* As `useEffectEvent` should never be passed to other components or hooks, this custom hook groups together the `useEffectEvent` and the `useEffect` hook using it.
|
|
395
|
-
* @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
|
|
396
|
-
*/
|
|
397
|
-
function useCloseOnMouseLeave(t0) {
|
|
398
|
-
let $ = c(10), { handleIsOpenChange, referenceElement, showTooltip, isInsideGroup } = t0, t1;
|
|
399
|
-
$[0] !== handleIsOpenChange || $[1] !== referenceElement ? (t1 = (target, teardown) => {
|
|
400
|
-
referenceElement && (referenceElement === target || target instanceof Node && referenceElement.contains(target) || (handleIsOpenChange(!1), teardown()));
|
|
401
|
-
}, $[0] = handleIsOpenChange, $[1] = referenceElement, $[2] = t1) : t1 = $[2];
|
|
402
|
-
let onMouseMove = useEffectEvent(t1), t2;
|
|
403
|
-
$[3] !== isInsideGroup || $[4] !== onMouseMove || $[5] !== showTooltip ? (t2 = () => {
|
|
404
|
-
if (!showTooltip || isInsideGroup) return;
|
|
405
|
-
let handleMouseMove = (event) => {
|
|
406
|
-
onMouseMove(event.target, () => window.removeEventListener("mousemove", handleMouseMove));
|
|
407
|
-
};
|
|
408
|
-
return window.addEventListener("mousemove", handleMouseMove), () => window.removeEventListener("mousemove", handleMouseMove);
|
|
409
|
-
}, $[3] = isInsideGroup, $[4] = onMouseMove, $[5] = showTooltip, $[6] = t2) : t2 = $[6];
|
|
410
|
-
let t3;
|
|
411
|
-
$[7] !== isInsideGroup || $[8] !== showTooltip ? (t3 = [isInsideGroup, showTooltip], $[7] = isInsideGroup, $[8] = showTooltip, $[9] = t3) : t3 = $[9], useEffect(t2, t3);
|
|
412
|
-
}
|
|
413
|
-
/**
|
|
414
|
-
* @public
|
|
415
|
-
* Provides context for a group of tooltip elements that should share a delay
|
|
416
|
-
* which temporarily becomes 1 ms after the first floating element of the group opens.
|
|
417
|
-
*/
|
|
418
|
-
function TooltipDelayGroupProvider(props) {
|
|
419
|
-
let $ = c(9), { children, delay } = props, [isGroupActive, setIsGroupActive] = useDelayedState(!1), [openTooltipId, setOpenTooltipId] = useDelayedState(null), openDelay = typeof delay == "number" ? delay : delay?.open || 0, closeDelay = typeof delay == "number" ? delay : delay?.close || 0, t0 = isGroupActive ? 1 : openDelay, t1;
|
|
420
|
-
$[0] !== closeDelay || $[1] !== openTooltipId || $[2] !== setIsGroupActive || $[3] !== setOpenTooltipId || $[4] !== t0 ? (t1 = {
|
|
421
|
-
setIsGroupActive,
|
|
422
|
-
openTooltipId,
|
|
423
|
-
setOpenTooltipId,
|
|
424
|
-
openDelay: t0,
|
|
425
|
-
closeDelay
|
|
426
|
-
}, $[0] = closeDelay, $[1] = openTooltipId, $[2] = setIsGroupActive, $[3] = setOpenTooltipId, $[4] = t0, $[5] = t1) : t1 = $[5];
|
|
427
|
-
let value = t1, t2;
|
|
428
|
-
return $[6] !== children || $[7] !== value ? (t2 = /* @__PURE__ */ jsx(TooltipDelayGroupContext.Provider, {
|
|
429
|
-
value,
|
|
430
|
-
children
|
|
431
|
-
}), $[6] = children, $[7] = value, $[8] = t2) : t2 = $[8], t2;
|
|
432
|
-
}
|
|
433
|
-
export { Tooltip, TooltipDelayGroupContext, TooltipDelayGroupProvider, useTooltipDelayGroup };
|
|
434
|
-
|
|
435
|
-
//# sourceMappingURL=tooltip.js.map
|
package/dist/tooltip.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
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,36 +0,0 @@
|
|
|
1
|
-
import { o as EMPTY_ARRAY } from "./helpers-C8xxXAQC.js";
|
|
2
|
-
import { c } from "react/compiler-runtime";
|
|
3
|
-
import { useDebugValue, useEffect } from "react";
|
|
4
|
-
import { useEffectEvent } from "use-effect-event";
|
|
5
|
-
/**
|
|
6
|
-
* @public
|
|
7
|
-
*/
|
|
8
|
-
function useClickOutsideEvent(listener, t0, boundaryElement) {
|
|
9
|
-
let $ = c(9), elementsArg = t0 === void 0 ? _temp : t0, t1;
|
|
10
|
-
$[0] !== boundaryElement || $[1] !== elementsArg || $[2] !== listener ? (t1 = (evt) => {
|
|
11
|
-
if (!listener) return;
|
|
12
|
-
let target = evt.target;
|
|
13
|
-
if (!(target instanceof Node)) return;
|
|
14
|
-
let resolvedBoundaryElement = boundaryElement?.();
|
|
15
|
-
if (resolvedBoundaryElement && !resolvedBoundaryElement.contains(target)) return;
|
|
16
|
-
let elements = elementsArg().flat();
|
|
17
|
-
for (let el of elements) if (el && (target === el || el.contains(target))) return;
|
|
18
|
-
listener(evt);
|
|
19
|
-
}, $[0] = boundaryElement, $[1] = elementsArg, $[2] = listener, $[3] = t1) : t1 = $[3];
|
|
20
|
-
let onEvent = useEffectEvent(t1), hasListener = !!listener, t2;
|
|
21
|
-
$[4] !== hasListener || $[5] !== onEvent ? (t2 = () => {
|
|
22
|
-
if (!hasListener) return;
|
|
23
|
-
let handleEvent = (evt_0) => onEvent(evt_0);
|
|
24
|
-
return document.addEventListener("mousedown", handleEvent), () => {
|
|
25
|
-
document.removeEventListener("mousedown", handleEvent);
|
|
26
|
-
};
|
|
27
|
-
}, $[4] = hasListener, $[5] = onEvent, $[6] = t2) : t2 = $[6];
|
|
28
|
-
let t3;
|
|
29
|
-
$[7] === hasListener ? t3 = $[8] : (t3 = [hasListener], $[7] = hasListener, $[8] = t3), useEffect(t2, t3), useDebugValue(listener ? "MouseDown On" : "MouseDown Off");
|
|
30
|
-
}
|
|
31
|
-
function _temp() {
|
|
32
|
-
return EMPTY_ARRAY;
|
|
33
|
-
}
|
|
34
|
-
export { useClickOutsideEvent as t };
|
|
35
|
-
|
|
36
|
-
//# sourceMappingURL=useClickOutsideEvent-wGLGWBZN.js.map
|
|
@@ -1 +0,0 @@
|
|
|
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 // oxlint-disable-next-line react/exhaustive-effect-dependencies\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 // oxlint-disable-next-line react/exhaustive-effect-dependencies\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;CAEF,GAVO,EAAA,KAAA,aAEoC,EAAA,KAAA;CAQxCC,IAAAA;CAEH,AAFI,EAAA,OAAA,2BAAD,KAAA,CAAC,WAAW,GAAX,EAAA,KAAA,yBAXJ,UAAUF,IAWPE,EAAa,GAEhB,cAAc,WAAW,iBAAiB,eAAe;AAC3D;AArDiD,SAAA,QAAA;CAAM,OAAA"}
|